浏览代码

Merge 0709b47e975ef25ef36c3a7e1bab94d70a632a13 on remote branch

Change-Id: I96230cae6daf592941a9732a80f3e91c1dc5f5a1
Linux Build Service Account 2 年之前
父节点
当前提交
9969830781

+ 38 - 9
Android.mk

@@ -2,19 +2,23 @@
 
 LOCAL_PATH := $(call my-dir)
 
-ifeq ($(call is-board-platform, taro),true)
+ifeq ($(call is-board-platform-in-list,taro),true)
 AUDIO_SELECT  := CONFIG_SND_SOC_WAIPIO=m
 endif
 
-ifeq ($(call is-board-platform, kalama),true)
+ifeq ($(call is-board-platform-in-list,kalama),true)
 AUDIO_SELECT  := CONFIG_SND_SOC_KALAMA=m
 endif
 
-ifeq ($(call is-board-platform, bengal),true)
+ifeq ($(call is-board-platform-in-list,bengal),true)
 AUDIO_SELECT  := CONFIG_SND_SOC_BENGAL=m
 endif
 
-ifeq ($(call is-board-platform, pineapple),true)
+ifeq ($(call is-board-platform-in-list,holi blair),true)
+AUDIO_SELECT  := CONFIG_SND_SOC_HOLI=m
+endif
+
+ifeq ($(call is-board-platform-in-list,pineapple),true)
 AUDIO_SELECT  := CONFIG_SND_SOC_PINEAPPLE=m
 endif
 
@@ -23,7 +27,7 @@ include $(call all-subdir-makefiles)
 endif
 
 # Build/Package only in case of supported target
-ifeq ($(call is-board-platform-in-list,taro kalama bengal pineapple), true)
+ifeq ($(call is-board-platform-in-list,taro kalama bengal pineapple holi blair), true)
 
 LOCAL_PATH := $(call my-dir)
 
@@ -34,6 +38,7 @@ ifneq ($(findstring opensource,$(LOCAL_PATH)),)
 	AUDIO_BLD_DIR := $(abspath .)/vendor/qcom/opensource/audio-kernel
 endif # opensource
 
+include $(AUDIO_BLD_DIR)/EnableBazel.mk
 DLKM_DIR := $(TOP)/device/qcom/common/dlkm
 
 
@@ -48,7 +53,10 @@ KBUILD_OPTIONS := AUDIO_ROOT=$(AUDIO_BLD_DIR)
 KBUILD_OPTIONS += MODNAME=audio_dlkm
 KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
 KBUILD_OPTIONS += $(AUDIO_SELECT)
+
+ifneq ($(call is-board-platform-in-list, bengal holi blair),true)
 KBUILD_OPTIONS += KBUILD_EXTRA_SYMBOLS=$(PWD)/$(call intermediates-dir-for,DLKM,msm-ext-disp-module-symvers)/Module.symvers
+endif
 
 AUDIO_SRC_FILES := \
 	$(wildcard $(LOCAL_PATH)/*) \
@@ -196,7 +204,7 @@ LOCAL_MODULE_DEBUG_ENABLE := true
 LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
 include $(DLKM_DIR)/Build_external_kernelmodule.mk
 ###########################################################
-ifneq ($(call is-board-platform-in-list, bengal),true)
+ifneq ($(call is-board-platform-in-list, bengal holi blair),true)
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES           := $(AUDIO_SRC_FILES)
 LOCAL_MODULE              := swr_dmic_dlkm.ko
@@ -216,7 +224,7 @@ LOCAL_MODULE_DEBUG_ENABLE := true
 LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
 include $(DLKM_DIR)/Build_external_kernelmodule.mk
 ###########################################################
-ifneq ($(call is-board-platform-in-list, bengal),true)
+ifneq ($(call is-board-platform-in-list, bengal holi blair),true)
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES           := $(AUDIO_SRC_FILES)
 LOCAL_MODULE              := swr_haptics_dlkm.ko
@@ -245,7 +253,7 @@ LOCAL_MODULE_DEBUG_ENABLE := true
 LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
 include $(DLKM_DIR)/Build_external_kernelmodule.mk
 ########################### LPASS-CDC CODEC  ###########################
-ifneq ($(call is-board-platform-in-list, bengal),true)
+ifneq ($(call is-board-platform-in-list, bengal holi blair),true)
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES           := $(AUDIO_SRC_FILES)
 LOCAL_MODULE              := lpass_cdc_dlkm.ko
@@ -369,7 +377,7 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(call intermediates-dir-for,DLKM,msm-ext-disp-
 include $(DLKM_DIR)/Build_external_kernelmodule.mk
 endif
 
-ifeq ($(call is-board-platform-in-list, bengal),true)
+ifeq ($(call is-board-platform-in-list, bengal holi blair),true)
 ###########################################################
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES           := $(AUDIO_SRC_FILES)
@@ -434,6 +442,27 @@ LOCAL_MODULE_DEBUG_ENABLE := true
 LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
 include $(DLKM_DIR)/Build_external_kernelmodule.mk
 endif
+
+ifeq ($(call is-board-platform-in-list,holi blair),true)
+########################### WCD938x CODEC  ################################
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES           := $(AUDIO_SRC_FILES)
+LOCAL_MODULE              := wcd938x_dlkm.ko
+LOCAL_MODULE_KBUILD_NAME  := asoc/codecs/wcd938x/wcd938x_dlkm.ko
+LOCAL_MODULE_TAGS         := optional
+LOCAL_MODULE_DEBUG_ENABLE := true
+LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
+include $(DLKM_DIR)/Build_external_kernelmodule.mk
 ###########################################################
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES           := $(AUDIO_SRC_FILES)
+LOCAL_MODULE              := wcd938x_slave_dlkm.ko
+LOCAL_MODULE_KBUILD_NAME  := asoc/codecs/wcd938x/wcd938x_slave_dlkm.ko
+LOCAL_MODULE_TAGS         := optional
+LOCAL_MODULE_DEBUG_ENABLE := true
+LOCAL_MODULE_PATH         := $(KERNEL_MODULES_OUT)
+include $(DLKM_DIR)/Build_external_kernelmodule.mk
+endif
+##########################################################
 endif # DLKM check
 endif # supported target check

+ 37 - 0
EnableBazel.mk

@@ -0,0 +1,37 @@
+ifeq ($(call is-board-platform-in-list,pineapple),true)
+LOCAL_MODULE_DDK_BUILD := true
+
+LOCAL_MODULE_KO_DIRS := dsp/q6_notifier_dlkm.ko
+LOCAL_MODULE_KO_DIRS += dsp/spf_core_dlkm.ko
+LOCAL_MODULE_KO_DIRS += dsp/audpkt_ion_dlkm.ko
+LOCAL_MODULE_KO_DIRS += ipc/gpr_dlkm.ko
+LOCAL_MODULE_KO_DIRS += ipc/audio_pkt_dlkm.ko
+LOCAL_MODULE_KO_DIRS += dsp/q6_dlkm.ko
+LOCAL_MODULE_KO_DIRS += dsp/adsp_loader_dlkm.ko
+LOCAL_MODULE_KO_DIRS += dsp/audio_prm_dlkm.ko
+LOCAL_MODULE_KO_DIRS += dsp/q6_pdr_dlkm.ko
+LOCAL_MODULE_KO_DIRS += soc/pinctrl_lpi_dlkm.ko
+LOCAL_MODULE_KO_DIRS += soc/swr_dlkm.ko
+LOCAL_MODULE_KO_DIRS += soc/swr_ctrl_dlkm.ko
+LOCAL_MODULE_KO_DIRS += soc/snd_event_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wcd_core_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/mbhc_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/swr_dmic_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wcd9xxx_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/swr_haptics_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/stub_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/machine_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/lpass-cdc/lpass_cdc_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/lpass-cdc/lpass_cdc_wsa2_macro_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/lpass-cdc/lpass_cdc_wsa_macro_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/lpass-cdc/lpass_cdc_va_macro_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/lpass-cdc/lpass_cdc_tx_macro_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/lpass-cdc/lpass_cdc_rx_macro_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wsa884x/wsa884x_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wsa883x/wsa883x_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wcd938x/wcd938x_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wcd938x/wcd938x_slave_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wcd939x/wcd939x_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/wcd939x/wcd939x_slave_dlkm.ko
+LOCAL_MODULE_KO_DIRS += asoc/codecs/hdmi_dlkm.ko
+endif

+ 8 - 0
asoc/Kbuild

@@ -79,6 +79,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		export
 		INCS    +=  -include $(AUDIO_ROOT)/config/bengalautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 	ifeq ($(CONFIG_ARCH_SDMSHRIKE), y)
 		ifdef CONFIG_SND_SOC_SA8155
 			include $(AUDIO_ROOT)/config/sa8155auto.conf

+ 8 - 0
asoc/codecs/Kbuild

@@ -79,6 +79,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		export
 		INCS    +=  -include $(AUDIO_ROOT)/config/bengalautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 	ifeq ($(CONFIG_ARCH_SDMSHRIKE), y)
 		include $(AUDIO_ROOT)/config/sm8150auto.conf
 		export

+ 8 - 0
asoc/codecs/bolero/Kbuild

@@ -34,6 +34,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		include $(AUDIO_ROOT)/config/waipioauto.conf
 		INCS    +=  -include $(AUDIO_ROOT)/config/waipioautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 	ifeq ($(CONFIG_ARCH_LITO), y)
 		include $(AUDIO_ROOT)/config/litoauto.conf
 		export

+ 5 - 4
asoc/codecs/bolero/bolero-clk-rsc.c

@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
  * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <linux/of_platform.h>
@@ -106,7 +107,7 @@ int bolero_rsc_clk_reset(struct device *dev, int clk_id)
 	int count = 0;
 
 	if (!dev) {
-		pr_err("%s: dev is null %d\n", __func__);
+		pr_err("%s: dev is null\n", __func__);
 		return -EINVAL;
 	}
 
@@ -153,7 +154,7 @@ void bolero_clk_rsc_enable_all_clocks(struct device *dev, bool enable)
 	int i = 0;
 
 	if (!dev) {
-		pr_err("%s: dev is null %d\n", __func__);
+		pr_err("%s: dev is null\n", __func__);
 		return;
 	}
 
@@ -455,7 +456,7 @@ void bolero_clk_rsc_fs_gen_request(struct device *dev, bool enable)
 	struct bolero_clk_rsc *priv = NULL;
 
 	if (!dev) {
-		pr_err("%s: dev is null %d\n", __func__);
+		pr_err("%s: dev is null\n", __func__);
 		return;
 	}
 	clk_dev = bolero_get_rsc_clk_device_ptr(dev->parent);
@@ -531,7 +532,7 @@ int bolero_clk_rsc_request_clock(struct device *dev,
 	bool mux_switch = false;
 
 	if (!dev) {
-		pr_err("%s: dev is null %d\n", __func__);
+		pr_err("%s: dev is null\n", __func__);
 		return -EINVAL;
 	}
 	if ((clk_id_req < 0 || clk_id_req >= MAX_CLK) &&

+ 5 - 0
asoc/codecs/lpass-cdc/lpass-cdc-wsa-macro.c

@@ -1323,6 +1323,7 @@ static int lpass_cdc_wsa_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
 	int offset_val = 0;
 	int val = 0;
 	uint16_t mix_reg = 0;
+	uint16_t reg = 0;
 
 	dev_dbg(component->dev, "%s %d %s\n", __func__, event, w->name);
 
@@ -1336,6 +1337,8 @@ static int lpass_cdc_wsa_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
 		return 0;
 	}
 
+	reg = LPASS_CDC_WSA_RX0_RX_PATH_CTL +
+			(LPASS_CDC_WSA_MACRO_RX_PATH_OFFSET *  w->shift);
 	mix_reg = LPASS_CDC_WSA_RX0_RX_PATH_MIX_CTL +
 			LPASS_CDC_WSA_MACRO_RX_PATH_OFFSET * w->shift;
 
@@ -1344,6 +1347,8 @@ static int lpass_cdc_wsa_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
 		snd_soc_component_update_bits(component, mix_reg, 0x40, 0x40);
 		usleep_range(500, 510);
 		snd_soc_component_update_bits(component, mix_reg, 0x40, 0x00);
+		snd_soc_component_update_bits(component,
+					reg, 0x20, 0x20);
 		snd_soc_component_update_bits(component,
 					mix_reg, 0x20, 0x20);
 		lpass_cdc_wsa_macro_enable_swr(w, kcontrol, event);

+ 5 - 0
asoc/codecs/lpass-cdc/lpass-cdc-wsa2-macro.c

@@ -1329,6 +1329,7 @@ static int lpass_cdc_wsa2_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
 	int offset_val = 0;
 	int val = 0;
 	uint16_t mix_reg = 0;
+	uint16_t reg = 0;
 
 	dev_dbg(component->dev, "%s %d %s\n", __func__, event, w->name);
 
@@ -1342,13 +1343,17 @@ static int lpass_cdc_wsa2_macro_enable_mix_path(struct snd_soc_dapm_widget *w,
 		return 0;
 	}
 
+	reg = LPASS_CDC_WSA2_RX0_RX_PATH_CTL +
+				LPASS_CDC_WSA2_MACRO_RX_PATH_OFFSET * w->shift;
 	mix_reg = LPASS_CDC_WSA2_RX0_RX_PATH_MIX_CTL +
 				LPASS_CDC_WSA2_MACRO_RX_PATH_OFFSET * w->shift;
+
 	switch (event) {
 	case SND_SOC_DAPM_PRE_PMU:
 		snd_soc_component_update_bits(component, mix_reg, 0x40, 0x40);
 		usleep_range(500, 510);
 		snd_soc_component_update_bits(component, mix_reg, 0x40, 0x00);
+		snd_soc_component_update_bits(component, reg, 0x20, 0x20);
 		snd_soc_component_update_bits(component,
 					mix_reg, 0x20, 0x20);
 		lpass_cdc_wsa2_macro_enable_swr(w, kcontrol, event);

+ 17 - 0
asoc/codecs/wcd-mbhc-v2.c

@@ -963,6 +963,21 @@ static bool wcd_mbhc_moisture_detect(struct wcd_mbhc *mbhc, bool detection_type)
 	return ret;
 }
 
+static void wcd_mbhc_set_hsj_connect(struct snd_soc_component *component, bool connect)
+{
+#if IS_ENABLED(CONFIG_QCOM_WCD_USBSS_I2C)
+	if (connect) {
+		if (of_find_property(component->card->dev->of_node,
+					"qcom,usbss-hsj-connect-enabled", NULL))
+			wcd_usbss_switch_update(WCD_USBSS_HSJ_CONNECT, WCD_USBSS_CABLE_CONNECT);
+	} else {
+		if (of_find_property(component->card->dev->of_node,
+					"qcom,usbss-hsj-connect-enabled", NULL))
+			wcd_usbss_switch_update(WCD_USBSS_HSJ_CONNECT, WCD_USBSS_CABLE_DISCONNECT);
+	}
+#endif
+}
+
 static void wcd_mbhc_swch_irq_handler(struct wcd_mbhc *mbhc)
 {
 	bool detection_type = 0;
@@ -1004,6 +1019,7 @@ static void wcd_mbhc_swch_irq_handler(struct wcd_mbhc *mbhc)
 	if ((mbhc->current_plug == MBHC_PLUG_TYPE_NONE) &&
 	    detection_type) {
 
+		wcd_mbhc_set_hsj_connect(component, 1);
 		/* If moisture is present, then enable polling, disable
 		 * moisture detection and wait for interrupt
 		 */
@@ -1119,6 +1135,7 @@ static void wcd_mbhc_swch_irq_handler(struct wcd_mbhc *mbhc)
 				mbhc->mbhc_cb->mbhc_moisture_detect_en(mbhc,
 									false);
 		}
+		wcd_mbhc_set_hsj_connect(component, 0);
 
 	} else if (!detection_type) {
 		/* Disable external voltage source to micbias if present */

+ 8 - 0
asoc/codecs/wcd937x/Kbuild

@@ -40,6 +40,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		include $(AUDIO_ROOT)/config/waipioauto.conf
 		INCS    +=  -include $(AUDIO_ROOT)/config/waipioautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 endif
 
 # As per target team, build is done as follows:

+ 0 - 1
asoc/codecs/wcd937x/wcd937x.c

@@ -107,7 +107,6 @@ static struct regmap_irq_chip wcd937x_regmap_irq_chip = {
 //#if IS_ENABLED(CONFIG_AUDIO_QGKI)
 	.clear_ack = 1,
 //#endif
-	.mask_writeonly = 1,
 	.type_base = WCD937X_DIGITAL_INTR_LEVEL_0,
 	.runtime_pm = false,
 	.handle_post_irq = wcd937x_handle_post_irq,

+ 8 - 1
asoc/codecs/wcd938x/Kbuild

@@ -35,7 +35,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		include $(AUDIO_ROOT)/config/pineappleauto.conf
 		INCS    +=  -include $(AUDIO_ROOT)/config/pineappleautoconf.h
 	endif
-
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 endif
 
 # As per target team, build is done as follows:

+ 128 - 89
asoc/codecs/wcd939x/wcd939x.c

@@ -801,60 +801,66 @@ EXPORT_SYMBOL(wcd939x_soc_get_mbhc);
 static int  wcd939x_config_power_mode(struct snd_soc_component *component,
 				int event, int index, int mode)
 {
+	struct wcd939x_priv *wcd939x = snd_soc_component_get_drvdata(component);
 
 	switch (event) {
 	case SND_SOC_DAPM_PRE_PMU:
 		if (mode == CLS_H_ULP) {
 			snd_soc_component_update_bits(component,
-				REG_FIELD_VALUE(REFBUFF_UHQA_CTL, REFBUFP_IOUT_CTL, 0x2));
+				REG_FIELD_VALUE(REFBUFF_UHQA_CTL, REFBUFP_IOUT_CTL, 0x1));
 			snd_soc_component_update_bits(component,
-				REG_FIELD_VALUE(REFBUFF_UHQA_CTL, REFBUFN_IOUT_CTL, 0x2));
-			if (index == WCD939X_HPHL) {
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL12, ZONE3_RMS, 0x21));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL13, ZONE4_RMS, 0x30));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL14, ZONE5_RMS, 0x3F));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL15, ZONE6_RMS, 0x48));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL17, PATH_GAIN, 0x0C));
-			} else if (index == WCD939X_HPHR) {
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL12, ZONE3_RMS, 0x21));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL13, ZONE4_RMS, 0x30));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL14, ZONE5_RMS, 0x3F));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL15, ZONE6_RMS, 0x48));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL17, PATH_GAIN, 0x0C));
+				REG_FIELD_VALUE(REFBUFF_UHQA_CTL, REFBUFN_IOUT_CTL, 0x1));
+
+			if (wcd939x->compander_enabled[index]) {
+				if (index == WCD939X_HPHL) {
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL12, ZONE3_RMS, 0x21));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL13, ZONE4_RMS, 0x30));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL14, ZONE5_RMS, 0x3F));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL15, ZONE6_RMS, 0x48));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL17, PATH_GAIN, 0x0C));
+				} else if (index == WCD939X_HPHR) {
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL12, ZONE3_RMS, 0x21));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL13, ZONE4_RMS, 0x30));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL14, ZONE5_RMS, 0x3F));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL15, ZONE6_RMS, 0x48));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL17, PATH_GAIN, 0x0C));
+				}
 			}
 		} else {
-			if (index == WCD939X_HPHL) {
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL12, ZONE3_RMS, 0x1E));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL13, ZONE4_RMS, 0x2A));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL14, ZONE5_RMS, 0x36));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL15, ZONE6_RMS, 0x3C));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(CTL17, PATH_GAIN, 0x00));
-			} else if (index == WCD939X_HPHR) {
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL12, ZONE3_RMS, 0x1E));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL13, ZONE4_RMS, 0x2A));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL14, ZONE5_RMS, 0x36));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL15, ZONE6_RMS, 0x2C));
-				snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(R_CTL17, PATH_GAIN, 0x00));
+			if (wcd939x->compander_enabled[index]) {
+				if (index == WCD939X_HPHL) {
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL12, ZONE3_RMS, 0x1E));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL13, ZONE4_RMS, 0x2A));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL14, ZONE5_RMS, 0x36));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL15, ZONE6_RMS, 0x3C));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(CTL17, PATH_GAIN, 0x00));
+				} else if (index == WCD939X_HPHR) {
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL12, ZONE3_RMS, 0x1E));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL13, ZONE4_RMS, 0x2A));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL14, ZONE5_RMS, 0x36));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL15, ZONE6_RMS, 0x3C));
+					snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_CTL17, PATH_GAIN, 0x00));
+				}
 			}
 		}
 		break;
@@ -942,10 +948,9 @@ static int wcd939x_config_compander(struct snd_soc_component *component,
 				int event, int compander_indx)
 {
 	u16 comp_ctl7_reg = 0, comp_ctl0_reg = 0;
-	u16 comp_en_mask_val = 0;
+	u16 comp_en_mask_val = 0, gain_source_sel = 0;
 	struct wcd939x_priv *wcd939x;
 
-
 	if (compander_indx >= WCD939X_HPH_MAX || compander_indx < 0) {
 		pr_err_ratelimited("%s: Invalid compander value: %d\n",
 				__func__, compander_indx);
@@ -957,12 +962,30 @@ static int wcd939x_config_compander(struct snd_soc_component *component,
 		return -EINVAL;
 	}
 	wcd939x = snd_soc_component_get_drvdata(component);
-
-	if (!wcd939x->compander_enabled[compander_indx])
+	if (!wcd939x->hph_pcm_enabled)
 		return 0;
 
 	dev_dbg(component->dev, "%s compander_index = %d\n", __func__, compander_indx);
 
+	if (!wcd939x->compander_enabled[compander_indx]) {
+		if (SND_SOC_DAPM_EVENT_ON(event))
+			gain_source_sel = 0x01;
+		else
+			gain_source_sel = 0x00;
+		if (compander_indx == WCD939X_HPHL) {
+			snd_soc_component_update_bits(component,
+				REG_FIELD_VALUE(L_EN, GAIN_SOURCE_SEL, gain_source_sel));
+			snd_soc_component_update_bits(component,
+				REG_FIELD_VALUE(PA_GAIN_CTL_L, PA_GAIN_L, 0x04));
+		} else if (compander_indx == WCD939X_HPHR) {
+			snd_soc_component_update_bits(component,
+				REG_FIELD_VALUE(R_EN, GAIN_SOURCE_SEL, gain_source_sel));
+			snd_soc_component_update_bits(component,
+				REG_FIELD_VALUE(PA_GAIN_CTL_R, PA_GAIN_R, 0x04));
+		}
+		return 0;
+	}
+
 	if (compander_indx == WCD939X_HPHL)
 		comp_en_mask_val = 1 << 1;
 	else if (compander_indx == WCD939X_HPHR)
@@ -970,7 +993,6 @@ static int wcd939x_config_compander(struct snd_soc_component *component,
 	else
 		return 0;
 
-
 	comp_ctl0_reg  = WCD939X_CTL0 + (compander_indx * WCD939X_COMP_OFFSET);
 	comp_ctl7_reg = WCD939X_CTL7 + (compander_indx * WCD939X_COMP_OFFSET);
 
@@ -982,12 +1004,12 @@ static int wcd939x_config_compander(struct snd_soc_component *component,
 		snd_soc_component_update_bits(component,
 			comp_ctl0_reg , 0x01, 0x01);
 
-			/* 250us sleep required as per HW Sequence */
-			usleep_range(250, 260);
+		/* 250us sleep required as per HW Sequence */
+		usleep_range(250, 260);
 		snd_soc_component_update_bits(component,
-			comp_ctl0_reg , 0x02, 0x01);
+			comp_ctl0_reg, 0x02, 0x02);
 		snd_soc_component_update_bits(component,
-			comp_ctl0_reg , 0x02, 0x00);
+			comp_ctl0_reg, 0x02, 0x00);
 
 		/* Enable compander*/
 		snd_soc_component_update_bits(component,
@@ -998,6 +1020,12 @@ static int wcd939x_config_compander(struct snd_soc_component *component,
 				WCD939X_CDC_COMP_CTL_0, comp_en_mask_val, 0x00);
 			snd_soc_component_update_bits(component,
 				comp_ctl0_reg , 0x01, 0x00);
+			if (compander_indx == WCD939X_HPHL)
+				snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(L_EN, GAIN_SOURCE_SEL, 0x0));
+			if (compander_indx == WCD939X_HPHR)
+				snd_soc_component_update_bits(component,
+						REG_FIELD_VALUE(R_EN, GAIN_SOURCE_SEL, 0x0));
 	}
 
 	return 0;
@@ -1355,9 +1383,17 @@ static int wcd939x_codec_hphl_dac_event(struct snd_soc_dapm_widget *w,
 					REG_FIELD_VALUE(L_EN, GAIN_SOURCE_SEL, 0x01));
 			}
 		}
-                if (wcd939x->hph_pcm_enabled)
-		    snd_soc_component_update_bits(component,
-				REG_FIELD_VALUE(HPH_TIMER1, AUTOCHOP_TIMER_CTL_EN, 0x00));
+		if (wcd939x->hph_pcm_enabled) {
+			snd_soc_component_update_bits(component,
+					REG_FIELD_VALUE(HPH_TIMER1, AUTOCHOP_TIMER_CTL_EN, 0x00));
+			snd_soc_component_write(component, WCD939X_VNEG_CTRL_1, 0xEB);
+			if (wcd939x->hph_mode == CLS_H_LOHIFI)
+				snd_soc_component_write(component,
+					WCD939X_HPH_RDAC_BIAS_LOHIFI, 0x52);
+			else
+				snd_soc_component_write(component,
+					WCD939X_HPH_RDAC_BIAS_LOHIFI, 0x64);
+		}
 		break;
 	case SND_SOC_DAPM_POST_PMD:
 			snd_soc_component_update_bits(component,
@@ -1412,6 +1448,15 @@ static int wcd939x_codec_hphr_dac_event(struct snd_soc_dapm_widget *w,
 					REG_FIELD_VALUE(R_EN, GAIN_SOURCE_SEL, 0x01));
 			}
 		}
+		if (wcd939x->hph_pcm_enabled) {
+			snd_soc_component_write(component, WCD939X_VNEG_CTRL_1, 0xEB);
+			if (wcd939x->hph_mode == CLS_H_LOHIFI)
+				snd_soc_component_write(component,
+					WCD939X_HPH_RDAC_BIAS_LOHIFI, 0x52);
+			else
+				snd_soc_component_write(component,
+					WCD939X_HPH_RDAC_BIAS_LOHIFI, 0x64);
+		}
 		break;
 	case SND_SOC_DAPM_POST_PMD:
 			snd_soc_component_update_bits(component,
@@ -1487,33 +1532,30 @@ static int wcd939x_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w,
 			     WCD_CLSH_EVENT_PRE_DAC,
 			     WCD_CLSH_STATE_HPHR,
 			     hph_mode);
-		wcd_clsh_set_hph_mode(component, CLS_H_HIFI);
 		if (hph_mode == CLS_H_LP || hph_mode == CLS_H_LOHIFI ||
 		    hph_mode == CLS_H_ULP) {
 			if (!wcd939x->hph_pcm_enabled)
 				snd_soc_component_update_bits(component,
 					REG_FIELD_VALUE(REFBUFF_LP_CTL, PREREF_FILT_BYPASS, 0x01));
 		}
-		snd_soc_component_update_bits(component,
-			REG_FIELD_VALUE(VNEG_CTRL_4, ILIM_SEL, 0xD));
-		snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(HPH, HPHR_REF_ENABLE, 0x01));
-		wcd_clsh_set_hph_mode(component, hph_mode);
-		/* update USBSS power mode for AATC */
-		if (wcd939x->mbhc->wcd_mbhc.mbhc_cfg->enable_usbc_analog)
-			wcd_usbss_audio_config(NULL, WCD_USBSS_CONFIG_TYPE_POWER_MODE,
-				wcd939x_get_usbss_hph_power_mode(hph_mode));
 		/* update Mode for LOHIFI */
 		if (hph_mode == CLS_H_LOHIFI) {
-			snd_soc_component_write(component,
-					WCD939X_HPH_RDAC_BIAS_LOHIFI, 0x52);
 			snd_soc_component_update_bits(component,
-				REG_FIELD_VALUE(HPH, PWR_LEVEL, 0x00));
+					REG_FIELD_VALUE(HPH, PWR_LEVEL, 0x00));
 		}
-		/* 100 usec delay as per HW requirement */
-		usleep_range(100, 110);
-		set_bit(HPH_PA_DELAY, &wcd939x->status_mask);
+		/* update USBSS power mode for AATC */
+		if (wcd939x->mbhc->wcd_mbhc.mbhc_cfg->enable_usbc_analog)
+			wcd_usbss_audio_config(NULL, WCD_USBSS_CONFIG_TYPE_POWER_MODE,
+				wcd939x_get_usbss_hph_power_mode(hph_mode));
+		snd_soc_component_update_bits(component,
+			REG_FIELD_VALUE(VNEG_CTRL_4, ILIM_SEL, 0xD));
 		snd_soc_component_update_bits(component,
+					REG_FIELD_VALUE(HPH, HPHR_REF_ENABLE, 0x01));
+		if ((snd_soc_component_read(component, WCD939X_HPH) & 0x30) == 0x30)
+			usleep_range(2500, 2600); /* 2.5msec delay as per HW requirement */
+		set_bit(HPH_PA_DELAY, &wcd939x->status_mask);
+		if (!wcd939x->hph_pcm_enabled)
+			snd_soc_component_update_bits(component,
 					REG_FIELD_VALUE(PDM_WD_CTL1, PDM_WD_EN, 0x03));
 		break;
 	case SND_SOC_DAPM_POST_PMU:
@@ -1642,33 +1684,30 @@ static int wcd939x_codec_enable_hphl_pa(struct snd_soc_dapm_widget *w,
 			     WCD_CLSH_EVENT_PRE_DAC,
 			     WCD_CLSH_STATE_HPHL,
 			     hph_mode);
-		wcd_clsh_set_hph_mode(component, CLS_H_HIFI);
 		if (hph_mode == CLS_H_LP || hph_mode == CLS_H_LOHIFI ||
 		    hph_mode == CLS_H_ULP) {
 			if (!wcd939x->hph_pcm_enabled)
 				snd_soc_component_update_bits(component,
 					REG_FIELD_VALUE(REFBUFF_LP_CTL, PREREF_FILT_BYPASS, 0x01));
 		}
-		snd_soc_component_update_bits(component,
-			REG_FIELD_VALUE(VNEG_CTRL_4, ILIM_SEL, 0xD));
-		snd_soc_component_update_bits(component,
-					REG_FIELD_VALUE(HPH, HPHL_REF_ENABLE, 0x01));
-		wcd_clsh_set_hph_mode(component, hph_mode);
-		/* update USBSS power mode for AATC */
-		if (wcd939x->mbhc->wcd_mbhc.mbhc_cfg->enable_usbc_analog)
-			wcd_usbss_audio_config(NULL, WCD_USBSS_CONFIG_TYPE_POWER_MODE,
-				wcd939x_get_usbss_hph_power_mode(hph_mode));
 		/* update Mode for LOHIFI */
 		if (hph_mode == CLS_H_LOHIFI) {
-			snd_soc_component_write(component,
-					WCD939X_HPH_RDAC_BIAS_LOHIFI, 0x52);
 			snd_soc_component_update_bits(component,
 				REG_FIELD_VALUE(HPH, PWR_LEVEL, 0x00));
 		}
-		/* 100 usec delay as per HW requirement */
-		usleep_range(100, 110);
-		set_bit(HPH_PA_DELAY, &wcd939x->status_mask);
+		/* update USBSS power mode for AATC */
+		if (wcd939x->mbhc->wcd_mbhc.mbhc_cfg->enable_usbc_analog)
+			wcd_usbss_audio_config(NULL, WCD_USBSS_CONFIG_TYPE_POWER_MODE,
+				wcd939x_get_usbss_hph_power_mode(hph_mode));
 		snd_soc_component_update_bits(component,
+			REG_FIELD_VALUE(VNEG_CTRL_4, ILIM_SEL, 0xD));
+		snd_soc_component_update_bits(component,
+					REG_FIELD_VALUE(HPH, HPHL_REF_ENABLE, 0x01));
+		if ((snd_soc_component_read(component, WCD939X_HPH) & 0x30) == 0x30)
+			usleep_range(2500, 2600); /* 2.5msec delay as per HW requirement */
+		set_bit(HPH_PA_DELAY, &wcd939x->status_mask);
+		if (!wcd939x->hph_pcm_enabled)
+			snd_soc_component_update_bits(component,
 					REG_FIELD_VALUE(PDM_WD_CTL0, PDM_WD_EN, 0x03));
 		break;
 	case SND_SOC_DAPM_POST_PMU:

+ 1 - 2
asoc/codecs/wsa881x-analog.c

@@ -1584,7 +1584,7 @@ err:
 	return ret;
 }
 
-static int wsa881x_i2c_remove(struct i2c_client *client)
+static void wsa881x_i2c_remove(struct i2c_client *client)
 {
 	struct wsa881x_pdata *wsa881x = client->dev.platform_data;
 
@@ -1601,7 +1601,6 @@ static int wsa881x_i2c_remove(struct i2c_client *client)
 	}
 	i2c_set_clientdata(client, NULL);
 	kfree(wsa881x);
-	return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP

文件差异内容过多而无法显示
+ 46 - 3706
asoc/holi.c


+ 6 - 33
asoc/msm_common.c

@@ -236,34 +236,6 @@ done:
 	return ret;
 }
 
-static void check_userspace_service_state(struct snd_soc_pcm_runtime *rtd,
-						struct msm_common_pdata *pdata)
-{
-	uint32_t i;
-
-	dev_info(rtd->card->dev,"%s: pcm_id %d state %d\n", __func__,
-			rtd->num, pdata->aud_dev_state[rtd->num]);
-
-	mutex_lock(&pdata->aud_dev_lock);
-	if (pdata->aud_dev_state[rtd->num] == DEVICE_ENABLE) {
-		dev_info(rtd->card->dev, "%s userspace service crashed\n",
-				__func__);
-		/*Reset the state as sysfs node wont be triggred*/
-		pdata->aud_dev_state[rtd->num] = DEVICE_DISABLE;
-		for (i = 0; i < pdata->num_aud_devs; i++) {
-			if (pdata->aud_dev_state[i] == DEVICE_ENABLE)
-				goto exit;
-		}
-		/*Issue close all graph cmd to DSP*/
-		spf_core_apm_close_all();
-		/*unmap all dma mapped buffers*/
-		msm_audio_ion_crash_handler();
-	}
-exit:
-	mutex_unlock(&pdata->aud_dev_lock);
-	return;
-}
-
 static int get_mi2s_tdm_auxpcm_intf_index(const char *stream_name)
 {
 
@@ -447,7 +419,8 @@ int msm_common_snd_hw_params(struct snd_pcm_substream *substream,
 				intf_clk_cfg.clk_root = 0;
 
 				if (pdata->is_audio_hw_vote_required[index]  &&
-					is_fractional_sample_rate(rate)) {
+					(is_fractional_sample_rate(rate) ||
+					(index == QUIN_MI2S_TDM_AUXPCM))) {
 					ret = mi2s_tdm_hw_vote_req(pdata, 1);
 					if (ret < 0) {
 						pr_err("%s lpass audio hw vote enable failed %d\n",
@@ -490,7 +463,8 @@ int msm_common_snd_hw_params(struct snd_pcm_substream *substream,
 				intf_clk_cfg.clk_root = CLOCK_ROOT_DEFAULT;
 
 				if (pdata->is_audio_hw_vote_required[index]  &&
-					is_fractional_sample_rate(rate)) {
+					(is_fractional_sample_rate(rate) ||
+					(index == QUIN_MI2S_TDM_AUXPCM))) {
 					ret = mi2s_tdm_hw_vote_req(pdata, 1);
 					if (ret < 0) {
 						pr_err("%s lpass audio hw vote enable failed %d\n",
@@ -581,8 +555,6 @@ void msm_common_snd_shutdown(struct snd_pcm_substream *substream)
 		return;
 	}
 
-	check_userspace_service_state(rtd, pdata);
-
 	if (index >= 0) {
 		mutex_lock(&pdata->lock[index]);
 		atomic_dec(&pdata->lpass_intf_clk_ref_cnt[index]);
@@ -611,7 +583,8 @@ void msm_common_snd_shutdown(struct snd_pcm_substream *substream)
 			}
 
 			if (pdata->is_audio_hw_vote_required[index]  &&
-				is_fractional_sample_rate(rate)) {
+				(is_fractional_sample_rate(rate) ||
+				(index == QUIN_MI2S_TDM_AUXPCM))) {
 				ret = mi2s_tdm_hw_vote_req(pdata, 0);
 			}
 		} else if (atomic_read(&pdata->lpass_intf_clk_ref_cnt[index]) < 0) {

+ 1 - 6
asoc/pineapple.c

@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
  * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
- * Copyright (c) 2022-2023. Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #include <linux/clk.h>
@@ -1395,11 +1395,6 @@ static int msm_snd_card_late_probe(struct snd_soc_card *card)
 		return -ENOMEM;
 	wcd_mbhc_cfg.calibration = mbhc_calibration;
 
-#if IS_ENABLED(CONFIG_QCOM_WCD_USBSS_I2C)
-	if (of_find_property(card->dev->of_node, "qcom,usbss-hsj-connect-enabled", NULL))
-		wcd_usbss_switch_update(WCD_USBSS_HSJ_CONNECT, WCD_USBSS_CABLE_CONNECT);
-#endif
-
 	ret = wcd939x_mbhc_hs_detect(component, &wcd_mbhc_cfg);
 	if (ret) {
 		dev_err(component->dev, "%s: mbhc hs detect failed, err:%d\n",

+ 6 - 2
audio_kernel_modules.mk

@@ -30,7 +30,7 @@ AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/q6_notifier_dlkm.ko\
 	$(KERNEL_MODULES_OUT)/wcd9xxx_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/stub_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/machine_dlkm.ko
-ifneq ($(call is-board-platform-in-list,bengal), true)
+ifneq ($(call is-board-platform-in-list,bengal holi blair), true)
 AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/swr_dmic_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/swr_haptics_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/hdmi_dlkm.ko \
@@ -47,7 +47,7 @@ AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/swr_dmic_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd939x_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd939x_slave_dlkm.ko
 endif
-ifeq ($(call is-board-platform-in-list,bengal), true)
+ifeq ($(call is-board-platform-in-list,bengal holi blair), true)
 AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/bolero_cdc_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/va_macro_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/tx_macro_dlkm.ko \
@@ -56,6 +56,10 @@ AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/bolero_cdc_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd937x_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd937x_slave_dlkm.ko
 endif
+ifeq ($(call is-board-platform-in-list, holi blair), true)
+AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/wcd938x_dlkm.ko \
+	$(KERNEL_MODULES_OUT)/wcd938x_slave_dlkm.ko
+endif
 endif
 endif
 endif

+ 7 - 3
audio_kernel_product_board.mk

@@ -17,7 +17,7 @@ PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/q6_notifier_dlkm.ko\
 	$(KERNEL_MODULES_OUT)/wcd9xxx_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/stub_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/machine_dlkm.ko
-ifneq ($(call is-board-platform-in-list,bengal), true)
+ifneq ($(call is-board-platform-in-list,bengal holi blair), true)
 PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/swr_dmic_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/swr_haptics_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/hdmi_dlkm.ko \
@@ -34,12 +34,16 @@ PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/swr_dmic_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd939x_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd939x_slave_dlkm.ko
 endif
-ifeq ($(call is-board-platform-in-list,bengal), true)
+ifeq ($(call is-board-platform-in-list,bengal holi blair), true)
 PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/bolero_cdc_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/va_macro_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/tx_macro_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/rx_macro_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wsa881x_analog_dlkm.ko \
-	$(KERNEL_MODULES_OUT)/wcd938x_dlkm.ko \
+	$(KERNEL_MODULES_OUT)/wcd937x_dlkm.ko \
+	$(KERNEL_MODULES_OUT)/wcd937x_slave_dlkm.ko
+endif
+ifeq ($(call is-board-platform-in-list, holi blair), true)
+PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/wcd938x_dlkm.ko \
 	$(KERNEL_MODULES_OUT)/wcd938x_slave_dlkm.ko
 endif

+ 2 - 0
audio_kernel_vendor_board.mk

@@ -1,4 +1,5 @@
 AUDIO_DLKM_ENABLE := false
+ifneq ($(TARGET_DISABLE_AUDIO_DLKM), true)
 ifeq ($(TARGET_KERNEL_DLKM_DISABLE), true)
   ifeq ($(TARGET_KERNEL_DLKM_AUDIO_OVERRIDE),true)
     AUDIO_DLKM_ENABLE := true
@@ -6,6 +7,7 @@ ifeq ($(TARGET_KERNEL_DLKM_DISABLE), true)
 else
   AUDIO_DLKM_ENABLE := true
 endif
+endif # TARGET_DISABLE_AUDIO_DLKM
 
 ifeq ($(AUDIO_DLKM_ENABLE), true)
   include vendor/qcom/opensource/audio-kernel/audio_kernel_modules.mk

+ 5 - 0
config/holiauto.conf

@@ -4,12 +4,17 @@ export CONFIG_SND_SOC_WCD9XXX_V2=m
 export CONFIG_SND_SOC_WCD_MBHC=m
 export CONFIG_WCD9XXX_CODEC_CORE_V2=m
 export CONFIG_MSM_CDC_PINCTRL=m
+export CONFIG_AUDIO_PKT_ION=m
 export CONFIG_MSM_QDSP6V2_CODECS=m
 export CONFIG_MSM_QDSP6_APRV2_RPMSG=m
 export CONFIG_MSM_ADSP_LOADER=m
 export CONFIG_REGMAP_SWR=m
+export CONFIG_SPF_CORE=m
 export CONFIG_MSM_QDSP6_SSR=m
+export CONFIG_MSM_QDSP6_GPR_RPMSG=m
 export CONFIG_MSM_QDSP6_PDR=m
+export CONFIG_AUDIO_PRM=m
+export CONFIG_AUDIO_PKT=m
 export CONFIG_MSM_QDSP6_NOTIFIER=m
 export CONFIG_SND_SOC_MSM_QDSP6V2_INTF=m
 export CONFIG_SOUNDWIRE=m

+ 6 - 0
config/holiautoconf.h

@@ -1,5 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (c) 2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 #define CONFIG_PINCTRL_LPI 1
@@ -13,9 +14,14 @@
 #define CONFIG_SND_SOC_MSM_QDSP6V2_INTF 1
 #define CONFIG_MSM_ADSP_LOADER 1
 #define CONFIG_REGMAP_SWR 1
+#define CONFIG_AUDIO_PKT_ION 1
 #define CONFIG_MSM_QDSP6_SSR 1
 #define CONFIG_MSM_QDSP6_PDR 1
 #define CONFIG_MSM_QDSP6_NOTIFIER 1
+#define CONFIG_SPF_CORE 1
+#define CONFIG_MSM_QDSP6_GPR_RPMSG 1
+#define CONFIG_AUDIO_PRM 1
+#define CONFIG_AUDIO_PKT 1
 #define CONFIG_SOUNDWIRE 1
 #define CONFIG_SOUNDWIRE_MSTR_CTRL 1
 #define CONFIG_SND_SOC_WCD_MBHC_ADC 1

+ 8 - 0
dsp/Kbuild

@@ -68,6 +68,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		export
 		INCS    +=  -include $(AUDIO_ROOT)/config/bengalautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 	ifeq ($(CONFIG_ARCH_SM8150), y)
 		ifdef CONFIG_SND_SOC_SA8155
 			include $(AUDIO_ROOT)/config/sa8155auto.conf

+ 8 - 0
ipc/Kbuild

@@ -69,6 +69,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		export
 		INCS    +=  -include $(AUDIO_ROOT)/config/bengalautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 	ifeq ($(CONFIG_ARCH_SM8150), y)
 		ifdef CONFIG_SND_SOC_SA8155
 			include $(AUDIO_ROOT)/config/sa8155auto.conf

+ 8 - 0
soc/Kbuild

@@ -63,6 +63,14 @@ ifeq ($(KERNEL_BUILD), 0)
 		export
 		INCS    +=  -include $(AUDIO_ROOT)/config/bengalautoconf.h
 	endif
+	ifeq ($(CONFIG_ARCH_HOLI), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
+	ifeq ($(CONFIG_ARCH_BLAIR), y)
+		include $(AUDIO_ROOT)/config/holiauto.conf
+		INCS    +=  -include $(AUDIO_ROOT)/config/holiautoconf.h
+	endif
 	ifeq ($(CONFIG_ARCH_SM6150), y)
 		ifdef CONFIG_SND_SOC_SA6155
 			include $(AUDIO_ROOT)/config/sa6155auto.conf

部分文件因为文件数量过多而无法显示