Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preliminary ARM64 IoT Core BSP #43

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

driver1998
Copy link
Contributor

@driver1998 driver1998 commented Jan 17, 2022

This adds two new BSPs: RPi3.ARM64 and RPi4.ARM64.

Currently they require UEFI firmware from PFTF to be manually added to bspfiles/RPix.ARM64/Packages/RPi.BootFirmware before exporting the BSP.

Also the proprietary USB and LAN drivers for Pi3 are not included, and have to be manually added.

A special INF file, rpirshub3.inf, is added to bring up XHCI on Pi 4 on Windows builds <= RS5.

Check out https://github.com/driver1998/windows-drivers/blob/arm64-iot/IOTARM64.md for more details.

Current Status:

Features Pi 3 Pi 4
WiFi
Bluetooth
UART
LAN ✔(1) ❌ (1)
Rear USB
USB-C OTG N/A ✔ (2)
GPIO
I2C ✔(3) ✔ (3)
SPI ✔(3) ✔ (3)
Mailbox
PWM ❓(4)
Audio Jack ❓(4)
HDMI Audio
  1. LAN95xx/LAN78xx on Pi 3 requires Microchip driver, GENET does not work on IoT Core. USB LAN Adapter works but you'll need to provide your own drivers.
  2. Will work if you limit RAM to 1GB
  3. Will only work if you modify ACPI to use the old, Microsoft-specific MsftFunctionConfig resources to describe pin muxing, instead of the new, standard PinFunction used in upstream EDK2 nowadays (I doubt a patch to revert this change will ever be merged)
  4. Untested, hopefully they are not affected by PinFunction issues.

USB Root Hub INF 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.
The new RPi3.ARM64 and RPi4.ARM64 BSP will be side by side
with the existing RPi ARM32 BSP for RPi2/3.
Move RPi to its own directory to avoid conflition.
binexport scripts will be updated when the new BSPs are added.
@binarymaster
Copy link

Will only work if you modify ACPI to use the old, Microsoft-specific MsftFunctionConfig resources to describe pin muxing

I doubt a patch to revert this change will ever be merged

While trying to upstream a revert patch does not make much sense, one can try to make a patch that will allow to switch between MS-specific function and the standard PinFunction which is used by default now.

The switch can be then added to the UEFI setup application.

Copy link
Collaborator

@mariobalanica mariobalanica left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants