<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">ChangeSet 1.1123.18.8, 2003/08/15 11:06:52-07:00, greg@kroah.com

I2C: add adapter and client name files as the driver core no longer provides them.


 drivers/i2c/i2c-core.c |   28 ++++++++++++++++++++++++++++
 1 files changed, 28 insertions(+)


diff -Nru a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
--- a/drivers/i2c/i2c-core.c	Fri Aug 15 11:26:44 2003
+++ b/drivers/i2c/i2c-core.c	Fri Aug 15 11:26:44 2003
@@ -79,12 +79,36 @@
 	.release =	&amp;i2c_adapter_class_dev_release,
 };
 
+static ssize_t show_adapter_name(struct device *dev, char *buf)
+{
+	struct i2c_adapter *adap = dev_to_i2c_adapter(dev);
+	return sprintf(buf, "%s\n", adap-&gt;name);
+}
+static DEVICE_ATTR(name, S_IRUGO, show_adapter_name, NULL);
+
+
 static void i2c_client_release(struct device *dev)
 {
 	struct i2c_client *client = to_i2c_client(dev);
 	complete(&amp;client-&gt;released);
 }
 
+static ssize_t show_client_name(struct device *dev, char *buf)
+{
+	struct i2c_client *client = to_i2c_client(dev);
+	return sprintf(buf, "%s\n", client-&gt;name);
+}
+
+/* 
+ * We can't use the DEVICE_ATTR() macro here as we want the same filename for a
+ * different type of a device.  So beware if the DEVICE_ATTR() macro ever
+ * changes, this definition will also have to change.
+ */
+static struct device_attribute dev_attr_client_name = {
+	.attr	= {.name = "name", .mode = S_IRUGO, .owner = THIS_MODULE },
+	.show	= &amp;show_client_name,
+};
+
 
 /* ---------------------------------------------------
  * registering functions 
@@ -120,6 +144,7 @@
 	adap-&gt;dev.driver = &amp;i2c_adapter_driver;
 	adap-&gt;dev.release = &amp;i2c_adapter_dev_release;
 	device_register(&amp;adap-&gt;dev);
+	device_create_file(&amp;adap-&gt;dev, &amp;dev_attr_name);
 
 	/* Add this adapter to the i2c_adapter class */
 	memset(&amp;adap-&gt;class_dev, 0x00, sizeof(struct class_device));
@@ -184,6 +209,7 @@
 	init_completion(&amp;adap-&gt;dev_released);
 	init_completion(&amp;adap-&gt;class_dev_released);
 	class_device_unregister(&amp;adap-&gt;class_dev);
+	device_remove_file(&amp;adap-&gt;dev, &amp;dev_attr_name);
 	device_unregister(&amp;adap-&gt;dev);
 	list_del(&amp;adap-&gt;list);
 
@@ -361,6 +387,7 @@
 		"%d-%04x", i2c_adapter_id(adapter), client-&gt;addr);
 	printk("registering %s\n", client-&gt;dev.bus_id);
 	device_register(&amp;client-&gt;dev);
+	device_create_file(&amp;client-&gt;dev, &amp;dev_attr_client_name);
 	
 	return 0;
 }
@@ -387,6 +414,7 @@
 	down(&amp;adapter-&gt;clist_lock);
 	list_del(&amp;client-&gt;list);
 	init_completion(&amp;client-&gt;released);
+	device_remove_file(&amp;client-&gt;dev, &amp;dev_attr_client_name);
 	device_unregister(&amp;client-&gt;dev);
 	up(&amp;adapter-&gt;clist_lock);
 	wait_for_completion(&amp;client-&gt;released);
</pre></body></html>