i2c: mxc: add CONFIG_CLK support
[platform/kernel/u-boot.git] / drivers / i2c / mxc_i2c.c
index 20f6dc4..786b5a2 100644 (file)
@@ -149,7 +149,12 @@ static uint8_t i2c_imx_get_clk(struct mxc_i2c_bus *i2c_bus, unsigned int rate)
 #endif
 
        /* Divider value calculation */
+#if CONFIG_IS_ENABLED(CLK)
+       i2c_clk_rate = clk_get_rate(&i2c_bus->per_clk);
+#else
        i2c_clk_rate = mxc_get_clock(MXC_I2C_CLK);
+#endif
+
        div = (i2c_clk_rate + rate - 1) / rate;
        if (div < i2c_clk_div[0][0])
                clk_div = 0;
@@ -891,9 +896,22 @@ static int mxc_i2c_probe(struct udevice *bus)
        i2c_bus->bus = bus;
 
        /* Enable clk */
+#if CONFIG_IS_ENABLED(CLK)
+       ret = clk_get_by_index(bus, 0, &i2c_bus->per_clk);
+       if (ret) {
+               printf("Failed to get i2c clk\n");
+               return ret;
+       }
+       ret = clk_enable(&i2c_bus->per_clk);
+       if (ret) {
+               printf("Failed to enable i2c clk\n");
+               return ret;
+       }
+#else
        ret = enable_i2c_clk(1, bus->seq);
        if (ret < 0)
                return ret;
+#endif
 
        /*
         * See Documentation/devicetree/bindings/i2c/i2c-imx.txt