|
@@ -102,8 +102,8 @@ static void return_i2c_dev(struct i2c_dev *i2c_dev)
|
|
|
kfree(i2c_dev);
|
|
|
}
|
|
|
|
|
|
-static ssize_t show_adapter_name(struct device *dev,
|
|
|
- struct device_attribute *attr, char *buf)
|
|
|
+static ssize_t name_show(struct device *dev,
|
|
|
+ struct device_attribute *attr, char *buf)
|
|
|
{
|
|
|
struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt));
|
|
|
|
|
@@ -111,7 +111,13 @@ static ssize_t show_adapter_name(struct device *dev,
|
|
|
return -ENODEV;
|
|
|
return sprintf(buf, "%s\n", i2c_dev->adap->name);
|
|
|
}
|
|
|
-static DEVICE_ATTR(name, S_IRUGO, show_adapter_name, NULL);
|
|
|
+static DEVICE_ATTR_RO(name);
|
|
|
+
|
|
|
+static struct attribute *i2c_attrs[] = {
|
|
|
+ &dev_attr_name.attr,
|
|
|
+ NULL,
|
|
|
+};
|
|
|
+ATTRIBUTE_GROUPS(i2c);
|
|
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
|
@@ -562,15 +568,10 @@ static int i2cdev_attach_adapter(struct device *dev, void *dummy)
|
|
|
res = PTR_ERR(i2c_dev->dev);
|
|
|
goto error;
|
|
|
}
|
|
|
- res = device_create_file(i2c_dev->dev, &dev_attr_name);
|
|
|
- if (res)
|
|
|
- goto error_destroy;
|
|
|
|
|
|
pr_debug("i2c-dev: adapter [%s] registered as minor %d\n",
|
|
|
adap->name, adap->nr);
|
|
|
return 0;
|
|
|
-error_destroy:
|
|
|
- device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr));
|
|
|
error:
|
|
|
return_i2c_dev(i2c_dev);
|
|
|
return res;
|
|
@@ -589,7 +590,6 @@ static int i2cdev_detach_adapter(struct device *dev, void *dummy)
|
|
|
if (!i2c_dev) /* attach_adapter must have failed */
|
|
|
return 0;
|
|
|
|
|
|
- device_remove_file(i2c_dev->dev, &dev_attr_name);
|
|
|
return_i2c_dev(i2c_dev);
|
|
|
device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr));
|
|
|
|
|
@@ -637,6 +637,7 @@ static int __init i2c_dev_init(void)
|
|
|
res = PTR_ERR(i2c_dev_class);
|
|
|
goto out_unreg_chrdev;
|
|
|
}
|
|
|
+ i2c_dev_class->dev_groups = i2c_groups;
|
|
|
|
|
|
/* Keep track of adapters which will be added or removed later */
|
|
|
res = bus_register_notifier(&i2c_bus_type, &i2cdev_notifier);
|