summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
authorMichael Niewöhner <foss@mniewoehner.de>2021-11-28 23:53:55 +0100
committerMichael Niewöhner <foss@mniewoehner.de>2022-11-11 22:43:14 +0000
commitdc3e7def5f1d0ef05cc26e75a91603dd6889068e (patch)
treec2d2102d43c766fb0cc735504dc03e1d935ad731 /src/mainboard
parentd6ac7a9a3a774eb5a70385660c072bbaa248a355 (diff)
mb/clevo/l140cu: make use of the new clevo/it5570e ec driver
Hook up the new EC driver. Tested: - Fn hotkeys work (brightness, display, volume, tp toggle, ...) - Display lid - Sleep/wake - Camera (including Fn toggle) - Bluetooth (both CNVi and PCIe card) - Wi-Fi (both CNVi and PCIe card) - CMOS options Known issues: - Touchpad toggle needs OS setup; see CB:68791 - UCSI is not implemented; see CB:68791 Change-Id: I28ac401ada2945bb58fe862895458b10fed505fe Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/68795 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/clevo/cml-u/Kconfig5
-rw-r--r--src/mainboard/clevo/cml-u/Makefile.inc4
-rw-r--r--src/mainboard/clevo/cml-u/bootblock.c12
-rw-r--r--src/mainboard/clevo/cml-u/cmos.default11
-rw-r--r--src/mainboard/clevo/cml-u/cmos.layout16
-rw-r--r--src/mainboard/clevo/cml-u/dsdt.asl5
-rw-r--r--src/mainboard/clevo/cml-u/fadt.c10
-rw-r--r--src/mainboard/clevo/cml-u/smihandler.c20
-rw-r--r--src/mainboard/clevo/cml-u/variants/l140cu/acpi/variant.asl6
-rw-r--r--src/mainboard/clevo/cml-u/variants/l140cu/devicetree.cb4
10 files changed, 91 insertions, 2 deletions
diff --git a/src/mainboard/clevo/cml-u/Kconfig b/src/mainboard/clevo/cml-u/Kconfig
index bd895e2e81..cd22286de7 100644
--- a/src/mainboard/clevo/cml-u/Kconfig
+++ b/src/mainboard/clevo/cml-u/Kconfig
@@ -20,6 +20,7 @@ config BOARD_CLEVO_CMLU_COMMON
config BOARD_CLEVO_L140CU_BASE
bool
select BOARD_CLEVO_CMLU_COMMON
+ select EC_CLEVO_IT5570E
select HAVE_SPD_IN_CBFS
if BOARD_CLEVO_CMLU_COMMON
@@ -71,7 +72,7 @@ config SEABIOS_PS2_TIMEOUT
depends on PAYLOAD_SEABIOS
default 500
-config EC_SYSTEM76_EC_BAT_THRESHOLDS
- default n if BOARD_CLEVO_L140CU_BASE
+config EC_CLEVO_IT5570E_MEM_BASE
+ default 0xfe700000
endif
diff --git a/src/mainboard/clevo/cml-u/Makefile.inc b/src/mainboard/clevo/cml-u/Makefile.inc
index d9f4ae9ee0..e71e87a07d 100644
--- a/src/mainboard/clevo/cml-u/Makefile.inc
+++ b/src/mainboard/clevo/cml-u/Makefile.inc
@@ -1,4 +1,5 @@
CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/include
+CPPFLAGS_common += -I$(src)/mainboard/$(MAINBOARDDIR)/variants/$(VARIANT_DIR)/acpi
bootblock-y += bootblock.c
bootblock-y += variants/$(VARIANT_DIR)/gpio_early.c
@@ -9,6 +10,9 @@ romstage-y += variants/$(VARIANT_DIR)/romstage.c
ramstage-y += ramstage.c
ramstage-y += variants/$(VARIANT_DIR)/gpio.c
ramstage-y += variants/$(VARIANT_DIR)/hda_verb.c
+ramstage-$(CONFIG_HAVE_ACPI_TABLES) += fadt.c
ramstage-$(CONFIG_MAINBOARD_USE_LIBGFXINIT) += variants/$(VARIANT_DIR)/gma-mainboard.ads
+smm-$(CONFIG_EC_CLEVO_IT5570E) += smihandler.c
+
subdirs-y += variants/$(VARIANT_DIR)
diff --git a/src/mainboard/clevo/cml-u/bootblock.c b/src/mainboard/clevo/cml-u/bootblock.c
index b351fbd8ef..ee6c0b31ce 100644
--- a/src/mainboard/clevo/cml-u/bootblock.c
+++ b/src/mainboard/clevo/cml-u/bootblock.c
@@ -1,9 +1,21 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <bootblock_common.h>
+#include <ec/clevo/it5570e/early_init.h>
+#include <intelblocks/lpc_lib.h>
#include <variant/gpio.h>
void bootblock_mainboard_early_init(void)
{
variant_configure_early_gpios();
+
+ /* Open LGMR window for EC */
+ if (CONFIG(EC_CLEVO_IT5570E))
+ lpc_open_mmio_window(CONFIG_EC_CLEVO_IT5570E_MEM_BASE, 64 * KiB);
+}
+
+void bootblock_mainboard_init(void)
+{
+ if (CONFIG(EC_CLEVO_IT5570E))
+ ec_configure_kbled_booteffect();
}
diff --git a/src/mainboard/clevo/cml-u/cmos.default b/src/mainboard/clevo/cml-u/cmos.default
index f3330e5070..a20f1b187a 100644
--- a/src/mainboard/clevo/cml-u/cmos.default
+++ b/src/mainboard/clevo/cml-u/cmos.default
@@ -1,3 +1,14 @@
boot_option=Fallback
debug_level=Debug
power_on_after_fail=Disable
+
+# EC options
+ac_fan_always_on=Disable
+camera_boot_state=Keep
+fn_win_swap=Disable
+tp_toggle_mode=CtrlAltF9
+flexicharger_on=Disable
+flexicharger_start=95
+flexicharger_stop=100
+kbled_booteffect=Disable
+kbled_timeout=15
diff --git a/src/mainboard/clevo/cml-u/cmos.layout b/src/mainboard/clevo/cml-u/cmos.layout
index b527f81b08..391deb16eb 100644
--- a/src/mainboard/clevo/cml-u/cmos.layout
+++ b/src/mainboard/clevo/cml-u/cmos.layout
@@ -24,6 +24,20 @@ entries
410 2 e 7 power_on_after_fail
# -----------------------------------------------------------------
+# EC options
+500 1 e 1 ac_fan_always_on
+502 2 e 7 camera_boot_state
+504 1 e 1 fn_win_swap
+505 1 e 8 tp_toggle_mode
+
+519 1 e 1 flexicharger_on
+520 8 h 0 flexicharger_start
+528 8 h 0 flexicharger_stop
+
+543 1 e 1 kbled_booteffect
+544 16 h 0 kbled_timeout
+
+# -----------------------------------------------------------------
# vboot nv area
800 128 r 0 vbnv
@@ -54,6 +68,8 @@ enumerations
7 0 Disable
7 1 Enable
7 2 Keep
+8 0 CtrlAltF9
+8 1 KeycodeF7F8
# -----------------------------------------------------------------
checksums
diff --git a/src/mainboard/clevo/cml-u/dsdt.asl b/src/mainboard/clevo/cml-u/dsdt.asl
index e7963b2858..71556dbf10 100644
--- a/src/mainboard/clevo/cml-u/dsdt.asl
+++ b/src/mainboard/clevo/cml-u/dsdt.asl
@@ -28,4 +28,9 @@ DefinitionBlock(
{
#include <drivers/pc80/pc/ps2_controller.asl>
}
+
+#if CONFIG(EC_CLEVO_IT5570E)
+ #include <variant.asl>
+ #include <ec/clevo/it5570e/acpi/common.asl>
+#endif
}
diff --git a/src/mainboard/clevo/cml-u/fadt.c b/src/mainboard/clevo/cml-u/fadt.c
new file mode 100644
index 0000000000..28ed7e97c3
--- /dev/null
+++ b/src/mainboard/clevo/cml-u/fadt.c
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <acpi/acpi.h>
+#include <intelblocks/acpi.h>
+
+void mainboard_fill_fadt(acpi_fadt_t *fadt)
+{
+ /* Control method power button (EC) */
+ fadt->flags |= ACPI_FADT_POWER_BUTTON;
+}
diff --git a/src/mainboard/clevo/cml-u/smihandler.c b/src/mainboard/clevo/cml-u/smihandler.c
new file mode 100644
index 0000000000..e53ab452a6
--- /dev/null
+++ b/src/mainboard/clevo/cml-u/smihandler.c
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <console/console.h>
+#include <cpu/x86/smm.h>
+#include <ec/clevo/it5570e/smm.h>
+#include <intelblocks/smihandler.h>
+
+void mainboard_smi_sleep(u8 slp_typ)
+{
+ printk(BIOS_DEBUG, "Mainboard SMI sleep handler: %02x\n", slp_typ);
+ ec_smi_sleep(slp_typ);
+}
+
+int mainboard_smi_apmc(u8 apmc)
+{
+ printk(BIOS_DEBUG, "Mainboard SMI APMC handler: %02x\n", apmc);
+ ec_smi_apmc(apmc);
+
+ return 0;
+}
diff --git a/src/mainboard/clevo/cml-u/variants/l140cu/acpi/variant.asl b/src/mainboard/clevo/cml-u/variants/l140cu/acpi/variant.asl
new file mode 100644
index 0000000000..7694bfe361
--- /dev/null
+++ b/src/mainboard/clevo/cml-u/variants/l140cu/acpi/variant.asl
@@ -0,0 +1,6 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#define EC_GPE_SCI GPE0_DW2_16 /* GPP_E16 */
+#define EC_GPE_PWRB GPE0_DW1_09 /* GPP_D9 (SWI#) */
+#define EC_GPE_SLPB GPE0_DW1_09 /* GPP_D9 (SWI#) */
+#define EC_GPE_LID GPE0_DW1_09 /* GPP_D9 (SWI#) */
diff --git a/src/mainboard/clevo/cml-u/variants/l140cu/devicetree.cb b/src/mainboard/clevo/cml-u/variants/l140cu/devicetree.cb
index 7385fe19c6..ce683b37dc 100644
--- a/src/mainboard/clevo/cml-u/variants/l140cu/devicetree.cb
+++ b/src/mainboard/clevo/cml-u/variants/l140cu/devicetree.cb
@@ -183,6 +183,10 @@ chip soc/intel/cannonlake
device pci 1e.2 off end # GSPI #0
device pci 1e.3 off end # GSPI #1
device pci 1f.0 on # LPC Interface
+ chip ec/clevo/it5570e
+ device generic 0 on end
+ register "pl2_on_battery" = "15"
+ end
chip drivers/pc80/tpm # TPM
device pnp 0c31.0 on end
end