| Johannes Berg | f3d9478 | 2006-06-21 15:42:43 +0200 | [diff] [blame] | 1 | #include <linux/kernel.h> | 
 | 2 | #include <linux/stat.h> | 
 | 3 | /* FIX UP */ | 
 | 4 | #include "soundbus.h" | 
 | 5 |  | 
 | 6 | #define soundbus_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 soundbus_dev *mdev = to_soundbus_device (dev);		\ | 
 | 12 | 	return sprintf (buf, format_string, mdev->ofdev.node->field);	\ | 
 | 13 | } | 
 | 14 |  | 
 | 15 | static ssize_t modalias_show(struct device *dev, struct device_attribute *attr, | 
 | 16 | 			     char *buf) | 
 | 17 | { | 
 | 18 | 	struct soundbus_dev *sdev = to_soundbus_device(dev); | 
 | 19 | 	struct of_device *of = &sdev->ofdev; | 
 | 20 | 	int length; | 
 | 21 |  | 
 | 22 | 	if (*sdev->modalias) { | 
 | 23 | 		strlcpy(buf, sdev->modalias, sizeof(sdev->modalias) + 1); | 
 | 24 | 		strcat(buf, "\n"); | 
 | 25 | 		length = strlen(buf); | 
 | 26 | 	} else { | 
 | 27 | 		length = sprintf(buf, "of:N%sT%s\n", | 
 | 28 | 				 of->node->name, of->node->type); | 
 | 29 | 	} | 
 | 30 |  | 
 | 31 | 	return length; | 
 | 32 | } | 
 | 33 |  | 
 | 34 | soundbus_config_of_attr (name, "%s\n"); | 
 | 35 | soundbus_config_of_attr (type, "%s\n"); | 
 | 36 |  | 
 | 37 | struct device_attribute soundbus_dev_attrs[] = { | 
 | 38 | 	__ATTR_RO(name), | 
 | 39 | 	__ATTR_RO(type), | 
 | 40 | 	__ATTR_RO(modalias), | 
 | 41 | 	__ATTR_NULL | 
 | 42 | }; |