背景

  • Platform: IMX6
  • OS: Linux
  • Kernel: v4.1.35

问题

用GPIO去控制一个外扩板的复位引脚,开始直接在用户态使用export去控制GPIO,但Kernel起来时的默认状态没法控制,Uboot是高电平,但到Kernel起来变成低电平,需修改进Kernel的默认电平

分析与解决

改用leds-gpio的方式去控制。
dts类似如下:

leds {
    compatible = "gpio-leds";
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_gpio_leds>;

    reset-ctl {
        gpios = <&gpio4 30 0>;
        label = "reset_ctl";
        default-state = "on";
    };
}
...
pinctrl_gpio_leds: gpio_ledsgrp {
    fsl,pins = <
        MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30	0x80000000 /* reset-ctl */
    >;
};

注意:

  1. gpios = <&gpio4 30 0>;
    第3个参数为有效电平, 0即为低电平有效
  2. default-state = "on"
    "on""off"对应上面的有效电平