aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb/scan.c
diff options
context:
space:
mode:
authorAlbert Herranz <albert_herranz@yahoo.es>2009-09-08 13:30:12 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-09-09 11:19:00 -0400
commit24ea602e183ca20a7577ebe253323d0e5d0f9847 (patch)
tree9cd9c0b3832cac2f155e633fbed1ce2bf3331f9a /drivers/ssb/scan.c
parentf020979d5d7c9816c071d0aedf60a889fa4fae40 (diff)
ssb: Implement SDIO host bus support
Add support for communicating with a Sonics Silicon Backplane through a SDIO interface, as found in the Nintendo Wii WLAN daughter card. The Nintendo Wii WLAN card includes a custom Broadcom 4318 chip with a SDIO host interface. Signed-off-by: Albert Herranz <albert_herranz@yahoo.es> Signed-off-by: Michael Buesch <mb@bu3sch.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/ssb/scan.c')
-rw-r--r--drivers/ssb/scan.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/ssb/scan.c b/drivers/ssb/scan.c
index 63ee5cfbefbb..b74212d698c7 100644
--- a/drivers/ssb/scan.c
+++ b/drivers/ssb/scan.c
@@ -175,6 +175,9 @@ static u32 scan_read32(struct ssb_bus *bus, u8 current_coreidx,
175 } else 175 } else
176 ssb_pcmcia_switch_segment(bus, 0); 176 ssb_pcmcia_switch_segment(bus, 0);
177 break; 177 break;
178 case SSB_BUSTYPE_SDIO:
179 offset += current_coreidx * SSB_CORE_SIZE;
180 return ssb_sdio_scan_read32(bus, offset);
178 } 181 }
179 return readl(bus->mmio + offset); 182 return readl(bus->mmio + offset);
180} 183}
@@ -188,6 +191,8 @@ static int scan_switchcore(struct ssb_bus *bus, u8 coreidx)
188 return ssb_pci_switch_coreidx(bus, coreidx); 191 return ssb_pci_switch_coreidx(bus, coreidx);
189 case SSB_BUSTYPE_PCMCIA: 192 case SSB_BUSTYPE_PCMCIA:
190 return ssb_pcmcia_switch_coreidx(bus, coreidx); 193 return ssb_pcmcia_switch_coreidx(bus, coreidx);
194 case SSB_BUSTYPE_SDIO:
195 return ssb_sdio_scan_switch_coreidx(bus, coreidx);
191 } 196 }
192 return 0; 197 return 0;
193} 198}
@@ -206,6 +211,8 @@ void ssb_iounmap(struct ssb_bus *bus)
206 SSB_BUG_ON(1); /* Can't reach this code. */ 211 SSB_BUG_ON(1); /* Can't reach this code. */
207#endif 212#endif
208 break; 213 break;
214 case SSB_BUSTYPE_SDIO:
215 break;
209 } 216 }
210 bus->mmio = NULL; 217 bus->mmio = NULL;
211 bus->mapped_device = NULL; 218 bus->mapped_device = NULL;
@@ -230,6 +237,10 @@ static void __iomem *ssb_ioremap(struct ssb_bus *bus,
230 SSB_BUG_ON(1); /* Can't reach this code. */ 237 SSB_BUG_ON(1); /* Can't reach this code. */
231#endif 238#endif
232 break; 239 break;
240 case SSB_BUSTYPE_SDIO:
241 /* Nothing to ioremap in the SDIO case, just fake it */
242 mmio = (void __iomem *)baseaddr;
243 break;
233 } 244 }
234 245
235 return mmio; 246 return mmio;