forked from Minki/linux
drm/bridge: dw-hdmi: set mtmdsclock for deep color
Configure the correct mtmdsclock for deep colors to prepare support for 10, 12 & 16bit output. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Reviewed-by: Jernej Škrabec <jernej.skrabec@siol.net> Link: https://patchwork.freedesktop.org/patch/msgid/20200304104052.17196-2-narmstrong@baylibre.com
This commit is contained in:
parent
bc1a4130fc
commit
c6cae70234
@ -1814,13 +1814,32 @@ static void hdmi_av_composer(struct dw_hdmi *hdmi,
|
||||
int hblank, vblank, h_de_hs, v_de_vs, hsync_len, vsync_len;
|
||||
unsigned int vdisplay, hdisplay;
|
||||
|
||||
vmode->mtmdsclock = vmode->mpixelclock = mode->clock * 1000;
|
||||
vmode->mpixelclock = mode->clock * 1000;
|
||||
|
||||
dev_dbg(hdmi->dev, "final pixclk = %d\n", vmode->mpixelclock);
|
||||
|
||||
vmode->mtmdsclock = vmode->mpixelclock;
|
||||
|
||||
if (!hdmi_bus_fmt_is_yuv422(hdmi->hdmi_data.enc_out_bus_format)) {
|
||||
switch (hdmi_bus_fmt_color_depth(
|
||||
hdmi->hdmi_data.enc_out_bus_format)) {
|
||||
case 16:
|
||||
vmode->mtmdsclock = vmode->mpixelclock * 2;
|
||||
break;
|
||||
case 12:
|
||||
vmode->mtmdsclock = vmode->mpixelclock * 3 / 2;
|
||||
break;
|
||||
case 10:
|
||||
vmode->mtmdsclock = vmode->mpixelclock * 5 / 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (hdmi_bus_fmt_is_yuv420(hdmi->hdmi_data.enc_out_bus_format))
|
||||
vmode->mtmdsclock /= 2;
|
||||
|
||||
dev_dbg(hdmi->dev, "final tmdsclock = %d\n", vmode->mtmdsclock);
|
||||
|
||||
/* Set up HDMI_FC_INVIDCONF */
|
||||
inv_val = (hdmi->hdmi_data.hdcp_enable ||
|
||||
(dw_hdmi_support_scdc(hdmi) &&
|
||||
|
Loading…
Reference in New Issue
Block a user