]> Pileus Git - ~andy/linux/blobdiff - drivers/hid/hid-roccat-kone.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[~andy/linux] / drivers / hid / hid-roccat-kone.c
index 00ab287f73849b94d85c3d4bf603733273396fc6..602c188e9d86cafedde93366bf3d114e69c3e552 100644 (file)
@@ -324,6 +324,8 @@ static ssize_t kone_sysfs_write_settings(struct file *fp, struct kobject *kobj,
 
        return sizeof(struct kone_settings);
 }
+static BIN_ATTR(settings, 0660, kone_sysfs_read_settings,
+               kone_sysfs_write_settings, sizeof(struct kone_settings));
 
 static ssize_t kone_sysfs_read_profilex(struct file *fp,
                struct kobject *kobj, struct bin_attribute *attr,
@@ -378,6 +380,19 @@ static ssize_t kone_sysfs_write_profilex(struct file *fp,
 
        return sizeof(struct kone_profile);
 }
+#define PROFILE_ATTR(number)                                   \
+static struct bin_attribute bin_attr_profile##number = {       \
+       .attr = { .name = "profile##number", .mode = 0660 },    \
+       .size = sizeof(struct kone_profile),                    \
+       .read = kone_sysfs_read_profilex,                       \
+       .write = kone_sysfs_write_profilex,                     \
+       .private = &profile_numbers[number-1],                  \
+};
+PROFILE_ATTR(1);
+PROFILE_ATTR(2);
+PROFILE_ATTR(3);
+PROFILE_ATTR(4);
+PROFILE_ATTR(5);
 
 static ssize_t kone_sysfs_show_actual_profile(struct device *dev,
                struct device_attribute *attr, char *buf)
@@ -386,6 +401,7 @@ static ssize_t kone_sysfs_show_actual_profile(struct device *dev,
                        hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
        return snprintf(buf, PAGE_SIZE, "%d\n", kone->actual_profile);
 }
+static DEVICE_ATTR(actual_profile, 0440, kone_sysfs_show_actual_profile, NULL);
 
 static ssize_t kone_sysfs_show_actual_dpi(struct device *dev,
                struct device_attribute *attr, char *buf)
@@ -394,6 +410,7 @@ static ssize_t kone_sysfs_show_actual_dpi(struct device *dev,
                        hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
        return snprintf(buf, PAGE_SIZE, "%d\n", kone->actual_dpi);
 }
+static DEVICE_ATTR(actual_dpi, 0440, kone_sysfs_show_actual_dpi, NULL);
 
 /* weight is read each time, since we don't get informed when it's changed */
 static ssize_t kone_sysfs_show_weight(struct device *dev,
@@ -416,6 +433,7 @@ static ssize_t kone_sysfs_show_weight(struct device *dev,
                return retval;
        return snprintf(buf, PAGE_SIZE, "%d\n", weight);
 }
+static DEVICE_ATTR(weight, 0440, kone_sysfs_show_weight, NULL);
 
 static ssize_t kone_sysfs_show_firmware_version(struct device *dev,
                struct device_attribute *attr, char *buf)
@@ -424,6 +442,8 @@ static ssize_t kone_sysfs_show_firmware_version(struct device *dev,
                        hid_get_drvdata(dev_get_drvdata(dev->parent->parent));
        return snprintf(buf, PAGE_SIZE, "%d\n", kone->firmware_version);
 }
+static DEVICE_ATTR(firmware_version, 0440, kone_sysfs_show_firmware_version,
+                  NULL);
 
 static ssize_t kone_sysfs_show_tcu(struct device *dev,
                struct device_attribute *attr, char *buf)
@@ -524,6 +544,7 @@ exit_unlock:
        mutex_unlock(&kone->kone_lock);
        return retval;
 }
+static DEVICE_ATTR(tcu, 0660, kone_sysfs_show_tcu, kone_sysfs_set_tcu);
 
 static ssize_t kone_sysfs_show_startup_profile(struct device *dev,
                struct device_attribute *attr, char *buf)
@@ -570,15 +591,17 @@ static ssize_t kone_sysfs_set_startup_profile(struct device *dev,
        mutex_unlock(&kone->kone_lock);
        return size;
 }
+static DEVICE_ATTR(startup_profile, 0660, kone_sysfs_show_startup_profile,
+                  kone_sysfs_set_startup_profile);
 
-static struct device_attribute kone_attributes[] = {
+static struct attribute *kone_attrs[] = {
        /*
         * Read actual dpi settings.
         * Returns raw value for further processing. Refer to enum
         * kone_polling_rates to get real value.
         */
-       __ATTR(actual_dpi, 0440, kone_sysfs_show_actual_dpi, NULL),
-       __ATTR(actual_profile, 0440, kone_sysfs_show_actual_profile, NULL),
+       &dev_attr_actual_dpi.attr,
+       &dev_attr_actual_profile.attr,
 
        /*
         * The mouse can be equipped with one of four supplied weights from 5
@@ -587,7 +610,7 @@ static struct device_attribute kone_attributes[] = {
         * by software. Refer to enum kone_weights to get corresponding real
         * weight.
         */
-       __ATTR(weight, 0440, kone_sysfs_show_weight, NULL),
+       &dev_attr_weight.attr,
 
        /*
         * Prints firmware version stored in mouse as integer.
@@ -595,66 +618,38 @@ static struct device_attribute kone_attributes[] = {
         * to get the real version number the decimal point has to be shifted 2
         * positions to the left. E.g. a value of 138 means 1.38.
         */
-       __ATTR(firmware_version, 0440,
-                       kone_sysfs_show_firmware_version, NULL),
+       &dev_attr_firmware_version.attr,
 
        /*
         * Prints state of Tracking Control Unit as number where 0 = off and
         * 1 = on. Writing 0 deactivates tcu and writing 1 calibrates and
         * activates the tcu
         */
-       __ATTR(tcu, 0660, kone_sysfs_show_tcu, kone_sysfs_set_tcu),
+       &dev_attr_tcu.attr,
 
        /* Prints and takes the number of the profile the mouse starts with */
-       __ATTR(startup_profile, 0660,
-                       kone_sysfs_show_startup_profile,
-                       kone_sysfs_set_startup_profile),
-       __ATTR_NULL
+       &dev_attr_startup_profile.attr,
+       NULL,
+};
+
+static struct bin_attribute *kone_bin_attributes[] = {
+       &bin_attr_settings,
+       &bin_attr_profile1,
+       &bin_attr_profile2,
+       &bin_attr_profile3,
+       &bin_attr_profile4,
+       &bin_attr_profile5,
+       NULL,
+};
+
+static const struct attribute_group kone_group = {
+       .attrs = kone_attrs,
+       .bin_attrs = kone_bin_attributes,
 };
 
-static struct bin_attribute kone_bin_attributes[] = {
-       {
-               .attr = { .name = "settings", .mode = 0660 },
-               .size = sizeof(struct kone_settings),
-               .read = kone_sysfs_read_settings,
-               .write = kone_sysfs_write_settings
-       },
-       {
-               .attr = { .name = "profile1", .mode = 0660 },
-               .size = sizeof(struct kone_profile),
-               .read = kone_sysfs_read_profilex,
-               .write = kone_sysfs_write_profilex,
-               .private = &profile_numbers[0]
-       },
-       {
-               .attr = { .name = "profile2", .mode = 0660 },
-               .size = sizeof(struct kone_profile),
-               .read = kone_sysfs_read_profilex,
-               .write = kone_sysfs_write_profilex,
-               .private = &profile_numbers[1]
-       },
-       {
-               .attr = { .name = "profile3", .mode = 0660 },
-               .size = sizeof(struct kone_profile),
-               .read = kone_sysfs_read_profilex,
-               .write = kone_sysfs_write_profilex,
-               .private = &profile_numbers[2]
-       },
-       {
-               .attr = { .name = "profile4", .mode = 0660 },
-               .size = sizeof(struct kone_profile),
-               .read = kone_sysfs_read_profilex,
-               .write = kone_sysfs_write_profilex,
-               .private = &profile_numbers[3]
-       },
-       {
-               .attr = { .name = "profile5", .mode = 0660 },
-               .size = sizeof(struct kone_profile),
-               .read = kone_sysfs_read_profilex,
-               .write = kone_sysfs_write_profilex,
-               .private = &profile_numbers[4]
-       },
-       __ATTR_NULL
+static const struct attribute_group *kone_groups[] = {
+       &kone_group,
+       NULL,
 };
 
 static int kone_init_kone_device_struct(struct usb_device *usb_dev,
@@ -891,8 +886,7 @@ static int __init kone_init(void)
        kone_class = class_create(THIS_MODULE, "kone");
        if (IS_ERR(kone_class))
                return PTR_ERR(kone_class);
-       kone_class->dev_attrs = kone_attributes;
-       kone_class->dev_bin_attrs = kone_bin_attributes;
+       kone_class->dev_groups = kone_groups;
 
        retval = hid_register_driver(&kone_driver);
        if (retval)