forked from xuos/xiuos
DWC3 scratch buffer functions
This commit is contained in:
parent
a509d162ec
commit
5769e98844
|
@ -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){
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue