public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 2.6.26-rc1] i2c_core:  return -Errno not -1
@ 2008-05-07  7:21 Lothar Waßmann
       [not found] ` <18465.22635.646092.18578-VjFSrY7JcPWvSplVBqRQBQ@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Lothar Waßmann @ 2008-05-07  7:21 UTC (permalink / raw)
  To: i2c-GZX6beZjE8VD60Wz+7aTrA

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 6269 bytes --]

Fix return values of various functions in i2c-core.c to either promote
the return code of a called function or return a sensible 'errno'
value instead of a bogus '-1' (which would be interpreted as 'EPERM').

Signed-off-by: Lothar Waßmann <LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
---
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 8dcd937..7ba66c7 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1113,7 +1113,7 @@ int i2c_probe(struct i2c_adapter *adapter,
 
 		dev_warn(&adapter->dev, "SMBus Quick command not supported, "
 			 "can't probe for chips\n");
-		return -1;
+		return -EOPNOTSUPP;
 	}
 
 	/* Probe entries are done second, and are not affected by ignore
@@ -1305,7 +1305,7 @@ static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
 	if (rpec != cpec) {
 		pr_debug("i2c-core: Bad PEC 0x%02x vs. 0x%02x\n",
 			rpec, cpec);
-		return -1;
+		return -EIO;
 	}
 	return 0;
 }
@@ -1320,9 +1320,10 @@ EXPORT_SYMBOL(i2c_smbus_write_quick);
 s32 i2c_smbus_read_byte(struct i2c_client *client)
 {
 	union i2c_smbus_data data;
-	if (i2c_smbus_xfer(client->adapter,client->addr,client->flags,
-	                   I2C_SMBUS_READ,0,I2C_SMBUS_BYTE, &data))
-		return -1;
+	int ret;
+	if ((ret = i2c_smbus_xfer(client->adapter,client->addr,client->flags,
+				  I2C_SMBUS_READ,0,I2C_SMBUS_BYTE, &data)))
+		return ret;
 	else
 		return data.byte;
 }
@@ -1337,10 +1338,11 @@ EXPORT_SYMBOL(i2c_smbus_write_byte);
 
 s32 i2c_smbus_read_byte_data(struct i2c_client *client, u8 command)
 {
+	int ret;
 	union i2c_smbus_data data;
-	if (i2c_smbus_xfer(client->adapter,client->addr,client->flags,
-	                   I2C_SMBUS_READ,command, I2C_SMBUS_BYTE_DATA,&data))
-		return -1;
+	if ((ret = i2c_smbus_xfer(client->adapter,client->addr,client->flags,
+				  I2C_SMBUS_READ,command, I2C_SMBUS_BYTE_DATA,&data)))
+		return ret;
 	else
 		return data.byte;
 }
@@ -1358,10 +1360,11 @@ EXPORT_SYMBOL(i2c_smbus_write_byte_data);
 
 s32 i2c_smbus_read_word_data(struct i2c_client *client, u8 command)
 {
+	int ret;
 	union i2c_smbus_data data;
-	if (i2c_smbus_xfer(client->adapter,client->addr,client->flags,
-	                   I2C_SMBUS_READ,command, I2C_SMBUS_WORD_DATA, &data))
-		return -1;
+	if ((ret = i2c_smbus_xfer(client->adapter,client->addr,client->flags,
+				  I2C_SMBUS_READ,command, I2C_SMBUS_WORD_DATA, &data)))
+		return ret;
 	else
 		return data.word;
 }
@@ -1396,12 +1399,13 @@ EXPORT_SYMBOL(i2c_smbus_write_word_data);
 s32 i2c_smbus_read_block_data(struct i2c_client *client, u8 command,
 			      u8 *values)
 {
+	int ret;
 	union i2c_smbus_data data;
 
-	if (i2c_smbus_xfer(client->adapter, client->addr, client->flags,
-	                   I2C_SMBUS_READ, command,
-	                   I2C_SMBUS_BLOCK_DATA, &data))
-		return -1;
+	if ((ret = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				  I2C_SMBUS_READ, command,
+				  I2C_SMBUS_BLOCK_DATA, &data)))
+		return ret;
 
 	memcpy(values, &data.block[1], data.block[0]);
 	return data.block[0];
@@ -1427,15 +1431,16 @@ EXPORT_SYMBOL(i2c_smbus_write_block_data);
 s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command,
 				  u8 length, u8 *values)
 {
+	int ret;
 	union i2c_smbus_data data;
 
 	if (length > I2C_SMBUS_BLOCK_MAX)
 		length = I2C_SMBUS_BLOCK_MAX;
 	data.block[0] = length;
-	if (i2c_smbus_xfer(client->adapter,client->addr,client->flags,
-	                      I2C_SMBUS_READ,command,
-	                      I2C_SMBUS_I2C_BLOCK_DATA,&data))
-		return -1;
+	if ((ret = i2c_smbus_xfer(client->adapter,client->addr,client->flags,
+				  I2C_SMBUS_READ,command,
+				  I2C_SMBUS_I2C_BLOCK_DATA,&data)))
+		return ret;
 
 	memcpy(values, &data.block[1], data.block[0]);
 	return data.block[0];
@@ -1476,6 +1481,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
 	                        };
 	int i;
 	u8 partial_pec = 0;
+	int ret;
 
 	msgbuf0[0] = command;
 	switch(size) {
@@ -1528,7 +1534,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
 				dev_err(&adapter->dev, "smbus_access called with "
 				       "invalid block write size (%d)\n",
 				       data->block[0]);
-				return -1;
+				return -EINVAL;
 			}
 			for (i = 1; i < msg[0].len; i++)
 				msgbuf0[i] = data->block[i-1];
@@ -1541,7 +1547,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
 			dev_err(&adapter->dev, "%s called with invalid "
 				"block proc call size (%d)\n", __func__,
 				data->block[0]);
-			return -1;
+			return -EINVAL;
 		}
 		msg[0].len = data->block[0] + 2;
 		for (i = 1; i < msg[0].len; i++)
@@ -1559,7 +1565,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
 				dev_err(&adapter->dev, "i2c_smbus_xfer_emulated called with "
 				       "invalid block write size (%d)\n",
 				       data->block[0]);
-				return -1;
+				return -EINVAL;
 			}
 			for (i = 1; i <= data->block[0]; i++)
 				msgbuf0[i] = data->block[i];
@@ -1568,7 +1574,7 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
 	default:
 		dev_err(&adapter->dev, "smbus_access called with invalid size (%d)\n",
 		       size);
-		return -1;
+		return -EINVAL;
 	}
 
 	i = ((flags & I2C_CLIENT_PEC) && size != I2C_SMBUS_QUICK
@@ -1586,13 +1592,13 @@ static s32 i2c_smbus_xfer_emulated(struct i2c_adapter * adapter, u16 addr,
 			msg[num-1].len++;
 	}
 
-	if (i2c_transfer(adapter, msg, num) < 0)
-		return -1;
+	if ((ret = i2c_transfer(adapter, msg, num)) < 0)
+		return ret;
 
 	/* Check PEC if last message is a read */
 	if (i && (msg[num-1].flags & I2C_M_RD)) {
-		if (i2c_smbus_check_pec(partial_pec, &msg[num-1]) < 0)
-			return -1;
+		if ((ret = i2c_smbus_check_pec(partial_pec, &msg[num-1])) < 0)
+			return ret;
 	}
 
 	if (read_write == I2C_SMBUS_READ)


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info-AvR2QvxeiV7DiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org
___________________________________________________________


[-- Attachment #2: Type: text/plain, Size: 157 bytes --]

_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [patch 2.6.26-rc1] i2c_core:  return -Errno not -1
       [not found] ` <18465.22635.646092.18578-VjFSrY7JcPWvSplVBqRQBQ@public.gmane.org>
@ 2008-05-07  7:52   ` Jean Delvare
       [not found]     ` <20080507095209.32a6faa2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Jean Delvare @ 2008-05-07  7:52 UTC (permalink / raw)
  To: Lothar Waßmann; +Cc: David Brownell, i2c-GZX6beZjE8VD60Wz+7aTrA

Hi Lothar,

On Wed, 7 May 2008 09:21:15 +0200, Lothar Waßmann wrote:
> Fix return values of various functions in i2c-core.c to either promote
> the return code of a called function or return a sensible 'errno'
> value instead of a bogus '-1' (which would be interpreted as 'EPERM').
> 
> Signed-off-by: Lothar Waßmann <LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>

Hmm, how does your patch differ from the one David Brownell sent a few
days ago?

http://lists.lm-sensors.org/pipermail/i2c/2008-May/003503.html

-- 
Jean Delvare

_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch 2.6.26-rc1] i2c_core:  return -Errno not -1
       [not found]     ` <20080507095209.32a6faa2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
@ 2008-05-07  8:00       ` Lothar Waßmann
  2008-05-07  8:18       ` David Brownell
  1 sibling, 0 replies; 4+ messages in thread
From: Lothar Waßmann @ 2008-05-07  8:00 UTC (permalink / raw)
  To: Jean Delvare; +Cc: David Brownell, i2c-GZX6beZjE8VD60Wz+7aTrA

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 700 bytes --]

Hi,

> Hmm, how does your patch differ from the one David Brownell sent a few
> days ago?
> 
> http://lists.lm-sensors.org/pipermail/i2c/2008-May/003503.html
> 
Not really probably. I only found a patch from him addressing some
algo-* files, but not that one addressing i2c-core.c


Lothar Waßmann
-- 
___________________________________________________________

Ka-Ro electronics GmbH | Pascalstraße 22 | D - 52076 Aachen
Phone: +49 2408 1402-0 | Fax: +49 2408 1402-10
Geschäftsführer: Matthias Kaussen
Handelsregistereintrag: Amtsgericht Aachen, HRB 4996

www.karo-electronics.de | info-AvR2QvxeiV7DiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org
___________________________________________________________


[-- Attachment #2: Type: text/plain, Size: 157 bytes --]

_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch 2.6.26-rc1] i2c_core:  return -Errno not -1
       [not found]     ` <20080507095209.32a6faa2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
  2008-05-07  8:00       ` Lothar Waßmann
@ 2008-05-07  8:18       ` David Brownell
  1 sibling, 0 replies; 4+ messages in thread
From: David Brownell @ 2008-05-07  8:18 UTC (permalink / raw)
  To: Jean Delvare; +Cc: i2c-GZX6beZjE8VD60Wz+7aTrA, Lothar Waßmann

On Wednesday 07 May 2008, Jean Delvare wrote:
> Hmm, how does your patch differ from the one David Brownell sent a few
> days ago?
> 
> http://lists.lm-sensors.org/pipermail/i2c/2008-May/003503.html

Almost exactly the same title.  ;)

My version passes "checkpatch.pl --strict" as I recall.  And
some of the errno values are different ... I tried to avoid
overusing EINVAL and EIO, and made PEC errors be unique.

- Dave


_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-05-07  8:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-07  7:21 [patch 2.6.26-rc1] i2c_core: return -Errno not -1 Lothar Waßmann
     [not found] ` <18465.22635.646092.18578-VjFSrY7JcPWvSplVBqRQBQ@public.gmane.org>
2008-05-07  7:52   ` Jean Delvare
     [not found]     ` <20080507095209.32a6faa2-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-05-07  8:00       ` Lothar Waßmann
2008-05-07  8:18       ` David Brownell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox