i2c: fix writing w_token reg error
authorJian Hu <jian.hu@amlogic.com>
Wed, 14 Mar 2018 09:43:16 +0000 (17:43 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Thu, 15 Mar 2018 04:22:21 +0000 (20:22 -0800)
PD#161535: i2c: fix writing w_token reg error

1.fix writing  w_token reg error
2.set default clock frequency 100khz
3.config i2c1 pinmux and change clock frequency to 300k

Change-Id: I9b3fe3ed404255e3897d7353c57770a6019e6f9b
Signed-off-by: Jian Hu <jian.hu@amlogic.com>
arch/arm64/boot/dts/amlogic/mesontxlx.dtsi
arch/arm64/boot/dts/amlogic/txlx_t962e_r321.dts
drivers/amlogic/i2c/i2c-meson-master.c

index 3328300..45077bc 100644 (file)
                                #size-cells = <0>;
                                clocks = <&clkc CLKID_I2C>;
                                clock-names = "clk_i2c";
+                               clock-frequency = <100000>;
                        };
 
                        i2c1: i2c@1e000 {
                                #size-cells = <0>;
                                clocks = <&clkc CLKID_I2C>;
                                clock-names = "clk_i2c";
+                               clock-frequency = <100000>;
                        };
 
                        i2c2: i2c@1d000 {
                                #size-cells = <0>;
                                clocks = <&clkc CLKID_I2C>;
                                clock-names = "clk_i2c";
+                               clock-frequency = <100000>;
                        };
 
                        i2c3: i2c@1c000 {
                                #size-cells = <0>;
                                clocks = <&clkc CLKID_I2C>;
                                clock-names = "clk_i2c";
+                               clock-frequency = <100000>;
                        };
 
                        pwm_ab: pwm@1b000 {
                                #size-cells = <0>;
                                clocks = <&clkc CLKID_I2C>;
                                clock-names = "clk_i2c";
+                               clock-frequency = <100000>;
                        };
 
                        aoclkc: clock-controller@0 {
        i2c1_dv_pins:i2c1_z {
                mux {
                        groups = "i2c1_sda",
-                               "i2c2_sck";
+                               "i2c1_sck";
                        function = "i2c1";
                };
        };
index 1dd426a..2e9ef1a 100644 (file)
        };
 };
 
+&i2c1 {
+       status = "okay";
+       clock-frequency = <300000>;
+       pinctrl-names="default";
+       pinctrl-0=<&i2c1_dv_pins>;
+};
+
 &pinctrl_periphs {
        /*i2s*/
        aml_audio_i2s: aml_audio_i2s {
index ae4ba75..ed651db 100644 (file)
@@ -273,7 +273,7 @@ static void meson_i2c_put_data(struct meson_i2c *i2c, char *buf, int len)
                wdata1 |= *buf++ << ((i - 4) * 8);
 
        writel(wdata0, i2c->regs + REG_TOK_WDATA0);
-       writel(wdata0, i2c->regs + REG_TOK_WDATA1);
+       writel(wdata1, i2c->regs + REG_TOK_WDATA1);
 
        dev_dbg(i2c->dev, "%s: data %08x %08x len %d\n", __func__,
                wdata0, wdata1, len);