static int lp872x_regulator_register(struct lp872x *lp) { struct regulator_desc *desc; struct regulator_config cfg = { }; struct regulator_dev *rdev; int i, ret; for (i = 0 ; i < lp->num_regulators ; i++) { desc = (lp->chipid == LP8720) ? &lp8720_regulator_desc[i] : &lp8725_regulator_desc[i]; cfg.dev = lp->dev; cfg.init_data = lp872x_find_regulator_init_data(desc->id, lp); cfg.driver_data = lp; cfg.regmap = lp->regmap; rdev = regulator_register(desc, &cfg); if (IS_ERR(rdev)) { dev_err(lp->dev, "regulator register err"); ret = PTR_ERR(rdev); goto err; } *(lp->regulators + i) = rdev; } return 0; err: while (--i >= 0) { rdev = *(lp->regulators + i); regulator_unregister(rdev); } return ret; }
static int lp872x_regulator_register(struct lp872x *lp) { struct regulator_desc *desc; struct regulator_config cfg = { }; struct regulator_dev *rdev; int i; for (i = 0; i < lp->num_regulators; i++) { desc = (lp->chipid == LP8720) ? &lp8720_regulator_desc[i] : &lp8725_regulator_desc[i]; cfg.dev = lp->dev; cfg.init_data = lp872x_find_regulator_init_data(desc->id, lp); cfg.driver_data = lp; cfg.regmap = lp->regmap; rdev = devm_regulator_register(lp->dev, desc, &cfg); if (IS_ERR(rdev)) { dev_err(lp->dev, "regulator register err"); return PTR_ERR(rdev); } } return 0; }