aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilo(Woogyom) Kim <milo.kim@ti.com>2013-02-05 05:26:59 -0500
committerBryan Wu <cooloney@gmail.com>2013-02-06 18:59:30 -0500
commitdf4094d24e6328824a2dfe8e6f641bff9a484d68 (patch)
tree8063b08e4f88905f72de640ce70dd8148cf75a44
parent79bcc10b8cf3db99958743ecb174e7637e1dd932 (diff)
leds-lp5521/5523: use new lp55xx common header
The LP55xx common driver provides a new header, leds-lp55xx.h. This driver enables removing duplicate code for both drivers and making coherent driver structure. LP5521 and LP5523/55231 platform data were merged into one common file. Therefore, the LP5521/5523 platform code need to be fixed. This patch has been already acked. For ux500: https://lkml.org/lkml/2012/10/11/417 Acked-by: Linus Walleij <linus.walleij@linaro.org> For omap: https://lkml.org/lkml/2012/10/11/334 Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: Bryan Wu <cooloney@gmail.com>
-rw-r--r--arch/arm/mach-omap2/board-rx51-peripherals.c8
-rw-r--r--arch/arm/mach-ux500/board-mop500.c14
-rw-r--r--include/linux/leds-lp5521.h73
-rw-r--r--include/linux/leds-lp5523.h49
4 files changed, 11 insertions, 133 deletions
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index cf07e289b4ea..1a2c4db13e32 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -40,7 +40,7 @@
40#include <sound/tpa6130a2-plat.h> 40#include <sound/tpa6130a2-plat.h>
41#include <media/radio-si4713.h> 41#include <media/radio-si4713.h>
42#include <media/si4713.h> 42#include <media/si4713.h>
43#include <linux/leds-lp5523.h> 43#include <linux/platform_data/leds-lp55xx.h>
44 44
45#include <../drivers/staging/iio/light/tsl2563.h> 45#include <../drivers/staging/iio/light/tsl2563.h>
46#include <linux/lis3lv02d.h> 46#include <linux/lis3lv02d.h>
@@ -160,7 +160,7 @@ static struct tsl2563_platform_data rx51_tsl2563_platform_data = {
160#endif 160#endif
161 161
162#if defined(CONFIG_LEDS_LP5523) || defined(CONFIG_LEDS_LP5523_MODULE) 162#if defined(CONFIG_LEDS_LP5523) || defined(CONFIG_LEDS_LP5523_MODULE)
163static struct lp5523_led_config rx51_lp5523_led_config[] = { 163static struct lp55xx_led_config rx51_lp5523_led_config[] = {
164 { 164 {
165 .chan_nr = 0, 165 .chan_nr = 0,
166 .led_current = 50, 166 .led_current = 50,
@@ -207,10 +207,10 @@ static void rx51_lp5523_enable(bool state)
207 gpio_set_value(RX51_LP5523_CHIP_EN_GPIO, !!state); 207 gpio_set_value(RX51_LP5523_CHIP_EN_GPIO, !!state);
208} 208}
209 209
210static struct lp5523_platform_data rx51_lp5523_platform_data = { 210static struct lp55xx_platform_data rx51_lp5523_platform_data = {
211 .led_config = rx51_lp5523_led_config, 211 .led_config = rx51_lp5523_led_config,
212 .num_channels = ARRAY_SIZE(rx51_lp5523_led_config), 212 .num_channels = ARRAY_SIZE(rx51_lp5523_led_config),
213 .clock_mode = LP5523_CLOCK_AUTO, 213 .clock_mode = LP55XX_CLOCK_AUTO,
214 .setup_resources = rx51_lp5523_setup, 214 .setup_resources = rx51_lp5523_setup,
215 .release_resources = rx51_lp5523_release, 215 .release_resources = rx51_lp5523_release,
216 .enable = rx51_lp5523_enable, 216 .enable = rx51_lp5523_enable,
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index d453522edb0d..b04684e16e24 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -28,7 +28,7 @@
28#include <linux/mfd/tps6105x.h> 28#include <linux/mfd/tps6105x.h>
29#include <linux/mfd/abx500/ab8500-gpio.h> 29#include <linux/mfd/abx500/ab8500-gpio.h>
30#include <linux/mfd/abx500/ab8500-codec.h> 30#include <linux/mfd/abx500/ab8500-codec.h>
31#include <linux/leds-lp5521.h> 31#include <linux/platform_data/leds-lp55xx.h>
32#include <linux/input.h> 32#include <linux/input.h>
33#include <linux/smsc911x.h> 33#include <linux/smsc911x.h>
34#include <linux/gpio_keys.h> 34#include <linux/gpio_keys.h>
@@ -320,7 +320,7 @@ static struct tc3589x_platform_data mop500_tc35892_data = {
320 .irq_base = MOP500_EGPIO_IRQ_BASE, 320 .irq_base = MOP500_EGPIO_IRQ_BASE,
321}; 321};
322 322
323static struct lp5521_led_config lp5521_pri_led[] = { 323static struct lp55xx_led_config lp5521_pri_led[] = {
324 [0] = { 324 [0] = {
325 .chan_nr = 0, 325 .chan_nr = 0,
326 .led_current = 0x2f, 326 .led_current = 0x2f,
@@ -338,14 +338,14 @@ static struct lp5521_led_config lp5521_pri_led[] = {
338 }, 338 },
339}; 339};
340 340
341static struct lp5521_platform_data __initdata lp5521_pri_data = { 341static struct lp55xx_platform_data __initdata lp5521_pri_data = {
342 .label = "lp5521_pri", 342 .label = "lp5521_pri",
343 .led_config = &lp5521_pri_led[0], 343 .led_config = &lp5521_pri_led[0],
344 .num_channels = 3, 344 .num_channels = 3,
345 .clock_mode = LP5521_CLOCK_EXT, 345 .clock_mode = LP55XX_CLOCK_EXT,
346}; 346};
347 347
348static struct lp5521_led_config lp5521_sec_led[] = { 348static struct lp55xx_led_config lp5521_sec_led[] = {
349 [0] = { 349 [0] = {
350 .chan_nr = 0, 350 .chan_nr = 0,
351 .led_current = 0x2f, 351 .led_current = 0x2f,
@@ -363,11 +363,11 @@ static struct lp5521_led_config lp5521_sec_led[] = {
363 }, 363 },
364}; 364};
365 365
366static struct lp5521_platform_data __initdata lp5521_sec_data = { 366static struct lp55xx_platform_data __initdata lp5521_sec_data = {
367 .label = "lp5521_sec", 367 .label = "lp5521_sec",
368 .led_config = &lp5521_sec_led[0], 368 .led_config = &lp5521_sec_led[0],
369 .num_channels = 3, 369 .num_channels = 3,
370 .clock_mode = LP5521_CLOCK_EXT, 370 .clock_mode = LP55XX_CLOCK_EXT,
371}; 371};
372 372
373static struct i2c_board_info __initdata mop500_i2c0_devices[] = { 373static struct i2c_board_info __initdata mop500_i2c0_devices[] = {
diff --git a/include/linux/leds-lp5521.h b/include/linux/leds-lp5521.h
deleted file mode 100644
index 3f071ec019b2..000000000000
--- a/include/linux/leds-lp5521.h
+++ /dev/null
@@ -1,73 +0,0 @@
1/*
2 * LP5521 LED chip driver.
3 *
4 * Copyright (C) 2010 Nokia Corporation
5 *
6 * Contact: Samu Onkalo <samu.p.onkalo@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 */
22
23#ifndef __LINUX_LP5521_H
24#define __LINUX_LP5521_H
25
26/* See Documentation/leds/leds-lp5521.txt */
27
28struct lp5521_led_config {
29 char *name;
30 u8 chan_nr;
31 u8 led_current; /* mA x10, 0 if led is not connected */
32 u8 max_current;
33};
34
35struct lp5521_led_pattern {
36 u8 *r;
37 u8 *g;
38 u8 *b;
39 u8 size_r;
40 u8 size_g;
41 u8 size_b;
42};
43
44#define LP5521_CLOCK_AUTO 0
45#define LP5521_CLOCK_INT 1
46#define LP5521_CLOCK_EXT 2
47
48/* Bits in CONFIG register */
49#define LP5521_PWM_HF 0x40 /* PWM: 0 = 256Hz, 1 = 558Hz */
50#define LP5521_PWRSAVE_EN 0x20 /* 1 = Power save mode */
51#define LP5521_CP_MODE_OFF 0 /* Charge pump (CP) off */
52#define LP5521_CP_MODE_BYPASS 8 /* CP forced to bypass mode */
53#define LP5521_CP_MODE_1X5 0x10 /* CP forced to 1.5x mode */
54#define LP5521_CP_MODE_AUTO 0x18 /* Automatic mode selection */
55#define LP5521_R_TO_BATT 4 /* R out: 0 = CP, 1 = Vbat */
56#define LP5521_CLK_SRC_EXT 0 /* Ext-clk source (CLK_32K) */
57#define LP5521_CLK_INT 1 /* Internal clock */
58#define LP5521_CLK_AUTO 2 /* Automatic clock selection */
59
60struct lp5521_platform_data {
61 struct lp5521_led_config *led_config;
62 u8 num_channels;
63 u8 clock_mode;
64 int (*setup_resources)(void);
65 void (*release_resources)(void);
66 void (*enable)(bool state);
67 const char *label;
68 u8 update_config;
69 struct lp5521_led_pattern *patterns;
70 int num_patterns;
71};
72
73#endif /* __LINUX_LP5521_H */
diff --git a/include/linux/leds-lp5523.h b/include/linux/leds-lp5523.h
deleted file mode 100644
index 727877fb406d..000000000000
--- a/include/linux/leds-lp5523.h
+++ /dev/null
@@ -1,49 +0,0 @@
1/*
2 * LP5523 LED Driver
3 *
4 * Copyright (C) 2010 Nokia Corporation
5 *
6 * Contact: Samu Onkalo <samu.p.onkalo@nokia.com>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * version 2 as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20 * 02110-1301 USA
21 */
22
23#ifndef __LINUX_LP5523_H
24#define __LINUX_LP5523_H
25
26/* See Documentation/leds/leds-lp5523.txt */
27
28struct lp5523_led_config {
29 const char *name;
30 u8 chan_nr;
31 u8 led_current; /* mA x10, 0 if led is not connected */
32 u8 max_current;
33};
34
35#define LP5523_CLOCK_AUTO 0
36#define LP5523_CLOCK_INT 1
37#define LP5523_CLOCK_EXT 2
38
39struct lp5523_platform_data {
40 struct lp5523_led_config *led_config;
41 u8 num_channels;
42 u8 clock_mode;
43 int (*setup_resources)(void);
44 void (*release_resources)(void);
45 void (*enable)(bool state);
46 const char *label;
47};
48
49#endif /* __LINUX_LP5523_H */