Browse Source

pata_of_platform: remove direct dependency on OF_IRQ

CONFIG_OF_IRQ is not available on some platforms and using of_irq_*
breaks the build. Since resources are already populated in the platform
device, get the irq from there instead.

Reported-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Rob Herring 13 years ago
parent
commit
d0643aa166
2 changed files with 7 additions and 10 deletions
  1. 1 1
      drivers/ata/Kconfig
  2. 6 9
      drivers/ata/pata_of_platform.c

+ 1 - 1
drivers/ata/Kconfig

@@ -820,7 +820,7 @@ config PATA_PLATFORM
 
 
 config PATA_OF_PLATFORM
 config PATA_OF_PLATFORM
 	tristate "OpenFirmware platform device PATA support"
 	tristate "OpenFirmware platform device PATA support"
-	depends on PATA_PLATFORM && OF && OF_IRQ
+	depends on PATA_PLATFORM && OF
 	help
 	help
 	  This option enables support for generic directly connected ATA
 	  This option enables support for generic directly connected ATA
 	  devices commonly found on embedded systems with OpenFirmware
 	  devices commonly found on embedded systems with OpenFirmware

+ 6 - 9
drivers/ata/pata_of_platform.c

@@ -12,8 +12,7 @@
 #include <linux/kernel.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/of_address.h>
 #include <linux/of_address.h>
-#include <linux/of_irq.h>
-#include <linux/of_platform.h>
+#include <linux/platform_device.h>
 #include <linux/ata_platform.h>
 #include <linux/ata_platform.h>
 
 
 static int __devinit pata_of_platform_probe(struct platform_device *ofdev)
 static int __devinit pata_of_platform_probe(struct platform_device *ofdev)
@@ -22,7 +21,7 @@ static int __devinit pata_of_platform_probe(struct platform_device *ofdev)
 	struct device_node *dn = ofdev->dev.of_node;
 	struct device_node *dn = ofdev->dev.of_node;
 	struct resource io_res;
 	struct resource io_res;
 	struct resource ctl_res;
 	struct resource ctl_res;
-	struct resource irq_res;
+	struct resource *irq_res;
 	unsigned int reg_shift = 0;
 	unsigned int reg_shift = 0;
 	int pio_mode = 0;
 	int pio_mode = 0;
 	int pio_mask;
 	int pio_mask;
@@ -51,11 +50,9 @@ static int __devinit pata_of_platform_probe(struct platform_device *ofdev)
 		}
 		}
 	}
 	}
 
 
-	ret = of_irq_to_resource(dn, 0, &irq_res);
-	if (!ret)
-		irq_res.start = irq_res.end = 0;
-	else
-		irq_res.flags = 0;
+	irq_res = platform_get_resource(ofdev, IORESOURCE_IRQ, 0);
+	if (irq_res)
+		irq_res->flags = 0;
 
 
 	prop = of_get_property(dn, "reg-shift", NULL);
 	prop = of_get_property(dn, "reg-shift", NULL);
 	if (prop)
 	if (prop)
@@ -75,7 +72,7 @@ static int __devinit pata_of_platform_probe(struct platform_device *ofdev)
 	pio_mask = 1 << pio_mode;
 	pio_mask = 1 << pio_mode;
 	pio_mask |= (1 << pio_mode) - 1;
 	pio_mask |= (1 << pio_mode) - 1;
 
 
-	return __pata_platform_probe(&ofdev->dev, &io_res, &ctl_res, &irq_res,
+	return __pata_platform_probe(&ofdev->dev, &io_res, &ctl_res, irq_res,
 				     reg_shift, pio_mask);
 				     reg_shift, pio_mask);
 }
 }