iwlwifi: 5150 enable LO, TXIQ and BB calibrations
[safe/jmp/linux-2.6] / drivers / parport / parport_pc.c
index db26b40..96f3bdf 100644 (file)
@@ -1415,7 +1415,7 @@ static void __devinit winbond_check(int io, int key)
 {
        int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
 
-       if (!request_region(io, 3, __FUNCTION__))
+       if (!request_region(io, 3, __func__))
                return;
 
        /* First probe without key */
@@ -1449,7 +1449,7 @@ static void __devinit winbond_check2(int io,int key)
 {
         int devid,devrev,oldid,x_devid,x_devrev,x_oldid;
 
-       if (!request_region(io, 3, __FUNCTION__))
+       if (!request_region(io, 3, __func__))
                return;
 
        /* First probe without the key */
@@ -1482,7 +1482,7 @@ static void __devinit smsc_check(int io, int key)
 {
         int id,rev,oldid,oldrev,x_id,x_rev,x_oldid,x_oldrev;
 
-       if (!request_region(io, 3, __FUNCTION__))
+       if (!request_region(io, 3, __func__))
                return;
 
        /* First probe without the key */
@@ -1540,6 +1540,37 @@ static void __devinit detect_and_report_smsc (void)
        smsc_check(0x3f0,0x44);
        smsc_check(0x370,0x44);
 }
+
+static void __devinit detect_and_report_it87(void)
+{
+       u16 dev;
+       u8 r;
+       if (verbose_probing)
+               printk(KERN_DEBUG "IT8705 Super-IO detection, now testing port 2E ...\n");
+       if (!request_region(0x2e, 1, __func__))
+               return;
+       outb(0x87, 0x2e);
+       outb(0x01, 0x2e);
+       outb(0x55, 0x2e);
+       outb(0x55, 0x2e);
+       outb(0x20, 0x2e);
+       dev = inb(0x2f) << 8;
+       outb(0x21, 0x2e);
+       dev |= inb(0x2f);
+       if (dev == 0x8712 || dev == 0x8705 || dev == 0x8715 ||
+           dev == 0x8716 || dev == 0x8718 || dev == 0x8726) {
+               printk(KERN_INFO "IT%04X SuperIO detected.\n", dev);
+               outb(0x07, 0x2E);       /* Parallel Port */
+               outb(0x03, 0x2F);
+               outb(0xF0, 0x2E);       /* BOOT 0x80 off */
+               r = inb(0x2f);
+               outb(0xF0, 0x2E);
+               outb(r | 8, 0x2F);
+               outb(0x02, 0x2E);       /* Lock */
+               outb(0x02, 0x2F);
+       }
+       release_region(0x2e, 1);
+}
 #endif /* CONFIG_PARPORT_PC_SUPERIO */
 
 static int get_superio_dma (struct parport *p)
@@ -1736,7 +1767,7 @@ static int parport_PS2_supported(struct parport *pb)
 }
 
 #ifdef CONFIG_PARPORT_PC_FIFO
-static int __devinit parport_ECP_supported(struct parport *pb)
+static int parport_ECP_supported(struct parport *pb)
 {
        int i;
        int config, configb;
@@ -1960,7 +1991,7 @@ static int parport_ECPEPP_supported(struct parport *pb)
 /* Don't bother probing for modes we know we won't use. */
 static int __devinit parport_PS2_supported(struct parport *pb) { return 0; }
 #ifdef CONFIG_PARPORT_PC_FIFO
-static int __devinit parport_ECP_supported(struct parport *pb) { return 0; }
+static int parport_ECP_supported(struct parport *pb) { return 0; }
 #endif
 static int __devinit parport_EPP_supported(struct parport *pb) { return 0; }
 static int __devinit parport_ECPEPP_supported(struct parport *pb){return 0;}
@@ -2760,6 +2791,7 @@ enum parport_pc_pci_cards {
        oxsemi_952,
        oxsemi_954,
        oxsemi_840,
+       oxsemi_pcie_pport,
        aks_0100,
        mobility_pp,
        netmos_9705,
@@ -2836,7 +2868,8 @@ static struct parport_pc_pci {
         * and 840 locks up if you write 1 to bit 2! */
        /* oxsemi_952 */                { 1, { { 0, 1 }, } },
        /* oxsemi_954 */                { 1, { { 0, -1 }, } },
-       /* oxsemi_840 */                { 1, { { 0, -1 }, } },
+       /* oxsemi_840 */                { 1, { { 0, 1 }, } },
+       /* oxsemi_pcie_pport */         { 1, { { 0, 1 }, } },
        /* aks_0100 */                  { 1, { { 0, -1 }, } },
        /* mobility_pp */               { 1, { { 0, 1 }, } },
        /* netmos_9705 */               { 1, { { 0, -1 }, } }, /* untested */
@@ -2897,7 +2930,6 @@ static const struct pci_device_id parport_pc_pci_tbl[] = {
        { 0x1409, 0x7268, 0x1409, 0x0103, 0, 0, timedia_4008a },
        { 0x1409, 0x7268, 0x1409, 0x0104, 0, 0, timedia_4018 },
        { 0x1409, 0x7268, 0x1409, 0x9018, 0, 0, timedia_9018a },
-       { 0x14f2, 0x0121, PCI_ANY_ID, PCI_ANY_ID, 0, 0, mobility_pp },
        { PCI_VENDOR_ID_SYBA, PCI_DEVICE_ID_SYBA_2P_EPP,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, syba_2p_epp },
        { PCI_VENDOR_ID_SYBA, PCI_DEVICE_ID_SYBA_1P_ECP,
@@ -2915,8 +2947,25 @@ static const struct pci_device_id parport_pc_pci_tbl[] = {
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_954 },
        { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_12PCI840,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_840 },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe840,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe840_G,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_0,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_0_G,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_G,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_U,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
+       { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_PCIe952_1_GU,
+         PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
        { PCI_VENDOR_ID_AKS, PCI_DEVICE_ID_AKS_ALADDINCARD,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, aks_0100 },
+       { 0x14f2, 0x0121, PCI_ANY_ID, PCI_ANY_ID, 0, 0, mobility_pp },
        /* NetMos communication controllers */
        { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9705,
          PCI_ANY_ID, PCI_ANY_ID, 0, 0, netmos_9705 },
@@ -3051,6 +3100,7 @@ static struct pci_driver parport_pc_pci_driver;
 static int __init parport_pc_init_superio(int autoirq, int autodma) {return 0;}
 #endif /* CONFIG_PCI */
 
+#ifdef CONFIG_PNP
 
 static const struct pnp_device_id parport_pc_pnp_tbl[] = {
        /* Standard LPT Printer Port */
@@ -3117,6 +3167,9 @@ static struct pnp_driver parport_pc_pnp_driver = {
        .remove         = parport_pc_pnp_remove,
 };
 
+#else
+static struct pnp_driver parport_pc_pnp_driver;
+#endif /* CONFIG_PNP */
 
 static int __devinit parport_pc_platform_probe(struct platform_device *pdev)
 {
@@ -3164,24 +3217,25 @@ static void __init parport_pc_find_ports (int autoirq, int autodma)
        int count = 0, err;
 
 #ifdef CONFIG_PARPORT_PC_SUPERIO
-       detect_and_report_winbond ();
-       detect_and_report_smsc ();
+       detect_and_report_it87();
+       detect_and_report_winbond();
+       detect_and_report_smsc();
 #endif
 
        /* Onboard SuperIO chipsets that show themselves on the PCI bus. */
-       count += parport_pc_init_superio (autoirq, autodma);
+       count += parport_pc_init_superio(autoirq, autodma);
 
        /* PnP ports, skip detection if SuperIO already found them */
        if (!count) {
-               err = pnp_register_driver (&parport_pc_pnp_driver);
+               err = pnp_register_driver(&parport_pc_pnp_driver);
                if (!err)
                        pnp_registered_parport = 1;
        }
 
        /* ISA ports and whatever (see asm/parport.h). */
-       parport_pc_find_nonpci_ports (autoirq, autodma);
+       parport_pc_find_nonpci_ports(autoirq, autodma);
 
-       err = pci_register_driver (&parport_pc_pci_driver);
+       err = pci_register_driver(&parport_pc_pci_driver);
        if (!err)
                pci_registered_parport = 1;
 }