You've already forked edk2-platforms
mirror of
https://github.com/Dasharo/edk2-platforms.git
synced 2026-03-06 14:51:43 -08:00
The Raspberry Pi 3 and Pi 4 platforms (with latest EEPROM) can boot straight from USB, without the need for an SD card being present. However, the IsCardPresent () calls from the ArasanMmcHost and SdHost drivers are currently hardwired to return TRUE, which results in straight to USB boot failing due to the SD drivers looping on errors while trying to poke at a non-existent card... Ideally, we would use the Card Detect signal from the uSD slot, to report on the presence or absence of a card, but the Raspberry Pi Foundation did not wire those signals in the Pi 2 and subsequent models, leaving us with only potentially interfering SD commands as means to perform card detection. As a result of this, we are left with no other choice but limit detection to occurring only once, prior to formal SD card init, and then return the detected value for subsequent calls. This, however, is more than good enough for the intended purpose, which is to allow straight to USB boot. The sequence is a simplified variant of the identification code in MmcDxe. Tested on Raspberry Pi 2B, 3B and CM3 (for both SD controllers) and Pi 4 (for Arasan, as that's the only controller available today) Addresses pftf/RPi3#13, pftf/RPi3#14, pftf/RPi4#37. Co-authored-by: Andrei Warkentin <andrey.warkentin@gmail.com> Signed-off-by: Pete Batard <pete@akeo.ie> Reviewed-by: Andrei Warkentin <andrey.warkentin@gmail.com> Tested-by: Andrei Warkentin <andrey.warkentin@gmail.com> Reviewed-by: Leif Lindholm <leif@nuviainc.com>