高通msm8953平台I2C分析

今天遇到了个I2C不通的问题,用的是I2C_8

msm8953.dtsi

i2c8 = &i2c_8;

i2c_8: i2c@7af8000 { /* BLSP2 QUP3 */
          compatible = "qcom,i2c-msm-v2";
           ...
           pinctrl-names = "i2c_active", "i2c_sleep";
           pinctrl-0 = <&i2c_8_active>;
           pinctrl-1 = <&i2c_8_sleep>;
           qcom,noise-rjct-scl = <0>;
           qcom,noise-rjct-sda = <0>;
           qcom,master-id = <84>;
           dmas = <&dma_blsp1 10 64 0x20000020 0x20>,
                   <&dma_blsp1 11 32 0x20000020 0x20>;
           dma-names = "tx", "rx";
           status = "disabled";
   };

msm8953-pinctrl.dtsi

i2c_8 {
               i2c_8_active: i2c_8_active {
                       /* active state */
                       mux {
                               pins = "gpio98", "gpio99";
                               function = "blsp_i2c8";
                       };
                       config {
                               pins = "gpio98", "gpio99";
                               drive-strength = <2>;
                               bias-disable;
                       };
               };
               ...
       }; 

该屏蔽的也都屏蔽了,可还是不通。于是去硬件测了测,发现根本没有波形。

正常的话CPU会通过I2C发出一段寻址的时序来寻找挂载在这个I2C上的IC,可是这个I2C什么波形都没有,我都开始怀疑人生了。

硬件告诉我这个I2C是需要供电才能正常工作的,可能是没有供电。

于是我把这路供电设置成regulator-always-on

rpm-regulator-ldoa6 {
                 status = "okay";
                 pm8953_l6: regulator-l6 {
                         regulator-min-microvolt = <1800000>;
                         regulator-max-microvolt = <1800000>;
                         qcom,init-voltage = <1800000>;
                         regulator-always-on;
                         status = "okay";
                }
}

I2C就通了,问题解决。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值