This is v2 of the PS_HOLD reset-type series, addressing review of v1
[1][2][3].

This series depends on the Snagboot support series for Lemans-EVK [4]
(qcom-snagboot.config, qcom_lemans_snagboot_defconfig,
CONFIG_QCOM_SNAGBOOT_MODE), since patch 2/2 modifies
configs/qcom-snagboot.config.

Background
----------
In Snagboot mode, qcom_lemans_snagboot_defconfig disables CONFIG_PSCI_RESET
(PSCI services are unavailable in this mode), so sysreset_walk() falls
through to the qcom-pshold driver as the reset path.

On PMICs where the PS_HOLD reset sequence is implemented in the PON PBS
(Programmable Boot Sequencer) block rather than directly dropping PS_HOLD a
reset type needs to be configured. Otherwise, the board hangs on performing
reset such as hard reset.

Reset types defines the behavior of the PMIC during a reset or shutdown event
(e.g., warm reset or hard  reset event). The type of reset event is determined
by configuration register PON_PBS_PS_HOLD_SW_CTL in the PON module. Another
register, PON_PBS_PS_HOLD_RESET_CTL2 contains the field S2_RESET_EN that
enables reset. To configure PON_PBS_PS_HOLD_SW_CTL, the register
PON_PBS_PS_HOLD_RESET_CTL2.S2_RESET_EN needs to be disabled before re-enabling
it again.

Per the PMIC specification, a warm reset sequence additionally
requires further software configuration and if that configuration is
not performed, the PMIC's default behaviour for a warm reset request
is to shut down instead. This series does not implement that
configuration, so warm reset (SYSRESET_WARM) is not supported here.

Changes since v1
-----------------
- Patch 1: dropped the "qcom,pon", "qcom,pbs-pshold-sw-ctl" and
  "qcom,pbs-pshold-reset-ctl2" DT properties entirely. The PMIC PON node is 
  now located via its "compatible" property, and an in-driver table maps that
  compatible node to the PON_PBS base and register offsets. No new DT properties
  or bindings are introduced. Warm reset support was dropped: per the PMIC
  specification an unconfigured warm reset defaults to a shutdown, which this
  driver does not want to trigger unexpectedly. Only hard reset and power-off 
  are implemented. Reverted the unrelated U_BOOT_DRIVER() whitespace 
reformatting
  flagged in review.
- Patch 2 (was 3/3 in v1): implement SYSRESET_POWER_OFF
  (RESET_TYPE=SHUTDOWN) in the driver, and enable CONFIG_SYSRESET_CMD_POWEROFF
  in qcom-snagboot.config (rather than disabling CONFIG_CMD_POWEROFF as in v1),
  so "poweroff" works in Snagboot recovery mode where PSCI is unavailable.
- The v1 DT patch (2/3, "arm: dts: qcom: Configure Lemans PS_HOLD
  reset") is dropped from this series. Adding a qcom,pshold node
  requires it to also be added to the corresponding Linux devicetree. That patch
  is being prepared and will be posted separately for Linux DT review. Once
  accepted,the U-Boot DT enablement patch for Lemans IQ9075 will follow as v3 of
  this series (or a follow-up), referencing the accepted Linux patch.

[1] 
https://lore.kernel.org/u-boot/[email protected]/
[2] 
https://lore.kernel.org/u-boot/[email protected]/
[3] 
https://lore.kernel.org/u-boot/[email protected]/
[4] 
https://lore.kernel.org/u-boot/[email protected]/

Sumit Singh Dhami (2):
  sysreset: qcom-pshold: configure PON reset type before deasserting
    PS_HOLD
  configs: qcom-snagboot: enable poweroff via sysreset uclass

 configs/qcom-snagboot.config            |   3 +
 drivers/sysreset/sysreset_qcom-pshold.c | 122 +++++++++++++++++++++++-
 2 files changed, 124 insertions(+), 1 deletion(-)

-- 
Best regards,
Sumit Singh Dhami

Reply via email to