Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}