aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-01-13 17:58:41 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-01-17 09:54:08 -0500
commit7d5869e78f4c9d32f834dadefbb7dcb3c9d4d85f (patch)
tree136560d132409e801be0c0e0ba00da7ea9695d05
parent685a4ef0df23b97eea1842c2698da9a2e35fc976 (diff)
bcma: connect the bcma bus suspend/resume to the bcma driver suspend/resume
Now the low-level driver actually gets informed that it is getting suspended and resumed. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/bcma/main.c19
-rw-r--r--drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c2
-rw-r--r--include/linux/bcma/bcma.h2
3 files changed, 21 insertions, 2 deletions
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
index b711d9d634a7..febbc0a1222a 100644
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
@@ -243,6 +243,16 @@ int __init bcma_bus_early_register(struct bcma_bus *bus,
243#ifdef CONFIG_PM 243#ifdef CONFIG_PM
244int bcma_bus_suspend(struct bcma_bus *bus) 244int bcma_bus_suspend(struct bcma_bus *bus)
245{ 245{
246 struct bcma_device *core;
247
248 list_for_each_entry(core, &bus->cores, list) {
249 struct device_driver *drv = core->dev.driver;
250 if (drv) {
251 struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv);
252 if (adrv->suspend)
253 adrv->suspend(core);
254 }
255 }
246 return 0; 256 return 0;
247} 257}
248 258
@@ -257,6 +267,15 @@ int bcma_bus_resume(struct bcma_bus *bus)
257 bcma_core_chipcommon_init(&bus->drv_cc); 267 bcma_core_chipcommon_init(&bus->drv_cc);
258 } 268 }
259 269
270 list_for_each_entry(core, &bus->cores, list) {
271 struct device_driver *drv = core->dev.driver;
272 if (drv) {
273 struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv);
274 if (adrv->resume)
275 adrv->resume(core);
276 }
277 }
278
260 return 0; 279 return 0;
261} 280}
262#endif 281#endif
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
index d106576ce338..213130afdaf7 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -1135,7 +1135,7 @@ static int brcms_pci_suspend(struct pci_dev *pdev)
1135 return pci_set_power_state(pdev, PCI_D3hot); 1135 return pci_set_power_state(pdev, PCI_D3hot);
1136} 1136}
1137 1137
1138static int brcms_suspend(struct bcma_device *pdev, pm_message_t state) 1138static int brcms_suspend(struct bcma_device *pdev)
1139{ 1139{
1140 struct brcms_info *wl; 1140 struct brcms_info *wl;
1141 struct ieee80211_hw *hw; 1141 struct ieee80211_hw *hw;
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h
index f4b8346b1a33..83c209f39493 100644
--- a/include/linux/bcma/bcma.h
+++ b/include/linux/bcma/bcma.h
@@ -162,7 +162,7 @@ struct bcma_driver {
162 162
163 int (*probe)(struct bcma_device *dev); 163 int (*probe)(struct bcma_device *dev);
164 void (*remove)(struct bcma_device *dev); 164 void (*remove)(struct bcma_device *dev);
165 int (*suspend)(struct bcma_device *dev, pm_message_t state); 165 int (*suspend)(struct bcma_device *dev);
166 int (*resume)(struct bcma_device *dev); 166 int (*resume)(struct bcma_device *dev);
167 void (*shutdown)(struct bcma_device *dev); 167 void (*shutdown)(struct bcma_device *dev);
168 168