~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/macintosh/macio_sysfs.c

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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)                      \
 
7
static ssize_t                                                          \
 
8
field##_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
 
 
15
static ssize_t
 
16
compatible_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
 
 
41
static 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
 
 
52
static 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
 
 
61
macio_config_of_attr (name, "%s\n");
 
62
macio_config_of_attr (type, "%s\n");
 
63
 
 
64
struct 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
};