linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode
@ 2020-04-15 12:40 peng.fan
  2020-04-15 12:40 ` [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc peng.fan
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: peng.fan @ 2020-04-15 12:40 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, linux-imx, Anson.Huang, linux-arm-kernel,
	linux-kernel, abel.vesa, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

V4:
  Fix dt_bindings check
  The same patchset was wrongly posted as V2, 
  https://patchwork.kernel.org/cover/11485107/

This is a splited part from V2:
ARM: imx7ulp: add cpufreq using cpufreq-dt
https://patchwork.kernel.org/cover/11390589/
Nothing changed

The original V2 patchset is to support i.MX7ULP cpufreq,
still waiting the virtual clk being accepted. so to decouple,
this patchset only takes the run mode part.

Peng Fan (4):
  dt-bindings: fsl: add i.MX7ULP PMC binding doc
  ARM: dts: imx7ulp: add pmc node
  ARM: imx: imx7ulp: support HSRUN mode
  ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN

 .../bindings/arm/freescale/imx7ulp_pmc.yaml        | 32 ++++++++++++++++++++++
 arch/arm/boot/dts/imx7ulp.dtsi                     | 10 +++++++
 arch/arm/mach-imx/common.h                         |  1 +
 arch/arm/mach-imx/cpuidle-imx7ulp.c                | 14 ++++++++--
 arch/arm/mach-imx/pm-imx7ulp.c                     | 25 +++++++++++++++++
 5 files changed, 79 insertions(+), 3 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml

-- 
2.16.4


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

* [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc
  2020-04-15 12:40 [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode peng.fan
@ 2020-04-15 12:40 ` peng.fan
  2020-05-12  2:36   ` Peng Fan
  2020-04-15 12:40 ` [PATCH V4 2/4] ARM: dts: imx7ulp: add pmc node peng.fan
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: peng.fan @ 2020-04-15 12:40 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, linux-imx, Anson.Huang, linux-arm-kernel,
	linux-kernel, abel.vesa, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX7ULP Power Management Controller binding doc
pmc0 is used by M4, pmc1 is used by A7, they have different
register name and usage.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 .../bindings/arm/freescale/imx7ulp_pmc.yaml        | 32 ++++++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml

diff --git a/Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml b/Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
new file mode 100644
index 000000000000..c60903039718
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/freescale/imx7ulp_pmc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: i.MX7ULP Power Management Controller(PMC) Device Tree Bindings
+
+maintainers:
+  - Peng Fan <peng.fan@nxp.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - fsl,imx7ulp-pmc0
+          - fsl,imx7ulp-pmc1
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    pmc0: pmc0@410a1000 {
+        compatible = "fsl,imx7ulp-pmc0";
+        reg = <0x410a1000 0x1000>;
+    };
+...
-- 
2.16.4


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

* [PATCH V4 2/4] ARM: dts: imx7ulp: add pmc node
  2020-04-15 12:40 [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode peng.fan
  2020-04-15 12:40 ` [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc peng.fan
@ 2020-04-15 12:40 ` peng.fan
  2020-04-15 12:40 ` [PATCH V4 3/4] ARM: imx: imx7ulp: support HSRUN mode peng.fan
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-04-15 12:40 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, linux-imx, Anson.Huang, linux-arm-kernel,
	linux-kernel, abel.vesa, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX7ULP pmc0/1 node

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/boot/dts/imx7ulp.dtsi | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/arm/boot/dts/imx7ulp.dtsi b/arch/arm/boot/dts/imx7ulp.dtsi
index f7c4878534c8..bc9d692c0530 100644
--- a/arch/arm/boot/dts/imx7ulp.dtsi
+++ b/arch/arm/boot/dts/imx7ulp.dtsi
@@ -286,6 +286,11 @@
 			assigned-clock-parents = <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>;
 		};
 
+		pmc1: pmc1@40400000 {
+			compatible = "fsl,imx7ulp-pmc1";
+			reg = <0x40400000 0x1000>;
+		};
+
 		smc1: clock-controller@40410000 {
 			compatible = "fsl,imx7ulp-smc1";
 			reg = <0x40410000 0x1000>;
@@ -447,6 +452,11 @@
 		reg = <0x41080000 0x80000>;
 		ranges;
 
+		pmc0: pmc0@410a1000 {
+			compatible = "fsl,imx7ulp-pmc0";
+			reg = <0x410a1000 0x1000>;
+		};
+
 		sim: sim@410a3000 {
 			compatible = "fsl,imx7ulp-sim", "syscon";
 			reg = <0x410a3000 0x1000>;
-- 
2.16.4


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

* [PATCH V4 3/4] ARM: imx: imx7ulp: support HSRUN mode
  2020-04-15 12:40 [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode peng.fan
  2020-04-15 12:40 ` [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc peng.fan
  2020-04-15 12:40 ` [PATCH V4 2/4] ARM: dts: imx7ulp: add pmc node peng.fan
@ 2020-04-15 12:40 ` peng.fan
  2020-04-15 12:40 ` [PATCH V4 4/4] ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN peng.fan
  2020-05-07  6:27 ` [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode Peng Fan
  4 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-04-15 12:40 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, linux-imx, Anson.Huang, linux-arm-kernel,
	linux-kernel, abel.vesa, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Configure PMPROT to let ARM core could run into HSRUN mode.
In LDO-enabled mode, HSRUN mode is not allowed, so add a check before
configure PMPROT.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/pm-imx7ulp.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/arch/arm/mach-imx/pm-imx7ulp.c b/arch/arm/mach-imx/pm-imx7ulp.c
index 2e756d8191fa..393faf1e8382 100644
--- a/arch/arm/mach-imx/pm-imx7ulp.c
+++ b/arch/arm/mach-imx/pm-imx7ulp.c
@@ -11,6 +11,10 @@
 
 #include "common.h"
 
+#define PMC0_CTRL		0x28
+#define BM_CTRL_LDOEN		BIT(31)
+
+#define SMC_PMPROT		0x8
 #define SMC_PMCTRL		0x10
 #define BP_PMCTRL_PSTOPO        16
 #define PSTOPO_PSTOP3		0x3
@@ -25,7 +29,10 @@
 #define BM_PMCTRL_RUNM		(3 << BP_PMCTRL_RUNM)
 #define BM_PMCTRL_STOPM		(7 << BP_PMCTRL_STOPM)
 
+#define BM_PMPROT_AHSRUN	BIT(7)
+
 static void __iomem *smc1_base;
+static void __iomem *pmc0_base;
 
 int imx7ulp_set_lpm(enum ulp_cpu_pwr_mode mode)
 {
@@ -65,5 +72,13 @@ void __init imx7ulp_pm_init(void)
 	of_node_put(np);
 	WARN_ON(!smc1_base);
 
+	np = of_find_compatible_node(NULL, NULL, "fsl,imx7ulp-pmc0");
+	pmc0_base = of_iomap(np, 0);
+	WARN_ON(!pmc0_base);
+	of_node_put(np);
+
+	if (!(readl_relaxed(pmc0_base + PMC0_CTRL) & BM_CTRL_LDOEN))
+		writel_relaxed(BM_PMPROT_AHSRUN, smc1_base + SMC_PMPROT);
+
 	imx7ulp_set_lpm(ULP_PM_RUN);
 }
-- 
2.16.4


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

* [PATCH V4 4/4] ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN
  2020-04-15 12:40 [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode peng.fan
                   ` (2 preceding siblings ...)
  2020-04-15 12:40 ` [PATCH V4 3/4] ARM: imx: imx7ulp: support HSRUN mode peng.fan
@ 2020-04-15 12:40 ` peng.fan
  2020-05-07  6:27 ` [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode Peng Fan
  4 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-04-15 12:40 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, linux-imx, Anson.Huang, linux-arm-kernel,
	linux-kernel, abel.vesa, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

When cpu runs in HSRUN mode, cpuidle is not allowed to run into
Stop mode. So add imx7ulp_get_mode to get thr cpu run mode,
and use WAIT mode instead, when cpu in HSRUN mode.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm/mach-imx/common.h          |  1 +
 arch/arm/mach-imx/cpuidle-imx7ulp.c | 14 +++++++++++---
 arch/arm/mach-imx/pm-imx7ulp.c      | 10 ++++++++++
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index 5aa5796cff0e..db542da4fe67 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -104,6 +104,7 @@ void imx6_set_int_mem_clk_lpm(bool enable);
 void imx6sl_set_wait_clk(bool enter);
 int imx_mmdc_get_ddr_type(void);
 int imx7ulp_set_lpm(enum ulp_cpu_pwr_mode mode);
+u32 imx7ulp_get_mode(void);
 
 void imx_cpu_die(unsigned int cpu);
 int imx_cpu_kill(unsigned int cpu);
diff --git a/arch/arm/mach-imx/cpuidle-imx7ulp.c b/arch/arm/mach-imx/cpuidle-imx7ulp.c
index ca86c967d19e..e7009d10b331 100644
--- a/arch/arm/mach-imx/cpuidle-imx7ulp.c
+++ b/arch/arm/mach-imx/cpuidle-imx7ulp.c
@@ -15,10 +15,18 @@
 static int imx7ulp_enter_wait(struct cpuidle_device *dev,
 			    struct cpuidle_driver *drv, int index)
 {
-	if (index == 1)
+	u32 mode;
+
+	if (index == 1) {
 		imx7ulp_set_lpm(ULP_PM_WAIT);
-	else
-		imx7ulp_set_lpm(ULP_PM_STOP);
+	} else {
+		mode = imx7ulp_get_mode();
+
+		if (mode == 3)
+			imx7ulp_set_lpm(ULP_PM_WAIT);
+		else
+			imx7ulp_set_lpm(ULP_PM_STOP);
+	}
 
 	cpu_do_idle();
 
diff --git a/arch/arm/mach-imx/pm-imx7ulp.c b/arch/arm/mach-imx/pm-imx7ulp.c
index 393faf1e8382..1410ccfc71bd 100644
--- a/arch/arm/mach-imx/pm-imx7ulp.c
+++ b/arch/arm/mach-imx/pm-imx7ulp.c
@@ -63,6 +63,16 @@ int imx7ulp_set_lpm(enum ulp_cpu_pwr_mode mode)
 	return 0;
 }
 
+u32 imx7ulp_get_mode(void)
+{
+	u32 mode;
+
+	mode = readl_relaxed(smc1_base + SMC_PMCTRL) & BM_PMCTRL_RUNM;
+	mode >>= BP_PMCTRL_RUNM;
+
+	return mode;
+}
+
 void __init imx7ulp_pm_init(void)
 {
 	struct device_node *np;
-- 
2.16.4


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

* RE: [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode
  2020-04-15 12:40 [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode peng.fan
                   ` (3 preceding siblings ...)
  2020-04-15 12:40 ` [PATCH V4 4/4] ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN peng.fan
@ 2020-05-07  6:27 ` Peng Fan
  2020-05-11 14:25   ` Shawn Guo
  4 siblings, 1 reply; 8+ messages in thread
From: Peng Fan @ 2020-05-07  6:27 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, dl-linux-imx, Anson Huang, linux-arm-kernel,
	linux-kernel, Abel Vesa, Aisheng Dong

> Subject: [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode

Ping..

Thanks,
Peng.

> 
> From: Peng Fan <peng.fan@nxp.com>
> 
> V4:
>   Fix dt_bindings check
>   The same patchset was wrongly posted as V2,
>   https://patchwork.kernel.org/cover/11485107/
> 
> This is a splited part from V2:
> ARM: imx7ulp: add cpufreq using cpufreq-dt
> https://patchwork.kernel.org/cover/11390589/
> Nothing changed
> 
> The original V2 patchset is to support i.MX7ULP cpufreq, still waiting the
> virtual clk being accepted. so to decouple, this patchset only takes the run
> mode part.
> 
> Peng Fan (4):
>   dt-bindings: fsl: add i.MX7ULP PMC binding doc
>   ARM: dts: imx7ulp: add pmc node
>   ARM: imx: imx7ulp: support HSRUN mode
>   ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN
> 
>  .../bindings/arm/freescale/imx7ulp_pmc.yaml        | 32
> ++++++++++++++++++++++
>  arch/arm/boot/dts/imx7ulp.dtsi                     | 10 +++++++
>  arch/arm/mach-imx/common.h                         |  1 +
>  arch/arm/mach-imx/cpuidle-imx7ulp.c                | 14 ++++++++--
>  arch/arm/mach-imx/pm-imx7ulp.c                     | 25
> +++++++++++++++++
>  5 files changed, 79 insertions(+), 3 deletions(-)  create mode 100644
> Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
> 
> --
> 2.16.4


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

* Re: [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode
  2020-05-07  6:27 ` [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode Peng Fan
@ 2020-05-11 14:25   ` Shawn Guo
  0 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2020-05-11 14:25 UTC (permalink / raw)
  To: Peng Fan
  Cc: s.hauer, sboyd, robh+dt, kernel, festevam, dl-linux-imx,
	Anson Huang, linux-arm-kernel, linux-kernel, Abel Vesa,
	Aisheng Dong

On Thu, May 07, 2020 at 06:27:52AM +0000, Peng Fan wrote:
> > Subject: [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode
> 
> Ping..
> 
> Thanks,
> Peng.
> 
> > 
> > From: Peng Fan <peng.fan@nxp.com>
> > 
> > V4:
> >   Fix dt_bindings check
> >   The same patchset was wrongly posted as V2,
> >   https://patchwork.kernel.org/cover/11485107/
> > 
> > This is a splited part from V2:
> > ARM: imx7ulp: add cpufreq using cpufreq-dt
> > https://patchwork.kernel.org/cover/11390589/
> > Nothing changed
> > 
> > The original V2 patchset is to support i.MX7ULP cpufreq, still waiting the
> > virtual clk being accepted. so to decouple, this patchset only takes the run
> > mode part.
> > 
> > Peng Fan (4):
> >   dt-bindings: fsl: add i.MX7ULP PMC binding doc

Need an ACK from Rob on this new binding.

Shawn

> >   ARM: dts: imx7ulp: add pmc node
> >   ARM: imx: imx7ulp: support HSRUN mode
> >   ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN
> > 
> >  .../bindings/arm/freescale/imx7ulp_pmc.yaml        | 32
> > ++++++++++++++++++++++
> >  arch/arm/boot/dts/imx7ulp.dtsi                     | 10 +++++++
> >  arch/arm/mach-imx/common.h                         |  1 +
> >  arch/arm/mach-imx/cpuidle-imx7ulp.c                | 14 ++++++++--
> >  arch/arm/mach-imx/pm-imx7ulp.c                     | 25
> > +++++++++++++++++
> >  5 files changed, 79 insertions(+), 3 deletions(-)  create mode 100644
> > Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
> > 
> > --
> > 2.16.4
> 

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

* RE: [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc
  2020-04-15 12:40 ` [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc peng.fan
@ 2020-05-12  2:36   ` Peng Fan
  0 siblings, 0 replies; 8+ messages in thread
From: Peng Fan @ 2020-05-12  2:36 UTC (permalink / raw)
  To: shawnguo, s.hauer, sboyd, robh+dt
  Cc: kernel, festevam, dl-linux-imx, Anson Huang, linux-arm-kernel,
	linux-kernel, Abel Vesa

Hi Rob,

> Subject: [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc

Could I have your A-b for this patch?

Thanks,
Peng.

> 
> From: Peng Fan <peng.fan@nxp.com>
> 
> Add i.MX7ULP Power Management Controller binding doc
> pmc0 is used by M4, pmc1 is used by A7, they have different register name
> and usage.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  .../bindings/arm/freescale/imx7ulp_pmc.yaml        | 32
> ++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
>  create mode 100644
> Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
> 
> diff --git
> a/Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
> b/Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
> new file mode 100644
> index 000000000000..c60903039718
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/arm/freescale/imx7ulp_pmc.yaml
> @@ -0,0 +1,32 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/arm/freescale/imx7ulp_pmc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: i.MX7ULP Power Management Controller(PMC) Device Tree Bindings
> +
> +maintainers:
> +  - Peng Fan <peng.fan@nxp.com>
> +
> +properties:
> +  compatible:
> +    items:
> +      - enum:
> +          - fsl,imx7ulp-pmc0
> +          - fsl,imx7ulp-pmc1
> +
> +  reg:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +    pmc0: pmc0@410a1000 {
> +        compatible = "fsl,imx7ulp-pmc0";
> +        reg = <0x410a1000 0x1000>;
> +    };
> +...
> --
> 2.16.4


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

end of thread, other threads:[~2020-05-12  2:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-15 12:40 [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode peng.fan
2020-04-15 12:40 ` [PATCH V4 1/4] dt-bindings: fsl: add i.MX7ULP PMC binding doc peng.fan
2020-05-12  2:36   ` Peng Fan
2020-04-15 12:40 ` [PATCH V4 2/4] ARM: dts: imx7ulp: add pmc node peng.fan
2020-04-15 12:40 ` [PATCH V4 3/4] ARM: imx: imx7ulp: support HSRUN mode peng.fan
2020-04-15 12:40 ` [PATCH V4 4/4] ARM: imx: cpuidle-imx7ulp: Stop mode disallowed when HSRUN peng.fan
2020-05-07  6:27 ` [PATCH V4 0/4] ARM: imx7ulp: support HSRUN mode Peng Fan
2020-05-11 14:25   ` 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).