14 #include <xcore/channel.h>
16 #include <xud_device.h>
18 #include "rtos_osal.h"
19 #include "rtos_driver_rpc.h"
24 #define RTOS_USB_ENDPOINT_COUNT_MAX 12
32 #define RTOS_USB_OUT_EP 0
33 #define RTOS_USB_IN_EP 1
40 #define RTOS_USB_ISR_CALLBACK_ATTR __attribute__((fptrgroup("rtos_usb_isr_cb_fptr_grp")))
44 rtos_usb_setup_packet,
46 } rtos_usb_packet_type_t;
68 typedef void (*
rtos_usb_isr_cb_t)(
rtos_usb_t *ctx,
void *app_data, uint32_t ep_address,
size_t xfer_len, rtos_usb_packet_type_t packet_type, XUD_Result_t res);
98 size_t endpoint_count;
103 int sof_interrupt_enabled;
107 XUD_PwrConfig power_source;
108 XUD_BusSpeed_t speed;
113 rtos_osal_thread_t hil_thread;
131 uint32_t endpoint_addr,
165 uint32_t endpoint_addr,
184 uint32_t endpoint_addr);
194 static inline XUD_Result_t rtos_usb_device_address_set(
rtos_usb_t *ctx,
198 return XUD_SetDevAddr(addr);
207 static inline void rtos_usb_endpoint_state_reset(
rtos_usb_t *ctx,
208 uint32_t endpoint_addr)
211 XUD_ResetEpStateByAddr(endpoint_addr);
222 static inline void rtos_usb_endpoint_stall_set(
rtos_usb_t *ctx,
223 uint32_t endpoint_addr)
226 XUD_SetStallByAddr(endpoint_addr);
235 static inline void rtos_usb_endpoint_stall_clear(
rtos_usb_t *ctx,
236 uint32_t endpoint_addr)
239 XUD_ClearStallByAddr(endpoint_addr);
276 size_t endpoint_count,
277 XUD_EpType endpoint_out_type[],
278 XUD_EpType endpoint_in_type[],
279 XUD_BusSpeed_t speed,
280 XUD_PwrConfig power_source,
281 unsigned interrupt_core_id,
282 int sof_interrupt_core_id);
310 uint32_t io_core_mask,
336 uint32_t endpoint_addr,
366 uint32_t io_core_mask);
void rtos_usb_simple_init(rtos_usb_t *ctx, uint32_t io_core_mask)
Definition: rtos_usb.c:427
void rtos_usb_start(rtos_usb_t *ctx, size_t endpoint_count, XUD_EpType endpoint_out_type[], XUD_EpType endpoint_in_type[], XUD_BusSpeed_t speed, XUD_PwrConfig power_source, unsigned interrupt_core_id, int sof_interrupt_core_id)
Definition: rtos_usb.c:273
void rtos_usb_init(rtos_usb_t *ctx, uint32_t io_core_mask, rtos_usb_isr_cb_t isr_cb, void *isr_app_data)
Definition: rtos_usb.c:324
XUD_Result_t rtos_usb_endpoint_transfer_start(rtos_usb_t *ctx, uint32_t endpoint_addr, uint8_t *buffer, size_t len)
Definition: rtos_usb.c:199
#define RTOS_USB_ISR_CALLBACK_ATTR
Definition: rtos_usb.h:40
#define RTOS_USB_ENDPOINT_COUNT_MAX
Definition: rtos_usb.h:24
int rtos_usb_endpoint_ready(rtos_usb_t *ctx, uint32_t endpoint_addr, unsigned timeout)
Definition: rtos_usb.c:162
XUD_BusSpeed_t rtos_usb_endpoint_reset(rtos_usb_t *ctx, uint32_t endpoint_addr)
Definition: rtos_usb.c:225
XUD_Result_t rtos_usb_simple_transfer_complete(rtos_usb_t *ctx, uint32_t endpoint_addr, size_t *len, unsigned timeout)
Definition: rtos_usb.c:408
void(* rtos_usb_isr_cb_t)(rtos_usb_t *ctx, void *app_data, uint32_t ep_address, size_t xfer_len, rtos_usb_packet_type_t packet_type, XUD_Result_t res)
Definition: rtos_usb.h:68
XUD_Result_t rtos_usb_all_endpoints_ready(rtos_usb_t *ctx, unsigned timeout)
Definition: rtos_usb.c:182
Definition: rtos_usb.h:76
uint8_t ep_num
Definition: rtos_usb.h:87
size_t len
Definition: rtos_usb.h:81
uint8_t ep_address
Definition: rtos_usb.h:83
uint8_t dir
Definition: rtos_usb.h:85
rtos_usb_t * usb_ctx
Definition: rtos_usb.h:78
int8_t res
Definition: rtos_usb.h:89
Definition: rtos_usb.h:97