From cee930a39b183260ea83ac72fc9ca59d61353d8d Mon Sep 17 00:00:00 2001 From: Tobias Diedrich Date: Sun, 12 Feb 2017 14:09:06 +0100 Subject: lenovo/s230u: Add Thinkpad Twist (S230U) Created using autoport plus some manual work and copying from G505S to account for the non-H8 EC. This model uses the same ENE KB9012 EC as the G505S. Tested: - Mainboard variant with 8GB Elpida DDR3 - SeaBIOS payload - Booting into Linux 4.9.6 with Debian/unstable installed on the internal HDD/SDD slot - Native raminit - Both native VGA init and option rom VGA init - Basic TPM functionality (auto-detection and RNG) - Battery status readout - Basic ACPI functions (power button event; power-off; reboot) - thinkpad-acpi hotkey functions - thinkpad-acpi LED control (red thinkpad LED) - Suspend to RAM and resume works - Mini displayport output works Known issues: - Patches needed for EC battery support https://review.coreboot.org/#/c/18348/ https://review.coreboot.org/#/c/18349/ - No thermal zone since temperature sensing is not H8-compatible and needs to be reverse engineered. Not tested: - msata/wwan (probably works) Signed-off-by: Tobias Diedrich Change-Id: I52bc4515277e5c18afbb14a80a9ac788049f485c Reviewed-on: https://review.coreboot.org/18351 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Rudolph --- src/mainboard/lenovo/s230u/hda_verb.c | 129 ++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 src/mainboard/lenovo/s230u/hda_verb.c (limited to 'src/mainboard/lenovo/s230u/hda_verb.c') diff --git a/src/mainboard/lenovo/s230u/hda_verb.c b/src/mainboard/lenovo/s230u/hda_verb.c new file mode 100644 index 0000000000..f2da2c4756 --- /dev/null +++ b/src/mainboard/lenovo/s230u/hda_verb.c @@ -0,0 +1,129 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2011 The ChromiumOS Authors. All rights reserved. + * Copyright (C) 2014 Vladimir Serbinenko + * Copyright (C) 2017 Tobias Diedrich + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + + +#include + +const u32 cim_verb_data[] = { + /* coreboot specific header */ + 0x10ec0269, // Codec Vendor / Device ID: Realtek ALC269VC + 0x17aa21fa, // Subsystem ID + 0x0000000c, // Number of 4 dword sets + + /* Bits 31:28 - Codec Address */ + /* Bits 27:20 - NID */ + /* Bits 19:8 - Verb ID */ + /* Bits 7:0 - Payload */ + + /* NID 0x01 - NodeInfo */ + AZALIA_SUBVENDOR(0x0, 0x17AA21FA), + + /* + * PIN_CFG: + * 31:30 Port connectivity + * 00 Connected to jack + * 01 No physical connection + * 10 Fixed function (integrated speaker/mic) + * 11 Jack + internal + * 29:24 Location + * See HDA spec for full matrix + * 23:20 Default device + * 0 Line out 4 S/PDIF out 8 Line in c S/PDIF in + * 1 Speaker 5 Digital out 9 Aux d Digital in + * 2 HP out 6 Modem line a Mic in e Reserved + * 3 CD 7 Modem handse b Telephony f Other + * 19:16 Connection type + * 0 Unknown 4 RCA 8 Multichannel analog DIN + * 1 1/8" jack 5 Optical 9 XLR + * 2 1/4" jack 6 Digital a RJ-11 + * 3 ATAPI 7 Analog b Combination f Other + * 15:12 Color + * 0 Unknown 4 Green 8 Purple + * 1 Black 5 Red 9 Pink + * 2 Grey 6 Orange a-d Reserved + * 3 Blue 7 Yellow e White f Other + * 11:8 Misc + * bit0 Jack detect override 1-3 Reserved + * 7:4 Default association + * 0 Reserved/Not initialized + * f Lowest priority + * 3:0 Sequence + * For stream channel to in/out mapping + */ + + /* + * NID 0x12 - Digital MIC + * Fixed function, mic in, digital + */ + AZALIA_PIN_CFG(0x0, 0x12, 0x90a60940), + /* + * NID 0x14 - SPK out + * Fixed function, speaker, analog + */ + AZALIA_PIN_CFG(0x0, 0x14, 0x90170110), + /* + * NID 0x15 - HP out + * Location left, headphone out, 1/8" jack, black + */ + AZALIA_PIN_CFG(0x0, 0x15, 0x03211020), + /* NID 0x17 - ? (Unconnected) */ + AZALIA_PIN_CFG(0x0, 0x17, 0x411111f0), + /* + * NID 0x18 - MIC1 in + * Location left, mic in, 1/8" jack, black + */ + AZALIA_PIN_CFG(0x0, 0x18, 0x03a11830), + /* NID 0x19 - MIC2 in (Unconnected) */ + AZALIA_PIN_CFG(0x0, 0x19, 0x411111f0), + /* NID 0x1a - Line1 in (Unconnected) */ + AZALIA_PIN_CFG(0x0, 0x1a, 0x411111f0), + /* NID 0x1b - Line2 in (Unconnected) */ + AZALIA_PIN_CFG(0x0, 0x1b, 0x411111f0), + /* NID 0x1d - PCBEEP */ + AZALIA_PIN_CFG(0x0, 0x1d, 0x40148605), + /* NID 0x1e - S/PDIF out (Unconnected) */ + AZALIA_PIN_CFG(0x0, 0x1e, 0x411111f0), + + 0x01470740, // Enable output for NID 0x14 (Speaker out) + 0x015707C0, // Enable output & HP amp for NID 0x15 (HP out) + 0x01870724, // Enable Vrefout NID 0x18 (MIC1 in) + 0x00170500, // Set power state to D0 + + /* coreboot specific header */ + 0x80862806, // Codec Vendor / Device ID: Intel PantherPoint HDMI + 0x80860101, // Subsystem ID + 0x00000004, // Number of IDs + + /* NID 0x01, HDA Codec Subsystem ID Verb Table: 0x80860101 */ + AZALIA_SUBVENDOR(0x3, 0x80860101), + + /* Pin Complex (NID 0x05) Digital Out at Int HDMI */ + AZALIA_PIN_CFG(0x3, 0x05, 0x18560010), + + /* Pin Complex (NID 0x06) Digital Out at Int HDMI */ + AZALIA_PIN_CFG(0x3, 0x06, 0x18560020), + + /* Pin Complex (NID 0x07) Digital Out at Int HDMI */ + AZALIA_PIN_CFG(0x3, 0x07, 0x58560030) +}; + +const u32 pc_beep_verbs[] = { + /* Digital PCBEEP Gain: 0h=-9db, 1h=-6db ... 4h=+3db, 5h=+6db */ + 0x02177a00, +}; + +AZALIA_ARRAY_SIZES; -- cgit v1.2.3