From: Onur Atilla <oati...@gmail.com>

Instead of using a constant value, the LED current
of the proximity sensor is now made individually
configurable for each product.

bh1770glc reads the platform-defined data and sets
the most suitable current value accordingly.

Signed-off-by: Onur Atilla <oati...@gmail.com>
Signed-off-by: Andi Shyti <a...@etezian.org>
---
 drivers/misc/bh1770glc.c      |   11 ++++++++++-
 include/linux/i2c/bh1770glc.h |    1 +
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/bh1770glc.c b/drivers/misc/bh1770glc.c
index ef1ab49..0af50bf 100644
--- a/drivers/misc/bh1770glc.c
+++ b/drivers/misc/bh1770glc.c
@@ -1256,6 +1256,7 @@ static int bh1770_probe(struct i2c_client *client,
 {
        struct bh1770_chip *chip;
        int err;
+       u8 i;
 
        chip = kzalloc(sizeof *chip, GFP_KERNEL);
        if (!chip)
@@ -1274,7 +1275,15 @@ static int bh1770_probe(struct i2c_client *client,
                goto fail1;
        }
 
-       chip->pdata             = client->dev.platform_data;
+       /* Set the proximity sensor LED current according to the
+        * platform data. If the given value is out of range,
+        * use the closest supported current per default.
+        */
+       for (i = ARRAY_SIZE(prox_curr_ma)-1; i > 0; i--) {
+               if (chip->pdata->led1_def_curr_ma >= prox_curr_ma[i])
+                       break;
+       }
+       chip->prox_led          = i;
        chip->lux_calib         = BH1770_LUX_NEUTRAL_CALIB_VALUE;
        chip->lux_rate_index    = BH1770_LUX_DEFAULT_RATE;
        chip->lux_threshold_lo  = BH1770_LUX_DEF_THRES;
diff --git a/include/linux/i2c/bh1770glc.h b/include/linux/i2c/bh1770glc.h
index 6fb4488..9c081a8 100644
--- a/include/linux/i2c/bh1770glc.h
+++ b/include/linux/i2c/bh1770glc.h
@@ -47,6 +47,7 @@
 
 struct bh1770_platform_data {
        u8 led_def_curr;
+       u8 led1_def_curr_ma;
        u32 glass_attenuation;
        u32 als_scf_BH1770;
        u32 als_scf_SFH7770;
-- 
1.7.10.4

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

Reply via email to