Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 008aebd1 authored by Helen Zeng's avatar Helen Zeng
Browse files

hal: load CSD library by checking number of modems

The method to get baseband through property will be deprecated.

Call ESOC API to get the number of modems within the platform.
Use the number of modems instead of baseband to decide whether
CSD library should be loaded.

Change-Id: I470616a6ce833a368783bba9442285a69491cbac
parent a25101cc
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -121,7 +121,8 @@ LOCAL_SHARED_LIBRARIES := \
	libtinycompress \
	libaudioroute \
	libdl \
	libexpat
	libexpat \
        libmdmdetect

LOCAL_C_INCLUDES += \
	external/tinyalsa/include \
@@ -131,7 +132,8 @@ LOCAL_C_INCLUDES += \
	$(call include-path-for, audio-effects) \
	$(LOCAL_PATH)/$(AUDIO_PLATFORM) \
	$(LOCAL_PATH)/audio_extn \
	$(LOCAL_PATH)/voice_extn
	$(LOCAL_PATH)/voice_extn \
        $(TARGET_OUT_HEADERS)/libmdmdetect/inc

ifeq ($(strip $(AUDIO_FEATURE_ENABLED_LISTEN)),true)
    LOCAL_CFLAGS += -DAUDIO_LISTEN_ENABLED
+23 −12
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include "audio_extn.h"
#include "voice_extn.h"
#include "sound/compress_params.h"
#include "mdm_detect.h"

#define MIXER_XML_PATH "/system/etc/mixer_paths.xml"
#define MIXER_XML_PATH_AUXPCM "/system/etc/mixer_paths_auxpcm.xml"
@@ -539,10 +540,28 @@ void close_csd_client(struct csd_data *csd)
    }
}

static void platform_csd_init(struct platform_data *plat_data)
{
    struct dev_info mdm_detect_info;
    int ret = 0;

    /* Call ESOC API to get the number of modems.
     * If the number of modems is not zero, load CSD Client specific
     * symbols. Voice call is handled by MDM and apps processor talks to
     * MDM through CSD Client
     */
    ret = get_system_info(&mdm_detect_info);
    if (ret > 0) {
        ALOGE("%s: Failed to get system info, ret %d", __func__, ret);
    }
    ALOGD("%s: num_modems %d\n", __func__, mdm_detect_info.num_modems);

    if (mdm_detect_info.num_modems > 0)
        plat_data->csd = open_csd_client();
}

void *platform_init(struct audio_device *adev)
{
    char platform[PROPERTY_VALUE_MAX];
    char baseband[PROPERTY_VALUE_MAX];
    char value[PROPERTY_VALUE_MAX];
    struct platform_data *my_data = NULL;
    int retry_num = 0, snd_card_num = 0;
@@ -678,16 +697,8 @@ void *platform_init(struct audio_device *adev)
    /* Initialize ACDB ID's */
    platform_info_init();

    /* If platform is apq8084 and baseband is MDM, load CSD Client specific
     * symbols. Voice call is handled by MDM and apps processor talks to
     * MDM through CSD Client
     */
    property_get("ro.board.platform", platform, "");
    property_get("ro.baseband", baseband, "");
    if (!strncmp("apq8084", platform, sizeof("apq8084")) &&
        !strncmp("mdm", baseband, sizeof("mdm"))) {
         my_data->csd = open_csd_client();
    }
    /* load csd client */
    platform_csd_init(my_data);

    /* init usb */
    audio_extn_usb_init(adev);