aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
authorGrazvydas Ignotas <notasas@gmail.com>2010-02-12 16:56:46 -0500
committerAnton Vorontsov <cbouatmailru@gmail.com>2010-02-16 13:26:14 -0500
commit97f70c23a1fa1bffe79187563dc5c6f2c72420a2 (patch)
treede81a2d6688f9309e71284db1d1759437d76e21e /drivers/power
parent5324dc0e3872324ed0bf372bce7bc437436910b6 (diff)
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 <notasas@gmail.com> Acked-by: Rodolfo Giometti <giometti@linux.it> Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/bq27x00_battery.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index 62bb98124e26..537915cc491e 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[] = {
74static int bq27x00_read(u8 reg, int *rt_value, int b_single, 74static int bq27x00_read(u8 reg, int *rt_value, int b_single,
75 struct bq27x00_device_info *di) 75 struct bq27x00_device_info *di)
76{ 76{
77 int ret; 77 return di->bus->read(reg, rt_value, b_single, di);
78
79 ret = di->bus->read(reg, rt_value, b_single, di);
80 *rt_value = be16_to_cpu(*rt_value);
81
82 return ret;
83} 78}
84 79
85/* 80/*
@@ -161,7 +156,7 @@ static int bq27x00_battery_rsoc(struct bq27x00_device_info *di)
161 return ret; 156 return ret;
162 } 157 }
163 158
164 return rsoc >> 8; 159 return rsoc;
165} 160}
166 161
167#define to_bq27x00_device_info(x) container_of((x), \ 162#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,
238 err = i2c_transfer(client->adapter, msg, 1); 233 err = i2c_transfer(client->adapter, msg, 1);
239 if (err >= 0) { 234 if (err >= 0) {
240 if (!b_single) 235 if (!b_single)
241 *rt_value = get_unaligned_be16(data); 236 *rt_value = get_unaligned_le16(data);
242 else 237 else
243 *rt_value = data[0]; 238 *rt_value = data[0];
244 239