On MT8167, only CEA modes and anything using a clock below 148500 is supported for HDMI. This change adds some checks to make sure the video format is OK for MT8167.
Signed-off-by: Fabien Parent fparent@baylibre.com Signed-off-by: Neil Armstrong narmstrong@baylibre.com --- drivers/gpu/drm/mediatek/mtk_hdmi.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c index 8ee55f9e2954..991e2e935b93 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -148,6 +148,8 @@ struct hdmi_audio_param {
struct mtk_hdmi_conf { bool tz_disabled; + unsigned long max_mode_clock; + bool cea_modes_only; };
struct mtk_hdmi { @@ -1259,6 +1261,13 @@ static int mtk_hdmi_conn_mode_valid(struct drm_connector *conn, return MODE_BAD; }
+ 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) @@ -1810,10 +1819,18 @@ static const struct mtk_hdmi_conf mtk_hdmi_conf_mt2701 = { .tz_disabled = true, };
+static const struct mtk_hdmi_conf mtk_hdmi_conf_mt8167 = { + .max_mode_clock = 148500, + .cea_modes_only = true, +}; + static const struct of_device_id mtk_drm_hdmi_of_ids[] = { { .compatible = "mediatek,mt2701-hdmi", .data = &mtk_hdmi_conf_mt2701, }, + { .compatible = "mediatek,mt8167-hdmi", + .data = &mtk_hdmi_conf_mt8167, + }, { .compatible = "mediatek,mt8173-hdmi", }, {}
Hi, Neil:
Neil Armstrong narmstrong@baylibre.com 於 2021年4月9日 週五 下午4:43寫道:
On MT8167, only CEA modes and anything using a clock below 148500 is supported for HDMI. This change adds some checks to make sure the video format is OK for MT8167.
I think this patch should be separated to 3 patches. check CEA mode, check clock, add mt8167 hdmi support.
Signed-off-by: Fabien Parent fparent@baylibre.com Signed-off-by: Neil Armstrong narmstrong@baylibre.com
drivers/gpu/drm/mediatek/mtk_hdmi.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c index 8ee55f9e2954..991e2e935b93 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -148,6 +148,8 @@ struct hdmi_audio_param {
struct mtk_hdmi_conf { bool tz_disabled;
unsigned long max_mode_clock;
bool cea_modes_only;
};
struct mtk_hdmi { @@ -1259,6 +1261,13 @@ static int mtk_hdmi_conn_mode_valid(struct drm_connector *conn, return MODE_BAD; }
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)
@@ -1810,10 +1819,18 @@ static const struct mtk_hdmi_conf mtk_hdmi_conf_mt2701 = { .tz_disabled = true, };
+static const struct mtk_hdmi_conf mtk_hdmi_conf_mt8167 = {
.max_mode_clock = 148500,
.cea_modes_only = true,
+};
static const struct of_device_id mtk_drm_hdmi_of_ids[] = { { .compatible = "mediatek,mt2701-hdmi", .data = &mtk_hdmi_conf_mt2701, },
{ .compatible = "mediatek,mt8167-hdmi",
"mediatek,mt8167-hdmi" does not exist in binding document, so add this to binding document first. In addition, could you also transfer mediatek,hdmi.txt to yaml format?
Regards, Chun-Kuang.
.data = &mtk_hdmi_conf_mt8167,
}, { .compatible = "mediatek,mt8173-hdmi", }, {}
-- 2.25.1
On 10/04/2021 00:41, Chun-Kuang Hu wrote:
Hi, Neil:
Neil Armstrong narmstrong@baylibre.com 於 2021年4月9日 週五 下午4:43寫道:
On MT8167, only CEA modes and anything using a clock below 148500 is supported for HDMI. This change adds some checks to make sure the video format is OK for MT8167.
I think this patch should be separated to 3 patches. check CEA mode, check clock, add mt8167 hdmi support.
Ok
Signed-off-by: Fabien Parent fparent@baylibre.com Signed-off-by: Neil Armstrong narmstrong@baylibre.com
drivers/gpu/drm/mediatek/mtk_hdmi.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek/mtk_hdmi.c index 8ee55f9e2954..991e2e935b93 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -148,6 +148,8 @@ struct hdmi_audio_param {
struct mtk_hdmi_conf { bool tz_disabled;
unsigned long max_mode_clock;
bool cea_modes_only;
};
struct mtk_hdmi { @@ -1259,6 +1261,13 @@ static int mtk_hdmi_conn_mode_valid(struct drm_connector *conn, return MODE_BAD; }
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)
@@ -1810,10 +1819,18 @@ static const struct mtk_hdmi_conf mtk_hdmi_conf_mt2701 = { .tz_disabled = true, };
+static const struct mtk_hdmi_conf mtk_hdmi_conf_mt8167 = {
.max_mode_clock = 148500,
.cea_modes_only = true,
+};
static const struct of_device_id mtk_drm_hdmi_of_ids[] = { { .compatible = "mediatek,mt2701-hdmi", .data = &mtk_hdmi_conf_mt2701, },
{ .compatible = "mediatek,mt8167-hdmi",
"mediatek,mt8167-hdmi" does not exist in binding document, so add this to binding document first. In addition, could you also transfer mediatek,hdmi.txt to yaml format?
Sure
Thanks, Neil
Regards, Chun-Kuang.
.data = &mtk_hdmi_conf_mt8167,
}, { .compatible = "mediatek,mt8173-hdmi", }, {}
-- 2.25.1
dri-devel@lists.freedesktop.org