Root/target/linux/brcm63xx/patches-3.6/434-MIPS-BCM63XX-store-the-flash-type-in-global-variable.patch

1From f888824d352df894ab721a5ca067b0313500efe7 Mon Sep 17 00:00:00 2001
2From: Jonas Gorski <jonas.gorski@gmail.com>
3Date: Thu, 3 May 2012 12:17:54 +0200
4Subject: [PATCH 38/59] MIPS: BCM63XX: store the flash type in global variable
5
6---
7 arch/mips/bcm63xx/dev-flash.c | 36 +++++++++++++------
8 .../include/asm/mach-bcm63xx/bcm63xx_dev_flash.h | 2 +
9 2 files changed, 26 insertions(+), 12 deletions(-)
10
11--- a/arch/mips/bcm63xx/dev-flash.c
12+++ b/arch/mips/bcm63xx/dev-flash.c
13@@ -25,6 +25,8 @@
14 #include <bcm63xx_regs.h>
15 #include <bcm63xx_io.h>
16 
17+int bcm63xx_attached_flash = -1;
18+
19 static struct mtd_partition mtd_partitions[] = {
20     {
21         .name = "cfe",
22@@ -86,20 +88,23 @@ static int __init bcm63xx_detect_flash_t
23             bcm63xx_spi_flash_info[0].max_speed_hz = 16666667;
24 
25         if (val & STRAPBUS_6328_BOOT_SEL_SERIAL)
26- return BCM63XX_FLASH_TYPE_SERIAL;
27+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL;
28         else
29- return BCM63XX_FLASH_TYPE_NAND;
30+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_NAND;
31+ break;
32     case BCM6338_CPU_ID:
33     case BCM6345_CPU_ID:
34     case BCM6348_CPU_ID:
35         /* no way to auto detect so assume parallel */
36- return BCM63XX_FLASH_TYPE_PARALLEL;
37+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL;
38+ break;
39     case BCM6358_CPU_ID:
40         val = bcm_gpio_readl(GPIO_STRAPBUS_REG);
41         if (val & STRAPBUS_6358_BOOT_SEL_PARALLEL)
42- return BCM63XX_FLASH_TYPE_PARALLEL;
43+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL;
44         else
45- return BCM63XX_FLASH_TYPE_SERIAL;
46+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL;
47+ break;
48     case BCM6362_CPU_ID:
49         val = bcm_misc_readl(MISC_STRAPBUS_6362_REG);
50         if (val & STRAPBUS_6362_HSSPI_CLK_FAST)
51@@ -108,9 +113,10 @@ static int __init bcm63xx_detect_flash_t
52             bcm63xx_spi_flash_info[0].max_speed_hz = 20000000;
53 
54         if (val & STRAPBUS_6362_BOOT_SEL_SERIAL)
55- return BCM63XX_FLASH_TYPE_SERIAL;
56+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL;
57         else
58- return BCM63XX_FLASH_TYPE_NAND;
59+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_NAND;
60+ break;
61     case BCM6368_CPU_ID:
62         val = bcm_gpio_readl(GPIO_STRAPBUS_REG);
63         if (val & STRAPBUS_6368_SPI_CLK_FAST)
64@@ -118,25 +124,32 @@ static int __init bcm63xx_detect_flash_t
65 
66         switch (val & STRAPBUS_6368_BOOT_SEL_MASK) {
67         case STRAPBUS_6368_BOOT_SEL_NAND:
68- return BCM63XX_FLASH_TYPE_NAND;
69+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_NAND;
70+ break;
71         case STRAPBUS_6368_BOOT_SEL_SERIAL:
72- return BCM63XX_FLASH_TYPE_SERIAL;
73+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL;
74+ break;
75         case STRAPBUS_6368_BOOT_SEL_PARALLEL:
76- return BCM63XX_FLASH_TYPE_PARALLEL;
77+ bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL;
78+ break;
79+ default:
80+ return -EINVAL;
81         }
82     default:
83         return -EINVAL;
84     }
85+
86+ return 0;
87 }
88 
89 int __init bcm63xx_flash_register(void)
90 {
91- int flash_type;
92     u32 val;
93 
94- flash_type = bcm63xx_detect_flash_type();
95 
96- switch (flash_type) {
97+ bcm63xx_detect_flash_type();
98+
99+ switch (bcm63xx_attached_flash) {
100     case BCM63XX_FLASH_TYPE_PARALLEL:
101         /* read base address of boot chip select (0) */
102         val = bcm_mpi_readl(MPI_CSBASE_REG(0));
103@@ -157,7 +170,7 @@ int __init bcm63xx_flash_register(void)
104         return -ENODEV;
105     default:
106         pr_err("flash detection failed for BCM%x: %d\n",
107- bcm63xx_get_cpu_id(), flash_type);
108+ bcm63xx_get_cpu_id(), bcm63xx_attached_flash);
109         return -ENODEV;
110     }
111 }
112--- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
113+++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h
114@@ -7,6 +7,8 @@ enum {
115     BCM63XX_FLASH_TYPE_NAND,
116 };
117 
118+extern int bcm63xx_attached_flash;
119+
120 int __init bcm63xx_flash_register(void);
121 
122 #endif /* __BCM63XX_FLASH_H */
123

Archive Download this file



interactive