diff mbox series

[v4,27/37] interconnect: Relax requirement in of_icc_get_from_provider()

Message ID 20200609131404.17523-28-digetx@gmail.com
State New
Headers show
Series [v4,01/37] clk: Export clk_hw_reparent() | expand

Commit Message

Dmitry Osipenko June 9, 2020, 1:13 p.m. UTC
From: Artur Świgoń <a.swigon@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.swigon@samsung.com>
[digetx@gmail.com: added cells_num checking for of_icc_xlate_onecell()]
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
 drivers/interconnect/core.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Georgi Djakov July 1, 2020, 5:10 p.m. UTC | #1
Hi Dmitry,

On 6/9/20 16:13, Dmitry Osipenko wrote:
> From: Artur Świgoń <a.swigon@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.swigon@samsung.com>
> [digetx@gmail.com: added cells_num checking for of_icc_xlate_onecell()]
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>

I have already applied the original patch by Artur, so please make the cells_num
check a separate patch.

Thanks,
Georgi

> ---
>  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 e5f998744501..cb143421ca67 100644
> --- a/drivers/interconnect/core.c
> +++ b/drivers/interconnect/core.c
> @@ -339,7 +339,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);
> @@ -967,6 +967,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))
>
Dmitry Osipenko July 1, 2020, 11:41 p.m. UTC | #2
01.07.2020 20:10, Georgi Djakov пишет:
> Hi Dmitry,
> 
> On 6/9/20 16:13, Dmitry Osipenko wrote:
>> From: Artur Świgoń <a.swigon@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.swigon@samsung.com>
>> [digetx@gmail.com: added cells_num checking for of_icc_xlate_onecell()]
>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> 
> I have already applied the original patch by Artur, so please make the cells_num
> check a separate patch.

Okay, I'll update this patch! Thank you!
diff mbox series

Patch

diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
index e5f998744501..cb143421ca67 100644
--- a/drivers/interconnect/core.c
+++ b/drivers/interconnect/core.c
@@ -339,7 +339,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);
@@ -967,6 +967,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))