From 57ceab57e6efb17e29c6be10ae7a3f1320261c5f Mon Sep 17 00:00:00 2001 From: songyanguang <345810377@qq.com> Date: Tue, 5 Nov 2024 10:34:24 +0800 Subject: [PATCH] Function usb_mmap instead of naive_mmap --- .../drivers/usb/components/class/hub/usbh_hub.c | 2 +- .../usb/components/class/wireless/rndis_host.c | 4 ++-- .../usb/components/class/wireless/usbh_rndis.c | 4 ++-- .../drivers/usb/components/core/usbh_core.c | 2 +- .../drivers/usb/components/mem/usb_mem.c | 7 ++++++- .../drivers/usb/components/mem/usb_mem.h | 1 + .../drivers/usb/components/port/dwc3/dwc3.c | 4 ++-- .../drivers/usb/components/port/xhci/xhci.c | 16 ++++++++-------- 8 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/hub/usbh_hub.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/hub/usbh_hub.c index fb14a72ea..624407fdb 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/hub/usbh_hub.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/hub/usbh_hub.c @@ -340,7 +340,7 @@ static int usbh_hub_connect(struct usbh_hubport *hport, uint8_t intf) vaddr = USB_MEM_VIRADDR_ALLOC; paddr = 0; hub->g_hub_buf = (uint8_t *)vaddr; - rc = naive_mmap(&vaddr, &paddr, 32, true); + rc = usb_mmap(&vaddr, &paddr, 32, true); if(rc != 0){ USB_LOG_ERR("g_hub_buf allocate error, ret: %d\n", rc); return -ENOMEM; diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/rndis_host.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/rndis_host.c index 657057c00..8af3a5c5f 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/rndis_host.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/rndis_host.c @@ -151,7 +151,7 @@ void usbh_rndis_run(struct usbh_rndis *rndis_class) vaddr = USB_MEM_VIRADDR_ALLOC; paddr = 0; tx_buffer = (uint8_t *)vaddr; - ret = naive_mmap(&vaddr, &paddr, RNDIS_ETH_BUFFER_LEN, true); + ret = usb_mmap(&vaddr, &paddr, RNDIS_ETH_BUFFER_LEN, true); if(ret != 0){ USB_LOG_ERR("tx_buf_ptr allocate error, ret: %d\n", ret); return; @@ -162,7 +162,7 @@ void usbh_rndis_run(struct usbh_rndis *rndis_class) vaddr = USB_MEM_VIRADDR_ALLOC; paddr = 0; rx_buffer = (uint8_t *)vaddr; - ret = naive_mmap(&vaddr, &paddr, RNDIS_RXETH_BUFFER_LEN, true); + ret = usb_mmap(&vaddr, &paddr, RNDIS_RXETH_BUFFER_LEN, true); if(ret != 0){ USB_LOG_ERR("rx_buf_ptr allocate error, ret: %d\n", ret); return; diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/usbh_rndis.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/usbh_rndis.c index 40da39f94..d63ea25e6 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/usbh_rndis.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/class/wireless/usbh_rndis.c @@ -294,7 +294,7 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf) vaddr = USB_MEM_VIRADDR_ALLOC; paddr = 0; g_rndis_buf = (uint8_t *)vaddr; - ret = naive_mmap(&vaddr, &paddr, 4096, true); + ret = usb_mmap(&vaddr, &paddr, 4096, true); if(ret != 0){ USB_LOG_ERR("g_rndis_buf allocate error, ret: %d\n", ret); return -ENOMEM; @@ -305,7 +305,7 @@ static int usbh_rndis_connect(struct usbh_hubport *hport, uint8_t intf) vaddr = USB_MEM_VIRADDR_ALLOC; paddr = 0; g_rndis_keepalive_buf = (uint8_t *)vaddr; - ret = naive_mmap(&vaddr, &paddr, 4096, true); + ret = usb_mmap(&vaddr, &paddr, 4096, true); if(ret != 0){ USB_LOG_ERR("g_rndis_keepalive_buf allocate error, ret: %d\n", ret); return -ENOMEM; diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/core/usbh_core.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/core/usbh_core.c index 60aac05f5..896b9052a 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/core/usbh_core.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/core/usbh_core.c @@ -854,7 +854,7 @@ int usbh_initialize(uint32_t id, struct usbh_bus *usb) vaddr = USB_MEM_VIRADDR_ALLOC; paddr = 0; usb->ep0_request_buffer = (uint8_t *)vaddr; - rc = naive_mmap(&vaddr, &paddr, CONFIG_USBHOST_REQUEST_BUFFER_LEN, true); + rc = usb_mmap(&vaddr, &paddr, CONFIG_USBHOST_REQUEST_BUFFER_LEN, true); if(rc != 0){ USB_LOG_ERR("ep0_request_buffer allocate error, ret: %d\n", rc); return -ENOMEM; diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c index a3e79d2c7..31f5cdf6a 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.c @@ -62,6 +62,11 @@ void usb_hc_free(void* ptr){ free(ptr); } +int usb_mmap(uintptr_t* vaddr, uintptr_t* paddr, int len, bool is_dev) +{ + return naive_mmap(vaddr, paddr, len, false); +} + int usb_mem_data_pool_init(){ int rc, count; uintptr_t phy_addr, vir_addr; @@ -73,7 +78,7 @@ int usb_mem_data_pool_init(){ vir_addr = USB_MEM_VIRADDR_ALLOC; usb_mem_data_pool.pages[count].vir_addr = vir_addr; - rc = naive_mmap(&vir_addr, &phy_addr, 4096, true); + rc = usb_mmap(&vir_addr, &phy_addr, 4096, true); if(rc != 0) goto mmap_error; diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h index 53aeccc6f..13cf08f4d 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/mem/usb_mem.h @@ -40,6 +40,7 @@ extern uintptr_t usb_mem_base_viraddr; void *usb_hc_malloc(size_t size); void usb_hc_free(); void *usb_hc_malloc_align(size_t align, size_t size); +int usb_mmap(uintptr_t* vaddr, uintptr_t* paddr, int len, bool is_dev); #define usb_malloc(size) usb_hc_malloc(size) #define usb_free(ptr) usb_hc_free(ptr) diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/dwc3.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/dwc3.c index f15235942..8e097791d 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/dwc3.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/dwc3/dwc3.c @@ -432,7 +432,7 @@ int dwc3_alloc_scratch_buffers(struct dwc3 *dwc){ phy_addr = 0; dwc->scratchbuf = (void *)vir_addr; - ret = naive_mmap(&vir_addr, &phy_addr, len, true); + ret = usb_mmap(&vir_addr, &phy_addr, len, true); if(ret != 0){ USB_LOG_ERR("could not allocate DWC3 scratch buffers!\n"); @@ -536,7 +536,7 @@ struct dwc3_event_buffer *dwc3_alloc_one_event_buffer(struct dwc3 *dwc, unsigned phy_addr = 0; evt->buf = (void *)vir_addr; - ret = naive_mmap(&vir_addr, &phy_addr, length, true); + ret = usb_mmap(&vir_addr, &phy_addr, length, true); if(ret != 0){ USB_LOG_ERR("could not allocate DWC3 event buffers!\n"); diff --git a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/xhci/xhci.c b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/xhci/xhci.c index fe7c96ebd..dc76dcd9c 100644 --- a/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/xhci/xhci.c +++ b/Ubiquitous/XiZi_AIoT/services/drivers/usb/components/port/xhci/xhci.c @@ -699,7 +699,7 @@ static int xhci_dcbaa_alloc ( struct xhci_host *xhci ) { dcbaap_addr = USB_MEM_VIRADDR_ALLOC; dcbaap_phy = 0; xhci->dcbaa_addr = dcbaap_addr; - rc = naive_mmap(&dcbaap_addr, &dcbaap_phy, len, true); + rc = usb_mmap(&dcbaap_addr, &dcbaap_phy, len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate DCBAA\n", xhci->name ); @@ -769,7 +769,7 @@ static int xhci_scratchpad_alloc ( struct xhci_host *xhci ) { phy_addr = 0; scratch->array_addr = (void *)vir_addr; - rc = naive_mmap(&vir_addr, &phy_addr, array_len, true); + rc = usb_mmap(&vir_addr, &phy_addr, array_len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate scratch buffer\n", xhci->name ); @@ -801,7 +801,7 @@ static int xhci_scratchpad_alloc ( struct xhci_host *xhci ) { phy_page_addr = 0; scratch->sp_buffers[i] = (void *)vir_page_addr; - rc = naive_mmap(&vir_page_addr, &phy_page_addr, xhci->pagesize, true); + rc = usb_mmap(&vir_page_addr, &phy_page_addr, xhci->pagesize, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate scratchpad buffers\n", @@ -900,7 +900,7 @@ static int xhci_command_alloc ( struct xhci_host *xhci ) { cmds_phy = 0; xhci->cmds_addr = cmds_addr; - rc = naive_mmap(&cmds_addr, &cmds_phy, len, true); + rc = usb_mmap(&cmds_addr, &cmds_phy, len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate CMD RING\n", xhci->name ); @@ -970,7 +970,7 @@ static int xhci_event_alloc ( struct xhci_host *xhci ) { evts_phy = 0; xhci->evts_addr = evts_addr; - rc = naive_mmap(&evts_addr, &evts_phy, len, true); + rc = usb_mmap(&evts_addr, &evts_phy, len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate Event RING\n", xhci->name ); @@ -998,7 +998,7 @@ static int xhci_event_alloc ( struct xhci_host *xhci ) { eseg_addr = USB_MEM_VIRADDR_ALLOC; eseg_phy = 0; xhci->eseg_addr = eseg_addr; - rc = naive_mmap(&eseg_addr, &eseg_phy, len, true); + rc = usb_mmap(&eseg_addr, &eseg_phy, len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate Event Segment\n", xhci->name ); rc = -ENOMEM; @@ -1880,7 +1880,7 @@ static int xhci_context ( struct xhci_host *xhci, struct xhci_slot *slot, input_vir = USB_MEM_VIRADDR_ALLOC; input_phy = 0; input = (void *)input_vir; - rc = naive_mmap(&input_vir, &input_phy, len, true); + rc = usb_mmap(&input_vir, &input_phy, len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate xhci context\n", xhci->name ); rc = -ENOMEM; @@ -2147,7 +2147,7 @@ int xhci_device_open ( struct xhci_host *xhci, struct xhci_endpoint *ep, int *sl context_vir = USB_MEM_VIRADDR_ALLOC; context_phy = 0; slot->context_vir = context_vir; - rc = naive_mmap(&context_vir, &context_phy, len, true); + rc = usb_mmap(&context_vir, &context_phy, len, true); if(rc != 0){ USB_LOG_ERR("XHCI %s could not allocate xhci device context\n", xhci->name ); rc = -ENOMEM;