diff options
Diffstat (limited to 'drivers/dio/dio-sysfs.c')
-rw-r--r-- | drivers/dio/dio-sysfs.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/drivers/dio/dio-sysfs.c b/drivers/dio/dio-sysfs.c new file mode 100644 index 000000000000..d30591f69dd9 --- /dev/null +++ b/drivers/dio/dio-sysfs.c | |||
@@ -0,0 +1,77 @@ | |||
1 | /* | ||
2 | * File Attributes for DIO Devices | ||
3 | * | ||
4 | * Copyright (C) 2004 Jochen Friedrich | ||
5 | * | ||
6 | * Loosely based on drivers/pci/pci-sysfs.c and drivers/zorro/zorro-sysfs.c | ||
7 | * | ||
8 | * This file is subject to the terms and conditions of the GNU General Public | ||
9 | * License. See the file COPYING in the main directory of this archive | ||
10 | * for more details. | ||
11 | */ | ||
12 | |||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/dio.h> | ||
16 | #include <linux/stat.h> | ||
17 | |||
18 | /* show configuration fields */ | ||
19 | |||
20 | static ssize_t dio_show_id(struct device *dev, char *buf) | ||
21 | { | ||
22 | struct dio_dev *d; | ||
23 | |||
24 | d = to_dio_dev(dev); | ||
25 | return sprintf(buf, "0x%02x\n", (d->id & 0xff)); | ||
26 | } | ||
27 | static DEVICE_ATTR(id, S_IRUGO, dio_show_id, NULL); | ||
28 | |||
29 | static ssize_t dio_show_ipl(struct device *dev, char *buf) | ||
30 | { | ||
31 | struct dio_dev *d; | ||
32 | |||
33 | d = to_dio_dev(dev); | ||
34 | return sprintf(buf, "0x%02x\n", d->ipl); | ||
35 | } | ||
36 | static DEVICE_ATTR(ipl, S_IRUGO, dio_show_ipl, NULL); | ||
37 | |||
38 | static ssize_t dio_show_secid(struct device *dev, char *buf) | ||
39 | { | ||
40 | struct dio_dev *d; | ||
41 | |||
42 | d = to_dio_dev(dev); | ||
43 | return sprintf(buf, "0x%02x\n", ((d->id >> 8)& 0xff)); | ||
44 | } | ||
45 | static DEVICE_ATTR(secid, S_IRUGO, dio_show_secid, NULL); | ||
46 | |||
47 | static ssize_t dio_show_name(struct device *dev, char *buf) | ||
48 | { | ||
49 | struct dio_dev *d; | ||
50 | |||
51 | d = to_dio_dev(dev); | ||
52 | return sprintf(buf, "%s\n", d->name); | ||
53 | } | ||
54 | static DEVICE_ATTR(name, S_IRUGO, dio_show_name, NULL); | ||
55 | |||
56 | static ssize_t dio_show_resource(struct device *dev, char *buf) | ||
57 | { | ||
58 | struct dio_dev *d = to_dio_dev(dev); | ||
59 | |||
60 | return sprintf(buf, "0x%08lx 0x%08lx 0x%08lx\n", | ||
61 | dio_resource_start(d), dio_resource_end(d), | ||
62 | dio_resource_flags(d)); | ||
63 | } | ||
64 | static DEVICE_ATTR(resource, S_IRUGO, dio_show_resource, NULL); | ||
65 | |||
66 | void dio_create_sysfs_dev_files(struct dio_dev *d) | ||
67 | { | ||
68 | struct device *dev = &d->dev; | ||
69 | |||
70 | /* current configuration's attributes */ | ||
71 | device_create_file(dev, &dev_attr_id); | ||
72 | device_create_file(dev, &dev_attr_ipl); | ||
73 | device_create_file(dev, &dev_attr_secid); | ||
74 | device_create_file(dev, &dev_attr_name); | ||
75 | device_create_file(dev, &dev_attr_resource); | ||
76 | } | ||
77 | |||