tizen 2.4 release
[kernel/linux-3.0.git] / drivers / sensor / ak8975.c
index 6f56b56..0fde098 100644 (file)
@@ -129,7 +129,7 @@ static int akm8975_ecs_set_mode(struct akm8975_data *akm, char mode)
        udelay(300);
 
        /* Workaround: Some sensors (defective?) require more delay */
-       msleep(5);
+       mdelay(5);
 
        return 0;
 }
@@ -223,6 +223,11 @@ static int akm8975_get_raw_data(struct akm8975_data *akm,
                goto done;
        }
 
+       /* akm8975_wait_for_data_ready() revice IRQ signal.
+        * But, akm8975 is not ready to send magnetic data.
+        */
+       mdelay(5);
+
        ret = i2c_smbus_read_i2c_block_data(akm->this_client,
                        AK8975_REG_ST1, sizeof(data), data);
        if (ret != sizeof(data)) {
@@ -468,7 +473,7 @@ static void ak8975c_selftest(struct akm8975_data *ak_data)
 
        /* wait for data ready */
        while (1) {
-               msleep(20);
+               mdelay(5);
                if (i2c_smbus_read_byte_data(ak_data->this_client,
                                                AK8975_REG_ST1) == 1) {
                        break;
@@ -620,7 +625,8 @@ static ssize_t ak8975_adc(struct device *dev,
                pr_err("%s: wait for data ready failed\n", __func__);
                return err;
        }
-       msleep(20);
+
+       mdelay(5);
        /* get the value and report it */
        err = i2c_smbus_read_i2c_block_data(ak_data->this_client,
                                        AK8975_REG_ST1, sizeof(buf), buf);