On Thu, 6 May 2021 at 21:51, Marek Vasut <ma...@denx.de> wrote:
>
> On 5/6/21 6:03 PM, Frieder Schrempf wrote:
> > On 06.05.21 17:46, Marek Vasut wrote:
> >> On 5/6/21 5:38 PM, Frieder Schrempf wrote:
> >> [...]
> >>> Works on i.MX8MM with SN65DSI84 and a single link LVDS display (1024x600) 
> >>> and from my perspective everything else also looks good. Thanks for your 
> >>> work!
> >>>
> >>> I have two remarks:
> >>>
> >>> 1. In my test I couldn't get it to work with four DSI lanes enabled (only 
> >>> with two) but I'm quite sure that the DSIM driver is to blame as 
> >>> everything on the bridge level looks good (also setting the DSI EQ 
> >>> register didn't help as you suggested, Marek).
> >>
> >> I suspect there is indeed something with the DSIM going on, I'll keep you 
> >> posted if I find something out.
> >>
> >>> 2. When I set MEDIA_BUS_FMT_RGB888_1X7X4_SPWG in the panel driver I get 
> >>> distorted colors. I need to use MEDIA_BUS_FMT_RGB888_1X24 to make it 
> >>> work, but this is not valid for LVDS. Again I don't think this driver is 
> >>> to blame as I can't see where it does anything wrong, but my experience 
> >>> here is very limited so I still want to mention it.
> >>
> >> Hmm, in that conversion supposed to happen in this bridge driver or should 
> >> MXSFB handle the SPWG pixel format ? Or should the DSIM bridge do 
> >> something about that ?
> >
> > As far as I understand it the conversion is already done by the DSI84 
> > without any extra configuration necessary. The only thing that needs to be 
> > done is selecting the LVDS output format via CHx_24BPP_MODE and 
> > CHx_24BPP_FORMAT1 which the driver currently hardcodes to 24bpp aka 
> > MEDIA_BUS_FMT_RGB888_1X7X4_SPWG. I think the DSI input format is always 
> > 24bpp aka MEDIA_BUS_FMT_RGB888_1X24.
>
> The DSI is MEDIA_BUS_FMT_RGB888_1X24, yes.
>
> So maybe this bridge driver has to somehow deal with
> MEDIA_BUS_FMT_RGB888_1X7X4_SPWG ? Except I haven't seen such a thing
> implemented in other bridge drivers, so input would be welcome on this.

I'm claiming no knowledge of whether this is the correct approach or
not, but Toshiba TC358775 is also a DSI to LVDS bridge which appears
to handle both formats.
https://elixir.free-electrons.com/linux/latest/source/drivers/gpu/drm/bridge/tc358775.c#L457

> > So I wonder where the format actually is evaluated. Could it be that it is 
> > passed down to the LCDIF and changes its output format which causes the 
> > data passed by DSIM to the DSI84 to already be in the SPWG format? If 
> > that's the case we maybe need a way to specify MEDIA_BUS_FMT_RGB888_1X24 as 
> > input bus format for the DSI84 so it doesn't pass on the panel's format? 
> > Only a wild guess, no idea if it really works like that.
>
> I _think_ the bridge must somehow handle the
> MEDIA_BUS_FMT_RGB888_1X7X4_SPWG <-> MEDIA_BUS_FMT_RGB888_1X24 conversion.

I've not looked at where the interchange happens, but as you're
setting the DSI format in struct mipi_dsi_device to
MIPI_DSI_FMT_RGB888 doesn't that provide the configuration side to the
DSI transmitter?
Otherwise presumably it needs to support the atomic_get_input_bus_fmts
and/or atomic_get_output_bus_fmts functions in drm_bridge_funcs.

  Dave

Reply via email to