diff options
author | Nick Vaccaro <nvaccaro@google.com> | 2019-06-18 12:20:44 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-20 18:16:55 +0000 |
commit | 8bbbfbe64c410d9c43daacbdad272022f9eff900 (patch) | |
tree | e4f1ebccb9b0bffc72e925c0d78cab59b0b4e4cc /board | |
parent | 5040fdcc897188ad674b0503bf31d5c26f9f76d4 (diff) | |
download | chrome-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
Diffstat (limited to 'board')
-rw-r--r-- | board/flapjack/board.c | 18 | ||||
-rw-r--r-- | board/flapjack/board.h | 2 |
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) |