Blame view

kernel/linux-imx6_3.14.28/Documentation/leds/leds-lp5523.txt 2.84 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  Kernel driver for lp5523
  ========================
  
  * National Semiconductor LP5523 led driver chip
  * Datasheet: http://www.national.com/pf/LP/LP5523.html
  
  Authors: Mathias Nyman, Yuri Zaporozhets, Samu Onkalo
  Contact: Samu Onkalo (samu.p.onkalo-at-nokia.com)
  
  Description
  -----------
  LP5523 can drive up to 9 channels. Leds can be controlled directly via
  the led class control interface.
  The name of each channel is configurable in the platform data - name and label.
  There are three options to make the channel name.
  
  a) Define the 'name' in the platform data
  To make specific channel name, then use 'name' platform data.
  /sys/class/leds/R1               (name: 'R1')
  /sys/class/leds/B1               (name: 'B1')
  
  b) Use the 'label' with no 'name' field
  For one device name with channel number, then use 'label'.
  /sys/class/leds/RGB:channelN     (label: 'RGB', N: 0 ~ 8)
  
  c) Default
  If both fields are NULL, 'lp5523' is used by default.
  /sys/class/leds/lp5523:channelN  (N: 0 ~ 8)
  
  LP5523 has the internal program memory for running various LED patterns.
  There are two ways to run LED patterns.
  
  1) Legacy interface - enginex_mode, enginex_load and enginex_leds
    Control interface for the engines:
    x is 1 .. 3
    enginex_mode : disabled, load, run
    enginex_load : microcode load (visible only in load mode)
    enginex_leds : led mux control (visible only in load mode)
  
    cd /sys/class/leds/lp5523:channel2/device
    echo "load" > engine3_mode
    echo "9d80400004ff05ff437f0000" > engine3_load
    echo "111111111" > engine3_leds
    echo "run" > engine3_mode
  
    To stop the engine:
    echo "disabled" > engine3_mode
  
  2) Firmware interface - LP55xx common interface
    For the details, please refer to 'firmware' section in leds-lp55xx.txt
  
  Selftest uses always the current from the platform data.
  
  Each channel contains led current settings.
  /sys/class/leds/lp5523:channel2/led_current - RW
  /sys/class/leds/lp5523:channel2/max_current - RO
  Format: 10x mA i.e 10 means 1.0 mA
  
  Example platform data:
  
  Note - chan_nr can have values between 0 and 8.
  
  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,
  };