* [PATCH 0/3] Add device tree support for AM33XX regulators @ 2012-06-25 12:04 AnilKumar Ch 2012-06-25 12:04 ` [PATCH 1/3] regulator: tps65217: Add device tree support AnilKumar Ch ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: AnilKumar Ch @ 2012-06-25 12:04 UTC (permalink / raw) To: sameo, lrg, broonie, linux-kernel Cc: linux-omap, devicetree-discuss, grant.likely, AnilKumar Ch Add device tree support for regulators present on AM33XX family of devices like AM335X-EVM and AM335X-Bone. TPS65217 regulator is present on AM335X-Bone and TPS65910 on AM335X-EVM. First patch adds the device tree support to tps65217 regulator so that it will take the parameters from am335x-bone.dts file and convert to regulator parameters. Second patch adds tps65217 device tree data to am335x-bone.dts file with i2c salve address. Created seperate file tps65217, which contains the generic tps65217 device tree data. Third patch adds tps65910 device tree data to am335x-evm.dts file with i2c salve address. Created seperate file tps65910, which contains the generic tps65910 device tree data. These patches were tested along with these patches * DT addition to AM33XX family http://marc.info/?l=linux-omap&m=134035826700991&w=2 AnilKumar Ch (3): regulator: tps65217: Add device tree support ARM: OMAP2+: AM33XX: Add tps65217 device tree data ARM: OMAP2+: AM33XX: Add tps65910 device tree data .../devicetree/bindings/regulator/tps65217.txt | 66 +++++++++++++++++ arch/arm/boot/dts/am335x-bone.dts | 10 +++ arch/arm/boot/dts/am335x-evm.dts | 10 +++ arch/arm/boot/dts/tps65217.dtsi | 67 +++++++++++++++++ arch/arm/boot/dts/tps65910.dtsi | 76 ++++++++++++++++++++ drivers/mfd/tps65217.c | 67 ++++++++++++++++- drivers/regulator/tps65217-regulator.c | 1 + include/linux/mfd/tps65217.h | 3 +- 8 files changed, 297 insertions(+), 3 deletions(-) create mode 100644 Documentation/devicetree/bindings/regulator/tps65217.txt create mode 100644 arch/arm/boot/dts/tps65217.dtsi create mode 100644 arch/arm/boot/dts/tps65910.dtsi -- 1.7.9.5 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] regulator: tps65217: Add device tree support 2012-06-25 12:04 [PATCH 0/3] Add device tree support for AM33XX regulators AnilKumar Ch @ 2012-06-25 12:04 ` AnilKumar Ch 2012-06-25 12:12 ` Mark Brown 2012-06-25 12:04 ` [PATCH 2/3] ARM: OMAP2+: AM33XX: Add tps65217 device tree data AnilKumar Ch 2012-06-25 12:04 ` [PATCH 3/3] ARM: OMAP2+: AM33XX: Add tps65910 " AnilKumar Ch 2 siblings, 1 reply; 6+ messages in thread From: AnilKumar Ch @ 2012-06-25 12:04 UTC (permalink / raw) To: sameo, lrg, broonie, linux-kernel Cc: linux-omap, devicetree-discuss, grant.likely, AnilKumar Ch This commit adds device tree support for tps65217 pmic. And usage details are added to device tree documentation. Driver is tested by using kernel module with regulator set and get APIs. Signed-off-by: AnilKumar Ch <anilkumar@ti.com> --- These patches were tested along with these patches * DT addition to AM33XX family http://marc.info/?l=linux-omap&m=134035826700991&w=2 .../devicetree/bindings/regulator/tps65217.txt | 66 +++++++++++++++++++ drivers/mfd/tps65217.c | 67 +++++++++++++++++++- drivers/regulator/tps65217-regulator.c | 1 + include/linux/mfd/tps65217.h | 3 +- 4 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 Documentation/devicetree/bindings/regulator/tps65217.txt diff --git a/Documentation/devicetree/bindings/regulator/tps65217.txt b/Documentation/devicetree/bindings/regulator/tps65217.txt new file mode 100644 index 0000000..e84d26c --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/tps65217.txt @@ -0,0 +1,66 @@ +TPS65217 family of regulators + +Required properties: +- compatible: "ti,tps65217" +- reg: I2C slave address +- regulators: list of regulators provided by this controller, must be named + after their hardware counterparts: dcdc[1-3] and ldo[1-4] + +Each regulator is defined using the standard binding for regulators. + +Example: + + tps: tps@24 { + compatible = "ti,tps65217"; + + regulators { + dcdc1_reg: dcdc1 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + dcdc2_reg: dcdc2 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + dcdc3_reg: dcdc3 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1500000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_reg: ldo1 { + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo2_reg: ldo2 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo3_reg: ldo3 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo4_reg: ldo4 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + }; + }; diff --git a/drivers/mfd/tps65217.c b/drivers/mfd/tps65217.c index db194e4..61c097a 100644 --- a/drivers/mfd/tps65217.c +++ b/drivers/mfd/tps65217.c @@ -24,6 +24,7 @@ #include <linux/slab.h> #include <linux/regmap.h> #include <linux/err.h> +#include <linux/regulator/of_regulator.h> #include <linux/mfd/core.h> #include <linux/mfd/tps65217.h> @@ -132,6 +133,61 @@ int tps65217_clear_bits(struct tps65217 *tps, unsigned int reg, } EXPORT_SYMBOL_GPL(tps65217_clear_bits); +#ifdef CONFIG_OF +static struct of_regulator_match reg_matches[] = { + { .name = "dcdc1", .driver_data = (void *)TPS65217_DCDC_1 }, + { .name = "dcdc2", .driver_data = (void *)TPS65217_DCDC_2 }, + { .name = "dcdc3", .driver_data = (void *)TPS65217_DCDC_3 }, + { .name = "ldo1", .driver_data = (void *)TPS65217_LDO_1 }, + { .name = "ldo2", .driver_data = (void *)TPS65217_LDO_2 }, + { .name = "ldo3", .driver_data = (void *)TPS65217_LDO_3 }, + { .name = "ldo4", .driver_data = (void *)TPS65217_LDO_4 }, +}; + +static struct tps65217_board *tps65217_parse_dt(struct i2c_client *client) +{ + struct device_node *node = client->dev.of_node; + struct tps65217_board *pdata; + struct device_node *regs; + int count = ARRAY_SIZE(reg_matches); + int ret, i; + + regs = of_find_node_by_name(node, "regulators"); + if (!regs) + return NULL; + + ret = of_regulator_match(&client->dev, regs, reg_matches, count); + of_node_put(regs); + if ((ret < 0) || (ret > count)) + return NULL; + + count = ret; + pdata = devm_kzalloc(&client->dev, count * sizeof(*pdata), GFP_KERNEL); + if (!pdata) + return NULL; + + for (i = 0; i < count; i++) { + if (!reg_matches[i].init_data || !reg_matches[i].of_node) + continue; + + pdata->tps65217_init_data[i] = reg_matches[i].init_data; + pdata->of_node[i] = reg_matches[i].of_node; + } + + return pdata; +} + +static struct of_device_id tps65217_of_match[] = { + { .compatible = "ti,tps65217", }, + { }, +}; +#else +static struct tps65217_board *tps65217_parse_dt(struct i2c_client *client) +{ + return NULL; +} +#endif + static struct regmap_config tps65217_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -141,10 +197,14 @@ static int __devinit tps65217_probe(struct i2c_client *client, const struct i2c_device_id *ids) { struct tps65217 *tps; + struct regulator_init_data *reg_data; struct tps65217_board *pdata = client->dev.platform_data; int i, ret; unsigned int version; + if (!pdata && client->dev.of_node) + pdata = tps65217_parse_dt(client); + tps = devm_kzalloc(&client->dev, sizeof(*tps), GFP_KERNEL); if (!tps) return -ENOMEM; @@ -182,8 +242,9 @@ static int __devinit tps65217_probe(struct i2c_client *client, } pdev->dev.parent = tps->dev; - platform_device_add_data(pdev, &pdata->tps65217_init_data[i], - sizeof(pdata->tps65217_init_data[i])); + pdev->dev.of_node = pdata->of_node[i]; + reg_data = pdata->tps65217_init_data[i]; + platform_device_add_data(pdev, reg_data, sizeof(*reg_data)); tps->regulator_pdev[i] = pdev; platform_device_add(pdev); @@ -212,6 +273,8 @@ MODULE_DEVICE_TABLE(i2c, tps65217_id_table); static struct i2c_driver tps65217_driver = { .driver = { .name = "tps65217", + .owner = THIS_MODULE, + .of_match_table = of_match_ptr(tps65217_of_match), }, .id_table = tps65217_id_table, .probe = tps65217_probe, diff --git a/drivers/regulator/tps65217-regulator.c b/drivers/regulator/tps65217-regulator.c index 9d371d2..75401c7 100644 --- a/drivers/regulator/tps65217-regulator.c +++ b/drivers/regulator/tps65217-regulator.c @@ -326,6 +326,7 @@ static int __devinit tps65217_regulator_probe(struct platform_device *pdev) tps->info[pdev->id] = info; config.dev = &pdev->dev; + config.of_node = pdev->dev.of_node; config.init_data = pdev->dev.platform_data; config.driver_data = tps; diff --git a/include/linux/mfd/tps65217.h b/include/linux/mfd/tps65217.h index e030ef9..10e0595 100644 --- a/include/linux/mfd/tps65217.h +++ b/include/linux/mfd/tps65217.h @@ -217,7 +217,8 @@ enum tps65217_regulator_id { * Board data may be used to initialize regulator. */ struct tps65217_board { - struct regulator_init_data *tps65217_init_data; + struct regulator_init_data *tps65217_init_data[TPS65217_NUM_REGULATOR]; + struct device_node *of_node[TPS65217_NUM_REGULATOR]; }; /** -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] regulator: tps65217: Add device tree support 2012-06-25 12:04 ` [PATCH 1/3] regulator: tps65217: Add device tree support AnilKumar Ch @ 2012-06-25 12:12 ` Mark Brown 2012-06-25 12:28 ` AnilKumar, Chimata 0 siblings, 1 reply; 6+ messages in thread From: Mark Brown @ 2012-06-25 12:12 UTC (permalink / raw) To: AnilKumar Ch Cc: sameo, lrg, linux-kernel, linux-omap, devicetree-discuss, grant.likely [-- Attachment #1: Type: text/plain, Size: 529 bytes --] On Mon, Jun 25, 2012 at 05:34:36PM +0530, AnilKumar Ch wrote: > This commit adds device tree support for tps65217 pmic. And usage > details are added to device tree documentation. > > Driver is tested by using kernel module with regulator set and get > APIs. This needs to be updated for the patches Laxman recently posted for the regulator-compatible property (which are currently blocked on review from the ST Ericcsson guys but I'll probably apply them in the next couple of days if I don't hear back from them). [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* RE: [PATCH 1/3] regulator: tps65217: Add device tree support 2012-06-25 12:12 ` Mark Brown @ 2012-06-25 12:28 ` AnilKumar, Chimata 0 siblings, 0 replies; 6+ messages in thread From: AnilKumar, Chimata @ 2012-06-25 12:28 UTC (permalink / raw) To: Mark Brown Cc: sameo@linux.intel.com, Girdwood, Liam, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, devicetree-discuss@lists.ozlabs.org, grant.likely@secretlab.ca Hi Mark, Thanks for quick reply. On Mon, Jun 25, 2012 at 17:42:20, Mark Brown wrote: > On Mon, Jun 25, 2012 at 05:34:36PM +0530, AnilKumar Ch wrote: > > This commit adds device tree support for tps65217 pmic. And usage > > details are added to device tree documentation. > > > > Driver is tested by using kernel module with regulator set and get > > APIs. > > This needs to be updated for the patches Laxman recently posted for the > regulator-compatible property (which are currently blocked on review > from the ST Ericcsson guys but I'll probably apply them in the next > couple of days if I don't hear back from them). > In that case, I will resubmit the patches once "regulator-compatible property" patches are pushed to "linux-next". Thanks AnilKumar ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] ARM: OMAP2+: AM33XX: Add tps65217 device tree data 2012-06-25 12:04 [PATCH 0/3] Add device tree support for AM33XX regulators AnilKumar Ch 2012-06-25 12:04 ` [PATCH 1/3] regulator: tps65217: Add device tree support AnilKumar Ch @ 2012-06-25 12:04 ` AnilKumar Ch 2012-06-25 12:04 ` [PATCH 3/3] ARM: OMAP2+: AM33XX: Add tps65910 " AnilKumar Ch 2 siblings, 0 replies; 6+ messages in thread From: AnilKumar Ch @ 2012-06-25 12:04 UTC (permalink / raw) To: sameo, lrg, broonie, linux-kernel Cc: linux-omap, devicetree-discuss, grant.likely, AnilKumar Ch Add device tree data for tps65217 regulator by adding all the consumers necessary for AM335X-BeagleBone. The data will be map to a regulator constraints which is required for regulator set_voltage and get_voltage calls. All tps65217 PMIC regulator constraints are placed in a seperate device tree include file (tps65217.dtsi). This patch also adds the I2C slave address of TPS65217 pmic to am335x-bone.dts file. Signed-off-by: AnilKumar Ch <anilkumar@ti.com> --- These patches were tested along with these patches * DT addition to AM33XX family http://marc.info/?l=linux-omap&m=134035826700991&w=2 arch/arm/boot/dts/am335x-bone.dts | 10 ++++++ arch/arm/boot/dts/tps65217.dtsi | 67 +++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 arch/arm/boot/dts/tps65217.dtsi diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts index a9af4db..a4d4415 100644 --- a/arch/arm/boot/dts/am335x-bone.dts +++ b/arch/arm/boot/dts/am335x-bone.dts @@ -18,3 +18,13 @@ reg = <0x80000000 0x10000000>; /* 256 MB */ }; }; + +&i2c1 { + clock-frequency = <400000>; + + tps: tps@24 { + reg = <0x24>; + }; +}; + +/include/ "tps65217.dtsi" diff --git a/arch/arm/boot/dts/tps65217.dtsi b/arch/arm/boot/dts/tps65217.dtsi new file mode 100644 index 0000000..5b9850b --- /dev/null +++ b/arch/arm/boot/dts/tps65217.dtsi @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +/* + * Integrated Power Management Chip + * http://www.ti.com/lit/ds/symlink/tps65217.pdf + */ + +&tps { + compatible = "ti,tps65217"; + + regulators { + dcdc1_reg: dcdc1 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; + regulator-always-on; + }; + + dcdc2_reg: dcdc2 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + dcdc3_reg: dcdc3 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1500000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo1_reg: ldo1 { + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo2_reg: ldo2 { + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo3_reg: ldo3 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + + ldo4_reg: ldo4 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + }; + }; +}; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] ARM: OMAP2+: AM33XX: Add tps65910 device tree data 2012-06-25 12:04 [PATCH 0/3] Add device tree support for AM33XX regulators AnilKumar Ch 2012-06-25 12:04 ` [PATCH 1/3] regulator: tps65217: Add device tree support AnilKumar Ch 2012-06-25 12:04 ` [PATCH 2/3] ARM: OMAP2+: AM33XX: Add tps65217 device tree data AnilKumar Ch @ 2012-06-25 12:04 ` AnilKumar Ch 2 siblings, 0 replies; 6+ messages in thread From: AnilKumar Ch @ 2012-06-25 12:04 UTC (permalink / raw) To: sameo, lrg, broonie, linux-kernel Cc: linux-omap, devicetree-discuss, grant.likely, AnilKumar Ch Add device tree data for tps65910 regulator by adding all the consumers necessary for AM335X-EVM. The data will be map to a regulator constraints which is required for regulator set_voltage and get_voltage calls. All tps65910 PMIC regulator constraints are placed in a seperate device tree include file (tps65910.dtsi). This patch also adds the I2C slave address of TPS65910 pmic to am335x-evm.dts file. Signed-off-by: AnilKumar Ch <anilkumar@ti.com> --- These patches were tested along with these patches * DT addition to AM33XX family http://marc.info/?l=linux-omap&m=134035826700991&w=2 arch/arm/boot/dts/am335x-evm.dts | 10 +++++ arch/arm/boot/dts/tps65910.dtsi | 76 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 arch/arm/boot/dts/tps65910.dtsi diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts index d6a97d9..15d03ba 100644 --- a/arch/arm/boot/dts/am335x-evm.dts +++ b/arch/arm/boot/dts/am335x-evm.dts @@ -18,3 +18,13 @@ reg = <0x80000000 0x10000000>; /* 256 MB */ }; }; + +&i2c1 { + clock-frequency = <400000>; + + tps: tps@2D { + reg = <0x2D>; + }; +}; + +/include/ "tps65910.dtsi" diff --git a/arch/arm/boot/dts/tps65910.dtsi b/arch/arm/boot/dts/tps65910.dtsi new file mode 100644 index 0000000..c4f5d85 --- /dev/null +++ b/arch/arm/boot/dts/tps65910.dtsi @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +/* + * Integrated Power Management Chip + * http://www.ti.com/lit/ds/symlink/tps65910.pdf + */ + +&tps { + compatible = "ti,tps65910"; + + regulators { + vrtc_reg: vrtc { + regulator-always-on; + }; + + vio_reg: vio { + regulator-always-on; + }; + + vdd1_reg: vdd1 { + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <1500000>; + regulator-boot-on; + regulator-always-on; + }; + + vdd2_reg: vdd2 { + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <1500000>; + regulator-boot-on; + regulator-always-on; + }; + + vdd3_reg: vdd3 { + regulator-always-on; + }; + + vdig1_reg: vdig1 { + regulator-always-on; + }; + + vdig2_reg: vdig2 { + regulator-always-on; + }; + + vpll_reg: vpll { + regulator-always-on; + }; + + vdac_reg: vdac { + regulator-always-on; + }; + + vaux1_reg: vaux1 { + regulator-always-on; + }; + + vaux2_reg: vaux2 { + regulator-always-on; + }; + + vaux33_reg: vaux33 { + regulator-always-on; + }; + + vmmc_reg: vmmc { + regulator-always-on; + }; + }; +}; -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-06-25 12:28 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-06-25 12:04 [PATCH 0/3] Add device tree support for AM33XX regulators AnilKumar Ch 2012-06-25 12:04 ` [PATCH 1/3] regulator: tps65217: Add device tree support AnilKumar Ch 2012-06-25 12:12 ` Mark Brown 2012-06-25 12:28 ` AnilKumar, Chimata 2012-06-25 12:04 ` [PATCH 2/3] ARM: OMAP2+: AM33XX: Add tps65217 device tree data AnilKumar Ch 2012-06-25 12:04 ` [PATCH 3/3] ARM: OMAP2+: AM33XX: Add tps65910 " AnilKumar Ch
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).