Message ID | 20230512093926.661509-1-arnaud.pouliquen@foss.st.com |
---|---|
Headers | show |
Series | stm32mp15: update remoteproc to support SCMI Device tree | expand |
On Fri, May 12, 2023 at 11:39:22AM +0200, Arnaud Pouliquen wrote: > Update vs V2[1]: > --------------- > - update yaml to remove label in examples > - fix error management for devm_reset_control_get_optional(dev, "hold_boot") > - rebased on commit ac9a78681b92 ("Linux 6.4-rc1") > > [1]https://lore.kernel.org/lkml/20230504094641.870378-1-arnaud.pouliquen@foss.st.com/T/ > > > Description: > ----------- > This series updates the stm32_rproc driver and associated DT node to > support device tree configuration with and without SCMI server. > The impact is mainly on the MCU hold boot management. > > Three configurations have to be supported: > > 1) Configuration without OP-TEE SCMI (legacy): Trusted context not activated > - The MCU reset is controlled through the Linux RCC reset driver. > - The MCU HOLD BOOT is controlled through The RCC sysconf. > > 2) Configuration with SCMI server: Trusted context activated > - The MCU reset is controlled through the SCMI reset service. > - The MCU HOLD BOOT is no more controlled through a SMC call service but > through the SCMI reset service. > > 3) Configuration with OP-TEE SMC call (deprecated): Trusted context activated > - The MCU reset is controlled through the Linux RCC reset driver. > - The MCU HOLD BOOT is controlled through The SMC call. > > In consequence this series: > - adds the use of the SCMI reset service to manage the MCU hold boot, > - determines the configuration to use depending on the presence of the > "reset-names" property > if ( "reset-names" property contains "hold_boot") > then use reset_control services > else use regmap access based on "st,syscfg-holdboot" property. > - set the DT st,syscfg-tz property as deprecated > > Arnaud Pouliquen (4): > dt-bindings: remoteproc: st,stm32-rproc: Rework reset declarations > remoteproc: stm32: Allow hold boot management by the SCMI reset > controller > ARM: dts: stm32: Update reset declarations > ARM: dts: stm32: fix m4_rproc references to use SCMI > > .../bindings/remoteproc/st,stm32-rproc.yaml | 44 +++++++++-- > arch/arm/boot/dts/stm32mp151.dtsi | 2 +- > arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts | 6 +- > arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts | 6 +- > arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts | 6 +- > arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts | 6 +- > drivers/remoteproc/stm32_rproc.c | 76 ++++++++++++++----- > 7 files changed, 111 insertions(+), 35 deletions(-) > I have applied patch 1 and 2. Unless Alexandre wants to proceed differently, patches 3 and 4 should go through his tree. Thanks, Mathieu > -- > 2.25.1 >
Hi Mathieu On 5/15/23 19:27, Mathieu Poirier wrote: > On Fri, May 12, 2023 at 11:39:22AM +0200, Arnaud Pouliquen wrote: >> Update vs V2[1]: >> --------------- >> - update yaml to remove label in examples >> - fix error management for devm_reset_control_get_optional(dev, "hold_boot") >> - rebased on commit ac9a78681b92 ("Linux 6.4-rc1") >> >> [1]https://lore.kernel.org/lkml/20230504094641.870378-1-arnaud.pouliquen@foss.st.com/T/ >> >> >> Description: >> ----------- >> This series updates the stm32_rproc driver and associated DT node to >> support device tree configuration with and without SCMI server. >> The impact is mainly on the MCU hold boot management. >> >> Three configurations have to be supported: >> >> 1) Configuration without OP-TEE SCMI (legacy): Trusted context not activated >> - The MCU reset is controlled through the Linux RCC reset driver. >> - The MCU HOLD BOOT is controlled through The RCC sysconf. >> >> 2) Configuration with SCMI server: Trusted context activated >> - The MCU reset is controlled through the SCMI reset service. >> - The MCU HOLD BOOT is no more controlled through a SMC call service but >> through the SCMI reset service. >> >> 3) Configuration with OP-TEE SMC call (deprecated): Trusted context activated >> - The MCU reset is controlled through the Linux RCC reset driver. >> - The MCU HOLD BOOT is controlled through The SMC call. >> >> In consequence this series: >> - adds the use of the SCMI reset service to manage the MCU hold boot, >> - determines the configuration to use depending on the presence of the >> "reset-names" property >> if ( "reset-names" property contains "hold_boot") >> then use reset_control services >> else use regmap access based on "st,syscfg-holdboot" property. >> - set the DT st,syscfg-tz property as deprecated >> >> Arnaud Pouliquen (4): >> dt-bindings: remoteproc: st,stm32-rproc: Rework reset declarations >> remoteproc: stm32: Allow hold boot management by the SCMI reset >> controller >> ARM: dts: stm32: Update reset declarations >> ARM: dts: stm32: fix m4_rproc references to use SCMI >> >> .../bindings/remoteproc/st,stm32-rproc.yaml | 44 +++++++++-- >> arch/arm/boot/dts/stm32mp151.dtsi | 2 +- >> arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts | 6 +- >> arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts | 6 +- >> arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts | 6 +- >> arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts | 6 +- >> drivers/remoteproc/stm32_rproc.c | 76 ++++++++++++++----- >> 7 files changed, 111 insertions(+), 35 deletions(-) >> > > I have applied patch 1 and 2. Unless Alexandre wants to proceed differently, > patches 3 and 4 should go through his tree. I will merge DT patches in STM32 tree. cheers Alex > > Thanks, > Mathieu > >> -- >> 2.25.1 >>
Hi Arnaud On 5/12/23 11:39, Arnaud Pouliquen wrote: > Fixes stm32mp15*-scmi DTS files introduced in [1]: > This patch fixes the node which uses the MCU reset and adds the > missing HOLD_BOOT which is also handled by the SCMI reset service. > > This change cannot be applied as a fix on commit [1], the management > of the hold boot impacts also the stm32_rproc driver. > > [1] 'commit 5b7e58313a77 ("ARM: dts: stm32: Add SCMI version of STM32 boards (DK1/DK2/ED1/EV1)")' > > Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com> > --- I just ran YAML validation on your DT patches and it fails. I added your DT patches + dt-binding one (just for the test). I got the following issue: /arch/arm/boot/dts/stm32mp157c-ed1-scmi.dtb: m4@10000000: st,syscfg-holdboot: False schema does not allow [[7, 268, 1]] From schema: /local/home/frq08678/STLINUX/kernel/my-kernel/stm32/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc.yaml Do I miss another dt-binding update not present in this series ? alex > arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts | 6 ++++-- > arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts | 6 ++++-- > arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts | 6 ++++-- > arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts | 6 ++++-- > 4 files changed, 16 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts b/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts > index e539cc80bef8..134788e64265 100644 > --- a/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts > +++ b/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts > @@ -55,8 +55,10 @@ &mdma1 { > resets = <&scmi_reset RST_SCMI_MDMA>; > }; > > -&mlahb { > - resets = <&scmi_reset RST_SCMI_MCU>; > +&m4_rproc { > + resets = <&scmi_reset RST_SCMI_MCU>, > + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; > + reset-names = "mcu_rst", "hold_boot"; > }; > > &rcc { > diff --git a/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts b/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts > index 97e4f94b0a24..c42e658debfb 100644 > --- a/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts > +++ b/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts > @@ -61,8 +61,10 @@ &mdma1 { > resets = <&scmi_reset RST_SCMI_MDMA>; > }; > > -&mlahb { > - resets = <&scmi_reset RST_SCMI_MCU>; > +&m4_rproc { > + resets = <&scmi_reset RST_SCMI_MCU>, > + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; > + reset-names = "mcu_rst", "hold_boot"; > }; > > &rcc { > diff --git a/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts b/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts > index 9cf0a44d2f47..7a56ff2d4185 100644 > --- a/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts > +++ b/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts > @@ -60,8 +60,10 @@ &mdma1 { > resets = <&scmi_reset RST_SCMI_MDMA>; > }; > > -&mlahb { > - resets = <&scmi_reset RST_SCMI_MCU>; > +&m4_rproc { > + resets = <&scmi_reset RST_SCMI_MCU>, > + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; > + reset-names = "mcu_rst", "hold_boot"; > }; > > &rcc { > diff --git a/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts b/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts > index 3b9dd6f4ccc9..119874dd91e4 100644 > --- a/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts > +++ b/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts > @@ -66,8 +66,10 @@ &mdma1 { > resets = <&scmi_reset RST_SCMI_MDMA>; > }; > > -&mlahb { > - resets = <&scmi_reset RST_SCMI_MCU>; > +&m4_rproc { > + resets = <&scmi_reset RST_SCMI_MCU>, > + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; > + reset-names = "mcu_rst", "hold_boot"; > }; > > &rcc {
Hi Alex, On 5/16/23 17:35, Alexandre TORGUE wrote: > Hi Arnaud > > On 5/12/23 11:39, Arnaud Pouliquen wrote: >> Fixes stm32mp15*-scmi DTS files introduced in [1]: >> This patch fixes the node which uses the MCU reset and adds the >> missing HOLD_BOOT which is also handled by the SCMI reset service. >> >> This change cannot be applied as a fix on commit [1], the management >> of the hold boot impacts also the stm32_rproc driver. >> >> [1] 'commit 5b7e58313a77 ("ARM: dts: stm32: Add SCMI version of STM32 boards >> (DK1/DK2/ED1/EV1)")' >> >> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com> >> --- > > I just ran YAML validation on your DT patches and it fails. I added your DT > patches + dt-binding one (just for the test). I got the following issue: > > /arch/arm/boot/dts/stm32mp157c-ed1-scmi.dtb: m4@10000000: st,syscfg-holdboot: > False schema does not allow [[7, 268, 1]] > From schema: > /local/home/frq08678/STLINUX/kernel/my-kernel/stm32/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc.yaml > > Do I miss another dt-binding update not present in this series ? I reproduced the issue. I need to add "/delete-property/ st,syscfg-holdboot;" in stm32mp157*-scmi.dts files. As Mathieu already integrates the patch 1/4 and 2/4, I will send a V4 containing only the patches 3 and 4. Thanks, Arnaud > > alex > >> arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts | 6 ++++-- >> arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts | 6 ++++-- >> arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts | 6 ++++-- >> arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts | 6 ++++-- >> 4 files changed, 16 insertions(+), 8 deletions(-) >> >> diff --git a/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts >> b/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts >> index e539cc80bef8..134788e64265 100644 >> --- a/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts >> +++ b/arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts >> @@ -55,8 +55,10 @@ &mdma1 { >> resets = <&scmi_reset RST_SCMI_MDMA>; >> }; >> -&mlahb { >> - resets = <&scmi_reset RST_SCMI_MCU>; >> +&m4_rproc { >> + resets = <&scmi_reset RST_SCMI_MCU>, >> + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; >> + reset-names = "mcu_rst", "hold_boot"; >> }; >> &rcc { >> diff --git a/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts >> b/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts >> index 97e4f94b0a24..c42e658debfb 100644 >> --- a/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts >> +++ b/arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts >> @@ -61,8 +61,10 @@ &mdma1 { >> resets = <&scmi_reset RST_SCMI_MDMA>; >> }; >> -&mlahb { >> - resets = <&scmi_reset RST_SCMI_MCU>; >> +&m4_rproc { >> + resets = <&scmi_reset RST_SCMI_MCU>, >> + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; >> + reset-names = "mcu_rst", "hold_boot"; >> }; >> &rcc { >> diff --git a/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts >> b/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts >> index 9cf0a44d2f47..7a56ff2d4185 100644 >> --- a/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts >> +++ b/arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts >> @@ -60,8 +60,10 @@ &mdma1 { >> resets = <&scmi_reset RST_SCMI_MDMA>; >> }; >> -&mlahb { >> - resets = <&scmi_reset RST_SCMI_MCU>; >> +&m4_rproc { >> + resets = <&scmi_reset RST_SCMI_MCU>, >> + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; >> + reset-names = "mcu_rst", "hold_boot"; >> }; >> &rcc { >> diff --git a/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts >> b/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts >> index 3b9dd6f4ccc9..119874dd91e4 100644 >> --- a/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts >> +++ b/arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts >> @@ -66,8 +66,10 @@ &mdma1 { >> resets = <&scmi_reset RST_SCMI_MDMA>; >> }; >> -&mlahb { >> - resets = <&scmi_reset RST_SCMI_MCU>; >> +&m4_rproc { >> + resets = <&scmi_reset RST_SCMI_MCU>, >> + <&scmi_reset RST_SCMI_MCU_HOLD_BOOT>; >> + reset-names = "mcu_rst", "hold_boot"; >> }; >> &rcc { >