Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/snps: convert intel_snps_phy.[ch] to struct intel_display

Going forward, struct intel_display is the main display device data
pointer. Convert the intel_snps_phy.[ch] to struct intel_display. Also
convert the very much related intel_phy_is_snps() helper.

Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/2dcc9313f5cf7777af3b6f20124526f6b9462b91.1740502116.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

+47 -48
+1 -1
drivers/gpu/drm/i915/display/intel_ddi.c
··· 5135 5135 return; 5136 5136 } 5137 5137 5138 - if (intel_phy_is_snps(dev_priv, phy) && 5138 + if (intel_phy_is_snps(display, phy) && 5139 5139 dev_priv->display.snps.phy_failed_calibration & BIT(phy)) { 5140 5140 drm_dbg_kms(&dev_priv->drm, 5141 5141 "SNPS PHY %c failed to calibrate, proceeding anyway\n",
+4 -4
drivers/gpu/drm/i915/display/intel_display.c
··· 1925 1925 } 1926 1926 1927 1927 /* Prefer intel_encoder_is_snps() */ 1928 - bool intel_phy_is_snps(struct drm_i915_private *dev_priv, enum phy phy) 1928 + bool intel_phy_is_snps(struct intel_display *display, enum phy phy) 1929 1929 { 1930 1930 /* 1931 1931 * For DG2, and for DG2 only, all four "combo" ports and the TC1 port 1932 1932 * (PHY E) use Synopsis PHYs. See intel_phy_is_tc(). 1933 1933 */ 1934 - return IS_DG2(dev_priv) && phy > PHY_NONE && phy <= PHY_E; 1934 + return display->platform.dg2 && phy > PHY_NONE && phy <= PHY_E; 1935 1935 } 1936 1936 1937 1937 /* Prefer intel_encoder_to_phy() */ ··· 1980 1980 1981 1981 bool intel_encoder_is_snps(struct intel_encoder *encoder) 1982 1982 { 1983 - struct drm_i915_private *i915 = to_i915(encoder->base.dev); 1983 + struct intel_display *display = to_intel_display(encoder); 1984 1984 1985 - return intel_phy_is_snps(i915, intel_encoder_to_phy(encoder)); 1985 + return intel_phy_is_snps(display, intel_encoder_to_phy(encoder)); 1986 1986 } 1987 1987 1988 1988 bool intel_encoder_is_tc(struct intel_encoder *encoder)
+1 -1
drivers/gpu/drm/i915/display/intel_display.h
··· 466 466 struct intel_crtc_state *crtc_state); 467 467 bool intel_phy_is_combo(struct intel_display *display, enum phy phy); 468 468 bool intel_phy_is_tc(struct drm_i915_private *dev_priv, enum phy phy); 469 - bool intel_phy_is_snps(struct drm_i915_private *dev_priv, enum phy phy); 469 + bool intel_phy_is_snps(struct intel_display *display, enum phy phy); 470 470 enum tc_port intel_port_to_tc(struct drm_i915_private *dev_priv, 471 471 enum port port); 472 472
+1 -1
drivers/gpu/drm/i915/display/intel_display_power.c
··· 1684 1684 1685 1685 /* 8. Ensure PHYs have completed calibration and adaptation */ 1686 1686 if (display->platform.dg2) 1687 - intel_snps_phy_wait_for_calibration(dev_priv); 1687 + intel_snps_phy_wait_for_calibration(display); 1688 1688 1689 1689 /* 9. XE2_HPD: Program CHICKEN_MISC_2 before any cursor or planes are enabled */ 1690 1690 if (DISPLAY_VERx100(display) == 1401)
+37 -38
drivers/gpu/drm/i915/display/intel_snps_phy.c
··· 5 5 6 6 #include <linux/math.h> 7 7 8 - #include "i915_drv.h" 9 8 #include "i915_reg.h" 9 + #include "i915_utils.h" 10 10 #include "intel_ddi.h" 11 11 #include "intel_ddi_buf_trans.h" 12 12 #include "intel_de.h" ··· 27 27 * since it is not handled by the shared DPLL framework as on other platforms. 28 28 */ 29 29 30 - void intel_snps_phy_wait_for_calibration(struct drm_i915_private *i915) 30 + void intel_snps_phy_wait_for_calibration(struct intel_display *display) 31 31 { 32 32 enum phy phy; 33 33 34 34 for_each_phy_masked(phy, ~0) { 35 - if (!intel_phy_is_snps(i915, phy)) 35 + if (!intel_phy_is_snps(display, phy)) 36 36 continue; 37 37 38 38 /* ··· 40 40 * which phy was affected and skip setup of the corresponding 41 41 * output later. 42 42 */ 43 - if (intel_de_wait_for_clear(i915, DG2_PHY_MISC(phy), 43 + if (intel_de_wait_for_clear(display, DG2_PHY_MISC(phy), 44 44 DG2_PHY_DP_TX_ACK_MASK, 25)) 45 - i915->display.snps.phy_failed_calibration |= BIT(phy); 45 + display->snps.phy_failed_calibration |= BIT(phy); 46 46 } 47 47 } 48 48 49 49 void intel_snps_phy_update_psr_power_state(struct intel_encoder *encoder, 50 50 bool enable) 51 51 { 52 - struct drm_i915_private *i915 = to_i915(encoder->base.dev); 52 + struct intel_display *display = to_intel_display(encoder); 53 53 enum phy phy = intel_encoder_to_phy(encoder); 54 54 u32 val; 55 55 ··· 58 58 59 59 val = REG_FIELD_PREP(SNPS_PHY_TX_REQ_LN_DIS_PWR_STATE_PSR, 60 60 enable ? 2 : 3); 61 - intel_de_rmw(i915, SNPS_PHY_TX_REQ(phy), 61 + intel_de_rmw(display, SNPS_PHY_TX_REQ(phy), 62 62 SNPS_PHY_TX_REQ_LN_DIS_PWR_STATE_PSR, val); 63 63 } 64 64 65 65 void intel_snps_phy_set_signal_levels(struct intel_encoder *encoder, 66 66 const struct intel_crtc_state *crtc_state) 67 67 { 68 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 68 + struct intel_display *display = to_intel_display(encoder); 69 69 const struct intel_ddi_buf_trans *trans; 70 70 enum phy phy = intel_encoder_to_phy(encoder); 71 71 int n_entries, ln; 72 72 73 73 trans = encoder->get_buf_trans(encoder, crtc_state, &n_entries); 74 - if (drm_WARN_ON_ONCE(&dev_priv->drm, !trans)) 74 + if (drm_WARN_ON_ONCE(display->drm, !trans)) 75 75 return; 76 76 77 77 for (ln = 0; ln < 4; ln++) { ··· 82 82 val |= REG_FIELD_PREP(SNPS_PHY_TX_EQ_PRE, trans->entries[level].snps.pre_cursor); 83 83 val |= REG_FIELD_PREP(SNPS_PHY_TX_EQ_POST, trans->entries[level].snps.post_cursor); 84 84 85 - intel_de_write(dev_priv, SNPS_PHY_TX_EQ(ln, phy), val); 85 + intel_de_write(display, SNPS_PHY_TX_EQ(ln, phy), val); 86 86 } 87 87 } 88 88 ··· 1817 1817 void intel_mpllb_enable(struct intel_encoder *encoder, 1818 1818 const struct intel_crtc_state *crtc_state) 1819 1819 { 1820 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1820 + struct intel_display *display = to_intel_display(encoder); 1821 1821 const struct intel_mpllb_state *pll_state = &crtc_state->dpll_hw_state.mpllb; 1822 1822 enum phy phy = intel_encoder_to_phy(encoder); 1823 1823 i915_reg_t enable_reg = (phy <= PHY_D ? ··· 1827 1827 * 3. Software programs the following PLL registers for the desired 1828 1828 * frequency. 1829 1829 */ 1830 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_CP(phy), pll_state->mpllb_cp); 1831 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_DIV(phy), pll_state->mpllb_div); 1832 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_DIV2(phy), pll_state->mpllb_div2); 1833 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_SSCEN(phy), pll_state->mpllb_sscen); 1834 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_SSCSTEP(phy), pll_state->mpllb_sscstep); 1835 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_FRACN1(phy), pll_state->mpllb_fracn1); 1836 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_FRACN2(phy), pll_state->mpllb_fracn2); 1830 + intel_de_write(display, SNPS_PHY_MPLLB_CP(phy), pll_state->mpllb_cp); 1831 + intel_de_write(display, SNPS_PHY_MPLLB_DIV(phy), pll_state->mpllb_div); 1832 + intel_de_write(display, SNPS_PHY_MPLLB_DIV2(phy), pll_state->mpllb_div2); 1833 + intel_de_write(display, SNPS_PHY_MPLLB_SSCEN(phy), pll_state->mpllb_sscen); 1834 + intel_de_write(display, SNPS_PHY_MPLLB_SSCSTEP(phy), pll_state->mpllb_sscstep); 1835 + intel_de_write(display, SNPS_PHY_MPLLB_FRACN1(phy), pll_state->mpllb_fracn1); 1836 + intel_de_write(display, SNPS_PHY_MPLLB_FRACN2(phy), pll_state->mpllb_fracn2); 1837 1837 1838 1838 /* 1839 1839 * 4. If the frequency will result in a change to the voltage ··· 1844 1844 */ 1845 1845 1846 1846 /* 5. Software sets DPLL_ENABLE [PLL Enable] to "1". */ 1847 - intel_de_rmw(dev_priv, enable_reg, 0, PLL_ENABLE); 1847 + intel_de_rmw(display, enable_reg, 0, PLL_ENABLE); 1848 1848 1849 1849 /* 1850 1850 * 9. Software sets SNPS_PHY_MPLLB_DIV dp_mpllb_force_en to "1". This ··· 1853 1853 * PLL because that will start the PLL before it has sampled the 1854 1854 * divider values. 1855 1855 */ 1856 - intel_de_write(dev_priv, SNPS_PHY_MPLLB_DIV(phy), 1856 + intel_de_write(display, SNPS_PHY_MPLLB_DIV(phy), 1857 1857 pll_state->mpllb_div | SNPS_PHY_MPLLB_FORCE_EN); 1858 1858 1859 1859 /* ··· 1861 1861 * is locked at new settings. This register bit is sampling PHY 1862 1862 * dp_mpllb_state interface signal. 1863 1863 */ 1864 - if (intel_de_wait_for_set(dev_priv, enable_reg, PLL_LOCK, 5)) 1865 - drm_dbg_kms(&dev_priv->drm, "Port %c PLL not locked\n", phy_name(phy)); 1864 + if (intel_de_wait_for_set(display, enable_reg, PLL_LOCK, 5)) 1865 + drm_dbg_kms(display->drm, "Port %c PLL not locked\n", phy_name(phy)); 1866 1866 1867 1867 /* 1868 1868 * 11. If the frequency will result in a change to the voltage ··· 1875 1875 1876 1876 void intel_mpllb_disable(struct intel_encoder *encoder) 1877 1877 { 1878 - struct drm_i915_private *i915 = to_i915(encoder->base.dev); 1878 + struct intel_display *display = to_intel_display(encoder); 1879 1879 enum phy phy = intel_encoder_to_phy(encoder); 1880 1880 i915_reg_t enable_reg = (phy <= PHY_D ? 1881 1881 DG2_PLL_ENABLE(phy) : MG_PLL_ENABLE(0)); ··· 1889 1889 */ 1890 1890 1891 1891 /* 2. Software programs DPLL_ENABLE [PLL Enable] to "0" */ 1892 - intel_de_rmw(i915, enable_reg, PLL_ENABLE, 0); 1892 + intel_de_rmw(display, enable_reg, PLL_ENABLE, 0); 1893 1893 1894 1894 /* 1895 1895 * 4. Software programs SNPS_PHY_MPLLB_DIV dp_mpllb_force_en to "0". 1896 1896 * This will allow the PLL to stop running. 1897 1897 */ 1898 - intel_de_rmw(i915, SNPS_PHY_MPLLB_DIV(phy), SNPS_PHY_MPLLB_FORCE_EN, 0); 1898 + intel_de_rmw(display, SNPS_PHY_MPLLB_DIV(phy), SNPS_PHY_MPLLB_FORCE_EN, 0); 1899 1899 1900 1900 /* 1901 1901 * 5. Software polls DPLL_ENABLE [PLL Lock] for PHY acknowledgment 1902 1902 * (dp_txX_ack) that the new transmitter setting request is completed. 1903 1903 */ 1904 - if (intel_de_wait_for_clear(i915, enable_reg, PLL_LOCK, 5)) 1905 - drm_err(&i915->drm, "Port %c PLL not locked\n", phy_name(phy)); 1904 + if (intel_de_wait_for_clear(display, enable_reg, PLL_LOCK, 5)) 1905 + drm_err(display->drm, "Port %c PLL not locked\n", phy_name(phy)); 1906 1906 1907 1907 /* 1908 1908 * 6. If the frequency will result in a change to the voltage ··· 1947 1947 void intel_mpllb_readout_hw_state(struct intel_encoder *encoder, 1948 1948 struct intel_mpllb_state *pll_state) 1949 1949 { 1950 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1950 + struct intel_display *display = to_intel_display(encoder); 1951 1951 enum phy phy = intel_encoder_to_phy(encoder); 1952 1952 1953 - pll_state->mpllb_cp = intel_de_read(dev_priv, SNPS_PHY_MPLLB_CP(phy)); 1954 - pll_state->mpllb_div = intel_de_read(dev_priv, SNPS_PHY_MPLLB_DIV(phy)); 1955 - pll_state->mpllb_div2 = intel_de_read(dev_priv, SNPS_PHY_MPLLB_DIV2(phy)); 1956 - pll_state->mpllb_sscen = intel_de_read(dev_priv, SNPS_PHY_MPLLB_SSCEN(phy)); 1957 - pll_state->mpllb_sscstep = intel_de_read(dev_priv, SNPS_PHY_MPLLB_SSCSTEP(phy)); 1958 - pll_state->mpllb_fracn1 = intel_de_read(dev_priv, SNPS_PHY_MPLLB_FRACN1(phy)); 1959 - pll_state->mpllb_fracn2 = intel_de_read(dev_priv, SNPS_PHY_MPLLB_FRACN2(phy)); 1953 + pll_state->mpllb_cp = intel_de_read(display, SNPS_PHY_MPLLB_CP(phy)); 1954 + pll_state->mpllb_div = intel_de_read(display, SNPS_PHY_MPLLB_DIV(phy)); 1955 + pll_state->mpllb_div2 = intel_de_read(display, SNPS_PHY_MPLLB_DIV2(phy)); 1956 + pll_state->mpllb_sscen = intel_de_read(display, SNPS_PHY_MPLLB_SSCEN(phy)); 1957 + pll_state->mpllb_sscstep = intel_de_read(display, SNPS_PHY_MPLLB_SSCSTEP(phy)); 1958 + pll_state->mpllb_fracn1 = intel_de_read(display, SNPS_PHY_MPLLB_FRACN1(phy)); 1959 + pll_state->mpllb_fracn2 = intel_de_read(display, SNPS_PHY_MPLLB_FRACN2(phy)); 1960 1960 1961 1961 /* 1962 1962 * REF_CONTROL is under firmware control and never programmed by the ··· 1964 1964 * only tells us the expected value for one field in this register, 1965 1965 * so we'll only read out those specific bits here. 1966 1966 */ 1967 - pll_state->ref_control = intel_de_read(dev_priv, SNPS_PHY_REF_CONTROL(phy)) & 1967 + pll_state->ref_control = intel_de_read(display, SNPS_PHY_REF_CONTROL(phy)) & 1968 1968 SNPS_PHY_REF_CONTROL_REF_RANGE; 1969 1969 1970 1970 /* ··· 1980 1980 struct intel_crtc *crtc) 1981 1981 { 1982 1982 struct intel_display *display = to_intel_display(state); 1983 - struct drm_i915_private *i915 = to_i915(state->base.dev); 1984 1983 const struct intel_crtc_state *new_crtc_state = 1985 1984 intel_atomic_get_new_crtc_state(state, crtc); 1986 1985 struct intel_mpllb_state mpllb_hw_state = {}; 1987 1986 const struct intel_mpllb_state *mpllb_sw_state = &new_crtc_state->dpll_hw_state.mpllb; 1988 1987 struct intel_encoder *encoder; 1989 1988 1990 - if (!IS_DG2(i915)) 1989 + if (!display->platform.dg2) 1991 1990 return; 1992 1991 1993 1992 if (!new_crtc_state->hw.active)
+3 -3
drivers/gpu/drm/i915/display/intel_snps_phy.h
··· 8 8 9 9 #include <linux/types.h> 10 10 11 - struct drm_i915_private; 11 + enum phy; 12 12 struct intel_atomic_state; 13 13 struct intel_crtc; 14 14 struct intel_crtc_state; 15 + struct intel_display; 15 16 struct intel_encoder; 16 17 struct intel_mpllb_state; 17 - enum phy; 18 18 19 - void intel_snps_phy_wait_for_calibration(struct drm_i915_private *dev_priv); 19 + void intel_snps_phy_wait_for_calibration(struct intel_display *display); 20 20 void intel_snps_phy_update_psr_power_state(struct intel_encoder *encoder, 21 21 bool enable); 22 22