tty: serial: meson: Move request the register region to probe

This simplifies resetting the UART controller during probe
and will make it easier to integrate the common clock code
which will require the registers at probe time as well.

Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Signed-off-by: Yu Tu <yu.tu@amlogic.com>
Link: https://lore.kernel.org/r/20220225073922.3947-2-yu.tu@amlogic.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Yu Tu 2022-02-25 15:39:17 +08:00 коммит произвёл Greg Kroah-Hartman
Родитель f166d19f9e
Коммит 841f913e77
1 изменённых файлов: 14 добавлений и 18 удалений

Просмотреть файл

@ -395,24 +395,11 @@ static int meson_uart_verify_port(struct uart_port *port,
static void meson_uart_release_port(struct uart_port *port)
{
devm_iounmap(port->dev, port->membase);
port->membase = NULL;
devm_release_mem_region(port->dev, port->mapbase, port->mapsize);
/* nothing to do */
}
static int meson_uart_request_port(struct uart_port *port)
{
if (!devm_request_mem_region(port->dev, port->mapbase, port->mapsize,
dev_name(port->dev))) {
dev_err(port->dev, "Memory region busy\n");
return -EBUSY;
}
port->membase = devm_ioremap(port->dev, port->mapbase,
port->mapsize);
if (!port->membase)
return -ENOMEM;
return 0;
}
@ -733,6 +720,18 @@ static int meson_uart_probe(struct platform_device *pdev)
if (!port)
return -ENOMEM;
if (!devm_request_mem_region(&pdev->dev, res_mem->start,
resource_size(res_mem),
dev_name(&pdev->dev))) {
dev_err(&pdev->dev, "Memory region busy\n");
return -EBUSY;
}
port->membase = devm_ioremap(&pdev->dev, res_mem->start,
resource_size(res_mem));
if (IS_ERR(port->membase))
return PTR_ERR(port->membase);
ret = meson_uart_probe_clocks(pdev, port);
if (ret)
return ret;
@ -754,10 +753,7 @@ static int meson_uart_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, port);
/* reset port before registering (and possibly registering console) */
if (meson_uart_request_port(port) >= 0) {
meson_uart_reset(port);
meson_uart_release_port(port);
}
meson_uart_reset(port);
ret = uart_add_one_port(&meson_uart_driver, port);
if (ret)