[i2c] Empty i2c device name sysfs attribute

Jean Delvare khali at linux-fr.org
Thu Jun 21 22:51:51 CEST 2007


Hi David, hi all,

I just hit a minor problem with a new-style i2c driver. When
instantiating a new device, the type member of struct i2c_board_info is
said to be optional. If it's not set, i2c_client.name isn't set either.
However, the device's "name" sysfs attribute is always created. So we
end up with an empty sysfs file. Confusing; I think we want to change
that.

I see 3 possibilities:
* Create the "name" sysfs file conditionally. This means extra code.
* Make the type member of struct i2c_board_info mandatory.
* Use the driver name for i2c_client.name if no type is provided.

This last possibility has my preference, here's a patch. Thoughts
anyone?

* * * * *

Use the i2c driver name for the new-style i2c device's "name" sysfs
file if no type string was provided at device creation. Otherwise we
create an empty sysfs file, which is confusing.

Signed-off-by: Jean Delvare <khali at linux-fr.org>
---
 drivers/i2c/i2c-core.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- linux-2.6.22-rc5.orig/drivers/i2c/i2c-core.c	2007-06-21 09:56:01.000000000 +0200
+++ linux-2.6.22-rc5/drivers/i2c/i2c-core.c	2007-06-21 21:00:26.000000000 +0200
@@ -236,7 +236,10 @@ i2c_new_device(struct i2c_adapter *adap,
 
 	strlcpy(client->driver_name, info->driver_name,
 		sizeof(client->driver_name));
-	strlcpy(client->name, info->type, sizeof(client->name));
+	if (info->type[0])
+		strlcpy(client->name, info->type, sizeof(client->name));
+	else
+		strlcpy(client->name, info->driver_name, sizeof(client->name));
 
 	/* a new style driver may be bound to this device when we
 	 * return from this function, or any later moment (e.g. maybe


-- 
Jean Delvare



More information about the i2c mailing list