Lines Matching refs:lp
160 static int lp872x_read_byte(struct lp872x *lp, u8 addr, u8 *data) in lp872x_read_byte() argument
165 ret = regmap_read(lp->regmap, addr, &val); in lp872x_read_byte()
167 dev_err(lp->dev, "failed to read 0x%.2x\n", addr); in lp872x_read_byte()
175 static inline int lp872x_write_byte(struct lp872x *lp, u8 addr, u8 data) in lp872x_write_byte() argument
177 return regmap_write(lp->regmap, addr, data); in lp872x_write_byte()
180 static inline int lp872x_update_bits(struct lp872x *lp, u8 addr, in lp872x_update_bits() argument
183 return regmap_update_bits(lp->regmap, addr, mask, data); in lp872x_update_bits()
186 static int lp872x_get_timestep_usec(struct lp872x *lp) in lp872x_get_timestep_usec() argument
188 enum lp872x_id chip = lp->chipid; in lp872x_get_timestep_usec()
211 ret = lp872x_read_byte(lp, LP872X_GENERAL_CFG, &val); in lp872x_get_timestep_usec()
224 struct lp872x *lp = rdev_get_drvdata(rdev); in lp872x_regulator_enable_time() local
226 int time_step_us = lp872x_get_timestep_usec(lp); in lp872x_regulator_enable_time()
247 ret = lp872x_read_byte(lp, addr, &val); in lp872x_regulator_enable_time()
256 static void lp872x_set_dvs(struct lp872x *lp, enum lp872x_dvs_sel dvs_sel, in lp872x_set_dvs() argument
263 lp->dvs_pin = state; in lp872x_set_dvs()
266 static u8 lp872x_select_buck_vout_addr(struct lp872x *lp, in lp872x_select_buck_vout_addr() argument
271 if (lp872x_read_byte(lp, LP872X_GENERAL_CFG, &val)) in lp872x_select_buck_vout_addr()
277 addr = (lp->dvs_pin == DVS_HIGH) ? in lp872x_select_buck_vout_addr()
280 if (lp872x_read_byte(lp, LP8720_ENABLE, &val)) in lp872x_select_buck_vout_addr()
291 addr = (lp->dvs_pin == DVS_HIGH) ? in lp872x_select_buck_vout_addr()
323 struct lp872x *lp = rdev_get_drvdata(rdev); in lp872x_buck_set_voltage_sel() local
326 struct lp872x_dvs *dvs = lp->pdata ? lp->pdata->dvs : NULL; in lp872x_buck_set_voltage_sel()
329 lp872x_set_dvs(lp, dvs->vsel, dvs->gpio); in lp872x_buck_set_voltage_sel()
331 addr = lp872x_select_buck_vout_addr(lp, buck); in lp872x_buck_set_voltage_sel()
335 return lp872x_update_bits(lp, addr, mask, selector); in lp872x_buck_set_voltage_sel()
340 struct lp872x *lp = rdev_get_drvdata(rdev); in lp872x_buck_get_voltage_sel() local
345 addr = lp872x_select_buck_vout_addr(lp, buck); in lp872x_buck_get_voltage_sel()
349 ret = lp872x_read_byte(lp, addr, &val); in lp872x_buck_get_voltage_sel()
359 struct lp872x *lp = rdev_get_drvdata(rdev); in lp8725_buck_set_current_limit() local
378 return lp872x_update_bits(lp, addr, in lp8725_buck_set_current_limit()
388 struct lp872x *lp = rdev_get_drvdata(rdev); in lp8725_buck_get_current_limit() local
404 ret = lp872x_read_byte(lp, addr, &val); in lp8725_buck_get_current_limit()
416 struct lp872x *lp = rdev_get_drvdata(rdev); in lp872x_buck_set_mode() local
447 return lp872x_update_bits(lp, addr, mask, val); in lp872x_buck_set_mode()
452 struct lp872x *lp = rdev_get_drvdata(rdev); in lp872x_buck_get_mode() local
474 ret = lp872x_read_byte(lp, addr, &val); in lp872x_buck_get_mode()
715 static int lp872x_init_dvs(struct lp872x *lp) in lp872x_init_dvs() argument
718 struct lp872x_dvs *dvs = lp->pdata ? lp->pdata->dvs : NULL; in lp872x_init_dvs()
728 dev_warn(lp->dev, "invalid gpio: %d\n", gpio); in lp872x_init_dvs()
733 ret = devm_gpio_request_one(lp->dev, gpio, pinstate, "LP872X DVS"); in lp872x_init_dvs()
735 dev_err(lp->dev, "gpio request err: %d\n", ret); in lp872x_init_dvs()
739 lp->dvs_pin = pinstate; in lp872x_init_dvs()
740 lp->dvs_gpio = gpio; in lp872x_init_dvs()
745 return lp872x_update_bits(lp, LP872X_GENERAL_CFG, mask[lp->chipid], in lp872x_init_dvs()
746 default_dvs_mode[lp->chipid]); in lp872x_init_dvs()
749 static int lp872x_config(struct lp872x *lp) in lp872x_config() argument
751 struct lp872x_platform_data *pdata = lp->pdata; in lp872x_config()
757 ret = lp872x_write_byte(lp, LP872X_GENERAL_CFG, pdata->general_config); in lp872x_config()
762 return lp872x_init_dvs(lp); in lp872x_config()
766 *lp872x_find_regulator_init_data(int id, struct lp872x *lp) in lp872x_find_regulator_init_data() argument
768 struct lp872x_platform_data *pdata = lp->pdata; in lp872x_find_regulator_init_data()
774 for (i = 0; i < lp->num_regulators; i++) { in lp872x_find_regulator_init_data()
782 static int lp872x_regulator_register(struct lp872x *lp) in lp872x_regulator_register() argument
789 for (i = 0; i < lp->num_regulators; i++) { in lp872x_regulator_register()
790 desc = (lp->chipid == LP8720) ? &lp8720_regulator_desc[i] : in lp872x_regulator_register()
793 cfg.dev = lp->dev; in lp872x_regulator_register()
794 cfg.init_data = lp872x_find_regulator_init_data(desc->id, lp); in lp872x_regulator_register()
795 cfg.driver_data = lp; in lp872x_regulator_register()
796 cfg.regmap = lp->regmap; in lp872x_regulator_register()
798 rdev = devm_regulator_register(lp->dev, desc, &cfg); in lp872x_regulator_register()
800 dev_err(lp->dev, "regulator register err"); in lp872x_regulator_register()
905 struct lp872x *lp; in lp872x_probe() local
916 lp = devm_kzalloc(&cl->dev, sizeof(struct lp872x), GFP_KERNEL); in lp872x_probe()
917 if (!lp) in lp872x_probe()
920 lp->num_regulators = lp872x_num_regulators[id->driver_data]; in lp872x_probe()
922 lp->regmap = devm_regmap_init_i2c(cl, &lp872x_regmap_config); in lp872x_probe()
923 if (IS_ERR(lp->regmap)) { in lp872x_probe()
924 ret = PTR_ERR(lp->regmap); in lp872x_probe()
929 lp->dev = &cl->dev; in lp872x_probe()
930 lp->pdata = dev_get_platdata(&cl->dev); in lp872x_probe()
931 lp->chipid = id->driver_data; in lp872x_probe()
932 i2c_set_clientdata(cl, lp); in lp872x_probe()
934 ret = lp872x_config(lp); in lp872x_probe()
938 return lp872x_regulator_register(lp); in lp872x_probe()