linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / net / smc91x.c
index 0e9833a..7ec0812 100644 (file)
@@ -215,12 +215,15 @@ struct smc_local {
 
        spinlock_t lock;
 
+#ifdef SMC_CAN_USE_DATACS
+       u32     __iomem *datacs;
+#endif
+
 #ifdef SMC_USE_PXA_DMA
        /* DMA needs the physical address of the chip */
        u_long physaddr;
 #endif
        void __iomem *base;
-       void __iomem *datacs;
 };
 
 #if SMC_DEBUG > 0
@@ -2101,8 +2104,9 @@ static int smc_enable_device(struct platform_device *pdev)
         * Set the appropriate byte/word mode.
         */
        ecsr = readb(addr + (ECSR << SMC_IO_SHIFT)) & ~ECSR_IOIS8;
-       if (!SMC_CAN_USE_16BIT)
-               ecsr |= ECSR_IOIS8;
+#ifndef SMC_CAN_USE_16BIT
+       ecsr |= ECSR_IOIS8;
+#endif
        writeb(ecsr, addr + (ECSR << SMC_IO_SHIFT));
        local_irq_restore(flags);
 
@@ -2139,39 +2143,40 @@ static void smc_release_attrib(struct platform_device *pdev)
                release_mem_region(res->start, ATTRIB_SIZE);
 }
 
-static inline void smc_request_datacs(struct platform_device *pdev, struct net_device *ndev)
+#ifdef SMC_CAN_USE_DATACS
+static void smc_request_datacs(struct platform_device *pdev, struct net_device *ndev)
 {
-       if (SMC_CAN_USE_DATACS) {
-               struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-data32");
-               struct smc_local *lp = netdev_priv(ndev);
-
-               if (!res)
-                       return;
+       struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-data32");
+       struct smc_local *lp = netdev_priv(ndev);
 
-               if(!request_mem_region(res->start, SMC_DATA_EXTENT, CARDNAME)) {
-                       printk(KERN_INFO "%s: failed to request datacs memory region.\n", CARDNAME);
-                       return;
-               }
+       if (!res)
+               return;
 
-               lp->datacs = ioremap(res->start, SMC_DATA_EXTENT);
+       if(!request_mem_region(res->start, SMC_DATA_EXTENT, CARDNAME)) {
+               printk(KERN_INFO "%s: failed to request datacs memory region.\n", CARDNAME);
+               return;
        }
+
+       lp->datacs = ioremap(res->start, SMC_DATA_EXTENT);
 }
 
 static void smc_release_datacs(struct platform_device *pdev, struct net_device *ndev)
 {
-       if (SMC_CAN_USE_DATACS) {
-               struct smc_local *lp = netdev_priv(ndev);
-               struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-data32");
+       struct smc_local *lp = netdev_priv(ndev);
+       struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-data32");
 
-               if (lp->datacs)
-                       iounmap(lp->datacs);
+       if (lp->datacs)
+               iounmap(lp->datacs);
 
-               lp->datacs = NULL;
+       lp->datacs = NULL;
 
-               if (res)
-                       release_mem_region(res->start, SMC_DATA_EXTENT);
-       }
+       if (res)
+               release_mem_region(res->start, SMC_DATA_EXTENT);
 }
+#else
+static void smc_request_datacs(struct platform_device *pdev, struct net_device *ndev) {}
+static void smc_release_datacs(struct platform_device *pdev, struct net_device *ndev) {}
+#endif
 
 /*
  * smc_init(void)
@@ -2216,10 +2221,6 @@ static int smc_drv_probe(struct platform_device *pdev)
 
        ndev->dma = (unsigned char)-1;
        ndev->irq = platform_get_irq(pdev, 0);
-       if (ndev->irq < 0) {
-               ret = -ENODEV;
-               goto out_free_netdev;
-       }
 
        ret = smc_request_attrib(pdev);
        if (ret)