[PATCH 22/39] drm/imx: dc: Keep FU unit running on i.MX95

Frank Li Frank.li at nxp.com
Mon Oct 13 11:52:04 PDT 2025


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 <marek.vasut at mailbox.org>
> ---
> Cc: Abel Vesa <abelvesa at kernel.org>
> Cc: Conor Dooley <conor+dt at kernel.org>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: Krzysztof Kozlowski <krzk+dt at kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart at ideasonboard.com>
> Cc: Liu Ying <victor.liu at nxp.com>
> Cc: Lucas Stach <l.stach at pengutronix.de>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Pengutronix Kernel Team <kernel at pengutronix.de>
> Cc: Rob Herring <robh at kernel.org>
> Cc: Shawn Guo <shawnguo at kernel.org>
> Cc: Thomas Zimmermann <tzimmermann at suse.de>
> Cc: devicetree at vger.kernel.org
> Cc: dri-devel at lists.freedesktop.org
> Cc: imx at lists.linux.dev
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-clk at vger.kernel.org
> ---
>  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
>



More information about the linux-arm-kernel mailing list