Loading hal/msm8916/platform.c +37 −4 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ struct audio_block_header /* Audio calibration related functions */ typedef void (*acdb_deallocate_t)(); typedef int (*acdb_init_t)(); typedef int (*acdb_init_t)(char *); typedef void (*acdb_send_audio_cal_t)(int, int); typedef void (*acdb_send_voice_cal_t)(int, int); typedef int (*acdb_reload_vocvoltable_t)(int); Loading Loading @@ -416,6 +416,13 @@ static struct csd_data *open_csd_client() __func__, dlerror()); goto error; } csd->enable_device_config = (enable_device_config_t)dlsym(csd->csd_client, "csd_client_enable_device_config"); if (csd->enable_device_config == NULL) { ALOGE("%s: dlsym error %s for csd_client_enable_device_config", __func__, dlerror()); goto error; } csd->enable_device = (enable_device_t)dlsym(csd->csd_client, "csd_client_enable_device"); if (csd->enable_device == NULL) { Loading Loading @@ -643,11 +650,11 @@ void *platform_init(struct audio_device *adev) __func__, LIB_ACDB_LOADER); my_data->acdb_init = (acdb_init_t)dlsym(my_data->acdb_handle, "acdb_loader_init_ACDB"); "acdb_loader_init_v2"); if (my_data->acdb_init == NULL) ALOGE("%s: dlsym error %s for acdb_loader_init_ACDB", __func__, dlerror()); ALOGE("%s: dlsym error %s for acdb_loader_init_v2", __func__, dlerror()); else my_data->acdb_init(); my_data->acdb_init(snd_card_name); } /* Initialize ACDB ID's */ Loading Loading @@ -819,6 +826,32 @@ int platform_switch_voice_call_device_pre(void *platform) } return ret; } int platform_switch_voice_call_enable_device_config(void *platform, snd_device_t out_snd_device, snd_device_t in_snd_device) { struct platform_data *my_data = (struct platform_data *)platform; int acdb_rx_id, acdb_tx_id; int ret = 0; acdb_rx_id = acdb_device_table[out_snd_device]; acdb_tx_id = acdb_device_table[in_snd_device]; if (my_data->csd != NULL) { if (acdb_rx_id > 0 && acdb_tx_id > 0) { ret = my_data->csd->enable_device_config(acdb_rx_id, acdb_tx_id); if (ret < 0) { ALOGE("%s: csd_enable_device_config, failed, error %d", __func__, ret); } } else { ALOGE("%s: Incorrect ACDB IDs (rx: %d tx: %d)", __func__, acdb_rx_id, acdb_tx_id); } } return ret; } int platform_switch_voice_call_device_post(void *platform, snd_device_t out_snd_device, Loading hal/msm8916/platform.h +2 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,7 @@ enum { typedef int (*init_t)(); typedef int (*deinit_t)(); typedef int (*disable_device_t)(); typedef int (*enable_device_config_t)(int, int); typedef int (*enable_device_t)(int, int, uint32_t); typedef int (*volume_t)(uint32_t, int); typedef int (*mic_mute_t)(uint32_t, int); Loading @@ -209,6 +210,7 @@ struct csd_data { init_t init; deinit_t deinit; disable_device_t disable_device; enable_device_config_t enable_device_config; enable_device_t enable_device; volume_t volume; mic_mute_t mic_mute; Loading Loading
hal/msm8916/platform.c +37 −4 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ struct audio_block_header /* Audio calibration related functions */ typedef void (*acdb_deallocate_t)(); typedef int (*acdb_init_t)(); typedef int (*acdb_init_t)(char *); typedef void (*acdb_send_audio_cal_t)(int, int); typedef void (*acdb_send_voice_cal_t)(int, int); typedef int (*acdb_reload_vocvoltable_t)(int); Loading Loading @@ -416,6 +416,13 @@ static struct csd_data *open_csd_client() __func__, dlerror()); goto error; } csd->enable_device_config = (enable_device_config_t)dlsym(csd->csd_client, "csd_client_enable_device_config"); if (csd->enable_device_config == NULL) { ALOGE("%s: dlsym error %s for csd_client_enable_device_config", __func__, dlerror()); goto error; } csd->enable_device = (enable_device_t)dlsym(csd->csd_client, "csd_client_enable_device"); if (csd->enable_device == NULL) { Loading Loading @@ -643,11 +650,11 @@ void *platform_init(struct audio_device *adev) __func__, LIB_ACDB_LOADER); my_data->acdb_init = (acdb_init_t)dlsym(my_data->acdb_handle, "acdb_loader_init_ACDB"); "acdb_loader_init_v2"); if (my_data->acdb_init == NULL) ALOGE("%s: dlsym error %s for acdb_loader_init_ACDB", __func__, dlerror()); ALOGE("%s: dlsym error %s for acdb_loader_init_v2", __func__, dlerror()); else my_data->acdb_init(); my_data->acdb_init(snd_card_name); } /* Initialize ACDB ID's */ Loading Loading @@ -819,6 +826,32 @@ int platform_switch_voice_call_device_pre(void *platform) } return ret; } int platform_switch_voice_call_enable_device_config(void *platform, snd_device_t out_snd_device, snd_device_t in_snd_device) { struct platform_data *my_data = (struct platform_data *)platform; int acdb_rx_id, acdb_tx_id; int ret = 0; acdb_rx_id = acdb_device_table[out_snd_device]; acdb_tx_id = acdb_device_table[in_snd_device]; if (my_data->csd != NULL) { if (acdb_rx_id > 0 && acdb_tx_id > 0) { ret = my_data->csd->enable_device_config(acdb_rx_id, acdb_tx_id); if (ret < 0) { ALOGE("%s: csd_enable_device_config, failed, error %d", __func__, ret); } } else { ALOGE("%s: Incorrect ACDB IDs (rx: %d tx: %d)", __func__, acdb_rx_id, acdb_tx_id); } } return ret; } int platform_switch_voice_call_device_post(void *platform, snd_device_t out_snd_device, Loading
hal/msm8916/platform.h +2 −0 Original line number Diff line number Diff line Loading @@ -193,6 +193,7 @@ enum { typedef int (*init_t)(); typedef int (*deinit_t)(); typedef int (*disable_device_t)(); typedef int (*enable_device_config_t)(int, int); typedef int (*enable_device_t)(int, int, uint32_t); typedef int (*volume_t)(uint32_t, int); typedef int (*mic_mute_t)(uint32_t, int); Loading @@ -209,6 +210,7 @@ struct csd_data { init_t init; deinit_t deinit; disable_device_t disable_device; enable_device_config_t enable_device_config; enable_device_t enable_device; volume_t volume; mic_mute_t mic_mute; Loading