From 970294e3bac8b438b6338236cbd5ba66c1819ed0 Mon Sep 17 00:00:00 2001 From: Leo Yan Date: Wed, 9 May 2012 13:16:17 +0800 Subject: [PATCH] ltr301: Add CH0/CH1 coefficient range 3 BZ: 34482 Add CH0/CH1 coefficient range 3 for extremely incandescent light. When device is in such kind of light, the raw data from CH1 register is much more than CH0 and the ratio is greater than 85. Change-Id: I3aee12b7ec65b0d39c9f37abbb221c5ca7644720 Signed-off-by: Leo Yan Reviewed-on: http://android.intel.com:8080/47931 Reviewed-by: Liu, Hong Reviewed-by: Chen, Jie D Reviewed-by: Du, Alek Tested-by: Tang, HaifengX Reviewed-by: buildbot Tested-by: buildbot --- drivers/input/misc/ltr301als.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/input/misc/ltr301als.c b/drivers/input/misc/ltr301als.c index 7307587..a8b5e3a 100644 --- a/drivers/input/misc/ltr301als.c +++ b/drivers/input/misc/ltr301als.c @@ -84,6 +84,8 @@ #define CH1_COEFF_RANGE1 13363 #define CH0_COEFF_RANGE2 16900 #define CH1_COEFF_RANGE2 1690 +#define CH0_COEFF_RANGE3 16900 +#define CH1_COEFF_RANGE3 -490 #define RATIO_RANGE0 45 #define RATIO_RANGE1 64 @@ -194,12 +196,18 @@ static int ltr301_get_lux(struct ltr301_chip *chip) } else if (ratio < RATIO_RANGE2) { ch0_coeff = CH0_COEFF_RANGE2; ch1_coeff = CH1_COEFF_RANGE2; + } else { + ch0_coeff = CH0_COEFF_RANGE3; + ch1_coeff = CH1_COEFF_RANGE3; } chip->ch0 = ch0; /* ch_coeff are x10000, compensate for window loss while scaling down */ lux = ((ch0 * ch0_coeff) - (ch1 * ch1_coeff)) / (100 * chip->opacity); + dev_dbg(&chip->client->dev, "%s:ch0=%d, ch1=%d, lux=%d\n", + __func__, ch0, ch1, lux); + return lux; } -- 2.7.4