Lines Matching +full:dcdc +full:- +full:reg
361 .n_voltages = (((_max) - (_min)) / (_step) + 1), \
383 .n_voltages = (((_max) - (_min)) / (_step) + 1), \
457 u8 reg, mask, enable, cfg = 0xff;
461 switch (axp20x->variant) {
466 reg = AXP20X_DCDC2_LDO3_V_RAMP;
477 reg = AXP20X_DCDC2_LDO3_V_RAMP;
491 return -ENOTSUPP;
510 dev_err(axp20x->dev, "unsupported ramp value %d", ramp);
511 return -EINVAL;
517 return regmap_update_bits(axp20x->regmap, reg, mask, cfg);
525 switch (axp20x->variant) {
528 rdev->constraints && rdev->constraints->soft_start) {
765 AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800),
849 /* DCDC ranges shared with AXP813 */
959 AXP_DESC_IO(AXP803, LDO_IO0, "ldo-io0", "ips", 700, 3300, 100,
963 AXP_DESC_IO(AXP803, LDO_IO1, "ldo-io1", "ips", 700, 3300, 100,
967 AXP_DESC_FIXED(AXP803, RTC_LDO, "rtc-ldo", "ips", 3000),
1199 AXP_DESC_FIXED(AXP813, RTC_LDO, "rtc-ldo", "ips", 1800),
1200 AXP_DESC_IO(AXP813, LDO_IO0, "ldo-io0", "ips", 700, 3300, 100,
1204 AXP_DESC_IO(AXP813, LDO_IO1, "ldo-io1", "ips", 700, 3300, 100,
1307 AXP_DESC_FIXED(AXP15060, RTC_LDO, "rtc-ldo", NULL, 1800),
1312 struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
1313 unsigned int reg = AXP20X_DCDC_FREQ;
1316 switch (axp20x->variant) {
1327 * AXP803/AXP813 DCDC work frequency setting has the same
1331 reg = AXP803_DCDC_FREQ_CTRL;
1335 * AXP806 also have DCDC work frequency setting register at a
1338 if (axp20x->variant == AXP806_ID)
1339 reg = AXP806_DCDC_FREQ_CTRL;
1353 /* The DCDC PWM frequency seems to be fixed to 3 MHz. */
1355 dev_err(&pdev->dev,
1356 "DCDC frequency on this PMIC is fixed to 3 MHz.\n");
1357 return -EINVAL;
1362 dev_err(&pdev->dev,
1363 "Setting DCDC frequency for unsupported AXP variant\n");
1364 return -EINVAL;
1372 dev_warn(&pdev->dev, "DCDC frequency too low. Set to %ukHz\n",
1378 dev_warn(&pdev->dev, "DCDC frequency too high. Set to %ukHz\n",
1382 dcdcfreq = (dcdcfreq - min) / step;
1384 return regmap_update_bits(axp20x->regmap, reg,
1394 np = of_node_get(pdev->dev.parent->of_node);
1400 dev_warn(&pdev->dev, "regulators node not found\n");
1402 of_property_read_u32(regulators, "x-powers,dcdc-freq", &dcdcfreq);
1405 dev_err(&pdev->dev, "Error setting dcdc frequency: %d\n", ret);
1417 unsigned int reg = AXP20X_DCDC_MODE;
1420 switch (axp20x->variant) {
1424 return -EINVAL;
1430 workmode <<= ffs(mask) - 1;
1435 * AXP806 DCDC regulator IDs have the same range as AXP22X.
1438 reg = AXP806_DCDC_MODE_CTRL2;
1444 return -EINVAL;
1446 mask = AXP22X_WORKMODE_DCDCX_MASK(id - AXP22X_DCDC1);
1447 workmode <<= id - AXP22X_DCDC1;
1452 return -EINVAL;
1454 mask = AXP22X_WORKMODE_DCDCX_MASK(id - AXP803_DCDC1);
1455 workmode <<= id - AXP803_DCDC1;
1460 return -EINVAL;
1462 mask = AXP22X_WORKMODE_DCDCX_MASK(id - AXP813_DCDC1);
1463 workmode <<= id - AXP813_DCDC1;
1467 reg = AXP15060_DCDC_MODE_CTRL2;
1469 return -EINVAL;
1471 mask = AXP22X_WORKMODE_DCDCX_MASK(id - AXP15060_DCDC1);
1472 workmode <<= id - AXP15060_DCDC1;
1478 return -EINVAL;
1481 return regmap_update_bits(rdev->regmap, reg, mask, workmode);
1485 * This function checks whether a regulator is part of a poly-phase
1490 u32 reg = 0;
1496 switch (axp20x->variant) {
1499 regmap_read(axp20x->regmap, AXP803_POLYPHASE_CTRL, ®);
1503 return !!(reg & AXP803_DCDC23_POLYPHASE_DUAL);
1505 return !!(reg & AXP803_DCDC56_POLYPHASE_DUAL);
1510 regmap_read(axp20x->regmap, AXP806_DCDC_MODE_CTRL2, ®);
1514 return (((reg & AXP806_DCDCABC_POLYPHASE_MASK) ==
1516 ((reg & AXP806_DCDCABC_POLYPHASE_MASK) ==
1519 return ((reg & AXP806_DCDCABC_POLYPHASE_MASK) ==
1522 return !!(reg & AXP806_DCDCDE_POLYPHASE_DUAL);
1527 regmap_read(axp20x->regmap, AXP15060_DCDC_MODE_CTRL1, ®);
1531 return !!(reg & AXP15060_DCDC23_POLYPHASE_DUAL_MASK);
1533 return !!(reg & AXP15060_DCDC46_POLYPHASE_DUAL_MASK);
1538 regmap_read(axp20x->regmap, AXP323_DCDC_MODE_CTRL2, ®);
1542 return !!(reg & BIT(1));
1556 struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
1559 .dev = pdev->dev.parent,
1560 .regmap = axp20x->regmap,
1570 switch (axp20x->variant) {
1580 drivevbus = of_property_read_bool(pdev->dev.parent->of_node,
1581 "x-powers,drive-vbus-en");
1595 drivevbus = of_property_read_bool(pdev->dev.parent->of_node,
1596 "x-powers,drive-vbus-en");
1609 drivevbus = of_property_read_bool(pdev->dev.parent->of_node,
1610 "x-powers,drive-vbus-en");
1617 dev_err(&pdev->dev, "Unsupported AXP variant: %d\n",
1618 axp20x->variant);
1619 return -EINVAL;
1622 /* This only sets the dcdc freq. Ignore any errors */
1630 * If this regulator is a slave in a poly-phase setup,
1638 if (axp20x->variant == AXP813_ID && i == AXP813_FLDO3)
1655 new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
1658 return -ENOMEM;
1661 new_desc->supply_name = dcdc1_name;
1668 new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
1671 return -ENOMEM;
1674 new_desc->supply_name = dcdc5_name;
1680 new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
1683 return -ENOMEM;
1686 new_desc->supply_name = aldo1_name;
1690 rdev = devm_regulator_register(&pdev->dev, desc, &config);
1692 dev_err(&pdev->dev, "Failed to register %s\n",
1698 ret = of_property_read_u32(rdev->dev.of_node,
1699 "x-powers,dcdc-workmode",
1703 dev_err(&pdev->dev, "Failed to set workmode on %s\n",
1704 rdev->desc->name);
1713 of_property_read_string(rdev->dev.of_node,
1714 "regulator-name",
1720 of_property_read_string(rdev->dev.of_node,
1721 "regulator-name",
1725 of_property_read_string(rdev->dev.of_node,
1726 "regulator-name",
1732 regmap_update_bits(axp20x->regmap, AXP20X_OVER_TMP,
1734 rdev = devm_regulator_register(&pdev->dev,
1738 dev_err(&pdev->dev, "Failed to register drivevbus\n");
1749 .name = "axp20x-regulator",
1759 MODULE_ALIAS("platform:axp20x-regulator");