On 2/23/22 05:53, Viresh Kumar wrote:
On 22-02-22, 14:07, Lukasz Luba wrote:
+static int _of_find_opp_microwatt_property(struct device *dev)
+{
+ unsigned long freq = 0;
+ struct dev_pm_opp *opp;
+ struct device_node *np;
+ struct property *prop;
+
+ /* We only support "operating-points-v2" */
+ np = dev_pm_opp_of_get_opp_desc_node(dev);
+ if (!np)
+ return -EINVAL;
+
+ of_node_put(np);
+
+ /* Check if an OPP has needed property */
+ opp = dev_pm_opp_find_freq_ceil(dev, &freq);
+ if (IS_ERR(opp))
+ return -EINVAL;
+
+ prop = of_find_property(opp->np, "opp-microwatt", NULL);
+ dev_pm_opp_put(opp);
+ if (!prop)
+ return -EINVAL;
+
+ return 0;
+}
Please follow everything just like opp-microvolt is defined. Create a new field
in the struct dev_pm_opp, initialize it only once when the OPP is created, that
field should be used here instead of parsing the DT here again. There also needs
to be a debug file in debugfs for this new field.
Search for "supply" and "microvolt" in the OPP core, you will see all the places
that need it.
OK, so you want to have this available for the whole system. I can do
that. I would go for one value of power and try to fit into the
opp_parse_supplies() code. As far as I can see in the
dev_pm_opp_get_voltage() the simple solution: supplier[0] and u_volt
is used. I would go for similar solution for u_watt.
There is even a single u_amp and no _max, _min variants, so should be
good..