diff mbox

[RFC,4/4] ARM: dts: k2hk-evm: add pm domains for net, qmss and knav_dmas

Message ID 1411657537-25238-5-git-send-email-grygorii.strashko@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Grygorii Strashko Sept. 25, 2014, 3:05 p.m. UTC
Add Keystone PM domains nodes for NetCP, NetCPx, QMSS, KNAV-DMA
devices.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 arch/arm/boot/dts/k2hk-evm.dts | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

Comments

Kevin Hilman Sept. 25, 2014, 10:27 p.m. UTC | #1
Grygorii Strashko <grygorii.strashko@ti.com> writes:

> Add Keystone PM domains nodes for NetCP, NetCPx, QMSS, KNAV-DMA
> devices.
>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  arch/arm/boot/dts/k2hk-evm.dts | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
>
> diff --git a/arch/arm/boot/dts/k2hk-evm.dts b/arch/arm/boot/dts/k2hk-evm.dts
> index 91371f7..a7b468c 100644
> --- a/arch/arm/boot/dts/k2hk-evm.dts
> +++ b/arch/arm/boot/dts/k2hk-evm.dts
> @@ -58,6 +58,13 @@
>  				clock-output-names = "refclk-ddr3b";
>  			};
>  		};
> +
> +		qmss_domain: qmss_pm_controller {
> +			compatible = "ti,keystone-gpc";
> +			clocks = <&chipclk13>;
> +			#power-domain-cells = <0>;
> +		};

Hmm, I'm still a bit confused by what you're attempting to do here.
Unless I'm missing someting, clocks are properties of the device, not
the pm-domain...

>  		qmss: qmss@2a40000 {
>  			compatible = "ti,keystone-navigator-qmss";
>  			dma-coherent;
> @@ -65,6 +72,8 @@
>  			#size-cells = <1>;
>  			clocks = <&chipclk13>;
>  			ranges;
> +			power-domains = <&qmss_domain>;

...  Also, each of the pm domains is duplicating the list of clocks from
the device node, so I'm not sure what this is accomplishing.

Why not just have a single, more generic power domain that gets the list
of clocks from the device node.

Kevin
Grygorii Strashko Sept. 26, 2014, 4:39 p.m. UTC | #2
Hi Kevin,

On 09/26/2014 01:27 AM, Kevin Hilman wrote:
> Grygorii Strashko <grygorii.strashko@ti.com> writes:
> 
>> Add Keystone PM domains nodes for NetCP, NetCPx, QMSS, KNAV-DMA
>> devices.
>>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>>   arch/arm/boot/dts/k2hk-evm.dts | 31 +++++++++++++++++++++++++++++++
>>   1 file changed, 31 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/k2hk-evm.dts b/arch/arm/boot/dts/k2hk-evm.dts
>> index 91371f7..a7b468c 100644
>> --- a/arch/arm/boot/dts/k2hk-evm.dts
>> +++ b/arch/arm/boot/dts/k2hk-evm.dts
>> @@ -58,6 +58,13 @@
>>   				clock-output-names = "refclk-ddr3b";
>>   			};
>>   		};
>> +
>> +		qmss_domain: qmss_pm_controller {
>> +			compatible = "ti,keystone-gpc";
>> +			clocks = <&chipclk13>;
>> +			#power-domain-cells = <0>;
>> +		};
> 
> Hmm, I'm still a bit confused by what you're attempting to do here.
> Unless I'm missing someting, clocks are properties of the device, not
> the pm-domain...
> 
>>   		qmss: qmss@2a40000 {
>>   			compatible = "ti,keystone-navigator-qmss";
>>   			dma-coherent;
>> @@ -65,6 +72,8 @@
>>   			#size-cells = <1>;
>>   			clocks = <&chipclk13>;
>>   			ranges;
>> +			power-domains = <&qmss_domain>;
> 
> ...  Also, each of the pm domains is duplicating the list of clocks from
> the device node, so I'm not sure what this is accomplishing.
> 
> Why not just have a single, more generic power domain that gets the list
> of clocks from the device node.

Ok. I've tried it and seems it will work.

Used GPD callbacks:
		.attach_dev = keystone_pm_domain_attach_dev,
		.detach_dev = keystone_pm_domain_detach_dev,
		.dev_ops = {
			.stop = pm_clk_suspend,
			.start = pm_clk_resume,
		},

Updated DT structure:
		k_domain: k_pm_controller {
			compatible = "ti,keystone-gpc";
			#power-domain-cells = <0>;
		};

		qmss: qmss@2a40000 {
			compatible = "ti,keystone-navigator-qmss";
			dma-coherent;
			#address-cells = <1>;
			#size-cells = <1>;
			clocks = <&chipclk13>;
			ranges;
			power-domains = <&k_domain>;

Thanks for your comments. 
I'll update & re-send.

Regards,
-grygorii
diff mbox

Patch

diff --git a/arch/arm/boot/dts/k2hk-evm.dts b/arch/arm/boot/dts/k2hk-evm.dts
index 91371f7..a7b468c 100644
--- a/arch/arm/boot/dts/k2hk-evm.dts
+++ b/arch/arm/boot/dts/k2hk-evm.dts
@@ -58,6 +58,13 @@ 
 				clock-output-names = "refclk-ddr3b";
 			};
 		};
+
+		qmss_domain: qmss_pm_controller {
+			compatible = "ti,keystone-gpc";
+			clocks = <&chipclk13>;
+			#power-domain-cells = <0>;
+		};
+
 		qmss: qmss@2a40000 {
 			compatible = "ti,keystone-navigator-qmss";
 			dma-coherent;
@@ -65,6 +72,8 @@ 
 			#size-cells = <1>;
 			clocks = <&chipclk13>;
 			ranges;
+			power-domains = <&qmss_domain>;
+
 			queue-range	= <0 0x4000>;
 			linkram0	= <0x100000 0x8000>;
 			linkram1	= <0x0 0x10000>;
@@ -192,12 +201,20 @@ 
 			};
 		}; /* qmss */
 
+		knav_dmas_domain: knav_dmas_pm_controller {
+			compatible = "ti,keystone-gpc";
+			clocks = <&clkpa>, <&clkxge>;
+			#power-domain-cells = <0>;
+		};
+
 		knav_dmas: knav_dmas@0 {
 			compatible = "ti,keystone-navigator-dma";
 			clocks = <&clkpa>, <&clkxge>;
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges;
+			power-domains = <&knav_dmas_domain>;
+
 			ti,navigator-cloud-address = <0x23a80000 0x23a90000
 						   0x23aa0000 0x23ab0000>;
 
@@ -222,6 +239,12 @@ 
 			};
 		};
 
+		netcp_domain: netcp_pm_controller {
+			compatible = "ti,keystone-gpc";
+			clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
+			#power-domain-cells = <0>;
+		};
+
 		netcp: netcp@2090000 {
 			reg = <0x2620110 0x8>;
 			reg-names = "efuse";
@@ -229,6 +252,7 @@ 
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges;
+			power-domains = <&netcp_domain>;
 
 			clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
 			dma-coherent;
@@ -302,11 +326,18 @@ 
 			};
 		};
 
+		netcpx_domain: netcpx_pm_controller {
+			compatible = "ti,keystone-gpc";
+			clocks = <&clkxge>;
+			#power-domain-cells = <0>;
+		};
+
 		netcpx: netcpx@2f00000 {
 			compatible = "ti,netcp-1.0";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges;
+			power-domains = <&netcpx_domain>;
 
 			clocks = <&clkxge>;
 			clock-names = "clk_xge";