int do_coninfo (cmd_tbl_t * cmd, int flag, int argc, char *argv[]) { int l; struct list_head *list = device_get_list(); struct list_head *pos; device_t *dev; /* Scan for valid output and input devices */ puts ("List of available devices:\n"); list_for_each(pos, list) { dev = list_entry(pos, device_t, list); printf ("%-8s %08x %c%c%c ", dev->name, dev->flags, (dev->flags & DEV_FLAGS_SYSTEM) ? 'S' : '.', (dev->flags & DEV_FLAGS_INPUT) ? 'I' : '.', (dev->flags & DEV_FLAGS_OUTPUT) ? 'O' : '.'); for (l = 0; l < MAX_FILES; l++) { if (stdio_devices[l] == dev) { printf ("%s ", stdio_names[l]); } } putc ('\n'); }
static int send_device_list(struct mux_client *client, uint32_t tag) { int res = -1; plist_t dict = plist_new_dict(); plist_t devices = plist_new_array(); struct device_info *devs = NULL; struct device_info *dev; int i; int count = device_get_list(0, &devs); dev = devs; for (i = 0; devs && i < count; i++) { plist_t device = create_device_attached_plist(dev++); if (device) { plist_array_append_item(devices, device); } } if (devs) free(devs); plist_dict_insert_item(dict, "DeviceList", devices); res = send_plist_pkt(client, tag, dict); plist_free(dict); return res; }
/* Called after the relocation - use desired console functions */ int console_init_r (void) { device_t *inputdev = NULL, *outputdev = NULL; int i; struct list_head *list = device_get_list(); struct list_head *pos; device_t *dev; serial_dev = search_device (DEV_FLAGS_OUTPUT, "serial"); #ifdef CONFIG_SPLASH_SCREEN /* suppress all output if splash screen is enabled and we have a bmp to display */ if (getenv("splashimage") != NULL) gd->flags |= GD_FLG_SILENT; #endif /* Scan devices looking for input and output devices */ list_for_each(pos, list) { dev = list_entry(pos, device_t, list); if ((dev->flags & DEV_FLAGS_INPUT) && (inputdev == NULL)) { inputdev = dev; } if ((dev->flags & DEV_FLAGS_OUTPUT) && (outputdev == NULL)) { outputdev = dev; } if(inputdev && outputdev) break; }
static int start_listen(struct mux_client *client) { struct device_info *devs = NULL; struct device_info *dev; int count, i; client->state = CLIENT_LISTEN; count = device_get_list(0, &devs); dev = devs; for(i=0; devs && i < count; i++) { if(notify_device_add(client, dev++) < 0) { free(devs); return -1; } } if (devs) free(devs); return count; }