lp5521 的内核驱动程序

作者: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 模式。

  1. 传统接口 - 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
  1. 固件接口 - 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 中不可见。