2018-03-05 10:43:25

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH RESEND v6 0/6] provide power off support for iMX6 with external PMIC

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:
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 ++
.../devicetree/bindings/regulator/pfuze100.txt | 7 ++
arch/arm/boot/dts/imx6dl-riotboard.dts | 5 ++
arch/arm/mach-imx/pm-imx6.c | 25 ++++++
drivers/regulator/pfuze100-regulator.c | 92 ++++++++++++++++++++++
kernel/reboot.c | 1 +
6 files changed, 138 insertions(+)

--
2.16.1



2018-03-05 11:01:21

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare

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 <[email protected]>
---
kernel/reboot.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/reboot.c b/kernel/reboot.c
index e4ced883d8de..350be6baa60d 100644
--- a/kernel/reboot.c
+++ b/kernel/reboot.c
@@ -49,6 +49,7 @@ int reboot_force;
*/

void (*pm_power_off_prepare)(void);
+EXPORT_SYMBOL(pm_power_off_prepare);

/**
* emergency_restart - reboot the system
--
2.16.1


2018-03-05 11:02:10

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v6 4/6] regulator: pfuze100: add fsl,pmic-stby-poweroff property

Document the new optional "fsl,pmic-stby-poweroff" property.

Signed-off-by: Oleksij Rempel <[email protected]>
Acked-by: Rob Herring <[email protected]>
---
Documentation/devicetree/bindings/regulator/pfuze100.txt | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt
index c6dd3f5e485b..91fec1a0785d 100644
--- a/Documentation/devicetree/bindings/regulator/pfuze100.txt
+++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt
@@ -4,6 +4,13 @@ Required properties:
- compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000"
- reg: I2C slave address

+Optional properties:
+- 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
initialization data for defined regulators. Please refer to below doc
--
2.16.1


2018-03-05 11:26:52

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v6 6/6] ARM: dts: imx6: RIoTboard provide standby on power off option

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 <[email protected]>
---
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 23e108204e1e..c507532baed3 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.16.1


2018-03-05 11:27:03

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v6 1/6] ARM: imx6q: provide documentation for new fsl,pmic-stby-poweroff property

Signed-off-by: Oleksij Rempel <[email protected]>
Acked-by: Rob Herring <[email protected]>
---
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.16.1


2018-03-05 11:27:33

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v6 5/6] regulator: pfuze100-regulator: provide pm_power_off_prepare handler

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 <[email protected]>
---
drivers/regulator/pfuze100-regulator.c | 92 ++++++++++++++++++++++++++++++++++
1 file changed, 92 insertions(+)

diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
index 63922a2167e5..f6c276ed91d8 100644
--- a/drivers/regulator/pfuze100-regulator.c
+++ b/drivers/regulator/pfuze100-regulator.c
@@ -28,6 +28,7 @@
#include <linux/regulator/pfuze100.h>
#include <linux/i2c.h>
#include <linux/slab.h>
+#include <linux/kallsyms.h>
#include <linux/regmap.h>

#define PFUZE_NUMREGS 128
@@ -42,11 +43,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
@@ -57,6 +64,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 };

struct pfuze_regulator {
@@ -489,6 +503,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;
@@ -659,6 +736,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;
}

@@ -669,6 +760,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.16.1


2018-03-05 13:39:50

by Oleksij Rempel

[permalink] [raw]
Subject: [PATCH v6 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set

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 <[email protected]>
---
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 ecdf071653d4..24689260a2a5 100644
--- a/arch/arm/mach-imx/pm-imx6.c
+++ b/arch/arm/mach-imx/pm-imx6.c
@@ -604,6 +604,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);
+ cpu_suspend(0, imx6q_suspend_finish);
+
+ 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;
@@ -620,6 +642,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.16.1


2018-04-03 06:01:17

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH RESEND v6 0/6] provide power off support for iMX6 with external PMIC

ping,

this week is a merge window. Any chance to get it in to 4.17?

On 05.03.2018 11:25, Oleksij Rempel wrote:
> 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:
> 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 ++
> .../devicetree/bindings/regulator/pfuze100.txt | 7 ++
> arch/arm/boot/dts/imx6dl-riotboard.dts | 5 ++
> arch/arm/mach-imx/pm-imx6.c | 25 ++++++
> drivers/regulator/pfuze100-regulator.c | 92 ++++++++++++++++++++++
> kernel/reboot.c | 1 +
> 6 files changed, 138 insertions(+)
>


Attachments:
signature.asc (499.00 B)
OpenPGP digital signature

2018-04-09 11:42:07

by Shawn Guo

[permalink] [raw]
Subject: Re: [PATCH RESEND v6 0/6] provide power off support for iMX6 with external PMIC

On Mon, Mar 05, 2018 at 11:25:17AM +0100, Oleksij Rempel wrote:
> 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.

Besides regulator changes, I did not see an ACK on kernel/reboot.c
either.

Shawn

2018-04-09 11:43:52

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH RESEND v6 0/6] provide power off support for iMX6 with external PMIC

On Mon, Apr 09, 2018 at 07:37:45PM +0800, Shawn Guo wrote:
> On Mon, Mar 05, 2018 at 11:25:17AM +0100, Oleksij Rempel wrote:

> > 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.

> Besides regulator changes, I did not see an ACK on kernel/reboot.c
> either.

Right, that's the big blocker here.


Attachments:
(No filename) (492.00 B)
signature.asc (499.00 B)
Download all attachments

2018-04-09 11:48:16

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH RESEND v6 0/6] provide power off support for iMX6 with external PMIC

On 09.04.2018 13:40, Mark Brown wrote:
> On Mon, Apr 09, 2018 at 07:37:45PM +0800, Shawn Guo wrote:
>> On Mon, Mar 05, 2018 at 11:25:17AM +0100, Oleksij Rempel wrote:
>
>>> 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.
>
>> Besides regulator changes, I did not see an ACK on kernel/reboot.c
>> either.
>
> Right, that's the big blocker here.
>

Ok, Who should ACK it?


Attachments:
signature.asc (499.00 B)
OpenPGP digital signature

2018-05-04 18:51:24

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare

Hallo Andrew,
I need your ACK or NACK for this patch.

This function is used to configure external PMIC to interpret
signal which will be triggered by pm_power_off as power off.
Since same signal can be used for stand by, I linked PMIC configuration
with pm_power_off_prepare to avoid possible conflicts.

On Mon, Mar 05, 2018 at 11:25:20AM +0100, 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).
>
> Signed-off-by: Oleksij Rempel <[email protected]>
> ---
> kernel/reboot.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/reboot.c b/kernel/reboot.c
> index e4ced883d8de..350be6baa60d 100644
> --- a/kernel/reboot.c
> +++ b/kernel/reboot.c
> @@ -49,6 +49,7 @@ int reboot_force;
> */
>
> void (*pm_power_off_prepare)(void);
> +EXPORT_SYMBOL(pm_power_off_prepare);
>
> /**
> * emergency_restart - reboot the system
> --
> 2.16.1
>
>

--
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 |


Attachments:
(No filename) (1.32 kB)
signature.asc (499.00 B)
Download all attachments

2018-05-04 20:50:49

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare

On Fri, 4 May 2018 20:50:52 +0200 Oleksij Rempel <[email protected]> wrote:

> Hallo Andrew,
> I need your ACK or NACK for this patch.
>
> This function is used to configure external PMIC to interpret
> signal which will be triggered by pm_power_off as power off.
> Since same signal can be used for stand by, I linked PMIC configuration
> with pm_power_off_prepare to avoid possible conflicts.
>
> ...
>
> > --- a/kernel/reboot.c
> > +++ b/kernel/reboot.c
> > @@ -49,6 +49,7 @@ int reboot_force;
> > */
> >
> > void (*pm_power_off_prepare)(void);
> > +EXPORT_SYMBOL(pm_power_off_prepare);
> >

OK by me, but it's more of a Rafael thing.

2018-05-05 07:02:42

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare

Moving Rafael from Cc to To.

Hi Rafael,

can you please help here?
I need your ACK or NACK for this patch.

On Fri, May 04, 2018 at 01:49:56PM -0700, Andrew Morton wrote:
> On Fri, 4 May 2018 20:50:52 +0200 Oleksij Rempel <[email protected]> wrote:
>
> > Hallo Andrew,
> > I need your ACK or NACK for this patch.
> >
> > This function is used to configure external PMIC to interpret
> > signal which will be triggered by pm_power_off as power off.
> > Since same signal can be used for stand by, I linked PMIC configuration
> > with pm_power_off_prepare to avoid possible conflicts.
> >
> > ...
> >
> > > --- a/kernel/reboot.c
> > > +++ b/kernel/reboot.c
> > > @@ -49,6 +49,7 @@ int reboot_force;
> > > */
> > >
> > > void (*pm_power_off_prepare)(void);
> > > +EXPORT_SYMBOL(pm_power_off_prepare);
> > >
>
> OK by me, but it's more of a Rafael thing.
>

--
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 |


Attachments:
(No filename) (1.19 kB)
signature.asc (499.00 B)
Download all attachments

2018-05-08 12:42:33

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH v6 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set

On Mon, Mar 05, 2018 at 11:25:19AM +0100, 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 <[email protected]>
> ---
> 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 ecdf071653d4..24689260a2a5 100644
> --- a/arch/arm/mach-imx/pm-imx6.c
> +++ b/arch/arm/mach-imx/pm-imx6.c
> @@ -604,6 +604,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);
> + cpu_suspend(0, imx6q_suspend_finish);

Do you actually need to save the processor state etc here - the request
is after all to power down the system and not to suspend. Would calling
imx6q_suspend_finish() directly work (and hence simplify the code) ?

--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

2018-05-08 21:41:33

by Wysocki, Rafael J

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare

On 5/5/2018 9:01 AM, Oleksij Rempel wrote:
> Moving Rafael from Cc to To.
>
> Hi Rafael,
>
> can you please help here?
> I need your ACK or NACK for this patch.

Sorry for the delay, I'll have a closer look at it in the next couple of
days.

Thanks,
Rafael


> On Fri, May 04, 2018 at 01:49:56PM -0700, Andrew Morton wrote:
>> On Fri, 4 May 2018 20:50:52 +0200 Oleksij Rempel <[email protected]> wrote:
>>
>>> Hallo Andrew,
>>> I need your ACK or NACK for this patch.
>>>
>>> This function is used to configure external PMIC to interpret
>>> signal which will be triggered by pm_power_off as power off.
>>> Since same signal can be used for stand by, I linked PMIC configuration
>>> with pm_power_off_prepare to avoid possible conflicts.
>>>
>>> ...
>>>
>>>> --- a/kernel/reboot.c
>>>> +++ b/kernel/reboot.c
>>>> @@ -49,6 +49,7 @@ int reboot_force;
>>>> */
>>>>
>>>> void (*pm_power_off_prepare)(void);
>>>> +EXPORT_SYMBOL(pm_power_off_prepare);
>>>>
>> OK by me, but it's more of a Rafael thing.
>>


2018-05-09 05:09:13

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v6 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set

On Tue, May 08, 2018 at 01:40:33PM +0100, Russell King - ARM Linux wrote:
> On Mon, Mar 05, 2018 at 11:25:19AM +0100, 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 <[email protected]>
> > ---
> > 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 ecdf071653d4..24689260a2a5 100644
> > --- a/arch/arm/mach-imx/pm-imx6.c
> > +++ b/arch/arm/mach-imx/pm-imx6.c
> > @@ -604,6 +604,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);
> > + cpu_suspend(0, imx6q_suspend_finish);
>
> Do you actually need to save the processor state etc here - the request
> is after all to power down the system and not to suspend. Would calling
> imx6q_suspend_finish() directly work (and hence simplify the code) ?

yes you right. This will work as well.
I'll send changed version after Rafaels feedback for kernel/reboot.c
part.
Russell, can I expect your Signed-off-by for changed patch?

--
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 |


Attachments:
(No filename) (1.90 kB)
signature.asc (499.00 B)
Download all attachments

2018-05-09 09:03:19

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH v6 2/6] ARM: imx6: register pm_power_off handler if "fsl,pmic-stby-poweroff" is set

On Wed, May 09, 2018 at 07:06:28AM +0200, Oleksij Rempel wrote:
> On Tue, May 08, 2018 at 01:40:33PM +0100, Russell King - ARM Linux wrote:
> > On Mon, Mar 05, 2018 at 11:25:19AM +0100, 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 <[email protected]>
> > > ---
> > > 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 ecdf071653d4..24689260a2a5 100644
> > > --- a/arch/arm/mach-imx/pm-imx6.c
> > > +++ b/arch/arm/mach-imx/pm-imx6.c
> > > @@ -604,6 +604,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);
> > > + cpu_suspend(0, imx6q_suspend_finish);
> >
> > Do you actually need to save the processor state etc here - the request
> > is after all to power down the system and not to suspend. Would calling
> > imx6q_suspend_finish() directly work (and hence simplify the code) ?
>
> yes you right. This will work as well.
> I'll send changed version after Rafaels feedback for kernel/reboot.c
> part.
> Russell, can I expect your Signed-off-by for changed patch?

No, please read Documentation/process/submitting-patches.rst section 12.
s-o-b does not apply in this case.

--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
According to speedtest.net: 8.21Mbps down 510kbps up

2018-05-12 11:15:35

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare

On Friday, May 4, 2018 8:50:52 PM CEST Oleksij Rempel wrote:
> Hallo Andrew,
> I need your ACK or NACK for this patch.
>
> This function is used to configure external PMIC to interpret
> signal which will be triggered by pm_power_off as power off.
> Since same signal can be used for stand by, I linked PMIC configuration
> with pm_power_off_prepare to avoid possible conflicts.
>
> On Mon, Mar 05, 2018 at 11:25:20AM +0100, 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).
> >
> > Signed-off-by: Oleksij Rempel <[email protected]>
> > ---
> > kernel/reboot.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/kernel/reboot.c b/kernel/reboot.c
> > index e4ced883d8de..350be6baa60d 100644
> > --- a/kernel/reboot.c
> > +++ b/kernel/reboot.c
> > @@ -49,6 +49,7 @@ int reboot_force;
> > */
> >
> > void (*pm_power_off_prepare)(void);
> > +EXPORT_SYMBOL(pm_power_off_prepare);

Why not EXPORT_SYMBOL_GPL() ?

> >
> > /**
> > * emergency_restart - reboot the system
>
>



2018-05-14 04:35:21

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare



On 12.05.2018 13:13, Rafael J. Wysocki wrote:
> On Friday, May 4, 2018 8:50:52 PM CEST Oleksij Rempel wrote:
>> Hallo Andrew,
>> I need your ACK or NACK for this patch.
>>
>> This function is used to configure external PMIC to interpret
>> signal which will be triggered by pm_power_off as power off.
>> Since same signal can be used for stand by, I linked PMIC configuration
>> with pm_power_off_prepare to avoid possible conflicts.
>>
>> On Mon, Mar 05, 2018 at 11:25:20AM +0100, 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).
>>>
>>> Signed-off-by: Oleksij Rempel <[email protected]>
>>> ---
>>> kernel/reboot.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/kernel/reboot.c b/kernel/reboot.c
>>> index e4ced883d8de..350be6baa60d 100644
>>> --- a/kernel/reboot.c
>>> +++ b/kernel/reboot.c
>>> @@ -49,6 +49,7 @@ int reboot_force;
>>> */
>>>
>>> void (*pm_power_off_prepare)(void);
>>> +EXPORT_SYMBOL(pm_power_off_prepare);
>
> Why not EXPORT_SYMBOL_GPL() ?

No special reason. Fixed.
Any other comments?


Attachments:
signature.asc (499.00 B)
OpenPGP digital signature

2018-05-14 05:11:26

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare



On 14.05.2018 06:33, Oleksij Rempel wrote:
>
>
> On 12.05.2018 13:13, Rafael J. Wysocki wrote:
>> On Friday, May 4, 2018 8:50:52 PM CEST Oleksij Rempel wrote:
>>> Hallo Andrew,
>>> I need your ACK or NACK for this patch.
>>>
>>> This function is used to configure external PMIC to interpret
>>> signal which will be triggered by pm_power_off as power off.
>>> Since same signal can be used for stand by, I linked PMIC configuration
>>> with pm_power_off_prepare to avoid possible conflicts.
>>>
>>> On Mon, Mar 05, 2018 at 11:25:20AM +0100, 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).
>>>>
>>>> Signed-off-by: Oleksij Rempel <[email protected]>
>>>> ---
>>>> kernel/reboot.c | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/kernel/reboot.c b/kernel/reboot.c
>>>> index e4ced883d8de..350be6baa60d 100644
>>>> --- a/kernel/reboot.c
>>>> +++ b/kernel/reboot.c
>>>> @@ -49,6 +49,7 @@ int reboot_force;
>>>> */
>>>>
>>>> void (*pm_power_off_prepare)(void);
>>>> +EXPORT_SYMBOL(pm_power_off_prepare);
>>
>> Why not EXPORT_SYMBOL_GPL() ?
>
> No special reason. Fixed.
> Any other comments?
>

Or with other words, will it be enough to get your Signed-of-by for this
patch?


Attachments:
signature.asc (499.00 B)
OpenPGP digital signature

2018-05-14 10:13:04

by Oleksij Rempel

[permalink] [raw]
Subject: Re: [PATCH v6 3/6] kernel/reboot.c: export pm_power_off_prepare



On 14.05.2018 07:10, Oleksij Rempel wrote:
>
>
> On 14.05.2018 06:33, Oleksij Rempel wrote:
>>
>>
>> On 12.05.2018 13:13, Rafael J. Wysocki wrote:
>>> On Friday, May 4, 2018 8:50:52 PM CEST Oleksij Rempel wrote:
>>>> Hallo Andrew,
>>>> I need your ACK or NACK for this patch.
>>>>
>>>> This function is used to configure external PMIC to interpret
>>>> signal which will be triggered by pm_power_off as power off.
>>>> Since same signal can be used for stand by, I linked PMIC configuration
>>>> with pm_power_off_prepare to avoid possible conflicts.
>>>>
>>>> On Mon, Mar 05, 2018 at 11:25:20AM +0100, 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).
>>>>>
>>>>> Signed-off-by: Oleksij Rempel <[email protected]>
>>>>> ---
>>>>> kernel/reboot.c | 1 +
>>>>> 1 file changed, 1 insertion(+)
>>>>>
>>>>> diff --git a/kernel/reboot.c b/kernel/reboot.c
>>>>> index e4ced883d8de..350be6baa60d 100644
>>>>> --- a/kernel/reboot.c
>>>>> +++ b/kernel/reboot.c
>>>>> @@ -49,6 +49,7 @@ int reboot_force;
>>>>> */
>>>>>
>>>>> void (*pm_power_off_prepare)(void);
>>>>> +EXPORT_SYMBOL(pm_power_off_prepare);
>>>
>>> Why not EXPORT_SYMBOL_GPL() ?
>>
>> No special reason. Fixed.
>> Any other comments?
>>
>
> Or with other words, will it be enough to get your Signed-of-by for this
> patch?

Hi again,

i was punished by my colleagues and actually by Russel for asking
"Signed-of-by". So, I correct my self, is it enough for a Reviewed-by?


Attachments:
signature.asc (499.00 B)
OpenPGP digital signature

2017-11-02 05:34:50

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH v6 1/6] ARM: imx6q: provide documentation for new fsl,pmic-stby-poweroff property

On 10/27, Oleksij Rempel wrote:
> Signed-off-by: Oleksij Rempel <[email protected]>
> Acked-by: Rob Herring <[email protected]>
> ---

Acked-by: Stephen Boyd <[email protected]>

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

From 1582403810537612798@xxx Fri Oct 27 09:51:12 +0000 2017
X-GM-THRID: 1582403810537612798
X-Gmail-Labels: Inbox,Category Forums