diff --git a/BoardConfig.mk b/BoardConfig.mk index bd6b3366ae02dab868b006f5f1aabcb057b255bb..776eab634682f3a51e8e944894a23097e8d07107 100644 --- a/BoardConfig.mk +++ b/BoardConfig.mk @@ -27,7 +27,7 @@ BOARD_PROVIDES_LIBRIL := true BOARD_MODEM_TYPE := mdm9x35 # Bluetooth -BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := $(LOCAL_PATH)/bluetooth +BOARD_CUSTOM_BT_CONFIG := $(LOCAL_PATH)/bluetooth/vnd_n8020.txt # Kernel TARGET_KERNEL_CONFIG := lineageos_i925_defconfig diff --git a/audio/Android.mk b/audio/Android.mk index 03a39b11dc9ebeafb23711ce77b91380d2fd1221..68c600db3461e061107da214497b22ba4c489b05 100644 --- a/audio/Android.mk +++ b/audio/Android.mk @@ -17,7 +17,8 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := audio.primary.$(TARGET_BOOTLOADER_BOARD_NAME) -LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw +LOCAL_MODULE_RELATIVE_PATH := hw +LOCAL_VENDOR_MODULE := true LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := audio_hw.c diff --git a/audio/audio_hw.c b/audio/audio_hw.c index 127a40515077bab8052c0327c60dfebb7825e419..a2a9fc192189cbfba081179b54a0443f340cb013 100755 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -108,6 +108,7 @@ struct m0_audio_device { int tty_mode; struct echo_reference_itfe *echo_reference; bool bluetooth_nrec; + int wb_amr; bool screen_off; }; @@ -419,7 +420,6 @@ static int start_call(struct m0_audio_device *adev) /* use amr-wb by default */ pcm_config_vx.rate = VX_WB_SAMPLING_RATE; } - /* Open modem PCM channels */ if (adev->pcm_modem_dl == NULL) { ALOGD("Opening PCM modem DL stream"); @@ -863,7 +863,7 @@ static int start_output_stream_low_latency(struct m0_stream_out *out) if (success) { out->buffer_frames = pcm_config_tones.period_size * 2; if (out->buffer == NULL) - out->buffer = malloc(out->buffer_frames * audio_stream_frame_size(&out->stream.common)); + out->buffer = malloc(out->buffer_frames * audio_stream_out_frame_size(&out->stream.common)); if (adev->echo_reference != NULL) out->echo_reference = adev->echo_reference; @@ -1063,7 +1063,7 @@ static size_t out_get_buffer_size_low_latency(const struct audio_stream *stream) from pcm_config_tones.rate. */ size_t size = (SHORT_PERIOD_SIZE * DEFAULT_OUT_SAMPLING_RATE) / pcm_config_tones.rate; size = ((size + 15) / 16) * 16; - return size * audio_stream_frame_size((struct audio_stream *)stream); + return size * audio_stream_out_frame_size((struct audio_stream *)stream); } static size_t out_get_buffer_size_deep_buffer(const struct audio_stream *stream) @@ -1077,7 +1077,7 @@ static size_t out_get_buffer_size_deep_buffer(const struct audio_stream *stream) size_t size = (DEEP_BUFFER_SHORT_PERIOD_SIZE * DEFAULT_OUT_SAMPLING_RATE) / pcm_config_mm.rate; size = ((size + 15) / 16) * 16; - return size * audio_stream_frame_size((struct audio_stream *)stream); + return size * audio_stream_out_frame_size((struct audio_stream *)stream); } static audio_channel_mask_t out_get_channels(const struct audio_stream *stream) @@ -1301,7 +1301,7 @@ static ssize_t out_write_low_latency(struct audio_stream_out *stream, const void int ret; struct m0_stream_out *out = (struct m0_stream_out *)stream; struct m0_audio_device *adev = out->dev; - size_t frame_size = audio_stream_frame_size(&out->stream.common); + size_t frame_size = audio_stream_out_frame_size(&out->stream.common); size_t in_frames = bytes / frame_size; size_t out_frames = in_frames; bool force_input_standby = false; @@ -1369,7 +1369,7 @@ exit: pthread_mutex_unlock(&out->lock); if (ret != 0) { - usleep(bytes * 1000000 / audio_stream_frame_size(&stream->common) / + usleep(bytes * 1000000 / audio_stream_out_frame_size(&stream->common) / out_get_sample_rate(&stream->common)); } @@ -1393,7 +1393,7 @@ static ssize_t out_write_deep_buffer(struct audio_stream_out *stream, const void int ret; struct m0_stream_out *out = (struct m0_stream_out *)stream; struct m0_audio_device *adev = out->dev; - size_t frame_size = audio_stream_frame_size(&out->stream.common); + size_t frame_size = audio_stream_out_frame_size(&out->stream.common); size_t in_frames = bytes / frame_size; size_t out_frames; bool use_long_periods; @@ -1472,7 +1472,7 @@ exit: pthread_mutex_unlock(&out->lock); if (ret != 0) { - usleep(bytes * 1000000 / audio_stream_frame_size(&stream->common) / + usleep(bytes * 1000000 / audio_stream_out_frame_size(&stream->common) / out_get_sample_rate(&stream->common)); } @@ -2084,7 +2084,7 @@ static ssize_t in_read(struct audio_stream_in *stream, void* buffer, int ret = 0; struct m0_stream_in *in = (struct m0_stream_in *)stream; struct m0_audio_device *adev = in->dev; - size_t frames_rq = bytes / audio_stream_frame_size(&stream->common); + size_t frames_rq = bytes / audio_stream_in_frame_size(&stream->common); /* acquiring hw device mutex systematically is useful if a low priority thread is waiting * on the input stream mutex - e.g. executing select_mode() while holding the hw device @@ -2117,7 +2117,7 @@ static ssize_t in_read(struct audio_stream_in *stream, void* buffer, exit: if (ret < 0) - usleep(bytes * 1000000 / audio_stream_frame_size(&stream->common) / + usleep(bytes * 1000000 / audio_stream_in_frame_size(&stream->common) / in_get_sample_rate(&stream->common)); pthread_mutex_unlock(&in->lock); @@ -2678,7 +2678,7 @@ static int adev_set_parameters(struct audio_hw_device *dev, const char *kvpairs) // FIXME ret = str_parms_get_str(parms, "noise_suppression", value, sizeof(value)); if (ret >= 0) { - if (strcmp(value, "true") == 0) { + if (strcmp(value, "on") == 0) { ALOGE("%s: enabling two mic control", __func__); /* sub mic */ set_bigroute_by_array(adev->mixer, noise_suppression, 1); @@ -3200,6 +3200,7 @@ static int adev_open(const hw_module_t* module, const char* name, adev->voice_volume = 1.0f; adev->tty_mode = TTY_MODE_OFF; adev->bluetooth_nrec = true; + adev->wb_amr = 0; /* QCOM CSD-Client */ mCsdHandle = dlopen(CSD_CLIENT_LIBPATH, RTLD_NOW); diff --git a/bluetooth/bdroid_buildcfg.h b/bluetooth/bdroid_buildcfg.h deleted file mode 100644 index 360c979ffb48a4055abd3ed247f3d4a68574068b..0000000000000000000000000000000000000000 --- a/bluetooth/bdroid_buildcfg.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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 "GT-N8020" - -/* Defined if the kernel does not have support for CLOCK_BOOTTIME_ALARM */ -#define KERNEL_MISSING_CLOCK_BOOTTIME_ALARM TRUE - -#endif diff --git a/bluetooth/vnd_n8020.txt b/bluetooth/vnd_n8020.txt new file mode 100644 index 0000000000000000000000000000000000000000..b34bc772670640003b1a0617e8978be599945353 --- /dev/null +++ b/bluetooth/vnd_n8020.txt @@ -0,0 +1,15 @@ +BLUETOOTH_UART_DEVICE_PORT = "/dev/ttySAC0" +FW_PATCHFILE_LOCATION = "/vendor/firmware" +BTHW_FW_EXTENDED_CONFIGURATION = TRUE +LPM_IDLE_TIMEOUT_MULTIPLE = 5 +BTVND_DBG = FALSE +BTHW_DBG = TRUE +VNDUSERIAL_DBG = FALSE +UPIO_DBG = FALSE +UART_TARGET_BAUD_RATE = 3000000 +FW_PATCH_SETTLEMENT_DELAY_MS = 50 +SCO_USE_I2S_INTERFACE = TRUE +SCO_I2SPCM_IF_MODE = 1 +SCO_I2SPCM_IF_ROLE = 0 +SCO_I2SPCM_IF_SAMPLE_RATE = 0 +SCO_I2SPCM_IF_CLOCK_RATE = 1 diff --git a/n8020.mk b/n8020.mk index ce6904d48b04defd26606551257ec042e804326d..c4799548ce0cb3a9e20cecebb573d4226e985091 100644 --- a/n8020.mk +++ b/n8020.mk @@ -22,8 +22,7 @@ DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/overlay # Init files PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/rootdir/fstab.smdk4x12:root/fstab.smdk4x12 \ - $(LOCAL_PATH)/rootdir/init.target.rc:root/init.target.rc \ - $(LOCAL_PATH)/rootdir/ueventd.smdk4x12.rc:root/ueventd.smdk4x12.rc + $(LOCAL_PATH)/rootdir/init.target.rc:root/init.target.rc # RIL PRODUCT_PROPERTY_OVERRIDES += \ diff --git a/rootdir/init.target.usb.rc b/rootdir/init.target.usb.rc deleted file mode 100644 index d9b2e8ba85e8b0f1154b5d012e671c68c86b3bfe..0000000000000000000000000000000000000000 --- a/rootdir/init.target.usb.rc +++ /dev/null @@ -1,17 +0,0 @@ -on property:sys.usb.config=mass_storage - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 04E8 - write /sys/class/android_usb/android0/idProduct 685B - write /sys/class/android_usb/android0/functions ${sys.usb.config} - write /sys/class/android_usb/android0/enable 1 - setprop sys.usb.state ${sys.usb.config} - -on property:sys.usb.config=mass_storage,adb - write /sys/class/android_usb/android0/enable 0 - write /sys/class/android_usb/android0/idVendor 04E8 - write /sys/class/android_usb/android0/idProduct 685E - write /sys/class/android_usb/android0/functions ${sys.usb.config} - write /sys/class/android_usb/android0/enable 1 - start adbd - start umsservice - setprop sys.usb.state ${sys.usb.config} diff --git a/selinux/private/bluetooth.te b/selinux/private/bluetooth.te new file mode 100644 index 0000000000000000000000000000000000000000..a84d5b4060fdcba6092894173dbad9f239f6dea0 --- /dev/null +++ b/selinux/private/bluetooth.te @@ -0,0 +1,2 @@ +allow bluetooth firmware_exynos:dir rw_dir_perms; +allow bluetooth firmware_exynos:file r_file_perms; \ No newline at end of file diff --git a/selinux/vendor/hal_wifi_default.te b/selinux/vendor/hal_wifi_default.te index 07a71573b53fbcb230a5969acd618efc3d085e42..a9c8ea470e1f618acd581b0646d49b97777bc4e6 100644 --- a/selinux/vendor/hal_wifi_default.te +++ b/selinux/vendor/hal_wifi_default.te @@ -16,4 +16,4 @@ allow hal_wifi_default wpa_data_file:sock_file { write create setattr unlink }; allow hal_wifi_default wifi_data_file:dir { search add_name write remove_name }; allow hal_wifi_default self:udp_socket ioctl; allow hal_wifi_default efs_device_file:dir search; - +allow hal_wifi_default proc_net:file rw_file_perms;