lp5521 的内核驱动¶
国家半导体 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 - 读写
/sys/class/leds/lp5521:channel0/max_current - 只读
格式: 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。每个通道的名称都可以配置。如果未定义名称字段,则默认名称将设置为“xxxx:channelN”(XXXX:pdata->label 或 i2c 客户端名称,N:通道号)
如果平台数据中电流设置为 0,则该通道将被禁用,并且在 sysfs 中不可见。