linux/drivers/macintosh/macio_sysfs.c
<<
>>
Prefs
   1#include <linux/kernel.h>
   2#include <linux/stat.h>
   3#include <asm/macio.h>
   4
   5
   6#define macio_config_of_attr(field, format_string)                      \
   7static ssize_t                                                          \
   8field##_show (struct device *dev, struct device_attribute *attr,        \
   9              char *buf)                                                \
  10{                                                                       \
  11        struct macio_dev *mdev = to_macio_device (dev);                 \
  12        return sprintf (buf, format_string, mdev->ofdev.node->field);   \
  13}
  14
  15static ssize_t
  16compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
  17{
  18        struct of_device *of;
  19        const char *compat;
  20        int cplen;
  21        int length = 0;
  22
  23        of = &to_macio_device (dev)->ofdev;
  24        compat = of_get_property(of->node, "compatible", &cplen);
  25        if (!compat) {
  26                *buf = '\0';
  27                return 0;
  28        }
  29        while (cplen > 0) {
  30                int l;
  31                length += sprintf (buf, "%s\n", compat);
  32                buf += length;
  33                l = strlen (compat) + 1;
  34                compat += l;
  35                cplen -= l;
  36        }
  37
  38        return length;
  39}
  40
  41static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
  42                              char *buf)
  43{
  44        struct of_device *ofdev = to_of_device(dev);
  45        int len;
  46
  47        len = of_device_get_modalias(ofdev, buf, PAGE_SIZE - 2);
  48
  49        buf[len] = '\n';
  50        buf[len+1] = 0;
  51
  52        return len+1;
  53}
  54
  55static ssize_t devspec_show(struct device *dev,
  56                                struct device_attribute *attr, char *buf)
  57{
  58        struct of_device *ofdev;
  59
  60        ofdev = to_of_device(dev);
  61        return sprintf(buf, "%s\n", ofdev->node->full_name);
  62}
  63
  64macio_config_of_attr (name, "%s\n");
  65macio_config_of_attr (type, "%s\n");
  66
  67struct device_attribute macio_dev_attrs[] = {
  68        __ATTR_RO(name),
  69        __ATTR_RO(type),
  70        __ATTR_RO(compatible),
  71        __ATTR_RO(modalias),
  72        __ATTR_RO(devspec),
  73        __ATTR_NULL
  74};
  75