imx8mm IOMUX 使用初步認識
-----
 
imx8mm HW pin都可以有 "多重的訊號選擇",但有些HW Pin只有單一功能選擇.
所謂 "多重的訊號選擇",也就是某一個PAD,可以經由ALT MODE將此PAD設定某一個特定port來使用.
 
以下為一個 ECSPI1_MISO範例
從 IMX8MMRM.pdf中page 1249 Muxing options table中可以看到
image
(PAD)ECSPI1_MISO 可以經由 ALT0 Mode,設定成 (Port)ECSPI1_MISO,當成ECSPI1介面中的 ECSPI1_MISO 使用.
 
image
(PAD)ECSPI1_MISO 也可以經由 ALT5 Mode,設定成 (port)GPIO5_IO8,當成GPIO5的IO8來使用.
 
image
(PAD)ECSPI1_MISO 也可以經由 ALT1 Mode,設定成 (port)UART3_CTS_B,當成UART3的CTS來使用.
 
 
針對上面文件中的敘述,可以找到對應的kernel的code
參考 /kernel_imx/include/dt-bindings/pinctrl/pins-imx8mm.h 檔案,但其中兩項無法在IMX8MMRM.pdf找到,這很奇怪.
不過至少三項與文件是一致的.
--
#define MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO                                0x1FC 0x464 0x000 0x0 0x0
#define MX8MM_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B                            0x1FC 0x464 0x000 0x1 0x0
(這項關係到 select input)#define MX8MM_IOMUXC_ECSPI1_MISO_UART3_DTE_RTS_B         0x1FC 0x464 0x500 0x1 0x0
#define MX8MM_IOMUXC_ECSPI1_MISO_GPIO5_IO8                                  0x1FC 0x464 0x000 0x5 0x0
(MUX_MODE很像沒有alt7)#define MX8MM_IOMUXC_ECSPI1_MISO_TPSMP_HDATA10           0x1FC 0x464 0x000 0x7 0x0
--
而上面的#define MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO  0x1FC 0x464 0x000 0x0 0x0
意義如下:
<mux_reg conf_reg input_reg mux_mode input_val>
也就是說,針對MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO
他的
mux_reg: 0x1FC  , mux控制寄存器偏移地址,3033_01fc Pad Mux Register for ECSPI1_MISO
image
conf_reg: 0x464 , pad控制寄存器偏移地址,3033_0464 Pad Control Register for ECSPI1_MISO
image
input_reg:0x000 , select_input控制寄存器偏移地址 , select input Register
image
mux_mode: 0x0 , Pad Mux Register中的 MUX_MODE,此範例是設定為ALT0
input_val: 0x0 , select_input寄存器值 (有的話, 沒有就設成0)
 
而在 dtsi通常會設定成這樣
--
        pinctrl_ecspi1: ecspi1grp {
            fsl,pins = <
                MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK        0x82
                MX8MM_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI        0x82
                MX8MM_IOMUXC_ECSPI1_MISO_ECSPI1_MISO        0x82
            >;
        };
--
這個時候的MX8MM_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK        0x82值,代表的意義是 conf_val
conf_val: 0x82, pad控制寄存器的設定值,此範例設定為 0x82
對應到 Pad Control Register for IOMUXC_SW_PAD_CTL_PAD_ECSPI1_MISO 的 PE,HYS,PUE,ODE,FSEL,DSE,而這些值有些牽扯到硬體的設計,可以跟硬體部門討論後,修改成正確的設定值.
image
image
 
 
 
以上就為imx8mm IOMUX 使用初步認識.在此作紀錄,並與大家分享.
arrow
arrow

    CuteParrot 發表在 痞客邦 留言(0) 人氣()