From: Phil Edworthy <phil.edworthy@xxxxxxxxxxx>Build & boot tested on linux-next that has the required commit
The Synopsys I2C Controller has an interface clock, but most SoCs hide
this away. However, on some SoCs you need to explicitly enable the
interface clock in order to access the registers. Therefore, add
support for an optional interface clock.
Signed-off-by: Phil Edworthy <phil.edworthy@xxxxxxxxxxx>
Signed-off-by: Gareth Williams <gareth.williams.jx@xxxxxxxxxxx>
Acked-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
---
v5:
- Updated comments to reference "interface clock" instead of
"peripheral clock".
- Corrected spelling in commit message, changing "explicity" to
"explicitly".
v4:
- Updated comments to reference "peripheral clock"
instead of "bus clock".
- Added Wolfram's Acked-by
v3:
- busclk renamed to pclk.
- Added comment with dw_i2c_dev struct definition describing pclk.
- Added enable rollback of first clock if second fails to enable.
v2:
- Use new devm_clk_get_optional() function as it simplifies handling when
the optional clock is not present.
---
drivers/i2c/busses/i2c-designware-common.c | 18 ++++++++++++++++--
drivers/i2c/busses/i2c-designware-core.h | 2 ++
drivers/i2c/busses/i2c-designware-platdrv.c | 5 +++++
3 files changed, 23 insertions(+), 2 deletions(-)