Use the safer devm versions of memory mapping functions.

Signed-off-by: Enrico Weigelt, metux IT consult <i...@metux.net>
---
 drivers/tty/serial/sb1250-duart.c | 42 +++++++++++++++++++++++++--------------
 1 file changed, 27 insertions(+), 15 deletions(-)

diff --git a/drivers/tty/serial/sb1250-duart.c 
b/drivers/tty/serial/sb1250-duart.c
index 655961c..e77eef6 100644
--- a/drivers/tty/serial/sb1250-duart.c
+++ b/drivers/tty/serial/sb1250-duart.c
@@ -651,14 +651,18 @@ static void sbd_release_port(struct uart_port *uport)
        struct sbd_port *sport = to_sport(uport);
        struct sbd_duart *duart = sport->duart;
 
-       iounmap(sport->memctrl);
+       devm_iounmap(uport->dev, sport->memctrl);
        sport->memctrl = NULL;
-       iounmap(uport->membase);
+       devm_iounmap(uport->dev, uport->membase);
        uport->membase = NULL;
 
        if(refcount_dec_and_test(&duart->map_guard))
-               release_mem_region(duart->mapctrl, DUART_CHANREG_SPACING);
-       release_mem_region(uport->mapbase, DUART_CHANREG_SPACING);
+               devm_release_mem_region(uport->dev,
+                                       duart->mapctrl,
+                                       DUART_CHANREG_SPACING);
+       devm_release_mem_region(uport->dev,
+                               uport->mapbase,
+                               DUART_CHANREG_SPACING);
 }
 
 static int sbd_map_port(struct uart_port *uport)
@@ -667,19 +671,21 @@ static int sbd_map_port(struct uart_port *uport)
        struct sbd_duart *duart = sport->duart;
 
        if (!uport->membase)
-               uport->membase = ioremap_nocache(uport->mapbase,
-                                                DUART_CHANREG_SPACING);
+               uport->membase = devm_ioremap_nocache(uport->dev,
+                                                     uport->mapbase,
+                                                     DUART_CHANREG_SPACING);
        if (!uport->membase) {
                dev_err(uport->dev, "Cannot map MMIO (base)\n");
                return -ENOMEM;
        }
 
        if (!sport->memctrl)
-               sport->memctrl = ioremap_nocache(duart->mapctrl,
-                                                DUART_CHANREG_SPACING);
+               sport->memctrl = devm_ioremap_nocache(uport->dev,
+                                                     duart->mapctrl,
+                                                     DUART_CHANREG_SPACING);
        if (!sport->memctrl) {
                dev_err(uport->dev, "Cannot map MMIO (ctrl)\n");
-               iounmap(uport->membase);
+               devm_iounmap(uport->dev, uport->membase);
                uport->membase = NULL;
                return -ENOMEM;
        }
@@ -693,15 +699,18 @@ static int sbd_request_port(struct uart_port *uport)
        struct sbd_duart *duart = to_sport(uport)->duart;
        int ret = 0;
 
-       if (!request_mem_region(uport->mapbase, DUART_CHANREG_SPACING,
+       if (!devm_request_mem_region(uport->dev,
+                               uport->mapbase, DUART_CHANREG_SPACING,
                                "sb1250-duart")) {
                printk(err);
                return -EBUSY;
        }
        refcount_inc(&duart->map_guard);
        if (refcount_read(&duart->map_guard) == 1) {
-               if (!request_mem_region(duart->mapctrl, DUART_CHANREG_SPACING,
-                                       "sb1250-duart")) {
+               if (!devm_request_mem_region(uport->dev,
+                                            duart->mapctrl,
+                                            DUART_CHANREG_SPACING,
+                                            "sb1250-duart")) {
                        refcount_dec(&duart->map_guard);
                        printk(err);
                        ret = -EBUSY;
@@ -711,12 +720,15 @@ static int sbd_request_port(struct uart_port *uport)
                ret = sbd_map_port(uport);
                if (ret) {
                        if (refcount_dec_and_test(&duart->map_guard))
-                               release_mem_region(duart->mapctrl,
-                                                  DUART_CHANREG_SPACING);
+                               devm_release_mem_region(uport->dev,
+                                                       duart->mapctrl,
+                                                       DUART_CHANREG_SPACING);
                }
        }
        if (ret) {
-               release_mem_region(uport->mapbase, DUART_CHANREG_SPACING);
+               devm_release_mem_region(uport->dev,
+                                       uport->mapbase,
+                                       DUART_CHANREG_SPACING);
                return ret;
        }
        return 0;
-- 
1.9.1

Reply via email to