/*----------------------------------------------------------------------*/
 
 /*
- * LED register offsets (use TWL4030_MODULE_{LED,PWMA,PWMB}))
+ * LED register offsets from TWL_MODULE_LED base
  * PWMs A and B are dedicated to LEDs A and B, respectively.
  */
 
-#define TWL4030_LED_LEDEN      0x0
+#define TWL4030_LED_LEDEN_REG  0x00
+#define TWL4030_PWMAON_REG     0x01
+#define TWL4030_PWMAOFF_REG    0x02
+#define TWL4030_PWMBON_REG     0x03
+#define TWL4030_PWMBOFF_REG    0x04
 
 /* LEDEN bits */
 #define LEDEN_LEDAON           BIT(0)
 #define LEDEN_PWM_LENGTHA      BIT(6)
 #define LEDEN_PWM_LENGTHB      BIT(7)
 
-#define TWL4030_PWMx_PWMxON    0x0
-#define TWL4030_PWMx_PWMxOFF   0x1
-
 #define PWMxON_LENGTH          BIT(7)
 
 /*----------------------------------------------------------------------*/
        else
                cached_leden |= mask;
        status = twl_i2c_write_u8(TWL4030_MODULE_LED, cached_leden,
-                       TWL4030_LED_LEDEN);
+                                 TWL4030_LED_LEDEN_REG);
        mutex_unlock(&gpio_lock);
 }
 
        if (offset >= TWL4030_GPIO_MAX) {
                u8      ledclr_mask = LEDEN_LEDAON | LEDEN_LEDAEXT
                                | LEDEN_LEDAPWM | LEDEN_PWM_LENGTHA;
-               u8      module = TWL4030_MODULE_PWMA;
+               u8      reg = TWL4030_PWMAON_REG;
 
                offset -= TWL4030_GPIO_MAX;
                if (offset) {
                        ledclr_mask <<= 1;
-                       module = TWL4030_MODULE_PWMB;
+                       reg = TWL4030_PWMBON_REG;
                }
 
                /* initialize PWM to always-drive */
-               status = twl_i2c_write_u8(module, 0x7f,
-                               TWL4030_PWMx_PWMxOFF);
+               /* Configure PWM OFF register first */
+               status = twl_i2c_write_u8(TWL4030_MODULE_LED, 0x7f, reg + 1);
                if (status < 0)
                        goto done;
-               status = twl_i2c_write_u8(module, 0x7f,
-                               TWL4030_PWMx_PWMxON);
+
+               /* Followed by PWM ON register */
+               status = twl_i2c_write_u8(TWL4030_MODULE_LED, 0x7f, reg);
                if (status < 0)
                        goto done;
 
                /* init LED to not-driven (high) */
-               module = TWL4030_MODULE_LED;
-               status = twl_i2c_read_u8(module, &cached_leden,
-                               TWL4030_LED_LEDEN);
+               status = twl_i2c_read_u8(TWL4030_MODULE_LED, &cached_leden,
+                                        TWL4030_LED_LEDEN_REG);
                if (status < 0)
                        goto done;
                cached_leden &= ~ledclr_mask;
-               status = twl_i2c_write_u8(module, cached_leden,
-                               TWL4030_LED_LEDEN);
+               status = twl_i2c_write_u8(TWL4030_MODULE_LED, cached_leden,
+                                         TWL4030_LED_LEDEN_REG);
                if (status < 0)
                        goto done;