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
>

Reply via email to