Skip to content

Commit 9e7aa0a

Browse files
committed
drm/i915/dpio: Remove pointless variables from vlv/chv DPLL code
Drop all the local variables for the DPLL dividers for vlv/chv and just consult the state directly. Signed-off-by: Ville Syrjälä <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Jani Nikula <[email protected]>
1 parent e55f8df commit 9e7aa0a

File tree

1 file changed

+28
-36
lines changed

1 file changed

+28
-36
lines changed

drivers/gpu/drm/i915/display/intel_dpll.c

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1899,20 +1899,13 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
18991899
{
19001900
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
19011901
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
1902+
const struct dpll *clock = &crtc_state->dpll;
19021903
enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe);
19031904
enum pipe pipe = crtc->pipe;
1904-
u32 mdiv;
1905-
u32 bestn, bestm1, bestm2, bestp1, bestp2;
1906-
u32 coreclk, reg_val;
1905+
u32 mdiv, coreclk, reg_val;
19071906

19081907
vlv_dpio_get(dev_priv);
19091908

1910-
bestn = crtc_state->dpll.n;
1911-
bestm1 = crtc_state->dpll.m1;
1912-
bestm2 = crtc_state->dpll.m2;
1913-
bestp1 = crtc_state->dpll.p1;
1914-
bestp2 = crtc_state->dpll.p2;
1915-
19161909
/* See eDP HDMI DPIO driver vbios notes doc */
19171910

19181911
/* PLL B needs special handling */
@@ -1931,10 +1924,12 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
19311924
vlv_dpio_write(dev_priv, phy, VLV_CMN_DW0, 0x610);
19321925

19331926
/* Set idtafcrecal before PLL is enabled */
1934-
mdiv = ((bestm1 << DPIO_M1DIV_SHIFT) | (bestm2 & DPIO_M2DIV_MASK));
1935-
mdiv |= ((bestp1 << DPIO_P1_SHIFT) | (bestp2 << DPIO_P2_SHIFT));
1936-
mdiv |= ((bestn << DPIO_N_SHIFT));
1937-
mdiv |= (1 << DPIO_K_SHIFT);
1927+
mdiv = (clock->m1 << DPIO_M1DIV_SHIFT) |
1928+
(clock->m2 & DPIO_M2DIV_MASK) |
1929+
(clock->p1 << DPIO_P1_SHIFT) |
1930+
(clock->p2 << DPIO_P2_SHIFT) |
1931+
(clock->n << DPIO_N_SHIFT) |
1932+
(1 << DPIO_K_SHIFT);
19381933

19391934
/*
19401935
* Post divider depends on pixel clock rate, DAC vs digital (and LVDS,
@@ -2030,47 +2025,44 @@ static void chv_prepare_pll(const struct intel_crtc_state *crtc_state)
20302025
{
20312026
struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
20322027
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
2028+
const struct dpll *clock = &crtc_state->dpll;
20332029
enum pipe pipe = crtc->pipe;
20342030
enum dpio_channel port = vlv_pipe_to_channel(pipe);
20352031
enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe);
2036-
u32 loopfilter, tribuf_calcntr;
2037-
u32 bestm2, bestp1, bestp2, bestm2_frac;
2038-
u32 dpio_val;
2039-
int vco;
2040-
2041-
bestm2_frac = crtc_state->dpll.m2 & 0x3fffff;
2042-
bestm2 = crtc_state->dpll.m2 >> 22;
2043-
bestp1 = crtc_state->dpll.p1;
2044-
bestp2 = crtc_state->dpll.p2;
2045-
vco = crtc_state->dpll.vco;
2032+
u32 dpio_val, loopfilter, tribuf_calcntr;
2033+
u32 m2_frac;
2034+
2035+
m2_frac = clock->m2 & 0x3fffff;
20462036
dpio_val = 0;
20472037
loopfilter = 0;
20482038

20492039
vlv_dpio_get(dev_priv);
20502040

20512041
/* p1 and p2 divider */
20522042
vlv_dpio_write(dev_priv, phy, CHV_CMN_DW13(port),
2053-
5 << DPIO_CHV_S1_DIV_SHIFT |
2054-
bestp1 << DPIO_CHV_P1_DIV_SHIFT |
2055-
bestp2 << DPIO_CHV_P2_DIV_SHIFT |
2056-
1 << DPIO_CHV_K_DIV_SHIFT);
2043+
5 << DPIO_CHV_S1_DIV_SHIFT |
2044+
clock->p1 << DPIO_CHV_P1_DIV_SHIFT |
2045+
clock->p2 << DPIO_CHV_P2_DIV_SHIFT |
2046+
1 << DPIO_CHV_K_DIV_SHIFT);
20572047

20582048
/* Feedback post-divider - m2 */
2059-
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW0(port), bestm2);
2049+
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW0(port),
2050+
clock->m2 >> 22);
20602051

20612052
/* Feedback refclk divider - n and m1 */
20622053
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW1(port),
2063-
DPIO_CHV_M1_DIV_BY_2 |
2064-
1 << DPIO_CHV_N_DIV_SHIFT);
2054+
DPIO_CHV_M1_DIV_BY_2 |
2055+
1 << DPIO_CHV_N_DIV_SHIFT);
20652056

20662057
/* M2 fraction division */
2067-
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW2(port), bestm2_frac);
2058+
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW2(port),
2059+
m2_frac);
20682060

20692061
/* M2 fraction division enable */
20702062
dpio_val = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW3(port));
20712063
dpio_val &= ~(DPIO_CHV_FEEDFWD_GAIN_MASK | DPIO_CHV_FRAC_DIV_EN);
20722064
dpio_val |= (2 << DPIO_CHV_FEEDFWD_GAIN_SHIFT);
2073-
if (bestm2_frac)
2065+
if (m2_frac)
20742066
dpio_val |= DPIO_CHV_FRAC_DIV_EN;
20752067
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW3(port), dpio_val);
20762068

@@ -2079,22 +2071,22 @@ static void chv_prepare_pll(const struct intel_crtc_state *crtc_state)
20792071
dpio_val &= ~(DPIO_CHV_INT_LOCK_THRESHOLD_MASK |
20802072
DPIO_CHV_INT_LOCK_THRESHOLD_SEL_COARSE);
20812073
dpio_val |= (0x5 << DPIO_CHV_INT_LOCK_THRESHOLD_SHIFT);
2082-
if (!bestm2_frac)
2074+
if (!m2_frac)
20832075
dpio_val |= DPIO_CHV_INT_LOCK_THRESHOLD_SEL_COARSE;
20842076
vlv_dpio_write(dev_priv, phy, CHV_PLL_DW9(port), dpio_val);
20852077

20862078
/* Loop filter */
2087-
if (vco == 5400000) {
2079+
if (clock->vco == 5400000) {
20882080
loopfilter |= (0x3 << DPIO_CHV_PROP_COEFF_SHIFT);
20892081
loopfilter |= (0x8 << DPIO_CHV_INT_COEFF_SHIFT);
20902082
loopfilter |= (0x1 << DPIO_CHV_GAIN_CTRL_SHIFT);
20912083
tribuf_calcntr = 0x9;
2092-
} else if (vco <= 6200000) {
2084+
} else if (clock->vco <= 6200000) {
20932085
loopfilter |= (0x5 << DPIO_CHV_PROP_COEFF_SHIFT);
20942086
loopfilter |= (0xB << DPIO_CHV_INT_COEFF_SHIFT);
20952087
loopfilter |= (0x3 << DPIO_CHV_GAIN_CTRL_SHIFT);
20962088
tribuf_calcntr = 0x9;
2097-
} else if (vco <= 6480000) {
2089+
} else if (clock->vco <= 6480000) {
20982090
loopfilter |= (0x4 << DPIO_CHV_PROP_COEFF_SHIFT);
20992091
loopfilter |= (0x9 << DPIO_CHV_INT_COEFF_SHIFT);
21002092
loopfilter |= (0x3 << DPIO_CHV_GAIN_CTRL_SHIFT);

0 commit comments

Comments
 (0)