From: Dmitry Osipenko <digetx@gmail.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: "Jonathan Hunter" <jonathanh@nvidia.com>,
"Laxman Dewangan" <ldewangan@nvidia.com>,
"Wolfram Sang" <wsa@the-dreams.de>,
"Michał Mirosław" <mirq-linux@rere.qmqm.pl>,
"Andy Shevchenko" <andy.shevchenko@gmail.com>,
linux-i2c@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v7 30/34] i2c: tegra: Clean up variable names
Date: Mon, 21 Sep 2020 19:05:21 +0300 [thread overview]
Message-ID: <00f7eafe-cb15-3ab9-4b84-aa6349246a63@gmail.com> (raw)
In-Reply-To: <20200921155052.GA3991813@ulmo>
21.09.2020 18:50, Thierry Reding пишет:
> On Mon, Sep 21, 2020 at 06:18:59PM +0300, Dmitry Osipenko wrote:
>> 21.09.2020 14:40, Thierry Reding пишет:
>>> On Thu, Sep 17, 2020 at 06:43:28PM +0300, Dmitry Osipenko wrote:
>>>> 17.09.2020 15:21, Thierry Reding пишет:
>>>>> On Wed, Sep 09, 2020 at 01:40:02AM +0300, Dmitry Osipenko wrote:
>>>>>> Rename "ret" variables to "err" in order to make code a bit more
>>>>>> expressive, emphasizing that the returned value is an error code.
>>>>>> Same vice versa, where appropriate.
>>>>>>
>>>>>> Rename variable "reg" to "val" in order to better reflect the actual
>>>>>> usage of the variable in the code and to make naming consistent with
>>>>>> the rest of the code.
>>>>>>
>>>>>> Use briefer names for a few members of the tegra_i2c_dev structure in
>>>>>> order to improve readability of the code.
>>>>>>
>>>>>> All dev/&pdev->dev are replaced with i2c_dev->dev in order to have uniform
>>>>>> code style across the driver.
>>>>>>
>>>>>> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
>>>>>> ---
>>>>>> drivers/i2c/busses/i2c-tegra.c | 173 ++++++++++++++++-----------------
>>>>>> 1 file changed, 86 insertions(+), 87 deletions(-)
>>>>>
>>>>> That's indeed a nice improvement. One thing did spring out at me,
>>>>> though.
>>>>>
>>>>>> diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
>>>>> [...]
>>>>>> @@ -1831,20 +1830,20 @@ static int __maybe_unused tegra_i2c_runtime_suspend(struct device *dev)
>>>>>>
>>>>>> clk_bulk_disable(i2c_dev->nclocks, i2c_dev->clocks);
>>>>>>
>>>>>> - return pinctrl_pm_select_idle_state(i2c_dev->dev);
>>>>>> + return pinctrl_pm_select_idle_state(dev);
>>>>>> }
>>>>>>
>>>>>> static int __maybe_unused tegra_i2c_suspend(struct device *dev)
>>>>>> {
>>>>>> struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev);
>>>>>> - int err = 0;
>>>>>> + int ret = 0;
>>>>>>
>>>>>> i2c_mark_adapter_suspended(&i2c_dev->adapter);
>>>>>>
>>>>>> if (!pm_runtime_status_suspended(dev))
>>>>>> - err = tegra_i2c_runtime_suspend(dev);
>>>>>> + ret = tegra_i2c_runtime_suspend(dev);
>>>>>>
>>>>>> - return err;
>>>>>> + return ret;
>>>>>> }
>>>>>
>>>>> Isn't this exactly the opposite of what the commit message says (and the
>>>>> rest of the patch does)?
>>>>
>>>> This change makes it to be consistent with the rest of the code. You may
>>>> notice that "Factor out hardware initialization into separate function"
>>>> made a similar change.
>>>>
>>>> The reason I'm doing this is that the "err" suggests that code returns a
>>>> error failure code, while it could be a success too and you don't know
>>>> for sure by looking only at the part of code. Hence it's cleaner to use
>>>> "err" when error code is returned.
>>>
>>> I don't follow that reasoning. Every error code obviously also has a
>>> value for success. Otherwise, what's the point of even having a function
>>> if all it can do is fail. Success has to be an option for code to be any
>>> useful at all, right?
>>>
>>> The "err" variable here transports the error code and if that error code
>>> happens to be 0 (meaning success), why does that no longer qualify as an
>>> error code?
>>
>> If you're naming variable as "err", then this implies to me that it will
>> contain a error code if error variable is returned directly. Error
>> shouldn't relate to a success. In practice nobody pays much attention to
>> variable naming, so usually there is a need to check what code actually
>> does anyways. I don't care much about this and just wanting to make a
>> minor improvement while at it.
>
> Oh... I think I get what you're trying to do here now. You're saying
> that we may be storing a positive success result in this variable and
> therefore it would be wrong to call it "error", right?
>
> And I always thought I was pedantic... =)
>
> The way I see it, any success value can still be considered an error
> code. Typically you either propagate the value immediately for errors or
> you just ignore it on success. In that case, keeping it in a variable a
> bit beyond the assignment isn't a big issue. What matters is that you
> don't use it. There are some exceptions where this can look weird, such
> as:
>
> err = platform_get_irq(pdev, 0);
> if (err < 0)
> return err;
>
> chip->irq = err;
>
> Although I think that's still okay and can be useful for example if
> chip->irq is an unsigned int, and hence you can't do:
>
> chip->irq = platform_get_irq(pdev, 0);
> if (chip->irq < 0)
> return chip->irq;
>
> My main gripe with variables named "ret" or "retval" is that I often see
> them not used as return value at all. Or the other extreme is that every
> variable is at some point a return value if it stores the result of a
> function call. So I think "ret" is just fundamentally a bad choice. But
> I also realize that that's very subjective.
>
> Anyway, I would personally lean towards calling all these "err" instead
> of "ret", but I think consistency trumps personal preference, so I would
> not object to "ret" generally. But I think it's a bit extreme to use err
> everywhere else and use "ret" only when we don't immediately return the
> error code because I think that's just too subtle of a difference to
> make up for the inconsistency.
>
> On the other hand, we've spent way too much time discussing this, so
> just pick whatever you want:
>
> Acked-by: Thierry Reding <treding@nvidia.com>
>
Thanks, I'll change it to make tegra_i2c_suspend() to use the same style
as tegra_i2c_resume() uses, which should be the best option in this case.
next prev parent reply other threads:[~2020-09-21 16:05 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-08 22:39 [PATCH v7 00/34] Improvements for Tegra I2C driver Dmitry Osipenko
2020-09-08 22:39 ` [PATCH v7 01/34] i2c: tegra: Make tegra_i2c_flush_fifos() usable in atomic transfer Dmitry Osipenko
2020-09-17 11:10 ` Thierry Reding
2020-09-17 14:57 ` Dmitry Osipenko
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 02/34] i2c: tegra: Add missing pm_runtime_put() Dmitry Osipenko
2020-09-17 11:12 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 03/34] i2c: tegra: Handle potential error of tegra_i2c_flush_fifos() Dmitry Osipenko
2020-09-17 11:13 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 04/34] i2c: tegra: Mask interrupt in tegra_i2c_issue_bus_clear() Dmitry Osipenko
2020-09-17 11:18 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 05/34] i2c: tegra: Initialize div-clk rate unconditionally Dmitry Osipenko
2020-09-17 11:20 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 06/34] i2c: tegra: Remove i2c_dev.clk_divisor_non_hs_mode member Dmitry Osipenko
2020-09-17 11:25 ` Thierry Reding
2020-09-17 15:27 ` Dmitry Osipenko
2020-09-21 10:49 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 07/34] i2c: tegra: Runtime PM always available on Tegra Dmitry Osipenko
2020-09-17 11:26 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 08/34] i2c: tegra: Remove error message used for devm_request_irq() failure Dmitry Osipenko
2020-09-17 11:28 ` Thierry Reding
2020-09-17 14:59 ` Dmitry Osipenko
2020-09-21 10:57 ` Thierry Reding
2020-09-21 10:18 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 09/34] i2c: tegra: Use reset_control_reset() Dmitry Osipenko
2020-09-17 12:36 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 10/34] i2c: tegra: Use devm_platform_get_and_ioremap_resource() Dmitry Osipenko
2020-09-17 11:31 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 11/34] i2c: tegra: Use platform_get_irq() Dmitry Osipenko
2020-09-17 11:31 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 12/34] i2c: tegra: Use clk-bulk helpers Dmitry Osipenko
2020-09-17 11:38 ` Thierry Reding
2020-09-17 13:54 ` Andy Shevchenko
2020-09-21 11:01 ` Thierry Reding
2020-09-21 11:15 ` Andy Shevchenko
2020-09-21 11:53 ` Thierry Reding
2020-09-17 15:01 ` Dmitry Osipenko
2020-09-21 11:08 ` Thierry Reding
2020-09-21 11:12 ` Thierry Reding
2020-09-21 14:44 ` Dmitry Osipenko
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 13/34] i2c: tegra: Move out all device-tree parsing into tegra_i2c_parse_dt() Dmitry Osipenko
2020-09-17 11:35 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 14/34] i2c: tegra: Clean up probe function Dmitry Osipenko
2020-09-17 12:37 ` Thierry Reding
2020-09-17 13:46 ` Andy Shevchenko
2020-09-21 11:15 ` Thierry Reding
2020-09-17 15:02 ` Dmitry Osipenko
2020-09-21 11:17 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 15/34] i2c: tegra: Reorder location of functions in the code Dmitry Osipenko
2020-09-17 12:38 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 16/34] i2c: tegra: Clean up variable types Dmitry Osipenko
2020-09-17 12:39 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 17/34] i2c: tegra: Remove outdated barrier() Dmitry Osipenko
2020-09-17 12:39 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 18/34] i2c: tegra: Remove likely/unlikely from the code Dmitry Osipenko
2020-09-17 12:41 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 19/34] i2c: tegra: Remove redundant check in tegra_i2c_issue_bus_clear() Dmitry Osipenko
2020-09-17 12:42 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 20/34] i2c: tegra: Remove "dma" variable from tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-17 11:44 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 21/34] i2c: tegra: Don't fall back to PIO mode if DMA configuration fails Dmitry Osipenko
2020-09-17 11:47 ` Thierry Reding
2020-09-17 15:03 ` Dmitry Osipenko
2020-09-21 11:21 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 22/34] i2c: tegra: Rename wait/poll functions Dmitry Osipenko
2020-09-17 11:48 ` Thierry Reding
2020-09-21 10:19 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 23/34] i2c: tegra: Factor out error recovery from tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-17 11:49 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 24/34] i2c: tegra: Factor out packet header setup " Dmitry Osipenko
2020-09-17 11:51 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 25/34] i2c: tegra: Factor out register polling into separate function Dmitry Osipenko
2020-09-17 11:58 ` Thierry Reding
2020-09-17 15:05 ` Dmitry Osipenko
2020-09-21 11:22 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 26/34] i2c: tegra: Factor out hardware initialization " Dmitry Osipenko
2020-09-17 12:06 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:39 ` [PATCH v7 27/34] i2c: tegra: Check errors for both positive and negative values Dmitry Osipenko
2020-09-17 12:09 ` Thierry Reding
2020-09-17 13:50 ` Andy Shevchenko
2020-09-21 11:24 ` Thierry Reding
2020-09-21 14:13 ` Dmitry Osipenko
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 28/34] i2c: tegra: Consolidate error handling in tegra_i2c_xfer_msg() Dmitry Osipenko
2020-09-17 12:12 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 29/34] i2c: tegra: Improve formatting of variables Dmitry Osipenko
2020-09-17 12:16 ` Thierry Reding
2020-09-17 15:13 ` Dmitry Osipenko
2020-09-21 11:28 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 30/34] i2c: tegra: Clean up variable names Dmitry Osipenko
2020-09-17 12:21 ` Thierry Reding
2020-09-17 15:43 ` Dmitry Osipenko
2020-09-21 11:40 ` Thierry Reding
2020-09-21 15:18 ` Dmitry Osipenko
2020-09-21 15:50 ` Thierry Reding
2020-09-21 16:05 ` Dmitry Osipenko [this message]
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 31/34] i2c: tegra: Clean up printk messages Dmitry Osipenko
2020-09-17 12:22 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 32/34] i2c: tegra: Clean up and improve comments Dmitry Osipenko
2020-09-17 12:32 ` Thierry Reding
2020-09-17 15:02 ` Dmitry Osipenko
2020-09-17 15:17 ` Dmitry Osipenko
2020-09-21 11:43 ` Thierry Reding
2020-09-21 11:44 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 33/34] i2c: tegra: Clean up whitespaces, newlines and indentation Dmitry Osipenko
2020-09-17 12:35 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-08 22:40 ` [PATCH v7 34/34] i2c: tegra: Improve driver module description Dmitry Osipenko
2020-09-17 12:35 ` Thierry Reding
2020-09-21 10:20 ` Thierry Reding
2020-09-09 9:11 ` [PATCH v7 00/34] Improvements for Tegra I2C driver Andy Shevchenko
2020-09-09 15:36 ` Dmitry Osipenko
2020-09-09 15:49 ` Wolfram Sang
2020-09-09 17:39 ` Dmitry Osipenko
2020-09-17 12:44 ` Thierry Reding
2020-09-21 9:12 ` Wolfram Sang
2020-09-21 10:18 ` Thierry Reding
2020-09-21 10:42 ` Thierry Reding
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=00f7eafe-cb15-3ab9-4b84-aa6349246a63@gmail.com \
--to=digetx@gmail.com \
--cc=andy.shevchenko@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=ldewangan@nvidia.com \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mirq-linux@rere.qmqm.pl \
--cc=thierry.reding@gmail.com \
--cc=wsa@the-dreams.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).