Skip to content

Commit

Permalink
tty: serial: bcm63xx: Eliminate unnecessary request/release functions
Browse files Browse the repository at this point in the history
We don't really need to perform the ioremap "on demand" so it's simpler
just to do it from the probe function.  This also lets us eliminate the
UART_REG_SIZE constant and rely on the resource information passed in
from the DT or platform code.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Kevin Cernekee authored and Greg Kroah-Hartman committed Nov 6, 2014
1 parent 1ab8e4b commit e979f3b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 22 deletions.
30 changes: 10 additions & 20 deletions drivers/tty/serial/bcm63xx_uart.c
Original file line number Diff line number Diff line change
Expand Up @@ -588,20 +588,7 @@ static void bcm_uart_set_termios(struct uart_port *port,
*/
static int bcm_uart_request_port(struct uart_port *port)
{
unsigned int size;

size = UART_REG_SIZE;
if (!request_mem_region(port->mapbase, size, "bcm63xx")) {
dev_err(port->dev, "Memory region busy\n");
return -EBUSY;
}

port->membase = ioremap(port->mapbase, size);
if (!port->membase) {
dev_err(port->dev, "Unable to map registers\n");
release_mem_region(port->mapbase, size);
return -EBUSY;
}
/* UARTs always present */
return 0;
}

Expand All @@ -610,8 +597,7 @@ static int bcm_uart_request_port(struct uart_port *port)
*/
static void bcm_uart_release_port(struct uart_port *port)
{
release_mem_region(port->mapbase, UART_REG_SIZE);
iounmap(port->membase);
/* Nothing to release ... */
}

/*
Expand Down Expand Up @@ -833,13 +819,20 @@ static int bcm_uart_probe(struct platform_device *pdev)
if (pdev->id < 0 || pdev->id >= BCM63XX_NR_UARTS)
return -EINVAL;

if (ports[pdev->id].membase)
port = &ports[pdev->id];
if (port->membase)
return -EBUSY;
memset(port, 0, sizeof(*port));

res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res_mem)
return -ENODEV;

port->mapbase = res_mem->start;
port->membase = devm_ioremap_resource(&pdev->dev, res_mem);
if (IS_ERR(port->membase))
return PTR_ERR(port->membase);

res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
if (!res_irq)
return -ENODEV;
Expand All @@ -849,10 +842,7 @@ static int bcm_uart_probe(struct platform_device *pdev)
if (IS_ERR(clk))
return -ENODEV;

port = &ports[pdev->id];
memset(port, 0, sizeof(*port));
port->iotype = UPIO_MEM;
port->mapbase = res_mem->start;
port->irq = res_irq->start;
port->ops = &bcm_uart_ops;
port->flags = UPF_BOOT_AUTOCONF;
Expand Down
2 changes: 0 additions & 2 deletions include/linux/serial_bcm63xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,4 @@
UART_FIFO_PARERR_MASK | \
UART_FIFO_BRKDET_MASK)

#define UART_REG_SIZE 24

#endif /* _LINUX_SERIAL_BCM63XX_H */

0 comments on commit e979f3b

Please sign in to comment.