* [PATCH v9 0/6] provide power off support for iMX6 with external PMIC @ 2018-08-02 10:34 Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl, pmic-stby-poweroff property Oleksij Rempel ` (5 more replies) 0 siblings, 6 replies; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel 2018.08.02 v9: - remove include <linux/kallsyms.h> - rebase against current regulator/for-next branch and test it. - as result of previous discussions: - there is no need to remove "syscon-poweroff" node, it is by default disabled. - supported PFUZE version is tested by pfuze_power_off_prepare_init() - advantages or disadvantages of using this power off method should be described in NXP SoC or PMIC documentation, not in change log or devicetree. 2018.07.26: v8 is a rebase against kernel v4.18-rc6. No other changes are made. Added: linux-imx at nxp.com and yibin.gong at nxp.com to the CC. 2018.05.17: update patches to version v7 This patch series is providing power off support for Freescale/NXP iMX6 based boards with external power management integrated circuit (PMIC). As a first step the PMIC is configured to turn off the system if the standby pin is asserted. On second step we assert the standby pin. For this reason we need to use pm_power_off_prepare. Usage of stnadby pin for power off is described in official iMX6 documentation. 2018.03.05: As this patch set touches multiple subsystems I think it would make sense for Shawn Guo to take the all patch set. The only part which didn't receive an ACK is regulator stuff. So I would hope that Mark Brown can ACK it. Kind regards, Oleksij Rempel 2017.12.06: Adding Linus. Probably there is no maintainer for this patch set. No changes are made, tested on v4.15-rc1. 2017.10.27: Last version of this patch set was send at 20 Jun 2017, this is a rebase against kernel v4.14-rc6. Probably this set got lost. If I forgot to address some comments, please point me. changes: v7: - use EXPORT_SYMBOL_GPL(pm_power_off_prepare) instead of EXPORT_SYMBOL - call imx6q_suspend_finish() directly without cpu_suspend() v6: - rename imx6_pm_poweroff to imx6_pm_stby_poweroff - fix "MPIC_STBY_REQ" typo in the comment. v5: - remove useless includes from pm-imx6.c patch - add Acked-by to "regulator: pfuze100: add fsl,pmic-stby-poweroff property" patch v4: - update comment in "regulator: pfuze100: add fsl,pmic-stby-poweroff ..." patch - add Acked-by to "ARM: imx6q: provide documentation for new ..." patch v3: - set pm_power_off_prepare = NULL on .remove. - documentation and spelling fixes. - use %pf instead of lookup_symbol_name. Oleksij Rempel (6): ARM: imx6q: provide documentation for new fsl,pmic-stby-poweroff property ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set kernel/reboot.c: export pm_power_off_prepare regulator: pfuze100: add fsl,pmic-stby-poweroff property regulator: pfuze100-regulator: provide pm_power_off_prepare handler ARM: dts: imx6: RIoTboard provide standby on power off option .../devicetree/bindings/clock/imx6q-clock.txt | 8 ++ .../bindings/regulator/pfuze100.txt | 5 + arch/arm/boot/dts/imx6dl-riotboard.dts | 5 + arch/arm/mach-imx/pm-imx6.c | 25 +++++ drivers/regulator/pfuze100-regulator.c | 91 +++++++++++++++++++ kernel/reboot.c | 1 + 6 files changed, 135 insertions(+) -- 2.18.0 ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl, pmic-stby-poweroff property 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel @ 2018-08-02 10:34 ` Oleksij Rempel 2018-09-12 1:04 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl,pmic-stby-poweroff property Shawn Guo 2018-08-02 10:34 ` [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl, pmic-stby-poweroff" is set Oleksij Rempel ` (4 subsequent siblings) 5 siblings, 1 reply; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Acked-by: Rob Herring <robh@kernel.org> --- Documentation/devicetree/bindings/clock/imx6q-clock.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt index a45ca67a9d5f..e1308346e00d 100644 --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt @@ -6,6 +6,14 @@ Required properties: - interrupts: Should contain CCM interrupt - #clock-cells: Should be <1> +Optional properties: +- fsl,pmic-stby-poweroff: Configure CCM to assert PMIC_STBY_REQ signal + on power off. + Use this property if the SoC should be powered off by external power + management IC (PMIC) triggered via PMIC_STBY_REQ signal. + Boards that are designed to initiate poweroff on PMIC_ON_REQ signal should + be using "syscon-poweroff" driver instead. + The clock consumer should specify the desired clock by having the clock ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx6qdl-clock.h for the full list of i.MX6 Quad and DualLite clock IDs. -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl,pmic-stby-poweroff property 2018-08-02 10:34 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl, pmic-stby-poweroff property Oleksij Rempel @ 2018-09-12 1:04 ` Shawn Guo 0 siblings, 0 replies; 21+ messages in thread From: Shawn Guo @ 2018-09-12 1:04 UTC (permalink / raw) To: linux-arm-kernel I updated the subject as below to make it clear this is a bindings change. dt-bindings: imx6q-clock: add new fsl,pmic-stby-poweroff property Patch applied, thanks. Shawn On Thu, Aug 02, 2018 at 12:34:20PM +0200, Oleksij Rempel wrote: > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> > Acked-by: Rob Herring <robh@kernel.org> > --- > Documentation/devicetree/bindings/clock/imx6q-clock.txt | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt > index a45ca67a9d5f..e1308346e00d 100644 > --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt > +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt > @@ -6,6 +6,14 @@ Required properties: > - interrupts: Should contain CCM interrupt > - #clock-cells: Should be <1> > > +Optional properties: > +- fsl,pmic-stby-poweroff: Configure CCM to assert PMIC_STBY_REQ signal > + on power off. > + Use this property if the SoC should be powered off by external power > + management IC (PMIC) triggered via PMIC_STBY_REQ signal. > + Boards that are designed to initiate poweroff on PMIC_ON_REQ signal should > + be using "syscon-poweroff" driver instead. > + > The clock consumer should specify the desired clock by having the clock > ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx6qdl-clock.h > for the full list of i.MX6 Quad and DualLite clock IDs. > -- > 2.18.0 > ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl, pmic-stby-poweroff" is set 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl, pmic-stby-poweroff property Oleksij Rempel @ 2018-08-02 10:34 ` Oleksij Rempel 2018-09-12 1:10 ` [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" " Shawn Guo 2018-08-02 10:34 ` [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare Oleksij Rempel ` (3 subsequent siblings) 5 siblings, 1 reply; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel One of the Freescale recommended sequences for power off with external PMIC is the following: ... 3. SoC is programming PMIC for power off when standby is asserted. 4. In CCM STOP mode, Standby is asserted, PMIC gates SoC supplies. See: http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf page 5083 This patch implements step 4. of this sequence. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- arch/arm/mach-imx/pm-imx6.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c index 017539dd712b..2f5c643f62fb 100644 --- a/arch/arm/mach-imx/pm-imx6.c +++ b/arch/arm/mach-imx/pm-imx6.c @@ -601,6 +601,28 @@ static void __init imx6_pm_common_init(const struct imx6_pm_socdata IMX6Q_GPR1_GINT); } +static void imx6_pm_stby_poweroff(void) +{ + imx6_set_lpm(STOP_POWER_OFF); + imx6q_suspend_finish(0); + + mdelay(1000); + + pr_emerg("Unable to poweroff system\n"); +} + +static int imx6_pm_stby_poweroff_probe(void) +{ + if (pm_power_off) { + pr_warn("%s: pm_power_off already claimed %p %pf!\n", + __func__, pm_power_off, pm_power_off); + return -EBUSY; + } + + pm_power_off = imx6_pm_stby_poweroff; + return 0; +} + void __init imx6_pm_ccm_init(const char *ccm_compat) { struct device_node *np; @@ -617,6 +639,9 @@ void __init imx6_pm_ccm_init(const char *ccm_compat) val = readl_relaxed(ccm_base + CLPCR); val &= ~BM_CLPCR_LPM; writel_relaxed(val, ccm_base + CLPCR); + + if (of_property_read_bool(np, "fsl,pmic-stby-poweroff")) + imx6_pm_stby_poweroff_probe(); } void __init imx6q_pm_init(void) -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set 2018-08-02 10:34 ` [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl, pmic-stby-poweroff" is set Oleksij Rempel @ 2018-09-12 1:10 ` Shawn Guo 0 siblings, 0 replies; 21+ messages in thread From: Shawn Guo @ 2018-09-12 1:10 UTC (permalink / raw) To: linux-arm-kernel On Thu, Aug 02, 2018 at 12:34:21PM +0200, Oleksij Rempel wrote: > One of the Freescale recommended sequences for power off with external > PMIC is the following: > ... > 3. SoC is programming PMIC for power off when standby is asserted. > 4. In CCM STOP mode, Standby is asserted, PMIC gates SoC supplies. > > See: > http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf > page 5083 > > This patch implements step 4. of this sequence. > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Applied, thanks. ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl, pmic-stby-poweroff property Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl, pmic-stby-poweroff" is set Oleksij Rempel @ 2018-08-02 10:34 ` Oleksij Rempel 2018-08-02 10:44 ` Mark Brown 2018-08-02 10:34 ` [PATCH v9 4/6] regulator: pfuze100: add fsl, pmic-stby-poweroff property Oleksij Rempel ` (2 subsequent siblings) 5 siblings, 1 reply; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel Export pm_power_off_prepare. It is needed to implement power off on Freescale/NXP iMX6 based boards with external power management integrated circuit (PMIC). Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- kernel/reboot.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/reboot.c b/kernel/reboot.c index e4ced883d8de..83810d726f3e 100644 --- a/kernel/reboot.c +++ b/kernel/reboot.c @@ -49,6 +49,7 @@ int reboot_force; */ void (*pm_power_off_prepare)(void); +EXPORT_SYMBOL_GPL(pm_power_off_prepare); /** * emergency_restart - reboot the system -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-08-02 10:34 ` [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare Oleksij Rempel @ 2018-08-02 10:44 ` Mark Brown 2018-08-02 10:47 ` Oleksij Rempel 0 siblings, 1 reply; 21+ messages in thread From: Mark Brown @ 2018-08-02 10:44 UTC (permalink / raw) To: linux-arm-kernel On Thu, Aug 02, 2018 at 12:34:22PM +0200, Oleksij Rempel wrote: > Export pm_power_off_prepare. It is needed to implement power off on > Freescale/NXP iMX6 based boards with external power management > integrated circuit (PMIC). I thought we'd got an ack for this from Raphael on a previous version or am I mistaken? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180802/f5b524d4/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-08-02 10:44 ` Mark Brown @ 2018-08-02 10:47 ` Oleksij Rempel 2018-08-02 11:35 ` Mark Brown 0 siblings, 1 reply; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:47 UTC (permalink / raw) To: linux-arm-kernel On 02.08.2018 12:44, Mark Brown wrote: > On Thu, Aug 02, 2018 at 12:34:22PM +0200, Oleksij Rempel wrote: >> Export pm_power_off_prepare. It is needed to implement power off on >> Freescale/NXP iMX6 based boards with external power management >> integrated circuit (PMIC). > > I thought we'd got an ack for this from Raphael on a previous version or > am I mistaken? > No, we got an: "Anyway, I have no particular problems with exporting pm_power_off_prepare via EXPORT_SYMBOL_GPL()." Should i see it as ACK? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: OpenPGP digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180802/3f8ff04c/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-08-02 10:47 ` Oleksij Rempel @ 2018-08-02 11:35 ` Mark Brown 2018-08-27 1:48 ` Shawn Guo 0 siblings, 1 reply; 21+ messages in thread From: Mark Brown @ 2018-08-02 11:35 UTC (permalink / raw) To: linux-arm-kernel On Thu, Aug 02, 2018 at 12:47:27PM +0200, Oleksij Rempel wrote: > On 02.08.2018 12:44, Mark Brown wrote: > > I thought we'd got an ack for this from Raphael on a previous version or > > am I mistaken? > No, we got an: > "Anyway, I have no particular problems with exporting > pm_power_off_prepare via EXPORT_SYMBOL_GPL()." > Should i see it as ACK? It's probably good enough. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180802/4192567a/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-08-02 11:35 ` Mark Brown @ 2018-08-27 1:48 ` Shawn Guo 2018-09-06 10:15 ` Mark Brown 0 siblings, 1 reply; 21+ messages in thread From: Shawn Guo @ 2018-08-27 1:48 UTC (permalink / raw) To: linux-arm-kernel On Thu, Aug 02, 2018 at 12:35:52PM +0100, Mark Brown wrote: > On Thu, Aug 02, 2018 at 12:47:27PM +0200, Oleksij Rempel wrote: > > On 02.08.2018 12:44, Mark Brown wrote: > > > > I thought we'd got an ack for this from Raphael on a previous version or > > > am I mistaken? > > > No, we got an: > > "Anyway, I have no particular problems with exporting > > pm_power_off_prepare via EXPORT_SYMBOL_GPL()." > > > Should i see it as ACK? Mark, Can you ACK on those two regulator patches, so that I can queue this series up on IMX tree? Shawn ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-08-27 1:48 ` Shawn Guo @ 2018-09-06 10:15 ` Mark Brown 2018-09-07 7:35 ` Oleksij Rempel 2018-09-09 2:00 ` Shawn Guo 0 siblings, 2 replies; 21+ messages in thread From: Mark Brown @ 2018-09-06 10:15 UTC (permalink / raw) To: linux-arm-kernel On Mon, Aug 27, 2018 at 09:48:16AM +0800, Shawn Guo wrote: > Can you ACK on those two regulator patches, so that I can queue this > series up on IMX tree? I was expecting to get a pull request with the precursor patches in it - the regulator driver seems to get a moderate amount of development so there's a reasonable risk of conflicts. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180906/467ef2ed/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-09-06 10:15 ` Mark Brown @ 2018-09-07 7:35 ` Oleksij Rempel 2018-09-09 2:00 ` Shawn Guo 1 sibling, 0 replies; 21+ messages in thread From: Oleksij Rempel @ 2018-09-07 7:35 UTC (permalink / raw) To: linux-arm-kernel Hi Mark, On Thu, Sep 06, 2018 at 11:15:17AM +0100, Mark Brown wrote: > On Mon, Aug 27, 2018 at 09:48:16AM +0800, Shawn Guo wrote: > > > Can you ACK on those two regulator patches, so that I can queue this > > series up on IMX tree? > > I was expecting to get a pull request with the precursor patches in it - > the regulator driver seems to get a moderate amount of development so > there's a reasonable risk of conflicts. Are there any thing I can or should do? -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180907/fbc8584a/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-09-06 10:15 ` Mark Brown 2018-09-07 7:35 ` Oleksij Rempel @ 2018-09-09 2:00 ` Shawn Guo 2018-09-10 15:19 ` Mark Brown 1 sibling, 1 reply; 21+ messages in thread From: Shawn Guo @ 2018-09-09 2:00 UTC (permalink / raw) To: linux-arm-kernel On Thu, Sep 06, 2018 at 11:15:17AM +0100, Mark Brown wrote: > On Mon, Aug 27, 2018 at 09:48:16AM +0800, Shawn Guo wrote: > > > Can you ACK on those two regulator patches, so that I can queue this > > series up on IMX tree? > > I was expecting to get a pull request with the precursor patches in it - > the regulator driver seems to get a moderate amount of development so > there's a reasonable risk of conflicts. What about you create a stable topic branch for regulator patches and I pull it into IMX tree? Shawn ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-09-09 2:00 ` Shawn Guo @ 2018-09-10 15:19 ` Mark Brown 2018-09-11 1:53 ` Shawn Guo 0 siblings, 1 reply; 21+ messages in thread From: Mark Brown @ 2018-09-10 15:19 UTC (permalink / raw) To: linux-arm-kernel On Sun, Sep 09, 2018 at 10:00:23AM +0800, Shawn Guo wrote: > On Thu, Sep 06, 2018 at 11:15:17AM +0100, Mark Brown wrote: > > I was expecting to get a pull request with the precursor patches in it - > > the regulator driver seems to get a moderate amount of development so > > there's a reasonable risk of conflicts. > What about you create a stable topic branch for regulator patches and I > pull it into IMX tree? Sure, I can send a pull request back but the first two patches in the series are ARM ones - are you OK with me just applying them and sending them in the pull request or do you want to apply them first? -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180910/a549cbdc/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-09-10 15:19 ` Mark Brown @ 2018-09-11 1:53 ` Shawn Guo 2018-09-11 4:36 ` Oleksij Rempel 2018-09-11 15:19 ` Mark Brown 0 siblings, 2 replies; 21+ messages in thread From: Shawn Guo @ 2018-09-11 1:53 UTC (permalink / raw) To: linux-arm-kernel On Mon, Sep 10, 2018 at 04:19:26PM +0100, Mark Brown wrote: > On Sun, Sep 09, 2018 at 10:00:23AM +0800, Shawn Guo wrote: > > On Thu, Sep 06, 2018 at 11:15:17AM +0100, Mark Brown wrote: > > > > I was expecting to get a pull request with the precursor patches in it - > > > the regulator driver seems to get a moderate amount of development so > > > there's a reasonable risk of conflicts. > > > What about you create a stable topic branch for regulator patches and I > > pull it into IMX tree? > > Sure, I can send a pull request back but the first two patches in the > series are ARM ones - are you OK with me just applying them and sending > them in the pull request or do you want to apply them first? I just took another look at the series. It seems that there is no build-time dependency between regulator and platform patches. So I think we can handle the series like: - You apply patch #3, #4 and #5 on regulator tree; - I apply the reset on IMX tree. There shouldn't be any build or run time regression on either tree, and the feature that the series adds will be available when both trees get merged together on -next or Linus tree. @Oleksij Is my understanding above correct? Shawn ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-09-11 1:53 ` Shawn Guo @ 2018-09-11 4:36 ` Oleksij Rempel 2018-09-11 15:19 ` Mark Brown 1 sibling, 0 replies; 21+ messages in thread From: Oleksij Rempel @ 2018-09-11 4:36 UTC (permalink / raw) To: linux-arm-kernel Hi Shawn, On 11.09.2018 03:53, Shawn Guo wrote: > On Mon, Sep 10, 2018 at 04:19:26PM +0100, Mark Brown wrote: >> On Sun, Sep 09, 2018 at 10:00:23AM +0800, Shawn Guo wrote: >>> On Thu, Sep 06, 2018 at 11:15:17AM +0100, Mark Brown wrote: >> >>>> I was expecting to get a pull request with the precursor patches in it - >>>> the regulator driver seems to get a moderate amount of development so >>>> there's a reasonable risk of conflicts. >> >>> What about you create a stable topic branch for regulator patches and I >>> pull it into IMX tree? >> >> Sure, I can send a pull request back but the first two patches in the >> series are ARM ones - are you OK with me just applying them and sending >> them in the pull request or do you want to apply them first? > > I just took another look at the series. It seems that there is no > build-time dependency between regulator and platform patches. So I > think we can handle the series like: > > - You apply patch #3, #4 and #5 on regulator tree; > - I apply the reset on IMX tree. > > There shouldn't be any build or run time regression on either tree, and > the feature that the series adds will be available when both trees get > merged together on -next or Linus tree. > > @Oleksij Is my understanding above correct? Yes. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: OpenPGP digital signature URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180911/72ac4272/attachment.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare 2018-09-11 1:53 ` Shawn Guo 2018-09-11 4:36 ` Oleksij Rempel @ 2018-09-11 15:19 ` Mark Brown 1 sibling, 0 replies; 21+ messages in thread From: Mark Brown @ 2018-09-11 15:19 UTC (permalink / raw) To: linux-arm-kernel On Tue, Sep 11, 2018 at 09:53:21AM +0800, Shawn Guo wrote: > There shouldn't be any build or run time regression on either tree, and > the feature that the series adds will be available when both trees get > merged together on -next or Linus tree. The following changes since commit 5b394b2ddf0347bef56e50c69a58773c94343ff3: Linux 4.19-rc1 (2018-08-26 14:11:59 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git tags/pfuze100-poweroff for you to fetch changes up to c29daffa322ad36978cbce487f8ebcd9c3c3f7c0: regulator: pfuze100-regulator: provide pm_power_off_prepare handler (2018-09-11 16:15:57 +0100) ---------------------------------------------------------------- regulator: pfuze100: Power off support The pfuze100 has some innovative and creative power off support which requires some cross tree work to handle; this tag is the regualtor bits of that work. ---------------------------------------------------------------- Oleksij Rempel (3): kernel/reboot.c: export pm_power_off_prepare regulator: pfuze100: add fsl,pmic-stby-poweroff property regulator: pfuze100-regulator: provide pm_power_off_prepare handler .../devicetree/bindings/regulator/pfuze100.txt | 5 ++ drivers/regulator/pfuze100-regulator.c | 91 ++++++++++++++++++++++ kernel/reboot.c | 1 + 3 files changed, 97 insertions(+) -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 488 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180911/9541d5f3/attachment-0001.sig> ^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v9 4/6] regulator: pfuze100: add fsl, pmic-stby-poweroff property 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel ` (2 preceding siblings ...) 2018-08-02 10:34 ` [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare Oleksij Rempel @ 2018-08-02 10:34 ` Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 5/6] regulator: pfuze100-regulator: provide pm_power_off_prepare handler Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option Oleksij Rempel 5 siblings, 0 replies; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel Document the new optional "fsl,pmic-stby-poweroff" property. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Acked-by: Rob Herring <robh@kernel.org> --- Documentation/devicetree/bindings/regulator/pfuze100.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt index c7610718adff..f9be1acf891c 100644 --- a/Documentation/devicetree/bindings/regulator/pfuze100.txt +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt @@ -12,6 +12,11 @@ Optional properties: disabled. This binding is a workaround to keep backward compatibility with old dtb's which rely on the fact that the switched regulators are always on and don't mark them explicit as "regulator-always-on". +- fsl,pmic-stby-poweroff: if present, configure the PMIC to shutdown all + power rails when PMIC_STBY_REQ line is asserted during the power off sequence. + Use this option if the SoC should be powered off by external power + management IC (PMIC) on PMIC_STBY_REQ signal. + As opposite to PMIC_STBY_REQ boards can implement PMIC_ON_REQ signal. Required child node: - regulators: This is the list of child nodes that specify the regulator -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v9 5/6] regulator: pfuze100-regulator: provide pm_power_off_prepare handler 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel ` (3 preceding siblings ...) 2018-08-02 10:34 ` [PATCH v9 4/6] regulator: pfuze100: add fsl, pmic-stby-poweroff property Oleksij Rempel @ 2018-08-02 10:34 ` Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option Oleksij Rempel 5 siblings, 0 replies; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel On some boards the SoC can use one pin "PMIC_STBY_REQ" to notify th PMIC about state changes. In this case internal state of PMIC must be preconfigured for upcomming state change. It works fine with the current regulator framework, except with the power-off case. This patch is providing an optional pm_power_off_prepare handler which will configure standby state of the PMIC to disable all power lines. In my power consumption test on RIoTBoard, I got the following results: power off without this patch: 320 mA power off with this patch: 2 mA suspend to ram: 40 mA Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- drivers/regulator/pfuze100-regulator.c | 91 ++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c index 31c3a236120a..1e43a9de3bd5 100644 --- a/drivers/regulator/pfuze100-regulator.c +++ b/drivers/regulator/pfuze100-regulator.c @@ -31,11 +31,17 @@ #define PFUZE100_COINVOL 0x1a #define PFUZE100_SW1ABVOL 0x20 +#define PFUZE100_SW1ABMODE 0x23 #define PFUZE100_SW1CVOL 0x2e +#define PFUZE100_SW1CMODE 0x31 #define PFUZE100_SW2VOL 0x35 +#define PFUZE100_SW2MODE 0x38 #define PFUZE100_SW3AVOL 0x3c +#define PFUZE100_SW3AMODE 0x3f #define PFUZE100_SW3BVOL 0x43 +#define PFUZE100_SW3BMODE 0x46 #define PFUZE100_SW4VOL 0x4a +#define PFUZE100_SW4MODE 0x4d #define PFUZE100_SWBSTCON1 0x66 #define PFUZE100_VREFDDRCON 0x6a #define PFUZE100_VSNVSVOL 0x6b @@ -46,6 +52,13 @@ #define PFUZE100_VGEN5VOL 0x70 #define PFUZE100_VGEN6VOL 0x71 +#define PFUZE100_SWxMODE_MASK 0xf +#define PFUZE100_SWxMODE_APS_APS 0x8 +#define PFUZE100_SWxMODE_APS_OFF 0x4 + +#define PFUZE100_VGENxLPWR BIT(6) +#define PFUZE100_VGENxSTBY BIT(5) + enum chips { PFUZE100, PFUZE200, PFUZE3000 = 3, PFUZE3001 = 0x31, }; struct pfuze_regulator { @@ -559,6 +572,69 @@ static inline struct device_node *match_of_node(int index) } #endif +static struct pfuze_chip *syspm_pfuze_chip; + +static void pfuze_power_off_prepare(void) +{ + dev_info(syspm_pfuze_chip->dev, "Configure standy mode for power off"); + + /* Switch from default mode: APS/APS to APS/Off */ + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_SW1ABMODE, + PFUZE100_SWxMODE_MASK, PFUZE100_SWxMODE_APS_OFF); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_SW1CMODE, + PFUZE100_SWxMODE_MASK, PFUZE100_SWxMODE_APS_OFF); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_SW2MODE, + PFUZE100_SWxMODE_MASK, PFUZE100_SWxMODE_APS_OFF); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_SW3AMODE, + PFUZE100_SWxMODE_MASK, PFUZE100_SWxMODE_APS_OFF); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_SW3BMODE, + PFUZE100_SWxMODE_MASK, PFUZE100_SWxMODE_APS_OFF); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_SW4MODE, + PFUZE100_SWxMODE_MASK, PFUZE100_SWxMODE_APS_OFF); + + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_VGEN1VOL, + PFUZE100_VGENxLPWR | PFUZE100_VGENxSTBY, + PFUZE100_VGENxSTBY); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_VGEN2VOL, + PFUZE100_VGENxLPWR | PFUZE100_VGENxSTBY, + PFUZE100_VGENxSTBY); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_VGEN3VOL, + PFUZE100_VGENxLPWR | PFUZE100_VGENxSTBY, + PFUZE100_VGENxSTBY); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_VGEN4VOL, + PFUZE100_VGENxLPWR | PFUZE100_VGENxSTBY, + PFUZE100_VGENxSTBY); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_VGEN5VOL, + PFUZE100_VGENxLPWR | PFUZE100_VGENxSTBY, + PFUZE100_VGENxSTBY); + regmap_update_bits(syspm_pfuze_chip->regmap, PFUZE100_VGEN6VOL, + PFUZE100_VGENxLPWR | PFUZE100_VGENxSTBY, + PFUZE100_VGENxSTBY); +} + +static int pfuze_power_off_prepare_init(struct pfuze_chip *pfuze_chip) +{ + if (pfuze_chip->chip_id != PFUZE100) { + dev_warn(pfuze_chip->dev, "Requested pm_power_off_prepare handler for not supported chip\n"); + return -ENODEV; + } + + if (pm_power_off_prepare) { + dev_warn(pfuze_chip->dev, "pm_power_off_prepare is already registered.\n"); + return -EBUSY; + } + + if (syspm_pfuze_chip) { + dev_warn(pfuze_chip->dev, "syspm_pfuze_chip is already set.\n"); + return -EBUSY; + } + + syspm_pfuze_chip = pfuze_chip; + pm_power_off_prepare = pfuze_power_off_prepare; + + return 0; +} + static int pfuze_identify(struct pfuze_chip *pfuze_chip) { unsigned int value; @@ -753,6 +829,20 @@ static int pfuze100_regulator_probe(struct i2c_client *client, } } + if (of_property_read_bool(client->dev.of_node, + "fsl,pmic-stby-poweroff")) + return pfuze_power_off_prepare_init(pfuze_chip); + + return 0; +} + +static int pfuze100_regulator_remove(struct i2c_client *client) +{ + if (syspm_pfuze_chip) { + syspm_pfuze_chip = NULL; + pm_power_off_prepare = NULL; + } + return 0; } @@ -763,6 +853,7 @@ static struct i2c_driver pfuze_driver = { .of_match_table = pfuze_dt_ids, }, .probe = pfuze100_regulator_probe, + .remove = pfuze100_regulator_remove, }; module_i2c_driver(pfuze_driver); -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v9 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel ` (4 preceding siblings ...) 2018-08-02 10:34 ` [PATCH v9 5/6] regulator: pfuze100-regulator: provide pm_power_off_prepare handler Oleksij Rempel @ 2018-08-02 10:34 ` Oleksij Rempel 2018-09-12 1:11 ` Shawn Guo 5 siblings, 1 reply; 21+ messages in thread From: Oleksij Rempel @ 2018-08-02 10:34 UTC (permalink / raw) To: linux-arm-kernel This board, as well as some other boards with i.MX6 and a PMIC, uses a "PMIC_STBY_REQ" line to notify the PMIC about a state change. The PMIC is programmed for a specific state change before triggering the line. In this case, PMIC_STBY_REQ can be used for stand by, sleep and power off modes. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- arch/arm/boot/dts/imx6dl-riotboard.dts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm/boot/dts/imx6dl-riotboard.dts b/arch/arm/boot/dts/imx6dl-riotboard.dts index 2e98c92adff7..a0e9753ee767 100644 --- a/arch/arm/boot/dts/imx6dl-riotboard.dts +++ b/arch/arm/boot/dts/imx6dl-riotboard.dts @@ -90,6 +90,10 @@ status = "okay"; }; +&clks { + fsl,pmic-stby-poweroff; +}; + &fec { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enet>; @@ -170,6 +174,7 @@ reg = <0x08>; interrupt-parent = <&gpio5>; interrupts = <16 8>; + fsl,pmic-stby-poweroff; regulators { reg_vddcore: sw1ab { /* VDDARM_IN */ -- 2.18.0 ^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v9 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option 2018-08-02 10:34 ` [PATCH v9 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option Oleksij Rempel @ 2018-09-12 1:11 ` Shawn Guo 0 siblings, 0 replies; 21+ messages in thread From: Shawn Guo @ 2018-09-12 1:11 UTC (permalink / raw) To: linux-arm-kernel On Thu, Aug 02, 2018 at 12:34:25PM +0200, Oleksij Rempel wrote: > This board, as well as some other boards with i.MX6 and a PMIC, uses a > "PMIC_STBY_REQ" line to notify the PMIC about a state change. > The PMIC is programmed for a specific state change before triggering the > line. > In this case, PMIC_STBY_REQ can be used for stand by, sleep > and power off modes. > > Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Applied, thanks. ^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2018-09-12 1:11 UTC | newest] Thread overview: 21+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-08-02 10:34 [PATCH v9 0/6] provide power off support for iMX6 with external PMIC Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl, pmic-stby-poweroff property Oleksij Rempel 2018-09-12 1:04 ` [PATCH v9 1/6] ARM: imx6q: provide documentation for new fsl,pmic-stby-poweroff property Shawn Guo 2018-08-02 10:34 ` [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl, pmic-stby-poweroff" is set Oleksij Rempel 2018-09-12 1:10 ` [PATCH v9 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" " Shawn Guo 2018-08-02 10:34 ` [PATCH v9 3/6] kernel/reboot.c: export pm_power_off_prepare Oleksij Rempel 2018-08-02 10:44 ` Mark Brown 2018-08-02 10:47 ` Oleksij Rempel 2018-08-02 11:35 ` Mark Brown 2018-08-27 1:48 ` Shawn Guo 2018-09-06 10:15 ` Mark Brown 2018-09-07 7:35 ` Oleksij Rempel 2018-09-09 2:00 ` Shawn Guo 2018-09-10 15:19 ` Mark Brown 2018-09-11 1:53 ` Shawn Guo 2018-09-11 4:36 ` Oleksij Rempel 2018-09-11 15:19 ` Mark Brown 2018-08-02 10:34 ` [PATCH v9 4/6] regulator: pfuze100: add fsl, pmic-stby-poweroff property Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 5/6] regulator: pfuze100-regulator: provide pm_power_off_prepare handler Oleksij Rempel 2018-08-02 10:34 ` [PATCH v9 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option Oleksij Rempel 2018-09-12 1:11 ` Shawn Guo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).