diff options
| author | gab-k <[email protected]> | 2026-03-07 21:53:01 +0100 |
|---|---|---|
| committer | gab-k <[email protected]> | 2026-03-07 21:53:01 +0100 |
| commit | 11a3c3b712eb97e5c05ed3df20dcde9451fe158d (patch) | |
| tree | fd3c2bf7a940afb3f35318c379bc2d226b5c8f8c | |
| parent | da307fa85b4002c875284bb82d7db1ca1bc7347d (diff) | |
Fix ep_ctrl_mask() corrupting opposite direction's ENDPTCTRL bits
| -rw-r--r-- | src/portable/chipidea/ci_hs/dcd_ci_hs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/portable/chipidea/ci_hs/dcd_ci_hs.c b/src/portable/chipidea/ci_hs/dcd_ci_hs.c index b9f6a8a7b..9ed75ffd9 100644 --- a/src/portable/chipidea/ci_hs/dcd_ci_hs.c +++ b/src/portable/chipidea/ci_hs/dcd_ci_hs.c @@ -388,7 +388,7 @@ TU_ATTR_ALWAYS_INLINE static inline void ep_ctrl_mask(volatile uint32_t *epctrl, uint32_t or_mask) { uint32_t value = *epctrl; if (and_mask != 0) { - value &= (dir == TUSB_DIR_OUT) ? and_mask : (and_mask << 16u); + value &= (dir == TUSB_DIR_OUT) ? (and_mask | 0xFFFF0000u) : ((and_mask << 16u) | 0x0000FFFFu); } if (or_mask != 0) { value |= (dir == TUSB_DIR_OUT) ? or_mask : (or_mask << 16u); |
