aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/bcma/host_pci.c42
1 files changed, 16 insertions, 26 deletions
diff --git a/drivers/bcma/host_pci.c b/drivers/bcma/host_pci.c
index c1ca9e3ada5..86dfeea77e1 100644
--- a/drivers/bcma/host_pci.c
+++ b/drivers/bcma/host_pci.c
@@ -235,41 +235,32 @@ static void bcma_host_pci_remove(struct pci_dev *dev)
235} 235}
236 236
237#ifdef CONFIG_PM 237#ifdef CONFIG_PM
238static int bcma_host_pci_suspend(struct pci_dev *dev, pm_message_t state) 238static int bcma_host_pci_suspend(struct device *dev)
239{ 239{
240 struct bcma_bus *bus = pci_get_drvdata(dev); 240 struct pci_dev *pdev = to_pci_dev(dev);
241 241 struct bcma_bus *bus = pci_get_drvdata(pdev);
242 /* Host specific */
243 pci_save_state(dev);
244 pci_disable_device(dev);
245 pci_set_power_state(dev, pci_choose_state(dev, state));
246 242
247 bus->mapped_core = NULL; 243 bus->mapped_core = NULL;
244
248 return 0; 245 return 0;
249} 246}
250 247
251static int bcma_host_pci_resume(struct pci_dev *dev) 248static int bcma_host_pci_resume(struct device *dev)
252{ 249{
253 struct bcma_bus *bus = pci_get_drvdata(dev); 250 struct pci_dev *pdev = to_pci_dev(dev);
254 int err; 251 struct bcma_bus *bus = pci_get_drvdata(pdev);
255 252
256 /* Host specific */ 253 return bcma_bus_resume(bus);
257 pci_set_power_state(dev, 0); 254}
258 err = pci_enable_device(dev);
259 if (err)
260 return err;
261 pci_restore_state(dev);
262 255
263 /* Bus specific */ 256static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bcma_host_pci_suspend,
264 err = bcma_bus_resume(bus); 257 bcma_host_pci_resume);
265 if (err) 258#define BCMA_PM_OPS (&bcma_pm_ops)
266 return err;
267 259
268 return 0;
269}
270#else /* CONFIG_PM */ 260#else /* CONFIG_PM */
271# define bcma_host_pci_suspend NULL 261
272# define bcma_host_pci_resume NULL 262#define BCMA_PM_OPS NULL
263
273#endif /* CONFIG_PM */ 264#endif /* CONFIG_PM */
274 265
275static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = { 266static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = {
@@ -287,8 +278,7 @@ static struct pci_driver bcma_pci_bridge_driver = {
287 .id_table = bcma_pci_bridge_tbl, 278 .id_table = bcma_pci_bridge_tbl,
288 .probe = bcma_host_pci_probe, 279 .probe = bcma_host_pci_probe,
289 .remove = bcma_host_pci_remove, 280 .remove = bcma_host_pci_remove,
290 .suspend = bcma_host_pci_suspend, 281 .driver.pm = BCMA_PM_OPS,
291 .resume = bcma_host_pci_resume,
292}; 282};
293 283
294int __init bcma_host_pci_init(void) 284int __init bcma_host_pci_init(void)