blob: f2421804486ad90cc857af67e156805f6ca6d7ec [file] [log] [blame]
/****************************************************************************
* arch/arm/src/tlsr82/hardware/tlsr82_uart.h
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __ARCH_ARM_SRC_TLSR82_HARDWARE_TLSR82_UART_H
#define __ARCH_ARM_SRC_TLSR82_HARDWARE_TLSR82_UART_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <arch/tlsr82/chip.h>
#include "hardware/tlsr82_register.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* Uart buffer register definitions */
#define UART_BUF_REG REG_ADDR32(0x90)
#define UART_BUF0_REG REG_ADDR8(0x90)
#define UART_BUF1_REG REG_ADDR8(0x91)
#define UART_BUF2_REG REG_ADDR8(0x92)
#define UART_BUF3_REG REG_ADDR8(0x93)
#define UART_BUF(n) REG_ADDR8(0x90 + (n))
/* Uart clock register definitions */
#define UART_CLK_REG REG_ADDR16(0x94)
#define UART_CLK_DIV 0x7fff
#define UART_CLK_EN_SHIFT 15
#define UART_CLK_EN (0x1 << UART_CLK_EN_SHIFT)
/* Uart control register definitions */
#define UART_CTRL_REG REG_ADDR32(0x96)
#define UART_CTRL0_REG REG_ADDR8(0x96)
#define UART_CTRL1_REG REG_ADDR8(0x97)
#define UART_CTRL2_REG REG_ADDR8(0x98)
#define UART_CTRL3_REG REG_ADDR8(0x99)
#define UART_CTRL0_BWPC_SHIFT 0
#define UART_CTRL0_BWPC (0xf << UART_CTRL0_BWPC_SHIFT)
#define UART_CTRL0_RX_DMA_EN_SHIFT 4
#define UART_CTRL0_RX_DMA_EN (0x1 << UART_CTRL0_RX_DMA_EN_SHIFT)
#define UART_CTRL0_TX_DMA_EN_SHIFT 5
#define UART_CTRL0_TX_DMA_EN (0x1 << UART_CTRL0_TX_DMA_EN_SHIFT)
#define UART_CTRL0_RX_IRQ_EN_SHIFT 6
#define UART_CTRL0_RX_IRQ_EN (0x1 << UART_CTRL0_RX_IRQ_EN_SHIFT)
#define UART_CTRL0_TX_IRQ_EN_SHIFT 7
#define UART_CTRL0_TX_IRQ_EN (0x1 << UART_CTRL0_TX_IRQ_EN_SHIFT)
#define UART_CTRL1_CTS_SEL_SHIFT 0
#define UART_CTRL1_CTS_SEL (0x1 << UART_CTRL1_CTS_SEL_SHIFT)
#define UART_CTRL1_CTS_EN_SHIFT 1
#define UART_CTRL1_CTS_EN (0x1 << UART_CTRL1_CTS_EN_SHIFT)
#define UART_CTRL1_PARITY_EN_SHIFT 2
#define UART_CTRL1_PARITY_EN (0x1 << UART_CTRL1_PARITY_EN_SHIFT)
#define UART_CTRL1_PARITY_SEL_SHIFT 3
#define UART_CTRL1_PARITY_SEL (0x1 << UART_CTRL1_PARITY_SEL_SHIFT)
#define UART_CTRL1_STOPBIT_SHIFT 4
#define UART_CTRL1_STOPBIT (0x3 << UART_CTRL1_STOPBIT_SHIFT)
#define UART_CTRL1_TTL_SHIFT 6
#define UART_CTRL1_TTL (0x1 << UART_CTRL1_TTL_SHIFT)
#define UART_CTRL1_LOOPBACK_SHIFT 7
#define UART_CTRL1_LOOPBACK (0x1 << UART_CTRL1_LOOPBACK_SHIFT)
#define UART_CTRL2_RTS_TRI_LEVEL_SHIFT 0
#define UART_CTRL2_RTS_TRI_LEVEL (0xf << UART_CTRL2_RTS_TRI_LEVEL_SHIFT)
#define UART_CTRL2_RTS_PARITY_SHIFT 4
#define UART_CTRL2_RTS_PARITY (0x1 << UART_CTRL2_RTS_PARITY_SHIFT)
#define UART_CTRL2_RTS_MUL_VAL_SHIFT 5
#define UART_CTRL2_RTS_MUL_VAL (0x1 << UART_CTRL2_RTS_MUL_VAL_SHIFT)
#define UART_CTRL2_RTS_MUL_EN_SHIFT 6
#define UART_CTRL2_RTS_MUL_EN (0x1 << UART_CTRL2_RTS_MUL_EN_SHIFT)
#define UART_CTRL2_RTS_EN_SHIFT 7
#define UART_CTRL2_RTS_EN (0x1 << UART_CTRL2_RTS_EN_SHIFT)
#define UART_CTRL3_RX_TRI_LEVEL_SHIFT 0
#define UART_CTRL3_RX_TRI_LEVEL (0xf << UART_CTRL3_RX_TRI_LEVEL_SHIFT)
#define UART_CTRL3_TX_TRI_LEVEL_SHIFT 4
#define UART_CTRL3_TX_TRI_LEVEL (0xf << UART_CTRL3_TX_TRI_LEVEL_SHIFT)
/* Uart rx timeout register definitions */
#define UART_RXTIMEOUT0_REG REG_ADDR8(0x9a)
#define UART_RXTIMEOUT1_REG REG_ADDR8(0x9b)
#define UART_RXTIMEOUT1_SEL_SHIFT 0
#define UART_RXTIMEOUT1_SEL (0x3 << UART_RXTIMEOUT1_SEL_SHIFT)
#define UART_RXTIMEOUT1_P7816_EN_SHIFT 5
#define UART_RXTIMEOUT1_P7816_EN (0x1 << UART_RXTIMEOUT1_P7816_EN_SHIFT)
#define UART_RXTIMEOUT1_MASK_TXDONE_SHIFT 6
#define UART_RXTIMEOUT1_MASK_TXDONE (0x1 << UART_RXTIMEOUT1_MASK_TXDONE_SHIFT)
#define UART_RXTIMEOUT1_MASK_ERR_SHIFT 7
#define UART_RXTIMEOUT1_MASK_ERR (0x1 << UART_RXTIMEOUT1_MASK_ERR_SHIFT)
/* Uart buffer count register definitions */
#define UART_BUF_CNT0_REG REG_ADDR8(0x9c)
#define UART_BUF_CNT1_REG REG_ADDR8(0x9d)
#define UART_BUF_CNT0_RX_CNT_SHIFT 0
#define UART_BUF_CNT0_RX_CNT (0xf << UART_BUF_CNT0_RX_CNT_SHIFT)
#define UART_BUF_CNT0_TX_CNT_SHIFT 4
#define UART_BUF_CNT0_TX_CNT (0xf << UART_BUF_CNT0_TX_CNT_SHIFT)
#define UART_BUF_CNT1_RB_CNT 0x07
#define UART_BUF_CNT1_IRQ BIT(3)
#define UART_BUF_CNT1_WB_CNT 0x70
#define UART_BUF_CNT1_RX_CLR BIT(6)
#define UART_BUF_CNT1_TX_CLR BIT(7)
#define UART_BUF_CNT1_RX_ERR BIT(7)
#define UART_GET_RX_BUF_CNT() ((UART_BUF_CNT0_REG & UART_BUF_CNT0_RX_CNT) >>\
UART_BUF_CNT0_RX_CNT_SHIFT)
#define UART_GET_TX_BUF_CNT() ((UART_BUF_CNT0_REG & UART_BUF_CNT0_TX_CNT) >>\
UART_BUF_CNT0_TX_CNT_SHIFT)
/* Uart interrupt register definitions */
#define UART_IRQ_REG REG_ADDR8(0x9e)
#define UART_IRQ_TXDONE (0x1 << 0)
#define UART_IRQ_TXBUF (0x1 << 1)
#define UART_IRQ_RXDONE (0x1 << 2)
#define UART_IRQ_RXBUF (0x1 << 3)
#define UART_IRQ_CLR_RX (0x1 << 6)
#define UART_IRQ_CLR_TX (0x1 << 7)
#define UART_STATE_REG REG_ADDR8(0x9f)
#define UART_STATE_TX 0x07
#define UART_STATE_RX 0xf0
#endif /* __ARCH_ARM_SRC_TLSR82_HARDWARE_TLSR82_UART_H */