Merge "hal: Bringup for sm6150"
diff --git a/configs/msm8909/audio_io_policy.conf b/configs/msm8909/audio_io_policy.conf
index dd0f3c1..46cd8cf 100644
--- a/configs/msm8909/audio_io_policy.conf
+++ b/configs/msm8909/audio_io_policy.conf
@@ -94,4 +94,20 @@
bit_width 16
app_type 69943
}
+ record_fluence1 {
+ flags AUDIO_INPUT_FLAG_NONE
+ profile record_fluence
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 16000|48000
+ bit_width 16
+ app_type 69943
+ }
+ record_fluence2 {
+ flags AUDIO_INPUT_FLAG_COMPRESS
+ profile record_fluence
+ formats AUDIO_FORMAT_PCM_16_BIT
+ sampling_rates 16000|48000
+ bit_width 16
+ app_type 69943
+ }
}
diff --git a/configs/msm8909/msm8909.mk b/configs/msm8909/msm8909.mk
index 14cca86..d7249c1 100644
--- a/configs/msm8909/msm8909.mk
+++ b/configs/msm8909/msm8909.mk
@@ -107,7 +107,16 @@
ro.vendor.audio.sdk.fluencetype=none\
persist.vendor.audio.fluence.voicecall=true\
persist.vendor.audio.fluence.voicerec=false\
-persist.vendor.audio.fluence.speaker=true
+persist.vendor.audio.fluence.speaker=true\
+persist.vendor.audio.fluence.audiorec=false
+
+#enable generic handset mic
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.apptype.multirec.enabled=false
+
+#enable multi record
+PRODUCT_PROPERTY_OVERRIDES += \
+vendor.audio.record.multiple.enabled=true
#disable tunnel encoding
PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index 50f3a10..0c9b27f 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -57,6 +57,7 @@
BOARD_SUPPORTS_QAHW := false
AUDIO_FEATURE_ENABLED_DYNAMIC_LOG := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
+AUDIO_FEATURE_ENABLED_SVA_MULTI_STAGE := true
ifeq ($(TARGET_KERNEL_VERSION), 3.18)
AUDIO_FEATURE_ENABLED_DLKM := false
else
@@ -243,7 +244,7 @@
android.hardware.audio@2.0-service \
android.hardware.audio@2.0-impl \
android.hardware.audio.effect@2.0-impl \
- android.hardware.soundtrigger@2.0-impl \
+ android.hardware.soundtrigger@2.1-impl \
android.hardware.audio@4.0 \
android.hardware.audio.common@4.0 \
android.hardware.audio.common@4.0-util \
diff --git a/configs/msmnile/audio_policy_configuration.xml b/configs/msmnile/audio_policy_configuration.xml
index 3d472f5..cf48dd7 100644
--- a/configs/msmnile/audio_policy_configuration.xml
+++ b/configs/msmnile/audio_policy_configuration.xml
@@ -244,10 +244,6 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
- <devicePort tagName="BT SCO All" type="AUDIO_DEVICE_OUT_ALL_SCO" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
- </devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
@@ -346,7 +342,11 @@
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="FM"
sources="primary output"/>
- <route type="mix" sink="BT SCO All"
+ <route type="mix" sink="BT SCO"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Headset"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Car Kit"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="USB Device Out"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback"/>
@@ -365,11 +365,11 @@
<route type="mix" sink="mmap_no_irq_in"
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,USB Device In,USB Headset In"/>
<route type="mix" sink="BT A2DP Out"
- sources="primary output,deep_buffer,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="BT A2DP Headphones"
- sources="primary output,deep_buffer,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="BT A2DP Speaker"
- sources="primary output,deep_buffer,direct_pcm,compressed_offload"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
</routes>
diff --git a/configs/msmnile/mixer_paths_pahu.xml b/configs/msmnile/mixer_paths_pahu.xml
index 38d1e09..68e5317 100644
--- a/configs/msmnile/mixer_paths_pahu.xml
+++ b/configs/msmnile/mixer_paths_pahu.xml
@@ -1587,6 +1587,10 @@
<path name="audio-playback-voip bt-sco" />
</path>
+ <path name="audio-playback-voip bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="audio-playback-voip afe-proxy">
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
</path>
diff --git a/configs/msmnile/mixer_paths_tavil.xml b/configs/msmnile/mixer_paths_tavil.xml
index 15b6e04..52d3902 100755
--- a/configs/msmnile/mixer_paths_tavil.xml
+++ b/configs/msmnile/mixer_paths_tavil.xml
@@ -1722,6 +1722,10 @@
<path name="audio-playback-voip bt-sco" />
</path>
+ <path name="audio-playback-voip bt-a2dp">
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia10" value="1" />
+ </path>
+
<path name="audio-playback-voip afe-proxy">
<ctl name="AFE_PCM_RX Audio Mixer MultiMedia10" value="1" />
</path>
diff --git a/configs/msmnile/sound_trigger_platform_info.xml b/configs/msmnile/sound_trigger_platform_info.xml
index 34c3401..234fcd1 100644
--- a/configs/msmnile/sound_trigger_platform_info.xml
+++ b/configs/msmnile/sound_trigger_platform_info.xml
@@ -166,6 +166,7 @@
<param operation_mode_ids="0x00012C1C, 0x00012C02" />
<param polling_enable_ids="0x00012C1C, 0x00012C1B" />
<param custom_config_ids="0x00012C1C, 0x00012C20" />
+ <param det_event_type_ids="0x00012C1C, 0x00012C2C" />
</lsm_usecase>
<!-- format: "ADPCM_packet" or "PCM_packet" !-->
diff --git a/configs/sdm710/audio_policy_configuration.xml b/configs/sdm710/audio_policy_configuration.xml
index b7c76ad..e5bed03 100644
--- a/configs/sdm710/audio_policy_configuration.xml
+++ b/configs/sdm710/audio_policy_configuration.xml
@@ -238,10 +238,6 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
- <devicePort tagName="BT SCO All" type="AUDIO_DEVICE_OUT_ALL_SCO" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
- </devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
@@ -340,7 +336,11 @@
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="FM"
sources="primary output"/>
- <route type="mix" sink="BT SCO All"
+ <route type="mix" sink="BT SCO"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Headset"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Car Kit"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="USB Device Out"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback"/>
diff --git a/configs/sdm845/audio_policy_configuration.xml b/configs/sdm845/audio_policy_configuration.xml
index a86b5da..c034774 100644
--- a/configs/sdm845/audio_policy_configuration.xml
+++ b/configs/sdm845/audio_policy_configuration.xml
@@ -238,10 +238,6 @@
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
</devicePort>
- <devicePort tagName="BT SCO All" type="AUDIO_DEVICE_OUT_ALL_SCO" role="sink">
- <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
- samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO"/>
- </devicePort>
<devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,16000" channelMasks="AUDIO_CHANNEL_OUT_MONO,AUDIO_CHANNEL_OUT_STEREO"/>
@@ -340,7 +336,11 @@
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="FM"
sources="primary output"/>
- <route type="mix" sink="BT SCO All"
+ <route type="mix" sink="BT SCO"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Headset"
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ <route type="mix" sink="BT SCO Car Kit"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
<route type="mix" sink="USB Device Out"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback"/>
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index f3c6bb6..6477b67 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -460,6 +460,7 @@
uint8_t min_bitpool; /* 2 */
uint8_t max_bitpool; /*53(44.1khz),51 (48khz) */
uint32_t bitrate; /* 320kbps to 512kbps */
+ uint32_t bits_per_sample;
} audio_sbc_encoder_config;
/* Information about BT APTX encoder configuration
@@ -470,6 +471,7 @@
uint16_t sampling_rate;
uint8_t channels;
uint32_t bitrate;
+ uint32_t bits_per_sample;
} audio_aptx_default_config;
typedef struct {
@@ -486,6 +488,7 @@
uint8_t TTP_modeA_high;
uint8_t TTP_modeB_low;
uint8_t TTP_modeB_high;
+ uint32_t bits_per_sample;
} audio_aptx_ad_config;
typedef struct {
@@ -493,6 +496,7 @@
uint8_t channels;
uint32_t bitrate;
uint32_t sync_mode;
+ uint32_t bits_per_sample;
} audio_aptx_dual_mono_config;
typedef union {
@@ -511,6 +515,7 @@
uint16_t channels; /* 1-Mono, 2-Stereo */
uint32_t sampling_rate;
uint32_t bitrate;
+ uint32_t bits_per_sample;
} audio_aac_encoder_config;
#endif
@@ -526,6 +531,7 @@
uint16_t prediction_mode; /* 0-1-2, 0 */
uint16_t vbr_flag; /* 0-1, 0*/
uint32_t bitrate; /*32000 - 1536000, 139500*/
+ uint32_t bits_per_sample;
} audio_celt_encoder_config;
/* Information about BT LDAC encoder configuration
@@ -539,6 +545,7 @@
uint16_t mtu; /*679*/
bool is_abr_enabled;
struct quality_level_to_bitrate_info level_to_bitrate_map;
+ uint32_t bits_per_sample;
} audio_ldac_encoder_config;
/*********** END of DSP configurable structures ********************/
@@ -925,6 +932,39 @@
return 0;
}
+static int a2dp_set_bit_format(uint32_t enc_bit_format)
+{
+ const char *bit_format = NULL;
+ struct mixer_ctl *ctrl_bit_format = NULL;
+
+ // Configure AFE Input Bit Format
+ switch (enc_bit_format) {
+ case 32:
+ bit_format = "S32_LE";
+ break;
+ case 24:
+ bit_format = "S24_LE";
+ break;
+ case 16:
+ default:
+ bit_format = "S16_LE";
+ break;
+ }
+
+ ALOGD("%s: set AFE input bit format = %d", __func__, enc_bit_format);
+ ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer,
+ MIXER_ENC_BIT_FORMAT);
+ if (!ctrl_bit_format) {
+ ALOGE("%s: ERROR AFE input bit format mixer control not identifed", __func__);
+ return -ENOSYS;
+ }
+ if (mixer_ctl_set_enum_by_string(ctrl_bit_format, bit_format) != 0) {
+ ALOGE("%s: Failed to set AFE input bit format = %d", __func__, enc_bit_format);
+ return -ENOSYS;
+ }
+ return 0;
+}
+
static int a2dp_reset_backend_cfg()
{
const char *rate_str = "KHZ_8", *in_channels = "Zero";
@@ -1018,7 +1058,7 @@
/* API to configure SBC DSP encoder */
bool configure_sbc_enc_format(audio_sbc_encoder_config *sbc_bt_cfg)
{
- struct mixer_ctl *ctl_enc_data = NULL, *ctrl_bit_format = NULL;
+ struct mixer_ctl *ctl_enc_data = NULL;
struct sbc_enc_cfg_t sbc_dsp_cfg;
bool is_configured = false;
int ret = 0;
@@ -1064,16 +1104,8 @@
is_configured = false;
goto fail;
}
- ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer,
- MIXER_ENC_BIT_FORMAT);
- if (!ctrl_bit_format) {
- ALOGE(" ERROR bit format CONFIG data mixer control not identifed");
- is_configured = false;
- goto fail;
- }
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S16_LE");
+ ret = a2dp_set_bit_format(sbc_bt_cfg->bits_per_sample);
if (ret != 0) {
- ALOGE("%s: Failed to set bit format to encoder", __func__);
is_configured = false;
goto fail;
}
@@ -1246,7 +1278,7 @@
/* API to configure APTX DSP encoder */
bool configure_aptx_enc_format(audio_aptx_encoder_config *aptx_bt_cfg)
{
- struct mixer_ctl *ctl_enc_data = NULL, *ctrl_bit_format = NULL;
+ struct mixer_ctl *ctl_enc_data = NULL;
int mixer_size;
bool is_configured = false;
int ret = 0;
@@ -1302,23 +1334,15 @@
is_configured = false;
goto fail;
}
-
- ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer,
- MIXER_ENC_BIT_FORMAT);
- if (!ctrl_bit_format) {
- ALOGE("ERROR bit format CONFIG data mixer control not identifed");
+ if(a2dp.is_aptx_adaptive)
+ ret = a2dp_set_bit_format(aptx_bt_cfg->ad_cfg->bits_per_sample);
+ else if(a2dp.is_aptx_dual_mono_supported)
+ ret = a2dp_set_bit_format(aptx_bt_cfg->dual_mono_cfg->bits_per_sample);
+ else
+ ret = a2dp_set_bit_format(aptx_bt_cfg->default_cfg->bits_per_sample);
+ if (ret != 0) {
is_configured = false;
goto fail;
- } else {
- if (a2dp.is_aptx_adaptive)
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S24_LE");
- else
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S16_LE");
- if (ret != 0) {
- ALOGE("%s: Failed to set bit format to encoder", __func__);
- is_configured = false;
- goto fail;
- }
}
is_configured = true;
if (a2dp.is_aptx_adaptive)
@@ -1340,7 +1364,7 @@
bool configure_aptx_hd_enc_format(audio_aptx_encoder_config *aptx_bt_cfg)
#endif
{
- struct mixer_ctl *ctl_enc_data = NULL, *ctrl_bit_format = NULL;
+ struct mixer_ctl *ctl_enc_data = NULL;
struct custom_enc_cfg_t aptx_dsp_cfg;
bool is_configured = false;
int ret = 0;
@@ -1376,15 +1400,8 @@
is_configured = false;
goto fail;
}
- ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_ENC_BIT_FORMAT);
- if (!ctrl_bit_format) {
- ALOGE(" ERROR bit format CONFIG data mixer control not identifed");
- is_configured = false;
- goto fail;
- }
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S24_LE");
+ ret = a2dp_set_bit_format(aptx_bt_cfg->bits_per_sample);
if (ret != 0) {
- ALOGE("%s: Failed to set APTX HD encoder config", __func__);
is_configured = false;
goto fail;
}
@@ -1401,7 +1418,7 @@
/* API to configure AAC DSP encoder */
bool configure_aac_enc_format(audio_aac_encoder_config *aac_bt_cfg)
{
- struct mixer_ctl *ctl_enc_data = NULL, *ctrl_bit_format = NULL;
+ struct mixer_ctl *ctl_enc_data = NULL;
struct aac_enc_cfg_t aac_dsp_cfg;
bool is_configured = false;
int ret = 0;
@@ -1440,16 +1457,8 @@
is_configured = false;
goto fail;
}
- ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer,
- MIXER_ENC_BIT_FORMAT);
- if (!ctrl_bit_format) {
- is_configured = false;
- ALOGE(" ERROR bit format CONFIG data mixer control not identifed");
- goto fail;
- }
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S16_LE");
+ ret = a2dp_set_bit_format(aac_bt_cfg->bits_per_sample);
if (ret != 0) {
- ALOGE("%s: Failed to set bit format to encoder", __func__);
is_configured = false;
goto fail;
}
@@ -1465,7 +1474,7 @@
bool configure_celt_enc_format(audio_celt_encoder_config *celt_bt_cfg)
{
- struct mixer_ctl *ctl_enc_data = NULL, *ctrl_bit_format = NULL;
+ struct mixer_ctl *ctl_enc_data = NULL;
struct celt_enc_cfg_t celt_dsp_cfg;
bool is_configured = false;
int ret = 0;
@@ -1509,15 +1518,8 @@
is_configured = false;
goto fail;
}
- ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_ENC_BIT_FORMAT);
- if (!ctrl_bit_format) {
- ALOGE(" ERROR bit format CONFIG data mixer control not identifed");
- is_configured = false;
- goto fail;
- }
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S16_LE");
+ ret = a2dp_set_bit_format(celt_bt_cfg->bits_per_sample);
if (ret != 0) {
- ALOGE("%s: Failed to set bit format to encoder", __func__);
is_configured = false;
goto fail;
}
@@ -1533,7 +1535,7 @@
bool configure_ldac_enc_format(audio_ldac_encoder_config *ldac_bt_cfg)
{
- struct mixer_ctl *ldac_enc_data = NULL, *ctrl_bit_format = NULL;
+ struct mixer_ctl *ldac_enc_data = NULL;
struct ldac_enc_cfg_t ldac_dsp_cfg;
bool is_configured = false;
int ret = 0;
@@ -1583,15 +1585,8 @@
is_configured = false;
goto fail;
}
- ctrl_bit_format = mixer_get_ctl_by_name(a2dp.adev->mixer, MIXER_ENC_BIT_FORMAT);
- if (!ctrl_bit_format) {
- ALOGE(" ERROR bit format CONFIG data mixer control not identifed");
- is_configured = false;
- goto fail;
- }
- ret = mixer_ctl_set_enum_by_string(ctrl_bit_format, "S16_LE");
+ ret = a2dp_set_bit_format(ldac_bt_cfg->bits_per_sample);
if (ret != 0) {
- ALOGE("%s: Failed to set bit format to encoder", __func__);
is_configured = false;
goto fail;
}
diff --git a/hal/audio_extn/usb.c b/hal/audio_extn/usb.c
index 9338bc9..643739f 100644
--- a/hal/audio_extn/usb.c
+++ b/hal/audio_extn/usb.c
@@ -1269,6 +1269,10 @@
bool match = (playback && (dev_info->type == USB_PLAYBACK)) || \
(!playback && (dev_info->type == USB_CAPTURE)); \
if (match && (cond)) { \
+ if (dev_info->field == *field) { \
+ local_var = dev_info->field; \
+ break; \
+ } \
local_var = _MAX(local_var, dev_info->field); \
} \
} \
@@ -1279,6 +1283,7 @@
FIND_BEST_MATCH(ch, channels, \
dev_info->service_interval_us == service_interval && \
dev_info->bit_width == bw);
+ sr = *sample_rate;
list_for_each(node_i, &usbmod->usb_card_conf_list) {
/* Currently only apply the first playback sound card configuration */
card_info = node_to_item(node_i, struct usb_card_config, list);
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 4c51ef6..4ae9097 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4518,7 +4518,7 @@
if (ret < 0)
ret = -errno;
- ALOGVV("%s: writing buffer (%zu bytes) to compress device returned %zd", __func__, bytes, ret);
+ ALOGVV("%s: writing buffer (%zu bytes) to compress device returned %d", __func__, bytes, (int)ret);
/*msg to cb thread only if non blocking write is enabled*/
if (ret >= 0 && ret < (ssize_t)bytes && out->non_blocking) {
ALOGD("No space available in compress driver, post msg to cb thread");
@@ -5733,7 +5733,7 @@
(devices != AUDIO_DEVICE_OUT_USB_ACCESSORY);
bool direct_dev = is_hdmi || is_usb_dev;
- if (is_usb_dev && (audio_extn_usb_connected(NULL))) {
+ if (is_usb_dev && (!audio_extn_usb_connected(NULL))) {
is_usb_dev = false;
devices = AUDIO_DEVICE_OUT_SPEAKER;
ALOGW("%s: ignore set device to non existing USB card, use output device(%#x)",
@@ -6862,7 +6862,7 @@
flags,
source);
- if (is_usb_dev && (audio_extn_usb_connected(NULL))) {
+ if (is_usb_dev && (!audio_extn_usb_connected(NULL))) {
is_usb_dev = false;
devices = AUDIO_DEVICE_IN_BUILTIN_MIC;
ALOGW("%s: ignore set device to non existing USB card, use input device(%#x)",
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index a69e5bf..06536af 100755
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -6167,10 +6167,11 @@
ALOGD("%s:becf: afe: napb not active - set non fractional rate",
__func__);
}
- /*ensure AFE set to 48khz when sample rate less than 44.1khz*/
- if (sample_rate < OUTPUT_SAMPLING_RATE_44100) {
- sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
- ALOGD("%s:becf: afe: napb set sample rate to default Sample Rate(48k)",__func__);
+ /*reset sample rate to 48khz if sample rate less than 44.1khz, or device backend dose not support 44.1 khz*/
+ if ((sample_rate == OUTPUT_SAMPLING_RATE_44100 && backend_idx != HEADPHONE_44_1_BACKEND)
+ || sample_rate < OUTPUT_SAMPLING_RATE_44100) {
+ sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE;
+ ALOGD("%s:becf: afe: reset sample rate to default Sample Rate(48k)",__func__);
}
}