@@ -1899,20 +1899,13 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
1899
1899
{
1900
1900
struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
1901
1901
struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
1902
+ const struct dpll * clock = & crtc_state -> dpll ;
1902
1903
enum dpio_phy phy = vlv_pipe_to_phy (crtc -> pipe );
1903
1904
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 ;
1907
1906
1908
1907
vlv_dpio_get (dev_priv );
1909
1908
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
-
1916
1909
/* See eDP HDMI DPIO driver vbios notes doc */
1917
1910
1918
1911
/* PLL B needs special handling */
@@ -1931,10 +1924,12 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
1931
1924
vlv_dpio_write (dev_priv , phy , VLV_CMN_DW0 , 0x610 );
1932
1925
1933
1926
/* 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 );
1938
1933
1939
1934
/*
1940
1935
* 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)
2030
2025
{
2031
2026
struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
2032
2027
struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
2028
+ const struct dpll * clock = & crtc_state -> dpll ;
2033
2029
enum pipe pipe = crtc -> pipe ;
2034
2030
enum dpio_channel port = vlv_pipe_to_channel (pipe );
2035
2031
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 ;
2046
2036
dpio_val = 0 ;
2047
2037
loopfilter = 0 ;
2048
2038
2049
2039
vlv_dpio_get (dev_priv );
2050
2040
2051
2041
/* p1 and p2 divider */
2052
2042
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 );
2057
2047
2058
2048
/* 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 );
2060
2051
2061
2052
/* Feedback refclk divider - n and m1 */
2062
2053
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 );
2065
2056
2066
2057
/* 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 );
2068
2060
2069
2061
/* M2 fraction division enable */
2070
2062
dpio_val = vlv_dpio_read (dev_priv , phy , CHV_PLL_DW3 (port ));
2071
2063
dpio_val &= ~(DPIO_CHV_FEEDFWD_GAIN_MASK | DPIO_CHV_FRAC_DIV_EN );
2072
2064
dpio_val |= (2 << DPIO_CHV_FEEDFWD_GAIN_SHIFT );
2073
- if (bestm2_frac )
2065
+ if (m2_frac )
2074
2066
dpio_val |= DPIO_CHV_FRAC_DIV_EN ;
2075
2067
vlv_dpio_write (dev_priv , phy , CHV_PLL_DW3 (port ), dpio_val );
2076
2068
@@ -2079,22 +2071,22 @@ static void chv_prepare_pll(const struct intel_crtc_state *crtc_state)
2079
2071
dpio_val &= ~(DPIO_CHV_INT_LOCK_THRESHOLD_MASK |
2080
2072
DPIO_CHV_INT_LOCK_THRESHOLD_SEL_COARSE );
2081
2073
dpio_val |= (0x5 << DPIO_CHV_INT_LOCK_THRESHOLD_SHIFT );
2082
- if (!bestm2_frac )
2074
+ if (!m2_frac )
2083
2075
dpio_val |= DPIO_CHV_INT_LOCK_THRESHOLD_SEL_COARSE ;
2084
2076
vlv_dpio_write (dev_priv , phy , CHV_PLL_DW9 (port ), dpio_val );
2085
2077
2086
2078
/* Loop filter */
2087
- if (vco == 5400000 ) {
2079
+ if (clock -> vco == 5400000 ) {
2088
2080
loopfilter |= (0x3 << DPIO_CHV_PROP_COEFF_SHIFT );
2089
2081
loopfilter |= (0x8 << DPIO_CHV_INT_COEFF_SHIFT );
2090
2082
loopfilter |= (0x1 << DPIO_CHV_GAIN_CTRL_SHIFT );
2091
2083
tribuf_calcntr = 0x9 ;
2092
- } else if (vco <= 6200000 ) {
2084
+ } else if (clock -> vco <= 6200000 ) {
2093
2085
loopfilter |= (0x5 << DPIO_CHV_PROP_COEFF_SHIFT );
2094
2086
loopfilter |= (0xB << DPIO_CHV_INT_COEFF_SHIFT );
2095
2087
loopfilter |= (0x3 << DPIO_CHV_GAIN_CTRL_SHIFT );
2096
2088
tribuf_calcntr = 0x9 ;
2097
- } else if (vco <= 6480000 ) {
2089
+ } else if (clock -> vco <= 6480000 ) {
2098
2090
loopfilter |= (0x4 << DPIO_CHV_PROP_COEFF_SHIFT );
2099
2091
loopfilter |= (0x9 << DPIO_CHV_INT_COEFF_SHIFT );
2100
2092
loopfilter |= (0x3 << DPIO_CHV_GAIN_CTRL_SHIFT );
0 commit comments