On Renesas RZ/{G2L,V2L} platforms changing the lanes from 4 to 3 at lower frequencies causes display instability. On such platforms, it is better to avoid switching lanes from 4 to 3 as it needs different set of PLL parameter constraints to make the display stable with 3 lanes. This patch adds an option to disable lane switching if 'adi,disable-lanes-override' property is present in DT. Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx> --- drivers/gpu/drm/bridge/adv7511/adv7511.h | 1 + drivers/gpu/drm/bridge/adv7511/adv7533.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511.h b/drivers/gpu/drm/bridge/adv7511/adv7511.h index 592ecfcf00ca..7505601f10fb 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511.h +++ b/drivers/gpu/drm/bridge/adv7511/adv7511.h @@ -368,6 +368,7 @@ struct adv7511 { struct mipi_dsi_device *dsi; u8 num_dsi_lanes; bool use_timing_gen; + bool override_lanes; enum adv7511_type type; struct platform_device *audio_pdev; diff --git a/drivers/gpu/drm/bridge/adv7511/adv7533.c b/drivers/gpu/drm/bridge/adv7511/adv7533.c index eb7579dec40a..7f6a8e95d70e 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7533.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7533.c @@ -108,7 +108,7 @@ void adv7533_mode_set(struct adv7511 *adv, const struct drm_display_mode *mode) if (adv->num_dsi_lanes != 4) return; - if (mode->clock > 80000) + if (!adv->override_lanes || mode->clock > 80000) lanes = 4; else lanes = 3; @@ -195,6 +195,9 @@ int adv7533_parse_dt(struct device_node *np, struct adv7511 *adv) adv->use_timing_gen = !of_property_read_bool(np, "adi,disable-timing-generator"); + adv->override_lanes = !of_property_read_bool(np, + "adi,disable-lanes-override"); + /* TODO: Check if these need to be parsed by DT or not */ adv->rgb = true; adv->embedded_sync = false; -- 2.17.1