Loading drivers/tty/serial/8250/8250.c +24 −47 Original line number Diff line number Diff line Loading @@ -2979,36 +2979,36 @@ void serial8250_resume_port(int line) static int __devinit serial8250_probe(struct platform_device *dev) { struct plat_serial8250_port *p = dev->dev.platform_data; struct uart_port port; struct uart_8250_port uart; int ret, i, irqflag = 0; memset(&port, 0, sizeof(struct uart_port)); memset(&uart, 0, sizeof(uart)); if (share_irqs) irqflag = IRQF_SHARED; for (i = 0; p && p->flags != 0; p++, i++) { port.iobase = p->iobase; port.membase = p->membase; port.irq = p->irq; port.irqflags = p->irqflags; port.uartclk = p->uartclk; port.regshift = p->regshift; port.iotype = p->iotype; port.flags = p->flags; port.mapbase = p->mapbase; port.hub6 = p->hub6; port.private_data = p->private_data; port.type = p->type; port.serial_in = p->serial_in; port.serial_out = p->serial_out; port.handle_irq = p->handle_irq; port.handle_break = p->handle_break; port.set_termios = p->set_termios; port.pm = p->pm; port.dev = &dev->dev; port.irqflags |= irqflag; ret = serial8250_register_port(&port); uart.port.iobase = p->iobase; uart.port.membase = p->membase; uart.port.irq = p->irq; uart.port.irqflags = p->irqflags; uart.port.uartclk = p->uartclk; uart.port.regshift = p->regshift; uart.port.iotype = p->iotype; uart.port.flags = p->flags; uart.port.mapbase = p->mapbase; uart.port.hub6 = p->hub6; uart.port.private_data = p->private_data; uart.port.type = p->type; uart.port.serial_in = p->serial_in; uart.port.serial_out = p->serial_out; uart.port.handle_irq = p->handle_irq; uart.port.handle_break = p->handle_break; uart.port.set_termios = p->set_termios; uart.port.pm = p->pm; uart.port.dev = &dev->dev; uart.port.irqflags |= irqflag; ret = serial8250_register_8250_port(&uart); if (ret < 0) { dev_err(&dev->dev, "unable to register port at index %d " "(IO%lx MEM%llx IRQ%d): %d\n", i, Loading Loading @@ -3081,7 +3081,7 @@ static struct platform_driver serial8250_isa_driver = { static struct platform_device *serial8250_isa_devs; /* * serial8250_register_port and serial8250_unregister_port allows for * serial8250_register_8250_port and serial8250_unregister_port allows for * 16x50 serial ports to be configured at run-time, to support PCMCIA * modems and PCI multiport cards. */ Loading Loading @@ -3197,29 +3197,6 @@ int serial8250_register_8250_port(struct uart_8250_port *up) } EXPORT_SYMBOL(serial8250_register_8250_port); /** * serial8250_register_port - register a serial port * @port: serial port template * * Configure the serial port specified by the request. If the * port exists and is in use, it is hung up and unregistered * first. * * The port is then probed and if necessary the IRQ is autodetected * If this fails an error is returned. * * On success the port is ready to use and the line number is returned. */ int serial8250_register_port(struct uart_port *port) { struct uart_8250_port up; memset(&up, 0, sizeof(up)); memcpy(&up.port, port, sizeof(*port)); return serial8250_register_8250_port(&up); } EXPORT_SYMBOL(serial8250_register_port); /** * serial8250_unregister_port - remove a 16x50 serial port at runtime * @line: serial line number Loading drivers/tty/serial/8250/8250_acorn.c +11 −11 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) { struct serial_card_info *info; struct serial_card_type *type = id->data; struct uart_port port; struct uart_8250_port uart; unsigned long bus_addr; unsigned int i; Loading @@ -62,19 +62,19 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) ecard_set_drvdata(ec, info); memset(&port, 0, sizeof(struct uart_port)); port.irq = ec->irq; port.flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; port.uartclk = type->uartclk; port.iotype = UPIO_MEM; port.regshift = 2; port.dev = &ec->dev; memset(&uart, 0, sizeof(struct uart_8250_port)); uart.port.irq = ec->irq; uart.port.flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; uart.port.uartclk = type->uartclk; uart.port.iotype = UPIO_MEM; uart.port.regshift = 2; uart.port.dev = &ec->dev; for (i = 0; i < info->num_ports; i ++) { port.membase = info->vaddr + type->offset[i]; port.mapbase = bus_addr + type->offset[i]; uart.port.membase = info->vaddr + type->offset[i]; uart.port.mapbase = bus_addr + type->offset[i]; info->ports[i] = serial8250_register_port(&port); info->ports[i] = serial8250_register_8250_port(&uart); } return 0; Loading drivers/tty/serial/8250/8250_dw.c +19 −19 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ static int dw8250_handle_irq(struct uart_port *p) static int __devinit dw8250_probe(struct platform_device *pdev) { struct uart_port port = {}; struct uart_8250_port uart = {}; struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); struct resource *irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); struct device_node *np = pdev->dev.of_node; Loading @@ -104,28 +104,28 @@ static int __devinit dw8250_probe(struct platform_device *pdev) data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; port.private_data = data; spin_lock_init(&port.lock); port.mapbase = regs->start; port.irq = irq->start; port.handle_irq = dw8250_handle_irq; port.type = PORT_8250; port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | uart.port.private_data = data; spin_lock_init(&uart.port.lock); uart.port.mapbase = regs->start; uart.port.irq = irq->start; uart.port.handle_irq = dw8250_handle_irq; uart.port.type = PORT_8250; uart.port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | UPF_FIXED_PORT | UPF_FIXED_TYPE; port.dev = &pdev->dev; uart.port.dev = &pdev->dev; port.iotype = UPIO_MEM; port.serial_in = dw8250_serial_in; port.serial_out = dw8250_serial_out; uart.port.iotype = UPIO_MEM; uart.port.serial_in = dw8250_serial_in; uart.port.serial_out = dw8250_serial_out; if (!of_property_read_u32(np, "reg-io-width", &val)) { switch (val) { case 1: break; case 4: port.iotype = UPIO_MEM32; port.serial_in = dw8250_serial_in32; port.serial_out = dw8250_serial_out32; uart.port.iotype = UPIO_MEM32; uart.port.serial_in = dw8250_serial_in32; uart.port.serial_out = dw8250_serial_out32; break; default: dev_err(&pdev->dev, "unsupported reg-io-width (%u)\n", Loading @@ -135,15 +135,15 @@ static int __devinit dw8250_probe(struct platform_device *pdev) } if (!of_property_read_u32(np, "reg-shift", &val)) port.regshift = val; uart.port.regshift = val; if (of_property_read_u32(np, "clock-frequency", &val)) { dev_err(&pdev->dev, "no clock-frequency property set\n"); return -EINVAL; } port.uartclk = val; uart.uart.port.uartclk = val; data->line = serial8250_register_port(&port); data->line = serial8250_register_8250_port(&uart); if (data->line < 0) return data->line; Loading drivers/tty/serial/8250/8250_gsc.c +13 −13 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ static int __init serial_init_chip(struct parisc_device *dev) { struct uart_port port; struct uart_8250_port uart; unsigned long address; int err; Loading @@ -48,21 +48,21 @@ static int __init serial_init_chip(struct parisc_device *dev) if (dev->id.sversion != 0x8d) address += 0x800; memset(&port, 0, sizeof(port)); port.iotype = UPIO_MEM; memset(&uart, 0, sizeof(uart)); uart.port.iotype = UPIO_MEM; /* 7.272727MHz on Lasi. Assumed the same for Dino, Wax and Timi. */ port.uartclk = 7272727; port.mapbase = address; port.membase = ioremap_nocache(address, 16); port.irq = dev->irq; port.flags = UPF_BOOT_AUTOCONF; port.dev = &dev->dev; err = serial8250_register_port(&port); uart.port.uartclk = 7272727; uart.port.mapbase = address; uart.port.membase = ioremap_nocache(address, 16); uart.port.irq = dev->irq; uart.port.flags = UPF_BOOT_AUTOCONF; uart.port.dev = &dev->dev; err = serial8250_register_8250_port(&uart); if (err < 0) { printk(KERN_WARNING "serial8250_register_port returned error %d\n", err); iounmap(port.membase); "serial8250_register_8250_port returned error %d\n", err); iounmap(uart.port.membase); return err; } Loading drivers/tty/serial/8250/8250_hp300.c +13 −13 Original line number Diff line number Diff line Loading @@ -171,7 +171,7 @@ static int __devinit hpdca_init_one(struct dio_dev *d, return 0; } #endif memset(&port, 0, sizeof(struct uart_port)); memset(&uart, 0, sizeof(uart)); /* Memory mapped I/O */ port.iotype = UPIO_MEM; Loading @@ -182,7 +182,7 @@ static int __devinit hpdca_init_one(struct dio_dev *d, port.membase = (char *)(port.mapbase + DIO_VIRADDRBASE); port.regshift = 1; port.dev = &d->dev; line = serial8250_register_port(&port); line = serial8250_register_8250_port(&uart); if (line < 0) { printk(KERN_NOTICE "8250_hp300: register_serial() DCA scode %d" Loading Loading @@ -210,7 +210,7 @@ static int __init hp300_8250_init(void) #ifdef CONFIG_HPAPCI int line; unsigned long base; struct uart_port uport; struct uart_8250_port uart; struct hp300_port *port; int i; #endif Loading Loading @@ -248,26 +248,26 @@ static int __init hp300_8250_init(void) if (!port) return -ENOMEM; memset(&uport, 0, sizeof(struct uart_port)); memset(&uart, 0, sizeof(uart)); base = (FRODO_BASE + FRODO_APCI_OFFSET(i)); /* Memory mapped I/O */ uport.iotype = UPIO_MEM; uport.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ \ uart.port.iotype = UPIO_MEM; uart.port.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ \ | UPF_BOOT_AUTOCONF; /* XXX - no interrupt support yet */ uport.irq = 0; uport.uartclk = HPAPCI_BAUD_BASE * 16; uport.mapbase = base; uport.membase = (char *)(base + DIO_VIRADDRBASE); uport.regshift = 2; uart.port.irq = 0; uart.port.uartclk = HPAPCI_BAUD_BASE * 16; uart.port.mapbase = base; uart.port.membase = (char *)(base + DIO_VIRADDRBASE); uart.port.regshift = 2; line = serial8250_register_port(&uport); line = serial8250_register_8250_port(&uart); if (line < 0) { printk(KERN_NOTICE "8250_hp300: register_serial() APCI" " %d irq %d failed\n", i, uport.irq); " %d irq %d failed\n", i, uart.port.irq); kfree(port); continue; } Loading Loading
drivers/tty/serial/8250/8250.c +24 −47 Original line number Diff line number Diff line Loading @@ -2979,36 +2979,36 @@ void serial8250_resume_port(int line) static int __devinit serial8250_probe(struct platform_device *dev) { struct plat_serial8250_port *p = dev->dev.platform_data; struct uart_port port; struct uart_8250_port uart; int ret, i, irqflag = 0; memset(&port, 0, sizeof(struct uart_port)); memset(&uart, 0, sizeof(uart)); if (share_irqs) irqflag = IRQF_SHARED; for (i = 0; p && p->flags != 0; p++, i++) { port.iobase = p->iobase; port.membase = p->membase; port.irq = p->irq; port.irqflags = p->irqflags; port.uartclk = p->uartclk; port.regshift = p->regshift; port.iotype = p->iotype; port.flags = p->flags; port.mapbase = p->mapbase; port.hub6 = p->hub6; port.private_data = p->private_data; port.type = p->type; port.serial_in = p->serial_in; port.serial_out = p->serial_out; port.handle_irq = p->handle_irq; port.handle_break = p->handle_break; port.set_termios = p->set_termios; port.pm = p->pm; port.dev = &dev->dev; port.irqflags |= irqflag; ret = serial8250_register_port(&port); uart.port.iobase = p->iobase; uart.port.membase = p->membase; uart.port.irq = p->irq; uart.port.irqflags = p->irqflags; uart.port.uartclk = p->uartclk; uart.port.regshift = p->regshift; uart.port.iotype = p->iotype; uart.port.flags = p->flags; uart.port.mapbase = p->mapbase; uart.port.hub6 = p->hub6; uart.port.private_data = p->private_data; uart.port.type = p->type; uart.port.serial_in = p->serial_in; uart.port.serial_out = p->serial_out; uart.port.handle_irq = p->handle_irq; uart.port.handle_break = p->handle_break; uart.port.set_termios = p->set_termios; uart.port.pm = p->pm; uart.port.dev = &dev->dev; uart.port.irqflags |= irqflag; ret = serial8250_register_8250_port(&uart); if (ret < 0) { dev_err(&dev->dev, "unable to register port at index %d " "(IO%lx MEM%llx IRQ%d): %d\n", i, Loading Loading @@ -3081,7 +3081,7 @@ static struct platform_driver serial8250_isa_driver = { static struct platform_device *serial8250_isa_devs; /* * serial8250_register_port and serial8250_unregister_port allows for * serial8250_register_8250_port and serial8250_unregister_port allows for * 16x50 serial ports to be configured at run-time, to support PCMCIA * modems and PCI multiport cards. */ Loading Loading @@ -3197,29 +3197,6 @@ int serial8250_register_8250_port(struct uart_8250_port *up) } EXPORT_SYMBOL(serial8250_register_8250_port); /** * serial8250_register_port - register a serial port * @port: serial port template * * Configure the serial port specified by the request. If the * port exists and is in use, it is hung up and unregistered * first. * * The port is then probed and if necessary the IRQ is autodetected * If this fails an error is returned. * * On success the port is ready to use and the line number is returned. */ int serial8250_register_port(struct uart_port *port) { struct uart_8250_port up; memset(&up, 0, sizeof(up)); memcpy(&up.port, port, sizeof(*port)); return serial8250_register_8250_port(&up); } EXPORT_SYMBOL(serial8250_register_port); /** * serial8250_unregister_port - remove a 16x50 serial port at runtime * @line: serial line number Loading
drivers/tty/serial/8250/8250_acorn.c +11 −11 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) { struct serial_card_info *info; struct serial_card_type *type = id->data; struct uart_port port; struct uart_8250_port uart; unsigned long bus_addr; unsigned int i; Loading @@ -62,19 +62,19 @@ serial_card_probe(struct expansion_card *ec, const struct ecard_id *id) ecard_set_drvdata(ec, info); memset(&port, 0, sizeof(struct uart_port)); port.irq = ec->irq; port.flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; port.uartclk = type->uartclk; port.iotype = UPIO_MEM; port.regshift = 2; port.dev = &ec->dev; memset(&uart, 0, sizeof(struct uart_8250_port)); uart.port.irq = ec->irq; uart.port.flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; uart.port.uartclk = type->uartclk; uart.port.iotype = UPIO_MEM; uart.port.regshift = 2; uart.port.dev = &ec->dev; for (i = 0; i < info->num_ports; i ++) { port.membase = info->vaddr + type->offset[i]; port.mapbase = bus_addr + type->offset[i]; uart.port.membase = info->vaddr + type->offset[i]; uart.port.mapbase = bus_addr + type->offset[i]; info->ports[i] = serial8250_register_port(&port); info->ports[i] = serial8250_register_8250_port(&uart); } return 0; Loading
drivers/tty/serial/8250/8250_dw.c +19 −19 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ static int dw8250_handle_irq(struct uart_port *p) static int __devinit dw8250_probe(struct platform_device *pdev) { struct uart_port port = {}; struct uart_8250_port uart = {}; struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); struct resource *irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); struct device_node *np = pdev->dev.of_node; Loading @@ -104,28 +104,28 @@ static int __devinit dw8250_probe(struct platform_device *pdev) data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; port.private_data = data; spin_lock_init(&port.lock); port.mapbase = regs->start; port.irq = irq->start; port.handle_irq = dw8250_handle_irq; port.type = PORT_8250; port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | uart.port.private_data = data; spin_lock_init(&uart.port.lock); uart.port.mapbase = regs->start; uart.port.irq = irq->start; uart.port.handle_irq = dw8250_handle_irq; uart.port.type = PORT_8250; uart.port.flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP | UPF_FIXED_PORT | UPF_FIXED_TYPE; port.dev = &pdev->dev; uart.port.dev = &pdev->dev; port.iotype = UPIO_MEM; port.serial_in = dw8250_serial_in; port.serial_out = dw8250_serial_out; uart.port.iotype = UPIO_MEM; uart.port.serial_in = dw8250_serial_in; uart.port.serial_out = dw8250_serial_out; if (!of_property_read_u32(np, "reg-io-width", &val)) { switch (val) { case 1: break; case 4: port.iotype = UPIO_MEM32; port.serial_in = dw8250_serial_in32; port.serial_out = dw8250_serial_out32; uart.port.iotype = UPIO_MEM32; uart.port.serial_in = dw8250_serial_in32; uart.port.serial_out = dw8250_serial_out32; break; default: dev_err(&pdev->dev, "unsupported reg-io-width (%u)\n", Loading @@ -135,15 +135,15 @@ static int __devinit dw8250_probe(struct platform_device *pdev) } if (!of_property_read_u32(np, "reg-shift", &val)) port.regshift = val; uart.port.regshift = val; if (of_property_read_u32(np, "clock-frequency", &val)) { dev_err(&pdev->dev, "no clock-frequency property set\n"); return -EINVAL; } port.uartclk = val; uart.uart.port.uartclk = val; data->line = serial8250_register_port(&port); data->line = serial8250_register_8250_port(&uart); if (data->line < 0) return data->line; Loading
drivers/tty/serial/8250/8250_gsc.c +13 −13 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ static int __init serial_init_chip(struct parisc_device *dev) { struct uart_port port; struct uart_8250_port uart; unsigned long address; int err; Loading @@ -48,21 +48,21 @@ static int __init serial_init_chip(struct parisc_device *dev) if (dev->id.sversion != 0x8d) address += 0x800; memset(&port, 0, sizeof(port)); port.iotype = UPIO_MEM; memset(&uart, 0, sizeof(uart)); uart.port.iotype = UPIO_MEM; /* 7.272727MHz on Lasi. Assumed the same for Dino, Wax and Timi. */ port.uartclk = 7272727; port.mapbase = address; port.membase = ioremap_nocache(address, 16); port.irq = dev->irq; port.flags = UPF_BOOT_AUTOCONF; port.dev = &dev->dev; err = serial8250_register_port(&port); uart.port.uartclk = 7272727; uart.port.mapbase = address; uart.port.membase = ioremap_nocache(address, 16); uart.port.irq = dev->irq; uart.port.flags = UPF_BOOT_AUTOCONF; uart.port.dev = &dev->dev; err = serial8250_register_8250_port(&uart); if (err < 0) { printk(KERN_WARNING "serial8250_register_port returned error %d\n", err); iounmap(port.membase); "serial8250_register_8250_port returned error %d\n", err); iounmap(uart.port.membase); return err; } Loading
drivers/tty/serial/8250/8250_hp300.c +13 −13 Original line number Diff line number Diff line Loading @@ -171,7 +171,7 @@ static int __devinit hpdca_init_one(struct dio_dev *d, return 0; } #endif memset(&port, 0, sizeof(struct uart_port)); memset(&uart, 0, sizeof(uart)); /* Memory mapped I/O */ port.iotype = UPIO_MEM; Loading @@ -182,7 +182,7 @@ static int __devinit hpdca_init_one(struct dio_dev *d, port.membase = (char *)(port.mapbase + DIO_VIRADDRBASE); port.regshift = 1; port.dev = &d->dev; line = serial8250_register_port(&port); line = serial8250_register_8250_port(&uart); if (line < 0) { printk(KERN_NOTICE "8250_hp300: register_serial() DCA scode %d" Loading Loading @@ -210,7 +210,7 @@ static int __init hp300_8250_init(void) #ifdef CONFIG_HPAPCI int line; unsigned long base; struct uart_port uport; struct uart_8250_port uart; struct hp300_port *port; int i; #endif Loading Loading @@ -248,26 +248,26 @@ static int __init hp300_8250_init(void) if (!port) return -ENOMEM; memset(&uport, 0, sizeof(struct uart_port)); memset(&uart, 0, sizeof(uart)); base = (FRODO_BASE + FRODO_APCI_OFFSET(i)); /* Memory mapped I/O */ uport.iotype = UPIO_MEM; uport.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ \ uart.port.iotype = UPIO_MEM; uart.port.flags = UPF_SKIP_TEST | UPF_SHARE_IRQ \ | UPF_BOOT_AUTOCONF; /* XXX - no interrupt support yet */ uport.irq = 0; uport.uartclk = HPAPCI_BAUD_BASE * 16; uport.mapbase = base; uport.membase = (char *)(base + DIO_VIRADDRBASE); uport.regshift = 2; uart.port.irq = 0; uart.port.uartclk = HPAPCI_BAUD_BASE * 16; uart.port.mapbase = base; uart.port.membase = (char *)(base + DIO_VIRADDRBASE); uart.port.regshift = 2; line = serial8250_register_port(&uport); line = serial8250_register_8250_port(&uart); if (line < 0) { printk(KERN_NOTICE "8250_hp300: register_serial() APCI" " %d irq %d failed\n", i, uport.irq); " %d irq %d failed\n", i, uart.port.irq); kfree(port); continue; } Loading