summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-05-19 18:08:32 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-05-19 18:08:32 +0000
commit2e188a4dad1ffb158e7f0db6f2224beeba9c872d (patch)
treedf60604495c23c62cf44767c32e1f311ef18736c
parentbae0756acf71aa8a59c6c4f4aed302bef79e4678 (diff)
downloadrockbox-2e188a4dad1ffb158e7f0db6f2224beeba9c872d.tar.gz
rockbox-2e188a4dad1ffb158e7f0db6f2224beeba9c872d.zip
revert part of r26176 to avoid large static allocation
we still need to convert uncached addresses to physical addresses git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26177 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/as3525/usb-drv-as3525.c13
-rw-r--r--firmware/usbstack/usb_storage.c2
2 files changed, 12 insertions, 3 deletions
diff --git a/firmware/target/arm/as3525/usb-drv-as3525.c b/firmware/target/arm/as3525/usb-drv-as3525.c
index 740526407d..4c72368a83 100644
--- a/firmware/target/arm/as3525/usb-drv-as3525.c
+++ b/firmware/target/arm/as3525/usb-drv-as3525.c
@@ -626,6 +626,15 @@ 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
629int usb_drv_recv(int ep, void *ptr, int len) 638int usb_drv_recv(int ep, void *ptr, int len)
630{ 639{
631 struct usb_dev_dma_desc *uc_desc = endpoints[ep][1].uc_desc; 640 struct usb_dev_dma_desc *uc_desc = endpoints[ep][1].uc_desc;
@@ -651,7 +660,7 @@ int usb_drv_recv(int ep, void *ptr, int len)
651 uc_desc->status |= USB_DMA_DESC_ZERO_LEN; 660 uc_desc->status |= USB_DMA_DESC_ZERO_LEN;
652 uc_desc->data_ptr = 0; 661 uc_desc->data_ptr = 0;
653 } else { 662 } else {
654 uc_desc->data_ptr = ptr; 663 uc_desc->data_ptr = virt_to_bus(ptr);
655 } 664 }
656 USB_OEP_DESC_PTR(ep) = (int)&dmadescs[ep][1]; 665 USB_OEP_DESC_PTR(ep) = (int)&dmadescs[ep][1];
657 USB_OEP_STS(ep) = USB_EP_STAT_OUT_RCVD; /* clear status */ 666 USB_OEP_STS(ep) = USB_EP_STAT_OUT_RCVD; /* clear status */
@@ -703,7 +712,7 @@ void ep_send(int ep, void *ptr, int len)
703 if (len == 0) 712 if (len == 0)
704 uc_desc->status |= USB_DMA_DESC_ZERO_LEN; 713 uc_desc->status |= USB_DMA_DESC_ZERO_LEN;
705 714
706 uc_desc->data_ptr = ptr; 715 uc_desc->data_ptr = virt_to_bus(ptr);
707 716
708 USB_IEP_DESC_PTR(ep) = (int)&dmadescs[ep][0]; 717 USB_IEP_DESC_PTR(ep) = (int)&dmadescs[ep][0];
709 USB_IEP_STS(ep) = 0xffffffff; /* clear status */ 718 USB_IEP_STS(ep) = 0xffffffff; /* clear status */
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c
index 8917a67141..3373bf41f3 100644
--- a/firmware/usbstack/usb_storage.c
+++ b/firmware/usbstack/usb_storage.c
@@ -449,7 +449,7 @@ void usb_storage_init_connection(void)
449 state = WAITING_FOR_COMMAND; 449 state = WAITING_FOR_COMMAND;
450 450
451#if CONFIG_CPU == IMX31L || defined(CPU_TCC77X) || defined(CPU_TCC780X) || \ 451#if CONFIG_CPU == IMX31L || defined(CPU_TCC77X) || defined(CPU_TCC780X) || \
452 defined(BOOTLOADER) || CONFIG_CPU == DM320 || CONFIG_CPU == AS3525 452 defined(BOOTLOADER) || CONFIG_CPU == DM320
453 static unsigned char _cbw_buffer[MAX_CBW_SIZE] 453 static unsigned char _cbw_buffer[MAX_CBW_SIZE]
454 USB_DEVBSS_ATTR __attribute__((aligned(32))); 454 USB_DEVBSS_ATTR __attribute__((aligned(32)));
455 cbw_buffer = (void *)_cbw_buffer; 455 cbw_buffer = (void *)_cbw_buffer;