Add dwc3_init

This commit is contained in:
songyanguang 2024-09-12 19:32:27 +08:00
parent 637408e192
commit a509d162ec
2 changed files with 61 additions and 2 deletions

View File

@ -92,6 +92,10 @@ int dwc3_core_init(struct dwc3 *dwc){
}
void dwc3_core_exit(struct dwc3 *dwc){
}
int dwc3_alloc_scratch_buffers(struct dwc3 *dwc){
uint32_t length;
@ -119,11 +123,20 @@ int dwc3_alloc_event_buffers(struct dwc3 *dwc, uint32_t length){
}
void dwc3_free_event_buffers(struct dwc3 *dwc){
}
int dwc3_event_buffers_setup(struct dwc3 *dwc){
return 0;
}
void dwc3_event_buffers_cleanup(struct dwc3 *dwc){
}
int dwc3_core_init_mode(struct dwc3 *dwc){
return 0;
@ -137,12 +150,51 @@ void dwc3_set_mode(struct dwc3 *dwc, uint32_t mode){
int dwc3_init(struct dwc3 *dwc){
return 0;
int dwc3_init(struct dwc3 *dwc)
{
int ret;
dwc3_cache_hwparams(dwc);
ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE);
if (ret) {
USB_LOG_ERR("failed to allocate event buffers\n");
return -ENOMEM;
}
ret = dwc3_core_init(dwc);
if (ret) {
USB_LOG_ERR("failed to initialize core\n");
goto core_fail;
}
ret = dwc3_event_buffers_setup(dwc);
if (ret) {
USB_LOG_ERR("failed to setup event buffers\n");
goto event_fail;
}
ret = dwc3_core_init_mode(dwc);
if (ret)
goto mode_fail;
return 0;
mode_fail:
dwc3_event_buffers_cleanup(dwc);
event_fail:
dwc3_core_exit(dwc);
core_fail:
dwc3_free_event_buffers(dwc);
return ret;
}
int dwc3_send_gadget_generic_command(struct dwc3 *dwc, unsigned cmd, uint32_t param){
uint32_t timeout = 500;
uint32_t reg;

View File

@ -888,14 +888,21 @@ void dwc3_cache_hwparams(struct dwc3 *dwc);
int dwc3_core_init(struct dwc3 *dwc);
void dwc3_core_exit(struct dwc3 *dwc);
int dwc3_alloc_scratch_buffers(struct dwc3 *dwc);
int dwc3_setup_scratch_buffers(struct dwc3 *dwc);
int dwc3_alloc_event_buffers(struct dwc3 *dwc, uint32_t length);
void dwc3_free_event_buffers(struct dwc3 *dwc);
int dwc3_event_buffers_setup(struct dwc3 *dwc);
void dwc3_event_buffers_cleanup(struct dwc3 *dwc);
int dwc3_core_init_mode(struct dwc3 *dwc);
void dwc3_set_mode(struct dwc3 *dwc, uint32_t mode);