Re: [PATCH 3/8] drm: bridge: thc63lvd1024: Add support for LVDS mode map

From: Laurent Pinchart
Date: Mon Apr 23 2018 - 08:12:51 EST


Hi Jacopo,

On Monday, 23 April 2018 10:41:56 EEST jacopo mondi wrote:
> On Sun, Apr 22, 2018 at 10:02:51PM +0200, Peter Rosin wrote:
> > On 2018-04-19 11:31, Jacopo Mondi wrote:
> >> The THC63LVD1024 LVDS to RGB bridge supports two different LVDS mapping
> >> modes, selectable by means of an external pin.
> >>
> >> Add support for configurable LVDS input mapping modes, using the newly
> >> introduced support for bridge input image formats.
> >>
> >> Signed-off-by: Jacopo Mondi <jacopo+renesas@xxxxxxxxxx>
> >> ---
> >>
> >> drivers/gpu/drm/bridge/thc63lvd1024.c | 41 ++++++++++++++++++++++++++++
> >> 1 file changed, 41 insertions(+)
> >>
> >> diff --git a/drivers/gpu/drm/bridge/thc63lvd1024.c
> >> b/drivers/gpu/drm/bridge/thc63lvd1024.c index 48527f8..a3071a1 100644
> >> --- a/drivers/gpu/drm/bridge/thc63lvd1024.c
> >> +++ b/drivers/gpu/drm/bridge/thc63lvd1024.c

[snip]

> >> +static int thc63_set_bus_fmt(struct thc63_dev *thc63)
> >> +{
> >> + u32 bus_fmt;
> >> + u32 map;
> >> + int ret;
> >> +
> >> + ret = of_property_read_u32(thc63->dev->of_node, "thine,map", &map);
> >> + if (ret) {
> >> + dev_err(thc63->dev,
> >> + "Unable to parse property \"thine,map\": %d\n", ret);
> >> + return ret;
> >> + }
> >> +
> >> + switch (map) {
> >> + case THC63_LVDS_MAP_MODE1:
> >> + bus_fmt = MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA;
> >> + break;
> >> + case THC63_LVDS_MAP_MODE2:
> >> + bus_fmt = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG;
> >
> > Why do you assume rgb888/1x7x4 here? It might as well be rgb666/1x7x3
> > or rgb101010/1x7x5, no?
>
> I should combine the 'map' pin input mode property with the 'bus_width' one
> to find that out probably.

Yes, but that could also be left for later, when the need to support those
formats arise, especially given that include/uapi/linux/media-bus-format.h has
no 1x7x5 formats yet.

> >> + break;
> >> + default:
> >> + dev_err(thc63->dev,
> >> + "Invalid value for property \"thine,map\": %u\n", map);
> >> + return -EINVAL;
> >> + }
> >> +
> >> + drm_bridge_set_bus_formats(&thc63->bridge, &bus_fmt, 1);
> >> +
> >> + return 0;
> >> +}

--
Regards,

Laurent Pinchart