From 691cc0b30999e8dd7efda1f1991ec6c3754e51b3 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Sat, 9 Jul 2011 19:36:11 -0300 Subject: [PATCH] --- yaml --- r: 261511 b: refs/heads/master c: bbc70e647b04dc3df1c879089a4f6b633c1952c9 h: refs/heads/master i: 261509: f739e28d328053270993b9121a21a4428ba3df81 261507: eabd93cee528fdc0aebe51ff93b6defd9a0a4e84 261503: 884d53e7437824581c5ac2ecb5e01063b1280abe v: v3 --- [refs] | 2 +- trunk/drivers/media/video/em28xx/em28xx-i2c.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 02703f56f41b..0a1a6c74ba48 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e4f4f8758b4c3702761e46f24ee99e34823a0f28 +refs/heads/master: bbc70e647b04dc3df1c879089a4f6b633c1952c9 diff --git a/trunk/drivers/media/video/em28xx/em28xx-i2c.c b/trunk/drivers/media/video/em28xx/em28xx-i2c.c index 548d2df391ca..36f5a9bc8b76 100644 --- a/trunk/drivers/media/video/em28xx/em28xx-i2c.c +++ b/trunk/drivers/media/video/em28xx/em28xx-i2c.c @@ -181,16 +181,25 @@ static int em2800_i2c_recv_bytes(struct em28xx *dev, unsigned char addr, /* * em28xx_i2c_send_bytes() - * untested for more than 4 bytes */ static int em28xx_i2c_send_bytes(void *data, unsigned char addr, char *buf, short len, int stop) { int wrcount = 0; struct em28xx *dev = (struct em28xx *)data; + int write_timeout, ret; wrcount = dev->em28xx_write_regs_req(dev, stop ? 2 : 3, addr, buf, len); + /* Seems to be required after a write */ + for (write_timeout = EM2800_I2C_WRITE_TIMEOUT; write_timeout > 0; + write_timeout -= 5) { + ret = dev->em28xx_read_reg(dev, 0x05); + if (!ret) + break; + msleep(5); + } + return wrcount; }