您的位置:首页 > 编程语言 > Go语言

基于Dragonboard 410c的总线控制之I2C(三)

2017-10-14 15:23 1226 查看
   上一篇博客中介绍了lk中i2c的配置,因为在lk中直接对硬件进行控制,所以很多寄存器和时钟之类的要自己配置,一些函数也要自己实现。在kernel中就方便的多了,因为在kernel中i2c的逻辑控制、时序控制等都已经写好了,只要直接调用就可以了,接下来一起看一下。

   以i2c0为例

路径:kernel/arch/arm/boot/dts/qcom/msm8916.dtsi

aliases {

       i2c0 = &i2c_0;

}

    i2c_0: i2c@78b6000 { /* BLSP1 QUP2 */

        compatible = "qcom,i2c-msm-v2";

        #address-cells = <1>;

        #size-cells = <0>;

        reg-names = "qup_phys_addr";

        reg = <0x78b6000 0x600>;

        interrupt-names = "qup_irq";

        interrupts = <0 96 0>;

        clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,

             <&clock_gcc clk_gcc_blsp1_qup2_i2c_apps_clk>;

        clock-names = "iface_clk", "core_clk";

        qcom,clk-freq-out = <100000>;

        qcom,clk-freq-in  = <19200000>;

        pinctrl-names = "i2c_active", "i2c_sleep";

        pinctrl-0 = <&i2c_0_active>;

        pinctrl-1 = <&i2c_0_sleep>;

        qcom,noise-rjct-scl = <0>;

        qcom,noise-rjct-sda = <0>;

        dmas = <&dma_blsp1 6 64 0x20000020 0x20>,

            <&dma_blsp1 7 32 0x20000020 0x20>;

        dma-names = "tx", "rx";

        qcom,master-id = <86>;

    };

   这是i2c0的一些基础配置,接下来是引脚配置

路径:kernel/arch/arm/boot/dts/qcom/msm8916-pinctrl.dtsi

&soc{

pmx_i2c_0 {

            /* CLK, DATA */

            qcom,pins = <&gp 7>, <&gp 6>;

            qcom,num-grp-pins = <2>;

            qcom,pin-func = <3>;

            label = "pmx_i2c_0";

            i2c_0_active: i2c_0_active {

                drive-strength = <16>; /* 2 MA */

                bias-disable;         /* No PULL */

            };

            i2c_0_sleep: i2c_0_sleep {

                drive-strength = <16>; /* 2 MA */

                bias-disable;          /* No PULL */

            };

        };

}:

到这里i2c就配置好了,那如何调用呢?

路径:kernel/arch/arm/boot/dts/qcom/msm8916-cdp.dtsi

比如设备是:adb@20{  };可进行如下调用

i2c@78b6000 {

    adb@20{  };

};

到这kernel中的i2c的配置和调用就完了。一定要注意是否有引脚复用,如果发现配置没有错误,但就是没反应,那就去查一下是否引脚复用了,有的话先屏蔽掉,然后看看是否生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: