[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