diff mbox series

[3/3] arm64: dts: ti: k3-j7200-mcu-wakeup: Split fss node up

Message ID 20230424173623.477577-4-nm@ti.com (mailing list archive)
State New, archived
Headers show
Series arm64: dts: ti: k3-j7200: Fixes for various dtbs_checks warnings | expand

Commit Message

Nishanth Menon April 24, 2023, 5:36 p.m. UTC
fss node claims to be entirely a syscon node, but it is really two
parts of it - one a syscon that controls the hbmc mux and a simple bus
where ospi, hbmc peripherals are located. So model it accordingly by
splitting the node up and using ti,j721e-system-controller to describe
the syscon

Signed-off-by: Nishanth Menon <nm@ti.com>
---
 .../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi      | 21 +++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

Comments

Kumar, Udit April 24, 2023, 6:34 p.m. UTC | #1
Hi Nishanth,

On 4/24/2023 11:06 PM, Nishanth Menon wrote:
> fss node claims to be entirely a syscon node, but it is really two
> parts of it - one a syscon that controls the hbmc mux and a simple bus
> where ospi, hbmc peripherals are located. So model it accordingly by
> splitting the node up and using ti,j721e-system-controller to describe
> the syscon
>
> Signed-off-by: Nishanth Menon <nm@ti.com>
> ---
>   .../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi      | 21 +++++++++++++------
>   1 file changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> index b58a31371bf3..7653cb191be1 100644
> --- a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> @@ -338,18 +338,27 @@ mcu_spi2: spi@40320000 {
>   		status = "disabled";
>   	};
>   
> -	fss: syscon@47000000 {
> -		compatible = "syscon", "simple-mfd";
> +	hbmc_syscon: syscon@47000000 {
> +		compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
>   		reg = <0x00 0x47000000 0x00 0x100>;

Description is given upto 0x78 register in TRM (Section 12.3.1.6 FSS 
Registers)

Should we limit length to 0x78 ?

> -		#address-cells = <2>;
> -		#size-cells = <2>;
> -		ranges;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0x00 0x00 0x47000000 0x100>;
>   
> -		hbmc_mux: hbmc-mux {
> +		hbmc_mux: mux-controller@4 {
>   			compatible = "mmio-mux";
> +			reg = <0x4 0x2>;
>   			#mux-control-cells = <1>;
>   			mux-reg-masks = <0x4 0x2>; /* HBMC select */
>   		};
> +	};
> +
> +	fss: bus@47030000 {
> +		compatible = "simple-bus";
> +		reg = <0x0 0x47030000 0x0 0x100>;

Only registers upto address  0x47030008 has valid description in TRM

Section, 13.3.3.6.3 HyperBus Subsystem Registers

Please see, if we need to limit length to 8 instead of 256

> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
>   
>   		hbmc: hyperbus@47034000 {
>   			compatible = "ti,am654-hbmc";
Andrew Davis April 24, 2023, 6:55 p.m. UTC | #2
On 4/24/23 12:36 PM, Nishanth Menon wrote:
> fss node claims to be entirely a syscon node, but it is really two
> parts of it - one a syscon that controls the hbmc mux and a simple bus
> where ospi, hbmc peripherals are located. So model it accordingly by
> splitting the node up and using ti,j721e-system-controller to describe
> the syscon
> 
> Signed-off-by: Nishanth Menon <nm@ti.com>
> ---
>   .../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi      | 21 +++++++++++++------
>   1 file changed, 15 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> index b58a31371bf3..7653cb191be1 100644
> --- a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> @@ -338,18 +338,27 @@ mcu_spi2: spi@40320000 {
>   		status = "disabled";
>   	};
>   
> -	fss: syscon@47000000 {
> -		compatible = "syscon", "simple-mfd";
> +	hbmc_syscon: syscon@47000000 {
> +		compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
>   		reg = <0x00 0x47000000 0x00 0x100>;
> -		#address-cells = <2>;
> -		#size-cells = <2>;
> -		ranges;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0x00 0x00 0x47000000 0x100>;
>   
> -		hbmc_mux: hbmc-mux {
> +		hbmc_mux: mux-controller@4 {
>   			compatible = "mmio-mux";
> +			reg = <0x4 0x2>;
>   			#mux-control-cells = <1>;
>   			mux-reg-masks = <0x4 0x2>; /* HBMC select */
>   		};
> +	};
> +
> +	fss: bus@47030000 {
> +		compatible = "simple-bus";
> +		reg = <0x0 0x47030000 0x0 0x100>;
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
>   
>   		hbmc: hyperbus@47034000 {
>   			compatible = "ti,am654-hbmc";


I hope all the things you had to do here show you what I mean in my
comments on [0] :)

I've posted a first step patch that allows "reg-mux" node to work with
regular reg properties[1]. Which means this patch could have been just this:

--- a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
@@ -305,15 +305,16 @@ wkup_i2c0: i2c@42120000 {
                 status = "disabled";
         };
  
-       fss: syscon@47000000 {
-               compatible = "syscon", "simple-mfd";
+       fss: bus@47000000 {
+               compatible = "simple-bus";
                 reg = <0x00 0x47000000 0x00 0x100>;
                 #address-cells = <2>;
                 #size-cells = <2>;
                 ranges;
  
                 hbmc_mux: hbmc-mux {
-                       compatible = "mmio-mux";
+                       compatible = "reg-mux";
+                       reg = <0x00 0x47000004 0x00 0x2>;
                         #mux-control-cells = <1>;
                         mux-reg-masks = <0x4 0x2>; /* HBMC select */
                 };

Andrew

[0] https://lore.kernel.org/all/76da0b98-3274-b047-db11-ecabc117ae11@ti.com/
[1] https://lore.kernel.org/all/20230424184810.29453-1-afd@ti.com/
Nishanth Menon April 25, 2023, 12:27 p.m. UTC | #3
On 13:55-20230424, Andrew Davis wrote:
> On 4/24/23 12:36 PM, Nishanth Menon wrote:
> > fss node claims to be entirely a syscon node, but it is really two
> > parts of it - one a syscon that controls the hbmc mux and a simple bus
> > where ospi, hbmc peripherals are located. So model it accordingly by
> > splitting the node up and using ti,j721e-system-controller to describe
> > the syscon
> > 
> > Signed-off-by: Nishanth Menon <nm@ti.com>
> > ---
> >   .../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi      | 21 +++++++++++++------
> >   1 file changed, 15 insertions(+), 6 deletions(-)
> > 
> > diff --git a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> > index b58a31371bf3..7653cb191be1 100644
> > --- a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> > +++ b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> > @@ -338,18 +338,27 @@ mcu_spi2: spi@40320000 {
> >   		status = "disabled";
> >   	};
> > -	fss: syscon@47000000 {
> > -		compatible = "syscon", "simple-mfd";
> > +	hbmc_syscon: syscon@47000000 {
> > +		compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
> >   		reg = <0x00 0x47000000 0x00 0x100>;
> > -		#address-cells = <2>;
> > -		#size-cells = <2>;
> > -		ranges;
> > +		#address-cells = <1>;
> > +		#size-cells = <1>;
> > +		ranges = <0x00 0x00 0x47000000 0x100>;
> > -		hbmc_mux: hbmc-mux {
> > +		hbmc_mux: mux-controller@4 {
> >   			compatible = "mmio-mux";
> > +			reg = <0x4 0x2>;
> >   			#mux-control-cells = <1>;
> >   			mux-reg-masks = <0x4 0x2>; /* HBMC select */
> >   		};
> > +	};
> > +
> > +	fss: bus@47030000 {
> > +		compatible = "simple-bus";
> > +		reg = <0x0 0x47030000 0x0 0x100>;
> > +		#address-cells = <2>;
> > +		#size-cells = <2>;
> > +		ranges;
> >   		hbmc: hyperbus@47034000 {
> >   			compatible = "ti,am654-hbmc";
> 
> 
> I hope all the things you had to do here show you what I mean in my
> comments on [0] :)

yup.

> 
> I've posted a first step patch that allows "reg-mux" node to work with
> regular reg properties[1]. Which means this patch could have been just this:
> 
> --- a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
> @@ -305,15 +305,16 @@ wkup_i2c0: i2c@42120000 {
>                 status = "disabled";
>         };
> -       fss: syscon@47000000 {
> -               compatible = "syscon", "simple-mfd";
> +       fss: bus@47000000 {
> +               compatible = "simple-bus";
>                 reg = <0x00 0x47000000 0x00 0x100>;
>                 #address-cells = <2>;
>                 #size-cells = <2>;
>                 ranges;
>                 hbmc_mux: hbmc-mux {
> -                       compatible = "mmio-mux";
> +                       compatible = "reg-mux";
> +                       reg = <0x00 0x47000004 0x00 0x2>;
>                         #mux-control-cells = <1>;
>                         mux-reg-masks = <0x4 0x2>; /* HBMC select */
>                 };
> 
> Andrew
> 
> [0] https://lore.kernel.org/all/76da0b98-3274-b047-db11-ecabc117ae11@ti.com/
> [1] https://lore.kernel.org/all/20230424184810.29453-1-afd@ti.com/

yes, this is a better approach. Lets see the conclusion of the
discussion.
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
index b58a31371bf3..7653cb191be1 100644
--- a/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j7200-mcu-wakeup.dtsi
@@ -338,18 +338,27 @@  mcu_spi2: spi@40320000 {
 		status = "disabled";
 	};
 
-	fss: syscon@47000000 {
-		compatible = "syscon", "simple-mfd";
+	hbmc_syscon: syscon@47000000 {
+		compatible = "ti,j721e-system-controller", "syscon", "simple-mfd";
 		reg = <0x00 0x47000000 0x00 0x100>;
-		#address-cells = <2>;
-		#size-cells = <2>;
-		ranges;
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00 0x00 0x47000000 0x100>;
 
-		hbmc_mux: hbmc-mux {
+		hbmc_mux: mux-controller@4 {
 			compatible = "mmio-mux";
+			reg = <0x4 0x2>;
 			#mux-control-cells = <1>;
 			mux-reg-masks = <0x4 0x2>; /* HBMC select */
 		};
+	};
+
+	fss: bus@47030000 {
+		compatible = "simple-bus";
+		reg = <0x0 0x47030000 0x0 0x100>;
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
 
 		hbmc: hyperbus@47034000 {
 			compatible = "ti,am654-hbmc";