|
@@ -515,12 +515,20 @@ static int lp5562_probe(struct i2c_client *client,
|
|
int ret;
|
|
int ret;
|
|
struct lp55xx_chip *chip;
|
|
struct lp55xx_chip *chip;
|
|
struct lp55xx_led *led;
|
|
struct lp55xx_led *led;
|
|
- struct lp55xx_platform_data *pdata = client->dev.platform_data;
|
|
|
|
-
|
|
|
|
- if (!pdata) {
|
|
|
|
- dev_err(&client->dev, "no platform data\n");
|
|
|
|
- return -EINVAL;
|
|
|
|
|
|
+ struct lp55xx_platform_data *pdata;
|
|
|
|
+ struct device_node *np = client->dev.of_node;
|
|
|
|
+
|
|
|
|
+ if (!client->dev.platform_data) {
|
|
|
|
+ if (np) {
|
|
|
|
+ ret = lp55xx_of_populate_pdata(&client->dev, np);
|
|
|
|
+ if (ret < 0)
|
|
|
|
+ return ret;
|
|
|
|
+ } else {
|
|
|
|
+ dev_err(&client->dev, "no platform data\n");
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ pdata = client->dev.platform_data;
|
|
|
|
|
|
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
|
|
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
|
|
if (!chip)
|
|
if (!chip)
|
|
@@ -579,6 +587,7 @@ static int lp5562_remove(struct i2c_client *client)
|
|
|
|
|
|
static const struct i2c_device_id lp5562_id[] = {
|
|
static const struct i2c_device_id lp5562_id[] = {
|
|
{ "lp5562", 0 },
|
|
{ "lp5562", 0 },
|
|
|
|
+ { "ti,lp5562", 0 }, /* OF compatible */
|
|
{ }
|
|
{ }
|
|
};
|
|
};
|
|
MODULE_DEVICE_TABLE(i2c, lp5562_id);
|
|
MODULE_DEVICE_TABLE(i2c, lp5562_id);
|