Loading Documentation/power/regulator/regulator.txt +1 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,7 @@ Registration Drivers can register a regulator by calling :- struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, struct device *dev, struct regulator_init_data *init_data, void *driver_data, struct device_node *of_node); const struct regulator_config *config); This will register the regulators capabilities and operations to the regulator core. Loading drivers/mfd/tps65090.c +0 −11 Original line number Diff line number Diff line Loading @@ -78,17 +78,6 @@ static struct mfd_cell tps65090s[] = { }, }; struct tps65090 { struct mutex lock; struct device *dev; struct i2c_client *client; struct regmap *rmap; struct irq_chip irq_chip; struct mutex irq_lock; int irq_base; unsigned int id; }; int tps65090_write(struct device *dev, int reg, uint8_t val) { struct tps65090 *tps = dev_get_drvdata(dev); Loading drivers/regulator/88pm8607.c +52 −127 Original line number Diff line number Diff line Loading @@ -27,13 +27,8 @@ struct pm8607_regulator_info { unsigned int *vol_table; unsigned int *vol_suspend; int vol_reg; int vol_shift; int vol_nbits; int update_reg; int update_bit; int enable_reg; int enable_bit; int slope_double; }; Loading Loading @@ -216,7 +211,7 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index) struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); int ret = -EINVAL; if (info->vol_table && (index < (1 << info->vol_nbits))) { if (info->vol_table && (index < rdev->desc->n_voltages)) { ret = info->vol_table[index]; if (info->slope_double) ret <<= 1; Loading @@ -224,51 +219,16 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index) return ret; } static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) static int pm8607_set_voltage_sel(struct regulator_dev *rdev, unsigned selector) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); int i, ret = -ENOENT; if (info->slope_double) { min_uV = min_uV >> 1; max_uV = max_uV >> 1; } if (info->vol_table) { for (i = 0; i < (1 << info->vol_nbits); i++) { if (!info->vol_table[i]) break; if ((min_uV <= info->vol_table[i]) && (max_uV >= info->vol_table[i])) { ret = i; break; } } } if (ret < 0) pr_err("invalid voltage range (%d %d) uV\n", min_uV, max_uV); return ret; } static int pm8607_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV, unsigned *selector) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); uint8_t val, mask; uint8_t val; int ret; if (min_uV > max_uV) { pr_err("invalid voltage range (%d, %d) uV\n", min_uV, max_uV); return -EINVAL; } ret = choose_voltage(rdev, min_uV, max_uV); if (ret < 0) return -EINVAL; *selector = ret; val = (uint8_t)(ret << info->vol_shift); mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; val = (uint8_t)(selector << (ffs(rdev->desc->vsel_mask) - 1)); ret = pm860x_set_bits(info->i2c, info->vol_reg, mask, val); ret = pm860x_set_bits(info->i2c, rdev->desc->vsel_reg, rdev->desc->vsel_mask, val); if (ret) return ret; switch (info->desc.id) { Loading @@ -282,60 +242,16 @@ static int pm8607_set_voltage(struct regulator_dev *rdev, return ret; } static int pm8607_get_voltage(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); uint8_t val, mask; int ret; ret = pm860x_reg_read(info->i2c, info->vol_reg); if (ret < 0) return ret; mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; val = ((unsigned char)ret & mask) >> info->vol_shift; return pm8607_list_voltage(rdev, val); } static int pm8607_enable(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); return pm860x_set_bits(info->i2c, info->enable_reg, 1 << info->enable_bit, 1 << info->enable_bit); } static int pm8607_disable(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); return pm860x_set_bits(info->i2c, info->enable_reg, 1 << info->enable_bit, 0); } static int pm8607_is_enabled(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); int ret; ret = pm860x_reg_read(info->i2c, info->enable_reg); if (ret < 0) return ret; return !!((unsigned char)ret & (1 << info->enable_bit)); } static struct regulator_ops pm8607_regulator_ops = { .set_voltage = pm8607_set_voltage, .get_voltage = pm8607_get_voltage, .enable = pm8607_enable, .disable = pm8607_disable, .is_enabled = pm8607_is_enabled, .list_voltage = pm8607_list_voltage, .set_voltage_sel = pm8607_set_voltage_sel, .get_voltage_sel = regulator_get_voltage_sel_regmap, .enable = regulator_enable_regmap, .disable = regulator_disable_regmap, .is_enabled = regulator_is_enabled_regmap, }; #define PM8607_DVC(vreg, nbits, ureg, ubit, ereg, ebit) \ #define PM8607_DVC(vreg, ureg, ubit, ereg, ebit) \ { \ .desc = { \ .name = #vreg, \ Loading @@ -343,20 +259,20 @@ static struct regulator_ops pm8607_regulator_ops = { .type = REGULATOR_VOLTAGE, \ .id = PM8607_ID_##vreg, \ .owner = THIS_MODULE, \ .n_voltages = ARRAY_SIZE(vreg##_table), \ .vsel_reg = PM8607_##vreg, \ .vsel_mask = ARRAY_SIZE(vreg##_table) - 1, \ .enable_reg = PM8607_##ereg, \ .enable_mask = 1 << (ebit), \ }, \ .vol_reg = PM8607_##vreg, \ .vol_shift = (0), \ .vol_nbits = (nbits), \ .update_reg = PM8607_##ureg, \ .update_bit = (ubit), \ .enable_reg = PM8607_##ereg, \ .enable_bit = (ebit), \ .slope_double = (0), \ .vol_table = (unsigned int *)&vreg##_table, \ .vol_suspend = (unsigned int *)&vreg##_suspend_table, \ } #define PM8607_LDO(_id, vreg, shift, nbits, ereg, ebit) \ #define PM8607_LDO(_id, vreg, shift, ereg, ebit) \ { \ .desc = { \ .name = "LDO" #_id, \ Loading @@ -364,35 +280,35 @@ static struct regulator_ops pm8607_regulator_ops = { .type = REGULATOR_VOLTAGE, \ .id = PM8607_ID_LDO##_id, \ .owner = THIS_MODULE, \ }, \ .vol_reg = PM8607_##vreg, \ .vol_shift = (shift), \ .vol_nbits = (nbits), \ .n_voltages = ARRAY_SIZE(LDO##_id##_table), \ .vsel_reg = PM8607_##vreg, \ .vsel_mask = (ARRAY_SIZE(LDO##_id##_table) - 1) << (shift), \ .enable_reg = PM8607_##ereg, \ .enable_bit = (ebit), \ .enable_mask = 1 << (ebit), \ }, \ .slope_double = (0), \ .vol_table = (unsigned int *)&LDO##_id##_table, \ .vol_suspend = (unsigned int *)&LDO##_id##_suspend_table, \ } static struct pm8607_regulator_info pm8607_regulator_info[] = { PM8607_DVC(BUCK1, 6, GO, 0, SUPPLIES_EN11, 0), PM8607_DVC(BUCK2, 6, GO, 1, SUPPLIES_EN11, 1), PM8607_DVC(BUCK3, 6, GO, 2, SUPPLIES_EN11, 2), PM8607_LDO( 1, LDO1, 0, 2, SUPPLIES_EN11, 3), PM8607_LDO( 2, LDO2, 0, 3, SUPPLIES_EN11, 4), PM8607_LDO( 3, LDO3, 0, 3, SUPPLIES_EN11, 5), PM8607_LDO( 4, LDO4, 0, 3, SUPPLIES_EN11, 6), PM8607_LDO( 5, LDO5, 0, 2, SUPPLIES_EN11, 7), PM8607_LDO( 6, LDO6, 0, 3, SUPPLIES_EN12, 0), PM8607_LDO( 7, LDO7, 0, 3, SUPPLIES_EN12, 1), PM8607_LDO( 8, LDO8, 0, 3, SUPPLIES_EN12, 2), PM8607_LDO( 9, LDO9, 0, 3, SUPPLIES_EN12, 3), PM8607_LDO(10, LDO10, 0, 4, SUPPLIES_EN12, 4), PM8607_LDO(12, LDO12, 0, 4, SUPPLIES_EN12, 5), PM8607_LDO(13, VIBRATOR_SET, 1, 3, VIBRATOR_SET, 0), PM8607_LDO(14, LDO14, 0, 3, SUPPLIES_EN12, 6), PM8607_DVC(BUCK1, GO, 0, SUPPLIES_EN11, 0), PM8607_DVC(BUCK2, GO, 1, SUPPLIES_EN11, 1), PM8607_DVC(BUCK3, GO, 2, SUPPLIES_EN11, 2), PM8607_LDO(1, LDO1, 0, SUPPLIES_EN11, 3), PM8607_LDO(2, LDO2, 0, SUPPLIES_EN11, 4), PM8607_LDO(3, LDO3, 0, SUPPLIES_EN11, 5), PM8607_LDO(4, LDO4, 0, SUPPLIES_EN11, 6), PM8607_LDO(5, LDO5, 0, SUPPLIES_EN11, 7), PM8607_LDO(6, LDO6, 0, SUPPLIES_EN12, 0), PM8607_LDO(7, LDO7, 0, SUPPLIES_EN12, 1), PM8607_LDO(8, LDO8, 0, SUPPLIES_EN12, 2), PM8607_LDO(9, LDO9, 0, SUPPLIES_EN12, 3), PM8607_LDO(10, LDO10, 0, SUPPLIES_EN12, 4), PM8607_LDO(12, LDO12, 0, SUPPLIES_EN12, 5), PM8607_LDO(13, VIBRATOR_SET, 1, VIBRATOR_SET, 0), PM8607_LDO(14, LDO14, 0, SUPPLIES_EN12, 6), }; static int __devinit pm8607_regulator_probe(struct platform_device *pdev) Loading @@ -400,6 +316,7 @@ static int __devinit pm8607_regulator_probe(struct platform_device *pdev) struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent); struct pm8607_regulator_info *info = NULL; struct regulator_init_data *pdata = pdev->dev.platform_data; struct regulator_config config = { }; struct resource *res; int i; Loading @@ -425,9 +342,17 @@ static int __devinit pm8607_regulator_probe(struct platform_device *pdev) if ((i == PM8607_ID_BUCK3) && info->chip->buck3_double) info->slope_double = 1; config.dev = &pdev->dev; config.init_data = pdata; config.driver_data = info; if (chip->id == CHIP_PM8607) config.regmap = chip->regmap; else config.regmap = chip->regmap_companion; /* replace driver_data with info */ info->regulator = regulator_register(&info->desc, &pdev->dev, pdata, info, NULL); info->regulator = regulator_register(&info->desc, &config); if (IS_ERR(info->regulator)) { dev_err(&pdev->dev, "failed to register regulator %s\n", info->desc.name); Loading drivers/regulator/Kconfig +19 −2 Original line number Diff line number Diff line Loading @@ -223,6 +223,16 @@ config REGULATOR_PCF50633 Say Y here to support the voltage regulators and convertors on PCF50633 config REGULATOR_RC5T583 tristate "RICOH RC5T583 Power regulators" depends on MFD_RC5T583 help Select this option to enable the power regulator of RICOH PMIC RC5T583. This driver supports the control of different power rails of device through regulator interface. The device supports multiple DCDC/LDO outputs which can be controlled by i2c communication. config REGULATOR_S5M8767 tristate "Samsung S5M8767A voltage regulator" depends on MFD_S5M_CORE Loading Loading @@ -268,11 +278,11 @@ config REGULATOR_TPS6105X audio amplifiers. config REGULATOR_TPS62360 tristate "TI TPS62360 Power Regulator" tristate "TI TPS6236x Power Regulator" depends on I2C select REGMAP_I2C help This driver supports TPS62360 voltage regulator chip. This This driver supports TPS6236x voltage regulator chip. This regulator is meant for processor core supply. This chip is high-frequency synchronous step down dc-dc converter optimized for battery-powered portable applications. Loading @@ -294,6 +304,13 @@ config REGULATOR_TPS6507X three step-down converters and two general-purpose LDO voltage regulators. It supports TI's software based Class-2 SmartReflex implementation. config REGULATOR_TPS65090 tristate "TI TPS65090 Power regulator" depends on MFD_TPS65090 help This driver provides support for the voltage regulators on the TI TPS65090 PMIC. config REGULATOR_TPS65217 tristate "TI TPS65217 Power regulators" depends on MFD_TPS65217 Loading drivers/regulator/Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,6 @@ obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE) += fixed.o obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER) += userspace-consumer.o obj-$(CONFIG_REGULATOR_GPIO) += gpio-regulator.o obj-$(CONFIG_REGULATOR_88PM8607) += 88pm8607.o obj-$(CONFIG_REGULATOR_AAT2870) += aat2870-regulator.o obj-$(CONFIG_REGULATOR_AB3100) += ab3100.o Loading @@ -20,6 +19,7 @@ obj-$(CONFIG_REGULATOR_DA903X) += da903x.o obj-$(CONFIG_REGULATOR_DA9052) += da9052-regulator.o obj-$(CONFIG_REGULATOR_DBX500_PRCMU) += dbx500-prcmu.o obj-$(CONFIG_REGULATOR_DB8500_PRCMU) += db8500-prcmu.o obj-$(CONFIG_REGULATOR_GPIO) += gpio-regulator.o obj-$(CONFIG_REGULATOR_ISL6271A) += isl6271a-regulator.o obj-$(CONFIG_REGULATOR_LP3971) += lp3971.o obj-$(CONFIG_REGULATOR_LP3972) += lp3972.o Loading @@ -35,11 +35,13 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o obj-$(CONFIG_REGULATOR_PCAP) += pcap-regulator.o obj-$(CONFIG_REGULATOR_PCF50633) += pcf50633-regulator.o obj-$(CONFIG_REGULATOR_RC5T583) += rc5t583-regulator.o obj-$(CONFIG_REGULATOR_S5M8767) += s5m8767.o obj-$(CONFIG_REGULATOR_TPS6105X) += tps6105x-regulator.o obj-$(CONFIG_REGULATOR_TPS62360) += tps62360-regulator.o obj-$(CONFIG_REGULATOR_TPS65023) += tps65023-regulator.o obj-$(CONFIG_REGULATOR_TPS6507X) += tps6507x-regulator.o obj-$(CONFIG_REGULATOR_TPS65090) += tps65090-regulator.o obj-$(CONFIG_REGULATOR_TPS65217) += tps65217-regulator.o obj-$(CONFIG_REGULATOR_TPS6524X) += tps6524x-regulator.o obj-$(CONFIG_REGULATOR_TPS6586X) += tps6586x-regulator.o Loading Loading
Documentation/power/regulator/regulator.txt +1 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,7 @@ Registration Drivers can register a regulator by calling :- struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc, struct device *dev, struct regulator_init_data *init_data, void *driver_data, struct device_node *of_node); const struct regulator_config *config); This will register the regulators capabilities and operations to the regulator core. Loading
drivers/mfd/tps65090.c +0 −11 Original line number Diff line number Diff line Loading @@ -78,17 +78,6 @@ static struct mfd_cell tps65090s[] = { }, }; struct tps65090 { struct mutex lock; struct device *dev; struct i2c_client *client; struct regmap *rmap; struct irq_chip irq_chip; struct mutex irq_lock; int irq_base; unsigned int id; }; int tps65090_write(struct device *dev, int reg, uint8_t val) { struct tps65090 *tps = dev_get_drvdata(dev); Loading
drivers/regulator/88pm8607.c +52 −127 Original line number Diff line number Diff line Loading @@ -27,13 +27,8 @@ struct pm8607_regulator_info { unsigned int *vol_table; unsigned int *vol_suspend; int vol_reg; int vol_shift; int vol_nbits; int update_reg; int update_bit; int enable_reg; int enable_bit; int slope_double; }; Loading Loading @@ -216,7 +211,7 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index) struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); int ret = -EINVAL; if (info->vol_table && (index < (1 << info->vol_nbits))) { if (info->vol_table && (index < rdev->desc->n_voltages)) { ret = info->vol_table[index]; if (info->slope_double) ret <<= 1; Loading @@ -224,51 +219,16 @@ static int pm8607_list_voltage(struct regulator_dev *rdev, unsigned index) return ret; } static int choose_voltage(struct regulator_dev *rdev, int min_uV, int max_uV) static int pm8607_set_voltage_sel(struct regulator_dev *rdev, unsigned selector) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); int i, ret = -ENOENT; if (info->slope_double) { min_uV = min_uV >> 1; max_uV = max_uV >> 1; } if (info->vol_table) { for (i = 0; i < (1 << info->vol_nbits); i++) { if (!info->vol_table[i]) break; if ((min_uV <= info->vol_table[i]) && (max_uV >= info->vol_table[i])) { ret = i; break; } } } if (ret < 0) pr_err("invalid voltage range (%d %d) uV\n", min_uV, max_uV); return ret; } static int pm8607_set_voltage(struct regulator_dev *rdev, int min_uV, int max_uV, unsigned *selector) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); uint8_t val, mask; uint8_t val; int ret; if (min_uV > max_uV) { pr_err("invalid voltage range (%d, %d) uV\n", min_uV, max_uV); return -EINVAL; } ret = choose_voltage(rdev, min_uV, max_uV); if (ret < 0) return -EINVAL; *selector = ret; val = (uint8_t)(ret << info->vol_shift); mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; val = (uint8_t)(selector << (ffs(rdev->desc->vsel_mask) - 1)); ret = pm860x_set_bits(info->i2c, info->vol_reg, mask, val); ret = pm860x_set_bits(info->i2c, rdev->desc->vsel_reg, rdev->desc->vsel_mask, val); if (ret) return ret; switch (info->desc.id) { Loading @@ -282,60 +242,16 @@ static int pm8607_set_voltage(struct regulator_dev *rdev, return ret; } static int pm8607_get_voltage(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); uint8_t val, mask; int ret; ret = pm860x_reg_read(info->i2c, info->vol_reg); if (ret < 0) return ret; mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; val = ((unsigned char)ret & mask) >> info->vol_shift; return pm8607_list_voltage(rdev, val); } static int pm8607_enable(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); return pm860x_set_bits(info->i2c, info->enable_reg, 1 << info->enable_bit, 1 << info->enable_bit); } static int pm8607_disable(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); return pm860x_set_bits(info->i2c, info->enable_reg, 1 << info->enable_bit, 0); } static int pm8607_is_enabled(struct regulator_dev *rdev) { struct pm8607_regulator_info *info = rdev_get_drvdata(rdev); int ret; ret = pm860x_reg_read(info->i2c, info->enable_reg); if (ret < 0) return ret; return !!((unsigned char)ret & (1 << info->enable_bit)); } static struct regulator_ops pm8607_regulator_ops = { .set_voltage = pm8607_set_voltage, .get_voltage = pm8607_get_voltage, .enable = pm8607_enable, .disable = pm8607_disable, .is_enabled = pm8607_is_enabled, .list_voltage = pm8607_list_voltage, .set_voltage_sel = pm8607_set_voltage_sel, .get_voltage_sel = regulator_get_voltage_sel_regmap, .enable = regulator_enable_regmap, .disable = regulator_disable_regmap, .is_enabled = regulator_is_enabled_regmap, }; #define PM8607_DVC(vreg, nbits, ureg, ubit, ereg, ebit) \ #define PM8607_DVC(vreg, ureg, ubit, ereg, ebit) \ { \ .desc = { \ .name = #vreg, \ Loading @@ -343,20 +259,20 @@ static struct regulator_ops pm8607_regulator_ops = { .type = REGULATOR_VOLTAGE, \ .id = PM8607_ID_##vreg, \ .owner = THIS_MODULE, \ .n_voltages = ARRAY_SIZE(vreg##_table), \ .vsel_reg = PM8607_##vreg, \ .vsel_mask = ARRAY_SIZE(vreg##_table) - 1, \ .enable_reg = PM8607_##ereg, \ .enable_mask = 1 << (ebit), \ }, \ .vol_reg = PM8607_##vreg, \ .vol_shift = (0), \ .vol_nbits = (nbits), \ .update_reg = PM8607_##ureg, \ .update_bit = (ubit), \ .enable_reg = PM8607_##ereg, \ .enable_bit = (ebit), \ .slope_double = (0), \ .vol_table = (unsigned int *)&vreg##_table, \ .vol_suspend = (unsigned int *)&vreg##_suspend_table, \ } #define PM8607_LDO(_id, vreg, shift, nbits, ereg, ebit) \ #define PM8607_LDO(_id, vreg, shift, ereg, ebit) \ { \ .desc = { \ .name = "LDO" #_id, \ Loading @@ -364,35 +280,35 @@ static struct regulator_ops pm8607_regulator_ops = { .type = REGULATOR_VOLTAGE, \ .id = PM8607_ID_LDO##_id, \ .owner = THIS_MODULE, \ }, \ .vol_reg = PM8607_##vreg, \ .vol_shift = (shift), \ .vol_nbits = (nbits), \ .n_voltages = ARRAY_SIZE(LDO##_id##_table), \ .vsel_reg = PM8607_##vreg, \ .vsel_mask = (ARRAY_SIZE(LDO##_id##_table) - 1) << (shift), \ .enable_reg = PM8607_##ereg, \ .enable_bit = (ebit), \ .enable_mask = 1 << (ebit), \ }, \ .slope_double = (0), \ .vol_table = (unsigned int *)&LDO##_id##_table, \ .vol_suspend = (unsigned int *)&LDO##_id##_suspend_table, \ } static struct pm8607_regulator_info pm8607_regulator_info[] = { PM8607_DVC(BUCK1, 6, GO, 0, SUPPLIES_EN11, 0), PM8607_DVC(BUCK2, 6, GO, 1, SUPPLIES_EN11, 1), PM8607_DVC(BUCK3, 6, GO, 2, SUPPLIES_EN11, 2), PM8607_LDO( 1, LDO1, 0, 2, SUPPLIES_EN11, 3), PM8607_LDO( 2, LDO2, 0, 3, SUPPLIES_EN11, 4), PM8607_LDO( 3, LDO3, 0, 3, SUPPLIES_EN11, 5), PM8607_LDO( 4, LDO4, 0, 3, SUPPLIES_EN11, 6), PM8607_LDO( 5, LDO5, 0, 2, SUPPLIES_EN11, 7), PM8607_LDO( 6, LDO6, 0, 3, SUPPLIES_EN12, 0), PM8607_LDO( 7, LDO7, 0, 3, SUPPLIES_EN12, 1), PM8607_LDO( 8, LDO8, 0, 3, SUPPLIES_EN12, 2), PM8607_LDO( 9, LDO9, 0, 3, SUPPLIES_EN12, 3), PM8607_LDO(10, LDO10, 0, 4, SUPPLIES_EN12, 4), PM8607_LDO(12, LDO12, 0, 4, SUPPLIES_EN12, 5), PM8607_LDO(13, VIBRATOR_SET, 1, 3, VIBRATOR_SET, 0), PM8607_LDO(14, LDO14, 0, 3, SUPPLIES_EN12, 6), PM8607_DVC(BUCK1, GO, 0, SUPPLIES_EN11, 0), PM8607_DVC(BUCK2, GO, 1, SUPPLIES_EN11, 1), PM8607_DVC(BUCK3, GO, 2, SUPPLIES_EN11, 2), PM8607_LDO(1, LDO1, 0, SUPPLIES_EN11, 3), PM8607_LDO(2, LDO2, 0, SUPPLIES_EN11, 4), PM8607_LDO(3, LDO3, 0, SUPPLIES_EN11, 5), PM8607_LDO(4, LDO4, 0, SUPPLIES_EN11, 6), PM8607_LDO(5, LDO5, 0, SUPPLIES_EN11, 7), PM8607_LDO(6, LDO6, 0, SUPPLIES_EN12, 0), PM8607_LDO(7, LDO7, 0, SUPPLIES_EN12, 1), PM8607_LDO(8, LDO8, 0, SUPPLIES_EN12, 2), PM8607_LDO(9, LDO9, 0, SUPPLIES_EN12, 3), PM8607_LDO(10, LDO10, 0, SUPPLIES_EN12, 4), PM8607_LDO(12, LDO12, 0, SUPPLIES_EN12, 5), PM8607_LDO(13, VIBRATOR_SET, 1, VIBRATOR_SET, 0), PM8607_LDO(14, LDO14, 0, SUPPLIES_EN12, 6), }; static int __devinit pm8607_regulator_probe(struct platform_device *pdev) Loading @@ -400,6 +316,7 @@ static int __devinit pm8607_regulator_probe(struct platform_device *pdev) struct pm860x_chip *chip = dev_get_drvdata(pdev->dev.parent); struct pm8607_regulator_info *info = NULL; struct regulator_init_data *pdata = pdev->dev.platform_data; struct regulator_config config = { }; struct resource *res; int i; Loading @@ -425,9 +342,17 @@ static int __devinit pm8607_regulator_probe(struct platform_device *pdev) if ((i == PM8607_ID_BUCK3) && info->chip->buck3_double) info->slope_double = 1; config.dev = &pdev->dev; config.init_data = pdata; config.driver_data = info; if (chip->id == CHIP_PM8607) config.regmap = chip->regmap; else config.regmap = chip->regmap_companion; /* replace driver_data with info */ info->regulator = regulator_register(&info->desc, &pdev->dev, pdata, info, NULL); info->regulator = regulator_register(&info->desc, &config); if (IS_ERR(info->regulator)) { dev_err(&pdev->dev, "failed to register regulator %s\n", info->desc.name); Loading
drivers/regulator/Kconfig +19 −2 Original line number Diff line number Diff line Loading @@ -223,6 +223,16 @@ config REGULATOR_PCF50633 Say Y here to support the voltage regulators and convertors on PCF50633 config REGULATOR_RC5T583 tristate "RICOH RC5T583 Power regulators" depends on MFD_RC5T583 help Select this option to enable the power regulator of RICOH PMIC RC5T583. This driver supports the control of different power rails of device through regulator interface. The device supports multiple DCDC/LDO outputs which can be controlled by i2c communication. config REGULATOR_S5M8767 tristate "Samsung S5M8767A voltage regulator" depends on MFD_S5M_CORE Loading Loading @@ -268,11 +278,11 @@ config REGULATOR_TPS6105X audio amplifiers. config REGULATOR_TPS62360 tristate "TI TPS62360 Power Regulator" tristate "TI TPS6236x Power Regulator" depends on I2C select REGMAP_I2C help This driver supports TPS62360 voltage regulator chip. This This driver supports TPS6236x voltage regulator chip. This regulator is meant for processor core supply. This chip is high-frequency synchronous step down dc-dc converter optimized for battery-powered portable applications. Loading @@ -294,6 +304,13 @@ config REGULATOR_TPS6507X three step-down converters and two general-purpose LDO voltage regulators. It supports TI's software based Class-2 SmartReflex implementation. config REGULATOR_TPS65090 tristate "TI TPS65090 Power regulator" depends on MFD_TPS65090 help This driver provides support for the voltage regulators on the TI TPS65090 PMIC. config REGULATOR_TPS65217 tristate "TI TPS65217 Power regulators" depends on MFD_TPS65217 Loading
drivers/regulator/Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -9,7 +9,6 @@ obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE) += fixed.o obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER) += virtual.o obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER) += userspace-consumer.o obj-$(CONFIG_REGULATOR_GPIO) += gpio-regulator.o obj-$(CONFIG_REGULATOR_88PM8607) += 88pm8607.o obj-$(CONFIG_REGULATOR_AAT2870) += aat2870-regulator.o obj-$(CONFIG_REGULATOR_AB3100) += ab3100.o Loading @@ -20,6 +19,7 @@ obj-$(CONFIG_REGULATOR_DA903X) += da903x.o obj-$(CONFIG_REGULATOR_DA9052) += da9052-regulator.o obj-$(CONFIG_REGULATOR_DBX500_PRCMU) += dbx500-prcmu.o obj-$(CONFIG_REGULATOR_DB8500_PRCMU) += db8500-prcmu.o obj-$(CONFIG_REGULATOR_GPIO) += gpio-regulator.o obj-$(CONFIG_REGULATOR_ISL6271A) += isl6271a-regulator.o obj-$(CONFIG_REGULATOR_LP3971) += lp3971.o obj-$(CONFIG_REGULATOR_LP3972) += lp3972.o Loading @@ -35,11 +35,13 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o obj-$(CONFIG_REGULATOR_PCAP) += pcap-regulator.o obj-$(CONFIG_REGULATOR_PCF50633) += pcf50633-regulator.o obj-$(CONFIG_REGULATOR_RC5T583) += rc5t583-regulator.o obj-$(CONFIG_REGULATOR_S5M8767) += s5m8767.o obj-$(CONFIG_REGULATOR_TPS6105X) += tps6105x-regulator.o obj-$(CONFIG_REGULATOR_TPS62360) += tps62360-regulator.o obj-$(CONFIG_REGULATOR_TPS65023) += tps65023-regulator.o obj-$(CONFIG_REGULATOR_TPS6507X) += tps6507x-regulator.o obj-$(CONFIG_REGULATOR_TPS65090) += tps65090-regulator.o obj-$(CONFIG_REGULATOR_TPS65217) += tps65217-regulator.o obj-$(CONFIG_REGULATOR_TPS6524X) += tps6524x-regulator.o obj-$(CONFIG_REGULATOR_TPS6586X) += tps6586x-regulator.o Loading