在哪里可以找到有关内核设备树pinctrl参数的文档



我正试图将一个新的以太网设备添加到现有的stm32mp1板上,但我在设备树部分有点迷路了。

到目前为止我发现了什么:

board.dts文件中,我可以找到连接到以太网PHY:的引脚

&pinctrl {
ethernet0_rgmii_pins: rgmii-0 {
pins1 {
pinmux = <STM32_PINMUX('G', 4, AF11)>, /* ETH_RGMII_GTX_CLK */
<STM32_PINMUX('B', 12, AF11)>, /* ETH_RGMII_TXD0 */
<STM32_PINMUX('G', 14, AF11)>, /* ETH_RGMII_TXD1 */
<STM32_PINMUX('C', 2, AF11)>, /* ETH_RGMII_TXD2 */
<STM32_PINMUX('E', 2, AF11)>, /* ETH_RGMII_TXD3 */
<STM32_PINMUX('G', 11, AF11)>, /* ETH_RGMII_TX_CTL */
<STM32_PINMUX('C', 1, AF11)>; /* ETH_MDC */
bias-disable;
drive-push-pull;
slew-rate = <2>;
};
pins2 {
pinmux = <STM32_PINMUX('A', 2, AF11)>; /* ETH_MDIO */
bias-disable;
drive-push-pull;
slew-rate = <0>;
};
pins3 {
pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH_RGMII_RXD0 */
<STM32_PINMUX('C', 5, AF11)>, /* ETH_RGMII_RXD1 */
<STM32_PINMUX('H', 6, AF11)>, /* ETH_RGMII_RXD2 */
<STM32_PINMUX('H', 7, AF11)>, /* ETH_RGMII_RXD3 */
<STM32_PINMUX('A', 1, AF11)>, /* ETH_RGMII_RX_CLK */
<STM32_PINMUX('A', 7, AF11)>; /* ETH_RGMII_RX_CTL */
bias-disable;
};
};
};
&ethernet0 {
status = "okay";
pinctrl-0 = <&ethernet0_rmii_pins>;
pinctrl-names = "default";
phy-mode = "rgmii";
phy-handle = <&phy0>;
st,eth_clk_sel = <1>;
max-speed = <1000>;
clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx", "eth-ck", "syscfg-clk", "ethstp";
clocks = <&rcc ETHMAC>, <&rcc ETHTX>, <&rcc ETHRX>, <&rcc ETHCK_K>, <&rcc SYSCFG>, <&rcc ETHSTP>;
mdio0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
phy0: ethernet-phy@0 {
reg = <0>;
ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
ti,dp83867-rxctrl-strap-quirk;
};
};
};

例如,在引脚1部分,连接了以下引脚:

pinmux = <STM32_PINMUX('G', 4, AF11)>, /* ETH_RGMII_GTX_CLK */
<STM32_PINMUX('B', 12, AF11)>, /* ETH_RGMII_TXD0 */
<STM32_PINMUX('G', 14, AF11)>, /* ETH_RGMII_TXD1 */
<STM32_PINMUX('C', 2, AF11)>, /* ETH_RGMII_TXD2 */
<STM32_PINMUX('E', 2, AF11)>, /* ETH_RGMII_TXD3 */
<STM32_PINMUX('G', 11, AF11)>, /* ETH_RGMII_TX_CTL */
<STM32_PINMUX('C', 1, AF11)>; /* ETH_MDC */

然后在这里使用引脚组:

pinctrl-0 = <&ethernet0_rgmii_pins>;
pinctrl-names = "default";

但是,顺序是如何定义的,在哪里定义的?稍后如何将其传递给PHY设备驱动程序?如果我将PHY从RGMII更改为RMII,该怎么办?然后引脚的数量减少了,但我必须按照什么顺序放置引脚?

遗憾的是,我找不到任何文档,也许有人可以在这里帮我。

谢谢。

订单无关紧要。pinctrl所做的就是将物理引脚连接到右外围设备。充当GMAC外围设备的硅片不在乎使用哪个特定引脚。

如果这是你所关心的,我怀疑是否有可能将引脚B12和G14的角色互换为TXD1和TXD0。