From 9a97177b907330971aa7bf41855fafc2602e1c18 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jogo@openwrt.org>
Date: Sun, 22 Dec 2013 12:26:57 +0100
Subject: [PATCH 51/56] MIPS: BCM63XX: detect flash type early and store the
 result

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
---
 arch/mips/bcm63xx/dev-flash.c                          | 10 +++++++---
 arch/mips/bcm63xx/prom.c                               |  4 ++++
 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h |  2 ++
 3 files changed, 13 insertions(+), 3 deletions(-)

--- a/arch/mips/bcm63xx/dev-flash.c
+++ b/arch/mips/bcm63xx/dev-flash.c
@@ -22,6 +22,8 @@
 #include <bcm63xx_regs.h>
 #include <bcm63xx_io.h>
 
+static int flash_type;
+
 static struct mtd_partition mtd_partitions[] = {
 	{
 		.name		= "cfe",
@@ -108,13 +110,15 @@ static int __init bcm63xx_detect_flash_t
 	}
 }
 
+void __init bcm63xx_flash_detect(void)
+{
+	flash_type = bcm63xx_detect_flash_type();
+}
+
 int __init bcm63xx_flash_register(void)
 {
-	int flash_type;
 	u32 val;
 
-	flash_type = bcm63xx_detect_flash_type();
-
 	switch (flash_type) {
 	case BCM63XX_FLASH_TYPE_PARALLEL:
 		/* read base address of boot chip select (0) */
--- a/arch/mips/bcm63xx/prom.c
+++ b/arch/mips/bcm63xx/prom.c
@@ -17,6 +17,7 @@
 #include <bcm63xx_cpu.h>
 #include <bcm63xx_io.h>
 #include <bcm63xx_regs.h>
+#include <bcm63xx_dev_flash.h>
 
 void __init prom_init(void)
 {
@@ -52,6 +53,9 @@ void __init prom_init(void)
 	reg &= ~mask;
 	bcm_perf_writel(reg, PERF_CKCTL_REG);
 
+	/* detect and setup flash access */
+	bcm63xx_flash_detect();
+
 	/* do low level board init */
 	board_prom_init();
 
--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
@@ -8,6 +8,8 @@ enum {
 	BCM63XX_FLASH_TYPE_NAND,
 };
 
+void bcm63xx_flash_detect(void);
+
 int __init bcm63xx_flash_register(void);
 
 #endif /* __BCM63XX_FLASH_H */
