mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
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:
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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(<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) {
|
||||
|
||||
Reference in New Issue
Block a user