diff options
author | Inno.Park <ih.yoo.park@samsung.corp-partner.google.com> | 2020-05-28 10:57:40 +0900 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-04 10:10:12 +0000 |
commit | 075b802f1a7cff4ff1a001f7f872c35e9a876f48 (patch) | |
tree | 09acd4579e68bec59bd16a8c1e2bdfbf70ec379b /driver | |
parent | c5127356dafac83b49efeab06142af087351a27b (diff) | |
download | chrome-ec-075b802f1a7cff4ff1a001f7f872c35e9a876f48.tar.gz |
driver: lis2ds: add a setting if interrupt active low or not
H_LACTIVE bit setting has been added to support both active high or low interrupt.
And return value in lis2ds_load_fifo() also has been corrected.
It returns a byte count, seen as if an error code and never used.
BUG=b:154299214
BRANCH=none
TEST=build EC and flash 'ec.bin'.
boot device and check the interrupt line high or low
Change-Id: I71bb0ecd99ce1b5319c10238980098dfa001f4c1
Signed-off-by: Inno.Park <ih.yoo.park@samsung.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2217608
Reviewed-by: Bob Moragues <moragues@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/accel_lis2ds.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/driver/accel_lis2ds.c b/driver/accel_lis2ds.c index 5d13c4806a..a055d533b9 100644 --- a/driver/accel_lis2ds.c +++ b/driver/accel_lis2ds.c @@ -78,13 +78,24 @@ static int lis2ds_load_fifo(struct motion_sensor_t *s, uint16_t nsamples, read_len += chunk_len; }; - return read_len; + if (read_len > 0) + motion_sense_fifo_commit_data(); + + return EC_SUCCESS; } __maybe_unused static int lis2ds_config_interrupt(const struct motion_sensor_t *s) { int ret = EC_SUCCESS; + /* Interrupt trigger level of power-on-reset is HIGH */ + if (!(s->flags & MOTIONSENSE_FLAG_INT_ACTIVE_HIGH)) { + ret = st_write_data_with_mask(s, LIS2DS_H_ACTIVE_ADDR, + LIS2DS_H_ACTIVE_MASK, LIS2DS_EN_BIT); + if (ret != EC_SUCCESS) + return ret; + } + if (IS_ENABLED(CONFIG_ACCEL_FIFO)) { /* * Configure FIFO threshold to 1 sample: interrupt on watermark @@ -155,8 +166,6 @@ __maybe_unused static int lis2ds_irq_handler(struct motion_sensor_t *s, nsamples = 256; ret = lis2ds_load_fifo(s, nsamples, last_interrupt_timestamp); - if (ret > 0) - motion_sense_fifo_commit_data(); } return ret; |