From b96259551b337225bb0e7afb3452b98435dd8b81 Mon Sep 17 00:00:00 2001 From: Encrow Thorne Date: Tue, 30 Dec 2025 23:06:52 +0800 Subject: [PATCH] i2c: k1: add reset support The K1 I2C controller provides a reset line that needs to be deasserted before the controller can be accessed. Add reset support to the driver to ensure the controller starts in the required state. Signed-off-by: Encrow Thorne Reviewed-by: Troy Mitchell Signed-off-by: Andi Shyti Link: https://lore.kernel.org/r/20251230150653.42097-2-jyc0019@gmail.com --- drivers/i2c/busses/i2c-k1.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/i2c/busses/i2c-k1.c b/drivers/i2c/busses/i2c-k1.c index d42c03ef5db5..23661c7ddb67 100644 --- a/drivers/i2c/busses/i2c-k1.c +++ b/drivers/i2c/busses/i2c-k1.c @@ -10,6 +10,7 @@ #include #include #include + #include /* spacemit i2c registers */ #define SPACEMIT_ICR 0x0 /* Control register */ @@ -534,6 +535,7 @@ static int spacemit_i2c_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct device_node *of_node = pdev->dev.of_node; struct spacemit_i2c_dev *i2c; + struct reset_control *rst; int ret; i2c = devm_kzalloc(dev, sizeof(*i2c), GFP_KERNEL); @@ -578,6 +580,11 @@ static int spacemit_i2c_probe(struct platform_device *pdev) if (IS_ERR(clk)) return dev_err_probe(dev, PTR_ERR(clk), "failed to enable bus clock"); + rst = devm_reset_control_get_optional_exclusive_deasserted(dev, NULL); + if (IS_ERR(rst)) + return dev_err_probe(dev, PTR_ERR(rst), + "failed to acquire deasserted reset\n"); + spacemit_i2c_reset(i2c); i2c_set_adapdata(&i2c->adapt, i2c); -- 2.47.3