> > There are 2 places where clock division takes place - > > > > 1) There is a clock divider outside of I2C block, which makes the clock reaching > > I2C module as - Platform Clock/2 > > 2) There is another clock divider which specifically divides the clock to the I2C block, > > based on RCW bit 424 (if 424th bit is 0 then the baud clock source is Platform Clock/4, > > if 424th bit is 1 then it remains Platform Clock/2) > > So there is a clock divider which based on RCW bit 424 divides the clock > *to* the i2c module. This suggests the divider is outside of the i2c > module itself and thus part of the clock module. > > We could argue that this divider sits between the clock module and the > i2c module, but for sure it's not in the i2c module. I really suggest to > put this SoC specific into the SoC specific clock driver rather than > littering the i2c driver with it. I am with Sascha here. The fact that you need to of_ioremap some registers is a really strong indication that the code should go somewhere else. I can't tell the best place (clock driver or seperate GUTS driver or syscon driver), but the I2C bus driver seems not suitable.
Attachment:
signature.asc
Description: PGP signature