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