From d13e9d2719f0a36caf8331e98ddc1f5fa4184df6 Mon Sep 17 00:00:00 2001 From: Shareef Ali Date: Fri, 23 Nov 2012 22:14:09 -0500 Subject: p3xxx: 4.2ified * updates to sdcard * disables overlay * updates audio hal Change-Id: I03030c6faa13c6c999941b7992272fc13de67e58 --- BoardConfigCommon.mk | 2 + audio/audio_hw.c | 129 ++++++++++---------- bluetooth/bdroid_buildcfg.h | 23 ++++ .../frameworks/base/core/res/res/values/config.xml | 8 +- .../base/core/res/res/xml/storage_list.xml | 11 +- .../packages/apps/Trebuchet/res/values/config.xml | 4 +- configs/audio_effects.conf | 133 +++++++++++++++++++++ fstab.espresso | 10 ++ init.espresso.rc | 30 +++-- p3100.mk | 2 +- p31xx-common.mk | 7 +- 11 files changed, 263 insertions(+), 96 deletions(-) create mode 100644 bluetooth/bdroid_buildcfg.h create mode 100755 configs/audio_effects.conf create mode 100644 fstab.espresso 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 + * + * 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 @@ true - - com.google.android.location + - - com.google.android.location + 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 @@ --> - - + + true true - - true + 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 { +# { +# 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 { +# { +# library +# 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 { +# { +# { +# { +# param { +# int|short|float|bool|string +# [ int|short|float|bool|string ] +# ... +# } +# value { +# int|short|float|bool|string +# [ int|short|float|bool|string ] +# ... +# } +# } +# { } +# ... +# } +# ... +# } +# ... +# } + +# +# 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. +# +# 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 \ -- cgit v1.1