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