* [1/5] cpufreq: ti-cpufreq: Add support for AM625
2022-11-01 17:10 cpufreq: ti-cpufreq: Enable AM625 CPUFreq Vibhore Vardhan
@ 2022-11-01 17:10 ` Vibhore Vardhan
2022-11-01 17:10 ` [2/5] cpufreq: dt-platdev: Blacklist ti,am625 SoC Vibhore Vardhan
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Vibhore Vardhan @ 2022-11-01 17:10 UTC (permalink / raw)
To: nm, vigneshr, kristo, robh+dt, krzysztof.kozlowski+dt, rafael,
viresh.kumar
Cc: linux-arm-kernel, devicetree, linux-kernel, linux-pm
From: Dave Gerlach <d-gerlach@ti.com>
Add support for TI K3 AM625 SoC to read speed and revision values from
hardware and pass to OPP layer.
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Vibhore Vardhan <vibhore@ti.com>
---
drivers/cpufreq/ti-cpufreq.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/drivers/cpufreq/ti-cpufreq.c b/drivers/cpufreq/ti-cpufreq.c
index df85a77d476b..48aa8d734447 100644
--- a/drivers/cpufreq/ti-cpufreq.c
+++ b/drivers/cpufreq/ti-cpufreq.c
@@ -39,6 +39,14 @@
#define OMAP34xx_ProdID_SKUID 0x4830A20C
#define OMAP3_SYSCON_BASE (0x48000000 + 0x2000 + 0x270)
+#define AM625_EFUSE_K_MPU_OPP 11
+#define AM625_EFUSE_S_MPU_OPP 19
+#define AM625_EFUSE_T_MPU_OPP 20
+
+#define AM625_SUPPORT_K_MPU_OPP BIT(0)
+#define AM625_SUPPORT_S_MPU_OPP BIT(1)
+#define AM625_SUPPORT_T_MPU_OPP BIT(2)
+
#define VERSION_COUNT 2
struct ti_cpufreq_data;
@@ -104,6 +112,25 @@ static unsigned long omap3_efuse_xlate(struct ti_cpufreq_data *opp_data,
return BIT(efuse);
}
+static unsigned long am625_efuse_xlate(struct ti_cpufreq_data *opp_data,
+ unsigned long efuse)
+{
+ unsigned long calculated_efuse = AM625_SUPPORT_K_MPU_OPP;
+
+ switch (efuse) {
+ case AM625_EFUSE_T_MPU_OPP:
+ calculated_efuse |= AM625_SUPPORT_T_MPU_OPP;
+ fallthrough;
+ case AM625_EFUSE_S_MPU_OPP:
+ calculated_efuse |= AM625_SUPPORT_S_MPU_OPP;
+ fallthrough;
+ case AM625_EFUSE_K_MPU_OPP:
+ calculated_efuse |= AM625_SUPPORT_K_MPU_OPP;
+ }
+
+ return calculated_efuse;
+}
+
static struct ti_cpufreq_soc_data am3x_soc_data = {
.efuse_xlate = amx3_efuse_xlate,
.efuse_fallback = AM33XX_800M_ARM_MPU_MAX_FREQ,
@@ -198,6 +225,14 @@ static struct ti_cpufreq_soc_data am3517_soc_data = {
.multi_regulator = false,
};
+static struct ti_cpufreq_soc_data am625_soc_data = {
+ .efuse_xlate = am625_efuse_xlate,
+ .efuse_offset = 0x0018,
+ .efuse_mask = 0x07c0,
+ .efuse_shift = 0x6,
+ .rev_offset = 0x0014,
+ .multi_regulator = false,
+};
/**
* ti_cpufreq_get_efuse() - Parse and return efuse value present on SoC
@@ -301,6 +336,7 @@ static const struct of_device_id ti_cpufreq_of_match[] = {
{ .compatible = "ti,dra7", .data = &dra7_soc_data },
{ .compatible = "ti,omap34xx", .data = &omap34xx_soc_data, },
{ .compatible = "ti,omap36xx", .data = &omap36xx_soc_data, },
+ { .compatible = "ti,am625", .data = &am625_soc_data, },
/* legacy */
{ .compatible = "ti,omap3430", .data = &omap34xx_soc_data, },
{ .compatible = "ti,omap3630", .data = &omap36xx_soc_data, },
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [2/5] cpufreq: dt-platdev: Blacklist ti,am625 SoC
2022-11-01 17:10 cpufreq: ti-cpufreq: Enable AM625 CPUFreq Vibhore Vardhan
2022-11-01 17:10 ` [1/5] cpufreq: ti-cpufreq: Add support for AM625 Vibhore Vardhan
@ 2022-11-01 17:10 ` Vibhore Vardhan
2022-11-01 17:10 ` [3/5] arm64: dts: ti: k3-am625: Introduce operating-points table Vibhore Vardhan
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Vibhore Vardhan @ 2022-11-01 17:10 UTC (permalink / raw)
To: nm, vigneshr, kristo, robh+dt, krzysztof.kozlowski+dt, rafael,
viresh.kumar
Cc: linux-arm-kernel, devicetree, linux-kernel, linux-pm
From: Dave Gerlach <d-gerlach@ti.com>
Add ti,am625 SoC to the blacklist as the ti-cpufreq driver will handle
creating the cpufreq-dt platform device after it completes so it is not
created twice.
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Vibhore Vardhan <vibhore@ti.com>
---
drivers/cpufreq/cpufreq-dt-platdev.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/cpufreq/cpufreq-dt-platdev.c b/drivers/cpufreq/cpufreq-dt-platdev.c
index 2c96de3f2d83..d987093fad27 100644
--- a/drivers/cpufreq/cpufreq-dt-platdev.c
+++ b/drivers/cpufreq/cpufreq-dt-platdev.c
@@ -159,6 +159,7 @@ static const struct of_device_id blocklist[] __initconst = {
{ .compatible = "ti,am43", },
{ .compatible = "ti,dra7", },
{ .compatible = "ti,omap3", },
+ { .compatible = "ti,am625", },
{ .compatible = "qcom,ipq8064", },
{ .compatible = "qcom,apq8064", },
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [3/5] arm64: dts: ti: k3-am625: Introduce operating-points table
2022-11-01 17:10 cpufreq: ti-cpufreq: Enable AM625 CPUFreq Vibhore Vardhan
2022-11-01 17:10 ` [1/5] cpufreq: ti-cpufreq: Add support for AM625 Vibhore Vardhan
2022-11-01 17:10 ` [2/5] cpufreq: dt-platdev: Blacklist ti,am625 SoC Vibhore Vardhan
@ 2022-11-01 17:10 ` Vibhore Vardhan
2022-11-01 17:10 ` [4/5] cpufreq: ti: Enable ti-cpufreq for ARCH_K3 Vibhore Vardhan
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Vibhore Vardhan @ 2022-11-01 17:10 UTC (permalink / raw)
To: nm, vigneshr, kristo, robh+dt, krzysztof.kozlowski+dt, rafael,
viresh.kumar
Cc: linux-arm-kernel, devicetree, linux-kernel, linux-pm
From: Dave Gerlach <d-gerlach@ti.com>
Introduce an operating-points table for the A53 cores, containing only
frequency values as this platform operates on a fixed voltage for the
CPUs. Also provide opp-supported-hw values to ensure appropriate OPPs
are enabled based on which type of silicon is in use.
The latency between pre and post frequency transition was measured in
CPUFreq driver for all combinations of OPP changes. The average value
was selected as overall clock-latency-ns.
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Vibhore Vardhan <vibhore@ti.com>
---
arch/arm64/boot/dts/ti/k3-am625.dtsi | 51 ++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am625.dtsi b/arch/arm64/boot/dts/ti/k3-am625.dtsi
index 887f31c23fef..911a0006ec00 100644
--- a/arch/arm64/boot/dts/ti/k3-am625.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am625.dtsi
@@ -48,6 +48,8 @@ cpu0: cpu@0 {
d-cache-line-size = <64>;
d-cache-sets = <128>;
next-level-cache = <&L2_0>;
+ operating-points-v2 = <&a53_opp_table>;
+ clocks = <&k3_clks 135 0>;
};
cpu1: cpu@1 {
@@ -62,6 +64,8 @@ cpu1: cpu@1 {
d-cache-line-size = <64>;
d-cache-sets = <128>;
next-level-cache = <&L2_0>;
+ operating-points-v2 = <&a53_opp_table>;
+ clocks = <&k3_clks 136 0>;
};
cpu2: cpu@2 {
@@ -76,6 +80,8 @@ cpu2: cpu@2 {
d-cache-line-size = <64>;
d-cache-sets = <128>;
next-level-cache = <&L2_0>;
+ operating-points-v2 = <&a53_opp_table>;
+ clocks = <&k3_clks 137 0>;
};
cpu3: cpu@3 {
@@ -90,6 +96,51 @@ cpu3: cpu@3 {
d-cache-line-size = <64>;
d-cache-sets = <128>;
next-level-cache = <&L2_0>;
+ operating-points-v2 = <&a53_opp_table>;
+ clocks = <&k3_clks 138 0>;
+ };
+ };
+
+ a53_opp_table: opp-table {
+ compatible = "operating-points-v2-ti-cpu";
+ opp-shared;
+ syscon = <&wkup_conf>;
+
+ opp-200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ opp-supported-hw = <0x01 0x0007>;
+ clock-latency-ns = <6000000>;
+ };
+
+ opp-400000000 {
+ opp-hz = /bits/ 64 <400000000>;
+ opp-supported-hw = <0x01 0x0007>;
+ clock-latency-ns = <6000000>;
+ };
+
+ opp-600000000 {
+ opp-hz = /bits/ 64 <600000000>;
+ opp-supported-hw = <0x01 0x0007>;
+ clock-latency-ns = <6000000>;
+ };
+
+ opp-800000000 {
+ opp-hz = /bits/ 64 <800000000>;
+ opp-supported-hw = <0x01 0x0007>;
+ clock-latency-ns = <6000000>;
+ };
+
+ opp-1000000000 {
+ opp-hz = /bits/ 64 <1000000000>;
+ opp-supported-hw = <0x01 0x0006>;
+ clock-latency-ns = <6000000>;
+ };
+
+ opp-1250000000 {
+ opp-hz = /bits/ 64 <1250000000>;
+ opp-supported-hw = <0x01 0x0004>;
+ clock-latency-ns = <6000000>;
+ opp-suspend;
};
};
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [4/5] cpufreq: ti: Enable ti-cpufreq for ARCH_K3
2022-11-01 17:10 cpufreq: ti-cpufreq: Enable AM625 CPUFreq Vibhore Vardhan
` (2 preceding siblings ...)
2022-11-01 17:10 ` [3/5] arm64: dts: ti: k3-am625: Introduce operating-points table Vibhore Vardhan
@ 2022-11-01 17:10 ` Vibhore Vardhan
2022-11-01 17:10 ` [5/5] arm64: dts: ti: k3-am625-sk: Add 1.4GHz OPP Vibhore Vardhan
2022-11-02 15:30 ` cpufreq: ti-cpufreq: Enable AM625 CPUFreq Krzysztof Kozlowski
5 siblings, 0 replies; 7+ messages in thread
From: Vibhore Vardhan @ 2022-11-01 17:10 UTC (permalink / raw)
To: nm, vigneshr, kristo, robh+dt, krzysztof.kozlowski+dt, rafael,
viresh.kumar
Cc: linux-arm-kernel, devicetree, linux-kernel, linux-pm
From: Dave Gerlach <d-gerlach@ti.com>
Make ti-cpufreq driver depend on ARCH_K3 and set it to `default y` so it
is always enabled for platforms that it depends on.
Signed-off-by: Dave Gerlach <d-gerlach@ti.com>
Signed-off-by: Vibhore Vardhan <vibhore@ti.com>
---
drivers/cpufreq/Kconfig.arm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index 954749afb5fe..33bb890a0a5b 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -340,8 +340,8 @@ config ARM_TEGRA194_CPUFREQ
config ARM_TI_CPUFREQ
bool "Texas Instruments CPUFreq support"
- depends on ARCH_OMAP2PLUS
- default ARCH_OMAP2PLUS
+ depends on ARCH_OMAP2PLUS || ARCH_K3
+ default y
help
This driver enables valid OPPs on the running platform based on
values contained within the SoC in use. Enable this in order to
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [5/5] arm64: dts: ti: k3-am625-sk: Add 1.4GHz OPP
2022-11-01 17:10 cpufreq: ti-cpufreq: Enable AM625 CPUFreq Vibhore Vardhan
` (3 preceding siblings ...)
2022-11-01 17:10 ` [4/5] cpufreq: ti: Enable ti-cpufreq for ARCH_K3 Vibhore Vardhan
@ 2022-11-01 17:10 ` Vibhore Vardhan
2022-11-02 15:30 ` cpufreq: ti-cpufreq: Enable AM625 CPUFreq Krzysztof Kozlowski
5 siblings, 0 replies; 7+ messages in thread
From: Vibhore Vardhan @ 2022-11-01 17:10 UTC (permalink / raw)
To: nm, vigneshr, kristo, robh+dt, krzysztof.kozlowski+dt, rafael,
viresh.kumar
Cc: linux-arm-kernel, devicetree, linux-kernel, linux-pm
The 1.4 GHz OPP requires supported silicon variant (T speed grade) and
also VDD_CORE to be at 0.85V. All production revisions of the AM625-SK
have both so we can enable the 1.4 GHz OPP for it. Any other boards
based on this design should verify that they have the right silicon
variant and the right power tree before adding 1.4 GHz support in their
board dts file.
Signed-off-by: Vibhore Vardhan <vibhore@ti.com>
---
arch/arm64/boot/dts/ti/k3-am625-sk.dts | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am625-sk.dts b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
index 9b4dbae9d4aa..d3060147ad25 100644
--- a/arch/arm64/boot/dts/ti/k3-am625-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am625-sk.dts
@@ -31,6 +31,15 @@ chosen {
bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
};
+ opp-table {
+ /* Add 1.4GHz OPP for am625-sk board. Requires VDD_CORE to be at 0.85V */
+ opp-1400000000 {
+ opp-hz = /bits/ 64 <1400000000>;
+ opp-supported-hw = <0x01 0x0004>;
+ clock-latency-ns = <6000000>;
+ };
+ };
+
memory@80000000 {
device_type = "memory";
/* 2G RAM */
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: cpufreq: ti-cpufreq: Enable AM625 CPUFreq
2022-11-01 17:10 cpufreq: ti-cpufreq: Enable AM625 CPUFreq Vibhore Vardhan
` (4 preceding siblings ...)
2022-11-01 17:10 ` [5/5] arm64: dts: ti: k3-am625-sk: Add 1.4GHz OPP Vibhore Vardhan
@ 2022-11-02 15:30 ` Krzysztof Kozlowski
5 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2022-11-02 15:30 UTC (permalink / raw)
To: Vibhore Vardhan, nm, vigneshr, kristo, robh+dt,
krzysztof.kozlowski+dt, rafael, viresh.kumar
Cc: linux-arm-kernel, devicetree, linux-kernel, linux-pm
On 01/11/2022 13:10, Vibhore Vardhan wrote:
> Hi,
> This series enables CPUFreq for AM625. This version is a fixup and
> rebase of the patch series by Dave Gerlach on v6.1-rc3 [1].
>
Use subject prefixes matching the subsystem - missing PATCH. Tools are
doing it automatically. You kind of break people's filters...
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread