Message ID | 20210419073244.2678688-5-narmstrong@baylibre.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mediatek: hdmi: add MT8167 configuration | expand |
Hi, Neil: Neil Armstrong <narmstrong@baylibre.com> 於 2021年4月19日 週一 下午3:33寫道: > > Some SoCs like the MT8167 have a hard limit on the maximal supported HDMI TMDS > clock, so add a configuration value to filter out those modes. Reviewed-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > > Signed-off-by: Fabien Parent <fparent@baylibre.com> > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > --- > drivers/gpu/drm/mediatek/mtk_hdmi.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c > index 0539262e69d3..bc50d97f2553 100644 > --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c > @@ -149,6 +149,7 @@ struct hdmi_audio_param { > struct mtk_hdmi_conf { > bool tz_disabled; > bool cea_modes_only; > + unsigned long max_mode_clock; > }; > > struct mtk_hdmi { > @@ -1226,6 +1227,10 @@ static int mtk_hdmi_bridge_mode_valid(struct drm_bridge *bridge, > if (hdmi->conf->cea_modes_only && !drm_match_cea_mode(mode)) > return MODE_BAD; > > + if (hdmi->conf->max_mode_clock && > + mode->clock > hdmi->conf->max_mode_clock) > + return MODE_CLOCK_HIGH; > + > if (mode->clock < 27000) > return MODE_CLOCK_LOW; > if (mode->clock > 297000) > -- > 2.25.1 >
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c index 0539262e69d3..bc50d97f2553 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -149,6 +149,7 @@ struct hdmi_audio_param { struct mtk_hdmi_conf { bool tz_disabled; bool cea_modes_only; + unsigned long max_mode_clock; }; struct mtk_hdmi { @@ -1226,6 +1227,10 @@ static int mtk_hdmi_bridge_mode_valid(struct drm_bridge *bridge, if (hdmi->conf->cea_modes_only && !drm_match_cea_mode(mode)) return MODE_BAD; + if (hdmi->conf->max_mode_clock && + mode->clock > hdmi->conf->max_mode_clock) + return MODE_CLOCK_HIGH; + if (mode->clock < 27000) return MODE_CLOCK_LOW; if (mode->clock > 297000)