1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * RP1 Camera Front End formats definition 4 * 5 * Copyright (C) 2021-2024 - Raspberry Pi Ltd. 6 */ 7 #ifndef _CFE_FMTS_H_ 8 #define _CFE_FMTS_H_ 9 10 #include "cfe.h" 11 #include <media/mipi-csi2.h> 12 13 static const struct cfe_fmt formats[] = { 14 /* YUV Formats */ 15 { 16 .fourcc = V4L2_PIX_FMT_YUYV, 17 .code = MEDIA_BUS_FMT_YUYV8_1X16, 18 .depth = 16, 19 .csi_dt = MIPI_CSI2_DT_YUV422_8B, 20 }, 21 { 22 .fourcc = V4L2_PIX_FMT_UYVY, 23 .code = MEDIA_BUS_FMT_UYVY8_1X16, 24 .depth = 16, 25 .csi_dt = MIPI_CSI2_DT_YUV422_8B, 26 }, 27 { 28 .fourcc = V4L2_PIX_FMT_YVYU, 29 .code = MEDIA_BUS_FMT_YVYU8_1X16, 30 .depth = 16, 31 .csi_dt = MIPI_CSI2_DT_YUV422_8B, 32 }, 33 { 34 .fourcc = V4L2_PIX_FMT_VYUY, 35 .code = MEDIA_BUS_FMT_VYUY8_1X16, 36 .depth = 16, 37 .csi_dt = MIPI_CSI2_DT_YUV422_8B, 38 }, 39 { 40 /* RGB Formats */ 41 .fourcc = V4L2_PIX_FMT_RGB565, /* gggbbbbb rrrrrggg */ 42 .code = MEDIA_BUS_FMT_RGB565_2X8_LE, 43 .depth = 16, 44 .csi_dt = MIPI_CSI2_DT_RGB565, 45 }, 46 { .fourcc = V4L2_PIX_FMT_RGB565X, /* rrrrrggg gggbbbbb */ 47 .code = MEDIA_BUS_FMT_RGB565_2X8_BE, 48 .depth = 16, 49 .csi_dt = MIPI_CSI2_DT_RGB565, 50 }, 51 { 52 .fourcc = V4L2_PIX_FMT_RGB555, /* gggbbbbb arrrrrgg */ 53 .code = MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE, 54 .depth = 16, 55 .csi_dt = MIPI_CSI2_DT_RGB555, 56 }, 57 { 58 .fourcc = V4L2_PIX_FMT_RGB555X, /* arrrrrgg gggbbbbb */ 59 .code = MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE, 60 .depth = 16, 61 .csi_dt = MIPI_CSI2_DT_RGB555, 62 }, 63 { 64 .fourcc = V4L2_PIX_FMT_RGB24, /* rgb */ 65 .code = MEDIA_BUS_FMT_RGB888_1X24, 66 .depth = 24, 67 .csi_dt = MIPI_CSI2_DT_RGB888, 68 }, 69 { 70 .fourcc = V4L2_PIX_FMT_BGR24, /* bgr */ 71 .code = MEDIA_BUS_FMT_BGR888_1X24, 72 .depth = 24, 73 .csi_dt = MIPI_CSI2_DT_RGB888, 74 }, 75 { 76 .fourcc = V4L2_PIX_FMT_RGB32, /* argb */ 77 .code = MEDIA_BUS_FMT_ARGB8888_1X32, 78 .depth = 32, 79 .csi_dt = 0x0, 80 }, 81 82 /* Bayer Formats */ 83 { 84 .fourcc = V4L2_PIX_FMT_SBGGR8, 85 .code = MEDIA_BUS_FMT_SBGGR8_1X8, 86 .depth = 8, 87 .csi_dt = MIPI_CSI2_DT_RAW8, 88 .remap = { V4L2_PIX_FMT_SBGGR16, V4L2_PIX_FMT_PISP_COMP1_BGGR }, 89 }, 90 { 91 .fourcc = V4L2_PIX_FMT_SGBRG8, 92 .code = MEDIA_BUS_FMT_SGBRG8_1X8, 93 .depth = 8, 94 .csi_dt = MIPI_CSI2_DT_RAW8, 95 .remap = { V4L2_PIX_FMT_SGBRG16, V4L2_PIX_FMT_PISP_COMP1_GBRG }, 96 }, 97 { 98 .fourcc = V4L2_PIX_FMT_SGRBG8, 99 .code = MEDIA_BUS_FMT_SGRBG8_1X8, 100 .depth = 8, 101 .csi_dt = MIPI_CSI2_DT_RAW8, 102 .remap = { V4L2_PIX_FMT_SGRBG16, V4L2_PIX_FMT_PISP_COMP1_GRBG }, 103 }, 104 { 105 .fourcc = V4L2_PIX_FMT_SRGGB8, 106 .code = MEDIA_BUS_FMT_SRGGB8_1X8, 107 .depth = 8, 108 .csi_dt = MIPI_CSI2_DT_RAW8, 109 .remap = { V4L2_PIX_FMT_SRGGB16, V4L2_PIX_FMT_PISP_COMP1_RGGB }, 110 }, 111 { 112 .fourcc = V4L2_PIX_FMT_SBGGR10P, 113 .code = MEDIA_BUS_FMT_SBGGR10_1X10, 114 .depth = 10, 115 .csi_dt = MIPI_CSI2_DT_RAW10, 116 .remap = { V4L2_PIX_FMT_SBGGR16, V4L2_PIX_FMT_PISP_COMP1_BGGR }, 117 }, 118 { 119 .fourcc = V4L2_PIX_FMT_SGBRG10P, 120 .code = MEDIA_BUS_FMT_SGBRG10_1X10, 121 .depth = 10, 122 .csi_dt = MIPI_CSI2_DT_RAW10, 123 .remap = { V4L2_PIX_FMT_SGBRG16, V4L2_PIX_FMT_PISP_COMP1_GBRG }, 124 }, 125 { 126 .fourcc = V4L2_PIX_FMT_SGRBG10P, 127 .code = MEDIA_BUS_FMT_SGRBG10_1X10, 128 .depth = 10, 129 .csi_dt = MIPI_CSI2_DT_RAW10, 130 .remap = { V4L2_PIX_FMT_SGRBG16, V4L2_PIX_FMT_PISP_COMP1_GRBG }, 131 }, 132 { 133 .fourcc = V4L2_PIX_FMT_SRGGB10P, 134 .code = MEDIA_BUS_FMT_SRGGB10_1X10, 135 .depth = 10, 136 .csi_dt = MIPI_CSI2_DT_RAW10, 137 .remap = { V4L2_PIX_FMT_SRGGB16, V4L2_PIX_FMT_PISP_COMP1_RGGB }, 138 }, 139 { 140 .fourcc = V4L2_PIX_FMT_SBGGR12P, 141 .code = MEDIA_BUS_FMT_SBGGR12_1X12, 142 .depth = 12, 143 .csi_dt = MIPI_CSI2_DT_RAW12, 144 .remap = { V4L2_PIX_FMT_SBGGR16, V4L2_PIX_FMT_PISP_COMP1_BGGR }, 145 }, 146 { 147 .fourcc = V4L2_PIX_FMT_SGBRG12P, 148 .code = MEDIA_BUS_FMT_SGBRG12_1X12, 149 .depth = 12, 150 .csi_dt = MIPI_CSI2_DT_RAW12, 151 .remap = { V4L2_PIX_FMT_SGBRG16, V4L2_PIX_FMT_PISP_COMP1_GBRG }, 152 }, 153 { 154 .fourcc = V4L2_PIX_FMT_SGRBG12P, 155 .code = MEDIA_BUS_FMT_SGRBG12_1X12, 156 .depth = 12, 157 .csi_dt = MIPI_CSI2_DT_RAW12, 158 .remap = { V4L2_PIX_FMT_SGRBG16, V4L2_PIX_FMT_PISP_COMP1_GRBG }, 159 }, 160 { 161 .fourcc = V4L2_PIX_FMT_SRGGB12P, 162 .code = MEDIA_BUS_FMT_SRGGB12_1X12, 163 .depth = 12, 164 .csi_dt = MIPI_CSI2_DT_RAW12, 165 .remap = { V4L2_PIX_FMT_SRGGB16, V4L2_PIX_FMT_PISP_COMP1_RGGB }, 166 }, 167 { 168 .fourcc = V4L2_PIX_FMT_SBGGR14P, 169 .code = MEDIA_BUS_FMT_SBGGR14_1X14, 170 .depth = 14, 171 .csi_dt = MIPI_CSI2_DT_RAW14, 172 .remap = { V4L2_PIX_FMT_SBGGR16, V4L2_PIX_FMT_PISP_COMP1_BGGR }, 173 }, 174 { 175 .fourcc = V4L2_PIX_FMT_SGBRG14P, 176 .code = MEDIA_BUS_FMT_SGBRG14_1X14, 177 .depth = 14, 178 .csi_dt = MIPI_CSI2_DT_RAW14, 179 .remap = { V4L2_PIX_FMT_SGBRG16, V4L2_PIX_FMT_PISP_COMP1_GBRG }, 180 }, 181 { 182 .fourcc = V4L2_PIX_FMT_SGRBG14P, 183 .code = MEDIA_BUS_FMT_SGRBG14_1X14, 184 .depth = 14, 185 .csi_dt = MIPI_CSI2_DT_RAW14, 186 .remap = { V4L2_PIX_FMT_SGRBG16, V4L2_PIX_FMT_PISP_COMP1_GRBG }, 187 }, 188 { 189 .fourcc = V4L2_PIX_FMT_SRGGB14P, 190 .code = MEDIA_BUS_FMT_SRGGB14_1X14, 191 .depth = 14, 192 .csi_dt = MIPI_CSI2_DT_RAW14, 193 .remap = { V4L2_PIX_FMT_SRGGB16, V4L2_PIX_FMT_PISP_COMP1_RGGB }, 194 }, 195 { 196 .fourcc = V4L2_PIX_FMT_SBGGR16, 197 .code = MEDIA_BUS_FMT_SBGGR16_1X16, 198 .depth = 16, 199 .csi_dt = MIPI_CSI2_DT_RAW16, 200 .flags = CFE_FORMAT_FLAG_FE_OUT, 201 .remap = { V4L2_PIX_FMT_SBGGR16, V4L2_PIX_FMT_PISP_COMP1_BGGR }, 202 }, 203 { 204 .fourcc = V4L2_PIX_FMT_SGBRG16, 205 .code = MEDIA_BUS_FMT_SGBRG16_1X16, 206 .depth = 16, 207 .csi_dt = MIPI_CSI2_DT_RAW16, 208 .flags = CFE_FORMAT_FLAG_FE_OUT, 209 .remap = { V4L2_PIX_FMT_SGBRG16, V4L2_PIX_FMT_PISP_COMP1_GBRG }, 210 }, 211 { 212 .fourcc = V4L2_PIX_FMT_SGRBG16, 213 .code = MEDIA_BUS_FMT_SGRBG16_1X16, 214 .depth = 16, 215 .csi_dt = MIPI_CSI2_DT_RAW16, 216 .flags = CFE_FORMAT_FLAG_FE_OUT, 217 .remap = { V4L2_PIX_FMT_SGRBG16, V4L2_PIX_FMT_PISP_COMP1_GRBG }, 218 }, 219 { 220 .fourcc = V4L2_PIX_FMT_SRGGB16, 221 .code = MEDIA_BUS_FMT_SRGGB16_1X16, 222 .depth = 16, 223 .csi_dt = MIPI_CSI2_DT_RAW16, 224 .flags = CFE_FORMAT_FLAG_FE_OUT, 225 .remap = { V4L2_PIX_FMT_SRGGB16, V4L2_PIX_FMT_PISP_COMP1_RGGB }, 226 }, 227 /* PiSP Compressed Mode 1 */ 228 { 229 .fourcc = V4L2_PIX_FMT_PISP_COMP1_RGGB, 230 .code = MEDIA_BUS_FMT_SRGGB16_1X16, 231 .depth = 8, 232 .flags = CFE_FORMAT_FLAG_FE_OUT, 233 }, 234 { 235 .fourcc = V4L2_PIX_FMT_PISP_COMP1_BGGR, 236 .code = MEDIA_BUS_FMT_SBGGR16_1X16, 237 .depth = 8, 238 .flags = CFE_FORMAT_FLAG_FE_OUT, 239 }, 240 { 241 .fourcc = V4L2_PIX_FMT_PISP_COMP1_GBRG, 242 .code = MEDIA_BUS_FMT_SGBRG16_1X16, 243 .depth = 8, 244 .flags = CFE_FORMAT_FLAG_FE_OUT, 245 }, 246 { 247 .fourcc = V4L2_PIX_FMT_PISP_COMP1_GRBG, 248 .code = MEDIA_BUS_FMT_SGRBG16_1X16, 249 .depth = 8, 250 .flags = CFE_FORMAT_FLAG_FE_OUT, 251 }, 252 /* Greyscale format */ 253 { 254 .fourcc = V4L2_PIX_FMT_GREY, 255 .code = MEDIA_BUS_FMT_Y8_1X8, 256 .depth = 8, 257 .csi_dt = MIPI_CSI2_DT_RAW8, 258 .remap = { V4L2_PIX_FMT_Y16, V4L2_PIX_FMT_PISP_COMP1_MONO }, 259 }, 260 { 261 .fourcc = V4L2_PIX_FMT_Y10P, 262 .code = MEDIA_BUS_FMT_Y10_1X10, 263 .depth = 10, 264 .csi_dt = MIPI_CSI2_DT_RAW10, 265 .remap = { V4L2_PIX_FMT_Y16, V4L2_PIX_FMT_PISP_COMP1_MONO }, 266 }, 267 { 268 .fourcc = V4L2_PIX_FMT_Y12P, 269 .code = MEDIA_BUS_FMT_Y12_1X12, 270 .depth = 12, 271 .csi_dt = MIPI_CSI2_DT_RAW12, 272 .remap = { V4L2_PIX_FMT_Y16, V4L2_PIX_FMT_PISP_COMP1_MONO }, 273 }, 274 { 275 .fourcc = V4L2_PIX_FMT_Y14P, 276 .code = MEDIA_BUS_FMT_Y14_1X14, 277 .depth = 14, 278 .csi_dt = MIPI_CSI2_DT_RAW14, 279 .remap = { V4L2_PIX_FMT_Y16, V4L2_PIX_FMT_PISP_COMP1_MONO }, 280 }, 281 { 282 .fourcc = V4L2_PIX_FMT_Y16, 283 .code = MEDIA_BUS_FMT_Y16_1X16, 284 .depth = 16, 285 .csi_dt = MIPI_CSI2_DT_RAW16, 286 .flags = CFE_FORMAT_FLAG_FE_OUT, 287 .remap = { V4L2_PIX_FMT_Y16, V4L2_PIX_FMT_PISP_COMP1_MONO }, 288 }, 289 { 290 .fourcc = V4L2_PIX_FMT_PISP_COMP1_MONO, 291 .code = MEDIA_BUS_FMT_Y16_1X16, 292 .depth = 8, 293 .flags = CFE_FORMAT_FLAG_FE_OUT, 294 }, 295 296 /* Embedded data formats */ 297 { 298 .fourcc = V4L2_META_FMT_GENERIC_8, 299 .code = MEDIA_BUS_FMT_META_8, 300 .depth = 8, 301 .csi_dt = MIPI_CSI2_DT_EMBEDDED_8B, 302 .flags = CFE_FORMAT_FLAG_META_CAP, 303 }, 304 { 305 .fourcc = V4L2_META_FMT_GENERIC_CSI2_10, 306 .code = MEDIA_BUS_FMT_META_10, 307 .depth = 10, 308 .csi_dt = MIPI_CSI2_DT_EMBEDDED_8B, 309 .flags = CFE_FORMAT_FLAG_META_CAP, 310 }, 311 { 312 .fourcc = V4L2_META_FMT_GENERIC_CSI2_12, 313 .code = MEDIA_BUS_FMT_META_12, 314 .depth = 12, 315 .csi_dt = MIPI_CSI2_DT_EMBEDDED_8B, 316 .flags = CFE_FORMAT_FLAG_META_CAP, 317 }, 318 319 /* Frontend formats */ 320 { 321 .fourcc = V4L2_META_FMT_RPI_FE_CFG, 322 .code = MEDIA_BUS_FMT_FIXED, 323 .flags = CFE_FORMAT_FLAG_META_OUT, 324 }, 325 { 326 .fourcc = V4L2_META_FMT_RPI_FE_STATS, 327 .code = MEDIA_BUS_FMT_FIXED, 328 .flags = CFE_FORMAT_FLAG_META_CAP, 329 }, 330 }; 331 332 #endif /* _CFE_FMTS_H_ */ 333