On Sat, Oct 11, 2025 at 06:51:37PM +0200, Marek Vasut wrote: > The i.MX95 does not have CF inputs into ED, it must pull inputs from FU > otherwise the controller crashes into green screen panic mode. Keep the > FU running on i.MX95. > > Signed-off-by: Marek Vasut <[email protected]> > --- > Cc: Abel Vesa <[email protected]> > Cc: Conor Dooley <[email protected]> > Cc: Fabio Estevam <[email protected]> > Cc: Krzysztof Kozlowski <[email protected]> > Cc: Laurent Pinchart <[email protected]> > Cc: Liu Ying <[email protected]> > Cc: Lucas Stach <[email protected]> > Cc: Peng Fan <[email protected]> > Cc: Pengutronix Kernel Team <[email protected]> > Cc: Rob Herring <[email protected]> > Cc: Shawn Guo <[email protected]> > Cc: Thomas Zimmermann <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > --- > drivers/gpu/drm/imx/dc/dc-kms.h | 2 ++ > drivers/gpu/drm/imx/dc/dc-plane.c | 10 +++++++--- > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/imx/dc/dc-kms.h b/drivers/gpu/drm/imx/dc/dc-kms.h > index 3e61dbb87afe7..af37523ae0be3 100644 > --- a/drivers/gpu/drm/imx/dc/dc-kms.h > +++ b/drivers/gpu/drm/imx/dc/dc-kms.h > @@ -130,6 +130,8 @@ struct dc_plane { > struct dc_lb *lb; > /** @ed: content stream extdst */ > struct dc_ed *ed; > + /** @keep_fu: keep FU running on iMX95 */ > + bool keep_fu; > }; > > #endif /* __DC_KMS_H__ */ > diff --git a/drivers/gpu/drm/imx/dc/dc-plane.c > b/drivers/gpu/drm/imx/dc/dc-plane.c > index d8b946fb90de6..18010c2b0bd78 100644 > --- a/drivers/gpu/drm/imx/dc/dc-plane.c > +++ b/drivers/gpu/drm/imx/dc/dc-plane.c > @@ -4,6 +4,7 @@ > */ > > #include <linux/container_of.h> > +#include <linux/of.h> > > #include <drm/drm_atomic.h> > #include <drm/drm_atomic_helper.h> > @@ -185,9 +186,11 @@ static void dc_plane_atomic_disable(struct drm_plane > *plane, > if (!drm_dev_enter(plane->dev, &idx)) > return; > > - /* disable fetchunit in shadow */ > - fu_ops = dc_fu_get_ops(dplane->fu); > - fu_ops->disable_src_buf(dplane->fu, DC_FETCHUNIT_FRAC0); > + /* disable fetchunit in shadow on i.MX8QXP */ > + if (!dplane->keep_fu) { > + fu_ops = dc_fu_get_ops(dplane->fu); > + fu_ops->disable_src_buf(dplane->fu, DC_FETCHUNIT_FRAC0); > + } > > /* set ExtDst's source to ConstFrame */ > dc_ed_pec_src_sel(dplane->ed, dc_cf_get_link_id(dplane->cf)); > @@ -219,6 +222,7 @@ int dc_plane_init(struct dc_drm_device *dc_drm, struct > dc_plane *dc_plane) > dc_plane->cf = dc_drm->pe->cf_cont[plane->index]; > dc_plane->lb = dc_drm->pe->lb[plane->index]; > dc_plane->ed = dc_drm->pe->ed_cont[plane->index]; > + dc_plane->keep_fu = of_device_is_compatible(dc_drm->base.dev->of_node, > "fsl,imx95-dc");
Put it into drv match data Frank > > return 0; > } > -- > 2.51.0 >
