From 3958efb28813c664a8a4219f78bdd0fcfe75c706 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Mon, 29 Sep 2014 09:30:36 -0700 Subject: [PATCH] samus: Fix codec interrupt and add GPIO defines The codec interrupt needs to come from codec GPIO1, so use the HOTWORD_DET GPIO as the codec IRQ and the DSP_INT as the wake.The This means codec interrupt is GPIO46 which is PIRQO and should be interrupt 30. Also add GPIO defines for the GPIOs attached to the codec itself. These are defined by index, and I used the same "jack detect" and "mic present" indices that were used in baytrail. The codec interrupt to the host is added at index 2 and the hostword detect interrupt to the host is added at index 3. These can be changed as we work through the implementation in the kernel driver. BUG=chrome-os-partner:29649 BRANCH=samus TEST=build and boot on samus Change-Id: I1c1ac1b6095fab7e3f4412555db4f9a9138e528b Signed-off-by: Duncan Laurie Reviewed-on: https://chromium-review.googlesource.com/220326 Reviewed-by: Aaron Durbin --- src/mainboard/google/samus/acpi/mainboard.asl | 67 ++++++++++++------- src/mainboard/google/samus/gpio.h | 4 +- 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/src/mainboard/google/samus/acpi/mainboard.asl b/src/mainboard/google/samus/acpi/mainboard.asl index e5ae9f30c1..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 ( @@ -176,10 +178,48 @@ Scope (\_SB.PCI0.I2C0) ControllerInitiated, // SlaveMode 400000, // ConnectionSpeed AddressingMode7Bit, // AddressingMode - "\\_SB.PCI0.I2C0", // ResourceSource + "\\_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 37d9c4346c..8cde3405c8 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 */