Sync changes from upstream PRs
Change-Id: If65cd6262ab625047edb8d242d00f520e4ff8d14
This commit is contained in:
12
MAINTAINERS
12
MAINTAINERS
@@ -378,6 +378,13 @@ F: src/mainboard/siemens/mc_apl1/
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SYSTEM76 MAINBOARDS
|
||||||
|
M: Jeremy Soller <jeremy@system76.com>
|
||||||
|
S: Maintained
|
||||||
|
F: src/mainboard/system76/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SUPERMICRO X10SLM+-F MAINBOARD
|
SUPERMICRO X10SLM+-F MAINBOARD
|
||||||
M: Tristan Corrick <tristan@corrick.kiwi>
|
M: Tristan Corrick <tristan@corrick.kiwi>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@@ -438,6 +445,11 @@ M: Alexander Couzens <lynxis@fe80.eu>
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: src/ec/lenovo/
|
F: src/ec/lenovo/
|
||||||
|
|
||||||
|
SYSTEM76 EC
|
||||||
|
M: Jeremy Soller <jeremy@system76.com>
|
||||||
|
S: Maintained
|
||||||
|
F: src/ec/system76/
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Northbridges
|
# Northbridges
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@@ -2,3 +2,8 @@ config EC_SYSTEM76_EC
|
|||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
System76 EC
|
System76 EC
|
||||||
|
|
||||||
|
config EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||||
|
depends on EC_SYSTEM76_EC
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
@@ -1,10 +1,6 @@
|
|||||||
ifeq ($(CONFIG_EC_SYSTEM76_EC),y)
|
ifeq ($(CONFIG_EC_SYSTEM76_EC),y)
|
||||||
|
|
||||||
bootblock-y += system76_ec.c
|
all-y += system76_ec.c
|
||||||
verstage-y += system76_ec.c
|
|
||||||
romstage-y += system76_ec.c
|
|
||||||
postcar-y += system76_ec.c
|
|
||||||
ramstage-y += system76_ec.c
|
|
||||||
smm-$(CONFIG_DEBUG_SMI) += system76_ec.c
|
smm-$(CONFIG_DEBUG_SMI) += system76_ec.c
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@@ -14,9 +14,9 @@ Device (S76D) {
|
|||||||
Debug = "S76D: RSET"
|
Debug = "S76D: RSET"
|
||||||
SAPL(0)
|
SAPL(0)
|
||||||
SKBL(0)
|
SKBL(0)
|
||||||
#if EC_COLOR_KEYBOARD
|
#if CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||||
SKBC(0xFFFFFF)
|
SKBC(0xFFFFFF)
|
||||||
#endif
|
#endif // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||||
}
|
}
|
||||||
|
|
||||||
Method (INIT, 0, Serialized) {
|
Method (INIT, 0, Serialized) {
|
||||||
@@ -64,7 +64,7 @@ Device (S76D) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if EC_COLOR_KEYBOARD
|
#if CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||||
// Set KB LED Brightness
|
// Set KB LED Brightness
|
||||||
Method (SKBL, 1, Serialized) {
|
Method (SKBL, 1, Serialized) {
|
||||||
If (^^PCI0.LPCB.EC0.ECOK) {
|
If (^^PCI0.LPCB.EC0.ECOK) {
|
||||||
@@ -89,7 +89,7 @@ Device (S76D) {
|
|||||||
Return (0)
|
Return (0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||||
// Get KB LED
|
// Get KB LED
|
||||||
Method (GKBL, 0, Serialized) {
|
Method (GKBL, 0, Serialized) {
|
||||||
Local0 = 0
|
Local0 = 0
|
||||||
@@ -110,5 +110,5 @@ Device (S76D) {
|
|||||||
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
^^PCI0.LPCB.EC0.FCMD = 0xCA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif // CONFIG(EC_SYSTEM76_EC_COLOR_KEYBOARD)
|
||||||
}
|
}
|
||||||
|
@@ -1,49 +1,50 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include <console/system76_ec.h>
|
#include <console/system76_ec.h>
|
||||||
#include <delay.h>
|
#include <timer.h>
|
||||||
|
|
||||||
#define SYSTEM76_EC_BASE 0x0E00
|
#define SYSTEM76_EC_BASE 0x0E00
|
||||||
|
|
||||||
static inline uint8_t system76_ec_read(uint8_t addr) {
|
static inline uint8_t system76_ec_read(uint8_t addr)
|
||||||
return inb(SYSTEM76_EC_BASE + (uint16_t)addr);
|
{
|
||||||
|
return inb(SYSTEM76_EC_BASE + (uint16_t)addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void system76_ec_write(uint8_t addr, uint8_t data) {
|
static inline void system76_ec_write(uint8_t addr, uint8_t data)
|
||||||
outb(data, SYSTEM76_EC_BASE + (uint16_t)addr);
|
{
|
||||||
|
outb(data, SYSTEM76_EC_BASE + (uint16_t)addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void system76_ec_init(void) {
|
void system76_ec_init(void)
|
||||||
// Clear entire command region
|
{
|
||||||
for (int i = 0; i < 256; i++) {
|
// Clear entire command region
|
||||||
system76_ec_write((uint8_t)i, 0);
|
for (int i = 0; i < 256; i++)
|
||||||
}
|
system76_ec_write((uint8_t)i, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void system76_ec_flush(void) {
|
void system76_ec_flush(void)
|
||||||
// Send command
|
{
|
||||||
system76_ec_write(0, 4);
|
// Send command
|
||||||
|
system76_ec_write(0, 4);
|
||||||
|
|
||||||
// Wait for command completion, for up to 10 milliseconds
|
// Wait for command completion, for up to 10 milliseconds
|
||||||
int timeout;
|
wait_us(10000, system76_ec_read(0) == 0);
|
||||||
for (timeout = 10000; timeout > 0; timeout--) {
|
|
||||||
if (system76_ec_read(0) == 0) break;
|
|
||||||
udelay(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear length
|
// Clear length
|
||||||
system76_ec_write(3, 0);
|
system76_ec_write(3, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void system76_ec_print(uint8_t byte) {
|
void system76_ec_print(uint8_t byte)
|
||||||
// Read length
|
{
|
||||||
uint8_t len = system76_ec_read(3);
|
// Read length
|
||||||
// Write data at offset
|
uint8_t len = system76_ec_read(3);
|
||||||
system76_ec_write(len + 4, byte);
|
// Write data at offset
|
||||||
// Update length
|
system76_ec_write(len + 4, byte);
|
||||||
system76_ec_write(3, len + 1);
|
// Update length
|
||||||
|
system76_ec_write(3, len + 1);
|
||||||
|
|
||||||
// If we hit the end of the buffer, or were given a newline, flush
|
// If we hit the end of the buffer, or were given a newline, flush
|
||||||
if (byte == '\n' || len >= 128) {
|
if (byte == '\n' || len >= 128)
|
||||||
system76_ec_flush();
|
system76_ec_flush();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -9,17 +9,21 @@ void system76_ec_flush(void);
|
|||||||
void system76_ec_print(uint8_t byte);
|
void system76_ec_print(uint8_t byte);
|
||||||
|
|
||||||
#define __CONSOLE_SYSTEM76_EC_ENABLE__ (CONFIG(CONSOLE_SYSTEM76_EC) && \
|
#define __CONSOLE_SYSTEM76_EC_ENABLE__ (CONFIG(CONSOLE_SYSTEM76_EC) && \
|
||||||
(ENV_BOOTBLOCK || ENV_ROMSTAGE || ENV_RAMSTAGE || ENV_SEPARATE_VERSTAGE \
|
(ENV_BOOTBLOCK || ENV_ROMSTAGE || ENV_RAMSTAGE \
|
||||||
|| ENV_POSTCAR || (ENV_SMM && CONFIG(DEBUG_SMI))))
|
|| ENV_SEPARATE_VERSTAGE || ENV_POSTCAR \
|
||||||
|
|| (ENV_SMM && CONFIG(DEBUG_SMI))))
|
||||||
|
|
||||||
#if __CONSOLE_SYSTEM76_EC_ENABLE__
|
#if __CONSOLE_SYSTEM76_EC_ENABLE__
|
||||||
static inline void __system76_ec_init(void) {
|
static inline void __system76_ec_init(void)
|
||||||
system76_ec_init();
|
{
|
||||||
|
system76_ec_init();
|
||||||
}
|
}
|
||||||
static inline void __system76_ec_tx_flush(void) {
|
static inline void __system76_ec_tx_flush(void)
|
||||||
system76_ec_flush();
|
{
|
||||||
|
system76_ec_flush();
|
||||||
}
|
}
|
||||||
static inline void __system76_ec_tx_byte(unsigned char byte) {
|
static inline void __system76_ec_tx_byte(unsigned char byte)
|
||||||
|
{
|
||||||
system76_ec_print(byte);
|
system76_ec_print(byte);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@@ -7,6 +7,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select DRIVERS_I2C_TAS5825M
|
select DRIVERS_I2C_TAS5825M
|
||||||
select DRIVERS_SYSTEM76_DGPU
|
select DRIVERS_SYSTEM76_DGPU
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
|
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_SMI_HANDLER
|
select HAVE_SMI_HANDLER
|
||||||
|
@@ -5,6 +5,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select BOARD_ROMSIZE_KB_16384
|
select BOARD_ROMSIZE_KB_16384
|
||||||
select DRIVERS_I2C_HID
|
select DRIVERS_I2C_HID
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
|
select EC_SYSTEM76_EC_COLOR_KEYBOARD if BOARD_SYSTEM76_DARP6
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_CMOS_DEFAULT
|
select HAVE_CMOS_DEFAULT
|
||||||
|
@@ -6,6 +6,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select DRIVERS_I2C_HID
|
select DRIVERS_I2C_HID
|
||||||
select DRIVERS_SYSTEM76_DGPU
|
select DRIVERS_SYSTEM76_DGPU
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
|
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_SMI_HANDLER
|
select HAVE_SMI_HANDLER
|
||||||
|
@@ -6,6 +6,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select DRIVERS_I2C_HID
|
select DRIVERS_I2C_HID
|
||||||
select DRIVERS_SYSTEM76_DGPU
|
select DRIVERS_SYSTEM76_DGPU
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
|
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_SMI_HANDLER
|
select HAVE_SMI_HANDLER
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
chip soc/intel/cannonlake
|
chip soc/intel/cannonlake
|
||||||
# Lock Down
|
|
||||||
register "common_soc_config" = "{
|
register "common_soc_config" = "{
|
||||||
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
.chipset_lockdown = CHIPSET_LOCKDOWN_COREBOOT,
|
||||||
|
/* Touchpad */
|
||||||
.i2c[0] = {
|
.i2c[0] = {
|
||||||
.speed = I2C_SPEED_FAST,
|
.speed = I2C_SPEED_FAST,
|
||||||
.rise_time_ns = 80,
|
.rise_time_ns = 80,
|
||||||
@@ -13,7 +13,7 @@ chip soc/intel/cannonlake
|
|||||||
register "SendVrMbxCmd" = "2"
|
register "SendVrMbxCmd" = "2"
|
||||||
|
|
||||||
# ACPI (soc/intel/cannonlake/acpi.c)
|
# ACPI (soc/intel/cannonlake/acpi.c)
|
||||||
# Enable s0ix
|
# Disable s0ix
|
||||||
register "s0ix_enable" = "0"
|
register "s0ix_enable" = "0"
|
||||||
|
|
||||||
# PM Timer Enabled
|
# PM Timer Enabled
|
||||||
@@ -42,18 +42,8 @@ chip soc/intel/cannonlake
|
|||||||
# FSP Silicon (soc/intel/cannonlake/fsp_params.c)
|
# FSP Silicon (soc/intel/cannonlake/fsp_params.c)
|
||||||
# Serial I/O
|
# Serial I/O
|
||||||
register "SerialIoDevMode" = "{
|
register "SerialIoDevMode" = "{
|
||||||
[PchSerialIoIndexI2C0] = PchSerialIoPci,
|
[PchSerialIoIndexI2C0] = PchSerialIoPci, // Touchpad
|
||||||
[PchSerialIoIndexI2C1] = PchSerialIoDisabled,
|
[PchSerialIoIndexUART2] = PchSerialIoSkipInit, // LPSS UART
|
||||||
[PchSerialIoIndexI2C2] = PchSerialIoPci,
|
|
||||||
[PchSerialIoIndexI2C3] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexI2C4] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexI2C5] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexSPI0] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexSPI1] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexSPI2] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexUART0] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexUART1] = PchSerialIoDisabled,
|
|
||||||
[PchSerialIoIndexUART2] = PchSerialIoPci,
|
|
||||||
}"
|
}"
|
||||||
|
|
||||||
# SATA
|
# SATA
|
||||||
@@ -166,9 +156,6 @@ chip soc/intel/cannonlake
|
|||||||
# Thermal
|
# Thermal
|
||||||
register "tcc_offset" = "12"
|
register "tcc_offset" = "12"
|
||||||
|
|
||||||
# Serial IRQ Continuous
|
|
||||||
register "serirq_mode" = "SERIRQ_CONTINUOUS"
|
|
||||||
|
|
||||||
# Graphics (soc/intel/cannonlake/graphics.c)
|
# Graphics (soc/intel/cannonlake/graphics.c)
|
||||||
register "gfx" = "GMA_STATIC_DISPLAYS(0)"
|
register "gfx" = "GMA_STATIC_DISPLAYS(0)"
|
||||||
|
|
||||||
@@ -183,14 +170,6 @@ chip soc/intel/cannonlake
|
|||||||
# Address 0x90: Decode 0xF00 - 0xFFF (AP/EC debug)
|
# Address 0x90: Decode 0xF00 - 0xFFF (AP/EC debug)
|
||||||
register "gen4_dec" = "0x00fc0F01"
|
register "gen4_dec" = "0x00fc0F01"
|
||||||
|
|
||||||
# PMC (soc/intel/cannonlake/pmc.c)
|
|
||||||
# Enable deep Sx states
|
|
||||||
register "deep_s3_enable_ac" = "0"
|
|
||||||
register "deep_s3_enable_dc" = "0"
|
|
||||||
register "deep_s5_enable_ac" = "0"
|
|
||||||
register "deep_s5_enable_dc" = "0"
|
|
||||||
register "deep_sx_config" = "0"
|
|
||||||
|
|
||||||
# PM Util (soc/intel/cannonlake/pmutil.c)
|
# PM Util (soc/intel/cannonlake/pmutil.c)
|
||||||
# GPE configuration
|
# GPE configuration
|
||||||
# Note that GPE events called out in ASL code rely on this
|
# Note that GPE events called out in ASL code rely on this
|
||||||
|
@@ -140,7 +140,7 @@ static const struct pad_config gpio_table[] = {
|
|||||||
|
|
||||||
// CPU Misc
|
// CPU Misc
|
||||||
// GPP_B3 (touchpad interrupt)
|
// GPP_B3 (touchpad interrupt)
|
||||||
PAD_CFG_GPI_APIC(GPP_B3, NONE, PLTRST, EDGE_SINGLE, INVERT),
|
PAD_CFG_GPI_APIC_EDGE_LOW(GPP_B3, NONE, PLTRST),
|
||||||
// NC
|
// NC
|
||||||
PAD_CFG_NC(GPP_B4),
|
PAD_CFG_NC(GPP_B4),
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select DRIVERS_I2C_TAS5825M
|
select DRIVERS_I2C_TAS5825M
|
||||||
select DRIVERS_SYSTEM76_DGPU
|
select DRIVERS_SYSTEM76_DGPU
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
|
select EC_SYSTEM76_EC_COLOR_KEYBOARD
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_SMI_HANDLER
|
select HAVE_SMI_HANDLER
|
||||||
|
@@ -5,6 +5,7 @@ config BOARD_SPECIFIC_OPTIONS
|
|||||||
select BOARD_ROMSIZE_KB_16384
|
select BOARD_ROMSIZE_KB_16384
|
||||||
select DRIVERS_I2C_HID
|
select DRIVERS_I2C_HID
|
||||||
select EC_SYSTEM76_EC
|
select EC_SYSTEM76_EC
|
||||||
|
select EC_SYSTEM76_EC_COLOR_KEYBOARD if BOARD_SYSTEM76_DARP5
|
||||||
select HAVE_ACPI_RESUME
|
select HAVE_ACPI_RESUME
|
||||||
select HAVE_ACPI_TABLES
|
select HAVE_ACPI_TABLES
|
||||||
select HAVE_CMOS_DEFAULT
|
select HAVE_CMOS_DEFAULT
|
||||||
|
Reference in New Issue
Block a user