72 lines
1.5 KiB
C
72 lines
1.5 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
||
|
/* Synopsys DesignWare 8250 library header file. */
|
||
|
|
||
|
#include <linux/io.h>
|
||
|
#include <linux/notifier.h>
|
||
|
#include <linux/types.h>
|
||
|
#include <linux/workqueue.h>
|
||
|
|
||
|
#include "8250.h"
|
||
|
|
||
|
struct clk;
|
||
|
struct reset_control;
|
||
|
|
||
|
struct dw8250_port_data {
|
||
|
/* Port properties */
|
||
|
int line;
|
||
|
|
||
|
/* DMA operations */
|
||
|
struct uart_8250_dma dma;
|
||
|
|
||
|
/* Hardware configuration */
|
||
|
u8 dlf_size;
|
||
|
|
||
|
/* RS485 variables */
|
||
|
bool hw_rs485_support;
|
||
|
};
|
||
|
|
||
|
struct dw8250_platform_data {
|
||
|
u8 usr_reg;
|
||
|
u32 cpr_val;
|
||
|
unsigned int quirks;
|
||
|
};
|
||
|
|
||
|
struct dw8250_data {
|
||
|
struct dw8250_port_data data;
|
||
|
const struct dw8250_platform_data *pdata;
|
||
|
|
||
|
int msr_mask_on;
|
||
|
int msr_mask_off;
|
||
|
struct clk *clk;
|
||
|
struct clk *pclk;
|
||
|
struct notifier_block clk_notifier;
|
||
|
struct work_struct clk_work;
|
||
|
struct reset_control *rst;
|
||
|
|
||
|
unsigned int skip_autocfg:1;
|
||
|
unsigned int uart_16550_compatible:1;
|
||
|
};
|
||
|
|
||
|
void dw8250_do_set_termios(struct uart_port *p, struct ktermios *termios, const struct ktermios *old);
|
||
|
void dw8250_setup_port(struct uart_port *p);
|
||
|
|
||
|
static inline struct dw8250_data *to_dw8250_data(struct dw8250_port_data *data)
|
||
|
{
|
||
|
return container_of(data, struct dw8250_data, data);
|
||
|
}
|
||
|
|
||
|
static inline u32 dw8250_readl_ext(struct uart_port *p, int offset)
|
||
|
{
|
||
|
if (p->iotype == UPIO_MEM32BE)
|
||
|
return ioread32be(p->membase + offset);
|
||
|
return readl(p->membase + offset);
|
||
|
}
|
||
|
|
||
|
static inline void dw8250_writel_ext(struct uart_port *p, int offset, u32 reg)
|
||
|
{
|
||
|
if (p->iotype == UPIO_MEM32BE)
|
||
|
iowrite32be(reg, p->membase + offset);
|
||
|
else
|
||
|
writel(reg, p->membase + offset);
|
||
|
}
|