diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2018-09-04 10:10:04 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-03-20 19:51:25 -0700 |
commit | 4b9a3c0cc9cee9ed85ba18dd2f9c23e90ca051fc (patch) | |
tree | 3f8db048371f529ac0ffff71553c8c8bd378cfe0 /include/motion_sense.h | |
parent | 8fb1c6c52510438f77378f08d2b6d881da48dd3f (diff) | |
download | chrome-ec-4b9a3c0cc9cee9ed85ba18dd2f9c23e90ca051fc.tar.gz |
motion: Define macros for custom events
Define macros to define custom events used by sensor interrupt handlers.
Remove CONFIG_ for activity events.
BUG=none
BRANCH=none
TEST=compile, sensors work on eve.
Change-Id: I08ef6ed2a004466ebc5f7650d6952a150b9de713
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1272189
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'include/motion_sense.h')
-rw-r--r-- | include/motion_sense.h | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/include/motion_sense.h b/include/motion_sense.h index 2291784c1c..0e6f7aa342 100644 --- a/include/motion_sense.h +++ b/include/motion_sense.h @@ -36,11 +36,39 @@ enum sensor_config { #define SENSOR_ACTIVE_S0_S3 (SENSOR_ACTIVE_S3 | SENSOR_ACTIVE_S0) #define SENSOR_ACTIVE_S0_S3_S5 (SENSOR_ACTIVE_S0_S3 | SENSOR_ACTIVE_S5) -/* Events the motion sense task may have to process.*/ -#define TASK_EVENT_MOTION_FLUSH_PENDING TASK_EVENT_CUSTOM(1) -#define TASK_EVENT_MOTION_ODR_CHANGE TASK_EVENT_CUSTOM(2) -/* Next 8 events for sensor interrupt lines */ -#define TASK_EVENT_MOTION_INTERRUPT_MASK (0xff << 2) + +/* + * Events layout: + * 0 8 10 + * +-----------------------+---------------+---------------------------- + * | hardware interrupts | internal ints | activity interrupts + * +-----------------------+---------------+---------------------------- + */ + +/* First 8 events for sensor interrupt lines */ +#define TASK_EVENT_MOTION_INTERRUPT_NUM 8 +#define TASK_EVENT_MOTION_INTERRUPT_MASK \ + ((1 << TASK_EVENT_MOTION_INTERRUPT_NUM) - 1) +#define TASK_EVENT_MOTION_SENSOR_INTERRUPT(_sensor_id) \ + BUILD_CHECK_INLINE( \ + TASK_EVENT_CUSTOM(1 << (_sensor_id)), \ + _sensor_id < TASK_EVENT_MOTION_INTERRUPT_NUM) + +/* Internal events to motion sense task.*/ +#define TASK_EVENT_MOTION_FIRST_INTERNAL_EVENT TASK_EVENT_MOTION_INTERRUPT_NUM +#define TASK_EVENT_MOTION_INTERNAL_EVENT_NUM 2 +#define TASK_EVENT_MOTION_FLUSH_PENDING \ + TASK_EVENT_CUSTOM(1 << TASK_EVENT_MOTION_FIRST_INTERNAL_EVENT) +#define TASK_EVENT_MOTION_ODR_CHANGE \ + TASK_EVENT_CUSTOM(1 << (TASK_EVENT_MOTION_FIRST_INTERNAL_EVENT + 1)) + +/* Activity events */ +#define TASK_EVENT_MOTION_FIRST_SW_EVENT \ + (TASK_EVENT_MOTION_INTERRUPT_NUM + TASK_EVENT_MOTION_INTERNAL_EVENT_NUM) +#define TASK_EVENT_MOTION_ACTIVITY_INTERRUPT(_activity_id) \ + (TASK_EVENT_CUSTOM( \ + 1 << (TASK_EVENT_MOTION_FIRST_SW_EVENT + (_activity_id)))) + #define ROUND_UP_FLAG (1 << 31) #define BASE_ODR(_odr) ((_odr) & ~ROUND_UP_FLAG) @@ -168,6 +196,7 @@ struct motion_sensor_t { /* Defined at board level. */ extern struct motion_sensor_t motion_sensors[]; + #ifdef CONFIG_DYNAMIC_MOTION_SENSOR_COUNT extern unsigned motion_sensor_count; #else |