summaryrefslogtreecommitdiff
path: root/firmware/target/arm/as3525/usb-drv-as3525.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/as3525/usb-drv-as3525.c')
-rw-r--r--firmware/target/arm/as3525/usb-drv-as3525.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/firmware/target/arm/as3525/usb-drv-as3525.c b/firmware/target/arm/as3525/usb-drv-as3525.c
index 4c72368a83..ca1d8cbb07 100644
--- a/firmware/target/arm/as3525/usb-drv-as3525.c
+++ b/firmware/target/arm/as3525/usb-drv-as3525.c
@@ -386,7 +386,7 @@ static void usb_phy_resume(void)
386 386
387static void setup_desc_init(struct usb_dev_setup_buf *desc) 387static void setup_desc_init(struct usb_dev_setup_buf *desc)
388{ 388{
389 struct usb_dev_setup_buf *uc_desc = UNCACHED_ADDR(desc); 389 struct usb_dev_setup_buf *uc_desc = AS3525_UNCACHED_ADDR(desc);
390 390
391 uc_desc->status = USB_DMA_DESC_BS_HST_RDY; 391 uc_desc->status = USB_DMA_DESC_BS_HST_RDY;
392 uc_desc->resv = 0xffffffff; 392 uc_desc->resv = 0xffffffff;
@@ -397,7 +397,7 @@ static void setup_desc_init(struct usb_dev_setup_buf *desc)
397static void dma_desc_init(int ep, int dir) 397static void dma_desc_init(int ep, int dir)
398{ 398{
399 struct usb_dev_dma_desc *desc = &dmadescs[ep][dir]; 399 struct usb_dev_dma_desc *desc = &dmadescs[ep][dir];
400 struct usb_dev_dma_desc *uc_desc = UNCACHED_ADDR(desc); 400 struct usb_dev_dma_desc *uc_desc = AS3525_UNCACHED_ADDR(desc);
401 401
402 endpoints[ep][dir].uc_desc = uc_desc; 402 endpoints[ep][dir].uc_desc = uc_desc;
403 403
@@ -626,15 +626,6 @@ void usb_drv_cancel_all_transfers(void)
626 restore_irq(flags); 626 restore_irq(flags);
627} 627}
628 628
629static void *virt_to_bus(void *addr)
630{
631 unsigned int x = (long)addr;
632
633 x -= (x & 0x40000000) >> 2; /* fix uncached address */
634
635 return (void*)x;
636}
637
638int usb_drv_recv(int ep, void *ptr, int len) 629int usb_drv_recv(int ep, void *ptr, int len)
639{ 630{
640 struct usb_dev_dma_desc *uc_desc = endpoints[ep][1].uc_desc; 631 struct usb_dev_dma_desc *uc_desc = endpoints[ep][1].uc_desc;
@@ -660,7 +651,7 @@ int usb_drv_recv(int ep, void *ptr, int len)
660 uc_desc->status |= USB_DMA_DESC_ZERO_LEN; 651 uc_desc->status |= USB_DMA_DESC_ZERO_LEN;
661 uc_desc->data_ptr = 0; 652 uc_desc->data_ptr = 0;
662 } else { 653 } else {
663 uc_desc->data_ptr = virt_to_bus(ptr); 654 uc_desc->data_ptr = ptr;
664 } 655 }
665 USB_OEP_DESC_PTR(ep) = (int)&dmadescs[ep][1]; 656 USB_OEP_DESC_PTR(ep) = (int)&dmadescs[ep][1];
666 USB_OEP_STS(ep) = USB_EP_STAT_OUT_RCVD; /* clear status */ 657 USB_OEP_STS(ep) = USB_EP_STAT_OUT_RCVD; /* clear status */
@@ -677,7 +668,7 @@ char *make_hex(char *data, int len)
677{ 668{
678 int i; 669 int i;
679 if (!((int)data & 0x40000000)) 670 if (!((int)data & 0x40000000))
680 data = UNCACHED_ADDR(data); /* don't pollute the cache */ 671 data = AS3525_UNCACHED_ADDR(data); /* don't pollute the cache */
681 672
682 if (len > 512) 673 if (len > 512)
683 len = 512; 674 len = 512;
@@ -712,7 +703,7 @@ void ep_send(int ep, void *ptr, int len)
712 if (len == 0) 703 if (len == 0)
713 uc_desc->status |= USB_DMA_DESC_ZERO_LEN; 704 uc_desc->status |= USB_DMA_DESC_ZERO_LEN;
714 705
715 uc_desc->data_ptr = virt_to_bus(ptr); 706 uc_desc->data_ptr = ptr;
716 707
717 USB_IEP_DESC_PTR(ep) = (int)&dmadescs[ep][0]; 708 USB_IEP_DESC_PTR(ep) = (int)&dmadescs[ep][0];
718 USB_IEP_STS(ep) = 0xffffffff; /* clear status */ 709 USB_IEP_STS(ep) = 0xffffffff; /* clear status */
@@ -785,7 +776,7 @@ static void handle_in_ep(int ep)
785 776
786static void handle_out_ep(int ep) 777static void handle_out_ep(int ep)
787{ 778{
788 struct usb_ctrlrequest *req = (void*)UNCACHED_ADDR(&setup_desc->data1); 779 struct usb_ctrlrequest *req = (void*)AS3525_UNCACHED_ADDR(&setup_desc->data1);
789 int ep_sts = USB_OEP_STS(ep) & ~USB_OEP_STS_MASK(ep); 780 int ep_sts = USB_OEP_STS(ep) & ~USB_OEP_STS_MASK(ep);
790 struct usb_dev_dma_desc *uc_desc = endpoints[ep][1].uc_desc; 781 struct usb_dev_dma_desc *uc_desc = endpoints[ep][1].uc_desc;
791 782