diff options
author | Misael Lopez Cruz <misael.lopez@ti.com> | 2014-04-30 18:53:46 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@git.omapzoom.org> | 2014-06-03 17:39:33 -0500 |
commit | 3da8567243ec8a5d46581f9e5642a1a105471a6c (patch) | |
tree | 9fe3af101aea3721f0416d17fbf08434d7cbe0ca | |
parent | fe4561a100a8a0205d1bfab0bd85da4da03942fa (diff) | |
download | jacinto6evm-3da8567243ec8a5d46581f9e5642a1a105471a6c.tar.gz |
audio: Legacy: Use audio_route for kcontrol settings
Simplify the kcontrol settings through the audio_route
library. The control settings are now moved to a XML
audio paths file.
Change-Id: I72670523968a6646aea28e1625798b04f7a7799f
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
-rw-r--r-- | audio/Android.mk | 8 | ||||
-rw-r--r-- | audio/legacy/Android.mk | 2 | ||||
-rw-r--r-- | audio/legacy/audio_hw.c | 162 | ||||
-rw-r--r-- | audio/mixer_paths.xml (renamed from audio/multizone/dra7evm_paths.xml) | 0 | ||||
-rw-r--r-- | audio/multizone/Android.mk | 8 | ||||
-rw-r--r-- | device.mk | 2 |
6 files changed, 19 insertions, 163 deletions
diff --git a/audio/Android.mk b/audio/Android.mk index 7d6cb91..da7bcfe 100644 --- a/audio/Android.mk +++ b/audio/Android.mk @@ -14,6 +14,14 @@ LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) +LOCAL_MODULE := mixer_paths.xml +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) +LOCAL_SRC_FILES := $(LOCAL_MODULE) +include $(BUILD_PREBUILT) + # build multizone audio if the OMAP_MULTIZONE_AUDIO flag is set to true ifeq ($(OMAP_MULTIZONE_AUDIO),true) include $(CLEAR_VARS) diff --git a/audio/legacy/Android.mk b/audio/legacy/Android.mk index c50fb5b..1e6c223 100644 --- a/audio/legacy/Android.mk +++ b/audio/legacy/Android.mk @@ -33,6 +33,7 @@ LOCAL_SRC_FILES := audio_hw.c LOCAL_C_INCLUDES += \ external/tinyalsa/include \ + system/media/audio_route/include \ system/media/audio_utils/include \ system/media/audio_effects/include @@ -40,6 +41,7 @@ LOCAL_SHARED_LIBRARIES := \ liblog \ libcutils \ libtinyalsa \ + libaudioroute \ libaudioutils LOCAL_MODULE_TAGS := optional diff --git a/audio/legacy/audio_hw.c b/audio/legacy/audio_hw.c index 1ce01f5..d25fedf 100644 --- a/audio/legacy/audio_hw.c +++ b/audio/legacy/audio_hw.c @@ -33,6 +33,7 @@ #include <cutils/properties.h> #include <audio_utils/resampler.h> +#include <audio_route/audio_route.h> #include <system/audio.h> #include <hardware/hardware.h> #include <hardware/audio.h> @@ -59,7 +60,7 @@ struct j6_audio_device { struct audio_hw_device device; struct j6_stream_in *in; struct j6_stream_out *out; - struct mixer *mixer; + struct audio_route *route; audio_devices_t in_device; audio_devices_t out_device; pthread_mutex_t lock; @@ -142,148 +143,6 @@ struct pcm_config pcm_config_playback = { .avail_min = PLAYBACK_PERIOD_SIZE, }; -/* Mixer control names */ - -/* Capture */ -#define MIXER_PGA_CAPTURE_SWITCH "PGA Capture Switch" -#define MIXER_PGA_CAPTURE_VOLUME "PGA Capture Volume" - -/* Capture gain (0dB, 59.5dB) step=0.5 */ -#define CAPTURE_DB_TO_VAL(x) ((int)(2 * (float)(x))) - -/* Microphone specific */ -#define MIXER_LEFT_PGA_MIC3L_SWITCH "Left PGA Mixer Mic3L Switch" -#define MIXER_RIGHT_PGA_MIC3R_SWITCH "Right PGA Mixer Mic3R Switch" - -/* Line-In specific */ -#define MIXER_LEFT_PGA_LINE1L_SWITCH "Left PGA Mixer Line1L Switch" -#define MIXER_RIGHT_PGA_LINE1R_SWITCH "Right PGA Mixer Line1R Switch" -#define MIXER_LEFT_LINE1L_MUX "Left Line1L Mux" -#define MIXER_RIGHT_LINE1L_MUX "Right Line1L Mux" -#define MIXER_LEFT_LINE1R_MUX "Left Line1R Mux" -#define MIXER_RIGHT_LINE1R_MUX "Right Line1R Mux" -#define MIXER_LINE_IN_SINGLE_ENDED "single-ended" -#define MIXER_LINE_IN_DIFFERENTIAL "differential" - -/* Playback */ -#define MIXER_LEFT_DAC_MUX "Left DAC Mux" -#define MIXER_RIGHT_DAC_MUX "Right DAC Mux" -#define MIXER_MUX_DAC_L1 "DAC_L1" -#define MIXER_MUX_DAC_R1 "DAC_R1" -#define MIXER_PCM_PLAYBACK_VOLUME "PCM Playback Volume" - - /* Playback gain (-63.5dB, 0dB) step=0.5dB */ -#define PLAYBACK_DB_TO_VAL(x) ((int)(2 * ((float)(x) + 63.5))) - -/* Headphone specific */ -#define MIXER_HP_PLAYBACK_SWITCH "HP Playback Switch" -#define MIXER_LEFT_HP_DACL1_SWITCH "Left HP Mixer DACL1 Switch" -#define MIXER_RIGHT_HP_DACR1_SWITCH "Right HP Mixer DACR1 Switch" -#define HP_PLAYBACK_VOLUME "HP DAC Playback Volume" -#define HP_DRIVER_POWER_ON_TIME "Output Driver Power-On time" -#define HP_DRIVER_DELAY "200ms" - -/* Line-Out specific */ -#define MIXER_LINE_PLAYBACK_SWITCH "Line Playback Switch" -#define MIXER_LEFT_LINE_DACL1_SWITCH "Left Line Mixer DACL1 Switch" -#define MIXER_RIGHT_LINE_DACR1_SWITCH "Right Line Mixer DACR1 Switch" -#define LINE_PLAYBACK_VOLUME "Line DAC Playback Volume" - - /* Output stage gain (-59.0dB, 0dB) step=0.5dB */ -#define OUTPUT_DB_TO_VAL(x) ((int)(2 * ((float)(x) + 59.0))) - -struct route_setting { - char *ctl_name; - int intval; - char *strval; -}; - -#define RS_STR(ctrl, str) { .ctl_name = ctrl, .strval = str } -#define RS_INT(ctrl, val) { .ctl_name = ctrl, .intval = val } -#define RS_END { .ctl_name = NULL, .strval = NULL } - -/* These are values that never change */ -static struct route_setting rs_defaults[] = { - /* Capture: Mic */ - RS_INT(MIXER_LEFT_PGA_MIC3L_SWITCH, 1), - RS_INT(MIXER_RIGHT_PGA_MIC3R_SWITCH, 1), - RS_INT(MIXER_PGA_CAPTURE_SWITCH, 1), - RS_INT(MIXER_PGA_CAPTURE_VOLUME, CAPTURE_DB_TO_VAL(12)), /* 12dB */ - RS_STR(MIXER_LEFT_LINE1L_MUX, MIXER_LINE_IN_SINGLE_ENDED), - RS_STR(MIXER_RIGHT_LINE1L_MUX, MIXER_LINE_IN_SINGLE_ENDED), - RS_STR(MIXER_LEFT_LINE1R_MUX, MIXER_LINE_IN_SINGLE_ENDED), - RS_STR(MIXER_RIGHT_LINE1R_MUX, MIXER_LINE_IN_SINGLE_ENDED), - - /* Playback: Line-Out and Headphone */ - RS_STR(MIXER_LEFT_DAC_MUX, MIXER_MUX_DAC_L1), - RS_STR(MIXER_RIGHT_DAC_MUX, MIXER_MUX_DAC_R1), - RS_INT(MIXER_PCM_PLAYBACK_VOLUME, PLAYBACK_DB_TO_VAL(0)), /* 0dB */ - - RS_INT(MIXER_LEFT_HP_DACL1_SWITCH, 1), - RS_INT(MIXER_RIGHT_HP_DACR1_SWITCH, 1), - RS_INT(MIXER_HP_PLAYBACK_SWITCH, 1), - RS_INT(HP_PLAYBACK_VOLUME, OUTPUT_DB_TO_VAL(0)), /* 0 dB */ - RS_STR(HP_DRIVER_POWER_ON_TIME, HP_DRIVER_DELAY), - - RS_INT(MIXER_LEFT_LINE_DACL1_SWITCH, 1), - RS_INT(MIXER_RIGHT_LINE_DACR1_SWITCH, 1), - RS_INT(MIXER_LINE_PLAYBACK_SWITCH, 1), - RS_INT(LINE_PLAYBACK_VOLUME, OUTPUT_DB_TO_VAL(0)), /* 0 dB */ -}; - -/* Capture switch used for mic mute */ -static struct route_setting rs_capture[] = { - RS_INT(MIXER_PGA_CAPTURE_SWITCH, 1), - RS_END -}; - -/* - * The enable flag when 0 makes the assumption that enums are disabled by - * "Off" and integers/booleans by 0 - */ -static int set_route_by_array(struct mixer *mixer, struct route_setting *route, - int enable) -{ - struct mixer_ctl *ctl; - unsigned int i, j; - - ALOGV("set_route_by_array() route=%p %s", route, enable ? "enable" : "disable"); - - /* Go through the route array and set each value */ - i = 0; - while (route[i].ctl_name) { - ctl = mixer_get_ctl_by_name(mixer, route[i].ctl_name); - if (!ctl) { - ALOGE("set_route_by_array() failed to get control '%s'", route[i].ctl_name); - return -EINVAL; - } - - if (route[i].strval) { - ALOGV("set_route_by_array() control='%s' val='%s'", - route[i].ctl_name, enable ? route[i].strval: "Off"); - - if (enable) - mixer_ctl_set_enum_by_string(ctl, route[i].strval); - else - mixer_ctl_set_enum_by_string(ctl, "Off"); - } else { - ALOGV("set_route_by_array() control='%s' val=%d", - route[i].ctl_name, route[i].intval); - - /* This ensures multiple (i.e. stereo) values are set jointly */ - for (j = 0; j < mixer_ctl_get_num_values(ctl); j++) { - if (enable) - mixer_ctl_set_value(ctl, j, route[i].intval); - else - mixer_ctl_set_value(ctl, j, 0); - } - } - i++; - } - - return 0; -} - static int find_supported_card(void) { char name[256] = ""; @@ -924,6 +783,8 @@ static ssize_t in_read(struct audio_stream_in *stream, void* buffer, ALOGE("in_read() failed to read audio data %d", ret); usleep(read_usecs); /* limits the rate of error messages */ memset(buffer, 0, bytes); + } else if (adev->mic_mute) { + memset(buffer, 0, bytes); } pthread_mutex_unlock(&in->lock); @@ -1070,11 +931,7 @@ static int adev_set_mic_mute(struct audio_hw_device *dev, bool state) struct j6_audio_device *adev = (struct j6_audio_device *)dev; ALOGV("adev_set_mic_mute() state=%s", state ? "mute" : "unmute"); - - pthread_mutex_lock(&adev->lock); - set_route_by_array(adev->mixer, rs_capture, !state); adev->mic_mute = state; - pthread_mutex_unlock(&adev->lock); return 0; } @@ -1248,8 +1105,7 @@ static int adev_close(hw_device_t *device) ALOGI("adev_close()"); - mixer_close(adev->mixer); - adev->mixer = NULL; + audio_route_free(adev->route); free(device); return 0; @@ -1302,17 +1158,15 @@ static int adev_open(const hw_module_t* module, const char* name, adev->out_port = 0; adev->mic_mute = false; - adev->mixer = mixer_open(adev->card); - if (!adev->mixer) { + adev->route = audio_route_init(adev->card, NULL); + if (!adev->route) { + ALOGE("Unable to initialize audio routes"); free(adev); - ALOGE("Unable to open the mixer, aborting."); return -EINVAL; } *device = &adev->device.common; - set_route_by_array(adev->mixer, rs_defaults, 1); - return 0; } diff --git a/audio/multizone/dra7evm_paths.xml b/audio/mixer_paths.xml index 06419be..06419be 100644 --- a/audio/multizone/dra7evm_paths.xml +++ b/audio/mixer_paths.xml diff --git a/audio/multizone/Android.mk b/audio/multizone/Android.mk index 061e20f..bf1c4d7 100644 --- a/audio/multizone/Android.mk +++ b/audio/multizone/Android.mk @@ -23,14 +23,6 @@ LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) include $(CLEAR_VARS) -LOCAL_MODULE := dra7evm_paths.xml -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT_ETC) -LOCAL_SRC_FILES := $(LOCAL_MODULE) -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) LOCAL_MODULE := audio.primary.$(TARGET_BOARD_PLATFORM) @@ -98,7 +98,7 @@ PRODUCT_PACKAGES += audio_policy.jacinto6 PRODUCT_PACKAGES += \ audio_policy.conf \ - dra7evm_paths.xml + mixer_paths.xml PRODUCT_PACKAGES += \ tinymix \ |