summaryrefslogtreecommitdiffstats
path: root/src/ec/starlabs
diff options
context:
space:
mode:
authorSean Rhodes <sean@starlabs.systems>2023-04-14 21:04:27 +0100
committerFelix Held <felix-coreboot@felixheld.de>2023-08-10 14:01:55 +0000
commita77c7ef758a3d9e7d802ed343a833e36a1bea3f6 (patch)
tree8a71e225dbde07f045d6aa323a5bbd2784165e95 /src/ec/starlabs
parent7ce343d7a007f64f6bbf8d1d963cb5c4835e326e (diff)
downloadcoreboot-a77c7ef758a3d9e7d802ed343a833e36a1bea3f6.tar.gz
coreboot-a77c7ef758a3d9e7d802ed343a833e36a1bea3f6.tar.bz2
coreboot-a77c7ef758a3d9e7d802ed343a833e36a1bea3f6.zip
ec/starlabs/merlin: Update the merlin variant
Merlin was the name for the open-source variant of the EC. It ended up getting entirely rewritten to work with SDCC, and is currently being used on starbook/adl. The source code isn't available at the time of this commit due to some old ITE XLT code being used. Add the latest version of the code, replacing the old code, so the boards can be migrated over. Signed-off-by: Sean Rhodes <sean@starlabs.systems> Change-Id: Ib8384fc9322058297e8219ac8e483ac37a70bd33 Reviewed-on: https://review.coreboot.org/c/coreboot/+/74443 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Diffstat (limited to 'src/ec/starlabs')
-rw-r--r--src/ec/starlabs/merlin/variants/merlin/ecdefs.h21
-rw-r--r--src/ec/starlabs/merlin/variants/merlin/emem.asl142
-rw-r--r--src/ec/starlabs/merlin/variants/merlin/events.asl266
3 files changed, 39 insertions, 390 deletions
diff --git a/src/ec/starlabs/merlin/variants/merlin/ecdefs.h b/src/ec/starlabs/merlin/variants/merlin/ecdefs.h
index 08f80cb1f812..832f9c783604 100644
--- a/src/ec/starlabs/merlin/variants/merlin/ecdefs.h
+++ b/src/ec/starlabs/merlin/variants/merlin/ecdefs.h
@@ -1,5 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0-only */
+#include <assert.h>
+#include <stdint.h>
+
/*
* EC communication interface for ITE Embedded Controller
*/
@@ -11,15 +14,15 @@
#define ITE_CHIPID_VAL 0x5570
/* EC RAM offsets */
-#define ECRAM_FN_CTRL_REVERSE 0x30
-#define ECRAM_FN_LOCK_STATE 0x31
-#define ECRAM_TRACKPAD_STATE 0x32
-#define ECRAM_KBL_BRIGHTNESS 0x33
-#define ECRAM_KBL_STATE 0x34
-#define ECRAM_KBL_TIMEOUT 0x35
-#define ECRAM_FAN_MODE 0x50
-#define ECRAM_MAX_CHARGE 0x51
-#define ECRAM_FAST_CHARGE 0x52
+#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)
#define ECRAM_MIRROR_FLAG 0x05
#endif
diff --git a/src/ec/starlabs/merlin/variants/merlin/emem.asl b/src/ec/starlabs/merlin/variants/merlin/emem.asl
index 45958fe553a7..9539e09a54fa 100644
--- a/src/ec/starlabs/merlin/variants/merlin/emem.asl
+++ b/src/ec/starlabs/merlin/variants/merlin/emem.asl
@@ -3,79 +3,40 @@
OperationRegion (ECF2, EmbeddedControl, 0x00, 0x100)
Field (ECF2, ByteAcc, Lock, Preserve)
{
- Offset(0x00), // Versions:
- SKUI, 8, // SKU ID
- BDID, 8, // Board ID
+ Offset (0x00),
ECMV, 8, // Major Version Number
ECSV, 8, // Minor Version Number
- KBVS, 8, // Keyboard Controller Version
- ECTV, 8, // Test Version Number
+
+ Offset (0x04),
OSFG, 8, // OS Flag
+ FRMF, 8, // Mirror Flag
- Offset(0x10), // Build Time:
- 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(0x09),
+ KLBE, 8, // Keyboard Backlight Brightness
+ KLSE, 8, // Keyboard Backlight State
- Offset(0x20), // Build Date:
- 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 (0x0c),
+ TPLE, 8, // Trackpad State
- Offset(0x30), // Keyboard:
- FCLA, 8, // Fn Ctrl Reverse
+ Offset (0x0f),
FLKE, 8, // Function Lock State
- TPLE, 8, // Trackpad State
- KLBE, 8, // Keyboard Backlight Brightness
- KLSE, 8, // Keyboard Backlight State
KLTE, 8, // Keyboard Backlight Timeout
- Offset(0x40), // Flags:
- SHIP, 8, // Shipping Mode Flag
- CSFG, 8, // Modern Standby Flag
- KBCD, 8, // Rotate Flag
- WIFI, 8, // WiFi Enable
- AUDI, 8, // Control Audio
+ Offset(0x17),
+ FCLA, 8, // Fn Ctrl Reverse
- Offset(0x50), // Devices:
+ Offset(0x1a),
+ BFCP, 8, // Maximum Charge Level
FANM, 8, // Fan Mode
- BFCP, 8, // Battery Full Charge Percentage
-
- Offset(0x60), // Recovery:
- BSRC, 8, // BIOS Recover
- Offset(0x70), // Temperatures:
- TSE1, 8, // Sensor 1 Temperature
- TSE2, 8, // Sensor 2 Temperature
- TSE3, 8, // Sensor 3 Temperature
- SENF, 8, // Sensor F
- TSHT, 8, // Thermal Sensor High Trip Point
- TSLT, 8, // Thermal Sensor Low Trip Point
- THER, 8, // Thermal Source
- SURF, 8, // Chassis Surface Temperature
- CHAR, 8, // Charger Temperature
- CPUT, 8, // PECI CPU Temperature
- PMXT, 8, // PLMX Temperature
+ Offset(0x40),
+ SHIP, 8, // Shipping Mode Flag
- Offset(0x7f), // Lid:
+ Offset(0x7f),
LSTE, 1, // Lid Status
, 7, // Reserved
- Offset(0x80), // Battery:
+ Offset(0x80),
ECPS, 8, // AC & Battery status
B1MN, 8, // Battery Model Number Code
B1SN, 16, // Battery Serial Number
@@ -88,72 +49,7 @@ Field (ECF2, ByteAcc, Lock, Preserve)
B1RC, 16, // Battery Remaining Capacity
B1PV, 16, // Battery Present Voltage
BPRP, 8, // Battery Remaining percentage
- BATT, 16, // Battery Temperature
- BATC, 8, // Battery Temperature Ces
- Offset(0x9d), // OPM:
+ Offset(0x9d),
OPWE, 8, // OPM write to EC flag for UCSI
-
- Offset(0xb0), // MGO;
- 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), // CCI:
- 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), // MGI:
- 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), // Delays:
- ECWD, 16, // EC Wakeup Delay
- ECWE, 8, // EC Wakeup Enable
-
- Offset(0xf7), // Thunderbolt:
- 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/merlin/events.asl b/src/ec/starlabs/merlin/variants/merlin/events.asl
index 9835ef13baaf..acfb6befbe9c 100644
--- a/src/ec/starlabs/merlin/variants/merlin/events.asl
+++ b/src/ec/starlabs/merlin/variants/merlin/events.asl
@@ -1,18 +1,16 @@
/* SPDX-License-Identifier: GPL-2.0-only */
-Method (_Q0D) // Event: Lid Opened
+Method (_Q05, 0, NotSerialized) // Event: Backlight Brightness Down
{
- \LIDS = LSTE
- Notify (LID0, 0x80)
+ ^^^^HIDD.HPEM (20)
}
-Method (_Q0C) // Event: Lid Closed
+Method (_Q06, 0, NotSerialized) // Event: Backlight Brightness Up
{
- \LIDS = LSTE
- Notify (LID0, 0x80)
+ ^^^^HIDD.HPEM (19)
}
-Method (_Q0A) // Event: AC Power Connected
+Method (_Q0A, 0, NotSerialized) // Event: AC Power Connected
{
Notify (BAT0, 0x81)
Notify (ADP1, 0x80)
@@ -24,256 +22,8 @@ Method (_Q0B, 0, NotSerialized) // Event: AC Power Disconnected
Notify (BAT0, 0x80)
}
-Method (_Q05) // Event: Backlight Brightness Down
-{
- ^^^^HIDD.HPEM (20)
-}
-
-Method (_Q06) // Event: Backlight Brightness Up
-{
- ^^^^HIDD.HPEM (19)
-}
-
-Method (_Q87) // Event: Function Lock
-{
- Printf ("EC: Function Lock")
-}
-
-Method (_Q88) // Event: Trackpad Lock
-{
- Printf ("EC: Trackpad Lock")
-}
-Method (_Q11) // Event: Keyboard Backlight Brightness
-{
- Printf ("EC: Keyboard Brightness")
-}
-
-Method (_Q99) // Event: Airplane Mode
-{
- ^^^^HIDD.HPEM (8)
-}
-
-Method (_QD5) // Event: 10 Second Power Button Pressed
-{
- Printf ("EC: 10 Second Power Button Pressed")
-}
-
-Method (_QD6) // Event: 10 Second Power Button Released
-{
- Printf ("EC: 10 Second Power Button Release")
-}
-
-Method (_Q22, 0, NotSerialized) // Event: CHARGER_T
-{
- Printf ("EC: CHARGER_T")
-}
-
-Method (_Q40) // Event: AC_DC
-{
- SMB2 = 0xC6
-}
-
-Method (_Q41) // Event: DC_20_0
-{
- SMB2 = 0xC7
-}
-
-Method (_Q42) // Event: DC_60_20
+Method (_Q0C, 0, NotSerialized) // Event: Lid Opened or Closed
{
- SMB2 = 0xC9
-}
-
-Method (_Q43) // Event: DC_100_60
-{
- SMB2 = 0xC9
-}
-
-Method (_Q44) // Event: AC_ONLY
-{
- SMB2 = 0xCA
-}
-
-Method (_Q80, 0, NotSerialized) // Event: VOLUME_UP
-{
- Printf ("EC: VOLUME_UP")
-}
-
-Method (_Q81, 0, NotSerialized) // Event: VOLUME_DOWN
-{
- Printf ("EC: VOLUME_DOWN")
-}
-
-Method (_Q54, 0, NotSerialized) // Event: PWRBTN
-{
- Printf ("EC: PWRBTN")
-}
-
-Method (_QF0) // Event: Temperature Report
-{
- Printf ("EC: Temperature Report")
-}
-
-Method (_QF1) // Event: Temperature Trigger
-{
- // Notify (SEN3, 0x90)
-}
-
-/*
- * The below events are unique to this platform.
- */
-
-Method (_Q79, 0, NotSerialized) // Event: USB Type-C
-{
- Printf ("EC: USB Type-C")
- UCEV()
-}
-
-Method (_Q85, 0, NotSerialized) // Event: HOME
-{
- Printf ("EC: HOME")
-}
-
-Method (_Q01) // Event: F1 Hot Key
-{
- Printf ("EC: F1")
-}
-
-Method (_Q02) // Event: F2 Hot Key
-{
- Printf ("EC: F2")
-}
-
-Method (_Q03) // Event: F3 Hot Key
-{
- Printf ("EC: F3")
-}
-
-Method (_Q04) // Event: F4 Hot Key
-{
- Printf ("EC: F4")
-}
-
-Method (_Q08) // Event: F5 Hot Key
-{
- Printf ("EC: F5")
-}
-
-Method (_Q09) // Event: F6 Hot Key
-{
- Printf ("EC: F6")
-}
-
-Method (_Q07) // Event: F7 Hot Key
-{
- Printf ("EC: F7")
-}
-
-Method (_Q10) // Event: F10 Hot Key
-{
- Printf ("EC: F10")
-}
-
-Method (_Q12) // Event: F12 Hot Key
-{
- Printf ("EC: F6")
-}
-
-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 (_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 (_Q38, 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 (_Q45) // 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")
+ \LIDS = LSTE
+ Notify (LID0, 0x80)
}