Lines Matching +full:gpio1 +full:- +full:cfg

1 // SPDX-License-Identifier: GPL-2.0-only
3 * TI LP8788 MFD - buck regulator driver
92 struct gpio_desc *gpio1; member
104 struct lp8788_buck1_dvs *dvs = (struct lp8788_buck1_dvs *)buck->dvs; in lp8788_buck1_set_dvs()
110 pinstate = dvs->vsel == DVS_SEL_V0 ? DVS_LOW : DVS_HIGH; in lp8788_buck1_set_dvs()
111 gpiod_set_value(buck->gpio1, pinstate); in lp8788_buck1_set_dvs()
116 struct lp8788_buck2_dvs *dvs = (struct lp8788_buck2_dvs *)buck->dvs; in lp8788_buck2_set_dvs()
122 switch (dvs->vsel) { in lp8788_buck2_set_dvs()
143 gpiod_set_value(buck->gpio1, pin1); in lp8788_buck2_set_dvs()
144 gpiod_set_value(buck->gpio2, pin2); in lp8788_buck2_set_dvs()
177 lp8788_read_byte(buck->lp, LP8788_BUCK_DVS_SEL, &val); in lp8788_get_buck_dvs_ctrl_mode()
209 idx = gpiod_get_value(buck->gpio1); in lp8788_select_buck_vout_addr()
211 lp8788_read_byte(buck->lp, LP8788_BUCK_DVS_SEL, &val); in lp8788_select_buck_vout_addr()
218 pin1 = gpiod_get_value(buck->gpio1); in lp8788_select_buck_vout_addr()
219 pin2 = gpiod_get_value(buck->gpio2); in lp8788_select_buck_vout_addr()
230 lp8788_read_byte(buck->lp, LP8788_BUCK_DVS_SEL, &val); in lp8788_select_buck_vout_addr()
251 if (buck->dvs) in lp8788_buck12_set_voltage_sel()
256 return -EINVAL; in lp8788_buck12_set_voltage_sel()
258 return lp8788_update_bits(buck->lp, addr, LP8788_VOUT_M, selector); in lp8788_buck12_set_voltage_sel()
270 return -EINVAL; in lp8788_buck12_get_voltage_sel()
272 ret = lp8788_read_byte(buck->lp, addr, &val); in lp8788_buck12_get_voltage_sel()
285 if (lp8788_read_byte(buck->lp, addr, &val)) in lp8788_buck_enable_time()
286 return -EINVAL; in lp8788_buck_enable_time()
308 return -EINVAL; in lp8788_buck_set_mode()
311 return lp8788_update_bits(buck->lp, LP8788_BUCK_PWM, mask, val); in lp8788_buck_set_mode()
321 ret = lp8788_read_byte(buck->lp, LP8788_BUCK_PWM, &val); in lp8788_buck_get_mode()
414 struct lp8788_platform_data *pdata = buck->lp->pdata; in lp8788_dvs_gpio_request()
415 struct device *dev = &pdev->dev; in lp8788_dvs_gpio_request()
419 buck->gpio1 = devm_gpiod_get(dev, "dvs", GPIOD_OUT_LOW); in lp8788_dvs_gpio_request()
420 if (IS_ERR(buck->gpio1)) in lp8788_dvs_gpio_request()
421 return PTR_ERR(buck->gpio1); in lp8788_dvs_gpio_request()
422 gpiod_set_consumer_name(buck->gpio1, "LP8788_B1_DVS"); in lp8788_dvs_gpio_request()
424 buck->dvs = pdata->buck1_dvs; in lp8788_dvs_gpio_request()
427 buck->gpio1 = devm_gpiod_get_index(dev, "dvs", 0, GPIOD_OUT_LOW); in lp8788_dvs_gpio_request()
428 if (IS_ERR(buck->gpio1)) in lp8788_dvs_gpio_request()
429 return PTR_ERR(buck->gpio1); in lp8788_dvs_gpio_request()
430 gpiod_set_consumer_name(buck->gpio1, "LP8788_B2_DVS1"); in lp8788_dvs_gpio_request()
432 buck->gpio2 = devm_gpiod_get_index(dev, "dvs", 1, GPIOD_OUT_LOW); in lp8788_dvs_gpio_request()
433 if (IS_ERR(buck->gpio2)) in lp8788_dvs_gpio_request()
434 return PTR_ERR(buck->gpio2); in lp8788_dvs_gpio_request()
435 gpiod_set_consumer_name(buck->gpio2, "LP8788_B2_DVS2"); in lp8788_dvs_gpio_request()
437 buck->dvs = pdata->buck2_dvs; in lp8788_dvs_gpio_request()
449 struct lp8788_platform_data *pdata = buck->lp->pdata; in lp8788_init_dvs()
462 if ((id == BUCK1 && !pdata->buck1_dvs) || in lp8788_init_dvs()
463 (id == BUCK2 && !pdata->buck2_dvs)) in lp8788_init_dvs()
469 return lp8788_update_bits(buck->lp, LP8788_BUCK_DVS_SEL, mask[id], in lp8788_init_dvs()
473 return lp8788_update_bits(buck->lp, LP8788_BUCK_DVS_SEL, mask[id], in lp8788_init_dvs()
479 struct lp8788 *lp = dev_get_drvdata(pdev->dev.parent); in lp8788_buck_probe()
480 int id = pdev->id; in lp8788_buck_probe()
482 struct regulator_config cfg = { }; in lp8788_buck_probe() local
487 return -EINVAL; in lp8788_buck_probe()
489 buck = devm_kzalloc(&pdev->dev, sizeof(struct lp8788_buck), GFP_KERNEL); in lp8788_buck_probe()
491 return -ENOMEM; in lp8788_buck_probe()
493 buck->lp = lp; in lp8788_buck_probe()
499 cfg.dev = pdev->dev.parent; in lp8788_buck_probe()
500 cfg.init_data = lp->pdata ? lp->pdata->buck_data[id] : NULL; in lp8788_buck_probe()
501 cfg.driver_data = buck; in lp8788_buck_probe()
502 cfg.regmap = lp->regmap; in lp8788_buck_probe()
504 rdev = devm_regulator_register(&pdev->dev, &lp8788_buck_desc[id], &cfg); in lp8788_buck_probe()
507 dev_err(&pdev->dev, "BUCK%d regulator register err = %d\n", in lp8788_buck_probe()
512 buck->regulator = rdev; in lp8788_buck_probe()
541 MODULE_ALIAS("platform:lp8788-buck");