* [PATCH] bq27x00_battery: use unaligned access helper
@ 2008-09-04 3:39 Harvey Harrison
0 siblings, 0 replies; only message in thread
From: Harvey Harrison @ 2008-09-04 3:39 UTC (permalink / raw)
To: Rodolfo Giometti; +Cc: Andrew Morton, LKML
Remove hand-rolled get_unaligned_be16, this points to a possible
bug as bq27x00_read does another endian byteswap which sparse
notices:
drivers/power/bq27x00_battery.c:81:14: warning: cast to restricted __be16
Which should probably be checked.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
New in next-20080902
Also all of these functions could (should) change to passing around a u16
rather than an int as the read function only ever reads 1 or two bytes.
drivers/power/bq27x00_battery.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index 62d4948..a5a49e1 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -23,6 +23,7 @@
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/idr.h>
+#include <asm/unaligned.h>
#include <linux/i2c.h>
@@ -33,7 +34,6 @@
#define BQ27x00_REG_RSOC 0x0B /* Relative State-of-Charge */
#define BQ27x00_REG_AI 0x14
#define BQ27x00_REG_FLAGS 0x0A
-#define HIGH_BYTE(A) ((A) << 8)
/* If the system has several batteries we need a different name for each
* of them...
@@ -239,7 +239,7 @@ static int bq27200_read(u8 reg, int *rt_value, int b_single,
err = i2c_transfer(client->adapter, msg, 1);
if (err >= 0) {
if (!b_single)
- *rt_value = data[1] | HIGH_BYTE(data[0]);
+ *rt_value = get_unaligned_be16(data);
else
*rt_value = data[0];
--
1.6.0.1.514.g59380c
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2008-09-04 3:39 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-04 3:39 [PATCH] bq27x00_battery: use unaligned access helper Harvey Harrison
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.