summaryrefslogtreecommitdiff
path: root/class
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2025-01-16 10:16:59 +0800
committersakumisu <[email protected]>2025-01-16 16:29:13 +0800
commit0a295ee5ebb4ae771aad2c5adbc9cb15dcef41fd (patch)
tree5d8092b65246f3a0722c38c6432adb062544f6c0 /class
parent5b74cecc4a1094198ee17fa2e9a856c5dcd73ce6 (diff)
fix(audio): fix audio feedback value caculation
Signed-off-by: sakumisu <[email protected]>
Diffstat (limited to 'class')
-rw-r--r--class/audio/usb_audio.h22
1 files changed, 11 insertions, 11 deletions
diff --git a/class/audio/usb_audio.h b/class/audio/usb_audio.h
index 0646a16b..156d1122 100644
--- a/class/audio/usb_audio.h
+++ b/class/audio/usb_audio.h
@@ -1341,18 +1341,18 @@ struct audio_v2_control_range3_param_block {
(uint8_t)((frq >> 16)), (uint8_t)((frq >> 24))
/* format 10.14 */
-#define AUDIO_UPDATE_FEEDBACK_DATA_FS(buf, freq) \
- uint32_t value = ((freq / 1000) << 14) | ((freq % 1000) << 4); \
- buf[0] = ((value >> 0U) & 0xFFU); \
- buf[1] = ((value >> 8U) & 0xFFU); \
- buf[2] = ((value >> 16U) & 0xFFU)
+#define AUDIO_UPDATE_FEEDBACK_DATA_FS(buf, freq) \
+ uint32_t value = ((freq << 10) / 1000); \
+ buf[0] = ((value << 4) & 0xFFU); \
+ buf[1] = (((value << 4) >> 8U) & 0xFFU); \
+ buf[2] = (((value << 4) >> 16U) & 0xFFU)
/* format 16.16 */
-#define AUDIO_UPDATE_FEEDBACK_DATA_HS(buf, freq) \
- uint32_t value = ((freq / 1000) << 13) | ((freq % 1000) << 3); \
- buf[0] = ((value >> 0U) & 0xFFU); \
- buf[1] = ((value >> 8U) & 0xFFU); \
- buf[2] = ((value >> 16U) & 0xFFU); \
- buf[3] = ((value >> 24U) & 0xFFU)
+#define AUDIO_UPDATE_FEEDBACK_DATA_HS(buf, freq) \
+ uint32_t value = ((freq << 13) / 1000); \
+ buf[0] = (((value & 0x00001FFFu) << 3) & 0xFFu); \
+ buf[1] = ((((value & 0x00001FFFu) << 3) >> 8) & 0xFFu); \
+ buf[2] = (((value & 0x01FFE000u) >> 13) & 0xFFu); \
+ buf[3] = (((value & 0x01FFE000u) >> 21) & 0xFFu)
#endif /* USB_AUDIO_H */