static int pm805_probe(struct i2c_client *client, const struct i2c_device_id *id) { int ret = 0; struct pm80x_chip *chip; struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev); ret = pm80x_init(client); if (ret) { dev_err(&client->dev, "pm805_init fail!\n"); goto out_init; } chip = i2c_get_clientdata(client); ret = device_805_init(chip); if (ret) { dev_err(chip->dev, "Failed to initialize 88pm805 devices\n"); goto err_805_init; } if (pdata && pdata->plat_config) pdata->plat_config(chip, pdata); err_805_init: pm80x_deinit(); out_init: return ret; }
static int pm805_probe(struct i2c_client *client, const struct i2c_device_id *id) { int ret = 0; struct pm80x_chip *chip; struct pm80x_platform_data *pdata = client->dev.platform_data; ret = pm80x_init(client, id); if (ret) { dev_err(&client->dev, "pm805_init fail!\n"); goto out_init; } chip = i2c_get_clientdata(client); ret = device_805_init(chip); if (ret) { dev_err(chip->dev, "%s id 0x%x failed!\n", __func__, chip->id); goto err_805_init; } if (pdata->plat_config) pdata->plat_config(chip, pdata); err_805_init: pm80x_deinit(client); out_init: return ret; }