Lines Matching refs:p
75 static inline int dw8250_modify_msr(struct uart_port *p, int offset, int value) in dw8250_modify_msr() argument
77 struct dw8250_data *d = p->private_data; in dw8250_modify_msr()
94 static void dw8250_force_idle(struct uart_port *p) in dw8250_force_idle() argument
96 struct uart_8250_port *up = up_to_u8250p(p); in dw8250_force_idle()
99 (void)p->serial_in(p, UART_RX); in dw8250_force_idle()
102 static void dw8250_serial_out(struct uart_port *p, int offset, int value) in dw8250_serial_out() argument
104 struct dw8250_data *d = p->private_data; in dw8250_serial_out()
109 writeb(value, p->membase + (offset << p->regshift)); in dw8250_serial_out()
115 unsigned int lcr = p->serial_in(p, UART_LCR); in dw8250_serial_out()
118 dw8250_force_idle(p); in dw8250_serial_out()
119 writeb(value, p->membase + (UART_LCR << p->regshift)); in dw8250_serial_out()
128 static unsigned int dw8250_serial_in(struct uart_port *p, int offset) in dw8250_serial_in() argument
130 unsigned int value = readb(p->membase + (offset << p->regshift)); in dw8250_serial_in()
132 return dw8250_modify_msr(p, offset, value); in dw8250_serial_in()
136 static unsigned int dw8250_serial_inq(struct uart_port *p, int offset) in dw8250_serial_inq() argument
140 value = (u8)__raw_readq(p->membase + (offset << p->regshift)); in dw8250_serial_inq()
142 return dw8250_modify_msr(p, offset, value); in dw8250_serial_inq()
145 static void dw8250_serial_outq(struct uart_port *p, int offset, int value) in dw8250_serial_outq() argument
147 struct dw8250_data *d = p->private_data; in dw8250_serial_outq()
153 __raw_writeq(value, p->membase + (offset << p->regshift)); in dw8250_serial_outq()
155 __raw_readq(p->membase + (UART_LCR << p->regshift)); in dw8250_serial_outq()
161 unsigned int lcr = p->serial_in(p, UART_LCR); in dw8250_serial_outq()
164 dw8250_force_idle(p); in dw8250_serial_outq()
166 p->membase + (UART_LCR << p->regshift)); in dw8250_serial_outq()
176 static void dw8250_serial_out32(struct uart_port *p, int offset, int value) in dw8250_serial_out32() argument
178 struct dw8250_data *d = p->private_data; in dw8250_serial_out32()
183 writel(value, p->membase + (offset << p->regshift)); in dw8250_serial_out32()
189 unsigned int lcr = p->serial_in(p, UART_LCR); in dw8250_serial_out32()
192 dw8250_force_idle(p); in dw8250_serial_out32()
193 writel(value, p->membase + (UART_LCR << p->regshift)); in dw8250_serial_out32()
202 static unsigned int dw8250_serial_in32(struct uart_port *p, int offset) in dw8250_serial_in32() argument
204 unsigned int value = readl(p->membase + (offset << p->regshift)); in dw8250_serial_in32()
206 return dw8250_modify_msr(p, offset, value); in dw8250_serial_in32()
209 static int dw8250_handle_irq(struct uart_port *p) in dw8250_handle_irq() argument
211 struct dw8250_data *d = p->private_data; in dw8250_handle_irq()
212 unsigned int iir = p->serial_in(p, UART_IIR); in dw8250_handle_irq()
214 if (serial8250_handle_irq(p, iir)) { in dw8250_handle_irq()
218 (void)p->serial_in(p, d->usr_reg); in dw8250_handle_irq()
238 static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios, in dw8250_set_termios() argument
242 struct dw8250_data *d = p->private_data; in dw8250_set_termios()
259 p->uartclk = rate; in dw8250_set_termios()
261 serial8250_do_set_termios(p, termios, old); in dw8250_set_termios()
271 struct uart_port *p = &up->port; in dw8250_setup_port() local
272 u32 reg = readl(p->membase + DW_UART_UCV); in dw8250_setup_port()
281 dev_dbg_ratelimited(p->dev, "Designware UART version %c.%c%c\n", in dw8250_setup_port()
284 reg = readl(p->membase + DW_UART_CPR); in dw8250_setup_port()
290 p->type = PORT_16550A; in dw8250_setup_port()
291 p->flags |= UPF_FIXED_TYPE; in dw8250_setup_port()
292 p->fifosize = DW_UART_CPR_FIFO_SIZE(reg); in dw8250_setup_port()
293 up->tx_loadsz = p->fifosize; in dw8250_setup_port()
301 static int dw8250_probe_of(struct uart_port *p, in dw8250_probe_of() argument
304 struct device_node *np = p->dev->of_node; in dw8250_probe_of()
305 struct uart_8250_port *up = up_to_u8250p(p); in dw8250_probe_of()
312 p->serial_in = dw8250_serial_inq; in dw8250_probe_of()
313 p->serial_out = dw8250_serial_outq; in dw8250_probe_of()
314 p->flags = UPF_SKIP_TEST | UPF_SHARE_IRQ | UPF_FIXED_TYPE; in dw8250_probe_of()
315 p->type = PORT_OCTEON; in dw8250_probe_of()
325 p->iotype = UPIO_MEM32; in dw8250_probe_of()
326 p->serial_in = dw8250_serial_in32; in dw8250_probe_of()
327 p->serial_out = dw8250_serial_out32; in dw8250_probe_of()
330 dev_err(p->dev, "unsupported reg-io-width (%u)\n", val); in dw8250_probe_of()
338 if (p->fifosize) { in dw8250_probe_of()
341 up->dma->rxconf.src_maxburst = p->fifosize / 4; in dw8250_probe_of()
342 up->dma->txconf.dst_maxburst = p->fifosize / 4; in dw8250_probe_of()
346 p->regshift = val; in dw8250_probe_of()
351 p->line = id; in dw8250_probe_of()
383 struct uart_port *p = &up->port; in dw8250_probe_acpi() local
387 p->iotype = UPIO_MEM32; in dw8250_probe_acpi()
388 p->serial_in = dw8250_serial_in32; in dw8250_probe_acpi()
389 p->serial_out = dw8250_serial_out32; in dw8250_probe_acpi()
390 p->regshift = 2; in dw8250_probe_acpi()
394 up->dma->rxconf.src_maxburst = p->fifosize / 4; in dw8250_probe_acpi()
395 up->dma->txconf.dst_maxburst = p->fifosize / 4; in dw8250_probe_acpi()