Commit 0b873f3d authored by Bryan Wu's avatar Bryan Wu

leds: convert LM3530 LED driver to devm_kzalloc() and cleanup error exit path

Cc: Shreshtha Kumar SAHU <shreshthakumar.sahu@stericsson.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarBryan Wu <bryan.wu@canonical.com>
parent 6770fc60
...@@ -386,28 +386,24 @@ static int __devinit lm3530_probe(struct i2c_client *client, ...@@ -386,28 +386,24 @@ static int __devinit lm3530_probe(struct i2c_client *client,
if (pdata == NULL) { if (pdata == NULL) {
dev_err(&client->dev, "platform data required\n"); dev_err(&client->dev, "platform data required\n");
err = -ENODEV; return -ENODEV;
goto err_out;
} }
/* BL mode */ /* BL mode */
if (pdata->mode > LM3530_BL_MODE_PWM) { if (pdata->mode > LM3530_BL_MODE_PWM) {
dev_err(&client->dev, "Illegal Mode request\n"); dev_err(&client->dev, "Illegal Mode request\n");
err = -EINVAL; return -EINVAL;
goto err_out;
} }
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
dev_err(&client->dev, "I2C_FUNC_I2C not supported\n"); dev_err(&client->dev, "I2C_FUNC_I2C not supported\n");
err = -EIO; return -EIO;
goto err_out;
} }
drvdata = kzalloc(sizeof(struct lm3530_data), GFP_KERNEL); drvdata = devm_kzalloc(&client->dev, sizeof(struct lm3530_data),
if (drvdata == NULL) { GFP_KERNEL);
err = -ENOMEM; if (drvdata == NULL)
goto err_out; return -ENOMEM;
}
drvdata->mode = pdata->mode; drvdata->mode = pdata->mode;
drvdata->client = client; drvdata->client = client;
...@@ -425,7 +421,7 @@ static int __devinit lm3530_probe(struct i2c_client *client, ...@@ -425,7 +421,7 @@ static int __devinit lm3530_probe(struct i2c_client *client,
dev_err(&client->dev, "regulator get failed\n"); dev_err(&client->dev, "regulator get failed\n");
err = PTR_ERR(drvdata->regulator); err = PTR_ERR(drvdata->regulator);
drvdata->regulator = NULL; drvdata->regulator = NULL;
goto err_regulator_get; return err;
} }
if (drvdata->pdata->brt_val) { if (drvdata->pdata->brt_val) {
...@@ -458,9 +454,6 @@ static int __devinit lm3530_probe(struct i2c_client *client, ...@@ -458,9 +454,6 @@ static int __devinit lm3530_probe(struct i2c_client *client,
err_class_register: err_class_register:
err_reg_init: err_reg_init:
regulator_put(drvdata->regulator); regulator_put(drvdata->regulator);
err_regulator_get:
kfree(drvdata);
err_out:
return err; return err;
} }
...@@ -474,7 +467,6 @@ static int __devexit lm3530_remove(struct i2c_client *client) ...@@ -474,7 +467,6 @@ static int __devexit lm3530_remove(struct i2c_client *client)
regulator_disable(drvdata->regulator); regulator_disable(drvdata->regulator);
regulator_put(drvdata->regulator); regulator_put(drvdata->regulator);
led_classdev_unregister(&drvdata->led_dev); led_classdev_unregister(&drvdata->led_dev);
kfree(drvdata);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment