X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2Fdrivers%2Fmacintosh%2Fmacio_sysfs.c;fp=kernel%2Fdrivers%2Fmacintosh%2Fmacio_sysfs.c;h=8eb40afbd0f511fd5a7b09c8fc48b1b295eb9ea5;hb=9ca8dbcc65cfc63d6f5ef3312a33184e1d726e00;hp=0000000000000000000000000000000000000000;hpb=98260f3884f4a202f9ca5eabed40b1354c489b29;p=kvmfornfv.git diff --git a/kernel/drivers/macintosh/macio_sysfs.c b/kernel/drivers/macintosh/macio_sysfs.c new file mode 100644 index 000000000..8eb40afbd --- /dev/null +++ b/kernel/drivers/macintosh/macio_sysfs.c @@ -0,0 +1,71 @@ +#include +#include +#include + + +#define macio_config_of_attr(field, format_string) \ +static ssize_t \ +field##_show (struct device *dev, struct device_attribute *attr, \ + char *buf) \ +{ \ + struct macio_dev *mdev = to_macio_device (dev); \ + return sprintf (buf, format_string, mdev->ofdev.dev.of_node->field); \ +} + +static ssize_t +compatible_show (struct device *dev, struct device_attribute *attr, char *buf) +{ + struct platform_device *of; + const char *compat; + int cplen; + int length = 0; + + of = &to_macio_device (dev)->ofdev; + compat = of_get_property(of->dev.of_node, "compatible", &cplen); + if (!compat) { + *buf = '\0'; + return 0; + } + while (cplen > 0) { + int l; + length += sprintf (buf, "%s\n", compat); + buf += length; + l = strlen (compat) + 1; + compat += l; + cplen -= l; + } + + return length; +} + +static ssize_t modalias_show (struct device *dev, struct device_attribute *attr, + char *buf) +{ + int len = of_device_get_modalias(dev, buf, PAGE_SIZE - 2); + + buf[len] = '\n'; + buf[len+1] = 0; + + return len+1; +} + +static ssize_t devspec_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct platform_device *ofdev; + + ofdev = to_platform_device(dev); + return sprintf(buf, "%s\n", ofdev->dev.of_node->full_name); +} + +macio_config_of_attr (name, "%s\n"); +macio_config_of_attr (type, "%s\n"); + +struct device_attribute macio_dev_attrs[] = { + __ATTR_RO(name), + __ATTR_RO(type), + __ATTR_RO(compatible), + __ATTR_RO(modalias), + __ATTR_RO(devspec), + __ATTR_NULL +};