devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] add power off driver for i.mx6
@ 2014-09-12  8:48 Robin Gong
  2014-09-12  8:48 ` [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips Robin Gong
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-12  8:48 UTC (permalink / raw)
  To: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	shawn.guo, kernel, sre, dbaryshkov, dwmw2, grant.likely, linux
  Cc: devicetree, linux-kernel, linux-pm, linux-arm-kernel

Add simple power off driver for i.mx6, including:
- add basic imx-snvs-poweroff driver in drivers/power/reset
- add device node in all dts files of i.mx6.
- enable in config file

Robin Gong (3):
  ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  power: reset: imx-snvs-poweroff: add power off driver for i.mx6
  ARM: configs: imx_v6_v7_defconfig: add power off driver

 arch/arm/boot/dts/imx6qdl.dtsi          |  5 +++
 arch/arm/boot/dts/imx6sl.dtsi           |  5 +++
 arch/arm/boot/dts/imx6sx.dtsi           |  5 +++
 arch/arm/configs/imx_v6_v7_defconfig    |  3 ++
 drivers/power/reset/Kconfig             |  5 +++
 drivers/power/reset/Makefile            |  1 +
 drivers/power/reset/imx-snvs-poweroff.c | 69 +++++++++++++++++++++++++++++++++
 7 files changed, 93 insertions(+)
 create mode 100644 drivers/power/reset/imx-snvs-poweroff.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-12  8:48 [PATCH v2 0/3] add power off driver for i.mx6 Robin Gong
@ 2014-09-12  8:48 ` Robin Gong
       [not found]   ` <1410511739-31122-2-git-send-email-b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
  2014-09-17  2:10   ` Shawn Guo
  2014-09-12  8:48 ` [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6 Robin Gong
  2014-09-12  8:48 ` [PATCH v2 3/3] ARM: configs: imx_v6_v7_defconfig: add power off driver Robin Gong
  2 siblings, 2 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-12  8:48 UTC (permalink / raw)
  To: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	shawn.guo, kernel, sre, dbaryshkov, dwmw2, grant.likely, linux
  Cc: devicetree, linux-kernel, linux-pm, linux-arm-kernel

All chips of i.mx6 can be powered off by programming SNVS.
For example :
On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
pmic ON/OFF pin, that will cause the whole PMIC powered off
except VSNVS. And system can restart once PMIC_ON_REQ goes
high by push POWRER key.

Signed-off-by: Robin Gong <b38343@freescale.com>
---
 .../bindings/power_supply/imx-snvs-poweroff.txt     | 21 +++++++++++++++++++++
 arch/arm/boot/dts/imx6qdl.dtsi                      |  5 +++++
 arch/arm/boot/dts/imx6sl.dtsi                       |  5 +++++
 arch/arm/boot/dts/imx6sx.dtsi                       |  5 +++++
 4 files changed, 36 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt

diff --git a/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
new file mode 100644
index 0000000..1a3ab9a
--- /dev/null
+++ b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
@@ -0,0 +1,21 @@
+i.mx6 Poweroff Driver
+
+SNVS_LPCR in SNVS module can power off the whole system by pull
+PMIC_ON_REQ low.
+
+Required Properties:
+-compatible: "fsl,sec-v4.0-poweroff"
+-reg: Specifies the physical address of the SNVS_LPCR register
+
+Example:
+	snvs@020cc000 {
+		compatible = "fsl,sec-v4.0-mon", "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0 0x020cc000 0x4000>;
+		.....
+		snvs-poweroff@38 {
+			compatible = "fsl,sec-v4.0-poweroff";
+			reg = <0x38 0x4>;
+		};
+	}
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
index 70d7207..d2d7563 100644
--- a/arch/arm/boot/dts/imx6qdl.dtsi
+++ b/arch/arm/boot/dts/imx6qdl.dtsi
@@ -650,6 +650,11 @@
 					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
 						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
 				};
+
+				snvs-poweroff@38 {
+					compatible = "fsl,sec-v4.0-poweroff";
+					reg = <0x38 0x4>;
+				};
 			};
 
 			epit1: epit@020d0000 { /* EPIT1 */
diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
index ba67714..6e1d8f6 100644
--- a/arch/arm/boot/dts/imx6sl.dtsi
+++ b/arch/arm/boot/dts/imx6sl.dtsi
@@ -568,6 +568,11 @@
 					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
 						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
 				};
+
+				snvs-poweroff@38 {
+					compatible = "fsl,sec-v4.0-poweroff";
+					reg = <0x38 0x4>;
+				};
 			};
 
 			epit1: epit@020d0000 {
diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
index d137caca..c1f937e 100644
--- a/arch/arm/boot/dts/imx6sx.dtsi
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -671,6 +671,11 @@
 					reg = <0x34 0x58>;
 					interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
 				};
+
+				snvs-poweroff@38 {
+					compatible = "fsl,sec-v4.0-poweroff";
+					reg = <0x38 0x4>;
+				};
 			};
 
 			epit1: epit@020d0000 {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6
  2014-09-12  8:48 [PATCH v2 0/3] add power off driver for i.mx6 Robin Gong
  2014-09-12  8:48 ` [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips Robin Gong
@ 2014-09-12  8:48 ` Robin Gong
  2014-09-17  2:06   ` Shawn Guo
  2014-09-12  8:48 ` [PATCH v2 3/3] ARM: configs: imx_v6_v7_defconfig: add power off driver Robin Gong
  2 siblings, 1 reply; 15+ messages in thread
From: Robin Gong @ 2014-09-12  8:48 UTC (permalink / raw)
  To: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	shawn.guo, kernel, sre, dbaryshkov, dwmw2, grant.likely, linux
  Cc: devicetree, linux-kernel, linux-pm, linux-arm-kernel

Add simple power off driver for i.mx6.

Signed-off-by: Robin Gong <b38343@freescale.com>
---
 drivers/power/reset/Kconfig             |  6 +++
 drivers/power/reset/Makefile            |  1 +
 drivers/power/reset/imx-snvs-poweroff.c | 69 +++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+)
 create mode 100644 drivers/power/reset/imx-snvs-poweroff.c

diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index ca41523..c48d9ba 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -45,6 +45,12 @@ config POWER_RESET_HISI
 	help
 	  Reboot support for Hisilicon boards.
 
+config POWER_RESET_IMX
+	bool "IMX6 power-off driver"
+	depends on POWER_RESET && SOC_IMX6
+	help
+	  Power off support for i.mx6 boards.
+
 config POWER_RESET_MSM
 	bool "Qualcomm MSM power-off driver"
 	depends on POWER_RESET && ARCH_QCOM
diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
index a42e70e..2524daf 100644
--- a/drivers/power/reset/Makefile
+++ b/drivers/power/reset/Makefile
@@ -3,6 +3,7 @@ obj-$(CONFIG_POWER_RESET_AXXIA) += axxia-reset.o
 obj-$(CONFIG_POWER_RESET_BRCMSTB) += brcmstb-reboot.o
 obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o
 obj-$(CONFIG_POWER_RESET_HISI) += hisi-reboot.o
+obj-$(CONFIG_POWER_RESET_IMX) += imx-snvs-poweroff.o
 obj-$(CONFIG_POWER_RESET_MSM) += msm-poweroff.o
 obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
 obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
diff --git a/drivers/power/reset/imx-snvs-poweroff.c b/drivers/power/reset/imx-snvs-poweroff.c
new file mode 100644
index 0000000..55603ba
--- /dev/null
+++ b/drivers/power/reset/imx-snvs-poweroff.c
@@ -0,0 +1,69 @@
+/* Power off driver for i.mx6
+ * Copyright (c) 2014, FREESCALE CORPORATION.  All rights reserved.
+ *
+ * based on msm-poweroff.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/platform_device.h>
+
+#include <asm/system_misc.h>
+
+static void __iomem *snvs_base;
+
+static void do_imx_poweroff(void)
+{
+	u32 value = readl(snvs_base);
+
+	/* set TOP and DP_EN bit */
+	writel(value | 0x60, snvs_base);
+}
+
+static int imx_poweroff_probe(struct platform_device *pdev)
+{
+	snvs_base = of_iomap(pdev->dev.of_node, 0);
+	if (!snvs_base) {
+		dev_err(&pdev->dev, "failed to get memory\n");
+		return -EIO;
+	}
+
+	pm_power_off = do_imx_poweroff;
+	return 0;
+}
+
+static const struct of_device_id of_imx_poweroff_match[] = {
+	{ .compatible = "fsl,sec-v4.0-poweroff", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, of_imx_poweroff_match);
+
+static struct platform_driver imx_poweroff_driver = {
+	.probe = imx_poweroff_probe,
+	.driver = {
+		.name = "imx-snvs-poweroff",
+		.of_match_table = of_match_ptr(of_imx_poweroff_match),
+	},
+};
+
+static int __init imx_poweroff_init(void)
+{
+	return platform_driver_register(&imx_poweroff_driver);
+}
+device_initcall(imx_poweroff_init);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v2 3/3] ARM: configs: imx_v6_v7_defconfig: add power off driver
  2014-09-12  8:48 [PATCH v2 0/3] add power off driver for i.mx6 Robin Gong
  2014-09-12  8:48 ` [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips Robin Gong
  2014-09-12  8:48 ` [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6 Robin Gong
@ 2014-09-12  8:48 ` Robin Gong
  2 siblings, 0 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-12  8:48 UTC (permalink / raw)
  To: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak,
	shawn.guo, kernel, sre, dbaryshkov, dwmw2, grant.likely, linux
  Cc: devicetree, linux-kernel, linux-pm, linux-arm-kernel

Add power off driver in config file.

Signed-off-by: Robin Gong <b38343@freescale.com>
---
 arch/arm/configs/imx_v6_v7_defconfig | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 16cfec4..a310e61 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -165,6 +165,9 @@ CONFIG_SPI_IMX=y
 CONFIG_GPIO_SYSFS=y
 CONFIG_GPIO_MC9S08DZ60=y
 CONFIG_GPIO_STMPE=y
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_IMX=y
 # CONFIG_HWMON is not set
 CONFIG_WATCHDOG=y
 CONFIG_IMX2_WDT=y
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
       [not found]   ` <1410511739-31122-2-git-send-email-b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
@ 2014-09-17  1:47     ` Shawn Guo
  2014-09-17  3:32       ` Robin Gong
  0 siblings, 1 reply; 15+ messages in thread
From: Shawn Guo @ 2014-09-17  1:47 UTC (permalink / raw)
  To: Robin Gong
  Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> All chips of i.mx6 can be powered off by programming SNVS.
> For example :
> On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> pmic ON/OFF pin, that will cause the whole PMIC powered off
> except VSNVS. And system can restart once PMIC_ON_REQ goes
> high by push POWRER key.
> 
> Signed-off-by: Robin Gong <b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> ---
>  .../bindings/power_supply/imx-snvs-poweroff.txt     | 21 +++++++++++++++++++++

Binding docs should be generally a separate patch or in the driver
patch, which uses the bindings.

Shawn

>  arch/arm/boot/dts/imx6qdl.dtsi                      |  5 +++++
>  arch/arm/boot/dts/imx6sl.dtsi                       |  5 +++++
>  arch/arm/boot/dts/imx6sx.dtsi                       |  5 +++++
>  4 files changed, 36 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> 
> diff --git a/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> new file mode 100644
> index 0000000..1a3ab9a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> @@ -0,0 +1,21 @@
> +i.mx6 Poweroff Driver
> +
> +SNVS_LPCR in SNVS module can power off the whole system by pull
> +PMIC_ON_REQ low.
> +
> +Required Properties:
> +-compatible: "fsl,sec-v4.0-poweroff"
> +-reg: Specifies the physical address of the SNVS_LPCR register
> +
> +Example:
> +	snvs@020cc000 {
> +		compatible = "fsl,sec-v4.0-mon", "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0x020cc000 0x4000>;
> +		.....
> +		snvs-poweroff@38 {
> +			compatible = "fsl,sec-v4.0-poweroff";
> +			reg = <0x38 0x4>;
> +		};
> +	}
> diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
> index 70d7207..d2d7563 100644
> --- a/arch/arm/boot/dts/imx6qdl.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl.dtsi
> @@ -650,6 +650,11 @@
>  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
>  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
>  				};
> +
> +				snvs-poweroff@38 {
> +					compatible = "fsl,sec-v4.0-poweroff";
> +					reg = <0x38 0x4>;
> +				};
>  			};
>  
>  			epit1: epit@020d0000 { /* EPIT1 */
> diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
> index ba67714..6e1d8f6 100644
> --- a/arch/arm/boot/dts/imx6sl.dtsi
> +++ b/arch/arm/boot/dts/imx6sl.dtsi
> @@ -568,6 +568,11 @@
>  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
>  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
>  				};
> +
> +				snvs-poweroff@38 {
> +					compatible = "fsl,sec-v4.0-poweroff";
> +					reg = <0x38 0x4>;
> +				};
>  			};
>  
>  			epit1: epit@020d0000 {
> diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
> index d137caca..c1f937e 100644
> --- a/arch/arm/boot/dts/imx6sx.dtsi
> +++ b/arch/arm/boot/dts/imx6sx.dtsi
> @@ -671,6 +671,11 @@
>  					reg = <0x34 0x58>;
>  					interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
>  				};
> +
> +				snvs-poweroff@38 {
> +					compatible = "fsl,sec-v4.0-poweroff";
> +					reg = <0x38 0x4>;
> +				};
>  			};
>  
>  			epit1: epit@020d0000 {
> -- 
> 1.9.1
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6
  2014-09-12  8:48 ` [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6 Robin Gong
@ 2014-09-17  2:06   ` Shawn Guo
  2014-09-17  3:35     ` Robin Gong
  0 siblings, 1 reply; 15+ messages in thread
From: Shawn Guo @ 2014-09-17  2:06 UTC (permalink / raw)
  To: Robin Gong
  Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, kernel,
	sre, dbaryshkov, dwmw2, grant.likely, linux, devicetree,
	linux-kernel, linux-pm, linux-arm-kernel

On Fri, Sep 12, 2014 at 04:48:58PM +0800, Robin Gong wrote:
> Add simple power off driver for i.mx6.
> 
> Signed-off-by: Robin Gong <b38343@freescale.com>
> ---
>  drivers/power/reset/Kconfig             |  6 +++
>  drivers/power/reset/Makefile            |  1 +
>  drivers/power/reset/imx-snvs-poweroff.c | 69 +++++++++++++++++++++++++++++++++
>  3 files changed, 76 insertions(+)
>  create mode 100644 drivers/power/reset/imx-snvs-poweroff.c
> 
> diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
> index ca41523..c48d9ba 100644
> --- a/drivers/power/reset/Kconfig
> +++ b/drivers/power/reset/Kconfig
> @@ -45,6 +45,12 @@ config POWER_RESET_HISI
>  	help
>  	  Reboot support for Hisilicon boards.
>  
> +config POWER_RESET_IMX
> +	bool "IMX6 power-off driver"
> +	depends on POWER_RESET && SOC_IMX6
> +	help
> +	  Power off support for i.mx6 boards.
> +
>  config POWER_RESET_MSM
>  	bool "Qualcomm MSM power-off driver"
>  	depends on POWER_RESET && ARCH_QCOM
> diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
> index a42e70e..2524daf 100644
> --- a/drivers/power/reset/Makefile
> +++ b/drivers/power/reset/Makefile
> @@ -3,6 +3,7 @@ obj-$(CONFIG_POWER_RESET_AXXIA) += axxia-reset.o
>  obj-$(CONFIG_POWER_RESET_BRCMSTB) += brcmstb-reboot.o
>  obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o
>  obj-$(CONFIG_POWER_RESET_HISI) += hisi-reboot.o
> +obj-$(CONFIG_POWER_RESET_IMX) += imx-snvs-poweroff.o
>  obj-$(CONFIG_POWER_RESET_MSM) += msm-poweroff.o
>  obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
>  obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
> diff --git a/drivers/power/reset/imx-snvs-poweroff.c b/drivers/power/reset/imx-snvs-poweroff.c
> new file mode 100644
> index 0000000..55603ba
> --- /dev/null
> +++ b/drivers/power/reset/imx-snvs-poweroff.c
> @@ -0,0 +1,69 @@
> +/* Power off driver for i.mx6
> + * Copyright (c) 2014, FREESCALE CORPORATION.  All rights reserved.
> + *
> + * based on msm-poweroff.c
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + */
> +
> +#include <linux/delay.h>

Is it really needed?

> +#include <linux/err.h>
> +#include <linux/init.h>
> +#include <linux/io.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/platform_device.h>
> +
> +#include <asm/system_misc.h>

Ditto

Shawn

> +
> +static void __iomem *snvs_base;
> +
> +static void do_imx_poweroff(void)
> +{
> +	u32 value = readl(snvs_base);
> +
> +	/* set TOP and DP_EN bit */
> +	writel(value | 0x60, snvs_base);
> +}
> +
> +static int imx_poweroff_probe(struct platform_device *pdev)
> +{
> +	snvs_base = of_iomap(pdev->dev.of_node, 0);
> +	if (!snvs_base) {
> +		dev_err(&pdev->dev, "failed to get memory\n");
> +		return -EIO;
> +	}
> +
> +	pm_power_off = do_imx_poweroff;
> +	return 0;
> +}
> +
> +static const struct of_device_id of_imx_poweroff_match[] = {
> +	{ .compatible = "fsl,sec-v4.0-poweroff", },
> +	{},
> +};
> +MODULE_DEVICE_TABLE(of, of_imx_poweroff_match);
> +
> +static struct platform_driver imx_poweroff_driver = {
> +	.probe = imx_poweroff_probe,
> +	.driver = {
> +		.name = "imx-snvs-poweroff",
> +		.of_match_table = of_match_ptr(of_imx_poweroff_match),
> +	},
> +};
> +
> +static int __init imx_poweroff_init(void)
> +{
> +	return platform_driver_register(&imx_poweroff_driver);
> +}
> +device_initcall(imx_poweroff_init);
> -- 
> 1.9.1
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-12  8:48 ` [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips Robin Gong
       [not found]   ` <1410511739-31122-2-git-send-email-b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
@ 2014-09-17  2:10   ` Shawn Guo
  2014-09-17  3:45     ` Robin Gong
  1 sibling, 1 reply; 15+ messages in thread
From: Shawn Guo @ 2014-09-17  2:10 UTC (permalink / raw)
  To: Robin Gong
  Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, kernel,
	sre, dbaryshkov, dwmw2, grant.likely, linux, devicetree,
	linux-kernel, linux-pm, linux-arm-kernel

On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> All chips of i.mx6 can be powered off by programming SNVS.
> For example :
> On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> pmic ON/OFF pin, that will cause the whole PMIC powered off
> except VSNVS. And system can restart once PMIC_ON_REQ goes
> high by push POWRER key.

What's the behavior for those boards on which PMIC_ON_REQ isn't
connected to anywhere?

BTW, the commit log of the driver patch [[PATCH v2 2/3] ] should be
improved.

Shawn

> 
> Signed-off-by: Robin Gong <b38343@freescale.com>
> ---
>  .../bindings/power_supply/imx-snvs-poweroff.txt     | 21 +++++++++++++++++++++
>  arch/arm/boot/dts/imx6qdl.dtsi                      |  5 +++++
>  arch/arm/boot/dts/imx6sl.dtsi                       |  5 +++++
>  arch/arm/boot/dts/imx6sx.dtsi                       |  5 +++++
>  4 files changed, 36 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> 
> diff --git a/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> new file mode 100644
> index 0000000..1a3ab9a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> @@ -0,0 +1,21 @@
> +i.mx6 Poweroff Driver
> +
> +SNVS_LPCR in SNVS module can power off the whole system by pull
> +PMIC_ON_REQ low.
> +
> +Required Properties:
> +-compatible: "fsl,sec-v4.0-poweroff"
> +-reg: Specifies the physical address of the SNVS_LPCR register
> +
> +Example:
> +	snvs@020cc000 {
> +		compatible = "fsl,sec-v4.0-mon", "simple-bus";
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0x020cc000 0x4000>;
> +		.....
> +		snvs-poweroff@38 {
> +			compatible = "fsl,sec-v4.0-poweroff";
> +			reg = <0x38 0x4>;
> +		};
> +	}
> diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
> index 70d7207..d2d7563 100644
> --- a/arch/arm/boot/dts/imx6qdl.dtsi
> +++ b/arch/arm/boot/dts/imx6qdl.dtsi
> @@ -650,6 +650,11 @@
>  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
>  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
>  				};
> +
> +				snvs-poweroff@38 {
> +					compatible = "fsl,sec-v4.0-poweroff";
> +					reg = <0x38 0x4>;
> +				};
>  			};
>  
>  			epit1: epit@020d0000 { /* EPIT1 */
> diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
> index ba67714..6e1d8f6 100644
> --- a/arch/arm/boot/dts/imx6sl.dtsi
> +++ b/arch/arm/boot/dts/imx6sl.dtsi
> @@ -568,6 +568,11 @@
>  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
>  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
>  				};
> +
> +				snvs-poweroff@38 {
> +					compatible = "fsl,sec-v4.0-poweroff";
> +					reg = <0x38 0x4>;
> +				};
>  			};
>  
>  			epit1: epit@020d0000 {
> diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
> index d137caca..c1f937e 100644
> --- a/arch/arm/boot/dts/imx6sx.dtsi
> +++ b/arch/arm/boot/dts/imx6sx.dtsi
> @@ -671,6 +671,11 @@
>  					reg = <0x34 0x58>;
>  					interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
>  				};
> +
> +				snvs-poweroff@38 {
> +					compatible = "fsl,sec-v4.0-poweroff";
> +					reg = <0x38 0x4>;
> +				};
>  			};
>  
>  			epit1: epit@020d0000 {
> -- 
> 1.9.1
> 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-17  1:47     ` Shawn Guo
@ 2014-09-17  3:32       ` Robin Gong
  0 siblings, 0 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-17  3:32 UTC (permalink / raw)
  To: Shawn Guo
  Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Sep 17, 2014 at 09:47:24AM +0800, Shawn Guo wrote:
> On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> > All chips of i.mx6 can be powered off by programming SNVS.
> > For example :
> > On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> > pmic ON/OFF pin, that will cause the whole PMIC powered off
> > except VSNVS. And system can restart once PMIC_ON_REQ goes
> > high by push POWRER key.
> > 
> > Signed-off-by: Robin Gong <b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> > ---
> >  .../bindings/power_supply/imx-snvs-poweroff.txt     | 21 +++++++++++++++++++++
> 
> Binding docs should be generally a separate patch or in the driver
> patch, which uses the bindings.
> 
> Shawn
>
Ok, I'll split it.
> >  arch/arm/boot/dts/imx6qdl.dtsi                      |  5 +++++
> >  arch/arm/boot/dts/imx6sl.dtsi                       |  5 +++++
> >  arch/arm/boot/dts/imx6sx.dtsi                       |  5 +++++
> >  4 files changed, 36 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> > new file mode 100644
> > index 0000000..1a3ab9a
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> > @@ -0,0 +1,21 @@
> > +i.mx6 Poweroff Driver
> > +
> > +SNVS_LPCR in SNVS module can power off the whole system by pull
> > +PMIC_ON_REQ low.
> > +
> > +Required Properties:
> > +-compatible: "fsl,sec-v4.0-poweroff"
> > +-reg: Specifies the physical address of the SNVS_LPCR register
> > +
> > +Example:
> > +	snvs@020cc000 {
> > +		compatible = "fsl,sec-v4.0-mon", "simple-bus";
> > +		#address-cells = <1>;
> > +		#size-cells = <1>;
> > +		ranges = <0 0x020cc000 0x4000>;
> > +		.....
> > +		snvs-poweroff@38 {
> > +			compatible = "fsl,sec-v4.0-poweroff";
> > +			reg = <0x38 0x4>;
> > +		};
> > +	}
> > diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
> > index 70d7207..d2d7563 100644
> > --- a/arch/arm/boot/dts/imx6qdl.dtsi
> > +++ b/arch/arm/boot/dts/imx6qdl.dtsi
> > @@ -650,6 +650,11 @@
> >  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
> >  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
> >  				};
> > +
> > +				snvs-poweroff@38 {
> > +					compatible = "fsl,sec-v4.0-poweroff";
> > +					reg = <0x38 0x4>;
> > +				};
> >  			};
> >  
> >  			epit1: epit@020d0000 { /* EPIT1 */
> > diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
> > index ba67714..6e1d8f6 100644
> > --- a/arch/arm/boot/dts/imx6sl.dtsi
> > +++ b/arch/arm/boot/dts/imx6sl.dtsi
> > @@ -568,6 +568,11 @@
> >  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
> >  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
> >  				};
> > +
> > +				snvs-poweroff@38 {
> > +					compatible = "fsl,sec-v4.0-poweroff";
> > +					reg = <0x38 0x4>;
> > +				};
> >  			};
> >  
> >  			epit1: epit@020d0000 {
> > diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
> > index d137caca..c1f937e 100644
> > --- a/arch/arm/boot/dts/imx6sx.dtsi
> > +++ b/arch/arm/boot/dts/imx6sx.dtsi
> > @@ -671,6 +671,11 @@
> >  					reg = <0x34 0x58>;
> >  					interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
> >  				};
> > +
> > +				snvs-poweroff@38 {
> > +					compatible = "fsl,sec-v4.0-poweroff";
> > +					reg = <0x38 0x4>;
> > +				};
> >  			};
> >  
> >  			epit1: epit@020d0000 {
> > -- 
> > 1.9.1
> > 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6
  2014-09-17  2:06   ` Shawn Guo
@ 2014-09-17  3:35     ` Robin Gong
  0 siblings, 0 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-17  3:35 UTC (permalink / raw)
  To: Shawn Guo
  Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Sep 17, 2014 at 10:06:57AM +0800, Shawn Guo wrote:
> On Fri, Sep 12, 2014 at 04:48:58PM +0800, Robin Gong wrote:
> > Add simple power off driver for i.mx6.
> > 
> > Signed-off-by: Robin Gong <b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
> > ---
> >  drivers/power/reset/Kconfig             |  6 +++
> >  drivers/power/reset/Makefile            |  1 +
> >  drivers/power/reset/imx-snvs-poweroff.c | 69 +++++++++++++++++++++++++++++++++
> >  3 files changed, 76 insertions(+)
> >  create mode 100644 drivers/power/reset/imx-snvs-poweroff.c
> > 
> > diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
> > index ca41523..c48d9ba 100644
> > --- a/drivers/power/reset/Kconfig
> > +++ b/drivers/power/reset/Kconfig
> > @@ -45,6 +45,12 @@ config POWER_RESET_HISI
> >  	help
> >  	  Reboot support for Hisilicon boards.
> >  
> > +config POWER_RESET_IMX
> > +	bool "IMX6 power-off driver"
> > +	depends on POWER_RESET && SOC_IMX6
> > +	help
> > +	  Power off support for i.mx6 boards.
> > +
> >  config POWER_RESET_MSM
> >  	bool "Qualcomm MSM power-off driver"
> >  	depends on POWER_RESET && ARCH_QCOM
> > diff --git a/drivers/power/reset/Makefile b/drivers/power/reset/Makefile
> > index a42e70e..2524daf 100644
> > --- a/drivers/power/reset/Makefile
> > +++ b/drivers/power/reset/Makefile
> > @@ -3,6 +3,7 @@ obj-$(CONFIG_POWER_RESET_AXXIA) += axxia-reset.o
> >  obj-$(CONFIG_POWER_RESET_BRCMSTB) += brcmstb-reboot.o
> >  obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o
> >  obj-$(CONFIG_POWER_RESET_HISI) += hisi-reboot.o
> > +obj-$(CONFIG_POWER_RESET_IMX) += imx-snvs-poweroff.o
> >  obj-$(CONFIG_POWER_RESET_MSM) += msm-poweroff.o
> >  obj-$(CONFIG_POWER_RESET_QNAP) += qnap-poweroff.o
> >  obj-$(CONFIG_POWER_RESET_RESTART) += restart-poweroff.o
> > diff --git a/drivers/power/reset/imx-snvs-poweroff.c b/drivers/power/reset/imx-snvs-poweroff.c
> > new file mode 100644
> > index 0000000..55603ba
> > --- /dev/null
> > +++ b/drivers/power/reset/imx-snvs-poweroff.c
> > @@ -0,0 +1,69 @@
> > +/* Power off driver for i.mx6
> > + * Copyright (c) 2014, FREESCALE CORPORATION.  All rights reserved.
> > + *
> > + * based on msm-poweroff.c
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 and
> > + * only version 2 as published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + */
> > +
> > +#include <linux/delay.h>
> 
> Is it really needed?
> 
> > +#include <linux/err.h>
> > +#include <linux/init.h>
> > +#include <linux/io.h>
> > +#include <linux/kernel.h>
> > +#include <linux/module.h>
> > +#include <linux/of.h>
> > +#include <linux/of_address.h>
> > +#include <linux/platform_device.h>
> > +
> > +#include <asm/system_misc.h>
> 
> Ditto
> 
> Shawn
>
Yes, will remove both.
> > +
> > +static void __iomem *snvs_base;
> > +
> > +static void do_imx_poweroff(void)
> > +{
> > +	u32 value = readl(snvs_base);
> > +
> > +	/* set TOP and DP_EN bit */
> > +	writel(value | 0x60, snvs_base);
> > +}
> > +
> > +static int imx_poweroff_probe(struct platform_device *pdev)
> > +{
> > +	snvs_base = of_iomap(pdev->dev.of_node, 0);
> > +	if (!snvs_base) {
> > +		dev_err(&pdev->dev, "failed to get memory\n");
> > +		return -EIO;
> > +	}
> > +
> > +	pm_power_off = do_imx_poweroff;
> > +	return 0;
> > +}
> > +
> > +static const struct of_device_id of_imx_poweroff_match[] = {
> > +	{ .compatible = "fsl,sec-v4.0-poweroff", },
> > +	{},
> > +};
> > +MODULE_DEVICE_TABLE(of, of_imx_poweroff_match);
> > +
> > +static struct platform_driver imx_poweroff_driver = {
> > +	.probe = imx_poweroff_probe,
> > +	.driver = {
> > +		.name = "imx-snvs-poweroff",
> > +		.of_match_table = of_match_ptr(of_imx_poweroff_match),
> > +	},
> > +};
> > +
> > +static int __init imx_poweroff_init(void)
> > +{
> > +	return platform_driver_register(&imx_poweroff_driver);
> > +}
> > +device_initcall(imx_poweroff_init);
> > -- 
> > 1.9.1
> > 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-17  2:10   ` Shawn Guo
@ 2014-09-17  3:45     ` Robin Gong
  2014-09-17  4:50       ` Shawn Guo
  2014-09-17  6:06       ` Sascha Hauer
  0 siblings, 2 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-17  3:45 UTC (permalink / raw)
  To: Shawn Guo
  Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, kernel,
	sre, dbaryshkov, dwmw2, grant.likely, linux, devicetree,
	linux-kernel, linux-pm, linux-arm-kernel

On Wed, Sep 17, 2014 at 10:10:45AM +0800, Shawn Guo wrote:
> On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> > All chips of i.mx6 can be powered off by programming SNVS.
> > For example :
> > On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> > pmic ON/OFF pin, that will cause the whole PMIC powered off
> > except VSNVS. And system can restart once PMIC_ON_REQ goes
> > high by push POWRER key.
> 
> What's the behavior for those boards on which PMIC_ON_REQ isn't
> connected to anywhere?
>
System can't be powered off if not connect PMIC_ON_REQ. Although all of our
reference design for i.mx6 chips are connecting  PMIC_ON_REQ with external
PMIC, we need consider others may not use external PMIC. I'll add the info
into commit log or Kconfig.
> BTW, the commit log of the driver patch [[PATCH v2 2/3] ] should be
> improved.
> 
> Shawn
>
You mean the above info need added into commit log ,right?
> > 
> > Signed-off-by: Robin Gong <b38343@freescale.com>
> > ---
> >  .../bindings/power_supply/imx-snvs-poweroff.txt     | 21 +++++++++++++++++++++
> >  arch/arm/boot/dts/imx6qdl.dtsi                      |  5 +++++
> >  arch/arm/boot/dts/imx6sl.dtsi                       |  5 +++++
> >  arch/arm/boot/dts/imx6sx.dtsi                       |  5 +++++
> >  4 files changed, 36 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> > new file mode 100644
> > index 0000000..1a3ab9a
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/power_supply/imx-snvs-poweroff.txt
> > @@ -0,0 +1,21 @@
> > +i.mx6 Poweroff Driver
> > +
> > +SNVS_LPCR in SNVS module can power off the whole system by pull
> > +PMIC_ON_REQ low.
> > +
> > +Required Properties:
> > +-compatible: "fsl,sec-v4.0-poweroff"
> > +-reg: Specifies the physical address of the SNVS_LPCR register
> > +
> > +Example:
> > +	snvs@020cc000 {
> > +		compatible = "fsl,sec-v4.0-mon", "simple-bus";
> > +		#address-cells = <1>;
> > +		#size-cells = <1>;
> > +		ranges = <0 0x020cc000 0x4000>;
> > +		.....
> > +		snvs-poweroff@38 {
> > +			compatible = "fsl,sec-v4.0-poweroff";
> > +			reg = <0x38 0x4>;
> > +		};
> > +	}
> > diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
> > index 70d7207..d2d7563 100644
> > --- a/arch/arm/boot/dts/imx6qdl.dtsi
> > +++ b/arch/arm/boot/dts/imx6qdl.dtsi
> > @@ -650,6 +650,11 @@
> >  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
> >  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
> >  				};
> > +
> > +				snvs-poweroff@38 {
> > +					compatible = "fsl,sec-v4.0-poweroff";
> > +					reg = <0x38 0x4>;
> > +				};
> >  			};
> >  
> >  			epit1: epit@020d0000 { /* EPIT1 */
> > diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
> > index ba67714..6e1d8f6 100644
> > --- a/arch/arm/boot/dts/imx6sl.dtsi
> > +++ b/arch/arm/boot/dts/imx6sl.dtsi
> > @@ -568,6 +568,11 @@
> >  					interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
> >  						     <0 20 IRQ_TYPE_LEVEL_HIGH>;
> >  				};
> > +
> > +				snvs-poweroff@38 {
> > +					compatible = "fsl,sec-v4.0-poweroff";
> > +					reg = <0x38 0x4>;
> > +				};
> >  			};
> >  
> >  			epit1: epit@020d0000 {
> > diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
> > index d137caca..c1f937e 100644
> > --- a/arch/arm/boot/dts/imx6sx.dtsi
> > +++ b/arch/arm/boot/dts/imx6sx.dtsi
> > @@ -671,6 +671,11 @@
> >  					reg = <0x34 0x58>;
> >  					interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
> >  				};
> > +
> > +				snvs-poweroff@38 {
> > +					compatible = "fsl,sec-v4.0-poweroff";
> > +					reg = <0x38 0x4>;
> > +				};
> >  			};
> >  
> >  			epit1: epit@020d0000 {
> > -- 
> > 1.9.1
> > 

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-17  3:45     ` Robin Gong
@ 2014-09-17  4:50       ` Shawn Guo
  2014-09-17  6:06       ` Sascha Hauer
  1 sibling, 0 replies; 15+ messages in thread
From: Shawn Guo @ 2014-09-17  4:50 UTC (permalink / raw)
  To: Robin Gong
  Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, kernel,
	sre, dbaryshkov, dwmw2, grant.likely, linux, devicetree,
	linux-kernel, linux-pm, linux-arm-kernel

On Wed, Sep 17, 2014 at 11:45:15AM +0800, Robin Gong wrote:
> > BTW, the commit log of the driver patch [[PATCH v2 2/3] ] should be
> > improved.
> > 
> > Shawn
> >
> You mean the above info need added into commit log ,right?

Yes, that's what I mean.

Shawn

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-17  3:45     ` Robin Gong
  2014-09-17  4:50       ` Shawn Guo
@ 2014-09-17  6:06       ` Sascha Hauer
       [not found]         ` <20140917060649.GJ4992-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
  1 sibling, 1 reply; 15+ messages in thread
From: Sascha Hauer @ 2014-09-17  6:06 UTC (permalink / raw)
  To: Robin Gong
  Cc: Shawn Guo, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Sep 17, 2014 at 11:45:15AM +0800, Robin Gong wrote:
> On Wed, Sep 17, 2014 at 10:10:45AM +0800, Shawn Guo wrote:
> > On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> > > All chips of i.mx6 can be powered off by programming SNVS.
> > > For example :
> > > On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> > > pmic ON/OFF pin, that will cause the whole PMIC powered off
> > > except VSNVS. And system can restart once PMIC_ON_REQ goes
> > > high by push POWRER key.
> > 
> > What's the behavior for those boards on which PMIC_ON_REQ isn't
> > connected to anywhere?
> >
> System can't be powered off if not connect PMIC_ON_REQ. Although all of our
> reference design for i.mx6 chips are connecting  PMIC_ON_REQ with external
> PMIC, we need consider others may not use external PMIC. I'll add the info
> into commit log or Kconfig.

You should add the information to the dtsi file in form of a
status = "disabled" property so that boards that actually have the
feature can enable it.

Sascha

-- 
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 |
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
       [not found]         ` <20140917060649.GJ4992-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
@ 2014-09-17  7:17           ` Robin Gong
  2014-09-17  7:24             ` Sascha Hauer
  0 siblings, 1 reply; 15+ messages in thread
From: Robin Gong @ 2014-09-17  7:17 UTC (permalink / raw)
  To: Sascha Hauer
  Cc: Shawn Guo, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Sep 17, 2014 at 08:06:49AM +0200, Sascha Hauer wrote:
> On Wed, Sep 17, 2014 at 11:45:15AM +0800, Robin Gong wrote:
> > On Wed, Sep 17, 2014 at 10:10:45AM +0800, Shawn Guo wrote:
> > > On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> > > > All chips of i.mx6 can be powered off by programming SNVS.
> > > > For example :
> > > > On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> > > > pmic ON/OFF pin, that will cause the whole PMIC powered off
> > > > except VSNVS. And system can restart once PMIC_ON_REQ goes
> > > > high by push POWRER key.
> > > 
> > > What's the behavior for those boards on which PMIC_ON_REQ isn't
> > > connected to anywhere?
> > >
> > System can't be powered off if not connect PMIC_ON_REQ. Although all of our
> > reference design for i.mx6 chips are connecting  PMIC_ON_REQ with external
> > PMIC, we need consider others may not use external PMIC. I'll add the info
> > into commit log or Kconfig.
> 
> You should add the information to the dtsi file in form of a
> status = "disabled" property so that boards that actually have the
> feature can enable it.
> 
> Sascha
Hi Sacha, but that's  SOC level feature and it's harmless even if others don't
want to use this pin to control external PMIC.
> 
> -- 
> 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 |
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
  2014-09-17  7:17           ` Robin Gong
@ 2014-09-17  7:24             ` Sascha Hauer
       [not found]               ` <20140917072437.GP4992-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
  0 siblings, 1 reply; 15+ messages in thread
From: Sascha Hauer @ 2014-09-17  7:24 UTC (permalink / raw)
  To: Robin Gong
  Cc: Shawn Guo, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Sep 17, 2014 at 03:17:38PM +0800, Robin Gong wrote:
> On Wed, Sep 17, 2014 at 08:06:49AM +0200, Sascha Hauer wrote:
> > On Wed, Sep 17, 2014 at 11:45:15AM +0800, Robin Gong wrote:
> > > On Wed, Sep 17, 2014 at 10:10:45AM +0800, Shawn Guo wrote:
> > > > On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> > > > > All chips of i.mx6 can be powered off by programming SNVS.
> > > > > For example :
> > > > > On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> > > > > pmic ON/OFF pin, that will cause the whole PMIC powered off
> > > > > except VSNVS. And system can restart once PMIC_ON_REQ goes
> > > > > high by push POWRER key.
> > > > 
> > > > What's the behavior for those boards on which PMIC_ON_REQ isn't
> > > > connected to anywhere?
> > > >
> > > System can't be powered off if not connect PMIC_ON_REQ. Although all of our
> > > reference design for i.mx6 chips are connecting  PMIC_ON_REQ with external
> > > PMIC, we need consider others may not use external PMIC. I'll add the info
> > > into commit log or Kconfig.
> > 
> > You should add the information to the dtsi file in form of a
> > status = "disabled" property so that boards that actually have the
> > feature can enable it.
> > 
> > Sascha
> Hi Sacha, but that's  SOC level feature and it's harmless even if others don't
> want to use this pin to control external PMIC.

Harmless? If a pm_power_off hook is registered I expect it to work, but
it doesn't work when my board does not have the connection between the
PMIC and the SoC. Even worse, if my board has some custom power of
method you overwrite my method in the snvs poweroff driver with a method
that does not work on my board.

Sascha

-- 
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 |
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips
       [not found]               ` <20140917072437.GP4992-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
@ 2014-09-17  8:16                 ` Robin Gong
  0 siblings, 0 replies; 15+ messages in thread
From: Robin Gong @ 2014-09-17  8:16 UTC (permalink / raw)
  To: Sascha Hauer
  Cc: Shawn Guo, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8,
	mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg,
	galak-sgV2jX0FEOL9JmXXK+q4OQ, kernel-bIcnvbaLZ9MEGnE8C9+IrQ,
	sre-DgEjT+Ai2ygdnm+yROfE0A, dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w,
	dwmw2-wEGCiKHe2LqWVfeAwA7xHQ, grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	linux-lFZ/pmaqli7XmaaqVzeoHQ, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-pm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, Sep 17, 2014 at 09:24:37AM +0200, Sascha Hauer wrote:
> On Wed, Sep 17, 2014 at 03:17:38PM +0800, Robin Gong wrote:
> > On Wed, Sep 17, 2014 at 08:06:49AM +0200, Sascha Hauer wrote:
> > > On Wed, Sep 17, 2014 at 11:45:15AM +0800, Robin Gong wrote:
> > > > On Wed, Sep 17, 2014 at 10:10:45AM +0800, Shawn Guo wrote:
> > > > > On Fri, Sep 12, 2014 at 04:48:57PM +0800, Robin Gong wrote:
> > > > > > All chips of i.mx6 can be powered off by programming SNVS.
> > > > > > For example :
> > > > > > On i.mx6q-sabresd board, PMIC_ON_REQ connect with external
> > > > > > pmic ON/OFF pin, that will cause the whole PMIC powered off
> > > > > > except VSNVS. And system can restart once PMIC_ON_REQ goes
> > > > > > high by push POWRER key.
> > > > > 
> > > > > What's the behavior for those boards on which PMIC_ON_REQ isn't
> > > > > connected to anywhere?
> > > > >
> > > > System can't be powered off if not connect PMIC_ON_REQ. Although all of our
> > > > reference design for i.mx6 chips are connecting  PMIC_ON_REQ with external
> > > > PMIC, we need consider others may not use external PMIC. I'll add the info
> > > > into commit log or Kconfig.
> > > 
> > > You should add the information to the dtsi file in form of a
> > > status = "disabled" property so that boards that actually have the
> > > feature can enable it.
> > > 
> > > Sascha
> > Hi Sacha, but that's  SOC level feature and it's harmless even if others don't
> > want to use this pin to control external PMIC.
> 
> Harmless? If a pm_power_off hook is registered I expect it to work, but
> it doesn't work when my board does not have the connection between the
> PMIC and the SoC. Even worse, if my board has some custom power of
> method you overwrite my method in the snvs poweroff driver with a method
> that does not work on my board.
> 
> Sascha
Sorry, I suppose PMIC_ON_REQ is the only way to control external power ON/OFF.
If they don't use PMIC_ON_REQ, I assume they drop poweroff feature.
Yes, I agree with you that set status as 'disable' in DTS make things clear if
they want to use other pins to control external power. But I'm not sure whether
we need consider this special case to 'disable' the soc level feature and
re-enable on many boards level DTS? Also, I don't understand why they give up
PMIC_ON_REQ and consume another pin to do the same thing....But I'm ok if both
you and Shawn agree with it.
> 
> -- 
> 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 |
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2014-09-17  8:16 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-12  8:48 [PATCH v2 0/3] add power off driver for i.mx6 Robin Gong
2014-09-12  8:48 ` [PATCH v2 1/3] ARM: dts: imx6: add pm_power_off support for i.mx6 chips Robin Gong
     [not found]   ` <1410511739-31122-2-git-send-email-b38343-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2014-09-17  1:47     ` Shawn Guo
2014-09-17  3:32       ` Robin Gong
2014-09-17  2:10   ` Shawn Guo
2014-09-17  3:45     ` Robin Gong
2014-09-17  4:50       ` Shawn Guo
2014-09-17  6:06       ` Sascha Hauer
     [not found]         ` <20140917060649.GJ4992-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-09-17  7:17           ` Robin Gong
2014-09-17  7:24             ` Sascha Hauer
     [not found]               ` <20140917072437.GP4992-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2014-09-17  8:16                 ` Robin Gong
2014-09-12  8:48 ` [PATCH v2 2/3] power: reset: imx-snvs-poweroff: add power off driver for i.mx6 Robin Gong
2014-09-17  2:06   ` Shawn Guo
2014-09-17  3:35     ` Robin Gong
2014-09-12  8:48 ` [PATCH v2 3/3] ARM: configs: imx_v6_v7_defconfig: add power off driver Robin Gong

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