diff mbox

[v3,5/5] hisilicon/dts: Add hi655x pmic dts node

Message ID 1450184056-79851-6-git-send-email-puck.chen@hisilicon.com
State New
Headers show

Commit Message

Chen Feng Dec. 15, 2015, 12:54 p.m. UTC
Add dts node for hi665x MFD and regulator driver

Signed-off-by: Chen Feng <puck.chen@hisilicon.com>

Signed-off-by: Fei Wang <w.f@huawei.com>

Tested-by: Xinwei Kong <kong.kongxinwei@hisilicon.com>

---
 arch/arm64/boot/dts/hisilicon/hi6220.dtsi | 178 ++++++++++++++++++++++++++++++
 1 file changed, 178 insertions(+)

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Comments

Chen Feng Dec. 17, 2015, 3:27 a.m. UTC | #1
Mark,
 +- regulator-vset-regs: Voltage set register offset.
 +- regulator-vset-mask: voltage set control mask.
 +- regulator-n-vol: The num of support voltages.
 +- regulator-vset-table: The table of support voltages.

> Why is this in the binding?  This is a binding for a specific device,

> there is no point in putting all these data tables in the DT - it just

> bloats the DT and makes it harder for us to enhance our support for this

> device in the future.


You mentioned in previous version,I I have some questions for it.

This regulator-vset-regs etc are vendor specific describe. The hi655x PMIC
is a series of chips. They all have this value, but the offset may be different.
And we can generate the dts file from excel which is defined by SOC.

I think the dts is designed to distinguish different platform. If we hard code this
in files, it may be also different to use as common in next chip version.

I will appreciate it if you can give me some suggestions.


On 2015/12/15 20:54, Chen Feng wrote:
> Add dts node for hi665x MFD and regulator driver

> 

> Signed-off-by: Chen Feng <puck.chen@hisilicon.com>

> Signed-off-by: Fei Wang <w.f@huawei.com>

> Tested-by: Xinwei Kong <kong.kongxinwei@hisilicon.com>

> ---

>  arch/arm64/boot/dts/hisilicon/hi6220.dtsi | 178 ++++++++++++++++++++++++++++++

>  1 file changed, 178 insertions(+)

> 

> diff --git a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi

> index 82d2488..5f98a72 100644

> --- a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi

> +++ b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi

> @@ -208,5 +208,183 @@

>  			clock-names = "uartclk", "apb_pclk";

>  			status = "disabled";

>  		};

> +		pmic: pmic@F8000000 {

> +			compatible = "hisilicon,hi655x-pmic";

> +			reg = <0x0 0xf8000000 0x0 0x1000>;

> +			#interrupt-cells = <2>;

> +			interrupt-controller;

> +			pmic-gpios = <&gpio_pmu_irq_n>;

> +			status = "okay";

> +			ldo2: regulator@a21 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo2";

> +				regulator-min-microvolt = <2500000>;

> +				regulator-max-microvolt = <3200000>;

> +				regulator-valid-modes-mask = <0x02>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x029 0x02a 0x02b>;

> +				regulator-ctrl-mask = <0x1>;

> +				regulator-vset-regs = <0x072>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <2500000>,<2600000>,

> +							<2700000>,<2800000>,

> +							<2900000>,<3000000>,

> +							<3100000>,<3200000>;

> +			};

> +			ldo7: regulator@a26 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo7";

> +				regulator-min-microvolt = <1800000>;

> +				regulator-max-microvolt = <3300000>;

> +				regulator-valid-modes-mask = <0x0a>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x029 0x02a 0x02b>;

> +				regulator-ctrl-mask = <0x6>;

> +				regulator-vset-regs = <0x078>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <1800000>,<1850000>,

> +							<2850000>,<2900000>,

> +							<3000000>,<3100000>,

> +							<3200000>,<3300000>;

> +			};

> +			ldo10: regulator@a29 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo10";

> +				regulator-min-microvolt = <1800000>;

> +				regulator-max-microvolt = <3000000>;

> +				regulator-valid-modes-mask = <0x0a>;

> +				regulator-enable-ramp-delay = <360>;

> +				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;

> +				regulator-ctrl-mask = <0x1>;

> +				regulator-vset-regs = <0x07b>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <1800000>,<1850000>,

> +							<1900000>,<2750000>,

> +							<2800000>,<2850000>,

> +							<2900000>,<3000000>;

> +			};

> +			ldo13: regulator@a32 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo13";

> +				regulator-min-microvolt = <1600000>;

> +				regulator-max-microvolt = <1950000>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;

> +				regulator-ctrl-mask = <0x4>;

> +				regulator-vset-regs = <0x07e>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <1600000>,<1650000>,

> +							<1700000>,<1750000>,

> +							<1800000>,<1850000>,

> +							<1900000>,<1950000>;

> +			};

> +			ldo14: regulator@a33 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo14";

> +				regulator-min-microvolt = <2500000>;

> +				regulator-max-microvolt = <3200000>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;

> +				regulator-ctrl-mask = <0x5>;

> +				regulator-vset-regs = <0x07f>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <2500000>,<2600000>,

> +							<2700000>,<2800000>,

> +							<2900000>,<3000000>,

> +							<3100000>,<3200000>;

> +			};

> +			ldo15: regulator@a34 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo15";

> +				regulator-min-microvolt = <1600000>;

> +				regulator-max-microvolt = <1950000>;

> +				regulator-boot-on;

> +				regulator-always-on;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;

> +				regulator-ctrl-mask = <0x6>;

> +				regulator-vset-regs = <0x080>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <1600000>,<1650000>,

> +							<1700000>,<1750000>,

> +							<1800000>,<1850000>,

> +							<1900000>,<1950000>;

> +			};

> +			ldo17: regulator@a36 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo17";

> +				regulator-min-microvolt = <2500000>;

> +				regulator-max-microvolt = <3200000>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x02f 0x030 0x031>;

> +				regulator-ctrl-mask = <0x0>;

> +				regulator-vset-regs = <0x082>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <2500000>,<2600000>,

> +							<2700000>,<2800000>,

> +							<2900000>,<3000000>,

> +							<3100000>,<3200000>;

> +			};

> +			ldo19: regulator@a38 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo19";

> +				regulator-min-microvolt = <1800000>;

> +				regulator-max-microvolt = <3000000>;

> +				regulator-enable-ramp-delay = <360>;

> +				regulator-ctrl-regs = <0x02f 0x030 0x031>;

> +				regulator-ctrl-mask = <0x2>;

> +				regulator-vset-regs = <0x084>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <1800000>,<1850000>,

> +							<1900000>,<2750000>,

> +							<2800000>,<2850000>,

> +							<2900000>,<3000000>;

> +			};

> +			ldo21: regulator@a40 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo21";

> +				regulator-min-microvolt = <1650000>;

> +				regulator-max-microvolt = <2000000>;

> +				regulator-always-on;

> +				regulator-valid-modes-mask = <0x02>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x02f 0x030 0x031>;

> +				regulator-ctrl-mask = <0x4>;

> +				regulator-vset-regs = <0x086>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <1650000>,<1700000>,

> +							<1750000>,<1800000>,

> +							<1850000>,<1900000>,

> +							<1950000>,<2000000>;

> +			};

> +			ldo22: regulator@a41 {

> +				compatible = "hisilicon,hi655x-regulator-pmic";

> +				regulator-name = "ldo22";

> +				regulator-min-microvolt = <900000>;

> +				regulator-max-microvolt = <1200000>;

> +				regulator-boot-on;

> +				regulator-always-on;

> +				regulator-valid-modes-mask = <0x02>;

> +				regulator-enable-ramp-delay = <120>;

> +				regulator-ctrl-regs = <0x02f 0x030 0x031>;

> +				regulator-ctrl-mask = <0x5>;

> +				regulator-vset-regs = <0x087>;

> +				regulator-vset-mask = <0x7>;

> +				regulator-n-vol = <8>;

> +				regulator-vset-table  = <900000>,<1000000>,

> +							<1050000>,<1100000>,

> +							<1150000>,<1175000>,

> +							<1185000>,<1200000>;

> +			       };

> +		};

>  	};

>  };

> 


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Mark Brown Dec. 18, 2015, 5:58 p.m. UTC | #2
On Thu, Dec 17, 2015 at 11:27:27AM +0800, chenfeng wrote:

>  +- regulator-vset-regs: Voltage set register offset.

>  +- regulator-vset-mask: voltage set control mask.

>  +- regulator-n-vol: The num of support voltages.

>  +- regulator-vset-table: The table of support voltages.


> > Why is this in the binding?  This is a binding for a specific device,

> > there is no point in putting all these data tables in the DT - it just

> > bloats the DT and makes it harder for us to enhance our support for this

> > device in the future.


> You mentioned in previous version,I I have some questions for it.


> This regulator-vset-regs etc are vendor specific describe. The hi655x PMIC


There's nothing vendor specific about the way this is written...

> is a series of chips. They all have this value, but the offset may be different.

> And we can generate the dts file from excel which is defined by SOC.


> I think the dts is designed to distinguish different platform. If we hard code this

> in files, it may be also different to use as common in next chip version.


If your tooling can generate DT files it can generate C code just as
well and it seems unlikely you're going to be able to build new boards
without being able to do firmware updates here.  Especially for the
sorts of systems that use DT the set of scenarios where you're able to
update the DT but not the kernel seems like it will be extremely
limited.  I don't really buy the argument that there's any practical
difference in the ability to update the kernel and DT and to the extent
there is one it seems better to keep the ABI we have to support smaller
by having the DT be minimal.

This also allows us to map things more efficiently than we can with just
a table of voltages.  For example a good selection of the regulators in
your example DT appear to be linear ranges and so should be mapped as
such so we can do direct calcuations rather than having to iterate
through a table to map voltages into selectors.  That gets especially
serious for higher resolution regulators like most DCDCs (and modern
LDOs for that matter).
Chen Feng Dec. 21, 2015, 3:01 a.m. UTC | #3
Mark,

On 2015/12/19 1:58, Mark Brown wrote:
> On Thu, Dec 17, 2015 at 11:27:27AM +0800, chenfeng wrote:

> 

>>  +- regulator-vset-regs: Voltage set register offset.

>>  +- regulator-vset-mask: voltage set control mask.

>>  +- regulator-n-vol: The num of support voltages.

>>  +- regulator-vset-table: The table of support voltages.

> 

>>> Why is this in the binding?  This is a binding for a specific device,

>>> there is no point in putting all these data tables in the DT - it just

>>> bloats the DT and makes it harder for us to enhance our support for this

>>> device in the future.

> 

>> You mentioned in previous version,I I have some questions for it.

> 

>> This regulator-vset-regs etc are vendor specific describe. The hi655x PMIC

> 

> There's nothing vendor specific about the way this is written...

> 

>> is a series of chips. They all have this value, but the offset may be different.

>> And we can generate the dts file from excel which is defined by SOC.

> 

>> I think the dts is designed to distinguish different platform. If we hard code this

>> in files, it may be also different to use as common in next chip version.

> 

> If your tooling can generate DT files it can generate C code just as

> well and it seems unlikely you're going to be able to build new boards

> without being able to do firmware updates here.  Especially for the

> sorts of systems that use DT the set of scenarios where you're able to

> update the DT but not the kernel seems like it will be extremely

> limited.  I don't really buy the argument that there's any practical

> difference in the ability to update the kernel and DT and to the extent

> there is one it seems better to keep the ABI we have to support smaller

> by having the DT be minimal.

> 

> This also allows us to map things more efficiently than we can with just

> a table of voltages.  For example a good selection of the regulators in

> your example DT appear to be linear ranges and so should be mapped as

> such so we can do direct calcuations rather than having to iterate

> through a table to map voltages into selectors.  That gets especially

> serious for higher resolution regulators like most DCDCs (and modern

> LDOs for that matter).

> 

Thanks,
I see, I will change the table of voltages into driver.
like this,
static const unsigned int voltages[] = {
	1500000, 1800000, 2400000, 2500000,
	2600000, 2700000, 2850000, 3000000,
};

And there will be two open-code function for is-enable and disable in the regulator driver.
Since we need use the status and disable register on PM chip. Only enable reg in the regulator desc.

Do you agree with this?




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Chen Feng Dec. 21, 2015, 6:20 a.m. UTC | #4
On 2015/12/21 11:01, chenfeng wrote:
> Mark,

> 

> On 2015/12/19 1:58, Mark Brown wrote:

>> On Thu, Dec 17, 2015 at 11:27:27AM +0800, chenfeng wrote:

>>

>>>  +- regulator-vset-regs: Voltage set register offset.

>>>  +- regulator-vset-mask: voltage set control mask.

>>>  +- regulator-n-vol: The num of support voltages.

>>>  +- regulator-vset-table: The table of support voltages.

>>

>>>> Why is this in the binding?  This is a binding for a specific device,

>>>> there is no point in putting all these data tables in the DT - it just

>>>> bloats the DT and makes it harder for us to enhance our support for this

>>>> device in the future.

>>

>>> You mentioned in previous version,I I have some questions for it.

>>

>>> This regulator-vset-regs etc are vendor specific describe. The hi655x PMIC

>>

>> There's nothing vendor specific about the way this is written...

>>

>>> is a series of chips. They all have this value, but the offset may be different.

>>> And we can generate the dts file from excel which is defined by SOC.

>>

>>> I think the dts is designed to distinguish different platform. If we hard code this

>>> in files, it may be also different to use as common in next chip version.

>>

>> If your tooling can generate DT files it can generate C code just as

>> well and it seems unlikely you're going to be able to build new boards

>> without being able to do firmware updates here.  Especially for the

>> sorts of systems that use DT the set of scenarios where you're able to

>> update the DT but not the kernel seems like it will be extremely

>> limited.  I don't really buy the argument that there's any practical

>> difference in the ability to update the kernel and DT and to the extent

>> there is one it seems better to keep the ABI we have to support smaller

>> by having the DT be minimal.

>>

>> This also allows us to map things more efficiently than we can with just

>> a table of voltages.  For example a good selection of the regulators in

>> your example DT appear to be linear ranges and so should be mapped as

>> such so we can do direct calcuations rather than having to iterate

>> through a table to map voltages into selectors.  That gets especially

>> serious for higher resolution regulators like most DCDCs (and modern

>> LDOs for that matter).

>>

> Thanks,

> I see, I will change the table of voltages into driver.

> like this,

> static const unsigned int voltages[] = {

> 	1500000, 1800000, 2400000, 2500000,

> 	2600000, 2700000, 2850000, 3000000,

> };

> 

> And there will be two open-code function for is-enable and disable in the regulator driver.

> Since we need use the status and disable register on PM chip. Only enable reg in the regulator desc.

> 

> Do you agree with this?

> 

While doing this in driver code, I found that it seems all the vendor chip have
the voltage table. So I am wondering can we add this into the regulator framework.

We can add in the function of_get_regulation_constraints to get the vset table.

I am not sure this is right or not.
> 

> 


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Mark Brown Dec. 22, 2015, 4:08 p.m. UTC | #5
On Mon, Dec 21, 2015 at 11:01:37AM +0800, chenfeng wrote:

Please fix your mail client to word wrap within paragraphs at something
substantially less than 80 columns.  Doing this makes your messages much
easier to read and reply to.

> I see, I will change the table of voltages into driver.

> like this,

> static const unsigned int voltages[] = {

> 	1500000, 1800000, 2400000, 2500000,

> 	2600000, 2700000, 2850000, 3000000,

> };


> And there will be two open-code function for is-enable and disable in the regulator driver.

> Since we need use the status and disable register on PM chip. Only enable reg in the regulator desc.


> Do you agree with this?


Yes.
Mark Brown Dec. 23, 2015, 12:46 a.m. UTC | #6
On Mon, Dec 21, 2015 at 02:20:16PM +0800, chenfeng wrote:

Please fix your mail client to word wrap within paragraphs at something
substantially less than 80 columns.  Doing this makes your messages much
easier to read and reply to.

> While doing this in driver code, I found that it seems all the vendor

> chip have the voltage table. So I am wondering can we add this into

> the regulator framework.


> We can add in the function of_get_regulation_constraints to get the

> vset table.


> I am not sure this is right or not.


I'm just not convinced it's a good pattern to move this data out to DT,
like I said in my other mail it's making the ABI bigger and I'm not sure
I see much upside over putting the data in a table in DT rather than in
C code.  It's more parsing code and more things we really shouldn't
change in future.
Chen Feng Dec. 24, 2015, 2:43 a.m. UTC | #7
On 2015/12/23 8:46, Mark Brown wrote:
> On Mon, Dec 21, 2015 at 02:20:16PM +0800, chenfeng wrote:

> 

> Please fix your mail client to word wrap within paragraphs at something

> substantially less than 80 columns.  Doing this makes your messages much

> easier to read and reply to.

> 

ok, thanks for your advice.
>> While doing this in driver code, I found that it seems all the vendor

>> chip have the voltage table. So I am wondering can we add this into

>> the regulator framework.

> 

>> We can add in the function of_get_regulation_constraints to get the

>> vset table.

> 

>> I am not sure this is right or not.

> 

> I'm just not convinced it's a good pattern to move this data out to DT,

> like I said in my other mail it's making the ABI bigger and I'm not sure

> I see much upside over putting the data in a table in DT rather than in

> C code.  It's more parsing code and more things we really shouldn't

> change in future.

> 

ok. I will send the new version soon.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
index 82d2488..5f98a72 100644
--- a/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
+++ b/arch/arm64/boot/dts/hisilicon/hi6220.dtsi
@@ -208,5 +208,183 @@ 
 			clock-names = "uartclk", "apb_pclk";
 			status = "disabled";
 		};
+		pmic: pmic@F8000000 {
+			compatible = "hisilicon,hi655x-pmic";
+			reg = <0x0 0xf8000000 0x0 0x1000>;
+			#interrupt-cells = <2>;
+			interrupt-controller;
+			pmic-gpios = <&gpio_pmu_irq_n>;
+			status = "okay";
+			ldo2: regulator@a21 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo2";
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <3200000>;
+				regulator-valid-modes-mask = <0x02>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x029 0x02a 0x02b>;
+				regulator-ctrl-mask = <0x1>;
+				regulator-vset-regs = <0x072>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <2500000>,<2600000>,
+							<2700000>,<2800000>,
+							<2900000>,<3000000>,
+							<3100000>,<3200000>;
+			};
+			ldo7: regulator@a26 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo7";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-valid-modes-mask = <0x0a>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x029 0x02a 0x02b>;
+				regulator-ctrl-mask = <0x6>;
+				regulator-vset-regs = <0x078>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <1800000>,<1850000>,
+							<2850000>,<2900000>,
+							<3000000>,<3100000>,
+							<3200000>,<3300000>;
+			};
+			ldo10: regulator@a29 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo10";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-valid-modes-mask = <0x0a>;
+				regulator-enable-ramp-delay = <360>;
+				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;
+				regulator-ctrl-mask = <0x1>;
+				regulator-vset-regs = <0x07b>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <1800000>,<1850000>,
+							<1900000>,<2750000>,
+							<2800000>,<2850000>,
+							<2900000>,<3000000>;
+			};
+			ldo13: regulator@a32 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo13";
+				regulator-min-microvolt = <1600000>;
+				regulator-max-microvolt = <1950000>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;
+				regulator-ctrl-mask = <0x4>;
+				regulator-vset-regs = <0x07e>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <1600000>,<1650000>,
+							<1700000>,<1750000>,
+							<1800000>,<1850000>,
+							<1900000>,<1950000>;
+			};
+			ldo14: regulator@a33 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo14";
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <3200000>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;
+				regulator-ctrl-mask = <0x5>;
+				regulator-vset-regs = <0x07f>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <2500000>,<2600000>,
+							<2700000>,<2800000>,
+							<2900000>,<3000000>,
+							<3100000>,<3200000>;
+			};
+			ldo15: regulator@a34 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo15";
+				regulator-min-microvolt = <1600000>;
+				regulator-max-microvolt = <1950000>;
+				regulator-boot-on;
+				regulator-always-on;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x02c 0x02d 0x02e>;
+				regulator-ctrl-mask = <0x6>;
+				regulator-vset-regs = <0x080>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <1600000>,<1650000>,
+							<1700000>,<1750000>,
+							<1800000>,<1850000>,
+							<1900000>,<1950000>;
+			};
+			ldo17: regulator@a36 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo17";
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <3200000>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x02f 0x030 0x031>;
+				regulator-ctrl-mask = <0x0>;
+				regulator-vset-regs = <0x082>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <2500000>,<2600000>,
+							<2700000>,<2800000>,
+							<2900000>,<3000000>,
+							<3100000>,<3200000>;
+			};
+			ldo19: regulator@a38 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo19";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-enable-ramp-delay = <360>;
+				regulator-ctrl-regs = <0x02f 0x030 0x031>;
+				regulator-ctrl-mask = <0x2>;
+				regulator-vset-regs = <0x084>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <1800000>,<1850000>,
+							<1900000>,<2750000>,
+							<2800000>,<2850000>,
+							<2900000>,<3000000>;
+			};
+			ldo21: regulator@a40 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo21";
+				regulator-min-microvolt = <1650000>;
+				regulator-max-microvolt = <2000000>;
+				regulator-always-on;
+				regulator-valid-modes-mask = <0x02>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x02f 0x030 0x031>;
+				regulator-ctrl-mask = <0x4>;
+				regulator-vset-regs = <0x086>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <1650000>,<1700000>,
+							<1750000>,<1800000>,
+							<1850000>,<1900000>,
+							<1950000>,<2000000>;
+			};
+			ldo22: regulator@a41 {
+				compatible = "hisilicon,hi655x-regulator-pmic";
+				regulator-name = "ldo22";
+				regulator-min-microvolt = <900000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-boot-on;
+				regulator-always-on;
+				regulator-valid-modes-mask = <0x02>;
+				regulator-enable-ramp-delay = <120>;
+				regulator-ctrl-regs = <0x02f 0x030 0x031>;
+				regulator-ctrl-mask = <0x5>;
+				regulator-vset-regs = <0x087>;
+				regulator-vset-mask = <0x7>;
+				regulator-n-vol = <8>;
+				regulator-vset-table  = <900000>,<1000000>,
+							<1050000>,<1100000>,
+							<1150000>,<1175000>,
+							<1185000>,<1200000>;
+			       };
+		};
 	};
 };