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

drm/i915/ips: convert to struct intel_display

struct intel_display will replace struct drm_i915_private as the main
device pointer for display code. Switch HSW IPS code over to it.

Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/66060d0c3fbb20e5d2c98a92133f091de6b25230.1730146000.git.jani.nikula@intel.com

+26 -21
+26 -21
drivers/gpu/drm/i915/display/hsw_ips.c
··· 15 15 16 16 static void hsw_ips_enable(const struct intel_crtc_state *crtc_state) 17 17 { 18 + struct intel_display *display = to_intel_display(crtc_state); 18 19 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 19 20 struct drm_i915_private *i915 = to_i915(crtc->base.dev); 20 21 u32 val; ··· 28 27 * This function is called from post_plane_update, which is run after 29 28 * a vblank wait. 30 29 */ 31 - drm_WARN_ON(&i915->drm, 30 + drm_WARN_ON(display->drm, 32 31 !(crtc_state->active_planes & ~BIT(PLANE_CURSOR))); 33 32 34 33 val = IPS_ENABLE; 35 34 36 - if (i915->display.ips.false_color) 35 + if (display->ips.false_color) 37 36 val |= IPS_FALSE_COLOR; 38 37 39 38 if (IS_BROADWELL(i915)) { 40 - drm_WARN_ON(&i915->drm, 39 + drm_WARN_ON(display->drm, 41 40 snb_pcode_write(&i915->uncore, DISPLAY_IPS_CONTROL, 42 41 val | IPS_PCODE_CONTROL)); 43 42 /* ··· 47 46 * so we need to just enable it and continue on. 48 47 */ 49 48 } else { 50 - intel_de_write(i915, IPS_CTL, val); 49 + intel_de_write(display, IPS_CTL, val); 51 50 /* 52 51 * The bit only becomes 1 in the next vblank, so this wait here 53 52 * is essentially intel_wait_for_vblank. If we don't have this ··· 55 54 * the HW state readout code will complain that the expected 56 55 * IPS_CTL value is not the one we read. 57 56 */ 58 - if (intel_de_wait_for_set(i915, IPS_CTL, IPS_ENABLE, 50)) 59 - drm_err(&i915->drm, 57 + if (intel_de_wait_for_set(display, IPS_CTL, IPS_ENABLE, 50)) 58 + drm_err(display->drm, 60 59 "Timed out waiting for IPS enable\n"); 61 60 } 62 61 } 63 62 64 63 bool hsw_ips_disable(const struct intel_crtc_state *crtc_state) 65 64 { 65 + struct intel_display *display = to_intel_display(crtc_state); 66 66 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 67 67 struct drm_i915_private *i915 = to_i915(crtc->base.dev); 68 68 bool need_vblank_wait = false; ··· 72 70 return need_vblank_wait; 73 71 74 72 if (IS_BROADWELL(i915)) { 75 - drm_WARN_ON(&i915->drm, 73 + drm_WARN_ON(display->drm, 76 74 snb_pcode_write(&i915->uncore, DISPLAY_IPS_CONTROL, 0)); 77 75 /* 78 76 * Wait for PCODE to finish disabling IPS. The BSpec specified 79 77 * 42ms timeout value leads to occasional timeouts so use 100ms 80 78 * instead. 81 79 */ 82 - if (intel_de_wait_for_clear(i915, IPS_CTL, IPS_ENABLE, 100)) 83 - drm_err(&i915->drm, 80 + if (intel_de_wait_for_clear(display, IPS_CTL, IPS_ENABLE, 100)) 81 + drm_err(display->drm, 84 82 "Timed out waiting for IPS disable\n"); 85 83 } else { 86 - intel_de_write(i915, IPS_CTL, 0); 87 - intel_de_posting_read(i915, IPS_CTL); 84 + intel_de_write(display, IPS_CTL, 0); 85 + intel_de_posting_read(display, IPS_CTL); 88 86 } 89 87 90 88 /* We need to wait for a vblank before we can disable the plane. */ ··· 190 188 191 189 bool hsw_crtc_state_ips_capable(const struct intel_crtc_state *crtc_state) 192 190 { 191 + struct intel_display *display = to_intel_display(crtc_state); 193 192 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 194 193 struct drm_i915_private *i915 = to_i915(crtc->base.dev); 195 194 ··· 198 195 if (!hsw_crtc_supports_ips(crtc)) 199 196 return false; 200 197 201 - if (!i915->display.params.enable_ips) 198 + if (!display->params.enable_ips) 202 199 return false; 203 200 204 201 if (crtc_state->pipe_bpp > 24) ··· 212 209 * Should measure whether using a lower cdclk w/o IPS 213 210 */ 214 211 if (IS_BROADWELL(i915) && 215 - crtc_state->pixel_rate > i915->display.cdclk.max_cdclk_freq * 95 / 100) 212 + crtc_state->pixel_rate > display->cdclk.max_cdclk_freq * 95 / 100) 216 213 return false; 217 214 218 215 return true; ··· 262 259 263 260 void hsw_ips_get_config(struct intel_crtc_state *crtc_state) 264 261 { 262 + struct intel_display *display = to_intel_display(crtc_state); 265 263 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); 266 264 struct drm_i915_private *i915 = to_i915(crtc->base.dev); 267 265 ··· 270 266 return; 271 267 272 268 if (IS_HASWELL(i915)) { 273 - crtc_state->ips_enabled = intel_de_read(i915, IPS_CTL) & IPS_ENABLE; 269 + crtc_state->ips_enabled = intel_de_read(display, IPS_CTL) & IPS_ENABLE; 274 270 } else { 275 271 /* 276 272 * We cannot readout IPS state on broadwell, set to ··· 284 280 static int hsw_ips_debugfs_false_color_get(void *data, u64 *val) 285 281 { 286 282 struct intel_crtc *crtc = data; 287 - struct drm_i915_private *i915 = to_i915(crtc->base.dev); 283 + struct intel_display *display = to_intel_display(crtc); 288 284 289 - *val = i915->display.ips.false_color; 285 + *val = display->ips.false_color; 290 286 291 287 return 0; 292 288 } ··· 294 290 static int hsw_ips_debugfs_false_color_set(void *data, u64 val) 295 291 { 296 292 struct intel_crtc *crtc = data; 297 - struct drm_i915_private *i915 = to_i915(crtc->base.dev); 293 + struct intel_display *display = to_intel_display(crtc); 298 294 struct intel_crtc_state *crtc_state; 299 295 int ret; 300 296 ··· 302 298 if (ret) 303 299 return ret; 304 300 305 - i915->display.ips.false_color = val; 301 + display->ips.false_color = val; 306 302 307 303 crtc_state = to_intel_crtc_state(crtc->base.state); 308 304 ··· 329 325 static int hsw_ips_debugfs_status_show(struct seq_file *m, void *unused) 330 326 { 331 327 struct intel_crtc *crtc = m->private; 328 + struct intel_display *display = to_intel_display(crtc); 332 329 struct drm_i915_private *i915 = to_i915(crtc->base.dev); 333 330 intel_wakeref_t wakeref; 334 331 335 332 wakeref = intel_runtime_pm_get(&i915->runtime_pm); 336 333 337 334 seq_printf(m, "Enabled by kernel parameter: %s\n", 338 - str_yes_no(i915->display.params.enable_ips)); 335 + str_yes_no(display->params.enable_ips)); 339 336 340 - if (DISPLAY_VER(i915) >= 8) { 337 + if (DISPLAY_VER(display) >= 8) { 341 338 seq_puts(m, "Currently: unknown\n"); 342 339 } else { 343 - if (intel_de_read(i915, IPS_CTL) & IPS_ENABLE) 340 + if (intel_de_read(display, IPS_CTL) & IPS_ENABLE) 344 341 seq_puts(m, "Currently: enabled\n"); 345 342 else 346 343 seq_puts(m, "Currently: disabled\n");