hal: Add Makefile and configure file for hal
Add Makefile and configure files for hal.
Change-Id: Ic4605a02a505d0be92faeed134060a7b254561e6
diff --git a/hal/Makefile.am b/hal/Makefile.am
new file mode 100644
index 0000000..516770a
--- /dev/null
+++ b/hal/Makefile.am
@@ -0,0 +1,123 @@
+AM_CFLAGS = -I ${WORKSPACE}/external/tinyalsa/include \
+ -I ${WORKSPACE}/system/media/audio_effects/include \
+ -I ${WORKSPACE}/system/media/audio_utils/include \
+ -I $(top_srcdir)/hal \
+ -I $(top_srcdir)/hal/audio_extn \
+ -I $(top_srcdir)/hal/voice_extn \
+ -I $(top_srcdir)/hal/msm8916
+
+c_sources = audio_hw.c \
+ voice.c \
+ platform_info.c \
+ msm8916/platform.c \
+ audio_extn/audio_extn.c \
+ audio_extn/utils.c
+
+if HDMI_EDID
+AM_CFLAGS += -DHDMI_EDID
+c_sources += edid.c
+endif
+
+if FM_POWER_OPT
+AM_CFLAGS += -DFM_POWER_OPT
+c_sources += audio_extn/fm.c
+endif
+
+if USBAUDIO
+AM_CFLAGS += -DUSB_HEADSET_ENABLED
+c_sources += audio_extn/usb.c
+endif
+
+if HFP
+AM_CFLAGS += -DHFP_ENABLED
+c_sources += audio_extn/hfp.c
+endif
+
+if SSR
+AM_CFLAGS += -DSSR_ENABLED
+c_sources += audio_extn/ssr.c
+AM_CFLAGS += -I ${WORKSPACE}/audio/mm-audio-noship/surround_sound_3mic/libsurround_3mic_proc/surround_rec_interface/inc/
+endif
+
+if MULTI_VOICE_SESSIONS
+AM_CFLAGS += -DMULTI_VOICE_SESSION_ENABLED
+c_sources += voice_extn/voice_extn.c
+endif
+
+if COMPRESS_VOIP
+AM_CFLAGS += -DCOMPRESS_VOIP_ENABLED
+c_sources += voice_extn/compress_voip.c
+endif
+
+if SPKR_PROTECTION
+AM_CFLAGS += -DSPKR_PROT_ENABLED
+c_sources += audio_extn/spkr_protection.c
+endif
+
+if HW_VARIANTS
+AM_CFLAGS += -DHW_VARIANTS_ENABLED
+c_sources += msm8916/hw_info.c
+endif
+
+if COMPRESS_CAPTURE
+AM_CFLAGS += -DCOMPRESS_CAPTURE_ENABLED
+c_sources += audio_extn/compress_capture.c
+endif
+
+if DTS_EAGLE
+AM_CFLAGS += -DDTS_EAGLE
+c_sources += audio_extn/dts_eagle.c
+endif
+
+if DOLBY_DDP
+AM_CFLAGS += -DDS1_DOLBY_DDP_ENABLED
+c_sources += audio_extn/dolby.c
+endif
+
+if DS1_DOLBY_DAP
+AM_CFLAGS += -DDS1_DOLBY_DAP_ENABLED
+if DOLBY_DDP
+c_sources += audio_extn/dolby.c
+endif
+endif
+
+if DEV_ARBI
+AM_CFLAGS += -DDEV_ARBI_ENABLED
+c_sources += audio_extn/dev_arbi.c
+endif
+
+if SOURCE_TRACKING
+AM_CFLAGS += -DSOURCE_TRACKING_ENABLED
+c_sources += audio_extn/source_track.c
+endif
+
+if LISTEN
+AM_CFLAGS += -DAUDIO_LISTEN_ENABLED
+AM_CFLAGS += -I ${WORKSPACE}/audio/mm-audio-noship/audio-listen
+c_sources += audio_extn/listen.c
+endif
+
+if SOUND_TRIGGER
+AM_CFLAGS += -DSOUND_TRIGGER_ENABLED
+AM_CFLAGS += -I ${WORKSPACE}/audio/mm-audio/sound_trigger/
+c_sources += audio_extn/soundtrigger.c
+endif
+
+h_sources = audio_extn/audio_defs.h \
+ audio_extn/audio_extn.h \
+ audio_hw.h \
+ voice.h
+
+library_include_HEADERS = $(h_sources)
+library_includedir = $(includedir)
+
+lib_LTLIBRARIES = audio_primary_default.la
+audio_primary_default_la_SOURCES = $(c_sources)
+audio_primary_default_la_LIBADD = $(GLIB_LIBS) -llog -lcutils -ltinyalsa
+audio_primary_default_la_LIBADD += -ltinycompress -laudioroute -ldl -lexpat -laudioutils
+audio_primary_default_la_CFLAGS = $(AM_CFLAGS) $(GLIB_CFLAGS)
+audio_primary_default_la_CFLAGS += -Dstrlcat=g_strlcat
+audio_primary_default_la_CFLAGS += -DINT_MAX=0x7fffffff
+audio_primary_default_la_CFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
+audio_primary_default_la_CFLAGS += -DLINUX_ENABLED
+audio_primary_default_la_LDFLAGS = -module -shared -avoid-version
diff --git a/hal/audio_extn/soundtrigger.c b/hal/audio_extn/soundtrigger.c
index 6142e86..70f6d06 100644
--- a/hal/audio_extn/soundtrigger.c
+++ b/hal/audio_extn/soundtrigger.c
@@ -43,6 +43,7 @@
#define XSTR(x) STR(x)
#define STR(x) #x
+#define MAX_LIBRARY_PATH 100
struct sound_trigger_info {
struct sound_trigger_session_info st_ses;
@@ -60,6 +61,21 @@
static struct sound_trigger_audio_device *st_dev;
+#if LINUX_ENABLED
+static void get_library_path(char *lib_path)
+{
+ snprintf(lib_path, MAX_LIBRARY_PATH,
+ "/usr/lib/sound_trigger.primary.default.so");
+}
+#else
+static void get_library_path(char *lib_path)
+{
+ snprintf(lib_path, MAX_LIBRARY_PATH,
+ "/system/vendor/lib/hw/sound_trigger.primary.%s.so",
+ XSTR(SOUND_TRIGGER_PLATFORM_NAME));
+}
+#endif
+
static struct sound_trigger_info *
get_sound_trigger_info(int capture_handle)
{
@@ -349,10 +365,7 @@
return -ENOMEM;
}
- snprintf(sound_trigger_lib, sizeof(sound_trigger_lib),
- "/system/vendor/lib/hw/sound_trigger.primary.%s.so",
- XSTR(SOUND_TRIGGER_PLATFORM_NAME));
-
+ get_library_path(sound_trigger_lib);
st_dev->lib_handle = dlopen(sound_trigger_lib, RTLD_NOW);
if (st_dev->lib_handle == NULL) {
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index eb3213c..90b39b5 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -41,7 +41,11 @@
#endif
#endif
+#ifdef LINUX_ENABLED
+#define AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE "/etc/audio_output_policy.conf"
+#else
#define AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE "/vendor/etc/audio_output_policy.conf"
+#endif
#define OUTPUTS_TAG "outputs"
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index bf2908f..bd393f2 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -3625,7 +3625,8 @@
if (bytes % 4 == 0) {
/* data from DSP comes in 24_8 format, convert it to 8_24 */
int_buf_stream = buffer;
- for (size_t itt=0; itt < bytes/4 ; itt++) {
+ size_t itt = 0;
+ for (itt = 0; itt < bytes/4 ; itt++) {
int_buf_stream[itt] >>= 8;
}
} else {
diff --git a/hal/msm8916/hw_info.c b/hal/msm8916/hw_info.c
index 28b2397..ea3ff09 100644
--- a/hal/msm8916/hw_info.c
+++ b/hal/msm8916/hw_info.c
@@ -303,6 +303,18 @@
hw_info->snd_devices = NULL;
hw_info->num_snd_devices = 0;
strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
+ } else if (!strcmp(snd_card_name, "apq8009-tashalite-snd-card")) {
+ strlcpy(hw_info->type, "", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "apq8009", sizeof(hw_info->name));
+ hw_info->snd_devices = NULL;
+ hw_info->num_snd_devices = 0;
+ strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
+ } else if (!strcmp(snd_card_name, "mdm9607-tomtom-i2s-snd-card")) {
+ strlcpy(hw_info->type, "", sizeof(hw_info->type));
+ strlcpy(hw_info->name, "mdm9607", sizeof(hw_info->name));
+ hw_info->snd_devices = NULL;
+ hw_info->num_snd_devices = 0;
+ strlcpy(hw_info->dev_extn, "", sizeof(hw_info->dev_extn));
} else {
ALOGW("%s: Not an 8x16/8909/8917/8920/8937/8939/8940/8952/8953/falcon device", __func__);
}
@@ -325,7 +337,8 @@
strstr(snd_card_name, "msm8976") || strstr(snd_card_name, "msm8953") ||
strstr(snd_card_name, "msm8937") || strstr(snd_card_name, "msm8917") ||
strstr(snd_card_name, "msm8940") || strstr(snd_card_name, "msm8920") ||
- strstr(snd_card_name, "msmfalcon")) {
+ strstr(snd_card_name, "msmfalcon") || strstr(snd_card_name, "apq8009") ||
+ strstr(snd_card_name, "mdm9607")) {
ALOGV("8x16 - variant soundcard");
update_hardware_info_8x16(hw_info, snd_card_name);
} else {
diff --git a/hal/msm8916/platform.c b/hal/msm8916/platform.c
index 9416887..012638c 100644
--- a/hal/msm8916/platform.c
+++ b/hal/msm8916/platform.c
@@ -39,10 +39,6 @@
#include <dirent.h>
#define SOUND_TRIGGER_DEVICE_HANDSET_MONO_LOW_POWER_ACDB_ID (100)
#define MAX_MIXER_XML_PATH 100
-#define MIXER_XML_PATH "/system/etc/mixer_paths.xml"
-#define MIXER_XML_PATH_MTP "/system/etc/mixer_paths_mtp.xml"
-#define MIXER_XML_PATH_SBC "/system/etc/mixer_paths_sbc.xml"
-#define MIXER_XML_PATH_MSM8909_PM8916 "/system/etc/mixer_paths_msm8909_pm8916.xml"
#define MIXER_XML_PATH_QRD_SKUH "/system/etc/mixer_paths_qrd_skuh.xml"
#define MIXER_XML_PATH_QRD_SKUI "/system/etc/mixer_paths_qrd_skui.xml"
#define MIXER_XML_PATH_QRD_SKUHF "/system/etc/mixer_paths_qrd_skuhf.xml"
@@ -53,7 +49,6 @@
#define MIXER_XML_PATH_SKUL "/system/etc/mixer_paths_skul.xml"
#define MIXER_XML_PATH_SKUM "/system/etc/mixer_paths_qrd_skum.xml"
#define MIXER_XML_PATH_SKU1 "/system/etc/mixer_paths_qrd_sku1.xml"
-#define MIXER_XML_PATH_SKU2 "/system/etc/mixer_paths_qrd_sku2.xml"
#define MIXER_XML_PATH_SKUN_CAJON "/system/etc/mixer_paths_qrd_skun_cajon.xml"
#define MIXER_XML_PATH_SKU3 "/system/etc/mixer_paths_qrd_sku3.xml"
#define MIXER_XML_PATH_AUXPCM "/system/etc/mixer_paths_auxpcm.xml"
@@ -62,10 +57,30 @@
#define MIXER_XML_PATH_WCD9306 "/system/etc/mixer_paths_wcd9306.xml"
#define MIXER_XML_PATH_WCD9330 "/system/etc/mixer_paths_wcd9330.xml"
#define MIXER_XML_PATH_WCD9335 "/system/etc/mixer_paths_wcd9335.xml"
-#define MIXER_XML_PATH_WCD9326 "/system/etc/mixer_paths_wcd9326.xml"
-#define MIXER_XML_PATH_SKUN "/system/etc/mixer_paths_qrd_skun.xml"
-#define PLATFORM_INFO_XML_PATH "/system/etc/audio_platform_info.xml"
+#ifdef LINUX_ENABLED
+#define MIXER_XML_PATH "/etc/mixer_paths.xml"
+#define MIXER_XML_PATH_MSM8909_PM8916 "/etc/mixer_paths_msm8909_pm8916.xml"
+#define MIXER_XML_PATH_MTP "/etc/mixer_paths_mtp.xml"
+#define MIXER_XML_PATH_SKU2 "/etc/mixer_paths_qrd_sku2.xml"
+#define MIXER_XML_PATH_WCD9326 "/etc/mixer_paths_wcd9326.xml"
+#define PLATFORM_INFO_XML_PATH_EXTCODEC "/etc/audio_platform_info_extcodec.xml"
+#define PLATFORM_INFO_XML_PATH "/etc/audio_platform_info.xml"
+#define MIXER_XML_PATH_WCD9326_I2S "/etc/mixer_paths_wcd9326_i2s.xml"
+#define MIXER_XML_PATH_WCD9330_I2S "/etc/mixer_paths_wcd9330_i2s.xml"
+#define MIXER_XML_PATH_SBC "/etc/mixer_paths_sbc.xml"
+#else
+#define MIXER_XML_PATH "/system/etc/mixer_paths.xml"
+#define MIXER_XML_PATH_MSM8909_PM8916 "/system/etc/mixer_paths_msm8909_pm8916.xml"
+#define MIXER_XML_PATH_MTP "/system/etc/mixer_paths_mtp.xml"
+#define MIXER_XML_PATH_SKU2 "/system/etc/mixer_paths_qrd_sku2.xml"
#define PLATFORM_INFO_XML_PATH_EXTCODEC "/system/etc/audio_platform_info_extcodec.xml"
+#define MIXER_XML_PATH_WCD9326 "/system/etc/mixer_paths_wcd9326.xml"
+#define PLATFORM_INFO_XML_PATH "/system/etc/audio_platform_info.xml"
+#define MIXER_XML_PATH_WCD9326_I2S "/system/etc/mixer_paths_wcd9326_i2s.xml"
+#define MIXER_XML_PATH_WCD9330_I2S "/system/etc/mixer_paths_wcd9330_i2s.xml"
+#define MIXER_XML_PATH_SBC "/system/etc/mixer_paths_sbc.xml"
+#endif
+#define MIXER_XML_PATH_SKUN "/system/etc/mixer_paths_qrd_skun.xml"
#define LIB_ACDB_LOADER "libacdbloader.so"
#define CVD_VERSION_MIXER_CTL "CVD Version"
@@ -850,7 +865,11 @@
!strncmp(snd_card_name, "msm8953-tashalite-snd-card",
sizeof("msm8953-tashalite-snd-card")) ||
!strncmp(snd_card_name, "msmfalcon-tasha-snd-card",
- sizeof("msmfalcon-tasha-snd-card")))
+ sizeof("msmfalcon-tasha-snd-card")) ||
+ !strncmp(snd_card_name, "apq8009-tashalite-snd-card",
+ sizeof("apq8009-tashalite-snd-card")) ||
+ !strncmp(snd_card_name, "mdm9607-tomtom-i2s-snd-card",
+ sizeof("mdm9607-tomtom-i2s-snd-card")))
{
ALOGI("%s: snd_card_name: %s",__func__,snd_card_name);
is_external_codec = true;
@@ -1152,6 +1171,20 @@
msm_device_to_be_id = msm_device_to_be_id_internal_codec;
msm_be_id_array_len =
sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
+ } else if (!strncmp(snd_card_name, "apq8009-tashalite-snd-card",
+ sizeof("apq8009-tashalite-snd-card"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_WCD9326_I2S,
+ MAX_MIXER_XML_PATH);
+ msm_device_to_be_id = msm_device_to_be_id_external_codec;
+ msm_be_id_array_len =
+ sizeof(msm_device_to_be_id_external_codec) / sizeof(msm_device_to_be_id_external_codec[0]);
+ } else if (!strncmp(snd_card_name, "mdm9607-tomtom-i2s-snd-card",
+ sizeof("mdm9607-tomtom-i2s-snd-card"))) {
+ strlcpy(mixer_xml_path, MIXER_XML_PATH_WCD9330_I2S,
+ sizeof(MIXER_XML_PATH_WCD9330_I2S));
+ msm_device_to_be_id = msm_device_to_be_id_external_codec;
+ msm_be_id_array_len =
+ sizeof(msm_device_to_be_id_external_codec) / sizeof(msm_device_to_be_id_external_codec[0]);
} else {
strlcpy(mixer_xml_path, MIXER_XML_PATH,
sizeof(MIXER_XML_PATH));