t 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.

Reported by:	Joe Maloney <jmaloney@pcbsd.org>
Reviewed by:	adrian, dumbbell, imp
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D4599
This commit is contained in:
John Baldwin 2015-12-17 20:33:20 +00:00
parent 22f393c35d
commit 544f167747
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=292409

View File

@ -456,7 +456,7 @@ gmbus_xfer(device_t adapter,
/* Hardware may not support GMBUS over these pins? Try GPIO bitbanging instead. */
sc->force_bit_dev = true;
error = -IICBUS_TRANSFER(adapter, msgs, num);
error = -IICBUS_TRANSFER(dev_priv->bbbus[unit], msgs, num);
out:
sx_xunlock(&dev_priv->gmbus_sx);