aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/bt8xx
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2010-11-28 09:48:26 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-12-29 05:16:57 -0500
commitb7c7a4bed8d695933ae172031556de9de30ae598 (patch)
tree397af41932d32c8ea30fbb0f1f2e30717b610911 /drivers/media/video/bt8xx
parent5ae094cea1b4f3715ee6ea4f49d0b36d564f90e7 (diff)
[media] bttv: remove custom_irq and gpioq from bttv struct
The RC5 old decoder used custom_irq to indicate the need of handling the IRQ on a different way. Instead of doing it, let the core just call the bttv input IRQ handler, and add the code there to call the legacy decoder. While here, remove the gpioq waitqueue, as this is not used anywhere, and add a debug msg to help removing the legacy RC5 code. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/bt8xx')
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c6
-rw-r--r--drivers/media/video/bt8xx/bttv-input.c20
-rw-r--r--drivers/media/video/bt8xx/bttvp.h4
3 files changed, 14 insertions, 16 deletions
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 0902ec041c7a..54fbab95b88c 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -4041,9 +4041,6 @@ static irqreturn_t bttv_irq(int irq, void *dev_id)
4041 4041
4042 btv=(struct bttv *)dev_id; 4042 btv=(struct bttv *)dev_id;
4043 4043
4044 if (btv->custom_irq)
4045 handled = btv->custom_irq(btv);
4046
4047 count=0; 4044 count=0;
4048 while (1) { 4045 while (1) {
4049 /* get/clear interrupt status bits */ 4046 /* get/clear interrupt status bits */
@@ -4079,7 +4076,6 @@ static irqreturn_t bttv_irq(int irq, void *dev_id)
4079 btv->field_count++; 4076 btv->field_count++;
4080 4077
4081 if ((astat & BT848_INT_GPINT) && btv->remote) { 4078 if ((astat & BT848_INT_GPINT) && btv->remote) {
4082 wake_up(&btv->gpioq);
4083 bttv_input_irq(btv); 4079 bttv_input_irq(btv);
4084 } 4080 }
4085 4081
@@ -4284,7 +4280,6 @@ static int __devinit bttv_probe(struct pci_dev *dev,
4284 mutex_init(&btv->lock); 4280 mutex_init(&btv->lock);
4285 spin_lock_init(&btv->s_lock); 4281 spin_lock_init(&btv->s_lock);
4286 spin_lock_init(&btv->gpio_lock); 4282 spin_lock_init(&btv->gpio_lock);
4287 init_waitqueue_head(&btv->gpioq);
4288 init_waitqueue_head(&btv->i2c_queue); 4283 init_waitqueue_head(&btv->i2c_queue);
4289 INIT_LIST_HEAD(&btv->c.subs); 4284 INIT_LIST_HEAD(&btv->c.subs);
4290 INIT_LIST_HEAD(&btv->capture); 4285 INIT_LIST_HEAD(&btv->capture);
@@ -4472,7 +4467,6 @@ static void __devexit bttv_remove(struct pci_dev *pci_dev)
4472 4467
4473 /* tell gpio modules we are leaving ... */ 4468 /* tell gpio modules we are leaving ... */
4474 btv->shutdown=1; 4469 btv->shutdown=1;
4475 wake_up(&btv->gpioq);
4476 bttv_input_fini(btv); 4470 bttv_input_fini(btv);
4477 bttv_sub_del_devices(&btv->c); 4471 bttv_sub_del_devices(&btv->c);
4478 4472
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c
index 989c0481e3b1..7f48306133be 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -120,11 +120,15 @@ static void ir_enltv_handle_key(struct bttv *btv)
120 ir->last_gpio = data | keyup; 120 ir->last_gpio = data | keyup;
121} 121}
122 122
123static int bttv_rc5_irq(struct bttv *btv);
124
123void bttv_input_irq(struct bttv *btv) 125void bttv_input_irq(struct bttv *btv)
124{ 126{
125 struct bttv_ir *ir = btv->remote; 127 struct bttv_ir *ir = btv->remote;
126 128
127 if (!ir->polling) 129 if (ir->rc5_gpio)
130 bttv_rc5_irq(btv);
131 else if (!ir->polling)
128 ir_handle_key(btv); 132 ir_handle_key(btv);
129} 133}
130 134
@@ -251,10 +255,6 @@ static int bttv_rc5_irq(struct bttv *btv)
251 /* read gpio port */ 255 /* read gpio port */
252 gpio = bttv_gpio_read(&btv->c); 256 gpio = bttv_gpio_read(&btv->c);
253 257
254 /* remote IRQ? */
255 if (!(gpio & 0x20))
256 return 0;
257
258 /* get time of bit */ 258 /* get time of bit */
259 current_jiffies = jiffies; 259 current_jiffies = jiffies;
260 do_gettimeofday(&tv); 260 do_gettimeofday(&tv);
@@ -267,6 +267,13 @@ static int bttv_rc5_irq(struct bttv *btv)
267 tv.tv_usec - ir->base_time.tv_usec; 267 tv.tv_usec - ir->base_time.tv_usec;
268 } 268 }
269 269
270 dprintk(KERN_INFO DEVNAME ": RC5 IRQ: gap %d us for %s\n",
271 gap, (gpio & 0x20) ? "mark" : "space");
272
273 /* remote IRQ? */
274 if (!(gpio & 0x20))
275 return 0;
276
270 /* active code => add bit */ 277 /* active code => add bit */
271 if (ir->active) { 278 if (ir->active) {
272 /* only if in the code (otherwise spurious IRQ or timer 279 /* only if in the code (otherwise spurious IRQ or timer
@@ -479,8 +486,7 @@ int bttv_input_init(struct bttv *btv)
479 break; 486 break;
480 case BTTV_BOARD_NEBULA_DIGITV: 487 case BTTV_BOARD_NEBULA_DIGITV:
481 ir_codes = RC_MAP_NEBULA; 488 ir_codes = RC_MAP_NEBULA;
482 btv->custom_irq = bttv_rc5_irq; 489 ir->rc5_gpio = true;
483 ir->rc5_gpio = 1;
484 break; 490 break;
485 case BTTV_BOARD_MACHTV_MAGICTV: 491 case BTTV_BOARD_MACHTV_MAGICTV:
486 ir_codes = RC_MAP_APAC_VIEWCOMP; 492 ir_codes = RC_MAP_APAC_VIEWCOMP;
diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h
index 071232045605..9b776faf0741 100644
--- a/drivers/media/video/bt8xx/bttvp.h
+++ b/drivers/media/video/bt8xx/bttvp.h
@@ -139,7 +139,7 @@ struct bttv_ir {
139 int rc5_remote_gap; 139 int rc5_remote_gap;
140 140
141 /* RC5 gpio */ 141 /* RC5 gpio */
142 u32 rc5_gpio; 142 bool rc5_gpio; /* Is RC5 legacy GPIO enabled? */
143 u32 last_bit; /* last raw bit seen */ 143 u32 last_bit; /* last raw bit seen */
144 u32 code; /* raw code under construction */ 144 u32 code; /* raw code under construction */
145 struct timeval base_time; /* time of last seen code */ 145 struct timeval base_time; /* time of last seen code */
@@ -364,12 +364,10 @@ struct bttv {
364 struct bttv_pll_info pll; 364 struct bttv_pll_info pll;
365 int triton1; 365 int triton1;
366 int gpioirq; 366 int gpioirq;
367 int (*custom_irq)(struct bttv *btv);
368 367
369 int use_i2c_hw; 368 int use_i2c_hw;
370 369
371 /* old gpio interface */ 370 /* old gpio interface */
372 wait_queue_head_t gpioq;
373 int shutdown; 371 int shutdown;
374 372
375 void (*volume_gpio)(struct bttv *btv, __u16 volume); 373 void (*volume_gpio)(struct bttv *btv, __u16 volume);