Lines Matching +full:permanently +full:- +full:attached
1 // SPDX-License-Identifier: GPL-2.0+
3 * Universal/legacy platform driver for 8250/16550-type serial ports
6 * ISA-compatible 8250/16550 ports
30 * This option is unsafe when used on edge-triggered interrupts.
41 * SERIAL_PORT_DFNS tells us about built-in ports that have no
84 struct uart_port *port = &up->port; in __serial8250_isa_init_ports()
86 port->iobase = old_serial_port[i].port; in __serial8250_isa_init_ports()
87 port->irq = irq_canonicalize(old_serial_port[i].irq); in __serial8250_isa_init_ports()
88 port->irqflags = 0; in __serial8250_isa_init_ports()
89 port->uartclk = old_serial_port[i].baud_base * 16; in __serial8250_isa_init_ports()
90 port->flags = old_serial_port[i].flags; in __serial8250_isa_init_ports()
91 port->hub6 = 0; in __serial8250_isa_init_ports()
92 port->membase = old_serial_port[i].iomem_base; in __serial8250_isa_init_ports()
93 port->iotype = old_serial_port[i].io_type; in __serial8250_isa_init_ports()
94 port->regshift = old_serial_port[i].iomem_reg_shift; in __serial8250_isa_init_ports()
96 port->irqflags |= irqflag; in __serial8250_isa_init_ports()
98 serial8250_isa_config(i, &up->port, &up->capabilities); in __serial8250_isa_init_ports()
112 struct device *dev = &pdev->dev; in serial8250_probe_acpi()
119 return dev_err_probe(dev, -EINVAL, "no registers defined\n"); in serial8250_probe_acpi()
123 uart.port.iobase = regs->start; in serial8250_probe_acpi()
126 uart.port.mapbase = regs->start; in serial8250_probe_acpi()
131 return -EINVAL; in serial8250_probe_acpi()
137 uart.port.dev = &pdev->dev; in serial8250_probe_acpi()
141 /* no interrupt -> fall back to polling */ in serial8250_probe_acpi()
142 if (ret == -ENXIO) in serial8250_probe_acpi()
164 for (i = 0; p && p->flags != 0; p++, i++) { in serial8250_probe_platform()
165 uart.port.iobase = p->iobase; in serial8250_probe_platform()
166 uart.port.membase = p->membase; in serial8250_probe_platform()
167 uart.port.irq = p->irq; in serial8250_probe_platform()
168 uart.port.irqflags = p->irqflags; in serial8250_probe_platform()
169 uart.port.uartclk = p->uartclk; in serial8250_probe_platform()
170 uart.port.regshift = p->regshift; in serial8250_probe_platform()
171 uart.port.iotype = p->iotype; in serial8250_probe_platform()
172 uart.port.flags = p->flags; in serial8250_probe_platform()
173 uart.port.mapbase = p->mapbase; in serial8250_probe_platform()
174 uart.port.mapsize = p->mapsize; in serial8250_probe_platform()
175 uart.port.hub6 = p->hub6; in serial8250_probe_platform()
176 uart.port.has_sysrq = p->has_sysrq; in serial8250_probe_platform()
177 uart.port.private_data = p->private_data; in serial8250_probe_platform()
178 uart.port.type = p->type; in serial8250_probe_platform()
179 uart.bugs = p->bugs; in serial8250_probe_platform()
180 uart.port.serial_in = p->serial_in; in serial8250_probe_platform()
181 uart.port.serial_out = p->serial_out; in serial8250_probe_platform()
182 uart.dl_read = p->dl_read; in serial8250_probe_platform()
183 uart.dl_write = p->dl_write; in serial8250_probe_platform()
184 uart.port.handle_irq = p->handle_irq; in serial8250_probe_platform()
185 uart.port.handle_break = p->handle_break; in serial8250_probe_platform()
186 uart.port.set_termios = p->set_termios; in serial8250_probe_platform()
187 uart.port.set_ldisc = p->set_ldisc; in serial8250_probe_platform()
188 uart.port.get_mctrl = p->get_mctrl; in serial8250_probe_platform()
189 uart.port.pm = p->pm; in serial8250_probe_platform()
190 uart.port.dev = &dev->dev; in serial8250_probe_platform()
194 dev_err(&dev->dev, "unable to register port at index %d " in serial8250_probe_platform()
196 p->iobase, (unsigned long long)p->mapbase, in serial8250_probe_platform()
197 p->irq, ret); in serial8250_probe_platform()
204 * Register a set of serial devices attached to a platform device.
210 struct device *dev = &pdev->dev; in serial8250_probe()
238 if (up->port.dev == &dev->dev) in serial8250_remove()
250 if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev) in serial8250_suspend()
251 uart_suspend_port(&serial8250_reg, &up->port); in serial8250_suspend()
264 if (up->port.type != PORT_UNKNOWN && up->port.dev == &dev->dev) in serial8250_resume()
272 { "RSCV0003" }, /* RISC-V Generic 16550A UART */
289 * This "device" covers _all_ ISA 8250-compatible serial devices listed
299 return -ENODEV; in serial8250_init()
321 ret = -ENOMEM; in serial8250_init()
329 serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev); in serial8250_init()
356 * This tells serial8250_unregister_port() not to re-register in serial8250_exit()
357 * the ports (thereby making serial8250_isa_driver permanently in serial8250_exit()
379 MODULE_PARM_DESC(share_irqs, "Share IRQs with other non-8250/16x50 devices (unsafe)");
382 MODULE_PARM_DESC(nr_uarts, "Maximum number of UARTs supported. (1-" __MODULE_STRING(CONFIG_SERIAL_8…