Pull acpica into release branch
[pandora-kernel.git] / drivers / media / dvb / ttpci / budget-av.c
index 9dd4745..8a7cd7d 100644 (file)
@@ -60,11 +60,11 @@ struct budget_av {
        struct dvb_ca_en50221 ca;
 };
 
-/* GPIO CI Connections:
- * 0 - Vcc/Reset (Reset is controlled by capacitor)
- * 1 - Attribute Memory
- * 2 - Card Enable (Active Low)
- * 3 - Card Detect
+/* GPIO Connections:
+ * 0 - Vcc/Reset (Reset is controlled by capacitor). Resets the frontend *AS WELL*!
+ * 1 - CI memory select 0=>IO memory, 1=>Attribute Memory
+ * 2 - CI Card Enable (Active Low)
+ * 3 - CI Card Detect
  */
 
 /****************************************************************************
@@ -214,6 +214,9 @@ static int ciintf_slot_reset(struct dvb_ca_en50221 *ca, int slot)
        while (--timeout > 0 && ciintf_read_attribute_mem(ca, slot, 0) != 0x1d)
                msleep(100);
 
+       /* reinitialise the frontend */
+       dvb_frontend_reinitialise(budget_av->budget.dvb_frontend);
+
        if (timeout <= 0)
        {
                printk(KERN_ERR "budget-av: cam reset failed (timeout).\n");
@@ -1187,8 +1190,6 @@ static int budget_av_attach(struct saa7146_dev *dev, struct saa7146_pci_extensio
                                                SAA7146_HPS_SYNC_PORT_A);
 
                saa7113_setinput(budget_av, 0);
-       } else {
-               ciintf_init(budget_av);
        }
 
        /* fixme: find some sane values here... */
@@ -1208,6 +1209,10 @@ static int budget_av_attach(struct saa7146_dev *dev, struct saa7146_pci_extensio
        budget_av->budget.dvb_adapter.priv = budget_av;
        frontend_init(budget_av);
 
+       if (!budget_av->has_saa7113) {
+               ciintf_init(budget_av);
+       }
+
        return 0;
 }