fb_ddc: Allow I2C adapters without SCL read capability
i2c-algo-bit allows I2C adapters without SCL read capability to work but fb_ddc_read fails to work on them. Fix fb_ddc_read to work with I2C adapters not capable of reading SCL. Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
3ac58d5808
commit
ec90631c8a
|
@ -67,13 +67,17 @@ unsigned char *fb_ddc_read(struct i2c_adapter *adapter)
|
||||||
msleep(13);
|
msleep(13);
|
||||||
|
|
||||||
algo_data->setscl(algo_data->data, 1);
|
algo_data->setscl(algo_data->data, 1);
|
||||||
for (j = 0; j < 5; j++) {
|
if (algo_data->getscl) {
|
||||||
msleep(10);
|
for (j = 0; j < 5; j++) {
|
||||||
if (algo_data->getscl(algo_data->data))
|
msleep(10);
|
||||||
break;
|
if (algo_data->getscl(algo_data->data))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (j == 5)
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
udelay(algo_data->udelay);
|
||||||
}
|
}
|
||||||
if (j == 5)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
algo_data->setsda(algo_data->data, 0);
|
algo_data->setsda(algo_data->data, 0);
|
||||||
msleep(15);
|
msleep(15);
|
||||||
|
@ -89,10 +93,14 @@ unsigned char *fb_ddc_read(struct i2c_adapter *adapter)
|
||||||
msleep(15);
|
msleep(15);
|
||||||
|
|
||||||
algo_data->setscl(algo_data->data, 1);
|
algo_data->setscl(algo_data->data, 1);
|
||||||
for (j = 0; j < 10; j++) {
|
if (algo_data->getscl) {
|
||||||
msleep(10);
|
for (j = 0; j < 10; j++) {
|
||||||
if (algo_data->getscl(algo_data->data))
|
msleep(10);
|
||||||
break;
|
if (algo_data->getscl(algo_data->data))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
udelay(algo_data->udelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
algo_data->setsda(algo_data->data, 1);
|
algo_data->setsda(algo_data->data, 1);
|
||||||
|
|
Loading…
Reference in New Issue