Re: [PATCH V5 2/5] tty: serial: meson: Move request the register region.

From: Yu Tu
Date: Mon Jan 10 2022 - 21:48:48 EST


Hi Jiri ,
Thank you very much for your reply.

On 2022/1/10 19:58, Jiri Slaby wrote:
[ EXTERNAL EMAIL ]

Hi,

On 10. 01. 22, 11:42, Yu Tu wrote:
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.

And you are *also* switching devm_request_mem_region+devm_ioremap into devm_ioremap_resource without even noting it here. It should've been done in a separate patch.

I can change it as you suggest。
The switching devm_request_mem_region+devm_ioremap into
devm_ioremap_resource in a separate patch.

And no, do not resend a new version in the next few days. Having v5 in 20 days is a bit too much. Give maintainers and reviewers some more space to express themselves.
I am so sorry if PATCH is sent too frequently, which has disturbed you.
How often should I send it? Or under what circumstances can I send the next version?

Signed-off-by: Yu Tu <yu.tu@xxxxxxxxxxx>
---
  drivers/tty/serial/meson_uart.c | 24 ++++++------------------
  1 file changed, 6 insertions(+), 18 deletions(-)

diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c
index 45e00d928253..7570958d010c 100644
--- a/drivers/tty/serial/meson_uart.c
+++ b/drivers/tty/serial/meson_uart.c
@@ -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,10 @@ static int meson_uart_probe(struct platform_device *pdev)
      if (!port)
          return -ENOMEM;
+    port->membase = devm_ioremap_resource(&pdev->dev, 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 +745,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)

thanks,