Merge "db845c: Remove gralloc_gbm implmentation"
diff --git a/Android.mk b/Android.mk
index 12ec650..ed787c7 100644
--- a/Android.mk
+++ b/Android.mk
@@ -20,7 +20,7 @@
 # to only building on ARM if they include assembly. Individual makefiles
 # are responsible for having their own logic, for fine-grained control.
 
-ifneq ($(filter db845c pixel3_mainline, $(TARGET_BOARD_PLATFORM)),)
+ifneq ($(filter db845c pixel3_mainline rb5, $(TARGET_BOARD_PLATFORM)),)
 
 LOCAL_PATH := $(call my-dir)
 
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 84cf20f..e5d63dd 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -11,8 +11,10 @@
 
 PRODUCT_MAKEFILES := \
     $(LOCAL_DIR)/db845c.mk \
+    $(LOCAL_DIR)/rb5.mk \
     $(LOCAL_DIR)/pixel3_mainline.mk
 
 COMMON_LUNCH_CHOICES := \
     db845c-userdebug \
+    rb5-userdebug \
     pixel3_mainline-userdebug
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index 5a0953c..c0cd55d 100644
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -72,6 +72,20 @@
     return PORT_HDMI;
 }
 
+static int get_audio_card(int direction, int port) {
+    struct pcm_params* params = NULL;
+    int card = 0;
+
+    while (!params && card < 8) {
+	/* Find the first input/output device that works */
+        params = pcm_params_get(card, port, direction);
+	card++;
+    }
+    pcm_params_free(params);
+
+    return card - 1;
+}
+
 static void timestamp_adjust(struct timespec* ts, ssize_t frames, uint32_t sampling_rate) {
     /* This function assumes the adjustment (in nsec) is less than the max value of long,
      * which for 32-bit long this is 2^31 * 1e-9 seconds, slightly over 2 seconds.
@@ -173,9 +187,10 @@
     out->unavailable = true;
     unsigned int pcm_retry_count = PCM_OPEN_RETRIES;
     int out_port = get_audio_output_port(out->devices);
+    int out_card = get_audio_card(PCM_OUT, out_port);
 
     while (1) {
-        out->pcm = pcm_open(CARD_OUT, out_port, PCM_OUT | PCM_MONOTONIC, &out->config);
+        out->pcm = pcm_open(out_card, out_port, PCM_OUT | PCM_MONOTONIC, &out->config);
         if ((out->pcm != NULL) && pcm_is_ready(out->pcm)) {
             break;
         } else {
@@ -433,9 +448,10 @@
     struct alsa_audio_device *adev = in->dev;
     in->unavailable = true;
     unsigned int pcm_retry_count = PCM_OPEN_RETRIES;
+    int in_card = get_audio_card(PCM_IN, PORT_BUILTIN_MIC);
 
     while (1) {
-        in->pcm = pcm_open(CARD_IN, PORT_BUILTIN_MIC, PCM_IN | PCM_MONOTONIC, &in->config);
+        in->pcm = pcm_open(in_card, PORT_BUILTIN_MIC, PCM_IN | PCM_MONOTONIC, &in->config);
         if ((in->pcm != NULL) && pcm_is_ready(in->pcm)) {
             break;
         } else {
@@ -795,7 +811,8 @@
 
     struct alsa_audio_device *ladev = (struct alsa_audio_device *)dev;
     int out_port = get_audio_output_port(devices);
-    struct pcm_params* params = pcm_params_get(CARD_OUT, out_port, PCM_OUT);
+    int out_card = get_audio_card(PCM_OUT, out_port);
+    struct pcm_params* params = pcm_params_get(out_card, out_port, PCM_OUT);
     if (!params) {
         return -ENOSYS;
     }
@@ -991,7 +1008,8 @@
 
     struct alsa_audio_device *ladev = (struct alsa_audio_device *)dev;
 
-    struct pcm_params* params = pcm_params_get(CARD_IN, PORT_BUILTIN_MIC, PCM_IN);
+    int in_card = get_audio_card(PCM_IN, PORT_BUILTIN_MIC);
+    struct pcm_params* params = pcm_params_get(in_card, PORT_BUILTIN_MIC, PCM_IN);
     if (!params) {
         return -ENOSYS;
     }
@@ -1139,13 +1157,14 @@
 
     *device = &adev->hw_device.common;
 
-    adev->mixer = mixer_open(CARD_OUT);
+    int out_card = get_audio_card(PCM_OUT, 0);
+    adev->mixer = mixer_open(out_card);
     if (!adev->mixer) {
         ALOGE("Unable to open the mixer, aborting.");
         goto error_1;
     }
 
-    adev->audio_route = audio_route_init(CARD_OUT, MIXER_XML_PATH);
+    adev->audio_route = audio_route_init(out_card, MIXER_XML_PATH);
     if (!adev->audio_route) {
         ALOGE("%s: Failed to init audio route controls, aborting.", __func__);
         goto error_2;
diff --git a/audio/audio_hw.h b/audio/audio_hw.h
index 3e8e27c..2e45e02 100644
--- a/audio/audio_hw.h
+++ b/audio/audio_hw.h
@@ -22,10 +22,8 @@
 
 #include "fir_filter.h"
 
-#define CARD_OUT 0
 #define PORT_HDMI 0
 #define PORT_INTERNAL_SPEAKER 1
-#define CARD_IN 0
 #define PORT_BUILTIN_MIC 3
 
 #define MIXER_XML_PATH "/vendor/etc/mixer_paths.xml"
diff --git a/db845c.mk b/db845c.mk
index 1d118f8..beeb2cb 100644
--- a/db845c.mk
+++ b/db845c.mk
@@ -21,8 +21,6 @@
 ifeq ($(DB845C_USES_GKI), true)
   DB845C_MODS := $(wildcard $(DB845C_KERNEL_DIR)/*.ko)
   ifneq ($(DB845C_MODS),)
-    BOARD_VENDOR_KERNEL_MODULES += $(DB845C_MODS)
-    DB845C_ONLY_VENDOR := %/msm.ko
-    BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(filter-out $(DB845C_ONLY_VENDOR),$(DB845C_MODS))
+    BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(DB845C_MODS)
   endif
 endif
diff --git a/db845c/device.mk b/db845c/device.mk
index 1b6907f..502b0fe 100644
--- a/db845c/device.mk
+++ b/db845c/device.mk
@@ -61,6 +61,7 @@
     tqftpserv
 
 PRODUCT_COPY_FILES += \
+    device/linaro/dragonboard/qcom/set_udc.sh:$(TARGET_COPY_OUT_VENDOR)/bin/set_udc.sh \
     device/linaro/dragonboard/qcom/init.qcom.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.qcom.rc
 
 # Install scripts to set Ethernet MAC address
diff --git a/device-common.mk b/device-common.mk
index 718d398..dec2c72 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -51,7 +51,6 @@
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.hardware.gralloc=minigbm_msm \
     ro.hardware.hwcomposer=drm \
-    debug.sf.no_hw_vsync=1 \
     ro.opengles.version=196608 \
     persist.demo.rotationlock=1
 
@@ -120,7 +119,7 @@
     android.hardware.audio.service \
     android.hardware.audio@7.0-impl \
     android.hardware.audio.effect@7.0-impl \
-    android.hardware.soundtrigger@2.2-impl \
+    android.hardware.soundtrigger@2.3-impl \
     android.hardware.bluetooth.audio@2.0-impl
 
 # Build default bluetooth a2dp and usb audio HALs
@@ -167,6 +166,17 @@
 PRODUCT_COPY_FILES +=  \
         device/linaro/dragonboard/etc/permissions/android.software.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.xml
 
+
+# External Web Cam support
+PRODUCT_PACKAGES += \
+	android.hardware.camera.provider@2.4-impl \
+	android.hardware.camera.provider@2.4-external-service
+
+PRODUCT_COPY_FILES += \
+    frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
+    $(LOCAL_PATH)/etc/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
+    $(LOCAL_PATH)/etc/external_camera_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/external_camera_config.xml
+
 # Keymaster
 PRODUCT_PACKAGES += \
     android.hardware.keymaster@3.0-impl \
diff --git a/etc/external_camera_config.xml b/etc/external_camera_config.xml
new file mode 100644
index 0000000..991ff40
--- /dev/null
+++ b/etc/external_camera_config.xml
@@ -0,0 +1,28 @@
+<ExternalCamera>
+    <Provider>
+        <ignore> <!-- Internal video devices to be ignored by external camera HAL -->
+        </ignore>
+    </Provider>
+    <!-- See ExternalCameraUtils.cpp for default values of Device configurations below -->
+    <Device>
+        <!-- Max JPEG buffer size in bytes-->
+        <MaxJpegBufferSize bytes="3145728"/> <!-- 3MB (~= 1080p YUV420) -->
+        <!-- Size of v4l2 buffer queue when streaming >= 30fps -->
+        <!-- Larger value: more request can be cached pipeline (less janky)  -->
+        <!-- Smaller value: use less memory -->
+        <NumVideoBuffers count="4"/>
+        <!-- Size of v4l2 buffer queue when streaming < 30fps -->
+        <NumStillBuffers count="2"/>
+
+        <!-- List of maximum fps for various output sizes -->
+        <!-- Any image size smaller than the size listed in Limit row will report
+            fps (as minimum frame duration) up to the fpsBound value. -->
+        <FpsList>
+            <!-- width/height must be increasing, fpsBound must be decreasing-->
+            <Limit width="640" height="480" fpsBound="30.0"/>
+            <Limit width="1280" height="720" fpsBound="15.0"/>
+            <Limit width="1920" height="1080" fpsBound="10.0"/>
+            <!-- image size larger than the last entry will not be supported-->
+        </FpsList>
+    </Device>
+</ExternalCamera>
diff --git a/etc/media_profiles.xml b/etc/media_profiles.xml
new file mode 100644
index 0000000..2ffb7a3
--- /dev/null
+++ b/etc/media_profiles.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2017, 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.
+*/
+-->
+<!DOCTYPE MediaSettings SYSTEM "/system/etc/media_profiles_V1_0.dtd">
+<MediaSettings>
+    <!-- Each camcorder profile defines a set of predefined configuration parameters -->
+    <CamcorderProfiles cameraId="0">
+	<!-- Iffy! Lets pretend vga (640x480) is 480p! -->
+        <EncoderProfile quality="480p" fileFormat="mp4" duration="30">
+            <Video codec="h264"
+                   bitRate="6000000"
+                   width="640"
+                   height="480"
+                   frameRate="30" />
+            <Audio codec="amrnb"
+                   bitRate="12200"
+                   sampleRate="8000"
+                   channels="1" />
+        </EncoderProfile>
+
+        <EncoderProfile quality="qvga" fileFormat="mp4" duration="60">
+            <Video codec="h264"
+                   bitRate="128000"
+                   width="320"
+                   height="240"
+                   frameRate="30" />
+            <Audio codec="amrnb"
+                   bitRate="12200"
+                   sampleRate="8000"
+                   channels="1" />
+        </EncoderProfile>
+
+        <EncoderProfile quality="timelapseqcif" fileFormat="mp4" duration="30">
+            <Video codec="h264"
+                   bitRate="192000"
+                   width="176"
+                   height="144"
+                   frameRate="30" />
+            <!-- audio setting is ignored -->
+            <Audio codec="amrnb"
+                   bitRate="12200"
+                   sampleRate="8000"
+                   channels="1" />
+        </EncoderProfile>
+
+        <ImageEncoding quality="95" />
+        <ImageEncoding quality="80" />
+        <ImageEncoding quality="70" />
+        <ImageDecoding memCap="20000000" />
+
+    </CamcorderProfiles>
+
+    <EncoderOutputFileFormat name="3gp" />
+    <EncoderOutputFileFormat name="mp4" />
+
+    <!--
+         If a codec is not enabled, it is invisible to the applications
+         In other words, the applications won't be able to use the codec
+         or query the capabilities of the codec at all if it is disabled
+    -->
+    <VideoEncoderCap name="h264" enabled="true"
+        minBitRate="64000" maxBitRate="12000000"
+        minFrameWidth="176" maxFrameWidth="1280"
+        minFrameHeight="144" maxFrameHeight="720"
+        minFrameRate="15" maxFrameRate="30" />
+
+    <VideoEncoderCap name="h263" enabled="true"
+        minBitRate="64000" maxBitRate="12000000"
+        minFrameWidth="176" maxFrameWidth="1280"
+        minFrameHeight="144" maxFrameHeight="720"
+        minFrameRate="15" maxFrameRate="30" />
+
+    <VideoEncoderCap name="m4v" enabled="true"
+        minBitRate="64000" maxBitRate="12000000"
+        minFrameWidth="176" maxFrameWidth="1280"
+        minFrameHeight="144" maxFrameHeight="720"
+        minFrameRate="15" maxFrameRate="30" />
+
+    <AudioEncoderCap name="aac" enabled="true"
+        minBitRate="8000" maxBitRate="96000"
+        minSampleRate="8000" maxSampleRate="48000"
+        minChannels="1" maxChannels="1" />
+
+    <AudioEncoderCap name="amrwb" enabled="true"
+        minBitRate="6600" maxBitRate="23050"
+        minSampleRate="16000" maxSampleRate="16000"
+        minChannels="1" maxChannels="1" />
+
+    <AudioEncoderCap name="amrnb" enabled="true"
+        minBitRate="5525" maxBitRate="12200"
+        minSampleRate="8000" maxSampleRate="8000"
+        minChannels="1" maxChannels="1" />
+
+    <!--
+        FIXME:
+        We do not check decoder capabilities at present
+        At present, we only check whether windows media is visible
+        for TEST applications. For other applications, we do
+        not perform any checks at all.
+    -->
+    <VideoDecoderCap name="wmv" enabled="false"/>
+    <AudioDecoderCap name="wma" enabled="false"/>
+</MediaSettings>
diff --git a/fstab.common b/fstab.common
index 4ee2af2..f1bd034 100644
--- a/fstab.common
+++ b/fstab.common
@@ -1,5 +1,5 @@
 system		/system		ext4	noatime,ro,errors=panic		wait,logical,first_stage_mount,slotselect
-/dev/block/platform/soc@0/1d84000.ufshc/by-name/userdata /data		ext4	discard,noatime,noauto_da_alloc,data=ordered,user_xattr,barrier=1,inlinecrypt	wait,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,quota
+/dev/block/platform/soc@0/1d84000.ufshc/by-name/userdata /data		ext4	discard,noatime,noauto_da_alloc,data=ordered,user_xattr,barrier=1,inlinecrypt	latemount,wait,formattable,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota
 /dev/block/platform/soc@0/1d84000.ufshc/by-name/metadata	/metadata	ext4	noatime,nosuid,nodev,discard					wait,formattable,first_stage_mount,check
 /dev/block/platform/soc@0/1d84000.ufshc/by-name/misc /misc emmc defaults defaults
 /devices/platform/soc@0/8804000.sdhci/mmc_host/mmc*	auto	auto	defaults	voldmanaged=sdcard1:auto
diff --git a/init.common.rc b/init.common.rc
index 483b42f..f15640a 100644
--- a/init.common.rc
+++ b/init.common.rc
@@ -1,14 +1,20 @@
 import init.${ro.hardware}.usb.rc
 import init.${ro.hardware}.power.rc
 
+on early-fs
+    start vold
+
 on fs
-    mount_all /vendor/etc/fstab.${ro.hardware}
+    mount_all /vendor/etc/fstab.${ro.hardware} --early
     swapon_all /vendor/etc/fstab.${ro.hardware}
 
 on post-fs
     # set RLIMIT_MEMLOCK to 64MB
     setrlimit 8 67108864 67108864
 
+on late-fs
+    mount_all /vendor/etc/fstab.${ro.hardware} --late
+
 on init
     # For legacy support
     # See storage config details at http://source.android.com/tech/storage/
diff --git a/init.common.usb.rc b/init.common.usb.rc
index 06ccd54..79d4d58 100644
--- a/init.common.usb.rc
+++ b/init.common.usb.rc
@@ -26,13 +26,15 @@
     mkdir /dev/usb-ffs/ptp 0770 mtp mtp
     mount functionfs mtp /dev/usb-ffs/mtp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
     mount functionfs ptp /dev/usb-ffs/ptp rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1
-    setprop sys.usb.controller "a600000.dwc3"
 
     setprop sys.usb.mtp.device_type 3
     setprop sys.usb.configfs 1
     setprop sys.usb.ffs.aio_compat 1
     symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
 
+on property:vendor.usb.controller=*
+    setprop sys.usb.controller ${vendor.usb.controller}
+
 on property:sys.usb.config=none && property:sys.usb.configfs=1
     write /config/usb_gadget/g1/os_desc/use 0
 
@@ -88,3 +90,13 @@
 
 on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=1
     write /config/usb_gadget/g1/idProduct 0x2d05
+
+on post-fs
+    start set_udc
+
+service set_udc /vendor/bin/set_udc.sh
+    class core
+    user root
+    group system
+    disabled
+    oneshot
diff --git a/installer/rb5/README b/installer/rb5/README
new file mode 100644
index 0000000..ee59bdb
--- /dev/null
+++ b/installer/rb5/README
@@ -0,0 +1,70 @@
+These instructions will help you flashing the prebuilt bootloader
+and AOSP images(built from sources) on rb5.
+
+First, make sure you have built the AOSP images for RB5 by
+running the rb5-userdebug lunch target.
+
+
+Boot the board into fastboot mode:
+----------------------------------
+The easiest way to boot into fastboot mode is to run something
+like "adb reboot bootloader" from the host, or
+"reboot bootloader" on the device.  However, this
+functionality may depend on the software installed on the board
+to work, so you may need to manually enter fastboot mode as
+follows.
+
+To manually enter fastboot mode:
+--------------------------------
+* To manually boot the board into fastboot mode, press DOWN arrow
+  key over serial UART console when restarting the board.
+
+                         OR
+
+* Follow the instructions here
+https://www.96boards.org/documentation/consumer/dragonboard/qualcomm-robotics-rb5/installation/board-recovery.md.html#booting-into-fastboot
+
+
+Flash the board:
+----------------
+Once the board is in fastboot mode, you can then flash bootloader
+binaries and AOSP images by running the following script from
+device/linaro/dragonboard/installer/rb5/ directory:
+
+  $ ./flash-all-aosp.sh
+
+
+Troubleshooting:
+----------------
+* If you have flashed AOSP images and you can see the boot logs
+  on Serial prompt but no UI then try updating the lt9611uxc
+  firmware version. Factory shipped RB5 has an older version of
+  lt9611uxc firmware flashed on it and it is incompatible with
+  upstream kernel. Try updating the firmware version by running
+  the following adb shell commands:
+
+  $ adb wait-for-device; adb root; adb shell "echo 1 > /sys/bus/i2c/devices/5-002b/lt9611uxc_firmware"
+
+* Make sure the USB-C cable is connected. As it has to be
+  removed to fully power the device down, it is easy to forget
+  to reconnect it!
+
+* If you cannot get the board into fastboot mode, or for some
+  reason the flash-all-aosp.sh script does not work, you can do
+  a full recovery flash of the board using the following
+  instructions.
+
+
+Recovery:
+--------
+First boot into recovery mode by follwing the recovery
+instructions from here:
+https://www.96boards.org/documentation/consumer/dragonboard/qualcomm-robotics-rb5/installation/board-recovery.md.html
+
+Then run the recovery script from the
+device/linaro/dragonboard/installer/rb5/ directory:
+
+  $ ./recovery.sh
+
+This will do a recovery flash of the ptable and bootloader
+binaries.
diff --git a/installer/rb5/flash-all-aosp.sh b/installer/rb5/flash-all-aosp.sh
new file mode 100755
index 0000000..9eea95b
--- /dev/null
+++ b/installer/rb5/flash-all-aosp.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+INSTALLER_DIR="`dirname ${0}`"
+
+FIRMWARE_DIR="rb5-bootloader-ufs-aosp"
+
+# for cases that don't run "lunch rb5-userdebug"
+if [ -z "${ANDROID_BUILD_TOP}" ]; then
+    ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
+    ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/rb5"
+fi
+
+if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
+    echo "FLASH-ALL-AOSP: error in locating out/target directory, check if it exist"
+    exit
+fi
+
+echo "android out dir:${ANDROID_PRODUCT_OUT}"
+
+# TODO: Pull one-time recovery/qdl path out of standard install
+# Flash bootloader firmware files
+if [ ! -d "${INSTALLER_DIR}/${FIRMWARE_DIR}/" ]; then
+    echo "FLASH-ALL-AOSP: No firmware directory? Make sure binaries have been provided"
+    exit
+fi
+
+pushd "${INSTALLER_DIR}/${FIRMWARE_DIR}" > /dev/null
+./flashall
+popd > /dev/null
+
+echo "FLASH-ALL-AOSP: Flash boot img"
+fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
+echo "FLASH-ALL-AOSP: Flash super/dynamic image"
+fastboot flash super "${ANDROID_PRODUCT_OUT}"/super.img
+echo "FLASH-ALL-AOSP: Flash userdata image"
+fastboot flash userdata "${ANDROID_PRODUCT_OUT}"/userdata.img
+echo "FLASH-ALL-AOSP: Flash vendor_boot image"
+fastboot flash vendor_boot "${ANDROID_PRODUCT_OUT}"/vendor_boot.img
+echo "FLASH-ALL-AOSP: Formatting metadata"
+fastboot format:ext4 metadata
+
+fastboot reboot
+
+echo "FLASH-ALL-AOSP: Updating lt9611uxc firmware version"
+adb wait-for-device
+VERSION=`adb shell su 0 cat /sys/bus/i2c/devices/5-002b/lt9611uxc_firmware`
+if [ "$VERSION" -lt "43" ] ; then
+    echo "FLASH-ALL-AOSP: lt9611uxc 5-002b: Updating firmware... May take up to 120 seconds. Do not switch off the device"
+    adb shell "echo 1 | su 0 tee /sys/bus/i2c/devices/5-002b/lt9611uxc_firmware > /dev/null"
+    echo "FLASH-ALL-AOSP: lt9611uxc 5-002b: Firmware updates successfully"
+    echo "FLASH-ALL-AOSP: Rebooting"
+    adb reboot
+fi
+echo "FLASH-ALL-AOSP: Done"
diff --git a/installer/rb5/qdl b/installer/rb5/qdl
new file mode 100755
index 0000000..fc45c0a
--- /dev/null
+++ b/installer/rb5/qdl
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/LICENSE b/installer/rb5/rb5-bootloader-ufs-aosp/LICENSE
new file mode 100644
index 0000000..6b9a0a2
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/LICENSE
@@ -0,0 +1,206 @@
+PLEASE READ THIS LICENSE AGREEMENT ("AGREEMENT") CAREFULLY.  THIS AGREEMENT IS

+A BINDING LEGAL AGREEMENT ENTERED INTO BY AND BETWEEN YOU (OR IF YOU ARE

+ENTERING INTO THIS AGREEMENT ON BEHALF OF AN ENTITY, THEN THE ENTITY THAT YOU

+REPRESENT) AND QUALCOMM TECHNOLOGIES, INC. ("QTI" "WE" "OUR" OR "US").  THIS IS

+THE AGREEMENT THAT APPLIES TO YOUR USE OF THE DESIGNATED AND/OR LINKED

+APPLICATIONS, THE ENCLOSED QUALCOMM TECHNOLOGIES' MATERIALS, INCLUDING RELATED

+DOCUMENTATION AND ANY UPDATES OR IMPROVEMENTS THEREOF

+(COLLECTIVELY, "MATERIALS").  BY USING OR COMPLETING THE INSTALLATION OF THE

+MATERIALS, YOU ARE ACCEPTING THIS AGREEMENT AND YOU AGREE TO BE BOUND BY ITS

+TERMS AND CONDITIONS.  IF YOU DO NOT AGREE TO THESE TERMS, QTI IS UNWILLING TO

+AND DOES NOT LICENSE THE MATERIALS TO YOU. IF YOU DO NOT AGREE TO THESE TERMS

+YOU MUST DISCONTINUE THE INSTALLATION PROCESS AND YOU MAY NOT USE THE MATERIALS

+OR RETAIN ANY COPIES OF THE MATERIALS. ANY USE OR POSSESSION OF THE MATERIALS

+BY YOU IS SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT.

+

+1. RIGHT TO USE DELIVERABLES; RESTRICTIONS.

+

+  1.1 License.  Subject to the terms and conditions of this Agreement,

+  including, without limitation, the restrictions, conditions, limitations and

+  exclusions set forth in this Agreement, QTI hereby grants to you a

+  nonexclusive, limited license under QTI's copyrights to:  (i) install and use

+  the Materials; and (ii) to reproduce and redistribute the binary code portions

+  of the Materials (the "Redistributable Binary Code").  You may make and use a

+  reasonable number of copies of any documentation.

+

+  1.2 Redistribution Restrictions.  Distribution of the Redistributable Binary

+  Code is subject to the following restrictions: (i) Redistributable Binary Code

+  may only be distributed in binary format and may not be distributed in source

+  code format:; (ii)  the Redistributable Binary Code may only operate in

+  conjunction with platforms incorporating Qualcomm Technologies, Inc. chipsets;

+  (iii) redistribution of the Redistributable Binary Code must include the .txt

+  file setting forth the terms and condition of this Agreement; (iv) you may not

+  use Qualcomm Technologies' or its affiliates or subsidiaries name, logo or

+  trademarks; and (v) copyright, trademark, patent and any other notices that

+  appear on the Materials may not be removed or obscured.

+

+  1.3 Additional Restrictions.  Except as expressly permitted by this Agreement,

+  you shall have no right to sublicense, transfer or otherwise disclose the

+  Materials to any third party.  You shall not reverse engineer, reverse

+  assemble, reverse translate, decompile or reduce to source code form any

+  portion of the Materials provided in object code form or executable form.

+  Except for the purposes expressly permitted in this Agreement, You shall not

+  use the Materials for any other purpose.  QTI (or its licensors) shall retain

+  title and all ownership rights in and to the Materials and any alterations,

+  modifications (including all derivative works), translations or adaptations

+  made of the Materials, and all copies thereof, and nothing herein shall be

+  deemed to grant any right to You under any of QTI's or its affiliates'

+  patents.  You shall not subject the Materials to any third party license

+  terms (e.g., open source license terms).  You shall not use the Materials for

+  the purpose of identifying or providing evidence to support any potential

+  patent infringement claim against QTI, its affiliates, or any of QTI's or

+  QTI's affiliates' suppliers and/or direct or indirect customers.  QTI hereby

+  reserves all rights not expressly granted herein.

+

+  1.4 Third Party Software and Materials.  The Software may contain or link to

+  certain software and/or materials that are written or owned by third parties.

+  Such third party code and materials may be licensed under separate or

+  different terms and conditions and are not licensed to you under the terms of

+  this Agreement.  You agree to comply with all terms and conditions imposed on

+  you in the applicable third party licenses.  Such terms and conditions may

+  impose certain obligations on you as a condition to the permitted use of such

+  third party code and materials.  QTI does not represent or warrant that such

+  third party licensors have or will continue to license or make available their

+  code and materials to you.

+

+  1.5 Feedback.  QTI may from time to time receive suggestions, feedback or

+  other information from You regarding the Materials.  Any suggestions, feedback

+  or other disclosures received from You are and shall be entirely voluntary on

+  the part of You.  Notwithstanding any other term in this Agreement, QTI shall

+  be free to use suggestions, feedback or other information received from You,

+  without obligation of any kind to You.  The Parties agree that all inventions,

+  product improvements, and modifications conceived of or made by QTI that are

+  based, either in whole or in part, on ideas, feedback, suggestions, or

+  recommended improvements received from You are the exclusive property of QTI,

+  and all right, title and interest in and to any such inventions, product

+  improvements, and modifications will vest solely in QTI.

+

+  1.6 No Technical Support.  QTI is under no obligation to provide any form of

+  technical support for the Materials, and if QTI, in its sole discretion,

+  chooses to provide any form of support or information relating to the

+  Materials, such support and information shall be deemed confidential and

+  proprietary to QTI.

+

+2. WARRANTY DISCLAIMER.  YOU EXPRESSLY ACKNOWLEDGE AND AGREE THAT THE USE OF

+THE MATERIALS IS AT YOUR SOLE RISK.  THE MATERIALS AND TECHNICAL SUPPORT, IF

+ANY, ARE PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR

+IMPLIED.  QTI ITS LICENSORS AND AFFILIATES MAKE NO WARRANTIES, EXPRESS OR

+IMPLIED, WITH RESPECT TO THE MATERIALS OR ANY OTHER INFORMATION OR DOCUMENTATION

+PROVIDED UNDER THIS AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF

+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR

+ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF

+DEALING OR COURSE OF PERFORMANCE.  NOTHING CONTAINED IN THIS AGREEMENT SHALL BE

+CONSTRUED AS (I) A WARRANTY OR REPRESENTATION BY QTI, ITS LICENSORS OR

+AFFILIATES AS TO THE VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER

+INTELLECTUAL PROPERTY RIGHT OR (II) A WARRANTY OR REPRESENTATION BY QTI THAT ANY

+MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT OF PATENTS, COPYRIGHTS OR

+OTHER INTELLECTUAL PROPERTY RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE

+RESPONSIBILITY OF YOU TO MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO

+THE ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF

+THIRD PARTIES.

+

+3. NO OTHER LICENSES OR INTELLECTUAL PROPERTY RIGHTS. Neither this Agreement,

+nor any act by QTI or any of its affiliates pursuant to this Agreement or

+relating to the Materials (including, without limitation, the provision by QTI

+or its affiliates of the Materials), shall provide to You any license or any

+other rights whatsoever under any patents, trademarks, trade secrets, copyrights

+or any other intellectual property of QTI or any of its affiliates, except for

+the copyright rights expressly licensed under this Agreement. You understand and

+agree that:

+

+  (i) Neither this Agreement, nor delivery of the Materials, grants any right to

+  practice, or any other right at all with respect to, any patent of QTI or any

+  of its affiliates; and

+

+  (ii) A separate license agreement from QUALCOMM Incorporated is needed to use

+  or practice any patent of QUALCOMM Incorporated. You agree not to contend in

+  any context that, as a result of the provision or use of the Materials, either

+  QTI or any of its affiliates has any obligation to extend, or You or any other

+  party has obtained any right to, any license, whether express or implied, with

+  respect to any patent of QTI or any of its affiliates for any purpose.

+

+4. TERMINATION.  This Agreement shall be effective upon acceptance, or access or

+use of the Materials (whichever occurs first) by You and shall continue until

+terminated. You may terminate the Agreement at any time by deleting and

+destroying all copies of the Materials and all related information in Your

+possession or control. This Agreement terminates immediately and automatically,

+with or without notice, if You fail to comply with any provision hereof.

+Additionally, QTI may at any time terminate this Agreement, without cause, upon

+notice to You. Upon termination You must, to the extent possible, delete or

+destroy all copies of the Materials in Your possession and the license granted

+to You in this Agreement shall terminate. Sections 1.2 through 10 shall survive

+the termination of this Agreement. In the event that any restrictions,

+conditions, limitations are found to be either invalid or unenforceable, the

+rights granted to You in Section 1 (License) shall be null, void and ineffective

+from the Effective Date, and QTI shall also have the right to terminate this

+Agreement immediately, and with retroactive effect to the effective date.

+

+5. LIMITATION OF LIABILITY.  IN NO EVENT SHALL QTI, QTI's AFFILIATES OR ITS

+LICENSORS BE LIABLE TO YOU FOR ANY INCIDENTAL, CONSEQUENTIAL OR SPECIAL DAMAGES,

+INCLUDING BUT NOT LIMITED TO ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL

+DAMAGES, ARISING OUT OF THE USE OR INABILITY TO USE, OR THE DELIVERY OR FAILURE

+TO DELIVER, ANY OF THE DELIVERABLES, OR ANY BREACH OF ANY OBLIGATION UNDER THIS

+AGREEMENT, EVEN IF QTI HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+THE FOREGOING LIMITATION OF LIABILITY SHALL REMAIN IN FULL FORCE AND EFFECT

+REGARDLESS OF WHETHER YOUR REMEDIES HEREUNDER ARE DETERMINED TO HAVE FAILED OF

+THEIR ESSENTIAL PURPOSE.  THE ENTIRE LIABILITY OF QTI, QTI's AFFILIATES AND ITS

+LICENSORS, AND THE SOLE AND EXCLUSIVE REMEDY OF YOU, FOR ANY CLAIM OR CAUSE OF

+ACTION ARISING HEREUNDER (WHETHER IN CONTRACT, TORT, OR OTHERWISE) SHALL NOT

+EXCEED US$50.

+

+6. INDEMNIFICATION.  You agree to indemnify and hold harmless QTI and its

+officers, directors, employees and successors and assigns against any and all

+third party claims, demands, causes of action, losses, liabilities, damages,

+costs and expenses, incurred by QTI (including but not limited to costs of

+defense, investigation and reasonable attorney's fees) arising out of, resulting

+from or related to: (i) any breach of this Agreement by You; and (ii) your acts,

+omissions, products and services.  If requested by QTI, You agree to defend QTI

+in connection with any third party claims, demands, or causes of action

+resulting from, arising out of or in connection with any of the foregoing.

+

+7. ASSIGNMENT.  You shall not assign this Agreement or any right or interest

+under this Agreement, nor delegate any obligation to be performed under this

+Agreement, without QTI's prior written consent.  For purposes of this Section 7,

+an "assignment" by You under this Section shall be deemed to include, without

+limitation, any merger, consolidation, sale of all or substantially all of its

+assets, or any substantial change in the management or control of You.

+Any attempted assignment in contravention of this Section 9 shall be void.

+QTI may freely assign this Agreement or delegate any or all of its rights and

+obligations hereunder to any third party.

+

+8. COMPLIANCE WITH LAWS; APPLICABLE LAW.  You agree to comply with all

+applicable local, international and national laws and regulations and with U.S.

+Export Administration Regulations, as they apply to the subject matter of this

+Agreement.  This Agreement is governed by the laws of the State of California,

+excluding California's choice of law rules.

+

+9. CONTRACTING PARTIES.  If the Materials are downloaded on any computer owned

+by a corporation or other legal entity, then this Agreement is formed by and

+between QTI and such entity.  The individual accepting the terms of this

+Agreement represents and warrants to QTI that they have the authority to bind

+such entity to the terms and conditions of this Agreement.

+

+10. MISCELLANEOUS PROVISIONS.  This Agreement, together with all exhibits

+attached hereto, which are incorporated herein by this reference, constitutes

+the entire agreement between QTI and You and supersedes all prior negotiations,

+representations and agreements between the parties with respect to the subject

+matter hereof.  No addition or modification of this Agreement shall be effective

+unless made in writing and signed by the respective representatives of QTI and

+You.  The restrictions, limitations, exclusions and conditions set forth in this

+Agreement shall apply even if QTI or any of its affiliates becomes aware of or

+fails to act in a manner to address any violation or failure to comply

+therewith.  You hereby acknowledge and agree that the restrictions, limitations,

+conditions and exclusions imposed in this Agreement on the rights granted in

+this Agreement are not a derogation of the benefits of such rights.  You further

+acknowledges that, in the absence of such restrictions, limitations, conditions

+and exclusions, QTI would not have entered into this Agreement with You.  Each

+party shall be responsible for and shall bear its own expenses in connection

+with this Agreement.  If any of the provisions of this Agreement are determined

+to be invalid, illegal, or otherwise unenforceable, the remaining provisions

+shall remain in full force and effect.  This Agreement is entered into solely

+in the English language, and if for any reason any other language version is

+prepared by any party, it shall be solely for convenience and the English

+version shall govern and control all aspects.  If You are located in the

+province of Quebec, Canada, the following applies: The Parties hereby confirm

+they have requested this Agreement and all related documents be prepared

+in English..
\ No newline at end of file
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/MD5SUMS.txt b/installer/rb5/rb5-bootloader-ufs-aosp/MD5SUMS.txt
new file mode 100644
index 0000000..d7ba37d
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/MD5SUMS.txt
@@ -0,0 +1,52 @@
+568936f0565ed1e3e7e5b391b5ed93bf  abl.elf
+269902643091ab740bab845c09db6a40  aop.mbn
+21fe4f0eb68aa45c57ab85930dda1fa6  apdp.mbn
+b6d81b360a5672d80c27430f39153e2c  boot-erase.img
+123c63fdb9f5f70671c49ccae8bbe9e7  cdt.bin
+bdd8e32ccfac703d18747ba277ce47ac  cmnlib64.mbn
+d95347ba2a5e7373e44d708c8c85c87e  cmnlib.mbn
+cde2a2dd4b83eecab92f9c9f3786b58e  devcfg.mbn
+45cb353504ae1176d478b0fa22666965  dspso.bin
+8aff5a3fae2919ca4c0bcf20f5b68910  featenabler.mbn
+1404205e5a27b992d274924220fc7390  flashall
+c3bed6261a596ef94a8251d3ee413082  gpt_backup0.bin
+53f9ed2be13a80c40bee670217a4dda6  gpt_backup1.bin
+212280e5a0189fe98f2f516f05ec2a68  gpt_backup2.bin
+27b573b83ede2f6abbcf832dbd1cb101  gpt_backup3.bin
+c4cd72a9ef3f62f35854cb157b9b37bb  gpt_backup4.bin
+239251d3ad9e675077a705c2119878ea  gpt_backup5.bin
+2de913f702fa9dd37ceae2cba168d12f  gpt_both0.bin
+522a55738614ba65a27373fae893064f  gpt_both1.bin
+28cd76d1b097c304b6aa05ba64f2928e  gpt_both2.bin
+8a10fef96db6e1e7c1bd91cad8026d51  gpt_both3.bin
+b19a8d8df046a012c40cdb213437f747  gpt_both4.bin
+a8eba85c1595891aa2fcc449b6bdb114  gpt_both5.bin
+8e8cac4e2a927ea323efba51a3ebd808  gpt_main0.bin
+1f495395c505d90ef8891eb8c31f80dc  gpt_main1.bin
+0d3ccfcd106d4020fb1654cd298205fc  gpt_main2.bin
+7ccf5d8c547fba5b93cf0def32710f4a  gpt_main3.bin
+945ccf9667484466e270abf817a24b33  gpt_main4.bin
+9eca5eec2e3248341d0ad20acdeceef7  gpt_main5.bin
+6bcbfe1866a7fde271785744ac832796  hyp.mbn
+3c84eaaffd53577b9aaeedd10e8abb62  km4.mbn
+cbbe399f2c983ad51768f4561587f000  LICENSE
+4a9c85ffbb610f1e6b728e9919e23ff9  multi_image.mbn
+7da8e656c3c01e6471479328af510728  patch0.xml
+0780990ee59934bdcaffc918cac99aed  patch1.xml
+81036277fd056a16c0e418a756a5a835  patch2.xml
+491532d01cc4be1604e3d6784d6f4a13  patch3.xml
+353c75b108136948c60aed81024affa8  patch4.xml
+e525e811f1a46cd927aa3740ad47e584  patch5.xml
+4ea6f2187bce07cd3d1e02a70e3f83c3  prog_firehose_ddr.elf
+ce8ace958f7f5c0479a69c0dd331f30e  qupv3fw.elf
+a4335c18367bd7edd478f59482259476  rawprogram0.xml
+078978d92fc3c2a0ad0744e5e905e806  rawprogram1.xml
+e829b09f11eeed7f44caca1b592c91bf  rawprogram2.xml
+e6bc33009e6df9a3d3f0edd968dc742b  rawprogram3.xml
+968badca129dbc54e197a49bbcc2fbca  rawprogram4.xml
+e21b2fb50b5692a081ebcfa730bc125f  rawprogram5.xml
+da53d17a35d3f0bbb2e6ec2ee7cc20e1  spunvm.bin
+dfb500dc0b15b035694dc1f664cd3968  tz.mbn
+363aeec966c040a50bb8f918de88c3f9  uefi_sec.mbn
+9fc1b09f5efb86f5c87a98860223c416  xbl_config.elf
+803e1f9fd99c91fd68935f398b5aed29  xbl.elf
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/abl.elf b/installer/rb5/rb5-bootloader-ufs-aosp/abl.elf
new file mode 100644
index 0000000..39a0059
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/abl.elf
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/aop.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/aop.mbn
new file mode 100644
index 0000000..f6fc5a3
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/aop.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/apdp.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/apdp.mbn
new file mode 100644
index 0000000..9042418
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/apdp.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/boot-erase.img b/installer/rb5/rb5-bootloader-ufs-aosp/boot-erase.img
new file mode 100644
index 0000000..9e0f96a
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/boot-erase.img
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/cdt.bin b/installer/rb5/rb5-bootloader-ufs-aosp/cdt.bin
new file mode 100644
index 0000000..a98a6a0
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/cdt.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/cmnlib.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/cmnlib.mbn
new file mode 100644
index 0000000..3b395f9
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/cmnlib.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/cmnlib64.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/cmnlib64.mbn
new file mode 100644
index 0000000..c582d2e
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/cmnlib64.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/devcfg.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/devcfg.mbn
new file mode 100644
index 0000000..c172a76
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/devcfg.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/dspso.bin b/installer/rb5/rb5-bootloader-ufs-aosp/dspso.bin
new file mode 100644
index 0000000..b63ece9
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/dspso.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/featenabler.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/featenabler.mbn
new file mode 100644
index 0000000..886afe7
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/featenabler.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/flashall b/installer/rb5/rb5-bootloader-ufs-aosp/flashall
new file mode 100755
index 0000000..966d670
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/flashall
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+fastboot flash partition:0 gpt_both0.bin
+fastboot flash partition:1 gpt_both1.bin
+fastboot flash partition:2 gpt_both2.bin
+fastboot flash partition:3 gpt_both3.bin
+fastboot flash partition:4 gpt_both4.bin
+fastboot flash partition:5 gpt_both5.bin
+
+#fastboot flash ImageFv_a imagefv.elf
+fastboot flash aop_a aop.mbn
+fastboot flash apdp apdp.mbn
+#fastboot flash bluetooth_a BTFM.bin
+fastboot flash cmnlib64_a cmnlib64.mbn
+fastboot flash cmnlib_a cmnlib.mbn
+fastboot flash cdt cdt.bin
+fastboot erase ddr
+fastboot flash devcfg_a devcfg.mbn
+fastboot flash dsp_a dspso.bin
+fastboot flash featenabler_a featenabler.mbn
+fastboot flash hyp_a hyp.mbn
+fastboot flash keymaster_a km4.mbn
+#fastboot flash logfs logfs_ufs_8mb.bin
+#fastboot flash modem_a NON-HLOS.bin
+fastboot flash multiimgoem_a multi_image.mbn
+fastboot flash qupfw_a qupv3fw.elf
+fastboot flash spunvm spunvm.bin
+fastboot flash tz_a tz.mbn
+fastboot flash uefisecapp_a uefi_sec.mbn
+fastboot flash xbl_a xbl.elf
+fastboot flash xbl_config_a xbl_config.elf
+
+fastboot flash abl_a abl.elf
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup0.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup0.bin
new file mode 100644
index 0000000..dd35587
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup0.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup1.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup1.bin
new file mode 100644
index 0000000..b86291a
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup1.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup2.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup2.bin
new file mode 100644
index 0000000..2db116d
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup2.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup3.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup3.bin
new file mode 100644
index 0000000..f103eba
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup3.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup4.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup4.bin
new file mode 100644
index 0000000..87eb2e8
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup4.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup5.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup5.bin
new file mode 100644
index 0000000..dcb51c0
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_backup5.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both0.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both0.bin
new file mode 100644
index 0000000..fdf162c
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both0.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both1.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both1.bin
new file mode 100644
index 0000000..88e369c
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both1.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both2.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both2.bin
new file mode 100644
index 0000000..af0cab4
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both2.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both3.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both3.bin
new file mode 100644
index 0000000..7eb23ab
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both3.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both4.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both4.bin
new file mode 100644
index 0000000..2a80e6f
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both4.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both5.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both5.bin
new file mode 100644
index 0000000..fbf8892
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_both5.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main0.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main0.bin
new file mode 100644
index 0000000..c784a6c
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main0.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main1.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main1.bin
new file mode 100644
index 0000000..3b782de
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main1.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main2.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main2.bin
new file mode 100644
index 0000000..23e7128
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main2.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main3.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main3.bin
new file mode 100644
index 0000000..ecec672
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main3.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main4.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main4.bin
new file mode 100644
index 0000000..646ee2d
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main4.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main5.bin b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main5.bin
new file mode 100644
index 0000000..d3b1f26
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/gpt_main5.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/hyp.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/hyp.mbn
new file mode 100644
index 0000000..8c9854c
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/hyp.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/km4.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/km4.mbn
new file mode 100644
index 0000000..23e5153
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/km4.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/multi_image.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/multi_image.mbn
new file mode 100644
index 0000000..1ab0654
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/multi_image.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/patch0.xml b/installer/rb5/rb5-bootloader-ufs-aosp/patch0.xml
new file mode 100644
index 0000000..28f4a18
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/patch0.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<patches>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Patching is in little endian format, i.e. 0xAABBCCDD will look like DD CC BB AA in the file or on disk-->
+  <!--NOTE: This file is used by Trace32 - So make sure to add decimals, i.e. 0x10-10=0, *but* 0x10-10.=6.-->
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1192" filename="gpt_main0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 10 'userdata' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1192" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 10 'userdata' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1192" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="0" value="NUM_DISK_SECTORS-6." what="Update last partition 10 'userdata' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1192" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-5." value="NUM_DISK_SECTORS-6." what="Update last partition 10 'userdata' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_main0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="gpt_main0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="DISK" physical_partition_number="0" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_main0.bin" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="4" start_sector="4" value="CRC32(0,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-5.,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main0.bin" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main0.bin" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="4" start_sector="4" value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup0.bin" physical_partition_number="0" size_in_bytes="4" start_sector="4" value="CRC32(4,92)" what="Update Backup Header with CRC of Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="0" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header."/>
+</patches>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/patch1.xml b/installer/rb5/rb5-bootloader-ufs-aosp/patch1.xml
new file mode 100644
index 0000000..f22f118
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/patch1.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<patches>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Patching is in little endian format, i.e. 0xAABBCCDD will look like DD CC BB AA in the file or on disk-->
+  <!--NOTE: This file is used by Trace32 - So make sure to add decimals, i.e. 0x10-10=0, *but* 0x10-10.=6.-->
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="gpt_main1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="0" value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-5." value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_main1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="gpt_main1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="DISK" physical_partition_number="1" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_main1.bin" physical_partition_number="1" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="1" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="4" start_sector="4" value="CRC32(0,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="1" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-5.,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main1.bin" physical_partition_number="1" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main1.bin" physical_partition_number="1" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="1" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="1" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="4" start_sector="4" value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup1.bin" physical_partition_number="1" size_in_bytes="4" start_sector="4" value="CRC32(4,92)" what="Update Backup Header with CRC of Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="1" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="1" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header."/>
+</patches>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/patch2.xml b/installer/rb5/rb5-bootloader-ufs-aosp/patch2.xml
new file mode 100644
index 0000000..3a21339
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/patch2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<patches>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Patching is in little endian format, i.e. 0xAABBCCDD will look like DD CC BB AA in the file or on disk-->
+  <!--NOTE: This file is used by Trace32 - So make sure to add decimals, i.e. 0x10-10=0, *but* 0x10-10.=6.-->
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="gpt_main2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="0" value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="296" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-5." value="NUM_DISK_SECTORS-6." what="Update last partition 3 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_main2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="gpt_main2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="DISK" physical_partition_number="2" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_main2.bin" physical_partition_number="2" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="2" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="4" start_sector="4" value="CRC32(0,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="2" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-5.,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main2.bin" physical_partition_number="2" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main2.bin" physical_partition_number="2" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="2" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="2" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="4" start_sector="4" value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup2.bin" physical_partition_number="2" size_in_bytes="4" start_sector="4" value="CRC32(4,92)" what="Update Backup Header with CRC of Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="2" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="2" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header."/>
+</patches>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/patch3.xml b/installer/rb5/rb5-bootloader-ufs-aosp/patch3.xml
new file mode 100644
index 0000000..432fa22
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/patch3.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<patches>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Patching is in little endian format, i.e. 0xAABBCCDD will look like DD CC BB AA in the file or on disk-->
+  <!--NOTE: This file is used by Trace32 - So make sure to add decimals, i.e. 0x10-10=0, *but* 0x10-10.=6.-->
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="552" filename="gpt_main3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 5 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="552" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 5 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="552" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="0" value="NUM_DISK_SECTORS-6." what="Update last partition 5 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="552" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-5." value="NUM_DISK_SECTORS-6." what="Update last partition 5 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_main3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="gpt_main3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="DISK" physical_partition_number="3" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_main3.bin" physical_partition_number="3" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="3" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="4" start_sector="4" value="CRC32(0,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="3" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-5.,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main3.bin" physical_partition_number="3" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main3.bin" physical_partition_number="3" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="3" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="3" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="4" start_sector="4" value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup3.bin" physical_partition_number="3" size_in_bytes="4" start_sector="4" value="CRC32(4,92)" what="Update Backup Header with CRC of Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="3" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="3" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header."/>
+</patches>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/patch4.xml b/installer/rb5/rb5-bootloader-ufs-aosp/patch4.xml
new file mode 100644
index 0000000..8e55310
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/patch4.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<patches>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Patching is in little endian format, i.e. 0xAABBCCDD will look like DD CC BB AA in the file or on disk-->
+  <!--NOTE: This file is used by Trace32 - So make sure to add decimals, i.e. 0x10-10=0, *but* 0x10-10.=6.-->
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="3624" filename="gpt_main4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="3" value="NUM_DISK_SECTORS-6." what="Update last partition 61 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="3624" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="3" value="NUM_DISK_SECTORS-6." what="Update last partition 61 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="3624" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update last partition 61 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="3624" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-4." value="NUM_DISK_SECTORS-6." what="Update last partition 61 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_main4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="gpt_main4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="DISK" physical_partition_number="4" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_main4.bin" physical_partition_number="4" size_in_bytes="4" start_sector="1" value="CRC32(2,8192)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="4" size_in_bytes="4" start_sector="1" value="CRC32(2,8192)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="4" start_sector="4" value="CRC32(0,8192)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="4" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-5.,8192)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main4.bin" physical_partition_number="4" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main4.bin" physical_partition_number="4" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="4" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="4" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="4" start_sector="4" value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup4.bin" physical_partition_number="4" size_in_bytes="4" start_sector="4" value="CRC32(4,92)" what="Update Backup Header with CRC of Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="4" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="4" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header."/>
+</patches>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/patch5.xml b/installer/rb5/rb5-bootloader-ufs-aosp/patch5.xml
new file mode 100644
index 0000000..3371551
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/patch5.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" ?>
+<patches>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Patching is in little endian format, i.e. 0xAABBCCDD will look like DD CC BB AA in the file or on disk-->
+  <!--NOTE: This file is used by Trace32 - So make sure to add decimals, i.e. 0x10-10=0, *but* 0x10-10.=6.-->
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1832" filename="gpt_main5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 15 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1832" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="2" value="NUM_DISK_SECTORS-6." what="Update last partition 15 'last_parti' with actual size in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1832" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="0" value="NUM_DISK_SECTORS-6." what="Update last partition 15 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="1832" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-5." value="NUM_DISK_SECTORS-6." what="Update last partition 15 'last_parti' with actual size in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_main5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-6." what="Update Primary Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="48" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-6." what="Update Backup Header with LastUseableLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="gpt_main5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="32" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="1" value="NUM_DISK_SECTORS-1." what="Update Primary Header with BackupGPT Header Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="24" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1." value="NUM_DISK_SECTORS-1." what="Update Backup Header with CurrentLBA."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="8" start_sector="4" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="72" filename="DISK" physical_partition_number="5" size_in_bytes="8" start_sector="NUM_DISK_SECTORS-1" value="NUM_DISK_SECTORS-5." what="Update Backup Header with Partition Array Location."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_main5.bin" physical_partition_number="5" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="5" size_in_bytes="4" start_sector="1" value="CRC32(2,4096)" what="Update Primary Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="4" start_sector="4" value="CRC32(0,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="88" filename="DISK" physical_partition_number="5" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-5.,4096)" what="Update Backup Header with CRC of Partition Array."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main5.bin" physical_partition_number="5" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_main5.bin" physical_partition_number="5" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="5" size_in_bytes="4" start_sector="1" value="0" what="Zero Out Header CRC in Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="5" size_in_bytes="4" start_sector="1" value="CRC32(1,92)" what="Update Primary Header with CRC of Primary Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="4" start_sector="4" value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="gpt_backup5.bin" physical_partition_number="5" size_in_bytes="4" start_sector="4" value="CRC32(4,92)" what="Update Backup Header with CRC of Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="5" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="0" what="Zero Out Header CRC in Backup Header."/>
+  <patch SECTOR_SIZE_IN_BYTES="4096" byte_offset="16" filename="DISK" physical_partition_number="5" size_in_bytes="4" start_sector="NUM_DISK_SECTORS-1." value="CRC32(NUM_DISK_SECTORS-1.,92)" what="Update Backup Header with CRC of Backup Header."/>
+</patches>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/prog_firehose_ddr.elf b/installer/rb5/rb5-bootloader-ufs-aosp/prog_firehose_ddr.elf
new file mode 100644
index 0000000..cfd509c
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/prog_firehose_ddr.elf
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/qupv3fw.elf b/installer/rb5/rb5-bootloader-ufs-aosp/qupv3fw.elf
new file mode 100644
index 0000000..b484124
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/qupv3fw.elf
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram0.xml b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram0.xml
new file mode 100644
index 0000000..f0a03e8
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram0.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" ?>
+<data>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Sector size is 4096bytes-->
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="persist" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="system_a" num_partition_sectors="1501832" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="6007328.0" sparse="false" start_byte_hex="0x2006000" start_sector="8198"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="system_b" num_partition_sectors="1501832" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="6007328.0" sparse="false" start_byte_hex="0x170a8e000" start_sector="1510030"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vendor_boot_a" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x2df516000" start_sector="3011862"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vendor_boot_b" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x2e3516000" start_sector="3028246"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="super" num_partition_sectors="3036432" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="12145728.0" sparse="false" start_byte_hex="0x2e7516000" start_sector="3044630"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="systemrw" num_partition_sectors="4096" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="16384.0" sparse="false" start_byte_hex="0x5cca26000" start_sector="6081062"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="cache" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x5cda26000" start_sector="6085158"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="metadata" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x5d1a26000" start_sector="6101542"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="userdata" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="0" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x5d5a26000" start_sector="6117926"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main0.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="0" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup0.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="0" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
+</data>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram1.xml b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram1.xml
new file mode 100644
index 0000000..1793287
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram1.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" ?>
+<data>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Sector size is 4096bytes-->
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="xbl.elf" label="xbl_a" num_partition_sectors="896" partofsingleimage="false" physical_partition_number="1" readbackverify="false" size_in_KB="3584.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="xbl_config.elf" label="xbl_config_a" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="1" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x386000" start_sector="902"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="1" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x3a6000" start_sector="934"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main1.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="1" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup1.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="1" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
+</data>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram2.xml b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram2.xml
new file mode 100644
index 0000000..e8aa1b8
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" ?>
+<data>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Sector size is 4096bytes-->
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="xbl.elf" label="xbl_b" num_partition_sectors="896" partofsingleimage="false" physical_partition_number="2" readbackverify="false" size_in_KB="3584.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="xbl_config.elf" label="xbl_config_b" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="2" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x386000" start_sector="902"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="2" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x3a6000" start_sector="934"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main2.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="2" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup2.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="2" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
+</data>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram3.xml b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram3.xml
new file mode 100644
index 0000000..75a1d39
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram3.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" ?>
+<data>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Sector size is 4096bytes-->
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="ALIGN_TO_128K_1" num_partition_sectors="26" partofsingleimage="false" physical_partition_number="3" readbackverify="false" size_in_KB="104.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="cdt.bin" label="cdt" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="3" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x20000" start_sector="32"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="ddr" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="3" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x40000" start_sector="64"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdmddr" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="3" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x240000" start_sector="576"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="3" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x340000" start_sector="832"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main3.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="3" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup3.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="3" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
+</data>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram4.xml b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram4.xml
new file mode 100644
index 0000000..474113f
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram4.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" ?>
+<data>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Sector size is 4096bytes-->
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="aop.mbn" label="aop_a" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="tz.mbn" label="tz_a" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x86000" start_sector="134"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="hyp.mbn" label="hyp_a" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x486000" start_sector="1158"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modem_a" num_partition_sectors="101120" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="404480.0" sparse="false" start_byte_hex="0xc86000" start_sector="3206"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="BTFM.bin" label="bluetooth_a" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x19786000" start_sector="104326"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdtpsecapp_a" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x19886000" start_sector="104582"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdtp_a" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0x19c86000" start_sector="105606"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="abl.elf" label="abl_a" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x1bc86000" start_sector="113798"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="dspso.bin" label="dsp_a" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x1bd86000" start_sector="114054"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="km4.mbn" label="keymaster_a" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x1fd86000" start_sector="130438"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="boot_a" num_partition_sectors="24576" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="98304.0" sparse="false" start_byte_hex="0x1fe06000" start_sector="130566"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="cmnlib.mbn" label="cmnlib_a" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x25e06000" start_sector="155142"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="cmnlib64.mbn" label="cmnlib64_a" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x25e86000" start_sector="155270"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="devcfg.mbn" label="devcfg_a" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x25f06000" start_sector="155398"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="qupv3fw.elf" label="qupfw_a" num_partition_sectors="20" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="80.0" sparse="false" start_byte_hex="0x25f26000" start_sector="155430"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vbmeta_a" num_partition_sectors="16" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="64.0" sparse="false" start_byte_hex="0x25f3a000" start_sector="155450"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="dtbo_a" num_partition_sectors="6144" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="24576.0" sparse="false" start_byte_hex="0x25f4a000" start_sector="155466"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="uefi_sec.mbn" label="uefisecapp_a" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x2774a000" start_sector="161610"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="multi_image.mbn" label="multiimgoem_a" num_partition_sectors="8" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32.0" sparse="false" start_byte_hex="0x2794a000" start_sector="162122"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="multiimgqti_a" num_partition_sectors="8" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32.0" sparse="false" start_byte_hex="0x27952000" start_sector="162130"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vm-linux_a" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0x2795a000" start_sector="162138"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="featenabler.mbn" label="featenabler_a" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x2995a000" start_sector="170330"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="imagefv.elf" label="imagefv_a" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x2997a000" start_sector="170362"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="aop.mbn" label="aop_b" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x29b7a000" start_sector="170874"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="tz.mbn" label="tz_b" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x29bfa000" start_sector="171002"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="hyp.mbn" label="hyp_b" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x29ffa000" start_sector="172026"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modem_b" num_partition_sectors="101120" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="404480.0" sparse="false" start_byte_hex="0x2a7fa000" start_sector="174074"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="BTFM.bin" label="bluetooth_b" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x432fa000" start_sector="275194"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdtpsecapp_b" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x433fa000" start_sector="275450"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdtp_b" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0x437fa000" start_sector="276474"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="abl.elf" label="abl_b" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x457fa000" start_sector="284666"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="dspso.bin" label="dsp_b" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x458fa000" start_sector="284922"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="km4.mbn" label="keymaster_b" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x498fa000" start_sector="301306"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="boot-erase.img" label="boot_b" num_partition_sectors="24576" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="98304.0" sparse="false" start_byte_hex="0x4997a000" start_sector="301434"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="cmnlib.mbn" label="cmnlib_b" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x4f97a000" start_sector="326010"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="cmnlib64.mbn" label="cmnlib64_b" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x4f9fa000" start_sector="326138"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="devcfg.mbn" label="devcfg_b" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x4fa7a000" start_sector="326266"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="qupv3fw.elf" label="qupfw_b" num_partition_sectors="20" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="80.0" sparse="false" start_byte_hex="0x4fa9a000" start_sector="326298"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vbmeta_b" num_partition_sectors="16" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="64.0" sparse="false" start_byte_hex="0x4faae000" start_sector="326318"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="dtbo_b" num_partition_sectors="6144" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="24576.0" sparse="false" start_byte_hex="0x4fabe000" start_sector="326334"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="uefi_sec.mbn" label="uefisecapp_b" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x512be000" start_sector="332478"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="multi_image.mbn" label="multiimgoem_b" num_partition_sectors="8" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32.0" sparse="false" start_byte_hex="0x514be000" start_sector="332990"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="multiimgqti_b" num_partition_sectors="8" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32.0" sparse="false" start_byte_hex="0x514c6000" start_sector="332998"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vm-linux_b" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0x514ce000" start_sector="333006"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="featenabler.mbn" label="featenabler_b" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x534ce000" start_sector="341198"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="imagefv.elf" label="imagefv_b" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x534ee000" start_sector="341230"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="devinfo" num_partition_sectors="1" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4.0" sparse="false" start_byte_hex="0x536ee000" start_sector="341742"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="dip" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x536ef000" start_sector="341743"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="apdp.mbn" label="apdp" num_partition_sectors="64" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="256.0" sparse="false" start_byte_hex="0x537ef000" start_sector="341999"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="msadp" num_partition_sectors="64" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="256.0" sparse="false" start_byte_hex="0x5382f000" start_sector="342063"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="spunvm.bin" label="spunvm" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0x5386f000" start_sector="342127"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="limits" num_partition_sectors="1" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4.0" sparse="false" start_byte_hex="0x5586f000" start_sector="350319"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="limits-cdsp" num_partition_sectors="1" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4.0" sparse="false" start_byte_hex="0x55870000" start_sector="350320"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="logfs_ufs_8mb.bin" label="logfs" num_partition_sectors="2048" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="8192.0" sparse="false" start_byte_hex="0x55871000" start_sector="350321"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="logdump" num_partition_sectors="16384" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="65536.0" sparse="false" start_byte_hex="0x56071000" start_sector="352369"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="storsec" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x5a071000" start_sector="368753"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="uefivarstore" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x5a091000" start_sector="368785"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="secdata" num_partition_sectors="7" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="28.0" sparse="false" start_byte_hex="0x5a111000" start_sector="368913"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vm-keystore" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x5a118000" start_sector="368920"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="vm-data" num_partition_sectors="1024" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="4096.0" sparse="false" start_byte_hex="0x5a138000" start_sector="368952"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="4" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x5a538000" start_sector="369976"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main4.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="4" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup4.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="4" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
+</data>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram5.xml b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram5.xml
new file mode 100644
index 0000000..52a39dc
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/rawprogram5.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" ?>
+<data>
+  <!--NOTE: This is an ** Autogenerated file **-->
+  <!--NOTE: Sector size is 4096bytes-->
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="ALIGN_TO_128K_2" num_partition_sectors="26" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="104.0" sparse="false" start_byte_hex="0x6000" start_sector="6"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modemst1" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x20000" start_sector="32"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="modemst2" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x220000" start_sector="544"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="fsg" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x420000" start_sector="1056"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="fsc" num_partition_sectors="32" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="128.0" sparse="false" start_byte_hex="0x620000" start_sector="1568"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdm1m9kefs3" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x640000" start_sector="1600"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdm1m9kefs1" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0x840000" start_sector="2112"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdm1m9kefs2" num_partition_sectors="512" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="2048.0" sparse="false" start_byte_hex="0xa40000" start_sector="2624"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="mdm1m9kefsc" num_partition_sectors="1" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="4.0" sparse="false" start_byte_hex="0xc40000" start_sector="3136"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="ssd" num_partition_sectors="2" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="8.0" sparse="false" start_byte_hex="0xc41000" start_sector="3137"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="persist" num_partition_sectors="8192" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="32768.0" sparse="false" start_byte_hex="0xc43000" start_sector="3139"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="misc" num_partition_sectors="256" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="1024.0" sparse="false" start_byte_hex="0x2c43000" start_sector="11331"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="keystore" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x2d43000" start_sector="11587"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="frp" num_partition_sectors="128" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="512.0" sparse="false" start_byte_hex="0x2dc3000" start_sector="11715"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="" label="last_parti" num_partition_sectors="0" partofsingleimage="false" physical_partition_number="5" readbackverify="false" size_in_KB="0" sparse="false" start_byte_hex="0x2e43000" start_sector="11843"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_main5.bin" label="PrimaryGPT" num_partition_sectors="6" partofsingleimage="true" physical_partition_number="5" readbackverify="false" size_in_KB="24.0" sparse="false" start_byte_hex="0x0" start_sector="0"/>
+  <program SECTOR_SIZE_IN_BYTES="4096" file_sector_offset="0" filename="gpt_backup5.bin" label="BackupGPT" num_partition_sectors="5" partofsingleimage="true" physical_partition_number="5" readbackverify="false" size_in_KB="20.0" sparse="false" start_byte_hex="(4096*NUM_DISK_SECTORS)-20480." start_sector="NUM_DISK_SECTORS-5."/>
+</data>
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/spunvm.bin b/installer/rb5/rb5-bootloader-ufs-aosp/spunvm.bin
new file mode 100644
index 0000000..54b48b6
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/spunvm.bin
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/tz.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/tz.mbn
new file mode 100644
index 0000000..1f97ae4
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/tz.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/uefi_sec.mbn b/installer/rb5/rb5-bootloader-ufs-aosp/uefi_sec.mbn
new file mode 100644
index 0000000..295dab4
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/uefi_sec.mbn
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/xbl.elf b/installer/rb5/rb5-bootloader-ufs-aosp/xbl.elf
new file mode 100644
index 0000000..8e4c277
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/xbl.elf
Binary files differ
diff --git a/installer/rb5/rb5-bootloader-ufs-aosp/xbl_config.elf b/installer/rb5/rb5-bootloader-ufs-aosp/xbl_config.elf
new file mode 100644
index 0000000..90c2212
--- /dev/null
+++ b/installer/rb5/rb5-bootloader-ufs-aosp/xbl_config.elf
Binary files differ
diff --git a/installer/rb5/recovery.sh b/installer/rb5/recovery.sh
new file mode 100755
index 0000000..5541209
--- /dev/null
+++ b/installer/rb5/recovery.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+INSTALLER_DIR="`dirname ${0}`"
+
+QDL="`readlink -f ${INSTALLER_DIR}/qdl`"
+FIRMWARE_DIR="rb5-bootloader-ufs-aosp"
+
+# for cases that don't run "lunch rb5-userdebug"
+if [ -z "${ANDROID_BUILD_TOP}" ]; then
+    ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
+    ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/rb5"
+fi
+
+if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
+    echo "RECOVERY: error in locating out directory, check if it exist"
+    exit
+fi
+
+echo "android out dir:${ANDROID_PRODUCT_OUT}"
+
+# TODO: Pull one-time recovery/qdl path out of standard install
+# Flash bootloader firmware files
+if [ ! -d "${INSTALLER_DIR}/${FIRMWARE_DIR}/" ]; then
+    echo "RECOVERY: No firmware directory? Make sure binaries have been provided"
+    exit
+fi
+
+pushd "${INSTALLER_DIR}/${FIRMWARE_DIR}" > /dev/null
+sudo "${QDL}" prog_firehose_ddr.elf rawprogram?.xml patch?.xml
+popd > /dev/null
+
+echo
+echo
+echo "RECOVERY: Please boot the RB5 into fastboot mode, and use the flash-all-aosp.sh script!"
+echo
diff --git a/manifest.xml b/manifest.xml
index 910ec90..99c8500 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -36,6 +36,16 @@
         </interface>
     </hal>
     <hal format="hidl">
+        <name>android.hardware.camera.provider</name>
+        <transport>hwbinder</transport>
+        <impl level="generic"></impl>
+        <version>2.4</version>
+        <interface>
+            <name>ICameraProvider</name>
+            <instance>external/0</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
         <name>android.hardware.drm</name>
         <transport>hwbinder</transport>
         <version>1.3</version>
@@ -82,7 +92,7 @@
    <hal format="hidl">
         <name>android.hardware.soundtrigger</name>
         <transport>hwbinder</transport>
-        <version>2.2</version>
+        <version>2.3</version>
         <interface>
             <name>ISoundTriggerHw</name>
             <instance>default</instance>
diff --git a/qcom/set_udc.sh b/qcom/set_udc.sh
new file mode 100755
index 0000000..571c25d
--- /dev/null
+++ b/qcom/set_udc.sh
@@ -0,0 +1,17 @@
+#! /vendor/bin/sh
+# Grep and set the vendor.usb.controller property from
+# /sys/class/udc at the boot time.
+#
+# Upstream commit eb9b7bfd5954 ("arm64: dts: qcom: Harmonize DWC
+# USB3 DT nodes name") (v5.14-rc1) changed the DTS USB node names,
+# breaking the sys.usb.controller property hardcoded in the
+# platform specific init.usb.common.rc
+#
+# This script will get rid of the static/hardcoded property name
+# which we set in init.<hw>.usb.rc and set it to the available
+# on-board USB controller from /sys/class/udc instead.
+
+# Searching for db845c's DWC3 UDC explicitly
+UDC_ADDRESS=a600000
+UDC=`/vendor/bin/ls /sys/class/udc/ | /vendor/bin/grep $UDC_ADDRESS`
+setprop vendor.usb.controller $UDC
diff --git a/rb5.mk b/rb5.mk
new file mode 100644
index 0000000..06e648e
--- /dev/null
+++ b/rb5.mk
@@ -0,0 +1,26 @@
+ifndef TARGET_KERNEL_USE
+TARGET_KERNEL_USE := mainline
+endif
+RB5_KERNEL_DIR := device/linaro/dragonboard-kernel/android-$(TARGET_KERNEL_USE)
+
+# Inherit the full_base and device configurations
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+$(call inherit-product, device/linaro/dragonboard/rb5/device.mk)
+$(call inherit-product, device/linaro/dragonboard/device-common.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
+
+# Product overrides
+PRODUCT_NAME := rb5
+PRODUCT_DEVICE := rb5
+PRODUCT_BRAND := Android
+
+ifndef RB5_USES_GKI
+  RB5_USES_GKI := true
+endif
+
+ifeq ($(RB5_USES_GKI), true)
+  RB5_MODS := $(wildcard $(RB5_KERNEL_DIR)/*.ko)
+  ifneq ($(RB5_MODS),)
+    BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(RB5_MODS)
+  endif
+endif
diff --git a/rb5/BoardConfig.mk b/rb5/BoardConfig.mk
new file mode 100644
index 0000000..415cff1
--- /dev/null
+++ b/rb5/BoardConfig.mk
@@ -0,0 +1,30 @@
+include device/linaro/dragonboard/BoardConfigCommon.mk
+
+# Board Information
+TARGET_BOOTLOADER_BOARD_NAME := rb5
+TARGET_BOARD_PLATFORM := rb5
+
+TARGET_NO_KERNEL := false
+BOARD_KERNEL_BASE := 0x80000000
+BOARD_KERNEL_PAGESIZE := 4096
+
+BOARD_INCLUDE_DTB_IN_BOOTIMG := true
+BOARD_BOOT_HEADER_VERSION := 3
+BOARD_MKBOOTIMG_ARGS := --header_version $(BOARD_BOOT_HEADER_VERSION)
+
+BOARD_KERNEL_CMDLINE := earlycon firmware_class.path=/vendor/firmware/ androidboot.hardware=rb5
+BOARD_KERNEL_CMDLINE += init=/init androidboot.boot_devices=soc@0/1d84000.ufshc printk.devkmsg=on
+BOARD_KERNEL_CMDLINE += pcie_pme=nomsi #For WiFi to work
+BOARD_KERNEL_CMDLINE += deferred_probe_timeout=30
+
+# Image Configuration
+BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 #64M
+BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 67108864 #64M
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 21474836480
+BOARD_FLASH_BLOCK_SIZE := 131072
+
+# Super/Dynamic partition
+BOARD_SUPER_PARTITION_SIZE := 12437225472
+BOARD_DB_DYNAMIC_PARTITIONS_SIZE := 12433031168 # Reserve 4M for DAP metadata
+BOARD_SUPER_PARTITION_METADATA_DEVICE := super
+BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
diff --git a/rb5/device.mk b/rb5/device.mk
new file mode 100644
index 0000000..cab614f
--- /dev/null
+++ b/rb5/device.mk
@@ -0,0 +1,69 @@
+#
+# Copyright (C) 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.
+#
+
+PRODUCT_SOONG_NAMESPACES += \
+    device/linaro/dragonboard
+
+# setup dalvik vm configs
+$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)
+
+# Enable Virtual A/B
+AB_OTA_UPDATER := true
+AB_OTA_PARTITIONS += \
+    product \
+    system \
+    system_ext \
+    vendor
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/launch_with_vendor_ramdisk.mk)
+
+PRODUCT_COPY_FILES := \
+    $(RB5_KERNEL_DIR)/Image.gz:kernel \
+    $(RB5_KERNEL_DIR)/qrb5165-rb5.dtb:dtb.img \
+    $(LOCAL_PATH)/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \
+    device/linaro/dragonboard/fstab.common:$(TARGET_COPY_OUT_RAMDISK)/fstab.rb5 \
+    device/linaro/dragonboard/fstab.common:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.rb5 \
+    device/linaro/dragonboard/init.common.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.rb5.rc \
+    device/linaro/dragonboard/init.common.usb.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.rb5.usb.rc \
+    device/linaro/dragonboard/common.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/rb5.kl
+
+# Build generic Audio HAL
+PRODUCT_PACKAGES := audio.primary.rb5
+
+# BootControl HAL
+PRODUCT_PACKAGES += \
+    android.hardware.boot@1.2-impl \
+    android.hardware.boot@1.2-impl.recovery \
+    android.hardware.boot@1.2-service
+
+PRODUCT_PACKAGES += \
+    pd-mapper \
+    qrtr-ns \
+    qrtr-cfg \
+    qrtr-lookup \
+    rmtfs \
+    tqftpserv
+
+PRODUCT_COPY_FILES += \
+    device/linaro/dragonboard/qcom/init.qcom.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.qcom.rc
+
+PRODUCT_VENDOR_PROPERTIES += ro.soc.manufacturer=Qualcomm
+PRODUCT_VENDOR_PROPERTIES += ro.soc.model=QRB5165
+
+PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=160
+
+# Copy firmware files
+$(call inherit-product-if-exists, $(LOCAL_PATH)/firmware/device.mk)
diff --git a/rb5/firmware/a650_gmu.bin b/rb5/firmware/a650_gmu.bin
new file mode 100644
index 0000000..e497a14
--- /dev/null
+++ b/rb5/firmware/a650_gmu.bin
Binary files differ
diff --git a/rb5/firmware/a650_sqe.fw b/rb5/firmware/a650_sqe.fw
new file mode 100644
index 0000000..6cbef9b
--- /dev/null
+++ b/rb5/firmware/a650_sqe.fw
Binary files differ
diff --git a/rb5/firmware/a650_zap.b00 b/rb5/firmware/a650_zap.b00
new file mode 100644
index 0000000..1a708db
--- /dev/null
+++ b/rb5/firmware/a650_zap.b00
Binary files differ
diff --git a/rb5/firmware/a650_zap.b01 b/rb5/firmware/a650_zap.b01
new file mode 100644
index 0000000..4dd0de3
--- /dev/null
+++ b/rb5/firmware/a650_zap.b01
Binary files differ
diff --git a/rb5/firmware/a650_zap.b02 b/rb5/firmware/a650_zap.b02
new file mode 100644
index 0000000..fcfe901
--- /dev/null
+++ b/rb5/firmware/a650_zap.b02
Binary files differ
diff --git a/rb5/firmware/a650_zap.elf b/rb5/firmware/a650_zap.elf
new file mode 100644
index 0000000..ef5624c
--- /dev/null
+++ b/rb5/firmware/a650_zap.elf
Binary files differ
diff --git a/rb5/firmware/a650_zap.mbn b/rb5/firmware/a650_zap.mbn
new file mode 100644
index 0000000..ef5624c
--- /dev/null
+++ b/rb5/firmware/a650_zap.mbn
Binary files differ
diff --git a/rb5/firmware/a650_zap.mdt b/rb5/firmware/a650_zap.mdt
new file mode 100644
index 0000000..3c294a3
--- /dev/null
+++ b/rb5/firmware/a650_zap.mdt
Binary files differ
diff --git a/rb5/firmware/ath11k/QCA6390/hw2.0/Notice.txt b/rb5/firmware/ath11k/QCA6390/hw2.0/Notice.txt
new file mode 100644
index 0000000..d762020
--- /dev/null
+++ b/rb5/firmware/ath11k/QCA6390/hw2.0/Notice.txt
@@ -0,0 +1,1971 @@
+This Notice.txt file contains certain notices of software components included 
+with the software that Qualcomm Atheros, Inc. ("Qualcomm Atheros") is required
+to provide you. Except where prohibited by the open source license, the content 
+of this notices file is only provided to satisfy Qualcomm Atheros's attribution 
+and notice requirement; your use of these software components together with the 
+Qualcomm Atheros software (Qualcomm Atheros software hereinafter referred to 
+as "Software") is subject to the terms of your agreement from Qualcomm Atheros. 
+Compliance with all copyright laws and software license agreements included in 
+the notice section of this file are the responsibility of the user. Except as 
+may be granted by separate express written agreement, this file provides no 
+license to any patents, trademarks, copyrights, or other intellectual property 
+ 
+ 
+of Qualcomm Incorporated or any of its subsidiaries. 
+Qualcomm is a trademark of Qualcomm Incorporated, registered in the United States 
+and other countries. All Qualcomm Incorporated trademarks are used with permission. 
+Other products and brand names may be trademarks or registered trademarks of their 
+respective owners.
+ 
+NOTICES:
+ 
+=============================================================================
+
+* Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+* 2014 Qualcomm Atheros, Inc.
+* All Rights Reserved.
+* Confidential and Proprietary - Qualcomm Technologies, Inc.
+ *Notifications and licenses are retained for attribution purposes only *
+
+Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
+// All rights reserved.
+// $ATH_LICENSE_NULL$
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer,
+//    without modification.
+// 2. Redistributions in binary form must reproduce at minimum a disclaimer
+//    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+//    redistribution must be conditioned upon including a substantially
+//    similar Disclaimer requirement for further binary redistribution.
+// 3. Neither the names of the above-listed copyright holders nor the names
+//    of any contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// Alternatively, this software may be distributed under the terms of the
+// GNU General Public License ("GPL") version 2 as published by the Free
+// Software Foundation.
+//
+// NO WARRANTY
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+// THE POSSIBILITY OF SUCH DAMAGES.
+
+*For this file, which was received with alternative licensing options for  
+* distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+
+NOTICES:
+
+
+/*
+ * FILE:	sha2.c
+ * AUTHOR:	Aaron D. Gifford - http://www.aarongifford.com/
+ * 
+ * Copyright (c) 2000-2001, Aaron D. Gifford
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/nan/sha2.c
+
+/*
+ * FILE:	sha2.h
+ * AUTHOR:	Aaron D. Gifford - http://www.aarongifford.com/
+ * 
+ * Copyright (c) 2000-2001, Aaron D. Gifford
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the copyright holder nor the names of contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/romexport/AR6320/hw.3/include/sha2.h
+
+/*
+ * Copyright (c) 1998 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Lennart Augustsson (lennart@augustsson.net) at
+ * Carlstedt Research & Technology.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/romexport/AR6320/hw.3/include/usb.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc. 
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA Supplicant / wrapper functions for crypto libraries
+ * Copyright (c) 2004-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ *
+ * This file defines the cryptographic functions that need to be implemented
+ * for wpa_supplicant and hostapd. When TLS is not used, internal
+ * implementation of MD5, SHA1, and AES is used and no external libraries are
+ * required. When TLS is enabled (e.g., by enabling EAP-TLS or EAP-PEAP), the
+ * crypto library used by the TLS implementation is expected to be used for
+ * non-TLS needs, too, in order to save space by not implementing these
+ * functions twice.
+ *
+ * Wrapper code for using each crypto library is in its own file (crypto*.c)
+ * and one of these files is build and linked in to provide the functions
+ * defined here.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/crypto.h
+
+/*
+ * Copyright 2016, 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.
+ */
+ p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/offloads/l2/bpf/bpf_filter.c
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA Supplicant / Configuration file structures
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/config.h
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA Supplicant - Common definitions
+ * Copyright (c) 2004-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/suppl_auth_api.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * wpa_supplicant - WPA definitions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/wpa.h
+
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * wpa_supplicant - Internal WPA state machine definitions
+ * Copyright (c) 2004-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/wpa_i.h
+
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA256 hash implementation and interface functions
+ * Copyright (c) 2003-2006, Jouni Malinen <j@w1.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/sha256.h
+
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA Supplicant - IEEE 802.11r - Fast BSS Transition
+ * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa_ft.h
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA-256 hash implementation and interface functions
+ * Copyright (c) 2003-2007, Jouni Malinen <j@w1.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/sha256.c
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA Supplicant - WPA state machine and EAPOL-Key processing
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa.c
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA Supplicant - IEEE 802.11r - Fast BSS Transition
+ * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa_ft.c
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * WPA definitions shared between hostapd and wpa_supplicant
+ * Copyright (c) 2002-2013, Jouni Malinen <j@w1.fi>
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa_common.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * MD5 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/include/md5_api.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * AES-based functions
+ *
+ * - AES Key Wrap Algorithm (128-bit KEK) (RFC3394)
+ * - One-Key CBC MAC (OMAC1) hash with AES-128
+ * - AES-128 CTR mode encryption
+ * - AES-128 EAX mode encryption/decryption
+ * - AES-128 CBC
+ *
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/romexport/AR6320/hw.3/include/aes_wrap.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA1 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/romexport/AR6320/hw.3/include/sha1.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * wpa_supplicant/hostapd / common helper functions, etc.
+ * Copyright (c) 2002-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/romexport/AR6320/hw.3/include/common.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+/*
+ * Common helper macros, etc.
+ * Copyright (c) 2002-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/romexport/AR6320/hw.3/include/seccommon.h
+
+/*
+ *  COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or
+ *  code or tables extracted from it, as desired without restriction.
+ *
+ *  First, the polynomial itself and its table of feedback terms.  The
+ *  polynomial is
+ *  X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
+ *
+ *  Note that we take it "backwards" and put the highest-order term in
+ *  the lowest-order bit.  The X^32 term is "implied"; the LSB is the
+ *  X^31 term, etc.  The X^0 term (usually shown as "+1") results in
+ *  the MSB being 1
+ *
+ *  Note that the usual hardware shift register implementation, which
+ *  is what we're using (we're merely optimizing it by doing eight-bit
+ *  chunks at a time) shifts bits into the lowest-order term.  In our
+ *  implementation, that means shifting towards the right.  Why do we
+ *  do it this way?  Because the calculated CRC must be transmitted in
+ *  order from highest-order term to lowest-order term.  UARTs transmit
+ *  characters in order from LSB to MSB.  By storing the CRC this way
+ *  we hand it to the UART in the order low-byte to high-byte; the UART
+ *  sends each low-bit to hight-bit; and the result is transmission bit
+ *  by bit from highest- to lowest-order term without requiring any bit
+ *  shuffling on our part.  Reception works similarly
+ *
+ *  The feedback terms table consists of 256, 32-bit entries.  Notes
+ *
+ *      The table can be generated at runtime if desired; code to do so
+ *      is shown later.  It might not be obvious, but the feedback
+ *      terms simply represent the results of eight shift/xor opera
+ *      tions for all combinations of data and CRC register values
+ *
+ *      The values must be right-shifted by eight bits by the "updcrc
+ *      logic; the shift must be unsigned (bring in zeroes).  On some
+ *      hardware you could probably optimize the shift in assembler by
+ *      using byte-swap instructions
+ *      polynomial $edb88320
+ *
+ *
+ * CRC32 code derived from work by Gary S. Brown.
+*/
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/2.0/src/mgmt_txrx/ieee_crc32.c
+
+
+//
+// Copyright (c) 1991, 1993
+//  The Regents of the University of California.  All rights reserved.
+// $ATH_LICENSE_NULL$
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+// 3. All advertising materials mentioning features or use of this software
+//    must display the following acknowledgement:
+//      This product includes software developed by the University of
+//      California, Berkeley and its contributors.
+// 4. Neither the name of the University nor the names of its contributors
+//    may be used to endorse or promote products derived from this software
+//    without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE.
+//
+//  @(#)queue.h 8.5 (Berkeley) 8/20/94
+// $FreeBSD: src/sys/sys/queue.h,v 1.58 2004/04/07 04:19:49 imp Exp $
+// $Id: //components/rel/wlanfw_cmn.cnss/1.0/cnss_proc/wlan/fwcommon/include/queue.h#1 $
+//
+p4://qctp411.qualcomm.com/components/rel/wlanfw_cmn.cnss/1.0.0/include/queue.h
+
+
+/*
+ * Copyright (c) 2012-2017 Qualcomm Technologies, Inc.
+ * 2012 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ */
+
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+//-
+// Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
+// All rights reserved.
+// $ATH_LICENSE_NULL$
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer,
+//    without modification.
+// 2. Redistributions in binary form must reproduce at minimum a disclaimer
+//    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+//    redistribution must be conditioned upon including a substantially
+//    similar Disclaimer requirement for further binary redistribution.
+// 3. Neither the names of the above-listed copyright holders nor the names
+//    of any contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// Alternatively, this software may be distributed under the terms of the
+// GNU General Public License ("GPL") version 2 as published by the Free
+// Software Foundation.
+//
+// NO WARRANTY
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+// THE POSSIBILITY OF SUCH DAMAGES.
+//
+// $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/wlan/proto/include/if_llc.h#3 $
+// $NetBSD: if_llc.h,v 1.12 1999/11/19 20:41:19 thorpej Exp $
+// $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/wlan/proto/include/if_llc.h#3 $
+//
+
+/*
+ * Copyright (c) 1988, 1993
+ *      The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by the University of
+ *      California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *      @(#)if_llc.h    8.1 (Berkeley) 6/10/93
+ * $FreeBSD: src/sys/net/if_llc.h,v 1.9 2002/09/23 06:25:08 alfred Exp $
+ */
+                                                                             
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/if_llc.h
+
+/*
+ * Copyright (c) 2012-2017 Qualcomm Technologies, Inc.
+ * 2012 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ */
+
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+//-
+// Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
+// All rights reserved.
+// $ATH_LICENSE_NULL$
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer,
+//    without modification.
+// 2. Redistributions in binary form must reproduce at minimum a disclaimer
+//    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+//    redistribution must be conditioned upon including a substantially
+//    similar Disclaimer requirement for further binary redistribution.
+// 3. Neither the names of the above-listed copyright holders nor the names
+//    of any contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// Alternatively, this software may be distributed under the terms of the
+// GNU General Public License ("GPL") version 2 as published by the Free
+// Software Foundation.
+//
+// NO WARRANTY
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+// THE POSSIBILITY OF SUCH DAMAGES.
+//
+
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/if_ethersubr.h
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA1 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/patch/AR6320/v3/sha1_patch.c
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+ 
+/*
+ * WPA/RSN - Shared functions for supplicant and authenticator
+ * Copyright (c) 2002-2013, Jouni Malinen <j@w1.fi>
+
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa_common.c
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+ 
+/*
+ * WPA definitions shared between hostapd and wpa_supplicant
+ * Copyright (c) 2002-2013, Jouni Malinen <j@w1.fi>
+ 
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa_common.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * $ATH_LICENSE_NULL$
+ */
+
+/*
+ * WPA Supplicant - ESE Fast Roaming with CCKM Enhancements
+ * Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2010-2011, embWiSe Technologies
+ *
+ * Licensed under a proprietary license.
+ * Notifications and licenses are retained for attribution purposes only.
+
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name(s) of the above-listed copyright holder(s) nor the
+ *    names of its contributors may be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ */
+/*original files: ese_cckm.c and part of wpa_common.c in proprietary patch
+ * of open source supplicant */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/supplicant/mywpa_cckm.c
+
+/*
+ * Copyright (c) 2012-2017 Qualcomm Technologies, Inc.
+ * 2012 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ */
+
+/*
+ * For this file, which was received with alternative licensing options for   
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+//-
+// Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
+// All rights reserved.
+// $ATH_LICENSE_NULL$
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer,
+//    without modification.
+// 2. Redistributions in binary form must reproduce at minimum a disclaimer
+//    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+//    redistribution must be conditioned upon including a substantially
+//    similar Disclaimer requirement for further binary redistribution.
+// 3. Neither the names of the above-listed copyright holders nor the names
+//    of any contributors may be used to endorse or promote products derived
+//    from this software without specific prior written permission.
+//
+// Alternatively, this software may be distributed under the terms of the
+// GNU General Public License ("GPL") version 2 as published by the Free
+// Software Foundation.
+//
+// NO WARRANTY
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+// THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+// THE POSSIBILITY OF SUCH DAMAGES.
+//
+// $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/wlan/proto/include/if_llc.h#3 $
+// $NetBSD: if_llc.h,v 1.12 1999/11/19 20:41:19 thorpej Exp $
+// $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/wlan/proto/include/if_llc.h#3 $
+//
+
+/*
+ * Copyright (c) 1988, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)if_llc.h	8.1 (Berkeley) 6/10/93
+ * $FreeBSD: src/sys/net/if_llc.h,v 1.9 2002/09/23 06:25:08 alfred Exp $
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/if_llc.h
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * AES (Rijndael) cipher
+ *
+ * Modifications to public domain implementation:
+ * - support only 128-bit keys
+ * - cleanup
+ * - use C pre-processor to make it easier to change S table access
+ * - added option (AES_SMALL_TABLES) for reducing code size by about 8 kB at
+ *   cost of reduced throughput (quite small difference on Pentium 4,
+ *   10-25% when using -O1 or -O2 optimization)
+ *
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+
+/*
+ * rijndael-alg-fst.c
+ *
+ * @version 3.0 (December 2000)
+ *
+ * Optimised ANSI C code for the Rijndael cipher (now AES)
+ *
+ * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
+ * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
+ * @author Paulo Barreto <paulo.barreto@terra.com.br>
+ *
+ * This code is hereby placed in the public domain.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/misc/crypto/aes.c
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * AES-based functions
+ *
+ * - AES Key Wrap Algorithm (128-bit KEK) (RFC3394)
+ * - One-Key CBC MAC (OMAC1) hash with AES-128
+ * - AES-128 CTR mode encryption
+ * - AES-128 EAX mode encryption/decryption
+ * - AES-128 CBC
+ *
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/misc/crypto/aes_wrap.c
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA1 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/misc/crypto/sha1.c
+
+/*
+ * Copyright (c) 2013 Atheros Communications Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/src/wmi/wmi_tlv_platform.c
+
+/*
+ * Copyright (c) 2012, Atheros Communications Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_protocol_cmn.cnss/1.0.0/include/qvit/qvit_init_api.h
+
+/*
+ * Copyright (c) 2013 Atheros Communications Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_cmn.cnss/1.0.0/fw_interface/include/wmi_version_whitelist.c
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc. 
+ * $ATH_LICENSE_TARGET_C$
+ */
+
+//
+// $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/misc/crypto/md5.c#3 $
+//
+// This code implements the MD5 message-digest algorithm.
+// The algorithm is due to Ron Rivest.  This code was
+// written by Colin Plumb in 1993, no copyright is claimed.
+// This code is in the public domain; do with it what you wish.
+//
+// Equivalent code is available from RSA Data Security, Inc.
+// This code has been tested against that, and is equivalent,
+// except that you don't need to include two pages of legalese
+// with every copy.
+//
+// To compute the message digest of a chunk of bytes, declare an
+// MD5Context structure, pass it to MD5Init, call MD5Update as
+// needed on buffers full of bytes, and then call MD5Final, which
+// will fill a supplied 16-byte array with the digest.
+//
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/misc/crypto/md5.c
+
+
+/*===========================================================================
+  @file secrsa_encryption.c
+  
+   This file provides RSA PKCS #1 v1.5 encryption/decryption implementation.
+  ===========================================================================
+
+                           EDIT HISTORY FOR FILE
+  $Header: //components/dev/wlanfw.cnss/1.0.1/dennis.rome_emu_es2_rel_fw/cnss_proc/wlan/fw/target/src/misc/binsig/rsa.c#2 $
+  $DateTime: 2013/10/21 08:09:59 $ 
+  $Author: changhon $
+
+  when       who     what, where, why
+  --------   ---     ----------------------------------------------------------
+  04/11/11   qxu     initial version
+
+  Copyright (c) 2011 by QUALCOMM Technologies, Incorporated.  All Rights Reserved.
+  =============================================================================*/
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/misc/binsig/rsa.c
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/include/cil.h $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/include/cil.h
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/include/dev.h $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/include/dev.h
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/include/pcd.h $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/include/pcd.h
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/soc/usbhwcore/drv/snps/cil.c $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+
+/** @file
+ *
+ * The Core Interface Layer provides basic services for accessing and
+ * managing the DWC_usb3 hardware. These services are used by both the
+ * Peripheral Controller Driver and the On The Go Driver.
+ *
+ * The CIL manages the memory map for the core so that the PCD and OTG drivers
+ * don't have to do this separately. The CIL also performs basic services
+ * that are not specific to either the Device or OTG modes of operation.
+ * These services include all functionality that requires specific
+ * knowledge of the CSR layout or the DMA descriptor (TRB) layout. Also
+ * included are services for invoking each of the commands provided by
+ * the DGCMD and DEPCMD registers (see the "Control and Status Registers"
+ * chapter of the USB3 controller databook for details).
+ *
+ * The Core Interface Layer has the following requirements:
+ * - Provides basic controller operations.
+ * - Minimal use of OS services.
+ * - The OS services used will be abstracted by using inline functions
+ *   or macros.
+ *
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/soc/usbhwcore/drv/snps/cil.c
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/soc/usbhwcore/drv/snps/pcd_intr.c $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+
+/** @file
+ * This file contains the implementation of the PCD Interrupt handlers.
+ *
+ * The PCD handles the device interrupts. Many conditions can cause a
+ * device interrupt. When an interrupt occurs, the device interrupt
+ * service routine determines the cause of the interrupt and
+ * dispatches handling to the appropriate routine. These interrupt
+ * handling routines are described below.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/soc/usbhwcore/drv/snps/pcd_intr.c
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/include/os_dev.h $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/include/os_dev.h
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/soc/usbhwcore/drv/snps/cil_intr.c $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+
+/** @file
+ *
+ * The Core Interface Layer provides basic services for accessing and
+ * managing the DWC_usb3 hardware. These services are used by both the
+ * Peripheral Controller Driver and the On The Go Driver.
+ *
+ * This file contains the common interrupt handling functions.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/soc/usbhwcore/drv/snps/cil_intr.c
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/soc/usbhwcore/drv/snps/pcd.c $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+
+/** @file
+ * This file implements the Peripheral Controller Driver.
+ *
+ * The Peripheral Controller Driver (PCD) is responsible for translating
+ * requests from the Function Driver into the appropriate actions on the
+ * DWC_usb3 controller. It isolates the Function Driver from the specifics
+ * of the controller by providing an API to the Function Driver.
+ *
+ * The Peripheral Controller Driver for Linux will implement the Gadget API,
+ * so that the existing Gadget drivers can be used. (Gadget Driver is the
+ * Linux terminology for a Function Driver.)
+ *
+ * The Linux Gadget API is defined in the header file
+ * <code><linux/usb/gadget.h></code>. The USB EP operations API is defined
+ * in the structure <code>usb_ep_ops</code> and the USB Controller API is
+ * defined in the structure <code>usb_gadget_ops</code>.
+ *
+ * An important function of the PCD is managing interrupts generated by the
+ * DWC_usb3 controller. The implementation of the DWC_usb3 device mode
+ * interrupt service routines is in pcd_intr.c.
+ */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/src/soc/usbhwcore/drv/snps/pcd.c
+
+/* ==========================================================================
+ * $File: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/include/usb3_hw.h $
+ * $Revision: #3 $
+ * $Date: 2013/08/06 $
+ * $Change: 2161544 $
+ *
+ * Synopsys SS USB3 Linux Software Driver and documentation (hereinafter,
+ * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
+ * otherwise expressly agreed to in writing between Synopsys and you.
+ *
+ * The Software IS NOT an item of Licensed Software or Licensed Product under
+ * any End User Software License Agreement or Agreement for Licensed Product
+ * with Synopsys or any supplement thereto. You are permitted to use and
+ * redistribute this Software in source and binary forms, with or without
+ * modification, provided that redistributions of source code must retain this
+ * notice. You may not view, use, disclose, copy or distribute this file or
+ * any information contained herein except pursuant to this license grant from
+ * Synopsys. If you do not agree with this notice, including the disclaimer
+ * below, then you are not authorized to use the Software.
+ *
+ * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ * ========================================================================== */
+p4://qctp411.qualcomm.com/components/rel/wlanfw_mac_core.cnss/1.0/include/usb3_hw.h
+
+
+
+
+
+==================================================================================
+
+Open source code.
+Component Name: <COMMON NAME>
+Component Version: <ACTUAL VERSION USED>
+Source: <PACKAGE/URL>
+License: 
+/*
+ * SHA1 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+ 
+ ====================================================================================
+ 
+ Open source code.
+ Component Name: <COMMON NAME>
+ Component Version: <ACTUAL VERSION USED>
+ Source: <PACKAGE/URL>
+ License: /*
+  * Copyright (c) 2012-2017 Qualcomm Technologies, Inc.
+  * 2012 Qualcomm Atheros, Inc.
+  * All Rights Reserved.
+  * Confidential and Proprietary - Qualcomm Technologies, Inc.
+  */
+ 
+ /*
+  * For this file, which was received with alternative licensing options for   
+  * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+  */
+ 
+ //-
+ // Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
+ // All rights reserved.
+ // $ATH_LICENSE_NULL$
+ //
+ // Redistribution and use in source and binary forms, with or without
+ // modification, are permitted provided that the following conditions
+ // are met:
+ // 1. Redistributions of source code must retain the above copyright
+ //    notice, this list of conditions and the following disclaimer,
+ //    without modification.
+ // 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ //    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ //    redistribution must be conditioned upon including a substantially
+ //    similar Disclaimer requirement for further binary redistribution.
+ // 3. Neither the names of the above-listed copyright holders nor the names
+ //    of any contributors may be used to endorse or promote products derived
+ //    from this software without specific prior written permission.
+ //
+ // Alternatively, this software may be distributed under the terms of the
+ // GNU General Public License ("GPL") version 2 as published by the Free
+ // Software Foundation.
+ //
+ // NO WARRANTY
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ // ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ // LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ // THE POSSIBILITY OF SUCH DAMAGES.
+ //
+ // $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/wlan/proto/include/if_ethersubr.h#3 $
+//
+
+===============================================================================================================
+
+/*
+ * Copyright (c) 2014-2017 Qualcomm Technologies, Inc.
+ * 2014 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA1 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+ 
+ ===========================================================================
+ 
+ /*
+  * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+  * 2011 Qualcomm Atheros, Inc.
+  * All Rights Reserved.
+  * Confidential and Proprietary - Qualcomm Technologies, Inc.
+  * Notifications and licenses are retained for attribution purposes only.
+  */
+ /*
+  * For this file, which was received with alternative licensing options for
+  * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+  */
+ 
+ /*
+  * AES-based functions
+  *
+  * - AES Key Wrap Algorithm (128-bit KEK) (RFC3394)
+  * - One-Key CBC MAC (OMAC1) hash with AES-128
+  * - AES-128 CTR mode encryption
+  * - AES-128 EAX mode encryption/decryption
+  * - AES-128 CBC
+  *
+  * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+  * published by the Free Software Foundation.
+  *
+  * Alternatively, this software may be distributed under the terms of BSD
+  * license.
+  *
+  * See README and COPYING for more details.
+ */
+ 
+ ==============================================================================
+ 
+ /*
+  * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+  * 2011 Qualcomm Atheros, Inc.
+  * All Rights Reserved.
+  * Confidential and Proprietary - Qualcomm Technologies, Inc.
+  * Notifications and licenses are retained for attribution purposes only.
+  */
+ /*
+  * For this file, which was received with alternative licensing options for
+  * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+  */
+ 
+ /*
+  * wpa_supplicant/hostapd / common helper functions, etc.
+  * Copyright (c) 2002-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+  * published by the Free Software Foundation.
+  *
+  * Alternatively, this software may be distributed under the terms of BSD
+  * license.
+  *
+  * See README and COPYING for more details.
+ */
+ 
+ ==========================================================================
+ 
+ 
+ /*
+  * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+  * 2011 Qualcomm Atheros, Inc.
+  * All Rights Reserved.
+  * Confidential and Proprietary - Qualcomm Technologies, Inc.
+  * Notifications and licenses are retained for attribution purposes only.
+  */
+ /*
+  * For this file, which was received with alternative licensing options for
+  * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+  */
+ 
+ /*
+  * WPA Supplicant / wrapper functions for crypto libraries
+  * Copyright (c) 2004-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+  * published by the Free Software Foundation.
+  *
+  * Alternatively, this software may be distributed under the terms of BSD
+  * license.
+  *
+  * See README and COPYING for more details.
+  *
+  * This file defines the cryptographic functions that need to be implemented
+  * for wpa_supplicant and hostapd. When TLS is not used, internal
+  * implementation of MD5, SHA1, and AES is used and no external libraries are
+  * required. When TLS is enabled (e.g., by enabling EAP-TLS or EAP-PEAP), the
+  * crypto library used by the TLS implementation is expected to be used for
+  * non-TLS needs, too, in order to save space by not implementing these
+  * functions twice.
+  *
+  * Wrapper code for using each crypto library is in its own file (crypto*.c)
+  * and one of these files is build and linked in to provide the functions
+  * defined here.
+ */
+ 
+ ===============================================================================
+ 
+ /*
+  * Copyright (c) 2012-2017 Qualcomm Technologies, Inc.
+  * 2011 Qualcomm Atheros, Inc.
+  * All Rights Reserved.
+  * Confidential and Proprietary - Qualcomm Technologies, Inc.
+  */
+ 
+ /*
+  * For this file, which was received with alternative licensing options for   
+  * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+  */
+ 
+ //-
+ // Copyright (c) 2002-2004 Sam Leffler, Errno Consulting
+ // All rights reserved.
+ // $ATH_LICENSE_NULL$
+ //
+ // Redistribution and use in source and binary forms, with or without
+ // modification, are permitted provided that the following conditions
+ // are met:
+ // 1. Redistributions of source code must retain the above copyright
+ //    notice, this list of conditions and the following disclaimer,
+ //    without modification.
+ // 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ //    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ //    redistribution must be conditioned upon including a substantially
+ //    similar Disclaimer requirement for further binary redistribution.
+ // 3. Neither the names of the above-listed copyright holders nor the names
+ //    of any contributors may be used to endorse or promote products derived
+ //    from this software without specific prior written permission.
+ //
+ // Alternatively, this software may be distributed under the terms of the
+ // GNU General Public License ("GPL") version 2 as published by the Free
+ // Software Foundation.
+ //
+ // NO WARRANTY
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ // ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ // LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ // AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ // OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ // IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ // THE POSSIBILITY OF SUCH DAMAGES.
+ //
+ // $Id: //components/rel/wlanfw.cnss/1.0.1/cnss_proc/wlan/fw/target/src/wlan/proto/include/if_ethersubr.h#3 $
+//
+
+===============================================================================================================
+
+/*
+ * Copyright (c) 2011-2017 Qualcomm Technologies, Inc.
+ * 2011 Qualcomm Atheros, Inc.
+ * All Rights Reserved.
+ * Confidential and Proprietary - Qualcomm Technologies, Inc.
+ * Notifications and licenses are retained for attribution purposes only.
+ */
+/*
+ * For this file, which was received with alternative licensing options for
+ * distribution, Qualcomm Atheros, Inc. has selected the BSD license.
+ */
+
+/*
+ * SHA1 hash implementation and interface functions
+ * Copyright (c) 2003-2005, Jouni Malinen <jkmaline@cc.hut.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+ 
+ =============================================================================
+
diff --git a/rb5/firmware/ath11k/QCA6390/hw2.0/amss.bin b/rb5/firmware/ath11k/QCA6390/hw2.0/amss.bin
new file mode 100644
index 0000000..1d9d34a
--- /dev/null
+++ b/rb5/firmware/ath11k/QCA6390/hw2.0/amss.bin
Binary files differ
diff --git a/rb5/firmware/ath11k/QCA6390/hw2.0/board.bin b/rb5/firmware/ath11k/QCA6390/hw2.0/board.bin
new file mode 100644
index 0000000..fac5963
--- /dev/null
+++ b/rb5/firmware/ath11k/QCA6390/hw2.0/board.bin
Binary files differ
diff --git a/rb5/firmware/ath11k/QCA6390/hw2.0/m3.bin b/rb5/firmware/ath11k/QCA6390/hw2.0/m3.bin
new file mode 100644
index 0000000..1ffaab0
--- /dev/null
+++ b/rb5/firmware/ath11k/QCA6390/hw2.0/m3.bin
Binary files differ
diff --git a/rb5/firmware/device.mk b/rb5/firmware/device.mk
new file mode 100644
index 0000000..e4f0c3a
--- /dev/null
+++ b/rb5/firmware/device.mk
@@ -0,0 +1,34 @@
+# Copy firmware files
+
+PRODUCT_COPY_FILES := \
+    $(LOCAL_PATH)/a650_gmu.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_gmu.bin			\
+    $(LOCAL_PATH)/a650_sqe.fw:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_sqe.fw			\
+    $(LOCAL_PATH)/a650_zap.b00:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_zap.b00			\
+    $(LOCAL_PATH)/a650_zap.b01:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_zap.b01			\
+    $(LOCAL_PATH)/a650_zap.b02:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_zap.b02			\
+    $(LOCAL_PATH)/a650_zap.elf:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_zap.elf			\
+    $(LOCAL_PATH)/a650_zap.mbn:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_zap.mbn			\
+    $(LOCAL_PATH)/a650_zap.mdt:$(TARGET_COPY_OUT_VENDOR)/firmware/a650_zap.mdt			\
+    $(LOCAL_PATH)/lt9611uxc_fw.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/lt9611uxc_fw.bin		\
+    $(LOCAL_PATH)/a650_gmu.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_gmu.bin	\
+    $(LOCAL_PATH)/a650_sqe.fw:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_sqe.fw	\
+    $(LOCAL_PATH)/a650_zap.b00:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_zap.b00	\
+    $(LOCAL_PATH)/a650_zap.b01:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_zap.b01	\
+    $(LOCAL_PATH)/a650_zap.b02:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_zap.b02	\
+    $(LOCAL_PATH)/a650_zap.elf:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_zap.elf	\
+    $(LOCAL_PATH)/a650_zap.mbn:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_zap.mbn	\
+    $(LOCAL_PATH)/a650_zap.mdt:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/a650_zap.mdt
+
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/qcom/sm8250/adsp.mbn:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/adsp.mbn		\
+    $(LOCAL_PATH)/qcom/sm8250/adspr.jsn:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/adspr.jsn	\
+    $(LOCAL_PATH)/qcom/sm8250/adspua.jsn:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/adspua.jsn	\
+    $(LOCAL_PATH)/qcom/sm8250/cdsp.mbn:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/cdsp.mbn		\
+    $(LOCAL_PATH)/qcom/sm8250/cdspr.jsn:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/sm8250/cdspr.jsn
+
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/ath11k/QCA6390/hw2.0/amss.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ath11k/QCA6390/hw2.0/amss.bin	\
+    $(LOCAL_PATH)/ath11k/QCA6390/hw2.0/board.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ath11k/QCA6390/hw2.0/board.bin	\
+    $(LOCAL_PATH)/ath11k/QCA6390/hw2.0/m3.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ath11k/QCA6390/hw2.0/m3.bin		\
+    $(LOCAL_PATH)/qca/htbtfw20.tlv:$(TARGET_COPY_OUT_VENDOR)/firmware/qca/htbtfw20.tlv					\
+    $(LOCAL_PATH)/qca/htnv20.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/qca/htnv20.bin
diff --git a/rb5/firmware/lt9611uxc_fw.bin b/rb5/firmware/lt9611uxc_fw.bin
new file mode 100644
index 0000000..c6398d2
--- /dev/null
+++ b/rb5/firmware/lt9611uxc_fw.bin
Binary files differ
diff --git a/rb5/firmware/qca/htbtfw20.tlv b/rb5/firmware/qca/htbtfw20.tlv
new file mode 100644
index 0000000..f7d8aa9
--- /dev/null
+++ b/rb5/firmware/qca/htbtfw20.tlv
Binary files differ
diff --git a/rb5/firmware/qca/htnv20.bin b/rb5/firmware/qca/htnv20.bin
new file mode 100644
index 0000000..61732d4
--- /dev/null
+++ b/rb5/firmware/qca/htnv20.bin
Binary files differ
diff --git a/rb5/firmware/qcom/sm8250/adsp.mbn b/rb5/firmware/qcom/sm8250/adsp.mbn
new file mode 100644
index 0000000..274cb40
--- /dev/null
+++ b/rb5/firmware/qcom/sm8250/adsp.mbn
Binary files differ
diff --git a/rb5/firmware/qcom/sm8250/adspr.jsn b/rb5/firmware/qcom/sm8250/adspr.jsn
new file mode 100644
index 0000000..0964c15
--- /dev/null
+++ b/rb5/firmware/qcom/sm8250/adspr.jsn
@@ -0,0 +1,21 @@
+{
+    "sr_version": {
+        "major": 1,
+        "minor": 1,
+        "patch": 1
+    },
+    "sr_domain": {
+        "soc": "msm",
+        "domain": "adsp",
+        "subdomain": "root_pd",
+        "qmi_instance_id": 74
+    },
+    "sr_service": [
+        {
+            "provider": "tms",
+            "service": "servreg",
+            "service_data_valid": 0,
+            "service_data": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/rb5/firmware/qcom/sm8250/adspua.jsn b/rb5/firmware/qcom/sm8250/adspua.jsn
new file mode 100644
index 0000000..2d6824e
--- /dev/null
+++ b/rb5/firmware/qcom/sm8250/adspua.jsn
@@ -0,0 +1,27 @@
+{
+    "sr_version": {
+        "major": 1,
+        "minor": 1,
+        "patch": 1
+    },
+    "sr_domain": {
+        "soc": "msm",
+        "domain": "adsp",
+        "subdomain": "audio_pd",
+        "qmi_instance_id": 74
+    },
+    "sr_service": [
+        {
+            "provider": "tms",
+            "service": "servreg",
+            "service_data_valid": 0,
+            "service_data": 0
+        },
+        {
+            "provider": "avs",
+            "service": "audio",
+            "service_data_valid": 0,
+            "service_data": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/rb5/firmware/qcom/sm8250/cdsp.mbn b/rb5/firmware/qcom/sm8250/cdsp.mbn
new file mode 100644
index 0000000..f8b6653
--- /dev/null
+++ b/rb5/firmware/qcom/sm8250/cdsp.mbn
Binary files differ
diff --git a/rb5/firmware/qcom/sm8250/cdspr.jsn b/rb5/firmware/qcom/sm8250/cdspr.jsn
new file mode 100644
index 0000000..5d976a6
--- /dev/null
+++ b/rb5/firmware/qcom/sm8250/cdspr.jsn
@@ -0,0 +1,21 @@
+{
+    "sr_version": {
+        "major": 1,
+        "minor": 1,
+        "patch": 1
+    },
+    "sr_domain": {
+        "soc": "msm",
+        "domain": "cdsp",
+        "subdomain": "root_pd",
+        "qmi_instance_id": 76
+    },
+    "sr_service": [
+        {
+            "provider": "tms",
+            "service": "servreg",
+            "service_data_valid": 0,
+            "service_data": 0
+        }
+    ]
+}
\ No newline at end of file
diff --git a/rb5/mixer_paths.xml b/rb5/mixer_paths.xml
new file mode 100644
index 0000000..86e67fc
--- /dev/null
+++ b/rb5/mixer_paths.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<mixer>
+	<!-- Enable HDMI out -->
+	<ctl name="TERT_MI2S_RX Audio Mixer MultiMedia1" value="1" />
+</mixer>
diff --git a/sepolicy/file.te b/sepolicy/file.te
index 4a0ada7..54de779 100644
--- a/sepolicy/file.te
+++ b/sepolicy/file.te
@@ -2,6 +2,7 @@
 type sysfs_mss, fs_type, sysfs_type;
 type sysfs_rmtfs, fs_type, sysfs_type;
 type sysfs_remoteproc, fs_type, sysfs_type;
+type sysfs_udc, fs_type, sysfs_type;
 type dri_device, dev_type;
 type rmtfs_device, dev_type;
 type modem_block_device, dev_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 6bc4965..1022689 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -13,11 +13,15 @@
 /dev/ttyMSM0				u:object_r:console_device:s0
 
 /sys/bus/platform/drivers/qcom-q6v5-mss							u:object_r:sysfs_mss:s0
+/sys/module/qcom_q6v5_mss								u:object_r:sysfs_mss:s0
 /sys/devices/platform/88f00000.memory/rmtfs						u:object_r:sysfs_rmtfs:s0
 
 /sys/devices/platform/soc@0/4080000.remoteproc						u:object_r:sysfs_remoteproc:s0
+/sys/devices/platform/soc@0/8300000.remoteproc						u:object_r:sysfs_remoteproc:s0
+/sys/devices/platform/soc@0/17300000.remoteproc						u:object_r:sysfs_remoteproc:s0
 /sys/devices/platform/soc@0/ae00000.mdss						u:object_r:sysfs_gpu:s0
 
+#wakeups on db845c
 /sys/devices/platform/soc@0/1c00000.pci/pci0000:00/0000:00:00.0/0000:01:00.0/wakeup/wakeup1						u:object_r:sysfs_wakeup:s0
 /sys/devices/platform/soc@0/a6f8800.usb/wakeup/wakeup2											u:object_r:sysfs_wakeup:s0
 /sys/devices/platform/soc@0/a8f8800.usb/wakeup/wakeup3											u:object_r:sysfs_wakeup:s0
@@ -26,10 +30,18 @@
 /sys/devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/wakeup/wakeup6					u:object_r:sysfs_wakeup:s0
 /sys/devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/rtc/rtc0/alarmtimer.2.auto/wakeup/wakeup7		u:object_r:sysfs_wakeup:s0
 
+#wakeups on RB5
+/sys/devices/platform/soc@0/a6f8800.usb/wakeup/wakeup0											u:object_r:sysfs_wakeup:s0
+/sys/devices/platform/soc@0/a8f8800.usb/wakeup/wakeup1											u:object_r:sysfs_wakeup:s0
+/sys/devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/wakeup/wakeup3					u:object_r:sysfs_wakeup:s0
+/sys/devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/rtc/rtc0/alarmtimer.1.auto/wakeup/wakeup4		u:object_r:sysfs_wakeup:s0
+
 /sys/class/remoteproc									u:object_r:sysfs_remoteproc:s0
 /sys/devices/platform/remoteproc-adsp/remoteproc					u:object_r:sysfs_remoteproc:s0
 /sys/devices/platform/remoteproc-cdsp/remoteproc					u:object_r:sysfs_remoteproc:s0
 
+/sys/class/udc										u:object_r:sysfs_udc:s0
+
 /data/vendor/tmp(/.*)?									u:object_r:tqftpserv_vendor_data_file:s0
 /data/vendor/readwrite(/.*)?								u:object_r:tqftpserv_vendor_data_file:s0
 /data/vendor/readonly(/.*)?								u:object_r:tqftpserv_vendor_data_file:s0
@@ -37,6 +49,7 @@
 /system/bin/eth_mac_addr\.sh								u:object_r:eth_mac_addr_exec:s0
 /system/bin/tinymix									u:object_r:tinymix_exec:s0
 
+/vendor/bin/grep									u:object_r:vendor_toolbox_exec:s0
 /vendor/bin/hw/android\.hardware\.gatekeeper@1\.0-service\.software			u:object_r:hal_gatekeeper_default_exec:s0
 /vendor/bin/hw/android\.hardware\.graphics\.allocator@4\.0-service\.minigbm_msm		u:object_r:hal_graphics_allocator_default_exec:s0
 /vendor/bin/pd-mapper									u:object_r:pd_mapper_exec:s0
@@ -45,6 +58,7 @@
 /vendor/bin/rmtfs									u:object_r:rmtfs_exec:s0
 /vendor/bin/tqftpserv									u:object_r:tqftpserv_exec:s0
 /vendor/bin/suspend_blocker								u:object_r:suspend_blocker_exec:s0
+/vendor/bin/set_udc\.sh									u:object_r:set_udc_exec:s0
 
 /vendor/lib(64)?/dri/.*									u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/hw/gralloc\.gbm\.so							u:object_r:same_process_hal_file:s0
diff --git a/sepolicy/genfs_contexts b/sepolicy/genfs_contexts
index a0999b0..95ce0cc 100644
--- a/sepolicy/genfs_contexts
+++ b/sepolicy/genfs_contexts
@@ -2,7 +2,12 @@
 genfscon sysfs   /devices/platform/remoteproc-adsp/remoteproc					u:object_r:sysfs_remoteproc:s0
 genfscon sysfs   /devices/platform/remoteproc-cdsp/remoteproc					u:object_r:sysfs_remoteproc:s0
 genfscon sysfs   /devices/platform/soc@0/4080000.remoteproc					u:object_r:sysfs_remoteproc:s0
+genfscon sysfs   /devices/platform/soc@0/8300000.remoteproc					u:object_r:sysfs_remoteproc:s0
+genfscon sysfs   /devices/platform/soc@0/17300000.remoteproc					u:object_r:sysfs_remoteproc:s0
 genfscon sysfs   /devices/platform/soc@0/ae00000.mdss						u:object_r:sysfs_gpu:s0
+genfscon sysfs   /class/udc									u:object_r:sysfs_udc:s0
+
+#wakeups on db845c
 genfscon sysfs   /devices/platform/soc@0/1c00000.pci/pci0000:00/0000:00:00.0/0000:01:00.0/wakeup/wakeup1					u:object_r:sysfs_wakeup:s0
 genfscon sysfs   /devices/platform/soc@0/a6f8800.usb/wakeup/wakeup2										u:object_r:sysfs_wakeup:s0
 genfscon sysfs   /devices/platform/soc@0/a8f8800.usb/wakeup/wakeup3										u:object_r:sysfs_wakeup:s0
@@ -10,3 +15,9 @@
 genfscon sysfs   /devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:pon@800/c440000.spmi:pmic@0:pon@800:resin/wakeup/wakeup5	u:object_r:sysfs_wakeup:s0
 genfscon sysfs   /devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/wakeup/wakeup6					u:object_r:sysfs_wakeup:s0
 genfscon sysfs   /devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/rtc/rtc0/alarmtimer.2.auto/wakeup/wakeup7	u:object_r:sysfs_wakeup:s0
+
+#wakeups on RB5
+genfscon sysfs   /devices/platform/soc@0/a6f8800.usb/wakeup/wakeup0										u:object_r:sysfs_wakeup:s0
+genfscon sysfs   /devices/platform/soc@0/a8f8800.usb/wakeup/wakeup1										u:object_r:sysfs_wakeup:s0
+genfscon sysfs   /devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/wakeup/wakeup3					u:object_r:sysfs_wakeup:s0
+genfscon sysfs   /devices/platform/soc@0/c440000.spmi/spmi-0/0-00/c440000.spmi:pmic@0:rtc@6000/rtc/rtc0/alarmtimer.1.auto/wakeup/wakeup4	u:object_r:sysfs_wakeup:s0
diff --git a/sepolicy/hal_camera.te b/sepolicy/hal_camera.te
new file mode 100644
index 0000000..6bbc346
--- /dev/null
+++ b/sepolicy/hal_camera.te
@@ -0,0 +1,15 @@
+vndbinder_use(hal_camera_default);
+
+allow hal_camera_default hal_graphics_mapper_hwservice:hwservice_manager find;
+hal_client_domain(hal_camera_default, hal_graphics_allocator);
+hal_client_domain(hal_camera_default, hal_graphics_composer);
+
+# for external camera
+allow cameraserver device:dir r_dir_perms;
+allow cameraserver video_device:dir r_dir_perms;
+allow cameraserver video_device:chr_file rw_file_perms;
+
+allow hal_camera_default gpu_device:chr_file { open read write ioctl map getattr };
+allow hal_camera_default dri_device:dir { open read search };
+allow cameraserver dri_device:dir { open read write search getattr };
+allow cameraserver gpu_device:chr_file { open read write ioctl map getattr };
diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts
new file mode 100644
index 0000000..0d68bd3
--- /dev/null
+++ b/sepolicy/property_contexts
@@ -0,0 +1 @@
+vendor.usb.controller  u:object_r:vendor_usb_prop:s0
diff --git a/sepolicy/set_udc.te b/sepolicy/set_udc.te
new file mode 100644
index 0000000..d810bd2
--- /dev/null
+++ b/sepolicy/set_udc.te
@@ -0,0 +1,11 @@
+type set_udc, domain;
+type set_udc_exec, exec_type, vendor_file_type, file_type;
+init_daemon_domain(set_udc);
+
+vendor_public_prop(vendor_usb_prop)
+set_prop(set_udc, vendor_usb_prop)
+get_prop(vendor_init, vendor_usb_prop)
+
+allow set_udc vendor_shell_exec:file rx_file_perms;
+allow set_udc vendor_toolbox_exec:file rx_file_perms;
+allow set_udc sysfs_udc:dir { open read search };
diff --git a/ueventd.common.rc b/ueventd.common.rc
index c0ba022..8ae7d94 100644
--- a/ueventd.common.rc
+++ b/ueventd.common.rc
@@ -1,5 +1,3 @@
-modalias_handling enabled
-
 subsystem usbmisc
     devname uevent_devname
 
@@ -11,3 +9,7 @@
 
 # media.codec2
 /dev/ion 0664 system system
+
+# usb webcam?
+/dev/video0 0660 system camera
+/dev/video1 0660 system camera