From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.8165.1609864473940237384 for ; Tue, 05 Jan 2021 08:34:34 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: jeremy.linton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9D2F01FB; Tue, 5 Jan 2021 08:34:23 -0800 (PST) Received: from mammon-tx2.austin.arm.com (mammon-tx2.austin.arm.com [10.118.28.62]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 95FAE3F70D; Tue, 5 Jan 2021 08:34:23 -0800 (PST) From: "Jeremy Linton" To: devel@edk2.groups.io Cc: ard.biesheuvel@arm.com, leif@nuviainc.com, pete@akeo.ie, samer.el-haj-mahmoud@arm.com, awarkentin@vmware.com, Jeremy Linton Subject: [PATCH v4 0/7] rpi4: Enable eMMC2 controller Date: Tue, 5 Jan 2021 10:34:13 -0600 Message-Id: <20210105163420.1711652-1-jeremy.linton@arm.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=20 bound to it. This allows the rpi4 to boot with its normal eMMC2->SD card, Arasan->wifi=20 configuration that is described in the Linux DT. 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(-) --=20 2.13.7