summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJett Rink <jettrink@chromium.org>2019-04-16 12:43:58 -0600
committerchrome-bot <chrome-bot@chromium.org>2019-04-24 15:51:09 -0700
commitbd4012d9abbb7b79f537e7adba9627bcd4a50a72 (patch)
tree137776675c25c27a1925936e6ef9d8af15fc07cb /include
parentd6cc4f14205a00b6d17d22fb7e74a0c8b063ec85 (diff)
downloadchrome-ec-bd4012d9abbb7b79f537e7adba9627bcd4a50a72.tar.gz
tasks: convert TASK_EVENT_CUSTOM macro to bit
We should ensure that all custom task definition are non-zero and fit with the globally defined events. Add compile time check and change semantics to specify bit number (instead of making all callers use the BIT macro). This also fixes an error with TASK_EVENT_PHY_TX_DONE for ITE being 0. The bug that made that happen hasn't landed on any firmware branches that use it though. BRANCH=none BUG=none TEST=builds Cq-Depend:chrome-internal:1178968,chrome-internal:1178952 Change-Id: I5e1d1312382d200280c548e9128e53f4eddd3e61 Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1570607 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Diffstat (limited to 'include')
-rw-r--r--include/motion_sense.h10
-rw-r--r--include/task.h4
-rw-r--r--include/usb_charge.h12
-rw-r--r--include/usb_pd.h29
4 files changed, 33 insertions, 22 deletions
diff --git a/include/motion_sense.h b/include/motion_sense.h
index 9e55a2f255..cebd7907a7 100644
--- a/include/motion_sense.h
+++ b/include/motion_sense.h
@@ -51,23 +51,23 @@ enum sensor_config {
((1 << TASK_EVENT_MOTION_INTERRUPT_NUM) - 1)
#define TASK_EVENT_MOTION_SENSOR_INTERRUPT(_sensor_id) \
BUILD_CHECK_INLINE( \
- TASK_EVENT_CUSTOM(1 << (_sensor_id)), \
+ TASK_EVENT_CUSTOM_BIT(_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)
+ TASK_EVENT_CUSTOM_BIT(TASK_EVENT_MOTION_FIRST_INTERNAL_EVENT)
#define TASK_EVENT_MOTION_ODR_CHANGE \
- TASK_EVENT_CUSTOM(1 << (TASK_EVENT_MOTION_FIRST_INTERNAL_EVENT + 1))
+ TASK_EVENT_CUSTOM_BIT(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))))
+ (TASK_EVENT_CUSTOM_BIT( \
+ TASK_EVENT_MOTION_FIRST_SW_EVENT + (_activity_id)))
#define ROUND_UP_FLAG BIT(31)
diff --git a/include/task.h b/include/task.h
index 32e62a8384..d56a91986e 100644
--- a/include/task.h
+++ b/include/task.h
@@ -13,8 +13,8 @@
#include "task_id.h"
/* Task event bitmasks */
-/* Tasks may use the bits in TASK_EVENT_CUSTOM for their own events */
-#define TASK_EVENT_CUSTOM(x) (x & 0x0000ffff)
+/* Tasks may use the bits in TASK_EVENT_CUSTOM_BIT for their own events */
+#define TASK_EVENT_CUSTOM_BIT(x) BUILD_CHECK_INLINE(BIT(x), BIT(x) & 0x0ffff)
/* Used to signal that sysjump preparation has completed */
#define TASK_EVENT_SYSJUMP_READY BIT(16)
diff --git a/include/usb_charge.h b/include/usb_charge.h
index de65725d0a..46ba725b95 100644
--- a/include/usb_charge.h
+++ b/include/usb_charge.h
@@ -49,12 +49,12 @@ int usb_charge_set_mode(int usb_port_id, enum usb_charge_mode mode,
enum usb_suspend_charge inhibit_charge);
#ifdef HAS_TASK_USB_CHG_P0
-#define USB_CHG_EVENT_BC12 TASK_EVENT_CUSTOM(1)
-#define USB_CHG_EVENT_VBUS TASK_EVENT_CUSTOM(2)
-#define USB_CHG_EVENT_INTR TASK_EVENT_CUSTOM(4)
-#define USB_CHG_EVENT_DR_UFP TASK_EVENT_CUSTOM(8)
-#define USB_CHG_EVENT_DR_DFP TASK_EVENT_CUSTOM(16)
-#define USB_CHG_EVENT_CC_OPEN TASK_EVENT_CUSTOM(32)
+#define USB_CHG_EVENT_BC12 TASK_EVENT_CUSTOM_BIT(0)
+#define USB_CHG_EVENT_VBUS TASK_EVENT_CUSTOM_BIT(1)
+#define USB_CHG_EVENT_INTR TASK_EVENT_CUSTOM_BIT(2)
+#define USB_CHG_EVENT_DR_UFP TASK_EVENT_CUSTOM_BIT(3)
+#define USB_CHG_EVENT_DR_DFP TASK_EVENT_CUSTOM_BIT(4)
+#define USB_CHG_EVENT_CC_OPEN TASK_EVENT_CUSTOM_BIT(5)
#endif
/*
diff --git a/include/usb_pd.h b/include/usb_pd.h
index a8f1dab008..c70c97bd5f 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -38,19 +38,30 @@ enum pd_rx_errors {
};
/* Events for USB PD task */
-#define PD_EVENT_TX (1<<3) /* Outgoing packet event */
-#define PD_EVENT_CC (1<<4) /* CC line change event */
-#define PD_EVENT_TCPC_RESET (1<<5) /* TCPC has reset */
-#define PD_EVENT_UPDATE_DUAL_ROLE (1<<6) /* DRP state has changed */
+
+/* Outgoing packet event */
+#define PD_EVENT_TX TASK_EVENT_CUSTOM_BIT(3)
+/* CC line change event */
+#define PD_EVENT_CC TASK_EVENT_CUSTOM_BIT(4)
+/* TCPC has reset */
+#define PD_EVENT_TCPC_RESET TASK_EVENT_CUSTOM_BIT(5)
+/* DRP state has changed */
+#define PD_EVENT_UPDATE_DUAL_ROLE TASK_EVENT_CUSTOM_BIT(6)
/*
* A task, other than the task owning the PD port, accessed the TCPC. The task
* that owns the port does not send itself this event.
*/
-#define PD_EVENT_DEVICE_ACCESSED (1<<7)
-#define PD_EVENT_POWER_STATE_CHANGE (1<<8) /* Chipset power state changed */
-#define PD_EVENT_SEND_HARD_RESET (1<<9) /* Issue a Hard Reset. */
-#define PD_EVENT_SM (1<<10) /* PD State machine event */
-#define PD_EVENT_SYSJUMP (1<<11) /* Prepare for sysjump */
+#define PD_EVENT_DEVICE_ACCESSED TASK_EVENT_CUSTOM_BIT(7)
+/* Chipset power state changed */
+#define PD_EVENT_POWER_STATE_CHANGE TASK_EVENT_CUSTOM_BIT(8)
+/* Issue a Hard Reset. */
+#define PD_EVENT_SEND_HARD_RESET TASK_EVENT_CUSTOM_BIT(9)
+/* PD State machine event */
+#define PD_EVENT_SM TASK_EVENT_CUSTOM_BIT(10)
+/* Prepare for sysjump */
+#define PD_EVENT_SYSJUMP TASK_EVENT_CUSTOM_BIT(11)
+/* First free event on PD task */
+#define PD_EVENT_FIRST_FREE_BIT 12
/* Ensure TCPC is out of low power mode before handling these events. */
#define PD_EXIT_LOW_POWER_EVENT_MASK \