Merge "hal: Convert maxxaudio feature to runtime library"
diff --git a/configs/kona/audio_configs.xml b/configs/kona/audio_configs.xml
index fa07ca2..8c24bb2 100644
--- a/configs/kona/audio_configs.xml
+++ b/configs/kona/audio_configs.xml
@@ -92,6 +92,7 @@
<flag name="incall_music_enabled" value="true" />
<flag name="keep_alive_enabled" value="true" />
<flag name="kpi_optimize_enabled" value="true" />
+ <flag name="maxx_audio_enabled" value="false" />
<flag name="receiver_aided_stereo" value="true" />
<flag name="snd_monitor_enabled" value="true" />
<flag name="source_track_enabled" value="true" />
diff --git a/configs/msm8937/audio_configs.xml b/configs/msm8937/audio_configs.xml
index e221be7..ed3ed8d 100644
--- a/configs/msm8937/audio_configs.xml
+++ b/configs/msm8937/audio_configs.xml
@@ -92,6 +92,7 @@
<flag name="incall_music_enabled" value="false" />
<flag name="keep_alive_enabled" value="false" />
<flag name="kpi_optimize_enabled" value="true" />
+ <flag name="maxx_audio_enabled" value="false" />
<flag name="receiver_aided_stereo" value="false" />
<flag name="snd_monitor_enabled" value="true" />
<flag name="source_track_enabled" value="true" />
diff --git a/configs/msmnile/audio_configs.xml b/configs/msmnile/audio_configs.xml
index fa07ca2..8c24bb2 100644
--- a/configs/msmnile/audio_configs.xml
+++ b/configs/msmnile/audio_configs.xml
@@ -92,6 +92,7 @@
<flag name="incall_music_enabled" value="true" />
<flag name="keep_alive_enabled" value="true" />
<flag name="kpi_optimize_enabled" value="true" />
+ <flag name="maxx_audio_enabled" value="false" />
<flag name="receiver_aided_stereo" value="true" />
<flag name="snd_monitor_enabled" value="true" />
<flag name="source_track_enabled" value="true" />
diff --git a/configs/msmnile/audio_configs_stock.xml b/configs/msmnile/audio_configs_stock.xml
index b9ecf45..6414675 100644
--- a/configs/msmnile/audio_configs_stock.xml
+++ b/configs/msmnile/audio_configs_stock.xml
@@ -57,6 +57,7 @@
<flag name="incall_music_enabled" value="true" />
<flag name="keep_alive_enabled" value="false" />
<flag name="kpi_optimize_enabled" value="false" />
+ <flag name="maxx_audio_enabled" value="true" />
<flag name="receiver_aided_stereo" value="false" />
<flag name="record_play_concurrency" value="false" />
<flag name="snd_monitor_enabled" value="true" />
diff --git a/configs/sdm660/audio_configs.xml b/configs/sdm660/audio_configs.xml
index 853f7e7..3688697 100644
--- a/configs/sdm660/audio_configs.xml
+++ b/configs/sdm660/audio_configs.xml
@@ -92,6 +92,7 @@
<flag name="incall_music_enabled" value="false" />
<flag name="keep_alive_enabled" value="false" />
<flag name="kpi_optimize_enabled" value="true" />
+ <flag name="maxx_audio_enabled" value="false" />
<flag name="receiver_aided_stereo" value="true" />
<flag name="snd_monitor_enabled" value="true" />
<flag name="source_track_enabled" value="true" />
diff --git a/configs/sdm710/audio_configs.xml b/configs/sdm710/audio_configs.xml
index 0410f4b..6a6fb7d 100644
--- a/configs/sdm710/audio_configs.xml
+++ b/configs/sdm710/audio_configs.xml
@@ -92,6 +92,7 @@
<flag name="incall_music_enabled" value="false" />
<flag name="keep_alive_enabled" value="false" />
<flag name="kpi_optimize_enabled" value="true" />
+ <flag name="maxx_audio_enabled" value="false" />
<flag name="receiver_aided_stereo" value="true" />
<flag name="snd_monitor_enabled" value="true" />
<flag name="source_track_enabled" value="true" />
diff --git a/configs/sdm845/audio_configs.xml b/configs/sdm845/audio_configs.xml
index 95b7d97..4b0159d 100644
--- a/configs/sdm845/audio_configs.xml
+++ b/configs/sdm845/audio_configs.xml
@@ -92,6 +92,7 @@
<flag name="incall_music_enabled" value="false" />
<flag name="keep_alive_enabled" value="false" />
<flag name="kpi_optimize_enabled" value="true" />
+ <flag name="maxx_audio_enabled" value="false" />
<flag name="receiver_aided_stereo" value="true" />
<flag name="snd_monitor_enabled" value="true" />
<flag name="source_track_enabled" value="true" />
diff --git a/hal/ahal_config_helper.cpp b/hal/ahal_config_helper.cpp
index 753d8a8..e46b8f3 100644
--- a/hal/ahal_config_helper.cpp
+++ b/hal/ahal_config_helper.cpp
@@ -105,6 +105,7 @@
false, /* CONCURRENT_CAPTURE */
false, /* COMPRESS_IN */
false, /* BATTERY_LISTENER */
+ false, /* MAXX_AUDIO */
true, /* COMPRESS_METADATA_NEEDED */
false, /* INCALL_MUSIC */
false, /* COMPRESS_VOIP */
@@ -149,6 +150,7 @@
true, /* CONCURRENT_CAPTURE */
true, /* COMPRESS_IN */
true, /* BATTERY_LISTENER */
+ false, /* MAXX_AUDIO */
true, /* COMPRESS_METADATA_NEEDED */
true, /* INCALL_MUSIC */
false, /* COMPRESS_VOIP */
@@ -192,6 +194,7 @@
true, /* CONCURRENT_CAPTURE */
false, /* COMPRESS_IN */
false, /* BATTERY_LISTENER */
+ true, /* MAXX_AUDIO */
false, /* COMPRESS_METADATA_NEEDED */
true, /* INCALL_MUSIC */
false, /* COMPRESS_VOIP */
diff --git a/hal/ahal_config_helper.h b/hal/ahal_config_helper.h
index 3251961..39ed68e 100644
--- a/hal/ahal_config_helper.h
+++ b/hal/ahal_config_helper.h
@@ -71,6 +71,7 @@
bool concurrent_capture_enabled;
bool compress_in_enabled;
bool battery_listener_enabled;
+ bool maxx_audio_enabled;
bool compress_metadata_needed;
bool incall_music_enabled;
bool compress_voip_enabled;
diff --git a/hal/audio_extn/Android.mk b/hal/audio_extn/Android.mk
old mode 100755
new mode 100644
index 59b18a2..117ee27
--- a/hal/audio_extn/Android.mk
+++ b/hal/audio_extn/Android.mk
@@ -398,11 +398,13 @@
include $(BUILD_SHARED_LIBRARY)
#-------------------------------------------
+
# Build EXT_HW_PLUGIN LIB
#-------------------------------------------
include $(CLEAR_VARS)
LOCAL_MODULE := libexthwplugin
+
LOCAL_VENDOR_MODULE := true
PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
@@ -705,3 +707,61 @@
LOCAL_HEADER_LIBRARIES += libhardware_headers
LOCAL_HEADER_LIBRARIES += libsystem_headers
#include $(BUILD_SHARED_LIBRARY)
+
+#-------------------------------------------
+# Build MAXX_AUDIO
+#-------------------------------------------
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libmaxxaudio
+LOCAL_VENDOR_MODULE := true
+
+PRIMARY_HAL_PATH := vendor/qcom/opensource/audio-hal/primary-hal/hal
+AUDIO_PLATFORM := $(TARGET_BOARD_PLATFORM)
+
+ifneq ($(filter sdm845 sdm710 msmnile kona sdm660 msm8937 $(MSMSTEPPE),$(TARGET_BOARD_PLATFORM)),)
+ # B-family platform uses msm8974 code base
+ AUDIO_PLATFORM = msm8974
+ MULTIPLE_HW_VARIANTS_ENABLED := true
+endif
+
+LOCAL_SRC_FILES:= \
+ maxxaudio.c
+
+LOCAL_CFLAGS += \
+ -Wall \
+ -Werror \
+ -Wno-unused-function \
+ -Wno-unused-variable
+
+LOCAL_SHARED_LIBRARIES := \
+ libaudioutils \
+ libcutils \
+ liblog \
+ libtinyalsa \
+ libtinycompress \
+ libaudioroute \
+ libdl \
+ libexpat
+
+LOCAL_C_INCLUDES := \
+ $(PRIMARY_HAL_PATH) \
+ $(PRIMARY_HAL_PATH)/$(AUDIO_PLATFORM) \
+ external/tinyalsa/include \
+ external/tinycompress/include \
+ external/expat/lib \
+ system/media/audio_utils/include \
+ $(call include-path-for, audio-route) \
+
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/techpack/audio/include
+LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
+ifeq ($(strip $(AUDIO_FEATURE_ENABLED_DLKM)),true)
+ LOCAL_HEADER_LIBRARIES += audio_kernel_headers
+ LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/vendor/qcom/opensource/audio-kernel/include
+endif
+
+LOCAL_HEADER_LIBRARIES += libhardware_headers
+LOCAL_HEADER_LIBRARIES += libsystem_headers
+include $(BUILD_SHARED_LIBRARY)
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 9939e20..24ed4c5 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -189,6 +189,7 @@
static bool audio_extn_concurrent_capture_enabled = false;
static bool audio_extn_compress_in_enabled = false;
static bool audio_extn_battery_listener_enabled = false;
+static bool audio_extn_maxx_audio_enabled = false;
#define AUDIO_PARAMETER_KEY_AANC_NOISE_LEVEL "aanc_noise_level"
#define AUDIO_PARAMETER_KEY_ANC "anc_enabled"
@@ -4748,6 +4749,134 @@
{
return (batt_prop_is_charging)? batt_prop_is_charging(): false;
}
+// END: BATTERY_LISTENER ================================================================
+
+// START: MAXX_AUDIO =====================================================================
+#ifdef __LP64__
+#define MAXX_AUDIO_LIB_PATH "/vendor/lib64/libmaxxaudio.so"
+#else
+#define MAXX_AUDIO_LIB_PATH "/vendor/lib/libmaxxaudio.so"
+#endif
+
+static void *maxxaudio_lib_handle = NULL;
+
+typedef void (*maxxaudio_init_t)(void *, maxx_audio_init_config_t);
+static maxxaudio_init_t maxxaudio_init;
+
+typedef void (*maxxaudio_deinit_t)();
+static maxxaudio_deinit_t maxxaudio_deinit;
+
+typedef bool (*maxxaudio_set_state_t)(struct audio_device*, int,
+ float, bool);
+static maxxaudio_set_state_t maxxaudio_set_state;
+
+typedef void (*maxxaudio_set_device_t)(struct audio_usecase *);
+static maxxaudio_set_device_t maxxaudio_set_device;
+
+typedef void (*maxxaudio_set_parameters_t)(struct audio_device *,
+ struct str_parms *);
+static maxxaudio_set_parameters_t maxxaudio_set_parameters;
+
+typedef bool (*maxxaudio_supported_usb_t)();
+static maxxaudio_supported_usb_t maxxaudio_supported_usb;
+
+int maxx_audio_feature_init(bool is_feature_enabled)
+{
+ audio_extn_maxx_audio_enabled = is_feature_enabled;
+ ALOGD("%s: Called with feature %s", __func__,
+ is_feature_enabled ? "Enabled" : "NOT Enabled");
+ if (is_feature_enabled) {
+ // dlopen lib
+ maxxaudio_lib_handle = dlopen(MAXX_AUDIO_LIB_PATH, RTLD_NOW);
+
+ if (!maxxaudio_lib_handle) {
+ ALOGE("%s: dlopen failed", __func__);
+ goto feature_disabled;
+ }
+
+ if (!(maxxaudio_init =
+ (maxxaudio_init_t)dlsym(maxxaudio_lib_handle, "ma_init")) ||
+ !(maxxaudio_deinit =
+ (maxxaudio_deinit_t)dlsym(maxxaudio_lib_handle, "ma_deinit")) ||
+ !(maxxaudio_set_state =
+ (maxxaudio_set_state_t)dlsym(maxxaudio_lib_handle, "ma_set_state")) ||
+ !(maxxaudio_set_device =
+ (maxxaudio_set_device_t)dlsym(maxxaudio_lib_handle, "ma_set_device")) ||
+ !(maxxaudio_set_parameters =
+ (maxxaudio_set_parameters_t)dlsym(maxxaudio_lib_handle, "ma_set_parameters")) ||
+ !(maxxaudio_supported_usb =
+ (maxxaudio_supported_usb_t)dlsym(
+ maxxaudio_lib_handle, "ma_supported_usb"))) {
+ ALOGE("%s: dlsym failed", __func__);
+ goto feature_disabled;
+ }
+ ALOGD("%s:: ---- Feature MAXX_AUDIO is Enabled ----", __func__);
+ return 0;
+ }
+
+feature_disabled:
+ if (maxxaudio_lib_handle) {
+ dlclose(maxxaudio_lib_handle);
+ maxxaudio_lib_handle = NULL;
+ }
+
+ maxxaudio_init = NULL;
+ maxxaudio_deinit = NULL;
+ maxxaudio_set_state = NULL;
+ maxxaudio_set_device = NULL;
+ maxxaudio_set_parameters = NULL;
+ maxxaudio_supported_usb = NULL;
+ ALOGW(":: %s: ---- Feature MAXX_AUDIO is disabled ----", __func__);
+ return -ENOSYS;
+}
+
+bool audio_extn_is_maxx_audio_enabled()
+{
+ return audio_extn_maxx_audio_enabled;
+}
+
+void audio_extn_ma_init(void *platform)
+{
+
+ if (maxxaudio_init) {
+ maxx_audio_init_config_t init_config;
+ init_config.fp_platform_set_parameters = platform_set_parameters;
+ init_config.fp_audio_extn_get_snd_card_split = audio_extn_get_snd_card_split;
+ maxxaudio_init(platform, init_config);
+ }
+}
+
+void audio_extn_ma_deinit()
+{
+ if (maxxaudio_deinit)
+ maxxaudio_deinit();
+}
+
+bool audio_extn_ma_set_state(struct audio_device *adev, int stream_type,
+ float vol, bool active)
+{
+ return (maxxaudio_set_state ?
+ maxxaudio_set_state(adev, stream_type, vol, active): false);
+}
+
+void audio_extn_ma_set_device(struct audio_usecase *usecase)
+{
+ if (maxxaudio_set_device)
+ maxxaudio_set_device(usecase);
+}
+
+void audio_extn_ma_set_parameters(struct audio_device *adev,
+ struct str_parms *parms)
+{
+ if (maxxaudio_set_parameters)
+ maxxaudio_set_parameters(adev, parms);
+}
+
+bool audio_extn_ma_supported_usb()
+{
+ return (maxxaudio_supported_usb ? maxxaudio_supported_usb(): false);
+}
+// END: MAXX_AUDIO =====================================================================
void audio_extn_feature_init(int is_running_with_enhanced_fwk)
{
@@ -4857,6 +4986,9 @@
case BATTERY_LISTENER:
battery_listener_feature_init(enable);
break;
+ case MAXX_AUDIO:
+ maxx_audio_feature_init(enable);
+ break;
default:
break;
}
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index c80666a..e1e3ca0 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -326,7 +326,24 @@
};
typedef struct a2dp_offload_init_config a2dp_offload_init_config_t;
// END: A2DP_OFFLOAD FEATURE ====================================================
-
+// START: MAXX_AUDIO FEATURE ==================================================
+void audio_extn_ma_init(void *platform);
+void audio_extn_ma_deinit();
+bool audio_extn_ma_set_state(struct audio_device *adev, int stream_type,
+ float vol, bool active);
+void audio_extn_ma_set_device(struct audio_usecase *usecase);
+void audio_extn_ma_set_parameters(struct audio_device *adev,
+ struct str_parms *parms);
+bool audio_extn_ma_supported_usb();
+bool audio_extn_is_maxx_audio_enabled();
+typedef int (*fp_platform_set_parameters_t)(void*, struct str_parms*);
+// --- Function pointers from audio_extn needed by MAXX_AUDIO
+struct maxx_audio_init_config {
+ fp_platform_set_parameters_t fp_platform_set_parameters;
+ fp_audio_extn_get_snd_card_split_t fp_audio_extn_get_snd_card_split;
+};
+typedef struct maxx_audio_init_config maxx_audio_init_config_t;
+// START: MAXX_AUDIO FEATURE ==================================================
//START: SSRRC_FEATURE ==========================================================
bool audio_extn_ssr_check_usecase(struct stream_in *in);
int audio_extn_ssr_set_usecase(struct stream_in *in,
diff --git a/hal/audio_extn/audio_feature_manager.c b/hal/audio_extn/audio_feature_manager.c
index a3120df..e121426 100644
--- a/hal/audio_extn/audio_feature_manager.c
+++ b/hal/audio_extn/audio_feature_manager.c
@@ -168,6 +168,8 @@
return confValues->compress_in_enabled;
case BATTERY_LISTENER:
return confValues->battery_listener_enabled;
+ case MAXX_AUDIO:
+ return confValues->maxx_audio_enabled;
case COMPRESS_METADATA_NEEDED:
return confValues->compress_metadata_needed;
case INCALL_MUSIC:
diff --git a/hal/audio_extn/audio_feature_manager.h b/hal/audio_extn/audio_feature_manager.h
index 9e3c541..8df076c 100644
--- a/hal/audio_extn/audio_feature_manager.h
+++ b/hal/audio_extn/audio_feature_manager.h
@@ -70,6 +70,7 @@
COMPRESS_IN_CAPTURE,
BATTERY_LISTENER,
COMPRESS_METADATA_NEEDED,
+ MAXX_AUDIO,
COMPRESS_VOIP,
VOICE_START = COMPRESS_VOIP,
DYNAMIC_ECNS,
diff --git a/hal/audio_extn/maxxaudio.c b/hal/audio_extn/maxxaudio.c
index 5f2a7f0..8830486 100644
--- a/hal/audio_extn/maxxaudio.c
+++ b/hal/audio_extn/maxxaudio.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2018-2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -156,12 +156,15 @@
static uint16_t g_supported_dev = 0;
static struct ma_state ma_cur_state_table[STREAM_MAX_TYPES];
static struct ma_platform_data *my_data = NULL;
+// --- external function dependency ---
+fp_platform_set_parameters_t fp_platform_set_parameters;
+fp_audio_extn_get_snd_card_split_t fp_audio_extn_get_snd_card_split;
static int set_audio_cal(const char *audio_cal)
{
ALOGV("set_audio_cal: %s", audio_cal);
- return platform_set_parameters(my_data->platform,
+ return fp_platform_set_parameters(my_data->platform,
str_parms_create_str(audio_cal));
}
@@ -200,7 +203,7 @@
((usecase->devices & AUDIO_DEVICE_OUT_SPEAKER) ||
(usecase->devices & AUDIO_DEVICE_OUT_SPEAKER_SAFE) ||
(audio_is_usb_out_device(usecase->devices) &&
- audio_extn_ma_supported_usb())))
+ ma_supported_usb())))
/* TODO: enable A2DP when it is ready */
return true;
@@ -390,7 +393,7 @@
}
// adev_init lock held
-void audio_extn_ma_init(void *platform)
+void ma_init(void *platform, maxx_audio_init_config_t init_config)
{
ma_stream_type_t i = 0;
int ret = 0;
@@ -398,7 +401,11 @@
char mps_path[128] = {0};
char cnf_path[128] = {0};
struct snd_card_split *snd_split_handle = NULL;
- snd_split_handle = audio_extn_get_snd_card_split();
+
+ fp_platform_set_parameters = init_config.fp_platform_set_parameters;
+ fp_audio_extn_get_snd_card_split = init_config.fp_audio_extn_get_snd_card_split;
+
+ snd_split_handle = fp_audio_extn_get_snd_card_split();
if (platform == NULL) {
ALOGE("%s: platform is NULL", __func__);
@@ -549,7 +556,7 @@
}
//adev_init lock held
-void audio_extn_ma_deinit()
+void ma_deinit()
{
if (my_data) {
/* deinit ma parameter */
@@ -566,7 +573,7 @@
}
// adev_init and adev lock held
-bool audio_extn_ma_set_state(struct audio_device *adev, int stream_type,
+bool ma_set_state(struct audio_device *adev, int stream_type,
float vol, bool active)
{
bool ret = false;
@@ -613,7 +620,7 @@
return ret;
}
-void audio_extn_ma_set_device(struct audio_usecase *usecase)
+void ma_set_device(struct audio_usecase *usecase)
{
int i = 0;
struct ma_audio_cal_settings ma_cal;
@@ -663,7 +670,7 @@
pthread_mutex_unlock(&my_data->lock);
}
-void audio_extn_ma_set_parameters(struct audio_device *adev,
+void ma_set_parameters(struct audio_device *adev,
struct str_parms *parms)
{
int ret;
@@ -720,7 +727,7 @@
}
}
-bool audio_extn_ma_supported_usb()
+bool ma_supported_usb()
{
ALOGV("%s: current support 0x%x", __func__, g_supported_dev);
return (g_supported_dev & SUPPORTED_USB) ? true : false;
diff --git a/hal/audio_extn/maxxaudio.h b/hal/audio_extn/maxxaudio.h
index 4c91107..1ab7f80 100644
--- a/hal/audio_extn/maxxaudio.h
+++ b/hal/audio_extn/maxxaudio.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2018-2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,23 +17,12 @@
#ifndef MAXXAUDIO_H_
#define MAXXAUDIO_H_
-#ifndef MAXXAUDIO_QDSP_ENABLED
-#define audio_extn_ma_init(platform) (0)
-#define audio_extn_ma_deinit() (0)
-#define audio_extn_ma_set_state(adev, type, vol, active) (false)
-#define audio_extn_ma_set_device(usecase) (0)
-#define audio_extn_ma_set_parameters(adev, param) (0)
-#define audio_extn_ma_supported_usb() (false)
-#else
-void audio_extn_ma_init(void *platform);
-void audio_extn_ma_deinit();
-bool audio_extn_ma_set_state(struct audio_device *adev, int stream_type,
+void ma_init(void *platform, maxx_audio_init_config_t init_config);
+void ma_deinit();
+bool ma_set_state(struct audio_device *adev, int stream_type,
float vol, bool active);
-void audio_extn_ma_set_device(struct audio_usecase *usecase);
-void audio_extn_ma_set_parameters(struct audio_device *adev,
+void ma_set_device(struct audio_usecase *usecase);
+void ma_set_parameters(struct audio_device *adev,
struct str_parms *parms);
-bool audio_extn_ma_supported_usb();
-#endif /* MAXXAUDIO_QDSP_ENABLED */
-
-#endif /* MAXXAUDIO_H_ */
-
+bool ma_supported_usb();
+#endif /* MAXXAUDIO_H_ */
\ No newline at end of file
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 0c6ad5a..2294b0c 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -7638,33 +7638,34 @@
adev->screen_off = true;
}
-#ifndef MAXXAUDIO_QDSP_ENABLED
- ret = str_parms_get_int(parms, "rotation", &val);
- if (ret >= 0) {
- bool reverse_speakers = false;
- switch(val) {
- // FIXME: note that the code below assumes that the speakers are in the correct placement
- // relative to the user when the device is rotated 90deg from its default rotation. This
- // assumption is device-specific, not platform-specific like this code.
- case 270:
- reverse_speakers = true;
- break;
- case 0:
- case 90:
- case 180:
- break;
- default:
- ALOGE("%s: unexpected rotation of %d", __func__, val);
- status = -EINVAL;
+ if(!audio_extn_is_maxx_audio_enabled()) {
+ ret = str_parms_get_int(parms, "rotation", &val);
+ if (ret >= 0) {
+ bool reverse_speakers = false;
+ switch(val) {
+ // FIXME: note that the code below assumes that the speakers are
+ // in the correct placement relative to the user when the device
+ // is rotated 90deg from its default rotation. This assumption
+ // is device-specific, not platform-specific like this code.
+ case 270:
+ reverse_speakers = true;
+ break;
+ case 0:
+ case 90:
+ case 180:
+ break;
+ default:
+ ALOGE("%s: unexpected rotation of %d", __func__, val);
+ status = -EINVAL;
+ }
+ if (status == 0) {
+ // check and set swap
+ // - check if orientation changed and speaker active
+ // - set rotation and cache the rotation value
+ platform_check_and_set_swap_lr_channels(adev, reverse_speakers);
+ }
}
- if (status == 0) {
- // check and set swap
- // - check if orientation changed and speaker active
- // - set rotation and cache the rotation value
- platform_check_and_set_swap_lr_channels(adev, reverse_speakers);
- }
- }
-#endif
+ }
ret = str_parms_get_str(parms, AUDIO_PARAMETER_KEY_BT_SCO_WB, value, sizeof(value));
if (ret >= 0) {