Most systems with this i2c are going to have a clock of either 33.33MHz or 32MHz. That 4% difference is not reason enough to warrant that the driver to completely fail. Signed-off-by: Chris Brandt <chris.brandt@xxxxxxxxxxx> --- v3: * now check a range of safe frequencies v2: * simplified error message. --- --- drivers/i2c/busses/i2c-riic.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c index c811af4c8d81..4c001d09aac2 100644 --- a/drivers/i2c/busses/i2c-riic.c +++ b/drivers/i2c/busses/i2c-riic.c @@ -299,12 +299,14 @@ static int riic_init_hw(struct riic_dev *riic, u32 spd) /* * TODO: Implement formula to calculate the timing values depending on - * variable parent clock rate and arbitrary bus speed + * variable parent clock rate and arbitrary bus speed. + * For now, just use calculations based on a 33.33MHz clock. */ rate = clk_get_rate(riic->clk); - if (rate != 33325000) { + if ((rate < 32000000) || (rate > 33400000)) { dev_err(&riic->adapter.dev, - "invalid parent clk (%lu). Must be 33325000Hz\n", rate); + "invalid parent clk (%lu). Must be 32.0MHz-33.4MHz.\n", + rate); clk_disable_unprepare(riic->clk); return -EINVAL; } -- 2.14.1