[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