lp5521 的内核驱动程序¶
National Semiconductor LP5521 LED 驱动芯片
作者:Mathias Nyman、Yuri Zaporozhets、Samu Onkalo
联系人:Samu Onkalo (samu.p.onkalo-at-nokia.com)
描述¶
LP5521 可以驱动多达 3 个通道。LED 可以通过 LED 类控制接口直接控制。通道具有通用名称:lp5521:channelx,其中 x 为 0 .. 2
所有三个通道也可以使用引擎微程序控制。有关指令的更多详细信息,请参阅公开的数据表。
LP5521 具有用于运行各种 LED 模式的内部程序存储器。有两种方法可以运行 LED 模式。
传统接口 - enginex_mode 和 enginex_load 用于引擎的控制接口
x 为 1 .. 3
- enginex_mode
禁用、加载、运行
- enginex_load
存储程序(仅在引擎加载模式下可见)
示例(开始闪烁通道 2 LED)
cd /sys/class/leds/lp5521:channel2/device echo "load" > engine3_mode echo "037f4d0003ff6000" > engine3_load echo "run" > engine3_mode要停止引擎
echo "disabled" > engine3_mode
固件接口 - LP55xx 通用接口
有关详细信息,请参阅 LP5521/LP5523/LP55231/LP5562/LP8501 通用驱动程序 中的“固件”部分
sysfs 包含一个自检条目。
该测试与芯片通信,并检查时钟模式是否自动设置为请求的模式。
每个通道都有自己的 LED 电流设置。
/sys/class/leds/lp5521:channel0/led_current - RW
/sys/class/leds/lp5521:channel0/max_current - RO
格式:10x mA,即 10 表示 1.0 mA
示例平台数据
static struct lp55xx_led_config lp5521_led_config[] = {
{
.name = "red",
.chan_nr = 0,
.led_current = 50,
.max_current = 130,
}, {
.name = "green",
.chan_nr = 1,
.led_current = 0,
.max_current = 130,
}, {
.name = "blue",
.chan_nr = 2,
.led_current = 0,
.max_current = 130,
}
};
static int lp5521_setup(void)
{
/* setup HW resources */
}
static void lp5521_release(void)
{
/* Release HW resources */
}
static void lp5521_enable(bool state)
{
/* Control of chip enable signal */
}
static struct lp55xx_platform_data lp5521_platform_data = {
.led_config = lp5521_led_config,
.num_channels = ARRAY_SIZE(lp5521_led_config),
.clock_mode = LP55XX_CLOCK_EXT,
.setup_resources = lp5521_setup,
.release_resources = lp5521_release,
.enable = lp5521_enable,
};
- 注意
chan_nr 可以取 0 到 2 之间的值。每个通道的名称都可以配置。如果未定义 name 字段,则默认名称将设置为 ‘xxxx:channelN’(XXXX : pdata->label 或 i2c 客户端名称,N : 通道号)
如果在平台数据中将电流设置为 0,则该通道将被禁用,并且在 sysfs 中不可见。