|
@@ -368,7 +368,7 @@ static void netup_read_ci_status(struct work_struct *work)
|
|
DVB_CA_EN50221_POLL_CAM_READY;
|
|
DVB_CA_EN50221_POLL_CAM_READY;
|
|
else
|
|
else
|
|
state->status = 0;
|
|
state->status = 0;
|
|
- };
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/* CI irq handler */
|
|
/* 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 cx23885_tsport *port = NULL;
|
|
struct netup_ci_state *state = 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;
|
|
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;
|
|
return 1;
|
|
}
|
|
}
|