Messages in this thread | | | From | Chris Wilson <> | Subject | Re: [PATCH 08/13 v4] drm/i915/intel_i2c: handle zero-length writes | Date | Tue, 27 Mar 2012 20:14:04 +0100 |
| |
On Wed, 28 Mar 2012 02:36:17 +0800, Daniel Kurtz <djkurtz@chromium.org> wrote: > A common method of probing an i2c bus is trying to do a zero-length write. > Handle this case by checking the length first before decrementing it. > > This is actually important, since attempting a zero-length write is one > of the ways that i2cdetect and i2c_new_probed_device detect whether > there is device present on the bus with a given address. > > Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> > --- > drivers/gpu/drm/i915/intel_i2c.c | 5 +++-- > 1 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c > index c12db72..5a94e9b 100644 > --- a/drivers/gpu/drm/i915/intel_i2c.c > +++ b/drivers/gpu/drm/i915/intel_i2c.c > @@ -248,9 +248,10 @@ gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg, > u32 val, loop; > > val = loop = 0; > - do { > + while (len && loop < 4) { while (len-- && loop < 4)
> val |= *buf++ << (8 * loop); > - } while (--len && ++loop < 4); > + len -= 1; Otherwise this looks too pythonesque ;-)
> + }
-- Chris Wilson, Intel Open Source Technology Centre
| |