| From ca1317a0341e6dfef2ee6e2bfde30acf52d4cf48 Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Fri, 3 Mar 2017 19:19:59 +0200 |
| Subject: [PATCH 226/286] drm: bridge: dw-hdmi: Move CSC configuration out of |
| PHY code |
| |
| The color space converter isn't part of the PHY, move its configuration |
| out of PHY code. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Tested-by: Neil Armstrong <narmstrong@baylibre.com> |
| Reviewed-by: Jose Abreu <joabreu@synopsys.com> |
| Signed-off-by: Archit Taneja <architt@codeaurora.org> |
| Link: http://patchwork.freedesktop.org/patch/msgid/20170303172007.26541-3-laurent.pinchart+renesas@ideasonboard.com |
| (cherry picked from commit 8b9e1c0de3d81c7b2118f8c403a84fad758c3305) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/gpu/drm/bridge/dw-hdmi.c | 25 ++++++++++--------------- |
| 1 file changed, 10 insertions(+), 15 deletions(-) |
| |
| --- a/drivers/gpu/drm/bridge/dw-hdmi.c |
| +++ b/drivers/gpu/drm/bridge/dw-hdmi.c |
| @@ -914,7 +914,7 @@ static void dw_hdmi_phy_sel_interface_co |
| HDMI_PHY_CONF0_SELDIPIF_MASK); |
| } |
| |
| -static int hdmi_phy_configure(struct dw_hdmi *hdmi, int cscon) |
| +static int hdmi_phy_configure(struct dw_hdmi *hdmi) |
| { |
| u8 val, msec; |
| const struct dw_hdmi_plat_data *pdata = hdmi->plat_data; |
| @@ -946,14 +946,6 @@ static int hdmi_phy_configure(struct dw_ |
| return -EINVAL; |
| } |
| |
| - /* Enable csc path */ |
| - if (cscon) |
| - val = HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_IN_PATH; |
| - else |
| - val = HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_BYPASS; |
| - |
| - hdmi_writeb(hdmi, val, HDMI_MC_FLOWCTRL); |
| - |
| /* gen2 tx power off */ |
| dw_hdmi_phy_gen2_txpwron(hdmi, 0); |
| |
| @@ -1028,10 +1020,6 @@ static int hdmi_phy_configure(struct dw_ |
| static int dw_hdmi_phy_init(struct dw_hdmi *hdmi) |
| { |
| int i, ret; |
| - bool cscon; |
| - |
| - /*check csc whether needed activated in HDMI mode */ |
| - cscon = hdmi->sink_is_hdmi && is_color_space_conversion(hdmi); |
| |
| /* HDMI Phy spec says to do the phy initialization sequence twice */ |
| for (i = 0; i < 2; i++) { |
| @@ -1040,8 +1028,7 @@ static int dw_hdmi_phy_init(struct dw_hd |
| dw_hdmi_phy_enable_tmds(hdmi, 0); |
| dw_hdmi_phy_enable_powerdown(hdmi, true); |
| |
| - /* Enable CSC */ |
| - ret = hdmi_phy_configure(hdmi, cscon); |
| + ret = hdmi_phy_configure(hdmi); |
| if (ret) |
| return ret; |
| } |
| @@ -1303,6 +1290,14 @@ static void dw_hdmi_enable_video_path(st |
| clkdis &= ~HDMI_MC_CLKDIS_CSCCLK_DISABLE; |
| hdmi_writeb(hdmi, clkdis, HDMI_MC_CLKDIS); |
| } |
| + |
| + /* Enable color space conversion if needed (for HDMI sinks only). */ |
| + if (hdmi->sink_is_hdmi && is_color_space_conversion(hdmi)) |
| + hdmi_writeb(hdmi, HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_IN_PATH, |
| + HDMI_MC_FLOWCTRL); |
| + else |
| + hdmi_writeb(hdmi, HDMI_MC_FLOWCTRL_FEED_THROUGH_OFF_CSC_BYPASS, |
| + HDMI_MC_FLOWCTRL); |
| } |
| |
| static void hdmi_enable_audio_clk(struct dw_hdmi *hdmi) |