diff --git a/IOTARM64.md b/IOTARM64.md
new file mode 100644
index 0000000..35f244d
--- /dev/null
+++ b/IOTARM64.md
@@ -0,0 +1,138 @@
+# 64-bit IoT Core
+
+This repo currently provides experimental ARM64 IoT Core support for Raspberry Pi 3 and 4.
+
+The supported version is 1809 (Build 17763).
+
+## 64-bit firmware
+
+A 64-bit UEFI firmware for the corresponding platform is required to export the BSP.
+
+### Raspberry Pi 4
+
+For the Raspberry Pi 4, firmware from the [Pi Firmware Task Force](https://rpi4-uefi.dev) is used, which provides UEFI and ACPI support. It is available at https://github.com/pftf/RPi4/releases.
+
+Place the firmware files in `bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware`, the following files are required.
+
+```text
+config.txt
+fixup4.dat
+RPI_EFI.fd
+start4.elf
+bcm2711-rpi-4-b.dtb
+bcm2711-rpi-400.dtb
+bcm2711-rpi-cm4.dtb
+```
+
+### Raspberry Pi 3
+
+For the Raspberry Pi 3, the Pi Firmware Task Force provides firmware at https://github.com/pftf/RPi3/releases, which provides UEFI and ACPI support.
+
+Place the firmware files in `bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware`, the following files are required.
+
+```text
+bootcode.bin
+config.txt
+fixup.dat
+RPI_EFI.fd
+start.elf
+bcm2710-rpi-3-b.dtb
+bcm2710-rpi-3-b-plus.dtb
+bcm2710-rpi-cm3.dtb
+```
+
+### 64-bit EFI Customisations
+
+[SMBIOS requirements of Windows 10 IoT Core OEM Licensing](https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/license-requirements#smbios-support) requires a custom version of RPI_EFI.fd with the proper SMBIOS values.
+
+See [PlatformSmbiosDxe.c](https://github.com/tianocore/edk2-platforms/blob/master/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c) to update the SMBIOS data. Steps to build the RPI_EFI.fd is provided in the [edk2-platforms Github](https://github.com/tianocore/edk2-platforms).
+
+## Export the 64-bit BSP
+
+We provide a `binexport.ps1` script to scrape the BSP components together into a zip file for easy use with the IoT ADK AddonKit.
+1. Open Powershell
+2. Navigate to rpi-iotcore\tools
+3. Run `binexport.ps1` with the appropriate arguments.
+ ```powershell
+ # Platform:
+ # RPi - Raspberry Pi 2/3 32-bit BSP
+ # RPi3.ARM64 - Raspberry Pi 3 64-bit BSP (experimental)
+ # RPi4.ARM64 - Raspberry Pi 4 64-bit BSP (experimental)
+
+ # OutputDir
+ # The output directory for the BSP zip file.
+
+ # IsDebug
+ # Specify to package debug binaries. Default is Release binaries.
+ .\binexport.ps1 [Platform] [OutputDir] [-IsDebug]
+
+ # Samples
+ # 64-bit BSP for Raspberry Pi 3, release binaries
+ .\binexport.ps1 RPi3.ARM64 C:\Release
+
+ # 64-bit BSP for Raspberry Pi 4, debug binaries
+ .\binexport.ps1 RPi4.ARM64 C:\Debug -IsDebug
+ ```
+4. The script will generate a zip file **RPix.ARM64.BSP.xx.zip** that can be imported into the IoT-ADK-Addonkit shell using [Import-IoTBSP](https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-IoTBSP.md).
+ ```powershell
+ Import-IoTBSP RPi3.ARM64 C:\Temp\RPi3.ARM64.BSP.xx.zip
+ (or)
+ Import-IoTBSP RPi4.ARM64 C:\Temp\RPi4.ARM64.BSP.xx.zip
+ ```
+## Additional Drivers
+
+Some additional drivers are required for a usable image.
+
+You'll need the INF-style driver packages. For each INF file, use the following command to create a IoT driver package:
+
+```powershell
+Add-IoTDriverPackage sample_driver.inf Drivers.Sample
+```
+
+To add driver packages to your IoT Core image, refer to [Add a driver to an image](https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/add-a-driver-to-an-image) of the IoT Core manufacturing guide.
+
+**WARNING:** If you are going to commercialize your IoT device, please make sure you have valid licenses for the drivers you use.
+
+### USB Driver for Raspberry Pi 3
+
+The DWCUSBOTG USB controller driver for Raspberry Pi 2 and 3 is included in the ARM32 IoT Core packages, but not the ARM64 ones.
+
+The original author of this driver, MCCI, released an ARM64 version of the same driver under a **non commercial** license. The driver is available at https://pi64.win/download-usb-drivers/.
+
+Download the standalone driver EXE, run the EXE file to extract the driver files. You'll need to add both `mcci_dwchsotg_hub.inf` and `mcci_dwchsotg_hcd.inf`.
+
+### Drivers for LAN adapters
+
+The ARM64 IoT Core has drivers for the ASIX AX88772 USB 2.0 to Fast Ethernet Adapter builtin, for other adapters, you'll need to provide your own driver.
+
+**WARNING:** The bcmgenet driver in this repo, for the GENET Gigabit LAN adapter on Raspberry Pi 4, is currently **NOT** supported on IoT Core.
+
+- For the builtin adapter on Rasberry Pi 2/3, ARM64 drivers are available from Microchip. \
+To download, go to https://www.microchip.com/en-us/software-library, search for LAN9500 (for Pi 2/3B) or LAN78xx (for Pi 3B+), and select the one listed as "LANxxxx Windows (OneCore) Device Drivers".\
+Download the zip package, and extract the files at `ndis650/arm64`.
+
+- For Realtek USB LAN adapters (RTL8152, RTL8153, etc), ARM64 drivers are available on Realtek website at https://www.realtek.com/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software. \
+Download the "Win10 Auto Installation Program", open the install EXE with 7-zip, and extract the files at `WIN10/arm64`.
+
+- **For testing purposes,** you may also extract drivers from a Windows 10 ARM64 v1809 (Build 17763) Desktop image. \
+You can get drivers for these adapters in the following locations: \
+Realtek USB adapters: `Windows\System32\DriverStore\FileRepository\rtuarm64w10.inf_arm64_15e06ca8abe46b2a` \
+ASIX AX88179: `Windows\System32\DriverStore\FileRepository\netax88179_178a.inf_arm64_c5dc3d41b0e4583b`
+
+## User Interface and App Compatibility
+
+ARM64 IoT Core does not contain the default graphical user interface. By default, the resulting image will boot to a blank screen and have to be managed via the Device Portal web interface or SSH.
+
+The UI App, IoTCoreDefaultApp, is available in source at https://github.com/Microsoft/Windows-iotcore-samples/tree/master/Samples/IoTCoreDefaultApp. To add this app to your image, refer to [Add an app to your image](https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/deploy-your-app-with-a-standard-board) of the IoT Core manufacturing guide.
+
+IoT Core does not support WOW (Windows on Windows), so only ARM64 apps run on ARM64 IoT Core.
+
+## GPIO, I2C, SPI Access via WinRT API
+
+GPIO should work out of the box via the `Windows.Device.Gpio` API.
+
+I2C and SPI access will **not** work on PFTF / upstream TianoCore firmware, since upstream TianoCore has updated the pin muxing declaration from the Microsoft-proprietary `MsftFunctionConfig` to the new standardized `PinFunction`.
+
+Windows support for `PinFunction` is added in v1903 (Build 18362), therefore I2C and SPI will not work on IoT Core unless this change is reverted.
+
+For more information, check out https://edk2.groups.io/g/devel/message/56396, https://github.com/andreiw/RaspberryPiPkg/issues/132, and https://github.com/andreiw/RaspberryPiPkg/commit/87f3611f9da37f594421bbaf513b9aaccee72176.
diff --git a/README.md b/README.md
index 8cd84b8..3b79e4e 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ For the Raspberry Pi 2 (v1.2) and Raspberry Pi 3, the Pi Firmware Task Force pro
## 32-bit firmware
-Sample binaries of the firmware is included in [RPi.BootFirmware](bspfiles/Packages/RPi.BootFirmware) to enable quick prototyping. The sources for these binaries are listed below.
+Sample binaries of the firmware is included in [RPi.BootFirmware](bspfiles/RPi/Packages/RPi.BootFirmware) to enable quick prototyping. The sources for these binaries are listed below.
1. Firmware binaries : [RaspberryPi/Firmware](https://github.com/raspberrypi/firmware)
2. UEFI Sources : [RPi/UEFI](https://github.com/ms-iot/RPi-UEFI)
@@ -40,20 +40,41 @@ See [PlatformSmbiosDxe.c](https://github.com/ms-iot/RPi-UEFI/blob/ms-iot/Pi3Boar
The resulting driver binaries will be located in the `windows-drivers\build\bcm2836\ARM\Output` folder, or `windows-drivers\build\bcm2836\ARM64\Output` if you picked an Arm 64-bit configuration.
-## Export the bsp
+## 64-bit IoT Core
-Note: this section is only applicable to Windows 10 IoT Core.
+This repo provides experimental ARM64 IoT Core support for Raspberry Pi 3 and 4.
+
+Please refer to [IOTARM64.md](IOTARM64.md) for more information.
+
+## Export the 32-bit BSP
+
+Note: this section is only applicable to 32-bit Windows 10 IoT Core for Raspberry Pi 3 and earlier, please refer to [IOTARM64.md](IOTARM64.md) for the experimental 64-bit BSP.
We provide a `binexport.ps1` script to scrape the BSP components together into a zip file for easy use with the IoT ADK AddonKit.
1. Open Powershell
2. Navigate to rpi-iotcore\tools
3. Run `binexport.ps1` with the appropriate arguments.
```powershell
- .\binexport.ps1 C:\Release
- (or)
- .\binexport.ps1 C:\Release -IsDebug # for debug binaries
+ # Platform:
+ # RPi - Raspberry Pi 2/3 32-bit BSP
+ # RPi3.ARM64 - Raspberry Pi 3 64-bit BSP (experimental)
+ # RPi4.ARM64 - Raspberry Pi 4 64-bit BSP (experimental)
+
+ # OutputDir
+ # The output directory for the BSP zip file.
+
+ # IsDebug
+ # Specify to package debug binaries. Default is Release binaries.
+ .\binexport.ps1 [Platform] [OutputDir] [-IsDebug]
+
+ # Samples
+ # 32-bit BSP for Raspberry Pi 2/3, release binaries
+ .\binexport.ps1 RPi C:\Release
+
+ # 32-bit BSP for Raspberry Pi 2/3, debug binaries
+ .\binexport.ps1 RPi C:\Debug -IsDebug
```
-4. The script will generate a zip file **RPi_BSP_xx.zip** that can be imported into the IoT-ADK-Addonkit shell using [Import-IoTBSP](https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-IoTBSP.md).
- ```powershell
- Import-IoTBSP RPi C:\Temp\RPi_BSP_xx.zip
+4. The script will generate a zip file **RPi.BSP.xx.zip** that can be imported into the IoT-ADK-Addonkit shell using [Import-IoTBSP](https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-IoTBSP.md).
+ ```powershell
+ Import-IoTBSP RPi C:\Temp\RPi.BSP.xx.zip
```
diff --git a/bspfiles/OEMInputSamples/RetailOEMInput.xml b/bspfiles/RPi/OEMInputSamples/RetailOEMInput.xml
similarity index 100%
rename from bspfiles/OEMInputSamples/RetailOEMInput.xml
rename to bspfiles/RPi/OEMInputSamples/RetailOEMInput.xml
diff --git a/bspfiles/OEMInputSamples/TestOEMInput.xml b/bspfiles/RPi/OEMInputSamples/TestOEMInput.xml
similarity index 100%
rename from bspfiles/OEMInputSamples/TestOEMInput.xml
rename to bspfiles/RPi/OEMInputSamples/TestOEMInput.xml
diff --git a/bspfiles/Packages/RPi.BootFirmware/LICENCE.broadcom b/bspfiles/RPi/Packages/RPi.BootFirmware/LICENCE.broadcom
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/LICENCE.broadcom
rename to bspfiles/RPi/Packages/RPi.BootFirmware/LICENCE.broadcom
diff --git a/bspfiles/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml b/bspfiles/RPi/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
rename to bspfiles/RPi/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
diff --git a/bspfiles/Packages/RPi.BootFirmware/bootcode.bin b/bspfiles/RPi/Packages/RPi.BootFirmware/bootcode.bin
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/bootcode.bin
rename to bspfiles/RPi/Packages/RPi.BootFirmware/bootcode.bin
diff --git a/bspfiles/Packages/RPi.BootFirmware/config.txt b/bspfiles/RPi/Packages/RPi.BootFirmware/config.txt
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/config.txt
rename to bspfiles/RPi/Packages/RPi.BootFirmware/config.txt
diff --git a/bspfiles/Packages/RPi.BootFirmware/fixup.dat b/bspfiles/RPi/Packages/RPi.BootFirmware/fixup.dat
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/fixup.dat
rename to bspfiles/RPi/Packages/RPi.BootFirmware/fixup.dat
diff --git a/bspfiles/Packages/RPi.BootFirmware/fixup_cd.dat b/bspfiles/RPi/Packages/RPi.BootFirmware/fixup_cd.dat
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/fixup_cd.dat
rename to bspfiles/RPi/Packages/RPi.BootFirmware/fixup_cd.dat
diff --git a/bspfiles/Packages/RPi.BootFirmware/fixup_x.dat b/bspfiles/RPi/Packages/RPi.BootFirmware/fixup_x.dat
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/fixup_x.dat
rename to bspfiles/RPi/Packages/RPi.BootFirmware/fixup_x.dat
diff --git a/bspfiles/Packages/RPi.BootFirmware/kernel.img b/bspfiles/RPi/Packages/RPi.BootFirmware/kernel.img
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/kernel.img
rename to bspfiles/RPi/Packages/RPi.BootFirmware/kernel.img
diff --git a/bspfiles/Packages/RPi.BootFirmware/start.elf b/bspfiles/RPi/Packages/RPi.BootFirmware/start.elf
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/start.elf
rename to bspfiles/RPi/Packages/RPi.BootFirmware/start.elf
diff --git a/bspfiles/Packages/RPi.BootFirmware/start_cd.elf b/bspfiles/RPi/Packages/RPi.BootFirmware/start_cd.elf
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/start_cd.elf
rename to bspfiles/RPi/Packages/RPi.BootFirmware/start_cd.elf
diff --git a/bspfiles/Packages/RPi.BootFirmware/start_x.elf b/bspfiles/RPi/Packages/RPi.BootFirmware/start_x.elf
similarity index 100%
rename from bspfiles/Packages/RPi.BootFirmware/start_x.elf
rename to bspfiles/RPi/Packages/RPi.BootFirmware/start_x.elf
diff --git a/bspfiles/Packages/RPi.Customization/RPi.Customization.wm.xml b/bspfiles/RPi/Packages/RPi.Customization/RPi.Customization.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Customization/RPi.Customization.wm.xml
rename to bspfiles/RPi/Packages/RPi.Customization/RPi.Customization.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/SerPL011.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/SerPL011.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/SerPL011.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/SerPL011.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/bcm2836pwm.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcm2836pwm.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/bcm2836pwm.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/bcm2836pwm.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/bcm2836sdhc.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/bcmauxspi.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmauxspi.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/bcmauxspi.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/bcmauxspi.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/bcmgpio.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmgpio.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/bcmgpio.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/bcmgpio.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/bcmi2c.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmi2c.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/bcmi2c.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/bcmi2c.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/bcmspi.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmspi.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/bcmspi.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/bcmspi.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/piminiuart.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/piminiuart.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/piminiuart.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/piminiuart.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/rpiq.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/rpiq.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/rpiq.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/rpiq.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/rpisdhc.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/rpisdhc.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/rpisdhc.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/rpisdhc.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/rpiwav.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/rpiwav.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/rpiwav.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/rpiwav.wm.xml
diff --git a/bspfiles/Packages/RPi.Drivers/vchiq.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/vchiq.wm.xml
similarity index 100%
rename from bspfiles/Packages/RPi.Drivers/vchiq.wm.xml
rename to bspfiles/RPi/Packages/RPi.Drivers/vchiq.wm.xml
diff --git a/bspfiles/Packages/RPiFM.xml b/bspfiles/RPi/Packages/RPiFM.xml
similarity index 100%
rename from bspfiles/Packages/RPiFM.xml
rename to bspfiles/RPi/Packages/RPiFM.xml
diff --git a/bspfiles/Packages/RPiFMFileList.xml b/bspfiles/RPi/Packages/RPiFMFileList.xml
similarity index 100%
rename from bspfiles/Packages/RPiFMFileList.xml
rename to bspfiles/RPi/Packages/RPiFMFileList.xml
diff --git a/bspfiles/RPi3.ARM64/OEMInputSamples/RetailOEMInput.xml b/bspfiles/RPi3.ARM64/OEMInputSamples/RetailOEMInput.xml
new file mode 100644
index 0000000..d41df57
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/OEMInputSamples/RetailOEMInput.xml
@@ -0,0 +1,63 @@
+
+
+ Contoso Windows 10 IoT Core Retail FFU with RPi BSP
+ RPi-R
+
+ RASPBERRY PI
+ RPi-R
+
+ Production
+ fre
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+ en-us
+
+ 1024x768
+
+
+
+ %BLD_DIR%\MergedFMs\RPiFM.xml
+
+ %BLD_DIR%\MergedFMs\OEMCommonFM.xml
+ %BLD_DIR%\MergedFMs\OEMFM.xml
+
+
+
+ IOT_EFIESP
+ IOT_EFIESP_BCD_MBR
+ IOT_DMAP_DRIVER
+ IOT_GENERIC_POP
+
+ IOT_UAP_OOBE
+ IOT_APP_TOOLKIT
+
+ IOT_BERTHA
+ IOT_ALLJOYN_APP
+
+
+
+
+ RPI2_DRIVERS
+ RPI3_DRIVERS
+
+ OEM_CustomCmd
+ OEM_ProvAuto
+
+
+
+
+ Windows 10 IoT Core
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/OEMInputSamples/TestOEMInput.xml b/bspfiles/RPi3.ARM64/OEMInputSamples/TestOEMInput.xml
new file mode 100644
index 0000000..c7336f7
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/OEMInputSamples/TestOEMInput.xml
@@ -0,0 +1,87 @@
+
+
+ Contoso Windows 10 IoT Core Test FFU with RPi BSP
+ RPi-R
+
+ RASPBERRY PI
+ RPi-R
+
+ Test
+ fre
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+ en-us
+
+ 1024x768
+
+
+
+ %BLD_DIR%\MergedFMs\RPiFM.xml
+
+ %BLD_DIR%\MergedFMs\OEMCommonFM.xml
+ %BLD_DIR%\MergedFMs\OEMFM.xml
+
+
+ %AKROOT%\FMFiles\arm64\IoTUAPNonProductionPartnerShareFM.xml
+
+
+
+ IOT_EFIESP
+ IOT_EFIESP_BCD_MBR
+ IOT_DMAP_DRIVER
+ IOT_CP210x_MAKERDRIVER
+ IOT_FTSER2K_MAKERDRIVER
+ IOT_GENERIC_POP
+
+ IOT_UAP_OOBE
+ IOT_APP_TOOLKIT
+
+ IOT_WEBB_EXTN
+ IOT_POWERSHELL
+
+ IOT_SSH
+ IOT_SIREP
+
+ IOT_ENABLE_TESTSIGNING
+ IOT_TOOLKIT
+
+ IOT_KDSERIAL_SETTINGS
+ IOT_UMDFDBG_SETTINGS
+ IOT_WDTF
+ IOT_CRT140
+ IOT_DIRECTX_TOOLS
+
+
+ IOT_BERTHA
+ IOT_ALLJOYN_APP
+ IOT_NANORDPSERVER
+ IOT_SHELL_HOTKEY_SUPPORT
+ IOT_APPLICATIONS
+
+
+
+
+ RPI2_DRIVERS
+ RPI3_DRIVERS
+
+ OEM_CustomCmd
+ OEM_ProvAuto
+
+
+
+
+ Windows 10 IoT Core
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
new file mode 100644
index 0000000..d5a54ad
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml
new file mode 100644
index 0000000..5710b51
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml
new file mode 100644
index 0000000..43472d0
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
new file mode 100644
index 0000000..739e011
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml
new file mode 100644
index 0000000..d058572
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml
new file mode 100644
index 0000000..4f84ebc
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
new file mode 100644
index 0000000..51a75a3
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml
new file mode 100644
index 0000000..b0cef54
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml
new file mode 100644
index 0000000..70e4162
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml
new file mode 100644
index 0000000..67812a2
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml
new file mode 100644
index 0000000..9d2aac1
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml
new file mode 100644
index 0000000..0dc9a82
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiq.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiq.wm.xml
new file mode 100644
index 0000000..2f7929b
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiq.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpisdhc.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpisdhc.wm.xml
new file mode 100644
index 0000000..64cd96d
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpisdhc.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml
new file mode 100644
index 0000000..fa3b483
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi3.ARM64/Packages/RPi3.ARM64FMFileList.xml b/bspfiles/RPi3.ARM64/Packages/RPi3.ARM64FMFileList.xml
new file mode 100644
index 0000000..56bc4bf
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPi3.ARM64FMFileList.xml
@@ -0,0 +1,20 @@
+
+
+ true
+
+
+
+
+
+ 1024x768
+
+
+
+ en-US
+
+
+
+ en-US
+
+
+
diff --git a/bspfiles/RPi3.ARM64/Packages/RPiFM.xml b/bspfiles/RPi3.ARM64/Packages/RPiFM.xml
new file mode 100644
index 0000000..1520255
--- /dev/null
+++ b/bspfiles/RPi3.ARM64/Packages/RPiFM.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RPI2_DRIVERS
+
+
+
+
+ RPI2_DRIVERS
+
+
+
+
+ RPI2_DRIVERS
+
+
+
+
+ RPI2_GPIO_DRIVER
+ RPI2_DRIVERS
+
+
+
+
+ RPI2_DRIVERS
+
+
+
+
+ RPI2_DRIVERS
+
+
+
+
+ RPI2_DRIVERS
+
+
+
+
+ RPI_MINIUART
+ RPI3_DRIVERS
+
+
+
+
+ RPI3_DRIVERS
+
+
+
+
+
+
diff --git a/bspfiles/RPi4.ARM64/OEMInputSamples/RetailOEMInput.xml b/bspfiles/RPi4.ARM64/OEMInputSamples/RetailOEMInput.xml
new file mode 100644
index 0000000..3c888a0
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/OEMInputSamples/RetailOEMInput.xml
@@ -0,0 +1,62 @@
+
+
+ Contoso Windows 10 IoT Core Retail FFU with RPi BSP
+ RPi-R
+
+ RASPBERRY PI
+ RPi-R
+
+ Production
+ fre
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+ en-us
+
+ 1024x768
+
+
+
+ %BLD_DIR%\MergedFMs\RPiFM.xml
+
+ %BLD_DIR%\MergedFMs\OEMCommonFM.xml
+ %BLD_DIR%\MergedFMs\OEMFM.xml
+
+
+
+ IOT_EFIESP
+ IOT_EFIESP_BCD_MBR
+ IOT_DMAP_DRIVER
+ IOT_GENERIC_POP
+
+ IOT_UAP_OOBE
+ IOT_APP_TOOLKIT
+
+ IOT_BERTHA
+ IOT_ALLJOYN_APP
+
+
+
+
+ RPI_DRIVERS
+
+ OEM_CustomCmd
+ OEM_ProvAuto
+
+
+
+
+ Windows 10 IoT Core
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/OEMInputSamples/TestOEMInput.xml b/bspfiles/RPi4.ARM64/OEMInputSamples/TestOEMInput.xml
new file mode 100644
index 0000000..febe989
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/OEMInputSamples/TestOEMInput.xml
@@ -0,0 +1,86 @@
+
+
+ Contoso Windows 10 IoT Core Test FFU with RPi BSP
+ RPi-R
+
+ RASPBERRY PI
+ RPi-R
+
+ Test
+ fre
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+
+
+ en-us
+ en-us
+
+ 1024x768
+
+
+
+ %BLD_DIR%\MergedFMs\RPiFM.xml
+
+ %BLD_DIR%\MergedFMs\OEMCommonFM.xml
+ %BLD_DIR%\MergedFMs\OEMFM.xml
+
+
+ %AKROOT%\FMFiles\arm64\IoTUAPNonProductionPartnerShareFM.xml
+
+
+
+ IOT_EFIESP
+ IOT_EFIESP_BCD_MBR
+ IOT_DMAP_DRIVER
+ IOT_CP210x_MAKERDRIVER
+ IOT_FTSER2K_MAKERDRIVER
+ IOT_GENERIC_POP
+
+ IOT_UAP_OOBE
+ IOT_APP_TOOLKIT
+
+ IOT_WEBB_EXTN
+ IOT_POWERSHELL
+
+ IOT_SSH
+ IOT_SIREP
+
+ IOT_ENABLE_TESTSIGNING
+ IOT_TOOLKIT
+
+ IOT_KDSERIAL_SETTINGS
+ IOT_UMDFDBG_SETTINGS
+ IOT_WDTF
+ IOT_CRT140
+ IOT_DIRECTX_TOOLS
+
+
+ IOT_BERTHA
+ IOT_ALLJOYN_APP
+ IOT_NANORDPSERVER
+ IOT_SHELL_HOTKEY_SUPPORT
+ IOT_APPLICATIONS
+
+
+
+
+ RPI_DRIVERS
+
+ OEM_CustomCmd
+ OEM_ProvAuto
+
+
+
+
+ Windows 10 IoT Core
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
new file mode 100644
index 0000000..624ae0b
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml
new file mode 100644
index 0000000..5710b51
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SDHostBRCME88C.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SDHostBRCME88C.wm.xml
new file mode 100644
index 0000000..71399f6
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SDHostBRCME88C.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
new file mode 100644
index 0000000..83a0e14
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml
new file mode 100644
index 0000000..d058572
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml
new file mode 100644
index 0000000..4f84ebc
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
new file mode 100644
index 0000000..51a75a3
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml
new file mode 100644
index 0000000..b0cef54
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml
new file mode 100644
index 0000000..70e4162
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml
new file mode 100644
index 0000000..67812a2
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml
new file mode 100644
index 0000000..9d2aac1
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml
new file mode 100644
index 0000000..0dc9a82
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiq.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiq.wm.xml
new file mode 100644
index 0000000..2f7929b
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiq.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpirshub3.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpirshub3.wm.xml
new file mode 100644
index 0000000..7344574
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpirshub3.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiuxflt.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiuxflt.wm.xml
new file mode 100644
index 0000000..b6fba87
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiuxflt.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml
new file mode 100644
index 0000000..fa3b483
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/vchiq.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/vchiq.wm.xml
new file mode 100644
index 0000000..282e1d9
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/vchiq.wm.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/bspfiles/RPi4.ARM64/Packages/RPi4.ARM64FMFileList.xml b/bspfiles/RPi4.ARM64/Packages/RPi4.ARM64FMFileList.xml
new file mode 100644
index 0000000..56bc4bf
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPi4.ARM64FMFileList.xml
@@ -0,0 +1,20 @@
+
+
+ true
+
+
+
+
+
+ 1024x768
+
+
+
+ en-US
+
+
+
+ en-US
+
+
+
diff --git a/bspfiles/RPi4.ARM64/Packages/RPiFM.xml b/bspfiles/RPi4.ARM64/Packages/RPiFM.xml
new file mode 100644
index 0000000..1c57d8a
--- /dev/null
+++ b/bspfiles/RPi4.ARM64/Packages/RPiFM.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+ RPI_DRIVERS
+
+
+
+
+
+
diff --git a/build/bcm2836/buildbcm2836.sln b/build/bcm2836/buildbcm2836.sln
index 1463909..4d4ecde 100644
--- a/build/bcm2836/buildbcm2836.sln
+++ b/build/bcm2836/buildbcm2836.sln
@@ -64,6 +64,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bcmgenet_netadaptercx21", "
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDHostBRCME88C", "..\..\drivers\sd\bcm2711\brcme88c\SDHostBRCME88C.vcxproj", "{DC75D1FD-24D8-462B-8566-5E672802DDF3}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rpirshub3", "..\..\drivers\usb\bcm2711\rpirshub3\rpirshub3.vcxproj", "{DFE53385-0150-401F-91D2-66587EF1927A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
@@ -264,6 +266,18 @@ Global
{DC75D1FD-24D8-462B-8566-5E672802DDF3}.Release|ARM64.ActiveCfg = Release|ARM64
{DC75D1FD-24D8-462B-8566-5E672802DDF3}.Release|ARM64.Build.0 = Release|ARM64
{DC75D1FD-24D8-462B-8566-5E672802DDF3}.Release|ARM64.Deploy.0 = Release|ARM64
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM.ActiveCfg = Debug|ARM
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM.Build.0 = Debug|ARM
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM.Deploy.0 = Debug|ARM
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM64.Build.0 = Debug|ARM64
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM.ActiveCfg = Release|ARM
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM.Build.0 = Release|ARM
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM.Deploy.0 = Release|ARM
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM64.ActiveCfg = Release|ARM64
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM64.Build.0 = Release|ARM64
+ {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM64.Deploy.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/drivers/usb/bcm2711/rpirshub3/rpirshub3.filters b/drivers/usb/bcm2711/rpirshub3/rpirshub3.filters
new file mode 100644
index 0000000..7b27862
--- /dev/null
+++ b/drivers/usb/bcm2711/rpirshub3/rpirshub3.filters
@@ -0,0 +1,14 @@
+
+
+
+
+ {8E41214B-6785-4CFE-B992-037D68949A14}
+ inf;inv;inx;mof;mc;
+
+
+
+
+ Driver Files
+
+
+
\ No newline at end of file
diff --git a/drivers/usb/bcm2711/rpirshub3/rpirshub3.inx b/drivers/usb/bcm2711/rpirshub3/rpirshub3.inx
new file mode 100644
index 0000000..bd8aa28
--- /dev/null
+++ b/drivers/usb/bcm2711/rpirshub3/rpirshub3.inx
@@ -0,0 +1,33 @@
+[Version]
+Signature = "$Windows NT$"
+Class = USB
+ClassGUID = {36FC9E60-C465-11CF-8056-444553540000}
+Provider = %ProviderString%
+CatalogFile = rpirshub3.cat
+PnpLockdown = 1
+
+[Manufacturer]
+%RPi% = RPi,NT$ARCH$.10.0
+
+[RPi.NT$ARCH$.10.0]
+; Install the USB Root Hub on builds (RS5 or earlier) with broken XHCI driver
+; On these builds, the Hardware ID of the root hub would become B\ROOT_HUB30# instead of the normal
+; USB\ROOT_HUB30 and the stock INF will fail to work.
+%rpirshub3.DeviceDesc% = QuirkHubInstall, B\ROOT_HUB30#
+
+[QuirkHubInstall.NT]
+Include = usbhub3.inf
+Needs = Generic.Install.NT
+
+[QuirkHubInstall.NT.Services]
+Include = usbhub3.inf
+Needs = Generic.Install.NT.Services
+
+[QuirkHubInstall.NT.WMI]
+Include = usbhub3.inf
+Needs = Generic.Install.NT.WMI
+
+[Strings]
+ProviderString = "Open Source"
+RPi = "Raspberry Pi"
+rpirshub3.DeviceDesc = "USB 3.0 XHCI Root Hub"
diff --git a/drivers/usb/bcm2711/rpirshub3/rpirshub3.vcxproj b/drivers/usb/bcm2711/rpirshub3/rpirshub3.vcxproj
new file mode 100644
index 0000000..8aab01c
--- /dev/null
+++ b/drivers/usb/bcm2711/rpirshub3/rpirshub3.vcxproj
@@ -0,0 +1,166 @@
+
+
+
+
+ Debug
+ ARM
+
+
+ Release
+ ARM
+
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
+
+
+ {DFE53385-0150-401F-91D2-66587EF1927A}
+ {a1357fe7-03e0-4d61-85f4-09c7ed38c0c1}
+ v4.5
+ 12.0
+ $driverCurrentWindowsConfigurationName$ Debug
+ Win32
+ rpirshub3
+ $(LatestTargetPlatformVersion)
+
+
+
+ Windows10
+ true
+ WindowsKernelModeDriver10.0
+ Utility
+ Package
+ true
+ Universal
+
+
+ Windows10
+ false
+ WindowsKernelModeDriver10.0
+ Utility
+ Package
+ true
+ Universal
+
+
+ Windows10
+ true
+ WindowsKernelModeDriver10.0
+ Utility
+ Package
+ true
+ Universal
+
+
+ Windows10
+ false
+ WindowsKernelModeDriver10.0
+ Utility
+ Package
+ true
+ Universal
+
+
+
+
+
+
+
+
+
+
+
+
+ DbgengRemoteDebugger
+
+
+
+ False
+ False
+ True
+
+ 133563
+
+
+
+ DbgengRemoteDebugger
+
+
+
+ False
+ False
+ True
+
+ 133563
+
+
+
+ DbgengRemoteDebugger
+
+
+
+ False
+ False
+ True
+
+ 133563
+
+
+
+ DbgengRemoteDebugger
+
+
+
+ False
+ False
+ True
+
+ 133563
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR)
+
+
+
+
+
+
+ $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR)
+
+
+
+
+
+
+ $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR)
+
+
+
+
+
+
+ $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tools/binexport.cmd b/tools/binexport.cmd
index 3ea63f6..5ac7063 100644
--- a/tools/binexport.cmd
+++ b/tools/binexport.cmd
@@ -3,15 +3,19 @@ REM Export Script for exporting required binary files only
goto START
:Usage
-echo Usage: binexport [Release]/[Debug] [TargetDir]
+echo Usage: binexport [RPi]/[RPi3.ARM64]/[RPi4.ARM64] [Release]/[Debug] [TargetDir]
+echo RPi....................... Export the Raspberry 2/3 32Bit BSP.
+echo RPi3.ARM64................ Export the Raspberry 3 64Bit BSP.
+echo RPi4.ARM64................ Export the Raspberry 4 64Bit BSP.
+echo One of the above should be specified
echo Release................... Picks the release binaries
echo Debug..................... Picks the debug binaries
echo One of the above should be specified
echo [TargetDir]............... Directory to export the files.
echo [/?]...................... Displays this usage string.
echo Example:
-echo binexport Release C:\bsp_v1.0_release
-echo binexport Debug C:\bsp_v1.0_debug
+echo binexport RPi Release C:\bsp_v1.0_release
+echo binexport RPi4.ARM64 Debug C:\bsp_v1.0_debug
exit /b 1
@@ -22,12 +26,27 @@ REM Input validation
if [%1] == [/?] goto Usage
if [%1] == [-?] goto Usage
if [%1] == [] goto Usage
-if [%2] == [] (
+if [%1] == [] (
+ goto Usage
+) else (
+ set PLAT=%1
+)
+if [%3] == [] (
goto Usage
) else (
- set TDIR=%2\RPi
+ set TDIR=%3
)
+REM Detect architecture
+set ARCH=INVALID
+if /I [%PLAT%] == [RPi] set ARCH=ARM
+if /I [%PLAT%] == [RPi3.ARM64] set ARCH=ARM64
+if /I [%PLAT%] == [RPi4.ARM64] set ARCH=ARM64
+if /I [%ARCH%] == [INVALID] (
+ goto Usage
+)
+set TDIR=%3\%PLAT%
+
pushd
setlocal ENABLEDELAYEDEXPANSION
@@ -38,23 +57,31 @@ set REPO_BUILD_TOOL=%~dp0
cd /d "%REPO_BUILD_TOOL%.."
set REPO_SOURCE_ROOT=%cd%\
-set OUTPUT_DIR=%REPO_SOURCE_ROOT%\build\bcm2836\ARM
-set BINTYPE=%1
+set OUTPUT_DIR=%REPO_SOURCE_ROOT%\build\bcm2836\%ARCH%
+set BINTYPE=%2
+REM Check firmware for ARM64 platform
+if /I [%ARCH%] == [ARM64] (
+ if not exist %REPO_SOURCE_ROOT%\bspfiles\%PLAT%\Packages\RPi.BootFirmware\RPI_EFI.fd (
+ echo Error: UEFI Firmware for platform %PLAT% not found.
+ echo Please refer to windows-drivers repo on how to get it.
+ exit /b
+ )
+)
if not exist %TDIR% ( mkdir %TDIR% )
-if not exist %OUTPUT_DIR%\%BINTYPE% (
+if not exist %OUTPUT_DIR%\%BINTYPE%\Output (
echo %BINTYPE% directory not found. Do %BINTYPE% build
goto usage
)
REM Copy the bspfiles
-xcopy /E /I %REPO_SOURCE_ROOT%\bspfiles\*.* %TDIR% >nul
+xcopy /E /I %REPO_SOURCE_ROOT%\bspfiles\%PLAT%\*.* %TDIR% >nul
set DRVDIR=%TDIR%\Packages\RPi.Drivers
REM Export the built binaries
-copy %OUTPUT_DIR%\%BINTYPE%\*.inf %DRVDIR% > nul
-copy %OUTPUT_DIR%\%BINTYPE%\*.sys %DRVDIR% > nul
-copy %OUTPUT_DIR%\%BINTYPE%\*.dll %DRVDIR% > nul
+copy %OUTPUT_DIR%\%BINTYPE%\Output\*.inf %DRVDIR% > nul
+copy %OUTPUT_DIR%\%BINTYPE%\Output\*.sys %DRVDIR% > nul
+copy %OUTPUT_DIR%\%BINTYPE%\Output\*.dll %DRVDIR% > nul
popd
exit /b
diff --git a/tools/binexport.ps1 b/tools/binexport.ps1
index d3811f8..ea848eb 100644
--- a/tools/binexport.ps1
+++ b/tools/binexport.ps1
@@ -5,6 +5,13 @@ Exports the driver binaries in a zip file format with all the bsp files in the r
.DESCRIPTION
Exports the driver binaries in a zip file format with all the bsp files in the right format the output zip file can be imported directly in the IoTCoreShell using the Import-IoTBSP command.
+.PARAMETER Platform
+Mandatory parameter, specifying the platform the BSP is for.
+Valid options:
+ RPi Raspberry Pi 2/3 32-Bit BSP
+ RPi3.ARM64 Raspberry Pi 3 64-Bit BSP
+ RPi4.ARM64 Raspberry Pi 4 64-Bit BSP
+
.PARAMETER OutputDir
Mandatory parameter, specifying the output directory for the zip file.
@@ -12,12 +19,14 @@ Mandatory parameter, specifying the output directory for the zip file.
Optional Switch parameter to package debug binaries. Default is Release binaries.
.EXAMPLE
-binexport.ps1 "C:\Release"
+binexport.ps1 RPi3.ARM64 "C:\Release"
#>
+
param(
- [Parameter(Position = 0, Mandatory = $true)][ValidateNotNullOrEmpty()][String]$OutputDir,
- [Parameter(Position = 1, Mandatory = $false)][Switch]$IsDebug
+ [Parameter(Position = 0, Mandatory = $true)][ValidateSet('RPi', 'RPi3.ARM64', 'RPi4.ARM64')][String]$Platform,
+ [Parameter(Position = 1, Mandatory = $true)][ValidateNotNullOrEmpty()][String]$OutputDir,
+ [Parameter(Position = 2, Mandatory = $false)][Switch]$IsDebug
)
$RootDir = "$PSScriptRoot\..\"
@@ -27,8 +36,26 @@ $buildconfig = "Release"
if($IsDebug){
$buildconfig = "Debug"
}
-$bindir = $RootDir + "build\bcm2836\ARM\$buildconfig\"
-$OutputFile = "RPi_BSP_$buildconfig.zip"
+if($Platform -like "*ARM64") {
+ $arch = "ARM64"
+} else {
+ $arch = "ARM"
+}
+
+# Check firmware for ARM64 platform.
+$package = "$RootDir\bspfiles\$Platform\Packages"
+if($arch -eq "ARM64") {
+ $firmware = "$package\RPi.BootFirmware\RPI_EFI.fd"
+
+ if (!(Test-Path $firmware -PathType Leaf)) {
+ Write-Host "Error: UEFI Firmware for platform $Platform not found." -ForegroundColor Red
+ Write-Host "Please refer to windows-drivers repo on how to get it." -ForegroundColor Red
+ return
+ }
+}
+
+$bindir = $RootDir + "build\bcm2836\$arch\$buildconfig\Output"
+$OutputFile = "$Platform.BSP.$buildconfig.zip"
if (!(Test-Path $bindir -PathType Container)){
Write-Host "Error: $bindir not found." -ForegroundColor Red
@@ -36,19 +63,19 @@ if (!(Test-Path $bindir -PathType Container)){
}
$bindir = Resolve-Path -Path $bindir
-if (!(Test-Path "$OutputDir\RPi")) {
- New-Item "$OutputDir\RPi" -ItemType Directory | Out-Null
+if (!(Test-Path "$OutputDir\$Platform")) {
+ New-Item "$OutputDir\$Platform" -ItemType Directory | Out-Null
}
#Copy items
-Copy-Item -Path "$RootDir\bspfiles\*" -Destination "$OutputDir\RPi\" -Recurse -Force | Out-Null
-Copy-Item -Path "$bindir\*" -Destination "$OutputDir\RPi\Packages\RPi.Drivers\" -Include "*.sys","*.dll","*.inf" -Force | Out-Null
+Copy-Item -Path "$RootDir\bspfiles\$Platform\*" -Destination "$OutputDir\$Platform\" -Recurse -Force | Out-Null
+Copy-Item -Path "$bindir\*" -Destination "$OutputDir\$Platform\Packages\RPi.Drivers\" -Include "*.sys","*.dll","*.inf" -Force | Out-Null
Write-Host "Output File: $OutputFile"
if (Test-Path "$OutputDir\$OutputFile" -PathType Leaf){
Remove-Item "$OutputDir\$OutputFile" -Force | Out-Null
}
-Compress-Archive -Path "$OutputDir\RPi\" -CompressionLevel "Fastest" -DestinationPath "$OutputDir\$OutputFile"
-Remove-Item "$OutputDir\RPi\" -Recurse -Force | Out-Null
+Compress-Archive -Path "$OutputDir\$Platform\" -CompressionLevel "Fastest" -DestinationPath "$OutputDir\$OutputFile"
+Remove-Item "$OutputDir\$Platform\" -Recurse -Force | Out-Null
Write-Host "Done"