diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-18 01:47:39 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-18 01:47:39 +0000 |
commit | b812465bfff2111e149a44d7041c1d62d7e1519c (patch) | |
tree | 18c654b306088c1e9a19aab2f5dc444845c922c7 | |
parent | 6470a9ffd132f0315e1c62cbf01e2a1963b874ab (diff) | |
download | rockbox-b812465bfff2111e149a44d7041c1d62d7e1519c.tar.gz rockbox-b812465bfff2111e149a44d7041c1d62d7e1519c.zip |
as3525: bootloader USB mode
not working yet : an empty drive is detected
won't link on fuzev1: drivers allocated in usb_storage.c are too large
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26905 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | bootloader/sansa_as3525.c | 28 | ||||
-rw-r--r-- | firmware/export/config.h | 3 | ||||
-rw-r--r-- | firmware/target/arm/as3525/usb-drv-as3525.c | 6 | ||||
-rw-r--r-- | firmware/usb.c | 3 |
4 files changed, 38 insertions, 2 deletions
diff --git a/bootloader/sansa_as3525.c b/bootloader/sansa_as3525.c index 9248921eed..e63bb2c749 100644 --- a/bootloader/sansa_as3525.c +++ b/bootloader/sansa_as3525.c | |||
@@ -27,6 +27,11 @@ | |||
27 | #include <inttypes.h> | 27 | #include <inttypes.h> |
28 | #include "config.h" | 28 | #include "config.h" |
29 | #include "lcd.h" | 29 | #include "lcd.h" |
30 | #ifdef USE_ROCKBOX_USB | ||
31 | #include "usb.h" | ||
32 | #include "usb_core.h" | ||
33 | #include "sysfont.h" | ||
34 | #endif /* USE_ROCKBOX_USB */ | ||
30 | #include "backlight.h" | 35 | #include "backlight.h" |
31 | #include "button-target.h" | 36 | #include "button-target.h" |
32 | #include "common.h" | 37 | #include "common.h" |
@@ -82,6 +87,29 @@ void main(void) | |||
82 | if(ret < 0) | 87 | if(ret < 0) |
83 | error(EATA,ret); | 88 | error(EATA,ret); |
84 | 89 | ||
90 | #ifdef USE_ROCKBOX_USB | ||
91 | usb_init(); | ||
92 | if(usb_detect() == USB_INSERTED) | ||
93 | { | ||
94 | const char msg[] = "Bootloader USB mode"; | ||
95 | reset_screen(); | ||
96 | lcd_putsxy( (LCD_WIDTH - (SYSFONT_WIDTH * sizeof(msg))) / 2, | ||
97 | (LCD_HEIGHT - SYSFONT_HEIGHT) / 2, msg); | ||
98 | lcd_update(); | ||
99 | |||
100 | usb_core_enable_driver(USB_DRIVER_MASS_STORAGE, true); | ||
101 | usb_enable(true); | ||
102 | |||
103 | while(usb_detect() == USB_INSERTED) | ||
104 | sleep(HZ); | ||
105 | |||
106 | usb_enable(false); | ||
107 | |||
108 | reset_screen(); | ||
109 | lcd_update(); | ||
110 | } | ||
111 | #endif /* USE_ROCKBOX_USB */ | ||
112 | |||
85 | if(!disk_init(IF_MV(0))) | 113 | if(!disk_init(IF_MV(0))) |
86 | panicf("disk_init failed!"); | 114 | panicf("disk_init failed!"); |
87 | 115 | ||
diff --git a/firmware/export/config.h b/firmware/export/config.h index 5be2c99dcb..22178e4bd4 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h | |||
@@ -916,7 +916,8 @@ Lyre prototype 1 */ | |||
916 | #if (defined(TOSHIBA_GIGABEAT_S) || \ | 916 | #if (defined(TOSHIBA_GIGABEAT_S) || \ |
917 | (defined(CREATIVE_ZVx) || \ | 917 | (defined(CREATIVE_ZVx) || \ |
918 | defined(CPU_TCC77X) || defined(CPU_TCC780X))) || \ | 918 | defined(CPU_TCC77X) || defined(CPU_TCC780X))) || \ |
919 | (CONFIG_USBOTG == USBOTG_JZ4740) || defined(IPOD_NANO2G) | 919 | (CONFIG_USBOTG == USBOTG_JZ4740) || defined(IPOD_NANO2G) || \ |
920 | CONFIG_USBOTG == USBOTG_AS3525 | ||
920 | #define USB_ENABLE_STORAGE | 921 | #define USB_ENABLE_STORAGE |
921 | #endif | 922 | #endif |
922 | 923 | ||
diff --git a/firmware/target/arm/as3525/usb-drv-as3525.c b/firmware/target/arm/as3525/usb-drv-as3525.c index 45dadebc85..fe3b38fdb5 100644 --- a/firmware/target/arm/as3525/usb-drv-as3525.c +++ b/firmware/target/arm/as3525/usb-drv-as3525.c | |||
@@ -684,8 +684,10 @@ int usb_drv_recv(int ep, void *ptr, int len) | |||
684 | endpoints[ep][1].len = len; | 684 | endpoints[ep][1].len = len; |
685 | endpoints[ep][1].rc = -1; | 685 | endpoints[ep][1].rc = -1; |
686 | 686 | ||
687 | #ifndef BOOTLOADER | ||
687 | /* remove data buffer from cache */ | 688 | /* remove data buffer from cache */ |
688 | invalidate_dcache(); | 689 | invalidate_dcache(); |
690 | #endif | ||
689 | /* DMA setup */ | 691 | /* DMA setup */ |
690 | uc_desc->status = USB_DMA_DESC_BS_HST_RDY | | 692 | uc_desc->status = USB_DMA_DESC_BS_HST_RDY | |
691 | USB_DMA_DESC_LAST | | 693 | USB_DMA_DESC_LAST | |
@@ -734,8 +736,10 @@ void ep_send(int ep, void *ptr, int len) | |||
734 | endpoints[ep][0].len = len; | 736 | endpoints[ep][0].len = len; |
735 | endpoints[ep][0].rc = -1; | 737 | endpoints[ep][0].rc = -1; |
736 | 738 | ||
739 | #ifndef BOOTLOADER | ||
737 | /* Make sure data is committed to memory */ | 740 | /* Make sure data is committed to memory */ |
738 | clean_dcache(); | 741 | clean_dcache(); |
742 | #endif | ||
739 | 743 | ||
740 | logf("xx%s\n", make_hex(ptr, len)); | 744 | logf("xx%s\n", make_hex(ptr, len)); |
741 | 745 | ||
@@ -843,10 +847,12 @@ static void handle_out_ep(int ep) | |||
843 | logf("EP%d OUT token, st:%08x len:%d frm:%x data=%s epstate=%d\n", ep, | 847 | logf("EP%d OUT token, st:%08x len:%d frm:%x data=%s epstate=%d\n", ep, |
844 | dma_mst, dma_len, dma_frm, make_hex(uc_desc->data_ptr, dma_len), | 848 | dma_mst, dma_len, dma_frm, make_hex(uc_desc->data_ptr, dma_len), |
845 | endpoints[ep][1].state); | 849 | endpoints[ep][1].state); |
850 | #ifndef BOOTLOADER | ||
846 | /* | 851 | /* |
847 | * If parts of the just dmaed range are in cache, dump them now. | 852 | * If parts of the just dmaed range are in cache, dump them now. |
848 | */ | 853 | */ |
849 | dump_dcache_range(uc_desc->data_ptr, dma_len); | 854 | dump_dcache_range(uc_desc->data_ptr, dma_len); |
855 | #endif | ||
850 | } else{ | 856 | } else{ |
851 | logf("EP%d OUT token, st:%08x frm:%x (no data)\n", ep, | 857 | logf("EP%d OUT token, st:%08x frm:%x (no data)\n", ep, |
852 | dma_mst, dma_frm); | 858 | dma_mst, dma_frm); |
diff --git a/firmware/usb.c b/firmware/usb.c index e27a3c3dc2..baf6af7d69 100644 --- a/firmware/usb.c +++ b/firmware/usb.c | |||
@@ -51,7 +51,8 @@ | |||
51 | (defined(HAVE_USBSTACK) && (defined(OLYMPUS_MROBE_500))) || \ | 51 | (defined(HAVE_USBSTACK) && (defined(OLYMPUS_MROBE_500))) || \ |
52 | (defined(HAVE_USBSTACK) && (defined(IPOD_NANO2G))) || \ | 52 | (defined(HAVE_USBSTACK) && (defined(IPOD_NANO2G))) || \ |
53 | defined(CPU_TCC77X) || defined(CPU_TCC780X) || \ | 53 | defined(CPU_TCC77X) || defined(CPU_TCC780X) || \ |
54 | (CONFIG_USBOTG == USBOTG_JZ4740) | 54 | (CONFIG_USBOTG == USBOTG_JZ4740) || \ |
55 | (defined(USE_ROCKBOX_USB) && CONFIG_USBOTG == USBOTG_AS3525) | ||
55 | #define USB_FULL_INIT | 56 | #define USB_FULL_INIT |
56 | #endif | 57 | #endif |
57 | 58 | ||