i2c: switch twl4030-usb to use a resource for irq
authorFelipe Balbi <felipe.balbi@nokia.com>
Tue, 30 Sep 2008 18:42:59 +0000 (21:42 +0300)
committerTony Lindgren <tony@atomide.com>
Wed, 1 Oct 2008 10:37:37 +0000 (13:37 +0300)
use platform_get_irq() for getting irq number passed
to twl4030-usb via twl4030-core.c:add_children()

Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/i2c/chips/twl4030-core.c
drivers/i2c/chips/twl4030-usb.c
include/linux/i2c/twl4030.h

index e0a6ef4..43424a8 100644 (file)
@@ -819,9 +819,16 @@ static int add_children(struct twl4030_platform_data *pdata)
        }
 
        if (twl_has_usb() && pdata->usb) {
+               twl = &twl4030_modules[TWL4030_SLAVENUM_NUM0];
+
                pdev = platform_device_alloc("twl4030_usb", -1);
-               if (pdev) {
-                       twl = &twl4030_modules[TWL4030_SLAVENUM_NUM0];
+               if (!pdev) {
+                       pr_debug("%s: can't alloc usb dev\n", DRIVER_NAME);
+                       status = -ENOMEM;
+                       goto err;
+               }
+
+               if (status == 0) {
                        pdev->dev.parent = &twl->client->dev;
                        device_init_wakeup(&pdev->dev, 1);
                        status = platform_device_add_data(pdev, pdata->usb,
@@ -833,16 +840,25 @@ static int add_children(struct twl4030_platform_data *pdata)
                                        status);
                                goto err;
                        }
+               }
+
+               if (status == 0) {
+                       struct resource r = {
+                               .start = TWL4030_PWRIRQ_USB_PRES,
+                               .flags = IORESOURCE_IRQ,
+                       };
+
+                       status = platform_device_add_resources(pdev, &r, 1);
+               }
+
+               if (status == 0)
                        status = platform_device_add(pdev);
-                       if (status < 0) {
-                               platform_device_put(pdev);
-                               dev_dbg(&twl->client->dev,
-                                               "can't create usb dev, %d\n",
-                                               status);
-                       }
-               } else {
-                       pr_debug("%s: can't alloc usb dev\n", DRIVER_NAME);
-                       status = -ENOMEM;
+
+               if (status < 0) {
+                       platform_device_put(pdev);
+                       dev_dbg(&twl->client->dev,
+                                       "can't create usb dev, %d\n",
+                                       status);
                }
        }
 
index f530e71..133cc0f 100644 (file)
@@ -684,7 +684,7 @@ static int __init twl4030_usb_probe(struct platform_device *pdev)
        vbus &= USB_PRES_RISING;
 
        twl->dev                = &pdev->dev;
-       twl->irq                = TWL4030_PWRIRQ_USB_PRES;
+       twl->irq                = platform_get_irq(pdev, 0);
        twl->otg.set_host       = twl4030_set_host;
        twl->otg.set_peripheral = twl4030_set_peripheral;
        twl->otg.set_suspend    = twl4030_set_suspend;
index 5828485..1c79c89 100644 (file)
@@ -112,7 +112,7 @@ struct twl4030_platform_data {
 #define TWL4030_MODIRQ_KEYPAD          (TWL4030_IRQ_BASE + 1)
 #define TWL4030_MODIRQ_BCI             (TWL4030_IRQ_BASE + 2)
 #define TWL4030_MODIRQ_MADC            (TWL4030_IRQ_BASE + 3)
-#define TWL4030_MODIRQ_USB             (TWL4030_IRQ_BASE + 4)
+/* #define TWL4030_MODIRQ_USB          (TWL4030_IRQ_BASE + 4) */
 #define TWL4030_MODIRQ_PWR             (TWL4030_IRQ_BASE + 5)
 
 #define TWL4030_PWRIRQ_PWRBTN          (TWL4030_PWR_IRQ_BASE + 0)