Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 181547
b: refs/heads/master
c: ed7c847
h: refs/heads/master
i:
  181545: dc353a9
  181543: 0f61005
v: v3
  • Loading branch information
Igor M. Liplianin authored and Mauro Carvalho Chehab committed Feb 26, 2010
1 parent 0ba1d77 commit 06bfcc9
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 35 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8f50a3ee726b682f7481d29883d768bbd027788a
refs/heads/master: ed7c847aef137a5e1f5de0eac0ad2c03e183839d
66 changes: 32 additions & 34 deletions trunk/drivers/media/dvb/dm1105/dm1105.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,41 +346,19 @@ static int dm1105_i2c_xfer(struct i2c_adapter *i2c_adap,
goto err;
msgs[i].buf[byte] = rc;
}
} else {
if ((msgs[i].buf[0] == 0xf7) && (msgs[i].addr == 0x55)) {
/* prepaired for cx24116 firmware */
/* Write in small blocks */
len = msgs[i].len - 1;
k = 1;
do {
outb(msgs[i].addr << 1, dm_io_mem(DM1105_I2CDAT));
outb(0xf7, dm_io_mem(DM1105_I2CDAT + 1));
for (byte = 0; byte < (len > 48 ? 48 : len); byte++) {
data = msgs[i].buf[k+byte];
outb(data, dm_io_mem(DM1105_I2CDAT + byte + 2));
}
outb(0x82 + (len > 48 ? 48 : len), dm_io_mem(DM1105_I2CCTR));
for (j = 0; j < 25; j++) {
mdelay(10);
status = inb(dm_io_mem(DM1105_I2CSTS));
if ((status & 0xc0) == 0x40)
break;
}

if (j >= 25)
return -1;

k += 48;
len -= 48;
} while (len > 0);
} else {
/* write bytes */
outb(msgs[i].addr<<1, dm_io_mem(DM1105_I2CDAT));
for (byte = 0; byte < msgs[i].len; byte++) {
data = msgs[i].buf[byte];
outb(data, dm_io_mem(DM1105_I2CDAT + byte + 1));
} else if ((msgs[i].buf[0] == 0xf7) && (msgs[i].addr == 0x55)) {
/* prepaired for cx24116 firmware */
/* Write in small blocks */
len = msgs[i].len - 1;
k = 1;
do {
outb(msgs[i].addr << 1, dm_io_mem(DM1105_I2CDAT));
outb(0xf7, dm_io_mem(DM1105_I2CDAT + 1));
for (byte = 0; byte < (len > 48 ? 48 : len); byte++) {
data = msgs[i].buf[k + byte];
outb(data, dm_io_mem(DM1105_I2CDAT + byte + 2));
}
outb(0x81 + msgs[i].len, dm_io_mem(DM1105_I2CCTR));
outb(0x82 + (len > 48 ? 48 : len), dm_io_mem(DM1105_I2CCTR));
for (j = 0; j < 25; j++) {
mdelay(10);
status = inb(dm_io_mem(DM1105_I2CSTS));
Expand All @@ -390,7 +368,27 @@ static int dm1105_i2c_xfer(struct i2c_adapter *i2c_adap,

if (j >= 25)
return -1;

k += 48;
len -= 48;
} while (len > 0);
} else {
/* write bytes */
outb(msgs[i].addr<<1, dm_io_mem(DM1105_I2CDAT));
for (byte = 0; byte < msgs[i].len; byte++) {
data = msgs[i].buf[byte];
outb(data, dm_io_mem(DM1105_I2CDAT + byte + 1));
}
outb(0x81 + msgs[i].len, dm_io_mem(DM1105_I2CCTR));
for (j = 0; j < 25; j++) {
mdelay(10);
status = inb(dm_io_mem(DM1105_I2CSTS));
if ((status & 0xc0) == 0x40)
break;
}

if (j >= 25)
return -1;
}
}
return num;
Expand Down

0 comments on commit 06bfcc9

Please sign in to comment.