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

drm/i915/gmbus: convert to struct intel_display

struct intel_display will replace struct drm_i915_private as the main
device pointer for display code. Switch gmbus 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/d784e4799ab5095baa5c8fd840920066878c6273.1730146000.git.jani.nikula@intel.com

+202 -186
+2 -4
drivers/gpu/drm/i915/display/intel_bios.c
··· 2787 2787 static void 2788 2788 parse_general_definitions(struct intel_display *display) 2789 2789 { 2790 - struct drm_i915_private *i915 = to_i915(display->drm); 2791 2790 const struct bdb_general_definitions *defs; 2792 2791 struct intel_bios_encoder_data *devdata; 2793 2792 const struct child_device_config *child; ··· 2811 2812 2812 2813 bus_pin = defs->crt_ddc_gmbus_pin; 2813 2814 drm_dbg_kms(display->drm, "crt_ddc_bus_pin: %d\n", bus_pin); 2814 - if (intel_gmbus_is_valid_pin(i915, bus_pin)) 2815 + if (intel_gmbus_is_valid_pin(display, bus_pin)) 2815 2816 display->vbt.crt_ddc_pin = bus_pin; 2816 2817 2817 2818 if (!child_device_size_valid(display, defs->child_dev_size)) ··· 3328 3329 */ 3329 3330 bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin) 3330 3331 { 3331 - struct drm_i915_private *i915 = to_i915(display->drm); 3332 3332 const struct intel_bios_encoder_data *devdata; 3333 3333 3334 3334 if (list_empty(&display->vbt.display_devices)) ··· 3344 3346 child->device_type != DEVICE_TYPE_LFP) 3345 3347 continue; 3346 3348 3347 - if (intel_gmbus_is_valid_pin(i915, child->i2c_pin)) 3349 + if (intel_gmbus_is_valid_pin(display, child->i2c_pin)) 3348 3350 *i2c_pin = child->i2c_pin; 3349 3351 3350 3352 /* However, we cannot trust the BIOS writers to populate
+4 -2
drivers/gpu/drm/i915/display/intel_crt.c
··· 935 935 936 936 static int intel_crt_get_modes(struct drm_connector *connector) 937 937 { 938 + struct intel_display *display = to_intel_display(connector->dev); 938 939 struct drm_device *dev = connector->dev; 939 940 struct drm_i915_private *dev_priv = to_i915(dev); 940 941 struct intel_crt *crt = intel_attached_crt(to_intel_connector(connector)); ··· 955 954 goto out; 956 955 957 956 /* Try to probe digital port for output in DVI-I -> VGA mode. */ 958 - ddc = intel_gmbus_get_adapter(dev_priv, GMBUS_PIN_DPB); 957 + ddc = intel_gmbus_get_adapter(display, GMBUS_PIN_DPB); 959 958 ret = intel_crt_ddc_get_modes(connector, ddc); 960 959 961 960 out: ··· 1010 1009 1011 1010 void intel_crt_init(struct drm_i915_private *dev_priv) 1012 1011 { 1012 + struct intel_display *display = &dev_priv->display; 1013 1013 struct drm_connector *connector; 1014 1014 struct intel_crt *crt; 1015 1015 struct intel_connector *intel_connector; ··· 1059 1057 drm_connector_init_with_ddc(&dev_priv->drm, connector, 1060 1058 &intel_crt_connector_funcs, 1061 1059 DRM_MODE_CONNECTOR_VGA, 1062 - intel_gmbus_get_adapter(dev_priv, ddc_pin)); 1060 + intel_gmbus_get_adapter(display, ddc_pin)); 1063 1061 1064 1062 drm_encoder_init(&dev_priv->drm, &crt->base.base, &intel_crt_enc_funcs, 1065 1063 DRM_MODE_ENCODER_DAC, "CRT");
+2 -2
drivers/gpu/drm/i915/display/intel_display_driver.c
··· 432 432 433 433 intel_pps_setup(display); 434 434 435 - intel_gmbus_setup(i915); 435 + intel_gmbus_setup(display); 436 436 437 437 drm_dbg_kms(&i915->drm, "%d display pipe%s available.\n", 438 438 INTEL_NUM_PIPES(i915), ··· 608 608 609 609 intel_overlay_cleanup(i915); 610 610 611 - intel_gmbus_teardown(i915); 611 + intel_gmbus_teardown(display); 612 612 613 613 destroy_workqueue(i915->display.wq.flip); 614 614 destroy_workqueue(i915->display.wq.modeset);
+6 -5
drivers/gpu/drm/i915/display/intel_display_irq.c
··· 543 543 intel_opregion_asle_intr(display); 544 544 545 545 if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS) 546 - intel_gmbus_irq_handler(dev_priv); 546 + intel_gmbus_irq_handler(display); 547 547 } 548 548 549 549 void valleyview_pipestat_irq_handler(struct drm_i915_private *dev_priv, 550 550 u32 pipe_stats[I915_MAX_PIPES]) 551 551 { 552 + struct intel_display *display = &dev_priv->display; 552 553 enum pipe pipe; 553 554 554 555 for_each_pipe(dev_priv, pipe) { ··· 567 566 } 568 567 569 568 if (pipe_stats[0] & PIPE_GMBUS_INTERRUPT_STATUS) 570 - intel_gmbus_irq_handler(dev_priv); 569 + intel_gmbus_irq_handler(display); 571 570 } 572 571 573 572 static void ibx_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir) ··· 589 588 intel_dp_aux_irq_handler(display); 590 589 591 590 if (pch_iir & SDE_GMBUS) 592 - intel_gmbus_irq_handler(dev_priv); 591 + intel_gmbus_irq_handler(display); 593 592 594 593 if (pch_iir & SDE_AUDIO_HDCP_MASK) 595 594 drm_dbg(&dev_priv->drm, "PCH HDCP audio interrupt\n"); ··· 678 677 intel_dp_aux_irq_handler(display); 679 678 680 679 if (pch_iir & SDE_GMBUS_CPT) 681 - intel_gmbus_irq_handler(dev_priv); 680 + intel_gmbus_irq_handler(display); 682 681 683 682 if (pch_iir & SDE_AUDIO_CP_REQ_CPT) 684 683 drm_dbg(&dev_priv->drm, "Audio CP request interrupt\n"); ··· 1110 1109 1111 1110 if ((IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) && 1112 1111 (iir & BXT_DE_PORT_GMBUS)) { 1113 - intel_gmbus_irq_handler(dev_priv); 1112 + intel_gmbus_irq_handler(display); 1114 1113 found = true; 1115 1114 } 1116 1115
+3 -2
drivers/gpu/drm/i915/display/intel_dsi_vbt.c
··· 323 323 static void icl_native_gpio_set_value(struct drm_i915_private *dev_priv, 324 324 int gpio, bool value) 325 325 { 326 + struct intel_display *display = &dev_priv->display; 326 327 int index; 327 328 328 329 if (drm_WARN_ON(&dev_priv->drm, DISPLAY_VER(dev_priv) == 11 && gpio >= MIPI_RESET_2)) ··· 368 367 case MIPI_AVEE_EN_2: 369 368 index = gpio == MIPI_AVEE_EN_1 ? 1 : 2; 370 369 371 - intel_de_rmw(dev_priv, GPIO(dev_priv, index), 370 + intel_de_rmw(display, GPIO(display, index), 372 371 GPIO_CLOCK_VAL_OUT, 373 372 GPIO_CLOCK_DIR_MASK | GPIO_CLOCK_DIR_OUT | 374 373 GPIO_CLOCK_VAL_MASK | (value ? GPIO_CLOCK_VAL_OUT : 0)); ··· 377 376 case MIPI_VIO_EN_2: 378 377 index = gpio == MIPI_VIO_EN_1 ? 1 : 2; 379 378 380 - intel_de_rmw(dev_priv, GPIO(dev_priv, index), 379 + intel_de_rmw(display, GPIO(display, index), 381 380 GPIO_DATA_VAL_OUT, 382 381 GPIO_DATA_DIR_MASK | GPIO_DATA_DIR_OUT | 383 382 GPIO_DATA_VAL_MASK | (value ? GPIO_DATA_VAL_OUT : 0));
+5 -3
drivers/gpu/drm/i915/display/intel_dvo.c
··· 417 417 struct intel_dvo *intel_dvo, 418 418 const struct intel_dvo_device *dvo) 419 419 { 420 + struct intel_display *display = &dev_priv->display; 420 421 struct i2c_adapter *i2c; 421 422 u32 dpll[I915_MAX_PIPES]; 422 423 enum pipe pipe; ··· 429 428 * special cases, but otherwise default to what's defined 430 429 * in the spec. 431 430 */ 432 - if (intel_gmbus_is_valid_pin(dev_priv, dvo->gpio)) 431 + if (intel_gmbus_is_valid_pin(display, dvo->gpio)) 433 432 gpio = dvo->gpio; 434 433 else if (dvo->type == INTEL_DVO_CHIP_LVDS) 435 434 gpio = GMBUS_PIN_SSC; ··· 441 440 * It appears that everything is on GPIOE except for panels 442 441 * on i830 laptops, which are on GPIOB (DVOA). 443 442 */ 444 - i2c = intel_gmbus_get_adapter(dev_priv, gpio); 443 + i2c = intel_gmbus_get_adapter(display, gpio); 445 444 446 445 intel_dvo->dev = *dvo; 447 446 ··· 490 489 491 490 void intel_dvo_init(struct drm_i915_private *i915) 492 491 { 492 + struct intel_display *display = &i915->display; 493 493 struct intel_connector *connector; 494 494 struct intel_encoder *encoder; 495 495 struct intel_dvo *intel_dvo; ··· 551 549 drm_connector_init_with_ddc(&i915->drm, &connector->base, 552 550 &intel_dvo_connector_funcs, 553 551 intel_dvo_connector_type(&intel_dvo->dev), 554 - intel_gmbus_get_adapter(i915, GMBUS_PIN_DPC)); 552 + intel_gmbus_get_adapter(display, GMBUS_PIN_DPC)); 555 553 556 554 drm_connector_helper_add(&connector->base, 557 555 &intel_dvo_connector_helper_funcs);
+151 -139
drivers/gpu/drm/i915/display/intel_gmbus.c
··· 48 48 u32 reg0; 49 49 i915_reg_t gpio_reg; 50 50 struct i2c_algo_bit_data bit_algo; 51 - struct drm_i915_private *i915; 51 + struct intel_display *display; 52 52 }; 53 53 54 54 enum gmbus_gpio { ··· 149 149 [GMBUS_PIN_12_TC4_ICP] = { "tc4", GPIOM }, 150 150 }; 151 151 152 - static const struct gmbus_pin *get_gmbus_pin(struct drm_i915_private *i915, 152 + static const struct gmbus_pin *get_gmbus_pin(struct intel_display *display, 153 153 unsigned int pin) 154 154 { 155 + struct drm_i915_private *i915 = to_i915(display->drm); 155 156 const struct gmbus_pin *pins; 156 157 size_t size; 157 158 ··· 174 173 } else if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) { 175 174 pins = gmbus_pins_bxt; 176 175 size = ARRAY_SIZE(gmbus_pins_bxt); 177 - } else if (DISPLAY_VER(i915) == 9) { 176 + } else if (DISPLAY_VER(display) == 9) { 178 177 pins = gmbus_pins_skl; 179 178 size = ARRAY_SIZE(gmbus_pins_skl); 180 179 } else if (IS_BROADWELL(i915)) { ··· 191 190 return &pins[pin]; 192 191 } 193 192 194 - bool intel_gmbus_is_valid_pin(struct drm_i915_private *i915, unsigned int pin) 193 + bool intel_gmbus_is_valid_pin(struct intel_display *display, unsigned int pin) 195 194 { 196 - return get_gmbus_pin(i915, pin); 195 + return get_gmbus_pin(display, pin); 197 196 } 198 197 199 198 /* Intel GPIO access functions */ ··· 207 206 } 208 207 209 208 void 210 - intel_gmbus_reset(struct drm_i915_private *i915) 209 + intel_gmbus_reset(struct intel_display *display) 211 210 { 212 - intel_de_write(i915, GMBUS0(i915), 0); 213 - intel_de_write(i915, GMBUS4(i915), 0); 211 + intel_de_write(display, GMBUS0(display), 0); 212 + intel_de_write(display, GMBUS4(display), 0); 214 213 } 215 214 216 - static void pnv_gmbus_clock_gating(struct drm_i915_private *i915, 215 + static void pnv_gmbus_clock_gating(struct intel_display *display, 217 216 bool enable) 218 217 { 219 218 /* When using bit bashing for I2C, this bit needs to be set to 1 */ 220 - intel_de_rmw(i915, DSPCLK_GATE_D(i915), PNV_GMBUSUNIT_CLOCK_GATE_DISABLE, 219 + intel_de_rmw(display, DSPCLK_GATE_D(display), 220 + PNV_GMBUSUNIT_CLOCK_GATE_DISABLE, 221 221 !enable ? PNV_GMBUSUNIT_CLOCK_GATE_DISABLE : 0); 222 222 } 223 223 224 - static void pch_gmbus_clock_gating(struct drm_i915_private *i915, 224 + static void pch_gmbus_clock_gating(struct intel_display *display, 225 225 bool enable) 226 226 { 227 - intel_de_rmw(i915, SOUTH_DSPCLK_GATE_D, PCH_GMBUSUNIT_CLOCK_GATE_DISABLE, 227 + intel_de_rmw(display, SOUTH_DSPCLK_GATE_D, 228 + PCH_GMBUSUNIT_CLOCK_GATE_DISABLE, 228 229 !enable ? PCH_GMBUSUNIT_CLOCK_GATE_DISABLE : 0); 229 230 } 230 231 231 - static void bxt_gmbus_clock_gating(struct drm_i915_private *i915, 232 + static void bxt_gmbus_clock_gating(struct intel_display *display, 232 233 bool enable) 233 234 { 234 - intel_de_rmw(i915, GEN9_CLKGATE_DIS_4, BXT_GMBUS_GATING_DIS, 235 + intel_de_rmw(display, GEN9_CLKGATE_DIS_4, BXT_GMBUS_GATING_DIS, 235 236 !enable ? BXT_GMBUS_GATING_DIS : 0); 236 237 } 237 238 238 239 static u32 get_reserved(struct intel_gmbus *bus) 239 240 { 240 - struct drm_i915_private *i915 = bus->i915; 241 + struct intel_display *display = bus->display; 242 + struct drm_i915_private *i915 = to_i915(display->drm); 241 243 u32 reserved = 0; 242 244 243 245 /* On most chips, these bits must be preserved in software. */ 244 246 if (!IS_I830(i915) && !IS_I845G(i915)) 245 - reserved = intel_de_read_notrace(i915, bus->gpio_reg) & 247 + reserved = intel_de_read_notrace(display, bus->gpio_reg) & 246 248 (GPIO_DATA_PULLUP_DISABLE | GPIO_CLOCK_PULLUP_DISABLE); 247 249 248 250 return reserved; ··· 254 250 static int get_clock(void *data) 255 251 { 256 252 struct intel_gmbus *bus = data; 257 - struct drm_i915_private *i915 = bus->i915; 253 + struct intel_display *display = bus->display; 258 254 u32 reserved = get_reserved(bus); 259 255 260 - intel_de_write_notrace(i915, bus->gpio_reg, reserved | GPIO_CLOCK_DIR_MASK); 261 - intel_de_write_notrace(i915, bus->gpio_reg, reserved); 256 + intel_de_write_notrace(display, bus->gpio_reg, reserved | GPIO_CLOCK_DIR_MASK); 257 + intel_de_write_notrace(display, bus->gpio_reg, reserved); 262 258 263 - return (intel_de_read_notrace(i915, bus->gpio_reg) & GPIO_CLOCK_VAL_IN) != 0; 259 + return (intel_de_read_notrace(display, bus->gpio_reg) & GPIO_CLOCK_VAL_IN) != 0; 264 260 } 265 261 266 262 static int get_data(void *data) 267 263 { 268 264 struct intel_gmbus *bus = data; 269 - struct drm_i915_private *i915 = bus->i915; 265 + struct intel_display *display = bus->display; 270 266 u32 reserved = get_reserved(bus); 271 267 272 - intel_de_write_notrace(i915, bus->gpio_reg, reserved | GPIO_DATA_DIR_MASK); 273 - intel_de_write_notrace(i915, bus->gpio_reg, reserved); 268 + intel_de_write_notrace(display, bus->gpio_reg, reserved | GPIO_DATA_DIR_MASK); 269 + intel_de_write_notrace(display, bus->gpio_reg, reserved); 274 270 275 - return (intel_de_read_notrace(i915, bus->gpio_reg) & GPIO_DATA_VAL_IN) != 0; 271 + return (intel_de_read_notrace(display, bus->gpio_reg) & GPIO_DATA_VAL_IN) != 0; 276 272 } 277 273 278 274 static void set_clock(void *data, int state_high) 279 275 { 280 276 struct intel_gmbus *bus = data; 281 - struct drm_i915_private *i915 = bus->i915; 277 + struct intel_display *display = bus->display; 282 278 u32 reserved = get_reserved(bus); 283 279 u32 clock_bits; 284 280 ··· 288 284 clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK | 289 285 GPIO_CLOCK_VAL_MASK; 290 286 291 - intel_de_write_notrace(i915, bus->gpio_reg, reserved | clock_bits); 292 - intel_de_posting_read(i915, bus->gpio_reg); 287 + intel_de_write_notrace(display, bus->gpio_reg, reserved | clock_bits); 288 + intel_de_posting_read(display, bus->gpio_reg); 293 289 } 294 290 295 291 static void set_data(void *data, int state_high) 296 292 { 297 293 struct intel_gmbus *bus = data; 298 - struct drm_i915_private *i915 = bus->i915; 294 + struct intel_display *display = bus->display; 299 295 u32 reserved = get_reserved(bus); 300 296 u32 data_bits; 301 297 ··· 305 301 data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK | 306 302 GPIO_DATA_VAL_MASK; 307 303 308 - intel_de_write_notrace(i915, bus->gpio_reg, reserved | data_bits); 309 - intel_de_posting_read(i915, bus->gpio_reg); 304 + intel_de_write_notrace(display, bus->gpio_reg, reserved | data_bits); 305 + intel_de_posting_read(display, bus->gpio_reg); 310 306 } 311 307 312 308 static int 313 309 intel_gpio_pre_xfer(struct i2c_adapter *adapter) 314 310 { 315 311 struct intel_gmbus *bus = to_intel_gmbus(adapter); 316 - struct drm_i915_private *i915 = bus->i915; 312 + struct intel_display *display = bus->display; 313 + struct drm_i915_private *i915 = to_i915(display->drm); 317 314 318 - intel_gmbus_reset(i915); 315 + intel_gmbus_reset(display); 319 316 320 317 if (IS_PINEVIEW(i915)) 321 - pnv_gmbus_clock_gating(i915, false); 318 + pnv_gmbus_clock_gating(display, false); 322 319 323 320 set_data(bus, 1); 324 321 set_clock(bus, 1); ··· 331 326 intel_gpio_post_xfer(struct i2c_adapter *adapter) 332 327 { 333 328 struct intel_gmbus *bus = to_intel_gmbus(adapter); 334 - struct drm_i915_private *i915 = bus->i915; 329 + struct intel_display *display = bus->display; 330 + struct drm_i915_private *i915 = to_i915(display->drm); 335 331 336 332 set_data(bus, 1); 337 333 set_clock(bus, 1); 338 334 339 335 if (IS_PINEVIEW(i915)) 340 - pnv_gmbus_clock_gating(i915, true); 336 + pnv_gmbus_clock_gating(display, true); 341 337 } 342 338 343 339 static void ··· 361 355 algo->data = bus; 362 356 } 363 357 364 - static bool has_gmbus_irq(struct drm_i915_private *i915) 358 + static bool has_gmbus_irq(struct intel_display *display) 365 359 { 360 + struct drm_i915_private *i915 = to_i915(display->drm); 366 361 /* 367 362 * encoder->shutdown() may want to use GMBUS 368 363 * after irqs have already been disabled. 369 364 */ 370 - return HAS_GMBUS_IRQ(i915) && intel_irqs_enabled(i915); 365 + return HAS_GMBUS_IRQ(display) && intel_irqs_enabled(i915); 371 366 } 372 367 373 - static int gmbus_wait(struct drm_i915_private *i915, u32 status, u32 irq_en) 368 + static int gmbus_wait(struct intel_display *display, u32 status, u32 irq_en) 374 369 { 375 370 DEFINE_WAIT(wait); 376 371 u32 gmbus2; ··· 381 374 * we also need to check for NAKs besides the hw ready/idle signal, we 382 375 * need to wake up periodically and check that ourselves. 383 376 */ 384 - if (!has_gmbus_irq(i915)) 377 + if (!has_gmbus_irq(display)) 385 378 irq_en = 0; 386 379 387 - add_wait_queue(&i915->display.gmbus.wait_queue, &wait); 388 - intel_de_write_fw(i915, GMBUS4(i915), irq_en); 380 + add_wait_queue(&display->gmbus.wait_queue, &wait); 381 + intel_de_write_fw(display, GMBUS4(display), irq_en); 389 382 390 383 status |= GMBUS_SATOER; 391 - ret = wait_for_us((gmbus2 = intel_de_read_fw(i915, GMBUS2(i915))) & status, 384 + ret = wait_for_us((gmbus2 = intel_de_read_fw(display, GMBUS2(display))) & status, 392 385 2); 393 386 if (ret) 394 - ret = wait_for((gmbus2 = intel_de_read_fw(i915, GMBUS2(i915))) & status, 387 + ret = wait_for((gmbus2 = intel_de_read_fw(display, GMBUS2(display))) & status, 395 388 50); 396 389 397 - intel_de_write_fw(i915, GMBUS4(i915), 0); 398 - remove_wait_queue(&i915->display.gmbus.wait_queue, &wait); 390 + intel_de_write_fw(display, GMBUS4(display), 0); 391 + remove_wait_queue(&display->gmbus.wait_queue, &wait); 399 392 400 393 if (gmbus2 & GMBUS_SATOER) 401 394 return -ENXIO; ··· 404 397 } 405 398 406 399 static int 407 - gmbus_wait_idle(struct drm_i915_private *i915) 400 + gmbus_wait_idle(struct intel_display *display) 408 401 { 409 402 DEFINE_WAIT(wait); 410 403 u32 irq_enable; ··· 412 405 413 406 /* Important: The hw handles only the first bit, so set only one! */ 414 407 irq_enable = 0; 415 - if (has_gmbus_irq(i915)) 408 + if (has_gmbus_irq(display)) 416 409 irq_enable = GMBUS_IDLE_EN; 417 410 418 - add_wait_queue(&i915->display.gmbus.wait_queue, &wait); 419 - intel_de_write_fw(i915, GMBUS4(i915), irq_enable); 411 + add_wait_queue(&display->gmbus.wait_queue, &wait); 412 + intel_de_write_fw(display, GMBUS4(display), irq_enable); 420 413 421 - ret = intel_de_wait_fw(i915, GMBUS2(i915), GMBUS_ACTIVE, 0, 10); 414 + ret = intel_de_wait_fw(display, GMBUS2(display), GMBUS_ACTIVE, 0, 10); 422 415 423 - intel_de_write_fw(i915, GMBUS4(i915), 0); 424 - remove_wait_queue(&i915->display.gmbus.wait_queue, &wait); 416 + intel_de_write_fw(display, GMBUS4(display), 0); 417 + remove_wait_queue(&display->gmbus.wait_queue, &wait); 425 418 426 419 return ret; 427 420 } 428 421 429 - static unsigned int gmbus_max_xfer_size(struct drm_i915_private *i915) 422 + static unsigned int gmbus_max_xfer_size(struct intel_display *display) 430 423 { 431 - return DISPLAY_VER(i915) >= 9 ? GEN9_GMBUS_BYTE_COUNT_MAX : 424 + return DISPLAY_VER(display) >= 9 ? GEN9_GMBUS_BYTE_COUNT_MAX : 432 425 GMBUS_BYTE_COUNT_MAX; 433 426 } 434 427 435 428 static int 436 - gmbus_xfer_read_chunk(struct drm_i915_private *i915, 429 + gmbus_xfer_read_chunk(struct intel_display *display, 437 430 unsigned short addr, u8 *buf, unsigned int len, 438 431 u32 gmbus0_reg, u32 gmbus1_index) 439 432 { 440 433 unsigned int size = len; 441 - bool burst_read = len > gmbus_max_xfer_size(i915); 434 + bool burst_read = len > gmbus_max_xfer_size(display); 442 435 bool extra_byte_added = false; 443 436 444 437 if (burst_read) { ··· 451 444 len++; 452 445 } 453 446 size = len % 256 + 256; 454 - intel_de_write_fw(i915, GMBUS0(i915), 447 + intel_de_write_fw(display, GMBUS0(display), 455 448 gmbus0_reg | GMBUS_BYTE_CNT_OVERRIDE); 456 449 } 457 450 458 - intel_de_write_fw(i915, GMBUS1(i915), 451 + intel_de_write_fw(display, GMBUS1(display), 459 452 gmbus1_index | GMBUS_CYCLE_WAIT | (size << GMBUS_BYTE_COUNT_SHIFT) | (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_READ | GMBUS_SW_RDY); 460 453 while (len) { 461 454 int ret; 462 455 u32 val, loop = 0; 463 456 464 - ret = gmbus_wait(i915, GMBUS_HW_RDY, GMBUS_HW_RDY_EN); 457 + ret = gmbus_wait(display, GMBUS_HW_RDY, GMBUS_HW_RDY_EN); 465 458 if (ret) 466 459 return ret; 467 460 468 - val = intel_de_read_fw(i915, GMBUS3(i915)); 461 + val = intel_de_read_fw(display, GMBUS3(display)); 469 462 do { 470 463 if (extra_byte_added && len == 1) 471 464 break; ··· 476 469 477 470 if (burst_read && len == size - 4) 478 471 /* Reset the override bit */ 479 - intel_de_write_fw(i915, GMBUS0(i915), gmbus0_reg); 472 + intel_de_write_fw(display, GMBUS0(display), gmbus0_reg); 480 473 } 481 474 482 475 return 0; ··· 493 486 #define INTEL_GMBUS_BURST_READ_MAX_LEN 767U 494 487 495 488 static int 496 - gmbus_xfer_read(struct drm_i915_private *i915, struct i2c_msg *msg, 489 + gmbus_xfer_read(struct intel_display *display, struct i2c_msg *msg, 497 490 u32 gmbus0_reg, u32 gmbus1_index) 498 491 { 492 + struct drm_i915_private *i915 = to_i915(display->drm); 499 493 u8 *buf = msg->buf; 500 494 unsigned int rx_size = msg->len; 501 495 unsigned int len; ··· 506 498 if (HAS_GMBUS_BURST_READ(i915)) 507 499 len = min(rx_size, INTEL_GMBUS_BURST_READ_MAX_LEN); 508 500 else 509 - len = min(rx_size, gmbus_max_xfer_size(i915)); 501 + len = min(rx_size, gmbus_max_xfer_size(display)); 510 502 511 - ret = gmbus_xfer_read_chunk(i915, msg->addr, buf, len, 503 + ret = gmbus_xfer_read_chunk(display, msg->addr, buf, len, 512 504 gmbus0_reg, gmbus1_index); 513 505 if (ret) 514 506 return ret; ··· 521 513 } 522 514 523 515 static int 524 - gmbus_xfer_write_chunk(struct drm_i915_private *i915, 516 + gmbus_xfer_write_chunk(struct intel_display *display, 525 517 unsigned short addr, u8 *buf, unsigned int len, 526 518 u32 gmbus1_index) 527 519 { ··· 534 526 len -= 1; 535 527 } 536 528 537 - intel_de_write_fw(i915, GMBUS3(i915), val); 538 - intel_de_write_fw(i915, GMBUS1(i915), 529 + intel_de_write_fw(display, GMBUS3(display), val); 530 + intel_de_write_fw(display, GMBUS1(display), 539 531 gmbus1_index | GMBUS_CYCLE_WAIT | (chunk_size << GMBUS_BYTE_COUNT_SHIFT) | (addr << GMBUS_SLAVE_ADDR_SHIFT) | GMBUS_SLAVE_WRITE | GMBUS_SW_RDY); 540 532 while (len) { 541 533 int ret; ··· 545 537 val |= *buf++ << (8 * loop); 546 538 } while (--len && ++loop < 4); 547 539 548 - intel_de_write_fw(i915, GMBUS3(i915), val); 540 + intel_de_write_fw(display, GMBUS3(display), val); 549 541 550 - ret = gmbus_wait(i915, GMBUS_HW_RDY, GMBUS_HW_RDY_EN); 542 + ret = gmbus_wait(display, GMBUS_HW_RDY, GMBUS_HW_RDY_EN); 551 543 if (ret) 552 544 return ret; 553 545 } ··· 556 548 } 557 549 558 550 static int 559 - gmbus_xfer_write(struct drm_i915_private *i915, struct i2c_msg *msg, 551 + gmbus_xfer_write(struct intel_display *display, struct i2c_msg *msg, 560 552 u32 gmbus1_index) 561 553 { 562 554 u8 *buf = msg->buf; ··· 565 557 int ret; 566 558 567 559 do { 568 - len = min(tx_size, gmbus_max_xfer_size(i915)); 560 + len = min(tx_size, gmbus_max_xfer_size(display)); 569 561 570 - ret = gmbus_xfer_write_chunk(i915, msg->addr, buf, len, 562 + ret = gmbus_xfer_write_chunk(display, msg->addr, buf, len, 571 563 gmbus1_index); 572 564 if (ret) 573 565 return ret; ··· 594 586 } 595 587 596 588 static int 597 - gmbus_index_xfer(struct drm_i915_private *i915, struct i2c_msg *msgs, 589 + gmbus_index_xfer(struct intel_display *display, struct i2c_msg *msgs, 598 590 u32 gmbus0_reg) 599 591 { 600 592 u32 gmbus1_index = 0; ··· 610 602 611 603 /* GMBUS5 holds 16-bit index */ 612 604 if (gmbus5) 613 - intel_de_write_fw(i915, GMBUS5(i915), gmbus5); 605 + intel_de_write_fw(display, GMBUS5(display), gmbus5); 614 606 615 607 if (msgs[1].flags & I2C_M_RD) 616 - ret = gmbus_xfer_read(i915, &msgs[1], gmbus0_reg, 608 + ret = gmbus_xfer_read(display, &msgs[1], gmbus0_reg, 617 609 gmbus1_index); 618 610 else 619 - ret = gmbus_xfer_write(i915, &msgs[1], gmbus1_index); 611 + ret = gmbus_xfer_write(display, &msgs[1], gmbus1_index); 620 612 621 613 /* Clear GMBUS5 after each index transfer */ 622 614 if (gmbus5) 623 - intel_de_write_fw(i915, GMBUS5(i915), 0); 615 + intel_de_write_fw(display, GMBUS5(display), 0); 624 616 625 617 return ret; 626 618 } ··· 630 622 u32 gmbus0_source) 631 623 { 632 624 struct intel_gmbus *bus = to_intel_gmbus(adapter); 633 - struct drm_i915_private *i915 = bus->i915; 625 + struct intel_display *display = bus->display; 626 + struct drm_i915_private *i915 = to_i915(display->drm); 634 627 int i = 0, inc, try = 0; 635 628 int ret = 0; 636 629 637 630 /* Display WA #0868: skl,bxt,kbl,cfl,glk */ 638 631 if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) 639 - bxt_gmbus_clock_gating(i915, false); 632 + bxt_gmbus_clock_gating(display, false); 640 633 else if (HAS_PCH_SPT(i915) || HAS_PCH_CNP(i915)) 641 - pch_gmbus_clock_gating(i915, false); 634 + pch_gmbus_clock_gating(display, false); 642 635 643 636 retry: 644 - intel_de_write_fw(i915, GMBUS0(i915), gmbus0_source | bus->reg0); 637 + intel_de_write_fw(display, GMBUS0(display), gmbus0_source | bus->reg0); 645 638 646 639 for (; i < num; i += inc) { 647 640 inc = 1; 648 641 if (gmbus_is_index_xfer(msgs, i, num)) { 649 - ret = gmbus_index_xfer(i915, &msgs[i], 642 + ret = gmbus_index_xfer(display, &msgs[i], 650 643 gmbus0_source | bus->reg0); 651 644 inc = 2; /* an index transmission is two msgs */ 652 645 } else if (msgs[i].flags & I2C_M_RD) { 653 - ret = gmbus_xfer_read(i915, &msgs[i], 646 + ret = gmbus_xfer_read(display, &msgs[i], 654 647 gmbus0_source | bus->reg0, 0); 655 648 } else { 656 - ret = gmbus_xfer_write(i915, &msgs[i], 0); 649 + ret = gmbus_xfer_write(display, &msgs[i], 0); 657 650 } 658 651 659 652 if (!ret) 660 - ret = gmbus_wait(i915, 653 + ret = gmbus_wait(display, 661 654 GMBUS_HW_WAIT_PHASE, GMBUS_HW_WAIT_EN); 662 655 if (ret == -ETIMEDOUT) 663 656 goto timeout; ··· 670 661 * a STOP on the very first cycle. To simplify the code we 671 662 * unconditionally generate the STOP condition with an additional gmbus 672 663 * cycle. */ 673 - intel_de_write_fw(i915, GMBUS1(i915), GMBUS_CYCLE_STOP | GMBUS_SW_RDY); 664 + intel_de_write_fw(display, GMBUS1(display), GMBUS_CYCLE_STOP | GMBUS_SW_RDY); 674 665 675 666 /* Mark the GMBUS interface as disabled after waiting for idle. 676 667 * We will re-enable it at the start of the next xfer, 677 668 * till then let it sleep. 678 669 */ 679 - if (gmbus_wait_idle(i915)) { 680 - drm_dbg_kms(&i915->drm, 670 + if (gmbus_wait_idle(display)) { 671 + drm_dbg_kms(display->drm, 681 672 "GMBUS [%s] timed out waiting for idle\n", 682 673 adapter->name); 683 674 ret = -ETIMEDOUT; 684 675 } 685 - intel_de_write_fw(i915, GMBUS0(i915), 0); 676 + intel_de_write_fw(display, GMBUS0(display), 0); 686 677 ret = ret ?: i; 687 678 goto out; 688 679 ··· 701 692 * it's slow responding and only answers on the 2nd retry. 702 693 */ 703 694 ret = -ENXIO; 704 - if (gmbus_wait_idle(i915)) { 705 - drm_dbg_kms(&i915->drm, 695 + if (gmbus_wait_idle(display)) { 696 + drm_dbg_kms(display->drm, 706 697 "GMBUS [%s] timed out after NAK\n", 707 698 adapter->name); 708 699 ret = -ETIMEDOUT; ··· 712 703 * of resetting the GMBUS controller and so clearing the 713 704 * BUS_ERROR raised by the target's NAK. 714 705 */ 715 - intel_de_write_fw(i915, GMBUS1(i915), GMBUS_SW_CLR_INT); 716 - intel_de_write_fw(i915, GMBUS1(i915), 0); 717 - intel_de_write_fw(i915, GMBUS0(i915), 0); 706 + intel_de_write_fw(display, GMBUS1(display), GMBUS_SW_CLR_INT); 707 + intel_de_write_fw(display, GMBUS1(display), 0); 708 + intel_de_write_fw(display, GMBUS0(display), 0); 718 709 719 - drm_dbg_kms(&i915->drm, "GMBUS [%s] NAK for addr: %04x %c(%d)\n", 710 + drm_dbg_kms(display->drm, "GMBUS [%s] NAK for addr: %04x %c(%d)\n", 720 711 adapter->name, msgs[i].addr, 721 712 (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len); 722 713 ··· 727 718 * drm_do_probe_ddc_edid, which bails out on the first -ENXIO. 728 719 */ 729 720 if (ret == -ENXIO && i == 0 && try++ == 0) { 730 - drm_dbg_kms(&i915->drm, 721 + drm_dbg_kms(display->drm, 731 722 "GMBUS [%s] NAK on first message, retry\n", 732 723 adapter->name); 733 724 goto retry; ··· 736 727 goto out; 737 728 738 729 timeout: 739 - drm_dbg_kms(&i915->drm, 730 + drm_dbg_kms(display->drm, 740 731 "GMBUS [%s] timed out, falling back to bit banging on pin %d\n", 741 732 bus->adapter.name, bus->reg0 & 0xff); 742 - intel_de_write_fw(i915, GMBUS0(i915), 0); 733 + intel_de_write_fw(display, GMBUS0(display), 0); 743 734 744 735 /* 745 736 * Hardware may not support GMBUS over these pins? Try GPIO bitbanging ··· 750 741 out: 751 742 /* Display WA #0868: skl,bxt,kbl,cfl,glk */ 752 743 if (IS_GEMINILAKE(i915) || IS_BROXTON(i915)) 753 - bxt_gmbus_clock_gating(i915, true); 744 + bxt_gmbus_clock_gating(display, true); 754 745 else if (HAS_PCH_SPT(i915) || HAS_PCH_CNP(i915)) 755 - pch_gmbus_clock_gating(i915, true); 746 + pch_gmbus_clock_gating(display, true); 756 747 757 748 return ret; 758 749 } ··· 761 752 gmbus_xfer(struct i2c_adapter *adapter, struct i2c_msg *msgs, int num) 762 753 { 763 754 struct intel_gmbus *bus = to_intel_gmbus(adapter); 764 - struct drm_i915_private *i915 = bus->i915; 755 + struct intel_display *display = bus->display; 756 + struct drm_i915_private *i915 = to_i915(display->drm); 765 757 intel_wakeref_t wakeref; 766 758 int ret; 767 759 ··· 786 776 int intel_gmbus_output_aksv(struct i2c_adapter *adapter) 787 777 { 788 778 struct intel_gmbus *bus = to_intel_gmbus(adapter); 789 - struct drm_i915_private *i915 = bus->i915; 779 + struct intel_display *display = bus->display; 780 + struct drm_i915_private *i915 = to_i915(display->drm); 790 781 u8 cmd = DRM_HDCP_DDC_AKSV; 791 782 u8 buf[DRM_HDCP_KSV_LEN] = {}; 792 783 struct i2c_msg msgs[] = { ··· 808 797 int ret; 809 798 810 799 wakeref = intel_display_power_get(i915, POWER_DOMAIN_GMBUS); 811 - mutex_lock(&i915->display.gmbus.mutex); 800 + mutex_lock(&display->gmbus.mutex); 812 801 813 802 /* 814 803 * In order to output Aksv to the receiver, use an indexed write to ··· 817 806 */ 818 807 ret = do_gmbus_xfer(adapter, msgs, ARRAY_SIZE(msgs), GMBUS_AKSV_SELECT); 819 808 820 - mutex_unlock(&i915->display.gmbus.mutex); 809 + mutex_unlock(&display->gmbus.mutex); 821 810 intel_display_power_put(i915, POWER_DOMAIN_GMBUS, wakeref); 822 811 823 812 return ret; ··· 841 830 unsigned int flags) 842 831 { 843 832 struct intel_gmbus *bus = to_intel_gmbus(adapter); 844 - struct drm_i915_private *i915 = bus->i915; 833 + struct intel_display *display = bus->display; 845 834 846 - mutex_lock(&i915->display.gmbus.mutex); 835 + mutex_lock(&display->gmbus.mutex); 847 836 } 848 837 849 838 static int gmbus_trylock_bus(struct i2c_adapter *adapter, 850 839 unsigned int flags) 851 840 { 852 841 struct intel_gmbus *bus = to_intel_gmbus(adapter); 853 - struct drm_i915_private *i915 = bus->i915; 842 + struct intel_display *display = bus->display; 854 843 855 - return mutex_trylock(&i915->display.gmbus.mutex); 844 + return mutex_trylock(&display->gmbus.mutex); 856 845 } 857 846 858 847 static void gmbus_unlock_bus(struct i2c_adapter *adapter, 859 848 unsigned int flags) 860 849 { 861 850 struct intel_gmbus *bus = to_intel_gmbus(adapter); 862 - struct drm_i915_private *i915 = bus->i915; 851 + struct intel_display *display = bus->display; 863 852 864 - mutex_unlock(&i915->display.gmbus.mutex); 853 + mutex_unlock(&display->gmbus.mutex); 865 854 } 866 855 867 856 static const struct i2c_lock_operations gmbus_lock_ops = { ··· 872 861 873 862 /** 874 863 * intel_gmbus_setup - instantiate all Intel i2c GMBuses 875 - * @i915: i915 device private 864 + * @display: display device 876 865 */ 877 - int intel_gmbus_setup(struct drm_i915_private *i915) 866 + int intel_gmbus_setup(struct intel_display *display) 878 867 { 879 - struct pci_dev *pdev = to_pci_dev(i915->drm.dev); 868 + struct drm_i915_private *i915 = to_i915(display->drm); 869 + struct pci_dev *pdev = to_pci_dev(display->drm->dev); 880 870 unsigned int pin; 881 871 int ret; 882 872 883 873 if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) 884 - i915->display.gmbus.mmio_base = VLV_DISPLAY_BASE; 885 - else if (!HAS_GMCH(i915)) 874 + display->gmbus.mmio_base = VLV_DISPLAY_BASE; 875 + else if (!HAS_GMCH(display)) 886 876 /* 887 877 * Broxton uses the same PCH offsets for South Display Engine, 888 878 * even though it doesn't have a PCH. 889 879 */ 890 - i915->display.gmbus.mmio_base = PCH_DISPLAY_BASE; 880 + display->gmbus.mmio_base = PCH_DISPLAY_BASE; 891 881 892 - mutex_init(&i915->display.gmbus.mutex); 893 - init_waitqueue_head(&i915->display.gmbus.wait_queue); 882 + mutex_init(&display->gmbus.mutex); 883 + init_waitqueue_head(&display->gmbus.wait_queue); 894 884 895 - for (pin = 0; pin < ARRAY_SIZE(i915->display.gmbus.bus); pin++) { 885 + for (pin = 0; pin < ARRAY_SIZE(display->gmbus.bus); pin++) { 896 886 const struct gmbus_pin *gmbus_pin; 897 887 struct intel_gmbus *bus; 898 888 899 - gmbus_pin = get_gmbus_pin(i915, pin); 889 + gmbus_pin = get_gmbus_pin(display, pin); 900 890 if (!gmbus_pin) 901 891 continue; 902 892 ··· 913 901 "i915 gmbus %s", gmbus_pin->name); 914 902 915 903 bus->adapter.dev.parent = &pdev->dev; 916 - bus->i915 = i915; 904 + bus->display = display; 917 905 918 906 bus->adapter.algo = &gmbus_algorithm; 919 907 bus->adapter.lock_ops = &gmbus_lock_ops; ··· 931 919 if (IS_I830(i915)) 932 920 bus->force_bit = 1; 933 921 934 - intel_gpio_setup(bus, GPIO(i915, gmbus_pin->gpio)); 922 + intel_gpio_setup(bus, GPIO(display, gmbus_pin->gpio)); 935 923 936 924 ret = i2c_add_adapter(&bus->adapter); 937 925 if (ret) { ··· 939 927 goto err; 940 928 } 941 929 942 - i915->display.gmbus.bus[pin] = bus; 930 + display->gmbus.bus[pin] = bus; 943 931 } 944 932 945 - intel_gmbus_reset(i915); 933 + intel_gmbus_reset(display); 946 934 947 935 return 0; 948 936 949 937 err: 950 - intel_gmbus_teardown(i915); 938 + intel_gmbus_teardown(display); 951 939 952 940 return ret; 953 941 } 954 942 955 - struct i2c_adapter *intel_gmbus_get_adapter(struct drm_i915_private *i915, 943 + struct i2c_adapter *intel_gmbus_get_adapter(struct intel_display *display, 956 944 unsigned int pin) 957 945 { 958 - if (drm_WARN_ON(&i915->drm, pin >= ARRAY_SIZE(i915->display.gmbus.bus) || 959 - !i915->display.gmbus.bus[pin])) 946 + if (drm_WARN_ON(display->drm, pin >= ARRAY_SIZE(display->gmbus.bus) || 947 + !display->gmbus.bus[pin])) 960 948 return NULL; 961 949 962 - return &i915->display.gmbus.bus[pin]->adapter; 950 + return &display->gmbus.bus[pin]->adapter; 963 951 } 964 952 965 953 void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit) 966 954 { 967 955 struct intel_gmbus *bus = to_intel_gmbus(adapter); 968 - struct drm_i915_private *i915 = bus->i915; 956 + struct intel_display *display = bus->display; 969 957 970 - mutex_lock(&i915->display.gmbus.mutex); 958 + mutex_lock(&display->gmbus.mutex); 971 959 972 960 bus->force_bit += force_bit ? 1 : -1; 973 - drm_dbg_kms(&i915->drm, 961 + drm_dbg_kms(display->drm, 974 962 "%sabling bit-banging on %s. force bit now %d\n", 975 963 force_bit ? "en" : "dis", adapter->name, 976 964 bus->force_bit); 977 965 978 - mutex_unlock(&i915->display.gmbus.mutex); 966 + mutex_unlock(&display->gmbus.mutex); 979 967 } 980 968 981 969 bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter) ··· 985 973 return bus->force_bit; 986 974 } 987 975 988 - void intel_gmbus_teardown(struct drm_i915_private *i915) 976 + void intel_gmbus_teardown(struct intel_display *display) 989 977 { 990 978 unsigned int pin; 991 979 992 - for (pin = 0; pin < ARRAY_SIZE(i915->display.gmbus.bus); pin++) { 980 + for (pin = 0; pin < ARRAY_SIZE(display->gmbus.bus); pin++) { 993 981 struct intel_gmbus *bus; 994 982 995 - bus = i915->display.gmbus.bus[pin]; 983 + bus = display->gmbus.bus[pin]; 996 984 if (!bus) 997 985 continue; 998 986 999 987 i2c_del_adapter(&bus->adapter); 1000 988 1001 989 kfree(bus); 1002 - i915->display.gmbus.bus[pin] = NULL; 990 + display->gmbus.bus[pin] = NULL; 1003 991 } 1004 992 } 1005 993 1006 - void intel_gmbus_irq_handler(struct drm_i915_private *i915) 994 + void intel_gmbus_irq_handler(struct intel_display *display) 1007 995 { 1008 - wake_up_all(&i915->display.gmbus.wait_queue); 996 + wake_up_all(&display->gmbus.wait_queue); 1009 997 }
+7 -8
drivers/gpu/drm/i915/display/intel_gmbus.h
··· 8 8 9 9 #include <linux/types.h> 10 10 11 - struct drm_i915_private; 12 11 struct i2c_adapter; 12 + struct intel_display; 13 13 14 14 #define GMBUS_PIN_DISABLED 0 15 15 #define GMBUS_PIN_SSC 1 ··· 34 34 35 35 #define GMBUS_NUM_PINS 15 /* including 0 */ 36 36 37 - int intel_gmbus_setup(struct drm_i915_private *dev_priv); 38 - void intel_gmbus_teardown(struct drm_i915_private *dev_priv); 39 - bool intel_gmbus_is_valid_pin(struct drm_i915_private *dev_priv, 40 - unsigned int pin); 37 + int intel_gmbus_setup(struct intel_display *display); 38 + void intel_gmbus_teardown(struct intel_display *display); 39 + bool intel_gmbus_is_valid_pin(struct intel_display *display, unsigned int pin); 41 40 int intel_gmbus_output_aksv(struct i2c_adapter *adapter); 42 41 43 42 struct i2c_adapter * 44 - intel_gmbus_get_adapter(struct drm_i915_private *dev_priv, unsigned int pin); 43 + intel_gmbus_get_adapter(struct intel_display *display, unsigned int pin); 45 44 void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit); 46 45 bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter); 47 - void intel_gmbus_reset(struct drm_i915_private *dev_priv); 46 + void intel_gmbus_reset(struct intel_display *display); 48 47 49 - void intel_gmbus_irq_handler(struct drm_i915_private *i915); 48 + void intel_gmbus_irq_handler(struct intel_display *display); 50 49 51 50 #endif /* __INTEL_GMBUS_H__ */
+8 -8
drivers/gpu/drm/i915/display/intel_gmbus_regs.h
··· 8 8 9 9 #include "i915_reg_defs.h" 10 10 11 - #define GMBUS_MMIO_BASE(__i915) ((__i915)->display.gmbus.mmio_base) 11 + #define __GMBUS_MMIO_BASE(__display) ((__display)->gmbus.mmio_base) 12 12 13 - #define GPIO(__i915, gpio) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5010 + 4 * (gpio)) 13 + #define GPIO(__display, gpio) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5010 + 4 * (gpio)) 14 14 #define GPIO_CLOCK_DIR_MASK (1 << 0) 15 15 #define GPIO_CLOCK_DIR_IN (0 << 1) 16 16 #define GPIO_CLOCK_DIR_OUT (1 << 1) ··· 27 27 #define GPIO_DATA_PULLUP_DISABLE (1 << 13) 28 28 29 29 /* clock/port select */ 30 - #define GMBUS0(__i915) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5100) 30 + #define GMBUS0(__display) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5100) 31 31 #define GMBUS_AKSV_SELECT (1 << 11) 32 32 #define GMBUS_RATE_100KHZ (0 << 8) 33 33 #define GMBUS_RATE_50KHZ (1 << 8) ··· 37 37 #define GMBUS_BYTE_CNT_OVERRIDE (1 << 6) 38 38 39 39 /* command/status */ 40 - #define GMBUS1(__i915) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5104) 40 + #define GMBUS1(__display) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5104) 41 41 #define GMBUS_SW_CLR_INT (1 << 31) 42 42 #define GMBUS_SW_RDY (1 << 30) 43 43 #define GMBUS_ENT (1 << 29) /* enable timeout */ ··· 54 54 #define GMBUS_SLAVE_WRITE (0 << 0) 55 55 56 56 /* status */ 57 - #define GMBUS2(__i915) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5108) 57 + #define GMBUS2(__display) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5108) 58 58 #define GMBUS_INUSE (1 << 15) 59 59 #define GMBUS_HW_WAIT_PHASE (1 << 14) 60 60 #define GMBUS_STALL_TIMEOUT (1 << 13) ··· 64 64 #define GMBUS_ACTIVE (1 << 9) 65 65 66 66 /* data buffer bytes 3-0 */ 67 - #define GMBUS3(__i915) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x510c) 67 + #define GMBUS3(__display) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x510c) 68 68 69 69 /* interrupt mask (Pineview+) */ 70 - #define GMBUS4(__i915) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5110) 70 + #define GMBUS4(__display) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5110) 71 71 #define GMBUS_SLAVE_TIMEOUT_EN (1 << 4) 72 72 #define GMBUS_NAK_EN (1 << 3) 73 73 #define GMBUS_IDLE_EN (1 << 2) ··· 75 75 #define GMBUS_HW_RDY_EN (1 << 0) 76 76 77 77 /* byte index */ 78 - #define GMBUS5(__i915) _MMIO(GMBUS_MMIO_BASE(__i915) + 0x5120) 78 + #define GMBUS5(__display) _MMIO(__GMBUS_MMIO_BASE(__display) + 0x5120) 79 79 #define GMBUS_2BYTE_INDEX_EN (1 << 31) 80 80 81 81 #endif /* __INTEL_GMBUS_REGS_H__ */
+3 -5
drivers/gpu/drm/i915/display/intel_hdmi.c
··· 2918 2918 get_encoder_by_ddc_pin(struct intel_encoder *encoder, u8 ddc_pin) 2919 2919 { 2920 2920 struct intel_display *display = to_intel_display(encoder); 2921 - struct drm_i915_private *i915 = to_i915(encoder->base.dev); 2922 2921 struct intel_encoder *other; 2923 2922 2924 2923 for_each_intel_encoder(display->drm, other) { ··· 2931 2932 2932 2933 connector = enc_to_dig_port(other)->hdmi.attached_connector; 2933 2934 2934 - if (connector && connector->base.ddc == intel_gmbus_get_adapter(i915, ddc_pin)) 2935 + if (connector && connector->base.ddc == intel_gmbus_get_adapter(display, ddc_pin)) 2935 2936 return other; 2936 2937 } 2937 2938 ··· 2941 2942 static u8 intel_hdmi_ddc_pin(struct intel_encoder *encoder) 2942 2943 { 2943 2944 struct intel_display *display = to_intel_display(encoder); 2944 - struct drm_i915_private *i915 = to_i915(encoder->base.dev); 2945 2945 struct intel_encoder *other; 2946 2946 const char *source; 2947 2947 u8 ddc_pin; ··· 2953 2955 source = "platform default"; 2954 2956 } 2955 2957 2956 - if (!intel_gmbus_is_valid_pin(i915, ddc_pin)) { 2958 + if (!intel_gmbus_is_valid_pin(display, ddc_pin)) { 2957 2959 drm_dbg_kms(display->drm, 2958 2960 "[ENCODER:%d:%s] Invalid DDC pin %d\n", 2959 2961 encoder->base.base.id, encoder->base.name, ddc_pin); ··· 3051 3053 drm_connector_init_with_ddc(dev, connector, 3052 3054 &intel_hdmi_connector_funcs, 3053 3055 DRM_MODE_CONNECTOR_HDMIA, 3054 - intel_gmbus_get_adapter(dev_priv, ddc_pin)); 3056 + intel_gmbus_get_adapter(display, ddc_pin)); 3055 3057 3056 3058 drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); 3057 3059
+4 -2
drivers/gpu/drm/i915/display/intel_hotplug_irq.c
··· 556 556 557 557 void icp_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir) 558 558 { 559 + struct intel_display *display = &dev_priv->display; 559 560 u32 ddi_hotplug_trigger = pch_iir & SDE_DDI_HOTPLUG_MASK_ICP; 560 561 u32 tc_hotplug_trigger = pch_iir & SDE_TC_HOTPLUG_MASK_ICP; 561 562 u32 pin_mask = 0, long_mask = 0; ··· 590 589 intel_hpd_irq_handler(dev_priv, pin_mask, long_mask); 591 590 592 591 if (pch_iir & SDE_GMBUS_ICP) 593 - intel_gmbus_irq_handler(dev_priv); 592 + intel_gmbus_irq_handler(display); 594 593 } 595 594 596 595 void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir) 597 596 { 597 + struct intel_display *display = &dev_priv->display; 598 598 u32 hotplug_trigger = pch_iir & SDE_HOTPLUG_MASK_SPT & 599 599 ~SDE_PORTE_HOTPLUG_SPT; 600 600 u32 hotplug2_trigger = pch_iir & SDE_PORTE_HOTPLUG_SPT; ··· 627 625 intel_hpd_irq_handler(dev_priv, pin_mask, long_mask); 628 626 629 627 if (pch_iir & SDE_GMBUS_CPT) 630 - intel_gmbus_irq_handler(dev_priv); 628 + intel_gmbus_irq_handler(display); 631 629 } 632 630 633 631 void ilk_hpd_irq_handler(struct drm_i915_private *dev_priv, u32 hotplug_trigger)
+1 -1
drivers/gpu/drm/i915/display/intel_lvds.c
··· 901 901 drm_connector_init_with_ddc(&i915->drm, &connector->base, 902 902 &intel_lvds_connector_funcs, 903 903 DRM_MODE_CONNECTOR_LVDS, 904 - intel_gmbus_get_adapter(i915, ddc_pin)); 904 + intel_gmbus_get_adapter(display, ddc_pin)); 905 905 906 906 drm_encoder_init(&i915->drm, &encoder->base, &intel_lvds_enc_funcs, 907 907 DRM_MODE_ENCODER_LVDS, "LVDS");
+5 -4
drivers/gpu/drm/i915/display/intel_sdvo.c
··· 2082 2082 static const struct drm_edid * 2083 2083 intel_sdvo_get_analog_edid(struct drm_connector *connector) 2084 2084 { 2085 - struct drm_i915_private *i915 = to_i915(connector->dev); 2085 + struct intel_display *display = to_intel_display(connector->dev); 2086 2086 struct i2c_adapter *ddc; 2087 2087 2088 - ddc = intel_gmbus_get_adapter(i915, i915->display.vbt.crt_ddc_pin); 2088 + ddc = intel_gmbus_get_adapter(display, display->vbt.crt_ddc_pin); 2089 2089 if (!ddc) 2090 2090 return NULL; 2091 2091 ··· 2638 2638 static void 2639 2639 intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo) 2640 2640 { 2641 + struct intel_display *display = to_intel_display(&sdvo->base); 2641 2642 struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); 2642 2643 const struct sdvo_device_mapping *mapping; 2643 2644 u8 pin; ··· 2649 2648 mapping = &dev_priv->display.vbt.sdvo_mappings[1]; 2650 2649 2651 2650 if (mapping->initialized && 2652 - intel_gmbus_is_valid_pin(dev_priv, mapping->i2c_pin)) 2651 + intel_gmbus_is_valid_pin(display, mapping->i2c_pin)) 2653 2652 pin = mapping->i2c_pin; 2654 2653 else 2655 2654 pin = GMBUS_PIN_DPB; ··· 2658 2657 sdvo->base.base.base.id, sdvo->base.base.name, 2659 2658 pin, sdvo->target_addr); 2660 2659 2661 - sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin); 2660 + sdvo->i2c = intel_gmbus_get_adapter(display, pin); 2662 2661 2663 2662 /* 2664 2663 * With gmbus we should be able to drive sdvo i2c at 2MHz, but somehow
+1 -1
drivers/gpu/drm/i915/i915_suspend.c
··· 137 137 138 138 intel_vga_redisable(display); 139 139 140 - intel_gmbus_reset(dev_priv); 140 + intel_gmbus_reset(display); 141 141 }