drm/i915: Don't try indexed reads to alternate slave addresses
We can only specify the one slave address to indexed reads/writes. Make sure the messages we check are destined to the same slave address before deciding to do an indexed transfer. Cc: stable@vger.kernel.org Cc: Daniel Kurtz <djkurtz@chromium.org> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Sean Paul <seanpaul@chromium.org> Fixes:56f9eac054
("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions") Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-2-ville.syrjala@linux.intel.com Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (cherry picked from commitc4deb62d78
) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
This commit is contained in:
parent
4fbd8d194f
commit
ae5c631e60
|
@ -438,6 +438,7 @@ static bool
|
||||||
gmbus_is_index_read(struct i2c_msg *msgs, int i, int num)
|
gmbus_is_index_read(struct i2c_msg *msgs, int i, int num)
|
||||||
{
|
{
|
||||||
return (i + 1 < num &&
|
return (i + 1 < num &&
|
||||||
|
msgs[i].addr == msgs[i + 1].addr &&
|
||||||
!(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 &&
|
!(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 &&
|
||||||
(msgs[i + 1].flags & I2C_M_RD));
|
(msgs[i + 1].flags & I2C_M_RD));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue