diff options
| -rw-r--r-- | arch/mips/Kconfig | 2 | ||||
| -rw-r--r-- | arch/mips/mach-mtmips/cpu.c | 26 | 
2 files changed, 27 insertions, 1 deletions
| diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 5cb9bdf2ee7..e3e79455679 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -84,13 +84,13 @@ config ARCH_MTMIPS  	select DM_SERIAL  	imply DM_SPI  	imply DM_SPI_FLASH +	select LAST_STAGE_INIT  	select MIPS_TUNE_24KC  	select OF_CONTROL  	select ROM_EXCEPTION_VECTORS  	select SUPPORTS_CPU_MIPS32_R1  	select SUPPORTS_CPU_MIPS32_R2  	select SUPPORTS_LITTLE_ENDIAN -	select SYS_MALLOC_CLEAR_ON_INIT  	select SYSRESET  config ARCH_JZ47XX diff --git a/arch/mips/mach-mtmips/cpu.c b/arch/mips/mach-mtmips/cpu.c index b0a6397d68f..7afc2c5940d 100644 --- a/arch/mips/mach-mtmips/cpu.c +++ b/arch/mips/mach-mtmips/cpu.c @@ -68,3 +68,29 @@ int print_cpuinfo(void)  	return 0;  } + +int last_stage_init(void) +{ +	void *src, *dst; + +	src = malloc(SZ_64K); +	dst = malloc(SZ_64K); +	if (!src || !dst) { +		printf("Can't allocate buffer for cache cleanup copy!\n"); +		return 0; +	} + +	/* +	 * It has been noticed, that sometimes the d-cache is not in a +	 * "clean-state" when U-Boot is running on MT7688. This was +	 * detected when using the ethernet driver (which uses d-cache) +	 * and a TFTP command does not complete. Copying an area of 64KiB +	 * in DDR at a very late bootup time in U-Boot, directly before +	 * calling into the prompt, seems to fix this issue. +	 */ +	memcpy(dst, src, SZ_64K); +	free(src); +	free(dst); + +	return 0; +} | 
