diff options
Diffstat (limited to 'patches.at91/0098-pinctrl-show-pin-name-for-pingroups-in-sysfs.patch')
-rw-r--r-- | patches.at91/0098-pinctrl-show-pin-name-for-pingroups-in-sysfs.patch | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/patches.at91/0098-pinctrl-show-pin-name-for-pingroups-in-sysfs.patch b/patches.at91/0098-pinctrl-show-pin-name-for-pingroups-in-sysfs.patch new file mode 100644 index 00000000000000..d62b4c38144060 --- /dev/null +++ b/patches.at91/0098-pinctrl-show-pin-name-for-pingroups-in-sysfs.patch @@ -0,0 +1,108 @@ +From 98e0834df26052480b71e183d23b6cc38d51d7a0 Mon Sep 17 00:00:00 2001 +From: Dong Aisheng <dong.aisheng@linaro.org> +Date: Tue, 17 Apr 2012 15:00:46 +0800 +Subject: pinctrl: show pin name for pingroups in sysfs + +commit dcb5dbc305b975cccf40942feba40964069541d3 upstream. + +Pin name is more useful to users. + +After change, when cat pingroups in sysfs, it becomes: +root@freescale /sys/kernel/debug/pinctrl/20e0000.iomuxc$ cat pingroups +registered pin groups: +group: uart4grp-1 +pin 219 (MX6Q_PAD_KEY_ROW0) +pin 218 (MX6Q_PAD_KEY_COL0) + +group: usdhc4grp-1 +pin 305 (MX6Q_PAD_SD4_CMD) +pin 306 (MX6Q_PAD_SD4_CLK) +pin 315 (MX6Q_PAD_SD4_DAT0) +pin 316 (MX6Q_PAD_SD4_DAT1) +pin 317 (MX6Q_PAD_SD4_DAT2) +pin 318 (MX6Q_PAD_SD4_DAT3) +pin 319 (MX6Q_PAD_SD4_DAT4) +pin 320 (MX6Q_PAD_SD4_DAT5) +pin 321 (MX6Q_PAD_SD4_DAT6) +pin 322 (MX6Q_PAD_SD4_DAT7) + +Acked-by: Stephen Warren <swarren@wwwdotorg.org> +Signed-off-by: Dong Aisheng <dong.aisheng@linaro.org> +Signed-off-by: Linus Walleij <linus.walleij@linaro.org> +--- + drivers/pinctrl/core.c | 32 ++++++++++++++++++++++++++++---- + drivers/pinctrl/core.h | 1 + + 2 files changed, 29 insertions(+), 4 deletions(-) + +diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c +index c70ae2d..5f8a7d2 100644 +--- a/drivers/pinctrl/core.c ++++ b/drivers/pinctrl/core.c +@@ -141,6 +141,25 @@ int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name) + } + + /** ++ * pin_get_name_from_id() - look up a pin name from a pin id ++ * @pctldev: the pin control device to lookup the pin on ++ * @name: the name of the pin to look up ++ */ ++const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin) ++{ ++ const struct pin_desc *desc; ++ ++ desc = pin_desc_get(pctldev, pin); ++ if (desc == NULL) { ++ dev_err(pctldev->dev, "failed to get pin(%d) name\n", ++ pin); ++ return NULL; ++ } ++ ++ return desc->name; ++} ++ ++/** + * pin_is_valid() - check if pin exists on controller + * @pctldev: the pin control device to check the pin on + * @pin: pin to check, use the local pin controller index number +@@ -1034,6 +1053,7 @@ static int pinctrl_groups_show(struct seq_file *s, void *what) + const unsigned *pins; + unsigned num_pins; + const char *gname = ops->get_group_name(pctldev, selector); ++ const char *pname; + int ret; + int i; + +@@ -1043,10 +1063,14 @@ static int pinctrl_groups_show(struct seq_file *s, void *what) + seq_printf(s, "%s [ERROR GETTING PINS]\n", + gname); + else { +- seq_printf(s, "group: %s, pins = [ ", gname); +- for (i = 0; i < num_pins; i++) +- seq_printf(s, "%d ", pins[i]); +- seq_puts(s, "]\n"); ++ seq_printf(s, "group: %s\n", gname); ++ for (i = 0; i < num_pins; i++) { ++ pname = pin_get_name(pctldev, pins[i]); ++ if (WARN_ON(!pname)) ++ return -EINVAL; ++ seq_printf(s, "pin %d (%s)\n", pins[i], pname); ++ } ++ seq_puts(s, "\n"); + } + selector++; + } +diff --git a/drivers/pinctrl/core.h b/drivers/pinctrl/core.h +index 98ae808..1f40ff6 100644 +--- a/drivers/pinctrl/core.h ++++ b/drivers/pinctrl/core.h +@@ -148,6 +148,7 @@ struct pin_desc { + + struct pinctrl_dev *get_pinctrl_dev_from_devname(const char *dev_name); + int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name); ++const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin); + int pinctrl_get_group_selector(struct pinctrl_dev *pctldev, + const char *pin_group); + +-- +1.8.0.197.g5a90748 + |