Loading configure.ac +2 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,8 @@ if (test x$TARGET_SUPPORT = xmsmsteppe_au); then AC_SUBST([TARGET_PLATFORM], ["msm8974"]) TARGET_CFLAGS="-DPLATFORM_MSMSTEPPE" fi TARGET_CFLAGS+=' -DLE_LIBDIR=\"${libdir}\" ' AC_SUBST([TARGET_CFLAGS]) AM_CONDITIONAL([QTI_AUDIO_SERVER_ENABLED],[test x$BOARD_SUPPORTS_QTI_AUDIO_SERVER = xtrue]) Loading hal/audio_extn/audio_extn.c +57 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,42 @@ * limitations under the License. */ /* * Changes from Qualcomm Innovation Center are provided under the following license: * * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted (subject to the limitations in the * disclaimer below) provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define LOG_TAG "audio_hw_extn" /*#define LOG_NDEBUG 0*/ #define LOG_NDDEBUG 0 Loading Loading @@ -1798,6 +1834,23 @@ void audio_extn_usb_set_reconfig(bool is_required) #define CIRRUS_SPKR_PROT_LIB_PATH "/vendor/lib/libcirrusspkrprot.so" #endif #define STR_CAT(path, extn) (path extn) #if LINUX_ENABLED # define SPKR_PROT_LIB_PATH STR_CAT(LE_LIBDIR, "/audio.spkr.prot.so") # define CIRRUS_SPKR_PROT_LIB_PATH STR_CAT(LE_LIBDIR, "/audio.external.spkr.prot.so") #else # ifdef __LP64__ # define SPKR_PROT_LIB_PATH "/vendor/lib64/libspkrprot.so" # define CIRRUS_SPKR_PROT_LIB_PATH "/vendor/lib64/libcirrusspkrprot.so" # else # define SPKR_PROT_LIB_PATH "/vendor/lib/libspkrprot.so" # define CIRRUS_SPKR_PROT_LIB_PATH "/vendor/lib/libcirrusspkrprot.so" # endif #endif static void *spkr_prot_lib_handle = NULL; typedef void (*spkr_prot_init_t)(void *, spkr_prot_init_config_t); Loading Loading @@ -1838,10 +1891,14 @@ void spkr_prot_feature_init(bool is_feature_enabled) is_feature_enabled ? "Enabled" : "NOT Enabled", vendor_enhanced_info); if (is_feature_enabled) { // dlopen lib #if LINUX_ENABLED spkr_prot_lib_handle = dlopen(SPKR_PROT_LIB_PATH, RTLD_NOW); #else if ((vendor_enhanced_info & 0x3) == 0x0) // Pure AOSP spkr_prot_lib_handle = dlopen(CIRRUS_SPKR_PROT_LIB_PATH, RTLD_NOW); else spkr_prot_lib_handle = dlopen(SPKR_PROT_LIB_PATH, RTLD_NOW); #endif if (spkr_prot_lib_handle == NULL) { ALOGE("%s: dlopen failed", __func__); Loading hal/audio_extn/spkr_protection.c +43 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,42 @@ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Changes from Qualcomm Innovation Center are provided under the following license: * * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted (subject to the limitations in the * disclaimer below) provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define LOG_TAG "audio_hw_spkr_prot" /*#define LOG_NDEBUG 0*/ #define LOG_NDDEBUG 0 Loading Loading @@ -592,6 +628,7 @@ static int spkr_get_temp(struct audio_device *adev, int spkr_pos, int *temp) mixer_ctl_name = SPKR_RIGHT_WSA_TEMP; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); if (!ctl) { ALOGE("%s: Could not get ctl for mixer cmd - %s", __func__, mixer_ctl_name); Loading Loading @@ -1320,6 +1357,12 @@ static void* spkr_calibration_thread() thermal_fd = -1; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); if (!ctl) { mixer_ctl_name = "SpkrMono WSA T0 Init"; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); } if (ctl) { ALOGD("%s: Got ctl for mixer cmd %s", __func__, mixer_ctl_name); Loading hal/msm8974/platform.c +3 −1 Original line number Diff line number Diff line Loading @@ -11926,7 +11926,9 @@ int platform_spkr_prot_is_wsa_analog_mode(void *adev __unused) if ((!strcmp(snd_card_name, "msm8953-snd-card-mtp")) || (!strcmp(snd_card_name, "msm8953-sku4-snd-card")) || (!strcmp(snd_card_name, "sdm439-sku1-snd-card")) || (!strcmp(snd_card_name, "sdm439-snd-card-mtp"))) (!strcmp(snd_card_name, "sdm439-snd-card-mtp")) || (!strcmp(snd_card_name, "bengal-qrd-snd-card")) || (!strcmp(snd_card_name, "bengal-scubaqrd-snd-card"))) return 1; else return 0; Loading Loading
configure.ac +2 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,8 @@ if (test x$TARGET_SUPPORT = xmsmsteppe_au); then AC_SUBST([TARGET_PLATFORM], ["msm8974"]) TARGET_CFLAGS="-DPLATFORM_MSMSTEPPE" fi TARGET_CFLAGS+=' -DLE_LIBDIR=\"${libdir}\" ' AC_SUBST([TARGET_CFLAGS]) AM_CONDITIONAL([QTI_AUDIO_SERVER_ENABLED],[test x$BOARD_SUPPORTS_QTI_AUDIO_SERVER = xtrue]) Loading
hal/audio_extn/audio_extn.c +57 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,42 @@ * limitations under the License. */ /* * Changes from Qualcomm Innovation Center are provided under the following license: * * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted (subject to the limitations in the * disclaimer below) provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define LOG_TAG "audio_hw_extn" /*#define LOG_NDEBUG 0*/ #define LOG_NDDEBUG 0 Loading Loading @@ -1798,6 +1834,23 @@ void audio_extn_usb_set_reconfig(bool is_required) #define CIRRUS_SPKR_PROT_LIB_PATH "/vendor/lib/libcirrusspkrprot.so" #endif #define STR_CAT(path, extn) (path extn) #if LINUX_ENABLED # define SPKR_PROT_LIB_PATH STR_CAT(LE_LIBDIR, "/audio.spkr.prot.so") # define CIRRUS_SPKR_PROT_LIB_PATH STR_CAT(LE_LIBDIR, "/audio.external.spkr.prot.so") #else # ifdef __LP64__ # define SPKR_PROT_LIB_PATH "/vendor/lib64/libspkrprot.so" # define CIRRUS_SPKR_PROT_LIB_PATH "/vendor/lib64/libcirrusspkrprot.so" # else # define SPKR_PROT_LIB_PATH "/vendor/lib/libspkrprot.so" # define CIRRUS_SPKR_PROT_LIB_PATH "/vendor/lib/libcirrusspkrprot.so" # endif #endif static void *spkr_prot_lib_handle = NULL; typedef void (*spkr_prot_init_t)(void *, spkr_prot_init_config_t); Loading Loading @@ -1838,10 +1891,14 @@ void spkr_prot_feature_init(bool is_feature_enabled) is_feature_enabled ? "Enabled" : "NOT Enabled", vendor_enhanced_info); if (is_feature_enabled) { // dlopen lib #if LINUX_ENABLED spkr_prot_lib_handle = dlopen(SPKR_PROT_LIB_PATH, RTLD_NOW); #else if ((vendor_enhanced_info & 0x3) == 0x0) // Pure AOSP spkr_prot_lib_handle = dlopen(CIRRUS_SPKR_PROT_LIB_PATH, RTLD_NOW); else spkr_prot_lib_handle = dlopen(SPKR_PROT_LIB_PATH, RTLD_NOW); #endif if (spkr_prot_lib_handle == NULL) { ALOGE("%s: dlopen failed", __func__); Loading
hal/audio_extn/spkr_protection.c +43 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,42 @@ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * Changes from Qualcomm Innovation Center are provided under the following license: * * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted (subject to the limitations in the * disclaimer below) provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #define LOG_TAG "audio_hw_spkr_prot" /*#define LOG_NDEBUG 0*/ #define LOG_NDDEBUG 0 Loading Loading @@ -592,6 +628,7 @@ static int spkr_get_temp(struct audio_device *adev, int spkr_pos, int *temp) mixer_ctl_name = SPKR_RIGHT_WSA_TEMP; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); if (!ctl) { ALOGE("%s: Could not get ctl for mixer cmd - %s", __func__, mixer_ctl_name); Loading Loading @@ -1320,6 +1357,12 @@ static void* spkr_calibration_thread() thermal_fd = -1; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); if (!ctl) { mixer_ctl_name = "SpkrMono WSA T0 Init"; ctl = mixer_get_ctl_by_name(adev->mixer, mixer_ctl_name); } if (ctl) { ALOGD("%s: Got ctl for mixer cmd %s", __func__, mixer_ctl_name); Loading
hal/msm8974/platform.c +3 −1 Original line number Diff line number Diff line Loading @@ -11926,7 +11926,9 @@ int platform_spkr_prot_is_wsa_analog_mode(void *adev __unused) if ((!strcmp(snd_card_name, "msm8953-snd-card-mtp")) || (!strcmp(snd_card_name, "msm8953-sku4-snd-card")) || (!strcmp(snd_card_name, "sdm439-sku1-snd-card")) || (!strcmp(snd_card_name, "sdm439-snd-card-mtp"))) (!strcmp(snd_card_name, "sdm439-snd-card-mtp")) || (!strcmp(snd_card_name, "bengal-qrd-snd-card")) || (!strcmp(snd_card_name, "bengal-scubaqrd-snd-card"))) return 1; else return 0; Loading