diff mbox series

arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for wkup_uart0

Message ID 20230912111215.18415-1-tony@atomide.com (mailing list archive)
State New, archived
Headers show
Series arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for wkup_uart0 | expand

Commit Message

Tony Lindgren Sept. 12, 2023, 11:12 a.m. UTC
The devices in the wkup domain are capable of waking up the system from
suspend. We can configure the wkup domain devices in a generic way using
the ti-sysc interconnect target module driver like we have done with the
earlier TI SoCs.

As ti-sysc manages the SYSCONFIG related registers independent of the
child hardware device, the wake-up configuration is also set even if
wkup_uart0 is reserved by sysfw.

The wkup_uart0 device has interconnect target module register mapping like
dra7 wkup uart. There is a 1 MB interconnect target range with one uart IP
block in the target module. The power domain and clock affects the whole
interconnect target module.

Note we change the functional clock name to follow the ti-sysc binding
and use "fck" instead of "fclk".

Cc: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi | 33 ++++++++++++++++++----
 1 file changed, 27 insertions(+), 6 deletions(-)

Comments

Dhruva Gole Sept. 12, 2023, 3:38 p.m. UTC | #1
On Sep 12, 2023 at 14:12:15 +0300, Tony Lindgren wrote:
> The devices in the wkup domain are capable of waking up the system from
> suspend. We can configure the wkup domain devices in a generic way using
> the ti-sysc interconnect target module driver like we have done with the
> earlier TI SoCs.
> 
> As ti-sysc manages the SYSCONFIG related registers independent of the
> child hardware device, the wake-up configuration is also set even if
> wkup_uart0 is reserved by sysfw.
> 
> The wkup_uart0 device has interconnect target module register mapping like
> dra7 wkup uart. There is a 1 MB interconnect target range with one uart IP
> block in the target module. The power domain and clock affects the whole
> interconnect target module.
> 
> Note we change the functional clock name to follow the ti-sysc binding
> and use "fck" instead of "fclk".
> 
> Cc: Dhruva Gole <d-gole@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---

Have tested wakeup using wake_uart as I have pointed out in a previous patch for
ti-sysc, please find required patches here:

https://github.com/DhruvaG2000/v-linux/commits/v6.5-rc7_wkuart

Hence,

Tested-by: Dhruva Gole <d-gole@ti.com>

>  arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi | 33 ++++++++++++++++++----
>  1 file changed, 27 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi
> --- a/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi
> @@ -5,6 +5,8 @@
>   * Copyright (C) 2020-2022 Texas Instruments Incorporated - https://www.ti.com/
>   */
>  
> +#include <dt-bindings/bus/ti-sysc.h>
> +
>  &cbass_wakeup {
>  	wkup_conf: syscon@43000000 {
>  		compatible = "syscon", "simple-mfd";
> @@ -19,14 +21,33 @@ chipid: chipid@14 {
>  		};
>  	};
>  
> -	wkup_uart0: serial@2b300000 {
> -		compatible = "ti,am64-uart", "ti,am654-uart";
> -		reg = <0x00 0x2b300000 0x00 0x100>;
> -		interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
> +	target-module@2b300000 {
> +		compatible = "ti,sysc-omap2", "ti,sysc";
> +		reg = <0 0x2b300050 0 0x4>,
> +		      <0 0x2b300054 0 0x4>,
> +		      <0 0x2b300058 0 0x4>;
> +		reg-names = "rev", "sysc", "syss";
> +		ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
> +				 SYSC_OMAP2_SOFTRESET |
> +				 SYSC_OMAP2_AUTOIDLE)>;
> +		ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +				<SYSC_IDLE_NO>,
> +				<SYSC_IDLE_SMART>,
> +				<SYSC_IDLE_SMART_WKUP>;
> +		ti,syss-mask = <1>;
>  		power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
>  		clocks = <&k3_clks 114 0>;
> -		clock-names = "fclk";
> -		status = "disabled";
> +		clock-names = "fck";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0 0x2b300000 0x100000>;
> +
> +		wkup_uart0: serial@2b300000 {
> +			compatible = "ti,am64-uart", "ti,am654-uart";
> +			reg = <0 0x100>;
> +			interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
> +			status = "disabled";

wondering if "reserved" makes more sense as it's currently being used by
SYSFW? I am okay with this disabled as well.

> +		};
>  	};
>  
>  	wkup_i2c0: i2c@2b200000 {
> -- 
> 2.42.0
Vignesh Raghavendra Dec. 27, 2023, 1:59 p.m. UTC | #2
On Tue, 12 Sep 2023 14:12:15 +0300, Tony Lindgren wrote:
> The devices in the wkup domain are capable of waking up the system from
> suspend. We can configure the wkup domain devices in a generic way using
> the ti-sysc interconnect target module driver like we have done with the
> earlier TI SoCs.
> 
> As ti-sysc manages the SYSCONFIG related registers independent of the
> child hardware device, the wake-up configuration is also set even if
> wkup_uart0 is reserved by sysfw.
> 
> [...]

Applied, thanks!

[1/1] arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for wkup_uart0
      commit: 86224524b52a8efba26f920736d08c8bfdd22d87

Best regards,
Vignesh Raghavendra Dec. 27, 2023, 3:22 p.m. UTC | #3
On 12/27/2023 7:29 PM, Vignesh Raghavendra wrote:
> 
> On Tue, 12 Sep 2023 14:12:15 +0300, Tony Lindgren wrote:
>> The devices in the wkup domain are capable of waking up the system from
>> suspend. We can configure the wkup domain devices in a generic way using
>> the ti-sysc interconnect target module driver like we have done with the
>> earlier TI SoCs.
>>
>> As ti-sysc manages the SYSCONFIG related registers independent of the
>> child hardware device, the wake-up configuration is also set even if
>> wkup_uart0 is reserved by sysfw.
>>
>> [...]
> 
> Applied, thanks!
> 
> [1/1] arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for wkup_uart0
>       commit: 86224524b52a8efba26f920736d08c8bfdd22d87
> 


Please ignore above. I meant to pick v4. Sorry for the noise!

Regards
Vignesh
Tony Lindgren Feb. 13, 2024, 8:56 a.m. UTC | #4
* Raghavendra, Vignesh <vigneshr@ti.com> [231227 15:22]:
> 
> 
> On 12/27/2023 7:29 PM, Vignesh Raghavendra wrote:
> > 
> > On Tue, 12 Sep 2023 14:12:15 +0300, Tony Lindgren wrote:
> >> The devices in the wkup domain are capable of waking up the system from
> >> suspend. We can configure the wkup domain devices in a generic way using
> >> the ti-sysc interconnect target module driver like we have done with the
> >> earlier TI SoCs.
> >>
> >> As ti-sysc manages the SYSCONFIG related registers independent of the
> >> child hardware device, the wake-up configuration is also set even if
> >> wkup_uart0 is reserved by sysfw.
> >>
> >> [...]
> > 
> > Applied, thanks!
> > 
> > [1/1] arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for wkup_uart0
> >       commit: 86224524b52a8efba26f920736d08c8bfdd22d87
> > 
> 
> 
> Please ignore above. I meant to pick v4. Sorry for the noise!

So we need to add ti,no-reset-on-init as noted by Markus. As I'm not
seeing this in Linux next, I'll send out v5 patch. If you need an
incremental fix I can do that too naturally.

Regards,

Tony
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi
--- a/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi
@@ -5,6 +5,8 @@ 
  * Copyright (C) 2020-2022 Texas Instruments Incorporated - https://www.ti.com/
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
+
 &cbass_wakeup {
 	wkup_conf: syscon@43000000 {
 		compatible = "syscon", "simple-mfd";
@@ -19,14 +21,33 @@  chipid: chipid@14 {
 		};
 	};
 
-	wkup_uart0: serial@2b300000 {
-		compatible = "ti,am64-uart", "ti,am654-uart";
-		reg = <0x00 0x2b300000 0x00 0x100>;
-		interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+	target-module@2b300000 {
+		compatible = "ti,sysc-omap2", "ti,sysc";
+		reg = <0 0x2b300050 0 0x4>,
+		      <0 0x2b300054 0 0x4>,
+		      <0 0x2b300058 0 0x4>;
+		reg-names = "rev", "sysc", "syss";
+		ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+				 SYSC_OMAP2_SOFTRESET |
+				 SYSC_OMAP2_AUTOIDLE)>;
+		ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+				<SYSC_IDLE_NO>,
+				<SYSC_IDLE_SMART>,
+				<SYSC_IDLE_SMART_WKUP>;
+		ti,syss-mask = <1>;
 		power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
 		clocks = <&k3_clks 114 0>;
-		clock-names = "fclk";
-		status = "disabled";
+		clock-names = "fck";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0 0 0x2b300000 0x100000>;
+
+		wkup_uart0: serial@2b300000 {
+			compatible = "ti,am64-uart", "ti,am654-uart";
+			reg = <0 0x100>;
+			interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+		};
 	};
 
 	wkup_i2c0: i2c@2b200000 {