From: Artur Świgoń <a.swi...@samsung.com>

This patch relaxes the condition in of_icc_get_from_provider() so that it
is no longer required to set #interconnect-cells = <1> in the DT. In case
of the devfreq driver for exynos-bus, #interconnect-cells is always zero.

Signed-off-by: Artur Świgoń <a.swi...@samsung.com>
[dig...@gmail.com: added cells_num checking for of_icc_xlate_onecell()]
Signed-off-by: Dmitry Osipenko <dig...@gmail.com>
---
 drivers/interconnect/core.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
index 2c6515e3ecf1..7d09656734c1 100644
--- a/drivers/interconnect/core.c
+++ b/drivers/interconnect/core.c
@@ -335,7 +335,7 @@ static struct icc_node *of_icc_get_from_provider(struct 
of_phandle_args *spec)
        struct icc_node *node = ERR_PTR(-EPROBE_DEFER);
        struct icc_provider *provider;
 
-       if (!spec || spec->args_count != 1)
+       if (!spec)
                return ERR_PTR(-EINVAL);
 
        mutex_lock(&icc_lock);
@@ -851,6 +851,15 @@ EXPORT_SYMBOL_GPL(icc_nodes_remove);
  */
 int icc_provider_add(struct icc_provider *provider)
 {
+       struct device_node *np = provider->dev->of_node;
+       u32 cells_num;
+       int err;
+
+       err = of_property_read_u32(np, "#interconnect-cells", &cells_num);
+       if (WARN_ON(err))
+               return err;
+       if (WARN_ON(provider->xlate == of_icc_xlate_onecell && cells_num != 1))
+               return -EINVAL;
        if (WARN_ON(!provider->set))
                return -EINVAL;
        if (WARN_ON(!provider->xlate))
-- 
2.25.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to