什么是设备树中的Gpio猪?

时间:2017-08-28 04:57:56

标签: linux linux-device-driver beagleboneblack device-tree

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

pinctrl_test: pinctrl_test_pins {
    pinctrl-single,pins = <
        0x078 0x07 /* P9_12 OUTPUT | MODE7 | PULLDOWN */
        0x048 0x07 /* P9_14 OUTPUT | MODE7 | PULLDOWN */
    >;
}

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

我找到了一些关于GPIO -HOG的信息,但找不到好的文档。

我使用的内核版本是4.8.13

2 个答案:

答案 0 :(得分:4)

将pinmux配置为以下:

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

    将引脚拉低的示例:

        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";
            };
    
        };
    

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

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

答案 1 :(得分:0)

内核版本4.8.13属于后者,您不需要使用设备树覆盖来更改GPIO的配置。您只需使用congif-pin实用程序。

引自here

  

配置引脚实用程序 - 更改引脚的pinmux设置不会   现在需要设备树覆盖(4.4+内核),你可以简单地使用   'config-pin'实用程序。要配置引脚,您只需要知道它   在板上的位置,所以要更改引脚的多路复用设置,为   例如,P8_46

$ config-pin -l P8_46
     

输出显示空格分隔的可用引脚模式列表   看起来像:

$ default gpio gpio_pu gpio_pd pruout pruin pwm
     

现在改变pinmode,例如pruout

$ config-pin P8_46 pruout
     

这会将P8_46的引脚配置为pru_output模式。进一步的状态   使用'config-pin -i'可以知道引脚,这将给出详细说明   输出

$ config-pin -i P8_46
Pin name: P8_46
Function if no cape loaded: hdmi
Function if cape loaded: default gpio gpio_pu gpio_pd pruout pruin pwm
Function information: lcd_data1 default gpio2_7 gpio2_7 gpio2_7 pr1_pru1_pru_r30_1 pr1_pru1_pru_r31_1 ehrpwm2B
Cape: cape-universala cape-univ-hdmi
Kernel GPIO id: 71
PRU GPIO id: 103