Message ID | 20231219072503.12427-1-tony@atomide.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4,1/1] arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for wkup_uart0 | expand |
Hi Tony, On Tue, Dec 19, 2023 at 09:25:01AM +0200, 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". > > Tested-by: Dhruva Gole <d-gole@ti.com> > Reviewed-by: Kevin Hilman <khilman@baylibre.com> > Signed-off-by: Tony Lindgren <tony@atomide.com> I tested this patch on am62-lp-sk and required this additional property: ti,no-reset-on-init; I am not sure at the moment why a reset doesn't work. But with the given property (so without reset) the wakeup on wkup_uart0 works as expected. So if you include the above property: Tested-by: Markus Schneider-Pargmann <msp@baylibre.com> Best, Markus > --- > > Changes since v3: > > - Use the first reg for the target module node name to avoid a > make W=1 dtbs warning as noted by Nishanth > > Changes since v2: > > - Fix node name for 8250 IP, it's at offset 0 from the target module > > - Added Kevin's Reviewed-by from v2 as the node name change is mostly > cosmetic > > Changes since v1: > > - Added Tested-by from Dhruva > > --- > 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 { > bootph-all; > @@ -21,14 +23,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@2b300050 { > + 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@0 { > + compatible = "ti,am64-uart", "ti,am654-uart"; > + reg = <0 0x100>; > + interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>; > + status = "disabled"; > + }; > }; > > wkup_i2c0: i2c@2b200000 { > -- > 2.43.0 > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
* Markus Schneider-Pargmann <msp@baylibre.com> [240124 13:55]: > I tested this patch on am62-lp-sk and required this additional property: > > ti,no-reset-on-init; > > I am not sure at the moment why a reset doesn't work. But with the given > property (so without reset) the wakeup on wkup_uart0 works as expected. OK. This might be some firmware related difference. Care to describe what goes wrong so that can be added to the patch description? Regards, Tony
Hi Tony, On Fri, Jan 26, 2024 at 10:20:06AM +0200, Tony Lindgren wrote: > * Markus Schneider-Pargmann <msp@baylibre.com> [240124 13:55]: > > I tested this patch on am62-lp-sk and required this additional property: > > > > ti,no-reset-on-init; > > > > I am not sure at the moment why a reset doesn't work. But with the given > > property (so without reset) the wakeup on wkup_uart0 works as expected. > > OK. This might be some firmware related difference. Care to describe what > goes wrong so that can be added to the patch description? I tested this patch on sk-am62-lp on the upstream kernel and on the latest ti-sdk 6.1 kernel. With the ti-sdk 6.1 kernel I get mbox timeouts if the driver resets the ti-sysc. If it doesn't reset it, everything works on ti-sdk 6.1 as expected as well including wakeup from the wkup_uart0. Best, Markus
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 { bootph-all; @@ -21,14 +23,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@2b300050 { + 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@0 { + compatible = "ti,am64-uart", "ti,am654-uart"; + reg = <0 0x100>; + interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + }; }; wkup_i2c0: i2c@2b200000 {