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>
This commit is contained in:
parent
7ce343d7a0
commit
a77c7ef758
|
@ -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
|
||||
|
|
|
@ -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(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(0x30), // Keyboard:
|
||||
FCLA, 8, // Fn Ctrl Reverse
|
||||
FLKE, 8, // Function Lock State
|
||||
TPLE, 8, // Trackpad State
|
||||
Offset(0x09),
|
||||
KLBE, 8, // Keyboard Backlight Brightness
|
||||
KLSE, 8, // Keyboard Backlight State
|
||||
|
||||
Offset (0x0c),
|
||||
TPLE, 8, // Trackpad State
|
||||
|
||||
Offset (0x0f),
|
||||
FLKE, 8, // Function Lock 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(0x40),
|
||||
SHIP, 8, // Shipping Mode Flag
|
||||
|
||||
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(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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
Method (_Q0C, 0, NotSerialized) // Event: Lid Opened or Closed
|
||||
{
|
||||
^^^^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
|
||||
{
|
||||
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)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue