mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
media: ipu6: isys: Add support for monochrome media bus formats
Add support for monochrome media bus formats, for use with monochrome/IR camera sensors. This has been tested on a Dell XPS 13 9320 with OV1A1B IR sensor. Signed-off-by: Hans de Goede <hansg@kernel.org> Reviewed-by: Bingbu Cao <bingbu.cao@intel.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
committed by
Hans Verkuil
parent
15ac3d54a8
commit
4985b66fbd
@@ -42,6 +42,10 @@ static const u32 csi2_supported_codes[] = {
|
||||
MEDIA_BUS_FMT_SGBRG8_1X8,
|
||||
MEDIA_BUS_FMT_SGRBG8_1X8,
|
||||
MEDIA_BUS_FMT_SRGGB8_1X8,
|
||||
MEDIA_BUS_FMT_Y8_1X8,
|
||||
MEDIA_BUS_FMT_Y10_1X10,
|
||||
MEDIA_BUS_FMT_Y12_1X12,
|
||||
MEDIA_BUS_FMT_Y16_1X16,
|
||||
MEDIA_BUS_FMT_META_8,
|
||||
MEDIA_BUS_FMT_META_10,
|
||||
MEDIA_BUS_FMT_META_12,
|
||||
|
||||
@@ -25,24 +25,28 @@ unsigned int ipu6_isys_mbus_code_to_bpp(u32 code)
|
||||
case MEDIA_BUS_FMT_RGB565_1X16:
|
||||
case MEDIA_BUS_FMT_UYVY8_1X16:
|
||||
case MEDIA_BUS_FMT_YUYV8_1X16:
|
||||
case MEDIA_BUS_FMT_Y16_1X16:
|
||||
case MEDIA_BUS_FMT_META_16:
|
||||
return 16;
|
||||
case MEDIA_BUS_FMT_SBGGR12_1X12:
|
||||
case MEDIA_BUS_FMT_SGBRG12_1X12:
|
||||
case MEDIA_BUS_FMT_SGRBG12_1X12:
|
||||
case MEDIA_BUS_FMT_SRGGB12_1X12:
|
||||
case MEDIA_BUS_FMT_Y12_1X12:
|
||||
case MEDIA_BUS_FMT_META_12:
|
||||
return 12;
|
||||
case MEDIA_BUS_FMT_SBGGR10_1X10:
|
||||
case MEDIA_BUS_FMT_SGBRG10_1X10:
|
||||
case MEDIA_BUS_FMT_SGRBG10_1X10:
|
||||
case MEDIA_BUS_FMT_SRGGB10_1X10:
|
||||
case MEDIA_BUS_FMT_Y10_1X10:
|
||||
case MEDIA_BUS_FMT_META_10:
|
||||
return 10;
|
||||
case MEDIA_BUS_FMT_SBGGR8_1X8:
|
||||
case MEDIA_BUS_FMT_SGBRG8_1X8:
|
||||
case MEDIA_BUS_FMT_SGRBG8_1X8:
|
||||
case MEDIA_BUS_FMT_SRGGB8_1X8:
|
||||
case MEDIA_BUS_FMT_Y8_1X8:
|
||||
case MEDIA_BUS_FMT_META_8:
|
||||
return 8;
|
||||
default:
|
||||
@@ -65,21 +69,25 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
|
||||
case MEDIA_BUS_FMT_SGBRG16_1X16:
|
||||
case MEDIA_BUS_FMT_SGRBG16_1X16:
|
||||
case MEDIA_BUS_FMT_SRGGB16_1X16:
|
||||
case MEDIA_BUS_FMT_Y16_1X16:
|
||||
return MIPI_CSI2_DT_RAW16;
|
||||
case MEDIA_BUS_FMT_SBGGR12_1X12:
|
||||
case MEDIA_BUS_FMT_SGBRG12_1X12:
|
||||
case MEDIA_BUS_FMT_SGRBG12_1X12:
|
||||
case MEDIA_BUS_FMT_SRGGB12_1X12:
|
||||
case MEDIA_BUS_FMT_Y12_1X12:
|
||||
return MIPI_CSI2_DT_RAW12;
|
||||
case MEDIA_BUS_FMT_SBGGR10_1X10:
|
||||
case MEDIA_BUS_FMT_SGBRG10_1X10:
|
||||
case MEDIA_BUS_FMT_SGRBG10_1X10:
|
||||
case MEDIA_BUS_FMT_SRGGB10_1X10:
|
||||
case MEDIA_BUS_FMT_Y10_1X10:
|
||||
return MIPI_CSI2_DT_RAW10;
|
||||
case MEDIA_BUS_FMT_SBGGR8_1X8:
|
||||
case MEDIA_BUS_FMT_SGBRG8_1X8:
|
||||
case MEDIA_BUS_FMT_SGRBG8_1X8:
|
||||
case MEDIA_BUS_FMT_SRGGB8_1X8:
|
||||
case MEDIA_BUS_FMT_Y8_1X8:
|
||||
return MIPI_CSI2_DT_RAW8;
|
||||
case MEDIA_BUS_FMT_META_8:
|
||||
case MEDIA_BUS_FMT_META_10:
|
||||
@@ -96,15 +104,23 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
|
||||
|
||||
bool ipu6_isys_is_bayer_format(u32 code)
|
||||
{
|
||||
switch (ipu6_isys_mbus_code_to_mipi(code)) {
|
||||
case MIPI_CSI2_DT_RAW8:
|
||||
case MIPI_CSI2_DT_RAW10:
|
||||
case MIPI_CSI2_DT_RAW12:
|
||||
case MIPI_CSI2_DT_RAW14:
|
||||
case MIPI_CSI2_DT_RAW16:
|
||||
case MIPI_CSI2_DT_RAW20:
|
||||
case MIPI_CSI2_DT_RAW24:
|
||||
case MIPI_CSI2_DT_RAW28:
|
||||
switch (code) {
|
||||
case MEDIA_BUS_FMT_SBGGR8_1X8:
|
||||
case MEDIA_BUS_FMT_SGBRG8_1X8:
|
||||
case MEDIA_BUS_FMT_SGRBG8_1X8:
|
||||
case MEDIA_BUS_FMT_SRGGB8_1X8:
|
||||
case MEDIA_BUS_FMT_SBGGR10_1X10:
|
||||
case MEDIA_BUS_FMT_SGBRG10_1X10:
|
||||
case MEDIA_BUS_FMT_SGRBG10_1X10:
|
||||
case MEDIA_BUS_FMT_SRGGB10_1X10:
|
||||
case MEDIA_BUS_FMT_SBGGR12_1X12:
|
||||
case MEDIA_BUS_FMT_SGBRG12_1X12:
|
||||
case MEDIA_BUS_FMT_SGRBG12_1X12:
|
||||
case MEDIA_BUS_FMT_SRGGB12_1X12:
|
||||
case MEDIA_BUS_FMT_SRGGB16_1X16:
|
||||
case MEDIA_BUS_FMT_SGRBG16_1X16:
|
||||
case MEDIA_BUS_FMT_SGBRG16_1X16:
|
||||
case MEDIA_BUS_FMT_SBGGR16_1X16:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
@@ -77,6 +77,20 @@ const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = {
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
|
||||
{ V4L2_PIX_FMT_SRGGB10P, 10, 10, MEDIA_BUS_FMT_SRGGB10_1X10,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
|
||||
|
||||
{ V4L2_PIX_FMT_GREY, 8, 8, MEDIA_BUS_FMT_Y8_1X8,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW8 },
|
||||
{ V4L2_PIX_FMT_Y10, 16, 10, MEDIA_BUS_FMT_Y10_1X10,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
|
||||
{ V4L2_PIX_FMT_Y12, 16, 12, MEDIA_BUS_FMT_Y12_1X12,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
|
||||
{ V4L2_PIX_FMT_Y16, 16, 16, MEDIA_BUS_FMT_Y16_1X16,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
|
||||
{ V4L2_PIX_FMT_Y10P, 10, 10, MEDIA_BUS_FMT_Y10_1X10,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
|
||||
{ V4L2_PIX_FMT_Y12P, 12, 12, MEDIA_BUS_FMT_Y12_1X12,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_RAW12 },
|
||||
|
||||
{ V4L2_PIX_FMT_UYVY, 16, 16, MEDIA_BUS_FMT_UYVY8_1X16,
|
||||
IPU6_FW_ISYS_FRAME_FORMAT_UYVY},
|
||||
{ V4L2_PIX_FMT_YUYV, 16, 16, MEDIA_BUS_FMT_YUYV8_1X16,
|
||||
|
||||
Reference in New Issue
Block a user