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

Commit 393568fe authored by Jigarkumar Kishorkumar Zala's avatar Jigarkumar Kishorkumar Zala
Browse files

leds: leds-qpnp-flash: disable headroom sense when module is disabled



Disabling headroom sense after module disable, for reducing
leakage current.

CRs-Fixed: 829939
Change-Id: Id72243eb1ff422402b01f8faba6110d8dd0637dc
Signed-off-by: default avatarJigarkumar Kishorkumar Zala <j_zala@codeaurora.org>
parent 377d2dff
Loading
Loading
Loading
Loading
+83 −25
Original line number Original line Diff line number Diff line
@@ -95,6 +95,7 @@
#define	FLASH_LED_VPH_DROOP_THRESHOLD_MIN_MV			2500
#define	FLASH_LED_VPH_DROOP_THRESHOLD_MIN_MV			2500
#define	FLASH_LED_VPH_DROOP_THRESHOLD_DIVIDER			100
#define	FLASH_LED_VPH_DROOP_THRESHOLD_DIVIDER			100
#define	FLASH_LED_HDRM_SNS_ENABLE				0x81
#define	FLASH_LED_HDRM_SNS_ENABLE				0x81
#define	FLASH_LED_HDRM_SNS_DISABLE				0x01
#define	FLASH_LED_UA_PER_MA					1000
#define	FLASH_LED_UA_PER_MA					1000
#define	FLASH_LED_MASK_MODULE_MASK2_ENABLE			0x20
#define	FLASH_LED_MASK_MODULE_MASK2_ENABLE			0x20
#define	FLASH_LED_MASK3_ENABLE_SHIFT				7
#define	FLASH_LED_MASK3_ENABLE_SHIFT				7
@@ -617,6 +618,31 @@ static int qpnp_flash_led_module_disable(struct qpnp_flash_led *led,
			return -EINVAL;
			return -EINVAL;
		}
		}
	}
	}

	if (led->pdata->hdrm_sns_ch0_en) {
		rc = qpnp_led_masked_write(led->spmi_dev,
			FLASH_HDRM_SNS_ENABLE_CTRL0(led->base),
			FLASH_LED_HDRM_SNS_ENABLE_MASK,
			FLASH_LED_HDRM_SNS_DISABLE);
		if (rc) {
			dev_err(&led->spmi_dev->dev,
					"Headroom sense disable failed\n");
			return rc;
		}
	}

	if (led->pdata->hdrm_sns_ch1_en) {
		rc = qpnp_led_masked_write(led->spmi_dev,
			FLASH_HDRM_SNS_ENABLE_CTRL1(led->base),
			FLASH_LED_HDRM_SNS_ENABLE_MASK,
			FLASH_LED_HDRM_SNS_DISABLE);
		if (rc) {
			dev_err(&led->spmi_dev->dev,
					"Headroom sense disable failed\n");
			return rc;
		}
	}

	return 0;
	return 0;
}
}


@@ -770,6 +796,34 @@ static void qpnp_flash_led_work(struct work_struct *work)
			goto exit_flash_led_work;
			goto exit_flash_led_work;
		}
		}


		if (led->flash_node[2].flash_on) {
			if (led->pdata->hdrm_sns_ch0_en) {
				rc = qpnp_led_masked_write(led->spmi_dev,
					FLASH_HDRM_SNS_ENABLE_CTRL0(led->base),
					FLASH_LED_HDRM_SNS_ENABLE_MASK,
					FLASH_LED_HDRM_SNS_ENABLE);
				if (rc) {
					dev_err(&led->spmi_dev->dev,
					"Headroom sense enable failed\n");
					goto exit_flash_led_work;
				}
			}
		}

		if (led->flash_node[3].flash_on) {
			if (led->pdata->hdrm_sns_ch1_en) {
				rc = qpnp_led_masked_write(led->spmi_dev,
					FLASH_HDRM_SNS_ENABLE_CTRL1(led->base),
					FLASH_LED_HDRM_SNS_ENABLE_MASK,
					FLASH_LED_HDRM_SNS_ENABLE);
				if (rc) {
					dev_err(&led->spmi_dev->dev,
					"Headroom sense enable failed\n");
					goto exit_flash_led_work;
				}
			}
		}

		rc = qpnp_led_masked_write(led->spmi_dev,
		rc = qpnp_led_masked_write(led->spmi_dev,
			FLASH_LED_STROBE_CTRL(led->base),
			FLASH_LED_STROBE_CTRL(led->base),
			flash_node->trigger,
			flash_node->trigger,
@@ -955,6 +1009,34 @@ static void qpnp_flash_led_work(struct work_struct *work)
						FLASH_RAMP_UP_DELAY_US_MAX);
						FLASH_RAMP_UP_DELAY_US_MAX);
		}
		}


		if (led->flash_node[0].flash_on) {
			if (led->pdata->hdrm_sns_ch0_en) {
				rc = qpnp_led_masked_write(led->spmi_dev,
					FLASH_HDRM_SNS_ENABLE_CTRL0(led->base),
					FLASH_LED_HDRM_SNS_ENABLE_MASK,
					FLASH_LED_HDRM_SNS_ENABLE);
				if (rc) {
					dev_err(&led->spmi_dev->dev,
					"Headroom sense enable failed\n");
					goto exit_flash_led_work;
				}
			}
		}

		if (led->flash_node[1].flash_on) {
			if (led->pdata->hdrm_sns_ch1_en) {
				rc = qpnp_led_masked_write(led->spmi_dev,
					FLASH_HDRM_SNS_ENABLE_CTRL1(led->base),
					FLASH_LED_HDRM_SNS_ENABLE_MASK,
					FLASH_LED_HDRM_SNS_ENABLE);
				if (rc) {
					dev_err(&led->spmi_dev->dev,
					"Headroom sense enable failed\n");
					goto exit_flash_led_work;
				}
			}
		}

		rc = qpnp_led_masked_write(led->spmi_dev,
		rc = qpnp_led_masked_write(led->spmi_dev,
			FLASH_LED_STROBE_CTRL(led->base),
			FLASH_LED_STROBE_CTRL(led->base),
			flash_node->trigger,
			flash_node->trigger,
@@ -1211,30 +1293,6 @@ static int qpnp_flash_led_init_settings(struct qpnp_flash_led *led)
		return rc;
		return rc;
	}
	}


	if (led->pdata->hdrm_sns_ch0_en) {
		rc = qpnp_led_masked_write(led->spmi_dev,
				FLASH_HDRM_SNS_ENABLE_CTRL0(led->base),
				FLASH_LED_HDRM_SNS_ENABLE_MASK,
				FLASH_LED_HDRM_SNS_ENABLE);
		if (rc) {
			dev_err(&led->spmi_dev->dev,
					"Headroom sense enable failed\n");
			return rc;
		}
	}

	if (led->pdata->hdrm_sns_ch1_en) {
		rc = qpnp_led_masked_write(led->spmi_dev,
				FLASH_HDRM_SNS_ENABLE_CTRL1(led->base),
				FLASH_LED_HDRM_SNS_ENABLE_MASK,
				FLASH_LED_HDRM_SNS_ENABLE);
		if (rc) {
			dev_err(&led->spmi_dev->dev,
					"Headroom sense enable failed\n");
			return rc;
		}
	}

	led->battery_psy = power_supply_get_by_name("battery");
	led->battery_psy = power_supply_get_by_name("battery");
	if (!led->battery_psy) {
	if (!led->battery_psy) {
		dev_err(&led->spmi_dev->dev,
		dev_err(&led->spmi_dev->dev,