/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (C) 2014-2017 Amlogic, Inc. All rights reserved. * * All information contained herein is Amlogic confidential. * * This software is provided to you pursuant to Software License Agreement * (SLA) with Amlogic Inc ("Amlogic"). This software may be used * only in accordance with the terms of this agreement. * * Redistribution and use in source and binary forms, with or without * modification is strictly prohibited without prior written permission from * Amlogic. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "platform_def.h" #include "regs.h" #ifndef __SERIAL_H__ #define __SERIAL_H__ #ifndef BIT #define BIT(nr) (1 << nr) #endif #define UART_WFIFO (0 << 2) #define UART_RFIFO BIT(2) #define UART_CONTROL (2 << 2) #define UART_STATUS (3 << 2) #define UART_MISC (4 << 2) #define UART_WFIFO (0 << 2) #define UART_RFIFO BIT(2) #define UART_MODE (2 << 2) #define UART_STATUS (3 << 2) #define UART_IRQCTL (4 << 2) #define UART_CTRL (5 << 2) #define UART_PORT_CONS REG_MDUMP_UART_WFIFO #define P_UART(uart_base, reg) (uart_base + reg) #define P_UART_WFIFO(uart_base) P_UART(uart_base, UART_WFIFO) #define P_UART_RFIFO(uart_base) P_UART(uart_base, UART_RFIFO) #define P_UART_CONTROL(uart_base) P_UART(uart_base, UART_CONTROL) #define P_UART_MISC(uart_base) P_UART(uart_base, UART_MISC) #define UART_STAT_MASK_RFIFO_CNT (0x3f << 0) #define UART_STAT_MASK_TFIFO_CNT (0x3f << 8) #define UART_STAT_MASK_PRTY_ERR BIT(16) #define UART_STAT_MASK_FRAM_ERR BIT(17) #define UART_STAT_MASK_WFULL_ERR BIT(18) #define UART_STAT_MASK_RFIFO_FULL BIT(19) #define UART_STAT_MASK_RFIFO_EMPTY BIT(20) #define UART_STAT_MASK_TFIFO_FULL BIT(21) #define UART_STAT_MASK_TFIFO_EMPTY BIT(22) #define UART_CNTL_MASK_BAUD_RATE (0xfff) #define UART_CNTL_MASK_TX_EN BIT(12) #define UART_CNTL_MASK_RX_EN BIT(13) #define UART_CNTL_MASK_2WIRE BIT(15) #define UART_CNTL_MASK_STP_BITS (3 << 16) #define UART_CNTL_MASK_STP_1BIT (0 << 16) #define UART_CNTL_MASK_STP_2BIT BIT(16) #define UART_CNTL_MASK_PRTY_EVEN (0 << 18) #define UART_CNTL_MASK_PRTY_ODD BIT(18) #define UART_CNTL_MASK_PRTY_TYPE BIT(18) #define UART_CNTL_MASK_PRTY_EN BIT(19) #define UART_CNTL_MASK_CHAR_LEN (3 << 20) #define UART_CNTL_MASK_CHAR_8BIT (0 << 20) #define UART_CNTL_MASK_CHAR_7BIT BIT(20) #define UART_CNTL_MASK_CHAR_6BIT (2 << 20) #define UART_CNTL_MASK_CHAR_5BIT (3 << 20) #define UART_CNTL_MASK_RST_TX BIT(22) #define UART_CNTL_MASK_RST_RX BIT(23) #define UART_CNTL_MASK_CLR_ERR BIT(24) #define UART_CNTL_MASK_INV_RX BIT(25) #define UART_CNTL_MASK_INV_TX BIT(26) #define UART_CNTL_MASK_RINT_EN BIT(27) #define UART_CNTL_MASK_TINT_EN BIT(28) #define UART_CNTL_MASK_INV_CTS BIT(29) #define UART_CNTL_MASK_MASK_ERR BIT(30) #define UART_CNTL_MASK_INV_RTS BIT(31) #define UART_MODE_MASK_TWO_WIRE BIT(15) #define UART_MODE_MASK_STP_1BIT (0 << 16) #define UART_MODE_MASK_CHAR_8BIT (0 << 20) #define UART_MODE_MASK_TX_EN BIT(12) #define UART_MODE_MASK_RX_EN BIT(13) #define UART_MODE_MASK_RST_TX BIT(22) #define UART_MODE_MASK_RST_RX BIT(23) #define UART_MODE_MASK_CLR_ERR BIT(24) #define UART_STAT_MASK_TFIFO_FULL BIT(21) #define UART_CTRL_XTAL_CLK_SEL BIT(26) #define UART_CTRL_XTAL_CLK_DIV2 BIT(27) #define UART_CTRL_USE_XTAL_CLK BIT(24) #define UART_CTRL_USE_NEW_BAUD_RATE BIT(23) #define UART_STP_BIT UART_MODE_MASK_STP_1BIT #define UART_PRTY_BIT 0 #define UART_CHAR_LEN UART_MODE_MASK_CHAR_8BIT #define UART_MODE_RESET_MASK (UART_MODE_MASK_RST_TX | UART_MODE_MASK_RST_RX | UART_MODE_MASK_CLR_ERR) #define P_UART(uart_base, reg) (uart_base + reg) #define P_UART_WFIFO(uart_base) P_UART(uart_base, UART_WFIFO) #define P_UART_MODE(uart_base) P_UART(uart_base, UART_MODE) #define P_UART_CTRL(uart_base) P_UART(uart_base, UART_CTRL) #define P_UART_STATUS(uart_base) P_UART(uart_base, UART_STATUS) #define VALUE_DEC 1 #define VALUE_HEX 0 #define ACS_DIS_PRINT_FLAG BIT(7) void serial_init(unsigned set); int serial_tstc(void); int serial_putc(int c); int serial_getc(void); int serial_puts(const char *s); void serial_put_hex(unsigned long data, unsigned int bitlen); void serial_put_dec(unsigned long data); /* Disable serial support */ int serial_disable(void); /* Simple print function */ void bl33z_print(const char *info, unsigned int value, unsigned int is_dec, const char *info2); #endif /* __SERIAL_H__ */