aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ssb/scan.c
diff options
context:
space:
mode:
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;