Subject: [PATCHv5 29/35] ARM: dts: am4372: add minimal l4 bus layout with control module support

From: [email-masked] (Tero Kristo)
Date: Wed, 25 Mar 2015 11:10:04 +0200

On 03/24/2015 10:10 PM, Suman Anna wrote:
> Hi Tero,
>
> On 03/20/2015 01:44 PM, Kristo, Tero wrote:
>> This patch creates an l4_wkup interconnect for AM43xx, and moves some of
>> the generic peripherals under it. System control module nodes are moved
>> under this new interconnect also, and the SCM clock layout is changed
>> to use the renamed SCM nodea as the clock provider.
>>
>> Signed-off-by: Tero Kristo <[email-masked]>
>> ---
>>   Documentation/devicetree/bindings/arm/omap/l4.txt  |    1 +
>>   .../devicetree/bindings/arm/omap/prcm.txt          |    2 +-
>>   arch/arm/boot/dts/am4372.dtsi                      |   85 +++++++++++---------
>>   arch/arm/boot/dts/am43xx-clocks.dtsi               |    2 +-
>>   arch/arm/mach-omap2/control.c                      |    2 +-
>>   5 files changed, 53 insertions(+), 39 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/omap/l4.txt b/Documentation/devicetree/bindings/arm/omap/l4.txt
>> index d333f0a..941b914 100644
>> --- a/Documentation/devicetree/bindings/arm/omap/l4.txt
>> +++ b/Documentation/devicetree/bindings/arm/omap/l4.txt
>> @@ -7,6 +7,7 @@ Required properties:
>>   	       Should be "ti,omap2-l4-wkup" for OMAP2 family l4 wkup bus
>>   	       Should be "ti,omap3-l4-core" for OMAP3 family l4 core bus
>>   	       Should be "ti,am3-l4-wkup" for AM33xx family l4 wkup bus
>> +	       Should be "ti,am4-l4-wkup" for AM43xx family l4 wkup bus
>>   - ranges : contains the IO map range for the bus
>>
>>   Examples:
>> diff --git a/Documentation/devicetree/bindings/arm/omap/prcm.txt b/Documentation/devicetree/bindings/arm/omap/prcm.txt
>> index c8e2027..8af4f32 100644
>> --- a/Documentation/devicetree/bindings/arm/omap/prcm.txt
>> +++ b/Documentation/devicetree/bindings/arm/omap/prcm.txt
>> @@ -12,7 +12,7 @@ Required properties:
>>   		"ti,am3-prcm"
>>   		"ti,am3-scm"
>>   		"ti,am4-prcm"
>> -		"ti,am4-scrm"
>> +		"ti,am4-scm"
>>   		"ti,omap2-prcm"
>>   		"ti,omap2-scm"
>>   		"ti,omap3-prm"
>> diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
>> index 1943fc3..9ed58115 100644
>> --- a/arch/arm/boot/dts/am4372.dtsi
>> +++ b/arch/arm/boot/dts/am4372.dtsi
>> @@ -57,22 +57,6 @@
>>   		cache-level = <2>;
>>   	};
>>
>> -	am43xx_control_module: control_module at 4a002000 {
>> -		compatible = "syscon";
>> -		reg = <0x44e10000 0x7f4>;
>> -	};
>> -
>> -	am43xx_pinmux: pinmux at 44e10800 {
>> -		compatible = "ti,am437-padconf", "pinctrl-single";
>> -		reg = <0x44e10800 0x31c>;
>> -		#address-cells = <1>;
>> -		#size-cells = <0>;
>> -		#interrupt-cells = <1>;
>> -		interrupt-controller;
>> -		pinctrl-single,register-width = <32>;
>> -		pinctrl-single,function-mask = <0xffffffff>;
>> -	};
>> -
>>   	ocp {
>>   		compatible = "ti,am4372-l3-noc", "simple-bus";
>>   		#address-cells = <1>;
>> @@ -84,29 +68,58 @@
>>   		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
>>   			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
>>
>> -		prcm: prcm at 44df0000 {
>> -			compatible = "ti,am4-prcm";
>> -			reg = <0x44df0000 0x11000>;
>> -
>> -			prcm_clocks: clocks {
>> -				#address-cells = <1>;
>> -				#size-cells = <0>;
>> -			};
>> +		l4_wkup: l4_wkup at 44c00000 {
>> +			compatible = "ti,am4-l4-wkup", "simple-bus";
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +			ranges = <0 0x44c00000 0x287000>;
>>
>> -			prcm_clockdomains: clockdomains {
>> -			};
>> -		};
>> +			prcm: prcm at 1f0000 {
>> +				compatible = "ti,am4-prcm";
>> +				reg = <0x1f0000 0x11000>;
>>
>> -		scrm: scrm at 44e10000 {
>> -			compatible = "ti,am4-scrm";
>> -			reg = <0x44e10000 0x2000>;
>> +				prcm_clocks: clocks {
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +				};
>>
>> -			scrm_clocks: clocks {
>> -				#address-cells = <1>;
>> -				#size-cells = <0>;
>> +				prcm_clockdomains: clockdomains {
>> +				};
>>   			};
>>
>> -			scrm_clockdomains: clockdomains {
>> +			scm: scm at 210000 {
>> +				compatible = "ti,am4-scm", "simple-bus";
>> +				reg = <0x210000 0x1000>;
>
> Any reason for choosing a different size here compared to AM335x. Also,
> the scrm node above has 0x2000 as size. I found that I needed to
> increase the size to 0x2000 here to accomodate the wkup_m3_ipc node on
> top of your series. The node uses IPC registers which are part of the
> Control module, so on AM335x, I added it as a child node of scm, but
> here to do the same I have to correct the size. Also, there are some
> DISPPLL related registers at 0x3000 offset within the Control module,
> not sure where they would fit.

It looks like I shrank the size of the scm address-space based on 
current children on it. I'll increase this to 0x4000 to accommodate 
everything under the SCM. A separate syscon mapping needs to be created 
for the DISPPLL stuff if required.

-Tero

>
> regards
> Suman
>
>> +				#address-cells = <1>;
>> +				#size-cells = <1>;
>> +				ranges = <0 0x210000 0x1000>;
>> +
>> +				am43xx_pinmux: pinmux at 800 {
>> +					compatible = "ti,am437-padconf",
>> +						     "pinctrl-single";
>> +					reg = <0x800 0x31c>;
>> +					#address-cells = <1>;
>> +					#size-cells = <0>;
>> +					#interrupt-cells = <1>;
>> +					interrupt-controller;
>> +					pinctrl-single,register-width = <32>;
>> +					pinctrl-single,function-mask = <0xffffffff>;
>> +				};
>> +
>> +				scm_conf: scm_conf at 0 {
>> +					compatible = "syscon";
>> +					reg = <0x0 0x7fc>;
>> +					#address-cells = <1>;
>> +					#size-cells = <1>;
>> +
>> +					scm_clocks: clocks {
>> +						#address-cells = <1>;
>> +						#size-cells = <0>;
>> +					};
>> +				};
>> +
>> +				scm_clockdomains: clockdomains {
>> +				};
>>   			};
>>   		};
>>
>
> [snip]
>