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

   上一篇博客中介绍了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的配置和调用就完了。一定要注意是否有引脚复用,如果发现配置没有错误,但就是没反应,那就去查一下是否引脚复用了,有的话先屏蔽掉,然后看看是否生效。






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值