int main(void) { current_port= ((u32) use_usb_port1)!=0; // changes IOS vector interrupt to crt0.s routine //swi_mload_led_on(); syscall_base=swi_mload_get_syscall_base(); os_sync_after_write((void *) &syscall_base, 4); swi_mload_call_func((void *) copy_int_vect, (void *) swi_mload_get_ios_base(), NULL); heaphandle = os_heap_create(heapspace, sizeof(heapspace)); void* timer1_queuespace = os_heap_alloc(heaphandle, 0x80); timer1_queuehandle = os_message_queue_create(timer1_queuespace, 32); if(tiny_ehci_init()<0) return -1; ehc_loop(); return 0; }
DSTATUS disk_initialize(BYTE drv, WORD *ss) { s32 r; int i; while(1) { dbgprintf("FFS:Initializing TinyEHCI...\n"); tiny_ehci_init(); udelay(50000); dbgprintf("FFS:Discovering EHCI devices...\n"); i = 1; while(ehci_discover() == -ENODEV) { dbgprintf("FFS:Waiting for device to become ready (%d)\n", i); udelay(4000); i++; } r = USBStorage_Init(); if(r == 0) break; } s_cnt = USBStorage_Get_Capacity(&s_size); *ss = s_size; dbgprintf("FFS:Drive size: %dMB SectorSize:%d\n", s_cnt / 1024 * s_size / 1024, s_size); return r; }