]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
Merge git://git.denx.de/u-boot-marvell
authorTom Rini <trini@konsulko.com>
Mon, 15 Jun 2015 12:31:11 +0000 (08:31 -0400)
committerTom Rini <trini@konsulko.com>
Mon, 15 Jun 2015 14:57:29 +0000 (10:57 -0400)
arch/arm/mach-mvebu/cpu.c
tools/kwbimage.c
tools/kwboot.c

index 04681fc5a0177db94220805653ff4d5b1e7920dc..0121db8bb5d838069981158028b2ce506ab6377f 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <netdev.h>
 #include <asm/io.h>
+#include <asm/pl310.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 
@@ -160,10 +161,17 @@ static void update_sdram_window_sizes(void)
 }
 
 #ifdef CONFIG_ARCH_CPU_INIT
+static void set_cbar(u32 addr)
+{
+       asm("mcr p15, 4, %0, c15, c0" : : "r" (addr));
+}
+
+
 int arch_cpu_init(void)
 {
        /* Linux expects the internal registers to be at 0xf1000000 */
        writel(SOC_REGS_PHY_BASE, INTREG_BASE_ADDR_REG);
+       set_cbar(SOC_REGS_PHY_BASE + 0xC000);
 
        /*
         * We need to call mvebu_mbus_probe() before calling
@@ -240,6 +248,13 @@ int cpu_eth_init(bd_t *bis)
 #ifndef CONFIG_SYS_DCACHE_OFF
 void enable_caches(void)
 {
+       struct pl310_regs *const pl310 =
+               (struct pl310_regs *)CONFIG_SYS_PL310_BASE;
+
+       /* First disable L2 cache - may still be enable from BootROM */
+       if (mvebu_soc_family() == MVEBU_SOC_A38X)
+               clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
+
        /* Avoid problem with e.g. neta ethernet driver */
        invalidate_dcache_all();
 
index 9540e7eb84fc40b67b2827869b081e3462ca0577..1ff17cab269f961dd7796f93b9c7b6b0dac3cbb2 100644 (file)
@@ -420,6 +420,18 @@ static size_t image_headersz_v1(struct image_tool_params *params,
                        *hasext = 1;
        }
 
+#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
+       if (headersz > CONFIG_SYS_SPI_U_BOOT_OFFS) {
+               fprintf(stderr, "Error: Image header (incl. SPL image) too big!\n");
+               fprintf(stderr, "header=0x%x CONFIG_SYS_SPI_U_BOOT_OFFS=0x%x!\n",
+                       (int)headersz, CONFIG_SYS_SPI_U_BOOT_OFFS);
+               fprintf(stderr, "Increase CONFIG_SYS_SPI_U_BOOT_OFFS!\n");
+               return 0;
+       } else {
+               headersz = CONFIG_SYS_SPI_U_BOOT_OFFS;
+       }
+#endif
+
        /*
         * The payload should be aligned on some reasonable
         * boundary
@@ -869,16 +881,6 @@ static int kwbimage_generate(struct image_tool_params *params,
                        sizeof(struct ext_hdr_v0);
        } else {
                alloc_len = image_headersz_v1(params, NULL);
-#if defined(CONFIG_SYS_SPI_U_BOOT_OFFS)
-               if (alloc_len > CONFIG_SYS_SPI_U_BOOT_OFFS) {
-                       fprintf(stderr, "Error: Image header (incl. SPL image) too big!\n");
-                       fprintf(stderr, "header=0x%x CONFIG_SYS_SPI_U_BOOT_OFFS=0x%x!\n",
-                               alloc_len, CONFIG_SYS_SPI_U_BOOT_OFFS);
-                       fprintf(stderr, "Increase CONFIG_SYS_SPI_U_BOOT_OFFS!\n");
-               } else {
-                       alloc_len = CONFIG_SYS_SPI_U_BOOT_OFFS;
-               }
-#endif
        }
 
        hdr = malloc(alloc_len);
index 1368b4c948ae74e977683880fc8828ea86b95bb7..af7a6ee3f6a12c04ac3782cb8703617d63375b45 100644 (file)
@@ -657,7 +657,7 @@ static void
 kwboot_usage(FILE *stream, char *progname)
 {
        fprintf(stream,
-               "Usage: %s [-d | -a | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n",
+               "Usage: %s [-d | -a | -q <req-delay> | -s <resp-timeo> | -b <image> | -D <image> ] [ -t ] [-B <baud> ] <TTY>\n",
                progname);
        fprintf(stream, "\n");
        fprintf(stream,
@@ -667,6 +667,8 @@ kwboot_usage(FILE *stream, char *progname)
                "  -D <image>: boot <image> without preamble (Dove)\n");
        fprintf(stream, "  -d: enter debug mode\n");
        fprintf(stream, "  -a: use timings for Armada XP\n");
+       fprintf(stream, "  -q <req-delay>:  use specific request-delay\n");
+       fprintf(stream, "  -s <resp-timeo>: use specific response-timeout\n");
        fprintf(stream, "\n");
        fprintf(stream, "  -t: mini terminal\n");
        fprintf(stream, "\n");
@@ -699,7 +701,7 @@ main(int argc, char **argv)
        kwboot_verbose = isatty(STDOUT_FILENO);
 
        do {
-               int c = getopt(argc, argv, "hb:ptaB:dD:");
+               int c = getopt(argc, argv, "hb:ptaB:dD:q:s:");
                if (c < 0)
                        break;
 
@@ -731,6 +733,14 @@ main(int argc, char **argv)
                        msg_rsp_timeo = KWBOOT_MSG_RSP_TIMEO_AXP;
                        break;
 
+               case 'q':
+                       msg_req_delay = atoi(optarg);
+                       break;
+
+               case 's':
+                       msg_rsp_timeo = atoi(optarg);
+                       break;
+
                case 'B':
                        speed = kwboot_tty_speed(atoi(optarg));
                        if (speed == -1)