From: Datta, Shubhrajyoti on

Changing the macro to swap the bytes as the reason that the first byte is the MSB and the next is LSB.

Signed-off-by: Shubhrajyoti D <shubhrajyoti(a)ti.com>
---
drivers/misc/bmp085.c | 41 +++++++++++++++++++++++++++++------------
1 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/drivers/misc/bmp085.c b/drivers/misc/bmp085.c
index 8af6f1b..74c5b12 100644
--- a/drivers/misc/bmp085.c
+++ b/drivers/misc/bmp085.c
@@ -79,18 +79,35 @@ static s32 bmp085_read_calibration_data(struct i2c_client *client)

if (status != BMP085_CALIBRATION_DATA_LENGTH*sizeof(u16))
return -EIO;
-
- cali->AC1 = be16_to_cpu(tmp[0]);
- cali->AC2 = be16_to_cpu(tmp[1]);
- cali->AC3 = be16_to_cpu(tmp[2]);
- cali->AC4 = be16_to_cpu(tmp[3]);
- cali->AC5 = be16_to_cpu(tmp[4]);
- cali->AC6 = be16_to_cpu(tmp[5]);
- cali->B1 = be16_to_cpu(tmp[6]);
- cali->B2 = be16_to_cpu(tmp[7]);
- cali->MB = be16_to_cpu(tmp[8]);
- cali->MC = be16_to_cpu(tmp[9]);
- cali->MD = be16_to_cpu(tmp[10]);
+/*
+ * From the datasheet
+ *
+ * BMP085 Reg Addr
+ * parameter | MSB | LSB
+ * AC1 | 0xAA | 0xAB
+ * AC2 | 0xAC | 0xAD
+ * AC3 | 0xAE | 0xAF
+ * AC4 | 0xB0 | 0xB1
+ * AC5 | 0xB2 | 0xB3
+ * AC6 | 0xB4 | 0xB5
+ * B1 | 0xB6 | 0xB7
+ * B2 | 0xB8 | 0xB9
+ * MB | 0xBA | 0xBB
+ * MC | 0xBC | 0xBD
+ * MC | 0xBE | 0xBF
+ *
+ */
+ cali->AC1 = swab16(tmp[0]);
+ cali->AC2 = swab16(tmp[1]);
+ cali->AC3 = swab16(tmp[2]);
+ cali->AC4 = swab16(tmp[3]);
+ cali->AC5 = swab16(tmp[4]);
+ cali->AC6 = swab16(tmp[5]);
+ cali->B1 = swab16(tmp[6]);
+ cali->B2 = swab16(tmp[7]);
+ cali->MB = swab16(tmp[8]);
+ cali->MC = swab16(tmp[9]);
+ cali->MD = swab16(tmp[10]);
return 0;
}

--
1.5.4.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/