2010-02-12 21:56:58

by Grazvydas Ignotas

[permalink] [raw]
Subject: [PATCH 1/4] power_supply: bq27x00: remove double endian swap

The bq27x00 registers are little endian, so just read them as such
and don't do double endian swap on LE machines.

This also gets rid of strange looking shift that was done after
reading 8bit register because endian swap in bq27x00_read() was
messing it up.

Signed-off-by: Grazvydas Ignotas <[email protected]>
---
drivers/power/bq27x00_battery.c | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index 62bb981..537915c 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -74,12 +74,7 @@ static enum power_supply_property bq27x00_battery_props[] = {
static int bq27x00_read(u8 reg, int *rt_value, int b_single,
struct bq27x00_device_info *di)
{
- int ret;
-
- ret = di->bus->read(reg, rt_value, b_single, di);
- *rt_value = be16_to_cpu(*rt_value);
-
- return ret;
+ return di->bus->read(reg, rt_value, b_single, di);
}

/*
@@ -161,7 +156,7 @@ static int bq27x00_battery_rsoc(struct bq27x00_device_info *di)
return ret;
}

- return rsoc >> 8;
+ return rsoc;
}

#define to_bq27x00_device_info(x) container_of((x), \
@@ -238,7 +233,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 = get_unaligned_be16(data);
+ *rt_value = get_unaligned_le16(data);
else
*rt_value = data[0];

--
1.6.3.3


2010-02-16 16:22:33

by Rodolfo Giometti

[permalink] [raw]
Subject: Re: [PATCH 1/4] power_supply: bq27x00: remove double endian swap

On Fri, Feb 12, 2010 at 11:56:46PM +0200, Grazvydas Ignotas wrote:
> The bq27x00 registers are little endian, so just read them as such
> and don't do double endian swap on LE machines.
>
> This also gets rid of strange looking shift that was done after
> reading 8bit register because endian swap in bq27x00_read() was
> messing it up.
>
> Signed-off-by: Grazvydas Ignotas <[email protected]>

Acked-by: Rodolfo Giometti <[email protected]>

--

GNU/Linux Solutions e-mail: [email protected]
Linux Device Driver [email protected]
Embedded Systems phone: +39 349 2432127
UNIX programming skype: rodolfo.giometti
Freelance ICT Italia - Consulente ICT Italia - http://www.consulenti-ict.it

2010-02-16 18:36:30

by Anton Vorontsov

[permalink] [raw]
Subject: Re: [PATCH 1/4] power_supply: bq27x00: remove double endian swap

On Tue, Feb 16, 2010 at 05:22:24PM +0100, Rodolfo Giometti wrote:
> On Fri, Feb 12, 2010 at 11:56:46PM +0200, Grazvydas Ignotas wrote:
> > The bq27x00 registers are little endian, so just read them as such
> > and don't do double endian swap on LE machines.
> >
> > This also gets rid of strange looking shift that was done after
> > reading 8bit register because endian swap in bq27x00_read() was
> > messing it up.
> >
> > Signed-off-by: Grazvydas Ignotas <[email protected]>
>
> Acked-by: Rodolfo Giometti <[email protected]>

Patches 1-4 applied. Thanks!

--
Anton Vorontsov
email: [email protected]
irc://irc.freenode.net/bd2