aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/google/samus/acpi/mainboard.asl57
-rw-r--r--src/mainboard/google/samus/gpio.h4
2 files changed, 39 insertions, 22 deletions
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,38 +180,53 @@ Scope (\_SB.PCI0.I2C0)
AddressingMode7Bit, // AddressingMode
"\\_SB.PCI0.I2C0", // ResourceSource
)
- Interrupt (ResourceConsumer, Edge, ActiveLow){ 30 }
- })
- Method (_STA)
- {
- If (LEqual (\S1EN, 1)) {
- Return (0xF)
- } Else {
- Return (0x0)
- }
- }
- }
- Device (HOTW)
- {
- Name (_HID, "PNP0A05")
- Name (_DDN, "Hotword Wake")
- Name (_UID, 1)
- Name (GPIO, 46) /* HOTWORD_DET_L_3V3 */
+ /* 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() { GPIO, 3 })
+ Name (_PRW, Package() { WAKE, 3 })
Method (_DSW, 3, NotSerialized)
{
If (LEqual (Arg0, 1)) {
// Enable GPIO as wake source
- \_SB.PCI0.LPCB.GPIO.GWAK (^GPIO)
+ \_SB.PCI0.LPCB.GPIO.GWAK (^WAKE)
}
}
Method (_STA)
{
- Return (0xF)
+ If (LEqual (\S1EN, 1)) {
+ Return (0xF)
+ } Else {
+ Return (0x0)
+ }
}
}
}
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 */