Merge tag 'mips-fixes-for-2019.07' of https://gitlab.denx.de/u-boot/custodians/u...
authorTom Rini <trini@konsulko.com>
Mon, 8 Jul 2019 11:29:33 +0000 (07:29 -0400)
committerTom Rini <trini@konsulko.com>
Mon, 8 Jul 2019 11:29:33 +0000 (07:29 -0400)
- mtmips: network stability fixes for gardena-smart-gateway

arch/mips/Kconfig
arch/mips/mach-mtmips/cpu.c

index 5cb9bdf2ee7a771db534808448cf70b034b77376..e3e79455679912361d8ff9722928dddcb57b385c 100644 (file)
@@ -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
index b0a6397d68f0a5366246a4b960f11fb08239d416..7afc2c5940d3a88e3e283ba36249b4961d183a18 100644 (file)
@@ -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;
+}