* [PATCH 0/7] updates to few nokia drivers
@ 2008-10-14 21:39 Felipe Balbi
2008-10-14 21:39 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Felipe Balbi
0 siblings, 1 reply; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi
From: Felipe Balbi <felipe.balbi@nokia.com>
Preparing few drivers for integration upstream.
At least lp5521 should be in good shape for going
upstream. lm8323 and tsc2005 might need some more
work.
Felipe Balbi (7):
input: lm8323: get rid of global pdata pointer
input: tsc2005: move to gpiolib
i2c: lp5521: remove dead code
i2c: lp5521: cosmetic fixes
i2c: lp5521: simplify mode setting
i2c: lp5521: move to LED framework
leds: lp5521: move to drivers/leds
drivers/i2c/chips/Kconfig | 7 -
drivers/i2c/chips/Makefile | 1 -
drivers/input/keyboard/lm8323.c | 4 +-
drivers/input/touchscreen/tsc2005.c | 15 +-
drivers/leds/Kconfig | 10 +
drivers/leds/Makefile | 1 +
drivers/{i2c/chips/lp5521.c => leds/leds-lp5521.c} | 379 +++++++++++++-------
7 files changed, 271 insertions(+), 146 deletions(-)
rename drivers/{i2c/chips/lp5521.c => leds/leds-lp5521.c} (62%)
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/7] input: lm8323: get rid of global pdata pointer
2008-10-14 21:39 [PATCH 0/7] updates to few nokia drivers Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
2008-10-14 21:39 ` [PATCH 2/7] input: tsc2005: move to gpiolib Felipe Balbi
2008-10-16 4:10 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Dmitry Torokhov
0 siblings, 2 replies; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, Dmitry Torokhov
From: Felipe Balbi <felipe.balbi@nokia.com>
pdata is only used during probe to initialize a few fields
from lm8323 device structure. Moving pdata pointer to probe
won't harm anybody.
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/input/keyboard/lm8323.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)
diff --git a/drivers/input/keyboard/lm8323.c b/drivers/input/keyboard/lm8323.c
index 72bb587..b6f464c 100644
--- a/drivers/input/keyboard/lm8323.c
+++ b/drivers/input/keyboard/lm8323.c
@@ -184,9 +184,6 @@ static struct lm8323_chip *pwm_to_lm8323(struct lm8323_pwm *pwm)
}
}
-static struct lm8323_platform_data *lm8323_pdata;
-
-
#define LM8323_MAX_DATA 8
/*
@@ -673,6 +670,7 @@ static DEVICE_ATTR(disable_kp, 0644, lm8323_show_disable, lm8323_set_disable);
static int lm8323_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
+ struct lm8323_platform_data *lm8323_pdata;
struct input_dev *idev;
struct lm8323_chip *lm;
int i, err = 0;
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/7] input: tsc2005: move to gpiolib
2008-10-14 21:39 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
2008-10-14 21:39 ` [PATCH 3/7] i2c: lp5521: remove dead code Felipe Balbi
2008-10-14 23:20 ` [PATCH 2/7] input: tsc2005: move to gpiolib David Brownell
2008-10-16 4:10 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Dmitry Torokhov
1 sibling, 2 replies; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, David Brownell, Dmitry Torokhov
From: Felipe Balbi <felipe.balbi@nokia.com>
Get rid of omap-specific gpio calls and switch over
to gpiolib.
Cc: David Brownell <david-b@pacbell.net>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/input/touchscreen/tsc2005.c | 15 ++++-----------
1 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/input/touchscreen/tsc2005.c b/drivers/input/touchscreen/tsc2005.c
index 7fb107e..c9f8f5c 100644
--- a/drivers/input/touchscreen/tsc2005.c
+++ b/drivers/input/touchscreen/tsc2005.c
@@ -534,16 +534,14 @@ static int __devinit tsc2005_ts_init(struct tsc2005 *ts,
ts->dav_gpio = dav_gpio;
dev_dbg(&ts->spi->dev, "TSC2005: DAV GPIO = %d\n", dav_gpio);
-#ifdef CONFIG_ARCH_OMAP
- r = omap_request_gpio(dav_gpio);
+ r = gpio_request(dav_gpio, "dav_gpio");
if (r < 0) {
dev_err(&ts->spi->dev, "unable to get DAV GPIO");
goto err1;
}
- omap_set_gpio_direction(dav_gpio, 1);
+ gpio_direction_input(dav_gpio);
ts->irq = OMAP_GPIO_IRQ(dav_gpio);
dev_dbg(&ts->spi->dev, "TSC2005: DAV IRQ = %d\n", ts->irq);
-#endif
init_timer(&ts->penup_timer);
setup_timer(&ts->penup_timer, tsc2005_ts_penup_timer_handler,
(unsigned long)ts);
@@ -612,9 +610,7 @@ err3:
tsc2005_stop_scan(ts);
input_free_device(idev);
err2:
-#ifdef CONFIG_ARCH_OMAP
- omap_free_gpio(dav_gpio);
-#endif
+ gpio_free(dav_gpio);
err1:
return r;
}
@@ -671,10 +667,7 @@ static int __devexit tsc2005_remove(struct spi_device *spi)
free_irq(ts->irq, ts);
input_unregister_device(ts->idev);
-
-#ifdef CONFIG_ARCH_OMAP
- omap_free_gpio(ts->dav_gpio);
-#endif
+ gpio_free(ts->dav_gpio);
kfree(ts);
return 0;
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/7] i2c: lp5521: remove dead code
2008-10-14 21:39 ` [PATCH 2/7] input: tsc2005: move to gpiolib Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
2008-10-14 21:39 ` [PATCH 4/7] i2c: lp5521: cosmetic fixes Felipe Balbi
2008-10-14 23:20 ` [PATCH 2/7] input: tsc2005: move to gpiolib David Brownell
1 sibling, 1 reply; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, Richard Purdie
From: Felipe Balbi <felipe.balbi@nokia.com>
That LED_CONNECTED_WRONG was never defined so removing.
If someone needs those hooks, add back via proper
platform_data instead of nasty ifdefery.
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/i2c/chips/lp5521.c | 22 ----------------------
1 files changed, 0 insertions(+), 22 deletions(-)
diff --git a/drivers/i2c/chips/lp5521.c b/drivers/i2c/chips/lp5521.c
index c0862d9..7fb8091 100644
--- a/drivers/i2c/chips/lp5521.c
+++ b/drivers/i2c/chips/lp5521.c
@@ -28,13 +28,8 @@
#define LP5521_DRIVER_NAME "lp5521"
-#ifdef LED_CONNECTED_WRONG
-#define LP5521_REG_R_PWM 0x04
-#define LP5521_REG_B_PWM 0x02
-#else
#define LP5521_REG_R_PWM 0x02
#define LP5521_REG_B_PWM 0x04
-#endif
#define LP5521_REG_ENABLE 0x00
#define LP5521_REG_OP_MODE 0x01
#define LP5521_REG_G_PWM 0x03
@@ -200,22 +195,12 @@ static ssize_t show_active_channels(struct device *dev,
char channels[4];
int pos = 0;
-#ifdef LED_CONNECTED_WRONG
- if (chip->blue)
- pos += sprintf(channels + pos, "r");
- if (chip->green)
- pos += sprintf(channels + pos, "g");
- if (chip->red)
- pos += sprintf(channels + pos, "b");
-
-#else
if (chip->red)
pos += sprintf(channels + pos, "r");
if (chip->green)
pos += sprintf(channels + pos, "g");
if (chip->blue)
pos += sprintf(channels + pos, "b");
-#endif
channels[pos] = '\0';
@@ -232,17 +217,10 @@ static ssize_t store_active_channels(struct device *dev,
chip->green = 0;
chip->blue = 0;
-#ifdef LED_CONNECTED_WRONG
- if (strchr(buf, 'r') != NULL)
- chip->blue = 1;
- if (strchr(buf, 'b') != NULL)
- chip->red = 1;
-#else
if (strchr(buf, 'r') != NULL)
chip->red = 1;
if (strchr(buf, 'b') != NULL)
chip->blue = 1;
-#endif
if (strchr(buf, 'g') != NULL)
chip->green = 1;
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 4/7] i2c: lp5521: cosmetic fixes
2008-10-14 21:39 ` [PATCH 3/7] i2c: lp5521: remove dead code Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
2008-10-14 21:39 ` [PATCH 5/7] i2c: lp5521: simplify mode setting Felipe Balbi
0 siblings, 1 reply; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, Richard Purdie
From: Felipe Balbi <felipe.balbi@nokia.com>
General cleanup to the code. Preparing to send it to
mainline.
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/i2c/chips/lp5521.c | 159 ++++++++++++++++++++------------------------
1 files changed, 73 insertions(+), 86 deletions(-)
diff --git a/drivers/i2c/chips/lp5521.c b/drivers/i2c/chips/lp5521.c
index 7fb8091..e040c4d 100644
--- a/drivers/i2c/chips/lp5521.c
+++ b/drivers/i2c/chips/lp5521.c
@@ -1,5 +1,5 @@
/*
- * drivers/i2c/chips/lp5521.c
+ * lp5521.c - LP5521 LED Driver
*
* Copyright (C) 2007 Nokia Corporation
*
@@ -24,7 +24,6 @@
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/mutex.h>
-#include <mach/gpio.h>
#define LP5521_DRIVER_NAME "lp5521"
@@ -71,6 +70,7 @@
#define LP5521_PROGRAM_LENGTH 32 /* in bytes */
struct lp5521_chip {
+ /* device lock */
struct mutex lock;
struct i2c_client *client;
char *mode;
@@ -81,20 +81,14 @@ struct lp5521_chip {
static int lp5521_set_mode(struct lp5521_chip *chip, char *mode);
-static int lp5521_write(struct i2c_client *client, u8 reg, u8 value)
+static inline int lp5521_write(struct i2c_client *client, u8 reg, u8 value)
{
return i2c_smbus_write_byte_data(client, reg, value);
}
-static int lp5521_read(struct i2c_client *client, u8 reg, u8 *buf)
+static inline int lp5521_read(struct i2c_client *client, u8 reg)
{
- s32 ret = i2c_smbus_read_byte_data(client, reg);
-
- if (ret < 0)
- return -EIO;
-
- *buf = ret;
- return 0;
+ return i2c_smbus_read_byte_data(client, reg);
}
static int lp5521_configure(struct i2c_client *client)
@@ -136,19 +130,19 @@ static int lp5521_load_program(struct lp5521_chip *chip, u8 *pattern)
if (chip->red)
ret |= i2c_smbus_write_i2c_block_data(client,
- LP5521_REG_R_PROG_MEM,
- LP5521_PROGRAM_LENGTH,
- pattern);
+ LP5521_REG_R_PROG_MEM,
+ LP5521_PROGRAM_LENGTH,
+ pattern);
if (chip->green)
ret |= i2c_smbus_write_i2c_block_data(client,
- LP5521_REG_G_PROG_MEM,
- LP5521_PROGRAM_LENGTH,
- pattern);
+ LP5521_REG_G_PROG_MEM,
+ LP5521_PROGRAM_LENGTH,
+ pattern);
if (chip->blue)
ret |= i2c_smbus_write_i2c_block_data(client,
- LP5521_REG_B_PROG_MEM,
- LP5521_PROGRAM_LENGTH,
- pattern);
+ LP5521_REG_B_PROG_MEM,
+ LP5521_PROGRAM_LENGTH,
+ pattern);
return ret;
}
@@ -156,31 +150,33 @@ static int lp5521_load_program(struct lp5521_chip *chip, u8 *pattern)
static int lp5521_run_program(struct lp5521_chip *chip)
{
struct i2c_client *client = chip->client;
- int ret;
+ int reg;
u8 mask = 0xc0;
u8 exec_state = 0;
- u8 enable_reg;
- ret = lp5521_read(client, LP5521_REG_ENABLE, &enable_reg);
- if (ret)
- goto fail;
+ reg = lp5521_read(client, LP5521_REG_ENABLE);
+ if (reg < 0)
+ return reg;
- enable_reg &= mask;
+ reg &= mask;
/* set all active channels exec state to countinous run*/
- exec_state |= (chip->red << 5);
+ exec_state |= (chip->red << 5);
exec_state |= (chip->green << 3);
- exec_state |= (chip->blue << 1);
+ exec_state |= (chip->blue << 1);
- enable_reg |= exec_state;
+ reg |= exec_state;
- ret |= lp5521_write(client, LP5521_REG_ENABLE, enable_reg);
+ if (lp5521_write(client, LP5521_REG_ENABLE, reg))
+ dev_dbg(&client->dev, "failed writing to register %02x\n",
+ LP5521_REG_ENABLE);
/* set op-mode to run for active channels, disabled for others */
- ret |= lp5521_write(client, LP5521_REG_OP_MODE, exec_state);
+ if (lp5521_write(client, LP5521_REG_OP_MODE, exec_state))
+ dev_dbg(&client->dev, "failed writing to register %02x\n",
+ LP5521_REG_OP_MODE);
-fail:
- return ret;
+ return 0;
}
/*--------------------------------------------------------------*/
@@ -188,8 +184,8 @@ fail:
/*--------------------------------------------------------------*/
static ssize_t show_active_channels(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+ struct device_attribute *attr,
+ char *buf)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
char channels[4];
@@ -208,8 +204,8 @@ static ssize_t show_active_channels(struct device *dev,
}
static ssize_t store_active_channels(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t len)
+ struct device_attribute *attr,
+ const char *buf, size_t len)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
@@ -228,26 +224,25 @@ static ssize_t store_active_channels(struct device *dev,
}
static ssize_t show_color(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+ struct device_attribute *attr,
+ char *buf)
{
struct i2c_client *client = to_i2c_client(dev);
- int ret = 0;
- u8 r, g, b;
+ int r, g, b;
- ret |= lp5521_read(client, LP5521_REG_R_PWM, &r);
- ret |= lp5521_read(client, LP5521_REG_G_PWM, &g);
- ret |= lp5521_read(client, LP5521_REG_B_PWM, &b);
+ r = lp5521_read(client, LP5521_REG_R_PWM);
+ g = lp5521_read(client, LP5521_REG_G_PWM);
+ b = lp5521_read(client, LP5521_REG_B_PWM);
- if (ret)
- return ret;
+ if (r < 0 || g < 0 || b < 0)
+ return -EINVAL;
return sprintf(buf, "%.2x:%.2x:%.2x\n", r, g, b);
}
static ssize_t store_color(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t len)
+ struct device_attribute *attr,
+ const char *buf, size_t len)
{
struct i2c_client *client = to_i2c_client(dev);
struct lp5521_chip *chip = i2c_get_clientdata(client);
@@ -271,8 +266,8 @@ static ssize_t store_color(struct device *dev,
}
static ssize_t store_load(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t len)
+ struct device_attribute *attr,
+ const char *buf, size_t len)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
int ret, nrchars, offset = 0, i = 0;
@@ -314,8 +309,8 @@ fail:
}
static ssize_t show_mode(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+ struct device_attribute *attr,
+ char *buf)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
@@ -323,8 +318,8 @@ static ssize_t show_mode(struct device *dev,
}
static ssize_t store_mode(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t len)
+ struct device_attribute *attr,
+ const char *buf, size_t len)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
@@ -343,33 +338,29 @@ static ssize_t store_mode(struct device *dev,
}
static ssize_t show_current(struct device *dev,
- struct device_attribute *attr,
- char *buf)
+ struct device_attribute *attr,
+ char *buf)
{
struct i2c_client *client = to_i2c_client(dev);
- int ret = 0;
- u8 r_curr, g_curr, b_curr;
+ int r, g, b;
- ret |= lp5521_read(client, LP5521_REG_R_CNTRL, &r_curr);
- ret |= lp5521_read(client, LP5521_REG_G_CNTRL, &g_curr);
- ret |= lp5521_read(client, LP5521_REG_B_CNTRL, &b_curr);
+ r = lp5521_read(client, LP5521_REG_R_CNTRL);
+ g = lp5521_read(client, LP5521_REG_G_CNTRL);
+ b = lp5521_read(client, LP5521_REG_B_CNTRL);
- if (ret)
- return ret;
+ if (r < 0 || g < 0 || b < 0)
+ return -EINVAL;
- r_curr = r_curr >> 4;
- g_curr = g_curr >> 4;
- b_curr = b_curr >> 4;
+ r >>= 4;
+ g >>= 4;
+ b >>= 4;
- if (r_curr == g_curr && g_curr == b_curr)
- return sprintf(buf, "%x\n", r_curr);
- else
- return sprintf(buf, "%x %x %x\n", r_curr, g_curr, b_curr);
+ return sprintf(buf, "%x %x %x\n", r, g, b);
}
static ssize_t store_current(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t len)
+ struct device_attribute *attr,
+ const char *buf, size_t len)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
struct i2c_client *client = chip->client;
@@ -398,7 +389,7 @@ static DEVICE_ATTR(color, S_IRUGO | S_IWUGO, show_color, store_color);
static DEVICE_ATTR(load, S_IWUGO, NULL, store_load);
static DEVICE_ATTR(mode, S_IRUGO | S_IWUGO, show_mode, store_mode);
static DEVICE_ATTR(active_channels, S_IRUGO | S_IWUGO,
- show_active_channels, store_active_channels);
+ show_active_channels, store_active_channels);
static DEVICE_ATTR(led_current, S_IRUGO | S_IWUGO, show_current, store_current);
static int lp5521_register_sysfs(struct i2c_client *client)
@@ -421,6 +412,7 @@ static int lp5521_register_sysfs(struct i2c_client *client)
ret = device_create_file(dev, &dev_attr_led_current);
if (ret)
goto fail5;
+
return 0;
fail5:
@@ -437,16 +429,13 @@ fail1:
static void lp5521_unregister_sysfs(struct i2c_client *client)
{
- struct lp5521_chip *chip = i2c_get_clientdata(client);
struct device *dev = &client->dev;
device_remove_file(dev, &dev_attr_led_current);
device_remove_file(dev, &dev_attr_mode);
device_remove_file(dev, &dev_attr_active_channels);
device_remove_file(dev, &dev_attr_color);
-
- if (!strcmp(chip->mode, LP5521_MODE_LOAD))
- device_remove_file(dev, &dev_attr_load);
+ device_remove_file(dev, &dev_attr_load);
}
/*--------------------------------------------------------------*/
@@ -479,9 +468,8 @@ static int lp5521_set_mode(struct lp5521_chip *chip, char *mode)
/*--------------------------------------------------------------*/
/* Probe, Attach, Remove */
/*--------------------------------------------------------------*/
-static struct i2c_driver lp5521_driver;
-static int lp5521_probe(struct i2c_client *client,
+static int __init lp5521_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
struct lp5521_chip *chip;
@@ -491,7 +479,7 @@ static int lp5521_probe(struct i2c_client *client,
if (!chip)
return -ENOMEM;
- chip->client = client;
+ chip->client = client;
strncpy(client->name, LP5521_DRIVER_NAME, I2C_NAME_SIZE);
i2c_set_clientdata(client, chip);
@@ -520,7 +508,7 @@ fail1:
return ret;
}
-static int lp5521_remove(struct i2c_client *client)
+static int __exit lp5521_remove(struct i2c_client *client)
{
struct lp5521_chip *chip = i2c_get_clientdata(client);
@@ -537,11 +525,11 @@ static const struct i2c_device_id lp5521_id[] = {
MODULE_DEVICE_TABLE(i2c, lp5521_id);
static struct i2c_driver lp5521_driver = {
- .driver = {
+ .driver = {
.name = LP5521_DRIVER_NAME,
},
.probe = lp5521_probe,
- .remove = __devexit_p(lp5521_remove),
+ .remove = __exit_p(lp5521_remove),
.id_table = lp5521_id,
};
@@ -549,15 +537,14 @@ static int __init lp5521_init(void)
{
return i2c_add_driver(&lp5521_driver);
}
+module_init(lp5521_init);
static void __exit lp5521_exit(void)
{
i2c_del_driver(&lp5521_driver);
}
+module_exit(lp5521_exit);
MODULE_AUTHOR("Mathias Nyman <mathias.nyman@nokia.com>");
MODULE_DESCRIPTION("lp5521 LED driver");
MODULE_LICENSE("GPL");
-
-module_init(lp5521_init);
-module_exit(lp5521_exit);
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 5/7] i2c: lp5521: simplify mode setting
2008-10-14 21:39 ` [PATCH 4/7] i2c: lp5521: cosmetic fixes Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
2008-10-14 21:39 ` [PATCH 6/7] i2c: lp5521: move to LED framework Felipe Balbi
0 siblings, 1 reply; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, Richard Purdie
From: Felipe Balbi <felipe.balbi@nokia.com>
Avoid using string magic and use integer for comparisson
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/i2c/chips/lp5521.c | 52 ++++++++++++++++++++++++++++++++-----------
1 files changed, 38 insertions(+), 14 deletions(-)
diff --git a/drivers/i2c/chips/lp5521.c b/drivers/i2c/chips/lp5521.c
index e040c4d..9e94ff8 100644
--- a/drivers/i2c/chips/lp5521.c
+++ b/drivers/i2c/chips/lp5521.c
@@ -46,10 +46,6 @@
#define LP5521_REG_G_PROG_MEM 0x30
#define LP5521_REG_B_PROG_MEM 0x50
-#define LP5521_MODE_LOAD "load"
-#define LP5521_MODE_RUN "run"
-#define LP5521_MODE_DIRECT_CONTROL "direct"
-
#define LP5521_CURRENT_1m5 0x0f
#define LP5521_CURRENT_3m1 0x1f
#define LP5521_CURRENT_4m7 0x2f
@@ -69,17 +65,23 @@
#define LP5521_PROGRAM_LENGTH 32 /* in bytes */
+enum lp5521_mode {
+ LP5521_MODE_LOAD,
+ LP5521_MODE_RUN,
+ LP5521_MODE_DIRECT_CONTROL,
+};
+
struct lp5521_chip {
/* device lock */
struct mutex lock;
struct i2c_client *client;
- char *mode;
+ enum lp5521_mode mode;
int red;
int green;
int blue;
};
-static int lp5521_set_mode(struct lp5521_chip *chip, char *mode);
+static int lp5521_set_mode(struct lp5521_chip *chip, enum lp5521_mode mode);
static inline int lp5521_write(struct i2c_client *client, u8 reg, u8 value)
{
@@ -313,8 +315,25 @@ static ssize_t show_mode(struct device *dev,
char *buf)
{
struct lp5521_chip *chip = dev_get_drvdata(dev);
+ char *mode;
+
+ mutex_lock(&chip->lock);
+ switch (chip->mode) {
+ case LP5521_MODE_RUN:
+ mode = "run";
+ break;
+ case LP5521_MODE_LOAD:
+ mode = "load";
+ break;
+ case LP5521_MODE_DIRECT_CONTROL:
+ mode = "direct";
+ break;
+ default:
+ mode = "undefined";
+ }
+ mutex_unlock(&chip->lock);
- return sprintf(buf, "%s\n", chip->mode);
+ return sprintf(buf, "%s\n", mode);
}
static ssize_t store_mode(struct device *dev,
@@ -442,23 +461,28 @@ static void lp5521_unregister_sysfs(struct i2c_client *client)
/* Set chip operating mode */
/*--------------------------------------------------------------*/
-static int lp5521_set_mode(struct lp5521_chip *chip, char *mode)
+static int lp5521_set_mode(struct lp5521_chip *chip, enum lp5521_mode mode)
{
struct i2c_client *client = chip->client ;
int ret = 0;
/* if in that mode already do nothing, except for run */
- if (!strcmp(mode, chip->mode) && strcmp(mode, LP5521_MODE_RUN))
+ if (chip->mode == mode && mode != LP5521_MODE_RUN)
return 0;
- if (!strcmp(mode, LP5521_MODE_RUN))
+ switch (mode) {
+ case LP5521_MODE_RUN:
ret = lp5521_run_program(chip);
-
- if (!strcmp(mode, LP5521_MODE_LOAD))
+ break;
+ case LP5521_MODE_LOAD:
ret |= lp5521_write(client, LP5521_REG_OP_MODE, 0x15);
-
- if (!strcmp(mode, LP5521_MODE_DIRECT_CONTROL))
+ break;
+ case LP5521_MODE_DIRECT_CONTROL:
ret |= lp5521_write(client, LP5521_REG_OP_MODE, 0x3F);
+ break;
+ default:
+ dev_dbg(&client->dev, "unsupported mode %d\n", mode);
+ }
chip->mode = mode;
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 6/7] i2c: lp5521: move to LED framework
2008-10-14 21:39 ` [PATCH 5/7] i2c: lp5521: simplify mode setting Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
2008-10-14 21:39 ` [PATCH 7/7] leds: lp5521: move to drivers/leds Felipe Balbi
0 siblings, 1 reply; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, Richard Purdie
From: Felipe Balbi <felipe.balbi@nokia.com>
Register three separate leds for lp5521 and allow
them to be controlled separately while keeping
backwards compatibility with userspace programs
based on old implementation.
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/i2c/chips/lp5521.c | 146 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 144 insertions(+), 2 deletions(-)
diff --git a/drivers/i2c/chips/lp5521.c b/drivers/i2c/chips/lp5521.c
index 9e94ff8..a5c3425 100644
--- a/drivers/i2c/chips/lp5521.c
+++ b/drivers/i2c/chips/lp5521.c
@@ -4,6 +4,7 @@
* Copyright (C) 2007 Nokia Corporation
*
* Written by Mathias Nyman <mathias.nyman@nokia.com>
+ * Updated by Felipe Balbi <felipe.balbi@nokia.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -23,7 +24,9 @@
#include <linux/module.h>
#include <linux/init.h>
#include <linux/i2c.h>
+#include <linux/leds.h>
#include <linux/mutex.h>
+#include <linux/workqueue.h>
#define LP5521_DRIVER_NAME "lp5521"
@@ -75,7 +78,17 @@ struct lp5521_chip {
/* device lock */
struct mutex lock;
struct i2c_client *client;
+
+ struct work_struct red_work;
+ struct work_struct green_work;
+ struct work_struct blue_work;
+
+ struct led_classdev ledr;
+ struct led_classdev ledg;
+ struct led_classdev ledb;
+
enum lp5521_mode mode;
+
int red;
int green;
int blue;
@@ -489,6 +502,87 @@ static int lp5521_set_mode(struct lp5521_chip *chip, enum lp5521_mode mode)
return ret;
}
+static void lp5521_red_work(struct work_struct *work)
+{
+ struct lp5521_chip *chip = container_of(work, struct lp5521_chip, red_work);
+ int ret;
+
+ ret = lp5521_configure(chip->client);
+ if (ret) {
+ dev_dbg(&chip->client->dev, "could not configure lp5521, %d\n",
+ ret);
+ return;
+ }
+
+ ret = lp5521_write(chip->client, LP5521_REG_R_PWM, chip->red);
+ if (ret)
+ dev_dbg(&chip->client->dev, "could not set brightness, %d\n",
+ ret);
+}
+
+static void lp5521_red_set(struct led_classdev *led,
+ enum led_brightness value)
+{
+ struct lp5521_chip *chip = container_of(led, struct lp5521_chip, ledr);
+
+ chip->red = value;
+ schedule_work(&chip->red_work);
+}
+
+static void lp5521_green_work(struct work_struct *work)
+{
+ struct lp5521_chip *chip = container_of(work, struct lp5521_chip, green_work);
+ int ret;
+
+ ret = lp5521_configure(chip->client);
+ if (ret) {
+ dev_dbg(&chip->client->dev, "could not configure lp5521, %d\n",
+ ret);
+ return;
+ }
+
+ ret = lp5521_write(chip->client, LP5521_REG_G_PWM, chip->green);
+ if (ret)
+ dev_dbg(&chip->client->dev, "could not set brightness, %d\n",
+ ret);
+}
+
+static void lp5521_green_set(struct led_classdev *led,
+ enum led_brightness value)
+{
+ struct lp5521_chip *chip = container_of(led, struct lp5521_chip, ledg);
+
+ chip->green = value;
+ schedule_work(&chip->green_work);
+}
+
+static void lp5521_blue_work(struct work_struct *work)
+{
+ struct lp5521_chip *chip = container_of(work, struct lp5521_chip, blue_work);
+ int ret;
+
+ ret = lp5521_configure(chip->client);
+ if (ret) {
+ dev_dbg(&chip->client->dev, "could not configure lp5521, %d\n",
+ ret);
+ return;
+ }
+
+ ret = lp5521_write(chip->client, LP5521_REG_B_PWM, chip->blue);
+ if (ret)
+ dev_dbg(&chip->client->dev, "could not set brightness, %d\n",
+ ret);
+}
+
+static void lp5521_blue_set(struct led_classdev *led,
+ enum led_brightness value)
+{
+ struct lp5521_chip *chip = container_of(led, struct lp5521_chip, ledb);
+
+ chip->blue = value;
+ schedule_work(&chip->blue_work);
+}
+
/*--------------------------------------------------------------*/
/* Probe, Attach, Remove */
/*--------------------------------------------------------------*/
@@ -509,6 +603,10 @@ static int __init lp5521_probe(struct i2c_client *client,
mutex_init(&chip->lock);
+ INIT_WORK(&chip->red_work, lp5521_red_work);
+ INIT_WORK(&chip->green_work, lp5521_green_work);
+ INIT_WORK(&chip->blue_work, lp5521_blue_work);
+
ret = lp5521_configure(client);
if (ret < 0) {
dev_err(&client->dev, "lp5521 error configuring chip \n");
@@ -521,14 +619,52 @@ static int __init lp5521_probe(struct i2c_client *client,
chip->green = 1;
chip->blue = 1;
+ chip->ledr.brightness_set = lp5521_red_set;
+ chip->ledr.default_trigger = NULL;
+ chip->ledr.name = "lp5521:red";
+ ret = led_classdev_register(&client->dev, &chip->ledr);
+ if (ret < 0) {
+ dev_dbg(&client->dev, "failed to register red led, %d\n", ret);
+ goto fail1;
+ }
+
+ chip->ledg.brightness_set = lp5521_green_set;
+ chip->ledg.default_trigger = NULL;
+ chip->ledg.name = "lp5521:green";
+ ret = led_classdev_register(&client->dev, &chip->ledg);
+ if (ret < 0) {
+ dev_dbg(&client->dev, "failed to register green led, %d\n",
+ ret);
+ goto fail2;
+ }
+
+ chip->ledb.brightness_set = lp5521_blue_set;
+ chip->ledb.default_trigger = NULL;
+ chip->ledb.name = "lp5521:blue";
+ ret = led_classdev_register(&client->dev, &chip->ledb);
+ if (ret < 0) {
+ dev_dbg(&client->dev, "failed to register blue led, %d\n", ret);
+ goto fail3;
+ }
+
ret = lp5521_register_sysfs(client);
- if (ret)
+ if (ret) {
dev_err(&client->dev, "lp5521 registering sysfs failed \n");
+ goto fail4;
+ }
- return ret;
+ return 0;
+fail4:
+ led_classdev_unregister(&chip->ledb);
+fail3:
+ led_classdev_unregister(&chip->ledg);
+fail2:
+ led_classdev_unregister(&chip->ledr);
fail1:
+ i2c_set_clientdata(client, NULL);
kfree(chip);
+
return ret;
}
@@ -537,6 +673,12 @@ static int __exit lp5521_remove(struct i2c_client *client)
struct lp5521_chip *chip = i2c_get_clientdata(client);
lp5521_unregister_sysfs(client);
+ i2c_set_clientdata(client, NULL);
+
+ led_classdev_unregister(&chip->ledb);
+ led_classdev_unregister(&chip->ledg);
+ led_classdev_unregister(&chip->ledr);
+
kfree(chip);
return 0;
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 7/7] leds: lp5521: move to drivers/leds
2008-10-14 21:39 ` [PATCH 6/7] i2c: lp5521: move to LED framework Felipe Balbi
@ 2008-10-14 21:39 ` Felipe Balbi
0 siblings, 0 replies; 13+ messages in thread
From: Felipe Balbi @ 2008-10-14 21:39 UTC (permalink / raw)
To: linux-omap; +Cc: Felipe Balbi, Richard Purdie
From: Felipe Balbi <felipe.balbi@nokia.com>
This driver should be sitting together with the other
led drivers.
Cc: Richard Purdie <rpurdie@rpsys.net>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/i2c/chips/Kconfig | 7 -------
drivers/i2c/chips/Makefile | 1 -
drivers/leds/Kconfig | 10 ++++++++++
drivers/leds/Makefile | 1 +
drivers/{i2c/chips/lp5521.c => leds/leds-lp5521.c} | 0
5 files changed, 11 insertions(+), 8 deletions(-)
rename drivers/{i2c/chips/lp5521.c => leds/leds-lp5521.c} (100%)
diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig
index d803c41..0aed293 100644
--- a/drivers/i2c/chips/Kconfig
+++ b/drivers/i2c/chips/Kconfig
@@ -219,13 +219,6 @@ config SENSORS_TSL2563
This driver can also be built as a module. If so, the module
will be called tsl2563.
-config LP5521
- tristate "LP5521 LED driver chip"
- depends on I2C
- help
- If you say yes here you get support for the National Semiconductor
- LP5521 LED driver.
-
config MENELAUS
bool "TWL92330/Menelaus PM chip"
depends on I2C=y && ARCH_OMAP24XX
diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
index ba41a57..5e17df3 100644
--- a/drivers/i2c/chips/Makefile
+++ b/drivers/i2c/chips/Makefile
@@ -30,7 +30,6 @@ obj-$(CONFIG_TWL4030_POWEROFF) += twl4030-poweroff.o
obj-$(CONFIG_TWL4030_PWRBUTTON) += twl4030-pwrbutton.o
obj-$(CONFIG_TWL4030_MADC) += twl4030-madc.o
obj-$(CONFIG_RTC_X1205_I2C) += x1205.o
-obj-$(CONFIG_LP5521) += lp5521.o
ifeq ($(CONFIG_I2C_DEBUG_CHIP),y)
EXTRA_CFLAGS += -DDEBUG
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index 6a2f441..943e3d9 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -146,6 +146,16 @@ config LEDS_CM_X270
help
This option enables support for the CM-X270 LEDs.
+config LEDS_LP5521
+ tristate "LED Support for the LP5521 LEDs"
+ depends on LEDS_CLASS && I2C
+ help
+ If you say 'Y' here you get support for the National Semiconductor
+ LP5521 LED driver used in n8x0 boards.
+
+ This driver can be built as a module by choosing 'M'. The module
+ will be called leds-lp5521.
+
config LEDS_CLEVO_MAIL
tristate "Mail LED on Clevo notebook (EXPERIMENTAL)"
depends on LEDS_CLASS && X86 && SERIO_I8042 && DMI && EXPERIMENTAL
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index fd6316e..ce5c8cd 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_LEDS_COBALT_RAQ) += leds-cobalt-raq.o
obj-$(CONFIG_LEDS_PCA9532) += leds-pca9532.o
obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
obj-$(CONFIG_LEDS_CM_X270) += leds-cm-x270.o
+obj-$(CONFIG_LEDS_LP5521) += leds-lp5521.o
obj-$(CONFIG_LEDS_CLEVO_MAIL) += leds-clevo-mail.o
obj-$(CONFIG_LEDS_HP6XX) += leds-hp6xx.o
obj-$(CONFIG_LEDS_FSG) += leds-fsg.o
diff --git a/drivers/i2c/chips/lp5521.c b/drivers/leds/leds-lp5521.c
similarity index 100%
rename from drivers/i2c/chips/lp5521.c
rename to drivers/leds/leds-lp5521.c
--
1.6.0.2.307.gc427
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/7] input: tsc2005: move to gpiolib
2008-10-14 21:39 ` [PATCH 2/7] input: tsc2005: move to gpiolib Felipe Balbi
2008-10-14 21:39 ` [PATCH 3/7] i2c: lp5521: remove dead code Felipe Balbi
@ 2008-10-14 23:20 ` David Brownell
2008-10-15 7:43 ` Felipe Balbi
2008-10-15 10:21 ` Felipe Balbi
1 sibling, 2 replies; 13+ messages in thread
From: David Brownell @ 2008-10-14 23:20 UTC (permalink / raw)
To: Felipe Balbi; +Cc: linux-omap, Felipe Balbi, Dmitry Torokhov
On Tuesday 14 October 2008, Felipe Balbi wrote:
> - omap_set_gpio_direction(dav_gpio, 1);
> + gpio_direction_input(dav_gpio);
> ts->irq = OMAP_GPIO_IRQ(dav_gpio);
That should be ts->irq = gpio_to_irq(dav_gpio) ...
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/7] input: tsc2005: move to gpiolib
2008-10-14 23:20 ` [PATCH 2/7] input: tsc2005: move to gpiolib David Brownell
@ 2008-10-15 7:43 ` Felipe Balbi
2008-10-15 10:21 ` Felipe Balbi
1 sibling, 0 replies; 13+ messages in thread
From: Felipe Balbi @ 2008-10-15 7:43 UTC (permalink / raw)
To: David Brownell; +Cc: Felipe Balbi, linux-omap, Felipe Balbi, Dmitry Torokhov
On Tue, Oct 14, 2008 at 04:20:04PM -0700, David Brownell wrote:
> On Tuesday 14 October 2008, Felipe Balbi wrote:
> > - omap_set_gpio_direction(dav_gpio, 1);
> > + gpio_direction_input(dav_gpio);
> > ts->irq = OMAP_GPIO_IRQ(dav_gpio);
>
> That should be ts->irq = gpio_to_irq(dav_gpio) ...
good catch :-)
will resend soon.
--
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/7] input: tsc2005: move to gpiolib
2008-10-14 23:20 ` [PATCH 2/7] input: tsc2005: move to gpiolib David Brownell
2008-10-15 7:43 ` Felipe Balbi
@ 2008-10-15 10:21 ` Felipe Balbi
1 sibling, 0 replies; 13+ messages in thread
From: Felipe Balbi @ 2008-10-15 10:21 UTC (permalink / raw)
To: ext David Brownell
Cc: Felipe Balbi, linux-omap, Felipe Balbi, Dmitry Torokhov
On Tue, Oct 14, 2008 at 04:20:04PM -0700, David Brownell wrote:
> That should be ts->irq = gpio_to_irq(dav_gpio) ...
New version below
========== cut here =========
>From 28368394029be3c8bbfa44c0d433bf06a64c2761 Mon Sep 17 00:00:00 2001
From: Felipe Balbi <felipe.balbi@nokia.com>
Date: Wed, 15 Oct 2008 00:39:52 +0300
Subject: [PATCH 2/7] input: tsc2005: move to gpiolib
Get rid of omap-specific gpio calls and switch over
to gpiolib.
Cc: David Brownell <david-b@pacbell.net>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
---
drivers/input/touchscreen/tsc2005.c | 17 +++++------------
1 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/input/touchscreen/tsc2005.c b/drivers/input/touchscreen/tsc2005.c
index 7fb107e..0c631d4 100644
--- a/drivers/input/touchscreen/tsc2005.c
+++ b/drivers/input/touchscreen/tsc2005.c
@@ -534,16 +534,14 @@ static int __devinit tsc2005_ts_init(struct tsc2005 *ts,
ts->dav_gpio = dav_gpio;
dev_dbg(&ts->spi->dev, "TSC2005: DAV GPIO = %d\n", dav_gpio);
-#ifdef CONFIG_ARCH_OMAP
- r = omap_request_gpio(dav_gpio);
+ r = gpio_request(dav_gpio, "dav_gpio");
if (r < 0) {
dev_err(&ts->spi->dev, "unable to get DAV GPIO");
goto err1;
}
- omap_set_gpio_direction(dav_gpio, 1);
- ts->irq = OMAP_GPIO_IRQ(dav_gpio);
+ gpio_direction_input(dav_gpio);
+ ts->irq = gpio_to_irq(dav_gpio);
dev_dbg(&ts->spi->dev, "TSC2005: DAV IRQ = %d\n", ts->irq);
-#endif
init_timer(&ts->penup_timer);
setup_timer(&ts->penup_timer, tsc2005_ts_penup_timer_handler,
(unsigned long)ts);
@@ -612,9 +610,7 @@ err3:
tsc2005_stop_scan(ts);
input_free_device(idev);
err2:
-#ifdef CONFIG_ARCH_OMAP
- omap_free_gpio(dav_gpio);
-#endif
+ gpio_free(dav_gpio);
err1:
return r;
}
@@ -671,10 +667,7 @@ static int __devexit tsc2005_remove(struct spi_device *spi)
free_irq(ts->irq, ts);
input_unregister_device(ts->idev);
-
-#ifdef CONFIG_ARCH_OMAP
- omap_free_gpio(ts->dav_gpio);
-#endif
+ gpio_free(ts->dav_gpio);
kfree(ts);
return 0;
--
1.6.0.2.307.gc427
--
balbi
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/7] input: lm8323: get rid of global pdata pointer
2008-10-14 21:39 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Felipe Balbi
2008-10-14 21:39 ` [PATCH 2/7] input: tsc2005: move to gpiolib Felipe Balbi
@ 2008-10-16 4:10 ` Dmitry Torokhov
2008-10-16 8:39 ` Felipe Balbi
1 sibling, 1 reply; 13+ messages in thread
From: Dmitry Torokhov @ 2008-10-16 4:10 UTC (permalink / raw)
To: Felipe Balbi; +Cc: linux-omap, Felipe Balbi
Hi Felipe,
On Wed, Oct 15, 2008 at 12:39:51AM +0300, Felipe Balbi wrote:
> From: Felipe Balbi <felipe.balbi@nokia.com>
>
> pdata is only used during probe to initialize a few fields
> from lm8323 device structure. Moving pdata pointer to probe
> won't harm anybody.
>
I don't think I have these drivers. I also think that they should
depend on GPIOLIB (I noticed that OMAP selects GPIOLIB but I think
ecplicit dependency should still be present).
--
Dmitry
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/7] input: lm8323: get rid of global pdata pointer
2008-10-16 4:10 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Dmitry Torokhov
@ 2008-10-16 8:39 ` Felipe Balbi
0 siblings, 0 replies; 13+ messages in thread
From: Felipe Balbi @ 2008-10-16 8:39 UTC (permalink / raw)
To: ext Dmitry Torokhov; +Cc: Felipe Balbi, linux-omap, Felipe Balbi
On Thu, Oct 16, 2008 at 12:10:57AM -0400, ext Dmitry Torokhov wrote:
> Hi Felipe,
>
> On Wed, Oct 15, 2008 at 12:39:51AM +0300, Felipe Balbi wrote:
> > From: Felipe Balbi <felipe.balbi@nokia.com>
> >
> > pdata is only used during probe to initialize a few fields
> > from lm8323 device structure. Moving pdata pointer to probe
> > won't harm anybody.
> >
>
> I don't think I have these drivers. I also think that they should
> depend on GPIOLIB (I noticed that OMAP selects GPIOLIB but I think
> ecplicit dependency should still be present).
I'll update and resend to l-o, when they patch get applied to l-o, I'll
send a patch via your tree to be merged into mainline.
--
balbi
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2008-10-16 8:40 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-14 21:39 [PATCH 0/7] updates to few nokia drivers Felipe Balbi
2008-10-14 21:39 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Felipe Balbi
2008-10-14 21:39 ` [PATCH 2/7] input: tsc2005: move to gpiolib Felipe Balbi
2008-10-14 21:39 ` [PATCH 3/7] i2c: lp5521: remove dead code Felipe Balbi
2008-10-14 21:39 ` [PATCH 4/7] i2c: lp5521: cosmetic fixes Felipe Balbi
2008-10-14 21:39 ` [PATCH 5/7] i2c: lp5521: simplify mode setting Felipe Balbi
2008-10-14 21:39 ` [PATCH 6/7] i2c: lp5521: move to LED framework Felipe Balbi
2008-10-14 21:39 ` [PATCH 7/7] leds: lp5521: move to drivers/leds Felipe Balbi
2008-10-14 23:20 ` [PATCH 2/7] input: tsc2005: move to gpiolib David Brownell
2008-10-15 7:43 ` Felipe Balbi
2008-10-15 10:21 ` Felipe Balbi
2008-10-16 4:10 ` [PATCH 1/7] input: lm8323: get rid of global pdata pointer Dmitry Torokhov
2008-10-16 8:39 ` Felipe Balbi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox