From: Gregory CLEMENT <gregory.clement@bootlin.com>
To: Boris Brezillon <boris.brezillon@bootlin.com>
Cc: Miquel Raynal <miquel.raynal@bootlin.com>,
linux-mtd@lists.infradead.org,
Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
linux-arm-kernel@lists.infradead.org,
Antoine Tenart <antoine.tenart@bootlin.com>,
Nadav Haklai <nadavh@marvell.com>,
Shadi Ammouri <shadi@marvell.com>, Omri Itach <omrii@marvell.com>,
Hanna Hawa <hannah@marvell.com>,
Igal Liberman <igall@marvell.com>,
Marcin Wojtas <mw@semihalf.com>, Rob Herring <robh@kernel.org>,
"devicetree\@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock
Date: Tue, 13 Mar 2018 11:29:34 +0100 [thread overview]
Message-ID: <87o9js1d69.fsf@bootlin.com> (raw)
In-Reply-To: <20180312203529.7963ef29@bbrezillon> (Boris Brezillon's message of "Mon, 12 Mar 2018 20:35:29 +0100")
Hi Boris,
On lun., mars 12 2018, Boris Brezillon <boris.brezillon@bootlin.com> wrote:
> On Mon, 12 Mar 2018 17:55:26 +0100
> Gregory CLEMENT <gregory.clement@bootlin.com> wrote:
>
>> >
>> >> struct completion complete;
>> >> unsigned long assigned_cs;
>> >> struct list_head chips;
>> >> @@ -2747,12 +2748,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>> >> if (ret)
>> >> return ret;
>> >>
>> >> + nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
>> >> + if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
>> >> + if (!IS_ERR(nfc->reg_clk)) {
>> >> + ret = clk_prepare_enable(nfc->reg_clk);
>> >> + if (ret)
>> >> + goto unprepare_clk;
>> >
>> > I already suggested to move the devm_clk_get(&pdev->dev, "reg") before
>> > the clk_prepare_enable(nfc->ecc_clk) one to simplify the error path.
>> >
>>
>> Actually I started to implement your suggestion but unlike what you
>> though it made the code less simpler. Indeed by having the mandatory
>> clock first than in case of failure we can directly exit the function.
>>
>> If the reg clock was initialized first, then if the core/ecc clock fail
>> in soem case we woudl need to daisbel the reg clock and in other case we
>> could directly exit.
>
> Well, it's pretty much the same problem if you do it in the order you
> propose here: if the core clk enable fails, you'll have to disable the
So if it is the same no need to change! :)
> reg clk. Plus, I'm not a big fan of if/else block imbrications when we
> can avoid them.
Your solution to avoid if/else block is to add extra code and extra test
which do not bring anything except removing an if/else bloc.
For the record it was
nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
if (PTR_ERR(nfc->reg_clk) == -ENOENT)
nfc->reg_clk = NULL;
--> here you set to NULL whereas it is useless
if (IS_ERR(nfc->reg_clk))
return PTR_ERR(nfc->reg_clk);
--> here you test again the return value even if it was previously set
to -ENOENT
...
ret = clk_prepare_enable(nfc->reg_clk);
--> here if reg_clk was NULL due to the beginning of the block you do a
useless call to clk_prepare_enable
if (ret)
goto unprepare_ecc_clk;
Gregory
>
>>
>>
>> >> + } else {
>> >> + ret = PTR_ERR(nfc->reg_clk);
>> >> + goto unprepare_clk;
>> >> + }
>> >> + }
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
WARNING: multiple messages have this Message-ID (diff)
From: gregory.clement@bootlin.com (Gregory CLEMENT)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock
Date: Tue, 13 Mar 2018 11:29:34 +0100 [thread overview]
Message-ID: <87o9js1d69.fsf@bootlin.com> (raw)
In-Reply-To: <20180312203529.7963ef29@bbrezillon> (Boris Brezillon's message of "Mon, 12 Mar 2018 20:35:29 +0100")
Hi Boris,
On lun., mars 12 2018, Boris Brezillon <boris.brezillon@bootlin.com> wrote:
> On Mon, 12 Mar 2018 17:55:26 +0100
> Gregory CLEMENT <gregory.clement@bootlin.com> wrote:
>
>> >
>> >> struct completion complete;
>> >> unsigned long assigned_cs;
>> >> struct list_head chips;
>> >> @@ -2747,12 +2748,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>> >> if (ret)
>> >> return ret;
>> >>
>> >> + nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
>> >> + if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
>> >> + if (!IS_ERR(nfc->reg_clk)) {
>> >> + ret = clk_prepare_enable(nfc->reg_clk);
>> >> + if (ret)
>> >> + goto unprepare_clk;
>> >
>> > I already suggested to move the devm_clk_get(&pdev->dev, "reg") before
>> > the clk_prepare_enable(nfc->ecc_clk) one to simplify the error path.
>> >
>>
>> Actually I started to implement your suggestion but unlike what you
>> though it made the code less simpler. Indeed by having the mandatory
>> clock first than in case of failure we can directly exit the function.
>>
>> If the reg clock was initialized first, then if the core/ecc clock fail
>> in soem case we woudl need to daisbel the reg clock and in other case we
>> could directly exit.
>
> Well, it's pretty much the same problem if you do it in the order you
> propose here: if the core clk enable fails, you'll have to disable the
So if it is the same no need to change! :)
> reg clk. Plus, I'm not a big fan of if/else block imbrications when we
> can avoid them.
Your solution to avoid if/else block is to add extra code and extra test
which do not bring anything except removing an if/else bloc.
For the record it was
nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
if (PTR_ERR(nfc->reg_clk) == -ENOENT)
nfc->reg_clk = NULL;
--> here you set to NULL whereas it is useless
if (IS_ERR(nfc->reg_clk))
return PTR_ERR(nfc->reg_clk);
--> here you test again the return value even if it was previously set
to -ENOENT
...
ret = clk_prepare_enable(nfc->reg_clk);
--> here if reg_clk was NULL due to the beginning of the block you do a
useless call to clk_prepare_enable
if (ret)
goto unprepare_ecc_clk;
Gregory
>
>>
>>
>> >> + } else {
>> >> + ret = PTR_ERR(nfc->reg_clk);
>> >> + goto unprepare_clk;
>> >> + }
>> >> + }
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
WARNING: multiple messages have this Message-ID (diff)
From: Gregory CLEMENT <gregory.clement@bootlin.com>
To: Boris Brezillon <boris.brezillon@bootlin.com>
Cc: Andrew Lunn <andrew@lunn.ch>, Jason Cooper <jason@lakedaemon.net>,
Rob Herring <robh@kernel.org>,
Antoine Tenart <antoine.tenart@bootlin.com>,
Hanna Hawa <hannah@marvell.com>, Omri Itach <omrii@marvell.com>,
Nadav Haklai <nadavh@marvell.com>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
linux-mtd@lists.infradead.org, Igal Liberman <igall@marvell.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Miquel Raynal <miquel.raynal@bootlin.com>,
Shadi Ammouri <shadi@marvell.com>,
Marcin Wojtas <mw@semihalf.com>,
linux-arm-kernel@lists.infradead.org,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Subject: Re: [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock
Date: Tue, 13 Mar 2018 11:29:34 +0100 [thread overview]
Message-ID: <87o9js1d69.fsf@bootlin.com> (raw)
In-Reply-To: <20180312203529.7963ef29@bbrezillon> (Boris Brezillon's message of "Mon, 12 Mar 2018 20:35:29 +0100")
Hi Boris,
On lun., mars 12 2018, Boris Brezillon <boris.brezillon@bootlin.com> wrote:
> On Mon, 12 Mar 2018 17:55:26 +0100
> Gregory CLEMENT <gregory.clement@bootlin.com> wrote:
>
>> >
>> >> struct completion complete;
>> >> unsigned long assigned_cs;
>> >> struct list_head chips;
>> >> @@ -2747,12 +2748,24 @@ static int marvell_nfc_probe(struct platform_device *pdev)
>> >> if (ret)
>> >> return ret;
>> >>
>> >> + nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
>> >> + if (PTR_ERR(nfc->reg_clk) != -ENOENT) {
>> >> + if (!IS_ERR(nfc->reg_clk)) {
>> >> + ret = clk_prepare_enable(nfc->reg_clk);
>> >> + if (ret)
>> >> + goto unprepare_clk;
>> >
>> > I already suggested to move the devm_clk_get(&pdev->dev, "reg") before
>> > the clk_prepare_enable(nfc->ecc_clk) one to simplify the error path.
>> >
>>
>> Actually I started to implement your suggestion but unlike what you
>> though it made the code less simpler. Indeed by having the mandatory
>> clock first than in case of failure we can directly exit the function.
>>
>> If the reg clock was initialized first, then if the core/ecc clock fail
>> in soem case we woudl need to daisbel the reg clock and in other case we
>> could directly exit.
>
> Well, it's pretty much the same problem if you do it in the order you
> propose here: if the core clk enable fails, you'll have to disable the
So if it is the same no need to change! :)
> reg clk. Plus, I'm not a big fan of if/else block imbrications when we
> can avoid them.
Your solution to avoid if/else block is to add extra code and extra test
which do not bring anything except removing an if/else bloc.
For the record it was
nfc->reg_clk = devm_clk_get(&pdev->dev, "reg");
if (PTR_ERR(nfc->reg_clk) == -ENOENT)
nfc->reg_clk = NULL;
--> here you set to NULL whereas it is useless
if (IS_ERR(nfc->reg_clk))
return PTR_ERR(nfc->reg_clk);
--> here you test again the return value even if it was previously set
to -ENOENT
...
ret = clk_prepare_enable(nfc->reg_clk);
--> here if reg_clk was NULL due to the beginning of the block you do a
useless call to clk_prepare_enable
if (ret)
goto unprepare_ecc_clk;
Gregory
>
>>
>>
>> >> + } else {
>> >> + ret = PTR_ERR(nfc->reg_clk);
>> >> + goto unprepare_clk;
>> >> + }
>> >> + }
--
Gregory Clement, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
http://bootlin.com
next prev parent reply other threads:[~2018-03-13 10:29 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-07 16:13 [PATCH v2] mtd: nand: marvell: Fix clock resource by adding a register clock Gregory CLEMENT
2018-03-07 16:13 ` Gregory CLEMENT
2018-03-07 19:44 ` Boris Brezillon
2018-03-07 19:44 ` Boris Brezillon
2018-03-07 19:44 ` Boris Brezillon
2018-03-12 16:55 ` Gregory CLEMENT
2018-03-12 16:55 ` Gregory CLEMENT
2018-03-12 16:55 ` Gregory CLEMENT
2018-03-12 19:35 ` Boris Brezillon
2018-03-12 19:35 ` Boris Brezillon
2018-03-12 19:35 ` Boris Brezillon
2018-03-13 10:29 ` Gregory CLEMENT [this message]
2018-03-13 10:29 ` Gregory CLEMENT
2018-03-13 10:29 ` Gregory CLEMENT
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=87o9js1d69.fsf@bootlin.com \
--to=gregory.clement@bootlin.com \
--cc=andrew@lunn.ch \
--cc=antoine.tenart@bootlin.com \
--cc=boris.brezillon@bootlin.com \
--cc=devicetree@vger.kernel.org \
--cc=hannah@marvell.com \
--cc=igall@marvell.com \
--cc=jason@lakedaemon.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mtd@lists.infradead.org \
--cc=miquel.raynal@bootlin.com \
--cc=mw@semihalf.com \
--cc=nadavh@marvell.com \
--cc=omrii@marvell.com \
--cc=robh@kernel.org \
--cc=sebastian.hesselbarth@gmail.com \
--cc=shadi@marvell.com \
--cc=thomas.petazzoni@bootlin.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.