Lines Matching +full:sw1 +full:- +full:3
1 // SPDX-License-Identifier: GPL-2.0
3 // Linear Technology LTC3589,LTC3589-1 regulator support
36 #define LTC3589_IRQSTAT_PGOOD_TIMEOUT BIT(3)
45 #define LTC3589_OVEN_BB_OUT BIT(3)
57 #define LTC3589_VRRCR_SW2_RAMP_MASK GENMASK(3, 2)
107 return regmap_update_bits(ltc3589->regmap, rdev->desc->vsel_reg + 1, in ltc3589_set_suspend_voltage()
108 rdev->desc->vsel_mask, sel); in ltc3589_set_suspend_voltage()
118 mask = rdev->desc->apply_bit << 1; in ltc3589_set_suspend_mode()
123 mask |= rdev->desc->apply_bit; in ltc3589_set_suspend_mode()
124 bit |= rdev->desc->apply_bit; in ltc3589_set_suspend_mode()
125 return regmap_update_bits(ltc3589->regmap, LTC3589_VCCR, mask, bit); in ltc3589_set_suspend_mode()
128 /* SW1, SW2, SW3, LDO2 */
179 struct ltc3589 *ltc3589 = config->driver_data; in ltc3589_of_parse_cb()
180 struct regulator_desc *rdesc = <c3589->regulator_descs[desc->id]; in ltc3589_of_parse_cb()
185 if (desc->id >= LTC3589_LDO3) in ltc3589_of_parse_cb()
188 ret = of_property_read_u32_array(np, "lltc,fb-voltage-divider", r, 2); in ltc3589_of_parse_cb()
190 dev_err(ltc3589->dev, "Failed to parse voltage divider: %d\n", in ltc3589_of_parse_cb()
198 rdesc->min_uV = ltc3589_scale(desc->min_uV, r[0], r[1]); in ltc3589_of_parse_cb()
199 rdesc->uV_step = ltc3589_scale(desc->uV_step, r[0], r[1]); in ltc3589_of_parse_cb()
200 rdesc->fixed_uV = ltc3589_scale(desc->fixed_uV, r[0], r[1]); in ltc3589_of_parse_cb()
254 LTC3589_LINEAR_REG(SW1, sw1, B1DTV1),
257 LTC3589_FIXED_REG(BB_OUT, bb-out),
356 regmap_read(ltc3589->regmap, LTC3589_IRQSTAT, &irqstat); in ltc3589_isr()
361 regulator_notifier_call_chain(ltc3589->regulators[i], in ltc3589_isr()
368 regulator_notifier_call_chain(ltc3589->regulators[i], in ltc3589_isr()
373 regmap_write(ltc3589->regmap, LTC3589_CLIRQ, 0); in ltc3589_isr()
380 struct device *dev = &client->dev; in ltc3589_probe()
388 return -ENOMEM; in ltc3589_probe()
392 ltc3589->dev = dev; in ltc3589_probe()
394 descs = ltc3589->regulator_descs; in ltc3589_probe()
396 descs[LTC3589_LDO3].fixed_uV = info->fixed_uV; in ltc3589_probe()
397 descs[LTC3589_LDO4].volt_table = info->volt_table; in ltc3589_probe()
399 ltc3589->regmap = devm_regmap_init_i2c(client, <c3589_regmap_config); in ltc3589_probe()
400 if (IS_ERR(ltc3589->regmap)) { in ltc3589_probe()
401 ret = PTR_ERR(ltc3589->regmap); in ltc3589_probe()
407 struct regulator_desc *desc = <c3589->regulator_descs[i]; in ltc3589_probe()
413 ltc3589->regulators[i] = devm_regulator_register(dev, desc, in ltc3589_probe()
415 if (IS_ERR(ltc3589->regulators[i])) { in ltc3589_probe()
416 ret = PTR_ERR(ltc3589->regulators[i]); in ltc3589_probe()
418 desc->name, ret); in ltc3589_probe()
423 if (client->irq) { in ltc3589_probe()
424 ret = devm_request_threaded_irq(dev, client->irq, NULL, in ltc3589_probe()
427 client->name, ltc3589); in ltc3589_probe()
449 { "ltc3589-1", (kernel_ulong_t)<c3589_12_info },
450 { "ltc3589-2", (kernel_ulong_t)<c3589_12_info },
457 { .compatible = "lltc,ltc3589-1", .data = <c3589_12_info },
458 { .compatible = "lltc,ltc3589-2", .data = <c3589_12_info },
475 MODULE_DESCRIPTION("Regulator driver for Linear Technology LTC3589(-1,2)");