[PATCH 2/8] i2c: lp5521: cosmetic fixes

2009-02-10 Thread Felipe Balbi
General cleanup to the code. Preparing to send it to
mainline.

Signed-off-by: Felipe Balbi felipe.ba...@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 mutexlock;
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-red5);
+   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,
-   

[PATCH 2/8] i2c: lp5521: cosmetic fixes

2008-10-14 Thread Felipe Balbi
General cleanup to the code. Preparing to send it to
mainline.

Cc: Richard Purdie [EMAIL PROTECTED]
Signed-off-by: Felipe Balbi [EMAIL PROTECTED]
---
 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 mutexlock;
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-red5);
+   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