Exemplo n.º 1
0
int setup_waveform_file(void)
{
#ifdef CONFIG_WAVEFORM_FILE_IN_MMC
	int mmc_dev = get_mmc_env_devno();
	ulong offset = CONFIG_WAVEFORM_FILE_OFFSET;
	ulong size = CONFIG_WAVEFORM_FILE_SIZE;
	ulong addr = CONFIG_WAVEFORM_BUF_ADDR;
	struct mmc *mmc = find_mmc_device(mmc_dev);
	uint blk_start, blk_cnt, n;

	if (!mmc) {
		printf("MMC Device %d not found\n", mmc_dev);
		return -1;
	}

	if (mmc_init(mmc)) {
		puts("MMC init failed\n");
		return -1;
	}

	blk_start = ALIGN(offset, mmc->read_bl_len) / mmc->read_bl_len;
	blk_cnt = ALIGN(size, mmc->read_bl_len) / mmc->read_bl_len;
	n = mmc->block_dev.block_read(mmc_dev, blk_start,
				      blk_cnt, (u_char *) addr);
	flush_cache((ulong) addr, blk_cnt * mmc->read_bl_len);

	return (n == blk_cnt) ? 0 : -1;
#else
	return -1;
#endif
}
Exemplo n.º 2
0
static check_file_crc(unsigned int base, unsigned int size)
{
	volatile unsigned int check_addr = 0x70300000;
	unsigned int blk_start, blk_cnt, n;
	int result = 0;
	int mmc_dev = get_mmc_env_devno();
	struct mmc *mmc = find_mmc_device(mmc_dev);

	if (!mmc) {
			printf("MMC Device %d not found\n",	mmc_dev);
			return -1;
	}

	if (mmc_init(mmc)) {
			puts("MMC init failed\n");
			return -1;
	}

	memset(check_addr, 0, size);
	blk_start = ALIGN(base, mmc->read_bl_len) / mmc->read_bl_len;
	blk_cnt   = ALIGN(size, mmc->read_bl_len) / mmc->read_bl_len;
	n = mmc->block_dev.block_read(mmc_dev, blk_start,
								blk_cnt, (u_char *)check_addr);
	flush_cache((volatile unsigned int)check_addr, blk_cnt * mmc->read_bl_len);

	*((unsigned long *)(check_addr+size-4)) = crc32(0L, (unsigned char *)check_addr, size - sizeof(unsigned long));
	unsigned long computed_re = ~crc32(0L,(unsigned char *)check_addr,size);
	result=CRC32_RESIDUE==computed_re;
	if(result)
		printf("file write and read check passed\n");
	else
		printf("file write and read check failed\n");
	return result;
}
Exemplo n.º 3
0
int setup_splash_img(void)
{
#ifdef CONFIG_SPLASH_IS_IN_MMC
	int mmc_dev = get_mmc_env_devno();
	ulong offset = CONFIG_SPLASH_IMG_OFFSET;
	ulong size = CONFIG_SPLASH_IMG_SIZE;
	ulong addr = 0;
	char *s = NULL;
	struct mmc *mmc = find_mmc_device(mmc_dev);
	uint blk_start, blk_cnt, n;

	s = getenv("splashimage");

	if (NULL == s) {
		puts("env splashimage not found!\n");
		return -1;
	}
	addr = simple_strtoul(s, NULL, 16);

	if (!mmc) {
		printf("MMC Device %d not found\n", mmc_dev);
		return -1;
	}

	if (mmc_init(mmc)) {
		puts("MMC init failed\n");
		return -1;
	}

	blk_start = ALIGN(offset, mmc->read_bl_len) / mmc->read_bl_len;
	blk_cnt = ALIGN(size, mmc->read_bl_len) / mmc->read_bl_len;
	n = mmc->block_dev.block_read(mmc_dev, blk_start,
				      blk_cnt, (u_char *) addr);
	flush_cache((ulong) addr, blk_cnt * mmc->read_bl_len);

	return (n == blk_cnt) ? 0 : -1;
#endif

	return 0;
}