lp5523 的内核驱动程序

作者:Mathias Nyman,Yuri Zaporozhets,Samu Onkalo 联系人:Samu Onkalo (samu.p.onkalo-at-nokia.com)

描述

LP5523 可以驱动多达 9 个通道。LED 可以通过 LED 类控制接口直接控制。每个通道的名称可以在平台数据中配置 - 名称和标签。有三种方法可以生成通道名称。

  1. 在平台数据中定义“name”

要生成特定的通道名称,请使用 “name” 平台数据。

  • /sys/class/leds/R1 (名称: ‘R1’)

  • /sys/class/leds/B1 (名称: ‘B1’)

  1. 使用 “label” 而不使用 “name” 字段

对于具有通道编号的单个设备名称,请使用 “label”。 - /sys/class/leds/RGB:channelN (标签: ‘RGB’,N: 0 ~ 8)

  1. 默认

如果两个字段都为 NULL,则默认使用 “lp5523”。 - /sys/class/leds/lp5523:channelN (N: 0 ~ 8)

LP5523 具有内部程序存储器,用于运行各种 LED 模式。有两种方法可以运行 LED 模式。

  1. 传统接口 - enginex_mode,enginex_load 和 enginex_leds

引擎的控制接口

x 为 1 .. 3

enginex_mode

禁用、加载、运行

enginex_load

微代码加载

enginex_leds

LED 多路复用控制

cd /sys/class/leds/lp5523:channel2/device
echo "load" > engine3_mode
echo "9d80400004ff05ff437f0000" > engine3_load
echo "111111111" > engine3_leds
echo "run" > engine3_mode

停止引擎

echo "disabled" > engine3_mode
  1. 固件接口 - LP55xx 通用接口

有关详细信息,请参阅 LP5521/LP5523/LP55231/LP5562/LP8501 通用驱动程序 中的 “固件” 部分

LP5523 有三个主衰减器。如果通道映射到其中一个主衰减器,则其输出会根据主衰减器的值进行调暗。

例如

echo "123000123" > master_fader_leds

创建以下通道-衰减器映射

channel 0,6 to master_fader1
channel 1,7 to master_fader2
channel 2,8 to master_fader3

然后,要在通道 0,6 上获得原始输出的 25%

echo 64 > master_fader1

要在通道 1,7 上获得原始输出的 0%(即无输出)

echo 0 > master_fader2

要在通道 2,8 上获得原始输出的 100%(即不调暗)

echo 255 > master_fader3

清除所有主衰减器控制

echo "000000000" > master_fader_leds

自检始终使用来自平台数据的电流。

每个通道包含 LED 电流设置。 - /sys/class/leds/lp5523:channel2/led_current - RW - /sys/class/leds/lp5523:channel2/max_current - RO

格式:10x mA,即 10 表示 1.0 mA

示例平台数据

static struct lp55xx_led_config lp5523_led_config[] = {
        {
                .name           = "D1",
                .chan_nr        = 0,
                .led_current    = 50,
                .max_current    = 130,
        },
...
        {
                .chan_nr        = 8,
                .led_current    = 50,
                .max_current    = 130,
        }
};

static int lp5523_setup(void)
{
        /* Setup HW resources */
}

static void lp5523_release(void)
{
        /* Release HW resources */
}

static void lp5523_enable(bool state)
{
        /* Control chip enable signal */
}

static struct lp55xx_platform_data lp5523_platform_data = {
        .led_config     = lp5523_led_config,
        .num_channels   = ARRAY_SIZE(lp5523_led_config),
        .clock_mode     = LP55XX_CLOCK_EXT,
        .setup_resources   = lp5523_setup,
        .release_resources = lp5523_release,
        .enable            = lp5523_enable,
};
注意

chan_nr 的值可以在 0 到 8 之间。