xref: /linux/drivers/macintosh/macio_sysfs.c (revision c1b054d03f5b31c33eaa0b267c629b118eaf3790)
1 #include <linux/config.h>
2 #include <linux/kernel.h>
3 #include <linux/stat.h>
4 #include <asm/macio.h>
5 
6 
7 #define macio_config_of_attr(field, format_string)			\
8 static ssize_t								\
9 field##_show (struct device *dev, struct device_attribute *attr,	\
10               char *buf)						\
11 {									\
12 	struct macio_dev *mdev = to_macio_device (dev);			\
13 	return sprintf (buf, format_string, mdev->ofdev.node->field);	\
14 }
15 
16 static ssize_t
17 compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
18 {
19 	struct of_device *of;
20 	char *compat;
21 	int cplen;
22 	int length = 0;
23 
24 	of = &to_macio_device (dev)->ofdev;
25 	compat = (char *) get_property(of->node, "compatible", &cplen);
26 	if (!compat) {
27 		*buf = '\0';
28 		return 0;
29 	}
30 	while (cplen > 0) {
31 		int l;
32 		length += sprintf (buf, "%s\n", compat);
33 		buf += length;
34 		l = strlen (compat) + 1;
35 		compat += l;
36 		cplen -= l;
37 	}
38 
39 	return length;
40 }
41 
42 macio_config_of_attr (name, "%s\n");
43 macio_config_of_attr (type, "%s\n");
44 
45 struct device_attribute macio_dev_attrs[] = {
46 	__ATTR_RO(name),
47 	__ATTR_RO(type),
48 	__ATTR_RO(compatible),
49 	__ATTR_NULL
50 };
51