Ard: IIRC eMMC2 is a better SDHCI-like controller. It supports more high-speed modes (e.g. 1.8V ones), resulting in better I/O performance, A ________________________________ From: Ard Biesheuvel Sent: Wednesday, January 6, 2021 3:11 AM To: Jeremy Linton ; devel@edk2.groups.io Cc: leif@nuviainc.com ; pete@akeo.ie ; samer.el-haj-mahmoud@arm.com ; Andrei Warkentin Subject: Re: [PATCH v4 0/7] rpi4: Enable eMMC2 controller On 1/5/21 5:34 PM, Jeremy Linton wrote: > The rpi4 has a secondary SD controller at offset > 0xfe340000. This controller appears to be a mostly > compliant SDHCI controller (a newer more bugfree > Arasan?). So the existing Arasan driver should be > bound to it. This allows the rpi4 to boot > with its normal eMMC2->SD card, Arasan->wifi > configuration that is described in the Linux DT. > Could you please explain why this is an advantage? Is it related to ACPI OSes not needing to change pinmuxing etc? > To achieve this, it appears we should be tweaking > some of the expansion gpios, and probably telling > the firmware to power everything up. To do that > the vpu mailbox headers are synced with a more recent > list of the mailbox commands, then the rpi > firmware dxe is extended to support some futher > gpio/power commands. Once that is complete we tweak > the arasan driver to use an alternate register base, > add a workaround for a known clock crossing bug, and > set the card voltage. > > Of note, this set does _NOT_ change the HID/CID's > and add the additional eMMC2 controller to the > DSDT table. That remains an open item waiting > for a proper set of device ids. > > v3->v4: Commit message tweaks, variable rename. > v1->v3: Use some mailbox defines rather than opencoded constants > > Jeremy Linton (7): > Platform/RaspberryPi: Update VPU mailbox constants > Platform/RaspberryPi: Add further mailbox helpers > Platform/RaspberryPi: Split MMC register definitions > Platform/RaspberryPi/Arasan: Add write delay and voltage/clock config > Platform/RaspberryPi/Arasan: Select the correct base frequency > Platform/RaspberryPi: Power up SD, and tweak GPIOs > Platform/RaspberryPi: Correct device path removal. > > .../Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.c | 131 ++++++++--- > .../Drivers/ArasanMmcHostDxe/ArasanMmcHostDxe.h | 1 + > Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c | 7 + > .../Drivers/RpiFirmwareDxe/RpiFirmwareDxe.c | 240 ++++++++++++++++++++- > .../RaspberryPi/Include/IndustryStandard/RpiMbox.h | 94 +++++++- > .../RaspberryPi/Include/Protocol/RpiFirmware.h | 25 +++ > .../Library/PlatformBootManagerLib/PlatformBm.c | 2 +- > .../Bcm283x/Include/IndustryStandard/Bcm2836Sdio.h | 42 ++-- > 8 files changed, 484 insertions(+), 58 deletions(-) >