61 lines
1.4 KiB
C

/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2023 Rockchip Electronics Co., Ltd.
*/
#ifndef RKPM_URAT_H
#define RKPM_URAT_H
#include "rkpm_helpers.h"
/* UART16550 Registers */
#define UARTTX 0x0
#define UARTRX 0x0
#define UARTDLL 0x0
#define UARTIER 0x4
#define UARTDLLM 0x4
#define UARTIIR 0x8
#define UARTFCR 0x8
#define UARTLCR 0xc
#define UARTMCR 0x10
#define UARTLSR 0x14
#define UARTMSR 0x18
#define UARTSPR 0x1c
#define UARTCSR 0x20
#define UARTUSR 0x7c
#define UARTSRR 0x88
#define DIAGNOSTIC_MODE BIT(4)
#define UART_RESET BIT(0)
#define RCVR_FIFO_RESET BIT(1)
#define XMIT_FIFO_RESET BIT(2)
/* UART_USR bits */
#define UARTUSR_BUSY BIT(0)
#define UARTUSR_TFIFO_N_FULL BIT(1)
#define UARTUSR_TFIFO_EMPTY BIT(2)
#define UARTUSR_RRIFO_N_EMPTY BIT(3)
#define UARTUSR_RFIFO_FULL BIT(4)
#define UARTFCR_FIFOEN (1 << 0) /* Enable the Tx/Rx FIFO */
#define UARTLCR_DLAB (1 << 7) /* Divisor Latch Access */
struct uart_debug_ctx {
u32 uart_dll;
u32 uart_dlh;
u32 uart_ier;
u32 uart_fcr;
u32 uart_mcr;
u32 uart_lcr;
};
void rkpm_uart_debug_init(void __iomem *base,
unsigned int uart_clk,
unsigned int baud_rate);
void rkpm_uart_debug_save(void __iomem *base,
struct uart_debug_ctx *ctx);
void rkpm_uart_debug_restore(void __iomem *base,
struct uart_debug_ctx *ctx);
#endif