@@ -512,6 +512,7 @@ void vlv_crtc_clock_get(struct intel_crtc_state *crtc_state)
512512{
513513 struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
514514 struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
515+ enum dpio_channel ch = vlv_pipe_to_channel (crtc -> pipe );
515516 enum dpio_phy phy = vlv_pipe_to_phy (crtc -> pipe );
516517 const struct i9xx_dpll_hw_state * hw_state = & crtc_state -> dpll_hw_state .i9xx ;
517518 int refclk = 100000 ;
@@ -523,7 +524,7 @@ void vlv_crtc_clock_get(struct intel_crtc_state *crtc_state)
523524 return ;
524525
525526 vlv_dpio_get (dev_priv );
526- tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW3 (crtc -> pipe ));
527+ tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW3 (ch ));
527528 vlv_dpio_put (dev_priv );
528529
529530 clock .m1 = (tmp >> DPIO_M1DIV_SHIFT ) & 7 ;
@@ -1867,27 +1868,27 @@ void i9xx_enable_pll(const struct intel_crtc_state *crtc_state)
18671868}
18681869
18691870static void vlv_pllb_recal_opamp (struct drm_i915_private * dev_priv ,
1870- enum dpio_phy phy )
1871+ enum dpio_phy phy , enum dpio_channel ch )
18711872{
18721873 u32 tmp ;
18731874
18741875 /*
18751876 * PLLB opamp always calibrates to max value of 0x3f, force enable it
18761877 * and set it to a reasonable value instead.
18771878 */
1878- tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW17 (1 ));
1879+ tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW17 (ch ));
18791880 tmp &= 0xffffff00 ;
18801881 tmp |= 0x00000030 ;
1881- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW17 (1 ), tmp );
1882+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW17 (ch ), tmp );
18821883
18831884 tmp = vlv_dpio_read (dev_priv , phy , VLV_REF_DW11 );
18841885 tmp &= 0x00ffffff ;
18851886 tmp |= 0x8c000000 ;
18861887 vlv_dpio_write (dev_priv , phy , VLV_REF_DW11 , tmp );
18871888
1888- tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW17 (1 ));
1889+ tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW17 (ch ));
18891890 tmp &= 0xffffff00 ;
1890- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW17 (1 ), tmp );
1891+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW17 (ch ), tmp );
18911892
18921893 tmp = vlv_dpio_read (dev_priv , phy , VLV_REF_DW11 );
18931894 tmp &= 0x00ffffff ;
@@ -1900,6 +1901,7 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
19001901 struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
19011902 struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
19021903 const struct dpll * clock = & crtc_state -> dpll ;
1904+ enum dpio_channel ch = vlv_pipe_to_channel (crtc -> pipe );
19031905 enum dpio_phy phy = vlv_pipe_to_phy (crtc -> pipe );
19041906 enum pipe pipe = crtc -> pipe ;
19051907 u32 tmp , coreclk ;
@@ -1910,15 +1912,15 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
19101912
19111913 /* PLL B needs special handling */
19121914 if (pipe == PIPE_B )
1913- vlv_pllb_recal_opamp (dev_priv , phy );
1915+ vlv_pllb_recal_opamp (dev_priv , phy , ch );
19141916
19151917 /* Set up Tx target for periodic Rcomp update */
19161918 vlv_dpio_write (dev_priv , phy , VLV_PCS_DW17_BCAST , 0x0100000f );
19171919
19181920 /* Disable target IRef on PLL */
1919- tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW16 (pipe ));
1921+ tmp = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW16 (ch ));
19201922 tmp &= 0x00ffffff ;
1921- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW16 (pipe ), tmp );
1923+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW16 (ch ), tmp );
19221924
19231925 /* Disable fast lock */
19241926 vlv_dpio_write (dev_priv , phy , VLV_CMN_DW0 , 0x610 );
@@ -1937,46 +1939,46 @@ static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state)
19371939 * Note: don't use the DAC post divider as it seems unstable.
19381940 */
19391941 tmp |= (DPIO_POST_DIV_HDMIDP << DPIO_POST_DIV_SHIFT );
1940- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW3 (pipe ), tmp );
1942+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW3 (ch ), tmp );
19411943
19421944 tmp |= DPIO_ENABLE_CALIBRATION ;
1943- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW3 (pipe ), tmp );
1945+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW3 (ch ), tmp );
19441946
19451947 /* Set HBR and RBR LPF coefficients */
19461948 if (crtc_state -> port_clock == 162000 ||
19471949 intel_crtc_has_type (crtc_state , INTEL_OUTPUT_ANALOG ) ||
19481950 intel_crtc_has_type (crtc_state , INTEL_OUTPUT_HDMI ))
1949- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW18 (pipe ),
1951+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW18 (ch ),
19501952 0x009f0003 );
19511953 else
1952- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW18 (pipe ),
1954+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW18 (ch ),
19531955 0x00d0000f );
19541956
19551957 if (intel_crtc_has_dp_encoder (crtc_state )) {
19561958 /* Use SSC source */
19571959 if (pipe == PIPE_A )
1958- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (pipe ),
1960+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (ch ),
19591961 0x0df40000 );
19601962 else
1961- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (pipe ),
1963+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (ch ),
19621964 0x0df70000 );
19631965 } else { /* HDMI or VGA */
19641966 /* Use bend source */
19651967 if (pipe == PIPE_A )
1966- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (pipe ),
1968+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (ch ),
19671969 0x0df70000 );
19681970 else
1969- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (pipe ),
1971+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW5 (ch ),
19701972 0x0df40000 );
19711973 }
19721974
1973- coreclk = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW7 (pipe ));
1975+ coreclk = vlv_dpio_read (dev_priv , phy , VLV_PLL_DW7 (ch ));
19741976 coreclk = (coreclk & 0x0000ff00 ) | 0x01c00000 ;
19751977 if (intel_crtc_has_dp_encoder (crtc_state ))
19761978 coreclk |= 0x01000000 ;
1977- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW7 (pipe ), coreclk );
1979+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW7 (ch ), coreclk );
19781980
1979- vlv_dpio_write (dev_priv , phy , VLV_PLL_DW19 (pipe ), 0x87871000 );
1981+ vlv_dpio_write (dev_priv , phy , VLV_PLL_DW19 (ch ), 0x87871000 );
19801982
19811983 vlv_dpio_put (dev_priv );
19821984}
@@ -2026,8 +2028,7 @@ static void chv_prepare_pll(const struct intel_crtc_state *crtc_state)
20262028 struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
20272029 struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
20282030 const struct dpll * clock = & crtc_state -> dpll ;
2029- enum pipe pipe = crtc -> pipe ;
2030- enum dpio_channel ch = vlv_pipe_to_channel (pipe );
2031+ enum dpio_channel ch = vlv_pipe_to_channel (crtc -> pipe );
20312032 enum dpio_phy phy = vlv_pipe_to_phy (crtc -> pipe );
20322033 u32 tmp , loopfilter , tribuf_calcntr ;
20332034 u32 m2_frac ;
@@ -2117,9 +2118,9 @@ static void _chv_enable_pll(const struct intel_crtc_state *crtc_state)
21172118 struct intel_crtc * crtc = to_intel_crtc (crtc_state -> uapi .crtc );
21182119 struct drm_i915_private * dev_priv = to_i915 (crtc -> base .dev );
21192120 const struct i9xx_dpll_hw_state * hw_state = & crtc_state -> dpll_hw_state .i9xx ;
2120- enum pipe pipe = crtc -> pipe ;
2121- enum dpio_channel ch = vlv_pipe_to_channel (pipe );
2121+ enum dpio_channel ch = vlv_pipe_to_channel (crtc -> pipe );
21222122 enum dpio_phy phy = vlv_pipe_to_phy (crtc -> pipe );
2123+ enum pipe pipe = crtc -> pipe ;
21232124 u32 tmp ;
21242125
21252126 vlv_dpio_get (dev_priv );
0 commit comments