Linux kernel 在内核和用户空间ARM9嵌入式Linux AM1808中处理GPIO

Linux kernel 在内核和用户空间ARM9嵌入式Linux AM1808中处理GPIO,linux-kernel,embedded-linux,Linux Kernel,Embedded Linux,我必须处理(即打开和关闭)我的LCD电源引脚内核和用户空间 我们已经在Mux.h、da850.c和board-da850-evm.c中正确配置了gpio引脚 问题是,当我们在内核中配置这个pin时,/sys/class/gpio无法访问这个pin 我们在board-da850-evm.c中对此进行了如下配置: ret = gpio_request(DA850_LCD_GP3, "LCD GP3"); if (ret) pr_warning("Cannot open GPIO %d\n", D

我必须处理(即打开和关闭)我的LCD电源引脚内核和用户空间

我们已经在Mux.h、da850.c和board-da850-evm.c中正确配置了gpio引脚

问题是,当我们在内核中配置这个pin时,/sys/class/gpio无法访问这个pin

我们在board-da850-evm.c中对此进行了如下配置:

ret = gpio_request(DA850_LCD_GP3, "LCD GP3");

if (ret)

pr_warning("Cannot open GPIO %d\n", DA850_LCD_GP3);

gpio_direction_output(DA850_LCD_GP3, 1);

gpio_set_value(DA850_LCD_GP3,1);
如果我们对该节进行注释并从用户空间导出,则我们成功地使用了该pin表单用户空间

可以从内核和用户空间处理gpio吗?
还是我们需要写gpio驱动器

在内核中,为什么不在设备树文件中将其描述为
resetgpios
属性?有关详细信息,请参见
文档/devicetree/bindings/display/panel/panel dsi cm.txt
。在用户空间中,请参阅
/sys/class/gpio/*
文件。您可以使用
export
文件将您的gpio添加到那里。一旦驱动程序获得gpio,那么该pin将不再通过sysfs可用。它是一种资源(就像内存);它不能被分配多次。只有未使用的管脚可通过/sys/class/gpio使用。我猜,但是应该已经有了一个用于打开/关闭LCD面板的API。也就是说,你不是第一个想要这个功能的人。@SamProtsenko——你提到的doc文件只在内核版本4.4和更高版本中可用。你在建议重置的定义,但OP想要控制电源。你的两个建议不能同时使用。@sawdust你是对的。我想,
enablegpios
属性会更合适,但同样,这取决于具体使用哪个面板OP。例如,请参见
Documentation/devicetree/bindings/display/panel/simple panel.txt
。但它只控制面板的启用/禁用。背光可能也需要禁用(相同的方式)。要处理电源,我想应该切换相应的调节器(
power-supply
LCD DT绑定中的属性)。对于用户空间控制——在我看来,驱动程序应该为此显式地公开一些sysfs节点,但我怀疑它在默认情况下是否会这样做。如果LCD驱动程序不支持
enable gpios
属性,那么应该这样添加它:
enable\u gpio=dev\u gpiod\u get(&dev,“enable”,gpiod\u OUT\u LOW)。例如,查看如何在
drivers/video/fbdev/omap2/displays new/panel-*.c
中实现它。但若你们需要完全禁用面板,那个么一定要禁用背光,因为它是一个主要的耗电设备,也会使你们的面板发光。