summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--BoardConfig.mk5
-rw-r--r--audio/audio_hw.c133
-rw-r--r--bluetooth/bdroid_buildcfg.h22
-rw-r--r--device.mk4
-rw-r--r--dumpstate/dumpstate.c1
-rwxr-xr-xinit.tuna.rc36
-rw-r--r--kernelbin4143200 -> 4148132 bytes
-rw-r--r--overlay/frameworks/base/core/res/res/values/config.xml10
-rw-r--r--overlay/packages/apps/Settings/res/values-cs/arrays.xml12
-rw-r--r--overlay/packages/apps/Settings/res/values-fa/arrays.xml12
-rw-r--r--overlay/packages/apps/Settings/res/values-nb/arrays.xml8
-rw-r--r--releasetools.py2
12 files changed, 127 insertions, 118 deletions
diff --git a/BoardConfig.mk b/BoardConfig.mk
index 6df76b3..b07c668 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -21,6 +21,10 @@ USE_CAMERA_STUB := true
# Use the non-open-source parts, if they're present
-include vendor/samsung/tuna/BoardConfigVendor.mk
+# Default values, if not overridden else where.
+TARGET_BOARD_INFO_FILE ?= device/samsung/tuna/board-info.txt
+BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR ?= device/samsung/tuna/bluetooth
+
TARGET_CPU_ABI := armeabi-v7a
TARGET_CPU_ABI2 := armeabi
TARGET_CPU_SMP := true
@@ -36,7 +40,6 @@ BOARD_KERNEL_BASE := 0x80000000
TARGET_NO_RADIOIMAGE := true
TARGET_BOARD_PLATFORM := omap4
TARGET_BOOTLOADER_BOARD_NAME := tuna
-TARGET_BOARD_INFO_FILE ?= device/samsung/tuna/board-info.txt
BOARD_EGL_CFG := device/samsung/tuna/egl.cfg
BOARD_CREATE_TUNA_HDCP_KEYS_SYMLINK := true
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index 74f2383..4206893 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -127,7 +127,7 @@
/* #define to use mmap no-irq mode for playback, #undef for non-mmap irq mode */
#undef PLAYBACK_MMAP // was #define
/* short period (aka low latency) in milliseconds */
-#define SHORT_PERIOD_MS 4 // was 22
+#define SHORT_PERIOD_MS 3 // was 22
/* deep buffer short period (screen on) in milliseconds */
#define DEEP_BUFFER_SHORT_PERIOD_MS 22
/* deep buffer long period (screen off) in milliseconds */
@@ -180,6 +180,11 @@
*/
#ifdef PLAYBACK_MMAP
#define PLAYBACK_SHORT_PERIOD_COUNT 4
+/* If sample rate converter is required, then use triple-buffering to
+ * help mask the variance in cycle times. Otherwise use double-buffering.
+ */
+#elif DEFAULT_OUT_SAMPLING_RATE != MM_FULL_POWER_SAMPLING_RATE
+#define PLAYBACK_SHORT_PERIOD_COUNT 3
#else
#define PLAYBACK_SHORT_PERIOD_COUNT 2
#endif
@@ -297,6 +302,7 @@ enum tty_modes {
TTY_MODE_FULL
};
+/* deep buffer */
struct pcm_config pcm_config_mm = {
.channels = 2,
.rate = MM_FULL_POWER_SAMPLING_RATE,
@@ -307,6 +313,7 @@ struct pcm_config pcm_config_mm = {
.avail_min = DEEP_BUFFER_LONG_PERIOD_SIZE,
};
+/* low latency */
struct pcm_config pcm_config_tones = {
.channels = 2,
.rate = MM_FULL_POWER_SAMPLING_RATE,
@@ -638,7 +645,8 @@ struct tuna_audio_device {
struct mixer *mixer;
struct mixer_ctls mixer_ctls;
audio_mode_t mode;
- int devices;
+ int out_device;
+ int in_device;
struct pcm *pcm_modem_dl;
struct pcm *pcm_modem_ul;
int in_call;
@@ -868,7 +876,7 @@ static void end_call(struct tuna_audio_device *adev)
static void set_eq_filter(struct tuna_audio_device *adev)
{
/* DL1_EQ can't be used for bt */
- int dl1_eq_applicable = adev->devices & (AUDIO_DEVICE_OUT_WIRED_HEADSET |
+ int dl1_eq_applicable = adev->out_device & (AUDIO_DEVICE_OUT_WIRED_HEADSET |
AUDIO_DEVICE_OUT_WIRED_HEADPHONE | AUDIO_DEVICE_OUT_EARPIECE);
/* 4Khz LPF is used only in NB-AMR voicecall */
@@ -901,7 +909,7 @@ static void set_incall_device(struct tuna_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;
@@ -990,8 +998,8 @@ static void set_output_volumes(struct tuna_audio_device *adev, bool tty_volume)
int headset_volume;
int earpiece_volume;
bool toro = adev->device_is_toro;
- int headphone_on = adev->devices & AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
- int speaker_on = adev->devices & AUDIO_DEVICE_OUT_SPEAKER;
+ int headphone_on = adev->out_device & AUDIO_DEVICE_OUT_WIRED_HEADPHONE;
+ int speaker_on = adev->out_device & AUDIO_DEVICE_OUT_SPEAKER;
int speaker_volume_overrange = MIXER_ABE_GAIN_0DB;
int speaker_max_db =
DB_FROM_SPEAKER_VOLUME(mixer_ctl_get_range_max(adev->mixer_ctls.speaker_volume));
@@ -1042,7 +1050,7 @@ static void set_output_volumes(struct tuna_audio_device *adev, bool tty_volume)
*/
if (headphone_on)
dl1_volume_correction = normal_headphone_volume - headset_volume;
- else if (adev->devices & AUDIO_DEVICE_OUT_WIRED_HEADSET)
+ else if (adev->out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET)
dl1_volume_correction = normal_headset_volume - headset_volume;
else
dl1_volume_correction = normal_earpiece_volume - earpiece_volume;
@@ -1131,18 +1139,18 @@ static void select_mode(struct tuna_audio_device *adev)
after the ringtone is played, but doesn't cause a route
change if a headset or bt device is already connected. If
speaker is not the only thing active, just remove it from
- the route. We'll assume it'll never be used initally during
+ the route. We'll assume it'll never be used initially during
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);
- adev_set_voice_volume(&adev->hw_device, adev->voice_volume);
+ ril_set_call_volume(&adev->ril, SOUND_TYPE_VOICE, adev->voice_volume);
adev->in_call = 1;
}
} else {
@@ -1179,11 +1187,11 @@ static void select_output_device(struct tuna_audio_device *adev)
channel, 0);
}
- 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;
/* force rx path according to TTY mode when in call */
if (adev->mode == AUDIO_MODE_IN_CALL && !bt_on) {
@@ -1208,7 +1216,7 @@ static void select_output_device(struct tuna_audio_device *adev)
default:
/* force speaker on when in call and HDMI or S/PDIF is selected
* as voice DL audio cannot be routed there by ABE */
- if (adev->devices &
+ if (adev->out_device &
(AUDIO_DEVICE_OUT_AUX_DIGITAL |
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET))
speaker_on = 1;
@@ -1308,18 +1316,18 @@ static void select_input_device(struct tuna_audio_device *adev)
int headset_on = 0;
int main_mic_on = 0;
int sub_mic_on = 0;
- int bt_on = adev->devices & AUDIO_DEVICE_IN_ALL_SCO;
+ int bt_on = adev->in_device & AUDIO_DEVICE_IN_ALL_SCO;
if (!bt_on) {
if ((adev->mode != AUDIO_MODE_IN_CALL) && (adev->active_input != 0)) {
/* sub mic is used for camcorder or VoIP on speaker phone */
sub_mic_on = (adev->active_input->source == AUDIO_SOURCE_CAMCORDER) ||
- ((adev->devices & AUDIO_DEVICE_OUT_SPEAKER) &&
+ ((adev->out_device & AUDIO_DEVICE_OUT_SPEAKER) &&
(adev->active_input->source == AUDIO_SOURCE_VOICE_COMMUNICATION));
}
if (!sub_mic_on) {
- headset_on = adev->devices & AUDIO_DEVICE_IN_WIRED_HEADSET;
- main_mic_on = adev->devices & AUDIO_DEVICE_IN_BUILTIN_MIC;
+ headset_on = adev->in_device & AUDIO_DEVICE_IN_WIRED_HEADSET;
+ main_mic_on = adev->in_device & AUDIO_DEVICE_IN_BUILTIN_MIC;
}
}
@@ -1388,8 +1396,7 @@ static int start_output_stream_low_latency(struct tuna_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;
@@ -1397,7 +1404,7 @@ static int start_output_stream_low_latency(struct tuna_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;
@@ -1406,7 +1413,7 @@ static int start_output_stream_low_latency(struct tuna_stream_out *out)
}
/* priority is given to multichannel HDMI output */
- if ((adev->devices & AUDIO_DEVICE_OUT_AUX_DIGITAL) &&
+ if ((adev->out_device & AUDIO_DEVICE_OUT_AUX_DIGITAL) &&
(adev->outputs[OUTPUT_HDMI] == NULL || adev->outputs[OUTPUT_HDMI]->standby)) {
/* HDMI output in use */
out->config[PCM_HDMI] = pcm_config_tones;
@@ -1681,7 +1688,7 @@ static size_t out_get_buffer_size_hdmi(const struct audio_stream *stream)
return HDMI_MULTI_PERIOD_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 tuna_stream_out *out = (struct tuna_stream_out *)stream;
@@ -1785,7 +1792,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 */
@@ -1804,26 +1811,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);
}
}
@@ -1871,7 +1877,7 @@ static char * out_get_parameters(const struct audio_stream *stream, const char *
i++;
}
str_parms_add_str(reply, AUDIO_PARAMETER_STREAM_SUP_CHANNELS, value);
- str = strdup(str_parms_to_str(reply));
+ str = str_parms_to_str(reply);
} else {
str = strdup(keys);
}
@@ -2166,8 +2172,7 @@ static int start_input_stream(struct tuna_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);
}
@@ -2195,7 +2200,7 @@ static int start_input_stream(struct tuna_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 */
@@ -2240,7 +2245,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 tuna_stream_in *in = (struct tuna_stream_in *)stream;
@@ -2268,7 +2273,7 @@ static int do_input_standby(struct tuna_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);
}
@@ -2329,7 +2334,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;
@@ -3298,8 +3303,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. */
@@ -3408,11 +3412,13 @@ static int adev_set_voice_volume(struct audio_hw_device *dev, float volume)
{
struct tuna_audio_device *adev = (struct tuna_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;
}
@@ -3528,7 +3534,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;
@@ -3585,29 +3591,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_AUX_DIGITAL |
- AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |
- AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET |
- AUDIO_DEVICE_OUT_ALL_SCO |
- AUDIO_DEVICE_OUT_DEFAULT |
- /* IN */
- AUDIO_DEVICE_IN_COMMUNICATION |
- AUDIO_DEVICE_IN_AMBIENT |
- AUDIO_DEVICE_IN_BUILTIN_MIC |
- AUDIO_DEVICE_IN_WIRED_HEADSET |
- AUDIO_DEVICE_IN_AUX_DIGITAL |
- AUDIO_DEVICE_IN_BACK_MIC |
- AUDIO_DEVICE_IN_ALL_SCO |
- AUDIO_DEVICE_IN_DEFAULT);
-}
-
static int adev_open(const hw_module_t* module, const char* name,
hw_device_t** device)
{
@@ -3622,11 +3605,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;
@@ -3732,7 +3714,8 @@ static int adev_open(const hw_module_t* module, const char* name,
pthread_mutex_lock(&adev->lock);
set_route_by_array(adev->mixer, defaults, 1);
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_output_device(adev);
adev->pcm_modem_dl = NULL;
diff --git a/bluetooth/bdroid_buildcfg.h b/bluetooth/bdroid_buildcfg.h
new file mode 100644
index 0000000..5c61b6c
--- /dev/null
+++ b/bluetooth/bdroid_buildcfg.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2012 The Android Open Source 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 "Galaxy Nexus 2"
+
+#endif
diff --git a/device.mk b/device.mk
index 1e3c028..2c4c3e4 100644
--- a/device.mk
+++ b/device.mk
@@ -143,9 +143,6 @@ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.usb.accessory.xml:system/etc/permissions/android.hardware.usb.accessory.xml \
frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml
-PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists,\
-packages/wallpapers/LivePicker/android.software.live_wallpaper.xml:system/etc/permissions/android.software.live_wallpaper.xml)
-
# Melfas touchscreen firmware
PRODUCT_COPY_FILES += \
device/samsung/tuna/mms144_ts_rev31.fw:system/vendor/firmware/mms144_ts_rev31.fw \
@@ -194,7 +191,6 @@ PRODUCT_PACKAGES += \
# Filesystem management tools
PRODUCT_PACKAGES += \
- make_ext4fs \
e2fsck \
setup_fs
diff --git a/dumpstate/dumpstate.c b/dumpstate/dumpstate.c
index 2858b2c..61602e4 100644
--- a/dumpstate/dumpstate.c
+++ b/dumpstate/dumpstate.c
@@ -38,4 +38,5 @@ void dumpstate_board()
dump_file("fsa9480 device_type", "/sys/bus/i2c/drivers/fsa9480/4-0025/device_type");
dump_file("fsa9480 control", "/sys/bus/i2c/drivers/fsa9480/4-0025/control");
dump_file("tiler 2x1 map", "/d/tiler/map/2x1");
+ dump_file("wlan", "/sys/module/bcmdhd/parameters/info_string");
};
diff --git a/init.tuna.rc b/init.tuna.rc
index 070ab1d..530330f 100755
--- a/init.tuna.rc
+++ b/init.tuna.rc
@@ -1,17 +1,25 @@
import init.tuna.usb.rc
-on early-init
- export EXTERNAL_STORAGE /storage/sdcard0
- mkdir /storage 0050 system sdcard_r
- mkdir /storage/sdcard0 0000 system system
- # for backwards compatibility
- symlink /storage/sdcard0 /sdcard
- symlink /storage/sdcard0 /mnt/sdcard
+on init
+ # See storage config details at http://source.android.com/tech/storage/
+ mkdir /mnt/shell/sdcard0 0700 shell shell
+ mkdir /storage/sdcard0 0000 root root
+
+ export EXTERNAL_STORAGE /storage/sdcard0
+ export ADB_EXTERNAL_STORAGE /mnt/shell/sdcard0/0
+ export MULTIUSER_EXTERNAL_STORAGE /mnt/shell/sdcard0
+
+ # Support legacy paths
+ symlink /storage/sdcard0 /sdcard
+ symlink /storage/sdcard0 /mnt/sdcard
+
+ # Save bugreports as owner
+ export BUGREPORT_WRITE_PATH /mnt/shell/sdcard0/0
+ export BUGREPORT_READ_PATH /storage/sdcard0
on post-fs-data
- # we will remap this as /storage/sdcard0 with the sdcard fuse tool
- mkdir /data/media 0770 media_rw media_rw
- chown media_rw media_rw /data/media
+ mkdir /data/media 0770 media_rw media_rw
+
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
@@ -157,11 +165,9 @@ service smc_pa_wvdrm /system/bin/smc_pa_ctrl \
group drmrpc
oneshot
-# 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 late_start
+# virtual sdcard daemon running as media_rw (1023)
+service sdcard /system/bin/sdcard /data/media /mnt/shell/sdcard0 1023 1023
+ class late_start
service p2p_supplicant /system/bin/wpa_supplicant \
-iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf -N \
diff --git a/kernel b/kernel
index 48a5610..cc0938b 100644
--- a/kernel
+++ b/kernel
Binary files differ
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index f85627b..2a08cac 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -213,7 +213,7 @@
bluetooth interfaces. If the device doesn't want to support tethering over bluetooth this
should be empty. -->
<string-array translatable="false" name="config_tether_bluetooth_regexs">
- <item>"bnep\\d"</item>
+ <item>"bt-pan"</item>
</string-array>
<!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
@@ -234,11 +234,9 @@
<bool name="config_ui_enableFadingMarquee">false</bool>
- <!-- 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>
+ <string-array name="config_overlay_locationProviderPackageNames" translatable="false">
+ <item>com.google.android.location</item>
+ </string-array>
<!-- Is the notification LED intrusive? Used to decide if there should be a disable option -->
<bool name="config_intrusiveNotificationLed">true</bool>
diff --git a/overlay/packages/apps/Settings/res/values-cs/arrays.xml b/overlay/packages/apps/Settings/res/values-cs/arrays.xml
index 266d10e..265da14 100644
--- a/overlay/packages/apps/Settings/res/values-cs/arrays.xml
+++ b/overlay/packages/apps/Settings/res/values-cs/arrays.xml
@@ -21,11 +21,11 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="screen_timeout_entries">
- <item msgid="5314770629356662739">"15 s."</item>
- <item msgid="8672738773876256432">"30 s."</item>
- <item msgid="465923292941002466">"1 min."</item>
- <item msgid="7955177189296850016">"2 min."</item>
- <item msgid="1244255986255344525">"5 min."</item>
- <item msgid="294890536998091748">"10 min."</item>
+ <item msgid="5314770629356662739">"15 sekund"</item>
+ <item msgid="8672738773876256432">"30 sekund"</item>
+ <item msgid="465923292941002466">"1 minuta"</item>
+ <item msgid="7955177189296850016">"2 minuty"</item>
+ <item msgid="1244255986255344525">"5 minut"</item>
+ <item msgid="294890536998091748">"10 minut"</item>
</string-array>
</resources>
diff --git a/overlay/packages/apps/Settings/res/values-fa/arrays.xml b/overlay/packages/apps/Settings/res/values-fa/arrays.xml
index bf95ca8..71915a9 100644
--- a/overlay/packages/apps/Settings/res/values-fa/arrays.xml
+++ b/overlay/packages/apps/Settings/res/values-fa/arrays.xml
@@ -21,11 +21,11 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="screen_timeout_entries">
- <item msgid="5314770629356662739">"15 ثانیه"</item>
- <item msgid="8672738773876256432">"30 ثانیه"</item>
- <item msgid="465923292941002466">"1 دقیقه"</item>
- <item msgid="7955177189296850016">"2 دقیقه"</item>
- <item msgid="1244255986255344525">"5 دقیقه"</item>
- <item msgid="294890536998091748">"10 دقیقه"</item>
+ <item msgid="5314770629356662739">"۱۵ ثانیه"</item>
+ <item msgid="8672738773876256432">"۳۰ ثانیه"</item>
+ <item msgid="465923292941002466">"۱ دقیقه"</item>
+ <item msgid="7955177189296850016">"۲ دقیقه"</item>
+ <item msgid="1244255986255344525">"۵ دقیقه"</item>
+ <item msgid="294890536998091748">"۱۰ دقیقه"</item>
</string-array>
</resources>
diff --git a/overlay/packages/apps/Settings/res/values-nb/arrays.xml b/overlay/packages/apps/Settings/res/values-nb/arrays.xml
index c5db781..a365905 100644
--- a/overlay/packages/apps/Settings/res/values-nb/arrays.xml
+++ b/overlay/packages/apps/Settings/res/values-nb/arrays.xml
@@ -23,9 +23,9 @@
<string-array name="screen_timeout_entries">
<item msgid="5314770629356662739">"15 sekunder"</item>
<item msgid="8672738773876256432">"30 sekunder"</item>
- <item msgid="465923292941002466">"Ett minutt"</item>
- <item msgid="7955177189296850016">"To minutter"</item>
- <item msgid="1244255986255344525">"Fem minutter"</item>
- <item msgid="294890536998091748">"Ti minutter"</item>
+ <item msgid="465923292941002466">"1 minutt"</item>
+ <item msgid="7955177189296850016">"2 minutter"</item>
+ <item msgid="1244255986255344525">"5 minutter"</item>
+ <item msgid="294890536998091748">"10 minutter"</item>
</string-array>
</resources>
diff --git a/releasetools.py b/releasetools.py
index 056c7dc..b9dabdb 100644
--- a/releasetools.py
+++ b/releasetools.py
@@ -102,7 +102,7 @@ def WriteRadio(info, target_radio_img, source_radio_img=None):
if tf.sha1 == sf.sha1:
print "radio image unchanged; skipping"
else:
- diff = common.Difference(tf, sf)
+ diff = common.Difference(tf, sf, diff_program="bsdiff")
common.ComputeDifferences([diff])
_, _, d = diff.GetPatch()
if d is None or len(d) > tf.size * common.OPTIONS.patch_threshold: