The devm_clk_get_enabled() helpers: - call devm_clk_get() - call clk_prepare_enable() and register what is needed in order to call clk_disable_unprepare() when needed, as a managed resource. This simplifies the code and avoids the calls to clk_disable_unprepare(). While at it, no need to save clk pointer, drop sclk from struct em_i2c_device. -v3: *Add another patch to use dev_err_probe() in jz4780_i2c_probe(). -v2: *Add another patch to drop sclk from struct em_i2c_device. Rong Qianfeng (4): i2c: emev2: Use devm_clk_get_enabled() helpers i2c: emev2: drop sclk from struct em_i2c_device i2c: jz4780: Use devm_clk_get_enabled() helpers i2c: jz4780: Use dev_err_probe() drivers/i2c/busses/i2c-emev2.c | 23 +++++++---------------- drivers/i2c/busses/i2c-jz4780.c | 33 +++++++++++---------------------- 2 files changed, 18 insertions(+), 38 deletions(-) -- 2.39.0