xref: /OK3568_Linux_fs/kernel/Documentation/leds/leds-blinkm.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun==================
2*4882a593SmuzhiyunLeds BlinkM driver
3*4882a593Smuzhiyun==================
4*4882a593Smuzhiyun
5*4882a593SmuzhiyunThe leds-blinkm driver supports the devices of the BlinkM family.
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunThey are RGB-LED modules driven by a (AT)tiny microcontroller and
8*4882a593Smuzhiyuncommunicate through I2C. The default address of these modules is
9*4882a593Smuzhiyun0x09 but this can be changed through a command. By this you could
10*4882a593Smuzhiyundasy-chain up to 127 BlinkMs on an I2C bus.
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunThe device accepts RGB and HSB color values through separate commands.
13*4882a593SmuzhiyunAlso you can store blinking sequences as "scripts" in
14*4882a593Smuzhiyunthe controller and run them. Also fading is an option.
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunThe interface this driver provides is 2-fold:
17*4882a593Smuzhiyun
18*4882a593Smuzhiyuna) LED class interface for use with triggers
19*4882a593Smuzhiyun############################################
20*4882a593Smuzhiyun
21*4882a593SmuzhiyunThe registration follows the scheme::
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun  blinkm-<i2c-bus-nr>-<i2c-device-nr>-<color>
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun  $ ls -h /sys/class/leds/blinkm-6-*
26*4882a593Smuzhiyun  /sys/class/leds/blinkm-6-9-blue:
27*4882a593Smuzhiyun  brightness  device  max_brightness  power  subsystem  trigger  uevent
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun  /sys/class/leds/blinkm-6-9-green:
30*4882a593Smuzhiyun  brightness  device  max_brightness  power  subsystem  trigger  uevent
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun  /sys/class/leds/blinkm-6-9-red:
33*4882a593Smuzhiyun  brightness  device  max_brightness  power  subsystem  trigger  uevent
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun(same is /sys/bus/i2c/devices/6-0009/leds)
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunWe can control the colors separated into red, green and blue and
38*4882a593Smuzhiyunassign triggers on each color.
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunE.g.::
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun  $ cat blinkm-6-9-blue/brightness
43*4882a593Smuzhiyun  05
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun  $ echo 200 > blinkm-6-9-blue/brightness
46*4882a593Smuzhiyun  $
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  $ modprobe ledtrig-heartbeat
49*4882a593Smuzhiyun  $ echo heartbeat > blinkm-6-9-green/trigger
50*4882a593Smuzhiyun  $
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun
53*4882a593Smuzhiyunb) Sysfs group to control rgb, fade, hsb, scripts ...
54*4882a593Smuzhiyun#####################################################
55*4882a593Smuzhiyun
56*4882a593SmuzhiyunThis extended interface is available as folder blinkm
57*4882a593Smuzhiyunin the sysfs folder of the I2C device.
58*4882a593SmuzhiyunE.g. below /sys/bus/i2c/devices/6-0009/blinkm
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun  $ ls -h /sys/bus/i2c/devices/6-0009/blinkm/
61*4882a593Smuzhiyun  blue  green  red  test
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunCurrently supported is just setting red, green, blue
64*4882a593Smuzhiyunand a test sequence.
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunE.g.::
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun  $ cat *
69*4882a593Smuzhiyun  00
70*4882a593Smuzhiyun  00
71*4882a593Smuzhiyun  00
72*4882a593Smuzhiyun  #Write into test to start test sequence!#
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun  $ echo 1 > test
75*4882a593Smuzhiyun  $
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun  $ echo 255 > red
78*4882a593Smuzhiyun  $
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun
82*4882a593Smuzhiyunas of 6/2012
83*4882a593Smuzhiyun
84*4882a593Smuzhiyundl9pf <at> gmx <dot> de
85