linux_驱动_IIC_设备树配置详解

做驱动的要经常配置i2c,而配置i2c无非就是确定i2c器件挂在哪一个i2c总线上,以及i2c的具体地址.下面以高通8909平台为例子说一下

 

  • 确定i2c机器挂在哪一个i2c总线上
    1. 从原理图得到SDA,SCL对应的gpio,我这个gpio为gpio6,gpio7
    2. 在msm8909-pinctrl.dtsi文件中找到该gpio对应的i2c总线,如下,可见其对应的i2c总线是i2c_1
      
           
           
      1. pmx_i2c_1 {
      2. i2c_1_active: i2c_1_active {
      3. mux {
      4. pins = "gpio6", "gpio7";
      5. function = "blsp_i2c1";
      6. };
      7. config {
      8. pins = "gpio6", "gpio7";
      9. drive-strength = < 2>; /* 2 MA */
      10. bias-disable; /* No PULL */
      11. };
      12. };
      13. i2c_1_sleep: i2c_1_sleep {
      14. mux {
      15. pins = "gpio6", "gpio7";
      16. function = "blsp_i2c1";
      17. };
      18. config {
      19. pins = "gpio6", "gpio7";
      20. drive-strength = < 2>; /* 2 MA */
      21. bias-disable; /* No PULL */
      22. };
      23. };
      24. };
      	<pre>
      

 



  • 然后在msm8909.dtsi里面查找i2c_1,就可以得到其i2c地址为78b5000

     

  • 	<pre class="has" name="code"><code class="hljs objectivec"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    i2c_1: i2c@<span class="hljs-number">78</span>b5000 { <span class="hljs-comment">/* BLSP1 QUP1 */</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        compatible = <span class="hljs-string">"qcom,i2c-msm-v2"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-meta">#address-cells = <span class="hljs-meta-string">&lt;1&gt;</span>;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-meta">#size-cells = <span class="hljs-meta-string">&lt;0&gt;</span>;</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        reg-names = <span class="hljs-string">"qup_phys_addr"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        reg = &lt;<span class="hljs-number">0x78b5000</span> <span class="hljs-number">0x1000</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        interrupt-names = <span class="hljs-string">"qup_irq"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        interrupts = &lt;<span class="hljs-number">0</span> <span class="hljs-number">95</span> <span class="hljs-number">0</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        clocks = &lt;&amp;clock_gcc clk_gcc_blsp1_ahb_clk&gt;,</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">             &lt;&amp;clock_gcc clk_gcc_blsp1_qup1_i2c_apps_clk&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        clock-names = <span class="hljs-string">"iface_clk"</span>, <span class="hljs-string">"core_clk"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        qcom,clk-freq-<span class="hljs-keyword">out</span> = &lt;<span class="hljs-number">100000</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        qcom,clk-freq-<span class="hljs-keyword">in</span> &nbsp;= &lt;<span class="hljs-number">19200000</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        pinctrl-names = <span class="hljs-string">"i2c_active"</span>, <span class="hljs-string">"i2c_sleep"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        pinctrl<span class="hljs-number">-0</span> = &lt;&amp;i2c_1_active&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        pinctrl<span class="hljs-number">-1</span> = &lt;&amp;i2c_1_sleep&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        qcom,noise-rjct-scl = &lt;<span class="hljs-number">0</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        qcom,noise-rjct-sda = &lt;<span class="hljs-number">0</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        dmas = &lt;&amp;dma_blsp1 <span class="hljs-number">4</span> <span class="hljs-number">64</span> <span class="hljs-number">0x20000020</span> <span class="hljs-number">0x20</span>&gt;,</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            &lt;&amp;dma_blsp1 <span class="hljs-number">5</span> &nbsp;<span class="hljs-number">32</span> <span class="hljs-number">0x20000020</span> <span class="hljs-number">0x20</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        dma-names = <span class="hljs-string">"tx"</span>, <span class="hljs-string">"rx"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        qcom,master-<span class="hljs-keyword">id</span> = &lt;<span class="hljs-number">86</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    };</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre>
    
    	<p>&nbsp;</p>
    	</li>
    	<li>在msm8909-mtp.dtsi里i2c@78b5000加入其i2c器件的配置
    	<p>&nbsp;</p>
    
    	<pre class="has" name="code"><code class="hljs kotlin"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    <span class="hljs-symbol">i2c@</span><span class="hljs-number">78</span>b5000 { <span class="hljs-comment">/* BLSP1 QUP1 */</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        <span class="hljs-symbol">fm2018@</span><span class="hljs-number">60</span> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            compatible = <span class="hljs-string">"fortemedia,fm2018"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            reg = &lt;<span class="hljs-number">0x60</span>&gt;;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            fm2018,vdd-en = &lt;&amp;sn7325_1gpio <span class="hljs-number">5</span> <span class="hljs-number">0x00</span>&gt;;<span class="hljs-comment">//p1 58sn7325,5</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            fm2018,pwd-gpio = &lt;&amp;sn7325_gpio <span class="hljs-number">3</span> <span class="hljs-number">0x00</span>&gt;;<span class="hljs-comment">//p1 26//sn7325,3</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            fm2018,rst-gpio = &lt;&amp;sn7325_gpio <span class="hljs-number">2</span> <span class="hljs-number">0x00</span>&gt;;<span class="hljs-comment">//sn7325,2</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">            fm2018,int-gpio = &lt;&amp;sn7325_gpio <span class="hljs-number">4</span> <span class="hljs-number">0x4</span>&gt;;<span class="hljs-comment">//sn7325,4</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">        };</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">    };</div></div></li></ol></code><div class="hljs-button {2}" data-title="复制" onclick="hljs.copyCode(event)"></div></pre>
    
    	<p>&nbsp;</p>
    	</li>
    </ol></li>
    
    • i2c器件的具体地址

            这个一般是由器件datasheet提供,如我使用的这个期间的i2c地址是0x60,如果不清楚,可以打电话问FAE。
     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值