iio: health: max30102: Fix mode config values
authorPeter Meerwald-Stadler <pmeerw@pmeerw.net>
Fri, 27 Oct 2017 19:45:34 +0000 (21:45 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 2 Dec 2017 10:40:39 +0000 (10:40 +0000)
Table 4 of the datasheet specifies the mode control, these are not
individual bits; add multi LED mode

Add multi-LED mode and fix MODE_MASK (3 bits wide, not 2)

Signed-off-by: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Acked-by: Matt Ranostay <matt.ranostay@konsulko.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/health/max30102.c

index 52733ddaf506abbe6eeae25b327f2cffd7c89bc2..bfda1f2f6907b743a11bef125a0ff62dfaf1a783 100644 (file)
 #define MAX30102_REG_FIFO_CONFIG_AFULL         BIT(0)
 
 #define MAX30102_REG_MODE_CONFIG               0x09
-#define MAX30102_REG_MODE_CONFIG_MODE_SPO2_EN  BIT(0)
-#define MAX30102_REG_MODE_CONFIG_MODE_HR_EN    BIT(1)
-#define MAX30102_REG_MODE_CONFIG_MODE_MASK     0x03
+#define MAX30102_REG_MODE_CONFIG_MODE_HR       0x02 /* red LED */
+#define MAX30102_REG_MODE_CONFIG_MODE_HR_SPO2  0x03 /* red + IR LED */
+#define MAX30102_REG_MODE_CONFIG_MODE_MULTI    0x07 /* multi-LED mode */
+#define MAX30102_REG_MODE_CONFIG_MODE_MASK     GENMASK(2, 0)
 #define MAX30102_REG_MODE_CONFIG_PWR           BIT(7)
 
 #define MAX30102_REG_SPO2_CONFIG               0x0a
@@ -287,11 +288,10 @@ static int max30102_chip_init(struct max30102_data *data)
        if (ret)
                return ret;
 
-       /* enable SPO2 mode */
+       /* enable HR + SPO2 mode */
        ret = regmap_update_bits(data->regmap, MAX30102_REG_MODE_CONFIG,
                                 MAX30102_REG_MODE_CONFIG_MODE_MASK,
-                                MAX30102_REG_MODE_CONFIG_MODE_HR_EN |
-                                MAX30102_REG_MODE_CONFIG_MODE_SPO2_EN);
+                                MAX30102_REG_MODE_CONFIG_MODE_HR_SPO2);
        if (ret)
                return ret;