summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2016-05-11 15:15:53 -0700
committerMartin Roth <martinroth@google.com>2016-06-24 20:09:31 +0200
commitc8ea4c111c34555033818b1e186d500126aae04e (patch)
tree674313a721ca48b1f3ab6ae8dd08c8d878194b48
parent8ecd6f849c51bff6072f78e080b04a50735488b1 (diff)
downloadcoreboot-c8ea4c111c34555033818b1e186d500126aae04e.tar.xz
google/chell: Move devices from mainboard.asl to devicetree
Declare the mainboard attached devices in the devicetree and enable the provided device drivers by default to generate the ACPI objects for these devices. Then remove the static ACPI objects from the DSDT in mainboard.asl. This was verified by comparing the generated ACPI code in the SSDT to what was in mainboard.asl and ensuring the contents are functionally equivalent. Change-Id: I4725bbe2d47178568e3024fe3bb48cc80ff861c3 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://review.coreboot.org/15314 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
-rw-r--r--src/mainboard/google/chell/Kconfig9
-rw-r--r--src/mainboard/google/chell/acpi/mainboard.asl214
-rw-r--r--src/mainboard/google/chell/devicetree.cb62
3 files changed, 67 insertions, 218 deletions
diff --git a/src/mainboard/google/chell/Kconfig b/src/mainboard/google/chell/Kconfig
index 38b2ad3921..95102b6baf 100644
--- a/src/mainboard/google/chell/Kconfig
+++ b/src/mainboard/google/chell/Kconfig
@@ -29,6 +29,15 @@ config CHROMEOS
select VBOOT_OPROM_MATTERS
select VIRTUAL_DEV_SWITCH
+config DRIVERS_I2C_GENERIC
+ def_bool y
+
+config DRIVERS_I2C_NAU8825
+ def_bool y
+
+config DRIVERS_INTEL_WIFI
+ def_bool y
+
config IRQ_SLOT_COUNT
int
default 18
diff --git a/src/mainboard/google/chell/acpi/mainboard.asl b/src/mainboard/google/chell/acpi/mainboard.asl
index 67de19da96..f2503a89d7 100644
--- a/src/mainboard/google/chell/acpi/mainboard.asl
+++ b/src/mainboard/google/chell/acpi/mainboard.asl
@@ -15,18 +15,6 @@
#include "../gpio.h"
-#define BOARD_TOUCHPAD_I2C_ADDR 0x15
-#define BOARD_TOUCHPAD_IRQ TOUCHPAD_INT_L
-#define BOARD_TOUCHPAD_WAKE GPE_TOUCHPAD_WAKE
-
-#define BOARD_TOUCHSCREEN_I2C_ADDR 0x10
-#define BOARD_TOUCHSCREEN_IRQ TOUCHSCREEN_INT_L
-
-#define BOARD_HP_MIC_CODEC_I2C_ADDR 0x1a
-#define BOARD_HP_MIC_CODEC_IRQ MIC_INT_L
-#define BOARD_LEFT_SPEAKER_AMP_I2C_ADDR 0x34
-#define BOARD_RIGHT_SPEAKER_AMP_I2C_ADDR 0x35
-
Scope (\_SB)
{
Device (LID0)
@@ -53,205 +41,3 @@ Scope (\_SB.PCI0.LPCB)
{
#include <drivers/pc80/tpm/acpi/tpm.asl>
}
-
-/*
- * WLAN connected to Root Port 1
- */
-Scope (\_SB.PCI0.RP01)
-{
- Device (WLAN)
- {
- Name (_ADR, 0x00000000)
- Name (_DDN, "Wireless LAN")
- Name (_PRW, Package () { GPE_WLAN_WAKE, 3 })
-
- #include <drivers/intel/wifi/acpi/wrdd.asl>
- }
-}
-
-Scope (\_SB.PCI0.I2C0)
-{
- /* Touchscreen */
- Device (ELTS)
- {
- Name (_HID, "ELAN0001")
- Name (_DDN, "Elan Touchscreen")
- Name (_UID, 1)
- Name (_S0W, 4)
-
- Name (_CRS, ResourceTemplate ()
- {
- I2cSerialBus (
- BOARD_TOUCHSCREEN_I2C_ADDR,
- ControllerInitiated,
- 400000,
- AddressingMode7Bit,
- "\\_SB.PCI0.I2C0",
- )
- Interrupt (ResourceConsumer, Edge, ActiveLow)
- {
- BOARD_TOUCHSCREEN_IRQ
- }
- })
-
- Method (_STA)
- {
- Return (0xF)
- }
- }
-}
-
-Scope (\_SB.PCI0.I2C1)
-{
- /* Touchpad */
- Device (ELTP)
- {
- Name (_HID, "ELAN0000")
- Name (_DDN, "Elan Touchpad")
- Name (_UID, 1)
- Name (_S0W, 4)
- Name (_PRW, Package () { BOARD_TOUCHPAD_WAKE, 3 })
-
- Name (_CRS, ResourceTemplate ()
- {
- I2cSerialBus (
- BOARD_TOUCHPAD_I2C_ADDR,
- ControllerInitiated,
- 400000,
- AddressingMode7Bit,
- "\\_SB.PCI0.I2C1",
- )
- Interrupt (ResourceConsumer, Edge, ActiveLow)
- {
- BOARD_TOUCHPAD_IRQ
- }
- })
-
- Method (_STA)
- {
- Return (0xF)
- }
- }
-}
-
-Scope (\_SB.PCI0.I2C4)
-{
- /* Headphone Codec */
- Device (HPMC)
- {
- Name (_HID, "10508825")
- Name (_DDN, "NAU88L25 Codec")
- Name (_UID, 1)
-
- /*
- * Add DT style bindings with _DSD
- * Device property values are documented in kernel doc
- * Documentation/devicetree/bindings/sound/nau8825.txt
- */
- Name (_DSD, Package () {
- ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
- Package () {
- /* Enable jack detection via JKDET pin */
- Package () {"nuvoton,jkdet-enable", 1},
- /*
- * JKDET pin is pulled up by R389 on board.
- * JKDET pin polarity = active low
- */
- Package () {"nuvoton,jkdet-polarity", 1},
- /* VREF Impedance = 125 kOhm */
- Package () {"nuvoton,vref-impedance", 2},
- /* VDDA(1.8) * 1.53 = 2.754 */
- Package () {"nuvoton,micbias-voltage", 6},
- /*
- * Setup 4 buttons impedance according to
- * Android specification
- */
- Package () {"nuvoton,sar-threshold-num", 4},
- /*
- * Thresholds determined using the Wired Headphone
- * Compatibility Kit and a Chell EVT
- */
- Package () {"nuvoton,sar-threshold",
- Package () {0x0c, 0x1c, 0x38, 0x60}},
- Package () {"nuvoton,sar-hysteresis", 1},
- /* VDDA for button impedance measurement */
- Package () {"nuvoton,sar-voltage", 0},
- Package () {"nuvoton,sar-compare-time", 0 },
- Package () {"nuvoton,sar-sampling-time", 0 },
- /* 100ms short key press debounce */
- Package () {"nuvoton,short-key-debounce", 2},
- /* 2^(7+2) = 512 ms insert/eject debounce */
- Package () {"nuvoton,jack-insert-debounce", 7},
- Package () {"nuvoton,jack-eject-debounce", 7},
- }
- })
-
- Name (_CRS, ResourceTemplate()
- {
- I2cSerialBus (
- BOARD_HP_MIC_CODEC_I2C_ADDR,
- ControllerInitiated,
- 400000,
- AddressingMode7Bit,
- "\\_SB.PCI0.I2C4",
- )
- Interrupt (ResourceConsumer, Level, ActiveLow)
- {
- BOARD_HP_MIC_CODEC_IRQ
- }
- })
-
- Method (_STA)
- {
- Return (0xF)
- }
- }
-
- /* Left Speaker Amp */
- Device (SPKL)
- {
- Name (_HID, "INT343B")
- Name (_DDN, "SSM4567 Speaker Amp")
- Name (_UID, 0)
-
- Name (_CRS, ResourceTemplate()
- {
- I2cSerialBus (
- BOARD_LEFT_SPEAKER_AMP_I2C_ADDR,
- ControllerInitiated,
- 400000,
- AddressingMode7Bit,
- "\\_SB.PCI0.I2C4",
- )
- })
-
- Method (_STA)
- {
- Return (0xF)
- }
- }
-
- /* Right Speaker Amp */
- Device (SPKR)
- {
- Name (_HID, "INT343B")
- Name (_DDN, "SSM4567 Speaker Amp")
- Name (_UID, 1)
-
- Name (_CRS, ResourceTemplate()
- {
- I2cSerialBus (
- BOARD_RIGHT_SPEAKER_AMP_I2C_ADDR,
- ControllerInitiated,
- 400000,
- AddressingMode7Bit,
- "\\_SB.PCI0.I2C4",
- )
- })
-
- Method (_STA)
- {
- Return (0xF)
- }
- }
-}
diff --git a/src/mainboard/google/chell/devicetree.cb b/src/mainboard/google/chell/devicetree.cb
index 349f724cf3..384d374877 100644
--- a/src/mainboard/google/chell/devicetree.cb
+++ b/src/mainboard/google/chell/devicetree.cb
@@ -185,8 +185,23 @@ chip soc/intel/skylake
device pci 14.0 on end # USB xHCI
device pci 14.1 off end # USB xDCI (OTG)
device pci 14.2 on end # Thermal Subsystem
- device pci 15.0 on end # I2C #0
- device pci 15.1 on end # I2C #1
+ device pci 15.0 on
+ chip drivers/i2c/generic
+ register "hid" = ""ELAN0001""
+ register "desc" = ""ELAN Touchscreen""
+ register "irq" = "IRQ_EDGE_LOW(GPP_E7_IRQ)"
+ device i2c 10 on end
+ end
+ end # I2C #0
+ device pci 15.1 on
+ chip drivers/i2c/generic
+ register "hid" = ""ELAN0000""
+ register "desc" = ""ELAN Touchpad""
+ register "irq" = "IRQ_EDGE_LOW(GPP_B3_IRQ)"
+ register "wake" = "GPE0_DW0_05"
+ device i2c 15 on end
+ end
+ end # I2C #1
device pci 15.2 off end # I2C #2
device pci 15.3 off end # I2C #3
device pci 16.0 on end # Management Engine Interface 1
@@ -197,8 +212,47 @@ chip soc/intel/skylake
device pci 17.0 off end # SATA
device pci 19.0 on end # UART #2
device pci 19.1 off end # I2C #5
- device pci 19.2 on end # I2C #4
- device pci 1c.0 on end # PCI Express Port 1
+ device pci 19.2 on
+ chip drivers/i2c/nau8825
+ register "irq" = "IRQ_LEVEL_LOW(GPP_F10_IRQ)"
+ register "jkdet_enable" = "1"
+ register "jkdet_pull_enable" = "0" # R389
+ register "jkdet_polarity" = "1" # ActiveLow
+ register "vref_impedance" = "2" # 125kOhm
+ register "micbias_voltage" = "6" # 2.754
+ register "sar_threshold_num" = "4"
+ register "sar_threshold[0]" = "0x0c"
+ register "sar_threshold[1]" = "0x1c"
+ register "sar_threshold[2]" = "0x38"
+ register "sar_threshold[3]" = "0x60"
+ register "sar_hysteresis" = "1"
+ register "sar_voltage" = "0" # VDDA
+ register "sar_compare_time" = "0" # 500ns
+ register "sar_sampling_time" = "0" # 2us
+ register "short_key_debounce" = "2" # 100ms
+ register "jack_insert_debounce" = "7" # 512ms
+ register "jack_eject_debounce" = "7" # 512ms
+ device i2c 1a on end
+ end
+ chip drivers/i2c/generic
+ register "hid" = ""INT343B""
+ register "desc" = ""SSM4567 Left Speaker Amp""
+ register "uid" = "0"
+ device i2c 34 on end
+ end
+ chip drivers/i2c/generic
+ register "hid" = ""INT343B""
+ register "desc" = ""SSM4567 Right Speaker Amp""
+ register "uid" = "1"
+ device i2c 35 on end
+ end
+ end # I2C #4
+ device pci 1c.0 on
+ chip drivers/intel/wifi
+ register "wake" = "GPE0_DW0_16"
+ device pci 00.0 on end
+ end
+ end # PCI Express Port 1
device pci 1c.1 off end # PCI Express Port 2
device pci 1c.2 off end # PCI Express Port 3
device pci 1c.3 off end # PCI Express Port 4