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