1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2018 - 2020 Intel Corporation */
4 #ifndef IPU6_PLATFORM_RESOURCES_H
5 #define IPU6_PLATFORM_RESOURCES_H
7 #include <linux/kernel.h>
8 #include <linux/device.h>
9 #include "ipu-platform-resources.h"
11 #define IPU6_FW_PSYS_N_PADDING_UINT8_IN_PROCESS_EXT_STRUCT 0
14 IPU6_FW_PSYS_CMD_QUEUE_COMMAND_ID
= 0,
15 IPU6_FW_PSYS_CMD_QUEUE_DEVICE_ID
,
16 IPU6_FW_PSYS_CMD_QUEUE_PPG0_COMMAND_ID
,
17 IPU6_FW_PSYS_CMD_QUEUE_PPG1_COMMAND_ID
,
18 IPU6_FW_PSYS_CMD_QUEUE_PPG2_COMMAND_ID
,
19 IPU6_FW_PSYS_CMD_QUEUE_PPG3_COMMAND_ID
,
20 IPU6_FW_PSYS_CMD_QUEUE_PPG4_COMMAND_ID
,
21 IPU6_FW_PSYS_CMD_QUEUE_PPG5_COMMAND_ID
,
22 IPU6_FW_PSYS_CMD_QUEUE_PPG6_COMMAND_ID
,
23 IPU6_FW_PSYS_CMD_QUEUE_PPG7_COMMAND_ID
,
24 IPU6_FW_PSYS_CMD_QUEUE_PPG8_COMMAND_ID
,
25 IPU6_FW_PSYS_CMD_QUEUE_PPG9_COMMAND_ID
,
26 IPU6_FW_PSYS_CMD_QUEUE_PPG10_COMMAND_ID
,
27 IPU6_FW_PSYS_CMD_QUEUE_PPG11_COMMAND_ID
,
28 IPU6_FW_PSYS_CMD_QUEUE_PPG12_COMMAND_ID
,
29 IPU6_FW_PSYS_CMD_QUEUE_PPG13_COMMAND_ID
,
30 IPU6_FW_PSYS_CMD_QUEUE_PPG14_COMMAND_ID
,
31 IPU6_FW_PSYS_CMD_QUEUE_PPG15_COMMAND_ID
,
32 IPU6_FW_PSYS_CMD_QUEUE_PPG16_COMMAND_ID
,
33 IPU6_FW_PSYS_CMD_QUEUE_PPG17_COMMAND_ID
,
34 IPU6_FW_PSYS_CMD_QUEUE_PPG18_COMMAND_ID
,
35 IPU6_FW_PSYS_CMD_QUEUE_PPG19_COMMAND_ID
,
36 IPU6_FW_PSYS_CMD_QUEUE_PPG20_COMMAND_ID
,
37 IPU6_FW_PSYS_CMD_QUEUE_PPG21_COMMAND_ID
,
38 IPU6_FW_PSYS_CMD_QUEUE_PPG22_COMMAND_ID
,
39 IPU6_FW_PSYS_CMD_QUEUE_PPG23_COMMAND_ID
,
40 IPU6_FW_PSYS_CMD_QUEUE_PPG24_COMMAND_ID
,
41 IPU6_FW_PSYS_CMD_QUEUE_PPG25_COMMAND_ID
,
42 IPU6_FW_PSYS_CMD_QUEUE_PPG26_COMMAND_ID
,
43 IPU6_FW_PSYS_CMD_QUEUE_PPG27_COMMAND_ID
,
44 IPU6_FW_PSYS_CMD_QUEUE_PPG28_COMMAND_ID
,
45 IPU6_FW_PSYS_CMD_QUEUE_PPG29_COMMAND_ID
,
46 IPU6_FW_PSYS_N_PSYS_CMD_QUEUE_ID
50 IPU6_FW_PSYS_TRANSFER_VMEM0_TYPE_ID
= 0,
51 IPU6_FW_PSYS_TRANSFER_VMEM1_TYPE_ID
,
52 IPU6_FW_PSYS_LB_VMEM_TYPE_ID
,
53 IPU6_FW_PSYS_DMEM_TYPE_ID
,
54 IPU6_FW_PSYS_VMEM_TYPE_ID
,
55 IPU6_FW_PSYS_BAMEM_TYPE_ID
,
56 IPU6_FW_PSYS_PMEM_TYPE_ID
,
57 IPU6_FW_PSYS_N_MEM_TYPE_ID
61 IPU6_FW_PSYS_VMEM0_ID
= 0, /* ISP0 VMEM */
62 IPU6_FW_PSYS_TRANSFER_VMEM0_ID
, /* TRANSFER VMEM 0 */
63 IPU6_FW_PSYS_TRANSFER_VMEM1_ID
, /* TRANSFER VMEM 1 */
64 IPU6_FW_PSYS_LB_VMEM_ID
, /* LB VMEM */
65 IPU6_FW_PSYS_BAMEM0_ID
, /* ISP0 BAMEM */
66 IPU6_FW_PSYS_DMEM0_ID
, /* SPC0 Dmem */
67 IPU6_FW_PSYS_DMEM1_ID
, /* SPP0 Dmem */
68 IPU6_FW_PSYS_DMEM2_ID
, /* SPP1 Dmem */
69 IPU6_FW_PSYS_DMEM3_ID
, /* ISP0 Dmem */
70 IPU6_FW_PSYS_PMEM0_ID
, /* ISP0 PMEM */
75 IPU6_FW_PSYS_DEV_CHN_DMA_EXT0_ID
= 0,
76 IPU6_FW_PSYS_DEV_CHN_DMA_EXT1_READ_ID
,
77 IPU6_FW_PSYS_DEV_CHN_DMA_EXT1_WRITE_ID
,
78 IPU6_FW_PSYS_DEV_CHN_DMA_INTERNAL_ID
,
79 IPU6_FW_PSYS_DEV_CHN_DMA_ISA_ID
,
80 IPU6_FW_PSYS_N_DEV_CHN_ID
84 IPU6_FW_PSYS_SP_CTRL_TYPE_ID
= 0,
85 IPU6_FW_PSYS_SP_SERVER_TYPE_ID
,
86 IPU6_FW_PSYS_VP_TYPE_ID
,
87 IPU6_FW_PSYS_ACC_PSA_TYPE_ID
,
88 IPU6_FW_PSYS_ACC_ISA_TYPE_ID
,
89 IPU6_FW_PSYS_ACC_OSA_TYPE_ID
,
90 IPU6_FW_PSYS_GDC_TYPE_ID
,
91 IPU6_FW_PSYS_TNR_TYPE_ID
,
92 IPU6_FW_PSYS_N_CELL_TYPE_ID
96 IPU6_FW_PSYS_SP0_ID
= 0,
98 IPU6_FW_PSYS_PSA_ACC_BNLM_ID
,
99 IPU6_FW_PSYS_PSA_ACC_DM_ID
,
100 IPU6_FW_PSYS_PSA_ACC_ACM_ID
,
101 IPU6_FW_PSYS_PSA_ACC_GTC_YUV1_ID
,
102 IPU6_FW_PSYS_BB_ACC_OFS_PIN_MAIN_ID
,
103 IPU6_FW_PSYS_BB_ACC_OFS_PIN_DISPLAY_ID
,
104 IPU6_FW_PSYS_BB_ACC_OFS_PIN_PP_ID
,
105 IPU6_FW_PSYS_PSA_ACC_GAMMASTAR_ID
,
106 IPU6_FW_PSYS_PSA_ACC_GLTM_ID
,
107 IPU6_FW_PSYS_PSA_ACC_XNR_ID
,
108 IPU6_FW_PSYS_PSA_VCSC_ID
, /* VCSC */
109 IPU6_FW_PSYS_ISA_ICA_ID
,
110 IPU6_FW_PSYS_ISA_LSC_ID
,
111 IPU6_FW_PSYS_ISA_DPC_ID
,
112 IPU6_FW_PSYS_ISA_SIS_A_ID
,
113 IPU6_FW_PSYS_ISA_SIS_B_ID
,
114 IPU6_FW_PSYS_ISA_B2B_ID
,
115 IPU6_FW_PSYS_ISA_B2R_R2I_SIE_ID
,
116 IPU6_FW_PSYS_ISA_R2I_DS_A_ID
,
117 IPU6_FW_PSYS_ISA_R2I_DS_B_ID
,
118 IPU6_FW_PSYS_ISA_AWB_ID
,
119 IPU6_FW_PSYS_ISA_AE_ID
,
120 IPU6_FW_PSYS_ISA_AF_ID
,
121 IPU6_FW_PSYS_ISA_DOL_ID
,
122 IPU6_FW_PSYS_ISA_ICA_MEDIUM_ID
,
123 IPU6_FW_PSYS_ISA_X2B_MD_ID
,
124 IPU6_FW_PSYS_ISA_X2B_SVE_RGBIR_ID
,
125 IPU6_FW_PSYS_ISA_PAF_ID
,
126 IPU6_FW_PSYS_BB_ACC_GDC0_ID
,
127 IPU6_FW_PSYS_BB_ACC_TNR_ID
,
128 IPU6_FW_PSYS_N_CELL_ID
132 IPU6_FW_PSYS_DEV_DFM_BB_FULL_PORT_ID
= 0,
133 IPU6_FW_PSYS_DEV_DFM_BB_EMPTY_PORT_ID
,
134 IPU6_FW_PSYS_DEV_DFM_ISL_FULL_PORT_ID
,
135 IPU6_FW_PSYS_DEV_DFM_ISL_EMPTY_PORT_ID
,
136 IPU6_FW_PSYS_DEV_DFM_LB_FULL_PORT_ID
,
137 IPU6_FW_PSYS_DEV_DFM_LB_EMPTY_PORT_ID
,
141 #define IPU6_FW_PSYS_N_DATA_MEM_TYPE_ID (IPU6_FW_PSYS_N_MEM_TYPE_ID - 1)
142 #define IPU6_FW_PSYS_N_DEV_DFM_ID \
143 (IPU6_FW_PSYS_DEV_DFM_LB_EMPTY_PORT_ID + 1)
145 #define IPU6_FW_PSYS_VMEM0_MAX_SIZE 0x0800
146 /* Transfer VMEM0 words, ref HAS Transfer*/
147 #define IPU6_FW_PSYS_TRANSFER_VMEM0_MAX_SIZE 0x0800
148 /* Transfer VMEM1 words, ref HAS Transfer*/
149 #define IPU6_FW_PSYS_TRANSFER_VMEM1_MAX_SIZE 0x0800
150 #define IPU6_FW_PSYS_LB_VMEM_MAX_SIZE 0x0400 /* LB VMEM words */
151 #define IPU6_FW_PSYS_BAMEM0_MAX_SIZE 0x0800
152 #define IPU6_FW_PSYS_DMEM0_MAX_SIZE 0x4000
153 #define IPU6_FW_PSYS_DMEM1_MAX_SIZE 0x1000
154 #define IPU6_FW_PSYS_DMEM2_MAX_SIZE 0x1000
155 #define IPU6_FW_PSYS_DMEM3_MAX_SIZE 0x1000
156 #define IPU6_FW_PSYS_PMEM0_MAX_SIZE 0x0500
158 #define IPU6_FW_PSYS_DEV_CHN_DMA_EXT0_MAX_SIZE 30
159 #define IPU6_FW_PSYS_DEV_CHN_GDC_MAX_SIZE 0
160 #define IPU6_FW_PSYS_DEV_CHN_DMA_EXT1_READ_MAX_SIZE 30
161 #define IPU6_FW_PSYS_DEV_CHN_DMA_EXT1_WRITE_MAX_SIZE 43
162 #define IPU6_FW_PSYS_DEV_CHN_DMA_INTERNAL_MAX_SIZE 8
163 #define IPU6_FW_PSYS_DEV_CHN_DMA_IPFD_MAX_SIZE 0
164 #define IPU6_FW_PSYS_DEV_CHN_DMA_ISA_MAX_SIZE 2
166 #define IPU6_FW_PSYS_DEV_DFM_BB_FULL_PORT_ID_MAX_SIZE 32
167 #define IPU6_FW_PSYS_DEV_DFM_ISL_FULL_PORT_ID_MAX_SIZE 32
168 #define IPU6_FW_PSYS_DEV_DFM_LB_FULL_PORT_ID_MAX_SIZE 32
169 #define IPU6_FW_PSYS_DEV_DFM_BB_EMPTY_PORT_ID_MAX_SIZE 32
170 #define IPU6_FW_PSYS_DEV_DFM_ISL_EMPTY_PORT_ID_MAX_SIZE 32
171 #define IPU6_FW_PSYS_DEV_DFM_LB_EMPTY_PORT_ID_MAX_SIZE 32
173 struct ipu6_fw_psys_program_manifest_ext
{
174 u32 dfm_port_bitmap
[IPU6_FW_PSYS_N_DEV_DFM_ID
];
175 u32 dfm_active_port_bitmap
[IPU6_FW_PSYS_N_DEV_DFM_ID
];
176 u16 ext_mem_size
[IPU6_FW_PSYS_N_DATA_MEM_TYPE_ID
];
177 u16 ext_mem_offset
[IPU6_FW_PSYS_N_DATA_MEM_TYPE_ID
];
178 u16 dev_chn_size
[IPU6_FW_PSYS_N_DEV_CHN_ID
];
179 u16 dev_chn_offset
[IPU6_FW_PSYS_N_DEV_CHN_ID
];
180 u8 is_dfm_relocatable
[IPU6_FW_PSYS_N_DEV_DFM_ID
];
181 u8 dec_resources_input
[IPU_FW_PSYS_MAX_INPUT_DEC_RESOURCES
];
182 u8 dec_resources_input_terminal
[IPU_FW_PSYS_MAX_INPUT_DEC_RESOURCES
];
183 u8 dec_resources_output
[IPU_FW_PSYS_MAX_OUTPUT_DEC_RESOURCES
];
184 u8 dec_resources_output_terminal
[IPU_FW_PSYS_MAX_OUTPUT_DEC_RESOURCES
];
185 u8 padding
[IPU_FW_PSYS_N_PADDING_UINT8_IN_PROGRAM_MANIFEST_EXT
];
188 struct ipu6_fw_psys_process_ext
{
189 u32 dfm_port_bitmap
[IPU6_FW_PSYS_N_DEV_DFM_ID
];
190 u32 dfm_active_port_bitmap
[IPU6_FW_PSYS_N_DEV_DFM_ID
];
191 u16 ext_mem_offset
[IPU6_FW_PSYS_N_DATA_MEM_TYPE_ID
];
192 u16 dev_chn_offset
[IPU6_FW_PSYS_N_DEV_CHN_ID
];
193 u8 ext_mem_id
[IPU6_FW_PSYS_N_DATA_MEM_TYPE_ID
];
196 #endif /* IPU6_PLATFORM_RESOURCES_H */