]> git.baikalelectronics.ru Git - kernel.git/commitdiff
i2c: meson: use i2c core for DT clock-frequency parsing
authorHeiner Kallweit <hkallweit1@gmail.com>
Sat, 25 Mar 2017 13:06:35 +0000 (14:06 +0100)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 30 Mar 2017 15:30:47 +0000 (17:30 +0200)
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>
Documentation/devicetree/bindings/i2c/i2c-meson.txt
drivers/i2c/busses/i2c-meson.c

index 386357d1aab05de652675bf6ed19c0dc22b50709..611b934c7e104d4ec0b844bbca59b54c45471009 100644 (file)
@@ -8,6 +8,8 @@ Required properties:
  - #address-cells: should be <1>
  - #size-cells: should be <0>
 
+For details regarding the following core I2C bindings see also i2c.txt.
+
 Optional properties:
 - clock-frequency: the desired I2C bus clock frequency in Hz; in
   absence of this property the default value is used (100 kHz).
index a692594fb82c56944c0eede4f160355a4cea2f9e..852db0f0bec29d03ab56fba7e422ceda55947a10 100644 (file)
@@ -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;
 }