aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@me.by>2010-12-31 00:04:38 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-12-31 10:46:20 -0500
commitebce9a3331f4dd1f39856dc4b79f539eb25f7f64 (patch)
treef53e986e8a7fc88090695d7cbcd7a60064a5bc38 /drivers/media
parent21d33014108671cc6b02feda088f32bf26ce532d (diff)
[media] cx23885, cimax2.c: Fix case of two CAM insertion irq
For example boot up with two CAM inserted. Signed-off-by: Abylay Ospan <aospan@netup.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/cx23885/cimax2.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/drivers/media/video/cx23885/cimax2.c b/drivers/media/video/cx23885/cimax2.c
index c95e7bc14745..209b971bd267 100644
--- a/drivers/media/video/cx23885/cimax2.c
+++ b/drivers/media/video/cx23885/cimax2.c
@@ -368,7 +368,7 @@ static void netup_read_ci_status(struct work_struct *work)
368 DVB_CA_EN50221_POLL_CAM_READY; 368 DVB_CA_EN50221_POLL_CAM_READY;
369 else 369 else
370 state->status = 0; 370 state->status = 0;
371 }; 371 }
372} 372}
373 373
374/* CI irq handler */ 374/* CI irq handler */
@@ -377,16 +377,24 @@ int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status)
377 struct cx23885_tsport *port = NULL; 377 struct cx23885_tsport *port = NULL;
378 struct netup_ci_state *state = NULL; 378 struct netup_ci_state *state = NULL;
379 379
380 if (pci_status & PCI_MSK_GPIO0) 380 ci_dbg_print("%s:\n", __func__);
381 port = &dev->ts1; 381
382 else if (pci_status & PCI_MSK_GPIO1) 382 if (0 == (pci_status & (PCI_MSK_GPIO0 | PCI_MSK_GPIO1)))
383 port = &dev->ts2;
384 else /* who calls ? */
385 return 0; 383 return 0;
386 384
387 state = port->port_priv; 385 if (pci_status & PCI_MSK_GPIO0) {
386 port = &dev->ts1;
387 state = port->port_priv;
388 schedule_work(&state->work);
389 ci_dbg_print("%s: Wakeup CI0\n", __func__);
390 }
388 391
389 schedule_work(&state->work); 392 if (pci_status & PCI_MSK_GPIO1) {
393 port = &dev->ts2;
394 state = port->port_priv;
395 schedule_work(&state->work);
396 ci_dbg_print("%s: Wakeup CI1\n", __func__);
397 }
390 398
391 return 1; 399 return 1;
392} 400}