blob: ef6737a951c470b8b94b3d63adb8ec35248373a6 [file] [log] [blame] [edit]
/* 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
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__ */