2

应该如何配置设备树的 gpio 引脚的默认设置 - 特别是在飞思卡尔 imx 系列上。

到目前为止,我只能使用 led 界面配置 gpios:

gpioinit {
   compatible = "gpio-leds";
    pinctrl-names = "default";
    mykpp {
        gpios = <&gpio4 15 1>;
    };
};

上面的代码在启动期间将 gpio 4 15 设置为 1,这正是我想要的。但是,我认为有一种更好的方法可以使此引脚在 sysfs 中显示为通用 gpio 而不是 gpio-led

4

3 回答 3

0

如果是 GPIO,您的 dts 文件应显示如下内容:

    gpio0: gpio@c00 {
        #address-cells = <1>;
        #size-cells = <0>;
        cell-index = <0>;
        compatible = "fsl,mpc8377-gpio";
        reg = <0xc00 0x100>;
        interrupts = <74 0x8>;
        interrupt-parent = <&ipic>;
        gpio-controller;

        gpio-pin@11 {
            compatible = "fsl,mpc8377-gpio-input";
            active_status = "low";
            gpios = <&gpio0>;
            pin = <11>;
        };
    }

此示例取自 MPC8377 的 dts 文件。您可能想看看 /drivers/gpio/gpio-fsl.c

于 2013-12-20T09:22:06.477 回答
0

我刚刚在 i.MX6 和 Buildroot/Busybox、内核 v4.19.169 上测试了以下 DT。这是使它工作的 DT 片段,但是您不能再在用户空间中使用该 pin。请注意,顺便说一下,该gpios =属性的复杂语法。那个把我逼疯了!

&gpio7 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_gpio_en>;

    sysstat@11 {
        gpio-hog;
        gpios = <11 GPIO_ACTIVE_HIGH>;
        output-low;
        line-name = "SYS_STAT";
    };
};

&iomuxc {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_gpios>;

        pinctrl_gpio_en: gpiostatgrp {
            fsl,pins = <
                MX6QDL_PAD_GPIO_16__GPIO7_IO11      0x130b0
            >;
        };
};

0x130b0 表示:迟滞,100K 下拉,PUE=1(上拉使能),PKE=1(保持器使能)。这足以将引脚驱动为低电平,即使sysstat@11缺少。但该引脚仍配置为输入。

检查引脚配置(注意[used]字符串):

# gpioinfo 6 | grep "line  11"                                                  
        line  11:      unnamed   "SYS_STAT"  output  active-high [used]         

另一种方法是删除sysstat@11节点以仅执行引脚复用和引脚配置。不过,我不确定它是否非常聪明。

另一个选项,因为默认情况下将引脚配置为 GPIO,所以根本不更改 DT,而是使用 /etc/init.d 脚本,使用 command gpioset 6 11=0。它也可以,但不如 DT 选项快。

我想我会选择最后一个选项。

于 2021-03-25T13:42:49.113 回答
0

我最近需要这样做,但我发现“pin hog”是正确且更通用的解决方案。

这是一个很好的例子: 两个节点之间的设备树依赖关系

文档: https ://www.kernel.org/doc/Documentation/devicetree/bindings/gpio/gpio.txt

于 2020-09-18T15:54:14.300 回答