This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x 设备树 GPIO为高电平



我这边有一个引脚(gpio3_17),需要一直拉为高电平。我在u-boot代码中,已经将该引脚设置为高电平了。但是加载设备树的时候,该引脚会被改变。但是,在设备树文件中,我是没有使用到该引脚的。

我想问下,要如何修改设备树文件,使该引脚输出高电平?我这边参考了几个设备树文件,都是只有复用模式的,没有找到如何设置为输出高电平的。请高手指点一下。

  • 我进入根文件系统之后,在数据手册Control Module这一章中,把该引脚的对应的寄存器打印打来,这部分内容并没有发生改变。
    然后我把GPIO3的GPIO_OE和GPIO_DATAOUT打印出来,发现该引脚已经变为输出模式,输出寄存器的值也变为0。 想问下,在加载设备树时,内核会把整个GPIO3的寄存器做一次复位?
  • 设备树里没法使GPIO引脚输出高电平,只能设定GPIO属性是高电平有效还是低电平有效。
  • 这个供电引脚,需要一直保持为高电平。但是在加载设备树跑linux内核时,该引脚总是被设置为输入。有没有什么办法可以让这个引脚输出保持不变或者直接在初始化输出高电平?
  • 内核代码在启动的时候会把GPIO3的寄存器复位一把,导致在u-boot设置的值被清除掉。在内核代码,把gpio3的flag处理一下就好了。谢谢你的回答
    struct omap_hwmod am33xx_gpio3_hwmod = {
    .name = "gpio4",
    .class = &am33xx_gpio_hwmod_class,
    .clkdm_name = "l4ls_clkdm",
    .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
    .main_clk = "l4ls_gclk",
    .prcm = {
    .omap4 = {
    .modulemode = MODULEMODE_SWCTRL,
    },
    },
    .opt_clks = gpio3_opt_clks,
    .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
    .dev_attr = &gpio_dev_attr,
    };