diff options
Diffstat (limited to 'drivers/media/usb/gspca/sonixb.c')
| -rw-r--r-- | drivers/media/usb/gspca/sonixb.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/media/usb/gspca/sonixb.c b/drivers/media/usb/gspca/sonixb.c index 70511d5f953..1220340e760 100644 --- a/drivers/media/usb/gspca/sonixb.c +++ b/drivers/media/usb/gspca/sonixb.c @@ -496,7 +496,7 @@ static void reg_w(struct gspca_dev *gspca_dev,  	}  } -static void i2c_w(struct gspca_dev *gspca_dev, const __u8 *buffer) +static void i2c_w(struct gspca_dev *gspca_dev, const u8 *buf)  {  	int retry = 60; @@ -504,16 +504,19 @@ static void i2c_w(struct gspca_dev *gspca_dev, const __u8 *buffer)  		return;  	/* is i2c ready */ -	reg_w(gspca_dev, 0x08, buffer, 8); +	reg_w(gspca_dev, 0x08, buf, 8);  	while (retry--) {  		if (gspca_dev->usb_err < 0)  			return; -		msleep(10); +		msleep(1);  		reg_r(gspca_dev, 0x08);  		if (gspca_dev->usb_buf[0] & 0x04) {  			if (gspca_dev->usb_buf[0] & 0x08) {  				dev_err(gspca_dev->v4l2_dev.dev, -					"i2c write error\n"); +					"i2c error writing %02x %02x %02x %02x" +					" %02x %02x %02x %02x\n", +					buf[0], buf[1], buf[2], buf[3], +					buf[4], buf[5], buf[6], buf[7]);  				gspca_dev->usb_err = -EIO;  			}  			return; @@ -530,7 +533,7 @@ static void i2c_w_vector(struct gspca_dev *gspca_dev,  	for (;;) {  		if (gspca_dev->usb_err < 0)  			return; -		reg_w(gspca_dev, 0x08, *buffer, 8); +		i2c_w(gspca_dev, *buffer);  		len -= 8;  		if (len <= 0)  			break;  |