Loading drivers/bcma/bcma_private.h +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ void bcma_bus_unregister(struct bcma_bus *bus); int __init bcma_bus_early_register(struct bcma_bus *bus, struct bcma_device *core_cc, struct bcma_device *core_mips); #ifdef CONFIG_PM int bcma_bus_resume(struct bcma_bus *bus); #endif /* scan.c */ int bcma_bus_scan(struct bcma_bus *bus); Loading drivers/bcma/host_pci.c +37 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,41 @@ static void bcma_host_pci_remove(struct pci_dev *dev) pci_set_drvdata(dev, NULL); } #ifdef CONFIG_PM static int bcma_host_pci_suspend(struct pci_dev *dev, pm_message_t state) { /* Host specific */ pci_save_state(dev); pci_disable_device(dev); pci_set_power_state(dev, pci_choose_state(dev, state)); return 0; } static int bcma_host_pci_resume(struct pci_dev *dev) { struct bcma_bus *bus = pci_get_drvdata(dev); int err; /* Host specific */ pci_set_power_state(dev, 0); err = pci_enable_device(dev); if (err) return err; pci_restore_state(dev); /* Bus specific */ err = bcma_bus_resume(bus); if (err) return err; return 0; } #else /* CONFIG_PM */ # define bcma_host_pci_suspend NULL # define bcma_host_pci_resume NULL #endif /* CONFIG_PM */ static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = { { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4331) }, Loading @@ -249,6 +284,8 @@ static struct pci_driver bcma_pci_bridge_driver = { .id_table = bcma_pci_bridge_tbl, .probe = bcma_host_pci_probe, .remove = bcma_host_pci_remove, .suspend = bcma_host_pci_suspend, .resume = bcma_host_pci_resume, }; int __init bcma_host_pci_init(void) Loading drivers/bcma/main.c +16 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,22 @@ int __init bcma_bus_early_register(struct bcma_bus *bus, return 0; } #ifdef CONFIG_PM int bcma_bus_resume(struct bcma_bus *bus) { struct bcma_device *core; /* Init CC core */ core = bcma_find_core(bus, BCMA_CORE_CHIPCOMMON); if (core) { bus->drv_cc.setup_done = false; bcma_core_chipcommon_init(&bus->drv_cc); } return 0; } #endif int __bcma_driver_register(struct bcma_driver *drv, struct module *owner) { drv->drv.name = drv->name; Loading Loading
drivers/bcma/bcma_private.h +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ void bcma_bus_unregister(struct bcma_bus *bus); int __init bcma_bus_early_register(struct bcma_bus *bus, struct bcma_device *core_cc, struct bcma_device *core_mips); #ifdef CONFIG_PM int bcma_bus_resume(struct bcma_bus *bus); #endif /* scan.c */ int bcma_bus_scan(struct bcma_bus *bus); Loading
drivers/bcma/host_pci.c +37 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,41 @@ static void bcma_host_pci_remove(struct pci_dev *dev) pci_set_drvdata(dev, NULL); } #ifdef CONFIG_PM static int bcma_host_pci_suspend(struct pci_dev *dev, pm_message_t state) { /* Host specific */ pci_save_state(dev); pci_disable_device(dev); pci_set_power_state(dev, pci_choose_state(dev, state)); return 0; } static int bcma_host_pci_resume(struct pci_dev *dev) { struct bcma_bus *bus = pci_get_drvdata(dev); int err; /* Host specific */ pci_set_power_state(dev, 0); err = pci_enable_device(dev); if (err) return err; pci_restore_state(dev); /* Bus specific */ err = bcma_bus_resume(bus); if (err) return err; return 0; } #else /* CONFIG_PM */ # define bcma_host_pci_suspend NULL # define bcma_host_pci_resume NULL #endif /* CONFIG_PM */ static DEFINE_PCI_DEVICE_TABLE(bcma_pci_bridge_tbl) = { { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x0576) }, { PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4331) }, Loading @@ -249,6 +284,8 @@ static struct pci_driver bcma_pci_bridge_driver = { .id_table = bcma_pci_bridge_tbl, .probe = bcma_host_pci_probe, .remove = bcma_host_pci_remove, .suspend = bcma_host_pci_suspend, .resume = bcma_host_pci_resume, }; int __init bcma_host_pci_init(void) Loading
drivers/bcma/main.c +16 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,22 @@ int __init bcma_bus_early_register(struct bcma_bus *bus, return 0; } #ifdef CONFIG_PM int bcma_bus_resume(struct bcma_bus *bus) { struct bcma_device *core; /* Init CC core */ core = bcma_find_core(bus, BCMA_CORE_CHIPCOMMON); if (core) { bus->drv_cc.setup_done = false; bcma_core_chipcommon_init(&bus->drv_cc); } return 0; } #endif int __bcma_driver_register(struct bcma_driver *drv, struct module *owner) { drv->drv.name = drv->name; Loading