diff options
Diffstat (limited to 'drivers/mfd/da9055-i2c.c')
| -rw-r--r-- | drivers/mfd/da9055-i2c.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/mfd/da9055-i2c.c b/drivers/mfd/da9055-i2c.c index 88f6dca53ba..d4d4c165eb9 100644 --- a/drivers/mfd/da9055-i2c.c +++ b/drivers/mfd/da9055-i2c.c @@ -15,10 +15,12 @@ #include <linux/device.h> #include <linux/i2c.h> #include <linux/err.h> +#include <linux/of.h> +#include <linux/of_device.h> #include <linux/mfd/da9055/core.h> -static int __devinit da9055_i2c_probe(struct i2c_client *i2c, +static int da9055_i2c_probe(struct i2c_client *i2c, const struct i2c_device_id *id) { struct da9055 *da9055; @@ -44,7 +46,7 @@ static int __devinit da9055_i2c_probe(struct i2c_client *i2c, return da9055_device_init(da9055); } -static int __devexit da9055_i2c_remove(struct i2c_client *i2c) +static int da9055_i2c_remove(struct i2c_client *i2c) { struct da9055 *da9055 = i2c_get_clientdata(i2c); @@ -53,18 +55,32 @@ static int __devexit da9055_i2c_remove(struct i2c_client *i2c) return 0; } +/* + * DO NOT change the device Ids. The naming is intentionally specific as both + * the PMIC and CODEC parts of this chip are instantiated separately as I2C + * devices (both have configurable I2C addresses, and are to all intents and + * purposes separate). As a result there are specific DA9055 ids for PMIC + * and CODEC, which must be different to operate together. + */ static struct i2c_device_id da9055_i2c_id[] = { {"da9055-pmic", 0}, { } }; +MODULE_DEVICE_TABLE(i2c, da9055_i2c_id); + +static const struct of_device_id da9055_of_match[] = { + { .compatible = "dlg,da9055-pmic", }, + { } +}; static struct i2c_driver da9055_i2c_driver = { .probe = da9055_i2c_probe, - .remove = __devexit_p(da9055_i2c_remove), + .remove = da9055_i2c_remove, .id_table = da9055_i2c_id, .driver = { - .name = "da9055", + .name = "da9055-pmic", .owner = THIS_MODULE, + .of_match_table = of_match_ptr(da9055_of_match), }, }; |
