mfd: as3722: add gpio irq support
Mallikarjun Kasoju [Thu, 20 Jun 2013 16:05:19 +0000 (21:05 +0530)]
Bug 1294707

Change-Id: Ice8eb1e94ac7971d61ba20c1e8aef04a57f8733f
Signed-off-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
Reviewed-on: http://git-master/r/242443
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>

drivers/mfd/as3722-core.c
include/linux/mfd/as3722-reg.h

index 584460b..41fad73 100644 (file)
@@ -96,14 +96,46 @@ static const struct regmap_irq as3722_irqs[] = {
        [AS3722_IRQ_LOWBAT] = {
                .mask = AS3722_IRQ_MASK_LOWBAT,
        },
+       /* INT2 IRQs */
        [AS3722_IRQ_RTC_REP] = {
                .mask = AS3722_IRQ_MASK_RTC_REP,
                .reg_offset = 1,
        },
+       /* INT3 IRQs */
        [AS3722_IRQ_RTC_ALARM] = {
                .mask = AS3722_IRQ_MASK_RTC_ALARM,
                .reg_offset = 2,
        },
+       [AS3722_IRQ_RTC_GPIO1] = {
+               .mask = AS3722_IRQ_MASK_GPIO_EDGE1,
+               .type_rising_mask = AS3722_IRQ_MASK_GPIO_EDGE1,
+               .type_falling_mask = AS3722_IRQ_MASK_GPIO_EDGE1,
+               .reg_offset = 2,
+       },
+       [AS3722_IRQ_RTC_GPIO2] = {
+               .mask = AS3722_IRQ_MASK_GPIO_EDGE2,
+               .type_rising_mask = AS3722_IRQ_MASK_GPIO_EDGE2,
+               .type_falling_mask = AS3722_IRQ_MASK_GPIO_EDGE2,
+               .reg_offset = 2,
+       },
+       [AS3722_IRQ_RTC_GPIO3] = {
+               .mask = AS3722_IRQ_MASK_GPIO_EDGE3,
+               .type_rising_mask = AS3722_IRQ_MASK_GPIO_EDGE3,
+               .type_falling_mask = AS3722_IRQ_MASK_GPIO_EDGE3,
+               .reg_offset = 2,
+       },
+       [AS3722_IRQ_RTC_GPIO4] = {
+               .mask = AS3722_IRQ_MASK_GPIO_EDGE4,
+               .type_rising_mask = AS3722_IRQ_MASK_GPIO_EDGE4,
+               .type_falling_mask = AS3722_IRQ_MASK_GPIO_EDGE4,
+               .reg_offset = 2,
+       },
+       [AS3722_IRQ_RTC_GPIO5] = {
+               .mask = AS3722_IRQ_MASK_GPIO_EDGE5,
+               .type_rising_mask = AS3722_IRQ_MASK_GPIO_EDGE5,
+               .type_falling_mask = AS3722_IRQ_MASK_GPIO_EDGE5,
+               .reg_offset = 2,
+       },
        [AS3722_IRQ_WATCHDOG] = {
                .mask = AS3722_IRQ_MASK_WATCHDOG,
                .reg_offset = 2,
index 03cb071..6071789 100644 (file)
@@ -116,7 +116,7 @@ AS3722_LDO11,
 #define AS3722_GPIO_USAGE_OC_PG_SD6                     0xE
 
 /* Interrupt IDs */
-#define AS3722_IRQ_MAX_HANDLER                 11
+#define AS3722_IRQ_MAX_HANDLER                 16
 #define AS3722_IRQ_LID                         0
 #define AS3722_IRQ_ACOK                        1
 #define AS3722_IRQ_CORE_PWRREQ                 2
@@ -128,7 +128,12 @@ AS3722_LDO11,
 #define AS3722_IRQ_RTC_REP                     8
 #define AS3722_IRQ_RTC_ALARM                   9
 #define AS3722_IRQ_SD0                         10
-#define AS3722_IRQ_WATCHDOG                    11
+#define AS3722_IRQ_RTC_GPIO1                   11
+#define AS3722_IRQ_RTC_GPIO2                   12
+#define AS3722_IRQ_RTC_GPIO3                   13
+#define AS3722_IRQ_RTC_GPIO4                   14
+#define AS3722_IRQ_RTC_GPIO5                   15
+#define AS3722_IRQ_WATCHDOG                    16
 
 /* AS3722 registers */
 #define AS3722_SD0_VOLTAGE_REG                 0x00
@@ -357,7 +362,11 @@ AS3722_LDO11,
 
 #define AS3722_IRQ_MASK_RTC_REP                (1 << 7)
 #define AS3722_IRQ_MASK_RTC_ALARM              (1 << 0)
-
+#define AS3722_IRQ_MASK_GPIO_EDGE1             (1 << 1)
+#define AS3722_IRQ_MASK_GPIO_EDGE2             (1 << 2)
+#define AS3722_IRQ_MASK_GPIO_EDGE3             (1 << 3)
+#define AS3722_IRQ_MASK_GPIO_EDGE4             (1 << 4)
+#define AS3722_IRQ_MASK_GPIO_EDGE5             (1 << 5)
 #define AS3722_IRQ_MASK_WATCHDOG               (1 << 6)
 
 #define AS3722_IRQ_BIT_LID                     (1 << 0)