Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 122a5243 authored by Jigarkumar Kishorkumar Zala's avatar Jigarkumar Kishorkumar Zala Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarJigarkumar Kishorkumar Zala <j_zala@codeaurora.org>
Signed-off-by: default avatarChun Zhang <chunz@codeaurora.org>
parent d9479b68
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -98,7 +98,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
@@ -996,7 +996,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;
}
@@ -1346,7 +1346,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,
@@ -1556,7 +1558,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,
@@ -1593,8 +1597,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");