[coreboot-gerrit] New patch to review for coreboot: intel/kunimitsu: Move devices from mainboard.asl to devicetree

Duncan Laurie (dlaurie@chromium.org) gerrit at coreboot.org
Wed Jun 22 20:36:57 CEST 2016


Duncan Laurie (dlaurie at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15317

-gerrit

commit 1dffdf62cf4df915664e4d621c7fa822d7d1ef6a
Author: Duncan Laurie <dlaurie at chromium.org>
Date:   Wed Jun 22 11:31:51 2016 -0700

    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 at chromium.org>
---
 src/mainboard/intel/kunimitsu/Kconfig            |  12 +
 src/mainboard/intel/kunimitsu/acpi/mainboard.asl | 285 -----------------------
 src/mainboard/intel/kunimitsu/devicetree.cb      |  77 +++++-
 3 files changed, 84 insertions(+), 290 deletions(-)

diff --git a/src/mainboard/intel/kunimitsu/Kconfig b/src/mainboard/intel/kunimitsu/Kconfig
index 03b48e9..85b568e 100644
--- a/src/mainboard/intel/kunimitsu/Kconfig
+++ b/src/mainboard/intel/kunimitsu/Kconfig
@@ -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
diff --git a/src/mainboard/intel/kunimitsu/acpi/mainboard.asl b/src/mainboard/intel/kunimitsu/acpi/mainboard.asl
index 4a85e35..4fe3365 100644
--- a/src/mainboard/intel/kunimitsu/acpi/mainboard.asl
+++ b/src/mainboard/intel/kunimitsu/acpi/mainboard.asl
@@ -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 } },
-		}
-	})
-}
diff --git a/src/mainboard/intel/kunimitsu/devicetree.cb b/src/mainboard/intel/kunimitsu/devicetree.cb
index b0d95f4..4aeb0b1 100644
--- a/src/mainboard/intel/kunimitsu/devicetree.cb
+++ b/src/mainboard/intel/kunimitsu/devicetree.cb
@@ -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



More information about the coreboot-gerrit mailing list