[PATCH] i2c: Drop i2c_driver.flags, 2 of 3
Just about every i2c chip driver sets the I2C_DF_NOTIFY flag, so we can simply make it the default and drop the flag. If any driver really doesn't want to be notified when i2c adapters are added, that driver can simply omit to set .attach_adapter. This approach is also more robust as it prevents accidental NULL pointer dereferences. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
ff179c8cf5
commit
8a9947552d
@ -54,7 +54,6 @@ static int ds1337_command(struct i2c_client *client, unsigned int cmd,
|
||||
static struct i2c_driver ds1337_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "ds1337",
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = ds1337_attach_adapter,
|
||||
.detach_client = ds1337_detach_client,
|
||||
.command = ds1337_command,
|
||||
|
@ -235,7 +235,6 @@ static struct i2c_driver ds1374_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = DS1374_DRV_NAME,
|
||||
.id = I2C_DRIVERID_DS1374,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = ds1374_attach,
|
||||
.detach_client = ds1374_detach,
|
||||
};
|
||||
|
@ -71,7 +71,6 @@ static struct i2c_driver eeprom_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "eeprom",
|
||||
.id = I2C_DRIVERID_EEPROM,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = eeprom_attach_adapter,
|
||||
.detach_client = eeprom_detach_client,
|
||||
};
|
||||
|
@ -1636,7 +1636,6 @@ static struct i2c_driver isp1301_driver = {
|
||||
.name = "isp1301_omap",
|
||||
.id = 1301, /* FIXME "official", i2c-ids.h */
|
||||
.class = I2C_CLASS_HWMON,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = isp1301_scan_bus,
|
||||
.detach_client = isp1301_detach_client,
|
||||
};
|
||||
|
@ -214,7 +214,6 @@ static struct i2c_driver m41t00_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = M41T00_DRV_NAME,
|
||||
.id = I2C_DRIVERID_STM41T00,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = m41t00_attach,
|
||||
.detach_client = m41t00_detach,
|
||||
};
|
||||
|
@ -69,7 +69,6 @@ static int max6875_detach_client(struct i2c_client *client);
|
||||
static struct i2c_driver max6875_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "max6875",
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = max6875_attach_adapter,
|
||||
.detach_client = max6875_detach_client,
|
||||
};
|
||||
|
@ -40,7 +40,6 @@ static int pca9539_detach_client(struct i2c_client *client);
|
||||
static struct i2c_driver pca9539_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "pca9539",
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = pca9539_attach_adapter,
|
||||
.detach_client = pca9539_detach_client,
|
||||
};
|
||||
|
@ -68,7 +68,6 @@ static struct i2c_driver pcf8574_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "pcf8574",
|
||||
.id = I2C_DRIVERID_PCF8574,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = pcf8574_attach_adapter,
|
||||
.detach_client = pcf8574_detach_client,
|
||||
};
|
||||
|
@ -91,7 +91,6 @@ static struct i2c_driver pcf8591_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "pcf8591",
|
||||
.id = I2C_DRIVERID_PCF8591,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = pcf8591_attach_adapter,
|
||||
.detach_client = pcf8591_detach_client,
|
||||
};
|
||||
|
@ -362,7 +362,6 @@ static struct i2c_driver rtc8564_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "RTC8564",
|
||||
.id = I2C_DRIVERID_RTC8564,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = rtc8564_probe,
|
||||
.detach_client = rtc8564_detach,
|
||||
.command = rtc8564_command
|
||||
|
@ -639,7 +639,6 @@ static int __init tps65010_scan_bus(struct i2c_adapter *bus)
|
||||
static struct i2c_driver tps65010_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "tps65010",
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = tps65010_scan_bus,
|
||||
.detach_client = __exit_p(tps65010_detach_client),
|
||||
};
|
||||
|
@ -107,7 +107,6 @@ static int x1205_command(struct i2c_client *client, unsigned int cmd,
|
||||
static struct i2c_driver x1205_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "x1205",
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = &x1205_attach,
|
||||
.detach_client = &x1205_detach,
|
||||
};
|
||||
|
@ -197,7 +197,7 @@ int i2c_add_adapter(struct i2c_adapter *adap)
|
||||
/* inform drivers of new adapters */
|
||||
list_for_each(item,&drivers) {
|
||||
driver = list_entry(item, struct i2c_driver, list);
|
||||
if (driver->flags & I2C_DF_NOTIFY)
|
||||
if (driver->attach_adapter)
|
||||
/* We ignore the return code; if it fails, too bad */
|
||||
driver->attach_adapter(adap);
|
||||
}
|
||||
@ -309,7 +309,7 @@ int i2c_add_driver(struct i2c_driver *driver)
|
||||
pr_debug("i2c-core: driver [%s] registered\n", driver->name);
|
||||
|
||||
/* now look for instances of driver on our adapters */
|
||||
if (driver->flags & I2C_DF_NOTIFY) {
|
||||
if (driver->attach_adapter) {
|
||||
list_for_each(item,&adapters) {
|
||||
adapter = list_entry(item, struct i2c_adapter, list);
|
||||
driver->attach_adapter(adapter);
|
||||
|
@ -484,7 +484,6 @@ static struct i2c_driver i2cdev_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "dev_driver",
|
||||
.id = I2C_DRIVERID_I2CDEV,
|
||||
.flags = I2C_DF_NOTIFY,
|
||||
.attach_adapter = i2cdev_attach_adapter,
|
||||
.detach_adapter = i2cdev_detach_adapter,
|
||||
.detach_client = i2cdev_detach_client,
|
||||
|
Reference in New Issue
Block a user