/* * this is usb keyboard test code. */ wait_keybard_input(int c, int timeout) { int jx = 0, ix = 0; int chr = -1; extern struct stdio_dev* stdio_get_by_name(char* name); struct stdio_dev* std_dev = NULL; usb_stop(); printf("start usb ...\n"); usb_init(); std_dev = stdio_get_by_name("usbkbd"); if (std_dev) { while (ix < 20000) { if (jx++ > 100) { if (!(ix % 100)) printf(" \rWait for keyboard CTRL press %d ...", (ix/100)); jx = 0; ix++; } if (std_dev->tstc()) { chr = std_dev->getc(); printf(" \b%c", chr); if (chr == 0) break; } udelay(10); } printf("\n"); } }
struct stdio_dev *open_port(int num, int baudrate) { struct stdio_dev *port; char env_var[16]; char env_val[10]; char name[7]; if (num < 0 || num > 11) return NULL; sprintf(name, "psc%d", num); port = stdio_get_by_name(name); if (!port) return NULL; if (!test_bit(num, &initialized)) { sprintf(env_var, "psc%d_baudrate", num); sprintf(env_val, "%d", baudrate); setenv(env_var, env_val); if (port->start()) return NULL; set_bit(num, &initialized); } return port; }
struct stdio_dev *search_device(int flags, const char *name) { struct stdio_dev *dev; dev = stdio_get_by_name(name); if (dev && (dev->flags & flags)) return dev; return NULL; }
void bootmenu(void) { bm_con = stdio_get_by_name("vga"); if (bm_con && bm_con->start && bm_con->start() < 0) bm_con = NULL; if (!bm_con) bm_con = stdio_devices[stdout]; if (!bm_con) return; #if 0 console_assign(stdout, "vga"); console_assign(stderr, "vga"); #endif show_bootmenu(); }
int close_port(int num) { struct stdio_dev *port; int ret; char name[7]; if (num < 0 || num > 11) return -1; sprintf(name, "psc%d", num); port = stdio_get_by_name(name); if (!port) return -1; ret = port->stop(); clear_bit(num, &initialized); return ret; }