aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <andi@firstfloor.org>2010-01-05 06:48:09 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-07 20:04:48 -0500
commit0933e2d98d1b170ef62d48e18157f5dc43b58217 (patch)
treeecbd589b7607cda35743faf65c8f4326fc8373dd
parent869dfc875e32fd832385fd52ce54525a10401ed6 (diff)
driver core: Convert some drivers to CLASS_ATTR_STRING
Convert some drivers who export a single string as class attribute to the new class_attr_string functions. This removes redundant code all over. Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/gpu/drm/drm_sysfs.c19
-rw-r--r--drivers/infiniband/core/ucm.c15
-rw-r--r--drivers/infiniband/core/user_mad.c11
-rw-r--r--drivers/infiniband/core/uverbs_main.c11
-rw-r--r--drivers/misc/phantom.c13
-rw-r--r--drivers/staging/asus_oled/asus_oled.c15
6 files changed, 27 insertions, 57 deletions
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index b95aaf23596e..014ce24761b9 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -70,20 +70,17 @@ static int drm_class_resume(struct device *dev)
70 return 0; 70 return 0;
71} 71}
72 72
73/* Display the version of drm_core. This doesn't work right in current design */
74static ssize_t version_show(struct class *dev, struct class_attribute *attr,
75 char *buf)
76{
77 return sprintf(buf, "%s %d.%d.%d %s\n", CORE_NAME, CORE_MAJOR,
78 CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE);
79}
80
81static char *drm_devnode(struct device *dev, mode_t *mode) 73static char *drm_devnode(struct device *dev, mode_t *mode)
82{ 74{
83 return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev)); 75 return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
84} 76}
85 77
86static CLASS_ATTR(version, S_IRUGO, version_show, NULL); 78static CLASS_ATTR_STRING(version, S_IRUGO,
79 CORE_NAME " "
80 __stringify(CORE_MAJOR) "."
81 __stringify(CORE_MINOR) "."
82 __stringify(CORE_PATCHLEVEL) " "
83 CORE_DATE);
87 84
88/** 85/**
89 * drm_sysfs_create - create a struct drm_sysfs_class structure 86 * drm_sysfs_create - create a struct drm_sysfs_class structure
@@ -110,7 +107,7 @@ struct class *drm_sysfs_create(struct module *owner, char *name)
110 class->suspend = drm_class_suspend; 107 class->suspend = drm_class_suspend;
111 class->resume = drm_class_resume; 108 class->resume = drm_class_resume;
112 109
113 err = class_create_file(class, &class_attr_version); 110 err = class_create_file(class, &class_attr_version.attr);
114 if (err) 111 if (err)
115 goto err_out_class; 112 goto err_out_class;
116 113
@@ -133,7 +130,7 @@ void drm_sysfs_destroy(void)
133{ 130{
134 if ((drm_class == NULL) || (IS_ERR(drm_class))) 131 if ((drm_class == NULL) || (IS_ERR(drm_class)))
135 return; 132 return;
136 class_remove_file(drm_class, &class_attr_version); 133 class_remove_file(drm_class, &class_attr_version.attr);
137 class_destroy(drm_class); 134 class_destroy(drm_class);
138} 135}
139 136
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index 02e209ff33fd..017d6e24448f 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1336,13 +1336,8 @@ static void ib_ucm_remove_one(struct ib_device *device)
1336 device_unregister(&ucm_dev->dev); 1336 device_unregister(&ucm_dev->dev);
1337} 1337}
1338 1338
1339static ssize_t show_abi_version(struct class *class, 1339static CLASS_ATTR_STRING(abi_version, S_IRUGO,
1340 struct class_attribute *attr, 1340 __stringify(IB_USER_CM_ABI_VERSION));
1341 char *buf)
1342{
1343 return sprintf(buf, "%d\n", IB_USER_CM_ABI_VERSION);
1344}
1345static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
1346 1341
1347static int __init ib_ucm_init(void) 1342static int __init ib_ucm_init(void)
1348{ 1343{
@@ -1355,7 +1350,7 @@ static int __init ib_ucm_init(void)
1355 goto error1; 1350 goto error1;
1356 } 1351 }
1357 1352
1358 ret = class_create_file(&cm_class, &class_attr_abi_version); 1353 ret = class_create_file(&cm_class, &class_attr_abi_version.attr);
1359 if (ret) { 1354 if (ret) {
1360 printk(KERN_ERR "ucm: couldn't create abi_version attribute\n"); 1355 printk(KERN_ERR "ucm: couldn't create abi_version attribute\n");
1361 goto error2; 1356 goto error2;
@@ -1369,7 +1364,7 @@ static int __init ib_ucm_init(void)
1369 return 0; 1364 return 0;
1370 1365
1371error3: 1366error3:
1372 class_remove_file(&cm_class, &class_attr_abi_version); 1367 class_remove_file(&cm_class, &class_attr_abi_version.attr);
1373error2: 1368error2:
1374 unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES); 1369 unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES);
1375error1: 1370error1:
@@ -1379,7 +1374,7 @@ error1:
1379static void __exit ib_ucm_cleanup(void) 1374static void __exit ib_ucm_cleanup(void)
1380{ 1375{
1381 ib_unregister_client(&ucm_client); 1376 ib_unregister_client(&ucm_client);
1382 class_remove_file(&cm_class, &class_attr_abi_version); 1377 class_remove_file(&cm_class, &class_attr_abi_version.attr);
1383 unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES); 1378 unregister_chrdev_region(IB_UCM_BASE_DEV, IB_UCM_MAX_DEVICES);
1384 if (overflow_maj) 1379 if (overflow_maj)
1385 unregister_chrdev_region(overflow_maj, IB_UCM_MAX_DEVICES); 1380 unregister_chrdev_region(overflow_maj, IB_UCM_MAX_DEVICES);
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index d0de8f265f45..04b585e86cb2 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -965,13 +965,8 @@ static ssize_t show_port(struct device *dev, struct device_attribute *attr,
965} 965}
966static DEVICE_ATTR(port, S_IRUGO, show_port, NULL); 966static DEVICE_ATTR(port, S_IRUGO, show_port, NULL);
967 967
968static ssize_t show_abi_version(struct class *class, 968static CLASS_ATTR_STRING(abi_version, S_IRUGO,
969 struct class_attribute *attr, 969 __stringify(IB_USER_MAD_ABI_VERSION));
970 char *buf)
971{
972 return sprintf(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
973}
974static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
975 970
976static dev_t overflow_maj; 971static dev_t overflow_maj;
977static DECLARE_BITMAP(overflow_map, IB_UMAD_MAX_PORTS); 972static DECLARE_BITMAP(overflow_map, IB_UMAD_MAX_PORTS);
@@ -1196,7 +1191,7 @@ static int __init ib_umad_init(void)
1196 goto out_chrdev; 1191 goto out_chrdev;
1197 } 1192 }
1198 1193
1199 ret = class_create_file(umad_class, &class_attr_abi_version); 1194 ret = class_create_file(umad_class, &class_attr_abi_version.attr);
1200 if (ret) { 1195 if (ret) {
1201 printk(KERN_ERR "user_mad: couldn't create abi_version attribute\n"); 1196 printk(KERN_ERR "user_mad: couldn't create abi_version attribute\n");
1202 goto out_class; 1197 goto out_class;
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index 60879399207a..d805cf365c8d 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -691,13 +691,8 @@ static ssize_t show_dev_abi_version(struct device *device,
691} 691}
692static DEVICE_ATTR(abi_version, S_IRUGO, show_dev_abi_version, NULL); 692static DEVICE_ATTR(abi_version, S_IRUGO, show_dev_abi_version, NULL);
693 693
694static ssize_t show_abi_version(struct class *class, 694static CLASS_ATTR_STRING(abi_version, S_IRUGO,
695 struct class_attribute *attr, 695 __stringify(IB_USER_VERBS_ABI_VERSION));
696 char *buf)
697{
698 return sprintf(buf, "%d\n", IB_USER_VERBS_ABI_VERSION);
699}
700static CLASS_ATTR(abi_version, S_IRUGO, show_abi_version, NULL);
701 696
702static dev_t overflow_maj; 697static dev_t overflow_maj;
703static DECLARE_BITMAP(overflow_map, IB_UVERBS_MAX_DEVICES); 698static DECLARE_BITMAP(overflow_map, IB_UVERBS_MAX_DEVICES);
@@ -843,7 +838,7 @@ static int __init ib_uverbs_init(void)
843 goto out_chrdev; 838 goto out_chrdev;
844 } 839 }
845 840
846 ret = class_create_file(uverbs_class, &class_attr_abi_version); 841 ret = class_create_file(uverbs_class, &class_attr_abi_version.attr);
847 if (ret) { 842 if (ret) {
848 printk(KERN_ERR "user_verbs: couldn't create abi_version attribute\n"); 843 printk(KERN_ERR "user_verbs: couldn't create abi_version attribute\n");
849 goto out_class; 844 goto out_class;
diff --git a/drivers/misc/phantom.c b/drivers/misc/phantom.c
index d30ae9560309..779aa8ebe4cf 100644
--- a/drivers/misc/phantom.c
+++ b/drivers/misc/phantom.c
@@ -497,12 +497,7 @@ static struct pci_driver phantom_pci_driver = {
497 .resume = phantom_resume 497 .resume = phantom_resume
498}; 498};
499 499
500static ssize_t phantom_show_version(struct class *cls, struct class_attribute *attr, char *buf) 500static CLASS_ATTR_STRING(version, 0444, PHANTOM_VERSION);
501{
502 return sprintf(buf, PHANTOM_VERSION "\n");
503}
504
505static CLASS_ATTR(version, 0444, phantom_show_version, NULL);
506 501
507static int __init phantom_init(void) 502static int __init phantom_init(void)
508{ 503{
@@ -515,7 +510,7 @@ static int __init phantom_init(void)
515 printk(KERN_ERR "phantom: can't register phantom class\n"); 510 printk(KERN_ERR "phantom: can't register phantom class\n");
516 goto err; 511 goto err;
517 } 512 }
518 retval = class_create_file(phantom_class, &class_attr_version); 513 retval = class_create_file(phantom_class, &class_attr_version.attr);
519 if (retval) { 514 if (retval) {
520 printk(KERN_ERR "phantom: can't create sysfs version file\n"); 515 printk(KERN_ERR "phantom: can't create sysfs version file\n");
521 goto err_class; 516 goto err_class;
@@ -541,7 +536,7 @@ static int __init phantom_init(void)
541err_unchr: 536err_unchr:
542 unregister_chrdev_region(dev, PHANTOM_MAX_MINORS); 537 unregister_chrdev_region(dev, PHANTOM_MAX_MINORS);
543err_attr: 538err_attr:
544 class_remove_file(phantom_class, &class_attr_version); 539 class_remove_file(phantom_class, &class_attr_version.attr);
545err_class: 540err_class:
546 class_destroy(phantom_class); 541 class_destroy(phantom_class);
547err: 542err:
@@ -554,7 +549,7 @@ static void __exit phantom_exit(void)
554 549
555 unregister_chrdev_region(MKDEV(phantom_major, 0), PHANTOM_MAX_MINORS); 550 unregister_chrdev_region(MKDEV(phantom_major, 0), PHANTOM_MAX_MINORS);
556 551
557 class_remove_file(phantom_class, &class_attr_version); 552 class_remove_file(phantom_class, &class_attr_version.attr);
558 class_destroy(phantom_class); 553 class_destroy(phantom_class);
559 554
560 pr_debug("phantom: module successfully removed\n"); 555 pr_debug("phantom: module successfully removed\n");
diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
index 7d93f50a0a64..7ebecc92c61b 100644
--- a/drivers/staging/asus_oled/asus_oled.c
+++ b/drivers/staging/asus_oled/asus_oled.c
@@ -770,15 +770,8 @@ static struct usb_driver oled_driver = {
770 .id_table = id_table, 770 .id_table = id_table,
771}; 771};
772 772
773static ssize_t version_show(struct class *dev, 773static CLASS_ATTR_STRING(version, S_IRUGO,
774 struct class_attribute *attr, 774 ASUS_OLED_UNDERSCORE_NAME " " ASUS_OLED_VERSION);
775 char *buf)
776{
777 return sprintf(buf, ASUS_OLED_UNDERSCORE_NAME " %s\n",
778 ASUS_OLED_VERSION);
779}
780
781static CLASS_ATTR(version, S_IRUGO, version_show, NULL);
782 775
783static int __init asus_oled_init(void) 776static int __init asus_oled_init(void)
784{ 777{
@@ -790,7 +783,7 @@ static int __init asus_oled_init(void)
790 return PTR_ERR(oled_class); 783 return PTR_ERR(oled_class);
791 } 784 }
792 785
793 retval = class_create_file(oled_class, &class_attr_version); 786 retval = class_create_file(oled_class, &class_attr_version.attr);
794 if (retval) { 787 if (retval) {
795 err("Error creating class version file"); 788 err("Error creating class version file");
796 goto error; 789 goto error;
@@ -812,7 +805,7 @@ error:
812 805
813static void __exit asus_oled_exit(void) 806static void __exit asus_oled_exit(void)
814{ 807{
815 class_remove_file(oled_class, &class_attr_version); 808 class_remove_file(oled_class, &class_attr_version.attr);
816 class_destroy(oled_class); 809 class_destroy(oled_class);
817 810
818 usb_deregister(&oled_driver); 811 usb_deregister(&oled_driver);