aboutsummaryrefslogtreecommitdiff
path: root/drivers/media/video/cx23885/cimax2.c
diff options
context:
space:
mode:
authorIgor M. Liplianin <liplianin@me.by>2010-12-31 02:04:38 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-12-31 13:46:20 -0200
commitebce9a3331f4dd1f39856dc4b79f539eb25f7f64 (patch)
treef53e986e8a7fc88090695d7cbcd7a60064a5bc38 /drivers/media/video/cx23885/cimax2.c
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/video/cx23885/cimax2.c')
-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 c95e7bc1474..209b971bd26 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)
DVB_CA_EN50221_POLL_CAM_READY;
else
state->status = 0;
- };
+ }
}
/* CI irq handler */
@@ -377,16 +377,24 @@ int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status)
struct cx23885_tsport *port = NULL;
struct netup_ci_state *state = NULL;
- if (pci_status & PCI_MSK_GPIO0)
- port = &dev->ts1;
- else if (pci_status & PCI_MSK_GPIO1)
- port = &dev->ts2;
- else /* who calls ? */
+ ci_dbg_print("%s:\n", __func__);
+
+ if (0 == (pci_status & (PCI_MSK_GPIO0 | PCI_MSK_GPIO1)))
return 0;
- state = port->port_priv;
+ if (pci_status & PCI_MSK_GPIO0) {
+ port = &dev->ts1;
+ state = port->port_priv;
+ schedule_work(&state->work);
+ ci_dbg_print("%s: Wakeup CI0\n", __func__);
+ }
- schedule_work(&state->work);
+ if (pci_status & PCI_MSK_GPIO1) {
+ port = &dev->ts2;
+ state = port->port_priv;
+ schedule_work(&state->work);
+ ci_dbg_print("%s: Wakeup CI1\n", __func__);
+ }
return 1;
}