1 #ifndef __UAPI_CAM_CPAS_H__
2 #define __UAPI_CAM_CPAS_H__
3 
4 #include "cam_defs.h"
5 
6 #define CAM_FAMILY_CAMERA_SS     1
7 #define CAM_FAMILY_CPAS_SS       2
8 
9 #ifdef CONFIG_BOARD_SUNFISH
10 
11 /* AXI BW Voting Version */
12 #define CAM_AXI_BW_VOTING_V2                2
13 
14 /* AXI BW Voting Transaction Type */
15 #define CAM_AXI_TRANSACTION_READ            0
16 #define CAM_AXI_TRANSACTION_WRITE           1
17 
18 /* AXI BW Voting Path Data Type */
19 #define CAM_AXI_PATH_DATA_IFE_START_OFFSET 0
20 #define CAM_AXI_PATH_DATA_IFE_LINEAR    (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 0)
21 #define CAM_AXI_PATH_DATA_IFE_VID       (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 1)
22 #define CAM_AXI_PATH_DATA_IFE_DISP      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 2)
23 #define CAM_AXI_PATH_DATA_IFE_STATS     (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 3)
24 #define CAM_AXI_PATH_DATA_IFE_RDI0      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 4)
25 #define CAM_AXI_PATH_DATA_IFE_RDI1      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 5)
26 #define CAM_AXI_PATH_DATA_IFE_RDI2      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 6)
27 #define CAM_AXI_PATH_DATA_IFE_RDI3      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 7)
28 #define CAM_AXI_PATH_DATA_IFE_PDAF      (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 8)
29 #define CAM_AXI_PATH_DATA_IFE_PIXEL_RAW \
30        (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 9)
31 #define CAM_AXI_PATH_DATA_IFE_MAX_OFFSET \
32        (CAM_AXI_PATH_DATA_IFE_START_OFFSET + 31)
33 
34 #define CAM_AXI_PATH_DATA_IPE_START_OFFSET 32
35 #define CAM_AXI_PATH_DATA_IPE_RD_IN     (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 0)
36 #define CAM_AXI_PATH_DATA_IPE_RD_REF    (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 1)
37 #define CAM_AXI_PATH_DATA_IPE_WR_VID    (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 2)
38 #define CAM_AXI_PATH_DATA_IPE_WR_DISP   (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 3)
39 #define CAM_AXI_PATH_DATA_IPE_WR_REF    (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 4)
40 #define CAM_AXI_PATH_DATA_IPE_MAX_OFFSET \
41        (CAM_AXI_PATH_DATA_IPE_START_OFFSET + 31)
42 
43 #define CAM_AXI_PATH_DATA_ALL              256
44 
45 /**
46  * struct cam_axi_per_path_bw_vote - Per path bandwidth vote information
47  *
48  * @usage_data               client usage data (left/right/rdi)
49  * @transac_type             Transaction type on the path (read/write)
50  * @path_data_type           Path for which vote is given (video, display, rdi)
51  * @reserved                 Reserved for alignment
52  * @camnoc_bw                CAMNOC bw for this path
53  * @mnoc_ab_bw               MNOC AB bw for this path
54  * @mnoc_ib_bw               MNOC IB bw for this path
55  * @ddr_ab_bw                DDR AB bw for this path
56  * @ddr_ib_bw                DDR IB bw for this path
57  */
58 struct cam_axi_per_path_bw_vote {
59        uint32_t                      usage_data;
60        uint32_t                      transac_type;
61        uint32_t                      path_data_type;
62        uint32_t                      reserved;
63        uint64_t                      camnoc_bw;
64        uint64_t                      mnoc_ab_bw;
65        uint64_t                      mnoc_ib_bw;
66        uint64_t                      ddr_ab_bw;
67        uint64_t                      ddr_ib_bw;
68 };
69 
70 #endif /* CONFIG_BOARD_SUNFISH */
71 
72 /**
73  * struct cam_cpas_query_cap - CPAS query device capability payload
74  *
75  * @camera_family     : Camera family type
76  * @reserved          : Reserved field for alignment
77  * @camera_version    : Camera platform version
78  * @cpas_version      : Camera CPAS version within camera platform
79  *
80  */
81 struct cam_cpas_query_cap {
82 	uint32_t                 camera_family;
83 	uint32_t                 reserved;
84 	struct cam_hw_version    camera_version;
85 	struct cam_hw_version    cpas_version;
86 };
87 
88 #endif /* __UAPI_CAM_CPAS_H__ */
89