From 00424d93a705265d8fb0de84f798886d6e43e08e Mon Sep 17 00:00:00 2001 From: Shantanu Jain Date: Tue, 2 Feb 2016 15:38:11 +0530 Subject: [PATCH] leds: qpnp-wled: enable OVP irq properly in WLED driver Enable OVP irq properly in WLED driver only when WLED state is changed to ON and ovp_irq support is enabled. Plus, disable the ovp_irq before dis/enabling the WLED module by writing to QPNP_WLED_INT_EN_CLR WLED register. Change-Id: I75fa040c6e6f0e6ee40ec3e931c654f2c27ffcaf Signed-off-by: Shantanu Jain --- drivers/leds/leds-qpnp-wled.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/leds/leds-qpnp-wled.c b/drivers/leds/leds-qpnp-wled.c index 28e8f9c49f7d..0e13a62f8416 100644 --- a/drivers/leds/leds-qpnp-wled.c +++ b/drivers/leds/leds-qpnp-wled.c @@ -33,6 +33,7 @@ /* ctrl registers */ #define QPNP_WLED_INT_EN_SET(b) (b + 0x15) +#define QPNP_WLED_INT_EN_CLR(b) (b + 0x16) #define QPNP_WLED_EN_REG(b) (b + 0x46) #define QPNP_WLED_FDBK_OP_REG(b) (b + 0x48) #define QPNP_WLED_VREF_REG(b) (b + 0x49) @@ -101,7 +102,6 @@ #define QPNP_WLED_OVP_31000_MV 31000 #define QPNP_WLED_TEST4_EN_VREF_UP 0x32 #define QPNP_WLED_TEST4_EN_IIND_UP 0x1 -#define QPNP_WLED_INT_EN_SET_OVP_DIS 0x00 #define QPNP_WLED_INT_EN_SET_OVP_EN 0x02 #define QPNP_WLED_OVP_FLT_SLEEP_US 10 @@ -417,9 +417,9 @@ static int qpnp_wled_module_en(struct qpnp_wled *wled, /* disable OVP fault interrupt */ if (state) { - reg = QPNP_WLED_INT_EN_SET_OVP_DIS; + reg = QPNP_WLED_INT_EN_SET_OVP_EN; rc = qpnp_wled_write_reg(wled, ®, - QPNP_WLED_INT_EN_SET(base_addr)); + QPNP_WLED_INT_EN_CLR(base_addr)); if (rc) return rc; } @@ -436,7 +436,7 @@ static int qpnp_wled_module_en(struct qpnp_wled *wled, return rc; /* enable OVP fault interrupt */ - if (state) { + if (state && (wled->ovp_irq > 0)) { udelay(QPNP_WLED_OVP_FLT_SLEEP_US); reg = QPNP_WLED_INT_EN_SET_OVP_EN; rc = qpnp_wled_write_reg(wled, ®,