All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT
@ 2022-03-02 11:29 Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP Lukasz Luba
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 11:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: lukasz.luba, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, robh+dt, devicetree,
	linux-pm

Hi all,

This patch set solves a few issues:
1. It allows to register EM from DT, when the voltage information is not
   available. (Some background of the issues present on Chromebook devices
   can be checked at [1].)
2. It allows to register 'advanced' EM from the DT, which is more accurate
   and reflects total power (dynamic + static).

Implementation details:
Existing machinery in the OPP framework now handles "opp-microwatt", similarly
to "opp-microamp". It also has helper exported function to get power from OPP.
For the EM, it adds a new callback in OPP framework to use this new API and
read power while having an opp pointer. It's agreed to work with OPP-v2.

Comments, suggestions are very welcome.

changelog:
v5:
- added dual-macro to conditionally setup needed callback and compile
  on !EM kernel gently
- removed 'advanced' word from OPP patch header description
v4 [2]

Regards,
Lukasz Luba

[1] https://lore.kernel.org/linux-pm/20220207073036.14901-2-lukasz.luba@arm.com/
[2] https://lore.kernel.org/linux-pm/20220301093524.8870-1-lukasz.luba@arm.com/


Lukasz Luba (5):
  dt-bindings: opp: Add "opp-microwatt" entry in the OPP
  OPP: Add "opp-microwatt" supporting code
  PM: EM: add macro to set .active_power() callback conditionally
  OPP: Add support of "opp-microwatt" for EM registration
  Documentation: EM: Describe new registration method using DT

 .../devicetree/bindings/opp/opp-v2-base.yaml  |  23 ++++
 Documentation/power/energy-model.rst          |  10 ++
 drivers/opp/core.c                            |  25 ++++
 drivers/opp/debugfs.c                         |   3 +
 drivers/opp/of.c                              | 108 +++++++++++++++++-
 include/linux/energy_model.h                  |   2 +
 include/linux/pm_opp.h                        |  12 +-
 7 files changed, 179 insertions(+), 4 deletions(-)

-- 
2.17.1


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

* [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP
  2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
@ 2022-03-02 11:29 ` Lukasz Luba
  2022-03-02 17:45   ` Rob Herring
  2022-03-02 11:29 ` [PATCH v5 2/5] OPP: Add "opp-microwatt" supporting code Lukasz Luba
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 11:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: lukasz.luba, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, robh+dt, devicetree,
	linux-pm

Add new entry for the OPP which provides information about power
expressed in micro-Watts. It is useful for the Energy Model framework.

Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
---
 .../devicetree/bindings/opp/opp-v2-base.yaml  | 23 +++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/Documentation/devicetree/bindings/opp/opp-v2-base.yaml b/Documentation/devicetree/bindings/opp/opp-v2-base.yaml
index 15a76bcd6d42..04a592c0f862 100644
--- a/Documentation/devicetree/bindings/opp/opp-v2-base.yaml
+++ b/Documentation/devicetree/bindings/opp/opp-v2-base.yaml
@@ -93,6 +93,21 @@ patternProperties:
         minItems: 1
         maxItems: 8   # Should be enough regulators
 
+      opp-microwatt:
+        description: |
+          The power for the OPP in micro-Watts.
+
+          Entries for multiple regulators shall be provided in the same field
+          separated by angular brackets <>. If current values aren't required
+          for a regulator, then it shall be filled with 0. If power values
+          aren't required for any of the regulators, then this field is not
+          required. The OPP binding doesn't provide any provisions to relate the
+          values to their power supplies or the order in which the supplies need
+          to be configured and that is left for the implementation specific
+          binding.
+        minItems: 1
+        maxItems: 8   # Should be enough regulators
+
       opp-level:
         description:
           A value representing the performance level of the device.
@@ -203,6 +218,14 @@ patternProperties:
         minItems: 1
         maxItems: 8   # Should be enough regulators
 
+      '^opp-microwatt':
+        description:
+          Named opp-microwatt property. Similar to opp-microamp property,
+          but for microwatt instead.
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        minItems: 1
+        maxItems: 8   # Should be enough regulators
+
     dependencies:
       opp-avg-kBps: [ opp-peak-kBps ]
 
-- 
2.17.1


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

* [PATCH v5 2/5] OPP: Add "opp-microwatt" supporting code
  2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP Lukasz Luba
@ 2022-03-02 11:29 ` Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 3/5] PM: EM: add macro to set .active_power() callback conditionally Lukasz Luba
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 11:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: lukasz.luba, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, robh+dt, devicetree,
	linux-pm

Add new property to the OPP: power value. The OPP entry in the DT can have
"opp-microwatt". Add the needed code to handle this new property in the
existing infrastructure.

Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
---
 drivers/opp/core.c     | 25 ++++++++++++++++++++++
 drivers/opp/debugfs.c  |  3 +++
 drivers/opp/of.c       | 47 ++++++++++++++++++++++++++++++++++++++++--
 include/linux/pm_opp.h | 12 ++++++++++-
 4 files changed, 84 insertions(+), 3 deletions(-)

diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index 3057beabd370..740407252298 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -113,6 +113,31 @@ unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
 }
 EXPORT_SYMBOL_GPL(dev_pm_opp_get_voltage);
 
+/**
+ * dev_pm_opp_get_power() - Gets the power corresponding to an opp
+ * @opp:	opp for which power has to be returned for
+ *
+ * Return: power in micro watt corresponding to the opp, else
+ * return 0
+ *
+ * This is useful only for devices with single power supply.
+ */
+unsigned long dev_pm_opp_get_power(struct dev_pm_opp *opp)
+{
+	unsigned long opp_power = 0;
+	int i;
+
+	if (IS_ERR_OR_NULL(opp)) {
+		pr_err("%s: Invalid parameters\n", __func__);
+		return 0;
+	}
+	for (i = 0; i < opp->opp_table->regulator_count; i++)
+		opp_power += opp->supplies[i].u_watt;
+
+	return opp_power;
+}
+EXPORT_SYMBOL_GPL(dev_pm_opp_get_power);
+
 /**
  * dev_pm_opp_get_freq() - Gets the frequency corresponding to an available opp
  * @opp:	opp for which frequency has to be returned for
diff --git a/drivers/opp/debugfs.c b/drivers/opp/debugfs.c
index 596c185b5dda..45837f3c1765 100644
--- a/drivers/opp/debugfs.c
+++ b/drivers/opp/debugfs.c
@@ -99,6 +99,9 @@ static void opp_debug_create_supplies(struct dev_pm_opp *opp,
 
 		debugfs_create_ulong("u_amp", S_IRUGO, d,
 				     &opp->supplies[i].u_amp);
+
+		debugfs_create_ulong("u_watt", S_IRUGO, d,
+				     &opp->supplies[i].u_watt);
 	}
 }
 
diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 2f40afa4e65c..7bff30f27dc1 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -575,8 +575,9 @@ static bool _opp_is_supported(struct device *dev, struct opp_table *opp_table,
 static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
 			      struct opp_table *opp_table)
 {
-	u32 *microvolt, *microamp = NULL;
-	int supplies = opp_table->regulator_count, vcount, icount, ret, i, j;
+	u32 *microvolt, *microamp = NULL, *microwatt = NULL;
+	int supplies = opp_table->regulator_count;
+	int vcount, icount, pcount, ret, i, j;
 	struct property *prop = NULL;
 	char name[NAME_MAX];
 
@@ -688,6 +689,43 @@ static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
 		}
 	}
 
+	/* Search for "opp-microwatt" */
+	sprintf(name, "opp-microwatt");
+	prop = of_find_property(opp->np, name, NULL);
+
+	if (prop) {
+		pcount = of_property_count_u32_elems(opp->np, name);
+		if (pcount < 0) {
+			dev_err(dev, "%s: Invalid %s property (%d)\n", __func__,
+				name, pcount);
+			ret = pcount;
+			goto free_microamp;
+		}
+
+		if (pcount != supplies) {
+			dev_err(dev, "%s: Invalid number of elements in %s property (%d) with supplies (%d)\n",
+				__func__, name, pcount, supplies);
+			ret = -EINVAL;
+			goto free_microamp;
+		}
+
+		microwatt = kmalloc_array(pcount, sizeof(*microwatt),
+					  GFP_KERNEL);
+		if (!microwatt) {
+			ret = -EINVAL;
+			goto free_microamp;
+		}
+
+		ret = of_property_read_u32_array(opp->np, name, microwatt,
+						 pcount);
+		if (ret) {
+			dev_err(dev, "%s: error parsing %s: %d\n", __func__,
+				name, ret);
+			ret = -EINVAL;
+			goto free_microwatt;
+		}
+	}
+
 	for (i = 0, j = 0; i < supplies; i++) {
 		opp->supplies[i].u_volt = microvolt[j++];
 
@@ -701,8 +739,13 @@ static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
 
 		if (microamp)
 			opp->supplies[i].u_amp = microamp[i];
+
+		if (microwatt)
+			opp->supplies[i].u_watt = microwatt[i];
 	}
 
+free_microwatt:
+	kfree(microwatt);
 free_microamp:
 	kfree(microamp);
 free_microvolt:
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index 879c138c7b8e..0d85a63a1f78 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -32,14 +32,17 @@ enum dev_pm_opp_event {
  * @u_volt_min:	Minimum voltage in microvolts corresponding to this OPP
  * @u_volt_max:	Maximum voltage in microvolts corresponding to this OPP
  * @u_amp:	Maximum current drawn by the device in microamperes
+ * @u_watt:	Power used by the device in microwatts
  *
- * This structure stores the voltage/current values for a single power supply.
+ * This structure stores the voltage/current/power values for a single power
+ * supply.
  */
 struct dev_pm_opp_supply {
 	unsigned long u_volt;
 	unsigned long u_volt_min;
 	unsigned long u_volt_max;
 	unsigned long u_amp;
+	unsigned long u_watt;
 };
 
 /**
@@ -94,6 +97,8 @@ void dev_pm_opp_put_opp_table(struct opp_table *opp_table);
 
 unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);
 
+unsigned long dev_pm_opp_get_power(struct dev_pm_opp *opp);
+
 unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp);
 
 unsigned int dev_pm_opp_get_level(struct dev_pm_opp *opp);
@@ -186,6 +191,11 @@ static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
 	return 0;
 }
 
+static inline unsigned long dev_pm_opp_get_power(struct dev_pm_opp *opp)
+{
+	return 0;
+}
+
 static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
 {
 	return 0;
-- 
2.17.1


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

* [PATCH v5 3/5] PM: EM: add macro to set .active_power() callback conditionally
  2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 2/5] OPP: Add "opp-microwatt" supporting code Lukasz Luba
@ 2022-03-02 11:29 ` Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 4/5] OPP: Add support of "opp-microwatt" for EM registration Lukasz Luba
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 11:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: lukasz.luba, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, robh+dt, devicetree,
	linux-pm

The Energy Model is able to use new power values coming from DT. Add a new
macro which is helpful in setting the .active_power() callback
conditionally in setup time. The dual-macro implementation handles both
kernel configurations: w/ EM and w/o EM built-in.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
---
 include/linux/energy_model.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/linux/energy_model.h b/include/linux/energy_model.h
index 6377adc3b78d..9f3c400bc52d 100644
--- a/include/linux/energy_model.h
+++ b/include/linux/energy_model.h
@@ -116,6 +116,7 @@ struct em_data_callback {
 			    struct device *dev);
 };
 #define EM_DATA_CB(_active_power_cb) { .active_power = &_active_power_cb }
+#define EM_SET_ACTIVE_POWER_CB(em_cb, cb) ((em_cb).active_power = cb)
 
 struct em_perf_domain *em_cpu_get(int cpu);
 struct em_perf_domain *em_pd_get(struct device *dev);
@@ -264,6 +265,7 @@ static inline int em_pd_nr_perf_states(struct em_perf_domain *pd)
 #else
 struct em_data_callback {};
 #define EM_DATA_CB(_active_power_cb) { }
+#define EM_SET_ACTIVE_POWER_CB(em_cb, cb) do { } while (0)
 
 static inline
 int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states,
-- 
2.17.1


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

* [PATCH v5 4/5] OPP: Add support of "opp-microwatt" for EM registration
  2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
                   ` (2 preceding siblings ...)
  2022-03-02 11:29 ` [PATCH v5 3/5] PM: EM: add macro to set .active_power() callback conditionally Lukasz Luba
@ 2022-03-02 11:29 ` Lukasz Luba
  2022-03-02 11:29 ` [PATCH v5 5/5] Documentation: EM: Describe new registration method using DT Lukasz Luba
  2022-03-03  4:05 ` [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Viresh Kumar
  5 siblings, 0 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 11:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: lukasz.luba, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, robh+dt, devicetree,
	linux-pm

The Energy Model (EM) can be created based on DT entry:
'dynamic-power-coefficient'. It's a 'simple' EM which is limited to the
dynamic power. It has to fit into the math formula which requires also
information about voltage. Some of the platforms don't expose voltage
information, thus it's not possible to use EM registration using DT.

This patch aims to fix it. It introduces new implementation of the EM
registration callback. The new mechanism relies on the new OPP feature
allowing to get power (which is coming from "opp-microwatt" DT property)
expressed in micro-Watts.

The patch also opens new opportunity to better support platforms, which
have a decent static power. It allows to register the EM based on real
power measurements which models total power (static + dynamic), so better
reflects real HW.

Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
---
 drivers/opp/of.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 7bff30f27dc1..440ab5a03df9 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -1438,6 +1438,38 @@ struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp)
 }
 EXPORT_SYMBOL_GPL(dev_pm_opp_get_of_node);
 
+/*
+ * Callback function provided to the Energy Model framework upon registration.
+ * It provides the power used by @dev at @kHz if it is the frequency of an
+ * existing OPP, or at the frequency of the first OPP above @kHz otherwise
+ * (see dev_pm_opp_find_freq_ceil()). This function updates @kHz to the ceiled
+ * frequency and @mW to the associated power.
+ *
+ * Returns 0 on success or a proper -EINVAL value in case of error.
+ */
+static int __maybe_unused
+_get_dt_power(unsigned long *mW, unsigned long *kHz, struct device *dev)
+{
+	struct dev_pm_opp *opp;
+	unsigned long opp_freq, opp_power;
+
+	/* Find the right frequency and related OPP */
+	opp_freq = *kHz * 1000;
+	opp = dev_pm_opp_find_freq_ceil(dev, &opp_freq);
+	if (IS_ERR(opp))
+		return -EINVAL;
+
+	opp_power = dev_pm_opp_get_power(opp);
+	dev_pm_opp_put(opp);
+	if (!opp_power)
+		return -EINVAL;
+
+	*kHz = opp_freq / 1000;
+	*mW = opp_power / 1000;
+
+	return 0;
+}
+
 /*
  * Callback function provided to the Energy Model framework upon registration.
  * This computes the power estimated by @dev at @kHz if it is the frequency
@@ -1488,6 +1520,24 @@ static int __maybe_unused _get_power(unsigned long *mW, unsigned long *kHz,
 	return 0;
 }
 
+static bool _of_has_opp_microwatt_property(struct device *dev)
+{
+	unsigned long power, freq = 0;
+	struct dev_pm_opp *opp;
+
+	/* Check if at least one OPP has needed property */
+	opp = dev_pm_opp_find_freq_ceil(dev, &freq);
+	if (IS_ERR(opp))
+		return false;
+
+	power = dev_pm_opp_get_power(opp);
+	dev_pm_opp_put(opp);
+	if (!power)
+		return false;
+
+	return true;
+}
+
 /**
  * dev_pm_opp_of_register_em() - Attempt to register an Energy Model
  * @dev		: Device for which an Energy Model has to be registered
@@ -1501,7 +1551,7 @@ static int __maybe_unused _get_power(unsigned long *mW, unsigned long *kHz,
  */
 int dev_pm_opp_of_register_em(struct device *dev, struct cpumask *cpus)
 {
-	struct em_data_callback em_cb = EM_DATA_CB(_get_power);
+	struct em_data_callback em_cb;
 	struct device_node *np;
 	int ret, nr_opp;
 	u32 cap;
@@ -1517,6 +1567,12 @@ int dev_pm_opp_of_register_em(struct device *dev, struct cpumask *cpus)
 		goto failed;
 	}
 
+	/* First, try to find more precised Energy Model in DT */
+	if (_of_has_opp_microwatt_property(dev)) {
+		EM_SET_ACTIVE_POWER_CB(em_cb, _get_dt_power);
+		goto register_em;
+	}
+
 	np = of_node_get(dev->of_node);
 	if (!np) {
 		ret = -EINVAL;
@@ -1538,6 +1594,9 @@ int dev_pm_opp_of_register_em(struct device *dev, struct cpumask *cpus)
 		goto failed;
 	}
 
+	EM_SET_ACTIVE_POWER_CB(em_cb, _get_power);
+
+register_em:
 	ret = em_dev_register_perf_domain(dev, nr_opp, &em_cb, cpus, true);
 	if (ret)
 		goto failed;
-- 
2.17.1


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

* [PATCH v5 5/5] Documentation: EM: Describe new registration method using DT
  2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
                   ` (3 preceding siblings ...)
  2022-03-02 11:29 ` [PATCH v5 4/5] OPP: Add support of "opp-microwatt" for EM registration Lukasz Luba
@ 2022-03-02 11:29 ` Lukasz Luba
  2022-03-03  4:05 ` [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Viresh Kumar
  5 siblings, 0 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 11:29 UTC (permalink / raw)
  To: linux-kernel
  Cc: lukasz.luba, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, robh+dt, devicetree,
	linux-pm

The new registration method allows to get power values from the DT OPP
definition. The new OPP entry property "opp-microwatt" contains total
power expressed in micro-Watts. Align the EM documentation with this
new possible registration method of EM.

Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
---
 Documentation/power/energy-model.rst | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/Documentation/power/energy-model.rst b/Documentation/power/energy-model.rst
index 5ac62a7b4b7c..49549aab41b4 100644
--- a/Documentation/power/energy-model.rst
+++ b/Documentation/power/energy-model.rst
@@ -113,6 +113,16 @@ to: return warning/error, stop working or panic.
 See Section 3. for an example of driver implementing this
 callback, or Section 2.4 for further documentation on this API
 
+Registration of EM using DT
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The  EM can also be registered using OPP framework and information in DT
+"operating-points-v2". Each OPP entry in DT can be extended with a property
+"opp-microwatt" containing micro-Watts power value. This OPP DT property
+allows a platform to register EM power values which are reflecting total power
+(static + dynamic). These power values might be coming directly from
+experiments and measurements.
+
 Registration of 'simple' EM
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- 
2.17.1


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

* Re: [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP
  2022-03-02 11:29 ` [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP Lukasz Luba
@ 2022-03-02 17:45   ` Rob Herring
  2022-03-02 17:46     ` Lukasz Luba
  0 siblings, 1 reply; 10+ messages in thread
From: Rob Herring @ 2022-03-02 17:45 UTC (permalink / raw)
  To: Lukasz Luba
  Cc: linux-kernel, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, devicetree, linux-pm

On Wed, Mar 02, 2022 at 11:29:13AM +0000, Lukasz Luba wrote:
> Add new entry for the OPP which provides information about power
> expressed in micro-Watts. It is useful for the Energy Model framework.
> 
> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
> ---
>  .../devicetree/bindings/opp/opp-v2-base.yaml  | 23 +++++++++++++++++++
>  1 file changed, 23 insertions(+)

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP
  2022-03-02 17:45   ` Rob Herring
@ 2022-03-02 17:46     ` Lukasz Luba
  0 siblings, 0 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-02 17:46 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-kernel, dietmar.eggemann, viresh.kumar, rafael,
	daniel.lezcano, nm, sboyd, mka, dianders, devicetree, linux-pm



On 3/2/22 17:45, Rob Herring wrote:
> On Wed, Mar 02, 2022 at 11:29:13AM +0000, Lukasz Luba wrote:
>> Add new entry for the OPP which provides information about power
>> expressed in micro-Watts. It is useful for the Energy Model framework.
>>
>> Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
>> ---
>>   .../devicetree/bindings/opp/opp-v2-base.yaml  | 23 +++++++++++++++++++
>>   1 file changed, 23 insertions(+)
> 
> Reviewed-by: Rob Herring <robh@kernel.org>

Thank you Rob for the review!

Regards,
Lukasz

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

* Re: [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT
  2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
                   ` (4 preceding siblings ...)
  2022-03-02 11:29 ` [PATCH v5 5/5] Documentation: EM: Describe new registration method using DT Lukasz Luba
@ 2022-03-03  4:05 ` Viresh Kumar
  2022-03-03  6:57   ` Lukasz Luba
  5 siblings, 1 reply; 10+ messages in thread
From: Viresh Kumar @ 2022-03-03  4:05 UTC (permalink / raw)
  To: Lukasz Luba
  Cc: linux-kernel, dietmar.eggemann, rafael, daniel.lezcano, nm,
	sboyd, mka, dianders, robh+dt, devicetree, linux-pm

On 02-03-22, 11:29, Lukasz Luba wrote:
> Hi all,
> 
> This patch set solves a few issues:
> 1. It allows to register EM from DT, when the voltage information is not
>    available. (Some background of the issues present on Chromebook devices
>    can be checked at [1].)
> 2. It allows to register 'advanced' EM from the DT, which is more accurate
>    and reflects total power (dynamic + static).
> 
> Implementation details:
> Existing machinery in the OPP framework now handles "opp-microwatt", similarly
> to "opp-microamp". It also has helper exported function to get power from OPP.
> For the EM, it adds a new callback in OPP framework to use this new API and
> read power while having an opp pointer. It's agreed to work with OPP-v2.
> 
> Comments, suggestions are very welcome.
> 
> changelog:
> v5:
> - added dual-macro to conditionally setup needed callback and compile
>   on !EM kernel gently
> - removed 'advanced' word from OPP patch header description
> v4 [2]

Applied. Thanks.

-- 
viresh

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

* Re: [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT
  2022-03-03  4:05 ` [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Viresh Kumar
@ 2022-03-03  6:57   ` Lukasz Luba
  0 siblings, 0 replies; 10+ messages in thread
From: Lukasz Luba @ 2022-03-03  6:57 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: linux-kernel, dietmar.eggemann, rafael, daniel.lezcano, nm,
	sboyd, mka, dianders, robh+dt, devicetree, linux-pm



On 3/3/22 04:05, Viresh Kumar wrote:
> On 02-03-22, 11:29, Lukasz Luba wrote:
>> Hi all,
>>
>> This patch set solves a few issues:
>> 1. It allows to register EM from DT, when the voltage information is not
>>     available. (Some background of the issues present on Chromebook devices
>>     can be checked at [1].)
>> 2. It allows to register 'advanced' EM from the DT, which is more accurate
>>     and reflects total power (dynamic + static).
>>
>> Implementation details:
>> Existing machinery in the OPP framework now handles "opp-microwatt", similarly
>> to "opp-microamp". It also has helper exported function to get power from OPP.
>> For the EM, it adds a new callback in OPP framework to use this new API and
>> read power while having an opp pointer. It's agreed to work with OPP-v2.
>>
>> Comments, suggestions are very welcome.
>>
>> changelog:
>> v5:
>> - added dual-macro to conditionally setup needed callback and compile
>>    on !EM kernel gently
>> - removed 'advanced' word from OPP patch header description
>> v4 [2]
> 
> Applied. Thanks.
> 

Thank you Viresh for your reviews.

Regards,
Lukasz

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

end of thread, other threads:[~2022-03-03  6:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-02 11:29 [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Lukasz Luba
2022-03-02 11:29 ` [PATCH v5 1/5] dt-bindings: opp: Add "opp-microwatt" entry in the OPP Lukasz Luba
2022-03-02 17:45   ` Rob Herring
2022-03-02 17:46     ` Lukasz Luba
2022-03-02 11:29 ` [PATCH v5 2/5] OPP: Add "opp-microwatt" supporting code Lukasz Luba
2022-03-02 11:29 ` [PATCH v5 3/5] PM: EM: add macro to set .active_power() callback conditionally Lukasz Luba
2022-03-02 11:29 ` [PATCH v5 4/5] OPP: Add support of "opp-microwatt" for EM registration Lukasz Luba
2022-03-02 11:29 ` [PATCH v5 5/5] Documentation: EM: Describe new registration method using DT Lukasz Luba
2022-03-03  4:05 ` [PATCH v5 0/5] Introduce "opp-microwatt" and Energy Model from DT Viresh Kumar
2022-03-03  6:57   ` Lukasz Luba

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.