Exemple #1
0
static int setup_dt_blob(void *blob)
{
	char *bootargs = LINUX_KERNEL_ARG_STRING;
	char *p;
	unsigned int mem_bank = OS_MEM_BANK;
	unsigned int mem_size = OS_MEM_SIZE;
	int ret;

	if (check_dt_blob_valid(blob)) {
		dbg_log(1, "DT: the blob is not a valid fdt\n\r");
		return -1;
	}

	dbg_log(1, "\n\rUsing device tree in place at %d\n\r",
						(unsigned int)blob);

	/* set "/chosen" node */
	for (p = bootargs; *p == ' '; p++)
		;

	if (*p == '\0')
		return -1;

	ret = fixup_chosen_node(blob, p);
	if (ret)
		return ret;

	ret = fixup_memory_node(blob, &mem_bank, &mem_size);
	if (ret)
		return ret;

	return 0;
}
Exemple #2
0
static int setup_dt_blob(void *blob)
{
	unsigned int mem_bank = MEM_BANK;
	unsigned int mem_size = MEM_SIZE;
	int ret;

	if (check_dt_blob_valid(blob)) {
		dbg_info("DT: the blob is not a valid fdt\n");
		return -1;
	}

	dbg_info("\nUsing device tree in place at %x\n",
						(unsigned int)blob);

	if (bootargs) {
		char *p;

		/* set "/chosen" node */
		for (p = bootargs; *p == ' '; p++)
			;

		if (*p == '\0')
			return -1;

		ret = fixup_chosen_node(blob, p);
		if (ret)
			return ret;
	}

	ret = fixup_memory_node(blob, &mem_bank, &mem_size);
	if (ret)
		return ret;

	return 0;
}
Exemple #3
0
static int setup_dt_blob(void *blob)
{
	char *bootargs = LINUX_KERNEL_ARG_STRING;
	char *p;
	unsigned int mem_bank = MEM_BANK;
	unsigned int mem_size = MEM_SIZE;
	int ret;

	if (check_dt_blob_valid(blob)) {
		dbg_info("DT: the blob is not a valid fdt\n");
		return -1;
	}

	dbg_info("\nUsing device tree in place at %d\n",
						(unsigned int)blob);

#if defined(CONFIG_LOAD_ANDROID) && defined(CONFIG_SAMA5D3XEK)
	if (get_dm_sn() == BOARD_ID_PDA_DM)
		bootargs = cmd_line_android_pda;
	else
		bootargs = cmd_line_android;
#endif

	/* set "/chosen" node */
	for (p = bootargs; *p == ' '; p++)
		;

	if (*p == '\0')
		return -1;

	ret = fixup_chosen_node(blob, p);
	if (ret)
		return ret;

	ret = fixup_memory_node(blob, &mem_bank, &mem_size);
	if (ret)
		return ret;

	return 0;
}
static int update_image_length(struct spi_flash *flash,
			       unsigned int offset,
			       unsigned char *dest,
			       unsigned char flag)
{
	unsigned int length = flash->page_size;
	int ret;

	ret = spi_flash_read(flash, offset, length, dest);
	if (ret)
		return -1;

	if (flag == KERNEL_IMAGE)
		return kernel_size(dest);
#ifdef CONFIG_OF_LIBFDT
	else {
		ret = check_dt_blob_valid((void *)dest);
		if (!ret)
			return of_get_dt_total_size((void *)dest);
	}
#endif
	return -1;
}