]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
I2C: TWL4030: Adapt existing drivers to power IRQ
authorPeter 'p2' De Schrijver <peter.de-schrijver@nokia.com>
Thu, 3 Apr 2008 13:44:24 +0000 (16:44 +0300)
committerTony Lindgren <tony@atomide.com>
Fri, 4 Apr 2008 10:03:35 +0000 (13:03 +0300)
This patch adapts the existing driver to use the power IRQ handler. This
patch superseeds any previous version.

Signed-off-by: Peter 'p2' De Schrijver <peter.de-schrijver@nokia.com>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/i2c/chips/twl4030-usb.c
drivers/rtc/rtc-twl4030.c
include/linux/i2c/twl4030.h

index 2db1c634a8c2799b58a3c2d49c6536274a7e03f6..a23890447cdb7477a6c48b4ce2d01bcb7021552d 100644 (file)
@@ -593,19 +593,6 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
        int ret = IRQ_NONE;
        u8 val;
 
-       if (twl4030_i2c_read_u8(TWL4030_MODULE_INT, &val, REG_PWR_ISR1) < 0) {
-               printk(KERN_ERR "twl4030_usb: i2c read failed,"
-                               " line %d\n", __LINE__);
-               goto done;
-       }
-
-       /* this interrupt line may be shared */
-       if (!(val & USB_PRES))
-               goto done;
-
-       /* clear the interrupt */
-       twl4030_i2c_write_u8(TWL4030_MODULE_INT, USB_PRES, REG_PWR_ISR1);
-
        /* action based on cable attach or detach */
        if (twl4030_i2c_read_u8(TWL4030_MODULE_INT, &val, REG_PWR_EDR1) < 0) {
                printk(KERN_ERR "twl4030_usb: i2c read failed,"
@@ -708,14 +695,13 @@ static int __init twl4030_usb_init(void)
 
        the_transceiver = twl;
 
-       twl->irq                = TWL4030_MODIRQ_PWR;
+       twl->irq                = TWL4030_PWRIRQ_USB_PRES;
        twl->otg.set_host       = twl4030_set_host;
        twl->otg.set_peripheral = twl4030_set_peripheral;
        twl->otg.set_suspend    = twl4030_set_suspend;
 
        usb_irq_disable();
-       status = request_irq(twl->irq, twl4030_usb_irq,
-               IRQF_DISABLED | IRQF_SHARED, "twl4030_usb", twl);
+       status = request_irq(twl->irq, twl4030_usb_irq, 0, "twl4030_usb", twl);
        if (status < 0) {
                printk(KERN_DEBUG "can't get IRQ %d, err %d\n",
                        twl->irq, status);
index 929a788eb01dd90da28810ee6702d3bc95839cf1..ca026b1f092346625f023449228edfa7c12c040a 100644 (file)
@@ -426,19 +426,6 @@ static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc)
        int res;
        u8 rd_reg;
        
-       /* clear the RTC interrupt in TWL4030 power module */
-       res = twl4030_i2c_read_u8(TWL4030_MODULE_INT, &rd_reg, REG_PWR_ISR1);
-       if (res)
-               goto out;
-
-       /* Check if interrupt is sourced by RTC */
-       if (!(rd_reg & PWR_RTC_INT_CLR))
-               goto out;
-
-       res = twl4030_i2c_write_u8(TWL4030_MODULE_INT, PWR_RTC_INT_CLR, REG_PWR_ISR1);
-       if (res)
-               goto out;
-
        res = twl4030_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG);
        if (res)
                goto out;
@@ -528,8 +515,8 @@ static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
        if (ret < 0)
                goto out1;
 
-       ret = request_irq(TWL4030_MODIRQ_PWR, twl4030_rtc_interrupt,
-                         IRQF_DISABLED | IRQF_SHARED, rtc->dev.bus_id, rtc);
+       ret = request_irq(TWL4030_PWRIRQ_RTC, twl4030_rtc_interrupt,
+                               0, rtc->dev.bus_id, rtc);
        if (ret < 0) {
                dev_err(&pdev->dev, "IRQ is not free.\n");
                goto out1;
index 7f9b90d2aad4c53920e065996b38fd4f84a6b507..fc11fd0070aa3a1308ad37abbc00900e4e3eb4f2 100644 (file)
 #define TWL4030_MODIRQ_MADC            (IH_TWL4030_BASE + 3)
 #define TWL4030_MODIRQ_USB             (IH_TWL4030_BASE + 4)
 #define TWL4030_MODIRQ_PWR             (IH_TWL4030_BASE + 5)
+
+#define TWL4030_PWRIRQ_PWRBTN          (IH_TWL4030_PWRBASE + 0)
+#define TWL4030_PWRIRQ_CHG_PRES                (IH_TWL4030_PWRBASE + 1)
+#define TWL4030_PWRIRQ_USB_PRES                (IH_TWL4030_PWRBASE + 2)
+#define TWL4030_PWRIRQ_RTC             (IH_TWL4030_PWRBASE + 3)
+#define TWL4030_PWRIRQ_HOT_DIE         (IH_TWL4030_PWRBASE + 4)
+#define TWL4030_PWRIRQ_PWROK_TIMEOUT   (IH_TWL4030_PWRBASE + 5)
+#define TWL4030_PWRIRQ_MBCHG           (IH_TWL4030_PWRBASE + 6)
+#define TWL4030_PWRIRQ_SC_DETECT       (IH_TWL4030_PWRBASE + 7)
+
 /* Rest are unsued currently*/
 
 /* Offsets to Power Registers */