设备树中的Gpio猪是什么?

Dan*_*iel 4 linux linux-device-driver device-tree beagleboneblack

我正在尝试在设备树中为am335设置引脚模式。我如下更改设备树中的pinmux节点。

pinctrl_test: pinctrl_test_pins {
    pinctrl-single,pins = <
        0x078 0x07 /* P9_12 OUTPUT | MODE7 | PULLDOWN */
        0x048 0x07 /* P9_14 OUTPUT | MODE7 | PULLDOWN */
    >;
}
Run Code Online (Sandbox Code Playgroud)

但我没有看到任何变化/sys/kernel/debug/pinctrl/44e10800.pinmux/pins

我找到了有关GPIO -HOG的信息,但是找不到好的文档。

我正在使用的内核版本是4.8.13

Pra*_*Lad 5

在将Pinmux配置到以下位置之后:

pinctrl_test: pinctrl_test_pins {
    pinctrl-single,pins = <
        0x078 0x07 /* P9_12 OUTPUT | MODE7 | PULLDOWN */
        0x048 0x07 /* P9_14 OUTPUT | MODE7 | PULLDOWN */
    >;
}
Run Code Online (Sandbox Code Playgroud)
  1. 您是否重新编译为dtb?
  2. 该文件/sys/kernel/debug/pinctrl/44e10800.pinmux/pins中的0x44E10848和0x44E10878的值是多少(应为00000007 pinctrl-single)

gpio-hog是gpio节点属性,它告诉gpio控制器在引导过程中将引脚设置为高/低。

将引脚拨高的示例:

    gpio@4805b000 {
        compatible = "ti,omap4-gpio";
        reg = <0x4805b000 0x200>;
        interrupts = <0x0 0x1c 0x4>;
        ti,hwmods = "gpio5";
        gpio-controller;
        #gpio-cells = <0x2>;
        interrupt-controller;
        #interrupt-cells = <0x2>;
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <0xaf>;

        p12 {
            gpio-hog;
            gpios = <0xc 0x0>;
            output-high;
            line-name = "vb4-gpio5-12-gpio";
        };
    };
Run Code Online (Sandbox Code Playgroud)

将引脚拉低的示例:

    gpio@48053000 {
        compatible = "ti,omap4-gpio";
        reg = <0x48053000 0x200>;
        interrupts = <0x0 0x74 0x4>;
        ti,hwmods = "gpio8";
        gpio-controller;
        #gpio-cells = <0x2>;
        interrupt-controller;
        #interrupt-cells = <0x2>;
        status = "okay";

        p0 {
            gpio-hog;
            gpios = <0x0 0x0>;
            output-low;
            line-name = "vb4-gpio8-0-gpio";
        };

    };
Run Code Online (Sandbox Code Playgroud)

您可以在[1]中详细了解gpio-hog。

[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/gpio/gpio.txt


zee*_*uge 1

内核版本 4.8.13 属于后续版本,您不需要设备树覆盖来更改 GPIO 的配置。你可以简单地使用congif-pin实用程序。

\n\n

引用自这里

\n\n
\n

配置引脚实用程序 - 要更改引脚的 pinmux 设置,现在不需要设备树覆盖(4.4+ 内核),您只需使用\n \xe2\x80\x98config-pin\xe2\x80\x99 实用程序即可。要配置引脚,您只需要知道其在电路板上的位置,因此可以更改引脚的复用器设置,例如 P8_46

\n\n
$ config-pin -l P8_46\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出显示可用引脚模式的空格分隔列表,\n 如下所示:

\n\n
$ default gpio gpio_pu gpio_pd pruout pruin pwm\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在更改 pinmode,例如 pruout

\n\n
$ config-pin P8_46 pruout\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会将 P8_46 处的引脚配置为 pru_output 模式。可以使用 \xe2\x80\x98config-pin -i\xe2\x80\x99 了解引脚的进一步状态,这将提供详细的输出。

\n\n
$ config-pin -i P8_46\nPin name: P8_46\nFunction if no cape loaded: hdmi\nFunction if cape loaded: default gpio gpio_pu gpio_pd pruout pruin pwm\nFunction information: lcd_data1 default gpio2_7 gpio2_7 gpio2_7 pr1_pru1_pru_r30_1 pr1_pru1_pru_r31_1 ehrpwm2B\nCape: cape-universala cape-univ-hdmi\nKernel GPIO id: 71\nPRU GPIO id: 103\n
Run Code Online (Sandbox Code Playgroud)\n
\n

  • 这仅与 beaglebone 相关,这不是内核向用户空间提供的标准 ABI。 (7认同)
  • 我想在启动期间配置引脚。 (3认同)