All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.