beagle-x15: Initial device support

Based of http://git.ti.com/cgit/cgit.cgi/android/device-ti-am57xevm.git/
Branch: d-oreo-mr1-core-release

Initial Android device support for beagle X15 platform.

Processor: http://www.ti.com/product/am5728
Hardware Platform: https://beagleboard.org/x15
Schematics and Platform Info: https://elinux.org/Beagleboard:BeagleBoard-X15

Change-Id: I84936c1cc695832889b07f94f16ecdca9d2b00d2
Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
Signed-off-by: Mykhailo Sopiha <mykhailo.sopiha@linaro.org>
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Ruslan Trofymenko <ruslan.trofymenko@linaro.org>
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..6768aca
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+#
+# 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.
+#
+
+# WARNING: Everything listed here will be built on ALL platforms,
+# including x86, the emulator, and the SDK.  Modules must be uniquely
+# named (liblights.panda), and must build everywhere, or limit themselves
+# to only building on ARM if they include assembly. Individual makefiles
+# are responsible for having their own logic, for fine-grained control.
+
+ifneq ($(filter beagle_x15%, $(TARGET_DEVICE)),)
+
+LOCAL_PATH := $(call my-dir)
+
+# if some modules are built directly from this directory (not subdirectories),
+# their rules should be written here.
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
new file mode 100644
index 0000000..dcdb188
--- /dev/null
+++ b/AndroidProducts.mk
@@ -0,0 +1,21 @@
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+#
+# 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.
+#
+
+PRODUCT_MAKEFILES := \
+    $(LOCAL_DIR)/beagle_x15.mk \
+
+COMMON_LUNCH_CHOICES := \
+    beagle_x15-userdebug \
diff --git a/BoardConfig.mk b/BoardConfig.mk
new file mode 100644
index 0000000..9c368e9
--- /dev/null
+++ b/BoardConfig.mk
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+#
+# 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.
+#
+
+TARGET_ARCH := arm
+TARGET_ARCH_VARIANT := armv7-a-neon
+TARGET_CPU_VARIANT := cortex-a15
+TARGET_CPU_ABI := armeabi-v7a
+TARGET_CPU_ABI2 := armeabi
+TARGET_CPU_SMP := true
+
+TARGET_BOOTIMAGE_FIT := true
+TARGET_USES_64_BIT_BINDER := true
+
+# Use mke2fs to create ext4 images
+TARGET_USES_MKE2FS := true
+
+BOARD_FLASH_BLOCK_SIZE := 4096
+
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 2147483648 #   2GB
+BOARD_SYSTEMIMAGE_PARTITION_SIZE   := 805306368  # 768MB
+BOARD_VENDORIMAGE_PARTITION_SIZE   := 268435456  # 256MB
+
+TARGET_USERIMAGES_USE_EXT4 := true
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+
+TARGET_BOARD_PLATFORM := am57x
+TARGET_COPY_OUT_VENDOR := vendor
+
+TARGET_RECOVERY_FSTAB = device/ti/beagle_x15/fstab.beagle_x15board
+TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
+TARGET_RELEASETOOLS_EXTENSIONS := device/ti/beagle_x15
+
+BOARD_SEPOLICY_DIRS += \
+	device/ti/beagle_x15/sepolicy
+
+BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
diff --git a/beagle_x15.its b/beagle_x15.its
new file mode 100644
index 0000000..0da108d
--- /dev/null
+++ b/beagle_x15.its
@@ -0,0 +1,47 @@
+/dts-v1/;
+
+/ {
+	description = "beagle-x15";
+	#address-cells = <1>;
+
+	images {
+		kernel@1 {
+			description = "TI kernel";
+			data = /incbin/("zImage");
+			type = "kernel";
+			arch = "arm";
+			os = "linux";
+			compression = "none";
+			load = <0x82000000>;
+			entry = <0x82000000>;
+		};
+		ramdisk@1 {
+			description = "Android Ramdisk Image";
+			data = /incbin/("ramdisk.img");
+			type = "ramdisk";
+			arch = "arm";
+			os = "linux";
+			compression = "none";
+			load = <0x88080000>;
+			entry = <0x88080000>;
+		};
+		fdt@1 {
+			description = "AM57xx-beagle-x15-revc";
+			data = /incbin/("am57xx-beagle-x15-revc.dtb");
+			type = "flat_dt";
+			arch = "arm";
+			compression = "none";
+			load = <0x83000000>;
+		};
+	};
+
+	configurations {
+		default = "am57xx-beagle-x15-revc.dtb";
+		am57xx-beagle-x15-revc.dtb {
+			description = "AM57xx beagle-x15 C";
+			kernel = "kernel@1";
+			ramdisk = "ramdisk@1";
+			fdt = "fdt@1";
+		};
+	};
+};
diff --git a/beagle_x15.mk b/beagle_x15.mk
new file mode 100644
index 0000000..3ac5e93
--- /dev/null
+++ b/beagle_x15.mk
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+#
+# 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.
+#
+
+$(call inherit-product, device/ti/beagle_x15/device.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
+
+PRODUCT_NAME := beagle_x15
+PRODUCT_DEVICE := beagle_x15
+PRODUCT_BRAND := Android
+PRODUCT_MODEL := AOSP on BeagleBoard X15
+PRODUCT_MANUFACTURER := Texas Instruments Inc
diff --git a/boot_fit/Android.mk b/boot_fit/Android.mk
new file mode 100644
index 0000000..c0f0306
--- /dev/null
+++ b/boot_fit/Android.mk
@@ -0,0 +1,25 @@
+ifneq ($(filter beagle_x15%, $(TARGET_DEVICE)),)
+ifeq ($(TARGET_BOOTIMAGE_FIT), true)
+
+MKIMAGE := $(HOST_OUT_EXECUTABLES)/mkimage
+DTC_FLAGS_MKIMAGE = -I dts -O dtb -p 500 -Wno-unit_address_vs_reg
+BOARD_DIR := device/ti/beagle_x15
+FIT_DIR := $(PRODUCT_OUT)/obj/fit
+ITS := beagle_x15.its
+BOOTIMG_FIT := $(PRODUCT_OUT)/boot_fit.img
+
+$(BOOTIMG_FIT): $(INSTALLED_KERNEL_TARGET) $(INSTALLED_RAMDISK_TARGET) $(BOARD_DIR)/$(ITS) $(MKIMAGE)
+	mkdir -p $(FIT_DIR)
+	cp $(BOARD_DIR)/$(ITS) $(FIT_DIR)
+	cp $(INSTALLED_RAMDISK_TARGET) $(FIT_DIR)
+	cp $(INSTALLED_KERNEL_TARGET) $(FIT_DIR)/zImage
+	cp $(LOCAL_KERNEL)/*.dtb $(FIT_DIR)
+	$(MKIMAGE) -D "$(DTC_FLAGS_MKIMAGE)" -f $(FIT_DIR)/$(ITS) $@
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bootfitimage
+LOCAL_ADDITIONAL_DEPENDENCIES := $(BOOTIMG_FIT)
+include $(BUILD_PHONY_PACKAGE)
+
+endif
+endif
diff --git a/device.mk b/device.mk
new file mode 100644
index 0000000..d5fc771
--- /dev/null
+++ b/device.mk
@@ -0,0 +1,94 @@
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+#
+# 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.
+#
+
+# Adjust the dalvik heap to be appropriate for a tablet.
+$(call inherit-product, frameworks/native/build/tablet-7in-xhdpi-2048-dalvik-heap.mk)
+
+# Set custom settings
+DEVICE_PACKAGE_OVERLAYS := device/ti/beagle_x15/overlay
+
+LOCAL_KERNEL := device/ti/beagle_x15-kernel
+TARGET_PREBUILT_KERNEL := $(LOCAL_KERNEL)/zImage
+PRODUCT_COPY_FILES += $(TARGET_PREBUILT_KERNEL):kernel
+
+# Graphics
+PRODUCT_PACKAGES += \
+	android.hardware.graphics.allocator@2.0-impl \
+	android.hardware.graphics.allocator@2.0-service \
+	android.hardware.graphics.composer@2.1-impl \
+	android.hardware.graphics.composer@2.1-service \
+	android.hardware.graphics.mapper@2.0-impl \
+	android.hardware.graphics.mapper@2.0-service \
+	android.hardware.drm@1.0-impl \
+	android.hardware.drm@1.0-service \
+	android.hardware.keymaster@3.0-impl \
+	android.hardware.keymaster@3.0-service \
+	android.hardware.audio@2.0-impl \
+	android.hardware.audio.effect@2.0-impl \
+	libdrm \
+	libdrm_omap \
+        hwcomposer.am57x \
+
+# Memtrack
+PRODUCT_PACKAGES += \
+	android.hardware.memtrack@1.0-impl \
+	android.hardware.memtrack@1.0-service \
+
+PRODUCT_PROPERTY_OVERRIDES += \
+	ro.opengles.version=131072 \
+	ro.sf.lcd_density=160 \
+
+# All VNDK libraries (HAL interfaces, VNDK, VNDK-SP, LL-NDK)
+PRODUCT_PACKAGES += vndk_package
+
+# USB
+PRODUCT_PACKAGES += \
+	android.hardware.usb@1.0-service \
+
+PRODUCT_COPY_FILES += \
+	frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
+	frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+	persist.sys.usb.config=mtp \
+
+
+PRODUCT_COPY_FILES += \
+	device/ti/beagle_x15/tablet_core_hardware_beagle_x15.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/tablet_core_hardware_beagle_x15.xml \
+	device/ti/beagle_x15/manifest.xml:$(TARGET_COPY_OUT_VENDOR)/manifest.xml \
+	device/ti/beagle_x15/init.beagle_x15board.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.beagle_x15board.rc \
+	device/ti/beagle_x15/init.beagle_x15board.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.beagle_x15board.usb.rc \
+	device/ti/beagle_x15/ueventd.beagle_x15board.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc \
+	device/ti/beagle_x15/fstab.beagle_x15board:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.beagle_x15board \
+	frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \
+
+# Static modprobe for recovery image
+PRODUCT_PACKAGES += \
+	toybox_static \
+
+PRODUCT_CHARACTERISTICS := tablet,nosdcard
+
+PRODUCT_PACKAGES += \
+	toybox_vendor \
+	Launcher3 \
+	WallpaperPicker \
+	sh_vendor \
+	vintf \
+	netutils-wrapper-1.0 \
+	messaging \
+
+PRODUCT_PACKAGES += \
+	bootfitimage
diff --git a/fstab.beagle_x15board b/fstab.beagle_x15board
new file mode 100644
index 0000000..fc7ef89
--- /dev/null
+++ b/fstab.beagle_x15board
@@ -0,0 +1,13 @@
+# 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/44000000.ocp/480b4000.mmc/by-name/userdata		/data		ext4	noatime,nosuid,nodev	wait,check,quota
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/recovery		/recovery	emmc	defaults		defaults
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/boot		/boot		emmc	defaults		defaults
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/misc		/misc		emmc	defaults		defaults
+
+/devices/platform/44000000.ocp/488c0000.omap_dwc3_2/488d0000.usb*	auto	auto	defaults	voldmanaged=usb0:auto
+/devices/platform/44000000.ocp/48880000.omap_dwc3_1/48890000.usb*	auto	auto	defaults	voldmanaged=usb1:auto
+/devices/platform/44000000.ocp/4809c000.mmc/mmc_host*			auto	auto	defaults	voldmanaged=sdcard1:auto
diff --git a/init.beagle_x15board.rc b/init.beagle_x15board.rc
new file mode 100644
index 0000000..24d6a65
--- /dev/null
+++ b/init.beagle_x15board.rc
@@ -0,0 +1,17 @@
+import /vendor/etc/init/hw/init.beagle_x15board.usb.rc
+
+on post-fs-data
+
+    setprop vold.post_fs_data_done 1
+
+    #enabling thermal zone for mpu
+    write /sys/class/thermal/thermal_zone0/mode enabled
+
+on fs
+    mount_all /vendor/etc/fstab.beagle_x15board
+
+service pvrsrvinit /vendor/bin/pvrsrvctl --start
+    class core
+    user root
+    group root
+    oneshot
diff --git a/init.beagle_x15board.usb.rc b/init.beagle_x15board.usb.rc
new file mode 100644
index 0000000..51f08bb
--- /dev/null
+++ b/init.beagle_x15board.usb.rc
@@ -0,0 +1,51 @@
+on boot
+    mkdir /config/usb_gadget/g1 0770 shell shell
+    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
+    write /config/usb_gadget/g1/bcdUSB 0x0200
+    write /config/usb_gadget/g1/idVendor 0x0451
+    write /config/usb_gadget/g1/bcdDevice 0x0223
+    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
+    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
+    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
+    mkdir /config/usb_gadget/g1/functions/ffs.adb
+    mkdir /config/usb_gadget/g1/functions/ffs.mtp
+    mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
+    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
+    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
+    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
+    write /config/usb_gadget/g1/configs/b.1/MaxPower 120
+    mkdir /dev/input 0755 root root
+    mkdir /dev/usb-ffs 0775 shell shell
+    mkdir /dev/usb-ffs/adb 0770 shell shell
+    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
+    mkdir /dev/usb-ffs/mtp 0770 mtp mtp
+    mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
+    setprop sys.usb.mtp.device_type 3
+    setprop sys.usb.configfs 1
+    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
+
+on property:sys.usb.config=none && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/os_desc/use 0
+
+on property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=mtp && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0xD108
+    write /config/usb_gadget/g1/os_desc/use 1
+    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0xD109
+    write /config/usb_gadget/g1/os_desc/use 1
+    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
+
+on property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=ptp && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0xD10D
+    write /config/usb_gadget/g1/os_desc/use 1
+    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.ffs.mtp.ready=1 && property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0xD10E
+    write /config/usb_gadget/g1/os_desc/use 1
+    symlink /config/usb_gadget/g1/functions/ffs.mtp /config/usb_gadget/g1/configs/b.1/f1
+
+on property:sys.usb.config=adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0xD101
diff --git a/manifest.xml b/manifest.xml
new file mode 100644
index 0000000..f098ee2
--- /dev/null
+++ b/manifest.xml
@@ -0,0 +1,60 @@
+<manifest version="1.0" type="device">
+    <hal format="hidl">
+        <name>android.hardware.drm</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ICryptoFactory</name>
+            <instance>default</instance>
+        </interface>
+        <interface>
+            <name>IDrmFactory</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.allocator</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IAllocator</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.composer</name>
+        <transport>hwbinder</transport>
+        <version>2.1</version>
+        <interface>
+            <name>IComposer</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.mapper</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IMapper</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.memtrack</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IMemtrack</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.configstore</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISurfaceFlingerConfigs</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+</manifest>
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
new file mode 100644
index 0000000..15ddf65
--- /dev/null
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2011, 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.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+     for different hardware and product builds. -->
+<resources>
+
+    <!-- Enable multi-user. -->
+    <bool name="config_enableMultiUserUI">true</bool>
+    <!-- Arbitrary max 8 users. -->
+    <integer name="config_multiuserMaximumUsers">8</integer>
+
+    <!-- This device is not "voice capable"; it's data-only. -->
+    <bool name="config_voice_capable">false</bool>
+
+    <!-- This device does not allow sms service. -->
+    <bool name="config_sms_capable">false</bool>
+
+    <!-- List of regexpressions describing the interface (if any) that represent tetherable
+         Wifi interfaces.  If the device doesn't want to support tethering over Wifi this
+         should be empty.  An example would be "softap.*" -->
+    <string-array translatable="false" name="config_tether_wifi_regexs">
+    </string-array>
+
+    <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+    <!-- [1,7,9] for TYPE_WIFI, TYPE_BLUETOOTH and TYPE_ETHERNET-->
+   <integer-array translatable="false" name="config_tether_upstream_types">
+        <item>9</item>
+    </integer-array>
+
+    <!-- This string array should be overridden by the device to present a list of network
+         attributes.  This is used by the connectivity manager to decide which networks can coexist
+         based on the hardware -->
+    <!-- An Array of "[Connection name],[ConnectivityManager connection type],
+         [associated radio-type],[priority],[restoral-timer(ms)],[dependencyMet]  -->
+    <!-- the 5th element "resore-time" indicates the number of milliseconds to delay
+         before automatically restore the default connection.  Set -1 if the connection
+         does not require auto-restore. -->
+    <!-- the 6th element indicates boot-time dependency-met value. -->
+    <string-array translatable="false" name="networkAttributes">
+        <item>"ethernet,9,9,0,-1,true"</item>
+    </string-array>
+
+    <!-- This string array should be overridden by the device to present a list of radio
+         attributes.  This is used by the connectivity manager to decide which networks can coexist
+         based on the hardware -->
+    <!-- An Array of "[ConnectivityManager connectionType],
+                      [# simultaneous connection types]"  -->
+    <string-array translatable="false" name="radioAttributes">
+        <item>"9,1"</item>
+    </string-array>
+
+    <!-- Boolean indicating whether the wifi chipset has dual frequency band support -->
+    <bool translatable="false" name="config_wifi_dual_band_support">true</bool>
+
+    <!-- List of regexpressions describing the interface (if any) that represent tetherable
+         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">
+    </string-array>
+
+    <!-- Separate software navigation bar required on this device. -->
+    <bool name="config_showNavigationBar">true</bool>
+
+    <!-- Whether WiFi display is supported by this device.
+         There are many prerequisites for this feature to work correctly.
+         Here are a few of them:
+         * The WiFi radio must support WiFi P2P.
+         * The WiFi radio must support concurrent connections to the WiFi display and
+           to an access point.
+         * The Audio Flinger audio_policy.conf file must specify a rule for the "r_submix"
+           remote submix module.  This module is used to record and stream system
+           audio output to the WiFi display encoder in the media server.
+         * The remote submix module "audio.r_submix.default" must be installed on the device.
+         * The device must be provisioned with HDCP keys (for protected content).
+    -->
+    <bool name="config_enableWifiDisplay">false</bool>
+
+    <!-- Default list of files pinned by the Pinner Service -->
+    <string-array translatable="false" name="config_defaultPinnerServiceFiles">
+        <item>"/system/framework/arm/boot-framework.oat"</item>
+        <item>"/system/framework/arm/boot-framework.vdex"</item>
+        <item>"/system/framework/oat/arm/services.odex"</item>
+        <item>"/system/framework/oat/arm/services.vdex"</item>
+        <item>"/system/framework/arm/boot.oat"</item>
+        <item>"/system/framework/arm/boot.vdex"</item>
+        <item>"/system/framework/arm/boot-core-libart.oat"</item>
+        <item>"/system/framework/arm/boot-core-libart.vdex"</item>
+    </string-array>
+
+</resources>
diff --git a/overlay/frameworks/base/packages/SettingsProvider/res/values/config.xml b/overlay/frameworks/base/packages/SettingsProvider/res/values/config.xml
new file mode 100644
index 0000000..3015350
--- /dev/null
+++ b/overlay/frameworks/base/packages/SettingsProvider/res/values/config.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 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.
+-->
+
+<resources>
+    <!-- Turn off GPS as a default. -->
+    <string name="def_location_providers_allowed" translatable="false"></string>
+    <!-- Disable lock screen -->
+    <bool name="def_lockscreen_disabled">true</bool>
+    <!-- Keep screen on always -->
+    <bool name="def_stay_on_while_plugged_in">true</bool>
+</resources>
diff --git a/sepolicy/file.te b/sepolicy/file.te
new file mode 100644
index 0000000..7162631
--- /dev/null
+++ b/sepolicy/file.te
@@ -0,0 +1,2 @@
+# sysfs types
+type sysfs_socinfo, sysfs_type, fs_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
new file mode 100644
index 0000000..c36cab0
--- /dev/null
+++ b/sepolicy/file_contexts
@@ -0,0 +1,21 @@
+#Console
+/dev/ttyS2			u:object_r:console_device:s0
+
+#Graphics
+/dev/dri/card0			u:object_r:gpu_device:s0
+/dev/dri/controlD64		u:object_r:gpu_device:s0
+/dev/dri/renderD128		u:object_r:gpu_device:s0
+/dev/pvr_sync			u:object_r:gpu_device:s0
+
+/vendor/bin/pvrsrvctl		u:object_r:pvr_exec:s0
+/vendor/bin/pvrsrvinit		u:object_r:pvr_exec:s0
+
+# Sysfs
+/sys/devices/soc0(/.*)?         u:object_r:sysfs_socinfo:s0
+
+#Block devices
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/system     u:object_r:system_block_device:s0
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/recovery   u:object_r:recovery_block_device:s0
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/cache      u:object_r:cache_block_device:s0
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/userdata   u:object_r:userdata_block_device:s0
+/dev/block/platform/44000000.ocp/480b4000.mmc/by-name/misc       u:object_r:misc_block_device:s0
diff --git a/sepolicy/healthd.te b/sepolicy/healthd.te
new file mode 100644
index 0000000..d4f839d
--- /dev/null
+++ b/sepolicy/healthd.te
@@ -0,0 +1 @@
+allow healthd self:capability2 wake_alarm;
diff --git a/sepolicy/init.te b/sepolicy/init.te
new file mode 100644
index 0000000..2329198
--- /dev/null
+++ b/sepolicy/init.te
@@ -0,0 +1,11 @@
+#For loading modules via init.rc (ex: wifi)
+allow init self:capability sys_module;
+#Create symlinks for storage
+allow init tmpfs:lnk_file create_file_perms;
+# Allow module insertion
+allow init vendor_file:system module_load;
+# Configfs
+allow init configfs:file write;
+allow init configfs:lnk_file { create unlink } ;
+
+dontaudit init proc:file write;
diff --git a/sepolicy/netd.te b/sepolicy/netd.te
new file mode 100644
index 0000000..954fc6a
--- /dev/null
+++ b/sepolicy/netd.te
@@ -0,0 +1,2 @@
+dontaudit netd self:capability sys_module;
+dontaudit netd kernel:system module_request;
diff --git a/sepolicy/pvr.te b/sepolicy/pvr.te
new file mode 100644
index 0000000..cd57633
--- /dev/null
+++ b/sepolicy/pvr.te
@@ -0,0 +1,16 @@
+type pvr, domain;
+type pvr_exec, exec_type, vendor_file_type, file_type;
+
+# Started by init
+init_daemon_domain(pvr)
+
+# allow access to /dev/dri/
+allow pvr gpu_device:chr_file rw_file_perms;
+
+# allow graphics driver initialization
+allow pvr self:capability sys_module;
+allow pvr vendor_file:system module_load;
+
+# allow reading /sys/devices/soc0/machine
+allow pvr sysfs_socinfo:dir { r_dir_perms };
+allow pvr sysfs_socinfo:file { r_file_perms };
diff --git a/tablet_core_hardware_beagle_x15.xml b/tablet_core_hardware_beagle_x15.xml
new file mode 100644
index 0000000..d67b3a9
--- /dev/null
+++ b/tablet_core_hardware_beagle_x15.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+<!-- These are the hardware components that all handheld devices
+     must include. Devices with optional hardware must also include extra
+     hardware files, per the comments below.
+
+     Handheld devices include phones, mobile Internet devices (MIDs),
+     Personal Media Players (PMPs), small tablets (7" or less), and similar
+     devices.
+-->
+<permissions>
+    <feature name="android.software.cts" />
+    <!-- <feature name="android.hardware.audio.output" /> -->
+    <feature name="android.hardware.touchscreen" />
+    <feature name="android.hardware.faketouch" />
+    <feature name="android.hardware.microphone" />
+    <feature name="android.hardware.screen.landscape" />
+    <!-- <feature name="android.hardware.bluetooth" /> -->
+    <feature name="android.software.app_widgets" />
+    <feature name="android.software.home_screen" />
+    <!-- Feature to specify if the device supports adding device admins. -->
+    <feature name="android.software.device_admin" />
+    <feature name="android.software.backup" />
+    <!-- feature name="android.software.voice_recognizers" />-->
+</permissions>
diff --git a/ueventd.beagle_x15board.rc b/ueventd.beagle_x15board.rc
new file mode 100644
index 0000000..06024f6
--- /dev/null
+++ b/ueventd.beagle_x15board.rc
@@ -0,0 +1,3 @@
+# for android sync framework
+/dev/pvr_sync             0666   system     graphics
+/dev/pvrsrvkm             0666   system     graphics