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

Commit 2b04b625 authored by Simmi Pateriya's avatar Simmi Pateriya
Browse files

ASoC: wcd: Do not enable pulldown when headset is inserted



If pulldown is enabled when headset is inserted, issues
such as no button press or fake interrupts during extension
cable usecase are seen. Do not enable pulldown when headset
is kept inserted.

Change-Id: I586376a806e8f3495fc94b7a8f4af62a59f17bbe
Signed-off-by: default avatarSimmi Pateriya <simmip@codeaurora.org>
parent 854262df
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -182,7 +182,8 @@ enum {
	MAX_MSM8X16_WCD_DEVICE
};

static struct wcd_mbhc_register wcd_mbhc_registers[] = {
static struct wcd_mbhc_register
	wcd_mbhc_registers[WCD_MBHC_REG_FUNC_MAX] = {

	WCD_MBHC_REGISTER("WCD_MBHC_L_DET_EN",
			  MSM8X16_WCD_A_ANALOG_MBHC_DET_CTL_1, 0x80, 7, 0),
@@ -250,6 +251,8 @@ static struct wcd_mbhc_register wcd_mbhc_registers[] = {
			  0x10, 4, 0),
	WCD_MBHC_REGISTER("WCD_MBHC_MOISTURE_VREF",
			  0, 0, 0, 0),
	WCD_MBHC_REGISTER("WCD_MBHC_PULLDOWN_CTRL",
			  MSM8X16_WCD_A_ANALOG_MICB_2_EN, 0x20, 5, 0),
};

struct msm8x16_wcd_spmi {
+4 −0
Original line number Diff line number Diff line
@@ -1261,6 +1261,8 @@ static void wcd_mbhc_swch_irq_handler(struct wcd_mbhc *mbhc)
			 * is using internal micbias*/
			mbhc->mbhc_cb->micb_internal(codec, 1, true);

		/* Remove micbias pulldown */
		WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_PULLDOWN_CTRL, 0);
		/* Apply trim if needed on the device */
		if (mbhc->mbhc_cb->trim_btn_reg)
			mbhc->mbhc_cb->trim_btn_reg(codec);
@@ -1294,6 +1296,8 @@ static void wcd_mbhc_swch_irq_handler(struct wcd_mbhc *mbhc)
			if (mbhc->mbhc_cb->micb_internal)
				mbhc->mbhc_cb->micb_internal(codec, 1, false);

			/* Pulldown micbias */
			WCD_MBHC_REG_UPDATE_BITS(WCD_MBHC_PULLDOWN_CTRL, 1);
			mbhc->mbhc_cb->irq_control(codec,
					mbhc->intr_ids->mbhc_hs_rem_intr,
					false);
+2 −0
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@ enum wcd_mbhc_register_function {
	WCD_MBHC_HPH_PA_EN,
	WCD_MBHC_SWCH_LEVEL_REMOVE,
	WCD_MBHC_MOISTURE_VREF,
	WCD_MBHC_PULLDOWN_CTRL,
	WCD_MBHC_REG_FUNC_MAX,
};

enum wcd_mbhc_plug_type {
+4 −1
Original line number Diff line number Diff line
@@ -436,7 +436,8 @@ struct wcd_swr_ctrl_platform_data {
			  int action);
};

static struct wcd_mbhc_register wcd_mbhc_registers[] = {
static struct wcd_mbhc_register
	wcd_mbhc_registers[WCD_MBHC_REG_FUNC_MAX] = {
	WCD_MBHC_REGISTER("WCD_MBHC_L_DET_EN",
			  WCD9335_ANA_MBHC_MECH, 0x80, 7, 0),
	WCD_MBHC_REGISTER("WCD_MBHC_GND_DET_EN",
@@ -502,6 +503,8 @@ static struct wcd_mbhc_register wcd_mbhc_registers[] = {
	 */
	WCD_MBHC_REGISTER("WCD_MBHC_MOISTURE_VREF",
			  0, 0, 0, 0),
	WCD_MBHC_REGISTER("WCD_MBHC_PULLDOWN_CTRL",
			  0, 0, 0, 0),
};

static const struct wcd_mbhc_intr intr_ids = {