diff options
-rw-r--r-- | src/ec/purism/librem-ec/Makefile.inc | 4 | ||||
-rw-r--r-- | src/ec/purism/librem-ec/librem_ec.c | 61 |
2 files changed, 2 insertions, 63 deletions
diff --git a/src/ec/purism/librem-ec/Makefile.inc b/src/ec/purism/librem-ec/Makefile.inc index c3b66196d6..a3d55532df 100644 --- a/src/ec/purism/librem-ec/Makefile.inc +++ b/src/ec/purism/librem-ec/Makefile.inc @@ -1,6 +1,6 @@ ifeq ($(CONFIG_EC_LIBREM_EC),y) -all-y += librem_ec.c -smm-$(CONFIG_DEBUG_SMI) += librem_ec.c +all-y += ../../system76/ec/system76_ec.c +smm-$(CONFIG_DEBUG_SMI) += ../../system76/ec/system76_ec.c endif diff --git a/src/ec/purism/librem-ec/librem_ec.c b/src/ec/purism/librem-ec/librem_ec.c deleted file mode 100644 index 6615f83ef6..0000000000 --- a/src/ec/purism/librem-ec/librem_ec.c +++ /dev/null @@ -1,61 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ - -#include <arch/io.h> -#include <console/system76_ec.h> -#include <timer.h> - -// This is the command region for Librem EC firmware. It must be -// enabled for LPC in the mainboard. -#define LIBREM_EC_BASE 0x0E00 -#define LIBREM_EC_SIZE 256 - -#define REG_CMD 0 -#define REG_RESULT 1 - -// When command register is 0, command is complete -#define CMD_FINISHED 0 - -// Print command. Registers are unique for each command -#define CMD_PRINT 4 -#define CMD_PRINT_REG_FLAGS 2 -#define CMD_PRINT_REG_LEN 3 -#define CMD_PRINT_REG_DATA 4 - -static inline uint8_t system76_ec_read(uint8_t addr) -{ - return inb(LIBREM_EC_BASE + (uint16_t)addr); -} - -static inline void system76_ec_write(uint8_t addr, uint8_t data) -{ - outb(data, LIBREM_EC_BASE + (uint16_t)addr); -} - -void system76_ec_init(void) -{ - // Clear entire command region - for (int i = 0; i < LIBREM_EC_SIZE; i++) - system76_ec_write((uint8_t)i, 0); -} - -void system76_ec_flush(void) -{ - system76_ec_write(REG_CMD, CMD_PRINT); - - // Wait for command completion, for up to 10 milliseconds, with a - // test period of 1 microsecond - wait_us(10000, system76_ec_read(REG_CMD) == CMD_FINISHED); - - system76_ec_write(CMD_PRINT_REG_LEN, 0); -} - -void system76_ec_print(uint8_t byte) -{ - uint8_t len = system76_ec_read(CMD_PRINT_REG_LEN); - system76_ec_write(CMD_PRINT_REG_DATA + len, byte); - system76_ec_write(CMD_PRINT_REG_LEN, len + 1); - - // If we hit the end of the buffer, or were given a newline, flush - if (byte == '\n' || len >= (LIBREM_EC_SIZE - CMD_PRINT_REG_DATA)) - system76_ec_flush(); -} |