Lines Matching refs:dcdc
62 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_dcdc_get_mode() local
63 struct wm831x *wm831x = dcdc->wm831x; in wm831x_dcdc_get_mode()
64 u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG; in wm831x_dcdc_get_mode()
116 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_dcdc_set_mode() local
117 struct wm831x *wm831x = dcdc->wm831x; in wm831x_dcdc_set_mode()
118 u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG; in wm831x_dcdc_set_mode()
126 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_dcdc_set_suspend_mode() local
127 struct wm831x *wm831x = dcdc->wm831x; in wm831x_dcdc_set_suspend_mode()
128 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL; in wm831x_dcdc_set_suspend_mode()
135 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_dcdc_get_status() local
136 struct wm831x *wm831x = dcdc->wm831x; in wm831x_dcdc_get_status()
179 struct wm831x_dcdc *dcdc = data; in wm831x_dcdc_uv_irq() local
181 regulator_lock(dcdc->regulator); in wm831x_dcdc_uv_irq()
182 regulator_notifier_call_chain(dcdc->regulator, in wm831x_dcdc_uv_irq()
185 regulator_unlock(dcdc->regulator); in wm831x_dcdc_uv_irq()
192 struct wm831x_dcdc *dcdc = data; in wm831x_dcdc_oc_irq() local
194 regulator_lock(dcdc->regulator); in wm831x_dcdc_oc_irq()
195 regulator_notifier_call_chain(dcdc->regulator, in wm831x_dcdc_oc_irq()
198 regulator_unlock(dcdc->regulator); in wm831x_dcdc_oc_irq()
214 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_buckv_set_dvs() local
216 if (state == dcdc->dvs_gpio_state) in wm831x_buckv_set_dvs()
219 dcdc->dvs_gpio_state = state; in wm831x_buckv_set_dvs()
220 gpiod_set_value(dcdc->dvs_gpiod, state); in wm831x_buckv_set_dvs()
233 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_buckv_set_voltage_sel() local
234 struct wm831x *wm831x = dcdc->wm831x; in wm831x_buckv_set_voltage_sel()
235 int on_reg = dcdc->base + WM831X_DCDC_ON_CONFIG; in wm831x_buckv_set_voltage_sel()
236 int dvs_reg = dcdc->base + WM831X_DCDC_DVS_CONTROL; in wm831x_buckv_set_voltage_sel()
240 if (dcdc->dvs_gpiod && dcdc->on_vsel == vsel) in wm831x_buckv_set_voltage_sel()
243 if (dcdc->dvs_gpiod && dcdc->dvs_vsel == vsel) in wm831x_buckv_set_voltage_sel()
250 dcdc->on_vsel = vsel; in wm831x_buckv_set_voltage_sel()
252 if (!dcdc->dvs_gpiod) in wm831x_buckv_set_voltage_sel()
266 if (vsel > dcdc->dvs_vsel) { in wm831x_buckv_set_voltage_sel()
271 dcdc->dvs_vsel = vsel; in wm831x_buckv_set_voltage_sel()
283 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_buckv_set_suspend_voltage() local
284 struct wm831x *wm831x = dcdc->wm831x; in wm831x_buckv_set_suspend_voltage()
285 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL; in wm831x_buckv_set_suspend_voltage()
297 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_buckv_get_voltage_sel() local
299 if (dcdc->dvs_gpiod && dcdc->dvs_gpio_state) in wm831x_buckv_get_voltage_sel()
300 return dcdc->dvs_vsel; in wm831x_buckv_get_voltage_sel()
302 return dcdc->on_vsel; in wm831x_buckv_get_voltage_sel()
333 struct wm831x_dcdc *dcdc, in wm831x_buckv_dvs_init() argument
336 struct wm831x *wm831x = dcdc->wm831x; in wm831x_buckv_dvs_init()
346 dcdc->dvs_gpio_state = pdata->dvs_init_state; in wm831x_buckv_dvs_init()
348 dcdc->dvs_gpiod = devm_gpiod_get(&pdev->dev, "dvs", in wm831x_buckv_dvs_init()
349 dcdc->dvs_gpio_state ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW); in wm831x_buckv_dvs_init()
350 if (IS_ERR(dcdc->dvs_gpiod)) { in wm831x_buckv_dvs_init()
352 dcdc->name, PTR_ERR(dcdc->dvs_gpiod)); in wm831x_buckv_dvs_init()
365 pdata->dvs_control_src, dcdc->name); in wm831x_buckv_dvs_init()
372 if (!dcdc->dvs_vsel) { in wm831x_buckv_dvs_init()
374 dcdc->base + WM831X_DCDC_DVS_CONTROL, in wm831x_buckv_dvs_init()
375 WM831X_DC1_DVS_VSEL_MASK, dcdc->on_vsel); in wm831x_buckv_dvs_init()
377 dcdc->dvs_vsel = dcdc->on_vsel; in wm831x_buckv_dvs_init()
383 ret = wm831x_set_bits(wm831x, dcdc->base + WM831X_DCDC_DVS_CONTROL, in wm831x_buckv_dvs_init()
387 dcdc->name, ret); in wm831x_buckv_dvs_init()
397 struct wm831x_dcdc *dcdc; in wm831x_buckv_probe() local
409 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc), in wm831x_buckv_probe()
411 if (!dcdc) in wm831x_buckv_probe()
414 dcdc->wm831x = wm831x; in wm831x_buckv_probe()
422 dcdc->base = res->start; in wm831x_buckv_probe()
424 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1); in wm831x_buckv_probe()
425 dcdc->desc.name = dcdc->name; in wm831x_buckv_probe()
427 snprintf(dcdc->supply_name, sizeof(dcdc->supply_name), in wm831x_buckv_probe()
429 dcdc->desc.supply_name = dcdc->supply_name; in wm831x_buckv_probe()
431 dcdc->desc.id = id; in wm831x_buckv_probe()
432 dcdc->desc.type = REGULATOR_VOLTAGE; in wm831x_buckv_probe()
433 dcdc->desc.n_voltages = WM831X_BUCKV_MAX_SELECTOR + 1; in wm831x_buckv_probe()
434 dcdc->desc.linear_ranges = wm831x_buckv_ranges; in wm831x_buckv_probe()
435 dcdc->desc.n_linear_ranges = ARRAY_SIZE(wm831x_buckv_ranges); in wm831x_buckv_probe()
436 dcdc->desc.ops = &wm831x_buckv_ops; in wm831x_buckv_probe()
437 dcdc->desc.owner = THIS_MODULE; in wm831x_buckv_probe()
438 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE; in wm831x_buckv_probe()
439 dcdc->desc.enable_mask = 1 << id; in wm831x_buckv_probe()
440 dcdc->desc.csel_reg = dcdc->base + WM831X_DCDC_CONTROL_2; in wm831x_buckv_probe()
441 dcdc->desc.csel_mask = WM831X_DC1_HC_THR_MASK; in wm831x_buckv_probe()
442 dcdc->desc.n_current_limits = ARRAY_SIZE(wm831x_dcdc_ilim); in wm831x_buckv_probe()
443 dcdc->desc.curr_table = wm831x_dcdc_ilim; in wm831x_buckv_probe()
445 ret = wm831x_reg_read(wm831x, dcdc->base + WM831X_DCDC_ON_CONFIG); in wm831x_buckv_probe()
450 dcdc->on_vsel = ret & WM831X_DC1_ON_VSEL_MASK; in wm831x_buckv_probe()
452 ret = wm831x_reg_read(wm831x, dcdc->base + WM831X_DCDC_DVS_CONTROL); in wm831x_buckv_probe()
457 dcdc->dvs_vsel = ret & WM831X_DC1_DVS_VSEL_MASK; in wm831x_buckv_probe()
459 if (pdata && pdata->dcdc[id]) in wm831x_buckv_probe()
460 wm831x_buckv_dvs_init(pdev, dcdc, in wm831x_buckv_probe()
461 pdata->dcdc[id]->driver_data); in wm831x_buckv_probe()
465 config.init_data = pdata->dcdc[id]; in wm831x_buckv_probe()
466 config.driver_data = dcdc; in wm831x_buckv_probe()
469 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc, in wm831x_buckv_probe()
471 if (IS_ERR(dcdc->regulator)) { in wm831x_buckv_probe()
472 ret = PTR_ERR(dcdc->regulator); in wm831x_buckv_probe()
482 dcdc->name, dcdc); in wm831x_buckv_probe()
493 dcdc->name, dcdc); in wm831x_buckv_probe()
500 platform_set_drvdata(pdev, dcdc); in wm831x_buckv_probe()
521 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_buckp_set_suspend_voltage() local
522 struct wm831x *wm831x = dcdc->wm831x; in wm831x_buckp_set_suspend_voltage()
523 u16 reg = dcdc->base + WM831X_DCDC_SLEEP_CONTROL; in wm831x_buckp_set_suspend_voltage()
555 struct wm831x_dcdc *dcdc; in wm831x_buckp_probe() local
567 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc), in wm831x_buckp_probe()
569 if (!dcdc) in wm831x_buckp_probe()
572 dcdc->wm831x = wm831x; in wm831x_buckp_probe()
580 dcdc->base = res->start; in wm831x_buckp_probe()
582 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1); in wm831x_buckp_probe()
583 dcdc->desc.name = dcdc->name; in wm831x_buckp_probe()
585 snprintf(dcdc->supply_name, sizeof(dcdc->supply_name), in wm831x_buckp_probe()
587 dcdc->desc.supply_name = dcdc->supply_name; in wm831x_buckp_probe()
589 dcdc->desc.id = id; in wm831x_buckp_probe()
590 dcdc->desc.type = REGULATOR_VOLTAGE; in wm831x_buckp_probe()
591 dcdc->desc.n_voltages = WM831X_BUCKP_MAX_SELECTOR + 1; in wm831x_buckp_probe()
592 dcdc->desc.ops = &wm831x_buckp_ops; in wm831x_buckp_probe()
593 dcdc->desc.owner = THIS_MODULE; in wm831x_buckp_probe()
594 dcdc->desc.vsel_reg = dcdc->base + WM831X_DCDC_ON_CONFIG; in wm831x_buckp_probe()
595 dcdc->desc.vsel_mask = WM831X_DC3_ON_VSEL_MASK; in wm831x_buckp_probe()
596 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE; in wm831x_buckp_probe()
597 dcdc->desc.enable_mask = 1 << id; in wm831x_buckp_probe()
598 dcdc->desc.min_uV = 850000; in wm831x_buckp_probe()
599 dcdc->desc.uV_step = 25000; in wm831x_buckp_probe()
603 config.init_data = pdata->dcdc[id]; in wm831x_buckp_probe()
604 config.driver_data = dcdc; in wm831x_buckp_probe()
607 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc, in wm831x_buckp_probe()
609 if (IS_ERR(dcdc->regulator)) { in wm831x_buckp_probe()
610 ret = PTR_ERR(dcdc->regulator); in wm831x_buckp_probe()
620 dcdc->name, dcdc); in wm831x_buckp_probe()
627 platform_set_drvdata(pdev, dcdc); in wm831x_buckp_probe()
648 struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); in wm831x_boostp_get_status() local
649 struct wm831x *wm831x = dcdc->wm831x; in wm831x_boostp_get_status()
686 int id = pdev->id % ARRAY_SIZE(pdata->dcdc); in wm831x_boostp_probe()
687 struct wm831x_dcdc *dcdc; in wm831x_boostp_probe() local
693 if (pdata == NULL || pdata->dcdc[id] == NULL) in wm831x_boostp_probe()
696 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc), GFP_KERNEL); in wm831x_boostp_probe()
697 if (!dcdc) in wm831x_boostp_probe()
700 dcdc->wm831x = wm831x; in wm831x_boostp_probe()
707 dcdc->base = res->start; in wm831x_boostp_probe()
709 snprintf(dcdc->name, sizeof(dcdc->name), "DCDC%d", id + 1); in wm831x_boostp_probe()
710 dcdc->desc.name = dcdc->name; in wm831x_boostp_probe()
711 dcdc->desc.id = id; in wm831x_boostp_probe()
712 dcdc->desc.type = REGULATOR_VOLTAGE; in wm831x_boostp_probe()
713 dcdc->desc.ops = &wm831x_boostp_ops; in wm831x_boostp_probe()
714 dcdc->desc.owner = THIS_MODULE; in wm831x_boostp_probe()
715 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE; in wm831x_boostp_probe()
716 dcdc->desc.enable_mask = 1 << id; in wm831x_boostp_probe()
720 config.init_data = pdata->dcdc[id]; in wm831x_boostp_probe()
721 config.driver_data = dcdc; in wm831x_boostp_probe()
724 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc, in wm831x_boostp_probe()
726 if (IS_ERR(dcdc->regulator)) { in wm831x_boostp_probe()
727 ret = PTR_ERR(dcdc->regulator); in wm831x_boostp_probe()
737 dcdc->name, in wm831x_boostp_probe()
738 dcdc); in wm831x_boostp_probe()
745 platform_set_drvdata(pdev, dcdc); in wm831x_boostp_probe()
779 struct wm831x_dcdc *dcdc; in wm831x_epe_probe() local
784 dcdc = devm_kzalloc(&pdev->dev, sizeof(struct wm831x_dcdc), GFP_KERNEL); in wm831x_epe_probe()
785 if (!dcdc) in wm831x_epe_probe()
788 dcdc->wm831x = wm831x; in wm831x_epe_probe()
793 snprintf(dcdc->name, sizeof(dcdc->name), "EPE%d", id + 1); in wm831x_epe_probe()
794 dcdc->desc.name = dcdc->name; in wm831x_epe_probe()
795 dcdc->desc.id = id + WM831X_EPE_BASE; /* Offset in DCDC registers */ in wm831x_epe_probe()
796 dcdc->desc.ops = &wm831x_epe_ops; in wm831x_epe_probe()
797 dcdc->desc.type = REGULATOR_VOLTAGE; in wm831x_epe_probe()
798 dcdc->desc.owner = THIS_MODULE; in wm831x_epe_probe()
799 dcdc->desc.enable_reg = WM831X_DCDC_ENABLE; in wm831x_epe_probe()
800 dcdc->desc.enable_mask = 1 << dcdc->desc.id; in wm831x_epe_probe()
805 config.driver_data = dcdc; in wm831x_epe_probe()
808 dcdc->regulator = devm_regulator_register(&pdev->dev, &dcdc->desc, in wm831x_epe_probe()
810 if (IS_ERR(dcdc->regulator)) { in wm831x_epe_probe()
811 ret = PTR_ERR(dcdc->regulator); in wm831x_epe_probe()
817 platform_set_drvdata(pdev, dcdc); in wm831x_epe_probe()