aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/sensor/ak8963.c
diff options
context:
space:
mode:
authorDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-18 17:55:27 +0200
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-18 17:55:27 +0200
commit855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d (patch)
tree89b8db35d4eb326263a0f9827c5186467d6d289e /drivers/sensor/ak8963.c
parenta8c0a4a5b062a56e5494894aa86b89a21a86ea3e (diff)
downloadkernel_samsung_smdk4412-855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d.zip
kernel_samsung_smdk4412-855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d.tar.gz
kernel_samsung_smdk4412-855d6a6c1f7c54ef073caac3f6c5f9b1ed72eb4d.tar.bz2
u1: port sensors and modem interface from smdk4210 kernel
Change-Id: Ifa0a332a0413f4ceb3c70e96573786ae576a2ae0
Diffstat (limited to 'drivers/sensor/ak8963.c')
-rw-r--r--drivers/sensor/ak8963.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/sensor/ak8963.c b/drivers/sensor/ak8963.c
index 674deee..8b4e2a5 100644
--- a/drivers/sensor/ak8963.c
+++ b/drivers/sensor/ak8963.c
@@ -27,7 +27,8 @@
#include "ak8963-reg.h"
#include <linux/sensor/sensors_core.h>
-#if defined(CONFIG_SLP) || defined(CONFIG_MACH_GC1)
+#if defined(CONFIG_SLP) || defined(CONFIG_MACH_GC1)\
+ || defined(CONFIG_MACH_M3_USA_TMO)
#define FACTORY_TEST
#else
#undef FACTORY_TEST
@@ -369,7 +370,9 @@ static int ak8963c_selftest(struct akm8963_data *ak_data, int *sf)
{
u8 buf[6];
s16 x, y, z;
+ int retry_count = 0;
+retry:
/* read device info */
i2c_smbus_read_i2c_block_data(ak_data->this_client,
AK8963_REG_WIA, 2, buf);
@@ -437,10 +440,21 @@ static int ak8963c_selftest(struct akm8963_data *ak_data, int *sf)
if (((x >= -200) && (x <= 200)) &&
((y >= -200) && (y <= 200)) &&
- ((z >= -3200) && (z <= -800)))
+ ((z >= -3200) && (z <= -800))) {
+ pr_info("%s, Selftest is successful.\n", __func__);
return 1;
- else
- return 0;
+ } else {
+ if (retry_count < 5) {
+ retry_count++;
+ pr_warn("############################################");
+ pr_warn("%s, retry_count=%d\n", __func__, retry_count);
+ pr_warn("############################################");
+ goto retry;
+ } else {
+ pr_err("%s, Selftest is failed.\n", __func__);
+ return 0;
+ }
+ }
}
static ssize_t ak8963c_get_asa(struct device *dev,