aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilippe Langlais <philippe.langlais@linaro.org>2011-01-12 05:26:20 -0500
committerLinus Walleij <linus.walleij@linaro.org>2011-03-14 09:05:11 -0400
commitdd7b2a055622e23c9354bd9b081973c9a15ac639 (patch)
tree593e25e50d5dfc934806b15e5adc2e9ab9e6f42c
parenta71b819b6edfb31d6866d084167583bd92f4ad29 (diff)
mach-ux500: platform data for LP5521 leds driver
Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--arch/arm/mach-ux500/board-mop500.c68
1 files changed, 67 insertions, 1 deletions
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index dce68788be39..daebcb4ba709 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -20,6 +20,7 @@
20#include <linux/spi/spi.h> 20#include <linux/spi/spi.h>
21#include <linux/mfd/ab8500.h> 21#include <linux/mfd/ab8500.h>
22#include <linux/mfd/tc3589x.h> 22#include <linux/mfd/tc3589x.h>
23#include <linux/leds-lp5521.h>
23#include <linux/input.h> 24#include <linux/input.h>
24#include <linux/gpio_keys.h> 25#include <linux/gpio_keys.h>
25 26
@@ -138,14 +139,77 @@ static struct tc3589x_platform_data mop500_tc35892_data = {
138 .irq_base = MOP500_EGPIO_IRQ_BASE, 139 .irq_base = MOP500_EGPIO_IRQ_BASE,
139}; 140};
140 141
142static struct lp5521_led_config lp5521_pri_led[] = {
143 [0] = {
144 .chan_nr = 0,
145 .led_current = 0x2f,
146 .max_current = 0x5f,
147 },
148 [1] = {
149 .chan_nr = 1,
150 .led_current = 0x2f,
151 .max_current = 0x5f,
152 },
153 [2] = {
154 .chan_nr = 2,
155 .led_current = 0x2f,
156 .max_current = 0x5f,
157 },
158};
159
160static struct lp5521_platform_data __initdata lp5521_pri_data = {
161 .label = "lp5521_pri",
162 .led_config = &lp5521_pri_led[0],
163 .num_channels = 3,
164 .clock_mode = LP5521_CLOCK_EXT,
165};
166
167static struct lp5521_led_config lp5521_sec_led[] = {
168 [0] = {
169 .chan_nr = 0,
170 .led_current = 0x2f,
171 .max_current = 0x5f,
172 },
173 [1] = {
174 .chan_nr = 1,
175 .led_current = 0x2f,
176 .max_current = 0x5f,
177 },
178 [2] = {
179 .chan_nr = 2,
180 .led_current = 0x2f,
181 .max_current = 0x5f,
182 },
183};
184
185static struct lp5521_platform_data __initdata lp5521_sec_data = {
186 .label = "lp5521_sec",
187 .led_config = &lp5521_sec_led[0],
188 .num_channels = 3,
189 .clock_mode = LP5521_CLOCK_EXT,
190};
191
141static struct i2c_board_info mop500_i2c0_devices[] = { 192static struct i2c_board_info mop500_i2c0_devices[] = {
142 { 193 {
143 I2C_BOARD_INFO("tc3589x", 0x42), 194 I2C_BOARD_INFO("tc3589x", 0x42),
144 .irq = NOMADIK_GPIO_TO_IRQ(217), 195 .irq = NOMADIK_GPIO_TO_IRQ(217),
145 .platform_data = &mop500_tc35892_data, 196 .platform_data = &mop500_tc35892_data,
146 }, 197 },
147}; 198};
148 199
200static struct i2c_board_info __initdata mop500_i2c2_devices[] = {
201 {
202 /* lp5521 LED driver, 1st device */
203 I2C_BOARD_INFO("lp5521", 0x33),
204 .platform_data = &lp5521_pri_data,
205 },
206 {
207 /* lp5521 LED driver, 2st device */
208 I2C_BOARD_INFO("lp5521", 0x34),
209 .platform_data = &lp5521_sec_data,
210 },
211};
212
149#define U8500_I2C_CONTROLLER(id, _slsu, _tft, _rft, clk, _sm) \ 213#define U8500_I2C_CONTROLLER(id, _slsu, _tft, _rft, clk, _sm) \
150static struct nmk_i2c_controller u8500_i2c##id##_data = { \ 214static struct nmk_i2c_controller u8500_i2c##id##_data = { \
151 /* \ 215 /* \
@@ -266,6 +330,8 @@ static void __init u8500_init_machine(void)
266 330
267 i2c_register_board_info(0, mop500_i2c0_devices, 331 i2c_register_board_info(0, mop500_i2c0_devices,
268 ARRAY_SIZE(mop500_i2c0_devices)); 332 ARRAY_SIZE(mop500_i2c0_devices));
333 i2c_register_board_info(2, mop500_i2c2_devices,
334 ARRAY_SIZE(mop500_i2c2_devices));
269} 335}
270 336
271MACHINE_START(U8500, "ST-Ericsson MOP500 platform") 337MACHINE_START(U8500, "ST-Ericsson MOP500 platform")