Commit 4e3a198c authored by Ben Dooks's avatar Ben Dooks Committed by James Toy

Add a 'names' file to the sysfs entries for each chip to show which

have names.
Signed-off-by: default avatarBen Dooks <ben@simtec.co.uk>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent bcc4d5ff
...@@ -303,6 +303,7 @@ static const struct attribute_group gpio_attr_group = { ...@@ -303,6 +303,7 @@ static const struct attribute_group gpio_attr_group = {
* /base ... matching gpio_chip.base (N) * /base ... matching gpio_chip.base (N)
* /label ... matching gpio_chip.label * /label ... matching gpio_chip.label
* /ngpio ... matching gpio_chip.ngpio * /ngpio ... matching gpio_chip.ngpio
* /names ... matching gpio_chip.names
*/ */
static ssize_t chip_base_show(struct device *dev, static ssize_t chip_base_show(struct device *dev,
...@@ -332,10 +333,30 @@ static ssize_t chip_ngpio_show(struct device *dev, ...@@ -332,10 +333,30 @@ static ssize_t chip_ngpio_show(struct device *dev,
} }
static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL); static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL);
static ssize_t chip_names_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
const struct gpio_chip*chip = dev_get_drvdata(dev);
char **names = chip->names;
int ptr = 0;
int name;
if (!names)
return -EINVAL;
for (name = 0; name < chip->ngpio && ptr < PAGE_SIZE; name++)
ptr += snprintf(buf + ptr, PAGE_SIZE - ptr,
"%s\n", names[name] ? names[name] : "");
return ptr;
}
DEVICE_ATTR(names, 0444, chip_names_show, NULL);
static const struct attribute *gpiochip_attrs[] = { static const struct attribute *gpiochip_attrs[] = {
&dev_attr_base.attr, &dev_attr_base.attr,
&dev_attr_label.attr, &dev_attr_label.attr,
&dev_attr_ngpio.attr, &dev_attr_ngpio.attr,
&dev_attr_names.attr,
NULL, NULL,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment