diff options
author | Igor M. Liplianin <liplianin@me.by> | 2010-12-31 00:04:38 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-12-31 10:46:20 -0500 |
commit | ebce9a3331f4dd1f39856dc4b79f539eb25f7f64 (patch) | |
tree | f53e986e8a7fc88090695d7cbcd7a60064a5bc38 /drivers/media | |
parent | 21d33014108671cc6b02feda088f32bf26ce532d (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.c | 24 |
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 | } |