Root/
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 | }; |
72 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9