Thread (11 messages) 11 messages, 7 authors, 2023-08-18

Re: [PATCH -next v2] I2C: Fix return value check for devm_pinctrl_get()

From: Ruan Jinjie <hidden>
Date: 2023-08-18 02:47:45
Also in: linux-i2c


On 2023/8/18 1:30, Leo Li wrote:
quoted
-----Original Message-----
From: Ruan Jinjie <redacted>
Sent: Wednesday, August 16, 2023 9:20 PM
To: linux-i2c@vger.kernel.org; linux-arm-kernel@lists.infradead.org; Codrin
Ciubotariu [off-list ref]; Andi Shyti
[off-list ref]; Nicolas Ferre [off-list ref];
Alexandre Belloni [off-list ref]; Claudiu Beznea
[off-list ref]; Oleksij Rempel [off-list ref];
Pengutronix Kernel Team [off-list ref]; Shawn Guo
[off-list ref]; Sascha Hauer [off-list ref]; Fabio
Estevam [off-list ref]; dl-linux-imx [off-list ref];
Wolfram Sang [off-list ref]; Linus Walleij [off-list ref];
Uwe Kleine-König [off-list ref]; Leo Li
[off-list ref]
Cc: ruanjinjie@huawei.com
Subject: [PATCH -next v2] I2C: Fix return value check for devm_pinctrl_get()

The devm_pinctrl_get() function returns error pointers and never returns
NULL. Update the checks accordingly.
Not exactly.  It can return NULL when CONFIG_PINCTRL is not defined.  We probably should fix that API too.

include/linux/pinctrl/consumer.h:
static inline struct pinctrl * __must_check devm_pinctrl_get(struct device *dev)
{
        return NULL;
}
As ARCH_AT91 select PINCTRL and I2C_AT91 depends on ARCH_AT91, it can
not be NULL except for I2C_AT91  is selected by COMPILE_TEST.

And ARCH_MXC select PINCTRL and I2C_IMX depends on ARCH_MXC it can not
be NULL except for I2C_IMX is selected by ARCH_LAYERSCAPE or COLDFIRE or
COMPILE_TEST.

In general, it is possible to be null.
Regards,
Leo
quoted
Fixes: 543aa2c4da8b ("i2c: at91: Move to generic GPIO bus recovery")
Fixes: fd8961c5ba9e ("i2c: imx: make bus recovery through pinctrl optional")
Signed-off-by: Ruan Jinjie <redacted>
---
v2:
- Remove NULL check instead of using IS_ERR_OR_NULL() to avoid leaving
them behind.
- Update the commit title and message.
---
 drivers/i2c/busses/i2c-at91-master.c | 2 +-
 drivers/i2c/busses/i2c-imx.c         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-at91-master.c b/drivers/i2c/busses/i2c-
at91-master.c
index 94cff1cd527e..2bf1df5ef473 100644
--- a/drivers/i2c/busses/i2c-at91-master.c
+++ b/drivers/i2c/busses/i2c-at91-master.c
@@ -831,7 +831,7 @@ static int at91_init_twi_recovery_gpio(struct
platform_device *pdev,
 	struct i2c_bus_recovery_info *rinfo = &dev->rinfo;

 	rinfo->pinctrl = devm_pinctrl_get(&pdev->dev);
-	if (!rinfo->pinctrl || IS_ERR(rinfo->pinctrl)) {
+	if (IS_ERR(rinfo->pinctrl)) {
 		dev_info(dev->dev, "can't get pinctrl, bus recovery not
supported\n");
 		return PTR_ERR(rinfo->pinctrl);
 	}
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index
10e89586ca72..05d55893f04e 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -1388,7 +1388,7 @@ static int i2c_imx_init_recovery_info(struct
imx_i2c_struct *i2c_imx,
 	struct i2c_bus_recovery_info *rinfo = &i2c_imx->rinfo;

 	i2c_imx->pinctrl = devm_pinctrl_get(&pdev->dev);
-	if (!i2c_imx->pinctrl || IS_ERR(i2c_imx->pinctrl)) {
+	if (IS_ERR(i2c_imx->pinctrl)) {
 		dev_info(&pdev->dev, "can't get pinctrl, bus recovery not
supported\n");
 		return PTR_ERR(i2c_imx->pinctrl);
 	}
--
2.34.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help