Lines Matching refs:dcdc
3 // wm831x-dcdc.c -- DC-DC buck converter driver for the WM831x series
62 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
63 struct wm831x *wm831x = dcdc->wm831x;
64 u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG;
116 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
117 struct wm831x *wm831x = dcdc->wm831x;
118 u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG;
126 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
127 struct wm831x *wm831x = dcdc->wm831x;
128 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL;
135 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
136 struct wm831x *wm831x = dcdc->wm831x;
179 struct wm831x_dcdc *dcdc = data;
181 regulator_notifier_call_chain(dcdc->regulator,
190 struct wm831x_dcdc *dcdc = data;
192 regulator_notifier_call_chain(dcdc->regulator,
210 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
212 if (state == dcdc->dvs_gpio_state)
215 dcdc->dvs_gpio_state = state;
216 gpiod_set_value(dcdc->dvs_gpiod, state);
229 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
230 struct wm831x *wm831x = dcdc->wm831x;
231 int on_reg = dcdc->base + WM831X_DCDC_ON_CONFIG;
232 int dvs_reg = dcdc->base + WM831X_DCDC_DVS_CONTROL;
236 if (dcdc->dvs_gpiod && dcdc->on_vsel == vsel)
239 if (dcdc->dvs_gpiod && dcdc->dvs_vsel == vsel)
246 dcdc->on_vsel = vsel;
248 if (!dcdc->dvs_gpiod)
262 if (vsel > dcdc->dvs_vsel) {
267 dcdc->dvs_vsel = vsel;
279 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
280 struct wm831x *wm831x = dcdc->wm831x;
281 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL;
293 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
295 if (dcdc->dvs_gpiod && dcdc->dvs_gpio_state)
296 return dcdc->dvs_vsel;
298 return dcdc->on_vsel;
329 struct wm831x_dcdc *dcdc,
332 struct wm831x *wm831x = dcdc->wm831x;
342 dcdc->dvs_gpio_state = pdata->dvs_init_state;
344 dcdc->dvs_gpiod = devm_gpiod_get(&pdev->dev, "dvs",
345 dcdc->dvs_gpio_state ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
346 if (IS_ERR(dcdc->dvs_gpiod)) {
348 dcdc->name, PTR_ERR(dcdc->dvs_gpiod));
361 pdata->dvs_control_src, dcdc->name);
368 if (!dcdc->dvs_vsel) {
370 dcdc->base + WM831X_DCDC_DVS_CONTROL,
371 WM831X_DC1_DVS_VSEL_MASK, dcdc->on_vsel);
373 dcdc->dvs_vsel = dcdc->on_vsel;
379 ret = wm831x_set_bits(wm831x, dcdc->base + WM831X_DCDC_DVS_CONTROL,
383 dcdc->name, ret);
393 struct wm831x_dcdc *dcdc;
405 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc),
407 if (!dcdc)
410 dcdc->wm831x = wm831x;
418 dcdc->base = res->start;
420 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1);
421 dcdc->desc.name = dcdc->name;
423 snprintf(dcdc->supply_name, sizeof(dcdc->supply_name),
425 dcdc->desc.supply_name = dcdc->supply_name;
427 dcdc->desc.id = id;
428 dcdc->desc.type = REGULATOR_VOLTAGE;
429 dcdc->desc.n_voltages = WM831X_BUCKV_MAX_SELECTOR + 1;
430 dcdc->desc.linear_ranges = wm831x_buckv_ranges;
431 dcdc->desc.n_linear_ranges = ARRAY_SIZE(wm831x_buckv_ranges);
432 dcdc->desc.ops = &wm831x_buckv_ops;
433 dcdc->desc.owner = THIS_MODULE;
434 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE;
435 dcdc->desc.enable_mask = 1 << id;
436 dcdc->desc.csel_reg = dcdc->base + WM831X_DCDC_CONTROL_2;
437 dcdc->desc.csel_mask = WM831X_DC1_HC_THR_MASK;
438 dcdc->desc.n_current_limits = ARRAY_SIZE(wm831x_dcdc_ilim);
439 dcdc->desc.curr_table = wm831x_dcdc_ilim;
441 ret = wm831x_reg_read(wm831x, dcdc->base + WM831X_DCDC_ON_CONFIG);
446 dcdc->on_vsel = ret & WM831X_DC1_ON_VSEL_MASK;
448 ret = wm831x_reg_read(wm831x, dcdc->base + WM831X_DCDC_DVS_CONTROL);
453 dcdc->dvs_vsel = ret & WM831X_DC1_DVS_VSEL_MASK;
455 if (pdata && pdata->dcdc[id])
456 wm831x_buckv_dvs_init(pdev, dcdc,
457 pdata->dcdc[id]->driver_data);
461 config.init_data = pdata->dcdc[id];
462 config.driver_data = dcdc;
465 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc,
467 if (IS_ERR(dcdc->regulator)) {
468 ret = PTR_ERR(dcdc->regulator);
478 dcdc->name, dcdc);
489 dcdc->name, dcdc);
496 platform_set_drvdata(pdev, dcdc);
518 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
519 struct wm831x *wm831x = dcdc->wm831x;
520 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL;
552 struct wm831x_dcdc *dcdc;
564 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc),
566 if (!dcdc)
569 dcdc->wm831x = wm831x;
577 dcdc->base = res->start;
579 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1);
580 dcdc->desc.name = dcdc->name;
582 snprintf(dcdc->supply_name, sizeof(dcdc->supply_name),
584 dcdc->desc.supply_name = dcdc->supply_name;
586 dcdc->desc.id = id;
587 dcdc->desc.type = REGULATOR_VOLTAGE;
588 dcdc->desc.n_voltages = WM831X_BUCKP_MAX_SELECTOR + 1;
589 dcdc->desc.ops = &wm831x_buckp_ops;
590 dcdc->desc.owner = THIS_MODULE;
591 dcdc->desc.vsel_reg = dcdc->base + WM831X_DCDC_ON_CONFIG;
592 dcdc->desc.vsel_mask = WM831X_DC3_ON_VSEL_MASK;
593 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE;
594 dcdc->desc.enable_mask = 1 << id;
595 dcdc->desc.min_uV = 850000;
596 dcdc->desc.uV_step = 25000;
600 config.init_data = pdata->dcdc[id];
601 config.driver_data = dcdc;
604 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc,
606 if (IS_ERR(dcdc->regulator)) {
607 ret = PTR_ERR(dcdc->regulator);
617 dcdc->name, dcdc);
624 platform_set_drvdata(pdev, dcdc);
646 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev);
647 struct wm831x *wm831x = dcdc->wm831x;
684 int id = pdev->id % ARRAY_SIZE(pdata->dcdc);
685 struct wm831x_dcdc *dcdc;
691 if (pdata == NULL || pdata->dcdc[id] == NULL)
694 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc), GFP_KERNEL);
695 if (!dcdc)
698 dcdc->wm831x = wm831x;
705 dcdc->base = res->start;
707 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1);
708 dcdc->desc.name = dcdc->name;
709 dcdc->desc.id = id;
710 dcdc->desc.type = REGULATOR_VOLTAGE;
711 dcdc->desc.ops = &wm831x_boostp_ops;
712 dcdc->desc.owner = THIS_MODULE;
713 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE;
714 dcdc->desc.enable_mask = 1 << id;
718 config.init_data = pdata->dcdc[id];
719 config.driver_data = dcdc;
722 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc,
724 if (IS_ERR(dcdc->regulator)) {
725 ret = PTR_ERR(dcdc->regulator);
735 dcdc->name,
736 dcdc);
743 platform_set_drvdata(pdev, dcdc);
778 struct wm831x_dcdc *dcdc;
783 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc), GFP_KERNEL);
784 if (!dcdc)
787 dcdc->wm831x = wm831x;
792 snprintf(dcdc->name, sizeof(dcdc->name), "EPE%d", id + 1);
793 dcdc->desc.name = dcdc->name;
794 dcdc->desc.id = id + WM831X_EPE_BASE; /* Offset in DCDC registers */
795 dcdc->desc.ops = &wm831x_epe_ops;
796 dcdc->desc.type = REGULATOR_VOLTAGE;
797 dcdc->desc.owner = THIS_MODULE;
798 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE;
799 dcdc->desc.enable_mask = 1 << dcdc->desc.id;
804 config.driver_data = dcdc;
807 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc,
809 if (IS_ERR(dcdc->regulator)) {
810 ret = PTR_ERR(dcdc->regulator);
816 platform_set_drvdata(pdev, dcdc);