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 (name: ‘R1’)

  • /sys/class/leds/B1 (name: ‘B1’)

  1. 使用 “label”,沒有 “name” 欄位

對於帶有通道號的一個裝置名稱,請使用 “label”。 - /sys/class/leds/RGB:channelN (label: ‘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

disabled, load, run

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 通用驅動程式中的 “firmware” 部分

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

Selftest 始終使用來自平臺數據的電流。

每個通道都包含 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 之間。