lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <DD7Q531PLMFE.1G07XTKDUF9HR@baylibre.com>
Date: Thu, 02 Oct 2025 11:21:16 +0200
From: "Markus Schneider-Pargmann" <msp@...libre.com>
To: "Markus Schneider-Pargmann (TI.com)" <msp@...libre.com>, "Nishanth
 Menon" <nm@...com>, "Tero Kristo" <kristo@...nel.org>, "Santosh Shilimkar"
 <ssantosh@...nel.org>
Cc: "Vishal Mahaveer" <vishalm@...com>, "Kevin Hilman"
 <khilman@...libre.com>, "Dhruva Gole" <d-gole@...com>, "Sebin Francis"
 <sebin.francis@...com>, "Kendall Willis" <k-willis@...com>, "Akashdeep
 Kaur" <a-kaur@...com>, <linux-arm-kernel@...ts.infradead.org>,
 <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v8 0/3] firmware: ti_sci: Partial-IO support

On Wed Oct 1, 2025 at 4:37 PM CEST, Markus Schneider-Pargmann (TI.com) wrote:
> Hi,
>
> This series adds support for Partial-IO to the ti-sci driver,
> implementing the firmware interface necessary to enter this low power
> state. It processes the wakeup-source properties from the devicetree and
> communicates with the system firmware to enter Partial-IO mode when
> appropriate wakeup sources are enabled.
>
> Partial-IO Overview
> ------------------
> Partial-IO is a low power system state in which nearly everything is
> turned off except the pins of the CANUART group (mcu_mcan0, mcu_mcan1,
> wkup_uart0 and mcu_uart0). These devices can trigger a wakeup of the
> system on pin activity. Note that this does not resume the system as the
> DDR is off as well. So this state can be considered a power-off state
> with wakeup capabilities.
>
> A documentation can also be found in section 6.2.4 in the TRM:
>   https://www.ti.com/lit/pdf/spruiv7
>
> Implementation Details
> ----------------------
> The complete Partial-IO feature requires three coordinated series, each
> handling a different aspect of the implementation:

I missed updating the lore links, sorry, here are the new ones:

>
> 1. m_can driver series: Implements device-specific wakeup functionality
>    for m_can devices, allowing them to be set as wakeup sources.
>    https://gitlab.baylibre.com/msp8/linux/-/tree/topic/mcan-wakeup-source/v6.17?ref_type=heads
>    https://lore.kernel.org/r/20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com

v10:
https://lore.kernel.org/r/20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com

> 2. Devicetree series: Defines system states and wakeup sources in the
>    devicetree for am62, am62a and am62p.
>    https://gitlab.baylibre.com/msp8/linux/-/tree/topic/am62-dt-partialio/v6.17?ref_type=heads
>    https://lore.kernel.org/r/20250812-topic-am62-dt-partialio-v6-15-v2-0-25352364a0ac@baylibre.com

v3:
https://lore.kernel.org/r/20251001-topic-am62-dt-partialio-v6-15-v3-0-7095fe263ece@baylibre.com

Best
Markus

> 3. This series (TI-SCI firmware): Implements the firmware interface to
>    enter Partial-IO mode when appropriate wakeup sources are enabled.
>
> Devicetree Bindings
> -------------------
> This series depends on the dt-schema pull request that adds bindings for
> system-idle-states and updates the binding for wakeup-source:
>   https://github.com/devicetree-org/dt-schema/pull/150
>
> This is now merged. These new bindings allow the ti-sci driver to
> identify devices that can act as wakeup sources for specific system
> states like Partial-IO.
>
> Testing
> -------
> A test branch is available here that includes all patches required to
> test Partial-IO:
>
> https://gitlab.baylibre.com/msp8/linux/-/tree/integration/am62-partialio/v6.17?ref_type=heads
>
> After enabling Wake-on-LAN the system can be powered off and will enter
> the Partial-IO state in which it can be woken up by activity on the
> specific pins:
>     ethtool -s can0 wol p
>     ethtool -s can1 wol p
>     poweroff
>
> These patches are tested on am62-lp-sk.
>
> Best,
> Markus
>
> Previous versions "firmware: ti_sci: Partial-IO support":
>  v1: https://lore.kernel.org/lkml/20240523080225.1288617-1-msp@baylibre.com/
>  v2: https://lore.kernel.org/lkml/20240729080101.3859701-1-msp@baylibre.com/
>  v3: https://lore.kernel.org/r/20241012-topic-am62-partialio-v6-13-b4-v3-0-f7c6c2739681@baylibre.com
>  v4: https://lore.kernel.org/r/20241219-topic-am62-partialio-v6-12-b4-v4-0-1cb8eabd407e@baylibre.com
>  v5: https://lore.kernel.org/r/20250306-topic-am62-partialio-v6-12-b4-v5-0-f9323d3744a2@baylibre.com
>  v6: https://lore.kernel.org/r/20250421-topic-am62-partialio-v6-12-b4-v6-0-3b5cefab1339@baylibre.com
>  v7: https://lore.kernel.org/r/20250812-topic-am62-partialio-v6-12-b4-v7-0-ac10865c2d87@baylibre.com
>
> Previous versions "can: m_can: Add am62 wakeup support":
>  v1: https://lore.kernel.org/lkml/20240523075347.1282395-1-msp@baylibre.com/
>  v2: https://lore.kernel.org/lkml/20240729074135.3850634-1-msp@baylibre.com/
>  v3: https://lore.kernel.org/lkml/20241011-topic-mcan-wakeup-source-v6-12-v3-0-9752c714ad12@baylibre.com
>  v4: https://lore.kernel.org/r/20241015-topic-mcan-wakeup-source-v6-12-v4-0-fdac1d1e7aa6@baylibre.com
>  v5: https://lore.kernel.org/r/20241028-topic-mcan-wakeup-source-v6-12-v5-0-33edc0aba629@baylibre.com
>  v6: https://lore.kernel.org/r/20241219-topic-mcan-wakeup-source-v6-12-v6-0-1356c7f7cfda@baylibre.com
>
> Changes in v8:
>  - Add a patch to remove constant 0 argument passing to
>    ti_sci_cmd_prepare_sleep
>  - Move partial-io functions further up in the file before the first
>    static const initializations
>
> Changes in v7:
>  - Rebase to v6.17-rc1
>  - Update the idle-state-name used to off-wake as introduced in
>    dt-schema
>
> Changes in v6:
>  - Narrowed down the wakeup-source binding to phandle lists
>  - Split off the mcan and DT changes into separate series
>
> Changes in v5:
>  - Rebased to v6.14-rc1
>  - Merged m_can and ti_sci series to avoid conflicts and show
>    dependencies more easily
>  - Added definitions of system-states for am62/am62a/am62p
>  - Moved wakeup-source definitions into board dts files as they require
>    a bit of support on the board.
>  - Updated ti_sci support to walk through the wakeup-source phandle
>    lists
>  - Added pinctrl settings for mcu_mcan0/1 on all boards
>  - Minor style updates for ti_sci support for transfers without response
>  - Update and move the dt-binding for wakeup-source from the m_can
>    binding to the dt-schema repository
>
> Changes in v4:
>  - Rebased to v6.13-rc1
>  - Removed all regulator related structures from patches and implemented
>    the wakeup-source property use instead.
>
> Changes in v3:
>  - Remove other modes declared for PREPARE_SLEEP as they probably won't
>    ever be used in upstream.
>  - Replace the wait loop after sending PREPARE_SLEEP with msleep and do
>    an emergency_restart if it exits
>  - Remove uarts from DT wakeup sources
>  - Split no response handling in ti_sci_do_xfer() into a separate patch
>    and use goto instead of if ()
>  - Remove DT binding parital-io-wakeup-sources. Instead I am modeling
>    the devices that are in the relevant group that are powered during
>    Partial-IO with the power supplies that are externally provided to
>    the SoC. In this case they are provided through 'vddshv_canuart'. All
>    devices using this regulator can be considered a potential wakeup
>    source if they are wakeup capable and wakeup enabled.
>  - Added devicetree patches adding vcc_3v3_sys regulator and
>    vddshv_canuart for am62-lp-sk
>  - Add pinctrl entries for am62-lp-sk to add WKUP_EN for mcu_mcan0 and
>    mcu_mcan1
>
> Changes in v2:
>  - Rebase to v6.11-rc1
>  - dt-binding:
>     - Update commit message
>     - Add more verbose description of the new binding for a better
>       explanation.
>  - ti_sci driver:
>     - Combine ti_sci_do_send() into ti_sci_do_xfer and only wait on a
>       response if a flag is set.
>     - On failure to enter Partial-IO, do emergency_restart()
>     - Add comments
>     - Fix small things
>
> Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@...libre.com>
> ---
> Markus Schneider-Pargmann (TI.com) (3):
>       firmware: ti_sci: Remove constant 0 function arguments
>       firmware: ti_sci: Support transfers without response
>       firmware: ti_sci: Partial-IO support
>
>  drivers/firmware/ti_sci.c | 154 ++++++++++++++++++++++++++++++++++++++++++----
>  drivers/firmware/ti_sci.h |   5 ++
>  2 files changed, 146 insertions(+), 13 deletions(-)
> ---
> base-commit: 24c4d4041c2ec11c47baf6ea54f9379cf88809fc
> change-id: 20241008-topic-am62-partialio-v6-12-b4-c273fbac4447
> prerequisite-change-id: 20241009-topic-mcan-wakeup-source-v6-12-8c1d69931bd8:v10
> prerequisite-patch-id: 40ff771d13dccae91c04ab120aa1b5e406b66e47
> prerequisite-patch-id: 830b339ea452edd750b04f719da91e721be630cb
> prerequisite-patch-id: 2c9142d2bc47e64c49b7b8a7ca20a62a0be14870
> prerequisite-patch-id: aa64f7e9fcc3fcbb3cb871a05a07f398f3aa8231
> prerequisite-change-id: 20250415-topic-am62-dt-partialio-v6-15-327dd1ff17da:v3
> prerequisite-patch-id: 707e4619d7b844e1b67ccde28b4484b7b0d27daa
> prerequisite-patch-id: 412feb5d3fc125e489d11b726c0b2d8fd5ff36f3
> prerequisite-patch-id: 4e3ed635267f9548b9ac7a9e440971bb1e54a5ee
> prerequisite-patch-id: 65704d9da41da1fa9fc647c185f412022a16acb5
> prerequisite-patch-id: 95a62b97efdac9bdf1921c1222acefac6e608c84
> prerequisite-patch-id: 87d82194bc278580ae54e8788b4508f743c61061
>
> Best regards,


Download attachment "signature.asc" of type "application/pgp-signature" (290 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ