summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vaccaro <nvaccaro@google.com>2019-06-18 12:20:44 -0700
committerCommit Bot <commit-bot@chromium.org>2019-08-20 18:16:55 +0000
commit8bbbfbe64c410d9c43daacbdad272022f9eff900 (patch)
treee4f1ebccb9b0bffc72e925c0d78cab59b0b4e4cc
parent5040fdcc897188ad674b0503bf31d5c26f9f76d4 (diff)
downloadchrome-ec-8bbbfbe64c410d9c43daacbdad272022f9eff900.tar.gz
flapjack: tcs3400: add channel offsets and coefficients
- adds channel offsets - adds channel coeefficients for use in xyz translation - enables LUX table use in anti-saturation algorithm These values are from the "Color Sensor Calibration to Compensate Cover Window Induced Error" document. BUG=b:124512628 BRANCH=master TEST=Flash and boot flapjack, verify that ALS and RGB sensors are still generating data. I used alslog patch and enabled saturation logging in EC console via "alslog 8". Verified LUX calculation had < 1% error (driver read 0.1% lower than a $3k LUX meter read). Verify that under a constant light source, the adjustment mechanism correctly drives the ALS values such that they land in the sweet spot between 90 to <100% of saturation. Cq-Depend: chromium:1633269 Change-Id: I88ec0e23f93aebb542823bccf27aade566074f2b Signed-off-by: Nick Vaccaro <nvaccaro@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1665210
-rw-r--r--board/flapjack/board.c18
-rw-r--r--board/flapjack/board.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/board/flapjack/board.c b/board/flapjack/board.c
index e431a49953..e84a5b947a 100644
--- a/board/flapjack/board.c
+++ b/board/flapjack/board.c
@@ -466,21 +466,33 @@ static struct als_drv_data_t g_tcs3400_data = {
static struct tcs3400_rgb_drv_data_t g_tcs3400_rgb_data = {
.rgb_cal[X] = {
- .offset = 0,
+ .offset = 15, /* 15.65956688 */
+ .coeff[TCS_RED_COEFF_IDX] = FLOAT_TO_FP(-0.04592318),
+ .coeff[TCS_GREEN_COEFF_IDX] = FLOAT_TO_FP(0.06756278),
+ .coeff[TCS_BLUE_COEFF_IDX] = FLOAT_TO_FP(-0.05885579),
+ .coeff[TCS_CLEAR_COEFF_IDX] = FLOAT_TO_FP(0.12021096),
.scale = {
.k_channel_scale = ALS_CHANNEL_SCALE(1.0), /* kr */
.cover_scale = ALS_CHANNEL_SCALE(0.6)
}
},
.rgb_cal[Y] = {
- .offset = 0,
+ .offset = 8, /* 8.75943638 */
+ .coeff[TCS_RED_COEFF_IDX] = FLOAT_TO_FP(-0.07786953),
+ .coeff[TCS_GREEN_COEFF_IDX] = FLOAT_TO_FP(0.18940035),
+ .coeff[TCS_BLUE_COEFF_IDX] = FLOAT_TO_FP(-0.0524428),
+ .coeff[TCS_CLEAR_COEFF_IDX] = FLOAT_TO_FP(0.09092403),
.scale = {
.k_channel_scale = ALS_CHANNEL_SCALE(1.0), /* kg */
.cover_scale = ALS_CHANNEL_SCALE(1.0)
}
},
.rgb_cal[Z] = {
- .offset = 0,
+ .offset = -21, /* -21.92665481 */
+ .coeff[TCS_RED_COEFF_IDX] = FLOAT_TO_FP(-0.18981975),
+ .coeff[TCS_GREEN_COEFF_IDX] = FLOAT_TO_FP(0.5351057),
+ .coeff[TCS_BLUE_COEFF_IDX] = FLOAT_TO_FP(-0.01858507),
+ .coeff[TCS_CLEAR_COEFF_IDX] = FLOAT_TO_FP(-0.01793189),
.scale = {
.k_channel_scale = ALS_CHANNEL_SCALE(1.0), /* kb */
.cover_scale = ALS_CHANNEL_SCALE(1.5)
diff --git a/board/flapjack/board.h b/board/flapjack/board.h
index e76a82f444..15b52782b0 100644
--- a/board/flapjack/board.h
+++ b/board/flapjack/board.h
@@ -97,6 +97,8 @@
#define CONFIG_ALS_TCS3400
#define CONFIG_ALS_TCS3400_INT_EVENT \
TASK_EVENT_MOTION_SENSOR_INTERRUPT(CLEAR_ALS)
+#define CONFIG_TCS_USE_LUX_TABLE
+
/* ALS needs to be polled */
#define CONFIG_ACCEL_FORCE_MODE_MASK BIT(CLEAR_ALS)