diff options
| author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2005-07-29 17:03:30 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-29 18:01:13 -0400 |
| commit | 655a0a7799cddf9a469916c07ac22f1106abc2be (patch) | |
| tree | 68046518782408b540c41645ee75ac155f3b332a | |
| parent | 3d483f47579461a4715db33c68ef8752e5a97a2d (diff) | |
[PATCH] serial: add MMIO support to 8250_pnp
Add support for UARTs in MMIO space and clean up a little whitespace.
HP legacy-free ia64 machines need this.
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | drivers/serial/8250_pnp.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index 18c58fb73899..6b321e82cafb 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
| @@ -394,7 +394,7 @@ static int __devinit serial_pnp_guess_board(struct pnp_dev *dev, int *flags) | |||
| 394 | } | 394 | } |
| 395 | 395 | ||
| 396 | static int __devinit | 396 | static int __devinit |
| 397 | serial_pnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id) | 397 | serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id) |
| 398 | { | 398 | { |
| 399 | struct uart_port port; | 399 | struct uart_port port; |
| 400 | int ret, line, flags = dev_id->driver_data; | 400 | int ret, line, flags = dev_id->driver_data; |
| @@ -406,15 +406,23 @@ serial_pnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id) | |||
| 406 | } | 406 | } |
| 407 | 407 | ||
| 408 | memset(&port, 0, sizeof(struct uart_port)); | 408 | memset(&port, 0, sizeof(struct uart_port)); |
| 409 | port.irq = pnp_irq(dev,0); | 409 | port.irq = pnp_irq(dev, 0); |
| 410 | port.iobase = pnp_port_start(dev, 0); | 410 | if (pnp_port_valid(dev, 0)) { |
| 411 | port.iobase = pnp_port_start(dev, 0); | ||
| 412 | port.iotype = UPIO_PORT; | ||
| 413 | } else if (pnp_mem_valid(dev, 0)) { | ||
| 414 | port.mapbase = pnp_mem_start(dev, 0); | ||
| 415 | port.iotype = UPIO_MEM; | ||
| 416 | port.flags = UPF_IOREMAP; | ||
| 417 | } else | ||
| 418 | return -ENODEV; | ||
| 411 | 419 | ||
| 412 | #ifdef SERIAL_DEBUG_PNP | 420 | #ifdef SERIAL_DEBUG_PNP |
| 413 | printk("Setup PNP port: port %x, irq %d, type %d\n", | 421 | printk("Setup PNP port: port %x, mem 0x%lx, irq %d, type %d\n", |
| 414 | port.iobase, port.irq, port.iotype); | 422 | port.iobase, port.mapbase, port.irq, port.iotype); |
| 415 | #endif | 423 | #endif |
| 416 | 424 | ||
| 417 | port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF; | 425 | port.flags |= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF; |
| 418 | port.uartclk = 1843200; | 426 | port.uartclk = 1843200; |
| 419 | port.dev = &dev->dev; | 427 | port.dev = &dev->dev; |
| 420 | 428 | ||
| @@ -426,7 +434,7 @@ serial_pnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id) | |||
| 426 | 434 | ||
| 427 | } | 435 | } |
| 428 | 436 | ||
| 429 | static void __devexit serial_pnp_remove(struct pnp_dev * dev) | 437 | static void __devexit serial_pnp_remove(struct pnp_dev *dev) |
| 430 | { | 438 | { |
| 431 | long line = (long)pnp_get_drvdata(dev); | 439 | long line = (long)pnp_get_drvdata(dev); |
| 432 | if (line) | 440 | if (line) |
