DWC3 scratch buffer functions

This commit is contained in:
xj 2024-09-12 04:33:43 -07:00
parent a509d162ec
commit 5769e98844
1 changed files with 42 additions and 3 deletions

View File

@ -97,7 +97,9 @@ void dwc3_core_exit(struct dwc3 *dwc){
int dwc3_alloc_scratch_buffers(struct dwc3 *dwc){
uint32_t length;
uint32_t len;
uintptr_t phy_addr, vir_addr;
int ret;
if (!dwc->has_hibernation)
return 0;
@ -105,15 +107,52 @@ int dwc3_alloc_scratch_buffers(struct dwc3 *dwc){
if (!dwc->nr_scratch)
return 0;
len = dwc->nr_scratch * DWC3_SCRATCHBUF_SIZE;
ret = naive_mmap(&vir_addr, &phy_addr, len, true);
if(ret != 0){
USB_LOG_ERR("could not allocate DWC3 scratch buffers!\n");
ret = -ENOMEM;
}
return 0;
dwc->scratchbuf = (void *)vir_addr;
dwc->scratch_addr = phy_addr;
return ret;
}
int dwc3_setup_scratch_buffers(struct dwc3 *dwc){
return 0;
uint32_t param;
int ret;
if (!dwc->has_hibernation)
return 0;
if (!dwc->nr_scratch)
return 0;
param = lower_32_bits(dwc->scratch_addr);
ret = dwc3_send_gadget_generic_command(dwc,
DWC3_DGCMD_SET_SCRATCHPAD_ADDR_LO, param);
if(ret != 0)
goto err_cmd;
param = upper_32_bits(dwc->scratch_addr);
ret = dwc3_send_gadget_generic_command(dwc,
DWC3_DGCMD_SET_SCRATCHPAD_ADDR_HI, param);
if(ret != 0)
goto err_cmd;
return ret;
err_cmd:
return ret;
}