|
@@ -479,6 +479,7 @@ done:
|
|
|
pr_debug("%s: status %d\n", __func__, status);
|
|
|
return status ? : len;
|
|
|
}
|
|
|
+static CLASS_ATTR_WO(export);
|
|
|
|
|
|
static ssize_t unexport_store(struct class *class,
|
|
|
struct class_attribute *attr,
|
|
@@ -514,18 +515,20 @@ done:
|
|
|
pr_debug("%s: status %d\n", __func__, status);
|
|
|
return status ? : len;
|
|
|
}
|
|
|
+static CLASS_ATTR_WO(unexport);
|
|
|
|
|
|
-static struct class_attribute gpio_class_attrs[] = {
|
|
|
- __ATTR(export, 0200, NULL, export_store),
|
|
|
- __ATTR(unexport, 0200, NULL, unexport_store),
|
|
|
- __ATTR_NULL,
|
|
|
+static struct attribute *gpio_class_attrs[] = {
|
|
|
+ &class_attr_export.attr,
|
|
|
+ &class_attr_unexport.attr,
|
|
|
+ NULL,
|
|
|
};
|
|
|
+ATTRIBUTE_GROUPS(gpio_class);
|
|
|
|
|
|
static struct class gpio_class = {
|
|
|
.name = "gpio",
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
|
- .class_attrs = gpio_class_attrs,
|
|
|
+ .class_groups = gpio_class_groups,
|
|
|
};
|
|
|
|
|
|
|