mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 17:51:43 +00:00
V4L/DVB: dm1105: connect splitted else-if statements
Signed-off-by: Igor M. Liplianin <liplianin@me.by> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
8f50a3ee72
commit
ed7c847aef
@ -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));
|
||||
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user