xref: /openbmc/linux/Documentation/leds/leds-lp3944.rst (revision 0898782247ae533d1f4e47a06bc5d4870931b284)
1*8dab9197SMauro Carvalho Chehab====================
2*8dab9197SMauro Carvalho ChehabKernel driver lp3944
3*8dab9197SMauro Carvalho Chehab====================
4*8dab9197SMauro Carvalho Chehab
5*8dab9197SMauro Carvalho Chehab  * National Semiconductor LP3944 Fun-light Chip
6*8dab9197SMauro Carvalho Chehab
7*8dab9197SMauro Carvalho Chehab    Prefix: 'lp3944'
8*8dab9197SMauro Carvalho Chehab
9*8dab9197SMauro Carvalho Chehab    Addresses scanned: None (see the Notes section below)
10*8dab9197SMauro Carvalho Chehab
11*8dab9197SMauro Carvalho Chehab    Datasheet:
12*8dab9197SMauro Carvalho Chehab
13*8dab9197SMauro Carvalho Chehab	Publicly available at the National Semiconductor website
14*8dab9197SMauro Carvalho Chehab	http://www.national.com/pf/LP/LP3944.html
15*8dab9197SMauro Carvalho Chehab
16*8dab9197SMauro Carvalho ChehabAuthors:
17*8dab9197SMauro Carvalho Chehab	Antonio Ospite <ospite@studenti.unina.it>
18*8dab9197SMauro Carvalho Chehab
19*8dab9197SMauro Carvalho Chehab
20*8dab9197SMauro Carvalho ChehabDescription
21*8dab9197SMauro Carvalho Chehab-----------
22*8dab9197SMauro Carvalho ChehabThe LP3944 is a helper chip that can drive up to 8 leds, with two programmable
23*8dab9197SMauro Carvalho ChehabDIM modes; it could even be used as a gpio expander but this driver assumes it
24*8dab9197SMauro Carvalho Chehabis used as a led controller.
25*8dab9197SMauro Carvalho Chehab
26*8dab9197SMauro Carvalho ChehabThe DIM modes are used to set _blink_ patterns for leds, the pattern is
27*8dab9197SMauro Carvalho Chehabspecified supplying two parameters:
28*8dab9197SMauro Carvalho Chehab
29*8dab9197SMauro Carvalho Chehab  - period:
30*8dab9197SMauro Carvalho Chehab	from 0s to 1.6s
31*8dab9197SMauro Carvalho Chehab  - duty cycle:
32*8dab9197SMauro Carvalho Chehab	percentage of the period the led is on, from 0 to 100
33*8dab9197SMauro Carvalho Chehab
34*8dab9197SMauro Carvalho ChehabSetting a led in DIM0 or DIM1 mode makes it blink according to the pattern.
35*8dab9197SMauro Carvalho ChehabSee the datasheet for details.
36*8dab9197SMauro Carvalho Chehab
37*8dab9197SMauro Carvalho ChehabLP3944 can be found on Motorola A910 smartphone, where it drives the rgb
38*8dab9197SMauro Carvalho Chehableds, the camera flash light and the lcds power.
39*8dab9197SMauro Carvalho Chehab
40*8dab9197SMauro Carvalho Chehab
41*8dab9197SMauro Carvalho ChehabNotes
42*8dab9197SMauro Carvalho Chehab-----
43*8dab9197SMauro Carvalho ChehabThe chip is used mainly in embedded contexts, so this driver expects it is
44*8dab9197SMauro Carvalho Chehabregistered using the i2c_board_info mechanism.
45*8dab9197SMauro Carvalho Chehab
46*8dab9197SMauro Carvalho ChehabTo register the chip at address 0x60 on adapter 0, set the platform data
47*8dab9197SMauro Carvalho Chehabaccording to include/linux/leds-lp3944.h, set the i2c board info::
48*8dab9197SMauro Carvalho Chehab
49*8dab9197SMauro Carvalho Chehab	static struct i2c_board_info a910_i2c_board_info[] __initdata = {
50*8dab9197SMauro Carvalho Chehab		{
51*8dab9197SMauro Carvalho Chehab			I2C_BOARD_INFO("lp3944", 0x60),
52*8dab9197SMauro Carvalho Chehab			.platform_data = &a910_lp3944_leds,
53*8dab9197SMauro Carvalho Chehab		},
54*8dab9197SMauro Carvalho Chehab	};
55*8dab9197SMauro Carvalho Chehab
56*8dab9197SMauro Carvalho Chehaband register it in the platform init function::
57*8dab9197SMauro Carvalho Chehab
58*8dab9197SMauro Carvalho Chehab	i2c_register_board_info(0, a910_i2c_board_info,
59*8dab9197SMauro Carvalho Chehab			ARRAY_SIZE(a910_i2c_board_info));
60