diff mbox

[v3,1/3] arm64: dts: r8a7795: Add support for R-Car H3 ES2.0

Message ID 1494503934-23367-2-git-send-email-geert+renesas@glider.be (mailing list archive)
State Superseded
Delegated to: Simon Horman
Headers show

Commit Message

Geert Uytterhoeven May 11, 2017, 11:58 a.m. UTC
Update r8a7795.dtsi so it corresponds to R-Car H3 ES2.0 or later:
  - The following devices no longer exist on ES2.0, and are thus removed:
    fcpf2, fcpvd3, fcpvi2, fdp1-2, usb3-if1, vspd3, vspi2.
  - The DU <-> VSPD topology is different on ES2.0, hence remove the
    "compatible" and "vsps" properties from the DU node until the driver
    can handle this.

Move support for the ES1.x revision of the R-Car H3 SoC into a
separate file.  To avoid duplication, r8a7795-es1.dtsi includes
r8a7795.dtsi, add adds/removes/overrides device nodes and properties
where needed.

Switch r8a7795-salvator-x.dts and r8a7795-h3ulcb.dts from r8a7795.dtsi
to r8a7795-es1.dtsi to preserve compatibility.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
While currently r8a7795-es1.dtsi only adds device nodes, removal of
devices nodes and properties can be implemented using the /delete-node/
and /delete-property/ keywords, as shown below:

	&soc {
		/delete-node/ <name>@<addr>;
	};

	&<label> {
		/delete-property/ <prop>;
	};

v3:
  - Rebase on top of common Salvator-X board support extraction,
  - Remove the "compatible" property from the DU node in r8a7795.dtsi,
    in addition to the "vsps" property,

v2:
  - Use a separate file for ES1.x instead of for ES2.0, so r8a7795.dtsi
    always corresponds to the latest SoC revision,
  - Add a dash between SoC part number and revision, for compatibility
    with the BSP,
  - Enhance the hardware description from basic support to everything
    already supported on ES1.x (except for DU due VSP),
  - Let r8a7795-es1.dtsi include r8a7795.dtsi.
---
 arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi       | 84 ++++++++++++++++++++++
 arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts     |  4 +-
 arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts |  4 +-
 arch/arm64/boot/dts/renesas/r8a7795.dtsi           | 71 +-----------------
 4 files changed, 89 insertions(+), 74 deletions(-)
 create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi

Comments

Simon Horman May 11, 2017, 2:53 p.m. UTC | #1
On Thu, May 11, 2017 at 01:58:52PM +0200, Geert Uytterhoeven wrote:
> Update r8a7795.dtsi so it corresponds to R-Car H3 ES2.0 or later:
>   - The following devices no longer exist on ES2.0, and are thus removed:
>     fcpf2, fcpvd3, fcpvi2, fdp1-2, usb3-if1, vspd3, vspi2.
>   - The DU <-> VSPD topology is different on ES2.0, hence remove the
>     "compatible" and "vsps" properties from the DU node until the driver
>     can handle this.
> 
> Move support for the ES1.x revision of the R-Car H3 SoC into a
> separate file.  To avoid duplication, r8a7795-es1.dtsi includes
> r8a7795.dtsi, add adds/removes/overrides device nodes and properties
> where needed.

I think the above should be re-worded given your explanation below the
scissors that no deletion or overriding occurs.

> 
> Switch r8a7795-salvator-x.dts and r8a7795-h3ulcb.dts from r8a7795.dtsi
> to r8a7795-es1.dtsi to preserve compatibility.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> While currently r8a7795-es1.dtsi only adds device nodes, removal of
> devices nodes and properties can be implemented using the /delete-node/
> and /delete-property/ keywords, as shown below:
> 
> 	&soc {
> 		/delete-node/ <name>@<addr>;
> 	};
> 
> 	&<label> {
> 		/delete-property/ <prop>;
> 	};

I would be interested to also see an example of an override and
for the examples to be included in the changelog itself.

> 
> v3:
>   - Rebase on top of common Salvator-X board support extraction,
>   - Remove the "compatible" property from the DU node in r8a7795.dtsi,
>     in addition to the "vsps" property,
> 
> v2:
>   - Use a separate file for ES1.x instead of for ES2.0, so r8a7795.dtsi
>     always corresponds to the latest SoC revision,
>   - Add a dash between SoC part number and revision, for compatibility
>     with the BSP,
>   - Enhance the hardware description from basic support to everything
>     already supported on ES1.x (except for DU due VSP),
>   - Let r8a7795-es1.dtsi include r8a7795.dtsi.
> ---
>  arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi       | 84 ++++++++++++++++++++++
>  arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts     |  4 +-
>  arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts |  4 +-
>  arch/arm64/boot/dts/renesas/r8a7795.dtsi           | 71 +-----------------
>  4 files changed, 89 insertions(+), 74 deletions(-)
>  create mode 100644 arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi
> 
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi b/arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi
> new file mode 100644
> index 0000000000000000..a0ba7bd21ea3aa18
> --- /dev/null
> +++ b/arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi
> @@ -0,0 +1,84 @@
> +/*
> + * Device Tree Source for the r8a7795 ES1.x SoC
> + *
> + * Copyright (C) 2015 Renesas Electronics Corp.
> + *
> + * This file is licensed under the terms of the GNU General Public License
> + * version 2.  This program is licensed "as is" without any warranty of any
> + * kind, whether express or implied.
> + */
> +
> +#include "r8a7795.dtsi"
> +
> +&soc {
> +	xhci1: usb@ee0400000 {
> +		compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
> +		reg = <0 0xee040000 0 0xc00>;
> +		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +		clocks = <&cpg CPG_MOD 327>;
> +		power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> +		resets = <&cpg 327>;
> +		status = "disabled";
> +	};
> +
> +	fcpf2: fcp@fe952000 {
> +		compatible = "renesas,fcpf";
> +		reg = <0 0xfe952000 0 0x200>;
> +		clocks = <&cpg CPG_MOD 613>;
> +		power-domains = <&sysc R8A7795_PD_A3VP>;
> +		resets = <&cpg 613>;
> +	};
> +
> +	vspi2: vsp@fe9c0000 {
> +		compatible = "renesas,vsp2";
> +		reg = <0 0xfe9c0000 0 0x8000>;
> +		interrupts = <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>;
> +		clocks = <&cpg CPG_MOD 629>;
> +		power-domains = <&sysc R8A7795_PD_A3VP>;
> +		resets = <&cpg 629>;
> +
> +		renesas,fcp = <&fcpvi2>;
> +	};
> +
> +	fcpvi2: fcp@fe9cf000 {
> +		compatible = "renesas,fcpv";
> +		reg = <0 0xfe9cf000 0 0x200>;
> +		clocks = <&cpg CPG_MOD 609>;
> +		power-domains = <&sysc R8A7795_PD_A3VP>;
> +		resets = <&cpg 609>;
> +	};
> +
> +	vspd3: vsp@fea38000 {
> +		compatible = "renesas,vsp2";
> +		reg = <0 0xfea38000 0 0x4000>;
> +		interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
> +		clocks = <&cpg CPG_MOD 620>;
> +		power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> +		resets = <&cpg 620>;
> +
> +		renesas,fcp = <&fcpvd3>;
> +	};
> +
> +	fcpvd3: fcp@fea3f000 {
> +		compatible = "renesas,fcpv";
> +		reg = <0 0xfea3f000 0 0x200>;
> +		clocks = <&cpg CPG_MOD 600>;
> +		power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> +		resets = <&cpg 600>;
> +	};
> +
> +	fdp1@fe948000 {
> +		compatible = "renesas,fdp1";
> +		reg = <0 0xfe948000 0 0x2400>;
> +		interrupts = <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>;
> +		clocks = <&cpg CPG_MOD 117>;
> +		power-domains = <&sysc R8A7795_PD_A3VP>;
> +		resets = <&cpg 117>;
> +		renesas,fcp = <&fcpf2>;
> +	};
> +};
> +
> +&du {
> +	compatible = "renesas,du-r8a7795";
> +	vsps = <&vspd0 &vspd1 &vspd2 &vspd3>;
> +};
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts
> index a1fbf0ab8ad8e425..95fe207cb6a3fd2f 100644
> --- a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts
> +++ b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts
> @@ -12,11 +12,11 @@
>  #define CPG_AUDIO_CLK_I		R8A7795_CLK_S0D4
>  
>  /dts-v1/;
> -#include "r8a7795.dtsi"
> +#include "r8a7795-es1.dtsi"
>  #include "ulcb.dtsi"
>  
>  / {
> -	model = "Renesas H3ULCB board based on r8a7795";
> +	model = "Renesas H3ULCB board based on r8a7795 ES1.x";
>  	compatible = "renesas,h3ulcb", "renesas,r8a7795";
>  
>  	memory@48000000 {
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts b/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts
> index 52fce67df3413f1f..be5b2e966ea1700e 100644
> --- a/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts
> +++ b/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts
> @@ -11,11 +11,11 @@
>  #define CPG_AUDIO_CLK_I		R8A7795_CLK_S0D4
>  
>  /dts-v1/;
> -#include "r8a7795.dtsi"
> +#include "r8a7795-es1.dtsi"
>  #include "salvator-x.dtsi"
>  
>  / {
> -	model = "Renesas Salvator-X board based on r8a7795";
> +	model = "Renesas Salvator-X board based on r8a7795 ES1.x";
>  	compatible = "renesas,salvator-x", "renesas,r8a7795";
>  
>  	memory@48000000 {
> diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> index 7d87dff70ac84c40..e2c447cc12fe7f3a 100644
> --- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> +++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
> @@ -182,7 +182,7 @@
>  		clock-frequency = <0>;
>  	};
>  
> -	soc {
> +	soc: soc {
>  		compatible = "simple-bus";
>  		interrupt-parent = <&gic>;
>  
> @@ -1274,16 +1274,6 @@
>  			status = "disabled";
>  		};
>  
> -		xhci1: usb@ee0400000 {
> -			compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
> -			reg = <0 0xee040000 0 0xc00>;
> -			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&cpg CPG_MOD 327>;
> -			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> -			resets = <&cpg 327>;
> -			status = "disabled";
> -		};
> -
>  		usb_dmac0: dma-controller@e65a0000 {
>  			compatible = "renesas,r8a7795-usb-dmac",
>  				     "renesas,usb-dmac";
> @@ -1568,14 +1558,6 @@
>  			resets = <&cpg 614>;
>  		};
>  
> -		fcpf2: fcp@fe952000 {
> -			compatible = "renesas,fcpf";
> -			reg = <0 0xfe952000 0 0x200>;
> -			clocks = <&cpg CPG_MOD 613>;
> -			power-domains = <&sysc R8A7795_PD_A3VP>;
> -			resets = <&cpg 613>;
> -		};
> -
>  		vspbd: vsp@fe960000 {
>  			compatible = "renesas,vsp2";
>  			reg = <0 0xfe960000 0 0x8000>;
> @@ -1633,25 +1615,6 @@
>  			resets = <&cpg 610>;
>  		};
>  
> -		vspi2: vsp@fe9c0000 {
> -			compatible = "renesas,vsp2";
> -			reg = <0 0xfe9c0000 0 0x8000>;
> -			interrupts = <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&cpg CPG_MOD 629>;
> -			power-domains = <&sysc R8A7795_PD_A3VP>;
> -			resets = <&cpg 629>;
> -
> -			renesas,fcp = <&fcpvi2>;
> -		};
> -
> -		fcpvi2: fcp@fe9cf000 {
> -			compatible = "renesas,fcpv";
> -			reg = <0 0xfe9cf000 0 0x200>;
> -			clocks = <&cpg CPG_MOD 609>;
> -			power-domains = <&sysc R8A7795_PD_A3VP>;
> -			resets = <&cpg 609>;
> -		};
> -
>  		vspd0: vsp@fea20000 {
>  			compatible = "renesas,vsp2";
>  			reg = <0 0xfea20000 0 0x4000>;
> @@ -1709,25 +1672,6 @@
>  			resets = <&cpg 601>;
>  		};
>  
> -		vspd3: vsp@fea38000 {
> -			compatible = "renesas,vsp2";
> -			reg = <0 0xfea38000 0 0x4000>;
> -			interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&cpg CPG_MOD 620>;
> -			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> -			resets = <&cpg 620>;
> -
> -			renesas,fcp = <&fcpvd3>;
> -		};
> -
> -		fcpvd3: fcp@fea3f000 {
> -			compatible = "renesas,fcpv";
> -			reg = <0 0xfea3f000 0 0x200>;
> -			clocks = <&cpg CPG_MOD 600>;
> -			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
> -			resets = <&cpg 600>;
> -		};
> -
>  		fdp1@fe940000 {
>  			compatible = "renesas,fdp1";
>  			reg = <0 0xfe940000 0 0x2400>;
> @@ -1748,18 +1692,7 @@
>  			renesas,fcp = <&fcpf1>;
>  		};
>  
> -		fdp1@fe948000 {
> -			compatible = "renesas,fdp1";
> -			reg = <0 0xfe948000 0 0x2400>;
> -			interrupts = <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&cpg CPG_MOD 117>;
> -			power-domains = <&sysc R8A7795_PD_A3VP>;
> -			resets = <&cpg 117>;
> -			renesas,fcp = <&fcpf2>;
> -		};
> -
>  		du: display@feb00000 {
> -			compatible = "renesas,du-r8a7795";
>  			reg = <0 0xfeb00000 0 0x80000>,
>  			      <0 0xfeb90000 0 0x14>;
>  			reg-names = "du", "lvds.0";
> @@ -1775,8 +1708,6 @@
>  			clock-names = "du.0", "du.1", "du.2", "du.3", "lvds.0";
>  			status = "disabled";
>  
> -			vsps = <&vspd0 &vspd1 &vspd2 &vspd3>;
> -
>  			ports {
>  				#address-cells = <1>;
>  				#size-cells = <0>;
> -- 
> 2.7.4
>
Geert Uytterhoeven May 11, 2017, 3:42 p.m. UTC | #2
Hi Simon,

On Thu, May 11, 2017 at 4:53 PM, Simon Horman <horms@verge.net.au> wrote:
> On Thu, May 11, 2017 at 01:58:52PM +0200, Geert Uytterhoeven wrote:
>> Update r8a7795.dtsi so it corresponds to R-Car H3 ES2.0 or later:
>>   - The following devices no longer exist on ES2.0, and are thus removed:
>>     fcpf2, fcpvd3, fcpvi2, fdp1-2, usb3-if1, vspd3, vspi2.
>>   - The DU <-> VSPD topology is different on ES2.0, hence remove the
>>     "compatible" and "vsps" properties from the DU node until the driver
>>     can handle this.
>>
>> Move support for the ES1.x revision of the R-Car H3 SoC into a
>> separate file.  To avoid duplication, r8a7795-es1.dtsi includes
>> r8a7795.dtsi, add adds/removes/overrides device nodes and properties
>> where needed.
>
> I think the above should be re-worded given your explanation below the
> scissors that no deletion or overriding occurs.

I wanted to document clearly what needs to be done in the generic case...
I agree no removal or override is done right now.

If you prefer it that way, I can reword it.

>> Switch r8a7795-salvator-x.dts and r8a7795-h3ulcb.dts from r8a7795.dtsi
>> to r8a7795-es1.dtsi to preserve compatibility.
>>
>> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
>> ---
>> While currently r8a7795-es1.dtsi only adds device nodes, removal of
>> devices nodes and properties can be implemented using the /delete-node/
>> and /delete-property/ keywords, as shown below:
>>
>>       &soc {
>>               /delete-node/ <name>@<addr>;
>>       };
>>
>>       &<label> {
>>               /delete-property/ <prop>;
>>       };
>
> I would be interested to also see an example of an override and
> for the examples to be included in the changelog itself.

You mean above the scissors? ;-)

Currently we don't have any devices or properties in DT that need removals
or overrides. Note that I did test those.

If we add the "vsps" property to the DU node for ES2.0, we can have an
override for it now.  But we've plenty of experience with letting .dts
override properties in .dtsi.

For node deletion, we'll have to wait until someone enables the extra USB
channels on ES2.0.

For property deletion, I don't have an actual example in mind, but I wanted
to be sure that worked in case we ever need it.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Simon Horman May 12, 2017, 7:32 a.m. UTC | #3
On Thu, May 11, 2017 at 05:42:27PM +0200, Geert Uytterhoeven wrote:
> Hi Simon,
> 
> On Thu, May 11, 2017 at 4:53 PM, Simon Horman <horms@verge.net.au> wrote:
> > On Thu, May 11, 2017 at 01:58:52PM +0200, Geert Uytterhoeven wrote:
> >> Update r8a7795.dtsi so it corresponds to R-Car H3 ES2.0 or later:
> >>   - The following devices no longer exist on ES2.0, and are thus removed:
> >>     fcpf2, fcpvd3, fcpvi2, fdp1-2, usb3-if1, vspd3, vspi2.
> >>   - The DU <-> VSPD topology is different on ES2.0, hence remove the
> >>     "compatible" and "vsps" properties from the DU node until the driver
> >>     can handle this.
> >>
> >> Move support for the ES1.x revision of the R-Car H3 SoC into a
> >> separate file.  To avoid duplication, r8a7795-es1.dtsi includes
> >> r8a7795.dtsi, add adds/removes/overrides device nodes and properties
> >> where needed.
> >
> > I think the above should be re-worded given your explanation below the
> > scissors that no deletion or overriding occurs.
> 
> I wanted to document clearly what needs to be done in the generic case...
> I agree no removal or override is done right now.
> 
> If you prefer it that way, I can reword it.

I think I would prefer that.

> >> Switch r8a7795-salvator-x.dts and r8a7795-h3ulcb.dts from r8a7795.dtsi
> >> to r8a7795-es1.dtsi to preserve compatibility.
> >>
> >> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> >> ---
> >> While currently r8a7795-es1.dtsi only adds device nodes, removal of
> >> devices nodes and properties can be implemented using the /delete-node/
> >> and /delete-property/ keywords, as shown below:
> >>
> >>       &soc {
> >>               /delete-node/ <name>@<addr>;
> >>       };
> >>
> >>       &<label> {
> >>               /delete-property/ <prop>;
> >>       };
> >
> > I would be interested to also see an example of an override and
> > for the examples to be included in the changelog itself.
> 
> You mean above the scissors? ;-)

Yes, that is what I meant.

> Currently we don't have any devices or properties in DT that need removals
> or overrides. Note that I did test those.
> 
> If we add the "vsps" property to the DU node for ES2.0, we can have an
> override for it now.  But we've plenty of experience with letting .dts
> override properties in .dtsi.

Ok, point taken.

> For node deletion, we'll have to wait until someone enables the extra USB
> channels on ES2.0.
> 
> For property deletion, I don't have an actual example in mind, but I wanted
> to be sure that worked in case we ever need it.

I appreciate you taking the time to test deletion.
I think its worth documenting above the scissors.
Geert Uytterhoeven May 12, 2017, 9:49 a.m. UTC | #4
Hi Simon,

On Fri, May 12, 2017 at 9:32 AM, Simon Horman <horms@verge.net.au> wrote:
> On Thu, May 11, 2017 at 05:42:27PM +0200, Geert Uytterhoeven wrote:
>> On Thu, May 11, 2017 at 4:53 PM, Simon Horman <horms@verge.net.au> wrote:
>> > On Thu, May 11, 2017 at 01:58:52PM +0200, Geert Uytterhoeven wrote:
>> >> Update r8a7795.dtsi so it corresponds to R-Car H3 ES2.0 or later:
>> >>   - The following devices no longer exist on ES2.0, and are thus removed:
>> >>     fcpf2, fcpvd3, fcpvi2, fdp1-2, usb3-if1, vspd3, vspi2.
>> >>   - The DU <-> VSPD topology is different on ES2.0, hence remove the
>> >>     "compatible" and "vsps" properties from the DU node until the driver
>> >>     can handle this.
>> >>
>> >> Move support for the ES1.x revision of the R-Car H3 SoC into a
>> >> separate file.  To avoid duplication, r8a7795-es1.dtsi includes
>> >> r8a7795.dtsi, add adds/removes/overrides device nodes and properties
>> >> where needed.
>> >
>> > I think the above should be re-worded given your explanation below the
>> > scissors that no deletion or overriding occurs.
>>
>> I wanted to document clearly what needs to be done in the generic case...
>> I agree no removal or override is done right now.
>>
>> If you prefer it that way, I can reword it.
>
> I think I would prefer that.
>
>> >> Switch r8a7795-salvator-x.dts and r8a7795-h3ulcb.dts from r8a7795.dtsi
>> >> to r8a7795-es1.dtsi to preserve compatibility.
>> >>
>> >> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
>> >> ---
>> >> While currently r8a7795-es1.dtsi only adds device nodes, removal of
>> >> devices nodes and properties can be implemented using the /delete-node/
>> >> and /delete-property/ keywords, as shown below:
>> >>
>> >>       &soc {
>> >>               /delete-node/ <name>@<addr>;
>> >>       };
>> >>
>> >>       &<label> {
>> >>               /delete-property/ <prop>;
>> >>       };
>> >
>> > I would be interested to also see an example of an override and
>> > for the examples to be included in the changelog itself.
>>
>> You mean above the scissors? ;-)
>
> Yes, that is what I meant.
>
>> Currently we don't have any devices or properties in DT that need removals
>> or overrides. Note that I did test those.
>>
>> If we add the "vsps" property to the DU node for ES2.0, we can have an
>> override for it now.  But we've plenty of experience with letting .dts
>> override properties in .dtsi.
>
> Ok, point taken.
>
>> For node deletion, we'll have to wait until someone enables the extra USB
>> channels on ES2.0.
>>
>> For property deletion, I don't have an actual example in mind, but I wanted
>> to be sure that worked in case we ever need it.
>
> I appreciate you taking the time to test deletion.
> I think its worth documenting above the scissors.

Will update in v4. I''l have to rebase anyway.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Simon Horman May 15, 2017, 5:37 a.m. UTC | #5
On Fri, May 12, 2017 at 11:49:24AM +0200, Geert Uytterhoeven wrote:
> Hi Simon,
> 
> On Fri, May 12, 2017 at 9:32 AM, Simon Horman <horms@verge.net.au> wrote:
> > On Thu, May 11, 2017 at 05:42:27PM +0200, Geert Uytterhoeven wrote:
> >> On Thu, May 11, 2017 at 4:53 PM, Simon Horman <horms@verge.net.au> wrote:
> >> > On Thu, May 11, 2017 at 01:58:52PM +0200, Geert Uytterhoeven wrote:
> >> >> Update r8a7795.dtsi so it corresponds to R-Car H3 ES2.0 or later:
> >> >>   - The following devices no longer exist on ES2.0, and are thus removed:
> >> >>     fcpf2, fcpvd3, fcpvi2, fdp1-2, usb3-if1, vspd3, vspi2.
> >> >>   - The DU <-> VSPD topology is different on ES2.0, hence remove the
> >> >>     "compatible" and "vsps" properties from the DU node until the driver
> >> >>     can handle this.
> >> >>
> >> >> Move support for the ES1.x revision of the R-Car H3 SoC into a
> >> >> separate file.  To avoid duplication, r8a7795-es1.dtsi includes
> >> >> r8a7795.dtsi, add adds/removes/overrides device nodes and properties
> >> >> where needed.
> >> >
> >> > I think the above should be re-worded given your explanation below the
> >> > scissors that no deletion or overriding occurs.
> >>
> >> I wanted to document clearly what needs to be done in the generic case...
> >> I agree no removal or override is done right now.
> >>
> >> If you prefer it that way, I can reword it.
> >
> > I think I would prefer that.
> >
> >> >> Switch r8a7795-salvator-x.dts and r8a7795-h3ulcb.dts from r8a7795.dtsi
> >> >> to r8a7795-es1.dtsi to preserve compatibility.
> >> >>
> >> >> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> >> >> ---
> >> >> While currently r8a7795-es1.dtsi only adds device nodes, removal of
> >> >> devices nodes and properties can be implemented using the /delete-node/
> >> >> and /delete-property/ keywords, as shown below:
> >> >>
> >> >>       &soc {
> >> >>               /delete-node/ <name>@<addr>;
> >> >>       };
> >> >>
> >> >>       &<label> {
> >> >>               /delete-property/ <prop>;
> >> >>       };
> >> >
> >> > I would be interested to also see an example of an override and
> >> > for the examples to be included in the changelog itself.
> >>
> >> You mean above the scissors? ;-)
> >
> > Yes, that is what I meant.
> >
> >> Currently we don't have any devices or properties in DT that need removals
> >> or overrides. Note that I did test those.
> >>
> >> If we add the "vsps" property to the DU node for ES2.0, we can have an
> >> override for it now.  But we've plenty of experience with letting .dts
> >> override properties in .dtsi.
> >
> > Ok, point taken.
> >
> >> For node deletion, we'll have to wait until someone enables the extra USB
> >> channels on ES2.0.
> >>
> >> For property deletion, I don't have an actual example in mind, but I wanted
> >> to be sure that worked in case we ever need it.
> >
> > I appreciate you taking the time to test deletion.
> > I think its worth documenting above the scissors.
> 
> Will update in v4. I''l have to rebase anyway.

Great, thanks!
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi b/arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi
new file mode 100644
index 0000000000000000..a0ba7bd21ea3aa18
--- /dev/null
+++ b/arch/arm64/boot/dts/renesas/r8a7795-es1.dtsi
@@ -0,0 +1,84 @@ 
+/*
+ * Device Tree Source for the r8a7795 ES1.x SoC
+ *
+ * Copyright (C) 2015 Renesas Electronics Corp.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include "r8a7795.dtsi"
+
+&soc {
+	xhci1: usb@ee0400000 {
+		compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
+		reg = <0 0xee040000 0 0xc00>;
+		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cpg CPG_MOD 327>;
+		power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+		resets = <&cpg 327>;
+		status = "disabled";
+	};
+
+	fcpf2: fcp@fe952000 {
+		compatible = "renesas,fcpf";
+		reg = <0 0xfe952000 0 0x200>;
+		clocks = <&cpg CPG_MOD 613>;
+		power-domains = <&sysc R8A7795_PD_A3VP>;
+		resets = <&cpg 613>;
+	};
+
+	vspi2: vsp@fe9c0000 {
+		compatible = "renesas,vsp2";
+		reg = <0 0xfe9c0000 0 0x8000>;
+		interrupts = <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cpg CPG_MOD 629>;
+		power-domains = <&sysc R8A7795_PD_A3VP>;
+		resets = <&cpg 629>;
+
+		renesas,fcp = <&fcpvi2>;
+	};
+
+	fcpvi2: fcp@fe9cf000 {
+		compatible = "renesas,fcpv";
+		reg = <0 0xfe9cf000 0 0x200>;
+		clocks = <&cpg CPG_MOD 609>;
+		power-domains = <&sysc R8A7795_PD_A3VP>;
+		resets = <&cpg 609>;
+	};
+
+	vspd3: vsp@fea38000 {
+		compatible = "renesas,vsp2";
+		reg = <0 0xfea38000 0 0x4000>;
+		interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cpg CPG_MOD 620>;
+		power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+		resets = <&cpg 620>;
+
+		renesas,fcp = <&fcpvd3>;
+	};
+
+	fcpvd3: fcp@fea3f000 {
+		compatible = "renesas,fcpv";
+		reg = <0 0xfea3f000 0 0x200>;
+		clocks = <&cpg CPG_MOD 600>;
+		power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
+		resets = <&cpg 600>;
+	};
+
+	fdp1@fe948000 {
+		compatible = "renesas,fdp1";
+		reg = <0 0xfe948000 0 0x2400>;
+		interrupts = <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cpg CPG_MOD 117>;
+		power-domains = <&sysc R8A7795_PD_A3VP>;
+		resets = <&cpg 117>;
+		renesas,fcp = <&fcpf2>;
+	};
+};
+
+&du {
+	compatible = "renesas,du-r8a7795";
+	vsps = <&vspd0 &vspd1 &vspd2 &vspd3>;
+};
diff --git a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts
index a1fbf0ab8ad8e425..95fe207cb6a3fd2f 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts
+++ b/arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dts
@@ -12,11 +12,11 @@ 
 #define CPG_AUDIO_CLK_I		R8A7795_CLK_S0D4
 
 /dts-v1/;
-#include "r8a7795.dtsi"
+#include "r8a7795-es1.dtsi"
 #include "ulcb.dtsi"
 
 / {
-	model = "Renesas H3ULCB board based on r8a7795";
+	model = "Renesas H3ULCB board based on r8a7795 ES1.x";
 	compatible = "renesas,h3ulcb", "renesas,r8a7795";
 
 	memory@48000000 {
diff --git a/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts b/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts
index 52fce67df3413f1f..be5b2e966ea1700e 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts
+++ b/arch/arm64/boot/dts/renesas/r8a7795-salvator-x.dts
@@ -11,11 +11,11 @@ 
 #define CPG_AUDIO_CLK_I		R8A7795_CLK_S0D4
 
 /dts-v1/;
-#include "r8a7795.dtsi"
+#include "r8a7795-es1.dtsi"
 #include "salvator-x.dtsi"
 
 / {
-	model = "Renesas Salvator-X board based on r8a7795";
+	model = "Renesas Salvator-X board based on r8a7795 ES1.x";
 	compatible = "renesas,salvator-x", "renesas,r8a7795";
 
 	memory@48000000 {
diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
index 7d87dff70ac84c40..e2c447cc12fe7f3a 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
@@ -182,7 +182,7 @@ 
 		clock-frequency = <0>;
 	};
 
-	soc {
+	soc: soc {
 		compatible = "simple-bus";
 		interrupt-parent = <&gic>;
 
@@ -1274,16 +1274,6 @@ 
 			status = "disabled";
 		};
 
-		xhci1: usb@ee0400000 {
-			compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
-			reg = <0 0xee040000 0 0xc00>;
-			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&cpg CPG_MOD 327>;
-			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
-			resets = <&cpg 327>;
-			status = "disabled";
-		};
-
 		usb_dmac0: dma-controller@e65a0000 {
 			compatible = "renesas,r8a7795-usb-dmac",
 				     "renesas,usb-dmac";
@@ -1568,14 +1558,6 @@ 
 			resets = <&cpg 614>;
 		};
 
-		fcpf2: fcp@fe952000 {
-			compatible = "renesas,fcpf";
-			reg = <0 0xfe952000 0 0x200>;
-			clocks = <&cpg CPG_MOD 613>;
-			power-domains = <&sysc R8A7795_PD_A3VP>;
-			resets = <&cpg 613>;
-		};
-
 		vspbd: vsp@fe960000 {
 			compatible = "renesas,vsp2";
 			reg = <0 0xfe960000 0 0x8000>;
@@ -1633,25 +1615,6 @@ 
 			resets = <&cpg 610>;
 		};
 
-		vspi2: vsp@fe9c0000 {
-			compatible = "renesas,vsp2";
-			reg = <0 0xfe9c0000 0 0x8000>;
-			interrupts = <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&cpg CPG_MOD 629>;
-			power-domains = <&sysc R8A7795_PD_A3VP>;
-			resets = <&cpg 629>;
-
-			renesas,fcp = <&fcpvi2>;
-		};
-
-		fcpvi2: fcp@fe9cf000 {
-			compatible = "renesas,fcpv";
-			reg = <0 0xfe9cf000 0 0x200>;
-			clocks = <&cpg CPG_MOD 609>;
-			power-domains = <&sysc R8A7795_PD_A3VP>;
-			resets = <&cpg 609>;
-		};
-
 		vspd0: vsp@fea20000 {
 			compatible = "renesas,vsp2";
 			reg = <0 0xfea20000 0 0x4000>;
@@ -1709,25 +1672,6 @@ 
 			resets = <&cpg 601>;
 		};
 
-		vspd3: vsp@fea38000 {
-			compatible = "renesas,vsp2";
-			reg = <0 0xfea38000 0 0x4000>;
-			interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&cpg CPG_MOD 620>;
-			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
-			resets = <&cpg 620>;
-
-			renesas,fcp = <&fcpvd3>;
-		};
-
-		fcpvd3: fcp@fea3f000 {
-			compatible = "renesas,fcpv";
-			reg = <0 0xfea3f000 0 0x200>;
-			clocks = <&cpg CPG_MOD 600>;
-			power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
-			resets = <&cpg 600>;
-		};
-
 		fdp1@fe940000 {
 			compatible = "renesas,fdp1";
 			reg = <0 0xfe940000 0 0x2400>;
@@ -1748,18 +1692,7 @@ 
 			renesas,fcp = <&fcpf1>;
 		};
 
-		fdp1@fe948000 {
-			compatible = "renesas,fdp1";
-			reg = <0 0xfe948000 0 0x2400>;
-			interrupts = <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&cpg CPG_MOD 117>;
-			power-domains = <&sysc R8A7795_PD_A3VP>;
-			resets = <&cpg 117>;
-			renesas,fcp = <&fcpf2>;
-		};
-
 		du: display@feb00000 {
-			compatible = "renesas,du-r8a7795";
 			reg = <0 0xfeb00000 0 0x80000>,
 			      <0 0xfeb90000 0 0x14>;
 			reg-names = "du", "lvds.0";
@@ -1775,8 +1708,6 @@ 
 			clock-names = "du.0", "du.1", "du.2", "du.3", "lvds.0";
 			status = "disabled";
 
-			vsps = <&vspd0 &vspd1 &vspd2 &vspd3>;
-
 			ports {
 				#address-cells = <1>;
 				#size-cells = <0>;