diff --git a/drivers/media/i2c/lt6911uxc.c b/drivers/media/i2c/lt6911uxc.c index 86e2c93a0909..07ada7454eca 100644 --- a/drivers/media/i2c/lt6911uxc.c +++ b/drivers/media/i2c/lt6911uxc.c @@ -42,6 +42,12 @@ #define I2C_MAX_XFER_SIZE 128 +#ifdef LT6911UXC_OUT_RGB +#define LT6911UXC_MEDIA_BUS_FMT MEDIA_BUS_FMT_BGR888_1X24 +#else +#define LT6911UXC_MEDIA_BUS_FMT MEDIA_BUS_FMT_UYVY8_2X8 +#endif + static int debug; module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "debug level (0-2)"); @@ -784,7 +790,7 @@ static int lt6911uxc_enum_mbus_code(struct v4l2_subdev *sd, { switch (code->index) { case 0: - code->code = MEDIA_BUS_FMT_UYVY8_2X8; + code->code = LT6911UXC_MEDIA_BUS_FMT; break; default: @@ -801,7 +807,7 @@ static int lt6911uxc_enum_frame_sizes(struct v4l2_subdev *sd, if (fse->index >= ARRAY_SIZE(supported_modes)) return -EINVAL; - if (fse->code != MEDIA_BUS_FMT_UYVY8_2X8) + if (fse->code != LT6911UXC_MEDIA_BUS_FMT) return -EINVAL; fse->min_width = supported_modes[fse->index].width; @@ -819,7 +825,7 @@ static int lt6911uxc_enum_frame_interval(struct v4l2_subdev *sd, if (fie->index >= ARRAY_SIZE(supported_modes)) return -EINVAL; - if (fie->code != MEDIA_BUS_FMT_UYVY8_2X8) + if (fie->code != LT6911UXC_MEDIA_BUS_FMT) return -EINVAL; fie->width = supported_modes[fie->index].width; @@ -897,7 +903,7 @@ static int lt6911uxc_set_fmt(struct v4l2_subdev *sd, return ret; switch (code) { - case MEDIA_BUS_FMT_UYVY8_2X8: + case LT6911UXC_MEDIA_BUS_FMT: break; default: @@ -1295,7 +1301,7 @@ static int lt6911uxc_probe(struct i2c_client *client, sd = <6911uxc->sd; lt6911uxc->i2c_client = client; lt6911uxc->cur_mode = &supported_modes[0]; - lt6911uxc->mbus_fmt_code = MEDIA_BUS_FMT_UYVY8_2X8; + lt6911uxc->mbus_fmt_code = LT6911UXC_MEDIA_BUS_FMT; err = lt6911uxc_parse_of(lt6911uxc); if (err) { diff --git a/drivers/media/i2c/lt7911d.c b/drivers/media/i2c/lt7911d.c index 4e295d4159a2..f2a479946174 100644 --- a/drivers/media/i2c/lt7911d.c +++ b/drivers/media/i2c/lt7911d.c @@ -49,6 +49,12 @@ MODULE_PARM_DESC(debug, "debug level (0-3)"); #define LT7911D_LINK_FREQ 400000000 #define LT7911D_PIXEL_RATE 400000000 +#ifdef LT7911D_OUT_RGB +#define LT7911D_MEDIA_BUS_FMT MEDIA_BUS_FMT_BGR888_1X24 +#else +#define LT7911D_MEDIA_BUS_FMT MEDIA_BUS_FMT_UYVY8_2X8 +#endif + #define LT7911D_NAME "LT7911D" static const s64 link_freq_menu_items[] = { @@ -756,7 +762,7 @@ static int lt7911d_enum_mbus_code(struct v4l2_subdev *sd, { switch (code->index) { case 0: - code->code = MEDIA_BUS_FMT_UYVY8_2X8; + code->code = LT7911D_MEDIA_BUS_FMT; break; default: @@ -773,7 +779,7 @@ static int lt7911d_enum_frame_sizes(struct v4l2_subdev *sd, if (fse->index >= ARRAY_SIZE(supported_modes)) return -EINVAL; - if (fse->code != MEDIA_BUS_FMT_UYVY8_2X8) + if (fse->code != LT7911D_MEDIA_BUS_FMT) return -EINVAL; fse->min_width = supported_modes[fse->index].width; @@ -814,7 +820,7 @@ static int lt7911d_enum_frame_interval(struct v4l2_subdev *sd, if (fie->index >= ARRAY_SIZE(supported_modes)) return -EINVAL; - if (fie->code != MEDIA_BUS_FMT_UYVY8_2X8) + if (fie->code != LT7911D_MEDIA_BUS_FMT) return -EINVAL; fie->width = supported_modes[fie->index].width; @@ -868,7 +874,7 @@ static int lt7911d_set_fmt(struct v4l2_subdev *sd, return ret; switch (code) { - case MEDIA_BUS_FMT_UYVY8_2X8: + case LT7911D_MEDIA_BUS_FMT: break; default: @@ -1227,7 +1233,7 @@ static int lt7911d_probe(struct i2c_client *client, sd = <7911d->sd; lt7911d->i2c_client = client; lt7911d->cur_mode = &supported_modes[0]; - lt7911d->mbus_fmt_code = MEDIA_BUS_FMT_UYVY8_2X8; + lt7911d->mbus_fmt_code = LT7911D_MEDIA_BUS_FMT; err = lt7911d_probe_of(lt7911d); if (err) { diff --git a/drivers/media/i2c/lt7911uxc.c b/drivers/media/i2c/lt7911uxc.c index 21ba5062e8ae..f89aa0f272e3 100644 --- a/drivers/media/i2c/lt7911uxc.c +++ b/drivers/media/i2c/lt7911uxc.c @@ -11,6 +11,7 @@ * V0.0X01.0X02 add CPHY support. * V0.0X01.0X03 add rk3588 dcphy param. * V0.0X01.0X04 add 5K60 support for CPHY. + * V0.0X01.0X05 add CSI BGR888 fmt. * */ @@ -38,7 +39,7 @@ #include #include -#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x04) +#define DRIVER_VERSION KERNEL_VERSION(0, 0x01, 0x05) static int debug; module_param(debug, int, 0644); @@ -93,6 +94,12 @@ MODULE_PARM_DESC(debug, "debug level (0-3)"); #define ENABLE_STREAM 0x01 #define DISABLE_STREAM 0x00 +#ifdef LT7911UXC_OUT_RGB +#define LT7911UXC_MEDIA_BUS_FMT MEDIA_BUS_FMT_BGR888_1X24 +#else +#define LT7911UXC_MEDIA_BUS_FMT MEDIA_BUS_FMT_UYVY8_2X8 +#endif + #define LT7911UXC_NAME "LT7911UXC" static const s64 link_freq_menu_items[] = { @@ -893,7 +900,7 @@ static int lt7911uxc_enum_mbus_code(struct v4l2_subdev *sd, { switch (code->index) { case 0: - code->code = MEDIA_BUS_FMT_UYVY8_2X8; + code->code = LT7911UXC_MEDIA_BUS_FMT; break; default: @@ -912,7 +919,7 @@ static int lt7911uxc_enum_frame_sizes(struct v4l2_subdev *sd, if (fse->index >= lt7911uxc->cfg_num) return -EINVAL; - if (fse->code != MEDIA_BUS_FMT_UYVY8_2X8) + if (fse->code != LT7911UXC_MEDIA_BUS_FMT) return -EINVAL; fse->min_width = lt7911uxc->support_modes[fse->index].width; @@ -955,7 +962,7 @@ static int lt7911uxc_enum_frame_interval(struct v4l2_subdev *sd, if (fie->index >= lt7911uxc->cfg_num) return -EINVAL; - if (fie->code != MEDIA_BUS_FMT_UYVY8_2X8) + if (fie->code != LT7911UXC_MEDIA_BUS_FMT) return -EINVAL; fie->width = lt7911uxc->support_modes[fie->index].width; @@ -1009,7 +1016,7 @@ static int lt7911uxc_set_fmt(struct v4l2_subdev *sd, return ret; switch (code) { - case MEDIA_BUS_FMT_UYVY8_2X8: + case LT7911UXC_MEDIA_BUS_FMT: break; default: @@ -1205,7 +1212,7 @@ static int lt7911uxc_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) /* Initialize try_fmt */ try_fmt->width = def_mode->width; try_fmt->height = def_mode->height; - try_fmt->code = MEDIA_BUS_FMT_UYVY8_2X8; + try_fmt->code = LT7911UXC_MEDIA_BUS_FMT; try_fmt->field = V4L2_FIELD_NONE; mutex_unlock(<7911uxc->confctl_mutex); @@ -1469,7 +1476,7 @@ static int lt7911uxc_probe(struct i2c_client *client, sd = <7911uxc->sd; lt7911uxc->i2c_client = client; - lt7911uxc->mbus_fmt_code = MEDIA_BUS_FMT_UYVY8_2X8; + lt7911uxc->mbus_fmt_code = LT7911UXC_MEDIA_BUS_FMT; err = lt7911uxc_probe_of(lt7911uxc); if (err) {