* [PATCH v4 0/5] i2c: xiic: use generic device property accessors
@ 2026-01-23 16:34 Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 1/5] i2c: xiic: minor cosmetic cleanup Abdurrahman Hussain via B4 Relay
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Abdurrahman Hussain via B4 Relay @ 2026-01-23 16:34 UTC (permalink / raw)
To: Michal Simek, Andi Shyti
Cc: Andy Shevchenko, linux-arm-kernel, linux-i2c, linux-kernel,
Abdurrahman Hussain
Switch to generic device property accessors.
Switch to managed devm_ functions to simplify error handling.
Make the clock optional since the driver is designed to operate without
explicit configuration in firmware thus making it useful on platforms
where clock is not or cannot be provided.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
Changes in v4:
- Reorder the cosmetic patch to be the first in the series.
- Amend the mutex_init patch to also switch to the managed pm_runtime_
variant.
- Link to v3: https://lore.kernel.org/r/20260123-i2c-xiic-v3-0-eb7cd4254dfb@nexthop.ai
Changes in v3:
- Reorder the "optional clock" patch to be the first in the series.
- Add a patch to switch to devm_mutex_init().
- Remove dup message in error path.
- Cosmetic: use temporary dev variable.
- Link to v2: https://lore.kernel.org/r/20260122-i2c-xiic-v2-0-134f5d743e8b@nexthop.ai
Changes in v2:
- Split the patch into two independent changes.
- Added struct device *dev at the top of probe() and remove() to re-use.
- Switched to device_set_node(...)
---
Abdurrahman Hussain (5):
i2c: xiic: minor cosmetic cleanup
i2c: xiic: make the clock optional
i2c: xiic: switch to devm_ managed apis to simplify the error code paths
i2c: xiic: remove duplicate error message
i2c: xiic: switch to generic device property accessors
drivers/i2c/busses/i2c-xiic.c | 83 ++++++++++++++++++-------------------------
1 file changed, 35 insertions(+), 48 deletions(-)
---
base-commit: 24d479d26b25bce5faea3ddd9fa8f3a6c3129ea7
change-id: 20260122-i2c-xiic-3ba89ff5ea93
Best regards,
--
Abdurrahman Hussain <abdurrahman@nexthop.ai>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/5] i2c: xiic: minor cosmetic cleanup
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
@ 2026-01-23 16:34 ` Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 2/5] i2c: xiic: make the clock optional Abdurrahman Hussain via B4 Relay
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Abdurrahman Hussain via B4 Relay @ 2026-01-23 16:34 UTC (permalink / raw)
To: Michal Simek, Andi Shyti
Cc: Andy Shevchenko, linux-arm-kernel, linux-i2c, linux-kernel,
Abdurrahman Hussain
From: Abdurrahman Hussain <abdurrahman@nexthop.ai>
Add a temporary dev variable and reuse it instead of referencing pdev->dev
everywhere.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
drivers/i2c/busses/i2c-xiic.c | 57 ++++++++++++++++++++++---------------------
1 file changed, 29 insertions(+), 28 deletions(-)
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 28015d77599d..12321654055f 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;
@@ -1431,11 +1432,11 @@ static int xiic_i2c_probe(struct platform_device *pdev)
u8 i;
u32 sr;
- i2c = devm_kzalloc(&pdev->dev, sizeof(*i2c), GFP_KERNEL);
+ i2c = devm_kzalloc(dev, sizeof(*i2c), GFP_KERNEL);
if (!i2c)
return -ENOMEM;
- match = of_match_node(xiic_of_match, pdev->dev.of_node);
+ match = of_match_node(xiic_of_match, dev->of_node);
if (match && match->data) {
const struct xiic_version_data *data = match->data;
@@ -1450,50 +1451,49 @@ static int xiic_i2c_probe(struct platform_device *pdev)
if (irq < 0)
return irq;
- pdata = dev_get_platdata(&pdev->dev);
+ pdata = dev_get_platdata(dev);
/* hook up driver to tree */
platform_set_drvdata(pdev, i2c);
i2c->adap = xiic_adapter;
i2c_set_adapdata(&i2c->adap, i2c);
- i2c->adap.dev.parent = &pdev->dev;
- i2c->adap.dev.of_node = pdev->dev.of_node;
+ i2c->adap.dev.parent = dev;
+ i2c->adap.dev.of_node = dev->of_node;
snprintf(i2c->adap.name, sizeof(i2c->adap.name),
DRIVER_NAME " %s", pdev->name);
mutex_init(&i2c->lock);
spin_lock_init(&i2c->atomic_lock);
- i2c->clk = devm_clk_get_enabled(&pdev->dev, NULL);
+ i2c->clk = devm_clk_get_enabled(dev, NULL);
if (IS_ERR(i2c->clk))
- return dev_err_probe(&pdev->dev, PTR_ERR(i2c->clk),
+ return dev_err_probe(dev, PTR_ERR(i2c->clk),
"failed to enable input clock.\n");
- 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);
+ i2c->dev = dev;
+ pm_runtime_set_autosuspend_delay(dev, XIIC_PM_TIMEOUT);
+ pm_runtime_use_autosuspend(dev);
+ pm_runtime_set_active(dev);
+ pm_runtime_enable(dev);
/* SCL frequency configuration */
i2c->input_clk = clk_get_rate(i2c->clk);
- ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency",
+ ret = of_property_read_u32(dev->of_node, "clock-frequency",
&i2c->i2c_clk);
/* If clock-frequency not specified in DT, do not configure in SW */
if (ret || i2c->i2c_clk > I2C_MAX_FAST_MODE_PLUS_FREQ)
i2c->i2c_clk = 0;
- ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
- xiic_process, IRQF_ONESHOT,
- pdev->name, i2c);
+ ret = devm_request_threaded_irq(dev, irq, NULL, xiic_process,
+ IRQF_ONESHOT, pdev->name, i2c);
if (ret < 0) {
- dev_err_probe(&pdev->dev, ret, "Cannot claim IRQ\n");
+ dev_err_probe(dev, ret, "Cannot claim IRQ\n");
goto err_pm_disable;
}
i2c->singlemaster =
- of_property_read_bool(pdev->dev.of_node, "single-master");
+ of_property_read_bool(dev->of_node, "single-master");
/*
* Detect endianness
@@ -1509,7 +1509,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
ret = xiic_reinit(i2c);
if (ret < 0) {
- dev_err_probe(&pdev->dev, ret, "Cannot xiic_reinit\n");
+ dev_err_probe(dev, ret, "Cannot xiic_reinit\n");
goto err_pm_disable;
}
@@ -1526,38 +1526,39 @@ static int xiic_i2c_probe(struct platform_device *pdev)
i2c_new_client_device(&i2c->adap, pdata->devices + i);
}
- dev_dbg(&pdev->dev, "mmio %08lx irq %d scl clock frequency %d\n",
+ dev_dbg(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);
+ pm_runtime_disable(dev);
+ pm_runtime_set_suspended(dev);
return ret;
}
static void xiic_i2c_remove(struct platform_device *pdev)
{
+ struct device *dev = &pdev->dev;
struct xiic_i2c *i2c = platform_get_drvdata(pdev);
int ret;
/* remove adapter & data */
i2c_del_adapter(&i2c->adap);
- ret = pm_runtime_get_sync(i2c->dev);
+ ret = pm_runtime_get_sync(dev);
if (ret < 0)
- dev_warn(&pdev->dev, "Failed to activate device for removal (%pe)\n",
+ dev_warn(dev, "Failed to activate device for removal (%pe)\n",
ERR_PTR(ret));
else
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);
+ pm_runtime_put_sync(dev);
+ pm_runtime_disable(dev);
+ pm_runtime_set_suspended(dev);
+ pm_runtime_dont_use_autosuspend(dev);
}
static const struct dev_pm_ops xiic_dev_pm_ops = {
--
2.52.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 2/5] i2c: xiic: make the clock optional
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 1/5] i2c: xiic: minor cosmetic cleanup Abdurrahman Hussain via B4 Relay
@ 2026-01-23 16:34 ` Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 3/5] i2c: xiic: switch to devm_ managed apis to simplify the error code paths Abdurrahman Hussain via B4 Relay
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Abdurrahman Hussain via B4 Relay @ 2026-01-23 16:34 UTC (permalink / raw)
To: Michal Simek, Andi Shyti
Cc: Andy Shevchenko, linux-arm-kernel, linux-i2c, linux-kernel,
Abdurrahman Hussain
From: Abdurrahman Hussain <abdurrahman@nexthop.ai>
The xiic driver is designed to operate without explicit clock configuration
when clocks are not specified in the firmware. This functionality is
already implemented in xiic_setclk(), which performs an early return when
either i2c_clk or input_clk are zero:
This condition is satisfied when clocks are missing, as clk_get_rate(NULL)
returns zero, allowing the driver to rely on hardware-configured timing.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
drivers/i2c/busses/i2c-xiic.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 12321654055f..2da7e9d1d5ca 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -1465,7 +1465,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
mutex_init(&i2c->lock);
spin_lock_init(&i2c->atomic_lock);
- i2c->clk = devm_clk_get_enabled(dev, NULL);
+ i2c->clk = devm_clk_get_optional_enabled(dev, NULL);
if (IS_ERR(i2c->clk))
return dev_err_probe(dev, PTR_ERR(i2c->clk),
"failed to enable input clock.\n");
--
2.52.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 3/5] i2c: xiic: switch to devm_ managed apis to simplify the error code paths
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 1/5] i2c: xiic: minor cosmetic cleanup Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 2/5] i2c: xiic: make the clock optional Abdurrahman Hussain via B4 Relay
@ 2026-01-23 16:34 ` Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 4/5] i2c: xiic: remove duplicate error message Abdurrahman Hussain via B4 Relay
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Abdurrahman Hussain via B4 Relay @ 2026-01-23 16:34 UTC (permalink / raw)
To: Michal Simek, Andi Shyti
Cc: Andy Shevchenko, linux-arm-kernel, linux-i2c, linux-kernel,
Abdurrahman Hussain
From: Abdurrahman Hussain <abdurrahman@nexthop.ai>
Simplify the error code paths by switching devm_mutex_init() and
devm_pm_runtime_set_active_enabled().
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
drivers/i2c/busses/i2c-xiic.c | 24 ++++++++++--------------
1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 2da7e9d1d5ca..6d47c9972719 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -1462,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(&pdev->dev, &i2c->lock);
+ if (ret < 0)
+ return ret;
+
spin_lock_init(&i2c->atomic_lock);
i2c->clk = devm_clk_get_optional_enabled(dev, NULL);
@@ -1473,8 +1476,9 @@ static int xiic_i2c_probe(struct platform_device *pdev)
i2c->dev = dev;
pm_runtime_set_autosuspend_delay(dev, XIIC_PM_TIMEOUT);
pm_runtime_use_autosuspend(dev);
- pm_runtime_set_active(dev);
- pm_runtime_enable(dev);
+ ret = devm_pm_runtime_set_active_enabled(dev);
+ if (ret < 0)
+ return ret;
/* SCL frequency configuration */
i2c->input_clk = clk_get_rate(i2c->clk);
@@ -1489,7 +1493,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
if (ret < 0) {
dev_err_probe(dev, ret, "Cannot claim IRQ\n");
- goto err_pm_disable;
+ return ret;
}
i2c->singlemaster =
@@ -1510,14 +1514,14 @@ static int xiic_i2c_probe(struct platform_device *pdev)
ret = xiic_reinit(i2c);
if (ret < 0) {
dev_err_probe(dev, ret, "Cannot xiic_reinit\n");
- goto err_pm_disable;
+ return ret;
}
/* 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 +1533,6 @@ static int xiic_i2c_probe(struct platform_device *pdev)
dev_dbg(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(dev);
- pm_runtime_set_suspended(dev);
-
return ret;
}
@@ -1556,8 +1554,6 @@ static void xiic_i2c_remove(struct platform_device *pdev)
xiic_deinit(i2c);
pm_runtime_put_sync(dev);
- pm_runtime_disable(dev);
- pm_runtime_set_suspended(dev);
pm_runtime_dont_use_autosuspend(dev);
}
--
2.52.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 4/5] i2c: xiic: remove duplicate error message
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
` (2 preceding siblings ...)
2026-01-23 16:34 ` [PATCH v4 3/5] i2c: xiic: switch to devm_ managed apis to simplify the error code paths Abdurrahman Hussain via B4 Relay
@ 2026-01-23 16:34 ` Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 5/5] i2c: xiic: switch to generic device property accessors Abdurrahman Hussain via B4 Relay
2026-01-23 16:56 ` [PATCH v4 0/5] i2c: xiic: use " Andy Shevchenko
5 siblings, 0 replies; 7+ messages in thread
From: Abdurrahman Hussain via B4 Relay @ 2026-01-23 16:34 UTC (permalink / raw)
To: Michal Simek, Andi Shyti
Cc: Andy Shevchenko, linux-arm-kernel, linux-i2c, linux-kernel,
Abdurrahman Hussain
From: Abdurrahman Hussain <abdurrahman@nexthop.ai>
The devm_request_threaded_irq() already prints an error message. Remove
the duplicate.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
drivers/i2c/busses/i2c-xiic.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 6d47c9972719..800a27413978 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -1491,10 +1491,8 @@ static int xiic_i2c_probe(struct platform_device *pdev)
ret = devm_request_threaded_irq(dev, irq, NULL, xiic_process,
IRQF_ONESHOT, pdev->name, i2c);
- if (ret < 0) {
- dev_err_probe(dev, ret, "Cannot claim IRQ\n");
+ if (ret < 0)
return ret;
- }
i2c->singlemaster =
of_property_read_bool(dev->of_node, "single-master");
--
2.52.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 5/5] i2c: xiic: switch to generic device property accessors
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
` (3 preceding siblings ...)
2026-01-23 16:34 ` [PATCH v4 4/5] i2c: xiic: remove duplicate error message Abdurrahman Hussain via B4 Relay
@ 2026-01-23 16:34 ` Abdurrahman Hussain via B4 Relay
2026-01-23 16:56 ` [PATCH v4 0/5] i2c: xiic: use " Andy Shevchenko
5 siblings, 0 replies; 7+ messages in thread
From: Abdurrahman Hussain via B4 Relay @ 2026-01-23 16:34 UTC (permalink / raw)
To: Michal Simek, Andi Shyti
Cc: Andy Shevchenko, linux-arm-kernel, linux-i2c, linux-kernel,
Abdurrahman Hussain
From: Abdurrahman Hussain <abdurrahman@nexthop.ai>
Use generic device property accessors.
Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
drivers/i2c/busses/i2c-xiic.c | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 800a27413978..dfb8fa2787b2 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -27,7 +27,6 @@
#include <linux/platform_data/i2c-xiic.h>
#include <linux/io.h>
#include <linux/slab.h>
-#include <linux/of.h>
#include <linux/clk.h>
#include <linux/pm_runtime.h>
#include <linux/iopoll.h>
@@ -1408,7 +1407,6 @@ static const struct i2c_adapter xiic_adapter = {
.algo = &xiic_algorithm,
};
-#if defined(CONFIG_OF)
static const struct xiic_version_data xiic_2_00 = {
.quirks = DYNAMIC_MODE_READ_BROKEN_BIT,
};
@@ -1419,14 +1417,13 @@ static const struct of_device_id xiic_of_match[] = {
{},
};
MODULE_DEVICE_TABLE(of, xiic_of_match);
-#endif
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;
+ const struct xiic_version_data *data;
struct resource *res;
int ret, irq;
u8 i;
@@ -1436,12 +1433,9 @@ static int xiic_i2c_probe(struct platform_device *pdev)
if (!i2c)
return -ENOMEM;
- match = of_match_node(xiic_of_match, dev->of_node);
- if (match && match->data) {
- const struct xiic_version_data *data = match->data;
-
+ data = device_get_match_data(dev);
+ if (data)
i2c->quirks = data->quirks;
- }
i2c->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
if (IS_ERR(i2c->base))
@@ -1458,7 +1452,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
i2c->adap = xiic_adapter;
i2c_set_adapdata(&i2c->adap, i2c);
i2c->adap.dev.parent = dev;
- i2c->adap.dev.of_node = dev->of_node;
+ device_set_node(&i2c->adap.dev, dev_fwnode(dev));
snprintf(i2c->adap.name, sizeof(i2c->adap.name),
DRIVER_NAME " %s", pdev->name);
@@ -1482,8 +1476,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
/* SCL frequency configuration */
i2c->input_clk = clk_get_rate(i2c->clk);
- ret = of_property_read_u32(dev->of_node, "clock-frequency",
- &i2c->i2c_clk);
+ ret = device_property_read_u32(dev, "clock-frequency", &i2c->i2c_clk);
/* If clock-frequency not specified in DT, do not configure in SW */
if (ret || i2c->i2c_clk > I2C_MAX_FAST_MODE_PLUS_FREQ)
i2c->i2c_clk = 0;
@@ -1494,8 +1487,7 @@ static int xiic_i2c_probe(struct platform_device *pdev)
if (ret < 0)
return ret;
- i2c->singlemaster =
- of_property_read_bool(dev->of_node, "single-master");
+ i2c->singlemaster = device_property_read_bool(dev, "single-master");
/*
* Detect endianness
--
2.52.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v4 0/5] i2c: xiic: use generic device property accessors
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
` (4 preceding siblings ...)
2026-01-23 16:34 ` [PATCH v4 5/5] i2c: xiic: switch to generic device property accessors Abdurrahman Hussain via B4 Relay
@ 2026-01-23 16:56 ` Andy Shevchenko
5 siblings, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2026-01-23 16:56 UTC (permalink / raw)
To: abdurrahman
Cc: Michal Simek, Andi Shyti, linux-arm-kernel, linux-i2c,
linux-kernel
On Fri, Jan 23, 2026 at 04:34:13PM +0000, Abdurrahman Hussain via B4 Relay wrote:
> Switch to generic device property accessors.
>
> Switch to managed devm_ functions to simplify error handling.
>
> Make the clock optional since the driver is designed to operate without
> explicit configuration in firmware thus making it useful on platforms
> where clock is not or cannot be provided.
...
> Changes in v4:
> - Reorder the cosmetic patch to be the first in the series.
No. that's not what I meant. I meant that the line that adds a temporary
variable should be moved from the last patch to the first one. The order
of the _patches_ was fine, now it's broken again.
Take your time and try to play with the patches locally to see my point.
Next week v5 would be nice to have that addresses my point.
> - Amend the mutex_init patch to also switch to the managed pm_runtime_
> variant.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-01-23 16:57 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-23 16:34 [PATCH v4 0/5] i2c: xiic: use generic device property accessors Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 1/5] i2c: xiic: minor cosmetic cleanup Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 2/5] i2c: xiic: make the clock optional Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 3/5] i2c: xiic: switch to devm_ managed apis to simplify the error code paths Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 4/5] i2c: xiic: remove duplicate error message Abdurrahman Hussain via B4 Relay
2026-01-23 16:34 ` [PATCH v4 5/5] i2c: xiic: switch to generic device property accessors Abdurrahman Hussain via B4 Relay
2026-01-23 16:56 ` [PATCH v4 0/5] i2c: xiic: use " Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox