diff options
| -rw-r--r-- | drivers/tty/serial/8250/8250.c | 71 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_acorn.c | 22 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_dw.c | 36 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_gsc.c | 24 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_hp300.c | 26 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 92 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_pnp.c | 28 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/serial_cs.c | 30 | ||||
| -rw-r--r-- | include/linux/serial_8250.h | 1 | 
9 files changed, 153 insertions, 177 deletions
diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c index 8123f784bcd..2b2468506e0 100644 --- a/drivers/tty/serial/8250/8250.c +++ b/drivers/tty/serial/8250/8250.c @@ -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, @@ -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.   */ @@ -3198,29 +3198,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   * diff --git a/drivers/tty/serial/8250/8250_acorn.c b/drivers/tty/serial/8250/8250_acorn.c index b0ce8c56f1a..857498312a9 100644 --- a/drivers/tty/serial/8250/8250_acorn.c +++ b/drivers/tty/serial/8250/8250_acorn.c @@ -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; @@ -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; diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c index f574eef3075..afb955fdef0 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -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; @@ -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; +	uart.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 | +	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", @@ -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; diff --git a/drivers/tty/serial/8250/8250_gsc.c b/drivers/tty/serial/8250/8250_gsc.c index d8c0ffbfa6e..097dff9c08a 100644 --- a/drivers/tty/serial/8250/8250_gsc.c +++ b/drivers/tty/serial/8250/8250_gsc.c @@ -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; @@ -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; +	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_port(&port); +	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;  	} diff --git a/drivers/tty/serial/8250/8250_hp300.c b/drivers/tty/serial/8250/8250_hp300.c index c13438c9301..8f1dd2cc00a 100644 --- a/drivers/tty/serial/8250/8250_hp300.c +++ b/drivers/tty/serial/8250/8250_hp300.c @@ -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; @@ -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" @@ -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 @@ -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;  		} diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index 66e5909d0a1..2ef9a075eec 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c @@ -44,7 +44,7 @@ struct pci_serial_quirk {  	int	(*init)(struct pci_dev *dev);  	int	(*setup)(struct serial_private *,  			 const struct pciserial_board *, -			 struct uart_port *, int); +			 struct uart_8250_port *, int);  	void	(*exit)(struct pci_dev *dev);  }; @@ -59,7 +59,7 @@ struct serial_private {  };  static int pci_default_setup(struct serial_private*, -	  const struct pciserial_board*, struct uart_port*, int); +	  const struct pciserial_board*, struct uart_8250_port *, int);  static void moan_device(const char *str, struct pci_dev *dev)  { @@ -74,7 +74,7 @@ static void moan_device(const char *str, struct pci_dev *dev)  }  static int -setup_port(struct serial_private *priv, struct uart_port *port, +setup_port(struct serial_private *priv, struct uart_8250_port *port,  	   int bar, int offset, int regshift)  {  	struct pci_dev *dev = priv->dev; @@ -93,17 +93,17 @@ setup_port(struct serial_private *priv, struct uart_port *port,  		if (!priv->remapped_bar[bar])  			return -ENOMEM; -		port->iotype = UPIO_MEM; -		port->iobase = 0; -		port->mapbase = base + offset; -		port->membase = priv->remapped_bar[bar] + offset; -		port->regshift = regshift; +		port->port.iotype = UPIO_MEM; +		port->port.iobase = 0; +		port->port.mapbase = base + offset; +		port->port.membase = priv->remapped_bar[bar] + offset; +		port->port.regshift = regshift;  	} else { -		port->iotype = UPIO_PORT; -		port->iobase = base + offset; -		port->mapbase = 0; -		port->membase = NULL; -		port->regshift = 0; +		port->port.iotype = UPIO_PORT; +		port->port.iobase = base + offset; +		port->port.mapbase = 0; +		port->port.membase = NULL; +		port->port.regshift = 0;  	}  	return 0;  } @@ -113,7 +113,7 @@ setup_port(struct serial_private *priv, struct uart_port *port,   */  static int addidata_apci7800_setup(struct serial_private *priv,  				const struct pciserial_board *board, -				struct uart_port *port, int idx) +				struct uart_8250_port *port, int idx)  {  	unsigned int bar = 0, offset = board->first_offset;  	bar = FL_GET_BASE(board->flags); @@ -140,7 +140,7 @@ static int addidata_apci7800_setup(struct serial_private *priv,   */  static int  afavlab_setup(struct serial_private *priv, const struct pciserial_board *board, -	      struct uart_port *port, int idx) +	      struct uart_8250_port *port, int idx)  {  	unsigned int bar, offset = board->first_offset; @@ -195,7 +195,7 @@ static int pci_hp_diva_init(struct pci_dev *dev)  static int  pci_hp_diva_setup(struct serial_private *priv,  		const struct pciserial_board *board, -		struct uart_port *port, int idx) +		struct uart_8250_port *port, int idx)  {  	unsigned int offset = board->first_offset;  	unsigned int bar = FL_GET_BASE(board->flags); @@ -370,7 +370,7 @@ static void __devexit pci_ni8430_exit(struct pci_dev *dev)  /* SBS Technologies Inc. PMC-OCTPRO and P-OCTAL cards */  static int  sbs_setup(struct serial_private *priv, const struct pciserial_board *board, -		struct uart_port *port, int idx) +		struct uart_8250_port *port, int idx)  {  	unsigned int bar, offset = board->first_offset; @@ -525,7 +525,7 @@ static int pci_siig_init(struct pci_dev *dev)  static int pci_siig_setup(struct serial_private *priv,  			  const struct pciserial_board *board, -			  struct uart_port *port, int idx) +			  struct uart_8250_port *port, int idx)  {  	unsigned int bar = FL_GET_BASE(board->flags) + idx, offset = 0; @@ -619,7 +619,7 @@ static int pci_timedia_init(struct pci_dev *dev)  static int  pci_timedia_setup(struct serial_private *priv,  		  const struct pciserial_board *board, -		  struct uart_port *port, int idx) +		  struct uart_8250_port *port, int idx)  {  	unsigned int bar = 0, offset = board->first_offset; @@ -653,7 +653,7 @@ pci_timedia_setup(struct serial_private *priv,  static int  titan_400l_800l_setup(struct serial_private *priv,  		      const struct pciserial_board *board, -		      struct uart_port *port, int idx) +		      struct uart_8250_port *port, int idx)  {  	unsigned int bar, offset = board->first_offset; @@ -754,7 +754,7 @@ static int pci_ni8430_init(struct pci_dev *dev)  static int  pci_ni8430_setup(struct serial_private *priv,  		 const struct pciserial_board *board, -		 struct uart_port *port, int idx) +		 struct uart_8250_port *port, int idx)  {  	void __iomem *p;  	unsigned long base, len; @@ -781,7 +781,7 @@ pci_ni8430_setup(struct serial_private *priv,  static int pci_netmos_9900_setup(struct serial_private *priv,  				const struct pciserial_board *board, -				struct uart_port *port, int idx) +				struct uart_8250_port *port, int idx)  {  	unsigned int bar; @@ -1035,7 +1035,7 @@ static int pci_oxsemi_tornado_init(struct pci_dev *dev)  static int  pci_default_setup(struct serial_private *priv,  		  const struct pciserial_board *board, -		  struct uart_port *port, int idx) +		  struct uart_8250_port *port, int idx)  {  	unsigned int bar, offset = board->first_offset, maxnr; @@ -1057,15 +1057,15 @@ pci_default_setup(struct serial_private *priv,  static int  ce4100_serial_setup(struct serial_private *priv,  		  const struct pciserial_board *board, -		  struct uart_port *port, int idx) +		  struct uart_8250_port *port, int idx)  {  	int ret;  	ret = setup_port(priv, port, 0, 0, board->reg_shift); -	port->iotype = UPIO_MEM32; -	port->type = PORT_XSCALE; -	port->flags = (port->flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); -	port->regshift = 2; +	port->port.iotype = UPIO_MEM32; +	port->port.type = PORT_XSCALE; +	port->port.flags = (port->port.flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); +	port->port.regshift = 2;  	return ret;  } @@ -1073,16 +1073,16 @@ ce4100_serial_setup(struct serial_private *priv,  static int  pci_omegapci_setup(struct serial_private *priv,  		      const struct pciserial_board *board, -		      struct uart_port *port, int idx) +		      struct uart_8250_port *port, int idx)  {  	return setup_port(priv, port, 2, idx * 8, 0);  }  static int skip_tx_en_setup(struct serial_private *priv,  			const struct pciserial_board *board, -			struct uart_port *port, int idx) +			struct uart_8250_port *port, int idx)  { -	port->flags |= UPF_NO_TXEN_TEST; +	port->port.flags |= UPF_NO_TXEN_TEST;  	printk(KERN_DEBUG "serial8250: skipping TxEn test for device "  			  "[%04x:%04x] subsystem [%04x:%04x]\n",  			  priv->dev->vendor, @@ -1131,11 +1131,11 @@ static unsigned int kt_serial_in(struct uart_port *p, int offset)  static int kt_serial_setup(struct serial_private *priv,  			   const struct pciserial_board *board, -			   struct uart_port *port, int idx) +			   struct uart_8250_port *port, int idx)  { -	port->flags |= UPF_BUG_THRE; -	port->serial_in = kt_serial_in; -	port->handle_break = kt_handle_break; +	port->port.flags |= UPF_BUG_THRE; +	port->port.serial_in = kt_serial_in; +	port->port.handle_break = kt_handle_break;  	return skip_tx_en_setup(priv, board, port, idx);  } @@ -1151,9 +1151,9 @@ static int pci_eg20t_init(struct pci_dev *dev)  static int  pci_xr17c154_setup(struct serial_private *priv,  		  const struct pciserial_board *board, -		  struct uart_port *port, int idx) +		  struct uart_8250_port *port, int idx)  { -	port->flags |= UPF_EXAR_EFR; +	port->port.flags |= UPF_EXAR_EFR;  	return pci_default_setup(priv, board, port, idx);  } @@ -2720,7 +2720,7 @@ serial_pci_matches(const struct pciserial_board *board,  struct serial_private *  pciserial_init_ports(struct pci_dev *dev, const struct pciserial_board *board)  { -	struct uart_port serial_port; +	struct uart_8250_port uart;  	struct serial_private *priv;  	struct pci_serial_quirk *quirk;  	int rc, nr_ports, i; @@ -2760,22 +2760,22 @@ pciserial_init_ports(struct pci_dev *dev, const struct pciserial_board *board)  	priv->dev = dev;  	priv->quirk = quirk; -	memset(&serial_port, 0, sizeof(struct uart_port)); -	serial_port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; -	serial_port.uartclk = board->base_baud * 16; -	serial_port.irq = get_pci_irq(dev, board); -	serial_port.dev = &dev->dev; +	memset(&uart, 0, sizeof(uart)); +	uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ; +	uart.port.uartclk = board->base_baud * 16; +	uart.port.irq = get_pci_irq(dev, board); +	uart.port.dev = &dev->dev;  	for (i = 0; i < nr_ports; i++) { -		if (quirk->setup(priv, board, &serial_port, i)) +		if (quirk->setup(priv, board, &uart, i))  			break;  #ifdef SERIAL_DEBUG_PCI  		printk(KERN_DEBUG "Setup PCI port: port %lx, irq %d, type %d\n", -		       serial_port.iobase, serial_port.irq, serial_port.iotype); +		       uart.port.iobase, uart.port.irq, uart.port.iotype);  #endif -		priv->line[i] = serial8250_register_port(&serial_port); +		priv->line[i] = serial8250_register_8250_port(&uart);  		if (priv->line[i] < 0) {  			printk(KERN_WARNING "Couldn't register serial port %s: %d\n", pci_name(dev), priv->line[i]);  			break; diff --git a/drivers/tty/serial/8250/8250_pnp.c b/drivers/tty/serial/8250/8250_pnp.c index a2f236510ff..fde5aa60d51 100644 --- a/drivers/tty/serial/8250/8250_pnp.c +++ b/drivers/tty/serial/8250/8250_pnp.c @@ -424,7 +424,7 @@ static int __devinit serial_pnp_guess_board(struct pnp_dev *dev, int *flags)  static int __devinit  serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)  { -	struct uart_port port; +	struct uart_8250_port uart;  	int ret, line, flags = dev_id->driver_data;  	if (flags & UNKNOWN_DEV) { @@ -433,32 +433,32 @@ serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)  			return ret;  	} -	memset(&port, 0, sizeof(struct uart_port)); +	memset(&uart, 0, sizeof(uart));  	if (pnp_irq_valid(dev, 0)) -		port.irq = pnp_irq(dev, 0); +		uart.port.irq = pnp_irq(dev, 0);  	if (pnp_port_valid(dev, 0)) { -		port.iobase = pnp_port_start(dev, 0); -		port.iotype = UPIO_PORT; +		uart.port.iobase = pnp_port_start(dev, 0); +		uart.port.iotype = UPIO_PORT;  	} else if (pnp_mem_valid(dev, 0)) { -		port.mapbase = pnp_mem_start(dev, 0); -		port.iotype = UPIO_MEM; -		port.flags = UPF_IOREMAP; +		uart.port.mapbase = pnp_mem_start(dev, 0); +		uart.port.iotype = UPIO_MEM; +		uart.port.flags = UPF_IOREMAP;  	} else  		return -ENODEV;  #ifdef SERIAL_DEBUG_PNP  	printk(KERN_DEBUG  		"Setup PNP port: port %x, mem 0x%lx, irq %d, type %d\n", -		       port.iobase, port.mapbase, port.irq, port.iotype); +		       uart.port.iobase, uart.port.mapbase, uart.port.irq, uart.port.iotype);  #endif -	port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF; +	uart.port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF;  	if (pnp_irq_flags(dev, 0) & IORESOURCE_IRQ_SHAREABLE) -		port.flags |= UPF_SHARE_IRQ; -	port.uartclk = 1843200; -	port.dev = &dev->dev; +		uart.port.flags |= UPF_SHARE_IRQ; +	uart.port.uartclk = 1843200; +	uart.port.dev = &dev->dev; -	line = serial8250_register_port(&port); +	line = serial8250_register_8250_port(&uart);  	if (line < 0)  		return -ENODEV; diff --git a/drivers/tty/serial/8250/serial_cs.c b/drivers/tty/serial/8250/serial_cs.c index 29b695d041e..b7d48b34639 100644 --- a/drivers/tty/serial/8250/serial_cs.c +++ b/drivers/tty/serial/8250/serial_cs.c @@ -73,7 +73,7 @@ struct serial_quirk {  	unsigned int prodid;  	int multi;		/* 1 = multifunction, > 1 = # ports */  	void (*config)(struct pcmcia_device *); -	void (*setup)(struct pcmcia_device *, struct uart_port *); +	void (*setup)(struct pcmcia_device *, struct uart_8250_port *);  	void (*wakeup)(struct pcmcia_device *);  	int (*post)(struct pcmcia_device *);  }; @@ -105,9 +105,9 @@ struct serial_cfg_mem {   * Elan VPU16551 UART with 14.7456MHz oscillator   * manfid 0x015D, 0x4C45   */ -static void quirk_setup_brainboxes_0104(struct pcmcia_device *link, struct uart_port *port) +static void quirk_setup_brainboxes_0104(struct pcmcia_device *link, struct uart_8250_port *uart)  { -	port->uartclk = 14745600; +	uart->port.uartclk = 14745600;  }  static int quirk_post_ibm(struct pcmcia_device *link) @@ -343,25 +343,25 @@ static void serial_detach(struct pcmcia_device *link)  static int setup_serial(struct pcmcia_device *handle, struct serial_info * info,  			unsigned int iobase, int irq)  { -	struct uart_port port; +	struct uart_8250_port uart;  	int line; -	memset(&port, 0, sizeof (struct uart_port)); -	port.iobase = iobase; -	port.irq = irq; -	port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ; -	port.uartclk = 1843200; -	port.dev = &handle->dev; +	memset(&uart, 0, sizeof(uart)); +	uart.port.iobase = iobase; +	uart.port.irq = irq; +	uart.port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ; +	uart.port.uartclk = 1843200; +	uart.port.dev = &handle->dev;  	if (buggy_uart) -		port.flags |= UPF_BUGGY_UART; +		uart.port.flags |= UPF_BUGGY_UART;  	if (info->quirk && info->quirk->setup) -		info->quirk->setup(handle, &port); +		info->quirk->setup(handle, &uart); -	line = serial8250_register_port(&port); +	line = serial8250_register_8250_port(&uart);  	if (line < 0) { -		printk(KERN_NOTICE "serial_cs: serial8250_register_port() at " -		       "0x%04lx, irq %d failed\n", (u_long)iobase, irq); +		pr_err("serial_cs: serial8250_register_8250_port() at 0x%04lx, irq %d failed\n", +							(unsigned long)iobase, irq);  		return -EINVAL;  	} diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h index a416e92012e..f41dcc94921 100644 --- a/include/linux/serial_8250.h +++ b/include/linux/serial_8250.h @@ -69,7 +69,6 @@ struct uart_port;  struct uart_8250_port;  int serial8250_register_8250_port(struct uart_8250_port *); -int serial8250_register_port(struct uart_port *);  void serial8250_unregister_port(int line);  void serial8250_suspend_port(int line);  void serial8250_resume_port(int line);  |