devkit8000/spl: init GPMC for dm9000 in SPL
authorSimon Schwarz <simonschwarzcor@googlemail.com>
Thu, 15 Mar 2012 04:01:37 +0000 (04:01 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Tue, 27 Mar 2012 20:05:28 +0000 (22:05 +0200)
Linux crashes if the GPMC isn't configured for the dm9000.

Signed-off-by: Simon Schwarz <simonschwarzcor@gmail.com>
CC: Tom Rini <tom.rini@gmail.com>
CC: Stefano Babic <sbabic@denx.de>
CC: Wolfgang Denk <wd@denx.de>
arch/arm/include/asm/omap_common.h
board/timll/devkit8000/devkit8000.c

index 25f95b4bcdac974faae7120b7c0cbfd2d4f56e1a..85eac7db599cecb762b41fba1be51f95b3746ef3 100644 (file)
@@ -92,6 +92,7 @@ u32 omap_boot_mode(void);
 /* SPL common function s*/
 void spl_parse_image_header(const struct image_header *header);
 void omap_rev_string(void);
+void spl_board_prepare_for_linux(void);
 
 /* NAND SPL functions */
 void spl_nand_load_image(void);
index 10f189eed4a6a10439a1c2ce0b7c91d56dc203c0..dded697f95e9f9931fa3b86f68eda393135d163a 100644 (file)
@@ -73,6 +73,13 @@ int board_init(void)
        return 0;
 }
 
+/* Configure GPMC registers for DM9000 */
+static void gpmc_dm9000_config(void)
+{
+       enable_gpmc_cs_config(gpmc_net_config, &gpmc_cfg->cs[6],
+               CONFIG_DM9000_BASE, GPMC_SIZE_16M);
+}
+
 /*
  * Routine: misc_init_r
  * Description: Configure board specific parts
@@ -144,6 +151,18 @@ int board_eth_init(bd_t *bis)
 }
 #endif
 
+#ifdef CONFIG_SPL_OS_BOOT
+/*
+ * Do board specific preperation before SPL
+ * Linux boot
+ */
+void spl_board_prepare_for_linux(void)
+{
+       gpmc_dm9000_config();
+}
+
+#endif
+
 /*
  * Routine: get_board_mem_timings
  * Description: If we use SPL then there is no x-loader nor config header