From d959a201148dc753fcd7ba1034b78075bf779410 Mon Sep 17 00:00:00 2001 From: Felix Singer Date: Mon, 17 Sep 2018 01:26:51 +0200 Subject: [PATCH] mb/clevo/kbl-u: Add Clevo N130WU/N131WU MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Working: - TianoCore - NVMe, SATA3 - USB2, USB3 - Thunderbolt - Graphics (GOP and libgfxinit) - Sound - Webcam - WLAN, LAN, Bluetooth, LTE - Keyboard, touchpad - TPM - flashrom support; reading / flashing from Linux - ACPI S3 WIP: - Documentation Not working: - EC ACPI (e.g. Fn keys, battery and power information) Boots Arch Linux (Linux 5.8.12) successfully. Change-Id: I364f5849ef88f43b85efbd7a635a27e54d08c513 Signed-off-by: Felix Singer Signed-off-by: Paul Menzel Reviewed-on: https://review.coreboot.org/c/coreboot/+/28640 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Michael Niewöhner --- Documentation/mainboard/clevo/n130wu/index.md | 47 ++ Documentation/mainboard/index.md | 4 + src/mainboard/clevo/kbl-u/Kconfig | 98 ++++ src/mainboard/clevo/kbl-u/Kconfig.name | 6 + src/mainboard/clevo/kbl-u/Makefile.inc | 11 + src/mainboard/clevo/kbl-u/acpi/ec.asl | 0 src/mainboard/clevo/kbl-u/acpi/superio.asl | 3 + src/mainboard/clevo/kbl-u/board_info.txt | 7 + src/mainboard/clevo/kbl-u/bootblock.c | 9 + src/mainboard/clevo/kbl-u/dsdt.asl | 22 + .../clevo/kbl-u/include/mainboard/gpio.h | 8 + src/mainboard/clevo/kbl-u/ramstage.c | 18 + src/mainboard/clevo/kbl-u/romstage.c | 38 ++ .../kbl-u/variants/n13xwu/board_info.txt | 1 + .../clevo/kbl-u/variants/n13xwu/data.vbt | Bin 0 -> 6144 bytes .../clevo/kbl-u/variants/n13xwu/devicetree.cb | 166 ++++++ .../kbl-u/variants/n13xwu/fmds/vboot-ro.fmd | 32 ++ .../kbl-u/variants/n13xwu/gma-mainboard.ads | 21 + .../clevo/kbl-u/variants/n13xwu/gpio.c | 503 ++++++++++++++++++ .../clevo/kbl-u/variants/n13xwu/gpio_early.c | 17 + .../clevo/kbl-u/variants/n13xwu/hda_verb.c | 34 ++ 21 files changed, 1045 insertions(+) create mode 100644 Documentation/mainboard/clevo/n130wu/index.md create mode 100644 src/mainboard/clevo/kbl-u/Kconfig create mode 100644 src/mainboard/clevo/kbl-u/Kconfig.name create mode 100644 src/mainboard/clevo/kbl-u/Makefile.inc create mode 100644 src/mainboard/clevo/kbl-u/acpi/ec.asl create mode 100644 src/mainboard/clevo/kbl-u/acpi/superio.asl create mode 100644 src/mainboard/clevo/kbl-u/board_info.txt create mode 100644 src/mainboard/clevo/kbl-u/bootblock.c create mode 100644 src/mainboard/clevo/kbl-u/dsdt.asl create mode 100644 src/mainboard/clevo/kbl-u/include/mainboard/gpio.h create mode 100644 src/mainboard/clevo/kbl-u/ramstage.c create mode 100644 src/mainboard/clevo/kbl-u/romstage.c create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/board_info.txt create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/data.vbt create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/devicetree.cb create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/fmds/vboot-ro.fmd create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/gma-mainboard.ads create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/gpio.c create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/gpio_early.c create mode 100644 src/mainboard/clevo/kbl-u/variants/n13xwu/hda_verb.c diff --git a/Documentation/mainboard/clevo/n130wu/index.md b/Documentation/mainboard/clevo/n130wu/index.md new file mode 100644 index 0000000000..326756199b --- /dev/null +++ b/Documentation/mainboard/clevo/n130wu/index.md @@ -0,0 +1,47 @@ +# Clevo N130WU + +## Hardware +### Technology +```eval_rst ++------------------+--------------------------------+ +| CPU | Intel i7-8550U | ++------------------+--------------------------------+ +| PCH | Intel Sunrise Point LP | ++------------------+--------------------------------+ +| EC / Super IO | ITE IT8587E | ++------------------+--------------------------------+ +| Coprocessor | Intel ME | ++------------------+--------------------------------+ +``` + +### Flash chip +```eval_rst ++---------------------+-----------------+ +| Type | Value | ++=====================+=================+ +| Model | GD25Q64B | ++---------------------+-----------------+ +| Socketed flash | no | ++---------------------+-----------------+ +| Size | 8 MiB | ++---------------------+-----------------+ +| In circuit flashing | Yes | ++---------------------+-----------------+ +| Package | SOIC-8 | ++---------------------+-----------------+ +| Write protection | No | ++---------------------+-----------------+ +| Dual BIOS feature | No | ++---------------------+-----------------+ +| Internal flashing | Yes | ++---------------------+-----------------+ +``` + +## Board status +### Working +### Not Working +### Work in progress +### Untested + +## Also known as +* TUXEDO InfinityBook Pro 13 v3 diff --git a/Documentation/mainboard/index.md b/Documentation/mainboard/index.md index 4a1f74bc42..d6aed22128 100644 --- a/Documentation/mainboard/index.md +++ b/Documentation/mainboard/index.md @@ -26,6 +26,10 @@ This section contains documentation about coreboot on specific mainboards. - [CN81XX EVB SFF](cavium/cn8100_sff_evb.md) +## Clevo + +- [N130WU / N131WU](clevo/n130wu/index.md) + ## Dell - [OptiPlex 9010 SFF](dell/optiplex_9010.md) diff --git a/src/mainboard/clevo/kbl-u/Kconfig b/src/mainboard/clevo/kbl-u/Kconfig new file mode 100644 index 0000000000..ed0600a018 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/Kconfig @@ -0,0 +1,98 @@ +# SPDX-License-Identifier: GPL-2.0-only + +if BOARD_CLEVO_N130WU + +config BOARD_SPECIFIC_OPTIONS + def_bool y + select BOARD_ROMSIZE_KB_8192 + select EC_ACPI + select HAVE_ACPI_RESUME + select HAVE_ACPI_TABLES +# select HAVE_CMOS_DEFAULT +# select HAVE_SMI_HANDLER + select INTEL_GMA_HAVE_VBT + select INTEL_LPSS_UART_FOR_CONSOLE + select MAINBOARD_HAS_LIBGFXINIT + select MAINBOARD_HAS_LPC_TPM + select MAINBOARD_HAS_TPM2 + select NO_UART_ON_SUPERIO + select SOC_INTEL_COMMON_BLOCK_HDA_VERB + select SOC_INTEL_KABYLAKE + select SPD_READ_BY_WORD + select SYSTEM_TYPE_LAPTOP + +config VBOOT + select VBOOT_NO_BOARD_SUPPORT + select GBB_FLAG_DISABLE_LID_SHUTDOWN + select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC + select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC + select GBB_FLAG_DISABLE_FWMP + +config MAINBOARD_DIR + string + default "clevo/kbl-u" + +config VARIANT_DIR + string + default "n13xwu" if BOARD_CLEVO_N130WU + +config MAINBOARD_PART_NUMBER + string + default "N130WU" if BOARD_CLEVO_N130WU + +config CBFS_SIZE + hex + default 0x600000 if BOARD_CLEVO_N130WU + +config DEVICETREE + string + default "variants/$(CONFIG_VARIANT_DIR)/devicetree.cb" + +config FMDFILE + string + default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/variants/$(CONFIG_VARIANT_DIR)/fmds/vboot-ro.fmd" if VBOOT && !VBOOT_SLOTS_RW_A + # TODO +# default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/fmds/vboot-roa.fmd" if VBOOT_SLOTS_RW_A && !VBOOT_SLOTS_RW_AB +# default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/fmds/vboot-roab.fmd" if VBOOT_SLOTS_RW_AB + +config MAX_CPUS + int + default 8 + +config DIMM_MAX + int + default 2 + +config DIMM_SPD_SIZE + int + default 512 + +config VGA_BIOS_ID + string + default "8086,5917" if BOARD_CLEVO_N130WU + +config PXE_ROM_ID + string + default "10ec,8168" + +config UART_FOR_CONSOLE + int + default 2 + +config POST_DEVICE + bool + default n + +config CONSOLE_POST + bool + default y + +config LINEAR_FRAMEBUFFER_MAX_WIDTH + int + default 1920 + +config LINEAR_FRAMEBUFFER_MAX_HEIGHT + int + default 1080 + +endif diff --git a/src/mainboard/clevo/kbl-u/Kconfig.name b/src/mainboard/clevo/kbl-u/Kconfig.name new file mode 100644 index 0000000000..5a6f699c67 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/Kconfig.name @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0-only + +comment "Kaby Lake U" + +config BOARD_CLEVO_N130WU + bool "N130WU / N131WU" diff --git a/src/mainboard/clevo/kbl-u/Makefile.inc b/src/mainboard/clevo/kbl-u/Makefile.inc new file mode 100644 index 0000000000..b424d4da19 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/Makefile.inc @@ -0,0 +1,11 @@ +## SPDX-License-Identifier: GPL-2.0-only + +CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include + +bootblock-y += bootblock.c +bootblock-y += variants/$(VARIANT_DIR)/gpio_early.c + +ramstage-y += ramstage.c +ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c +ramstage-y += variants/$(VARIANT_DIR)/gpio.c +ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads diff --git a/src/mainboard/clevo/kbl-u/acpi/ec.asl b/src/mainboard/clevo/kbl-u/acpi/ec.asl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/mainboard/clevo/kbl-u/acpi/superio.asl b/src/mainboard/clevo/kbl-u/acpi/superio.asl new file mode 100644 index 0000000000..55b1db5b11 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/acpi/superio.asl @@ -0,0 +1,3 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include diff --git a/src/mainboard/clevo/kbl-u/board_info.txt b/src/mainboard/clevo/kbl-u/board_info.txt new file mode 100644 index 0000000000..97514fc003 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/board_info.txt @@ -0,0 +1,7 @@ +Vendor name: Clevo +Category: laptop +Release year: 2018 +ROM package: SOIC-8 +ROM protocol: SPI +ROM socketed: n +Flashrom support: y diff --git a/src/mainboard/clevo/kbl-u/bootblock.c b/src/mainboard/clevo/kbl-u/bootblock.c new file mode 100644 index 0000000000..067c9ecab2 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/bootblock.c @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include + +void bootblock_mainboard_early_init(void) +{ + mainboard_configure_gpios(); +} diff --git a/src/mainboard/clevo/kbl-u/dsdt.asl b/src/mainboard/clevo/kbl-u/dsdt.asl new file mode 100644 index 0000000000..21acf37dc2 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/dsdt.asl @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +DefinitionBlock( + "dsdt.aml", + "DSDT", + ACPI_DSDT_REV_2, + OEM_ID, + ACPI_TABLE_CREATOR, + 0x20110725 // OEM revision +) +{ + #include + #include + + Device (\_SB.PCI0) { + #include + #include + } + + #include +} diff --git a/src/mainboard/clevo/kbl-u/include/mainboard/gpio.h b/src/mainboard/clevo/kbl-u/include/mainboard/gpio.h new file mode 100644 index 0000000000..ef2a21c418 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/include/mainboard/gpio.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef MAINBOARD_GPIO_H +#define MAINBOARD_GPIO_H + +void mainboard_configure_gpios(void); + +#endif diff --git a/src/mainboard/clevo/kbl-u/ramstage.c b/src/mainboard/clevo/kbl-u/ramstage.c new file mode 100644 index 0000000000..b5d67864a0 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/ramstage.c @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include + +/* + * TODO: + * - Add kill switches for WLAN, BT, LTE, CCD + * - Add support for WoL (LAN, WLAN) + * - Make M.2 port configurable (SATA <> PCIe) + * - Make SATA DevSlp configurable + * - Make TBT port configurable (TBT <> DisplayPort) + */ + +void mainboard_silicon_init_params(FSP_SIL_UPD *params) +{ + mainboard_configure_gpios(); +} diff --git a/src/mainboard/clevo/kbl-u/romstage.c b/src/mainboard/clevo/kbl-u/romstage.c new file mode 100644 index 0000000000..1399d33608 --- /dev/null +++ b/src/mainboard/clevo/kbl-u/romstage.c @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include + +static void mainboard_fill_rcomp_res_data(void *rcomp_ptr) +{ + const u16 RcompResistor[3] = {121, 81, 100}; + memcpy(rcomp_ptr, RcompResistor, sizeof(RcompResistor)); +} + +static void mainboard_fill_rcomp_strength_data(void *rcomp_strength_ptr) +{ + const u16 RcompTarget[5] = {100, 40, 20, 20, 26}; + memcpy(rcomp_strength_ptr, RcompTarget, sizeof(RcompTarget)); +} + +void mainboard_memory_init_params(FSPM_UPD *mupd) +{ + FSP_M_CONFIG *mem_cfg; + struct spd_block blk = { + .addr_map = {0x50, 0x52}, + }; + + mem_cfg = &mupd->FspmConfig; + + get_spd_smbus(&blk); + dump_spd_info(&blk); + + mainboard_fill_rcomp_res_data(&mem_cfg->RcompResistor); + mainboard_fill_rcomp_strength_data(&mem_cfg->RcompTarget); + + mem_cfg->DqPinsInterleaved = TRUE; + mem_cfg->MemorySpdDataLen = blk.len; + mem_cfg->MemorySpdPtr00 = (uintptr_t)blk.spd_array[0]; + mem_cfg->MemorySpdPtr10 = (uintptr_t)blk.spd_array[1]; +} diff --git a/src/mainboard/clevo/kbl-u/variants/n13xwu/board_info.txt b/src/mainboard/clevo/kbl-u/variants/n13xwu/board_info.txt new file mode 100644 index 0000000000..30f8ce6e3f --- /dev/null +++ b/src/mainboard/clevo/kbl-u/variants/n13xwu/board_info.txt @@ -0,0 +1 @@ +Board name: N130WU / N131WU diff --git a/src/mainboard/clevo/kbl-u/variants/n13xwu/data.vbt b/src/mainboard/clevo/kbl-u/variants/n13xwu/data.vbt new file mode 100644 index 0000000000000000000000000000000000000000..f88aef4c0409b8522cc37aa3b5ca2838b16e0afe GIT binary patch literal 6144 zcmeHKUu;ul6hF7Of4_TgdwWNq6r4vy=mu=J118KVw`&J0>sY&vIid+2wCG}CV;g4p zj~b^TF`7Q8L4#(AFJ`_hF+Le1FGdog5~KJCFD6PfF%e@-fO_tqwVUHlLlngHwC6kD zcka2rd(Qd(+;dkCbo67odruT4j_1on*V8_wsNW4ZCCCPqdv8I5CP|NdM)H#Rhp%VK(9 zM+9|DiFF(q&S!Dgk%RkkV{J%4Dp_NAQ`5#xh~efI`m5p1)K%NUt!*_8w;9L2+<0#6>0Gu+VminvaN9Wm&H+9RIJnXRqyV=Db`3P@0N4Sv z^24stk-@f^vys&rH#h_H4G5k$#u{K*k9Ihh0XglyNZ2~L031d~=8!xw2{rh}u)1tn z*$hYYiyTtlBt%`xvfJx16_u7l^UJcWDt8G4=-HV2$e z0A5ao1D<-=!G~aix4{ei7FcCJ4Q>y@I*$yG5T}UGI2e3Ke4h9x;@^m`5WAcV{KPAW zA0Tcf-bx%L?je4Zc!=0}1TL3s1$_#L3Y;bVrUcmzuQx#9q@_P;={>*FWD_w<3YIjK zRWzlN%LP|UUj?94azCtlpb-Lv&BZLFE=wj1$@58T+)q-^)u1&ll{^_5+UWQ1wd@Sg zLN=*Xy4!nV9qgnn&AZ#DRvNMF1~~t&#KR;ozqQv$uZVMt(lA=`9yo($=&p8CE^hDS zm7u-?R{U%`>tb-$b%{G(_h0B;GB);nU-YcWH~N`}6diqFfIdvTjrNqO00Ua3)W6l@o`g5PTt zI_@!%&YnS=Xvj;POw!?7OFMb-q_iHRm%SdXi2R`K<_Ob1gz(@>3>B7`IjV0xX1?}l zuIMe9%03Ar)Ms4W6j@z!jZ_51Mnf3Lm<*Y3jb&7EL=1wx+V<-$wY8q6;WIa!gLassiGRKL{X&uNIn!?Ta5LfFY@cJYFk?&aCplG zZE!nKF}A<&G$uv2AKlXWn|f3@qrFe-G{{X