aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--BoardConfigCommon.mk2
-rwxr-xr-xaudio/audio_hw.c129
-rw-r--r--bluetooth/bdroid_buildcfg.h23
-rw-r--r--common-overlay/frameworks/base/core/res/res/values/config.xml8
-rw-r--r--common-overlay/frameworks/base/core/res/res/xml/storage_list.xml11
-rw-r--r--common-overlay/packages/apps/Trebuchet/res/values/config.xml4
-rwxr-xr-xconfigs/audio_effects.conf133
-rw-r--r--fstab.espresso10
-rwxr-xr-xinit.espresso.rc30
-rw-r--r--p3100.mk2
-rwxr-xr-xp31xx-common.mk7
11 files changed, 263 insertions, 96 deletions
diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk
index a31aae0..f66c57e 100644
--- a/BoardConfigCommon.mk
+++ b/BoardConfigCommon.mk
@@ -18,6 +18,7 @@
# by BoardConfigVendor.mk
USE_CAMERA_STUB := true
+TARGET_ARCH := arm
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_CPU_SMP := true
@@ -87,6 +88,7 @@ BOARD_LEGACY_NL80211_STA_EVENTS := true
# Bluetooth
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_BCM := true
+BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/samsung/p3100/bluetooth
# Security
BOARD_USES_SECURE_SERVICES := true
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index e51856b..ca803e5 100755
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -89,8 +89,10 @@ struct espresso_audio_device {
int num_dev_cfgs;
struct mixer *mixer;
audio_mode_t mode;
- int active_devices;
- int devices;
+ int active_out_device;
+ int out_device;
+ int active_in_device;
+ int in_device;
struct pcm *pcm_modem_dl;
struct pcm *pcm_modem_ul;
int in_call;
@@ -310,26 +312,40 @@ void select_devices(struct espresso_audio_device *adev)
{
int i;
- if (adev->active_devices == adev->devices)
+ if (adev->active_out_device == adev->out_device && adev->active_in_device == adev->in_device)
return;
- ALOGV("Changing devices %x => %x\n", adev->active_devices, adev->devices);
+ ALOGV("Changing output device %x => %x\n", adev->active_out_device, adev->out_device);
+ ALOGV("Changing input device %x => %x\n", adev->active_in_device, adev->in_device);
/* Turn on new devices first so we don't glitch due to powerdown... */
for (i = 0; i < adev->num_dev_cfgs; i++)
- if ((adev->devices & adev->dev_cfgs[i].mask) &&
- !(adev->active_devices & adev->dev_cfgs[i].mask))
+ if ((adev->out_device & adev->dev_cfgs[i].mask) &&
+ !(adev->active_out_device & adev->dev_cfgs[i].mask))
+ set_route_by_array(adev->mixer, adev->dev_cfgs[i].on,
+ adev->dev_cfgs[i].on_len);
+
+ for (i = 0; i < adev->num_dev_cfgs; i++)
+ if ((adev->in_device & adev->dev_cfgs[i].mask) &&
+ !(adev->active_in_device & adev->dev_cfgs[i].mask))
set_route_by_array(adev->mixer, adev->dev_cfgs[i].on,
adev->dev_cfgs[i].on_len);
/* ...then disable old ones. */
for (i = 0; i < adev->num_dev_cfgs; i++)
- if (!(adev->devices & adev->dev_cfgs[i].mask) &&
- (adev->active_devices & adev->dev_cfgs[i].mask))
+ if (!(adev->out_device & adev->dev_cfgs[i].mask) &&
+ (adev->active_out_device & adev->dev_cfgs[i].mask))
+ set_route_by_array(adev->mixer, adev->dev_cfgs[i].off,
+ adev->dev_cfgs[i].off_len);
+
+ for (i = 0; i < adev->num_dev_cfgs; i++)
+ if (!(adev->in_device & adev->dev_cfgs[i].mask) &&
+ (adev->active_in_device & adev->dev_cfgs[i].mask))
set_route_by_array(adev->mixer, adev->dev_cfgs[i].off,
adev->dev_cfgs[i].off_len);
- adev->active_devices = adev->devices;
+ adev->active_out_device = adev->out_device;
+ adev->active_in_device = adev->in_device;
}
static int start_call(struct espresso_audio_device *adev)
@@ -337,7 +353,7 @@ static int start_call(struct espresso_audio_device *adev)
ALOGE("Opening modem PCMs");
int bt_on;
- bt_on = adev->devices & AUDIO_DEVICE_OUT_ALL_SCO;
+ bt_on = adev->out_device & AUDIO_DEVICE_OUT_ALL_SCO;
pcm_config_vx.rate = adev->wb_amr ? VX_WB_SAMPLING_RATE : VX_NB_SAMPLING_RATE;
/* Open modem PCM channels */
@@ -413,7 +429,7 @@ static void set_incall_device(struct espresso_audio_device *adev)
{
int device_type;
- switch(adev->devices & AUDIO_DEVICE_OUT_ALL) {
+ switch(adev->out_device) {
case AUDIO_DEVICE_OUT_EARPIECE:
device_type = SOUND_AUDIO_PATH_HANDSET;
break;
@@ -495,11 +511,11 @@ static void select_mode(struct espresso_audio_device *adev)
a call. This works because we're sure that the audio policy
manager will update the output device after the audio mode
change, even if the device selection did not change. */
- if ((adev->devices & AUDIO_DEVICE_OUT_ALL) == AUDIO_DEVICE_OUT_SPEAKER)
- adev->devices = AUDIO_DEVICE_OUT_EARPIECE |
- AUDIO_DEVICE_IN_BUILTIN_MIC;
- else
- adev->devices &= ~AUDIO_DEVICE_OUT_SPEAKER;
+ if (adev->out_device == AUDIO_DEVICE_OUT_SPEAKER) {
+ adev->out_device = AUDIO_DEVICE_OUT_EARPIECE;
+ adev->in_device = AUDIO_DEVICE_IN_BUILTIN_MIC & ~AUDIO_DEVICE_BIT_IN;
+ } else
+ adev->out_device &= ~AUDIO_DEVICE_OUT_SPEAKER;
select_output_device(adev);
start_call(adev);
ril_set_call_clock_sync(&adev->ril, SOUND_CLOCK_START);
@@ -529,13 +545,13 @@ static void select_output_device(struct espresso_audio_device *adev)
bool tty_volume = false;
unsigned int channel;
- headset_on = adev->devices & AUDIO_DEVICE_OUT_WIRED_HEADSET;
- headphone_on = adev->devices & AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
- speaker_on = adev->devices & AUDIO_DEVICE_OUT_SPEAKER;
- earpiece_on = adev->devices & AUDIO_DEVICE_OUT_EARPIECE;
- bt_on = adev->devices & AUDIO_DEVICE_OUT_ALL_SCO;
+ headset_on = adev->out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET;
+ headphone_on = adev->out_device & AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
+ speaker_on = adev->out_device & AUDIO_DEVICE_OUT_SPEAKER;
+ earpiece_on = adev->out_device & AUDIO_DEVICE_OUT_EARPIECE;
+ bt_on = adev->out_device & AUDIO_DEVICE_OUT_ALL_SCO;
- switch(adev->devices & AUDIO_DEVICE_OUT_ALL) {
+ switch(adev->out_device) {
case AUDIO_DEVICE_OUT_SPEAKER:
ALOGD("%s: AUDIO_DEVICE_OUT_SPEAKER", __func__);
break;
@@ -627,7 +643,7 @@ static void select_output_device(struct espresso_audio_device *adev)
static void select_input_device(struct espresso_audio_device *adev)
{
- switch(adev->devices & AUDIO_DEVICE_IN_ALL) {
+ switch(adev->in_device) {
case AUDIO_DEVICE_IN_BUILTIN_MIC:
ALOGD("%s: AUDIO_DEVICE_IN_BUILTIN_MIC", __func__);
break;
@@ -664,8 +680,7 @@ static int start_output_stream_low_latency(struct espresso_stream_out *out)
* tinyalsa.
*/
- if (adev->devices & (AUDIO_DEVICE_OUT_ALL &
- ~(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET | AUDIO_DEVICE_OUT_AUX_DIGITAL))) {
+ if (adev->out_device & ~(AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET | AUDIO_DEVICE_OUT_AUX_DIGITAL)) {
/* Something not a dock in use */
out->config[PCM_NORMAL] = pcm_config_tones;
out->config[PCM_NORMAL].rate = MM_FULL_POWER_SAMPLING_RATE;
@@ -673,7 +688,7 @@ static int start_output_stream_low_latency(struct espresso_stream_out *out)
flags, &out->config[PCM_NORMAL]);
}
- if (adev->devices & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) {
+ if (adev->out_device & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) {
/* SPDIF output in use */
out->config[PCM_SPDIF] = pcm_config_tones;
out->config[PCM_SPDIF].rate = MM_FULL_POWER_SAMPLING_RATE;
@@ -911,7 +926,7 @@ static size_t out_get_buffer_size_deep_buffer(const struct audio_stream *stream)
return size * audio_stream_frame_size((struct audio_stream *)stream);
}
-static uint32_t out_get_channels(const struct audio_stream *stream)
+static audio_channel_mask_t out_get_channels(const struct audio_stream *stream)
{
struct espresso_stream_out *out = (struct espresso_stream_out *)stream;
@@ -1009,7 +1024,7 @@ static int out_set_parameters(struct audio_stream *stream, const char *kvpairs)
val = atoi(value);
pthread_mutex_lock(&adev->lock);
pthread_mutex_lock(&out->lock);
- if (((adev->devices & AUDIO_DEVICE_OUT_ALL) != val) && (val != 0)) {
+ if (((adev->out_device) != val) && (val != 0)) {
/* this is needed only when changing device on low latency output
* as other output streams are not used for voice use cases nor
* handle duplication to HDMI or SPDIF */
@@ -1028,26 +1043,25 @@ static int out_set_parameters(struct audio_stream *stream, const char *kvpairs)
* (several hundred ms of audio can be lost: e.g beginning of a ringtone. We must understand
* the root cause in audio HAL, driver or ABE.
if (((val & AUDIO_DEVICE_OUT_AUX_DIGITAL) ^
- (adev->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL)) ||
+ (adev->out_device & AUDIO_DEVICE_OUT_AUX_DIGITAL)) ||
((val & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) ^
- (adev->devices & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) ||
- (adev->devices & (AUDIO_DEVICE_OUT_AUX_DIGITAL |
+ (adev->out_device & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) ||
+ (adev->out_device & (AUDIO_DEVICE_OUT_AUX_DIGITAL |
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)))
*/
if (((val & AUDIO_DEVICE_OUT_AUX_DIGITAL) ^
- (adev->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL)) ||
+ (adev->out_device & AUDIO_DEVICE_OUT_AUX_DIGITAL)) ||
((val & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET) ^
- (adev->devices & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) ||
- (adev->devices & (AUDIO_DEVICE_OUT_AUX_DIGITAL |
+ (adev->out_device & AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) ||
+ (adev->out_device & (AUDIO_DEVICE_OUT_AUX_DIGITAL |
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET)) ||
((val & AUDIO_DEVICE_OUT_SPEAKER) ^
- (adev->devices & AUDIO_DEVICE_OUT_SPEAKER)) ||
+ (adev->out_device & AUDIO_DEVICE_OUT_SPEAKER)) ||
(adev->mode == AUDIO_MODE_IN_CALL))
do_output_standby(out);
}
if (out != adev->outputs[OUTPUT_HDMI]) {
- adev->devices &= ~AUDIO_DEVICE_OUT_ALL;
- adev->devices |= val;
+ adev->out_device = val;
select_output_device(adev);
}
}
@@ -1338,8 +1352,7 @@ static int start_input_stream(struct espresso_stream_in *in)
adev->active_input = in;
if (adev->mode != AUDIO_MODE_IN_CALL) {
- adev->devices &= ~AUDIO_DEVICE_IN_ALL;
- adev->devices |= in->device;
+ adev->in_device = in->device;
select_input_device(adev);
}
@@ -1367,7 +1380,7 @@ static int start_input_stream(struct espresso_stream_in *in)
if (in->need_echo_reference && in->echo_reference == NULL)
in->echo_reference = get_echo_reference(adev,
AUDIO_FORMAT_PCM_16_BIT,
- in->config.channels,
+ popcount(in->main_channels),
in->requested_rate);
/* this assumes routing is done previously */
@@ -1412,7 +1425,7 @@ static size_t in_get_buffer_size(const struct audio_stream *stream)
popcount(in->main_channels));
}
-static uint32_t in_get_channels(const struct audio_stream *stream)
+static audio_channel_mask_t in_get_channels(const struct audio_stream *stream)
{
struct espresso_stream_in *in = (struct espresso_stream_in *)stream;
@@ -1440,7 +1453,7 @@ static int do_input_standby(struct espresso_stream_in *in)
adev->active_input = 0;
if (adev->mode != AUDIO_MODE_IN_CALL) {
- adev->devices &= ~AUDIO_DEVICE_IN_ALL;
+ adev->in_device = AUDIO_DEVICE_NONE;
select_input_device(adev);
}
@@ -1501,7 +1514,7 @@ static int in_set_parameters(struct audio_stream *stream, const char *kvpairs)
ret = str_parms_get_str(parms, AUDIO_PARAMETER_STREAM_ROUTING, value, sizeof(value));
if (ret >= 0) {
- val = atoi(value);
+ val = atoi(value) & ~AUDIO_DEVICE_BIT_IN;
if ((in->device != val) && (val != 0)) {
in->device = val;
do_standby = true;
@@ -2403,8 +2416,7 @@ static int adev_open_output_stream(struct audio_hw_device *dev,
/* FIXME: when we support multiple output devices, we will want to
* do the following:
- * adev->devices &= ~AUDIO_DEVICE_OUT_ALL;
- * adev->devices |= out->device;
+ * adev->out_device = out->device;
* select_output_device(adev);
* This is because out_set_parameters() with a route is not
* guaranteed to be called after an output stream is opened. */
@@ -2513,11 +2525,13 @@ static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
{
struct espresso_audio_device *adev = (struct espresso_audio_device *)dev;
+ pthread_mutex_lock(&adev->lock);
adev->voice_volume = volume;
if (adev->mode == AUDIO_MODE_IN_CALL)
ril_set_call_volume(&adev->ril, SOUND_TYPE_VOICE, volume);
+ pthread_mutex_unlock(&adev->lock);
return 0;
}
@@ -2640,7 +2654,7 @@ static int adev_open_input_stream(struct audio_hw_device *dev,
in->dev = ladev;
in->standby = 1;
- in->device = devices;
+ in->device = devices & ~AUDIO_DEVICE_BIT_IN;
*stream_in = &in->stream;
return 0;
@@ -2697,23 +2711,6 @@ static int adev_close(hw_device_t *device)
return 0;
}
-static uint32_t adev_get_supported_devices(const struct audio_hw_device *dev)
-{
- return (/* OUT */
- AUDIO_DEVICE_OUT_EARPIECE |
- AUDIO_DEVICE_OUT_SPEAKER |
- AUDIO_DEVICE_OUT_WIRED_HEADSET |
- AUDIO_DEVICE_OUT_WIRED_HEADPHONE |
- AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |
- AUDIO_DEVICE_OUT_ALL_SCO |
- AUDIO_DEVICE_OUT_DEFAULT |
- /* IN */
- AUDIO_DEVICE_IN_BUILTIN_MIC |
- AUDIO_DEVICE_IN_WIRED_HEADSET |
- AUDIO_DEVICE_IN_ALL_SCO |
- AUDIO_DEVICE_IN_DEFAULT);
-}
-
struct config_parse_state {
struct espresso_audio_device *adev;
struct espresso_dev_cfg *dev;
@@ -2950,11 +2947,10 @@ static int adev_open(const hw_module_t* module, const char* name,
return -ENOMEM;
adev->hw_device.common.tag = HARDWARE_DEVICE_TAG;
- adev->hw_device.common.version = AUDIO_DEVICE_API_VERSION_1_0;
+ adev->hw_device.common.version = AUDIO_DEVICE_API_VERSION_2_0;
adev->hw_device.common.module = (struct hw_module_t *) module;
adev->hw_device.common.close = adev_close;
- adev->hw_device.get_supported_devices = adev_get_supported_devices;
adev->hw_device.init_check = adev_init_check;
adev->hw_device.set_voice_volume = adev_set_voice_volume;
adev->hw_device.set_master_volume = adev_set_master_volume;
@@ -2984,7 +2980,8 @@ static int adev_open(const hw_module_t* module, const char* name,
/* Set the default route before the PCM stream is opened */
pthread_mutex_init(&adev->lock, NULL);
adev->mode = AUDIO_MODE_NORMAL;
- adev->devices = AUDIO_DEVICE_OUT_SPEAKER | AUDIO_DEVICE_IN_BUILTIN_MIC;
+ adev->out_device = AUDIO_DEVICE_OUT_SPEAKER;
+ adev->in_device = AUDIO_DEVICE_IN_BUILTIN_MIC & ~AUDIO_DEVICE_BIT_IN;
select_devices(adev);
adev->pcm_modem_dl = NULL;
diff --git a/bluetooth/bdroid_buildcfg.h b/bluetooth/bdroid_buildcfg.h
new file mode 100644
index 0000000..cd53f18
--- /dev/null
+++ b/bluetooth/bdroid_buildcfg.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ * Copyright (C) 2012 The CyanogenMod Project <http://www.cyanogenmod.org>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _BDROID_BUILDCFG_H
+#define _BDROID_BUILDCFG_H
+
+#define BTM_DEF_LOCAL_NAME "Samsung Galaxy Tab 2"
+
+#endif
diff --git a/common-overlay/frameworks/base/core/res/res/values/config.xml b/common-overlay/frameworks/base/core/res/res/values/config.xml
index 07331c2..c3f5490 100644
--- a/common-overlay/frameworks/base/core/res/res/values/config.xml
+++ b/common-overlay/frameworks/base/core/res/res/values/config.xml
@@ -187,11 +187,11 @@
<!-- Boolean indicating whether the wifi chipset has background scan support -->
<bool translatable="false" name="config_wifi_background_scan_support">true</bool>
- <!-- Package name providing network location support. -->
- <string name="config_networkLocationProviderPackageName" translatable="false">com.google.android.location</string>
+ <!-- Package name providing network location support.
+ <string name="config_networkLocationProviderPackageName" translatable="false">com.google.android.location</string>-->
- <!-- Package name providing geocoder API support. -->
- <string name="config_geocodeProviderPackageName" translatable="false">com.google.android.location</string>
+ <!-- Package name providing geocoder API support.
+ <string name="config_geocodeProviderPackageName" translatable="false">com.google.android.location</string> -->
<!-- Vibrator pattern for feedback about a long screen/key press -->
<integer-array name="config_longPressVibePattern">
diff --git a/common-overlay/frameworks/base/core/res/res/xml/storage_list.xml b/common-overlay/frameworks/base/core/res/res/xml/storage_list.xml
index 30c5bd6..383bace 100644
--- a/common-overlay/frameworks/base/core/res/res/xml/storage_list.xml
+++ b/common-overlay/frameworks/base/core/res/res/xml/storage_list.xml
@@ -33,12 +33,11 @@
-->
<StorageList xmlns:android="http://schemas.android.com/apk/res/android">
- <storage android:mountPoint="/storage/sdcard0"
- android:storageDescription="@string/storage_internal"
- android:primary="true"
- android:emulated="true"
- android:mtpReserve="100" />
-
+ <!-- internal emulated storage -->
+ <storage
+ android:storageDescription="@string/storage_internal"
+ android:emulated="true"
+ android:mtpReserve="100" />
<storage android:mountPoint="/storage/sdcard1"
android:storageDescription="@string/storage_sd_card"
android:primary="false"
diff --git a/common-overlay/packages/apps/Trebuchet/res/values/config.xml b/common-overlay/packages/apps/Trebuchet/res/values/config.xml
index 36fb51d..f109fa1 100644
--- a/common-overlay/packages/apps/Trebuchet/res/values/config.xml
+++ b/common-overlay/packages/apps/Trebuchet/res/values/config.xml
@@ -2,6 +2,6 @@
<bool name="is_large_screen">true</bool>
<bool name="config_cyanogenmod">true</bool>
- <!-- Allow tablets to set grid size in settings, false disables -->
- <bool name="config_workspaceTabletGrid">true</bool>
+ <!-- Allow tablets to set grid size in settings, false disables
+ <bool name="config_workspaceTabletGrid">true</bool>-->
</resources>
diff --git a/configs/audio_effects.conf b/configs/audio_effects.conf
new file mode 100755
index 0000000..d681c69
--- /dev/null
+++ b/configs/audio_effects.conf
@@ -0,0 +1,133 @@
+# List of effect libraries to load. Each library element must contain a "path" element
+# giving the full path of the library .so file.
+# libraries {
+# <lib name> {
+# path <lib path>
+# }
+# }
+libraries {
+ bundle {
+ path /system/lib/soundfx/libbundlewrapper.so
+ }
+ reverb {
+ path /system/lib/soundfx/libreverbwrapper.so
+ }
+ visualizer {
+ path /system/lib/soundfx/libvisualizer.so
+ }
+ pre_processing {
+ path /system/lib/soundfx/libaudiopreprocessing.so
+ }
+ downmix {
+ path /system/lib/soundfx/libdownmix.so
+ }
+}
+
+# list of effects to load. Each effect element must contain a "library" and a "uuid" element.
+# The value of the "library" element must correspond to the name of one library element in the
+# "libraries" element.
+# The name of the effect element is indicative, only the value of the "uuid" element
+# designates the effect.
+# The uuid is the implementation specific UUID as specified by the effect vendor. This is not the
+# generic effect type UUID.
+# effects {
+# <fx name> {
+# library <lib name>
+# uuid <effect uuid>
+# }
+# ...
+# }
+
+effects {
+ bassboost {
+ library bundle
+ uuid 8631f300-72e2-11df-b57e-0002a5d5c51b
+ }
+ virtualizer {
+ library bundle
+ uuid 1d4033c0-8557-11df-9f2d-0002a5d5c51b
+ }
+ equalizer {
+ library bundle
+ uuid ce772f20-847d-11df-bb17-0002a5d5c51b
+ }
+ volume {
+ library bundle
+ uuid 119341a0-8469-11df-81f9-0002a5d5c51b
+ }
+ reverb_env_aux {
+ library reverb
+ uuid 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
+ }
+ reverb_env_ins {
+ library reverb
+ uuid c7a511a0-a3bb-11df-860e-0002a5d5c51b
+ }
+ reverb_pre_aux {
+ library reverb
+ uuid f29a1400-a3bb-11df-8ddc-0002a5d5c51b
+ }
+ reverb_pre_ins {
+ library reverb
+ uuid 172cdf00-a3bc-11df-a72f-0002a5d5c51b
+ }
+ visualizer {
+ library visualizer
+ uuid d069d9e0-8329-11df-9168-0002a5d5c51b
+ }
+ downmix {
+ library downmix
+ uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f
+ }
+ agc {
+ library pre_processing
+ uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b
+ }
+ aec {
+ library pre_processing
+ uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b
+ }
+ ns {
+ library pre_processing
+ uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b
+ }
+}
+# Audio preprocessor configurations.
+# The pre processor configuration consists in a list of elements each describing
+# pre processor settings for a given input source. Valid input source names are:
+# "mic", "camcorder", "voice_recognition", "voice_communication"
+# Each input source element contains a list of effects elements. The name of the effect
+# element must be the name of one of the effects in the "effects" list of the file.
+# Each effect element may optionally contain a list of parameters and their
+# default value to apply when the pre processor effect is created.
+# A parameter is defined by a "param" element and a "value" element. Each of these elements
+# consists in one or more elements specifying a type followed by a value.
+# The types defined are: "int", "short", "float", "bool" and "string"
+# When both "param" and "value" are a single int, a simple form is allowed where just
+# the param and value pair is present in the parameter description
+# pre_processing {
+# <input source name> {
+# <fx name> {
+# <param 1 name> {
+# param {
+# int|short|float|bool|string <value>
+# [ int|short|float|bool|string <value> ]
+# ...
+# }
+# value {
+# int|short|float|bool|string <value>
+# [ int|short|float|bool|string <value> ]
+# ...
+# }
+# }
+# <param 2 name > {<param> <value>}
+# ...
+# }
+# ...
+# }
+# ...
+# }
+
+#
+# TODO: add default audio pre processor configurations after debug and tuning phase
+#
diff --git a/fstab.espresso b/fstab.espresso
new file mode 100644
index 0000000..47a3ffc
--- /dev/null
+++ b/fstab.espresso
@@ -0,0 +1,10 @@
+# Android fstab file.
+#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+# The filesystem that contains the filesystem checker binary (typically /system) cannot
+# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+
+
+/dev/block/platform/omap/omap_hsmmc.1/by-name/FACTORYFS /system ext4 ro,barrier=1 wait
+/dev/block/platform/omap/omap_hsmmc.1/by-name/EFS /efs ext4 nosuid,nodev,barrier=1 wait,check
+/dev/block/platform/omap/omap_hsmmc.1/by-name/DATAFS /data ext4 noatime,nosuid,nodev,barrier=1,discard,noauto_da_alloc,journal_async_commit wait,check,encryptable=footer
+/dev/block/platform/omap/omap_hsmmc.1/by-name/CACHE /cache ext4 noatime,nosuid,nodev,barrier=1,discard,noauto_da_alloc,journal_async_commit wait,check \ No newline at end of file
diff --git a/init.espresso.rc b/init.espresso.rc
index 86ff9b1..dd2b67b 100755
--- a/init.espresso.rc
+++ b/init.espresso.rc
@@ -1,22 +1,24 @@
import init.espresso.usb.rc
+on init
+ mkdir /mnt/shell/emulated 0700 shell shell
+ mkdir /storage 0550 system sdcard_r
+ mkdir /storage/emulated 0555 root root
-on early-init
- export EXTERNAL_STORAGE /storage/sdcard0
+ export EXTERNAL_STORAGE /storage/emulated/legacy
export SECONDARY_STORAGE /storage/sdcard1
- mkdir /storage 0050 system sdcard_r
- mkdir /storage/sdcard0 0000 system system
- mkdir /storage/sdcard1 0775 system system
- mkdir /storage/usbdisk0 0775 system system
+ export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
+ export EMULATED_STORAGE_TARGET /storage/emulated
# for backwards compatibility
- symlink /storage/sdcard0 /sdcard
- symlink /storage/sdcard0 /mnt/sdcard
+ symlink /storage/emulated/legacy /sdcard
+ symlink /storage/emulated/legacy /mnt/sdcard
+ symlink /storage/emulated/legacy /storage/sdcard0
+ symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /storage/sdcard1 /extSdCard
symlink /storage/sdcard1 /mnt/extSdCard
symlink /storage/usbdisk0 /usbdisk0
symlink /storage/usbdisk0 /mnt/usbdisk0
-on init
# Vibetonz
export VIBE_PIPE_PATH /dev/pipes
mkdir /dev/pipes 0771 shell shell
@@ -35,11 +37,7 @@ loglevel 7
on fs
mkdir /efs
- mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/FACTORYFS /system wait rw
- mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/FACTORYFS /system ro remount
- mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/DATAFS /data wait noatime nosuid nodev crypt discard,noauto_da_alloc
- mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/CACHE /cache wait noatime nosuid nodev nomblk_io_submit,errors=panic
- mount ext4 /dev/block/platform/omap/omap_hsmmc.1/by-name/EFS /efs wait rw
+ mount_all fstab.espresso
chown radio system /efs
chmod 0775 /efs
@@ -288,8 +286,8 @@ service geomagneticd /system/bin/geomagneticd
# create virtual SD card at /storage/sdcard0, based on the /data/media directory
# daemon will drop to user/group system/media_rw after initializing
# underlying files in /data/media will be created with user and group media_rw (1023)
-service sdcard /system/bin/sdcard /data/media 1023 1023
- class main
+service sdcard /system/bin/sdcard /data/media /mnt/shell/emulated 1023 1023
+ class late_start
service p2p_supplicant /system/bin/wpa_supplicant \
-Dnl80211 -iwlan0 -puse_p2p_group_interface=1 -c/data/misc/wifi/wpa_supplicant.conf -e/data/misc/wifi/entropy.bin
diff --git a/p3100.mk b/p3100.mk
index 422361a..1cbd084 100644
--- a/p3100.mk
+++ b/p3100.mk
@@ -31,7 +31,7 @@ PRODUCT_PACKAGES += \
# RIL
PRODUCT_PROPERTY_OVERRIDES += \
- ro.telephony.ril_class=Smdk4210RIL \
+ ro.telephony.ril_class=SamsungExynos4RIL \
mobiledata.interfaces=pdp0,wlan0,gprs,ppp0
# These are the hardware-specific features
diff --git a/p31xx-common.mk b/p31xx-common.mk
index b2a70f7..a223f1a 100755
--- a/p31xx-common.mk
+++ b/p31xx-common.mk
@@ -32,12 +32,17 @@ PRODUCT_LOCALES += mdpi
PRODUCT_COPY_FILES := \
$(LOCAL_PATH)/init.espresso.usb.rc:root/init.espresso.usb.rc \
$(LOCAL_PATH)/init.espresso.rc:root/init.espresso.rc \
- $(LOCAL_PATH)/ueventd.espresso.rc:root/ueventd.espresso.rc
+ $(LOCAL_PATH)/ueventd.espresso.rc:root/ueventd.espresso.rc \
+ $(LOCAL_PATH)/fstab.espresso:root/fstab.espresso
# Vold
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/vold.fstab:system/etc/vold.fstab
+# Audio
+PRODUCT_COPY_FILES += \
+ $(LOCAL_PATH)/configs/audio_effects.conf:system/etc/audio_effects.conf
+
# GPS
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/gps.conf:system/etc/gps.conf \