[PATCH v2 0/3] mfd: sprd-sc27xx: Move poweroff/reboot support to the parent MFD driver

Otto Pflüger posted 3 patches 3 months ago
drivers/mfd/sprd-sc27xx-spi.c         | 148 ++++++++++++++++++++++++++++++++++
drivers/power/reset/Kconfig           |   9 ---
drivers/power/reset/Makefile          |   1 -
drivers/power/reset/sc27xx-poweroff.c |  79 ------------------
drivers/spi/spi-sprd-adi.c            |  73 +----------------
5 files changed, 149 insertions(+), 161 deletions(-)
[PATCH v2 0/3] mfd: sprd-sc27xx: Move poweroff/reboot support to the parent MFD driver
Posted by Otto Pflüger 3 months ago
Registers for powering off the system are present in all SC27xx-series
PMICs, although their locations vary between the specific PMIC models.
On systems using these chips, the PMIC can always power off the system
and is usually the only chip capable of doing this. Similarly, the PMICs
(except for SC2731) contain a reset register that can always be used to
restart the system.

There is an existing sc27xx-poweroff driver, but it currently only works
on SC2731 and is not probed anywhere since it is missing an OF match
table and is not instantiated by the MFD driver. Reboot for SC2731 is
implemented in drivers/spi/spi-sprd-adi.c, which is not really an
appropriate location for PMIC-specific code.

Since a separate device tree node for the poweroff support would not
provide anything useful (see [1]) and passing platform-specific data
between drivers is unnecessarily complex for such a simple feature,
reimplement the poweroff functionality in the main MFD driver. While at
it, add support for the newer SC2730 PMIC and its hardware reset
register.

Reboot is special because it requires storing the reboot mode. Move the
existing code for this from the SPI bus driver to the MFD driver.

[1]: https://lore.kernel.org/all/20251002025344.GA2958334-robh@kernel.org/

Signed-off-by: Otto Pflüger <otto.pflueger@abscue.de>
---
Changes in v2:
- Fix style issues in MFD driver
- Use dev_err instead of pr_emerg
- Link to v1: https://lore.kernel.org/r/20251007-sc27xx-mfd-poweroff-v1-0-89a2f919b731@abscue.de

---
Otto Pflüger (3):
      mfd: sprd-sc27xx: Integrate power off and reboot support
      spi: sprd-adi: Remove code for storing the reboot mode
      power: reset: sc27xx: Drop unused driver

 drivers/mfd/sprd-sc27xx-spi.c         | 148 ++++++++++++++++++++++++++++++++++
 drivers/power/reset/Kconfig           |   9 ---
 drivers/power/reset/Makefile          |   1 -
 drivers/power/reset/sc27xx-poweroff.c |  79 ------------------
 drivers/spi/spi-sprd-adi.c            |  73 +----------------
 5 files changed, 149 insertions(+), 161 deletions(-)
---
base-commit: ab40c92c74c6b0c611c89516794502b3a3173966
change-id: 20251007-sc27xx-mfd-poweroff-9cf728d55fed

Best regards,
-- 
Otto Pflüger <otto.pflueger@abscue.de>

Re: [PATCH v2 0/3] mfd: sprd-sc27xx: Move poweroff/reboot support to the parent MFD driver
Posted by Baolin Wang 2 months, 3 weeks ago
CC Cixi.

On 2025/11/11 03:08, Otto Pflüger wrote:
> Registers for powering off the system are present in all SC27xx-series
> PMICs, although their locations vary between the specific PMIC models.
> On systems using these chips, the PMIC can always power off the system
> and is usually the only chip capable of doing this. Similarly, the PMICs
> (except for SC2731) contain a reset register that can always be used to
> restart the system.
> 
> There is an existing sc27xx-poweroff driver, but it currently only works
> on SC2731 and is not probed anywhere since it is missing an OF match
> table and is not instantiated by the MFD driver. Reboot for SC2731 is
> implemented in drivers/spi/spi-sprd-adi.c, which is not really an
> appropriate location for PMIC-specific code.
> 
> Since a separate device tree node for the poweroff support would not
> provide anything useful (see [1]) and passing platform-specific data
> between drivers is unnecessarily complex for such a simple feature,
> reimplement the poweroff functionality in the main MFD driver. While at
> it, add support for the newer SC2730 PMIC and its hardware reset
> register.
> 
> Reboot is special because it requires storing the reboot mode. Move the
> existing code for this from the SPI bus driver to the MFD driver.
> 
> [1]: https://lore.kernel.org/all/20251002025344.GA2958334-robh@kernel.org/
> 
> Signed-off-by: Otto Pflüger <otto.pflueger@abscue.de>
> ---

Overall, it looks reasonable to me, but I cannot test your patchset 
right now due to the lack of hardware. Cixi (who is from Unisoc), could 
you help test this patchset? Thanks.
Re: [PATCH v2 0/3] mfd: sprd-sc27xx: Move poweroff/reboot support to the parent MFD driver
Posted by Cixi Geng 2 months, 2 weeks ago
On 19/11/2025 14:33, Baolin Wang wrote:
> CC Cixi.
>
> On 2025/11/11 03:08, Otto Pflüger wrote:
>> Registers for powering off the system are present in all SC27xx-series
>> PMICs, although their locations vary between the specific PMIC models.
>> On systems using these chips, the PMIC can always power off the system
>> and is usually the only chip capable of doing this. Similarly, the PMICs
>> (except for SC2731) contain a reset register that can always be used to
>> restart the system.
>>
>> There is an existing sc27xx-poweroff driver, but it currently only works
>> on SC2731 and is not probed anywhere since it is missing an OF match
>> table and is not instantiated by the MFD driver. Reboot for SC2731 is
>> implemented in drivers/spi/spi-sprd-adi.c, which is not really an
>> appropriate location for PMIC-specific code.
>>
>> Since a separate device tree node for the poweroff support would not
>> provide anything useful (see [1]) and passing platform-specific data
>> between drivers is unnecessarily complex for such a simple feature,
>> reimplement the poweroff functionality in the main MFD driver. While at
>> it, add support for the newer SC2730 PMIC and its hardware reset
>> register.
>>
>> Reboot is special because it requires storing the reboot mode. Move the
>> existing code for this from the SPI bus driver to the MFD driver.
>>
>> [1]: 
>> https://lore.kernel.org/all/20251002025344.GA2958334-robh@kernel.org/
>>
>> Signed-off-by: Otto Pflüger <otto.pflueger@abscue.de>
>> ---
>
> Overall, it looks reasonable to me, but I cannot test your patchset 
> right now due to the lack of hardware. Cixi (who is from Unisoc), 
> could you help test this patchset? Thanks.

the patchset test reboot function on ums512 is ok.

Tested-by: Cixi Geng <cixi.geng@linux.dev>