diff options
author | Konstantin Porotchkin <kostap@marvell.com> | 2018-11-14 17:15:08 +0200 |
---|---|---|
committer | Konstantin Porotchkin <kostap@marvell.com> | 2018-11-15 13:42:45 +0200 |
commit | d7c4420cb8a745bf61c1de0df8858526002e16b0 (patch) | |
tree | 34c99fa20fa8a1b720c1263df6691dc5a45de365 /include | |
parent | 076374c9b97d47b10ba5c6034817866c08d66ed4 (diff) |
plat/marvell: Migrate to multi-console API
Migrate Marvell platforms from legacy console API to
multi-console API.
Change-Id: I647f5f49148b463a257a747af05b5f0c967f267c
Signed-off-by: Konstantin Porotchkin <kostap@marvell.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/drivers/marvell/uart/a3700_console.h | 79 | ||||
-rw-r--r-- | include/plat/marvell/a3700/common/plat_marvell.h | 6 | ||||
-rw-r--r-- | include/plat/marvell/a8k/common/plat_marvell.h | 6 |
3 files changed, 91 insertions, 0 deletions
diff --git a/include/drivers/marvell/uart/a3700_console.h b/include/drivers/marvell/uart/a3700_console.h new file mode 100644 index 00000000..01335a2a --- /dev/null +++ b/include/drivers/marvell/uart/a3700_console.h @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2016 Marvell International Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + * https://spdx.org/licenses + */ + +#ifndef A3700_CONSOLE_H +#define A3700_CONSOLE_H + +#include <console.h> + +/* MVEBU UART Registers */ +#define UART_RX_REG 0x00 +#define UART_TX_REG 0x04 +#define UART_CTRL_REG 0x08 +#define UART_STATUS_REG 0x0c +#define UART_BAUD_REG 0x10 +#define UART_POSSR_REG 0x14 + +/* FIFO Control Register bits */ +#define UARTFCR_FIFOMD_16450 (0 << 6) +#define UARTFCR_FIFOMD_16550 (1 << 6) +#define UARTFCR_RXTRIG_1 (0 << 6) +#define UARTFCR_RXTRIG_4 (1 << 6) +#define UARTFCR_RXTRIG_8 (2 << 6) +#define UARTFCR_RXTRIG_16 (3 << 6) +#define UARTFCR_TXTRIG_1 (0 << 4) +#define UARTFCR_TXTRIG_4 (1 << 4) +#define UARTFCR_TXTRIG_8 (2 << 4) +#define UARTFCR_TXTRIG_16 (3 << 4) +#define UARTFCR_DMAEN (1 << 3) /* Enable DMA mode */ +#define UARTFCR_TXCLR (1 << 2) /* Clear contents of Tx FIFO */ +#define UARTFCR_RXCLR (1 << 1) /* Clear contents of Rx FIFO */ +#define UARTFCR_FIFOEN (1 << 0) /* Enable the Tx/Rx FIFO */ + +/* Line Control Register bits */ +#define UARTLCR_DLAB (1 << 7) /* Divisor Latch Access */ +#define UARTLCR_SETB (1 << 6) /* Set BREAK Condition */ +#define UARTLCR_SETP (1 << 5) /* Set Parity to LCR[4] */ +#define UARTLCR_EVEN (1 << 4) /* Even Parity Format */ +#define UARTLCR_PAR (1 << 3) /* Parity */ +#define UARTLCR_STOP (1 << 2) /* Stop Bit */ +#define UARTLCR_WORDSZ_5 0 /* Word Length of 5 */ +#define UARTLCR_WORDSZ_6 1 /* Word Length of 6 */ +#define UARTLCR_WORDSZ_7 2 /* Word Length of 7 */ +#define UARTLCR_WORDSZ_8 3 /* Word Length of 8 */ + +/* Line Status Register bits */ +#define UARTLSR_TXFIFOFULL (1 << 11) /* Tx Fifo Full */ + +/* UART Control Register bits */ +#define UART_CTRL_RXFIFO_RESET (1 << 14) +#define UART_CTRL_TXFIFO_RESET (1 << 15) +#define UARTLSR_TXFIFOEMPTY (1 << 6) + +#define CONSOLE_T_A3700_BASE CONSOLE_T_DRVDATA + +#ifndef __ASSEMBLY__ + +#include <stdint.h> + +typedef struct { + console_t console; + uintptr_t base; +} console_a3700_t; + +/* + * Initialize a new a3700 console instance and register it with the console + * framework. The |console| pointer must point to storage that will be valid + * for the lifetime of the console, such as a global or static local variable. + * Its contents will be reinitialized from scratch. + */ +int console_a3700_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud, + console_a3700_t *console); + +#endif /*__ASSEMBLY__*/ + +#endif /* A3700_CONSOLE_H */ diff --git a/include/plat/marvell/a3700/common/plat_marvell.h b/include/plat/marvell/a3700/common/plat_marvell.h index 8c289e98..01e42c54 100644 --- a/include/plat/marvell/a3700/common/plat_marvell.h +++ b/include/plat/marvell/a3700/common/plat_marvell.h @@ -39,6 +39,12 @@ void marvell_setup_page_tables(uintptr_t total_base, #endif ); +/* Console utility functions */ +void marvell_console_boot_init(void); +void marvell_console_boot_end(void); +void marvell_console_runtime_init(void); +void marvell_console_runtime_end(void); + /* IO storage utility functions */ void marvell_io_setup(void); diff --git a/include/plat/marvell/a8k/common/plat_marvell.h b/include/plat/marvell/a8k/common/plat_marvell.h index f062491f..037548da 100644 --- a/include/plat/marvell/a8k/common/plat_marvell.h +++ b/include/plat/marvell/a8k/common/plat_marvell.h @@ -48,6 +48,12 @@ void marvell_setup_page_tables(uintptr_t total_base, #endif ); +/* Console utility functions */ +void marvell_console_boot_init(void); +void marvell_console_boot_end(void); +void marvell_console_runtime_init(void); +void marvell_console_runtime_end(void); + /* IO storage utility functions */ void marvell_io_setup(void); |