Merge branch 'rmobile' of git://git.denx.de/u-boot-sh
[platform/kernel/u-boot.git] / drivers / pinctrl / uniphier / pinctrl-uniphier-core.c
index 0ad15ab..3f891f1 100644 (file)
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ * Copyright (C) 2015-2016 Socionext Inc.
+ *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <common.h>
-#include <mapmem.h>
 #include <linux/io.h>
 #include <linux/err.h>
 #include <linux/sizes.h>
@@ -14,6 +13,8 @@
 
 #include "pinctrl-uniphier.h"
 
+static const char *uniphier_pinctrl_dummy_name = "_dummy";
+
 static int uniphier_pinctrl_get_groups_count(struct udevice *dev)
 {
        struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
@@ -26,6 +27,9 @@ static const char *uniphier_pinctrl_get_group_name(struct udevice *dev,
 {
        struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
 
+       if (!priv->socdata->groups[selector].name)
+               return uniphier_pinctrl_dummy_name;
+
        return priv->socdata->groups[selector].name;
 }
 
@@ -41,6 +45,9 @@ static const char *uniphier_pinmux_get_function_name(struct udevice *dev,
 {
        struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
 
+       if (!priv->socdata->functions[selector])
+               return uniphier_pinctrl_dummy_name;
+
        return priv->socdata->functions[selector];
 }
 
@@ -180,7 +187,7 @@ int uniphier_pinctrl_probe(struct udevice *dev,
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
 
-       priv->base = map_sysmem(addr, SZ_4K);
+       priv->base = devm_ioremap(dev, addr, SZ_4K);
        if (!priv->base)
                return -ENOMEM;
 
@@ -188,12 +195,3 @@ int uniphier_pinctrl_probe(struct udevice *dev,
 
        return 0;
 }
-
-int uniphier_pinctrl_remove(struct udevice *dev)
-{
-       struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
-
-       unmap_sysmem(priv->base);
-
-       return 0;
-}