| /* | 
 |  * Copyright 2013 Freescale Semiconductor, Inc. | 
 |  * | 
 |  * SPDX-License-Identifier:	GPL-2.0+ | 
 |  */ | 
 |  | 
 | #include <common.h> | 
 | #include <command.h> | 
 | #include <i2c.h> | 
 | #include <netdev.h> | 
 | #include <linux/compiler.h> | 
 | #include <asm/mmu.h> | 
 | #include <asm/processor.h> | 
 | #include <asm/cache.h> | 
 | #include <asm/immap_85xx.h> | 
 | #include <asm/fsl_law.h> | 
 | #include <asm/fsl_serdes.h> | 
 | #include <asm/fsl_portals.h> | 
 | #include <asm/fsl_liodn.h> | 
 |  | 
 | DECLARE_GLOBAL_DATA_PTR; | 
 |  | 
 | int checkboard(void) | 
 | { | 
 | 	struct cpu_type *cpu = gd->arch.cpu; | 
 |  | 
 | 	printf("Board: %sEMU\n", cpu->name); | 
 |  | 
 | 	return 0; | 
 | } | 
 |  | 
 | int board_early_init_r(void) | 
 | { | 
 | 	const unsigned int flashbase = CONFIG_SYS_FLASH_BASE; | 
 | 	int flash_esel = find_tlb_idx((void *)flashbase, 1); | 
 |  | 
 | 	/* | 
 | 	 * Remap Boot flash + PROMJET region to caching-inhibited | 
 | 	 * so that flash can be erased properly. | 
 | 	 */ | 
 |  | 
 | 	/* Flush d-cache and invalidate i-cache of any FLASH data */ | 
 | 	flush_dcache(); | 
 | 	invalidate_icache(); | 
 |  | 
 | 	if (flash_esel == -1) { | 
 | 		/* very unlikely unless something is messed up */ | 
 | 		puts("Error: Could not find TLB for FLASH BASE\n"); | 
 | 		flash_esel = 2;	/* give our best effort to continue */ | 
 | 	} else { | 
 | 		/* invalidate existing TLB entry for flash */ | 
 | 		disable_tlb(flash_esel); | 
 | 	} | 
 |  | 
 | 	set_tlb(1, flashbase, CONFIG_SYS_FLASH_BASE_PHYS, | 
 | 		MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, | 
 | 		0, flash_esel, BOOKE_PAGESZ_256M, 1); | 
 |  | 
 | 	set_liodns(); | 
 | #ifdef CONFIG_SYS_DPAA_QBMAN | 
 | 	setup_portals(); | 
 | #endif | 
 |  | 
 | 	return 0; | 
 | } | 
 |  | 
 | int misc_init_r(void) | 
 | { | 
 | 	return 0; | 
 | } | 
 |  | 
 | int ft_board_setup(void *blob, bd_t *bd) | 
 | { | 
 | 	phys_addr_t base; | 
 | 	phys_size_t size; | 
 |  | 
 | 	ft_cpu_setup(blob, bd); | 
 |  | 
 | 	base = getenv_bootm_low(); | 
 | 	size = getenv_bootm_size(); | 
 |  | 
 | 	fdt_fixup_memory(blob, (u64)base, (u64)size); | 
 |  | 
 | 	fdt_fixup_liodn(blob); | 
 | 	fdt_fixup_dr_usb(blob, bd); | 
 |  | 
 | 	return 0; | 
 | } |