led作为嵌入式设备中常见的器件,特别是在手机上,一般手机现在都会配置1-2led灯,用于camera补光和手电筒照明功能。
led驱动是字符设备,数据流和操作比较简单。
闪光灯的几种模式
torch,闪烁,瞬间亮,高电流
flash,闪光,持续亮,低电流
switch,控制led亮灭。
手机的fled lash驱动有所谓主闪预闪电流说法,涨个用的就是torch模式吗,touch模式高电流,短时间亮度大,适合需要需要补光的场景
kernel下闪光灯节点是/sys/class/leds/
开touch
echo 50 > /sys/class/leds/led_touch1/brightness
关touch
echo 0 > /sys/class/leds/led_touch1/brightness
flash节点同理
linux flash框架图,kernel版本4.19
具体的驱动基本上是对probe、show、store等ops方法的实现,同时控制flash的寄存器状态。一般来说flash有几种寄存器,电流大小寄存器,电流档位寄存器、中断控制寄存器(控制亮灭)等。
这个后面有空再结合具体驱动进行分析
标签:linux,led,flash,sys,寄存器,驱动,电流 From: https://www.cnblogs.com/waterzhm/p/17020475.html