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 - 讀寫

  • /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 中不可見。