]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blob - drivers/media/pci/intel/ipu6/ipu6-platform-resources.h
UBUNTU: SAUCE: IPU6 driver release for kernel 5.13
[mirror_ubuntu-jammy-kernel.git] / drivers / media / pci / intel / ipu6 / ipu6-platform-resources.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2018 - 2020 Intel Corporation */
3
4 #ifndef IPU6_PLATFORM_RESOURCES_H
5 #define IPU6_PLATFORM_RESOURCES_H
6
7 #include <linux/kernel.h>
8 #include <linux/device.h>
9 #include "ipu-platform-resources.h"
10
11 #define IPU6_FW_PSYS_N_PADDING_UINT8_IN_PROCESS_EXT_STRUCT 0
12
13 enum {
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
47 };
48
49 enum {
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
58 };
59
60 enum ipu6_mem_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 */
71 IPU6_FW_PSYS_N_MEM_ID
72 };
73
74 enum {
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
81 };
82
83 enum {
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
93 };
94
95 enum {
96 IPU6_FW_PSYS_SP0_ID = 0,
97 IPU6_FW_PSYS_VP0_ID,
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
129 };
130
131 enum {
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,
138 };
139
140 /* Excluding PMEM */
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)
144
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
157
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
165
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
172
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];
186 };
187
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];
194 };
195
196 #endif /* IPU6_PLATFORM_RESOURCES_H */