From 3b05ac446d0c62a056be02754f9e815a521b1624 Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 5 Dec 2006 09:22:52 +0100 Subject: [PATCH] [PATCH] i2c cleanup : simplify code Simplify core i2c code as was done in the external i2c tree. There are three type of changes: * Flatten imbricated if/else constructs * Drop useless masking * Change void* parameters to char* to avoid having to cast them everywhere we use them Signed-off-by: Jean Delvare --- drivers/i2c/i2c-core.c | 22 ++++++++++------------ drivers/i2c/i2c-proc.c | 38 +++++++++++++++++++------------------- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 86aeb327..f10716ba 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -548,12 +548,10 @@ int i2c_use_client(struct i2c_client *client) if (client->flags & I2C_CLIENT_ALLOW_USE) { if (client->flags & I2C_CLIENT_ALLOW_MULTIPLE_USE) client->usage_count++; - else { - if(client->usage_count > 0) - return -EBUSY; - else - client->usage_count++; - } + else if (client->usage_count > 0) + return -EBUSY; + else + client->usage_count++; } i2c_inc_use_client(client); @@ -974,7 +972,7 @@ extern s32 i2c_smbus_read_byte(struct i2c_client * client) I2C_SMBUS_READ,0,I2C_SMBUS_BYTE, &data)) return -1; else - return 0x0FF & data.byte; + return data.byte; } extern s32 i2c_smbus_write_byte(struct i2c_client * client, u8 value) @@ -990,7 +988,7 @@ extern s32 i2c_smbus_read_byte_data(struct i2c_client * client, u8 command) I2C_SMBUS_READ,command, I2C_SMBUS_BYTE_DATA,&data)) return -1; else - return 0x0FF & data.byte; + return data.byte; } extern s32 i2c_smbus_write_byte_data(struct i2c_client * client, u8 command, @@ -1010,7 +1008,7 @@ extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command) I2C_SMBUS_READ,command, I2C_SMBUS_WORD_DATA, &data)) return -1; else - return 0x0FFFF & data.word; + return data.word; } extern s32 i2c_smbus_write_word_data(struct i2c_client * client, @@ -1033,7 +1031,7 @@ extern s32 i2c_smbus_process_call(struct i2c_client * client, I2C_SMBUS_PROC_CALL, &data)) return -1; else - return 0x0FFFF & data.word; + return data.word; } /* Returns the number of read bytes */ @@ -1131,7 +1129,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, else { msg[0].len=3; msgbuf0[1] = data->word & 0xff; - msgbuf0[2] = (data->word >> 8) & 0xff; + msgbuf0[2] = data->word >> 8; } break; case I2C_SMBUS_PROC_CALL: @@ -1139,7 +1137,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr, msg[0].len = 3; msg[1].len = 2; msgbuf0[1] = data->word & 0xff; - msgbuf0[2] = (data->word >> 8) & 0xff; + msgbuf0[2] = data->word >> 8; break; case I2C_SMBUS_BLOCK_DATA: if (read_write == I2C_SMBUS_READ) { diff --git a/drivers/i2c/i2c-proc.c b/drivers/i2c/i2c-proc.c index 5d208974..2015c29f 100644 --- a/drivers/i2c/i2c-proc.c +++ b/drivers/i2c/i2c-proc.c @@ -39,9 +39,9 @@ #define THIS_MODULE NULL #endif -static int i2c_parse_reals(int *nrels, void *buffer, int bufsize, +static int i2c_parse_reals(int *nrels, char *buffer, int bufsize, long *results, int magnitude); -static int i2c_write_reals(int nrels, void *buffer, int *bufsize, +static int i2c_write_reals(int nrels, char *buffer, int *bufsize, long *results, int magnitude); static int i2c_proc_chips(ctl_table * ctl, int write, struct file *filp, void *buffer, @@ -450,7 +450,7 @@ int i2c_sysctl_real(ctl_table * table, int *name, int nlen, WARNING! This is tricky code. I have tested it, but there may still be hidden bugs in it, even leading to crashes and things! */ -int i2c_parse_reals(int *nrels, void *buffer, int bufsize, +static int i2c_parse_reals(int *nrels, char *buffer, int bufsize, long *results, int magnitude) { int maxels, min, mag; @@ -464,10 +464,10 @@ int i2c_parse_reals(int *nrels, void *buffer, int bufsize, /* Skip spaces at the start */ while (bufsize && - !((ret=get_user(nextchar, (char *) buffer))) && + !((ret=get_user(nextchar, buffer))) && isspace((int) nextchar)) { bufsize--; - buffer = (char *) buffer + 1; + buffer++; } if (ret) @@ -482,22 +482,22 @@ int i2c_parse_reals(int *nrels, void *buffer, int bufsize, mag = magnitude; /* Check for a minus */ - if (!((ret=get_user(nextchar, (char *) buffer))) + if (!((ret=get_user(nextchar, buffer))) && (nextchar == '-')) { min = 1; bufsize--; - buffer = (char *) buffer + 1; + buffer++; } if (ret) return -EFAULT; /* Digits before a decimal dot */ while (bufsize && - !((ret=get_user(nextchar, (char *) buffer))) && + !((ret=get_user(nextchar, buffer))) && isdigit((int) nextchar)) { res = res * 10 + nextchar - '0'; bufsize--; - buffer = (char *) buffer + 1; + buffer++; } if (ret) return -EFAULT; @@ -511,16 +511,16 @@ int i2c_parse_reals(int *nrels, void *buffer, int bufsize, if (bufsize && (nextchar == '.')) { /* Skip the dot */ bufsize--; - buffer = (char *) buffer + 1; + buffer++; /* Read digits while they are significant */ while (bufsize && (mag > 0) && - !((ret=get_user(nextchar, (char *) buffer))) && + !((ret=get_user(nextchar, buffer))) && isdigit((int) nextchar)) { res = res * 10 + nextchar - '0'; mag--; bufsize--; - buffer = (char *) buffer + 1; + buffer++; } if (ret) return -EFAULT; @@ -533,10 +533,10 @@ int i2c_parse_reals(int *nrels, void *buffer, int bufsize, /* Skip everything until we hit whitespace */ while (bufsize && - !((ret=get_user(nextchar, (char *) buffer))) && + !((ret=get_user(nextchar, buffer))) && !isspace((int) nextchar)) { bufsize--; - buffer = (char *) buffer + 1; + buffer++; } if (ret) return -EFAULT; @@ -551,7 +551,7 @@ int i2c_parse_reals(int *nrels, void *buffer, int bufsize, return 0; } -int i2c_write_reals(int nrels, void *buffer, int *bufsize, +static int i2c_write_reals(int nrels, char *buffer, int *bufsize, long *results, int magnitude) { #define BUFLEN 20 @@ -565,10 +565,10 @@ int i2c_write_reals(int nrels, void *buffer, int *bufsize, mag = magnitude; if (nr != 0) { - if(put_user(' ', (char *) buffer)) + if(put_user(' ', buffer)) return -EFAULT; curbufsize++; - buffer = (char *) buffer + 1; + buffer++; } /* Fill BUF with the representation of the next string */ @@ -609,12 +609,12 @@ int i2c_write_reals(int nrels, void *buffer, int *bufsize, if(copy_to_user(buffer, BUF, buflen)) return -EFAULT; curbufsize += buflen; - buffer = (char *) buffer + buflen; + buffer += buflen; nr++; } if (curbufsize < *bufsize) { - if(put_user('\n', (char *) buffer)) + if(put_user('\n', buffer)) return -EFAULT; curbufsize++; } -- 2.11.0