intel/kunimitsu: 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 tesed on a Chell mainboard since I lack a kunitmisu device.
I used different GPIOs across boots to verify that the different
audio codec devices would be "detected" and generated in the SSDT.

Change-Id: I9b3b2247a84aeb7c07780958377d5bea14417ce6
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/15317
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
This commit is contained in:
Duncan Laurie 2016-06-22 11:31:51 -07:00 committed by Martin Roth
parent a2be7fbff5
commit 9482cf6c09
3 changed files with 84 additions and 290 deletions

View File

@ -29,6 +29,18 @@ config CHROMEOS
select VIRTUAL_DEV_SWITCH
select EC_SOFTWARE_SYNC
config DRIVERS_GENERIC_MAX98357A
default y
config DRIVERS_I2C_GENERIC
default y
config DRIVERS_I2C_NAU8825
default y
config DRIVERS_INTEL_WIFI
default y
config IRQ_SLOT_COUNT
int
default 18

View File

@ -16,17 +16,6 @@
#include "../gpio.h"
#define BOARD_TOUCHPAD_I2C_ADDR 0x15
#define BOARD_TOUCHPAD_IRQ TOUCHPAD_INT_L
#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)
@ -44,50 +33,6 @@ Scope (\_SB)
{
Name (_HID, EisaId ("PNP0C0C"))
}
Device (MAXM)
{
Name (_HID, "MX98357A")
Name (_DDN, "Maxim Integrated 98357A Amplifier")
Name (_UID, 1)
Name (_CRS, ResourceTemplate()
{
GpioIo (Exclusive, PullDefault, 0x0000, 0x0000,
IoRestrictionOutputOnly,
"\\_SB.PCI0.GPIO", 0x00, ResourceConsumer,,)
{
AUDIO_DB_ID
}
})
Name (_DSD, Package ()
{
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () {
/*
* Create a named GPIO
* "sdmode-gpio" for the
* kernel codec driver
* to use.
*/
"sdmode-gpio", Package () {
^MAXM, 0, 0, 0
}
},
}
})
Method (_STA)
{
/* AUDIO_DB_ID = 0 If MAXIM Codec Present */
If (LEqual (\_SB.PCI0.GRXS (AUDIO_DB_ID), 0x0)) {
Return (0xF)
} Else {
Return (0x0)
}
}
}
}
/*
@ -97,233 +42,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 (_CRS, ResourceTemplate ()
{
I2cSerialBus (
BOARD_TOUCHPAD_I2C_ADDR,
ControllerInitiated,
400000,
AddressingMode7Bit,
"\\_SB.PCI0.I2C1",
)
Interrupt (ResourceConsumer, Edge, ActiveLow)
{
BOARD_TOUCHPAD_IRQ
}
})
Name (_PRW, Package() { GPE_TOUCHPAD_WAKE, 0x3 })
Method (_STA)
{
Return (0xF)
}
}
}
Scope (\_SB.PCI0.I2C4)
{
/* Headphone Codec */
Device (HPMC)
{
Name (_HID, "10508825")
Name (_DDN, "NAU88L25 Codec")
Name (_UID, 1)
Name (_S0W, 4)
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-pull-enable", 1 },
Package () { "nuvoton,jkdet-pull-up", 1 },
Package () { "nuvoton,jkdet-polarity", 1 },
/* VDDA(1.8) * 1.53 = 2.754 */
Package () { "nuvoton,micbias-voltage", 6 },
/* VREF Impedance = 125 kOhm */
Package () { "nuvoton,vref-impedance", 2 },
/*
* Setup 4 buttons impedance according to
* Android specification
*/
Package () { "nuvoton,sar-threshold-num", 4 },
Package () { "nuvoton,sar-threshold",
Package() { 0x08, 0x12, 0x26, 0x73 } },
/*
* Coeff 0-15 used to adjust threshold level
* 0 for low resist range
*/
Package () { "nuvoton,sar-hysteresis", 0 },
/* SAR tracking gain based on 2.754 micbias-voltage */
Package () { "nuvoton,sar-voltage", 6 },
Package () { "nuvoton,sar-compare-time", 1 },
Package () { "nuvoton,sar-sampling-time", 1 },
/* 100ms short key press debounce */
Package () { "nuvoton,short-key-debounce", 3 },
/* 2^(7+2) = 512 ms insert/eject debounce */
Package () { "nuvoton,jack-insert-debounce", 7 },
/* debounce not needed for eject normally */
Package () { "nuvoton,jack-eject-debounce", 0 },
}
})
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)
{
/* AUDIO_DB_ID = 1 If ADI Codec Present */
If (LEqual (GRXS (AUDIO_DB_ID), 0x1)) {
Return (0xF)
} Else {
Return (0x0)
}
}
}
/* 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)
{
/* AUDIO_DB_ID = 1 If ADI Codec Present */
If (LEqual (GRXS (AUDIO_DB_ID), 0x1)) {
Return (0xF)
} Else {
Return (0x0)
}
}
}
}
Scope (\_SB.PCI0.SDXC)
{
Name (_CRS, ResourceTemplate () {
GpioInt (Edge, ActiveBoth, SharedAndWake, PullNone, 10000,
"\\_SB.PCI0.GPIO", 0, ResourceConsumer)
{
GPIO_SD_CARD_DETECT
}
})
Name (_DSD, Package () {
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package ()
{
Package () { "cd-gpio", Package () { ^SDXC, 0, 0, 1 } },
}
})
}

View File

@ -177,6 +177,9 @@ chip soc/intel/skylake
# Send an extra VR mailbox command for the PS4 exit issue
register "SendVrMbxCmd" = "2"
# Use default SD card detect GPIO configuration
register "sdcard_cd_gpio_default" = "GPP_A7"
device cpu_cluster 0 on
device lapic 0 on end
end
@ -186,8 +189,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
@ -198,8 +216,50 @@ 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" = "1"
register "jkdet_pull_up" = "1"
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]" = "0x08"
register "sar_threshold[1]" = "0x12"
register "sar_threshold[2]" = "0x26"
register "sar_threshold[3]" = "0x73"
register "sar_hysteresis" = "0"
register "sar_voltage" = "6"
register "sar_compare_time" = "1" # 1us
register "sar_sampling_time" = "1" # 4us
register "short_key_debounce" = "3" # 30ms
register "jack_insert_debounce" = "7" # 512ms
register "jack_eject_debounce" = "0"
device i2c 1a on end
end
chip drivers/i2c/generic
register "hid" = ""INT343B""
register "desc" = ""SSM4567 Left Speaker Amp""
register "uid" = "0"
register "device_present_gpio" = "GPP_E3"
device i2c 34 on end
end
chip drivers/i2c/generic
register "hid" = ""INT343B""
register "desc" = ""SSM4567 Right Speaker Amp""
register "uid" = "1"
register "device_present_gpio" = "GPP_E3"
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
@ -228,7 +288,14 @@ chip soc/intel/skylake
end # LPC Interface
device pci 1f.1 on end # P2SB
device pci 1f.2 on end # Power Management Controller
device pci 1f.3 on end # Intel HDA
device pci 1f.3 on
chip drivers/generic/max98357a
register "sdmode_gpio" = "ACPI_GPIO_OUTPUT(GPP_E3)"
register "device_present_gpio" = "GPP_E3"
register "device_present_gpio_invert" = "1"
device generic 0 on end
end
end # Intel HDA
device pci 1f.4 on end # SMBus
device pci 1f.5 on end # PCH SPI
device pci 1f.6 off end # GbE