Commit ca1b885c authored by Douglas Anderson's avatar Douglas Anderson Committed by Neil Armstrong

drm/bridge: ti-sn65dsi86: Split the setting of the dp and dsi rates

These two things were in one function.  Split into two.  This looks
like it's duplicating some code, but don't worry.  This is is just in
preparation for future changes.

This is intended to have zero functional change and will just make
future patches easier to understand.
Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
Tested-by: default avatarRob Clark <robdclark@gmail.com>
Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191218143416.v3.1.Icb765d5799e9651e5249c0c27627ba33a9e411cf@changeid
parent f704ff7c
...@@ -417,6 +417,24 @@ static void ti_sn_bridge_set_refclk_freq(struct ti_sn_bridge *pdata) ...@@ -417,6 +417,24 @@ static void ti_sn_bridge_set_refclk_freq(struct ti_sn_bridge *pdata)
REFCLK_FREQ(i)); REFCLK_FREQ(i));
} }
static void ti_sn_bridge_set_dsi_rate(struct ti_sn_bridge *pdata)
{
unsigned int bit_rate_mhz, clk_freq_mhz;
unsigned int val;
struct drm_display_mode *mode =
&pdata->bridge.encoder->crtc->state->adjusted_mode;
/* set DSIA clk frequency */
bit_rate_mhz = (mode->clock / 1000) *
mipi_dsi_pixel_format_to_bpp(pdata->dsi->format);
clk_freq_mhz = bit_rate_mhz / (pdata->dsi->lanes * 2);
/* for each increment in val, frequency increases by 5MHz */
val = (MIN_DSI_CLK_FREQ_MHZ / 5) +
(((clk_freq_mhz - MIN_DSI_CLK_FREQ_MHZ) / 5) & 0xFF);
regmap_write(pdata->regmap, SN_DSIA_CLK_FREQ_REG, val);
}
/** /**
* LUT index corresponds to register value and * LUT index corresponds to register value and
* LUT values corresponds to dp data rate supported * LUT values corresponds to dp data rate supported
...@@ -426,22 +444,16 @@ static const unsigned int ti_sn_bridge_dp_rate_lut[] = { ...@@ -426,22 +444,16 @@ static const unsigned int ti_sn_bridge_dp_rate_lut[] = {
0, 1620, 2160, 2430, 2700, 3240, 4320, 5400 0, 1620, 2160, 2430, 2700, 3240, 4320, 5400
}; };
static void ti_sn_bridge_set_dsi_dp_rate(struct ti_sn_bridge *pdata) static void ti_sn_bridge_set_dp_rate(struct ti_sn_bridge *pdata)
{ {
unsigned int bit_rate_mhz, clk_freq_mhz, dp_rate_mhz; unsigned int bit_rate_mhz, dp_rate_mhz;
unsigned int val, i; unsigned int i;
struct drm_display_mode *mode = struct drm_display_mode *mode =
&pdata->bridge.encoder->crtc->state->adjusted_mode; &pdata->bridge.encoder->crtc->state->adjusted_mode;
/* set DSIA clk frequency */ /* set DSIA clk frequency */
bit_rate_mhz = (mode->clock / 1000) * bit_rate_mhz = (mode->clock / 1000) *
mipi_dsi_pixel_format_to_bpp(pdata->dsi->format); mipi_dsi_pixel_format_to_bpp(pdata->dsi->format);
clk_freq_mhz = bit_rate_mhz / (pdata->dsi->lanes * 2);
/* for each increment in val, frequency increases by 5MHz */
val = (MIN_DSI_CLK_FREQ_MHZ / 5) +
(((clk_freq_mhz - MIN_DSI_CLK_FREQ_MHZ) / 5) & 0xFF);
regmap_write(pdata->regmap, SN_DSIA_CLK_FREQ_REG, val);
/* set DP data rate */ /* set DP data rate */
dp_rate_mhz = ((bit_rate_mhz / pdata->dsi->lanes) * DP_CLK_FUDGE_NUM) / dp_rate_mhz = ((bit_rate_mhz / pdata->dsi->lanes) * DP_CLK_FUDGE_NUM) /
...@@ -510,7 +522,8 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge) ...@@ -510,7 +522,8 @@ static void ti_sn_bridge_enable(struct drm_bridge *bridge)
val); val);
/* set dsi/dp clk frequency value */ /* set dsi/dp clk frequency value */
ti_sn_bridge_set_dsi_dp_rate(pdata); ti_sn_bridge_set_dsi_rate(pdata);
ti_sn_bridge_set_dp_rate(pdata);
/* enable DP PLL */ /* enable DP PLL */
regmap_write(pdata->regmap, SN_PLL_ENABLE_REG, 1); regmap_write(pdata->regmap, SN_PLL_ENABLE_REG, 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment