leds: leds-qpnp-flash: amend strobe bit for hardware strobe

Hardware strobe bit is bit[2] per PMIC hardware specification. This
bit should be set when user writes to existing sysfs entry to enable
hardware strobe.

Change-Id: I3d7bda808997025c1716f459807011da83ee1eb7
Signed-off-by: Jigarkumar Kishorkumar Zala <j_zala@codeaurora.org>
Signed-off-by: Chun Zhang <chunz@codeaurora.org>
This commit is contained in:
Jigarkumar Kishorkumar Zala 2015-08-26 11:11:54 -07:00 committed by Gerrit - the friendly Code Review server
parent 4aef60c2a0
commit ba46629542
1 changed files with 12 additions and 6 deletions

View File

@ -96,7 +96,7 @@
#define FLASH_MAX_LEVEL 0x4F
#define FLASH_LED_FLASH_HW_VREG_OK 0x40
#define FLASH_LED_FLASH_SW_VREG_OK 0x80
#define FLASH_LED_STROBE_TYPE_HW 0x40
#define FLASH_LED_STROBE_TYPE_HW 0x04
#define FLASH_DURATION_DIVIDER 10
#define FLASH_LED_HEADROOM_DIVIDER 100
#define FLASH_LED_HEADROOM_OFFSET 2
@ -987,7 +987,7 @@ static int qpnp_flash_led_module_disable(struct qpnp_flash_led *led,
}
if (flash_node->id == FLASH_LED_SWITCH)
flash_node->trigger = 0;
flash_node->trigger &= FLASH_LED_STROBE_TYPE_HW;
return 0;
}
@ -1226,7 +1226,9 @@ static void qpnp_flash_led_work(struct work_struct *work)
rc = qpnp_led_masked_write(led->spmi_dev,
FLASH_LED_STROBE_CTRL(led->base),
(flash_node->id == FLASH_LED_SWITCH ? FLASH_STROBE_MASK
: flash_node->trigger),
| FLASH_LED_STROBE_TYPE_HW
: flash_node->trigger |
FLASH_LED_STROBE_TYPE_HW),
flash_node->trigger);
if (rc) {
dev_err(&led->spmi_dev->dev,
@ -1435,7 +1437,9 @@ static void qpnp_flash_led_work(struct work_struct *work)
rc = qpnp_led_masked_write(led->spmi_dev,
FLASH_LED_STROBE_CTRL(led->base),
(flash_node->id == FLASH_LED_SWITCH ? FLASH_STROBE_MASK
: flash_node->trigger),
| FLASH_LED_STROBE_TYPE_HW
: flash_node->trigger |
FLASH_LED_STROBE_TYPE_HW),
flash_node->trigger);
if (rc) {
dev_err(&led->spmi_dev->dev,
@ -1472,8 +1476,10 @@ static void qpnp_flash_led_work(struct work_struct *work)
turn_off:
rc = qpnp_led_masked_write(led->spmi_dev,
FLASH_LED_STROBE_CTRL(led->base),
flash_node->id == FLASH_LED_SWITCH ? FLASH_STROBE_MASK
: flash_node->trigger,
(flash_node->id == FLASH_LED_SWITCH ? FLASH_STROBE_MASK
| FLASH_LED_STROBE_TYPE_HW
: flash_node->trigger
| FLASH_LED_STROBE_TYPE_HW),
FLASH_LED_DISABLE);
if (rc) {
dev_err(&led->spmi_dev->dev, "Strobe disable failed\n");