Commit 7d5869e7 authored by Linus Torvalds's avatar Linus Torvalds Committed by John W. Linville

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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 685a4ef0
...@@ -243,6 +243,16 @@ int __init bcma_bus_early_register(struct bcma_bus *bus, ...@@ -243,6 +243,16 @@ int __init bcma_bus_early_register(struct bcma_bus *bus,
#ifdef CONFIG_PM #ifdef CONFIG_PM
int bcma_bus_suspend(struct bcma_bus *bus) int bcma_bus_suspend(struct bcma_bus *bus)
{ {
struct bcma_device *core;
list_for_each_entry(core, &bus->cores, list) {
struct device_driver *drv = core->dev.driver;
if (drv) {
struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv);
if (adrv->suspend)
adrv->suspend(core);
}
}
return 0; return 0;
} }
...@@ -257,6 +267,15 @@ int bcma_bus_resume(struct bcma_bus *bus) ...@@ -257,6 +267,15 @@ int bcma_bus_resume(struct bcma_bus *bus)
bcma_core_chipcommon_init(&bus->drv_cc); bcma_core_chipcommon_init(&bus->drv_cc);
} }
list_for_each_entry(core, &bus->cores, list) {
struct device_driver *drv = core->dev.driver;
if (drv) {
struct bcma_driver *adrv = container_of(drv, struct bcma_driver, drv);
if (adrv->resume)
adrv->resume(core);
}
}
return 0; return 0;
} }
#endif #endif
......
...@@ -1135,7 +1135,7 @@ static int brcms_pci_suspend(struct pci_dev *pdev) ...@@ -1135,7 +1135,7 @@ static int brcms_pci_suspend(struct pci_dev *pdev)
return pci_set_power_state(pdev, PCI_D3hot); return pci_set_power_state(pdev, PCI_D3hot);
} }
static int brcms_suspend(struct bcma_device *pdev, pm_message_t state) static int brcms_suspend(struct bcma_device *pdev)
{ {
struct brcms_info *wl; struct brcms_info *wl;
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
......
...@@ -162,7 +162,7 @@ struct bcma_driver { ...@@ -162,7 +162,7 @@ struct bcma_driver {
int (*probe)(struct bcma_device *dev); int (*probe)(struct bcma_device *dev);
void (*remove)(struct bcma_device *dev); void (*remove)(struct bcma_device *dev);
int (*suspend)(struct bcma_device *dev, pm_message_t state); int (*suspend)(struct bcma_device *dev);
int (*resume)(struct bcma_device *dev); int (*resume)(struct bcma_device *dev);
void (*shutdown)(struct bcma_device *dev); void (*shutdown)(struct bcma_device *dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment