Merge branch 'd-marshmallow-mr2-release' of git://git.omapzoom.org/device/ti/jacinto6evm into d-marshmallow-release

* 'd-marshmallow-mr2-release' of git://git.omapzoom.org/device/ti/jacinto6evm:
  jacinto6evm: update fastboot script for J6 ECO Rev C
  jacinto6evm: add modetest to product packages
  media_codecs.xml: Publish AdaptivePlayback feature for AVC decoder
  jacinto6evm: correct typo in usb rc file
  jacinto6evm: fastboot: fix board_rev handling
  jacinto6evm: fastboot: enable qspi flashing
  jacinto6evm: add BOARD_GPU_DRIVERS
  jacinto6evm: sepolicy: update crda rule for kernel4.4
  jacinto6evm: sepolicy: updates for configFS
  jacinto6evm: enable configFS based adb
  jacinto6evm: media_codecs.xml: Define Limits for each mime type
  jacinto6evm: update fastboot script for latest u-boot
  jacinto6evm: remove dummy wake_lock
  jacinto6evm: sepolicy: update block device names
  jacinto6evm: fstab: update for Kernel 4.4
  jacinto6evm: media_codecs: Add attributes for HW Codecs
  jacinto6evm: update fastboot script for Kernel 4.4
  TEMP: jacinto6evm: disable bluetooth
  jacinto6evm: configure cpusets for J6 and J6 Eco

Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
diff --git a/BoardConfig.mk b/BoardConfig.mk
index a9f24b2..2cbfdb9 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -31,6 +31,8 @@
 TARGET_ARCH_VARIANT := armv7-a-neon
 TARGET_CPU_VARIANT := cortex-a15
 
+ENABLE_CPUSETS := true
+
 BOARD_HAVE_BLUETOOTH := true
 BOARD_HAVE_BLUETOOTH_TI := true
 BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/ti/jacinto6evm/bluetooth
@@ -74,3 +76,6 @@
 endif
 
 BOARD_SEPOLICY_DIRS := device/ti/jacinto6evm/sepolicy
+
+# lidbrm driver
+BOARD_GPU_DRIVERS := omapdrm
diff --git a/device.mk b/device.mk
index 145f730..70d2c42 100644
--- a/device.mk
+++ b/device.mk
@@ -51,6 +51,10 @@
 	device/ti/jacinto6evm/audio/jamr3/jamr3_mixer_paths.xml:system/etc/jamr3_mixer_paths.xml \
 	device/ti/jacinto6evm/audio/audio_policy.conf:system/etc/audio_policy.conf
 
+# cpuset configuration
+PRODUCT_COPY_FILES += \
+	device/ti/jacinto6evm/init.jacinto6evmboard.cpuset.sh:system/bin/init.jacinto6evmboard.cpuset.sh
+
 PRODUCT_PROPERTY_OVERRIDES := \
 	hwui.render_dirty_regions=false
 
@@ -94,6 +98,7 @@
 	iontest \
 	ion_ti_test2 \
 	vpetest \
+	modetest \
 	libdrm
 
 # Audio HAL modules
@@ -127,7 +132,7 @@
 
 $(call inherit-product, frameworks/native/build/tablet-7in-hdpi-1024-dalvik-heap.mk)
 $(call inherit-product-if-exists, hardware/ti/dra7xx/jacinto6.mk)
-$(call inherit-product-if-exists, hardware/ti/wpan/ti-wpan-products.mk)
+#$(call inherit-product-if-exists, hardware/ti/wpan/ti-wpan-products.mk)
 $(call inherit-product-if-exists, device/ti/proprietary-open/jacinto6/ti-jacinto6-vendor.mk)
 $(call inherit-product-if-exists, device/ti/proprietary-open/jacinto6/ducati-full_jacinto6evm.mk)
 $(call inherit-product-if-exists, device/ti/proprietary-open/wl12xx/wlan/wl12xx-wlan-fw-products.mk)
diff --git a/fastboot.sh b/fastboot.sh
index 77449dd..cd8cf45 100755
--- a/fastboot.sh
+++ b/fastboot.sh
@@ -63,13 +63,13 @@
 #product=`${FASTBOOT} getvar product 2>&1 | grep product | awk '{print$2}'`
 cpu=`${FASTBOOT} getvar cpu 2>&1         | grep cpu     | awk '{print$2}'`
 cputype=`${FASTBOOT} getvar secure 2>&1  | grep secure  | awk '{print$2}'`
-boardrev=`${FASTBOOT} getvar board_rev 2>&1  | grep board_rev  | awk '{print$2}'`
+boardrev=`${FASTBOOT} getvar board_rev 2>&1  | grep board_rev  | awk '{print$2}' | cut -b 1`
 
 
 # Make EMU = HS
 if [ ${cputype} = "EMU" ] || [ ${cputype} = "HS" ]; then
 	cputype="HS"
-	xloader="${PRODUCT_OUT}${cputype}_QSPI_MLO"
+	xloader="${PRODUCT_OUT}u-boot-spl_HS_X-LOADER"
 	uboot="${PRODUCT_OUT}${cputype}_u-boot.img"
 # If fastboot does not support getvar default to GP
 elif [ ${cputype} = "" ] || [ ${cputype} = "GP" ]; then
@@ -81,15 +81,15 @@
 # Based on cpu, decide the dtb to flash, default fall back to J6 and LCD 10
 if [ ${cpu} = "J6ECO" ]; then
 	if [ ${boardrev} = "C" ]; then
-		environment="${PRODUCT_OUT}dra72-evm-lcd-osd.dtb"
+		environment="${PRODUCT_OUT}dra72-evm-revc-lcd-osd101t2045.dtb"
 	else
-		environment="${PRODUCT_OUT}dra72-evm-lcd10.dtb"
+		environment="${PRODUCT_OUT}dra72-evm-lcd-lg.dtb"
 	fi
 else
 	if [ ${boardrev} = "H" ]; then
 		environment="${PRODUCT_OUT}dra7-evm-lcd-osd.dtb"
 	else
-		environment="${PRODUCT_OUT}dra7-evm-lcd10.dtb"
+		environment="${PRODUCT_OUT}dra7-evm-lcd-lg.dtb"
 	fi
 fi
 
diff --git a/fstab.jacinto6evmboard b/fstab.jacinto6evmboard
index 21fa0d2..cc19f84 100644
--- a/fstab.jacinto6evmboard
+++ b/fstab.jacinto6evmboard
@@ -9,6 +9,6 @@
 /dev/block/platform/44000000.ocp/480b4000.mmc/by-name/userdata		/data		ext4	noatime,nosuid,nodev	wait,check
 /dev/block/platform/44000000.ocp/480b4000.mmc/by-name/recovery		/recovery	emmc	defaults		defaults
 
-/devices/44000000.ocp/488c0000.omap_dwc3_2/488d0000.usb*	auto	auto	defaults	voldmanaged=usb0:auto
-/devices/44000000.ocp/48880000.omap_dwc3_1/48890000.usb*	auto	auto	defaults	voldmanaged=usb1:auto
-/devices/44000000.ocp/4809c000.mmc/mmc_host*			auto	auto	defaults	voldmanaged=sdcard1:auto
+/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.jacinto6evmboard.cpuset.sh b/init.jacinto6evmboard.cpuset.sh
new file mode 100755
index 0000000..06f4177
--- /dev/null
+++ b/init.jacinto6evmboard.cpuset.sh
@@ -0,0 +1,5 @@
+#!/system/bin/sh
+
+# Assign all CPUs for foreground (J6 and J6 Eco have different number of cores)
+cat /sys/devices/system/cpu/present > /dev/cpuset/foreground/cpus
+cat /sys/devices/system/cpu/present > /dev/cpuset/foreground/boost/cpus
diff --git a/init.jacinto6evmboard.rc b/init.jacinto6evmboard.rc
index 67619b5..318d6f4 100644
--- a/init.jacinto6evmboard.rc
+++ b/init.jacinto6evmboard.rc
@@ -34,6 +34,9 @@
 
 on boot
 
+    # execute script to set cpuset configuration
+    exec - root root system -- /system/bin/init.jacinto6evmboard.cpuset.sh
+
     # wi-fi
     mkdir /data/misc/wifi/sockets 0770 wifi wifi
     mkdir /data/misc/dhcp 0770 dhcp dhcp
@@ -55,9 +58,6 @@
     mkdir /factory 0775 radio radio
     mount_all /fstab.jacinto6evmboard
 
-# take a wakelock on boot until PM is working
-    write /sys/power/wake_lock hack
-
 service pvrsrvinit /vendor/bin/pvrsrvinit
     class core
     user root
diff --git a/init.jacinto6evmboard.usb.rc b/init.jacinto6evmboard.usb.rc
index 850dad4..bc12a32 100644
--- a/init.jacinto6evmboard.usb.rc
+++ b/init.jacinto6evmboard.usb.rc
@@ -1,97 +1,56 @@
 on boot
-    write /sys/class/android_usb/android0/iManufacturer ${ro.product.manufacturer}
-    write /sys/class/android_usb/android0/iProduct ${ro.product.model}
-    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D101
-    write /sys/class/android_usb/f_mass_storage/inquiry_string "Texas Instruments OMAP5 0100"
+    mount configfs none /config
+    mkdir /config/usb_gadget/g1 0770 shell shell
+    write /config/usb_gadget/g1/idVendor 0x0451
+    write /config/usb_gadget/g1/idProduct 0xD101
+    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
+    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
+    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
+    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
+    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/configs/b.1/strings/0x409/configuration "Conf 1"
+    write /config/usb_gadget/g1/configs/b.1/MaxPower 120
 
-on fs
+    # Create adb+ffs gadget function
+    mkdir /config/usb_gadget/g1/functions/ffs.adb 0770 shell shell
     mkdir /dev/usb-ffs 0770 shell shell
     mkdir /dev/usb-ffs/adb 0770 shell shell
     mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
-    write /sys/class/android_usb/android0/f_ffs/aliases adb
 
-on property:sys.usb.config=none
-    stop adbd
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/bDeviceClass 0
-    setprop sys.usb.state ${sys.usb.config}
+    # Create MTP and PTP functions
+    mkdir /config/usb_gadget/g1/functions/mtp.gs0 0770 shell shell
+    mkdir /config/usb_gadget/g1/functions/ptp.gs1 0770 shell shell
 
-on property:sys.usb.config=adb
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D101
-    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}
+    setprop sys.usb.controller 48890000.usb
+    setprop sys.usb.configfs 1
 
-on property:sys.usb.config=mtp
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D108
-    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=none && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/os_desc/use 0
+    setprop sys.usb.ffs.ready 0
 
-on property:sys.usb.config=mtp,adb
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D109
-    write /sys/class/android_usb/android0/functions ${sys.usb.config}
-    write /sys/class/android_usb/android0/enable 1
-    start adbd
-    setprop sys.usb.state ${sys.usb.config}
+on property:init.svc.adbd=stopped
+    setprop sys.usb.ffs.ready 0
 
-on property:sys.usb.config=rndis
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D103
-    write /sys/class/android_usb/android0/functions ${sys.usb.config}
-    write /sys/class/android_usb/android0/bDeviceClass 224
-    write /sys/class/android_usb/android0/enable 1
-    setprop sys.usb.state ${sys.usb.config}
+on property:sys.usb.config=mtp && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
+    write /config/usb_gadget/g1/os_desc/use 1
+    write /config/usb_gadget/g1/idProduct 0xD108
 
-on property:sys.usb.config=rndis,adb
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D104
-    write /sys/class/android_usb/android0/functions ${sys.usb.config}
-    write /sys/class/android_usb/android0/bDeviceClass 224
-    write /sys/class/android_usb/android0/enable 1
-    start adbd
-    setprop sys.usb.state ${sys.usb.config}
+on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
+    write /config/usb_gadget/g1/os_desc/use 1
+    write /config/usb_gadget/g1/idProduct 0xD109
 
-on property:sys.usb.config=ptp
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D10D
-    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=ptp && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP"
+    write /config/usb_gadget/g1/os_desc/use 1
+    write /config/usb_gadget/g1/idProduct 0xD10D
 
-on property:sys.usb.config=ptp,adb
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D10E
-    write /sys/class/android_usb/android0/functions ${sys.usb.config}
-    write /sys/class/android_usb/android0/enable 1
-    start adbd
-    setprop sys.usb.state ${sys.usb.config}
+on property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP"
+    write /config/usb_gadget/g1/os_desc/use 1
+    write /config/usb_gadget/g1/idProduct 0xD10E
 
-on property:sys.usb.config=mass_storage
-    write /sys/class/android_usb/android0/enable 0
-    write /sys/class/android_usb/android0/idVendor 0451
-    write /sys/class/android_usb/android0/idProduct D100
-    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 0451
-    write /sys/class/android_usb/android0/idProduct D102
-    write /sys/class/android_usb/android0/functions ${sys.usb.config}
-    write /sys/class/android_usb/android0/enable 1
-    start adbd
-    setprop sys.usb.state ${sys.usb.config}
+on property:sys.usb.config=adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0xD101
diff --git a/media_codecs.xml b/media_codecs.xml
index 0c04183..6c34266 100644
--- a/media_codecs.xml
+++ b/media_codecs.xml
@@ -20,20 +20,54 @@
 
 <MediaCodecs>
     <Include href="media_codecs_google_audio.xml" />
-    <Decoders>
-        <MediaCodec name="OMX.TI.DUCATI1.VIDEO.DECODER">
-        <Type name="video/avc"/>
-        <Type name="video/mp4v-es"/>
-        <Type name="video/3gpp"/>
-        <Type name="video/mpeg2"/>
-        <Quirk name="requires-allocate-on-input-ports"/>
-        <Quirk name="requires-allocate-on-output-ports"/>
+   <Decoders>
+        <MediaCodec name="OMX.TI.DUCATI1.VIDEO.DECODER" >
+            <Quirk name="requires-allocate-on-input-ports"/>
+            <Quirk name="requires-allocate-on-output-ports"/>
+
+            <Type name="video/avc">
+                <Limit name="size" min="64x64" max="1920x1088" />
+                <Limit name="alignment" value="16x16" />
+                <Limit name="block-size" value="16x16" />
+                <Limit name="blocks-per-second" min="1" max="489600" />
+                <Limit name="bitrate" range="1-62500000" />
+                <Feature name="adaptive-playback" />
+            </Type>
+
+            <Type name="video/mp4v-es">
+                <Limit name="size" min="64x64" max="1920x1088" />
+                <Limit name="alignment" value="16x16" />
+                <Limit name="block-size" value="16x16" />
+                <Limit name="blocks-per-second" min="1" max="489600" />
+                <Limit name="bitrate" range="1-62500000" />
+            </Type>
+
+            <Type name="video/3gpp">
+                <Limit name="size" min="64x64" max="1920x1088" />
+                <Limit name="alignment" value="16x16" />
+                <Limit name="block-size" value="16x16" />
+                <Limit name="blocks-per-second" min="1" max="489600" />
+                <Limit name="bitrate" range="1-62500000" />
+            </Type>
+
+            <Type name="video/mpeg2">
+                <Limit name="size" min="64x64" max="1920x1088" />
+                <Limit name="alignment" value="16x16" />
+                <Limit name="block-size" value="16x16" />
+                <Limit name="blocks-per-second" min="1" max="489600" />
+                <Limit name="bitrate" range="1-62500000" />
+            </Type>
         </MediaCodec>
     </Decoders>
-    <Encoders>
+   <Encoders>
         <MediaCodec name="OMX.TI.DUCATI1.VIDEO.H264E" type="video/avc" >
             <Quirk name="requires-allocate-on-input-ports" />
             <Quirk name="requires-allocate-on-output-ports" />
+            <Limit name="bitrate" range="1-50000000" />
+            <Limit name="block-size" value="16x16" />
+            <Limit name="alignment" value="16x16" />
+            <Limit name="size" min="96x80" max="1920x1088" />
+            <Limit name="blocks-per-second" min="1" max="489600" />
         </MediaCodec>
     </Encoders>
     <Include href="media_codecs_google_video.xml" />
diff --git a/sepolicy/file.te b/sepolicy/file.te
new file mode 100644
index 0000000..2d8644d
--- /dev/null
+++ b/sepolicy/file.te
@@ -0,0 +1,2 @@
+# /config
+type configfs, fs_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index bcab2d3..666c7e1 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -23,7 +23,7 @@
 /dev/rtc0			u:object_r:rtc:s0
 
 #Block devices
-/dev/block/mmcblk0p9           u:object_r:system_block_device:s0
-/dev/block/mmcblk0p7           u:object_r:recovery_block_device:s0
-/dev/block/mmcblk0p10          u:object_r:cache_block_device:s0
-/dev/block/mmcblk0p13          u:object_r:userdata_block_device:s0
+/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
diff --git a/sepolicy/genfs_contexts b/sepolicy/genfs_contexts
new file mode 100644
index 0000000..50c7cd7
--- /dev/null
+++ b/sepolicy/genfs_contexts
@@ -0,0 +1 @@
+genfscon configfs / u:object_r:configfs:s0
diff --git a/sepolicy/init.te b/sepolicy/init.te
index 1c88dbc..b0822c6 100644
--- a/sepolicy/init.te
+++ b/sepolicy/init.te
@@ -2,3 +2,8 @@
 allow init self:capability sys_module;
 #Create symlinks for storage
 allow init tmpfs:lnk_file create_file_perms;
+
+# /config
+allow init configfs:dir create_dir_perms;
+allow init configfs:file w_file_perms;
+allow init configfs:lnk_file create;
diff --git a/sepolicy/ueventd.te b/sepolicy/ueventd.te
index d31dc0e..690cf1e 100644
--- a/sepolicy/ueventd.te
+++ b/sepolicy/ueventd.te
@@ -1,3 +1,3 @@
 #Rules for crda operations
-allow ueventd self:netlink_socket { create_socket_perms };
+allow ueventd self:netlink_generic_socket { create_socket_perms };
 allow ueventd system_file:file { execute_no_trans };