diff --git a/src/mainboard/google/samus/acpi/mainboard.asl b/src/mainboard/google/samus/acpi/mainboard.asl index 6a2cb97252..2bb34fd129 100644 --- a/src/mainboard/google/samus/acpi/mainboard.asl +++ b/src/mainboard/google/samus/acpi/mainboard.asl @@ -169,6 +169,8 @@ Scope (\_SB.PCI0.I2C0) Name (_HID, "RT5677CE") Name (_DDN, "RT5667 Codec") Name (_UID, 1) + Name (WAKE, 45) /* DSP_INT (use as codec wake) */ + Name (_CRS, ResourceTemplate() { I2cSerialBus ( @@ -178,8 +180,46 @@ Scope (\_SB.PCI0.I2C0) AddressingMode7Bit, // AddressingMode "\\_SB.PCI0.I2C0", // ResourceSource ) - Interrupt (ResourceConsumer, Edge, ActiveLow){ 30 } + + /* GPIO46 is PIRQO (use HOTWORD_DET as codec IRQ) */ + Interrupt (ResourceConsumer, Edge, ActiveLow) { 30 } + + /* + * Codec GPIOs are 1-based in the schematic + * + * [0] = Jack Detect (INPUT) + * [1] = Mic Present (INPUT) + * [2] = Interrupt to the host (OUTPUT) + * [3] = Interrupt to the host (OUTPUT) + */ + + /* Index 0: Jack Detect - PLUG_DET is GPIO5 */ + GpioIo (Exclusive, PullUp, , , IoRestrictionInputOnly, + "\\_SB.PCI0.I2C0.CODC") { 4 } + + /* Index 1: Mic Present - MIC_PRESENT_L is GPIO6 */ + GpioIo (Exclusive, PullUp, , , IoRestrictionInputOnly, + "\\_SB.PCI0.I2C0.CODC") { 5 } + + /* Index 2: Codec IRQ - HOTWORD_DET_L is GPIO1 */ + GpioIo (Exclusive, PullUp, , , IoRestrictionOutputOnly, + "\\_SB.PCI0.I2C0.CODC") { 0 } + + /* Index 3: Codec Wake - DSP_INT is GPIO4 */ + GpioIo (Exclusive, PullUp, , , IoRestrictionOutputOnly, + "\\_SB.PCI0.I2C0.CODC") { 3 } }) + + Name (_PRW, Package() { WAKE, 3 }) + + Method (_DSW, 3, NotSerialized) + { + If (LEqual (Arg0, 1)) { + // Enable GPIO as wake source + \_SB.PCI0.LPCB.GPIO.GWAK (^WAKE) + } + } + Method (_STA) { If (LEqual (\S1EN, 1)) { @@ -189,29 +229,6 @@ Scope (\_SB.PCI0.I2C0) } } } - - Device (HOTW) - { - Name (_HID, "PNP0A05") - Name (_DDN, "Hotword Wake") - Name (_UID, 1) - Name (GPIO, 46) /* HOTWORD_DET_L_3V3 */ - - Name (_PRW, Package() { GPIO, 3 }) - - Method (_DSW, 3, NotSerialized) - { - If (LEqual (Arg0, 1)) { - // Enable GPIO as wake source - \_SB.PCI0.LPCB.GPIO.GWAK (^GPIO) - } - } - - Method (_STA) - { - Return (0xF) - } - } } Scope (\_SB.PCI0.I2C1) diff --git a/src/mainboard/google/samus/gpio.h b/src/mainboard/google/samus/gpio.h index f293dee77e..393a14fe53 100644 --- a/src/mainboard/google/samus/gpio.h +++ b/src/mainboard/google/samus/gpio.h @@ -73,8 +73,8 @@ static const struct gpio_config mainboard_gpio_config[] = { PCH_GPIO_UNUSED, /* 42: WLAN_DISABLE_L */ PCH_GPIO_OUT_HIGH, /* 43: PP1800_CODEC_EN */ PCH_GPIO_UNUSED, /* 44: UNUSED */ - PCH_GPIO_PIRQ, /* 45: DSP_INT (PIRQN) */ - PCH_GPIO_ACPI_SCI, /* 46: HOTWORD_DET_L_3V3 (WAKE) */ + PCH_GPIO_ACPI_SCI, /* 45: DSP_INT - Codec Wake */ + PCH_GPIO_PIRQ, /* 46: HOTWORD_DET_L_3V3 (PIRQO) - Codec IRQ */ PCH_GPIO_OUT_LOW, /* 47: SSD_RESET_L */ PCH_GPIO_UNUSED, /* 48: UNUSED */ PCH_GPIO_UNUSED, /* 49: UNUSED */