分析imx8mm-evk評估板的pinctrl設備樹


1. 分析arch/arm64/boot/dts/freescale/imx8mm-evk.dts中的i2c3相關的pinctrl_i2c3節點

   pinctrl_i2c3: i2c3grp {

    fsl,pins = <
      MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL 0x400001c3
      MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA 0x400001c3
    >;
 };

 MX8MM_IOMUXC_I2C3_SCL_I2C3_SC和MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA是什么?

  其定義在arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h中

    

    /*
    * The pin function ID is a tuple of
    * <mux_reg conf_reg input_reg mux_mode input_val>
    */

    #define MX8MM_IOMUXC_I2C3_SCL_I2C3_SCL                                      0x224 0x48C 0x000 0x0 0x0

    #define MX8MM_IOMUXC_I2C3_SDA_I2C3_SDA                                      0x228 0x490 0x000 0x0 0x0

  那么pinctrl_i2c3展開后為:

   pinctrl_i2c3: i2c3grp {

    fsl,pins = <
      0x224 0x48C 0x000 0x0 0x0 0x400001c3 (設置引腳I2C3_SCL的功能為i2c中的時鍾輸出信號線)
      0x228 0x490 0x000 0x0 0x0 0x400001c3   (設置引腳I2C3_SDA的功能為i2c中的數據線
    >;
   };

    0x224 是Pad Mux Register的寄存器地址偏移量

    0x48c 是Pad Control Register的寄存器地址偏移量

    0x000 是Select Input Register的寄存器地址偏移量

    0x0 是設置到Pad Mux Register的值

    0x0 是設置到Select Input Register的值

    0x400001c3 是將要設置到Pad Control Register的值

  關於fsl,pins屬性可以參考Documentation/devicetree/bindings/pinctrl/fsl,imx8mm-pinctrl.txt

   

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM