修改leds-gpio.c 让GPIO LED在kernel启动时就开始闪烁
内容提要:
客户需要在开机时就闪烁LED,并要求越快越好
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index 764c313..9276e99 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c @@ -194,6 +194,10 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev) fwnode_property_read_string(child, "linux,default-trigger", &led.default_trigger); + fwnode_property_read_u32(child, "blink-delay-on", + (unsigned int *)&led_dat->cdev.blink_delay_on); + fwnode_property_read_u32(child, "blink-delay-off", + (unsigned int *)&led_dat->cdev.blink_delay_off); if (!fwnode_property_read_string(child, "default-state", &state)) {
设备树配置参考
boot_led { label = "boot_led"; gpios = <&tlmm 36 0>; default-state = "off"; linux,default-trigger = "timer"; blink-delay-on = <0>; blink-delay-off = <500>; }; work_led { label = "work_led"; gpios = <&tlmm 34 0>; default-state = "off"; linux,default-trigger = "timer"; blink-delay-on = <2000>; blink-delay-off = <1000>; };
总结。leds-gpio.c提供了在sysfs操作 blink_delay_on 和 blink_delay_off 的节点,但是默认情况下这两个属性在驱动中都初始化为0,导致驱动加载后无法开始闪烁,必须等kernel起来后,通过应用程序进行设置后才开始闪烁。通过在驱动中增加这两个方法,可以对这两个属性进行初始化配置,让闪烁在驱动加载完成后就进行。
标签:
Android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」