forked from xuos/xiuos
The paddr parameter needs to be 0 in the naive_mmap function.
This commit is contained in:
parent
2f03186b0b
commit
083277e500
|
@ -336,6 +336,7 @@ static int usbh_hub_connect(struct usbh_hubport *hport, uint8_t intf)
|
||||||
|
|
||||||
/* g_hub_buf allocate virtual address and physical address*/
|
/* g_hub_buf allocate virtual address and physical address*/
|
||||||
vaddr = USB_MEM_VIRADDR_ALLOC;
|
vaddr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
paddr = 0;
|
||||||
hub->g_hub_buf = (uint8_t *)vaddr;
|
hub->g_hub_buf = (uint8_t *)vaddr;
|
||||||
rc = naive_mmap(&vaddr, &paddr, 32, true);
|
rc = naive_mmap(&vaddr, &paddr, 32, true);
|
||||||
if(rc != 0){
|
if(rc != 0){
|
||||||
|
@ -343,6 +344,7 @@ static int usbh_hub_connect(struct usbh_hubport *hport, uint8_t intf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
hub->g_hub_buf_phy = (uint8_t *)paddr;
|
hub->g_hub_buf_phy = (uint8_t *)paddr;
|
||||||
|
USB_LOG_DBG("usbh_hub_connect hub->g_hub_buf=%lx hub->g_hub_buf_phy=%08lx\n", hub->g_hub_buf, hub->g_hub_buf_phy);
|
||||||
|
|
||||||
hport->config.intf[intf].priv = hub;
|
hport->config.intf[intf].priv = hub;
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,7 @@ void usbh_rndis_run(struct usbh_rndis *rndis_class)
|
||||||
s_rndis_class_ptr = rndis_class;
|
s_rndis_class_ptr = rndis_class;
|
||||||
|
|
||||||
vaddr = USB_MEM_VIRADDR_ALLOC;
|
vaddr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
paddr = 0;
|
||||||
tx_buffer = (uint8_t *)vaddr;
|
tx_buffer = (uint8_t *)vaddr;
|
||||||
ret = naive_mmap(&vaddr, &paddr, RNDIS_ETH_BUFFER_LEN, true);
|
ret = naive_mmap(&vaddr, &paddr, RNDIS_ETH_BUFFER_LEN, true);
|
||||||
if(ret != 0){
|
if(ret != 0){
|
||||||
|
@ -156,8 +157,10 @@ void usbh_rndis_run(struct usbh_rndis *rndis_class)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
tx_buffer_phy = (uint8_t *)paddr;
|
tx_buffer_phy = (uint8_t *)paddr;
|
||||||
|
USB_LOG_DBG("usbh_rndis_run tx_buffer=%lx tx_buffer_phy=%08lx\n", tx_buffer, tx_buffer_phy);
|
||||||
|
|
||||||
vaddr = USB_MEM_VIRADDR_ALLOC;
|
vaddr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
paddr = 0;
|
||||||
rx_buffer = (uint8_t *)vaddr;
|
rx_buffer = (uint8_t *)vaddr;
|
||||||
ret = naive_mmap(&vaddr, &paddr, RNDIS_RXETH_BUFFER_LEN, true);
|
ret = naive_mmap(&vaddr, &paddr, RNDIS_RXETH_BUFFER_LEN, true);
|
||||||
if(ret != 0){
|
if(ret != 0){
|
||||||
|
@ -165,6 +168,7 @@ void usbh_rndis_run(struct usbh_rndis *rndis_class)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
rx_buffer_phy = (uint8_t *)paddr;
|
rx_buffer_phy = (uint8_t *)paddr;
|
||||||
|
USB_LOG_DBG("usbh_rndis_run rx_buffer=%lx rx_buffer_phy=%08lx\n", rx_buffer, rx_buffer_phy);
|
||||||
|
|
||||||
mutex_sem_handle = usb_osal_sem_create(0);
|
mutex_sem_handle = usb_osal_sem_create(0);
|
||||||
if (NULL == mutex_sem_handle) {
|
if (NULL == mutex_sem_handle) {
|
||||||
|
|
|
@ -292,6 +292,7 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf)
|
||||||
|
|
||||||
/* allocate virtual address and physical address*/
|
/* allocate virtual address and physical address*/
|
||||||
vaddr = USB_MEM_VIRADDR_ALLOC;
|
vaddr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
paddr = 0;
|
||||||
g_rndis_buf = (uint8_t *)vaddr;
|
g_rndis_buf = (uint8_t *)vaddr;
|
||||||
ret = naive_mmap(&vaddr, &paddr, 4096, true);
|
ret = naive_mmap(&vaddr, &paddr, 4096, true);
|
||||||
if(ret != 0){
|
if(ret != 0){
|
||||||
|
@ -299,8 +300,10 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
g_rndis_buf_phy = (uint8_t *)paddr;
|
g_rndis_buf_phy = (uint8_t *)paddr;
|
||||||
|
USB_LOG_DBG("usbh_rndis_connect g_rndis_buf=%lx g_rndis_buf_phy=%08lx\n", g_rndis_buf, g_rndis_buf_phy);
|
||||||
|
|
||||||
vaddr = USB_MEM_VIRADDR_ALLOC;
|
vaddr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
paddr = 0;
|
||||||
g_rndis_keepalive_buf = (uint8_t *)vaddr;
|
g_rndis_keepalive_buf = (uint8_t *)vaddr;
|
||||||
ret = naive_mmap(&vaddr, &paddr, 4096, true);
|
ret = naive_mmap(&vaddr, &paddr, 4096, true);
|
||||||
if(ret != 0){
|
if(ret != 0){
|
||||||
|
@ -308,6 +311,7 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
g_rndis_keepalive_buf_phy = (uint8_t *)paddr;
|
g_rndis_keepalive_buf_phy = (uint8_t *)paddr;
|
||||||
|
USB_LOG_DBG("usbh_rndis_connect g_rndis_keepalive_buf=%lx g_rndis_keepalive_buf_phy=%08lx\n", g_rndis_keepalive_buf, g_rndis_keepalive_buf_phy);
|
||||||
|
|
||||||
hport->config.intf[intf].priv = rndis_class;
|
hport->config.intf[intf].priv = rndis_class;
|
||||||
hport->config.intf[intf + 1].priv = NULL;
|
hport->config.intf[intf + 1].priv = NULL;
|
||||||
|
|
|
@ -851,6 +851,7 @@ int usbh_initialize(uint32_t id, struct usbh_bus *usb)
|
||||||
|
|
||||||
/* ep0_request_buffer allocate virtual address and physical address*/
|
/* ep0_request_buffer allocate virtual address and physical address*/
|
||||||
vaddr = USB_MEM_VIRADDR_ALLOC;
|
vaddr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
paddr = 0;
|
||||||
usb->ep0_request_buffer = (uint8_t *)vaddr;
|
usb->ep0_request_buffer = (uint8_t *)vaddr;
|
||||||
rc = naive_mmap(&vaddr, &paddr, CONFIG_USBHOST_REQUEST_BUFFER_LEN, true);
|
rc = naive_mmap(&vaddr, &paddr, CONFIG_USBHOST_REQUEST_BUFFER_LEN, true);
|
||||||
if(rc != 0){
|
if(rc != 0){
|
||||||
|
@ -858,6 +859,7 @@ int usbh_initialize(uint32_t id, struct usbh_bus *usb)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
usb->ep0_request_buffer_phy = (uint8_t *)paddr;
|
usb->ep0_request_buffer_phy = (uint8_t *)paddr;
|
||||||
|
USB_LOG_DBG("usbh_initialize ep0_request_buffer=%lx ep0_request_buffer_phy=%08lx\n", usb->ep0_request_buffer, usb->ep0_request_buffer_phy);
|
||||||
|
|
||||||
usb_slist_add_tail(&usb_buses, &(usb->list));
|
usb_slist_add_tail(&usb_buses, &(usb->list));
|
||||||
usbh_hub_initialize(usb);
|
usbh_hub_initialize(usb);
|
||||||
|
|
|
@ -697,6 +697,7 @@ static int xhci_dcbaa_alloc ( struct xhci_host *xhci ) {
|
||||||
xhci->dcbaa.context = NULL;
|
xhci->dcbaa.context = NULL;
|
||||||
|
|
||||||
dcbaap_addr = USB_MEM_VIRADDR_ALLOC;
|
dcbaap_addr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
dcbaap_phy = 0;
|
||||||
xhci->dcbaa_addr = dcbaap_addr;
|
xhci->dcbaa_addr = dcbaap_addr;
|
||||||
rc = naive_mmap(&dcbaap_addr, &dcbaap_phy, len, true);
|
rc = naive_mmap(&dcbaap_addr, &dcbaap_phy, len, true);
|
||||||
|
|
||||||
|
@ -708,6 +709,7 @@ static int xhci_dcbaa_alloc ( struct xhci_host *xhci ) {
|
||||||
|
|
||||||
xhci->dcbaa_phy = dcbaap_phy;
|
xhci->dcbaa_phy = dcbaap_phy;
|
||||||
xhci->dcbaa.context = (void *)xhci->dcbaa_addr;
|
xhci->dcbaa.context = (void *)xhci->dcbaa_addr;
|
||||||
|
USB_LOG_DBG("xhci_dcbaa_alloc xhci->dcbaa_addr=%lx xhci->dcbaa_phy=%08lx\n", xhci->dcbaa_addr, xhci->dcbaa_phy);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if ( ! xhci->dcbaa.context ) {
|
if ( ! xhci->dcbaa.context ) {
|
||||||
|
@ -729,7 +731,7 @@ static int xhci_dcbaa_alloc ( struct xhci_host *xhci ) {
|
||||||
|
|
||||||
USB_LOG_DBG("XHCI %s DCBAA at [%08lx,%08lx)\n", xhci->name,
|
USB_LOG_DBG("XHCI %s DCBAA at [%08lx,%08lx)\n", xhci->name,
|
||||||
( xhci->dcbaa.context ),
|
( xhci->dcbaa.context ),
|
||||||
( ( xhci->dcbaa.context ) + len ) );
|
( ( (uintptr_t)xhci->dcbaa.context ) + len ) );
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_writeq:
|
err_writeq:
|
||||||
|
@ -764,6 +766,7 @@ static int xhci_scratchpad_alloc ( struct xhci_host *xhci ) {
|
||||||
/* Allocate buffer to store */
|
/* Allocate buffer to store */
|
||||||
array_len = scratch->count * sizeof ( scratch->array[0] );
|
array_len = scratch->count * sizeof ( scratch->array[0] );
|
||||||
vir_addr = USB_MEM_VIRADDR_ALLOC;
|
vir_addr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
phy_addr = 0;
|
||||||
scratch->array_addr = (void *)vir_addr;
|
scratch->array_addr = (void *)vir_addr;
|
||||||
|
|
||||||
rc = naive_mmap(&vir_addr, &phy_addr, array_len, true);
|
rc = naive_mmap(&vir_addr, &phy_addr, array_len, true);
|
||||||
|
@ -773,11 +776,11 @@ static int xhci_scratchpad_alloc ( struct xhci_host *xhci ) {
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto err_alloc;
|
goto err_alloc;
|
||||||
}
|
}
|
||||||
|
USB_LOG_DBG("xhci_scratchpad_alloc vir_addr=%lx phy_addr=%08lx\n", vir_addr, phy_addr);
|
||||||
|
|
||||||
memset(scratch->array_addr, 0, array_len);
|
memset(scratch->array_addr, 0, array_len);
|
||||||
scratch->array_phy = phy_addr;
|
scratch->array_phy = phy_addr;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate memory for storing all virtual address of physical pages allocated to xHCI as scratchpad buffer.
|
* Allocate memory for storing all virtual address of physical pages allocated to xHCI as scratchpad buffer.
|
||||||
*/
|
*/
|
||||||
|
@ -795,6 +798,7 @@ static int xhci_scratchpad_alloc ( struct xhci_host *xhci ) {
|
||||||
*/
|
*/
|
||||||
for(i = 0; i < scratch->count; i++){
|
for(i = 0; i < scratch->count; i++){
|
||||||
vir_page_addr = USB_MEM_VIRADDR_ALLOC;
|
vir_page_addr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
phy_page_addr = 0;
|
||||||
scratch->sp_buffers[i] = (void *)vir_page_addr;
|
scratch->sp_buffers[i] = (void *)vir_page_addr;
|
||||||
|
|
||||||
rc = naive_mmap(&vir_page_addr, &phy_page_addr, xhci->pagesize, true);
|
rc = naive_mmap(&vir_page_addr, &phy_page_addr, xhci->pagesize, true);
|
||||||
|
@ -805,6 +809,7 @@ static int xhci_scratchpad_alloc ( struct xhci_host *xhci ) {
|
||||||
goto err_alloc_array_vir;
|
goto err_alloc_array_vir;
|
||||||
}
|
}
|
||||||
scratch->array_addr[i] = phy_page_addr;
|
scratch->array_addr[i] = phy_page_addr;
|
||||||
|
USB_LOG_DBG("xhci_scratchpad_alloc i=%d scratch->sp_buffers=%lx scratch->array_addr=%08lx\n", i, scratch->sp_buffers[i], scratch->array_addr[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -892,6 +897,7 @@ static int xhci_command_alloc ( struct xhci_host *xhci ) {
|
||||||
|
|
||||||
len = sizeof(*xhci->cmds);
|
len = sizeof(*xhci->cmds);
|
||||||
cmds_addr = USB_MEM_VIRADDR_ALLOC;
|
cmds_addr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
cmds_phy = 0;
|
||||||
xhci->cmds_addr = cmds_addr;
|
xhci->cmds_addr = cmds_addr;
|
||||||
|
|
||||||
rc = naive_mmap(&cmds_addr, &cmds_phy, len, true);
|
rc = naive_mmap(&cmds_addr, &cmds_phy, len, true);
|
||||||
|
@ -901,6 +907,7 @@ static int xhci_command_alloc ( struct xhci_host *xhci ) {
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto err_ring_alloc;
|
goto err_ring_alloc;
|
||||||
}
|
}
|
||||||
|
USB_LOG_DBG("xhci_command_alloc cmds_addr=%lx cmds_phy=%08lx\n", cmds_addr, cmds_phy);
|
||||||
|
|
||||||
xhci->cmds_phy = cmds_phy;
|
xhci->cmds_phy = cmds_phy;
|
||||||
|
|
||||||
|
@ -960,6 +967,7 @@ static int xhci_event_alloc ( struct xhci_host *xhci ) {
|
||||||
/* Allocate event ring */
|
/* Allocate event ring */
|
||||||
len = sizeof(*xhci->evts);
|
len = sizeof(*xhci->evts);
|
||||||
evts_addr = USB_MEM_VIRADDR_ALLOC;
|
evts_addr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
evts_phy = 0;
|
||||||
xhci->evts_addr = evts_addr;
|
xhci->evts_addr = evts_addr;
|
||||||
|
|
||||||
rc = naive_mmap(&evts_addr, &evts_phy, len, true);
|
rc = naive_mmap(&evts_addr, &evts_phy, len, true);
|
||||||
|
@ -979,6 +987,7 @@ static int xhci_event_alloc ( struct xhci_host *xhci ) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
xhci->evts_phy = evts_phy;
|
xhci->evts_phy = evts_phy;
|
||||||
|
USB_LOG_DBG("xhci_event_alloc xhci->evts_addr=%lx xhci->evts_phy=%08lx\n", xhci->evts_addr, xhci->evts_phy);
|
||||||
|
|
||||||
xhci->evts = (struct xhci_ring *)xhci->evts_addr;
|
xhci->evts = (struct xhci_ring *)xhci->evts_addr;
|
||||||
memset(xhci->evts, 0U, sizeof(*xhci->evts));
|
memset(xhci->evts, 0U, sizeof(*xhci->evts));
|
||||||
|
@ -987,6 +996,7 @@ static int xhci_event_alloc ( struct xhci_host *xhci ) {
|
||||||
|
|
||||||
len = sizeof(*xhci->eseg);
|
len = sizeof(*xhci->eseg);
|
||||||
eseg_addr = USB_MEM_VIRADDR_ALLOC;
|
eseg_addr = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
eseg_phy = 0;
|
||||||
xhci->eseg_addr = eseg_addr;
|
xhci->eseg_addr = eseg_addr;
|
||||||
rc = naive_mmap(&eseg_addr, &eseg_phy, len, true);
|
rc = naive_mmap(&eseg_addr, &eseg_phy, len, true);
|
||||||
if(rc != 0){
|
if(rc != 0){
|
||||||
|
@ -1004,6 +1014,7 @@ static int xhci_event_alloc ( struct xhci_host *xhci ) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
xhci->eseg_phy = eseg_phy;
|
xhci->eseg_phy = eseg_phy;
|
||||||
|
USB_LOG_DBG("xhci_event_alloc xhci->eseg_addr=%lx xhci->eseg_phy=%08lx\n", xhci->eseg_addr, xhci->eseg_phy);
|
||||||
|
|
||||||
xhci->eseg = (struct xhci_er_seg *)xhci->eseg_addr;
|
xhci->eseg = (struct xhci_er_seg *)xhci->eseg_addr;
|
||||||
|
|
||||||
|
@ -1824,14 +1835,16 @@ static int xhci_context ( struct xhci_host *xhci, struct xhci_slot *slot,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
input_vir = USB_MEM_VIRADDR_ALLOC;
|
input_vir = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
input_phy = 0;
|
||||||
input = (void *)input_vir;
|
input = (void *)input_vir;
|
||||||
memset ( input, 0, len );
|
|
||||||
rc = naive_mmap(&input_vir, &input_phy, len, true);
|
rc = naive_mmap(&input_vir, &input_phy, len, true);
|
||||||
if(rc != 0){
|
if(rc != 0){
|
||||||
USB_LOG_ERR("XHCI %s could not allocate xhci context\n", xhci->name );
|
USB_LOG_ERR("XHCI %s could not allocate xhci context\n", xhci->name );
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
goto err_alloc;
|
goto err_alloc;
|
||||||
}
|
}
|
||||||
|
USB_LOG_DBG("xhci_context input_vir=%lx input_phy=%08lx\n", input_vir, input_phy);
|
||||||
|
memset ( input, 0, len );
|
||||||
|
|
||||||
/* Populate input context */
|
/* Populate input context */
|
||||||
populate ( xhci, slot, ep, input );
|
populate ( xhci, slot, ep, input );
|
||||||
|
@ -2089,6 +2102,7 @@ int xhci_device_open ( struct xhci_host *xhci, struct xhci_endpoint *ep, int *sl
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
context_vir = USB_MEM_VIRADDR_ALLOC;
|
context_vir = USB_MEM_VIRADDR_ALLOC;
|
||||||
|
context_phy = 0;
|
||||||
slot->context_vir = context_vir;
|
slot->context_vir = context_vir;
|
||||||
rc = naive_mmap(&context_vir, &context_phy, len, true);
|
rc = naive_mmap(&context_vir, &context_phy, len, true);
|
||||||
if(rc != 0){
|
if(rc != 0){
|
||||||
|
@ -2097,6 +2111,7 @@ int xhci_device_open ( struct xhci_host *xhci, struct xhci_endpoint *ep, int *sl
|
||||||
goto err_alloc;
|
goto err_alloc;
|
||||||
}
|
}
|
||||||
slot->context_phy = context_phy;
|
slot->context_phy = context_phy;
|
||||||
|
USB_LOG_DBG("xhci_device_open slot->context_vir=%lx slot->context_phy=%08lx\n", slot->context_vir, slot->context_phy);
|
||||||
slot->context = (struct xhci_slot_context *)slot->context_vir;
|
slot->context = (struct xhci_slot_context *)slot->context_vir;
|
||||||
memset ( slot->context, 0, len );
|
memset ( slot->context, 0, len );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue