[PATCH v3 0/3] Add RZ/G3L PWRRDY power sequencing support
Biju <[email protected]>
| Newsgroups | org.kernel.vger.linux-renesas-soc,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm |
|---|---|
| Message-ID | <[email protected]> |
From: Biju Das <[email protected]> Hi All, Some RZ SoCs (e.g. RZ/G3L) have a PWRRDY register that signals power readiness for various IPs (USB, DSI, CSI, etc.) to their respective controllers. This register is part of the SYSC IP. Add a dedicated power sequencing driver to handle these signals. This series adds that support: - Patch 1 adds a pwrrdy_pwrseq flag to struct rz_sysc_soc_id_init_data, sets it for RZ/G3L, and has the SYSC driver register a "pwrseq-pwrrdy" auxiliary device when the flag is set, so a dedicated driver can bind to it and handle the sequencing. - Patch 2 adds that dedicated driver, pwrseq-renesas-pwrrdy, which binds to the auxiliary device exposed by patch 1 and exposes usb-pwrrdy, dsi-pwrrdy, and csi-pwrrdy pwrseq targets, toggling the appropriate bits in the SYS_PWRRDY_N register via the parent SYSC driver's regmap. - Patch 3 selects POWER_SEQUENCING_RENESAS_PWRRDY from SYSC_R9A08G046 so the new driver is built whenever RZ/G3L SYSC support is enabled. This series is based on proposal for power sequence driver [1] for USB PWRRDY signal and DSI PWRRDY signal[2]. v2->v3: * Updated commit description by dropping devm_add_action_or_reset(). * Config now selects AUXILIARY_BUS to avoid compilation issues. * Dropped the cast in devm_auxiliary_device_create(). * SYSC_RZ and POWER_SEQUENCING_RENESAS_PWRRDY config selects AUXILIARY_BUS to avoid compilation issues. * Added match for consumer device and added of_device.h header file. * Replaced regmap_update_bits()->regmap_assign_bits() and updated the function parameter of pwrseq_rzg3l_set_pwrrdy(). * Simpilfied probe() return with PTR_ERR_OR_ZERO macro. * SYSC_R9A08G046 config selects POWER_SEQUENCING as POWER_SEQUENCING_RENESAS_PWRRDY is defined inside an if POWER_SEQUENCING block in drivers/power/sequencing/Kconfig. v1->v2: * Switched to devm_auxiliary_device_create(). * Added regmap parameter to rz_sysc_pwrrdy_pwrseq_init(),so that regmap can be passed as platform data. * Added a comment in pwrseq_rzg3l_pwrrdy_match(). * Dropped dev_get_regmap() from probe as regmap is now part of platform data. * Added a blank line before devm_pwrseq_device_register() in probe. * Dropped the error message devm_pwrseq_device_register() as probe prints failure message. * Dropped local variables dev and regmap from probe(). [1] https://lore.kernel.org/all/[email protected]/#t [2] https://lore.kernel.org/all/[email protected]/T/#mb6f18d8fa9a194fc0a15db5f4938df420da7b6b5 Biju Das (3): soc: renesas: rz-sysc: Register auxiliary device for PWRRDY power sequencer power: sequencing: Add Renesas RZ/G3L Power Ready driver soc: renesas: Kconfig: Select POWER_SEQUENCING_RENESAS_PWRRDY for R9A08G046 drivers/power/sequencing/Kconfig | 9 ++ drivers/power/sequencing/Makefile | 1 + .../power/sequencing/pwrseq-renesas-pwrrdy.c | 147 ++++++++++++++++++ drivers/soc/renesas/Kconfig | 3 + drivers/soc/renesas/r9a08g046-sysc.c | 1 + drivers/soc/renesas/rz-sysc.c | 21 +++ drivers/soc/renesas/rz-sysc.h | 2 + 7 files changed, 184 insertions(+) create mode 100644 drivers/power/sequencing/pwrseq-renesas-pwrrdy.c -- 2.43.0