int usb_init(void) { int result; running = 0; dev_index = 0; asynch_allowed = 1; usb_hub_reset(); /* init low_level USB */ printf("USB: "); result = usb_lowlevel_init(); /* if lowlevel init is OK, scan the bus for devices * i.e. search HUBs and configure them */ if (result == 0) { printf("scanning bus for devices... "); running = 1; usb_scan_devices(); usb_started = 1; return 0; } else { printf("Error, couldn't init Lowlevel part\n"); usb_started = 0; return -1; } }
int usb_init(void) { int result; running = 0; dev_index = 0; asynch_allowed = 1; usb_hub_reset(); /* init low_level USB */ result = usb_lowlevel_init(); /* if lowlevel init is OK, scan the bus for devices i.e. search HUBs and configure them */ if(result == 0) { printf("scanning bus for devices...\n "); running = 1; /*empty port not scan*/ /*printf("port_connect_status:%x,usb_sel:%x\n",port_connect_status,usb_sel);*/ if (port_connect_status != usb_sel) { printf("Error, couldn't init Lowlevel part\n"); return -1; } result = usb_scan_devices(); if (result < 0 ) return -1; else return 0; } else { printf("Error, couldn't init Lowlevel part\n"); return -1; } }
int usb_post_init(int port) { int result=0; #if 0 //#if defined (CONFIG_TITANIA8) || defined(CONFIG_JANUS2) // Force USB to use MIU0. *((unsigned char volatile *)(0xBF200000+0x600*2+0xF0*2+1)) = (*((unsigned char volatile *)(0xBF200000+0x600*2+0xF0*2+1)) & 0xF1) ; *((unsigned char volatile *)(0xBF200000+0x1200*2+0xF0*2+1)) = (*((unsigned char volatile *)(0xBF200000+0x1200*2+0xF0*2+1)) & 0xF1) ; #endif if ((port==0)||(port==1)||(port==2)) UsbPortSelect=port; else UsbPortSelect=0; //running=0; dev_index=0; asynch_allowed=1; printf("Check USB port[%d]:\n", port); //usb_hub_reset(); /* init low_level USB */ //retry: result = usb_lowlevel_postinit(); /* if lowlevel init is OK, scan the bus for devices i.e. search HUBs and configure them */ if(result==0) { printf("scanning bus for devices... "); //running=1; result=usb_scan_devices(); if(result) { printf("Error, bad or unsupported device...\n"); usb_started = 0; return -1; } usb_started = 1; #if (CONFIG_COMMANDS & CFG_CMD_FAT) { char cmd_buf[32]; extern int snprintf(char *str, size_t size, const char *fmt, ...); memset(cmd_buf, 0 , sizeof(cmd_buf)); snprintf(cmd_buf, sizeof(cmd_buf), "setenv %s", ENV_PARTNO); run_command(cmd_buf, 0); } #endif return 0; } else { printf("Error, couldn't init Lowlevel part\n"); usb_started = 0; return -1; } }
int usb_preinit(int port) { int result=0; #if 0 //#if defined (CONFIG_TITANIA8) || defined(CONFIG_JANUS2) // Force USB to use MIU0. *((unsigned char volatile *)(0xBF200000+0x600*2+0xF0*2+1)) = (*((unsigned char volatile *)(0xBF200000+0x600*2+0xF0*2+1)) & 0xF1) ; *((unsigned char volatile *)(0xBF200000+0x1200*2+0xF0*2+1)) = (*((unsigned char volatile *)(0xBF200000+0x1200*2+0xF0*2+1)) & 0xF1) ; #endif if ((port==0)||(port==1)||(port==2)) UsbPortSelect=port; else UsbPortSelect=0; //running=0; dev_index=0; asynch_allowed=1; printf("Preinit USB port[%d]:\n", port); usb_hub_reset(); /* init low_level USB */ //retry: result = usb_lowlevel_preinit(); /* if lowlevel init is OK, scan the bus for devices i.e. search HUBs and configure them */ if(result==0) { printf("scanning bus for devices... "); //running=1; result=usb_scan_devices(); if(result) { printf("Error, bad or unsupported device...\n"); usb_started = 0; return -1; } usb_started = 1; return 0; } else { //printf("Error, couldn't init Lowlevel part\n"); usb_started = 0; return -1; } }
int main(int argc, char** argv) { int bus, dev; int actual_bus, actual_dev; char devname[_POSIX_PATH_MAX]; long strtol_tmp1; char* strtol_tmp2; if (3 != argc) { fprintf(stderr, "usb_chmod: wrong number of arguments\n"); fprintf(stderr, " : usage, usb_chmod <bus> <dev>\n"); exit(EXIT_FAILURE); } if (('\0' == argv[1][0]) || ('\0' == argv[2][0])) { fprintf(stderr, "usb_chmod: invalid arguments\n"); exit(EXIT_FAILURE); } strtol_tmp1 = strtol(argv[1], &strtol_tmp2, 10); if ('\0' != *strtol_tmp2) { fprintf(stderr, "usbchmod: invalid first argument, not a number\n"); exit(EXIT_FAILURE); } if (strtol_tmp1 > INT_MAX) { fprintf(stderr, "usbchmod: invalid first argument, number too large\n"); exit(EXIT_FAILURE); } bus = (int) strtol_tmp1; strtol_tmp1 = strtol(argv[2], &strtol_tmp2, 10); if ('\0' != *strtol_tmp2) { fprintf(stderr, "usbchmod: invalid second argument, not a number\n"); exit(EXIT_FAILURE); } if (strtol_tmp1 > INT_MAX) { fprintf(stderr, "usbchmod: invalid second argument, number too large\n"); exit(EXIT_FAILURE); } dev = (int) strtol_tmp1; if (!usb_scan_devices(&actual_bus, &actual_dev)) { fprintf(stderr, "usb_chmod: failed to find eCos USB test application\n"); exit(EXIT_FAILURE); } if ((bus != actual_bus) || (dev != actual_dev)) { fprintf(stderr, "usbchmod: mismatch between specified and actual USB identifiers.\n"); fprintf(stderr, " : eCos test application is at %03d/%03d, not %03d/%03d\n", actual_bus, actual_dev, bus, dev); exit(EXIT_FAILURE); } if (_POSIX_PATH_MAX == snprintf(devname, _POSIX_PATH_MAX, "/proc/bus/usb/" "%03d/%03d", actual_bus, actual_dev)) { fprintf(stderr, "usbchmod: internal error, buffer overflow\n"); exit(EXIT_FAILURE); } if (0 != chmod(devname, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)) { int old_errno = errno; fprintf(stderr, "usbchmod: failed to modify access rights on %s\n", devname); if ((old_errno >= 0) && (old_errno < sys_nerr)) { fprintf(stderr, " : %s\n", sys_errlist[old_errno]); } exit(EXIT_FAILURE); } return EXIT_SUCCESS; }