From a73408d608d963c989debc08953672b0e03a7fdb Mon Sep 17 00:00:00 2001 From: Naveen Krishna Chatradhi Date: Wed, 8 Jul 2015 14:23:06 +0530 Subject: [PATCH] console: Add UART8250MEM 32bit support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch adds UART8250MEM_32 feature flag to support UART8250 compatible with 32bit access in memory mapped mode. [pg: rebuilt to reuse the existing UART8250 8bit access driver which reduces code duplication.] Change-Id: I310e70dfab81dcca575e9931e0ccf93af70efa40 Signed-off-by: Patrick Georgi Original-Commit-Id: 0c3b2c628b854e8334540ff5158c2587dbfabf95 Original-Change-Id: I07ee256f25e48480372af9a9255bf487c331e51d Original-Signed-off-by: Rishavnath Satapathy Original-Signed-off-by: Naveen Krishna Chatradhi Original-Reviewed-on: https://chromium-review.googlesource.com/271759 Original-Reviewed-by: Aaron Durbin Original-Tested-by: Wenkai Du Original-Commit-Queue: Wenkai Du Reviewed-on: http://review.coreboot.org/10998 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer Reviewed-by: Kyösti Mälkki Reviewed-by: Paul Menzel --- src/drivers/uart/Kconfig | 5 +++++ src/drivers/uart/uart8250mem.c | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/drivers/uart/Kconfig b/src/drivers/uart/Kconfig index fef745e418..cbfd47954a 100644 --- a/src/drivers/uart/Kconfig +++ b/src/drivers/uart/Kconfig @@ -17,6 +17,11 @@ config DRIVERS_UART_8250MEM bool default n +config DRIVERS_UART_8250MEM_32 + bool + default n + depends on DRIVERS_UART_8250MEM + config HAVE_UART_SPECIAL bool default n diff --git a/src/drivers/uart/uart8250mem.c b/src/drivers/uart/uart8250mem.c index 2f341f2d6e..d276fd0410 100644 --- a/src/drivers/uart/uart8250mem.c +++ b/src/drivers/uart/uart8250mem.c @@ -34,6 +34,17 @@ #define SINGLE_CHAR_TIMEOUT (50 * 1000) #define FIFO_TIMEOUT (16 * SINGLE_CHAR_TIMEOUT) +#if IS_ENABLED(CONFIG_DRIVERS_UART_8250MEM_32) +static uint8_t uart8250_read(void *base, uint8_t reg) +{ + return read32(base + 4 * reg) & 0xff; +} + +static void uart8250_write(void *base, uint8_t reg, uint8_t data) +{ + write32(base + 4 * reg, data); +} +#else static uint8_t uart8250_read(void *base, uint8_t reg) { return read8(base + reg); @@ -43,6 +54,7 @@ static void uart8250_write(void *base, uint8_t reg, uint8_t data) { write8(base + reg, data); } +#endif static int uart8250_mem_can_tx_byte(void *base) {