mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
drm/bridge: dw-hdmi: change YUV420 selection logic at clock setup
Right now clocking value selection code is prioritising RGB, YUV444 modes over YUV420 for HDMI2 sinks. However, because of the bus format selection procedure in dw-hdmi, for HDMI2 sinks YUV420 is the format that will always be picked during the drm bridge chain check stage. Later on dw_hdmi_setup will configure a colour space based on the bus format that doesn't match the pixel value we had calculated as described above. Fix it by bringing back dw-hdmi bus format check when picking the right pixel clock. Signed-off-by: Adrián Larumbe <adrian.larumbe@collabora.com> Acked-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/6230bfae2cd97cf6527fc62ba5c850464919ccf8.1687702042.git.adrian.larumbe@collabora.com
This commit is contained in:
parent
71a7974ac7
commit
7ed40ff1d1
@ -3346,6 +3346,12 @@ static int dw_hdmi_parse_dt(struct dw_hdmi *hdmi)
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool dw_hdmi_bus_fmt_is_420(struct dw_hdmi *hdmi)
|
||||
{
|
||||
return hdmi_bus_fmt_is_yuv420(hdmi->hdmi_data.enc_out_bus_format);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dw_hdmi_bus_fmt_is_420);
|
||||
|
||||
struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev,
|
||||
const struct dw_hdmi_plat_data *plat_data)
|
||||
{
|
||||
|
@ -379,8 +379,8 @@ static int dw_hdmi_phy_init(struct dw_hdmi *hdmi, void *data,
|
||||
mode->clock > 340000 ? 40 : 10);
|
||||
|
||||
if (drm_mode_is_420_only(display, mode) ||
|
||||
(!is_hdmi2_sink &&
|
||||
drm_mode_is_420_also(display, mode)))
|
||||
(!is_hdmi2_sink && drm_mode_is_420_also(display, mode)) ||
|
||||
dw_hdmi_bus_fmt_is_420(hdmi))
|
||||
mode_is_420 = true;
|
||||
|
||||
/* Enable clocks */
|
||||
|
@ -206,4 +206,6 @@ void dw_hdmi_phy_update_hpd(struct dw_hdmi *hdmi, void *data,
|
||||
bool force, bool disabled, bool rxsense);
|
||||
void dw_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi, void *data);
|
||||
|
||||
bool dw_hdmi_bus_fmt_is_420(struct dw_hdmi *hdmi);
|
||||
|
||||
#endif /* __IMX_HDMI_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user