pinctrl: pinconf: Fix display of configs
authorJon Hunter <jonathanh@nvidia.com>
Tue, 14 Jul 2015 10:17:59 +0000 (11:17 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 17 Jul 2015 12:20:49 +0000 (14:20 +0200)
The function pinconf_dbg_config_print() only prints the configuration of
the 1st pin config in an array of pin configurations. Fix this so that
all pin configurations in the array are displayed.

There are a few places in the code where the pin configs are displayed
and so add a helper function to display the pin configs to simplify the
code.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinconf.c

index 4744d63..cbf26a6 100644 (file)
@@ -202,18 +202,34 @@ int pinconf_apply_setting(struct pinctrl_setting const *setting)
 
 #ifdef CONFIG_DEBUG_FS
 
-void pinconf_show_map(struct seq_file *s, struct pinctrl_map const *map)
+void pinconf_show_config(struct seq_file *s, struct pinctrl_dev *pctldev,
+                     unsigned long *configs, unsigned num_configs)
 {
-       struct pinctrl_dev *pctldev;
        const struct pinconf_ops *confops;
        int i;
 
-       pctldev = get_pinctrl_dev_from_devname(map->ctrl_dev_name);
        if (pctldev)
                confops = pctldev->desc->confops;
        else
                confops = NULL;
 
+       for (i = 0; i < num_configs; i++) {
+               seq_puts(s, "config ");
+               if (confops && confops->pin_config_config_dbg_show)
+                       confops->pin_config_config_dbg_show(pctldev, s,
+                                                           configs[i]);
+               else
+                       seq_printf(s, "%08lx", configs[i]);
+               seq_puts(s, "\n");
+       }
+}
+
+void pinconf_show_map(struct seq_file *s, struct pinctrl_map const *map)
+{
+       struct pinctrl_dev *pctldev;
+
+       pctldev = get_pinctrl_dev_from_devname(map->ctrl_dev_name);
+
        switch (map->type) {
        case PIN_MAP_TYPE_CONFIGS_PIN:
                seq_printf(s, "pin ");
@@ -227,15 +243,8 @@ void pinconf_show_map(struct seq_file *s, struct pinctrl_map const *map)
 
        seq_printf(s, "%s\n", map->data.configs.group_or_pin);
 
-       for (i = 0; i < map->data.configs.num_configs; i++) {
-               seq_printf(s, "config ");
-               if (confops && confops->pin_config_config_dbg_show)
-                       confops->pin_config_config_dbg_show(pctldev, s,
-                                               map->data.configs.configs[i]);
-               else
-                       seq_printf(s, "%08lx", map->data.configs.configs[i]);
-               seq_printf(s, "\n");
-       }
+       pinconf_show_config(s, pctldev, map->data.configs.configs,
+                           map->data.configs.num_configs);
 }
 
 void pinconf_show_setting(struct seq_file *s,
@@ -243,9 +252,7 @@ void pinconf_show_setting(struct seq_file *s,
 {
        struct pinctrl_dev *pctldev = setting->pctldev;
        const struct pinctrl_ops *pctlops = pctldev->desc->pctlops;
-       const struct pinconf_ops *confops = pctldev->desc->confops;
        struct pin_desc *desc;
-       int i;
 
        switch (setting->type) {
        case PIN_MAP_TYPE_CONFIGS_PIN:
@@ -269,17 +276,8 @@ void pinconf_show_setting(struct seq_file *s,
         * FIXME: We should really get the pin controler to dump the config
         * values, so they can be decoded to something meaningful.
         */
-       for (i = 0; i < setting->data.configs.num_configs; i++) {
-               seq_printf(s, " ");
-               if (confops && confops->pin_config_config_dbg_show)
-                       confops->pin_config_config_dbg_show(pctldev, s,
-                               setting->data.configs.configs[i]);
-               else
-                       seq_printf(s, "%08lx",
-                                  setting->data.configs.configs[i]);
-       }
-
-       seq_printf(s, "\n");
+       pinconf_show_config(s, pctldev, setting->data.configs.configs,
+                           setting->data.configs.num_configs);
 }
 
 static void pinconf_dump_pin(struct pinctrl_dev *pctldev,
@@ -412,10 +410,8 @@ static int pinconf_dbg_config_print(struct seq_file *s, void *d)
        const struct pinctrl_map *map;
        const struct pinctrl_map *found = NULL;
        struct pinctrl_dev *pctldev;
-       const struct pinconf_ops *confops = NULL;
        struct dbg_cfg *dbg = &pinconf_dbg_conf;
        int i, j;
-       unsigned long config;
 
        mutex_lock(&pinctrl_maps_mutex);
 
@@ -449,16 +445,10 @@ static int pinconf_dbg_config_print(struct seq_file *s, void *d)
        }
 
        pctldev = get_pinctrl_dev_from_devname(found->ctrl_dev_name);
-       config = *found->data.configs.configs;
-       seq_printf(s, "Dev %s has config of %s in state %s: 0x%08lX\n",
-                       dbg->dev_name, dbg->pin_name,
-                       dbg->state_name, config);
-
-       if (pctldev)
-               confops = pctldev->desc->confops;
-
-       if (confops && confops->pin_config_config_dbg_show)
-               confops->pin_config_config_dbg_show(pctldev, s, config);
+       seq_printf(s, "Dev %s has config of %s in state %s:\n",
+                  dbg->dev_name, dbg->pin_name, dbg->state_name);
+       pinconf_show_config(s, pctldev, found->data.configs.configs,
+                           found->data.configs.num_configs);
 
 exit:
        mutex_unlock(&pinctrl_maps_mutex);