Exemplo n.º 1
0
int do_flinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
#ifndef CONFIG_SYS_NO_FLASH
	ulong bank;
#endif

#ifdef CONFIG_HAS_DATAFLASH
	dataflash_print_info();
#endif

#ifndef CONFIG_SYS_NO_FLASH
	if (argc == 1) {	/* print info for all FLASH banks */
		for (bank=0; bank <CONFIG_SYS_MAX_FLASH_BANKS; ++bank) {
			printf ("\nBank # %ld: ", bank+1);

			flash_print_info (&flash_info[bank]);
		}
		return 0;
	}

	bank = simple_strtoul(argv[1], NULL, 16);
	if ((bank < 1) || (bank > CONFIG_SYS_MAX_FLASH_BANKS)) {
		printf ("Only FLASH Banks # 1 ... # %d supported\n",
			CONFIG_SYS_MAX_FLASH_BANKS);
		return 1;
	}
	printf ("\nBank # %ld: ", bank);
	flash_print_info (&flash_info[bank-1]);
#endif /* CONFIG_SYS_NO_FLASH */
	return 0;
}
Exemplo n.º 2
0
void do_flinfo (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
	ulong bank;

	if (argc == 1) {	/* print info for all FLASH banks */
		for (bank=0; bank <CFG_MAX_FLASH_BANKS; ++bank) {
			printf ("\nBank # %ld: ", bank+1);

			flash_print_info (&flash_info[bank]);
		}
		return;
	}

	bank = simple_strtoul(argv[1], NULL, 16);
	if ((bank < 1) || (bank > CFG_MAX_FLASH_BANKS)) {
		printf ("Only FLASH Banks # 1 ... # %d supported\n",
			CFG_MAX_FLASH_BANKS);
		return;
	}
	printf ("\nBank # %ld: ", bank);
	flash_print_info (&flash_info[bank-1]);
}
Exemplo n.º 3
0
unsigned long flash_init(void)
{
    ulong sector_size;
    ar9100_flash_geom_t *geom;
    ushort venid, devid;

    int i;
    
	printf("ar9100 flash_init\n");
    flash_info->flash_id = read_id();
    venid = VENDOR_ID(flash_info->flash_id);
    devid = DEVICE_ID(flash_info->flash_id);

    for (i = 0; flash_geom_tbl[i].name != NULL; i++) {
        if (venid == flash_geom_tbl[i].vendor_id &&
            devid == flash_geom_tbl[i].device_id) {
            break;
        }
    }

    geom = &flash_geom_tbl[i];
    if (geom->name == NULL) {
        printf("Unknown flash device\n");
        return -1;
    }
    flash_info->size = geom->size;	/* bytes */
    flash_info->sector_count = geom->nsectors;
    sector_size = (geom->sector_size * 16); /* One Erase block size */

    for (i = 0; i < flash_info->sector_count; i++) {
        flash_info->start[i] = CFG_FLASH_BASE + (i * sector_size);
        flash_info->protect[i] = 0;
    }
    flash_print_info(flash_info);

    return (flash_info->size);
}