15 #include <linux/device.h>
18 #include <linux/module.h>
20 #include <linux/serial_core.h>
26 #include <linux/slab.h>
62 static unsigned int dw8250_serial_in32(
struct uart_port *p,
int offset)
72 static int dw8250_handle_irq(
struct uart_port *p)
100 dev_err(&pdev->
dev,
"no registers/irq defined\n");
112 uart.
port.handle_irq = dw8250_handle_irq;
119 uart.
port.serial_in = dw8250_serial_in;
120 uart.
port.serial_out = dw8250_serial_out;
121 if (!of_property_read_u32(np,
"reg-io-width", &val)) {
127 uart.
port.serial_in = dw8250_serial_in32;
128 uart.
port.serial_out = dw8250_serial_out32;
131 dev_err(&pdev->
dev,
"unsupported reg-io-width (%u)\n",
137 if (!of_property_read_u32(np,
"reg-shift", &val))
140 if (of_property_read_u32(np,
"clock-frequency", &val)) {
141 dev_err(&pdev->
dev,
"no clock-frequency property set\n");
150 platform_set_drvdata(pdev, data);
157 struct dw8250_data *data = platform_get_drvdata(pdev);
165 { .compatible =
"snps,dw-apb-uart" },
172 .name =
"dw-apb-uart",
174 .of_match_table = dw8250_match,
176 .probe = dw8250_probe,