[PATCH v11 7/7] i2c: xiic: skip input clock setup on non-OF systems

Abdurrahman Hussain via B4 Relay posted 7 patches 2 weeks, 6 days ago
There is a newer version of this series
[PATCH v11 7/7] i2c: xiic: skip input clock setup on non-OF systems
Posted by Abdurrahman Hussain via B4 Relay 2 weeks, 6 days ago
From: Abdurrahman Hussain <abdurrahman@nexthop.ai>

Currently Linux does not implement ACPI ClockInput() resource to describe
clocks, unlike DT. However the xiic driver is happy if something
magically enables the clock before the driver probes, and does not
turn it off again. The clock should always be considered optional for
ACPI.

Signed-off-by: Abdurrahman Hussain <abdurrahman@nexthop.ai>
---
 drivers/i2c/busses/i2c-xiic.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 2ad75325154c..e5574f2d97bf 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -1463,10 +1463,12 @@ static int xiic_i2c_probe(struct platform_device *pdev)
 
 	spin_lock_init(&i2c->atomic_lock);
 
-	i2c->clk = devm_clk_get_enabled(&pdev->dev, NULL);
-	if (IS_ERR(i2c->clk))
-		return dev_err_probe(&pdev->dev, PTR_ERR(i2c->clk),
-				     "failed to enable input clock.\n");
+	if (is_of_node(dev_fwnode(dev))) {
+		i2c->clk = devm_clk_get_enabled(dev, NULL);
+		if (IS_ERR(i2c->clk))
+			return dev_err_probe(dev, PTR_ERR(i2c->clk),
+					"failed to enable input clock.\n");
+	}
 
 	i2c->dev = dev;
 

-- 
2.52.0
Re: [PATCH v11 7/7] i2c: xiic: skip input clock setup on non-OF systems
Posted by Andy Shevchenko 2 weeks, 6 days ago
On Fri, Feb 13, 2026 at 12:15:22AM +0000, Abdurrahman Hussain via B4 Relay wrote:

> Currently Linux does not implement ACPI ClockInput() resource to describe
> clocks, unlike DT. However the xiic driver is happy if something
> magically enables the clock before the driver probes, and does not
> turn it off again. The clock should always be considered optional for
> ACPI.

...

> +	if (is_of_node(dev_fwnode(dev))) {

You would want to have

	struct fwnode_handle *fwnode = dev_fwnode(dev);

at the top now, as here is the second time it's being used.
Perhaps it makes sense to do in the patch that switches to
agnostic device property interface.

In any case, wait a few days before doing any new version, unless Andi asks
you for it. The first 6 patches may be already applied as is, in such a case
the above comment can be addressed here (with a little churn of touching
a line that has been already modified in the series).

> +		i2c->clk = devm_clk_get_enabled(dev, NULL);
> +		if (IS_ERR(i2c->clk))
> +			return dev_err_probe(dev, PTR_ERR(i2c->clk),
> +					"failed to enable input clock.\n");
> +	}

-- 
With Best Regards,
Andy Shevchenko