Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pinctrl: show pin name for pingroups in sysfs

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>

authored by

Dong Aisheng and committed by
Linus Walleij
dcb5dbc3 d0bd8df5

+29 -4
+28 -4
drivers/pinctrl/core.c
··· 126 126 } 127 127 128 128 /** 129 + * pin_get_name_from_id() - look up a pin name from a pin id 130 + * @pctldev: the pin control device to lookup the pin on 131 + * @name: the name of the pin to look up 132 + */ 133 + const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin) 134 + { 135 + const struct pin_desc *desc; 136 + 137 + desc = pin_desc_get(pctldev, pin); 138 + if (desc == NULL) { 139 + dev_err(pctldev->dev, "failed to get pin(%d) name\n", 140 + pin); 141 + return NULL; 142 + } 143 + 144 + return desc->name; 145 + } 146 + 147 + /** 129 148 * pin_is_valid() - check if pin exists on controller 130 149 * @pctldev: the pin control device to check the pin on 131 150 * @pin: pin to check, use the local pin controller index number ··· 1030 1011 const unsigned *pins; 1031 1012 unsigned num_pins; 1032 1013 const char *gname = ops->get_group_name(pctldev, selector); 1014 + const char *pname; 1033 1015 int ret; 1034 1016 int i; 1035 1017 ··· 1040 1020 seq_printf(s, "%s [ERROR GETTING PINS]\n", 1041 1021 gname); 1042 1022 else { 1043 - seq_printf(s, "group: %s, pins = [ ", gname); 1044 - for (i = 0; i < num_pins; i++) 1045 - seq_printf(s, "%d ", pins[i]); 1046 - seq_puts(s, "]\n"); 1023 + seq_printf(s, "group: %s\n", gname); 1024 + for (i = 0; i < num_pins; i++) { 1025 + pname = pin_get_name(pctldev, pins[i]); 1026 + if (WARN_ON(!pname)) 1027 + return -EINVAL; 1028 + seq_printf(s, "pin %d (%s)\n", pins[i], pname); 1029 + } 1030 + seq_puts(s, "\n"); 1047 1031 } 1048 1032 selector++; 1049 1033 }
+1
drivers/pinctrl/core.h
··· 148 148 149 149 struct pinctrl_dev *get_pinctrl_dev_from_devname(const char *dev_name); 150 150 int pin_get_from_name(struct pinctrl_dev *pctldev, const char *name); 151 + const char *pin_get_name(struct pinctrl_dev *pctldev, const unsigned pin); 151 152 int pinctrl_get_group_selector(struct pinctrl_dev *pctldev, 152 153 const char *pin_group); 153 154