aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitri Belimov <d.belimov@gmail.com>2010-05-18 03:23:29 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-06-01 00:21:57 -0400
commit2a15ac7ad625dc22885446016d730a451df1b7d4 (patch)
tree998db1de83ad0ea93073562deac1896ad0e43065
parentb9eb39d8f419d76e1d59febe48a6791f1fbb68c4 (diff)
V4L/DVB: tm6000, reset I2C bus function
Add new function for reset I2C bus. Rework some code for use this function. Signed-off-by: Beholder Intl. Ltd. Dmitry Belimov <d.belimov@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/staging/tm6000/tm6000-cards.c17
-rw-r--r--drivers/staging/tm6000/tm6000-core.c16
-rw-r--r--drivers/staging/tm6000/tm6000.h2
3 files changed, 20 insertions, 15 deletions
diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
index 33b134b521be..22fbd75a551d 100644
--- a/drivers/staging/tm6000/tm6000-cards.c
+++ b/drivers/staging/tm6000/tm6000-cards.c
@@ -363,13 +363,7 @@ int tm6000_tuner_callback(void *ptr, int component, int command, int arg)
363 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 363 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT,
364 0x02, arg); 364 0x02, arg);
365 msleep(10); 365 msleep(10);
366 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, 366 rc = tm6000_i2c_reset(dev, 10);
367 TM6000_GPIO_CLK, 0);
368 if (rc < 0)
369 return rc;
370 msleep(10);
371 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN,
372 TM6000_GPIO_CLK, 1);
373 break; 367 break;
374 case XC2028_TUNER_RESET: 368 case XC2028_TUNER_RESET:
375 /* Reset codes during load firmware */ 369 /* Reset codes during load firmware */
@@ -423,14 +417,7 @@ int tm6000_tuner_callback(void *ptr, int component, int command, int arg)
423 break; 417 break;
424 418
425 case 2: 419 case 2:
426 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, 420 rc = tm6000_i2c_reset(dev, 100);
427 TM6000_GPIO_CLK, 0);
428 if (rc < 0)
429 return rc;
430 msleep(100);
431 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN,
432 TM6000_GPIO_CLK, 1);
433 msleep(100);
434 break; 421 break;
435 } 422 }
436 } 423 }
diff --git a/drivers/staging/tm6000/tm6000-core.c b/drivers/staging/tm6000/tm6000-core.c
index 1259ae550547..65feb8cb421c 100644
--- a/drivers/staging/tm6000/tm6000-core.c
+++ b/drivers/staging/tm6000/tm6000-core.c
@@ -153,6 +153,22 @@ int tm6000_get_reg32 (struct tm6000_core *dev, u8 req, u16 value, u16 index)
153 return buf[3] | buf[2] << 8 | buf[1] << 16 | buf[0] << 24; 153 return buf[3] | buf[2] << 8 | buf[1] << 16 | buf[0] << 24;
154} 154}
155 155
156int tm6000_i2c_reset(struct tm6000_core *dev, u16 tsleep)
157{
158 int rc;
159
160 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 0);
161 if (rc < 0)
162 return rc;
163
164 msleep(tsleep);
165
166 rc = tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6000_GPIO_CLK, 1);
167 msleep(tsleep);
168
169 return rc;
170}
171
156void tm6000_set_fourcc_format(struct tm6000_core *dev) 172void tm6000_set_fourcc_format(struct tm6000_core *dev)
157{ 173{
158 if (dev->dev_type == TM6010) { 174 if (dev->dev_type == TM6010) {
diff --git a/drivers/staging/tm6000/tm6000.h b/drivers/staging/tm6000/tm6000.h
index 79ef72a3f431..7bbaf26dea14 100644
--- a/drivers/staging/tm6000/tm6000.h
+++ b/drivers/staging/tm6000/tm6000.h
@@ -246,6 +246,8 @@ int tm6000_get_reg (struct tm6000_core *dev, u8 req, u16 value, u16 index);
246int tm6000_get_reg16(struct tm6000_core *dev, u8 req, u16 value, u16 index); 246int tm6000_get_reg16(struct tm6000_core *dev, u8 req, u16 value, u16 index);
247int tm6000_get_reg32(struct tm6000_core *dev, u8 req, u16 value, u16 index); 247int tm6000_get_reg32(struct tm6000_core *dev, u8 req, u16 value, u16 index);
248int tm6000_set_reg (struct tm6000_core *dev, u8 req, u16 value, u16 index); 248int tm6000_set_reg (struct tm6000_core *dev, u8 req, u16 value, u16 index);
249int tm6000_i2c_reset(struct tm6000_core *dev, u16 tsleep);
250
249int tm6000_init (struct tm6000_core *dev); 251int tm6000_init (struct tm6000_core *dev);
250 252
251int tm6000_init_analog_mode (struct tm6000_core *dev); 253int tm6000_init_analog_mode (struct tm6000_core *dev);