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

Commit 61e7e8b1 authored by Meng Wang's avatar Meng Wang Committed by Meng Wang
Browse files

ASoC: wsa883x: Enable all WSA interrupts



Only UVLO_irq, PA_ON_ERR_IRQ and PDM_WD_IRQ are enabled
on wsa883x. Enable all other IRQs to monitor if WSA is
in bad state.

Change-Id: I768c7f2c0fe64cc008ed63459b583e665e1ee013
Signed-off-by: default avatarMeng Wang <quic_mengw@quicinc.com>
parent 997c13ca
Loading
Loading
Loading
Loading
+20 −9
Original line number Diff line number Diff line
@@ -1125,6 +1125,11 @@ static int wsa883x_spkr_event(struct snd_soc_dapm_widget *w,
		usleep_range(250, 300);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PA_ON_ERR);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_UVLO);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_SAF2WAR);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_WAR2SAF);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_DISABLE);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP);
		wcd_enable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD);
		/* Force remove group */
		swr_remove_from_group(wsa883x->swr_slave,
				      wsa883x->swr_slave->dev_num);
@@ -1158,6 +1163,11 @@ static int wsa883x_spkr_event(struct snd_soc_dapm_widget *w,
				0x10, 0x00);
		snd_soc_component_update_bits(component, WSA883X_PDM_WD_CTL,
				0x01, 0x00);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_DISABLE);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_WAR2SAF);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_SAF2WAR);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_UVLO);
		wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PA_ON_ERR);
		clear_bit(SPKR_STATUS, &wsa883x->status_mask);
@@ -1642,6 +1652,7 @@ static int wsa883x_swr_probe(struct swr_device *pdev)
	}
	swr_set_dev_data(pdev, wsa883x);
	wsa883x->swr_slave = pdev;
	wsa883x->dev = &pdev->dev;
	pin_state_current = msm_cdc_pinctrl_get_state(wsa883x->wsa_rst_np);
	wsa883x_gpio_ctrl(wsa883x, true);
	/*
@@ -1687,48 +1698,48 @@ static int wsa883x_swr_probe(struct swr_device *pdev)
	}

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_SAF2WAR,
			"WSA SAF2WAR", wsa883x_saf2war_handle_irq, NULL);
			"WSA SAF2WAR", wsa883x_saf2war_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_SAF2WAR);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_WAR2SAF,
			"WSA WAR2SAF", wsa883x_war2saf_handle_irq, NULL);
			"WSA WAR2SAF", wsa883x_war2saf_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_WAR2SAF);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_DISABLE,
			"WSA OTP", wsa883x_otp_handle_irq, NULL);
			"WSA OTP", wsa883x_otp_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_DISABLE);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP,
			"WSA OCP", wsa883x_ocp_handle_irq, NULL);
			"WSA OCP", wsa883x_ocp_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_OCP);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLIP,
			"WSA CLIP", wsa883x_clip_handle_irq, NULL);
			"WSA CLIP", wsa883x_clip_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLIP);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PDM_WD,
			"WSA PDM WD", wsa883x_pdm_wd_handle_irq, NULL);
			"WSA PDM WD", wsa883x_pdm_wd_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_PDM_WD);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD,
			"WSA CLK WD", wsa883x_clk_wd_handle_irq, NULL);
			"WSA CLK WD", wsa883x_clk_wd_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_CLK_WD);

	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_INTR_PIN,
			"WSA EXT INT", wsa883x_ext_int_handle_irq, NULL);
			"WSA EXT INT", wsa883x_ext_int_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_INTR_PIN);

	/* Under Voltage Lock out (UVLO) interrupt handle */
	wcd_request_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_UVLO,
			"WSA UVLO", wsa883x_uvlo_handle_irq, NULL);
			"WSA UVLO", wsa883x_uvlo_handle_irq, wsa883x);

	wcd_disable_irq(&wsa883x->irq_info, WSA883X_IRQ_INT_UVLO);