aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/bcm47xx
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2014-09-03 16:59:45 -0400
committerRalf Baechle <ralf@linux-mips.org>2014-11-24 01:44:59 -0500
commit21400f252a97755579b43a4dc95dd02cd7f0ca75 (patch)
tree54b4dad7d552e2f2840ca5f8c0ec88ee9747368d /arch/mips/bcm47xx
parent8d602dd0f984e8488ab891344ebdb6e1f3128c4a (diff)
MIPS: BCM47XX: Make ssb init NVRAM instead of bcm47xx polling it
This makes NVRAM code less bcm47xx/ssb specific allowing it to become a standalone driver in the future. A similar patch for bcma will follow when it's ready. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Acked-by: Hauke Mehrtens <hauke@hauke-m.de> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/7612/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/bcm47xx')
-rw-r--r--arch/mips/bcm47xx/nvram.c30
1 files changed, 9 insertions, 21 deletions
diff --git a/arch/mips/bcm47xx/nvram.c b/arch/mips/bcm47xx/nvram.c
index e07976bbb739..fecc5aeddd46 100644
--- a/arch/mips/bcm47xx/nvram.c
+++ b/arch/mips/bcm47xx/nvram.c
@@ -98,7 +98,14 @@ found:
98 return 0; 98 return 0;
99} 99}
100 100
101static int bcm47xx_nvram_init_from_mem(u32 base, u32 lim) 101/*
102 * On bcm47xx we need access to the NVRAM very early, so we can't use mtd
103 * subsystem to access flash. We can't even use platform device / driver to
104 * store memory offset.
105 * To handle this we provide following symbol. It's supposed to be called as
106 * soon as we get info about flash device, before any NVRAM entry is needed.
107 */
108int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
102{ 109{
103 void __iomem *iobase; 110 void __iomem *iobase;
104 int err; 111 int err;
@@ -114,25 +121,6 @@ static int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
114 return err; 121 return err;
115} 122}
116 123
117#ifdef CONFIG_BCM47XX_SSB
118static int nvram_init_ssb(void)
119{
120 struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore;
121 u32 base;
122 u32 lim;
123
124 if (mcore->pflash.present) {
125 base = mcore->pflash.window;
126 lim = mcore->pflash.window_size;
127 } else {
128 pr_err("Couldn't find supported flash memory\n");
129 return -ENXIO;
130 }
131
132 return bcm47xx_nvram_init_from_mem(base, lim);
133}
134#endif
135
136#ifdef CONFIG_BCM47XX_BCMA 124#ifdef CONFIG_BCM47XX_BCMA
137static int nvram_init_bcma(void) 125static int nvram_init_bcma(void)
138{ 126{
@@ -168,7 +156,7 @@ static int nvram_init(void)
168 switch (bcm47xx_bus_type) { 156 switch (bcm47xx_bus_type) {
169#ifdef CONFIG_BCM47XX_SSB 157#ifdef CONFIG_BCM47XX_SSB
170 case BCM47XX_BUS_TYPE_SSB: 158 case BCM47XX_BUS_TYPE_SSB:
171 return nvram_init_ssb(); 159 break;
172#endif 160#endif
173#ifdef CONFIG_BCM47XX_BCMA 161#ifdef CONFIG_BCM47XX_BCMA
174 case BCM47XX_BUS_TYPE_BCMA: 162 case BCM47XX_BUS_TYPE_BCMA: