aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
authorHeiner Kallweit <hkallweit1@gmail.com>2017-03-25 14:06:35 +0100
committerWolfram Sang <wsa@the-dreams.de>2017-03-30 17:30:47 +0200
commit39b2ca68537aaf013ad192eb1c9e6b88e267d257 (patch)
treec6c9fcbaaf6a8e0b2a17f2a4abfdb6f3f27679be /drivers/i2c
parenti2c: meson: set clock divider in probe instead of setting it for each transfer (diff)
downloadlinux-dev-39b2ca68537aaf013ad192eb1c9e6b88e267d257.tar.xz
linux-dev-39b2ca68537aaf013ad192eb1c9e6b88e267d257.zip
i2c: meson: use i2c core for DT clock-frequency parsing
We don't have to parse the DT manually to retrieve the bus frequency and we don't have to maintain an own default for the bus frequency. Let the i2c core do this for us. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-meson.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/i2c/busses/i2c-meson.c b/drivers/i2c/busses/i2c-meson.c
index a692594fb82c..852db0f0bec2 100644
--- a/drivers/i2c/busses/i2c-meson.c
+++ b/drivers/i2c/busses/i2c-meson.c
@@ -38,7 +38,6 @@
#define REG_CTRL_CLKDIV_MASK ((BIT(10) - 1) << REG_CTRL_CLKDIV_SHIFT)
#define I2C_TIMEOUT_MS 500
-#define DEFAULT_FREQ 100000
enum {
TOKEN_END = 0,
@@ -387,15 +386,14 @@ static int meson_i2c_probe(struct platform_device *pdev)
struct device_node *np = pdev->dev.of_node;
struct meson_i2c *i2c;
struct resource *mem;
- u32 freq;
+ struct i2c_timings timings;
int irq, ret = 0;
i2c = devm_kzalloc(&pdev->dev, sizeof(struct meson_i2c), GFP_KERNEL);
if (!i2c)
return -ENOMEM;
- if (of_property_read_u32(pdev->dev.of_node, "clock-frequency", &freq))
- freq = DEFAULT_FREQ;
+ i2c_parse_fw_timings(&pdev->dev, &timings, true);
i2c->dev = &pdev->dev;
platform_set_drvdata(pdev, i2c);
@@ -452,7 +450,7 @@ static int meson_i2c_probe(struct platform_device *pdev)
return ret;
}
- meson_i2c_set_clk_div(i2c, freq);
+ meson_i2c_set_clk_div(i2c, timings.bus_freq_hz);
return 0;
}