Instead of reimplement afunction to do 'dt_node_to_map' task like
'rt2880_pinctrl_dt_node_to_map' make use of 'pinconf_generic_dt_node_to_map_all'
generic function for this task. Also use its equivalent function for free which
is 'pinconf_generic_dt_free_map'. Remove 'rt2880_pinctrl_dt_node_to_map' 
function
which is not needed anymore. This decrease a bit driver LOC and make it more
generic. To properly compile this changes 'GENERIC_PINCONF' option is selected
with the driver in its Kconfig file.

Signed-off-by: Sergio Paracuellos <sergio.paracuel...@gmail.com>
---
 drivers/staging/mt7621-pinctrl/Kconfig        |  1 +
 .../staging/mt7621-pinctrl/pinctrl-rt2880.c   | 42 ++-----------------
 2 files changed, 4 insertions(+), 39 deletions(-)

diff --git a/drivers/staging/mt7621-pinctrl/Kconfig 
b/drivers/staging/mt7621-pinctrl/Kconfig
index 37cf9c3273be..fc3612711307 100644
--- a/drivers/staging/mt7621-pinctrl/Kconfig
+++ b/drivers/staging/mt7621-pinctrl/Kconfig
@@ -2,3 +2,4 @@ config PINCTRL_RT2880
        bool "RT2800 pinctrl driver for RALINK/Mediatek SOCs"
        depends on RALINK
        select PINMUX
+       select GENERIC_PINCONF
diff --git a/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c 
b/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
index b663ca43a525..80e7067cfb79 100644
--- a/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
+++ b/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
@@ -11,6 +11,7 @@
 #include <linux/of.h>
 #include <linux/pinctrl/pinctrl.h>
 #include <linux/pinctrl/pinconf.h>
+#include <linux/pinctrl/pinconf-generic.h>
 #include <linux/pinctrl/pinmux.h>
 #include <linux/pinctrl/consumer.h>
 #include <linux/pinctrl/machine.h>
@@ -73,49 +74,12 @@ static int rt2880_get_group_pins(struct pinctrl_dev 
*pctrldev,
        return 0;
 }
 
-static int rt2880_pinctrl_dt_node_to_map(struct pinctrl_dev *pctrldev,
-                                        struct device_node *np_config,
-                                        struct pinctrl_map **map,
-                                        unsigned int *num_maps)
-{
-       struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
-       struct property *prop;
-       const char *function_name, *group_name;
-       int ret;
-       int ngroups = 0;
-       unsigned int reserved_maps = 0;
-
-       for_each_node_with_property(np_config, "group")
-               ngroups++;
-
-       *num_maps = 0;
-       *map = NULL;
-       ret = pinctrl_utils_reserve_map(pctrldev, map, &reserved_maps,
-                                       num_maps, ngroups);
-       if (ret) {
-               dev_err(p->dev, "can't reserve map: %d\n", ret);
-               return ret;
-       }
-
-       of_property_for_each_string(np_config, "group", prop, group_name) {
-               ret = pinctrl_utils_add_map_mux(pctrldev, map, &reserved_maps,
-                                               num_maps, group_name,
-                                               function_name);
-               if (ret) {
-                       dev_err(p->dev, "can't add map: %d\n", ret);
-                       return ret;
-               }
-       }
-
-       return 0;
-}
-
 static const struct pinctrl_ops rt2880_pctrl_ops = {
        .get_groups_count       = rt2880_get_group_count,
        .get_group_name         = rt2880_get_group_name,
        .get_group_pins         = rt2880_get_group_pins,
-       .dt_node_to_map         = rt2880_pinctrl_dt_node_to_map,
-       .dt_free_map            = pinctrl_utils_free_map,
+       .dt_node_to_map         = pinconf_generic_dt_node_to_map_all,
+       .dt_free_map            = pinconf_generic_dt_free_map,
 };
 
 static int rt2880_pmx_func_count(struct pinctrl_dev *pctrldev)
-- 
2.19.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to