]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/pinctrl/berlin/berlin.c
Merge remote-tracking branch 'ipsec/master'
[karo-tx-linux.git] / drivers / pinctrl / berlin / berlin.c
index 65b0e211b89e751d6456571947f361a761391a9a..46f2b4818da3ae3a1c736b172916ab000252d3a2 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2014 Marvell Technology Group Ltd.
  *
- * Antoine TÃ\83©nart <antoine.tenart@free-electrons.com>
+ * Antoine Ténart <antoine.tenart@free-electrons.com>
  *
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
@@ -292,20 +292,14 @@ static struct pinctrl_desc berlin_pctrl_desc = {
        .owner          = THIS_MODULE,
 };
 
-int berlin_pinctrl_probe(struct platform_device *pdev,
-                        const struct berlin_pinctrl_desc *desc)
+int berlin_pinctrl_probe_regmap(struct platform_device *pdev,
+                               const struct berlin_pinctrl_desc *desc,
+                               struct regmap *regmap)
 {
        struct device *dev = &pdev->dev;
-       struct device_node *parent_np = of_get_parent(dev->of_node);
        struct berlin_pinctrl *pctrl;
-       struct regmap *regmap;
        int ret;
 
-       regmap = syscon_node_to_regmap(parent_np);
-       of_node_put(parent_np);
-       if (IS_ERR(regmap))
-               return PTR_ERR(regmap);
-
        pctrl = devm_kzalloc(dev, sizeof(*pctrl), GFP_KERNEL);
        if (!pctrl)
                return -ENOMEM;
@@ -323,10 +317,24 @@ int berlin_pinctrl_probe(struct platform_device *pdev,
        }
 
        pctrl->pctrl_dev = pinctrl_register(&berlin_pctrl_desc, dev, pctrl);
-       if (!pctrl->pctrl_dev) {
+       if (IS_ERR(pctrl->pctrl_dev)) {
                dev_err(dev, "failed to register pinctrl driver\n");
-               return -EINVAL;
+               return PTR_ERR(pctrl->pctrl_dev);
        }
 
        return 0;
 }
+
+int berlin_pinctrl_probe(struct platform_device *pdev,
+                        const struct berlin_pinctrl_desc *desc)
+{
+       struct device *dev = &pdev->dev;
+       struct device_node *parent_np = of_get_parent(dev->of_node);
+       struct regmap *regmap = syscon_node_to_regmap(parent_np);
+
+       of_node_put(parent_np);
+       if (IS_ERR(regmap))
+               return PTR_ERR(regmap);
+
+       return berlin_pinctrl_probe_regmap(pdev, desc, regmap);
+}