diff --git a/src/ec/google/chromeec/Kconfig b/src/ec/google/chromeec/Kconfig index f0418ff16e..eae1fc6aaa 100644 --- a/src/ec/google/chromeec/Kconfig +++ b/src/ec/google/chromeec/Kconfig @@ -167,6 +167,12 @@ config EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING If unsure, say N. +config EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_RANGE + def_bool n + help + Select this option to access LPC GMR (Generic Memory Range) Register to + implement MMIO based communication between EC and AP firmware. + endif # EC_GOOGLE_CHROMEEC source "src/ec/google/chromeec/*/Kconfig" diff --git a/src/ec/google/chromeec/acpi/cros_ec.asl b/src/ec/google/chromeec/acpi/cros_ec.asl index 5b5229b601..9cf1f66fb2 100644 --- a/src/ec/google/chromeec/acpi/cros_ec.asl +++ b/src/ec/google/chromeec/acpi/cros_ec.asl @@ -1,5 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0-only */ +#if CONFIG(EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_RANGE) +#define LPC_GMR_SIZE 0x10000 +#endif + Device (CREC) { Name (_HID, "GOOG0004") @@ -19,26 +23,36 @@ Device (CREC) #define EC_SYNC_SHARE_TYPE Exclusive #endif -#ifdef EC_ENABLE_SYNC_IRQ - Name (_CRS, ResourceTemplate () +#if defined(EC_ENABLE_SYNC_IRQ) || defined(EC_ENABLE_SYNC_IRQ_GPIO) + Method (_CRS, 0x0, NotSerialized) { - Interrupt (ResourceConsumer, Level, ActiveLow, - EC_SYNC_SHARE_TYPE) + Name (RBUF, ResourceTemplate() { - EC_SYNC_IRQ - } - }) +#ifdef EC_ENABLE_SYNC_IRQ + Interrupt (ResourceConsumer, Level, ActiveLow, EC_SYNC_SHARE_TYPE) { EC_SYNC_IRQ } #endif #ifdef EC_ENABLE_SYNC_IRQ_GPIO - Name (_CRS, ResourceTemplate () - { - GpioInt (Level, ActiveLow, EC_SYNC_SHARE_TYPE, PullDefault, - 0x0000, "\\_SB.GPIO", 0x00, ResourceConsumer, ,) - { - EC_SYNC_IRQ - } - }) + GpioInt (Level, ActiveLow, EC_SYNC_SHARE_TYPE, PullDefault, + 0x0000, "\\_SB.GPIO", 0x00, ResourceConsumer, ,) + { + EC_SYNC_IRQ + } +#endif + +#if CONFIG(EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_RANGE) + Memory32Fixed (ReadWrite, 0, 0, MADR) +#endif + }) + +#if CONFIG(EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_RANGE) + CreateDWordField (RBUF, MADR._BAS, BAS0) + CreateDWordField (RBUF, MADR._LEN, LEN0) + BAS0 = \_SB.PCI0.LPCB.GLGM() + LEN0 = LPC_GMR_SIZE +#endif + Return (RBUF) + } #endif #ifdef EC_ENABLE_MKBP_DEVICE