summaryrefslogtreecommitdiff
path: root/drivers/leds
diff options
context:
space:
mode:
authorAmy Maloche <amaloche@codeaurora.org>2013-08-13 16:29:39 -0700
committerStephen Boyd <sboyd@codeaurora.org>2013-09-04 17:20:37 -0700
commitead1f716dfb2875acab416db8c2183710d0855ab (patch)
treec06ae314964a37700b0755be841dc06c5a13aebb /drivers/leds
parent876638b78737acfe75fe833d16ba7891cd3000cd (diff)
leds: leds-qpnp: Set WLED string current sinks
Set correct current sink when 1, 2 or 3 strings are in use. Also, when using debug dumps, print all relevant registers. Change-Id: Ib9ae9a959c3fcee0dcbb7b2882434cc6bcd126a3 Signed-off-by: Amy Maloche <amaloche@codeaurora.org>
Diffstat (limited to 'drivers/leds')
-rw-r--r--drivers/leds/leds-qpnp.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/leds/leds-qpnp.c b/drivers/leds/leds-qpnp.c
index 51b8af82a14a..31efbd99429a 100644
--- a/drivers/leds/leds-qpnp.c
+++ b/drivers/leds/leds-qpnp.c
@@ -259,8 +259,10 @@ enum led_mode {
};
static u8 wled_debug_regs[] = {
+ /* brightness registers */
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
/* common registers */
- 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e, 0x4f,
+ 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
/* LED1 */
0x60, 0x61, 0x62, 0x63, 0x66,
@@ -1384,7 +1386,7 @@ static void qpnp_led_turn_off(struct qpnp_led_data *led)
static int qpnp_wled_init(struct qpnp_led_data *led)
{
int rc, i;
- u8 num_wled_strings;
+ u8 num_wled_strings, val = 0;
num_wled_strings = led->wled_cfg->num_strings;
@@ -1456,10 +1458,10 @@ static int qpnp_wled_init(struct qpnp_led_data *led)
/* program current sink */
if (led->wled_cfg->cs_out_en) {
+ for (i = 0; i < led->wled_cfg->num_strings; i++)
+ val |= 1 << i;
rc = qpnp_led_masked_write(led, WLED_CURR_SINK_REG(led->base),
- WLED_CURR_SINK_MASK,
- (((1 << led->wled_cfg->num_strings) - 1)
- << WLED_CURR_SINK_SHFT));
+ WLED_CURR_SINK_MASK, (val << WLED_CURR_SINK_SHFT));
if (rc) {
dev_err(&led->spmi_dev->dev,
"WLED curr sink reg write failed(%d)\n", rc);