From: Peng Fan <[email protected]>
V2:
Fix dt_bindings check
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
From: Peng Fan <[email protected]>
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 <[email protected]>
---
V2:
Fix dt_bindings_check
.../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 <[email protected]>
+
+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
From: Peng Fan <[email protected]>
Add i.MX7ULP pmc0/1 node
Signed-off-by: Peng Fan <[email protected]>
---
V2:
None
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
From: Peng Fan <[email protected]>
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 <[email protected]>
---
V2:
None
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
On Mon, Apr 13, 2020 at 02:49:04PM +0800, [email protected] wrote:
> From: Peng Fan <[email protected]>
>
> V2:
> Fix dt_bindings check
Confusing. The series posted on Mar. 16 was already numbered v3. Now,
it goes back to v2. You should at least have a note to explain how they
are related.
Shawn
>
> 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
>
> Subject: Re: [PATCH V2 0/4] ARM: imx7ulp: support HSRUN mode
>
> On Mon, Apr 13, 2020 at 02:49:04PM +0800, [email protected] wrote:
> > From: Peng Fan <[email protected]>
> >
> > V2:
> > Fix dt_bindings check
>
> Confusing. The series posted on Mar. 16 was already numbered v3. Now,
> it goes back to v2. You should at least have a note to explain how they are
> related.
Sorry, this should be v4. I format patch with wrong subject prefix.
Will post this patchset again with v4.
Thanks,
Peng.
>
> Shawn
>
> >
> > This is a splited part from V2:
> > ARM: imx7ulp: add cpufreq using cpufreq-dt
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.kernel.org%2Fcover%2F11390589%2F&data=02%7C01%7Cpeng.f
> an%40n
> >
> xp.com%7C5d5665f577bc4175d56108d7e079f573%7C686ea1d3bc2b4c6fa92
> cd99c5c
> >
> 301635%7C0%7C1%7C637224686727427611&sdata=LP0xeyGrCzZcR7U
> ruDnPqAFT
> > qzFgdj68hs41%2F5eiWrc%3D&reserved=0
> > 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
> >