History

Merge tag 'drm-intel-fixes-2015-06-11' of git://anongit.freedesktop.org/drm-intel into drm-fixes

Fix for the regression Linus called out, and another for probing dongles. * tag 'drm-intel-fixes-2015-06-11' of git://anongit.freedesktop.org/drm-intel: drm/i915: Fix DDC probe for passive adapters drm/i915: Properly initialize SDVO analog connectors

Dave Airlie committed 11 years ago

Commit 6e2eb002 parents 950c370 3f5f1552 files · +18 −4Browse files

Unified · Split

2 files
  1. drivers/gpu/drm/i915/intel_i2c.c +17 −3
  2. drivers/gpu/drm/i915/intel_sdvo.c +1 −1
drivers/gpu/drm/i915/intel_i2c.c+17−3
@@ -435,7 +435,7 @@ gmbus_xfer(struct i2c_adapter *adapter, · 434 unmodified lines
435 struct intel_gmbus,435 struct intel_gmbus,
436 adapter);436 adapter);
437 struct drm_i915_private *dev_priv = bus->dev_priv;437 struct drm_i915_private *dev_priv = bus->dev_priv;
438 int i, reg_offset;438 int i = 0, inc, try = 0, reg_offset;
439 int ret = 0;439 int ret = 0;
440 440
441 intel_aux_display_runtime_get(dev_priv);441 intel_aux_display_runtime_get(dev_priv);
@@ -448,12 +448,14 @@ gmbus_xfer(struct i2c_adapter *adapter, · 6 unmodified lines
448 448
449 reg_offset = dev_priv->gpio_mmio_base;449 reg_offset = dev_priv->gpio_mmio_base;
450 450
451retry:
451 I915_WRITE(GMBUS0 + reg_offset, bus->reg0);452 I915_WRITE(GMBUS0 + reg_offset, bus->reg0);
452 453
453 for (i = 0; i < num; i++) {454 for (; i < num; i += inc) {
455 inc = 1;
454 if (gmbus_is_index_read(msgs, i, num)) {456 if (gmbus_is_index_read(msgs, i, num)) {
455 ret = gmbus_xfer_index_read(dev_priv, &msgs[i]);457 ret = gmbus_xfer_index_read(dev_priv, &msgs[i]);
456 i += 1; /* set i to the index of the read xfer */458 inc = 2; /* an index read is two msgs */
457 } else if (msgs[i].flags & I2C_M_RD) {459 } else if (msgs[i].flags & I2C_M_RD) {
458 ret = gmbus_xfer_read(dev_priv, &msgs[i], 0);460 ret = gmbus_xfer_read(dev_priv, &msgs[i], 0);
459 } else {461 } else {
@@ -525,6 +527,18 @@ clear_err: · 65 unmodified lines
525 adapter->name, msgs[i].addr,527 adapter->name, msgs[i].addr,
526 (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len);528 (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len);
527 529
530 /*
531 * Passive adapters sometimes NAK the first probe. Retry the first
532 * message once on -ENXIO for GMBUS transfers; the bit banging algorithm
533 * has retries internally. See also the retry loop in
534 * drm_do_probe_ddc_edid, which bails out on the first -ENXIO.
535 */
536 if (ret == -ENXIO && i == 0 && try++ == 0) {
537 DRM_DEBUG_KMS("GMBUS [%s] NAK on first message, retry\n",
538 adapter->name);
539 goto retry;
540 }
541
528 goto out;542 goto out;
529 543
530timeout:544timeout:
drivers/gpu/drm/i915/intel_sdvo.c+1−1
@@ -2550,7 +2550,7 @@ intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device) · 2549 unmodified lines
2550 2550
2551 DRM_DEBUG_KMS("initialising analog device %d\n", device);2551 DRM_DEBUG_KMS("initialising analog device %d\n", device);
2552 2552
2553 intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL);2553 intel_sdvo_connector = intel_sdvo_connector_alloc();
2554 if (!intel_sdvo_connector)2554 if (!intel_sdvo_connector)
2555 return false;2555 return false;
2556 2556

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t