2021-09-28 12:18:22

by Guido Günther

[permalink] [raw]
Subject: [PATCH v1 2/5] drm: mxsfb: Set proper default bus format when using a bridge

If a bridge doesn't do any bus format handling MEDIA_BUS_FMT_FIXED is
returned. Fallback to a reasonable default (MEDIA_BUS_FMT_RGB888_1X24) in
that case.

This unbreaks e.g. using mxsfb with the nwl bridge and mipi panels.

Fixes: b776b0f00f24 ("drm: mxsfb: Use bus_format from the nearest bridge if present")

Reported-by: Martin Kepplinger <[email protected]>
Signed-off-by: Guido Günther <[email protected]>
---
drivers/gpu/drm/mxsfb/mxsfb_kms.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
index d6abd2077114..f4be16f5c20b 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
@@ -369,6 +369,11 @@ static void mxsfb_crtc_atomic_enable(struct drm_crtc *crtc,
drm_atomic_get_new_bridge_state(state,
mxsfb->bridge);
bus_format = bridge_state->input_bus_cfg.format;
+ if (bus_format == MEDIA_BUS_FMT_FIXED) {
+ dev_warn_once(drm->dev,
+ "Bridge does not provide bus format. Please fix.");
+ bus_format = MEDIA_BUS_FMT_RGB888_1X24;
+ }
}

/* If there is no bridge, use bus format from connector */
--
2.33.0


2021-09-28 12:51:51

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH v1 2/5] drm: mxsfb: Set proper default bus format when using a bridge

On 9/28/21 2:16 PM, Guido Günther wrote:
> If a bridge doesn't do any bus format handling MEDIA_BUS_FMT_FIXED is
> returned. Fallback to a reasonable default (MEDIA_BUS_FMT_RGB888_1X24) in
> that case.
>
> This unbreaks e.g. using mxsfb with the nwl bridge and mipi panels.
>
> Fixes: b776b0f00f24 ("drm: mxsfb: Use bus_format from the nearest bridge if present")
>
> Reported-by: Martin Kepplinger <[email protected]>
> Signed-off-by: Guido Günther <[email protected]>
> ---
> drivers/gpu/drm/mxsfb/mxsfb_kms.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
> index d6abd2077114..f4be16f5c20b 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
> @@ -369,6 +369,11 @@ static void mxsfb_crtc_atomic_enable(struct drm_crtc *crtc,
> drm_atomic_get_new_bridge_state(state,
> mxsfb->bridge);
> bus_format = bridge_state->input_bus_cfg.format;
> + if (bus_format == MEDIA_BUS_FMT_FIXED) {
> + dev_warn_once(drm->dev,
> + "Bridge does not provide bus format. Please fix.");

Fix what ? Oh ... the bridge driver ?

Maybe such a hint should be in the warning message. And it might be
useful to explain how to fix that bridge driver, or at least provide
some reference to an example (like this nwl patch series).

> + bus_format = MEDIA_BUS_FMT_RGB888_1X24;

The warning should also mention that the driver is falling back to this
mode.