media: i2c: Lontium bridge: add CSI BGR888 media bus format

Change-Id: I0da2e6e9c6683ae6ac4c0a900b9d3bb6291d0a4c
Signed-off-by: Jianwei Fan <jianwei.fan@rock-chips.com>
This commit is contained in:
Jianwei Fan
2022-11-24 09:21:04 +00:00
committed by 范建威
parent cac789f29a
commit 4612b633c9
3 changed files with 36 additions and 17 deletions

View File

@@ -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 = &lt6911uxc->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) {

View File

@@ -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 = &lt7911d->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) {

View File

@@ -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 <media/v4l2-event.h>
#include <media/v4l2-fwnode.h>
#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(&lt7911uxc->confctl_mutex);
@@ -1469,7 +1476,7 @@ static int lt7911uxc_probe(struct i2c_client *client,
sd = &lt7911uxc->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) {