Other Parts Discussed in Thread: AM67A
器件型号: AM67A
我目前正在尝试将一个引脚配置为 GPIO、默认情况下该引脚为高电平、因为它用于器件复位。
我为相应的 padconfig 使用了 PIN_OUTPUT_PULLUP、希望看到该引脚在默认情况下为高电平、但情况并非如此。
我在 k3-pinctrl.h 中看到了定义
#define PIN_OUTPUT_PULLUP (INPUT_DISABLE | PULL_UP
我在 DT 中做了以下相关定义。
&main_gpio1 {
pinctrl-names = "default";
pinctrl-0 = <&main_gpio1_pins>;
gpio-line-names =
//00 01 02 03 04 05 06 07 08 09
"", "", "", "", "", "", "", "", "", "", // 00 - 09
"", "", "", "", "", "", "", "", "", "", // 10 - 19
"", "", "", "", "", "DEV_NRST", "", "", "", "", // 20 - 29
"", "", "", "", "", "", "", "", "", "", // 30 - 39
"", "", "", "", "", "", "", "", "", "", // 40 - 49
"", "", ""; // 50 - 52
};
//...
&main_pmx0 {
main_gpio1_pins: main-gpio1-pins {
pinctrl-single,pins = <
J722S_IOPAD(0x0194, PIN_INPUT, 7) /* (A25) MCASP0_AXR3.GPIO1_7 */
J722S_IOPAD(0x0198, PIN_INPUT, 7) /* (A26) MCASP0_AXR2.GPIO1_8 */
J722S_IOPAD(0x019c, PIN_INPUT, 7) /* (B25) MCASP0_AXR1.GPIO1_9 */
J722S_IOPAD(0x01a0, PIN_INPUT, 7) /* (F23) MCASP0_AXR0.GPIO1_10 */
J722S_IOPAD(0x01a4, PIN_INPUT, 7) /* (D25) MCASP0_ACLKX.GPIO1_11 */
J722S_IOPAD(0x01a8, PIN_INPUT, 7) /* (C26) MCASP0_AFSX.GPIO1_12 */
J722S_IOPAD(0x01ac, PIN_INPUT, 7) /* (C27) MCASP0_AFSR.GPIO1_13 */
J722S_IOPAD(0x01b0, PIN_INPUT, 7) /* (F24) MCASP0_ACLKR.GPIO1_14 */
J722S_IOPAD(0x01d4, PIN_OUTPUT, 7) /* (B21) UART0_RTSn.GPIO1_23 */
J722S_IOPAD(0x01d8, PIN_INPUT, 7) /* (D22) MCAN0_TX.GPIO1_24 */
J722S_IOPAD(0x01dc, PIN_OUTPUT_PULLUP, 7) /* (C22) MCAN0_RX.GPIO1_25 => DEV_NRST*/
J722S_IOPAD(0x0240, PIN_INPUT, 7) /* (B24) MMC1_SDCD.GPIO1_48 */
J722S_IOPAD(0x0244, PIN_INPUT, 7) /* (A24) MMC1_SDWP.GPIO1_49 */
J722S_IOPAD(0x0254, PIN_OUTPUT_PULLUP, 7) /* (E25) USB0_DRVVBUS.GPIO1_50 */
>;
};
//...
我检查了 pinctrl 寄存器 (0x000F41DC)、从中可以看到两者之间的区别 PIN_OUTPUT_PULLUP 和 PIN_OUTPUT 。
一方 PIN_OUTPUT_PULLUP :
0x00020007.
一方 PIN_OUTPUT :
0x00010007
GPIO 挂起是可以工作的、但会阻止进一步的使用。
dev_nrst-hog {
gpio-hog;
gpios = <25 0>;
output-high;
};
pinctrl 寄存器具有以下不同的值。
0x00054007.
这可能意味着 pinctrl 寄存器中之前的值不正确。 是这样吗?
有趣的是、当我在 U-Boot DTS 中同时更改 pinctrl 时、我会获得所需的结果。
但是、Linux 启动后、相同的值会再次出现在 pinctrl 寄存器中。
是否有人知道我在哪里犯了错误或可能发生了什么故障?