Am Dienstag, den 01.02.2022, 12:36 +0100 schrieb Christoph Niedermaier: > If display timings were read from the devicetree using > of_get_display_timing() and pixelclk-active is defined > there, the flag DISPLAY_FLAGS_SYNC_POSEDGE/NEGEDGE is > automatically generated. Through the function > drm_bus_flags_from_videomode() e.g. called in the > panel-simple driver this flag got into the bus flags, > but then in imx_pd_bridge_atomic_check() the bus flag > check failed and will not initialize the display. The > original commit fe141cedc433 does not explain why this > check was introduced. So remove the bus flags check, > because it stops the initialization of the display with > valid bus flags. > > Fixes: fe141cedc433 ("drm/imx: pd: Use bus format/flags provided by the > bridge when available") > Signed-off-by: Christoph Niedermaier <cniederma...@dh-electronics.com> > Cc: Marek Vasut <ma...@denx.de> > Cc: Boris Brezillon <boris.brezil...@collabora.com> > Cc: Philipp Zabel <p.za...@pengutronix.de> > Cc: David Airlie <airl...@linux.ie> > Cc: Daniel Vetter <dan...@ffwll.ch> > Cc: Shawn Guo <shawn...@kernel.org> > Cc: Sascha Hauer <s.ha...@pengutronix.de> > Cc: Pengutronix Kernel Team <ker...@pengutronix.de> > Cc: Fabio Estevam <feste...@gmail.com> > Cc: NXP Linux Team <linux-...@nxp.com> > Cc: linux-arm-ker...@lists.infradead.org > To: dri-devel@lists.freedesktop.org > --- > V2: - Add Boris to the Cc list > --- > drivers/gpu/drm/imx/parallel-display.c | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/drivers/gpu/drm/imx/parallel-display.c > b/drivers/gpu/drm/imx/parallel-display.c > index a8aba0141ce7..06cb1a59b9bc 100644 > --- a/drivers/gpu/drm/imx/parallel-display.c > +++ b/drivers/gpu/drm/imx/parallel-display.c > @@ -217,14 +217,6 @@ static int imx_pd_bridge_atomic_check(struct drm_bridge > *bridge, > if (!imx_pd_format_supported(bus_fmt)) > return -EINVAL; > > - if (bus_flags & > - ~(DRM_BUS_FLAG_DE_LOW | DRM_BUS_FLAG_DE_HIGH | > - DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE | > - DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)) { > - dev_warn(imxpd->dev, "invalid bus_flags (%x)\n", bus_flags); > - return -EINVAL; > - } > - > bridge_state->output_bus_cfg.flags = bus_flags; > bridge_state->input_bus_cfg.flags = bus_flags; > imx_crtc_state->bus_flags = bus_flags;
Tested on a Colibri iMX6DL with a panel-dpi based panel. Tested-by: Max Krummenacher <max.krummenac...@toradex.com>