|
@@ -8,6 +8,7 @@
|
|
|
|
|
|
#include <IndustryStandard/Bcm2836SdHost.h>
|
|
|
#include <IndustryStandard/Bcm2836Sdio.h>
|
|
|
+#include <IndustryStandard/Bcm2711.h>
|
|
|
|
|
|
#include "AcpiTables.h"
|
|
|
|
|
@@ -31,7 +32,8 @@ DefinitionBlock (__FILE__, "SSDT", 2, "RPIFDN", "RPI4EMMC", 2)
|
|
|
Return (^RBUF)
|
|
|
}
|
|
|
|
|
|
- Name (_DMA, ResourceTemplate() {
|
|
|
+ // Translated DMA region for BCM2711 silicon revisions older than C0
|
|
|
+ Name (DMTR, ResourceTemplate() {
|
|
|
QWordMemory (ResourceProducer,
|
|
|
,
|
|
|
MinFixed,
|
|
@@ -48,6 +50,41 @@ DefinitionBlock (__FILE__, "SSDT", 2, "RPIFDN", "RPI4EMMC", 2)
|
|
|
)
|
|
|
})
|
|
|
|
|
|
+ // Non translated DMA region for BCM2711 revisions C0 and newer
|
|
|
+ Name (DMNT, ResourceTemplate() {
|
|
|
+ QWordMemory (ResourceProducer,
|
|
|
+ ,
|
|
|
+ MinFixed,
|
|
|
+ MaxFixed,
|
|
|
+ NonCacheable,
|
|
|
+ ReadWrite,
|
|
|
+ 0x0,
|
|
|
+ 0x0000000000000000, // MIN
|
|
|
+ 0x000000FFFFFFFFFF, // MAX
|
|
|
+ 0x0000000000000000, // TRA
|
|
|
+ 0x0000010000000000, // LEN
|
|
|
+ ,
|
|
|
+ ,
|
|
|
+ )
|
|
|
+ })
|
|
|
+
|
|
|
+ Method (_DMA, 0x0, Serialized)
|
|
|
+ {
|
|
|
+ OperationRegion (CHPR, SystemMemory, ID_CHIPREV, 0x4)
|
|
|
+ Field (CHPR, DWordAcc, NoLock, Preserve) {
|
|
|
+ SOCI, 32
|
|
|
+ }
|
|
|
+
|
|
|
+ if ((SOCI & 0xFF) >= 0x20)
|
|
|
+ {
|
|
|
+ return (^DMNT);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return (^DMTR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// emmc2 Host Controller. (brcm,bcm2711-emmc2)
|
|
|
Device (SDC3)
|
|
|
{
|