lm3556 的内核驱动¶
德州仪器:1.5 A 同步升压 LED 闪光灯驱动器,带高侧电流源
- 作者
Daniel Jeong
联系方式:Daniel Jeong(daniel.jeong-at-ti.com, gshark.jeong-at-gmail.com)
描述¶
LM3556 有 3 个功能,闪光灯、手电筒和指示灯。
闪光灯模式¶
在闪光灯模式下,LED 电流源 (LED) 提供 16 个目标电流级别,从 93.75 mA 到 1500 mA。闪光灯电流通过电流控制寄存器 (0x09) 调整。闪光灯模式通过使能寄存器 (0x0A) 激活,或者通过将 STROBE 引脚拉高激活。
LM3556 闪光灯可以通过 /sys/class/leds/flash/brightness 文件控制
如果启用了 STROBE 引脚,则以下示例仅控制亮度,而 ON / OFF 将由 STROBE 引脚控制。
闪光灯示例
关闭
#echo 0 > /sys/class/leds/flash/brightness
93.75 mA
#echo 1 > /sys/class/leds/flash/brightness
...
1500 mA
#echo 16 > /sys/class/leds/flash/brightness
手电筒模式¶
在手电筒模式下,电流源 (LED) 通过电流控制寄存器 (0x09) 进行编程。手电筒模式通过使能寄存器 (0x0A) 或硬件 TORCH 输入激活。
LM3556 手电筒可以通过 /sys/class/leds/torch/brightness 文件控制。* 如果启用了 TORCH 引脚,则以下示例仅控制亮度,而 ON / OFF 将由 TORCH 引脚控制。
手电筒示例
关闭
#echo 0 > /sys/class/leds/torch/brightness
46.88 mA
#echo 1 > /sys/class/leds/torch/brightness
...
375 mA
#echo 8 > /sys/class/leds/torch/brightness
指示灯模式¶
指示灯模式可以通过 /sys/class/leds/indicator/pattern 文件设置,并且在 indicator_pattern 数组中预定义了 4 种模式。
根据 N-lank、脉冲时间和 N 周期值,将生成不同的模式。如果您想为自己的设备创建新模式,请使用您自己的值和 INDIC_PATTERN_SIZE 更改 indicator_pattern 数组。
有关 N-Blank、脉冲时间和 N 周期的更多详细信息,请参阅数据手册。
指示灯模式示例
模式 0
#echo 0 > /sys/class/leds/indicator/pattern
...
模式 3
#echo 3 > /sys/class/leds/indicator/pattern
指示灯亮度可以通过 sys/class/leds/indicator/brightness 文件控制。
示例
关闭
#echo 0 > /sys/class/leds/indicator/brightness
5.86 mA
#echo 1 > /sys/class/leds/indicator/brightness
...
46.875mA
#echo 8 > /sys/class/leds/indicator/brightness
注释¶
驱动程序期望使用 i2c_board_info 机制注册。 要在特定适配器上的地址 0x63 处注册芯片,请根据 include/linux/platform_data/leds-lm3556.h 设置平台数据,设置 i2c 板信息
示例
static struct i2c_board_info board_i2c_ch4[] __initdata = {
{
I2C_BOARD_INFO(LM3556_NAME, 0x63),
.platform_data = &lm3556_pdata,
},
};
并在平台初始化函数中注册它
示例
board_register_i2c_bus(4, 400,
board_i2c_ch4, ARRAY_SIZE(board_i2c_ch4));