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

drm/i915: convert VLV IOSF SB interface to struct drm_device

With users both in i915 core and display, struct drm_device is the
common denominator for the VLV IOSF SB users. Also use drm_device for
the helpers on the display side to keep the static inlines as simple as
possible.

We can drop a number of dependencies on i915_drv.h with this.

v2,v3: Rebase

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/c1d013ed88ce2e3e5bdc15ce3bf01a3960b1e817.1747061743.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Jani Nikula bd4d1856 8393253b

+413 -429
+16 -19
drivers/gpu/drm/i915/display/i9xx_wm.c
··· 107 107 108 108 static void chv_set_memory_dvfs(struct intel_display *display, bool enable) 109 109 { 110 - struct drm_i915_private *dev_priv = to_i915(display->drm); 111 110 u32 val; 112 111 113 - vlv_punit_get(dev_priv); 112 + vlv_punit_get(display->drm); 114 113 115 - val = vlv_punit_read(dev_priv, PUNIT_REG_DDR_SETUP2); 114 + val = vlv_punit_read(display->drm, PUNIT_REG_DDR_SETUP2); 116 115 if (enable) 117 116 val &= ~FORCE_DDR_HIGH_FREQ; 118 117 else 119 118 val |= FORCE_DDR_HIGH_FREQ; 120 119 val &= ~FORCE_DDR_LOW_FREQ; 121 120 val |= FORCE_DDR_FREQ_REQ_ACK; 122 - vlv_punit_write(dev_priv, PUNIT_REG_DDR_SETUP2, val); 121 + vlv_punit_write(display->drm, PUNIT_REG_DDR_SETUP2, val); 123 122 124 - if (wait_for((vlv_punit_read(dev_priv, PUNIT_REG_DDR_SETUP2) & 123 + if (wait_for((vlv_punit_read(display->drm, PUNIT_REG_DDR_SETUP2) & 125 124 FORCE_DDR_FREQ_REQ_ACK) == 0, 3)) 126 125 drm_err(display->drm, 127 126 "timed out waiting for Punit DDR DVFS request\n"); 128 127 129 - vlv_punit_put(dev_priv); 128 + vlv_punit_put(display->drm); 130 129 } 131 130 132 131 static void chv_set_memory_pm5(struct intel_display *display, bool enable) 133 132 { 134 - struct drm_i915_private *dev_priv = to_i915(display->drm); 135 133 u32 val; 136 134 137 - vlv_punit_get(dev_priv); 135 + vlv_punit_get(display->drm); 138 136 139 - val = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM); 137 + val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM); 140 138 if (enable) 141 139 val |= DSP_MAXFIFO_PM5_ENABLE; 142 140 else 143 141 val &= ~DSP_MAXFIFO_PM5_ENABLE; 144 - vlv_punit_write(dev_priv, PUNIT_REG_DSPSSPM, val); 142 + vlv_punit_write(display->drm, PUNIT_REG_DSPSSPM, val); 145 143 146 - vlv_punit_put(dev_priv); 144 + vlv_punit_put(display->drm); 147 145 } 148 146 149 147 #define FW_WM(value, plane) \ ··· 3898 3900 3899 3901 static void vlv_wm_get_hw_state(struct intel_display *display) 3900 3902 { 3901 - struct drm_i915_private *dev_priv = to_i915(display->drm); 3902 3903 struct vlv_wm_values *wm = &display->wm.vlv; 3903 3904 struct intel_crtc *crtc; 3904 3905 u32 val; ··· 3908 3911 wm->level = VLV_WM_LEVEL_PM2; 3909 3912 3910 3913 if (display->platform.cherryview) { 3911 - vlv_punit_get(dev_priv); 3914 + vlv_punit_get(display->drm); 3912 3915 3913 - val = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM); 3916 + val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM); 3914 3917 if (val & DSP_MAXFIFO_PM5_ENABLE) 3915 3918 wm->level = VLV_WM_LEVEL_PM5; 3916 3919 ··· 3923 3926 * HIGH/LOW bits so that we don't actually change 3924 3927 * the current state. 3925 3928 */ 3926 - val = vlv_punit_read(dev_priv, PUNIT_REG_DDR_SETUP2); 3929 + val = vlv_punit_read(display->drm, PUNIT_REG_DDR_SETUP2); 3927 3930 val |= FORCE_DDR_FREQ_REQ_ACK; 3928 - vlv_punit_write(dev_priv, PUNIT_REG_DDR_SETUP2, val); 3931 + vlv_punit_write(display->drm, PUNIT_REG_DDR_SETUP2, val); 3929 3932 3930 - if (wait_for((vlv_punit_read(dev_priv, PUNIT_REG_DDR_SETUP2) & 3933 + if (wait_for((vlv_punit_read(display->drm, PUNIT_REG_DDR_SETUP2) & 3931 3934 FORCE_DDR_FREQ_REQ_ACK) == 0, 3)) { 3932 3935 drm_dbg_kms(display->drm, 3933 3936 "Punit not acking DDR DVFS request, " 3934 3937 "assuming DDR DVFS is disabled\n"); 3935 3938 display->wm.num_levels = VLV_WM_LEVEL_PM5 + 1; 3936 3939 } else { 3937 - val = vlv_punit_read(dev_priv, PUNIT_REG_DDR_SETUP2); 3940 + val = vlv_punit_read(display->drm, PUNIT_REG_DDR_SETUP2); 3938 3941 if ((val & FORCE_DDR_HIGH_FREQ) == 0) 3939 3942 wm->level = VLV_WM_LEVEL_DDR_DVFS; 3940 3943 } 3941 3944 3942 - vlv_punit_put(dev_priv); 3945 + vlv_punit_put(display->drm); 3943 3946 } 3944 3947 3945 3948 for_each_intel_crtc(display->drm, crtc) {
+21 -26
drivers/gpu/drm/i915/display/intel_cdclk.c
··· 567 567 static void vlv_get_cdclk(struct intel_display *display, 568 568 struct intel_cdclk_config *cdclk_config) 569 569 { 570 - struct drm_i915_private *dev_priv = to_i915(display->drm); 571 570 u32 val; 572 571 573 - vlv_iosf_sb_get(dev_priv, 574 - BIT(VLV_IOSF_SB_CCK) | BIT(VLV_IOSF_SB_PUNIT)); 572 + vlv_iosf_sb_get(display->drm, BIT(VLV_IOSF_SB_CCK) | BIT(VLV_IOSF_SB_PUNIT)); 575 573 576 - cdclk_config->vco = vlv_get_hpll_vco(dev_priv); 577 - cdclk_config->cdclk = vlv_get_cck_clock(dev_priv, "cdclk", 574 + cdclk_config->vco = vlv_get_hpll_vco(display->drm); 575 + cdclk_config->cdclk = vlv_get_cck_clock(display->drm, "cdclk", 578 576 CCK_DISPLAY_CLOCK_CONTROL, 579 577 cdclk_config->vco); 580 578 581 - val = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM); 579 + val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM); 582 580 583 - vlv_iosf_sb_put(dev_priv, 581 + vlv_iosf_sb_put(display->drm, 584 582 BIT(VLV_IOSF_SB_CCK) | BIT(VLV_IOSF_SB_PUNIT)); 585 583 586 584 if (display->platform.valleyview) ··· 656 658 */ 657 659 wakeref = intel_display_power_get(display, POWER_DOMAIN_DISPLAY_CORE); 658 660 659 - vlv_iosf_sb_get(dev_priv, 661 + vlv_iosf_sb_get(display->drm, 660 662 BIT(VLV_IOSF_SB_CCK) | 661 663 BIT(VLV_IOSF_SB_BUNIT) | 662 664 BIT(VLV_IOSF_SB_PUNIT)); 663 665 664 - val = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM); 666 + val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM); 665 667 val &= ~DSPFREQGUAR_MASK; 666 668 val |= (cmd << DSPFREQGUAR_SHIFT); 667 - vlv_punit_write(dev_priv, PUNIT_REG_DSPSSPM, val); 668 - if (wait_for((vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM) & 669 + vlv_punit_write(display->drm, PUNIT_REG_DSPSSPM, val); 670 + if (wait_for((vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM) & 669 671 DSPFREQSTAT_MASK) == (cmd << DSPFREQSTAT_SHIFT), 670 672 50)) { 671 673 drm_err(display->drm, ··· 679 681 cdclk) - 1; 680 682 681 683 /* adjust cdclk divider */ 682 - val = vlv_cck_read(dev_priv, CCK_DISPLAY_CLOCK_CONTROL); 684 + val = vlv_cck_read(display->drm, CCK_DISPLAY_CLOCK_CONTROL); 683 685 val &= ~CCK_FREQUENCY_VALUES; 684 686 val |= divider; 685 - vlv_cck_write(dev_priv, CCK_DISPLAY_CLOCK_CONTROL, val); 687 + vlv_cck_write(display->drm, CCK_DISPLAY_CLOCK_CONTROL, val); 686 688 687 - if (wait_for((vlv_cck_read(dev_priv, CCK_DISPLAY_CLOCK_CONTROL) & 689 + if (wait_for((vlv_cck_read(display->drm, CCK_DISPLAY_CLOCK_CONTROL) & 688 690 CCK_FREQUENCY_STATUS) == (divider << CCK_FREQUENCY_STATUS_SHIFT), 689 691 50)) 690 692 drm_err(display->drm, ··· 692 694 } 693 695 694 696 /* adjust self-refresh exit latency value */ 695 - val = vlv_bunit_read(dev_priv, BUNIT_REG_BISOC); 697 + val = vlv_bunit_read(display->drm, BUNIT_REG_BISOC); 696 698 val &= ~0x7f; 697 699 698 700 /* ··· 703 705 val |= 4500 / 250; /* 4.5 usec */ 704 706 else 705 707 val |= 3000 / 250; /* 3.0 usec */ 706 - vlv_bunit_write(dev_priv, BUNIT_REG_BISOC, val); 708 + vlv_bunit_write(display->drm, BUNIT_REG_BISOC, val); 707 709 708 - vlv_iosf_sb_put(dev_priv, 710 + vlv_iosf_sb_put(display->drm, 709 711 BIT(VLV_IOSF_SB_CCK) | 710 712 BIT(VLV_IOSF_SB_BUNIT) | 711 713 BIT(VLV_IOSF_SB_PUNIT)); ··· 721 723 const struct intel_cdclk_config *cdclk_config, 722 724 enum pipe pipe) 723 725 { 724 - struct drm_i915_private *dev_priv = to_i915(display->drm); 725 726 int cdclk = cdclk_config->cdclk; 726 727 u32 val, cmd = cdclk_config->voltage_level; 727 728 intel_wakeref_t wakeref; ··· 744 747 */ 745 748 wakeref = intel_display_power_get(display, POWER_DOMAIN_DISPLAY_CORE); 746 749 747 - vlv_punit_get(dev_priv); 748 - val = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM); 750 + vlv_punit_get(display->drm); 751 + val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM); 749 752 val &= ~DSPFREQGUAR_MASK_CHV; 750 753 val |= (cmd << DSPFREQGUAR_SHIFT_CHV); 751 - vlv_punit_write(dev_priv, PUNIT_REG_DSPSSPM, val); 752 - if (wait_for((vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM) & 754 + vlv_punit_write(display->drm, PUNIT_REG_DSPSSPM, val); 755 + if (wait_for((vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM) & 753 756 DSPFREQSTAT_MASK_CHV) == (cmd << DSPFREQSTAT_SHIFT_CHV), 754 757 50)) { 755 758 drm_err(display->drm, 756 759 "timed out waiting for CDclk change\n"); 757 760 } 758 761 759 - vlv_punit_put(dev_priv); 762 + vlv_punit_put(display->drm); 760 763 761 764 intel_update_cdclk(display); 762 765 ··· 3525 3528 3526 3529 static int vlv_hrawclk(struct intel_display *display) 3527 3530 { 3528 - struct drm_i915_private *dev_priv = to_i915(display->drm); 3529 - 3530 3531 /* RAWCLK_FREQ_VLV register updated from power well code */ 3531 - return vlv_get_cck_clock_hpll(dev_priv, "hrawclk", 3532 + return vlv_get_cck_clock_hpll(display->drm, "hrawclk", 3532 3533 CCK_DISPLAY_REF_CLOCK_CONTROL); 3533 3534 } 3534 3535
+12 -11
drivers/gpu/drm/i915/display/intel_display.c
··· 140 140 const struct intel_crtc_state *crtc_state); 141 141 142 142 /* returns HPLL frequency in kHz */ 143 - int vlv_get_hpll_vco(struct drm_i915_private *dev_priv) 143 + int vlv_get_hpll_vco(struct drm_device *drm) 144 144 { 145 145 int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 }; 146 146 147 147 /* Obtain SKU information */ 148 - hpll_freq = vlv_cck_read(dev_priv, CCK_FUSE_REG) & 148 + hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) & 149 149 CCK_FUSE_HPLL_FREQ_MASK; 150 150 151 151 return vco_freq[hpll_freq] * 1000; 152 152 } 153 153 154 - int vlv_get_cck_clock(struct drm_i915_private *dev_priv, 154 + int vlv_get_cck_clock(struct drm_device *drm, 155 155 const char *name, u32 reg, int ref_freq) 156 156 { 157 157 u32 val; 158 158 int divider; 159 159 160 - val = vlv_cck_read(dev_priv, reg); 160 + val = vlv_cck_read(drm, reg); 161 161 divider = val & CCK_FREQUENCY_VALUES; 162 162 163 - drm_WARN(&dev_priv->drm, (val & CCK_FREQUENCY_STATUS) != 163 + drm_WARN(drm, (val & CCK_FREQUENCY_STATUS) != 164 164 (divider << CCK_FREQUENCY_STATUS_SHIFT), 165 165 "%s change in progress\n", name); 166 166 167 167 return DIV_ROUND_CLOSEST(ref_freq << 1, divider + 1); 168 168 } 169 169 170 - int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv, 170 + int vlv_get_cck_clock_hpll(struct drm_device *drm, 171 171 const char *name, u32 reg) 172 172 { 173 + struct drm_i915_private *dev_priv = to_i915(drm); 173 174 int hpll; 174 175 175 - vlv_cck_get(dev_priv); 176 + vlv_cck_get(drm); 176 177 177 178 if (dev_priv->hpll_freq == 0) 178 - dev_priv->hpll_freq = vlv_get_hpll_vco(dev_priv); 179 + dev_priv->hpll_freq = vlv_get_hpll_vco(drm); 179 180 180 - hpll = vlv_get_cck_clock(dev_priv, name, reg, dev_priv->hpll_freq); 181 + hpll = vlv_get_cck_clock(drm, name, reg, dev_priv->hpll_freq); 181 182 182 - vlv_cck_put(dev_priv); 183 + vlv_cck_put(drm); 183 184 184 185 return hpll; 185 186 } ··· 192 191 if (!display->platform.valleyview && !display->platform.cherryview) 193 192 return; 194 193 195 - dev_priv->czclk_freq = vlv_get_cck_clock_hpll(dev_priv, "czclk", 194 + dev_priv->czclk_freq = vlv_get_cck_clock_hpll(display->drm, "czclk", 196 195 CCK_CZ_CLOCK_CONTROL); 197 196 198 197 drm_dbg_kms(display->drm, "CZ clock rate: %d kHz\n", dev_priv->czclk_freq);
+3 -4
drivers/gpu/drm/i915/display/intel_display.h
··· 40 40 struct drm_file; 41 41 struct drm_format_info; 42 42 struct drm_framebuffer; 43 - struct drm_i915_private; 44 43 struct drm_mode_fb_cmd2; 45 44 struct drm_modeset_acquire_ctx; 46 45 struct drm_plane; ··· 451 452 void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state); 452 453 void i830_enable_pipe(struct intel_display *display, enum pipe pipe); 453 454 void i830_disable_pipe(struct intel_display *display, enum pipe pipe); 454 - int vlv_get_hpll_vco(struct drm_i915_private *dev_priv); 455 - int vlv_get_cck_clock(struct drm_i915_private *dev_priv, 455 + int vlv_get_hpll_vco(struct drm_device *drm); 456 + int vlv_get_cck_clock(struct drm_device *drm, 456 457 const char *name, u32 reg, int ref_freq); 457 - int vlv_get_cck_clock_hpll(struct drm_i915_private *dev_priv, 458 + int vlv_get_cck_clock_hpll(struct drm_device *drm, 458 459 const char *name, u32 reg); 459 460 bool intel_has_pending_fb_unpin(struct intel_display *display); 460 461 void intel_encoder_destroy(struct drm_encoder *encoder);
+3 -4
drivers/gpu/drm/i915/display/intel_display_power.c
··· 1883 1883 1884 1884 static bool vlv_punit_is_power_gated(struct intel_display *display, u32 reg0) 1885 1885 { 1886 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1887 1886 bool ret; 1888 1887 1889 - vlv_punit_get(dev_priv); 1890 - ret = (vlv_punit_read(dev_priv, reg0) & SSPM0_SSC_MASK) == SSPM0_SSC_PWR_GATE; 1891 - vlv_punit_put(dev_priv); 1888 + vlv_punit_get(display->drm); 1889 + ret = (vlv_punit_read(display->drm, reg0) & SSPM0_SSC_MASK) == SSPM0_SSC_PWR_GATE; 1890 + vlv_punit_put(display->drm); 1892 1891 1893 1892 return ret; 1894 1893 }
+31 -38
drivers/gpu/drm/i915/display/intel_display_power_well.c
··· 809 809 810 810 static void assert_can_enable_dc5(struct intel_display *display) 811 811 { 812 - struct drm_i915_private __maybe_unused *dev_priv = to_i915(display->drm); 813 812 enum i915_power_well_id high_pg; 814 813 815 814 /* Power wells at this level and above must be disabled for DC5 entry */ ··· 1101 1102 static void vlv_set_power_well(struct intel_display *display, 1102 1103 struct i915_power_well *power_well, bool enable) 1103 1104 { 1104 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1105 1105 int pw_idx = i915_power_well_instance(power_well)->vlv.idx; 1106 1106 u32 mask; 1107 1107 u32 state; ··· 1110 1112 state = enable ? PUNIT_PWRGT_PWR_ON(pw_idx) : 1111 1113 PUNIT_PWRGT_PWR_GATE(pw_idx); 1112 1114 1113 - vlv_punit_get(dev_priv); 1115 + vlv_punit_get(display->drm); 1114 1116 1115 1117 #define COND \ 1116 - ((vlv_punit_read(dev_priv, PUNIT_REG_PWRGT_STATUS) & mask) == state) 1118 + ((vlv_punit_read(display->drm, PUNIT_REG_PWRGT_STATUS) & mask) == state) 1117 1119 1118 1120 if (COND) 1119 1121 goto out; 1120 1122 1121 - ctrl = vlv_punit_read(dev_priv, PUNIT_REG_PWRGT_CTRL); 1123 + ctrl = vlv_punit_read(display->drm, PUNIT_REG_PWRGT_CTRL); 1122 1124 ctrl &= ~mask; 1123 1125 ctrl |= state; 1124 - vlv_punit_write(dev_priv, PUNIT_REG_PWRGT_CTRL, ctrl); 1126 + vlv_punit_write(display->drm, PUNIT_REG_PWRGT_CTRL, ctrl); 1125 1127 1126 1128 if (wait_for(COND, 100)) 1127 1129 drm_err(display->drm, 1128 1130 "timeout setting power well state %08x (%08x)\n", 1129 1131 state, 1130 - vlv_punit_read(dev_priv, PUNIT_REG_PWRGT_CTRL)); 1132 + vlv_punit_read(display->drm, PUNIT_REG_PWRGT_CTRL)); 1131 1133 1132 1134 #undef COND 1133 1135 1134 1136 out: 1135 - vlv_punit_put(dev_priv); 1137 + vlv_punit_put(display->drm); 1136 1138 } 1137 1139 1138 1140 static void vlv_power_well_enable(struct intel_display *display, ··· 1150 1152 static bool vlv_power_well_enabled(struct intel_display *display, 1151 1153 struct i915_power_well *power_well) 1152 1154 { 1153 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1154 1155 int pw_idx = i915_power_well_instance(power_well)->vlv.idx; 1155 1156 bool enabled = false; 1156 1157 u32 mask; ··· 1159 1162 mask = PUNIT_PWRGT_MASK(pw_idx); 1160 1163 ctrl = PUNIT_PWRGT_PWR_ON(pw_idx); 1161 1164 1162 - vlv_punit_get(dev_priv); 1165 + vlv_punit_get(display->drm); 1163 1166 1164 - state = vlv_punit_read(dev_priv, PUNIT_REG_PWRGT_STATUS) & mask; 1167 + state = vlv_punit_read(display->drm, PUNIT_REG_PWRGT_STATUS) & mask; 1165 1168 /* 1166 1169 * We only ever set the power-on and power-gate states, anything 1167 1170 * else is unexpected. ··· 1175 1178 * A transient state at this point would mean some unexpected party 1176 1179 * is poking at the power controls too. 1177 1180 */ 1178 - ctrl = vlv_punit_read(dev_priv, PUNIT_REG_PWRGT_CTRL) & mask; 1181 + ctrl = vlv_punit_read(display->drm, PUNIT_REG_PWRGT_CTRL) & mask; 1179 1182 drm_WARN_ON(display->drm, ctrl != state); 1180 1183 1181 - vlv_punit_put(dev_priv); 1184 + vlv_punit_put(display->drm); 1182 1185 1183 1186 return enabled; 1184 1187 } ··· 1434 1437 static void chv_dpio_cmn_power_well_enable(struct intel_display *display, 1435 1438 struct i915_power_well *power_well) 1436 1439 { 1437 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1438 1440 enum i915_power_well_id id = i915_power_well_instance(power_well)->id; 1439 1441 enum dpio_phy phy; 1440 1442 u32 tmp; ··· 1457 1461 drm_err(display->drm, "Display PHY %d is not power up\n", 1458 1462 phy); 1459 1463 1460 - vlv_dpio_get(dev_priv); 1464 + vlv_dpio_get(display->drm); 1461 1465 1462 1466 /* Enable dynamic power down */ 1463 - tmp = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW28); 1467 + tmp = vlv_dpio_read(display->drm, phy, CHV_CMN_DW28); 1464 1468 tmp |= DPIO_DYNPWRDOWNEN_CH0 | DPIO_CL1POWERDOWNEN | 1465 1469 DPIO_SUS_CLK_CONFIG_GATE_CLKREQ; 1466 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW28, tmp); 1470 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW28, tmp); 1467 1471 1468 1472 if (id == VLV_DISP_PW_DPIO_CMN_BC) { 1469 - tmp = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW6_CH1); 1473 + tmp = vlv_dpio_read(display->drm, phy, CHV_CMN_DW6_CH1); 1470 1474 tmp |= DPIO_DYNPWRDOWNEN_CH1; 1471 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW6_CH1, tmp); 1475 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW6_CH1, tmp); 1472 1476 } else { 1473 1477 /* 1474 1478 * Force the non-existing CL2 off. BXT does this 1475 1479 * too, so maybe it saves some power even though 1476 1480 * CL2 doesn't exist? 1477 1481 */ 1478 - tmp = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW30); 1482 + tmp = vlv_dpio_read(display->drm, phy, CHV_CMN_DW30); 1479 1483 tmp |= DPIO_CL2_LDOFUSE_PWRENB; 1480 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW30, tmp); 1484 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW30, tmp); 1481 1485 } 1482 1486 1483 - vlv_dpio_put(dev_priv); 1487 + vlv_dpio_put(display->drm); 1484 1488 1485 1489 display->power.chv_phy_control |= PHY_COM_LANE_RESET_DEASSERT(phy); 1486 1490 intel_de_write(display, DISPLAY_PHY_CONTROL, ··· 1531 1535 static void assert_chv_phy_powergate(struct intel_display *display, enum dpio_phy phy, 1532 1536 enum dpio_channel ch, bool override, unsigned int mask) 1533 1537 { 1534 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1535 1538 u32 reg, val, expected, actual; 1536 1539 1537 1540 /* ··· 1548 1553 else 1549 1554 reg = CHV_CMN_DW6_CH1; 1550 1555 1551 - vlv_dpio_get(dev_priv); 1552 - val = vlv_dpio_read(dev_priv, phy, reg); 1553 - vlv_dpio_put(dev_priv); 1556 + vlv_dpio_get(display->drm); 1557 + val = vlv_dpio_read(display->drm, phy, reg); 1558 + vlv_dpio_put(display->drm); 1554 1559 1555 1560 /* 1556 1561 * This assumes !override is only used when the port is disabled. ··· 1660 1665 static bool chv_pipe_power_well_enabled(struct intel_display *display, 1661 1666 struct i915_power_well *power_well) 1662 1667 { 1663 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1664 1668 enum pipe pipe = PIPE_A; 1665 1669 bool enabled; 1666 1670 u32 state, ctrl; 1667 1671 1668 - vlv_punit_get(dev_priv); 1672 + vlv_punit_get(display->drm); 1669 1673 1670 - state = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM) & DP_SSS_MASK(pipe); 1674 + state = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM) & DP_SSS_MASK(pipe); 1671 1675 /* 1672 1676 * We only ever set the power-on and power-gate states, anything 1673 1677 * else is unexpected. ··· 1679 1685 * A transient state at this point would mean some unexpected party 1680 1686 * is poking at the power controls too. 1681 1687 */ 1682 - ctrl = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM) & DP_SSC_MASK(pipe); 1688 + ctrl = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM) & DP_SSC_MASK(pipe); 1683 1689 drm_WARN_ON(display->drm, ctrl << 16 != state); 1684 1690 1685 - vlv_punit_put(dev_priv); 1691 + vlv_punit_put(display->drm); 1686 1692 1687 1693 return enabled; 1688 1694 } ··· 1691 1697 struct i915_power_well *power_well, 1692 1698 bool enable) 1693 1699 { 1694 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1695 1700 enum pipe pipe = PIPE_A; 1696 1701 u32 state; 1697 1702 u32 ctrl; 1698 1703 1699 1704 state = enable ? DP_SSS_PWR_ON(pipe) : DP_SSS_PWR_GATE(pipe); 1700 1705 1701 - vlv_punit_get(dev_priv); 1706 + vlv_punit_get(display->drm); 1702 1707 1703 1708 #define COND \ 1704 - ((vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM) & DP_SSS_MASK(pipe)) == state) 1709 + ((vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM) & DP_SSS_MASK(pipe)) == state) 1705 1710 1706 1711 if (COND) 1707 1712 goto out; 1708 1713 1709 - ctrl = vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM); 1714 + ctrl = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM); 1710 1715 ctrl &= ~DP_SSC_MASK(pipe); 1711 1716 ctrl |= enable ? DP_SSC_PWR_ON(pipe) : DP_SSC_PWR_GATE(pipe); 1712 - vlv_punit_write(dev_priv, PUNIT_REG_DSPSSPM, ctrl); 1717 + vlv_punit_write(display->drm, PUNIT_REG_DSPSSPM, ctrl); 1713 1718 1714 1719 if (wait_for(COND, 100)) 1715 1720 drm_err(display->drm, 1716 1721 "timeout setting power well state %08x (%08x)\n", 1717 1722 state, 1718 - vlv_punit_read(dev_priv, PUNIT_REG_DSPSSPM)); 1723 + vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM)); 1719 1724 1720 1725 #undef COND 1721 1726 1722 1727 out: 1723 - vlv_punit_put(dev_priv); 1728 + vlv_punit_put(display->drm); 1724 1729 } 1725 1730 1726 1731 static void chv_pipe_power_well_sync_hw(struct intel_display *display,
+100 -99
drivers/gpu/drm/i915/display/intel_dpio_phy.c
··· 21 21 * DEALINGS IN THE SOFTWARE. 22 22 */ 23 23 24 + #include <drm/drm_print.h> 25 + 24 26 #include "bxt_dpio_phy_regs.h" 25 - #include "i915_drv.h" 26 27 #include "i915_reg.h" 28 + #include "i915_utils.h" 27 29 #include "intel_ddi.h" 28 30 #include "intel_ddi_buf_trans.h" 29 31 #include "intel_de.h" ··· 717 715 u32 deemph_reg_value, u32 margin_reg_value, 718 716 bool uniq_trans_scale) 719 717 { 720 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 718 + struct intel_display *display = to_intel_display(encoder); 721 719 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); 722 720 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 723 721 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 724 722 u32 val; 725 723 int i; 726 724 727 - vlv_dpio_get(dev_priv); 725 + vlv_dpio_get(display->drm); 728 726 729 727 /* Clear calc init */ 730 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW10(ch)); 728 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW10(ch)); 731 729 val &= ~(DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3); 732 730 val &= ~(DPIO_PCS_TX1DEEMP_MASK | DPIO_PCS_TX2DEEMP_MASK); 733 731 val |= DPIO_PCS_TX1DEEMP_9P5 | DPIO_PCS_TX2DEEMP_9P5; 734 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW10(ch), val); 732 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW10(ch), val); 735 733 736 734 if (crtc_state->lane_count > 2) { 737 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW10(ch)); 735 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW10(ch)); 738 736 val &= ~(DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3); 739 737 val &= ~(DPIO_PCS_TX1DEEMP_MASK | DPIO_PCS_TX2DEEMP_MASK); 740 738 val |= DPIO_PCS_TX1DEEMP_9P5 | DPIO_PCS_TX2DEEMP_9P5; 741 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW10(ch), val); 739 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW10(ch), val); 742 740 } 743 741 744 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW9(ch)); 742 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW9(ch)); 745 743 val &= ~(DPIO_PCS_TX1MARGIN_MASK | DPIO_PCS_TX2MARGIN_MASK); 746 744 val |= DPIO_PCS_TX1MARGIN_000 | DPIO_PCS_TX2MARGIN_000; 747 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW9(ch), val); 745 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW9(ch), val); 748 746 749 747 if (crtc_state->lane_count > 2) { 750 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW9(ch)); 748 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW9(ch)); 751 749 val &= ~(DPIO_PCS_TX1MARGIN_MASK | DPIO_PCS_TX2MARGIN_MASK); 752 750 val |= DPIO_PCS_TX1MARGIN_000 | DPIO_PCS_TX2MARGIN_000; 753 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW9(ch), val); 751 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW9(ch), val); 754 752 } 755 753 756 754 /* Program swing deemph */ 757 755 for (i = 0; i < crtc_state->lane_count; i++) { 758 - val = vlv_dpio_read(dev_priv, phy, CHV_TX_DW4(ch, i)); 756 + val = vlv_dpio_read(display->drm, phy, CHV_TX_DW4(ch, i)); 759 757 val &= ~DPIO_SWING_DEEMPH9P5_MASK; 760 758 val |= DPIO_SWING_DEEMPH9P5(deemph_reg_value); 761 - vlv_dpio_write(dev_priv, phy, CHV_TX_DW4(ch, i), val); 759 + vlv_dpio_write(display->drm, phy, CHV_TX_DW4(ch, i), val); 762 760 } 763 761 764 762 /* Program swing margin */ 765 763 for (i = 0; i < crtc_state->lane_count; i++) { 766 - val = vlv_dpio_read(dev_priv, phy, CHV_TX_DW2(ch, i)); 764 + val = vlv_dpio_read(display->drm, phy, CHV_TX_DW2(ch, i)); 767 765 768 766 val &= ~DPIO_SWING_MARGIN000_MASK; 769 767 val |= DPIO_SWING_MARGIN000(margin_reg_value); ··· 776 774 val &= ~DPIO_UNIQ_TRANS_SCALE_MASK; 777 775 val |= DPIO_UNIQ_TRANS_SCALE(0x9a); 778 776 779 - vlv_dpio_write(dev_priv, phy, CHV_TX_DW2(ch, i), val); 777 + vlv_dpio_write(display->drm, phy, CHV_TX_DW2(ch, i), val); 780 778 } 781 779 782 780 /* ··· 786 784 * 27 for ch0 and ch1. 787 785 */ 788 786 for (i = 0; i < crtc_state->lane_count; i++) { 789 - val = vlv_dpio_read(dev_priv, phy, CHV_TX_DW3(ch, i)); 787 + val = vlv_dpio_read(display->drm, phy, CHV_TX_DW3(ch, i)); 790 788 if (uniq_trans_scale) 791 789 val |= DPIO_TX_UNIQ_TRANS_SCALE_EN; 792 790 else 793 791 val &= ~DPIO_TX_UNIQ_TRANS_SCALE_EN; 794 - vlv_dpio_write(dev_priv, phy, CHV_TX_DW3(ch, i), val); 792 + vlv_dpio_write(display->drm, phy, CHV_TX_DW3(ch, i), val); 795 793 } 796 794 797 795 /* Start swing calculation */ 798 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW10(ch)); 796 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW10(ch)); 799 797 val |= DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3; 800 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW10(ch), val); 798 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW10(ch), val); 801 799 802 800 if (crtc_state->lane_count > 2) { 803 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW10(ch)); 801 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW10(ch)); 804 802 val |= DPIO_PCS_SWING_CALC_TX0_TX2 | DPIO_PCS_SWING_CALC_TX1_TX3; 805 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW10(ch), val); 803 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW10(ch), val); 806 804 } 807 805 808 - vlv_dpio_put(dev_priv); 806 + vlv_dpio_put(display->drm); 809 807 } 810 808 811 809 static void __chv_data_lane_soft_reset(struct intel_encoder *encoder, 812 810 const struct intel_crtc_state *crtc_state, 813 811 bool reset) 814 812 { 815 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 813 + struct intel_display *display = to_intel_display(encoder); 816 814 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); 817 815 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 818 816 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 819 817 u32 val; 820 818 821 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW0(ch)); 819 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW0(ch)); 822 820 if (reset) 823 821 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 824 822 else 825 823 val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET; 826 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW0(ch), val); 824 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW0(ch), val); 827 825 828 826 if (crtc_state->lane_count > 2) { 829 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW0(ch)); 827 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW0(ch)); 830 828 if (reset) 831 829 val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET); 832 830 else 833 831 val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET; 834 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW0(ch), val); 832 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW0(ch), val); 835 833 } 836 834 837 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW1(ch)); 835 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW1(ch)); 838 836 val |= CHV_PCS_REQ_SOFTRESET_EN; 839 837 if (reset) 840 838 val &= ~DPIO_PCS_CLK_SOFT_RESET; 841 839 else 842 840 val |= DPIO_PCS_CLK_SOFT_RESET; 843 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW1(ch), val); 841 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW1(ch), val); 844 842 845 843 if (crtc_state->lane_count > 2) { 846 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW1(ch)); 844 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW1(ch)); 847 845 val |= CHV_PCS_REQ_SOFTRESET_EN; 848 846 if (reset) 849 847 val &= ~DPIO_PCS_CLK_SOFT_RESET; 850 848 else 851 849 val |= DPIO_PCS_CLK_SOFT_RESET; 852 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW1(ch), val); 850 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW1(ch), val); 853 851 } 854 852 } 855 853 ··· 857 855 const struct intel_crtc_state *crtc_state, 858 856 bool reset) 859 857 { 860 - struct drm_i915_private *i915 = to_i915(encoder->base.dev); 858 + struct intel_display *display = to_intel_display(encoder); 861 859 862 - vlv_dpio_get(i915); 860 + vlv_dpio_get(display->drm); 863 861 __chv_data_lane_soft_reset(encoder, crtc_state, reset); 864 - vlv_dpio_put(i915); 862 + vlv_dpio_put(display->drm); 865 863 } 866 864 867 865 void chv_phy_pre_pll_enable(struct intel_encoder *encoder, ··· 869 867 { 870 868 struct intel_display *display = to_intel_display(encoder); 871 869 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); 872 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 873 870 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 874 871 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 875 872 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); ··· 887 886 888 887 chv_phy_powergate_lanes(encoder, true, lane_mask); 889 888 890 - vlv_dpio_get(dev_priv); 889 + vlv_dpio_get(display->drm); 891 890 892 891 /* Assert data lane reset */ 893 892 __chv_data_lane_soft_reset(encoder, crtc_state, true); 894 893 895 894 /* program left/right clock distribution */ 896 895 if (pipe != PIPE_B) { 897 - val = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW5_CH0); 896 + val = vlv_dpio_read(display->drm, phy, CHV_CMN_DW5_CH0); 898 897 val &= ~(CHV_BUFLEFTENA1_MASK | CHV_BUFRIGHTENA1_MASK); 899 898 if (ch == DPIO_CH0) 900 899 val |= CHV_BUFLEFTENA1_FORCE; 901 900 if (ch == DPIO_CH1) 902 901 val |= CHV_BUFRIGHTENA1_FORCE; 903 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW5_CH0, val); 902 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW5_CH0, val); 904 903 } else { 905 - val = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW1_CH1); 904 + val = vlv_dpio_read(display->drm, phy, CHV_CMN_DW1_CH1); 906 905 val &= ~(CHV_BUFLEFTENA2_MASK | CHV_BUFRIGHTENA2_MASK); 907 906 if (ch == DPIO_CH0) 908 907 val |= CHV_BUFLEFTENA2_FORCE; 909 908 if (ch == DPIO_CH1) 910 909 val |= CHV_BUFRIGHTENA2_FORCE; 911 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW1_CH1, val); 910 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW1_CH1, val); 912 911 } 913 912 914 913 /* program clock channel usage */ 915 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW8(ch)); 914 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW8(ch)); 916 915 val |= DPIO_PCS_USEDCLKCHANNEL_OVRRIDE; 917 916 if (pipe == PIPE_B) 918 917 val |= DPIO_PCS_USEDCLKCHANNEL; 919 918 else 920 919 val &= ~DPIO_PCS_USEDCLKCHANNEL; 921 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW8(ch), val); 920 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW8(ch), val); 922 921 923 922 if (crtc_state->lane_count > 2) { 924 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW8(ch)); 923 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW8(ch)); 925 924 val |= DPIO_PCS_USEDCLKCHANNEL_OVRRIDE; 926 925 if (pipe == PIPE_B) 927 926 val |= DPIO_PCS_USEDCLKCHANNEL; 928 927 else 929 928 val &= ~DPIO_PCS_USEDCLKCHANNEL; 930 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW8(ch), val); 929 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW8(ch), val); 931 930 } 932 931 933 932 /* ··· 935 934 * matches the pipe, but here we need to 936 935 * pick the CL based on the port. 937 936 */ 938 - val = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW19(ch)); 937 + val = vlv_dpio_read(display->drm, phy, CHV_CMN_DW19(ch)); 939 938 if (pipe == PIPE_B) 940 939 val |= CHV_CMN_USEDCLKCHANNEL; 941 940 else 942 941 val &= ~CHV_CMN_USEDCLKCHANNEL; 943 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW19(ch), val); 942 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW19(ch), val); 944 943 945 - vlv_dpio_put(dev_priv); 944 + vlv_dpio_put(display->drm); 946 945 } 947 946 948 947 void chv_phy_pre_encoder_enable(struct intel_encoder *encoder, 949 948 const struct intel_crtc_state *crtc_state) 950 949 { 950 + struct intel_display *display = to_intel_display(encoder); 951 951 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); 952 952 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); 953 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 954 953 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 955 954 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 956 955 int data, i, stagger; 957 956 u32 val; 958 957 959 - vlv_dpio_get(dev_priv); 958 + vlv_dpio_get(display->drm); 960 959 961 960 /* allow hardware to manage TX FIFO reset source */ 962 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW11(ch)); 961 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW11(ch)); 963 962 val &= ~DPIO_LANEDESKEW_STRAP_OVRD; 964 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW11(ch), val); 963 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW11(ch), val); 965 964 966 965 if (crtc_state->lane_count > 2) { 967 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW11(ch)); 966 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW11(ch)); 968 967 val &= ~DPIO_LANEDESKEW_STRAP_OVRD; 969 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW11(ch), val); 968 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW11(ch), val); 970 969 } 971 970 972 971 /* Program Tx lane latency optimal setting*/ ··· 976 975 data = 0; 977 976 else 978 977 data = (i == 1) ? 0 : DPIO_UPAR; 979 - vlv_dpio_write(dev_priv, phy, CHV_TX_DW14(ch, i), data); 978 + vlv_dpio_write(display->drm, phy, CHV_TX_DW14(ch, i), data); 980 979 } 981 980 982 981 /* Data lane stagger programming */ ··· 991 990 else 992 991 stagger = 0x2; 993 992 994 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS01_DW11(ch)); 993 + val = vlv_dpio_read(display->drm, phy, VLV_PCS01_DW11(ch)); 995 994 val |= DPIO_TX2_STAGGER_MASK(0x1f); 996 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW11(ch), val); 995 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW11(ch), val); 997 996 998 997 if (crtc_state->lane_count > 2) { 999 - val = vlv_dpio_read(dev_priv, phy, VLV_PCS23_DW11(ch)); 998 + val = vlv_dpio_read(display->drm, phy, VLV_PCS23_DW11(ch)); 1000 999 val |= DPIO_TX2_STAGGER_MASK(0x1f); 1001 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW11(ch), val); 1000 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW11(ch), val); 1002 1001 } 1003 1002 1004 - vlv_dpio_write(dev_priv, phy, VLV_PCS01_DW12(ch), 1003 + vlv_dpio_write(display->drm, phy, VLV_PCS01_DW12(ch), 1005 1004 DPIO_LANESTAGGER_STRAP(stagger) | 1006 1005 DPIO_LANESTAGGER_STRAP_OVRD | 1007 1006 DPIO_TX1_STAGGER_MASK(0x1f) | ··· 1009 1008 DPIO_TX2_STAGGER_MULT(0)); 1010 1009 1011 1010 if (crtc_state->lane_count > 2) { 1012 - vlv_dpio_write(dev_priv, phy, VLV_PCS23_DW12(ch), 1011 + vlv_dpio_write(display->drm, phy, VLV_PCS23_DW12(ch), 1013 1012 DPIO_LANESTAGGER_STRAP(stagger) | 1014 1013 DPIO_LANESTAGGER_STRAP_OVRD | 1015 1014 DPIO_TX1_STAGGER_MASK(0x1f) | ··· 1020 1019 /* Deassert data lane reset */ 1021 1020 __chv_data_lane_soft_reset(encoder, crtc_state, false); 1022 1021 1023 - vlv_dpio_put(dev_priv); 1022 + vlv_dpio_put(display->drm); 1024 1023 } 1025 1024 1026 1025 void chv_phy_release_cl2_override(struct intel_encoder *encoder) ··· 1037 1036 void chv_phy_post_pll_disable(struct intel_encoder *encoder, 1038 1037 const struct intel_crtc_state *old_crtc_state) 1039 1038 { 1040 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1039 + struct intel_display *display = to_intel_display(encoder); 1041 1040 enum dpio_phy phy = vlv_dig_port_to_phy(enc_to_dig_port(encoder)); 1042 1041 enum pipe pipe = to_intel_crtc(old_crtc_state->uapi.crtc)->pipe; 1043 1042 u32 val; 1044 1043 1045 - vlv_dpio_get(dev_priv); 1044 + vlv_dpio_get(display->drm); 1046 1045 1047 1046 /* disable left/right clock distribution */ 1048 1047 if (pipe != PIPE_B) { 1049 - val = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW5_CH0); 1048 + val = vlv_dpio_read(display->drm, phy, CHV_CMN_DW5_CH0); 1050 1049 val &= ~(CHV_BUFLEFTENA1_MASK | CHV_BUFRIGHTENA1_MASK); 1051 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW5_CH0, val); 1050 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW5_CH0, val); 1052 1051 } else { 1053 - val = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW1_CH1); 1052 + val = vlv_dpio_read(display->drm, phy, CHV_CMN_DW1_CH1); 1054 1053 val &= ~(CHV_BUFLEFTENA2_MASK | CHV_BUFRIGHTENA2_MASK); 1055 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW1_CH1, val); 1054 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW1_CH1, val); 1056 1055 } 1057 1056 1058 - vlv_dpio_put(dev_priv); 1057 + vlv_dpio_put(display->drm); 1059 1058 1060 1059 /* 1061 1060 * Leave the power down bit cleared for at least one ··· 1074 1073 u32 demph_reg_value, u32 preemph_reg_value, 1075 1074 u32 uniqtranscale_reg_value, u32 tx3_demph) 1076 1075 { 1077 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1076 + struct intel_display *display = to_intel_display(encoder); 1078 1077 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); 1079 1078 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 1080 1079 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 1081 1080 1082 - vlv_dpio_get(dev_priv); 1081 + vlv_dpio_get(display->drm); 1083 1082 1084 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW5_GRP(ch), 0x00000000); 1085 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW4_GRP(ch), demph_reg_value); 1086 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW2_GRP(ch), 1087 - uniqtranscale_reg_value); 1088 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW3_GRP(ch), 0x0C782040); 1083 + vlv_dpio_write(display->drm, phy, VLV_TX_DW5_GRP(ch), 0x00000000); 1084 + vlv_dpio_write(display->drm, phy, VLV_TX_DW4_GRP(ch), demph_reg_value); 1085 + vlv_dpio_write(display->drm, phy, VLV_TX_DW2_GRP(ch), 1086 + uniqtranscale_reg_value); 1087 + vlv_dpio_write(display->drm, phy, VLV_TX_DW3_GRP(ch), 0x0C782040); 1089 1088 1090 1089 if (tx3_demph) 1091 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW4(ch, 3), tx3_demph); 1090 + vlv_dpio_write(display->drm, phy, VLV_TX_DW4(ch, 3), tx3_demph); 1092 1091 1093 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW11_GRP(ch), 0x00030000); 1094 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW9_GRP(ch), preemph_reg_value); 1095 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW5_GRP(ch), DPIO_TX_OCALINIT_EN); 1092 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW11_GRP(ch), 0x00030000); 1093 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW9_GRP(ch), preemph_reg_value); 1094 + vlv_dpio_write(display->drm, phy, VLV_TX_DW5_GRP(ch), DPIO_TX_OCALINIT_EN); 1096 1095 1097 - vlv_dpio_put(dev_priv); 1096 + vlv_dpio_put(display->drm); 1098 1097 } 1099 1098 1100 1099 void vlv_phy_pre_pll_enable(struct intel_encoder *encoder, 1101 1100 const struct intel_crtc_state *crtc_state) 1102 1101 { 1102 + struct intel_display *display = to_intel_display(encoder); 1103 1103 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); 1104 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1105 1104 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 1106 1105 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 1107 1106 1108 1107 /* Program Tx lane resets to default */ 1109 - vlv_dpio_get(dev_priv); 1108 + vlv_dpio_get(display->drm); 1110 1109 1111 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW0_GRP(ch), 1110 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW0_GRP(ch), 1112 1111 DPIO_PCS_TX_LANE2_RESET | 1113 1112 DPIO_PCS_TX_LANE1_RESET); 1114 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW1_GRP(ch), 1113 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW1_GRP(ch), 1115 1114 DPIO_PCS_CLK_CRI_RXEB_EIOS_EN | 1116 1115 DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN | 1117 1116 DPIO_PCS_CLK_DATAWIDTH_8_10 | 1118 1117 DPIO_PCS_CLK_SOFT_RESET); 1119 1118 1120 1119 /* Fix up inter-pair skew failure */ 1121 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW12_GRP(ch), 0x00750f00); 1122 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW11_GRP(ch), 0x00001500); 1123 - vlv_dpio_write(dev_priv, phy, VLV_TX_DW14_GRP(ch), 0x40400000); 1120 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW12_GRP(ch), 0x00750f00); 1121 + vlv_dpio_write(display->drm, phy, VLV_TX_DW11_GRP(ch), 0x00001500); 1122 + vlv_dpio_write(display->drm, phy, VLV_TX_DW14_GRP(ch), 0x40400000); 1124 1123 1125 - vlv_dpio_put(dev_priv); 1124 + vlv_dpio_put(display->drm); 1126 1125 } 1127 1126 1128 1127 void vlv_phy_pre_encoder_enable(struct intel_encoder *encoder, 1129 1128 const struct intel_crtc_state *crtc_state) 1130 1129 { 1130 + struct intel_display *display = to_intel_display(encoder); 1131 1131 struct intel_dp *intel_dp = enc_to_intel_dp(encoder); 1132 1132 struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp); 1133 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1134 1133 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 1135 1134 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 1136 1135 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 1137 1136 enum pipe pipe = crtc->pipe; 1138 1137 u32 val; 1139 1138 1140 - vlv_dpio_get(dev_priv); 1139 + vlv_dpio_get(display->drm); 1141 1140 1142 1141 /* Enable clock channels for this port */ 1143 1142 val = DPIO_PCS_USEDCLKCHANNEL_OVRRIDE; 1144 1143 if (pipe == PIPE_B) 1145 1144 val |= DPIO_PCS_USEDCLKCHANNEL; 1146 1145 val |= 0xc4; 1147 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW8_GRP(ch), val); 1146 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW8_GRP(ch), val); 1148 1147 1149 1148 /* Program lane clock */ 1150 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW14_GRP(ch), 0x00760018); 1151 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW23_GRP(ch), 0x00400888); 1149 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW14_GRP(ch), 0x00760018); 1150 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW23_GRP(ch), 0x00400888); 1152 1151 1153 - vlv_dpio_put(dev_priv); 1152 + vlv_dpio_put(display->drm); 1154 1153 } 1155 1154 1156 1155 void vlv_phy_reset_lanes(struct intel_encoder *encoder, 1157 1156 const struct intel_crtc_state *old_crtc_state) 1158 1157 { 1158 + struct intel_display *display = to_intel_display(encoder); 1159 1159 struct intel_digital_port *dig_port = enc_to_dig_port(encoder); 1160 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 1161 1160 enum dpio_channel ch = vlv_dig_port_to_channel(dig_port); 1162 1161 enum dpio_phy phy = vlv_dig_port_to_phy(dig_port); 1163 1162 1164 - vlv_dpio_get(dev_priv); 1165 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW0_GRP(ch), 0x00000000); 1166 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW1_GRP(ch), 0x00e00060); 1167 - vlv_dpio_put(dev_priv); 1163 + vlv_dpio_get(display->drm); 1164 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW0_GRP(ch), 0x00000000); 1165 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW1_GRP(ch), 0x00e00060); 1166 + vlv_dpio_put(display->drm); 1168 1167 } 1169 1168 1170 1169 void vlv_wait_port_ready(struct intel_encoder *encoder,
+63 -72
drivers/gpu/drm/i915/display/intel_dpll.c
··· 6 6 #include <linux/kernel.h> 7 7 #include <linux/string_helpers.h> 8 8 9 - #include "i915_drv.h" 9 + #include <drm/drm_print.h> 10 + 10 11 #include "i915_reg.h" 11 12 #include "intel_atomic.h" 12 13 #include "intel_crtc.h" ··· 514 513 515 514 void vlv_crtc_clock_get(struct intel_crtc_state *crtc_state) 516 515 { 516 + struct intel_display *display = to_intel_display(crtc_state); 517 517 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 518 - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 519 518 enum dpio_channel ch = vlv_pipe_to_channel(crtc->pipe); 520 519 enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe); 521 520 const struct i9xx_dpll_hw_state *hw_state = &crtc_state->dpll_hw_state.i9xx; ··· 527 526 if ((hw_state->dpll & DPLL_VCO_ENABLE) == 0) 528 527 return; 529 528 530 - vlv_dpio_get(dev_priv); 531 - tmp = vlv_dpio_read(dev_priv, phy, VLV_PLL_DW3(ch)); 532 - vlv_dpio_put(dev_priv); 529 + vlv_dpio_get(display->drm); 530 + tmp = vlv_dpio_read(display->drm, phy, VLV_PLL_DW3(ch)); 531 + vlv_dpio_put(display->drm); 533 532 534 533 clock.m1 = REG_FIELD_GET(DPIO_M1_DIV_MASK, tmp); 535 534 clock.m2 = REG_FIELD_GET(DPIO_M2_DIV_MASK, tmp); ··· 542 541 543 542 void chv_crtc_clock_get(struct intel_crtc_state *crtc_state) 544 543 { 544 + struct intel_display *display = to_intel_display(crtc_state); 545 545 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 546 - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 547 546 enum dpio_channel ch = vlv_pipe_to_channel(crtc->pipe); 548 547 enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe); 549 548 const struct i9xx_dpll_hw_state *hw_state = &crtc_state->dpll_hw_state.i9xx; ··· 555 554 if ((hw_state->dpll & DPLL_VCO_ENABLE) == 0) 556 555 return; 557 556 558 - vlv_dpio_get(dev_priv); 559 - cmn_dw13 = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW13(ch)); 560 - pll_dw0 = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW0(ch)); 561 - pll_dw1 = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW1(ch)); 562 - pll_dw2 = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW2(ch)); 563 - pll_dw3 = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW3(ch)); 564 - vlv_dpio_put(dev_priv); 557 + vlv_dpio_get(display->drm); 558 + cmn_dw13 = vlv_dpio_read(display->drm, phy, CHV_CMN_DW13(ch)); 559 + pll_dw0 = vlv_dpio_read(display->drm, phy, CHV_PLL_DW0(ch)); 560 + pll_dw1 = vlv_dpio_read(display->drm, phy, CHV_PLL_DW1(ch)); 561 + pll_dw2 = vlv_dpio_read(display->drm, phy, CHV_PLL_DW2(ch)); 562 + pll_dw3 = vlv_dpio_read(display->drm, phy, CHV_PLL_DW3(ch)); 563 + vlv_dpio_put(display->drm); 565 564 566 565 clock.m1 = REG_FIELD_GET(DPIO_CHV_M1_DIV_MASK, pll_dw1) == DPIO_CHV_M1_DIV_BY_2 ? 2 : 0; 567 566 clock.m2 = REG_FIELD_GET(DPIO_CHV_M2_DIV_MASK, pll_dw0) << 22; ··· 1872 1871 static void vlv_pllb_recal_opamp(struct intel_display *display, 1873 1872 enum dpio_phy phy, enum dpio_channel ch) 1874 1873 { 1875 - struct drm_i915_private *dev_priv = to_i915(display->drm); 1876 1874 u32 tmp; 1877 1875 1878 1876 /* 1879 1877 * PLLB opamp always calibrates to max value of 0x3f, force enable it 1880 1878 * and set it to a reasonable value instead. 1881 1879 */ 1882 - tmp = vlv_dpio_read(dev_priv, phy, VLV_PLL_DW17(ch)); 1880 + tmp = vlv_dpio_read(display->drm, phy, VLV_PLL_DW17(ch)); 1883 1881 tmp &= 0xffffff00; 1884 1882 tmp |= 0x00000030; 1885 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW17(ch), tmp); 1883 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW17(ch), tmp); 1886 1884 1887 - tmp = vlv_dpio_read(dev_priv, phy, VLV_REF_DW11); 1885 + tmp = vlv_dpio_read(display->drm, phy, VLV_REF_DW11); 1888 1886 tmp &= 0x00ffffff; 1889 1887 tmp |= 0x8c000000; 1890 - vlv_dpio_write(dev_priv, phy, VLV_REF_DW11, tmp); 1888 + vlv_dpio_write(display->drm, phy, VLV_REF_DW11, tmp); 1891 1889 1892 - tmp = vlv_dpio_read(dev_priv, phy, VLV_PLL_DW17(ch)); 1890 + tmp = vlv_dpio_read(display->drm, phy, VLV_PLL_DW17(ch)); 1893 1891 tmp &= 0xffffff00; 1894 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW17(ch), tmp); 1892 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW17(ch), tmp); 1895 1893 1896 - tmp = vlv_dpio_read(dev_priv, phy, VLV_REF_DW11); 1894 + tmp = vlv_dpio_read(display->drm, phy, VLV_REF_DW11); 1897 1895 tmp &= 0x00ffffff; 1898 1896 tmp |= 0xb0000000; 1899 - vlv_dpio_write(dev_priv, phy, VLV_REF_DW11, tmp); 1897 + vlv_dpio_write(display->drm, phy, VLV_REF_DW11, tmp); 1900 1898 } 1901 1899 1902 1900 static void vlv_prepare_pll(const struct intel_crtc_state *crtc_state) 1903 1901 { 1904 1902 struct intel_display *display = to_intel_display(crtc_state); 1905 1903 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 1906 - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 1907 1904 const struct dpll *clock = &crtc_state->dpll; 1908 1905 enum dpio_channel ch = vlv_pipe_to_channel(crtc->pipe); 1909 1906 enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe); 1910 1907 enum pipe pipe = crtc->pipe; 1911 1908 u32 tmp, coreclk; 1912 1909 1913 - vlv_dpio_get(dev_priv); 1910 + vlv_dpio_get(display->drm); 1914 1911 1915 1912 /* See eDP HDMI DPIO driver vbios notes doc */ 1916 1913 ··· 1917 1918 vlv_pllb_recal_opamp(display, phy, ch); 1918 1919 1919 1920 /* Set up Tx target for periodic Rcomp update */ 1920 - vlv_dpio_write(dev_priv, phy, VLV_PCS_DW17_BCAST, 0x0100000f); 1921 + vlv_dpio_write(display->drm, phy, VLV_PCS_DW17_BCAST, 0x0100000f); 1921 1922 1922 1923 /* Disable target IRef on PLL */ 1923 - tmp = vlv_dpio_read(dev_priv, phy, VLV_PLL_DW16(ch)); 1924 + tmp = vlv_dpio_read(display->drm, phy, VLV_PLL_DW16(ch)); 1924 1925 tmp &= 0x00ffffff; 1925 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW16(ch), tmp); 1926 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW16(ch), tmp); 1926 1927 1927 1928 /* Disable fast lock */ 1928 - vlv_dpio_write(dev_priv, phy, VLV_CMN_DW0, 0x610); 1929 + vlv_dpio_write(display->drm, phy, VLV_CMN_DW0, 0x610); 1929 1930 1930 1931 /* Set idtafcrecal before PLL is enabled */ 1931 1932 tmp = DPIO_M1_DIV(clock->m1) | ··· 1941 1942 * Note: don't use the DAC post divider as it seems unstable. 1942 1943 */ 1943 1944 tmp |= DPIO_S1_DIV(DPIO_S1_DIV_HDMIDP); 1944 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW3(ch), tmp); 1945 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW3(ch), tmp); 1945 1946 1946 1947 tmp |= DPIO_ENABLE_CALIBRATION; 1947 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW3(ch), tmp); 1948 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW3(ch), tmp); 1948 1949 1949 1950 /* Set HBR and RBR LPF coefficients */ 1950 1951 if (crtc_state->port_clock == 162000 || 1951 1952 intel_crtc_has_type(crtc_state, INTEL_OUTPUT_ANALOG) || 1952 1953 intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) 1953 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW18(ch), 1954 - 0x009f0003); 1954 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW18(ch), 0x009f0003); 1955 1955 else 1956 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW18(ch), 1957 - 0x00d0000f); 1956 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW18(ch), 0x00d0000f); 1958 1957 1959 1958 if (intel_crtc_has_dp_encoder(crtc_state)) { 1960 1959 /* Use SSC source */ 1961 1960 if (pipe == PIPE_A) 1962 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW5(ch), 1963 - 0x0df40000); 1961 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW5(ch), 0x0df40000); 1964 1962 else 1965 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW5(ch), 1966 - 0x0df70000); 1963 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW5(ch), 0x0df70000); 1967 1964 } else { /* HDMI or VGA */ 1968 1965 /* Use bend source */ 1969 1966 if (pipe == PIPE_A) 1970 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW5(ch), 1971 - 0x0df70000); 1967 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW5(ch), 0x0df70000); 1972 1968 else 1973 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW5(ch), 1974 - 0x0df40000); 1969 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW5(ch), 0x0df40000); 1975 1970 } 1976 1971 1977 - coreclk = vlv_dpio_read(dev_priv, phy, VLV_PLL_DW7(ch)); 1972 + coreclk = vlv_dpio_read(display->drm, phy, VLV_PLL_DW7(ch)); 1978 1973 coreclk = (coreclk & 0x0000ff00) | 0x01c00000; 1979 1974 if (intel_crtc_has_dp_encoder(crtc_state)) 1980 1975 coreclk |= 0x01000000; 1981 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW7(ch), coreclk); 1976 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW7(ch), coreclk); 1982 1977 1983 - vlv_dpio_write(dev_priv, phy, VLV_PLL_DW19(ch), 0x87871000); 1978 + vlv_dpio_write(display->drm, phy, VLV_PLL_DW19(ch), 0x87871000); 1984 1979 1985 - vlv_dpio_put(dev_priv); 1980 + vlv_dpio_put(display->drm); 1986 1981 } 1987 1982 1988 1983 static void _vlv_enable_pll(const struct intel_crtc_state *crtc_state) ··· 2021 2028 2022 2029 static void chv_prepare_pll(const struct intel_crtc_state *crtc_state) 2023 2030 { 2031 + struct intel_display *display = to_intel_display(crtc_state); 2024 2032 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 2025 - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 2026 2033 const struct dpll *clock = &crtc_state->dpll; 2027 2034 enum dpio_channel ch = vlv_pipe_to_channel(crtc->pipe); 2028 2035 enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe); ··· 2031 2038 2032 2039 m2_frac = clock->m2 & 0x3fffff; 2033 2040 2034 - vlv_dpio_get(dev_priv); 2041 + vlv_dpio_get(display->drm); 2035 2042 2036 2043 /* p1 and p2 divider */ 2037 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW13(ch), 2044 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW13(ch), 2038 2045 DPIO_CHV_S1_DIV(5) | 2039 2046 DPIO_CHV_P1_DIV(clock->p1) | 2040 2047 DPIO_CHV_P2_DIV(clock->p2) | 2041 2048 DPIO_CHV_K_DIV(1)); 2042 2049 2043 2050 /* Feedback post-divider - m2 */ 2044 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW0(ch), 2051 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW0(ch), 2045 2052 DPIO_CHV_M2_DIV(clock->m2 >> 22)); 2046 2053 2047 2054 /* Feedback refclk divider - n and m1 */ 2048 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW1(ch), 2055 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW1(ch), 2049 2056 DPIO_CHV_M1_DIV(DPIO_CHV_M1_DIV_BY_2) | 2050 2057 DPIO_CHV_N_DIV(1)); 2051 2058 2052 2059 /* M2 fraction division */ 2053 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW2(ch), 2060 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW2(ch), 2054 2061 DPIO_CHV_M2_FRAC_DIV(m2_frac)); 2055 2062 2056 2063 /* M2 fraction division enable */ 2057 - tmp = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW3(ch)); 2064 + tmp = vlv_dpio_read(display->drm, phy, CHV_PLL_DW3(ch)); 2058 2065 tmp &= ~(DPIO_CHV_FEEDFWD_GAIN_MASK | DPIO_CHV_FRAC_DIV_EN); 2059 2066 tmp |= DPIO_CHV_FEEDFWD_GAIN(2); 2060 2067 if (m2_frac) 2061 2068 tmp |= DPIO_CHV_FRAC_DIV_EN; 2062 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW3(ch), tmp); 2069 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW3(ch), tmp); 2063 2070 2064 2071 /* Program digital lock detect threshold */ 2065 - tmp = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW9(ch)); 2072 + tmp = vlv_dpio_read(display->drm, phy, CHV_PLL_DW9(ch)); 2066 2073 tmp &= ~(DPIO_CHV_INT_LOCK_THRESHOLD_MASK | 2067 2074 DPIO_CHV_INT_LOCK_THRESHOLD_SEL_COARSE); 2068 2075 tmp |= DPIO_CHV_INT_LOCK_THRESHOLD(0x5); 2069 2076 if (!m2_frac) 2070 2077 tmp |= DPIO_CHV_INT_LOCK_THRESHOLD_SEL_COARSE; 2071 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW9(ch), tmp); 2078 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW9(ch), tmp); 2072 2079 2073 2080 /* Loop filter */ 2074 2081 if (clock->vco == 5400000) { ··· 2093 2100 DPIO_CHV_GAIN_CTRL(0x3); 2094 2101 tribuf_calcntr = 0; 2095 2102 } 2096 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW6(ch), loopfilter); 2103 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW6(ch), loopfilter); 2097 2104 2098 - tmp = vlv_dpio_read(dev_priv, phy, CHV_PLL_DW8(ch)); 2105 + tmp = vlv_dpio_read(display->drm, phy, CHV_PLL_DW8(ch)); 2099 2106 tmp &= ~DPIO_CHV_TDC_TARGET_CNT_MASK; 2100 2107 tmp |= DPIO_CHV_TDC_TARGET_CNT(tribuf_calcntr); 2101 - vlv_dpio_write(dev_priv, phy, CHV_PLL_DW8(ch), tmp); 2108 + vlv_dpio_write(display->drm, phy, CHV_PLL_DW8(ch), tmp); 2102 2109 2103 2110 /* AFC Recal */ 2104 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW14(ch), 2105 - vlv_dpio_read(dev_priv, phy, CHV_CMN_DW14(ch)) | 2111 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW14(ch), 2112 + vlv_dpio_read(display->drm, phy, CHV_CMN_DW14(ch)) | 2106 2113 DPIO_AFC_RECAL); 2107 2114 2108 - vlv_dpio_put(dev_priv); 2115 + vlv_dpio_put(display->drm); 2109 2116 } 2110 2117 2111 2118 static void _chv_enable_pll(const struct intel_crtc_state *crtc_state) 2112 2119 { 2113 2120 struct intel_display *display = to_intel_display(crtc_state); 2114 2121 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 2115 - struct drm_i915_private *dev_priv = to_i915(crtc->base.dev); 2116 2122 const struct i9xx_dpll_hw_state *hw_state = &crtc_state->dpll_hw_state.i9xx; 2117 2123 enum dpio_channel ch = vlv_pipe_to_channel(crtc->pipe); 2118 2124 enum dpio_phy phy = vlv_pipe_to_phy(crtc->pipe); 2119 2125 enum pipe pipe = crtc->pipe; 2120 2126 u32 tmp; 2121 2127 2122 - vlv_dpio_get(dev_priv); 2128 + vlv_dpio_get(display->drm); 2123 2129 2124 2130 /* Enable back the 10bit clock to display controller */ 2125 - tmp = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW14(ch)); 2131 + tmp = vlv_dpio_read(display->drm, phy, CHV_CMN_DW14(ch)); 2126 2132 tmp |= DPIO_DCLKP_EN; 2127 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW14(ch), tmp); 2133 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW14(ch), tmp); 2128 2134 2129 - vlv_dpio_put(dev_priv); 2135 + vlv_dpio_put(display->drm); 2130 2136 2131 2137 /* 2132 2138 * Need to wait > 100ns between dclkp clock enable bit and PLL enable. ··· 2244 2252 2245 2253 void chv_disable_pll(struct intel_display *display, enum pipe pipe) 2246 2254 { 2247 - struct drm_i915_private *dev_priv = to_i915(display->drm); 2248 2255 enum dpio_channel ch = vlv_pipe_to_channel(pipe); 2249 2256 enum dpio_phy phy = vlv_pipe_to_phy(pipe); 2250 2257 u32 val; ··· 2259 2268 intel_de_write(display, DPLL(display, pipe), val); 2260 2269 intel_de_posting_read(display, DPLL(display, pipe)); 2261 2270 2262 - vlv_dpio_get(dev_priv); 2271 + vlv_dpio_get(display->drm); 2263 2272 2264 2273 /* Disable 10bit clock to display controller */ 2265 - val = vlv_dpio_read(dev_priv, phy, CHV_CMN_DW14(ch)); 2274 + val = vlv_dpio_read(display->drm, phy, CHV_CMN_DW14(ch)); 2266 2275 val &= ~DPIO_DCLKP_EN; 2267 - vlv_dpio_write(dev_priv, phy, CHV_CMN_DW14(ch), val); 2276 + vlv_dpio_write(display->drm, phy, CHV_CMN_DW14(ch), val); 2268 2277 2269 - vlv_dpio_put(dev_priv); 2278 + vlv_dpio_put(display->drm); 2270 2279 } 2271 2280 2272 2281 void i9xx_disable_pll(const struct intel_crtc_state *crtc_state)
+12 -14
drivers/gpu/drm/i915/display/vlv_dsi.c
··· 30 30 #include <drm/drm_crtc.h> 31 31 #include <drm/drm_edid.h> 32 32 #include <drm/drm_mipi_dsi.h> 33 + #include <drm/drm_print.h> 33 34 #include <drm/drm_probe_helper.h> 34 35 35 - #include "i915_drv.h" 36 36 #include "i915_reg.h" 37 + #include "i915_utils.h" 37 38 #include "intel_atomic.h" 38 39 #include "intel_backlight.h" 39 40 #include "intel_connector.h" ··· 254 253 255 254 static void band_gap_reset(struct intel_display *display) 256 255 { 257 - struct drm_i915_private *dev_priv = to_i915(display->drm); 256 + vlv_flisdsi_get(display->drm); 258 257 259 - vlv_flisdsi_get(dev_priv); 260 - 261 - vlv_flisdsi_write(dev_priv, 0x08, 0x0001); 262 - vlv_flisdsi_write(dev_priv, 0x0F, 0x0005); 263 - vlv_flisdsi_write(dev_priv, 0x0F, 0x0025); 258 + vlv_flisdsi_write(display->drm, 0x08, 0x0001); 259 + vlv_flisdsi_write(display->drm, 0x0F, 0x0005); 260 + vlv_flisdsi_write(display->drm, 0x0F, 0x0025); 264 261 udelay(150); 265 - vlv_flisdsi_write(dev_priv, 0x0F, 0x0000); 266 - vlv_flisdsi_write(dev_priv, 0x08, 0x0000); 262 + vlv_flisdsi_write(display->drm, 0x0F, 0x0000); 263 + vlv_flisdsi_write(display->drm, 0x08, 0x0000); 267 264 268 - vlv_flisdsi_put(dev_priv); 265 + vlv_flisdsi_put(display->drm); 269 266 } 270 267 271 268 static int intel_dsi_compute_config(struct intel_encoder *encoder, ··· 456 457 static void vlv_dsi_device_ready(struct intel_encoder *encoder) 457 458 { 458 459 struct intel_display *display = to_intel_display(encoder); 459 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 460 460 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); 461 461 enum port port; 462 462 463 463 drm_dbg_kms(display->drm, "\n"); 464 464 465 - vlv_flisdsi_get(dev_priv); 465 + vlv_flisdsi_get(display->drm); 466 466 /* program rcomp for compliance, reduce from 50 ohms to 45 ohms 467 467 * needed everytime after power gate */ 468 - vlv_flisdsi_write(dev_priv, 0x04, 0x0004); 469 - vlv_flisdsi_put(dev_priv); 468 + vlv_flisdsi_write(display->drm, 0x04, 0x0004); 469 + vlv_flisdsi_put(display->drm); 470 470 471 471 /* bandgap reset is needed after everytime we do power gate */ 472 472 band_gap_reset(display);
+22 -24
drivers/gpu/drm/i915/display/vlv_dsi_pll.c
··· 28 28 #include <linux/kernel.h> 29 29 #include <linux/string_helpers.h> 30 30 31 - #include "i915_drv.h" 31 + #include <drm/drm_print.h> 32 + 33 + #include "i915_utils.h" 32 34 #include "intel_de.h" 33 35 #include "intel_display_types.h" 34 36 #include "intel_dsi.h" ··· 216 214 const struct intel_crtc_state *config) 217 215 { 218 216 struct intel_display *display = to_intel_display(encoder); 219 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 220 217 221 218 drm_dbg_kms(display->drm, "\n"); 222 219 223 - vlv_cck_get(dev_priv); 220 + vlv_cck_get(display->drm); 224 221 225 - vlv_cck_write(dev_priv, CCK_REG_DSI_PLL_CONTROL, 0); 226 - vlv_cck_write(dev_priv, CCK_REG_DSI_PLL_DIVIDER, config->dsi_pll.div); 227 - vlv_cck_write(dev_priv, CCK_REG_DSI_PLL_CONTROL, 222 + vlv_cck_write(display->drm, CCK_REG_DSI_PLL_CONTROL, 0); 223 + vlv_cck_write(display->drm, CCK_REG_DSI_PLL_DIVIDER, config->dsi_pll.div); 224 + vlv_cck_write(display->drm, CCK_REG_DSI_PLL_CONTROL, 228 225 config->dsi_pll.ctrl & ~DSI_PLL_VCO_EN); 229 226 230 227 /* wait at least 0.5 us after ungating before enabling VCO, ··· 231 230 */ 232 231 usleep_range(10, 50); 233 232 234 - vlv_cck_write(dev_priv, CCK_REG_DSI_PLL_CONTROL, config->dsi_pll.ctrl); 233 + vlv_cck_write(display->drm, CCK_REG_DSI_PLL_CONTROL, config->dsi_pll.ctrl); 235 234 236 - if (wait_for(vlv_cck_read(dev_priv, CCK_REG_DSI_PLL_CONTROL) & 235 + if (wait_for(vlv_cck_read(display->drm, CCK_REG_DSI_PLL_CONTROL) & 237 236 DSI_PLL_LOCK, 20)) { 238 237 239 - vlv_cck_put(dev_priv); 238 + vlv_cck_put(display->drm); 240 239 drm_err(display->drm, "DSI PLL lock failed\n"); 241 240 return; 242 241 } 243 - vlv_cck_put(dev_priv); 242 + vlv_cck_put(display->drm); 244 243 245 244 drm_dbg_kms(display->drm, "DSI PLL locked\n"); 246 245 } ··· 248 247 void vlv_dsi_pll_disable(struct intel_encoder *encoder) 249 248 { 250 249 struct intel_display *display = to_intel_display(encoder); 251 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 252 250 u32 tmp; 253 251 254 252 drm_dbg_kms(display->drm, "\n"); 255 253 256 - vlv_cck_get(dev_priv); 254 + vlv_cck_get(display->drm); 257 255 258 - tmp = vlv_cck_read(dev_priv, CCK_REG_DSI_PLL_CONTROL); 256 + tmp = vlv_cck_read(display->drm, CCK_REG_DSI_PLL_CONTROL); 259 257 tmp &= ~DSI_PLL_VCO_EN; 260 258 tmp |= DSI_PLL_LDO_GATE; 261 - vlv_cck_write(dev_priv, CCK_REG_DSI_PLL_CONTROL, tmp); 259 + vlv_cck_write(display->drm, CCK_REG_DSI_PLL_CONTROL, tmp); 262 260 263 - vlv_cck_put(dev_priv); 261 + vlv_cck_put(display->drm); 264 262 } 265 263 266 264 bool bxt_dsi_pll_is_enabled(struct intel_display *display) ··· 323 323 struct intel_crtc_state *config) 324 324 { 325 325 struct intel_display *display = to_intel_display(encoder); 326 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 327 326 u32 pll_ctl, pll_div; 328 327 329 328 drm_dbg_kms(display->drm, "\n"); 330 329 331 - vlv_cck_get(dev_priv); 332 - pll_ctl = vlv_cck_read(dev_priv, CCK_REG_DSI_PLL_CONTROL); 333 - pll_div = vlv_cck_read(dev_priv, CCK_REG_DSI_PLL_DIVIDER); 334 - vlv_cck_put(dev_priv); 330 + vlv_cck_get(display->drm); 331 + pll_ctl = vlv_cck_read(display->drm, CCK_REG_DSI_PLL_CONTROL); 332 + pll_div = vlv_cck_read(display->drm, CCK_REG_DSI_PLL_DIVIDER); 333 + vlv_cck_put(display->drm); 335 334 336 335 config->dsi_pll.ctrl = pll_ctl & ~DSI_PLL_LOCK; 337 336 config->dsi_pll.div = pll_div; ··· 591 592 592 593 static void assert_dsi_pll(struct intel_display *display, bool state) 593 594 { 594 - struct drm_i915_private *i915 = to_i915(display->drm); 595 595 bool cur_state; 596 596 597 - vlv_cck_get(i915); 598 - cur_state = vlv_cck_read(i915, CCK_REG_DSI_PLL_CONTROL) & DSI_PLL_VCO_EN; 599 - vlv_cck_put(i915); 597 + vlv_cck_get(display->drm); 598 + cur_state = vlv_cck_read(display->drm, CCK_REG_DSI_PLL_CONTROL) & DSI_PLL_VCO_EN; 599 + vlv_cck_put(display->drm); 600 600 601 601 INTEL_DISPLAY_STATE_WARN(display, cur_state != state, 602 602 "DSI PLL state assertion failure (expected %s, current %s)\n",
+15 -10
drivers/gpu/drm/i915/display/vlv_sideband.c
··· 1 1 // SPDX-License-Identifier: MIT 2 2 /* Copyright © 2025 Intel Corporation */ 3 3 4 - #include "i915_drv.h" 4 + #include <drm/drm_print.h> 5 + 6 + #include "intel_display_core.h" 7 + #include "intel_display_types.h" 5 8 #include "intel_dpio_phy.h" 6 9 #include "vlv_sideband.h" 7 10 8 - static enum vlv_iosf_sb_unit vlv_dpio_phy_to_unit(struct drm_i915_private *i915, 11 + static enum vlv_iosf_sb_unit vlv_dpio_phy_to_unit(struct intel_display *display, 9 12 enum dpio_phy phy) 10 13 { 11 14 /* 12 15 * IOSF_PORT_DPIO: VLV x2 PHY (DP/HDMI B and C), CHV x1 PHY (DP/HDMI D) 13 16 * IOSF_PORT_DPIO_2: CHV x2 PHY (DP/HDMI B and C) 14 17 */ 15 - if (IS_CHERRYVIEW(i915)) 18 + if (display->platform.cherryview) 16 19 return phy == DPIO_PHY0 ? VLV_IOSF_SB_DPIO_2 : VLV_IOSF_SB_DPIO; 17 20 else 18 21 return VLV_IOSF_SB_DPIO; 19 22 } 20 23 21 - u32 vlv_dpio_read(struct drm_i915_private *i915, enum dpio_phy phy, int reg) 24 + u32 vlv_dpio_read(struct drm_device *drm, enum dpio_phy phy, int reg) 22 25 { 23 - enum vlv_iosf_sb_unit unit = vlv_dpio_phy_to_unit(i915, phy); 26 + struct intel_display *display = to_intel_display(drm); 27 + enum vlv_iosf_sb_unit unit = vlv_dpio_phy_to_unit(display, phy); 24 28 u32 val; 25 29 26 - val = vlv_iosf_sb_read(i915, unit, reg); 30 + val = vlv_iosf_sb_read(drm, unit, reg); 27 31 28 32 /* 29 33 * FIXME: There might be some registers where all 1's is a valid value, 30 34 * so ideally we should check the register offset instead... 31 35 */ 32 - drm_WARN(&i915->drm, val == 0xffffffff, 36 + drm_WARN(display->drm, val == 0xffffffff, 33 37 "DPIO PHY%d read reg 0x%x == 0x%x\n", 34 38 phy, reg, val); 35 39 36 40 return val; 37 41 } 38 42 39 - void vlv_dpio_write(struct drm_i915_private *i915, 43 + void vlv_dpio_write(struct drm_device *drm, 40 44 enum dpio_phy phy, int reg, u32 val) 41 45 { 42 - enum vlv_iosf_sb_unit unit = vlv_dpio_phy_to_unit(i915, phy); 46 + struct intel_display *display = to_intel_display(drm); 47 + enum vlv_iosf_sb_unit unit = vlv_dpio_phy_to_unit(display, phy); 43 48 44 - vlv_iosf_sb_write(i915, unit, reg, val); 49 + vlv_iosf_sb_write(drm, unit, reg, val); 45 50 }
+55 -55
drivers/gpu/drm/i915/display/vlv_sideband.h
··· 11 11 #include "vlv_iosf_sb_reg.h" 12 12 13 13 enum dpio_phy; 14 - struct drm_i915_private; 14 + struct drm_device; 15 15 16 - static inline void vlv_bunit_get(struct drm_i915_private *i915) 16 + static inline void vlv_bunit_get(struct drm_device *drm) 17 17 { 18 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_BUNIT)); 18 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_BUNIT)); 19 19 } 20 20 21 - static inline u32 vlv_bunit_read(struct drm_i915_private *i915, u32 reg) 21 + static inline u32 vlv_bunit_read(struct drm_device *drm, u32 reg) 22 22 { 23 - return vlv_iosf_sb_read(i915, VLV_IOSF_SB_BUNIT, reg); 23 + return vlv_iosf_sb_read(drm, VLV_IOSF_SB_BUNIT, reg); 24 24 } 25 25 26 - static inline void vlv_bunit_write(struct drm_i915_private *i915, u32 reg, u32 val) 26 + static inline void vlv_bunit_write(struct drm_device *drm, u32 reg, u32 val) 27 27 { 28 - vlv_iosf_sb_write(i915, VLV_IOSF_SB_BUNIT, reg, val); 28 + vlv_iosf_sb_write(drm, VLV_IOSF_SB_BUNIT, reg, val); 29 29 } 30 30 31 - static inline void vlv_bunit_put(struct drm_i915_private *i915) 31 + static inline void vlv_bunit_put(struct drm_device *drm) 32 32 { 33 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_BUNIT)); 33 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_BUNIT)); 34 34 } 35 35 36 - static inline void vlv_cck_get(struct drm_i915_private *i915) 36 + static inline void vlv_cck_get(struct drm_device *drm) 37 37 { 38 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCK)); 38 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_CCK)); 39 39 } 40 40 41 - static inline u32 vlv_cck_read(struct drm_i915_private *i915, u32 reg) 41 + static inline u32 vlv_cck_read(struct drm_device *drm, u32 reg) 42 42 { 43 - return vlv_iosf_sb_read(i915, VLV_IOSF_SB_CCK, reg); 43 + return vlv_iosf_sb_read(drm, VLV_IOSF_SB_CCK, reg); 44 44 } 45 45 46 - static inline void vlv_cck_write(struct drm_i915_private *i915, u32 reg, u32 val) 46 + static inline void vlv_cck_write(struct drm_device *drm, u32 reg, u32 val) 47 47 { 48 - vlv_iosf_sb_write(i915, VLV_IOSF_SB_CCK, reg, val); 48 + vlv_iosf_sb_write(drm, VLV_IOSF_SB_CCK, reg, val); 49 49 } 50 50 51 - static inline void vlv_cck_put(struct drm_i915_private *i915) 51 + static inline void vlv_cck_put(struct drm_device *drm) 52 52 { 53 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCK)); 53 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_CCK)); 54 54 } 55 55 56 - static inline void vlv_ccu_get(struct drm_i915_private *i915) 56 + static inline void vlv_ccu_get(struct drm_device *drm) 57 57 { 58 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCU)); 58 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_CCU)); 59 59 } 60 60 61 - static inline u32 vlv_ccu_read(struct drm_i915_private *i915, u32 reg) 61 + static inline u32 vlv_ccu_read(struct drm_device *drm, u32 reg) 62 62 { 63 - return vlv_iosf_sb_read(i915, VLV_IOSF_SB_CCU, reg); 63 + return vlv_iosf_sb_read(drm, VLV_IOSF_SB_CCU, reg); 64 64 } 65 65 66 - static inline void vlv_ccu_write(struct drm_i915_private *i915, u32 reg, u32 val) 66 + static inline void vlv_ccu_write(struct drm_device *drm, u32 reg, u32 val) 67 67 { 68 - vlv_iosf_sb_write(i915, VLV_IOSF_SB_CCU, reg, val); 68 + vlv_iosf_sb_write(drm, VLV_IOSF_SB_CCU, reg, val); 69 69 } 70 70 71 - static inline void vlv_ccu_put(struct drm_i915_private *i915) 71 + static inline void vlv_ccu_put(struct drm_device *drm) 72 72 { 73 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCU)); 73 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_CCU)); 74 74 } 75 75 76 - static inline void vlv_dpio_get(struct drm_i915_private *i915) 76 + static inline void vlv_dpio_get(struct drm_device *drm) 77 77 { 78 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_DPIO) | BIT(VLV_IOSF_SB_DPIO_2)); 78 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_DPIO) | BIT(VLV_IOSF_SB_DPIO_2)); 79 79 } 80 80 81 81 #ifdef I915 82 - u32 vlv_dpio_read(struct drm_i915_private *i915, enum dpio_phy phy, int reg); 83 - void vlv_dpio_write(struct drm_i915_private *i915, 82 + u32 vlv_dpio_read(struct drm_device *drm, enum dpio_phy phy, int reg); 83 + void vlv_dpio_write(struct drm_device *drm, 84 84 enum dpio_phy phy, int reg, u32 val); 85 85 #else 86 - static inline u32 vlv_dpio_read(struct drm_i915_private *i915, int phy, int reg) 86 + static inline u32 vlv_dpio_read(struct drm_device *drm, int phy, int reg) 87 87 { 88 88 return 0; 89 89 } 90 - static inline void vlv_dpio_write(struct drm_i915_private *i915, 90 + static inline void vlv_dpio_write(struct drm_device *drm, 91 91 int phy, int reg, u32 val) 92 92 { 93 93 } 94 94 #endif 95 95 96 - static inline void vlv_dpio_put(struct drm_i915_private *i915) 96 + static inline void vlv_dpio_put(struct drm_device *drm) 97 97 { 98 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_DPIO) | BIT(VLV_IOSF_SB_DPIO_2)); 98 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_DPIO) | BIT(VLV_IOSF_SB_DPIO_2)); 99 99 } 100 100 101 - static inline void vlv_flisdsi_get(struct drm_i915_private *i915) 101 + static inline void vlv_flisdsi_get(struct drm_device *drm) 102 102 { 103 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_FLISDSI)); 103 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_FLISDSI)); 104 104 } 105 105 106 - static inline u32 vlv_flisdsi_read(struct drm_i915_private *i915, u32 reg) 106 + static inline u32 vlv_flisdsi_read(struct drm_device *drm, u32 reg) 107 107 { 108 - return vlv_iosf_sb_read(i915, VLV_IOSF_SB_FLISDSI, reg); 108 + return vlv_iosf_sb_read(drm, VLV_IOSF_SB_FLISDSI, reg); 109 109 } 110 110 111 - static inline void vlv_flisdsi_write(struct drm_i915_private *i915, u32 reg, u32 val) 111 + static inline void vlv_flisdsi_write(struct drm_device *drm, u32 reg, u32 val) 112 112 { 113 - vlv_iosf_sb_write(i915, VLV_IOSF_SB_FLISDSI, reg, val); 113 + vlv_iosf_sb_write(drm, VLV_IOSF_SB_FLISDSI, reg, val); 114 114 } 115 115 116 - static inline void vlv_flisdsi_put(struct drm_i915_private *i915) 116 + static inline void vlv_flisdsi_put(struct drm_device *drm) 117 117 { 118 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_FLISDSI)); 118 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_FLISDSI)); 119 119 } 120 120 121 - static inline void vlv_nc_get(struct drm_i915_private *i915) 121 + static inline void vlv_nc_get(struct drm_device *drm) 122 122 { 123 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_NC)); 123 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_NC)); 124 124 } 125 125 126 - static inline u32 vlv_nc_read(struct drm_i915_private *i915, u8 addr) 126 + static inline u32 vlv_nc_read(struct drm_device *drm, u8 addr) 127 127 { 128 - return vlv_iosf_sb_read(i915, VLV_IOSF_SB_NC, addr); 128 + return vlv_iosf_sb_read(drm, VLV_IOSF_SB_NC, addr); 129 129 } 130 130 131 - static inline void vlv_nc_put(struct drm_i915_private *i915) 131 + static inline void vlv_nc_put(struct drm_device *drm) 132 132 { 133 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_NC)); 133 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_NC)); 134 134 } 135 135 136 - static inline void vlv_punit_get(struct drm_i915_private *i915) 136 + static inline void vlv_punit_get(struct drm_device *drm) 137 137 { 138 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 138 + vlv_iosf_sb_get(drm, BIT(VLV_IOSF_SB_PUNIT)); 139 139 } 140 140 141 - static inline u32 vlv_punit_read(struct drm_i915_private *i915, u32 addr) 141 + static inline u32 vlv_punit_read(struct drm_device *drm, u32 addr) 142 142 { 143 - return vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, addr); 143 + return vlv_iosf_sb_read(drm, VLV_IOSF_SB_PUNIT, addr); 144 144 } 145 145 146 - static inline int vlv_punit_write(struct drm_i915_private *i915, u32 addr, u32 val) 146 + static inline int vlv_punit_write(struct drm_device *drm, u32 addr, u32 val) 147 147 { 148 - return vlv_iosf_sb_write(i915, VLV_IOSF_SB_PUNIT, addr, val); 148 + return vlv_iosf_sb_write(drm, VLV_IOSF_SB_PUNIT, addr, val); 149 149 } 150 150 151 - static inline void vlv_punit_put(struct drm_i915_private *i915) 151 + static inline void vlv_punit_put(struct drm_device *drm) 152 152 { 153 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 153 + vlv_iosf_sb_put(drm, BIT(VLV_IOSF_SB_PUNIT)); 154 154 } 155 155 156 156 #endif /* _VLV_SIDEBAND_H_ */
+3 -3
drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.c
··· 366 366 drm_printf(p, "SW control enabled: %s\n", 367 367 str_yes_no((rpmodectl & GEN6_RP_MEDIA_MODE_MASK) == GEN6_RP_MEDIA_SW_MODE)); 368 368 369 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 370 - freq_sts = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 371 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 369 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 370 + freq_sts = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 371 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 372 372 373 373 drm_printf(p, "PUNIT_REG_GPU_FREQ_STS: 0x%08x\n", freq_sts); 374 374
+28 -28
drivers/gpu/drm/i915/gt/intel_rps.c
··· 820 820 struct drm_i915_private *i915 = rps_to_i915(rps); 821 821 int err; 822 822 823 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 824 - err = vlv_iosf_sb_write(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_REQ, val); 825 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 823 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 824 + err = vlv_iosf_sb_write(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_REQ, val); 825 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 826 826 827 827 GT_TRACE(rps_to_gt(rps), "set val:%x, freq:%d\n", 828 828 val, intel_gpu_freq(rps, val)); ··· 1268 1268 struct intel_gt *gt = rps_to_gt(rps); 1269 1269 u32 val; 1270 1270 1271 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, FB_GFX_FMAX_AT_VMAX_FUSE); 1271 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, FB_GFX_FMAX_AT_VMAX_FUSE); 1272 1272 1273 1273 switch (gt->info.sseu.eu_total) { 1274 1274 case 8: ··· 1295 1295 struct drm_i915_private *i915 = rps_to_i915(rps); 1296 1296 u32 val; 1297 1297 1298 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_GPU_DUTYCYCLE_REG); 1298 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_GPU_DUTYCYCLE_REG); 1299 1299 val >>= PUNIT_GPU_DUTYCYCLE_RPE_FREQ_SHIFT; 1300 1300 1301 1301 return val & PUNIT_GPU_DUTYCYCLE_RPE_FREQ_MASK; ··· 1306 1306 struct drm_i915_private *i915 = rps_to_i915(rps); 1307 1307 u32 val; 1308 1308 1309 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, FB_GFX_FMAX_AT_VMAX_FUSE); 1309 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, FB_GFX_FMAX_AT_VMAX_FUSE); 1310 1310 1311 1311 return val & FB_GFX_FREQ_FUSE_MASK; 1312 1312 } ··· 1316 1316 struct drm_i915_private *i915 = rps_to_i915(rps); 1317 1317 u32 val; 1318 1318 1319 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, FB_GFX_FMIN_AT_VMIN_FUSE); 1319 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, FB_GFX_FMIN_AT_VMIN_FUSE); 1320 1320 val >>= FB_GFX_FMIN_AT_VMIN_FUSE_SHIFT; 1321 1321 1322 1322 return val & FB_GFX_FREQ_FUSE_MASK; ··· 1350 1350 GEN6_PM_RP_DOWN_TIMEOUT); 1351 1351 1352 1352 /* Setting Fixed Bias */ 1353 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 1353 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 1354 1354 1355 1355 val = VLV_OVERRIDE_EN | VLV_SOC_TDP_EN | CHV_BIAS_CPU_50_SOC_50; 1356 - vlv_iosf_sb_write(i915, VLV_IOSF_SB_PUNIT, VLV_TURBO_SOC_OVERRIDE, val); 1356 + vlv_iosf_sb_write(&i915->drm, VLV_IOSF_SB_PUNIT, VLV_TURBO_SOC_OVERRIDE, val); 1357 1357 1358 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 1358 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 1359 1359 1360 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 1360 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 1361 1361 1362 1362 /* RPS code assumes GPLL is used */ 1363 1363 drm_WARN_ONCE(&i915->drm, (val & GPLLENABLE) == 0, ··· 1375 1375 struct drm_i915_private *i915 = rps_to_i915(rps); 1376 1376 u32 val, rp1; 1377 1377 1378 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FREQ_FUSE); 1378 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FREQ_FUSE); 1379 1379 1380 1380 rp1 = val & FB_GFX_FGUARANTEED_FREQ_FUSE_MASK; 1381 1381 rp1 >>= FB_GFX_FGUARANTEED_FREQ_FUSE_SHIFT; ··· 1388 1388 struct drm_i915_private *i915 = rps_to_i915(rps); 1389 1389 u32 val, rp0; 1390 1390 1391 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FREQ_FUSE); 1391 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FREQ_FUSE); 1392 1392 1393 1393 rp0 = (val & FB_GFX_MAX_FREQ_FUSE_MASK) >> FB_GFX_MAX_FREQ_FUSE_SHIFT; 1394 1394 /* Clamp to max */ ··· 1402 1402 struct drm_i915_private *i915 = rps_to_i915(rps); 1403 1403 u32 val, rpe; 1404 1404 1405 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FMAX_FUSE_LO); 1405 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FMAX_FUSE_LO); 1406 1406 rpe = (val & FB_FMAX_VMIN_FREQ_LO_MASK) >> FB_FMAX_VMIN_FREQ_LO_SHIFT; 1407 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FMAX_FUSE_HI); 1407 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_NC, IOSF_NC_FB_GFX_FMAX_FUSE_HI); 1408 1408 rpe |= (val & FB_FMAX_VMIN_FREQ_HI_MASK) << 5; 1409 1409 1410 1410 return rpe; ··· 1415 1415 struct drm_i915_private *i915 = rps_to_i915(rps); 1416 1416 u32 val; 1417 1417 1418 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_LFM) & 0xff; 1418 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_LFM) & 0xff; 1419 1419 /* 1420 1420 * According to the BYT Punit GPU turbo HAS 1.1.6.3 the minimum value 1421 1421 * for the minimum frequency in GPLL mode is 0xc1. Contrary to this on ··· 1451 1451 /* WaGsvRC0ResidencyMethod:vlv */ 1452 1452 rps->pm_events = GEN6_PM_RP_UP_EI_EXPIRED; 1453 1453 1454 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 1454 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 1455 1455 1456 1456 /* Setting Fixed Bias */ 1457 1457 val = VLV_OVERRIDE_EN | VLV_SOC_TDP_EN | VLV_BIAS_CPU_125_SOC_875; 1458 - vlv_iosf_sb_write(i915, VLV_IOSF_SB_PUNIT, VLV_TURBO_SOC_OVERRIDE, val); 1458 + vlv_iosf_sb_write(&i915->drm, VLV_IOSF_SB_PUNIT, VLV_TURBO_SOC_OVERRIDE, val); 1459 1459 1460 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 1460 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 1461 1461 1462 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 1462 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 1463 1463 1464 1464 /* RPS code assumes GPLL is used */ 1465 1465 drm_WARN_ONCE(&i915->drm, (val & GPLLENABLE) == 0, ··· 1672 1672 struct drm_i915_private *i915 = rps_to_i915(rps); 1673 1673 1674 1674 rps->gpll_ref_freq = 1675 - vlv_get_cck_clock(i915, "GPLL ref", 1675 + vlv_get_cck_clock(&i915->drm, "GPLL ref", 1676 1676 CCK_GPLL_CLOCK_CONTROL, 1677 1677 i915->czclk_freq); 1678 1678 ··· 1684 1684 { 1685 1685 struct drm_i915_private *i915 = rps_to_i915(rps); 1686 1686 1687 - vlv_iosf_sb_get(i915, 1687 + vlv_iosf_sb_get(&i915->drm, 1688 1688 BIT(VLV_IOSF_SB_PUNIT) | 1689 1689 BIT(VLV_IOSF_SB_NC) | 1690 1690 BIT(VLV_IOSF_SB_CCK)); ··· 1708 1708 drm_dbg(&i915->drm, "min GPU freq: %d MHz (%u)\n", 1709 1709 intel_gpu_freq(rps, rps->min_freq), rps->min_freq); 1710 1710 1711 - vlv_iosf_sb_put(i915, 1711 + vlv_iosf_sb_put(&i915->drm, 1712 1712 BIT(VLV_IOSF_SB_PUNIT) | 1713 1713 BIT(VLV_IOSF_SB_NC) | 1714 1714 BIT(VLV_IOSF_SB_CCK)); ··· 1718 1718 { 1719 1719 struct drm_i915_private *i915 = rps_to_i915(rps); 1720 1720 1721 - vlv_iosf_sb_get(i915, 1721 + vlv_iosf_sb_get(&i915->drm, 1722 1722 BIT(VLV_IOSF_SB_PUNIT) | 1723 1723 BIT(VLV_IOSF_SB_NC) | 1724 1724 BIT(VLV_IOSF_SB_CCK)); ··· 1742 1742 drm_dbg(&i915->drm, "min GPU freq: %d MHz (%u)\n", 1743 1743 intel_gpu_freq(rps, rps->min_freq), rps->min_freq); 1744 1744 1745 - vlv_iosf_sb_put(i915, 1745 + vlv_iosf_sb_put(&i915->drm, 1746 1746 BIT(VLV_IOSF_SB_PUNIT) | 1747 1747 BIT(VLV_IOSF_SB_NC) | 1748 1748 BIT(VLV_IOSF_SB_CCK)); ··· 2107 2107 } else if (GRAPHICS_VER(i915) >= 12) { 2108 2108 r = GEN12_RPSTAT1; 2109 2109 } else if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) { 2110 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 2111 - freq = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 2112 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 2110 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 2111 + freq = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 2112 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 2113 2113 } else if (GRAPHICS_VER(i915) >= 6) { 2114 2114 r = GEN6_RPSTAT1; 2115 2115 } else {
+6 -6
drivers/gpu/drm/i915/soc/intel_dram.c
··· 97 97 { 98 98 u32 val; 99 99 100 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_CCK)); 101 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_CCK, CCK_FUSE_REG); 102 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_CCK)); 100 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_CCK)); 101 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_CCK, CCK_FUSE_REG); 102 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_CCK)); 103 103 104 104 switch ((val >> 2) & 0x7) { 105 105 case 3: ··· 113 113 { 114 114 u32 val; 115 115 116 - vlv_iosf_sb_get(i915, BIT(VLV_IOSF_SB_PUNIT)); 117 - val = vlv_iosf_sb_read(i915, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 118 - vlv_iosf_sb_put(i915, BIT(VLV_IOSF_SB_PUNIT)); 116 + vlv_iosf_sb_get(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 117 + val = vlv_iosf_sb_read(&i915->drm, VLV_IOSF_SB_PUNIT, PUNIT_REG_GPU_FREQ_STS); 118 + vlv_iosf_sb_put(&i915->drm, BIT(VLV_IOSF_SB_PUNIT)); 119 119 120 120 switch ((val >> 6) & 3) { 121 121 case 0:
+10 -4
drivers/gpu/drm/i915/vlv_iosf_sb.c
··· 57 57 iosf_mbi_punit_release(); 58 58 } 59 59 60 - void vlv_iosf_sb_get(struct drm_i915_private *i915, unsigned long ports) 60 + void vlv_iosf_sb_get(struct drm_device *drm, unsigned long ports) 61 61 { 62 + struct drm_i915_private *i915 = to_i915(drm); 63 + 62 64 if (ports & BIT(VLV_IOSF_SB_PUNIT)) 63 65 __vlv_punit_get(i915); 64 66 65 67 mutex_lock(&i915->vlv_iosf_sb.lock); 66 68 } 67 69 68 - void vlv_iosf_sb_put(struct drm_i915_private *i915, unsigned long ports) 70 + void vlv_iosf_sb_put(struct drm_device *drm, unsigned long ports) 69 71 { 72 + struct drm_i915_private *i915 = to_i915(drm); 73 + 70 74 mutex_unlock(&i915->vlv_iosf_sb.lock); 71 75 72 76 if (ports & BIT(VLV_IOSF_SB_PUNIT)) ··· 170 166 return write ? SB_CRWRDA_NP : SB_CRRDDA_NP; 171 167 } 172 168 173 - u32 vlv_iosf_sb_read(struct drm_i915_private *i915, enum vlv_iosf_sb_unit unit, u32 addr) 169 + u32 vlv_iosf_sb_read(struct drm_device *drm, enum vlv_iosf_sb_unit unit, u32 addr) 174 170 { 171 + struct drm_i915_private *i915 = to_i915(drm); 175 172 u32 devfn, port, opcode, val = 0; 176 173 177 174 devfn = unit_to_devfn(unit); ··· 187 182 return val; 188 183 } 189 184 190 - int vlv_iosf_sb_write(struct drm_i915_private *i915, enum vlv_iosf_sb_unit unit, u32 addr, u32 val) 185 + int vlv_iosf_sb_write(struct drm_device *drm, enum vlv_iosf_sb_unit unit, u32 addr, u32 val) 191 186 { 187 + struct drm_i915_private *i915 = to_i915(drm); 192 188 u32 devfn, port, opcode; 193 189 194 190 devfn = unit_to_devfn(unit);
+5 -4
drivers/gpu/drm/i915/vlv_iosf_sb.h
··· 10 10 11 11 #include "vlv_iosf_sb_reg.h" 12 12 13 + struct drm_device; 13 14 struct drm_i915_private; 14 15 15 16 enum vlv_iosf_sb_unit { ··· 28 27 void vlv_iosf_sb_init(struct drm_i915_private *i915); 29 28 void vlv_iosf_sb_fini(struct drm_i915_private *i915); 30 29 31 - void vlv_iosf_sb_get(struct drm_i915_private *i915, unsigned long ports); 32 - void vlv_iosf_sb_put(struct drm_i915_private *i915, unsigned long ports); 30 + void vlv_iosf_sb_get(struct drm_device *drm, unsigned long ports); 31 + void vlv_iosf_sb_put(struct drm_device *drm, unsigned long ports); 33 32 34 - u32 vlv_iosf_sb_read(struct drm_i915_private *i915, enum vlv_iosf_sb_unit unit, u32 addr); 35 - int vlv_iosf_sb_write(struct drm_i915_private *i915, enum vlv_iosf_sb_unit unit, u32 addr, u32 val); 33 + u32 vlv_iosf_sb_read(struct drm_device *drm, enum vlv_iosf_sb_unit unit, u32 addr); 34 + int vlv_iosf_sb_write(struct drm_device *drm, enum vlv_iosf_sb_unit unit, u32 addr, u32 val); 36 35 37 36 #endif /* _VLV_IOSF_SB_H_ */
+8 -8
drivers/gpu/drm/xe/compat-i915-headers/vlv_iosf_sb.h
··· 10 10 11 11 #include "vlv_iosf_sb_reg.h" 12 12 13 - struct drm_i915_private; 13 + struct drm_device; 14 14 15 15 enum vlv_iosf_sb_unit { 16 16 VLV_IOSF_SB_BUNIT, ··· 24 24 VLV_IOSF_SB_PUNIT, 25 25 }; 26 26 27 - static inline void vlv_iosf_sb_get(struct drm_i915_private *i915, unsigned long ports) 27 + static inline void vlv_iosf_sb_get(struct drm_device *drm, unsigned long ports) 28 28 { 29 29 } 30 - static inline u32 vlv_iosf_sb_read(struct drm_i915_private *i915, enum vlv_iosf_sb_unit unit, u32 addr) 31 - { 32 - return 0; 33 - } 34 - static inline int vlv_iosf_sb_write(struct drm_i915_private *i915, enum vlv_iosf_sb_unit unit, u32 addr, u32 val) 30 + static inline u32 vlv_iosf_sb_read(struct drm_device *drm, enum vlv_iosf_sb_unit unit, u32 addr) 35 31 { 36 32 return 0; 37 33 } 38 - static inline void vlv_iosf_sb_put(struct drm_i915_private *i915, unsigned long ports) 34 + static inline int vlv_iosf_sb_write(struct drm_device *drm, enum vlv_iosf_sb_unit unit, u32 addr, u32 val) 35 + { 36 + return 0; 37 + } 38 + static inline void vlv_iosf_sb_put(struct drm_device *drm, unsigned long ports) 39 39 { 40 40 } 41 41