lm3556的内核驱动

作者
  • Daniel Jeong

    联系方式: Daniel Jeong(daniel.jeong-at-ti.com, gshark.jeong-at-gmail.com)

描述

LM3556有3个功能,闪光灯,手电筒和指示灯。

闪光灯模式

在闪光灯模式下,LED电流源(LED)提供从 93.75 mA 到 1500 mA 的 16 个目标电流级别。闪光灯电流通过电流控制寄存器(0x09)进行调整。闪光灯模式通过使能寄存器(0x0A)激活,或者通过将STROBE引脚拉高激活。

LM3556 闪光灯可以通过 /sys/class/leds/flash/brightness 文件控制。

  • 如果启用了STROBE引脚,则以下示例仅控制亮度,ON / OFF将由STROBE引脚控制。

闪光灯示例

OFF

#echo 0 > /sys/class/leds/flash/brightness

93.75 mA

#echo 1 > /sys/class/leds/flash/brightness

...

1500 mA

#echo 16 > /sys/class/leds/flash/brightness

手电筒模式

在手电筒模式下,电流源(LED)通过电流控制寄存器(0x09)进行编程。手电筒模式通过使能寄存器(0x0A)或硬件TORCH输入激活。

LM3556 手电筒可以通过 /sys/class/leds/torch/brightness 文件控制。 * 如果启用了TORCH引脚,则以下示例仅控制亮度,ON / OFF将由TORCH引脚控制。

手电筒示例

OFF

#echo 0 > /sys/class/leds/torch/brightness

46.88 mA

#echo 1 > /sys/class/leds/torch/brightness

...

375 mA

#echo 8 > /sys/class/leds/torch/brightness

指示灯模式

指示灯模式可以通过 /sys/class/leds/indicator/pattern 文件设置,并且在 indicator_pattern 数组中预定义了 4 种模式。

根据 N-lank,脉冲时间和 N 周期值,将生成不同的模式。如果希望为自己的设备提供新的模式,请使用自己的值和 INDIC_PATTERN_SIZE 更改 indicator_pattern 数组。

有关 N-Blank,脉冲时间和 N 周期的更多详细信息,请参考数据表。

指示灯模式示例

pattern 0

#echo 0 > /sys/class/leds/indicator/pattern

...

pattern 3

#echo 3 > /sys/class/leds/indicator/pattern

指示灯亮度可以通过 sys/class/leds/indicator/brightness 文件控制。

示例

OFF

#echo 0 > /sys/class/leds/indicator/brightness

5.86 mA

#echo 1 > /sys/class/leds/indicator/brightness

...

46.875mA

#echo 8 > /sys/class/leds/indicator/brightness

注释

驱动程序期望使用 i2c_board_info 机制注册。要在特定适配器上的地址 0x63 处注册芯片,请根据 include/linux/platform_data/leds-lm3556.h 设置平台数据,设置 i2c 板信息

示例

static struct i2c_board_info board_i2c_ch4[] __initdata = {
        {
                 I2C_BOARD_INFO(LM3556_NAME, 0x63),
                 .platform_data = &lm3556_pdata,
         },
};

并在平台初始化函数中注册它

示例

board_register_i2c_bus(4, 400,
                        board_i2c_ch4, ARRAY_SIZE(board_i2c_ch4));