diff options
author | jhb <jhb@FreeBSD.org> | 2016-01-18 20:44:29 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2016-01-18 20:44:29 +0000 |
commit | 93e78d3449fcc4e034e0fe7f864ec2bf478c2098 (patch) | |
tree | 9e338fe5e8537504188fef72ba9a19ada2ee35a3 | |
parent | e8ea29ce3a280c52021a65c3ddffc10fd54eef8b (diff) | |
download | FreeBSD-src-93e78d3449fcc4e034e0fe7f864ec2bf478c2098.zip FreeBSD-src-93e78d3449fcc4e034e0fe7f864ec2bf478c2098.tar.gz |
MFC 292409:
It seems certain Intel GPUs use GPIO bitbanging over a child device
instead of GMBUS access for I2C transfers. The GMBUS driver falls back
to this mode when a transfer times out. However, the first transfer to
timeout was sending the request back to itself resulting in an panic due
to recursing on a lock. Fix it to forward the request on to the proper
device. This appears to have been accidentally changed in r277487.
-rw-r--r-- | sys/dev/drm2/i915/intel_iic.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/dev/drm2/i915/intel_iic.c b/sys/dev/drm2/i915/intel_iic.c index 36a5b9e..30be2efb 100644 --- a/sys/dev/drm2/i915/intel_iic.c +++ b/sys/dev/drm2/i915/intel_iic.c @@ -467,8 +467,7 @@ timeout: * Try GPIO bitbanging instead. */ sc->force_bit_dev = true; - error = -IICBUS_TRANSFER(idev, msgs, nmsgs); - goto out; + error = -IICBUS_TRANSFER(dev_priv->bbbus[unit], msgs, nmsgs); out: sx_xunlock(&dev_priv->gmbus_sx); |