On Do, 2022-06-30 at 15:16 +0000, Phil Edworthy wrote: [...] > > Which reset driver is handling the reset for this i2c module? > drivers/clk/renesas/rzg2l-cpg.c > See rzg2l_cpg_assert() and rzg2l_cpg_deassert() > Note this driver handles a few different SoCs, the SoC using this i2c > driver is specified in drivers/clk/renesas/r9a09g011-cpg.c Thank you. [...] > > > In order for drivers to work on lots of platforms, should all drivers > use devm_reset_control_get_shared() instead of devm_reset_control_get(), > unless there is a need to reset the hardware at a specific time after > boot (e.g. watchdog with no way out)? Nobody should use devm_reset_control_get(). Those drivers that require direct control should use devm_reset_control_get_exclusive(). All others probably should use the _shared() variant, if it works for them. > So where do we go with this for this i2c driver? In this specific case letting the driver deassert the reset seems to be safe, so I'm fine with the way it is. You could also let the i2c driver call reset_control_assert() during remove() and modify the rzg2l-cpg.c driver to ignore it. That doesn't seem very useful on its own, but it would have the positive effect of documenting the shared-with-firmware reset in the reset controller driver. regards Philipp