| From ae5c631e605a452a5a0e73205a92810c01ed954b Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com> |
| Date: Thu, 23 Nov 2017 21:41:56 +0200 |
| Subject: drm/i915: Don't try indexed reads to alternate slave addresses |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| |
| commit ae5c631e605a452a5a0e73205a92810c01ed954b upstream. |
| |
| 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: 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: 56f9eac05489 ("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 commit c4deb62d7821672265b87952bcd1c808f3bf3e8f) |
| Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/intel_i2c.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/gpu/drm/i915/intel_i2c.c |
| +++ b/drivers/gpu/drm/i915/intel_i2c.c |
| @@ -440,6 +440,7 @@ static bool |
| gmbus_is_index_read(struct i2c_msg *msgs, int i, int num) |
| { |
| return (i + 1 < num && |
| + msgs[i].addr == msgs[i + 1].addr && |
| !(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 && |
| (msgs[i + 1].flags & I2C_M_RD)); |
| } |