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.dev.of_node->field); \
  13}
  14
  15static ssize_t
  16compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
  17{
  18        struct platform_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->dev.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        int len = of_device_get_modalias(dev, buf, PAGE_SIZE - 2);
  45
  46        buf[len] = '\n';
  47        buf[len+1] = 0;
  48
  49        return len+1;
  50}
  51
  52static ssize_t devspec_show(struct device *dev,
  53                                struct device_attribute *attr, char *buf)
  54{
  55        struct platform_device *ofdev;
  56
  57        ofdev = to_platform_device(dev);
  58        return sprintf(buf, "%s\n", ofdev->dev.of_node->full_name);
  59}
  60
  61macio_config_of_attr (name, "%s\n");
  62macio_config_of_attr (type, "%s\n");
  63
  64struct device_attribute macio_dev_attrs[] = {
  65        __ATTR_RO(name),
  66        __ATTR_RO(type),
  67        __ATTR_RO(compatible),
  68        __ATTR_RO(modalias),
  69        __ATTR_RO(devspec),
  70        __ATTR_NULL
  71};
  72