Skip to content

Commit e9a1be7

Browse files
authored
Merge pull request #3034 from hathach/ctrl_fix
Fix UAC ctrl buffer alignment.
2 parents 5333d04 + 585bcbf commit e9a1be7

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,14 @@ latex
1515
*.jlink
1616
*.emSession
1717
*.ninja*
18+
*.eww
19+
*.ewp
20+
*.ewt
21+
*.ewd
22+
*.hex
23+
cmake_install.cmake
24+
CMakeCache.txt
25+
settings/
1826
.settings/
1927
.vscode/
2028
.gdb_history

src/class/audio/audio_device.c

+12-12
Original file line numberDiff line numberDiff line change
@@ -208,15 +208,15 @@ tu_static CFG_TUD_MEM_SECTION struct {
208208
#endif// CFG_TUD_AUDIO_ENABLE_EP_OUT && (USE_LINEAR_BUFFER || CFG_TUD_AUDIO_ENABLE_DECODING)
209209

210210
// Control buffers
211-
tu_static uint8_t ctrl_buf_1[CFG_TUD_AUDIO_FUNC_1_CTRL_BUF_SZ];
212-
213-
#if CFG_TUD_AUDIO > 1
214-
tu_static uint8_t ctrl_buf_2[CFG_TUD_AUDIO_FUNC_2_CTRL_BUF_SZ];
215-
#endif
216-
217-
#if CFG_TUD_AUDIO > 2
218-
tu_static uint8_t ctrl_buf_3[CFG_TUD_AUDIO_FUNC_3_CTRL_BUF_SZ];
219-
#endif
211+
tu_static CFG_TUD_MEM_SECTION struct {
212+
TUD_EPBUF_DEF(buf1, CFG_TUD_AUDIO_FUNC_1_CTRL_BUF_SZ);
213+
#if CFG_TUD_AUDIO > 1
214+
TUD_EPBUF_DEF(buf2, CFG_TUD_AUDIO_FUNC_2_CTRL_BUF_SZ);
215+
#endif
216+
#if CFG_TUD_AUDIO > 2
217+
TUD_EPBUF_DEF(buf3, CFG_TUD_AUDIO_FUNC_3_CTRL_BUF_SZ);
218+
#endif
219+
} ctrl_buf;
220220

221221
// Active alternate setting of interfaces
222222
tu_static uint8_t alt_setting_1[CFG_TUD_AUDIO_FUNC_1_N_AS_INT];
@@ -1223,18 +1223,18 @@ void audiod_init(void) {
12231223
// Initialize control buffers
12241224
switch (i) {
12251225
case 0:
1226-
audio->ctrl_buf = ctrl_buf_1;
1226+
audio->ctrl_buf = ctrl_buf.buf1;
12271227
audio->ctrl_buf_sz = CFG_TUD_AUDIO_FUNC_1_CTRL_BUF_SZ;
12281228
break;
12291229
#if CFG_TUD_AUDIO > 1 && CFG_TUD_AUDIO_FUNC_2_CTRL_BUF_SZ > 0
12301230
case 1:
1231-
audio->ctrl_buf = ctrl_buf_2;
1231+
audio->ctrl_buf = ctrl_buf.buf2;
12321232
audio->ctrl_buf_sz = CFG_TUD_AUDIO_FUNC_2_CTRL_BUF_SZ;
12331233
break;
12341234
#endif
12351235
#if CFG_TUD_AUDIO > 2 && CFG_TUD_AUDIO_FUNC_3_CTRL_BUF_SZ > 0
12361236
case 2:
1237-
audio->ctrl_buf = ctrl_buf_3;
1237+
audio->ctrl_buf = ctrl_buf.buf3;
12381238
audio->ctrl_buf_sz = CFG_TUD_AUDIO_FUNC_3_CTRL_BUF_SZ;
12391239
break;
12401240
#endif

src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c

+3-2
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ bool dcd_init(uint8_t rhport, const tusb_rhport_init_t* rh_init) {
297297

298298
dcd_reg->EPLISTSTART = (uint32_t) _dcd.ep;
299299
dcd_reg->DATABUFSTART = tu_align((uint32_t) &_dcd, TU_BIT(22)); // 22-bit alignment
300-
dcd_reg->INTSTAT |= dcd_reg->INTSTAT; // clear all pending interrupt
300+
dcd_reg->INTSTAT = dcd_reg->INTSTAT; // clear all pending interrupt
301301
dcd_reg->INTEN = INT_DEVICE_STATUS_MASK;
302302
dcd_reg->DEVCMDSTAT |= DEVCMDSTAT_DEVICE_ENABLE_MASK | DEVCMDSTAT_DEVICE_CONNECT_MASK |
303303
DEVCMDSTAT_RESET_CHANGE_MASK | DEVCMDSTAT_CONNECT_CHANGE_MASK | DEVCMDSTAT_SUSPEND_CHANGE_MASK;
@@ -563,7 +563,8 @@ void dcd_int_handler(uint8_t rhport)
563563

564564
uint32_t const cmd_stat = dcd_reg->DEVCMDSTAT;
565565

566-
uint32_t int_status = dcd_reg->INTSTAT & dcd_reg->INTEN;
566+
uint32_t int_status = dcd_reg->INTSTAT;
567+
int_status &= dcd_reg->INTEN;
567568
dcd_reg->INTSTAT = int_status; // Acknowledge handled interrupt
568569

569570
if (int_status == 0) return;

0 commit comments

Comments
 (0)