* [PATCH 0/3] cpufreq: add AVS support for Armada 3700
@ 2018-06-19 12:43 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:43 UTC (permalink / raw)
To: Rafael J. Wysocki, Viresh Kumar, linux-pm
Cc: Andrew Lunn, Jason Cooper, Hua Jing, Antoine Tenart,
Gregory CLEMENT, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Marcin Wojtas, Wilson Ding, linux-arm-kernel,
Sebastian Hesselbarth
Hello,
Armada 37xx supports also Adaptive Voltage Scaling and this series
allow to us it.
In order to configure it, the drives needs to access a new set of
register which is documented in patch 1 and added in the dts in patch
3.
the first 2 patches should be merged through the cpufreq subsystem,
and I will take care of the 3rd patch once the binding will have been
validated.
Thanks,
Gregory CLEMENT (3):
dt-bindings: marvell: Add documentation for the Armada 3700 AVS
binding
cpufreq: armada-37xx: Add AVS support
arm64: dts: marvell: armada-37xx: add the node allowing AVS support
.../bindings/arm/marvell/armada-37xx.txt | 16 ++
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 +
drivers/cpufreq/armada-37xx-cpufreq.c | 163 +++++++++++++++++-
3 files changed, 182 insertions(+), 3 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 0/3] cpufreq: add AVS support for Armada 3700
@ 2018-06-19 12:43 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:43 UTC (permalink / raw)
To: linux-arm-kernel
Hello,
Armada 37xx supports also Adaptive Voltage Scaling and this series
allow to us it.
In order to configure it, the drives needs to access a new set of
register which is documented in patch 1 and added in the dts in patch
3.
the first 2 patches should be merged through the cpufreq subsystem,
and I will take care of the 3rd patch once the binding will have been
validated.
Thanks,
Gregory CLEMENT (3):
dt-bindings: marvell: Add documentation for the Armada 3700 AVS
binding
cpufreq: armada-37xx: Add AVS support
arm64: dts: marvell: armada-37xx: add the node allowing AVS support
.../bindings/arm/marvell/armada-37xx.txt | 16 ++
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 +
drivers/cpufreq/armada-37xx-cpufreq.c | 163 +++++++++++++++++-
3 files changed, 182 insertions(+), 3 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
2018-06-19 12:43 ` Gregory CLEMENT
@ 2018-06-19 12:44 ` Gregory CLEMENT
-1 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:44 UTC (permalink / raw)
To: Rafael J. Wysocki, Viresh Kumar, linux-pm
Cc: Andrew Lunn, Jason Cooper, Hua Jing, Antoine Tenart,
Gregory CLEMENT, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Marcin Wojtas, Wilson Ding, linux-arm-kernel,
Sebastian Hesselbarth
Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
Scaling (AVS) registers.
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
.../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
index 35c3c3460d17..22438f659d1e 100644
--- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
+++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
@@ -33,3 +33,19 @@ nb_pm: syscon@14000 {
compatible = "marvell,armada-3700-nb-pm", "syscon";
reg = <0x14000 0x60>;
}
+
+AVS
+---
+
+For AVS an other component is needed:
+
+Required properties:
+- compatible : should contain "marvell,armada-3700-avs", "syscon";
+- reg : the register start and length for the AVS
+
+Example:
+avs: avs@11500 {
+ compatible = "marvell,armada-3700-avs", "syscon";
+ reg = <0x11500 0x40>;
+}
+
--
2.17.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
@ 2018-06-19 12:44 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:44 UTC (permalink / raw)
To: linux-arm-kernel
Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
Scaling (AVS) registers.
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
.../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
index 35c3c3460d17..22438f659d1e 100644
--- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
+++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
@@ -33,3 +33,19 @@ nb_pm: syscon at 14000 {
compatible = "marvell,armada-3700-nb-pm", "syscon";
reg = <0x14000 0x60>;
}
+
+AVS
+---
+
+For AVS an other component is needed:
+
+Required properties:
+- compatible : should contain "marvell,armada-3700-avs", "syscon";
+- reg : the register start and length for the AVS
+
+Example:
+avs: avs at 11500 {
+ compatible = "marvell,armada-3700-avs", "syscon";
+ reg = <0x11500 0x40>;
+}
+
--
2.17.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 2/3] cpufreq: armada-37xx: Add AVS support
2018-06-19 12:43 ` Gregory CLEMENT
@ 2018-06-19 12:44 ` Gregory CLEMENT
-1 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:44 UTC (permalink / raw)
To: Rafael J. Wysocki, Viresh Kumar, linux-pm
Cc: Andrew Lunn, Jason Cooper, Hua Jing, Antoine Tenart,
Gregory CLEMENT, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Marcin Wojtas, Wilson Ding, linux-arm-kernel,
Sebastian Hesselbarth
Armada 37xx supports Adaptive Voltage Scaling and thanks to this patch a
voltage is associated to each load level.
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
drivers/cpufreq/armada-37xx-cpufreq.c | 163 +++++++++++++++++++++++++-
1 file changed, 160 insertions(+), 3 deletions(-)
diff --git a/drivers/cpufreq/armada-37xx-cpufreq.c b/drivers/cpufreq/armada-37xx-cpufreq.c
index 739da90ff3f6..75491fc841a6 100644
--- a/drivers/cpufreq/armada-37xx-cpufreq.c
+++ b/drivers/cpufreq/armada-37xx-cpufreq.c
@@ -51,6 +51,16 @@
#define ARMADA_37XX_DVFS_LOAD_2 2
#define ARMADA_37XX_DVFS_LOAD_3 3
+/* AVS register set */
+#define ARMADA_37XX_AVS_CTL0 0x0
+#define ARMADA_37XX_AVS_ENABLE BIT(30)
+#define ARMADA_37XX_AVS_HIGH_VDD_LIMIT 16
+#define ARMADA_37XX_AVS_LOW_VDD_LIMIT 22
+#define ARMADA_37XX_AVS_VDD_MASK 0x3F
+#define ARMADA_37XX_AVS_CTL2 0x8
+#define ARMADA_37XX_AVS_LOW_VDD_EN BIT(6)
+#define ARMADA_37XX_AVS_VSET(x) (0x1C + 4 * (x))
+
/*
* On Armada 37xx the Power management manages 4 level of CPU load,
* each level can be associated with a CPU clock source, a CPU
@@ -58,6 +68,17 @@
*/
#define LOAD_LEVEL_NR 4
+#define MIN_VOLT_MV 1000
+
+/* AVS value for the corresponding voltage (in mV) */
+static int avs_map[] = {
+ 747, 758, 770, 782, 793, 805, 817, 828, 840, 852, 863, 875, 887, 898,
+ 910, 922, 933, 945, 957, 968, 980, 992, 1003, 1015, 1027, 1038, 1050,
+ 1062, 1073, 1085, 1097, 1108, 1120, 1132, 1143, 1155, 1167, 1178, 1190,
+ 1202, 1213, 1225, 1237, 1248, 1260, 1272, 1283, 1295, 1307, 1318, 1330,
+ 1342
+};
+
struct armada37xx_cpufreq_state {
struct regmap *regmap;
u32 nb_l0l1;
@@ -71,6 +92,7 @@ static struct armada37xx_cpufreq_state *armada37xx_cpufreq_state;
struct armada_37xx_dvfs {
u32 cpu_freq_max;
u8 divider[LOAD_LEVEL_NR];
+ u32 avs[LOAD_LEVEL_NR];
};
static struct armada_37xx_dvfs armada_37xx_dvfs[] = {
@@ -148,6 +170,128 @@ static void __init armada37xx_cpufreq_dvfs_setup(struct regmap *base,
clk_set_parent(clk, parent);
}
+/*
+ * Find out the armada 37x supported AVS value whose voltage value is
+ * the round-up closest to the target voltage value.
+ */
+static u32 armada_37xx_avs_val_match(int target_vm)
+{
+ u32 avs;
+
+ /* Find out the round-up closest supported voltage value */
+ for (avs = 0; avs < ARRAY_SIZE(avs_map); avs++)
+ if (avs_map[avs] >= target_vm)
+ break;
+
+ /*
+ * If all supported voltages are smaller than target one,
+ * choose the largest supported voltage
+ */
+ if (avs == ARRAY_SIZE(avs_map))
+ avs = ARRAY_SIZE(avs_map) - 1;
+
+ return avs;
+}
+
+/*
+ * For Armada 37xx soc, L0(VSET0) VDD AVS value is set to SVC revision
+ * value or a default value when SVC is not supported.
+ * - L0 can be read out from the register of AVS_CTRL_0 and L0 voltage
+ * can be got from the mapping table of avs_map.
+ * - L1 voltage should be about 100mv smaller than L0 voltage
+ * - L2 & L3 voltage should be about 150mv smaller than L0 voltage.
+ * This function calculates L1 & L2 & L3 AVS values dynamically based
+ * on L0 voltage and fill all AVS values to the AVS value table.
+ */
+static void __init armada37xx_cpufreq_avs_configure(struct regmap *base,
+ struct armada_37xx_dvfs *dvfs)
+{
+ unsigned int target_vm;
+ int load_level = 0;
+ u32 l0_vdd_min;
+
+ if (base == NULL)
+ return;
+
+ /* Get L0 VDD min value */
+ regmap_read(base, ARMADA_37XX_AVS_CTL0, &l0_vdd_min);
+ l0_vdd_min = (l0_vdd_min >> ARMADA_37XX_AVS_LOW_VDD_LIMIT) &
+ ARMADA_37XX_AVS_VDD_MASK;
+ if (l0_vdd_min >= ARRAY_SIZE(avs_map)) {
+ pr_err("L0 VDD MIN %d is not correct.\n", l0_vdd_min);
+ return;
+ }
+ dvfs->avs[0] = l0_vdd_min;
+
+ if (avs_map[l0_vdd_min] <= MIN_VOLT_MV) {
+ /*
+ * If L0 voltage is smaller than 1000mv, then all VDD sets
+ * use L0 voltage;
+ */
+ u32 avs_min = armada_37xx_avs_val_match(MIN_VOLT_MV);
+
+ for (load_level = 1; load_level < LOAD_LEVEL_NR; load_level++)
+ dvfs->avs[load_level] = avs_min;
+
+ return;
+ }
+
+ /*
+ * L1 voltage is equal to L0 voltage - 100mv and it must be
+ * larger than 1000mv
+ */
+
+ target_vm = avs_map[l0_vdd_min] - 100;
+ target_vm = target_vm > MIN_VOLT_MV ? target_vm : MIN_VOLT_MV;
+ dvfs->avs[1] = armada_37xx_avs_val_match(target_vm);
+
+ /*
+ * L2 & L3 voltage is equal to L0 voltage - 150mv and it must
+ * be larger than 1000mv
+ */
+ target_vm = avs_map[l0_vdd_min] - 150;
+ target_vm = target_vm > MIN_VOLT_MV ? target_vm : MIN_VOLT_MV;
+ dvfs->avs[2] = dvfs->avs[3] = armada_37xx_avs_val_match(target_vm);
+}
+
+static void __init armada37xx_cpufreq_avs_setup(struct regmap *base,
+ struct armada_37xx_dvfs *dvfs)
+{
+ unsigned int avs_val = 0, freq;
+ int load_level = 0;
+
+ if (base == NULL)
+ return;
+
+ /* Disable AVS before the configuration */
+ regmap_update_bits(base, ARMADA_37XX_AVS_CTL0,
+ ARMADA_37XX_AVS_ENABLE, 0);
+
+
+ /* Enable low voltage mode */
+ regmap_update_bits(base, ARMADA_37XX_AVS_CTL2,
+ ARMADA_37XX_AVS_LOW_VDD_EN,
+ ARMADA_37XX_AVS_LOW_VDD_EN);
+
+
+ for (load_level = 1; load_level < LOAD_LEVEL_NR; load_level++) {
+ freq = dvfs->cpu_freq_max / dvfs->divider[load_level];
+
+ avs_val = dvfs->avs[load_level];
+ regmap_update_bits(base, ARMADA_37XX_AVS_VSET(load_level-1),
+ ARMADA_37XX_AVS_VDD_MASK << ARMADA_37XX_AVS_HIGH_VDD_LIMIT |
+ ARMADA_37XX_AVS_VDD_MASK << ARMADA_37XX_AVS_LOW_VDD_LIMIT,
+ avs_val << ARMADA_37XX_AVS_HIGH_VDD_LIMIT |
+ avs_val << ARMADA_37XX_AVS_LOW_VDD_LIMIT);
+ }
+
+ /* Enable AVS after the configuration */
+ regmap_update_bits(base, ARMADA_37XX_AVS_CTL0,
+ ARMADA_37XX_AVS_ENABLE,
+ ARMADA_37XX_AVS_ENABLE);
+
+}
+
static void armada37xx_cpufreq_disable_dvfs(struct regmap *base)
{
unsigned int reg = ARMADA_37XX_NB_DYN_MOD,
@@ -216,7 +360,7 @@ static int __init armada37xx_cpufreq_driver_init(void)
struct platform_device *pdev;
unsigned long freq;
unsigned int cur_frequency;
- struct regmap *nb_pm_base;
+ struct regmap *nb_pm_base, *avs_base;
struct device *cpu_dev;
int load_lvl, ret;
struct clk *clk;
@@ -227,6 +371,14 @@ static int __init armada37xx_cpufreq_driver_init(void)
if (IS_ERR(nb_pm_base))
return -ENODEV;
+ avs_base =
+ syscon_regmap_lookup_by_compatible("marvell,armada-3700-avs");
+
+ /* if AVS is not present don't use it but still try to setup dvfs */
+ if (IS_ERR(avs_base)) {
+ pr_info("Syscon failed for Adapting Voltage Scaling: skip it\n");
+ avs_base = NULL;
+ }
/* Before doing any configuration on the DVFS first, disable it */
armada37xx_cpufreq_disable_dvfs(nb_pm_base);
@@ -270,16 +422,21 @@ static int __init armada37xx_cpufreq_driver_init(void)
armada37xx_cpufreq_state->regmap = nb_pm_base;
+ armada37xx_cpufreq_avs_configure(avs_base, dvfs);
+ armada37xx_cpufreq_avs_setup(avs_base, dvfs);
+
armada37xx_cpufreq_dvfs_setup(nb_pm_base, clk, dvfs->divider);
clk_put(clk);
for (load_lvl = ARMADA_37XX_DVFS_LOAD_0; load_lvl < LOAD_LEVEL_NR;
load_lvl++) {
+ unsigned long u_volt = avs_map[dvfs->avs[load_lvl]] * 1000;
freq = cur_frequency / dvfs->divider[load_lvl];
-
- ret = dev_pm_opp_add(cpu_dev, freq, 0);
+ ret = dev_pm_opp_add(cpu_dev, freq, u_volt);
if (ret)
goto remove_opp;
+
+
}
/* Now that everything is setup, enable the DVFS at hardware level */
--
2.17.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 2/3] cpufreq: armada-37xx: Add AVS support
@ 2018-06-19 12:44 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:44 UTC (permalink / raw)
To: linux-arm-kernel
Armada 37xx supports Adaptive Voltage Scaling and thanks to this patch a
voltage is associated to each load level.
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
drivers/cpufreq/armada-37xx-cpufreq.c | 163 +++++++++++++++++++++++++-
1 file changed, 160 insertions(+), 3 deletions(-)
diff --git a/drivers/cpufreq/armada-37xx-cpufreq.c b/drivers/cpufreq/armada-37xx-cpufreq.c
index 739da90ff3f6..75491fc841a6 100644
--- a/drivers/cpufreq/armada-37xx-cpufreq.c
+++ b/drivers/cpufreq/armada-37xx-cpufreq.c
@@ -51,6 +51,16 @@
#define ARMADA_37XX_DVFS_LOAD_2 2
#define ARMADA_37XX_DVFS_LOAD_3 3
+/* AVS register set */
+#define ARMADA_37XX_AVS_CTL0 0x0
+#define ARMADA_37XX_AVS_ENABLE BIT(30)
+#define ARMADA_37XX_AVS_HIGH_VDD_LIMIT 16
+#define ARMADA_37XX_AVS_LOW_VDD_LIMIT 22
+#define ARMADA_37XX_AVS_VDD_MASK 0x3F
+#define ARMADA_37XX_AVS_CTL2 0x8
+#define ARMADA_37XX_AVS_LOW_VDD_EN BIT(6)
+#define ARMADA_37XX_AVS_VSET(x) (0x1C + 4 * (x))
+
/*
* On Armada 37xx the Power management manages 4 level of CPU load,
* each level can be associated with a CPU clock source, a CPU
@@ -58,6 +68,17 @@
*/
#define LOAD_LEVEL_NR 4
+#define MIN_VOLT_MV 1000
+
+/* AVS value for the corresponding voltage (in mV) */
+static int avs_map[] = {
+ 747, 758, 770, 782, 793, 805, 817, 828, 840, 852, 863, 875, 887, 898,
+ 910, 922, 933, 945, 957, 968, 980, 992, 1003, 1015, 1027, 1038, 1050,
+ 1062, 1073, 1085, 1097, 1108, 1120, 1132, 1143, 1155, 1167, 1178, 1190,
+ 1202, 1213, 1225, 1237, 1248, 1260, 1272, 1283, 1295, 1307, 1318, 1330,
+ 1342
+};
+
struct armada37xx_cpufreq_state {
struct regmap *regmap;
u32 nb_l0l1;
@@ -71,6 +92,7 @@ static struct armada37xx_cpufreq_state *armada37xx_cpufreq_state;
struct armada_37xx_dvfs {
u32 cpu_freq_max;
u8 divider[LOAD_LEVEL_NR];
+ u32 avs[LOAD_LEVEL_NR];
};
static struct armada_37xx_dvfs armada_37xx_dvfs[] = {
@@ -148,6 +170,128 @@ static void __init armada37xx_cpufreq_dvfs_setup(struct regmap *base,
clk_set_parent(clk, parent);
}
+/*
+ * Find out the armada 37x supported AVS value whose voltage value is
+ * the round-up closest to the target voltage value.
+ */
+static u32 armada_37xx_avs_val_match(int target_vm)
+{
+ u32 avs;
+
+ /* Find out the round-up closest supported voltage value */
+ for (avs = 0; avs < ARRAY_SIZE(avs_map); avs++)
+ if (avs_map[avs] >= target_vm)
+ break;
+
+ /*
+ * If all supported voltages are smaller than target one,
+ * choose the largest supported voltage
+ */
+ if (avs == ARRAY_SIZE(avs_map))
+ avs = ARRAY_SIZE(avs_map) - 1;
+
+ return avs;
+}
+
+/*
+ * For Armada 37xx soc, L0(VSET0) VDD AVS value is set to SVC revision
+ * value or a default value when SVC is not supported.
+ * - L0 can be read out from the register of AVS_CTRL_0 and L0 voltage
+ * can be got from the mapping table of avs_map.
+ * - L1 voltage should be about 100mv smaller than L0 voltage
+ * - L2 & L3 voltage should be about 150mv smaller than L0 voltage.
+ * This function calculates L1 & L2 & L3 AVS values dynamically based
+ * on L0 voltage and fill all AVS values to the AVS value table.
+ */
+static void __init armada37xx_cpufreq_avs_configure(struct regmap *base,
+ struct armada_37xx_dvfs *dvfs)
+{
+ unsigned int target_vm;
+ int load_level = 0;
+ u32 l0_vdd_min;
+
+ if (base == NULL)
+ return;
+
+ /* Get L0 VDD min value */
+ regmap_read(base, ARMADA_37XX_AVS_CTL0, &l0_vdd_min);
+ l0_vdd_min = (l0_vdd_min >> ARMADA_37XX_AVS_LOW_VDD_LIMIT) &
+ ARMADA_37XX_AVS_VDD_MASK;
+ if (l0_vdd_min >= ARRAY_SIZE(avs_map)) {
+ pr_err("L0 VDD MIN %d is not correct.\n", l0_vdd_min);
+ return;
+ }
+ dvfs->avs[0] = l0_vdd_min;
+
+ if (avs_map[l0_vdd_min] <= MIN_VOLT_MV) {
+ /*
+ * If L0 voltage is smaller than 1000mv, then all VDD sets
+ * use L0 voltage;
+ */
+ u32 avs_min = armada_37xx_avs_val_match(MIN_VOLT_MV);
+
+ for (load_level = 1; load_level < LOAD_LEVEL_NR; load_level++)
+ dvfs->avs[load_level] = avs_min;
+
+ return;
+ }
+
+ /*
+ * L1 voltage is equal to L0 voltage - 100mv and it must be
+ * larger than 1000mv
+ */
+
+ target_vm = avs_map[l0_vdd_min] - 100;
+ target_vm = target_vm > MIN_VOLT_MV ? target_vm : MIN_VOLT_MV;
+ dvfs->avs[1] = armada_37xx_avs_val_match(target_vm);
+
+ /*
+ * L2 & L3 voltage is equal to L0 voltage - 150mv and it must
+ * be larger than 1000mv
+ */
+ target_vm = avs_map[l0_vdd_min] - 150;
+ target_vm = target_vm > MIN_VOLT_MV ? target_vm : MIN_VOLT_MV;
+ dvfs->avs[2] = dvfs->avs[3] = armada_37xx_avs_val_match(target_vm);
+}
+
+static void __init armada37xx_cpufreq_avs_setup(struct regmap *base,
+ struct armada_37xx_dvfs *dvfs)
+{
+ unsigned int avs_val = 0, freq;
+ int load_level = 0;
+
+ if (base == NULL)
+ return;
+
+ /* Disable AVS before the configuration */
+ regmap_update_bits(base, ARMADA_37XX_AVS_CTL0,
+ ARMADA_37XX_AVS_ENABLE, 0);
+
+
+ /* Enable low voltage mode */
+ regmap_update_bits(base, ARMADA_37XX_AVS_CTL2,
+ ARMADA_37XX_AVS_LOW_VDD_EN,
+ ARMADA_37XX_AVS_LOW_VDD_EN);
+
+
+ for (load_level = 1; load_level < LOAD_LEVEL_NR; load_level++) {
+ freq = dvfs->cpu_freq_max / dvfs->divider[load_level];
+
+ avs_val = dvfs->avs[load_level];
+ regmap_update_bits(base, ARMADA_37XX_AVS_VSET(load_level-1),
+ ARMADA_37XX_AVS_VDD_MASK << ARMADA_37XX_AVS_HIGH_VDD_LIMIT |
+ ARMADA_37XX_AVS_VDD_MASK << ARMADA_37XX_AVS_LOW_VDD_LIMIT,
+ avs_val << ARMADA_37XX_AVS_HIGH_VDD_LIMIT |
+ avs_val << ARMADA_37XX_AVS_LOW_VDD_LIMIT);
+ }
+
+ /* Enable AVS after the configuration */
+ regmap_update_bits(base, ARMADA_37XX_AVS_CTL0,
+ ARMADA_37XX_AVS_ENABLE,
+ ARMADA_37XX_AVS_ENABLE);
+
+}
+
static void armada37xx_cpufreq_disable_dvfs(struct regmap *base)
{
unsigned int reg = ARMADA_37XX_NB_DYN_MOD,
@@ -216,7 +360,7 @@ static int __init armada37xx_cpufreq_driver_init(void)
struct platform_device *pdev;
unsigned long freq;
unsigned int cur_frequency;
- struct regmap *nb_pm_base;
+ struct regmap *nb_pm_base, *avs_base;
struct device *cpu_dev;
int load_lvl, ret;
struct clk *clk;
@@ -227,6 +371,14 @@ static int __init armada37xx_cpufreq_driver_init(void)
if (IS_ERR(nb_pm_base))
return -ENODEV;
+ avs_base =
+ syscon_regmap_lookup_by_compatible("marvell,armada-3700-avs");
+
+ /* if AVS is not present don't use it but still try to setup dvfs */
+ if (IS_ERR(avs_base)) {
+ pr_info("Syscon failed for Adapting Voltage Scaling: skip it\n");
+ avs_base = NULL;
+ }
/* Before doing any configuration on the DVFS first, disable it */
armada37xx_cpufreq_disable_dvfs(nb_pm_base);
@@ -270,16 +422,21 @@ static int __init armada37xx_cpufreq_driver_init(void)
armada37xx_cpufreq_state->regmap = nb_pm_base;
+ armada37xx_cpufreq_avs_configure(avs_base, dvfs);
+ armada37xx_cpufreq_avs_setup(avs_base, dvfs);
+
armada37xx_cpufreq_dvfs_setup(nb_pm_base, clk, dvfs->divider);
clk_put(clk);
for (load_lvl = ARMADA_37XX_DVFS_LOAD_0; load_lvl < LOAD_LEVEL_NR;
load_lvl++) {
+ unsigned long u_volt = avs_map[dvfs->avs[load_lvl]] * 1000;
freq = cur_frequency / dvfs->divider[load_lvl];
-
- ret = dev_pm_opp_add(cpu_dev, freq, 0);
+ ret = dev_pm_opp_add(cpu_dev, freq, u_volt);
if (ret)
goto remove_opp;
+
+
}
/* Now that everything is setup, enable the DVFS at hardware level */
--
2.17.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing AVS support
2018-06-19 12:43 ` Gregory CLEMENT
@ 2018-06-19 12:44 ` Gregory CLEMENT
-1 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:44 UTC (permalink / raw)
To: Rafael J. Wysocki, Viresh Kumar, linux-pm
Cc: Andrew Lunn, Jason Cooper, Hua Jing, Antoine Tenart,
Gregory CLEMENT, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Marcin Wojtas, Wilson Ding, linux-arm-kernel,
Sebastian Hesselbarth
In order to be able to use Adaptive Voltage Scaling, we need to add a
reference to these registers.
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index 3353252d78a0..15eb9e5e4370 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -98,6 +98,12 @@
status = "disabled";
};
+ avs: avs@11500 {
+ compatible = "marvell,armada-3700-avs",
+ "syscon";
+ reg = <0x11500 0x40>;
+ };
+
uart0: serial@12000 {
compatible = "marvell,armada-3700-uart";
reg = <0x12000 0x200>;
--
2.17.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing AVS support
@ 2018-06-19 12:44 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-19 12:44 UTC (permalink / raw)
To: linux-arm-kernel
In order to be able to use Adaptive Voltage Scaling, we need to add a
reference to these registers.
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
---
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index 3353252d78a0..15eb9e5e4370 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -98,6 +98,12 @@
status = "disabled";
};
+ avs: avs at 11500 {
+ compatible = "marvell,armada-3700-avs",
+ "syscon";
+ reg = <0x11500 0x40>;
+ };
+
uart0: serial at 12000 {
compatible = "marvell,armada-3700-uart";
reg = <0x12000 0x200>;
--
2.17.1
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
2018-06-19 12:44 ` Gregory CLEMENT
@ 2018-06-29 9:54 ` Viresh Kumar
-1 siblings, 0 replies; 22+ messages in thread
From: Viresh Kumar @ 2018-06-29 9:54 UTC (permalink / raw)
To: Gregory CLEMENT
Cc: Andrew Lunn, Jason Cooper, linux-pm, Antoine Tenart,
Rafael J. Wysocki, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Hua Jing, Marcin Wojtas, Wilson Ding,
linux-arm-kernel, Sebastian Hesselbarth
On 19-06-18, 14:44, Gregory CLEMENT wrote:
> Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
> Scaling (AVS) registers.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
@ 2018-06-29 9:54 ` Viresh Kumar
0 siblings, 0 replies; 22+ messages in thread
From: Viresh Kumar @ 2018-06-29 9:54 UTC (permalink / raw)
To: linux-arm-kernel
On 19-06-18, 14:44, Gregory CLEMENT wrote:
> Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
> Scaling (AVS) registers.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 2/3] cpufreq: armada-37xx: Add AVS support
2018-06-19 12:44 ` Gregory CLEMENT
@ 2018-06-29 9:54 ` Viresh Kumar
-1 siblings, 0 replies; 22+ messages in thread
From: Viresh Kumar @ 2018-06-29 9:54 UTC (permalink / raw)
To: Gregory CLEMENT
Cc: Andrew Lunn, Jason Cooper, linux-pm, Antoine Tenart,
Rafael J. Wysocki, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Hua Jing, Marcin Wojtas, Wilson Ding,
linux-arm-kernel, Sebastian Hesselbarth
On 19-06-18, 14:44, Gregory CLEMENT wrote:
> Armada 37xx supports Adaptive Voltage Scaling and thanks to this patch a
> voltage is associated to each load level.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> drivers/cpufreq/armada-37xx-cpufreq.c | 163 +++++++++++++++++++++++++-
> 1 file changed, 160 insertions(+), 3 deletions(-)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 2/3] cpufreq: armada-37xx: Add AVS support
@ 2018-06-29 9:54 ` Viresh Kumar
0 siblings, 0 replies; 22+ messages in thread
From: Viresh Kumar @ 2018-06-29 9:54 UTC (permalink / raw)
To: linux-arm-kernel
On 19-06-18, 14:44, Gregory CLEMENT wrote:
> Armada 37xx supports Adaptive Voltage Scaling and thanks to this patch a
> voltage is associated to each load level.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> drivers/cpufreq/armada-37xx-cpufreq.c | 163 +++++++++++++++++++++++++-
> 1 file changed, 160 insertions(+), 3 deletions(-)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing AVS support
2018-06-19 12:44 ` Gregory CLEMENT
@ 2018-06-29 9:54 ` Viresh Kumar
-1 siblings, 0 replies; 22+ messages in thread
From: Viresh Kumar @ 2018-06-29 9:54 UTC (permalink / raw)
To: Gregory CLEMENT
Cc: Andrew Lunn, Jason Cooper, linux-pm, Antoine Tenart,
Rafael J. Wysocki, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Hua Jing, Marcin Wojtas, Wilson Ding,
linux-arm-kernel, Sebastian Hesselbarth
On 19-06-18, 14:44, Gregory CLEMENT wrote:
> In order to be able to use Adaptive Voltage Scaling, we need to add a
> reference to these registers.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 ++++++
> 1 file changed, 6 insertions(+)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing AVS support
@ 2018-06-29 9:54 ` Viresh Kumar
0 siblings, 0 replies; 22+ messages in thread
From: Viresh Kumar @ 2018-06-29 9:54 UTC (permalink / raw)
To: linux-arm-kernel
On 19-06-18, 14:44, Gregory CLEMENT wrote:
> In order to be able to use Adaptive Voltage Scaling, we need to add a
> reference to these registers.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 ++++++
> 1 file changed, 6 insertions(+)
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
--
viresh
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing AVS support
2018-06-29 9:54 ` Viresh Kumar
@ 2018-06-29 14:36 ` Gregory CLEMENT
-1 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-29 14:36 UTC (permalink / raw)
To: Viresh Kumar
Cc: Andrew Lunn, Jason Cooper, linux-pm, Antoine Tenart,
Rafael J. Wysocki, Maxime Chevallier, Nadav Haklai, Ken Ma,
Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Hua Jing, Marcin Wojtas, Wilson Ding,
linux-arm-kernel, Sebastian Hesselbarth
Hi Viresh,
On ven., juin 29 2018, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 19-06-18, 14:44, Gregory CLEMENT wrote:
>> In order to be able to use Adaptive Voltage Scaling, we need to add a
>> reference to these registers.
>>
>> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
>> ---
>> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 ++++++
>> 1 file changed, 6 insertions(+)
>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Thanks! Based on your acked-by, then I applied this patch on mvebu/dt
I let you apply the 2 other patches of the series
Gregory
>
> --
> viresh
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing AVS support
@ 2018-06-29 14:36 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-06-29 14:36 UTC (permalink / raw)
To: linux-arm-kernel
Hi Viresh,
On ven., juin 29 2018, Viresh Kumar <viresh.kumar@linaro.org> wrote:
> On 19-06-18, 14:44, Gregory CLEMENT wrote:
>> In order to be able to use Adaptive Voltage Scaling, we need to add a
>> reference to these registers.
>>
>> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
>> ---
>> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 6 ++++++
>> 1 file changed, 6 insertions(+)
>
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Thanks! Based on your acked-by, then I applied this patch on mvebu/dt
I let you apply the 2 other patches of the series
Gregory
>
> --
> viresh
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
2018-06-19 12:44 ` Gregory CLEMENT
@ 2018-07-03 14:44 ` Rafael J. Wysocki
-1 siblings, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2018-07-03 14:44 UTC (permalink / raw)
To: Gregory CLEMENT
Cc: Andrew Lunn, Jason Cooper, linux-pm, Antoine Tenart,
Viresh Kumar, Rob Herring, Maxime Chevallier, Nadav Haklai,
Ken Ma, Victor Gu, Neta Zur Hershkovits, Thomas Petazzoni,
Miquèl Raynal, Hua Jing, Marcin Wojtas, Wilson Ding,
linux-arm-kernel, Sebastian Hesselbarth
On Tuesday, June 19, 2018 2:44:00 PM CEST Gregory CLEMENT wrote:
> Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
> Scaling (AVS) registers.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> index 35c3c3460d17..22438f659d1e 100644
> --- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> +++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> @@ -33,3 +33,19 @@ nb_pm: syscon@14000 {
> compatible = "marvell,armada-3700-nb-pm", "syscon";
> reg = <0x14000 0x60>;
> }
> +
> +AVS
> +---
> +
> +For AVS an other component is needed:
> +
> +Required properties:
> +- compatible : should contain "marvell,armada-3700-avs", "syscon";
> +- reg : the register start and length for the AVS
> +
> +Example:
> +avs: avs@11500 {
> + compatible = "marvell,armada-3700-avs", "syscon";
> + reg = <0x11500 0x40>;
> +}
> +
>
I can't apply this one without a Rob's ACK.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
@ 2018-07-03 14:44 ` Rafael J. Wysocki
0 siblings, 0 replies; 22+ messages in thread
From: Rafael J. Wysocki @ 2018-07-03 14:44 UTC (permalink / raw)
To: linux-arm-kernel
On Tuesday, June 19, 2018 2:44:00 PM CEST Gregory CLEMENT wrote:
> Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
> Scaling (AVS) registers.
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> ---
> .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> index 35c3c3460d17..22438f659d1e 100644
> --- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> +++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> @@ -33,3 +33,19 @@ nb_pm: syscon at 14000 {
> compatible = "marvell,armada-3700-nb-pm", "syscon";
> reg = <0x14000 0x60>;
> }
> +
> +AVS
> +---
> +
> +For AVS an other component is needed:
> +
> +Required properties:
> +- compatible : should contain "marvell,armada-3700-avs", "syscon";
> +- reg : the register start and length for the AVS
> +
> +Example:
> +avs: avs at 11500 {
> + compatible = "marvell,armada-3700-avs", "syscon";
> + reg = <0x11500 0x40>;
> +}
> +
>
I can't apply this one without a Rob's ACK.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
2018-07-03 14:44 ` Rafael J. Wysocki
@ 2018-07-03 16:13 ` Rob Herring
-1 siblings, 0 replies; 22+ messages in thread
From: Rob Herring @ 2018-07-03 16:13 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: andrew, Jason Cooper, linux-pm, antoine.tenart, Viresh Kumar,
gregory.clement, maxime.chevallier, nadavh, make, xigu, neta,
thomas.petazzoni, miquel.raynal, jinghua, mw, dingwei,
linux-arm-kernel, sebastian.hesselbarth
On Tue, Jul 3, 2018 at 8:46 AM Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
>
> On Tuesday, June 19, 2018 2:44:00 PM CEST Gregory CLEMENT wrote:
> > Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
> > Scaling (AVS) registers.
> >
> > Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> > ---
> > .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
> > 1 file changed, 16 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> > index 35c3c3460d17..22438f659d1e 100644
> > --- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> > +++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> > @@ -33,3 +33,19 @@ nb_pm: syscon@14000 {
> > compatible = "marvell,armada-3700-nb-pm", "syscon";
> > reg = <0x14000 0x60>;
> > }
> > +
> > +AVS
> > +---
> > +
> > +For AVS an other component is needed:
> > +
> > +Required properties:
> > +- compatible : should contain "marvell,armada-3700-avs", "syscon";
> > +- reg : the register start and length for the AVS
> > +
> > +Example:
> > +avs: avs@11500 {
> > + compatible = "marvell,armada-3700-avs", "syscon";
> > + reg = <0x11500 0x40>;
> > +}
> > +
> >
>
> I can't apply this one without a Rob's ACK.
Which won't happen if not sent to the DT list.
Rob
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
@ 2018-07-03 16:13 ` Rob Herring
0 siblings, 0 replies; 22+ messages in thread
From: Rob Herring @ 2018-07-03 16:13 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Jul 3, 2018 at 8:46 AM Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
>
> On Tuesday, June 19, 2018 2:44:00 PM CEST Gregory CLEMENT wrote:
> > Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
> > Scaling (AVS) registers.
> >
> > Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
> > ---
> > .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
> > 1 file changed, 16 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> > index 35c3c3460d17..22438f659d1e 100644
> > --- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> > +++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
> > @@ -33,3 +33,19 @@ nb_pm: syscon at 14000 {
> > compatible = "marvell,armada-3700-nb-pm", "syscon";
> > reg = <0x14000 0x60>;
> > }
> > +
> > +AVS
> > +---
> > +
> > +For AVS an other component is needed:
> > +
> > +Required properties:
> > +- compatible : should contain "marvell,armada-3700-avs", "syscon";
> > +- reg : the register start and length for the AVS
> > +
> > +Example:
> > +avs: avs at 11500 {
> > + compatible = "marvell,armada-3700-avs", "syscon";
> > + reg = <0x11500 0x40>;
> > +}
> > +
> >
>
> I can't apply this one without a Rob's ACK.
Which won't happen if not sent to the DT list.
Rob
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
2018-07-03 16:13 ` Rob Herring
@ 2018-07-04 13:26 ` Gregory CLEMENT
-1 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-07-04 13:26 UTC (permalink / raw)
To: Rob Herring
Cc: andrew, Jason Cooper, linux-pm, antoine.tenart, Viresh Kumar,
Rafael J. Wysocki, maxime.chevallier, nadavh, make, xigu, neta,
thomas.petazzoni, miquel.raynal, jinghua, mw, dingwei,
linux-arm-kernel, sebastian.hesselbarth
Hi Rob,
On mar., juil. 03 2018, Rob Herring <rob.herring@linaro.org> wrote:
> On Tue, Jul 3, 2018 at 8:46 AM Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
>>
>> On Tuesday, June 19, 2018 2:44:00 PM CEST Gregory CLEMENT wrote:
>> > Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
>> > Scaling (AVS) registers.
>> >
>> > Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
>> > ---
>> > .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
>> > 1 file changed, 16 insertions(+)
>> >
>> > diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
>> > index 35c3c3460d17..22438f659d1e 100644
>> > --- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
>> > +++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
>> > @@ -33,3 +33,19 @@ nb_pm: syscon@14000 {
>> > compatible = "marvell,armada-3700-nb-pm", "syscon";
>> > reg = <0x14000 0x60>;
>> > }
>> > +
>> > +AVS
>> > +---
>> > +
>> > +For AVS an other component is needed:
>> > +
>> > +Required properties:
>> > +- compatible : should contain "marvell,armada-3700-avs", "syscon";
>> > +- reg : the register start and length for the AVS
>> > +
>> > +Example:
>> > +avs: avs@11500 {
>> > + compatible = "marvell,armada-3700-avs", "syscon";
>> > + reg = <0x11500 0x40>;
>> > +}
>> > +
>> >
>>
>> I can't apply this one without a Rob's ACK.
>
> Which won't happen if not sent to the DT list.
Now it's done.
Gregory
>
> Rob
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding
@ 2018-07-04 13:26 ` Gregory CLEMENT
0 siblings, 0 replies; 22+ messages in thread
From: Gregory CLEMENT @ 2018-07-04 13:26 UTC (permalink / raw)
To: linux-arm-kernel
Hi Rob,
On mar., juil. 03 2018, Rob Herring <rob.herring@linaro.org> wrote:
> On Tue, Jul 3, 2018 at 8:46 AM Rafael J. Wysocki <rjw@rjwysocki.net> wrote:
>>
>> On Tuesday, June 19, 2018 2:44:00 PM CEST Gregory CLEMENT wrote:
>> > Extend the documentation of the Armada 37xx SoC with the Adaptive Voltage
>> > Scaling (AVS) registers.
>> >
>> > Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
>> > ---
>> > .../bindings/arm/marvell/armada-37xx.txt | 16 ++++++++++++++++
>> > 1 file changed, 16 insertions(+)
>> >
>> > diff --git a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
>> > index 35c3c3460d17..22438f659d1e 100644
>> > --- a/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
>> > +++ b/Documentation/devicetree/bindings/arm/marvell/armada-37xx.txt
>> > @@ -33,3 +33,19 @@ nb_pm: syscon at 14000 {
>> > compatible = "marvell,armada-3700-nb-pm", "syscon";
>> > reg = <0x14000 0x60>;
>> > }
>> > +
>> > +AVS
>> > +---
>> > +
>> > +For AVS an other component is needed:
>> > +
>> > +Required properties:
>> > +- compatible : should contain "marvell,armada-3700-avs", "syscon";
>> > +- reg : the register start and length for the AVS
>> > +
>> > +Example:
>> > +avs: avs at 11500 {
>> > + compatible = "marvell,armada-3700-avs", "syscon";
>> > + reg = <0x11500 0x40>;
>> > +}
>> > +
>> >
>>
>> I can't apply this one without a Rob's ACK.
>
> Which won't happen if not sent to the DT list.
Now it's done.
Gregory
>
> Rob
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2018-07-04 13:26 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-19 12:43 [PATCH 0/3] cpufreq: add AVS support for Armada 3700 Gregory CLEMENT
2018-06-19 12:43 ` Gregory CLEMENT
2018-06-19 12:44 ` [PATCH 1/3] dt-bindings: marvell: Add documentation for the Armada 3700 AVS binding Gregory CLEMENT
2018-06-19 12:44 ` Gregory CLEMENT
2018-06-29 9:54 ` Viresh Kumar
2018-06-29 9:54 ` Viresh Kumar
2018-07-03 14:44 ` Rafael J. Wysocki
2018-07-03 14:44 ` Rafael J. Wysocki
2018-07-03 16:13 ` Rob Herring
2018-07-03 16:13 ` Rob Herring
2018-07-04 13:26 ` Gregory CLEMENT
2018-07-04 13:26 ` Gregory CLEMENT
2018-06-19 12:44 ` [PATCH 2/3] cpufreq: armada-37xx: Add AVS support Gregory CLEMENT
2018-06-19 12:44 ` Gregory CLEMENT
2018-06-29 9:54 ` Viresh Kumar
2018-06-29 9:54 ` Viresh Kumar
2018-06-19 12:44 ` [PATCH 3/3] arm64: dts: marvell: armada-37xx: add the node allowing " Gregory CLEMENT
2018-06-19 12:44 ` Gregory CLEMENT
2018-06-29 9:54 ` Viresh Kumar
2018-06-29 9:54 ` Viresh Kumar
2018-06-29 14:36 ` Gregory CLEMENT
2018-06-29 14:36 ` Gregory CLEMENT
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.