All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Liang He" <windhl@126.com>
To: "Orson Zhai" <orsonzhai@gmail.com>
Cc: "Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Baolin Wang" <baolin.wang7@gmail.com>,
	"Lyra Zhang" <zhang.lyra@gmail.com>,
	linux-clk@vger.kernel.org
Subject: Re:Re: [PATCH v2] clk: sprd: Hold reference returned by of_get_parent()
Date: Fri, 1 Jul 2022 10:00:02 +0800 (CST)	[thread overview]
Message-ID: <30d017ea.184b.181b77c8dfe.Coremail.windhl@126.com> (raw)
In-Reply-To: <CA+H2tpH1hN1AJ=6vVGQXw6bZ7xQDbzXdaEV_OqWMnw+UxQKCkg@mail.gmail.com>





At 2022-07-01 08:15:23, "Orson Zhai" <orsonzhai@gmail.com> wrote:
>Hi Liang,
>
>On Tue, Jun 28, 2022 at 9:54 PM Liang He <windhl@126.com> wrote:
>>
>> We should hold the reference returned by of_get_parent() and use it
>> to call of_node_out() for refcount balance.
>
>typo. s/out/put
>

Thanks, I will correct it in next version.

>>
>> Fixes: f95e8c7923d1 ("clk: sprd: support to get regmap from parent node")
>>
>> Signed-off-by: Liang He <windhl@126.com>
>> ---
>>  changelog:
>>
>>  v2: minimize the effective range of of_get_parent() advised by Orson
>>  v1: hold reference returned by of_get_parent()
>>
>>  v1-link: https://lore.kernel.org/all/20220624103809.4167753-1-windhl@126.com/
>>
>>  Patched file has been compiled test in 5.19rc2.
>>
>>  drivers/clk/sprd/common.c | 37 +++++++++++++++++++++----------------
>>  1 file changed, 21 insertions(+), 16 deletions(-)
>>
>> diff --git a/drivers/clk/sprd/common.c b/drivers/clk/sprd/common.c
>> index d620bbbcdfc8..d85ba80c5931 100644
>> --- a/drivers/clk/sprd/common.c
>> +++ b/drivers/clk/sprd/common.c
>> @@ -50,23 +50,28 @@ int sprd_clk_regmap_init(struct platform_device *pdev,
>>                         pr_err("%s: failed to get syscon regmap\n", __func__);
>>                         return PTR_ERR(regmap);
>>                 }
>> -       } else if (of_device_is_compatible(of_get_parent(dev->of_node),
>> -                          "syscon")) {
>> -               regmap = device_node_to_regmap(of_get_parent(dev->of_node));
>> -               if (IS_ERR(regmap)) {
>> -                       dev_err(dev, "failed to get regmap from its parent.\n");
>> -                       return PTR_ERR(regmap);
>> -               }
>>         } else {
>> -               base = devm_platform_ioremap_resource(pdev, 0);
>> -               if (IS_ERR(base))
>> -                       return PTR_ERR(base);
>> -
>> -               regmap = devm_regmap_init_mmio(&pdev->dev, base,
>> -                                              &sprdclk_regmap_config);
>> -               if (IS_ERR(regmap)) {
>> -                       pr_err("failed to init regmap\n");
>> -                       return PTR_ERR(regmap);
>> +               struct device_node *np = of_get_parent(dev->of_node);
>
>move the declaration of "np" to the beginning part without assigning any value.
>

OK.

>> +
>> +               if (of_device_is_compatible(np, "syscon")) {
>
>There may be no need to split the origin structure of "if...else if...else".
>How about the following method?
>
>                    else if (of_device_is_compatible(np =
>of_get_parent(dev->of_node), "syscon")
>                        || (of_node_put(np), 0)) {
>
Thanks, I will try it and compile test it before I send next version.

>> +                       regmap = device_node_to_regmap(np);
>> +                       of_node_put(np);
>> +                       if (IS_ERR(regmap)) {
>> +                               dev_err(dev, "failed to get regmap from its parent.\n");
>> +                               return PTR_ERR(regmap);
>> +                       }
>> +               } else {
>> +                       of_node_put(np);
>
>This line would not be necessary then.
>
>-Orson

Thanks, I will remove this line.

Liang

>
>> +                       base = devm_platform_ioremap_resource(pdev, 0);
>> +                       if (IS_ERR(base))
>> +                               return PTR_ERR(base);
>> +
>> +                       regmap = devm_regmap_init_mmio(&pdev->dev, base,
>> +                                                          &sprdclk_regmap_config);
>> +                       if (IS_ERR(regmap)) {
>> +                               pr_err("failed to init regmap\n");
>> +                               return PTR_ERR(regmap);
>> +                       }
>>                 }
>>         }
>>
>> --
>> 2.25.1
>>

      reply	other threads:[~2022-07-01  2:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-28 13:52 [PATCH v2] clk: sprd: Hold reference returned by of_get_parent() Liang He
2022-07-01  0:15 ` Orson Zhai
2022-07-01  2:00   ` Liang He [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=30d017ea.184b.181b77c8dfe.Coremail.windhl@126.com \
    --to=windhl@126.com \
    --cc=baolin.wang7@gmail.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=orsonzhai@gmail.com \
    --cc=sboyd@kernel.org \
    --cc=zhang.lyra@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.