#pragma once #include #define DSPICO_CMD_USB_COMMAND(command, arguments) (0xE800000000000000ull | ((u64)(command) << 48) | (arguments)) #define DSPICO_CMD_USB_COMMAND_INIT DSPICO_CMD_USB_COMMAND(1, 0) #define DSPICO_CMD_USB_COMMAND_BEGIN_SET_ADDRESS DSPICO_CMD_USB_COMMAND(2, 0) #define DSPICO_CMD_USB_COMMAND_REMOTE_WAKEUP DSPICO_CMD_USB_COMMAND(3, 0) #define DSPICO_CMD_USB_COMMAND_CONNECT DSPICO_CMD_USB_COMMAND(4, 0) #define DSPICO_CMD_USB_COMMAND_DISCONNECT DSPICO_CMD_USB_COMMAND(5, 0) #define DSPICO_CMD_USB_COMMAND_SOF_ENABLE DSPICO_CMD_USB_COMMAND(6, 0) #define DSPICO_CMD_USB_COMMAND_SOF_DISABLE DSPICO_CMD_USB_COMMAND(7, 0) #define DSPICO_CMD_USB_COMMAND_EP_CLOSE_ALL DSPICO_CMD_USB_COMMAND(8, 0) #define DSPICO_CMD_USB_COMMAND_EP_STALL(ep) DSPICO_CMD_USB_COMMAND(9, (u64)(ep) << 40) #define DSPICO_CMD_USB_COMMAND_EP_CLEAR_STALL(ep) DSPICO_CMD_USB_COMMAND(10, (u64)(ep) << 40) #define DSPICO_CMD_USB_COMMAND_EP_CLOSE(ep) DSPICO_CMD_USB_COMMAND(11, (u64)(ep) << 40) #define DSPICO_CMD_USB_COMMAND_FINISH_SET_ADDRESS(addr) DSPICO_CMD_USB_COMMAND(12, (u64)(addr) << 40) #define DSPICO_CMD_USB_COMMAND_EP_OPEN(ep, maxPktSize, xfer) DSPICO_CMD_USB_COMMAND(13, ((u64)(ep) << 40) | ((u64)((xfer) & 3) << 32) | ((u64)((maxPktSize) & 0x7FF))) #define DSPICO_CMD_USB_COMMAND_CLEAR_EVENT_QUEUE DSPICO_CMD_USB_COMMAND(14, 0) #define DSPICO_CMD_USB_COMMAND_DEINIT DSPICO_CMD_USB_COMMAND(15, 0) #define DSPICO_CMD_USB_COMMAND_BEGIN_TRANSFER(ep, offset, length) DSPICO_CMD_USB_COMMAND(16, ((u64)(ep) << 40) | ((u64)(offset) << 32) | (length)) #define DSPICO_CMD_USB_COMMAND_INTERRUPT_ENABLE DSPICO_CMD_USB_COMMAND(17, 0) #define DSPICO_CMD_USB_COMMAND_INTERRUPT_DISABLE DSPICO_CMD_USB_COMMAND(18, 0) #define DSPICO_CMD_USB_WRITE_DATA(offset, endpoint, isLast, totalLength) (0xE900000000000000ull | ((u64)(offset) << 48) | ((u64)(endpoint) << 40) | ((u64)(isLast) << 32) | (totalLength)) #define DSPICO_CMD_USB_READ_DATA(offset, endpoint) (0xEA00000000000000ull | ((u64)(offset) << 32) | ((u64)(endpoint) << 40)) #define DSPICO_CMD_USB_GET_EVENT 0xEB00000000000000ull #define DSPICO_USB_DEFAULT_COMMAND_SETTINGS (MCCNT1_DIR_READ | MCCNT1_RESET_OFF | MCCNT1_CLK_6_7_MHZ | MCCNT1_LEN_0 | MCCNT1_CMD_SCRAMBLE |\ MCCNT1_LATENCY2(0) | MCCNT1_CLOCK_SCRAMBLER | MCCNT1_READ_DATA_DESCRAMBLE | MCCNT1_LATENCY1(0))