From: Jonathan Cameron <jonathan.cameron@huawei.com>
To: Abdurrahman Hussain via B4 Relay
<devnull+abdurrahman.nexthop.ai@kernel.org>
Cc: <abdurrahman@nexthop.ai>, Michal Simek <michal.simek@amd.com>,
Andi Shyti <andi.shyti@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Andy Shevchenko <andriy.shevchenko@intel.com>,
<linux-arm-kernel@lists.infradead.org>,
<linux-i2c@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<devicetree@vger.kernel.org>
Subject: Re: [PATCH v10 1/7] i2c: xiic: switch to devres managed APIs
Date: Wed, 4 Feb 2026 10:00:34 +0000 [thread overview]
Message-ID: <20260204100034.000050b2@huawei.com> (raw)
In-Reply-To: <20260204-i2c-xiic-v10-1-c2b996425235@nexthop.ai>
On Wed, 04 Feb 2026 07:01:58 +0000
Abdurrahman Hussain via B4 Relay <devnull+abdurrahman.nexthop.ai@kernel.org> wrote:
> From: Abdurrahman Hussain <abdurrahman@nexthop.ai>
>
> Simplify the error code paths by switching to devres managed helper
> functions.
>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
A quick drive by review whilst I have a coffee...
1st one is a taste thing. Second one is kind of a bug - be it one that
I think is probably harmless.
> ---
> drivers/i2c/busses/i2c-xiic.c | 29 ++++++++++++-----------------
> 1 file changed, 12 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
> index 28015d77599d..16ff83fe280b 100644
> --- a/drivers/i2c/busses/i2c-xiic.c
> +++ b/drivers/i2c/busses/i2c-xiic.c
> @@ -1423,6 +1423,7 @@ MODULE_DEVICE_TABLE(of, xiic_of_match);
>
> static int xiic_i2c_probe(struct platform_device *pdev)
> {
> + struct device *dev = &pdev->dev;
> struct xiic_i2c *i2c;
> struct xiic_i2c_platform_data *pdata;
> const struct of_device_id *match;
> @@ -1461,7 +1462,10 @@ static int xiic_i2c_probe(struct platform_device *pdev)
> snprintf(i2c->adap.name, sizeof(i2c->adap.name),
> DRIVER_NAME " %s", pdev->name);
>
> - mutex_init(&i2c->lock);
> + ret = devm_mutex_init(dev, &i2c->lock);
> + if (ret)
> + return ret;
> +
> spin_lock_init(&i2c->atomic_lock);
>
> i2c->clk = devm_clk_get_enabled(&pdev->dev, NULL);
> @@ -1472,8 +1476,9 @@ static int xiic_i2c_probe(struct platform_device *pdev)
> i2c->dev = &pdev->dev;
> pm_runtime_set_autosuspend_delay(i2c->dev, XIIC_PM_TIMEOUT);
> pm_runtime_use_autosuspend(i2c->dev);
> - pm_runtime_set_active(i2c->dev);
> - pm_runtime_enable(i2c->dev);
> + ret = devm_pm_runtime_set_active_enabled(dev);
> + if (ret)
> + return ret;
>
> /* SCL frequency configuration */
> i2c->input_clk = clk_get_rate(i2c->clk);
> @@ -1489,7 +1494,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
>
> if (ret < 0) {
> dev_err_probe(&pdev->dev, ret, "Cannot claim IRQ\n");
> - goto err_pm_disable;
> + return ret;
> }
>
> i2c->singlemaster =
> @@ -1508,16 +1513,14 @@ static int xiic_i2c_probe(struct platform_device *pdev)
> i2c->endianness = BIG;
>
> ret = xiic_reinit(i2c);
> - if (ret < 0) {
> - dev_err_probe(&pdev->dev, ret, "Cannot xiic_reinit\n");
> - goto err_pm_disable;
> - }
> + if (ret)
> + return dev_err_probe(dev, ret, "Cannot xiic_reinit\n");
>
> /* add i2c adapter to i2c tree */
> ret = i2c_add_adapter(&i2c->adap);
> if (ret) {
> xiic_deinit(i2c);
> - goto err_pm_disable;
> + return ret;
> }
>
> if (pdata) {
> @@ -1529,12 +1532,6 @@ static int xiic_i2c_probe(struct platform_device *pdev)
> dev_dbg(&pdev->dev, "mmio %08lx irq %d scl clock frequency %d\n",
> (unsigned long)res->start, irq, i2c->i2c_clk);
>
> - return 0;
> -
> -err_pm_disable:
> - pm_runtime_disable(&pdev->dev);
> - pm_runtime_set_suspended(&pdev->dev);
> -
> return ret;
Trivial but if you are respinning...
If you get here we know ret must be 0, so make that explicit to the reader as it
was before with
return 0;
Otherwise they need to look up a few lines to realize that is true.
> }
>
> @@ -1555,8 +1552,6 @@ static void xiic_i2c_remove(struct platform_device *pdev)
> xiic_deinit(i2c);
>
> pm_runtime_put_sync(i2c->dev);
> - pm_runtime_disable(&pdev->dev);
> - pm_runtime_set_suspended(&pdev->dev);
> pm_runtime_dont_use_autosuspend(&pdev->dev);
Take a look at docs for the devm_runtime_enable() that is called
by the cleanup for devm_pm_runtime_set_active_enabled()
Short story, it will call pm_runtime_dont_use_autosuspend() for you
> }
>
>
next prev parent reply other threads:[~2026-02-04 10:00 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-04 7:01 [PATCH v10 0/7] i2c: xiic: use generic device property accessors Abdurrahman Hussain
2026-02-04 7:01 ` Abdurrahman Hussain via B4 Relay
2026-02-04 7:01 ` [PATCH v10 1/7] i2c: xiic: switch to devres managed APIs Abdurrahman Hussain
2026-02-04 7:01 ` Abdurrahman Hussain via B4 Relay
2026-02-04 10:00 ` Jonathan Cameron [this message]
2026-02-04 10:11 ` Andy Shevchenko
2026-02-04 17:59 ` Abdurrahman Hussain
2026-02-04 17:58 ` Abdurrahman Hussain
2026-02-04 7:01 ` [PATCH v10 2/7] i2c: xiic: remove duplicate error message Abdurrahman Hussain
2026-02-04 7:01 ` Abdurrahman Hussain via B4 Relay
2026-02-04 10:01 ` Jonathan Cameron
2026-02-04 7:02 ` [PATCH v10 3/7] i2c: xiic: switch to generic device property accessors Abdurrahman Hussain
2026-02-04 7:02 ` Abdurrahman Hussain via B4 Relay
2026-02-04 7:02 ` [PATCH v10 4/7] i2c: xiic: cosmetic cleanup Abdurrahman Hussain
2026-02-04 7:02 ` Abdurrahman Hussain via B4 Relay
2026-02-04 7:02 ` [PATCH v10 5/7] i2c: xiic: cosmetic: use resource format specifier in debug log Abdurrahman Hussain
2026-02-04 7:02 ` Abdurrahman Hussain via B4 Relay
2026-02-04 7:02 ` [PATCH v10 6/7] i2c: xiic: use numbered adapter registration Abdurrahman Hussain
2026-02-04 7:02 ` Abdurrahman Hussain via B4 Relay
2026-02-04 7:02 ` [PATCH v10 7/7] i2c: xiic: skip input clock setup on non-OF systems Abdurrahman Hussain
2026-02-04 7:02 ` Abdurrahman Hussain via B4 Relay
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=20260204100034.000050b2@huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=abdurrahman@nexthop.ai \
--cc=andi.shyti@kernel.org \
--cc=andriy.shevchenko@intel.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=devnull+abdurrahman.nexthop.ai@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michal.simek@amd.com \
--cc=robh@kernel.org \
/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.