[i2c] [patch 2.6.21-rc3-git +i2c-patches] i2c class attribute cleanup

David Brownell david-b at pacbell.net
Thu Mar 8 17:17:45 CET 2007


This patch is a minor cleanup/codeshrink, using class infrastructure in
i2c-core to manage the i2c_adapter attribute.

Signed-off-by: David Brownell <dbrownell at users.sourceforge.net>

---
 drivers/i2c/i2c-core.c |   30 +++++++++++++-----------------
 1 files changed, 13 insertions(+), 17 deletions(-)

Index: at91/drivers/i2c/i2c-core.c
===================================================================
--- at91.orig/drivers/i2c/i2c-core.c	2007-03-08 07:58:26.000000000 -0800
+++ at91/drivers/i2c/i2c-core.c	2007-03-08 07:58:28.000000000 -0800
@@ -107,28 +107,32 @@ struct bus_type i2c_bus_type = {
 
 /* ------------------------------------------------------------------------- */
 
+/* I2C bus adapters -- one roots each I2C or SMBUS segment */
+
 void i2c_adapter_dev_release(struct device *dev)
 {
 	struct i2c_adapter *adap = dev_to_i2c_adapter(dev);
 	complete(&adap->dev_released);
 }
 
-/* ------------------------------------------------------------------------- */
+static ssize_t
+show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
+{
+	struct i2c_adapter *adap = dev_to_i2c_adapter(dev);
+	return sprintf(buf, "%s\n", adap->name);
+}
 
-/* I2C bus adapters -- one roots each I2C or SMBUS segment */
+static struct device_attribute i2c_adapter_attrs[] = {
+	__ATTR(name, S_IRUGO, show_adapter_name, NULL),
+	{ },
+};
 
 struct class i2c_adapter_class = {
 	.owner			= THIS_MODULE,
 	.name			= "i2c-adapter",
+	.dev_attrs		= i2c_adapter_attrs,
 };
 
-static ssize_t show_adapter_name(struct device *dev, struct device_attribute *attr, char *buf)
-{
-	struct i2c_adapter *adap = dev_to_i2c_adapter(dev);
-	return sprintf(buf, "%s\n", adap->name);
-}
-static DEVICE_ATTR(name, S_IRUGO, show_adapter_name, NULL);
-
 
 static void i2c_client_release(struct device *dev)
 {
@@ -202,9 +206,6 @@ int i2c_add_adapter(struct i2c_adapter *
 	res = device_register(&adap->dev);
 	if (res)
 		goto out_list;
-	res = device_create_file(&adap->dev, &dev_attr_name);
-	if (res)
-		goto out_unregister;
 
 	dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
 
@@ -220,10 +221,6 @@ out_unlock:
 	mutex_unlock(&core_lists);
 	return res;
 
-out_unregister:
-	init_completion(&adap->dev_released); /* Needed? */
-	device_unregister(&adap->dev);
-	wait_for_completion(&adap->dev_released);
 out_list:
 	list_del(&adap->list);
 	idr_remove(&i2c_adapter_idr, adap->nr);
@@ -279,7 +276,6 @@ int i2c_del_adapter(struct i2c_adapter *
 
 	/* clean up the sysfs representation */
 	init_completion(&adap->dev_released);
-	device_remove_file(&adap->dev, &dev_attr_name);
 	device_unregister(&adap->dev);
 	list_del(&adap->list);
 



More information about the i2c mailing list