aboutsummaryrefslogtreecommitdiffstats
path: root/patches.at91/0098-pinctrl-show-pin-name-for-pingroups-in-sysfs.patch
diff options
context:
space:
mode:
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.patch108
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
+