ec/starlabs/merlin: Add EC related files for Alder Lake boards

Add EC memory layout and Q events for Intel Alder Lake based boards,
the "StarBook Mk VI" and "StarFighter Mk I", which both use the ITE
5570E.

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Change-Id: I8cea386ba91d076084002738fe7041834deea311
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67398
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
diff --git a/src/ec/starlabs/merlin/variants/adl/ecdefs.h b/src/ec/starlabs/merlin/variants/adl/ecdefs.h
new file mode 100644
index 0000000..28f7e4b
--- /dev/null
+++ b/src/ec/starlabs/merlin/variants/adl/ecdefs.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <assert.h>
+#include <stdint.h>
+
+/*
+ * EC communication interface for ITE Embedded Controller
+ */
+
+#ifndef _EC_STARLABS_ADL_EC_DEFS_H
+#define _EC_STARLABS_ADL_EC_DEFS_H
+
+/* IT5570 chip ID byte values */
+#define ITE_CHIPID_VAL		0x5570
+
+/* EC RAM offsets */
+#define ECRAM_KBL_BRIGHTNESS	0x09
+#define ECRAM_KBL_TIMEOUT	0x10
+#define ECRAM_KBL_STATE		0x0a
+#define ECRAM_TRACKPAD_STATE	0x0c
+#define ECRAM_FN_LOCK_STATE	0x0f
+#define ECRAM_FN_CTRL_REVERSE	0x17
+#define ECRAM_MAX_CHARGE	0x1a
+#define ECRAM_FAN_MODE		0x1b
+#define ECRAM_FAST_CHARGE	dead_code_t(uint8_t)
+
+#endif
diff --git a/src/ec/starlabs/merlin/variants/adl/emem.asl b/src/ec/starlabs/merlin/variants/adl/emem.asl
new file mode 100644
index 0000000..7c9c0ed
--- /dev/null
+++ b/src/ec/starlabs/merlin/variants/adl/emem.asl
@@ -0,0 +1,166 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+OperationRegion (ECF2, EmbeddedControl, 0x00, 0x100)
+Field (ECF2, ByteAcc, Lock, Preserve)
+{
+	Offset(0x00),
+	ECMV, 8,	// Major Version Number
+	ECSV, 8,	// Minor Version Number
+	KBVS, 8,	// Keyboard Controller Version
+	ECTV, 8,	// Test Version Number
+	OSFG, 8,	// OS Flag
+	FRMF, 8,	// Force Mirror Flag
+
+	Offset(0x07),
+	SKUI, 8,	// SKU ID
+	CSFG, 8,	// Modern Standby Flag
+	KLBE, 8,	// Keyboard Backlight Brightness
+	KLSE, 8,	// Keyboard Backlight State
+	BDID, 8,	// Board ID
+	TPLE, 8,	// Trackpad State
+	KBCD, 8,	// Rotate Flag
+	WIFI, 8,	// WiFi Enable
+	FLKE, 8,	// Function Lock State
+	KLTE, 8,	// Keyboard Backlight Timeout
+
+	Offset(0x13),
+	AUDI, 8,	// Control Audio
+
+	Offset(0x15),
+	SURF, 8,	// Chassis Surface Temperature
+	CHAR, 8,	// Charger Temperature
+	FCLA, 8,	// Fn Ctrl Reverse
+
+	Offset(0x1a),
+	BFCP, 8,	// Battery Full Charge Percentage
+	FANM, 8,	// Fan Mode
+
+	Offset(0x1d),
+	BSRC, 8,	// BIOS Recover
+
+	Offset(0x40),
+	SHIP, 8,	// Shipping Mode Flag
+	ECT0, 8,	// EC Build Time 0
+	ECT1, 8,	// EC Build Time 1
+	ECT2, 8,	// EC Build Time 2
+	ECT3, 8,	// EC Build Time 3
+	ECT4, 8,	// EC Build Time 4
+	ECT5, 8,	// EC Build Time 5
+	ECT6, 8,	// EC Build Time 6
+	ECT7, 8,	// EC Build Time 7
+	ECT8, 8,	// EC Build Time 8
+	ECT9, 8,	// EC Build Time 9
+
+	Offset(0x4B),
+	ECD0, 8,	// EC Build Date 0
+	ECD1, 8,	// EC Build Date 1
+	ECD2, 8,	// EC Build Date 2
+	ECD3, 8,	// EC Build Date 3
+	ECD4, 8,	// EC Build Date 4
+	ECD5, 8,	// EC Build Date 5
+	ECD6, 8,	// EC Build Date 6
+	ECD7, 8,	// EC Build Date 7
+	ECD8, 8,	// EC Build Date 8
+	ECD9, 8,	// EC Build Date 9
+
+	Offset(0x62),
+	TSE2, 8,	// Sensor 2 Temperature
+	SENF, 8,	// Sensor F
+	TSHT, 8,	// Thermal Sensor High Trip Point
+	TSLT, 8,	// Thermal Sensor Low Trip Point
+	THER, 8,	// Thermal Source
+
+	Offset(0x68),
+	BATT, 16,	// Battery Temperature
+	BATC, 8,	// Battery Temperature Ces
+
+	Offset(0x70),
+	CPUT, 8,	// PECI CPU Temperature
+	PMXT, 8,	// PLMX Temperature
+	TSE1, 8,	// Sensor 1 Temperature
+	TSE3, 8,	// Sensor 3 Temperature
+
+	Offset(0x7f),
+	LSTE, 1,	// Lid Status
+	    , 7,	// Reserved
+
+	Offset(0x80),
+	ECPS, 8,	// AC & Battery status
+	B1MN, 8,	// Battery Model Number Code
+	B1SN, 16,	// Battery Serial Number
+	B1DC, 16,	// Battery Design Capacity
+	B1DV, 16,	// Battery Design Voltage
+	B1FC, 16,	// Battery Last Full Charge Capacity
+	B1TP, 16,	// Battery Trip Point
+	B1ST, 8,	// Battery State
+	B1PR, 16,	// Battery Present Rate
+	B1RC, 16,	// Battery Remaining Capacity
+	B1PV, 16,	// Battery Present Voltage
+	BPRP, 8,	// Battery Remaining percentage
+
+	Offset(0x9d),
+	OPWE, 8,	// OPM write to EC flag for UCSI
+
+	Offset(0xb0),
+	MGO0, 8,	// UCSI DS MGO 0
+	MGO1, 8,	// UCSI DS MGO 1
+	MGO2, 8,	// UCSI DS MGO 2
+	MGO3, 8,	// UCSI DS MGO 3
+	MGO4, 8,	// UCSI DS MGO 4
+	MGO5, 8,	// UCSI DS MGO 5
+	MGO6, 8,	// UCSI DS MGO 6
+	MGO7, 8,	// UCSI DS MGO 7
+	MGO8, 8,	// UCSI DS MGO 8
+	MGO9, 8,	// UCSI DS MGO 9
+	MGOA, 8,	// UCSI DS MGO A
+	MGOB, 8,	// UCSI DS MGO B
+	MGOC, 8,	// UCSI DS MGO C
+	MGOD, 8,	// UCSI DS MGO D
+	MGOE, 8,	// UCSI DS MGO E
+	MGOF, 8,	// UCSI DS MGO F
+
+	Offset(0xc0),
+	UCSV, 16,	// UCSI DS Version
+	UCSD, 16,	// UCSI DS Reserved
+	CCI0, 8,	// UCSI DS CCI 0
+	CCI1, 8,	// UCSI DS CCI 1
+	CCI2, 8,	// UCSI DS CCI 2
+	CCI3, 8,	// UCSI DS CCI 3
+	CTL0, 8,	// UCSI DS Control 0
+	CTL1, 8,	// UCSI DS Control 0
+	CTL2, 8,	// UCSI DS Control 0
+	CTL3, 8,	// UCSI DS Control 0
+	CTL4, 8,	// UCSI DS Control 0
+	CTL5, 8,	// UCSI DS Control 0
+	CTL6, 8,	// UCSI DS Control 0
+	CTL7, 8,	// UCSI DS Control 0
+
+	Offset(0xd0),
+	MGI0, 8,	// UCSI DS MGI 0
+	MGI1, 8,	// UCSI DS MGI 1
+	MGI2, 8,	// UCSI DS MGI 2
+	MGI3, 8,	// UCSI DS MGI 3
+	MGI4, 8,	// UCSI DS MGI 4
+	MGI5, 8,	// UCSI DS MGI 5
+	MGI6, 8,	// UCSI DS MGI 6
+	MGI7, 8,	// UCSI DS MGI 7
+	MGI8, 8,	// UCSI DS MGI 8
+	MGI9, 8,	// UCSI DS MGI 9
+	MGIA, 8,	// UCSI DS MGI A
+	MGIB, 8,	// UCSI DS MGI B
+	MGIC, 8,	// UCSI DS MGI C
+	MGID, 8,	// UCSI DS MGI D
+	MGIE, 8,	// UCSI DS MGI E
+	MGIF, 8,	// UCSI DS MGI F
+
+	Offset(0xe6),
+	ECWD, 16,	// EC Wakeup Delay
+	ECWE, 8,	// EC Wakeup Enable
+
+	Offset(0xf7),
+	TBTC, 8,	// Thunderbolt Command
+	TBTP, 8,	// Thunderbolt Data Port
+	TBTD, 8,	// Thunderbolt Data
+	TBTA, 8,	// Thunderbolt Acknowledge
+	TBTG, 16,	// Thunderbolt DBG Data
+}
diff --git a/src/ec/starlabs/merlin/variants/adl/events.asl b/src/ec/starlabs/merlin/variants/adl/events.asl
new file mode 100644
index 0000000..03de4d9
--- /dev/null
+++ b/src/ec/starlabs/merlin/variants/adl/events.asl
@@ -0,0 +1,266 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+Method (_Q01, 0, NotSerialized)			// Event: F1 Hot Key
+{
+	Printf ("EC: F1")
+}
+
+Method (_Q02, 0, NotSerialized)			// Event: F2 Hot Key
+{
+	Printf ("EC: F2")
+}
+
+Method (_Q03, 0, NotSerialized)			// Event: F3 Hot Key
+{
+	Printf ("EC: F3")
+}
+
+Method (_Q04, 0, NotSerialized)			// Event: F4 Hot Key
+{
+	Printf ("EC: F4")
+}
+
+Method (_Q08, 0, NotSerialized)			// Event: F5 Hot Key
+{
+	Printf ("EC: F5")
+}
+
+Method (_Q09, 0, NotSerialized)			// Event: F6 Hot Key
+{
+	Printf ("EC: F6")
+}
+
+Method (_Q07, 0, NotSerialized)			// Event: F7 Hot Key
+{
+	Printf ("EC: F7")
+}
+
+Method (_Q05, 0, NotSerialized)			// Event: Backlight Brightness Down
+{
+	^^^^HIDD.HPEM (20)
+}
+
+Method (_Q06, 0, NotSerialized)			// Event: Backlight Brightness Up
+{
+	^^^^HIDD.HPEM (19)
+}
+
+Method (_Q10, 0, NotSerialized)			// Event: F10 Hot Key
+{
+	Printf ("EC: F10")
+}
+
+Method (_Q11, 0, NotSerialized)			// Event: F11 Hot Key
+{
+	Printf ("EC: F11")
+}
+
+Method (_Q12, 0, NotSerialized)			// Event: F12 Hot Key
+{
+	Printf ("EC: F6")
+}
+
+Method (_Q0A, 0, NotSerialized)			// Event: AC Power Connected
+{
+	Notify (BAT0, 0x81)
+	Notify (ADP1, 0x80)
+}
+
+Method (_Q0B, 0, NotSerialized)			// Event: AC Power Disconnected
+{
+	Notify (BAT0, 0x81)
+	Notify (BAT0, 0x80)
+}
+
+Method (_Q0C, 0, NotSerialized)			// Event: Lid Closed
+{
+	\LIDS = LSTE
+	Notify (LID0, 0x80)
+}
+
+Method (_Q0D, 0, NotSerialized)			// Event: Lid Opened
+{
+	\LIDS = LSTE
+	Notify (LID0, 0x80)
+}
+
+Method (_Q0E, 0, NotSerialized)			// Event: SLEEP
+{
+	Printf ("EC: SLEEP")
+}
+
+Method (_Q13, 0, NotSerialized)			// Event: BRIGHTNESS
+{
+	Printf ("EC: BRIGHTNESS")
+}
+
+Method (_Q20, 0, NotSerialized)			// Event: CPU_T
+{
+	Printf ("EC: CPU_T")
+}
+
+Method (_Q21, 0, NotSerialized)			// Event: SKIN_T
+{
+	Printf ("EC: SKIN_T")
+}
+
+Method (_Q22, 0, NotSerialized)			// Event: CHARGER_T
+{
+	Printf ("EC: CHARGER_T")
+}
+
+Method (_Q30, 0, NotSerialized)			// Event: THROT_OFF
+{
+	Printf ("EC: THROT_OFF")
+}
+
+Method (_Q31, 0, NotSerialized)			// Event: THROT_LV1
+{
+	Printf ("EC: THROT_LV1")
+}
+
+Method (_Q32, 0, NotSerialized)			// Event: THROT_LV2
+{
+	Printf ("EC: THROT_LV2")
+}
+
+Method (_Q33, 0, NotSerialized)			// Event: THROT_LV3
+{
+	Printf ("EC: THROT_LV3")
+}
+
+Method (_Q34, 0, NotSerialized)			// Event: THROT_LV4
+{
+	Printf ("EC: THROT_LV4")
+}
+
+Method (_Q35, 0, NotSerialized)			// Event: THROT_LV5
+{
+	Printf ("EC: THROT_LV5")
+}
+
+Method (_Q36, 0, NotSerialized)			// Event: THROT_LV6
+{
+	Printf ("EC: THROT_LV6")
+}
+
+Method (_Q37, 0, NotSerialized)			// Event: THROT_LV7
+{
+	Printf ("EC: THROT_LV7")
+}
+
+Method (_Q3B, 0, NotSerialized)			// Event: CPU_DN_SPEED
+{
+	Printf ("EC: CPU_DN_SPEED")
+}
+
+Method (_Q3C, 0, NotSerialized)			// Event: CPU_UP_SPEED
+{
+	Printf ("EC: CPU_UP_SPEED")
+}
+
+Method (_Q3D, 0, NotSerialized)			// Event: CPU_TURBO_OFF
+{
+	Printf ("EC: CPU_TURBO_OFF")
+}
+
+Method (_Q3E, 0, NotSerialized)			// Event: CPU_TURBO_ON
+{
+	Printf ("EC: CPU_TURBO_ON")
+}
+
+Method (_Q3F, 0, NotSerialized)			// Event: SHUTDOWN
+{
+	Printf ("EC: SHUTDOWN")
+}
+
+Method (_Q40, 0, NotSerialized)			// Event: AC and DC Power
+{
+	SMB2 = 0xC6
+}
+
+Method (_Q41, 0, NotSerialized)			// Event: Battery Charge between 0% and 20%
+{
+	SMB2 = 0xC7
+}
+
+Method (_Q42, 0, NotSerialized)			// Event: Battery Charge between 20% and 60%
+{
+	SMB2 = 0xC8
+}
+
+Method (_Q43, 0, NotSerialized)			// Event: Battery Charge between 60% and 100%
+{
+	SMB2 = 0xC9
+}
+
+Method (_Q44, 0, NotSerialized)			// Event: AC Power Only
+{
+	SMB2 = 0xCA
+}
+
+Method (_Q45, 0, NotSerialized)			// Event: SENSOR_T76
+{
+	SMB2 = 0xCB
+}
+
+Method (_Q48, 0, NotSerialized)			// Event: Fan Turbo On
+{
+	Printf ("EC: Fan Turbo On")
+}
+
+Method (_Q49, 0, NotSerialized)			// Event: Fan Turbo Off
+{
+	Printf ("EC: Fan Turbo Off")
+}
+
+Method (_Q54, 0, NotSerialized)			// Event: Power Button Press
+{
+	Printf ("EC: PWRBTN")
+}
+
+Method (_Q79, 0, NotSerialized)			// Event: USB Type-C
+{
+	Printf ("EC: USB Type-C")
+	UCEV()
+}
+
+Method (_Q80, 0, NotSerialized)			// Event: Volume Up
+{
+	Printf ("EC: VOLUME_UP")
+}
+
+Method (_Q81, 0, NotSerialized)			// Event: Volume Down
+{
+	Printf ("EC: VOLUME_DOWN")
+}
+
+Method (_Q85, 0, NotSerialized)			// Event: HOME
+{
+	Printf ("EC: HOME")
+}
+
+Method (_QD5, 0, NotSerialized)			// Event: 10 Second Power Button Pressed
+{
+	Notify (HIDD, 0xCE)
+}
+
+Method (_QD6, 0, NotSerialized)			// Event: 10 Second Power Button Released
+{
+	Notify (HIDD, 0xCF)
+}
+
+Method (_QF0, 0, NotSerialized)			// Event: Temperature Report
+{
+	Printf ("EC: Temperature Report")
+}
+
+Method (_QF1, 0, NotSerialized)			// Event: Temperature Trigger
+{
+	Printf ("EC: Temperature Trigger")
+}
+
+Method (_Q99, 0, NotSerialized)			// Event: Airplane Mode
+{
+	^^^^HIDD.HPEM (8)
+}