mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.5 KiB
71 lines
1.5 KiB
/* 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); |
|
}
|
|
|