return count;
 }
+static DEVICE_ATTR_RW(state);
 
 static ssize_t name_show(struct device *dev, struct device_attribute *attr,
                char *buf)
 
        return sprintf(buf, "%s\n", dev_name(edev->dev));
 }
+static DEVICE_ATTR_RO(name);
 
 static ssize_t cable_name_show(struct device *dev,
                               struct device_attribute *attr, char *buf)
 }
 EXPORT_SYMBOL_GPL(extcon_unregister_notifier);
 
-static struct device_attribute extcon_attrs[] = {
-       __ATTR(state, S_IRUGO | S_IWUSR, state_show, state_store),
-       __ATTR_RO(name),
-       __ATTR_NULL,
+static struct attribute *extcon_attrs[] = {
+       &dev_attr_state.attr,
+       &dev_attr_name.attr,
+       NULL,
 };
+ATTRIBUTE_GROUPS(extcon);
 
 static int create_extcon_class(void)
 {
                extcon_class = class_create(THIS_MODULE, "extcon");
                if (IS_ERR(extcon_class))
                        return PTR_ERR(extcon_class);
-               extcon_class->dev_attrs = extcon_attrs;
+               extcon_class->dev_groups = extcon_groups;
 
 #if defined(CONFIG_ANDROID)
                switch_class = class_compat_register("switch");