linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Add imx7d speed grading and higher OPPs
@ 2019-06-05 10:37 Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 1/5] cpufreq: imx-cpufreq-dt: Remove global platform match list Leonard Crestez
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Leonard Crestez @ 2019-06-05 10:37 UTC (permalink / raw)
  To: Viresh Kumar, Shawn Guo
  Cc: Jacky Bai, Anson Huang, Rafael J. Wysocki, Dong Aisheng,
	Fabio Estevam, kernel, linux-imx, linux-pm, linux-arm-kernel

Changes since v1:
 * Remove the match list from imx-cpufreq-dt
 * Split arch and cpufreq changes
Link to v1: https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=124427

Leonard Crestez (5):
  cpufreq: imx-cpufreq-dt: Remove global platform match list
  cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading
  ARM: imx: Switch imx7d to imx-cpufreq-dt for speed-grading
  ARM: dts: imx7d: Update cpufreq OPP table
  ARM: imx_v6_v7_defconfig: Enable CONFIG_ARM_IMX_CPUFREQ_DT

 arch/arm/boot/dts/imx7d.dtsi         | 16 +++++++++++++---
 arch/arm/boot/dts/imx7s.dtsi         |  4 ++++
 arch/arm/configs/imx_v6_v7_defconfig |  1 +
 arch/arm/mach-imx/mach-imx7d.c       |  7 +++++++
 drivers/cpufreq/cpufreq-dt-platdev.c |  2 +-
 drivers/cpufreq/imx-cpufreq-dt.c     | 18 ++----------------
 6 files changed, 28 insertions(+), 20 deletions(-)

-- 
2.7.4


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

* [PATCH v2 1/5] cpufreq: imx-cpufreq-dt: Remove global platform match list
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
@ 2019-06-05 10:37 ` Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 2/5] cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading Leonard Crestez
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Leonard Crestez @ 2019-06-05 10:37 UTC (permalink / raw)
  To: Viresh Kumar, Shawn Guo
  Cc: Jacky Bai, Anson Huang, Rafael J. Wysocki, Dong Aisheng,
	Fabio Estevam, kernel, linux-imx, linux-pm, linux-arm-kernel

This is not currently needed, instead a platform device is always created
from SOC-specific code.

We can use of_machine_is_compatible for per-SOC behavior instead.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 drivers/cpufreq/imx-cpufreq-dt.c | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/drivers/cpufreq/imx-cpufreq-dt.c b/drivers/cpufreq/imx-cpufreq-dt.c
index 35b6717d7255..b54fd26ea7df 100644
--- a/drivers/cpufreq/imx-cpufreq-dt.c
+++ b/drivers/cpufreq/imx-cpufreq-dt.c
@@ -17,35 +17,21 @@
 #define OCOTP_CFG3_SPEED_GRADE_SHIFT	8
 #define OCOTP_CFG3_SPEED_GRADE_MASK	(0x3 << 8)
 #define OCOTP_CFG3_MKT_SEGMENT_SHIFT    6
 #define OCOTP_CFG3_MKT_SEGMENT_MASK     (0x3 << 6)
 
-static const struct of_device_id imx_cpufreq_dt_match_list[] = {
-	{ .compatible = "fsl,imx8mm" },
-	{ .compatible = "fsl,imx8mq" },
-	{}
-};
-
 /* cpufreq-dt device registered by imx-cpufreq-dt */
 static struct platform_device *cpufreq_dt_pdev;
 static struct opp_table *cpufreq_opp_table;
 
 static int imx_cpufreq_dt_probe(struct platform_device *pdev)
 {
 	struct device *cpu_dev = get_cpu_device(0);
-	struct device_node *np;
-	const struct of_device_id *match;
 	u32 cell_value, supported_hw[2];
 	int speed_grade, mkt_segment;
 	int ret;
 
-	np = of_find_node_by_path("/");
-	match = of_match_node(imx_cpufreq_dt_match_list, np);
-	of_node_put(np);
-	if (!match)
-		return -ENODEV;
-
 	ret = nvmem_cell_read_u32(cpu_dev, "speed_grade", &cell_value);
 	if (ret)
 		return ret;
 
 	speed_grade = (cell_value & OCOTP_CFG3_SPEED_GRADE_MASK) >> OCOTP_CFG3_SPEED_GRADE_SHIFT;
@@ -59,12 +45,12 @@ static int imx_cpufreq_dt_probe(struct platform_device *pdev)
 	 * consumer parts so clamp to 1 to avoid warning for "no OPPs"
 	 *
 	 * Applies to 8mq and 8mm.
 	 */
 	if (mkt_segment == 0 && speed_grade == 0 && (
-			!strcmp(match->compatible, "fsl,imx8mm") ||
-			!strcmp(match->compatible, "fsl,imx8mq")))
+			of_machine_is_compatible("fsl,imx8mm") ||
+			of_machine_is_compatible("fsl,imx8mq")))
 		speed_grade = 1;
 
 	supported_hw[0] = BIT(speed_grade);
 	supported_hw[1] = BIT(mkt_segment);
 	dev_info(&pdev->dev, "cpu speed grade %d mkt segment %d supported-hw %#x %#x\n",
-- 
2.7.4


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

* [PATCH v2 2/5] cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 1/5] cpufreq: imx-cpufreq-dt: Remove global platform match list Leonard Crestez
@ 2019-06-05 10:37 ` Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 3/5] ARM: imx: Switch imx7d to imx-cpufreq-dt for speed-grading Leonard Crestez
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Leonard Crestez @ 2019-06-05 10:37 UTC (permalink / raw)
  To: Viresh Kumar, Shawn Guo
  Cc: Jacky Bai, Anson Huang, Rafael J. Wysocki, Dong Aisheng,
	Fabio Estevam, kernel, linux-imx, linux-pm, linux-arm-kernel

This driver can handle speed grading bits on imx7d just like on imx8mq
and imx8mm.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 drivers/cpufreq/cpufreq-dt-platdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
index 19c1aad57e26..eb282dff9f2c 100644
--- a/drivers/cpufreq/cpufreq-dt-platdev.c
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
@@ -38,11 +38,10 @@ static const struct of_device_id whitelist[] __initconst = {
 	{ .compatible = "hisilicon,hi3660", },
 
 	{ .compatible = "fsl,imx27", },
 	{ .compatible = "fsl,imx51", },
 	{ .compatible = "fsl,imx53", },
-	{ .compatible = "fsl,imx7d", },
 
 	{ .compatible = "marvell,berlin", },
 	{ .compatible = "marvell,pxa250", },
 	{ .compatible = "marvell,pxa270", },
 
@@ -106,10 +105,11 @@ static const struct of_device_id whitelist[] __initconst = {
  */
 static const struct of_device_id blacklist[] __initconst = {
 	{ .compatible = "calxeda,highbank", },
 	{ .compatible = "calxeda,ecx-2000", },
 
+	{ .compatible = "fsl,imx7d", },
 	{ .compatible = "fsl,imx8mq", },
 	{ .compatible = "fsl,imx8mm", },
 
 	{ .compatible = "marvell,armadaxp", },
 
-- 
2.7.4


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

* [PATCH v2 3/5] ARM: imx: Switch imx7d to imx-cpufreq-dt for speed-grading
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 1/5] cpufreq: imx-cpufreq-dt: Remove global platform match list Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 2/5] cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading Leonard Crestez
@ 2019-06-05 10:37 ` Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 4/5] ARM: dts: imx7d: Update cpufreq OPP table Leonard Crestez
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Leonard Crestez @ 2019-06-05 10:37 UTC (permalink / raw)
  To: Viresh Kumar, Shawn Guo
  Cc: Jacky Bai, Anson Huang, Rafael J. Wysocki, Dong Aisheng,
	Fabio Estevam, kernel, linux-imx, linux-pm, linux-arm-kernel

The imx-cpufreq-dt driver can handle speed grading bits on imx7d just
like on imx8mq and imx8mm.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 arch/arm/mach-imx/mach-imx7d.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/mach-imx/mach-imx7d.c b/arch/arm/mach-imx/mach-imx7d.c
index 26ca744d3e2b..0b77412795c9 100644
--- a/arch/arm/mach-imx/mach-imx7d.c
+++ b/arch/arm/mach-imx/mach-imx7d.c
@@ -95,10 +95,16 @@ static void __init imx7d_init_machine(void)
 
 	imx_anatop_init();
 	imx7d_enet_init();
 }
 
+static void __init imx7d_init_late(void)
+{
+	if (IS_ENABLED(CONFIG_ARM_IMX_CPUFREQ_DT))
+		platform_device_register_simple("imx-cpufreq-dt", -1, NULL, 0);
+}
+
 static void __init imx7d_init_irq(void)
 {
 	imx_init_revision_from_anatop();
 	imx_src_init();
 	irqchip_init();
@@ -111,7 +117,8 @@ static const char *const imx7d_dt_compat[] __initconst = {
 };
 
 DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual (Device Tree)")
 	.init_irq	= imx7d_init_irq,
 	.init_machine	= imx7d_init_machine,
+	.init_late      = imx7d_init_late,
 	.dt_compat	= imx7d_dt_compat,
 MACHINE_END
-- 
2.7.4


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

* [PATCH v2 4/5] ARM: dts: imx7d: Update cpufreq OPP table
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
                   ` (2 preceding siblings ...)
  2019-06-05 10:37 ` [PATCH v2 3/5] ARM: imx: Switch imx7d to imx-cpufreq-dt for speed-grading Leonard Crestez
@ 2019-06-05 10:37 ` Leonard Crestez
  2019-06-05 10:37 ` [PATCH v2 5/5] ARM: imx_v6_v7_defconfig: Enable CONFIG_ARM_IMX_CPUFREQ_DT Leonard Crestez
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Leonard Crestez @ 2019-06-05 10:37 UTC (permalink / raw)
  To: Viresh Kumar, Shawn Guo
  Cc: Jacky Bai, Anson Huang, Rafael J. Wysocki, Dong Aisheng,
	Fabio Estevam, kernel, linux-imx, linux-pm, linux-arm-kernel

According to latest docs imx7d chips can go from 800 to 1200 mhz.
Maximum frequency is determined from two speed grading bits present in
OCOTP fuses at same location as other imx chips.

Also update to "typical" voltages from latest datasheet, 25mv higher
than current dts.

All imx7s parts are still fixed at 800mhz

Based on:
* IMX7DCEC Rev. 6, 03/2019
* IMX7SCEC Rev. 6, 03/2019
* IMX7DRM Rev. 1, 01/2018 Page 1102

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 arch/arm/boot/dts/imx7d.dtsi | 16 +++++++++++++---
 arch/arm/boot/dts/imx7s.dtsi |  4 ++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
index f33b560821b8..42528d2812a2 100644
--- a/arch/arm/boot/dts/imx7d.dtsi
+++ b/arch/arm/boot/dts/imx7d.dtsi
@@ -10,10 +10,12 @@
 	cpus {
 		cpu0: cpu@0 {
 			clock-frequency = <996000000>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			#cooling-cells = <2>;
+			nvmem-cells = <&cpu_speed_grade>;
+			nvmem-cell-names = "speed_grade";
 		};
 
 		cpu1: cpu@1 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
@@ -37,19 +39,27 @@
 		compatible = "operating-points-v2";
 		opp-shared;
 
 		opp-792000000 {
 			opp-hz = /bits/ 64 <792000000>;
-			opp-microvolt = <975000>;
+			opp-microvolt = <1000000>;
 			clock-latency-ns = <150000>;
+			opp-supported-hw = <0xf>, <0xf>;
 		};
 
 		opp-996000000 {
 			opp-hz = /bits/ 64 <996000000>;
-			opp-microvolt = <1075000>;
+			opp-microvolt = <1100000>;
 			clock-latency-ns = <150000>;
-			opp-suspend;
+			opp-supported-hw = <0xc>, <0xf>;
+		};
+
+		opp-1200000000 {
+			opp-hz = /bits/ 64 <1200000000>;
+			opp-microvolt = <1225000>;
+			clock-latency-ns = <150000>;
+			opp-supported-hw = <0x8>, <0xf>;
 		};
 	};
 
 	usbphynop2: usbphynop2 {
 		compatible = "usb-nop-xceiv";
diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi
index d8b4eb67146d..5b8292670b4b 100644
--- a/arch/arm/boot/dts/imx7s.dtsi
+++ b/arch/arm/boot/dts/imx7s.dtsi
@@ -549,10 +549,14 @@
 				};
 
 				tempmon_temp_grade: temp-grade@10 {
 					reg = <0x10 0x4>;
 				};
+
+				cpu_speed_grade: speed-grade@10 {
+					reg = <0x10 0x4>;
+				};
 			};
 
 			anatop: anatop@30360000 {
 				compatible = "fsl,imx7d-anatop", "fsl,imx6q-anatop",
 					"syscon", "simple-bus";
-- 
2.7.4


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

* [PATCH v2 5/5] ARM: imx_v6_v7_defconfig: Enable CONFIG_ARM_IMX_CPUFREQ_DT
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
                   ` (3 preceding siblings ...)
  2019-06-05 10:37 ` [PATCH v2 4/5] ARM: dts: imx7d: Update cpufreq OPP table Leonard Crestez
@ 2019-06-05 10:37 ` Leonard Crestez
  2019-06-06  3:08 ` [PATCH 0/5] Add imx7d speed grading and higher OPPs Viresh Kumar
  2019-06-12 10:33 ` Shawn Guo
  6 siblings, 0 replies; 8+ messages in thread
From: Leonard Crestez @ 2019-06-05 10:37 UTC (permalink / raw)
  To: Viresh Kumar, Shawn Guo
  Cc: Jacky Bai, Anson Huang, Rafael J. Wysocki, Dong Aisheng,
	Fabio Estevam, kernel, linux-imx, linux-pm, linux-arm-kernel

This is used for imx7d speed grading.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 arch/arm/configs/imx_v6_v7_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 4daf807e6970..507c1fcca624 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -52,10 +52,11 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
 CONFIG_CPU_FREQ_GOV_USERSPACE=y
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 CONFIG_CPUFREQ_DT=y
 CONFIG_ARM_IMX6Q_CPUFREQ=y
+CONFIG_ARM_IMX_CPUFREQ_DT=y
 CONFIG_CPU_IDLE=y
 CONFIG_ARM_CPUIDLE=y
 CONFIG_VFP=y
 CONFIG_NEON=y
 CONFIG_PM_DEBUG=y
-- 
2.7.4


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

* Re: [PATCH 0/5] Add imx7d speed grading and higher OPPs
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
                   ` (4 preceding siblings ...)
  2019-06-05 10:37 ` [PATCH v2 5/5] ARM: imx_v6_v7_defconfig: Enable CONFIG_ARM_IMX_CPUFREQ_DT Leonard Crestez
@ 2019-06-06  3:08 ` Viresh Kumar
  2019-06-12 10:33 ` Shawn Guo
  6 siblings, 0 replies; 8+ messages in thread
From: Viresh Kumar @ 2019-06-06  3:08 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: Shawn Guo, Jacky Bai, Anson Huang, Rafael J. Wysocki,
	Dong Aisheng, Fabio Estevam, kernel, linux-imx, linux-pm,
	linux-arm-kernel

On 05-06-19, 13:37, Leonard Crestez wrote:
> Changes since v1:
>  * Remove the match list from imx-cpufreq-dt
>  * Split arch and cpufreq changes
> Link to v1: https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=124427
> 
> Leonard Crestez (5):
>   cpufreq: imx-cpufreq-dt: Remove global platform match list

Added following to this patch:

Suggested-by: Viresh Kumar <viresh.kumar@linaro.org>

>   cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading

Applied the first two patches. Thanks.

-- 
viresh

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

* Re: [PATCH 0/5] Add imx7d speed grading and higher OPPs
  2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
                   ` (5 preceding siblings ...)
  2019-06-06  3:08 ` [PATCH 0/5] Add imx7d speed grading and higher OPPs Viresh Kumar
@ 2019-06-12 10:33 ` Shawn Guo
  6 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2019-06-12 10:33 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: Viresh Kumar, Jacky Bai, Anson Huang, Rafael J. Wysocki,
	Dong Aisheng, Fabio Estevam, kernel, linux-imx, linux-pm,
	linux-arm-kernel

On Wed, Jun 05, 2019 at 01:37:04PM +0300, Leonard Crestez wrote:
> Changes since v1:
>  * Remove the match list from imx-cpufreq-dt
>  * Split arch and cpufreq changes
> Link to v1: https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=124427
> 
> Leonard Crestez (5):
>   cpufreq: imx-cpufreq-dt: Remove global platform match list
>   cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading

>   ARM: imx: Switch imx7d to imx-cpufreq-dt for speed-grading
>   ARM: dts: imx7d: Update cpufreq OPP table
>   ARM: imx_v6_v7_defconfig: Enable CONFIG_ARM_IMX_CPUFREQ_DT

Applied these 3, thanks.

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

end of thread, other threads:[~2019-06-12 10:34 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-05 10:37 [PATCH 0/5] Add imx7d speed grading and higher OPPs Leonard Crestez
2019-06-05 10:37 ` [PATCH v2 1/5] cpufreq: imx-cpufreq-dt: Remove global platform match list Leonard Crestez
2019-06-05 10:37 ` [PATCH v2 2/5] cpufreq: Switch imx7d to imx-cpufreq-dt for speed grading Leonard Crestez
2019-06-05 10:37 ` [PATCH v2 3/5] ARM: imx: Switch imx7d to imx-cpufreq-dt for speed-grading Leonard Crestez
2019-06-05 10:37 ` [PATCH v2 4/5] ARM: dts: imx7d: Update cpufreq OPP table Leonard Crestez
2019-06-05 10:37 ` [PATCH v2 5/5] ARM: imx_v6_v7_defconfig: Enable CONFIG_ARM_IMX_CPUFREQ_DT Leonard Crestez
2019-06-06  3:08 ` [PATCH 0/5] Add imx7d speed grading and higher OPPs Viresh Kumar
2019-06-12 10:33 ` 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).