Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 213514
b: refs/heads/master
c: 6b5756f
h: refs/heads/master
v: v3
  • Loading branch information
Anton Vorontsov authored and Greg Kroah-Hartman committed Oct 22, 2010
1 parent db60384 commit 0730174
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 23 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2f8b9c15cd88ce22bd80e6eb3988dbaa49f1efd3
refs/heads/master: 6b5756f176568a710d008d3b478128fafb6707f0
60 changes: 38 additions & 22 deletions trunk/drivers/serial/altera_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -498,38 +498,54 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)
{
struct altera_uart_platform_uart *platp = pdev->dev.platform_data;
struct uart_port *port;
int i;
struct resource *res_mem;
struct resource *res_irq;
int i = pdev->id;

for (i = 0; i < CONFIG_SERIAL_ALTERA_UART_MAXPORTS && platp[i].mapbase; i++) {
port = &altera_uart_ports[i].port;
/* -1 emphasizes that the platform must have one port, no .N suffix */
if (i == -1)
i = 0;

port->line = i;
port->type = PORT_ALTERA_UART;
port->mapbase = platp[i].mapbase;
port->membase = ioremap(port->mapbase, ALTERA_UART_SIZE);
port->iotype = SERIAL_IO_MEM;
port->irq = platp[i].irq;
port->uartclk = platp[i].uartclk;
port->ops = &altera_uart_ops;
port->flags = ASYNC_BOOT_AUTOCONF;
if (i >= CONFIG_SERIAL_ALTERA_UART_MAXPORTS)
return -EINVAL;

uart_add_one_port(&altera_uart_driver, port);
}
port = &altera_uart_ports[i].port;

res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (res_mem)
port->mapbase = res_mem->start;
else if (platp->mapbase)
port->mapbase = platp->mapbase;
else
return -EINVAL;

res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (res_irq)
port->irq = res_irq->start;
else if (platp->irq)
port->irq = platp->irq;

port->membase = ioremap(port->mapbase, ALTERA_UART_SIZE);
if (!port->membase)
return -ENOMEM;

port->line = i;
port->type = PORT_ALTERA_UART;
port->iotype = SERIAL_IO_MEM;
port->uartclk = platp->uartclk;
port->ops = &altera_uart_ops;
port->flags = ASYNC_BOOT_AUTOCONF;

uart_add_one_port(&altera_uart_driver, port);

return 0;
}

static int __devexit altera_uart_remove(struct platform_device *pdev)
{
struct uart_port *port;
int i;

for (i = 0; i < CONFIG_SERIAL_ALTERA_UART_MAXPORTS; i++) {
port = &altera_uart_ports[i].port;
if (port)
uart_remove_one_port(&altera_uart_driver, port);
}
struct uart_port *port = &altera_uart_ports[pdev->id].port;

uart_remove_one_port(&altera_uart_driver, port);
return 0;
}

Expand Down

0 comments on commit 0730174

Please sign in to comment.