Lines Matching defs:lp

155 static int lp872x_read_byte(struct lp872x *lp, u8 addr, u8 *data)
160 ret = regmap_read(lp->regmap, addr, &val);
162 dev_err(lp->dev, "failed to read 0x%.2x\n", addr);
170 static inline int lp872x_write_byte(struct lp872x *lp, u8 addr, u8 data)
172 return regmap_write(lp->regmap, addr, data);
175 static inline int lp872x_update_bits(struct lp872x *lp, u8 addr,
178 return regmap_update_bits(lp->regmap, addr, mask, data);
181 static int lp872x_get_timestep_usec(struct lp872x *lp)
183 enum lp872x_id chip = lp->chipid;
206 ret = lp872x_read_byte(lp, LP872X_GENERAL_CFG, &val);
219 struct lp872x *lp = rdev_get_drvdata(rdev);
221 int time_step_us = lp872x_get_timestep_usec(lp);
242 ret = lp872x_read_byte(lp, addr, &val);
251 static void lp872x_set_dvs(struct lp872x *lp, enum lp872x_dvs_sel dvs_sel,
258 lp->dvs_pin = state;
261 static u8 lp872x_select_buck_vout_addr(struct lp872x *lp,
266 if (lp872x_read_byte(lp, LP872X_GENERAL_CFG, &val))
272 addr = (lp->dvs_pin == GPIOD_OUT_HIGH) ?
275 if (lp872x_read_byte(lp, LP8720_ENABLE, &val))
286 addr = (lp->dvs_pin == GPIOD_OUT_HIGH) ?
318 struct lp872x *lp = rdev_get_drvdata(rdev);
321 struct lp872x_dvs *dvs = lp->pdata ? lp->pdata->dvs : NULL;
324 lp872x_set_dvs(lp, dvs->vsel, dvs->gpio);
326 addr = lp872x_select_buck_vout_addr(lp, buck);
330 return lp872x_update_bits(lp, addr, mask, selector);
335 struct lp872x *lp = rdev_get_drvdata(rdev);
340 addr = lp872x_select_buck_vout_addr(lp, buck);
344 ret = lp872x_read_byte(lp, addr, &val);
353 struct lp872x *lp = rdev_get_drvdata(rdev);
384 return lp872x_update_bits(lp, addr, mask, val);
389 struct lp872x *lp = rdev_get_drvdata(rdev);
411 ret = lp872x_read_byte(lp, addr, &val);
675 static int lp872x_init_dvs(struct lp872x *lp)
677 struct lp872x_dvs *dvs = lp->pdata ? lp->pdata->dvs : NULL;
689 dvs->gpio = devm_gpiod_get_optional(lp->dev, "ti,dvs", pinstate);
692 dev_err(lp->dev, "gpio request err: %ld\n", PTR_ERR(dvs->gpio));
696 lp->dvs_pin = pinstate;
701 return lp872x_update_bits(lp, LP872X_GENERAL_CFG, mask[lp->chipid],
702 default_dvs_mode[lp->chipid]);
705 static int lp872x_hw_enable(struct lp872x *lp)
707 if (!lp->pdata)
710 if (!lp->pdata->enable_gpio)
714 lp->pdata->enable_gpio = devm_gpiod_get_optional(lp->dev, "enable", GPIOD_OUT_HIGH);
715 if (IS_ERR(lp->pdata->enable_gpio)) {
716 dev_err(lp->dev, "gpio request err: %ld\n", PTR_ERR(lp->pdata->enable_gpio));
717 return PTR_ERR(lp->pdata->enable_gpio);
721 if (lp->chipid == LP8720)
729 static int lp872x_config(struct lp872x *lp)
731 struct lp872x_platform_data *pdata = lp->pdata;
737 ret = lp872x_write_byte(lp, LP872X_GENERAL_CFG, pdata->general_config);
742 return lp872x_init_dvs(lp);
746 *lp872x_find_regulator_init_data(int id, struct lp872x *lp)
748 struct lp872x_platform_data *pdata = lp->pdata;
754 for (i = 0; i < lp->num_regulators; i++) {
762 static int lp872x_regulator_register(struct lp872x *lp)
769 for (i = 0; i < lp->num_regulators; i++) {
770 desc = (lp->chipid == LP8720) ? &lp8720_regulator_desc[i] :
773 cfg.dev = lp->dev;
774 cfg.init_data = lp872x_find_regulator_init_data(desc->id, lp);
775 cfg.driver_data = lp;
776 cfg.regmap = lp->regmap;
778 rdev = devm_regulator_register(lp->dev, desc, &cfg);
780 dev_err(lp->dev, "regulator register err");
884 struct lp872x *lp;
901 lp = devm_kzalloc(&cl->dev, sizeof(struct lp872x), GFP_KERNEL);
902 if (!lp)
905 lp->num_regulators = lp872x_num_regulators[id->driver_data];
907 lp->regmap = devm_regmap_init_i2c(cl, &lp872x_regmap_config);
908 if (IS_ERR(lp->regmap)) {
909 ret = PTR_ERR(lp->regmap);
914 lp->dev = &cl->dev;
915 lp->pdata = pdata;
916 lp->chipid = id->driver_data;
917 i2c_set_clientdata(cl, lp);
919 ret = lp872x_hw_enable(lp);
923 ret = lp872x_config(lp);
927 return lp872x_regulator_register(lp);