drivers/serial/pl011: add FAR specifier

Signed-off-by: chao an <anchao@lixiang.com>
This commit is contained in:
chao an 2024-01-11 14:56:01 +08:00 committed by Alin Jerpelea
parent 1dd9f64287
commit c04f1e7789

View File

@ -209,7 +209,7 @@ struct pl011_regs
struct pl011_config struct pl011_config
{ {
volatile struct pl011_regs *uart; FAR volatile struct pl011_regs *uart;
uint32_t sys_clk_freq; uint32_t sys_clk_freq;
}; };
@ -228,18 +228,19 @@ struct pl011_uart_port_s
unsigned int irq_num; unsigned int irq_num;
}; };
static int pl011_setup(struct uart_dev_s *dev); static int pl011_setup(FAR struct uart_dev_s *dev);
static void pl011_shutdown(struct uart_dev_s *dev); static void pl011_shutdown(FAR struct uart_dev_s *dev);
static int pl011_attach(struct uart_dev_s *dev); static int pl011_attach(FAR struct uart_dev_s *dev);
static void pl011_detach(struct uart_dev_s *dev); static void pl011_detach(FAR struct uart_dev_s *dev);
static int pl011_ioctl(struct file *filep, int cmd, unsigned long arg); static int pl011_ioctl(FAR struct file *filep, int cmd, unsigned long arg);
static int pl011_receive(struct uart_dev_s *dev, unsigned int *status); static int pl011_receive(FAR struct uart_dev_s *dev,
static void pl011_rxint(struct uart_dev_s *dev, bool enable); FAR unsigned int *status);
static bool pl011_rxavailable(struct uart_dev_s *dev); static void pl011_rxint(FAR struct uart_dev_s *dev, bool enable);
static void pl011_send(struct uart_dev_s *dev, int ch); static bool pl011_rxavailable(FAR struct uart_dev_s *dev);
static void pl011_txint(struct uart_dev_s *dev, bool enable); static void pl011_send(FAR struct uart_dev_s *dev, int ch);
static bool pl011_txready(struct uart_dev_s *dev); static void pl011_txint(FAR struct uart_dev_s *dev, bool enable);
static bool pl011_txempty(struct uart_dev_s *dev); static bool pl011_txready(FAR struct uart_dev_s *dev);
static bool pl011_txempty(FAR struct uart_dev_s *dev);
/*************************************************************************** /***************************************************************************
* Private Data * Private Data
@ -299,7 +300,7 @@ static struct pl011_uart_port_s g_uart0priv =
.config = .config =
{ {
.uart = (volatile struct pl011_regs *)CONFIG_UART0_BASE, .uart = (FAR volatile struct pl011_regs *)CONFIG_UART0_BASE,
.sys_clk_freq = 24000000, .sys_clk_freq = 24000000,
}, },
@ -342,7 +343,7 @@ static struct pl011_uart_port_s g_uart1priv =
.config = .config =
{ {
.uart = (volatile struct pl011_regs *)CONFIG_UART1_BASE, .uart = (FAR volatile struct pl011_regs *)CONFIG_UART1_BASE,
.sys_clk_freq = 24000000, .sys_clk_freq = 24000000,
}, },
@ -385,7 +386,7 @@ static struct pl011_uart_port_s g_uart2priv =
.config = .config =
{ {
.uart = (volatile struct pl011_regs *)CONFIG_UART2_BASE, .uart = (FAR volatile struct pl011_regs *)CONFIG_UART2_BASE,
.sys_clk_freq = 24000000, .sys_clk_freq = 24000000,
}, },
@ -428,7 +429,7 @@ static struct pl011_uart_port_s g_uart3priv =
.config = .config =
{ {
.uart = (volatile struct pl011_regs *)CONFIG_UART3_BASE, .uart = (FAR volatile struct pl011_regs *)CONFIG_UART3_BASE,
.sys_clk_freq = 24000000, .sys_clk_freq = 24000000,
}, },
@ -487,38 +488,38 @@ static struct uart_dev_s g_uart3port =
* Private Functions * Private Functions
***************************************************************************/ ***************************************************************************/
static void pl011_enable(const struct pl011_uart_port_s *sport) static void pl011_enable(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->cr |= PL011_CR_UARTEN; config->uart->cr |= PL011_CR_UARTEN;
} }
static void pl011_disable(const struct pl011_uart_port_s *sport) static void pl011_disable(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->cr &= ~PL011_CR_UARTEN; config->uart->cr &= ~PL011_CR_UARTEN;
} }
static void pl011_enable_fifo(const struct pl011_uart_port_s *sport) static void pl011_enable_fifo(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->lcr_h |= PL011_LCRH_FEN; config->uart->lcr_h |= PL011_LCRH_FEN;
} }
static void pl011_disable_fifo(const struct pl011_uart_port_s *sport) static void pl011_disable_fifo(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->lcr_h &= ~PL011_LCRH_FEN; config->uart->lcr_h &= ~PL011_LCRH_FEN;
} }
static int pl011_set_baudrate(const struct pl011_uart_port_s *sport, static int pl011_set_baudrate(FAR const struct pl011_uart_port_s *sport,
uint32_t clk, uint32_t baudrate) uint32_t clk, uint32_t baudrate)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
/* Avoiding float calculations, bauddiv is left shifted by 6 */ /* Avoiding float calculations, bauddiv is left shifted by 6 */
@ -549,47 +550,47 @@ static int pl011_set_baudrate(const struct pl011_uart_port_s *sport,
return 0; return 0;
} }
static void pl011_irq_tx_enable(const struct pl011_uart_port_s *sport) static void pl011_irq_tx_enable(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->imsc |= PL011_IMSC_TXIM; config->uart->imsc |= PL011_IMSC_TXIM;
} }
static void pl011_irq_tx_disable(const struct pl011_uart_port_s *sport) static void pl011_irq_tx_disable(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->imsc &= ~PL011_IMSC_TXIM; config->uart->imsc &= ~PL011_IMSC_TXIM;
} }
static void pl011_irq_rx_enable(const struct pl011_uart_port_s *sport) static void pl011_irq_rx_enable(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->imsc |= PL011_IMSC_RXIM | PL011_IMSC_RTIM; config->uart->imsc |= PL011_IMSC_RXIM | PL011_IMSC_RTIM;
} }
static void pl011_irq_rx_disable(const struct pl011_uart_port_s *sport) static void pl011_irq_rx_disable(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->imsc &= ~(PL011_IMSC_RXIM | PL011_IMSC_RTIM); config->uart->imsc &= ~(PL011_IMSC_RXIM | PL011_IMSC_RTIM);
} }
static int pl011_irq_tx_complete(const struct pl011_uart_port_s *sport) static int pl011_irq_tx_complete(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
/* check for TX FIFO empty */ /* check for TX FIFO empty */
return config->uart->fr & PL011_FR_TXFE; return config->uart->fr & PL011_FR_TXFE;
} }
static int pl011_irq_rx_ready(const struct pl011_uart_port_s *sport) static int pl011_irq_rx_ready(FAR const struct pl011_uart_port_s *sport)
{ {
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
const struct pl011_data *data = &sport->data; FAR const struct pl011_data *data = &sport->data;
if (!data->sbsa && !(config->uart->cr & PL011_CR_RXE)) if (!data->sbsa && !(config->uart->cr & PL011_CR_RXE))
{ {
@ -608,11 +609,11 @@ static int pl011_irq_rx_ready(const struct pl011_uart_port_s *sport)
* *
***************************************************************************/ ***************************************************************************/
static bool pl011_txready(struct uart_dev_s *dev) static bool pl011_txready(FAR struct uart_dev_s *dev)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
struct pl011_data *data = &sport->data; FAR struct pl011_data *data = &sport->data;
if (!data->sbsa && !(config->uart->cr & PL011_CR_TXE)) if (!data->sbsa && !(config->uart->cr & PL011_CR_TXE))
{ {
@ -631,9 +632,9 @@ static bool pl011_txready(struct uart_dev_s *dev)
* *
***************************************************************************/ ***************************************************************************/
static bool pl011_txempty(struct uart_dev_s *dev) static bool pl011_txempty(FAR struct uart_dev_s *dev)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
return pl011_irq_tx_complete(sport); return pl011_irq_tx_complete(sport);
} }
@ -646,10 +647,10 @@ static bool pl011_txempty(struct uart_dev_s *dev)
* *
***************************************************************************/ ***************************************************************************/
static void pl011_send(struct uart_dev_s *dev, int ch) static void pl011_send(FAR struct uart_dev_s *dev, int ch)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
config->uart->dr = ch; config->uart->dr = ch;
} }
@ -662,11 +663,11 @@ static void pl011_send(struct uart_dev_s *dev, int ch)
* *
***************************************************************************/ ***************************************************************************/
static bool pl011_rxavailable(struct uart_dev_s *dev) static bool pl011_rxavailable(FAR struct uart_dev_s *dev)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
struct pl011_data *data = &sport->data; FAR struct pl011_data *data = &sport->data;
if (!data->sbsa && if (!data->sbsa &&
(!(config->uart->cr & PL011_CR_UARTEN) || (!(config->uart->cr & PL011_CR_UARTEN) ||
@ -686,9 +687,9 @@ static bool pl011_rxavailable(struct uart_dev_s *dev)
* *
***************************************************************************/ ***************************************************************************/
static void pl011_rxint(struct uart_dev_s *dev, bool enable) static void pl011_rxint(FAR struct uart_dev_s *dev, bool enable)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
if (enable) if (enable)
{ {
@ -708,9 +709,9 @@ static void pl011_rxint(struct uart_dev_s *dev, bool enable)
* *
***************************************************************************/ ***************************************************************************/
static void pl011_txint(struct uart_dev_s *dev, bool enable) static void pl011_txint(FAR struct uart_dev_s *dev, bool enable)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
irqstate_t flags; irqstate_t flags;
flags = enter_critical_section(); flags = enter_critical_section();
@ -743,10 +744,11 @@ static void pl011_txint(struct uart_dev_s *dev, bool enable)
* *
***************************************************************************/ ***************************************************************************/
static int pl011_receive(struct uart_dev_s *dev, unsigned int *status) static int pl011_receive(FAR struct uart_dev_s *dev,
FAR unsigned int *status)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
unsigned int rx; unsigned int rx;
rx = config->uart->dr; rx = config->uart->dr;
@ -765,7 +767,7 @@ static int pl011_receive(struct uart_dev_s *dev, unsigned int *status)
* *
***************************************************************************/ ***************************************************************************/
static int pl011_ioctl(struct file *filep, int cmd, unsigned long arg) static int pl011_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
{ {
int ret = OK; int ret = OK;
UNUSED(filep); UNUSED(filep);
@ -795,10 +797,10 @@ static int pl011_ioctl(struct file *filep, int cmd, unsigned long arg)
* *
***************************************************************************/ ***************************************************************************/
static int pl011_irq_handler(int irq, void *context, void *arg) static int pl011_irq_handler(int irq, FAR void *context, FAR void *arg)
{ {
struct uart_dev_s *dev = arg; FAR struct uart_dev_s *dev = arg;
struct pl011_uart_port_s *sport; FAR struct pl011_uart_port_s *sport;
UNUSED(irq); UNUSED(irq);
UNUSED(context); UNUSED(context);
@ -828,9 +830,9 @@ static int pl011_irq_handler(int irq, void *context, void *arg)
* *
***************************************************************************/ ***************************************************************************/
static void pl011_detach(struct uart_dev_s *dev) static void pl011_detach(FAR struct uart_dev_s *dev)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
up_disable_irq(sport->irq_num); up_disable_irq(sport->irq_num);
irq_detach(sport->irq_num); irq_detach(sport->irq_num);
@ -853,10 +855,10 @@ static void pl011_detach(struct uart_dev_s *dev)
* *
***************************************************************************/ ***************************************************************************/
static int pl011_attach(struct uart_dev_s *dev) static int pl011_attach(FAR struct uart_dev_s *dev)
{ {
struct pl011_uart_port_s *sport; FAR struct pl011_uart_port_s *sport;
struct pl011_data *data; FAR struct pl011_data *data;
int ret; int ret;
sport = dev->priv; sport = dev->priv;
@ -890,20 +892,20 @@ static int pl011_attach(struct uart_dev_s *dev)
* *
***************************************************************************/ ***************************************************************************/
static void pl011_shutdown(struct uart_dev_s *dev) static void pl011_shutdown(FAR struct uart_dev_s *dev)
{ {
UNUSED(dev); UNUSED(dev);
sinfo("%s: call unexpected\n", __func__); sinfo("%s: call unexpected\n", __func__);
} }
static int pl011_setup(struct uart_dev_s *dev) static int pl011_setup(FAR struct uart_dev_s *dev)
{ {
struct pl011_uart_port_s *sport = dev->priv; FAR struct pl011_uart_port_s *sport = dev->priv;
const struct pl011_config *config = &sport->config; FAR const struct pl011_config *config = &sport->config;
struct pl011_data *data = &sport->data; FAR struct pl011_data *data = &sport->data;
int ret; int ret;
uint32_t lcrh; uint32_t lcrh;
irqstate_t i_flags; irqstate_t i_flags;
i_flags = up_irq_save(); i_flags = up_irq_save();
@ -1020,7 +1022,7 @@ void pl011_serialinit(void)
#ifdef HAVE_PL011_CONSOLE #ifdef HAVE_PL011_CONSOLE
int up_putc(int ch) int up_putc(int ch)
{ {
struct uart_dev_s *dev = &CONSOLE_DEV; FAR struct uart_dev_s *dev = &CONSOLE_DEV;
/* Check for LF */ /* Check for LF */