From: Milan Svoboda <[EMAIL PROTECTED]>
Hi,
I'm resending this patch because I didn't get any response...
pxa2xx_udc driver uses define for irq number. This patch turns it
to use platform resource. This allows both pxa and ixp4xx to use this
driver flawlessly. Only irq numbers specific to lubbock platform are
still defined via defines, but these are protected with ifdefs...
Signed-off-by: Milan Svoboda <[EMAIL PROTECTED]>
---
diff -uprN -X orig.bak.never.touch/Documentation/dontdiff
orig.bak.never.touch/drivers/usb/gadget/pxa2xx_udc.c
tmp/drivers/usb/gadget/pxa2xx_udc.c
--- orig.bak.never.touch/drivers/usb/gadget/pxa2xx_udc.c 2006-06-19
14:48:25.000000000 +0000
+++ tmp/drivers/usb/gadget/pxa2xx_udc.c 2006-08-15 13:56:55.000000000 +0000
@@ -2434,6 +2434,7 @@ static struct pxa2xx_udc memory = {
static int __init pxa2xx_udc_probe(struct platform_device *pdev)
{
struct pxa2xx_udc *dev = &memory;
+ struct resource *irq_res;
int retval, out_dma = 1;
u32 chiprev;
@@ -2474,7 +2475,11 @@ static int __init pxa2xx_udc_probe(struc
return -ENODEV;
}
- pr_debug("%s: IRQ %d%s%s%s\n", driver_name, IRQ_USB,
+ irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ if (!irq_res)
+ return -ENODEV;
+
+ pr_debug("%s: IRQ %d%s%s%s\n", driver_name, irq_res->start,
dev->has_cfr ? "" : " (!cfr)",
out_dma ? "" : " (broken dma-out)",
SIZE_STR DMASTR
@@ -2514,11 +2519,11 @@ static int __init pxa2xx_udc_probe(struc
dev->vbus = is_vbus_present();
/* irq setup after old hardware state is cleaned up */
- retval = request_irq(IRQ_USB, pxa2xx_udc_irq,
+ retval = request_irq(irq_res->start, pxa2xx_udc_irq,
SA_INTERRUPT, driver_name, dev);
if (retval != 0) {
- printk(KERN_ERR "%s: can't get irq %i, err %d\n",
- driver_name, IRQ_USB, retval);
+ printk(KERN_ERR "%s: can't get irq %ld, err %d\n",
+ driver_name, irq_res->start, retval);
return -EBUSY;
}
dev->got_irq = 1;
@@ -2533,7 +2538,7 @@ static int __init pxa2xx_udc_probe(struc
printk(KERN_ERR "%s: can't get irq %i, err %d\n",
driver_name, LUBBOCK_USB_DISC_IRQ, retval);
lubbock_fail0:
- free_irq(IRQ_USB, dev);
+ free_irq(irq_res->start, dev);
return -EBUSY;
}
retval = request_irq(LUBBOCK_USB_IRQ,
@@ -2566,19 +2571,23 @@ static void pxa2xx_udc_shutdown(struct p
static int __exit pxa2xx_udc_remove(struct platform_device *pdev)
{
struct pxa2xx_udc *dev = platform_get_drvdata(pdev);
+ struct resource *irq_res;
udc_disable(dev);
remove_proc_files();
usb_gadget_unregister_driver(dev->driver);
if (dev->got_irq) {
- free_irq(IRQ_USB, dev);
+ irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ free_irq(irq_res->start, dev);
dev->got_irq = 0;
}
+#ifdef CONFIG_ARCH_LUBBOCK
if (machine_is_lubbock()) {
free_irq(LUBBOCK_USB_DISC_IRQ, dev);
free_irq(LUBBOCK_USB_IRQ, dev);
}
+#endif
platform_set_drvdata(pdev, NULL);
the_controller = NULL;
return 0;
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel