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

Commit 3280b15b authored by Rohit Kumar's avatar Rohit Kumar Committed by Gerrit - the friendly Code Review server
Browse files

ASoC: wcd: Enable ADC and Legacy mbhc solutions dynamically



Compile both adc and legacy source files when both configs are
selected. Add variable to select detection logic at runtime
instead of compile time.

CRs-Fixed: 2069906
Change-Id: I0bac85b89ceb98abcf119e441f03e97b992b71a3
Signed-off-by: default avatarRohit Kumar <rohitkr@codeaurora.org>
parent 8de1e89d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -882,7 +882,6 @@ config SND_SOC_WCD9335
        tristate
	depends on WCD9XXX_CODEC_CORE
	select SND_SOC_WCD9XXX
	select SND_SOC_WCD_MBHC
	select SND_SOC_WCD_MBHC_LEGACY
	select SND_SOC_WCD_CPE

@@ -900,7 +899,6 @@ config SND_SOC_WCD934X
config SND_SOC_WCD934X_MBHC
        tristate
	depends on SND_SOC_WCD934X
	select SND_SOC_WCD_MBHC
	select SND_SOC_WCD_MBHC_ADC

config REGMAP_SWR
@@ -933,9 +931,11 @@ config SND_SOC_WCD_MBHC

config SND_SOC_WCD_MBHC_LEGACY
	tristate
	select SND_SOC_WCD_MBHC

config SND_SOC_WCD_MBHC_ADC
	tristate
	select SND_SOC_WCD_MBHC

config SND_SOC_WCD_DSP_MGR
	tristate
+5 −3
Original line number Diff line number Diff line
@@ -172,10 +172,12 @@ ifeq ($(CONFIG_COMMON_CLK_QCOM), y)
endif
snd-soc-wcd-cpe-objs := wcd_cpe_services.o wcd_cpe_core.o
snd-soc-wsa881x-objs := wsa881x.o wsa881x-tables.o wsa881x-regmap.o wsa881x-temp-sensor.o
snd-soc-wcd-mbhc-objs := wcd-mbhc-v2.o
ifneq (,$(filter $(CONFIG_SND_SOC_WCD_MBHC_LEGACY),y m))
	snd-soc-wcd-mbhc-objs := wcd-mbhc-v2.o wcd-mbhc-legacy.o
else ifneq (,$(filter $(CONFIG_SND_SOC_WCD_MBHC_ADC),y m))
	snd-soc-wcd-mbhc-objs := wcd-mbhc-v2.o wcd-mbhc-adc.o
	snd-soc-wcd-mbhc-objs += wcd-mbhc-legacy.o
endif
ifneq (,$(filter $(CONFIG_SND_SOC_WCD_MBHC_ADC),y m))
	snd-soc-wcd-mbhc-objs += wcd-mbhc-adc.o
endif
snd-soc-wsa881x-analog-objs := wsa881x-analog.o wsa881x-tables-analog.o
snd-soc-wsa881x-analog-objs += wsa881x-regmap-analog.o wsa881x-irq.o
+0 −1
Original line number Diff line number Diff line

config SND_SOC_SDM660_CDC
	tristate "MSM Internal PMIC based codec"
	select SND_SOC_WCD_MBHC
	select SND_SOC_WCD_MBHC_LEGACY
+3 −3
Original line number Diff line number Diff line
@@ -1108,7 +1108,7 @@ static irqreturn_t wcd_mbhc_release_handler(int irq, void *data)
	 * For ADC MBHC, ADC_COMPLETE interrupt will be generated
	 * in this case. So skip the check here.
	 */
	if (!WCD_MBHC_DETECTION &&
	if (mbhc->mbhc_detection_logic == WCD_DETECTION_LEGACY &&
		mbhc->current_plug == MBHC_PLUG_TYPE_HEADPHONE) {
		wcd_mbhc_find_plug_and_report(mbhc, MBHC_PLUG_TYPE_HEADSET);
		goto exit;
@@ -1922,7 +1922,7 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec,
	init_waitqueue_head(&mbhc->wait_btn_press);
	mutex_init(&mbhc->codec_resource_lock);

	switch (WCD_MBHC_DETECTION) {
	switch (mbhc->mbhc_detection_logic) {
	case WCD_DETECTION_LEGACY:
		wcd_mbhc_legacy_init(mbhc);
		break;
@@ -1931,7 +1931,7 @@ int wcd_mbhc_init(struct wcd_mbhc *mbhc, struct snd_soc_codec *codec,
		break;
	default:
		pr_err("%s: Unknown detection logic type %d\n",
			__func__, WCD_MBHC_DETECTION);
			__func__, mbhc->mbhc_detection_logic);
		break;
	}

+3 −6
Original line number Diff line number Diff line
@@ -157,12 +157,6 @@ enum wcd_mbhc_detect_logic {
	WCD_DETECTION_ADC,
};

#if IS_ENABLED(CONFIG_SND_SOC_WCD_MBHC_ADC)
#define WCD_MBHC_DETECTION	WCD_DETECTION_ADC
#else
#define WCD_MBHC_DETECTION	WCD_DETECTION_LEGACY
#endif

enum wcd_mbhc_cs_mb_en_flag {
	WCD_MBHC_EN_CS = 0,
	WCD_MBHC_EN_MB,
@@ -565,6 +559,9 @@ struct wcd_mbhc {
	struct mutex hphl_pa_lock;
	struct mutex hphr_pa_lock;

	/* Holds mbhc detection method - ADC/Legacy */
	unsigned int mbhc_detection_logic;

	unsigned long intr_status;
	bool is_hph_ocp_pending;

Loading