summaryrefslogtreecommitdiffstats
path: root/src/ec/starlabs
diff options
context:
space:
mode:
authorSean Rhodes <sean@starlabs.systems>2022-10-11 17:01:22 +0100
committerFelix Held <felix-coreboot@felixheld.de>2022-12-19 14:12:11 +0000
commit836881935fe8c3679f11008553f562b9f620f94e (patch)
tree58fa76f8c0a476e8096b22c17194910670a28564 /src/ec/starlabs
parent6dc05a369e5dc8f098fe2cb8254d69066e06705b (diff)
downloadcoreboot-836881935fe8c3679f11008553f562b9f620f94e.tar.gz
coreboot-836881935fe8c3679f11008553f562b9f620f94e.tar.bz2
coreboot-836881935fe8c3679f11008553f562b9f620f94e.zip
ec/starlabs/merlin: Add EC related files for Cezanne laptops
Add EC memory layout and Q events for AMD Cezanne based boards, the "StarBook Mk VI" and "StarFighter Mk I", which both use the ITE 5570E. Change-Id: I87806b830b3d58a6ce3b89f45b5a07f4502a87f3 Signed-off-by: Sean Rhodes <sean@starlabs.systems> Reviewed-on: https://review.coreboot.org/c/coreboot/+/68333 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/ec/starlabs')
-rw-r--r--src/ec/starlabs/merlin/variants/cezanne/ecdefs.h28
-rw-r--r--src/ec/starlabs/merlin/variants/cezanne/emem.asl149
-rw-r--r--src/ec/starlabs/merlin/variants/cezanne/events.asl258
3 files changed, 435 insertions, 0 deletions
diff --git a/src/ec/starlabs/merlin/variants/cezanne/ecdefs.h b/src/ec/starlabs/merlin/variants/cezanne/ecdefs.h
new file mode 100644
index 000000000000..0c522cc845f6
--- /dev/null
+++ b/src/ec/starlabs/merlin/variants/cezanne/ecdefs.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <assert.h>
+#include <stdint.h>
+
+/*
+ * EC communication interface for ITE Embedded Controller
+ */
+
+#ifndef _EC_STARLABS_CEZANNE_EC_DEFS_H
+#define _EC_STARLABS_CEZANNE_EC_DEFS_H
+
+/* IT5570 chip ID byte values */
+#define ITE_CHIPID_VAL 0x5570
+
+/* EC RAM offsets */
+#define ECRAM_TRACKPAD_STATE 0x14
+#define ECRAM_FN_CTRL_REVERSE 0x1a
+#define ECRAM_MAX_CHARGE 0x31
+#define ECRAM_FAN_MODE 0x32
+#define ECRAM_KBL_TIMEOUT 0x34
+#define ECRAM_KBL_STATE 0x35
+#define ECRAM_KBL_BRIGHTNESS 0x36
+#define ECRAM_FN_LOCK_STATE 0x70
+#define ECRAM_FAST_CHARGE dead_code_t(uint8_t)
+#define ECRAM_MIRROR_FLAG 0x05
+
+#endif
diff --git a/src/ec/starlabs/merlin/variants/cezanne/emem.asl b/src/ec/starlabs/merlin/variants/cezanne/emem.asl
new file mode 100644
index 000000000000..0b3a95e4993a
--- /dev/null
+++ b/src/ec/starlabs/merlin/variants/cezanne/emem.asl
@@ -0,0 +1,149 @@
+/* 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
+ PDMV, 8, // PD Major Version
+ PDSV, 8, // PD Minor Version
+
+ Offset(0x0a),
+ CPUT, 8, // CPU Temperature
+
+ Offset(0x13),
+ AUDI, 8, // Control Audio
+ TPLE, 8, // Trackpad State
+ PSTC, 8, // Current P State
+ PSTL, 8, // Last P State
+ FNFT, 8, // Fan Fault
+
+ Offset(0x1a),
+ FCLA, 8, // Fn Ctrl Reverse
+
+ Offset(0x20),
+ WIFI, 8, // WIFI Enable
+
+ Offset(0x30),
+ KLMT, 8, // Keyboard Matrix
+ BFCP, 8, // Battery Full Charge Percentage
+ FANM, 8, // Fan Mode
+
+ Offset(0x34),
+ KLTE, 8, // Keyboard Backlight Timeout
+ KLSE, 8, // Keyboard Backlight State
+ KLBE, 8, // Keyboard Backlight Brightness
+
+ Offset(0x40),
+ SHIP, 8, // Shipping Mode Flag
+ LIDF, 8, // Lid FLag
+ STCD, 8, // Shutdown Code
+ SSDT, 8, // SSD Type
+ S0I3, 8, // S0I3 Mode
+ CPUF, 8, // CPU Family
+ CPUM, 8, // CPU Model
+ CPUS, 8, // CPU Stepping
+
+ Offset(0x50),
+ OEMM, 8, // OEM Charger Mode
+ OEMF, 8, // OEM Charger Mode F
+
+ Offset(0x70),
+ FLKE, 8, // Function Lock State
+
+ Offset(0x74),
+ P0MV, 8, // PD Port 0 Major Version
+ P0SV, 8, // PD Port 0 Minor Version
+ P1MV, 8, // PD Port 1 Major Version
+ P1SV, 8, // PD Port 1 Minor Version
+ USMA, 8, // USCI Major Revision
+ USMI, 8, // USCI Minor Revision
+ USRV, 8, // USCI Revision Version
+
+ 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(0xb0),
+ 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(0xc0),
+ 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(0xd0),
+ 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(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/cezanne/events.asl b/src/ec/starlabs/merlin/variants/cezanne/events.asl
new file mode 100644
index 000000000000..3fd297f59eae
--- /dev/null
+++ b/src/ec/starlabs/merlin/variants/cezanne/events.asl
@@ -0,0 +1,258 @@
+/* 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 (_Q05, 0, NotSerialized) // Event: F5 Hot Key
+{
+ Printf ("EC: F5")
+}
+
+Method (_Q06, 0, NotSerialized) // Event: F6 Hot Key
+{
+ Printf ("EC: F6")
+}
+
+Method (_Q07, 0, NotSerialized) // Event: F7 Hot Key
+{
+ Printf ("EC: F7")
+}
+
+Method (_Q08, 0, NotSerialized) // Event: Backlight Brightness Down
+{
+ ^^^^HIDD.HPEM (20)
+}
+
+Method (_Q09, 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: F12")
+}
+
+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 (_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 (_Q87, 0, NotSerialized) // Event: Function Lock
+{
+ Printf ("EC: Function Lock")
+}
+
+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
+{
+ // Notify (SEN3, 0x90)
+}
+
+Method (_Q99, 0, NotSerialized) // Event: Airplane Mode
+{
+ ^^^^HIDD.HPEM (8)
+}