* [PATCH v5 0/3] regulator: act8865: add PMIC driver @ 2013-12-24 2:33 Wenyou Yang 2013-12-24 2:34 ` [PATCH v5 1/3] regulator: act8865: add PMIC act8865 driver Wenyou Yang ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Wenyou Yang @ 2013-12-24 2:33 UTC (permalink / raw) To: broonie Cc: lgirdwood, grant.likely, rob.herring, plagnioj, nicolas.ferre, linux-kernel, devicetree, linux-doc, linux-arm-kernel, wenyou.yang Hi Mark, Thanks a lot. Since there is no seperate voltage registers for the suspend operations in the act8865, so remove this operation. The patch set is to add act8865 PMIC driver. The active-semi act8865 is designed as a PMIC for Atmel sama5d3x and at91sam9 series. Its datasheet is available at: http://www.active-semi.com/sheets/ACT8865_Datasheet.pdf. The patches is based on the branch: for-next of git respository, git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git and [PATCH] regulator: read low power states configuration from device tree from Vincent Palatin https://patchwork.kernel.org/patch/2833667/ Thanks. Best Regards, Wenyou Yang v5 changelog: 1./ Remove .set_suspend_voltage operation. v4 changelog: 1./ Using linear ranges with a plural, instead of table. v3 changelog: 1./ Add map_voltage() operation which missed. 2./ Remove regulator_unregister statement which no need. 3./ Remvoe memset statement. 4./ Change the device tree regulator-name with the supply name in the schematic. 5./ List all theregulator name in the binding doc. v2 changelog: 1./ Using regmap for register I/O instead of i2c function directly. 2./ Using the helpers provided by the core. 3./ Remove noisy logging. 4./ Using the latest regulator register API. 5./ Using module_i2c_driver helper macro replace module_init and module_exit. 6./ Remove the vsel-state-low dt property which is not used now. Wenyou Yang (3): regulator: act8865: add PMIC act8865 driver regulator: act8865: add device tree binding doc ARM: dts: sama5d3xcm: add the regulator device node .../bindings/regulator/act8865-regulator.txt | 60 ++++ .../devicetree/bindings/vendor-prefixes.txt | 1 + arch/arm/boot/dts/sama5d3xcm.dtsi | 46 +++ drivers/regulator/Kconfig | 8 + drivers/regulator/Makefile | 1 + drivers/regulator/act8865-regulator.c | 368 ++++++++++++++++++++ include/linux/regulator/act8865.h | 53 +++ 7 files changed, 537 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/act8865-regulator.txt create mode 100644 drivers/regulator/act8865-regulator.c create mode 100644 include/linux/regulator/act8865.h -- 1.7.9.5 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 1/3] regulator: act8865: add PMIC act8865 driver 2013-12-24 2:33 [PATCH v5 0/3] regulator: act8865: add PMIC driver Wenyou Yang @ 2013-12-24 2:34 ` Wenyou Yang [not found] ` <1387852468-18073-1-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org> 2013-12-24 2:35 ` [PATCH v5 2/3] regulator: act8865: add device tree binding doc Wenyou Yang 2013-12-24 2:36 ` [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node Wenyou Yang 2 siblings, 1 reply; 8+ messages in thread From: Wenyou Yang @ 2013-12-24 2:34 UTC (permalink / raw) To: broonie Cc: lgirdwood, grant.likely, rob.herring, plagnioj, nicolas.ferre, linux-kernel, devicetree, linux-doc, linux-arm-kernel, wenyou.yang Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> --- drivers/regulator/Kconfig | 8 + drivers/regulator/Makefile | 1 + drivers/regulator/act8865-regulator.c | 368 +++++++++++++++++++++++++++++++++ include/linux/regulator/act8865.h | 53 +++++ 4 files changed, 430 insertions(+) create mode 100644 drivers/regulator/act8865-regulator.c create mode 100644 include/linux/regulator/act8865.h diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 11ee053..dab2e3c 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -70,6 +70,14 @@ config REGULATOR_88PM8607 help This driver supports 88PM8607 voltage regulator chips. +config REGULATOR_ACT8865 + tristate "Active-semi act8865 voltage regulator" + depends on I2C + select REGMAP_I2C + help + This driver controls a active-semi act8865 voltage output + regulator via I2C bus. + config REGULATOR_AD5398 tristate "Analog Devices AD5398/AD5821 regulators" depends on I2C diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index 654bd43..979f9dd 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -14,6 +14,7 @@ obj-$(CONFIG_REGULATOR_88PM8607) += 88pm8607.o obj-$(CONFIG_REGULATOR_AAT2870) += aat2870-regulator.o obj-$(CONFIG_REGULATOR_AB3100) += ab3100.o obj-$(CONFIG_REGULATOR_AB8500) += ab8500-ext.o ab8500.o +obj-$(CONFIG_REGULATOR_ACT8865) += act8865-regulator.o obj-$(CONFIG_REGULATOR_AD5398) += ad5398.o obj-$(CONFIG_REGULATOR_ANATOP) += anatop-regulator.o obj-$(CONFIG_REGULATOR_ARIZONA) += arizona-micsupp.o arizona-ldo1.o diff --git a/drivers/regulator/act8865-regulator.c b/drivers/regulator/act8865-regulator.c new file mode 100644 index 0000000..db048f2 --- /dev/null +++ b/drivers/regulator/act8865-regulator.c @@ -0,0 +1,368 @@ +/* + * act8865-regulator.c - Voltage regulation for the active-semi ACT8865 + * http://www.active-semi.com/sheets/ACT8865_Datasheet.pdf + * + * Copyright (C) 2013 Atmel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <linux/module.h> +#include <linux/init.h> +#include <linux/i2c.h> +#include <linux/err.h> +#include <linux/platform_device.h> +#include <linux/regulator/driver.h> +#include <linux/regulator/act8865.h> +#include <linux/of.h> +#include <linux/of_device.h> +#include <linux/regulator/of_regulator.h> +#include <linux/regmap.h> + +/* + * ACT8865 Global Register Map. + */ +#define ACT8865_SYS_MODE 0x00 +#define ACT8865_SYS_CTRL 0x01 +#define ACT8865_DCDC1_VSET1 0x20 +#define ACT8865_DCDC1_VSET2 0x21 +#define ACT8865_DCDC1_CTRL 0x22 +#define ACT8865_DCDC2_VSET1 0x30 +#define ACT8865_DCDC2_VSET2 0x31 +#define ACT8865_DCDC2_CTRL 0x32 +#define ACT8865_DCDC3_VSET1 0x40 +#define ACT8865_DCDC3_VSET2 0x41 +#define ACT8865_DCDC3_CTRL 0x42 +#define ACT8865_LDO1_VSET 0x50 +#define ACT8865_LDO1_CTRL 0x51 +#define ACT8865_LDO2_VSET 0x54 +#define ACT8865_LDO2_CTRL 0x55 +#define ACT8865_LDO3_VSET 0x60 +#define ACT8865_LDO3_CTRL 0x61 +#define ACT8865_LDO4_VSET 0x64 +#define ACT8865_LDO4_CTRL 0x65 + +/* + * Field Definitions. + */ +#define ACT8865_ENA 0x80 /* ON - [7] */ +#define ACT8865_VSEL_MASK 0x3F /* VSET - [5:0] */ + +/* + * ACT8865 voltage number + */ +#define ACT8865_VOLTAGE_NUM 64 + +struct act8865 { + struct regulator_dev *rdev[ACT8865_REG_NUM]; + struct regmap *regmap; +}; + +static const struct regmap_config act8865_regmap_config = { + .reg_bits = 8, + .val_bits = 8, +}; + +static const struct regulator_linear_range act8865_volatge_ranges[] = { + REGULATOR_LINEAR_RANGE(600000, 0, 23, 25000), + REGULATOR_LINEAR_RANGE(1200000, 24, 47, 50000), + REGULATOR_LINEAR_RANGE(2400000, 48, 63, 100000), +}; + +static struct regulator_ops act8865_ops = { + .list_voltage = regulator_list_voltage_linear_range, + .map_voltage = regulator_map_voltage_linear_range, + .get_voltage_sel = regulator_get_voltage_sel_regmap, + .set_voltage_sel = regulator_set_voltage_sel_regmap, + .enable = regulator_enable_regmap, + .disable = regulator_disable_regmap, + .is_enabled = regulator_is_enabled_regmap, + .set_suspend_enable = regulator_enable_regmap, + .set_suspend_disable = regulator_disable_regmap, +}; + +static const struct regulator_desc act8865_reg[] = { + { + .name = "DCDC_REG1", + .id = ACT8865_ID_DCDC1, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_DCDC1_VSET1, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_DCDC1_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, + { + .name = "DCDC_REG2", + .id = ACT8865_ID_DCDC2, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_DCDC2_VSET1, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_DCDC2_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, + { + .name = "DCDC_REG3", + .id = ACT8865_ID_DCDC3, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_DCDC3_VSET1, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_DCDC3_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, + { + .name = "LDO_REG1", + .id = ACT8865_ID_LDO1, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_LDO1_VSET, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_LDO1_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, + { + .name = "LDO_REG2", + .id = ACT8865_ID_LDO2, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_LDO2_VSET, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_LDO2_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, + { + .name = "LDO_REG3", + .id = ACT8865_ID_LDO3, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_LDO3_VSET, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_LDO3_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, + { + .name = "LDO_REG4", + .id = ACT8865_ID_LDO4, + .ops = &act8865_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = ACT8865_VOLTAGE_NUM, + .linear_ranges = act8865_volatge_ranges, + .n_linear_ranges = ARRAY_SIZE(act8865_volatge_ranges), + .vsel_reg = ACT8865_LDO4_VSET, + .vsel_mask = ACT8865_VSEL_MASK, + .enable_reg = ACT8865_LDO4_CTRL, + .enable_mask = ACT8865_ENA, + .owner = THIS_MODULE, + }, +}; + +#ifdef CONFIG_OF +static const struct of_device_id act8865_dt_ids[] = { + { .compatible = "active-semi,act8865" }, + { } +}; +MODULE_DEVICE_TABLE(of, act8865_dt_ids); + +static struct of_regulator_match act8865_matches[] = { + [ACT8865_ID_DCDC1] = { .name = "DCDC_REG1"}, + [ACT8865_ID_DCDC2] = { .name = "DCDC_REG2"}, + [ACT8865_ID_DCDC3] = { .name = "DCDC_REG3"}, + [ACT8865_ID_LDO1] = { .name = "LDO_REG1"}, + [ACT8865_ID_LDO2] = { .name = "LDO_REG2"}, + [ACT8865_ID_LDO3] = { .name = "LDO_REG3"}, + [ACT8865_ID_LDO4] = { .name = "LDO_REG4"}, +}; + +static int act8865_pdata_from_dt(struct device *dev, + struct device_node **of_node, + struct act8865_platform_data *pdata) +{ + int matched, i; + struct device_node *np; + struct act8865_regulator_data *regulator; + + np = of_find_node_by_name(dev->of_node, "regulators"); + if (!np) { + dev_err(dev, "missing 'regulators' subnode in DT\n"); + return -EINVAL; + } + + matched = of_regulator_match(dev, np, + act8865_matches, ARRAY_SIZE(act8865_matches)); + if (matched <= 0) + return matched; + + pdata->regulators = devm_kzalloc(dev, + sizeof(struct act8865_regulator_data) * matched, + GFP_KERNEL); + if (!pdata->regulators) { + dev_err(dev, "%s: failed to allocate act8865 registor\n", + __func__); + return -ENOMEM; + } + + pdata->num_regulators = matched; + regulator = pdata->regulators; + + for (i = 0; i < matched; i++) { + if (!act8865_matches[i].init_data) + continue; + + regulator->id = i; + regulator->name = act8865_matches[i].name; + regulator->platform_data = act8865_matches[i].init_data; + of_node[i] = act8865_matches[i].of_node; + regulator++; + } + + return 0; +} +#else +static inline int act8865_pdata_from_dt(struct device *dev, + struct device_node **of_node, + struct act8865_platform_data *pdata) +{ + return 0; +} +#endif + +static int act8865_pmic_probe(struct i2c_client *client, + const struct i2c_device_id *i2c_id) +{ + struct regulator_dev **rdev; + struct device *dev = &client->dev; + struct act8865_platform_data *pdata = dev_get_platdata(dev); + struct regulator_config config = { }; + struct act8865 *act8865; + struct device_node *of_node[ACT8865_REG_NUM]; + int i, id; + int ret = -EINVAL; + int error; + + if (dev->of_node && !pdata) { + const struct of_device_id *id; + struct act8865_platform_data pdata_of; + + id = of_match_device(of_match_ptr(act8865_dt_ids), dev); + if (!id) + return -ENODEV; + + ret = act8865_pdata_from_dt(dev, of_node, &pdata_of); + if (ret < 0) + return ret; + + pdata = &pdata_of; + } + + if (pdata->num_regulators > ACT8865_REG_NUM) { + dev_err(dev, "Too many regulators found!\n"); + return -EINVAL; + } + + act8865 = devm_kzalloc(dev, sizeof(struct act8865) + + sizeof(struct regulator_dev *) * ACT8865_REG_NUM, + GFP_KERNEL); + if (!act8865) + return -ENOMEM; + + rdev = act8865->rdev; + + act8865->regmap = devm_regmap_init_i2c(client, &act8865_regmap_config); + if (IS_ERR(act8865->regmap)) { + error = PTR_ERR(act8865->regmap); + dev_err(&client->dev, "Failed to allocate register map: %d\n", + error); + return error; + } + + /* Finally register devices */ + for (i = 0; i < pdata->num_regulators; i++) { + + id = pdata->regulators[i].id; + + config.dev = dev; + config.init_data = pdata->regulators[i].platform_data; + config.of_node = of_node[i]; + config.driver_data = act8865; + config.regmap = act8865->regmap; + + rdev[i] = devm_regulator_register(&client->dev, + &act8865_reg[i], &config); + if (IS_ERR(rdev[i])) { + dev_err(dev, "failed to register %s\n", + act8865_reg[id].name); + return PTR_ERR(rdev[i]); + } + } + + i2c_set_clientdata(client, act8865); + + return 0; +} + +static int act8865_pmic_remove(struct i2c_client *client) +{ + struct act8865 *act8865 = i2c_get_clientdata(client); + int i; + + for (i = 0; i < ACT8865_REG_NUM; i++) + regulator_unregister(act8865->rdev[i]); + + return 0; +} + +static const struct i2c_device_id act8865_ids[] = { + { "act8865", 0 }, + { }, +}; +MODULE_DEVICE_TABLE(i2c, act8865_ids); + +static struct i2c_driver act8865_pmic_driver = { + .driver = { + .name = "act8865", + .owner = THIS_MODULE, + }, + .probe = act8865_pmic_probe, + .remove = act8865_pmic_remove, + .id_table = act8865_ids, +}; + +module_i2c_driver(act8865_pmic_driver); + +MODULE_DESCRIPTION("active-semi act8865 voltage regulator driver"); +MODULE_AUTHOR("Wenyou Yang <wenyou.yang@atmel.com>"); +MODULE_LICENSE("GPL v2"); diff --git a/include/linux/regulator/act8865.h b/include/linux/regulator/act8865.h new file mode 100644 index 0000000..49206c1 --- /dev/null +++ b/include/linux/regulator/act8865.h @@ -0,0 +1,53 @@ +/* + * act8865.h -- Voltage regulation for the active-semi act8865 + * + * Copyright (C) 2013 Atmel Corporation. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef __LINUX_REGULATOR_ACT8865_H +#define __LINUX_REGULATOR_ACT8865_H + +#include <linux/regulator/machine.h> + +enum { + ACT8865_ID_DCDC1, + ACT8865_ID_DCDC2, + ACT8865_ID_DCDC3, + ACT8865_ID_LDO1, + ACT8865_ID_LDO2, + ACT8865_ID_LDO3, + ACT8865_ID_LDO4, + ACT8865_REG_NUM, +}; + +/** + * act8865_regulator_data - regulator data + * @id: regulator id + * @name: regulator name + * @platform_data: regulator init data + */ +struct act8865_regulator_data { + int id; + const char *name; + struct regulator_init_data *platform_data; +}; + +/** + * act8865_platform_data - platform data for act8865 + * @num_regulators: number of regulators used + * @regulators: pointer to regulators used + */ +struct act8865_platform_data { + int num_regulators; + struct act8865_regulator_data *regulators; +}; +#endif -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
[parent not found: <1387852468-18073-1-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>]
* Re: [PATCH v5 1/3] regulator: act8865: add PMIC act8865 driver [not found] ` <1387852468-18073-1-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org> @ 2013-12-24 13:51 ` Mark Brown 0 siblings, 0 replies; 8+ messages in thread From: Mark Brown @ 2013-12-24 13:51 UTC (permalink / raw) To: Wenyou Yang Cc: lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, grant.likely-QSEj5FYQhm4dnm+yROfE0A, rob.herring-bsGFqQB8/DxBDgjK7y7TUQ, plagnioj-sclMFOaUSTBWk0Htik3J/w, nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-doc-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r On Tue, Dec 24, 2013 at 10:34:28AM +0800, Wenyou Yang wrote: > Signed-off-by: Wenyou Yang <wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org> I've applied this, however there is one small issue which I seem to have forgotten to point out previously: > + /* Finally register devices */ > + for (i = 0; i < pdata->num_regulators; i++) { The driver should register all regulators regardless of how many are used in the system in order to aid diagnostics. Please send an incremental patch to fix this. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 2/3] regulator: act8865: add device tree binding doc 2013-12-24 2:33 [PATCH v5 0/3] regulator: act8865: add PMIC driver Wenyou Yang 2013-12-24 2:34 ` [PATCH v5 1/3] regulator: act8865: add PMIC act8865 driver Wenyou Yang @ 2013-12-24 2:35 ` Wenyou Yang 2013-12-24 13:49 ` Mark Brown 2013-12-24 2:36 ` [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node Wenyou Yang 2 siblings, 1 reply; 8+ messages in thread From: Wenyou Yang @ 2013-12-24 2:35 UTC (permalink / raw) To: broonie Cc: lgirdwood, grant.likely, rob.herring, plagnioj, nicolas.ferre, linux-kernel, devicetree, linux-doc, linux-arm-kernel, wenyou.yang Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> --- .../bindings/regulator/act8865-regulator.txt | 60 ++++++++++++++++++++ .../devicetree/bindings/vendor-prefixes.txt | 1 + 2 files changed, 61 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/act8865-regulator.txt diff --git a/Documentation/devicetree/bindings/regulator/act8865-regulator.txt b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt new file mode 100644 index 0000000..bef1fbb --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt @@ -0,0 +1,60 @@ +ACT8865 regulator +------------------- + +Required properties: +- compatible: "active-semi,act8865" +- reg: I2C slave address + +Any standard regulator properties can be used to configure the single regulator. + +The valid names for regulators are: + DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4. + +Example: +-------- + + i2c1: i2c@f0018000 { + pmic: act8865@5b { + compatible = "active-semi,act8865"; + reg = <0x5b>; + status = "disabled"; + + regulators { + vcc_1v8_reg: DCDC_REG1 { + regulator-name = "VCC_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + vcc_1v2_reg: DCDC_REG2 { + regulator-name = "VCC_1V2"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-suspend-mem-microvolt = <1150000>; + regulator-suspend-standby-microvolt = <1150000>; + regulator-always-on; + }; + + vcc_3v3_reg: DCDC_REG3 { + regulator-name = "VCC_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vddana_reg: LDO_REG1 { + regulator-name = "VDDANA"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vddfuse_reg: LDO_REG2 { + regulator-name = "FUSE_2V5"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; + }; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index edbb8d8..519421f 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt @@ -3,6 +3,7 @@ Device tree binding vendor prefix registry. Keep list in alphabetical order. This isn't an exhaustive list, but you should add new prefixes to it before using them to avoid name-space collisions. +active-semi Active-Semi International Inc ad Avionic Design GmbH adi Analog Devices, Inc. aeroflexgaisler Aeroflex Gaisler AB -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/3] regulator: act8865: add device tree binding doc 2013-12-24 2:35 ` [PATCH v5 2/3] regulator: act8865: add device tree binding doc Wenyou Yang @ 2013-12-24 13:49 ` Mark Brown 0 siblings, 0 replies; 8+ messages in thread From: Mark Brown @ 2013-12-24 13:49 UTC (permalink / raw) To: Wenyou Yang Cc: lgirdwood, grant.likely, rob.herring, plagnioj, nicolas.ferre, linux-kernel, devicetree, linux-doc, linux-arm-kernel On Tue, Dec 24, 2013 at 10:35:14AM +0800, Wenyou Yang wrote: > Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> Applied, thanks. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node 2013-12-24 2:33 [PATCH v5 0/3] regulator: act8865: add PMIC driver Wenyou Yang 2013-12-24 2:34 ` [PATCH v5 1/3] regulator: act8865: add PMIC act8865 driver Wenyou Yang 2013-12-24 2:35 ` [PATCH v5 2/3] regulator: act8865: add device tree binding doc Wenyou Yang @ 2013-12-24 2:36 ` Wenyou Yang 2014-04-18 21:25 ` Nicolas Ferre 2 siblings, 1 reply; 8+ messages in thread From: Wenyou Yang @ 2013-12-24 2:36 UTC (permalink / raw) To: broonie Cc: lgirdwood, grant.likely, rob.herring, plagnioj, nicolas.ferre, linux-kernel, devicetree, linux-doc, linux-arm-kernel, wenyou.yang Reviwed-by: Mark Brown <broonie@linaro.org> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> --- arch/arm/boot/dts/sama5d3xcm.dtsi | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/arch/arm/boot/dts/sama5d3xcm.dtsi b/arch/arm/boot/dts/sama5d3xcm.dtsi index 726a0f3..3d4e5c2 100644 --- a/arch/arm/boot/dts/sama5d3xcm.dtsi +++ b/arch/arm/boot/dts/sama5d3xcm.dtsi @@ -38,6 +38,52 @@ macb0: ethernet@f0028000 { phy-mode = "rgmii"; }; + + i2c1: i2c@f0018000 { + pmic: act8865@5b { + compatible = "active-semi,act8865"; + reg = <0x5b>; + status = "disabled"; + + regulators { + vcc_1v8_reg: DCDC_REG1 { + regulator-name = "VCC_1V8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + vcc_1v2_reg: DCDC_REG2 { + regulator-name = "VCC_1V2"; + regulator-min-microvolt = <1100000>; + regulator-max-microvolt = <1300000>; + regulator-suspend-mem-microvolt = <1150000>; + regulator-suspend-standby-microvolt = <1150000>; + regulator-always-on; + }; + + vcc_3v3_reg: DCDC_REG3 { + regulator-name = "VCC_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vddana_reg: LDO_REG1 { + regulator-name = "VDDANA"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + vddfuse_reg: LDO_REG2 { + regulator-name = "FUSE_2V5"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <2500000>; + }; + }; + }; + }; }; nand0: nand@60000000 { -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node 2013-12-24 2:36 ` [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node Wenyou Yang @ 2014-04-18 21:25 ` Nicolas Ferre 2014-04-21 3:08 ` Yang, Wenyou 0 siblings, 1 reply; 8+ messages in thread From: Nicolas Ferre @ 2014-04-18 21:25 UTC (permalink / raw) To: Wenyou Yang Cc: broonie, lgirdwood, grant.likely, rob.herring, plagnioj, linux-kernel, devicetree, linux-doc, linux-arm-kernel On 24/12/2013 03:36, Wenyou Yang : > Reviwed-by: Mark Brown <broonie@linaro.org> > Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> Wenyou, While collecting patches for our next at91-3.16-dt branch I noticed this patch that should go on top of the SAMA5D3 CMP board. I would prefer to create another .dtsi file for CMP board and not mix with the current cpu module usual board that does not contain this regulator. But well we can do something even more simpler and move this PMIC example to the newer SAMA5D3 Xplained board. So, will it be possible for you to re-send a new patch targeted to SAMA5D3 Xplained? Thanks, bye. > --- > arch/arm/boot/dts/sama5d3xcm.dtsi | 46 +++++++++++++++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/arch/arm/boot/dts/sama5d3xcm.dtsi b/arch/arm/boot/dts/sama5d3xcm.dtsi > index 726a0f3..3d4e5c2 100644 > --- a/arch/arm/boot/dts/sama5d3xcm.dtsi > +++ b/arch/arm/boot/dts/sama5d3xcm.dtsi > @@ -38,6 +38,52 @@ > macb0: ethernet@f0028000 { > phy-mode = "rgmii"; > }; > + > + i2c1: i2c@f0018000 { > + pmic: act8865@5b { > + compatible = "active-semi,act8865"; > + reg = <0x5b>; > + status = "disabled"; > + > + regulators { > + vcc_1v8_reg: DCDC_REG1 { > + regulator-name = "VCC_1V8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + vcc_1v2_reg: DCDC_REG2 { > + regulator-name = "VCC_1V2"; > + regulator-min-microvolt = <1100000>; > + regulator-max-microvolt = <1300000>; > + regulator-suspend-mem-microvolt = <1150000>; > + regulator-suspend-standby-microvolt = <1150000>; > + regulator-always-on; > + }; > + > + vcc_3v3_reg: DCDC_REG3 { > + regulator-name = "VCC_3V3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + vddana_reg: LDO_REG1 { > + regulator-name = "VDDANA"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + vddfuse_reg: LDO_REG2 { > + regulator-name = "FUSE_2V5"; > + regulator-min-microvolt = <2500000>; > + regulator-max-microvolt = <2500000>; > + }; > + }; > + }; > + }; > }; > > nand0: nand@60000000 { > -- Nicolas Ferre ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node 2014-04-18 21:25 ` Nicolas Ferre @ 2014-04-21 3:08 ` Yang, Wenyou 0 siblings, 0 replies; 8+ messages in thread From: Yang, Wenyou @ 2014-04-21 3:08 UTC (permalink / raw) To: Ferre, Nicolas Cc: broonie@kernel.org, lgirdwood@gmail.com, grant.likely@linaro.org, rob.herring@calxeda.com, plagnioj@jcrosoft.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org Hi Nicolas, > -----Original Message----- > From: Ferre, Nicolas > Sent: Saturday, April 19, 2014 5:26 AM > To: Yang, Wenyou > Cc: broonie@kernel.org; lgirdwood@gmail.com; grant.likely@linaro.org; > rob.herring@calxeda.com; plagnioj@jcrosoft.com; linux- > kernel@vger.kernel.org; devicetree@vger.kernel.org; linux- > doc@vger.kernel.org; linux-arm-kernel@lists.infradead.org > Subject: Re: [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator > device node > > On 24/12/2013 03:36, Wenyou Yang : > > Reviwed-by: Mark Brown <broonie@linaro.org> > > Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com> > > Wenyou, > > While collecting patches for our next at91-3.16-dt branch I noticed > this patch that should go on top of the SAMA5D3 CMP board. > > I would prefer to create another .dtsi file for CMP board and not mix > with the current cpu module usual board that does not contain this > regulator. But well we can do something even more simpler and move this > PMIC example to the newer SAMA5D3 Xplained board. > > So, will it be possible for you to re-send a new patch targeted to > SAMA5D3 Xplained? OK, I will re-send a new patch. > > Thanks, bye. > > > > --- > > arch/arm/boot/dts/sama5d3xcm.dtsi | 46 > +++++++++++++++++++++++++++++++++++++ > > 1 file changed, 46 insertions(+) > > > > diff --git a/arch/arm/boot/dts/sama5d3xcm.dtsi > > b/arch/arm/boot/dts/sama5d3xcm.dtsi > > index 726a0f3..3d4e5c2 100644 > > --- a/arch/arm/boot/dts/sama5d3xcm.dtsi > > +++ b/arch/arm/boot/dts/sama5d3xcm.dtsi > > @@ -38,6 +38,52 @@ > > macb0: ethernet@f0028000 { > > phy-mode = "rgmii"; > > }; > > + > > + i2c1: i2c@f0018000 { > > + pmic: act8865@5b { > > + compatible = "active-semi,act8865"; > > + reg = <0x5b>; > > + status = "disabled"; > > + > > + regulators { > > + vcc_1v8_reg: DCDC_REG1 { > > + regulator-name = "VCC_1V8"; > > + regulator-min-microvolt = > <1800000>; > > + regulator-max-microvolt = > <1800000>; > > + regulator-always-on; > > + }; > > + > > + vcc_1v2_reg: DCDC_REG2 { > > + regulator-name = "VCC_1V2"; > > + regulator-min-microvolt = > <1100000>; > > + regulator-max-microvolt = > <1300000>; > > + regulator-suspend-mem- > microvolt = <1150000>; > > + regulator-suspend-standby- > microvolt = <1150000>; > > + regulator-always-on; > > + }; > > + > > + vcc_3v3_reg: DCDC_REG3 { > > + regulator-name = "VCC_3V3"; > > + regulator-min-microvolt = > <3300000>; > > + regulator-max-microvolt = > <3300000>; > > + regulator-always-on; > > + }; > > + > > + vddana_reg: LDO_REG1 { > > + regulator-name = "VDDANA"; > > + regulator-min-microvolt = > <3300000>; > > + regulator-max-microvolt = > <3300000>; > > + regulator-always-on; > > + }; > > + > > + vddfuse_reg: LDO_REG2 { > > + regulator-name = "FUSE_2V5"; > > + regulator-min-microvolt = > <2500000>; > > + regulator-max-microvolt = > <2500000>; > > + }; > > + }; > > + }; > > + }; > > }; > > > > nand0: nand@60000000 { > > > > > -- > Nicolas Ferre Best Regards, Wenyou Yang ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-04-21 3:08 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-12-24 2:33 [PATCH v5 0/3] regulator: act8865: add PMIC driver Wenyou Yang 2013-12-24 2:34 ` [PATCH v5 1/3] regulator: act8865: add PMIC act8865 driver Wenyou Yang [not found] ` <1387852468-18073-1-git-send-email-wenyou.yang-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org> 2013-12-24 13:51 ` Mark Brown 2013-12-24 2:35 ` [PATCH v5 2/3] regulator: act8865: add device tree binding doc Wenyou Yang 2013-12-24 13:49 ` Mark Brown 2013-12-24 2:36 ` [PATCH v5 3/3] ARM: dts: sama5d3xcm: add the regulator device node Wenyou Yang 2014-04-18 21:25 ` Nicolas Ferre 2014-04-21 3:08 ` Yang, Wenyou
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).