i2c: meson: keep peripheral clock enabled

SCL rate appears to be different than what is expected. For example,
We get 164kHz on i2c3 of the vim3 when 400kHz is expected. This is
partially due to the peripheral clock being disabled when the clock is
set.

Let's keep the peripheral clock on after probe to fix the problem. This
does not affect the SCL output which is still gated when i2c is idle.

Fixes: 09af1c2fa490 ("i2c: meson: set clock divider in probe instead of setting it for each transfer")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>

authored by Jerome Brunet and committed by Wolfram Sang 79e137b1 28683e84

Changed files
+3 -7
drivers
i2c
busses
+3 -7
drivers/i2c/busses/i2c-meson.c
··· 370 370 struct meson_i2c *i2c = adap->algo_data; 371 371 int i, ret = 0; 372 372 373 - clk_enable(i2c->clk); 374 - 375 373 for (i = 0; i < num; i++) { 376 374 ret = meson_i2c_xfer_msg(i2c, msgs + i, i == num - 1, atomic); 377 375 if (ret) 378 376 break; 379 377 } 380 - 381 - clk_disable(i2c->clk); 382 378 383 379 return ret ?: i; 384 380 } ··· 444 448 return ret; 445 449 } 446 450 447 - ret = clk_prepare(i2c->clk); 451 + ret = clk_prepare_enable(i2c->clk); 448 452 if (ret < 0) { 449 453 dev_err(&pdev->dev, "can't prepare clock\n"); 450 454 return ret; ··· 466 470 467 471 ret = i2c_add_adapter(&i2c->adap); 468 472 if (ret < 0) { 469 - clk_unprepare(i2c->clk); 473 + clk_disable_unprepare(i2c->clk); 470 474 return ret; 471 475 } 472 476 ··· 484 488 struct meson_i2c *i2c = platform_get_drvdata(pdev); 485 489 486 490 i2c_del_adapter(&i2c->adap); 487 - clk_unprepare(i2c->clk); 491 + clk_disable_unprepare(i2c->clk); 488 492 489 493 return 0; 490 494 }