mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05:00 
			
		
		
		
	This brings ssb and bcma to wireless-testing tag master-2014-12-05 In addition it also adds the ARM-BCM5301X-Add-IRQs-to-Broadcom-s-bus- axi-in-DTS-f.patch which adds the irq number in a way it is done in the mainline kernel. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 43544
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/drivers/ssb/pcihost_wrapper.c
 | 
						|
+++ b/drivers/ssb/pcihost_wrapper.c
 | 
						|
@@ -11,15 +11,17 @@
 | 
						|
  * Licensed under the GNU/GPL. See COPYING for details.
 | 
						|
  */
 | 
						|
 
 | 
						|
+#include <linux/pm.h>
 | 
						|
 #include <linux/pci.h>
 | 
						|
 #include <linux/export.h>
 | 
						|
 #include <linux/slab.h>
 | 
						|
 #include <linux/ssb/ssb.h>
 | 
						|
 
 | 
						|
 
 | 
						|
-#ifdef CONFIG_PM
 | 
						|
-static int ssb_pcihost_suspend(struct pci_dev *dev, pm_message_t state)
 | 
						|
+#ifdef CONFIG_PM_SLEEP
 | 
						|
+static int ssb_pcihost_suspend(struct device *d)
 | 
						|
 {
 | 
						|
+	struct pci_dev *dev = to_pci_dev(d);
 | 
						|
 	struct ssb_bus *ssb = pci_get_drvdata(dev);
 | 
						|
 	int err;
 | 
						|
 
 | 
						|
@@ -28,17 +30,23 @@ static int ssb_pcihost_suspend(struct pc
 | 
						|
 		return err;
 | 
						|
 	pci_save_state(dev);
 | 
						|
 	pci_disable_device(dev);
 | 
						|
-	pci_set_power_state(dev, pci_choose_state(dev, state));
 | 
						|
+
 | 
						|
+	/* if there is a wakeup enabled child device on ssb bus,
 | 
						|
+	   enable pci wakeup posibility. */
 | 
						|
+	device_set_wakeup_enable(d, d->power.wakeup_path);
 | 
						|
+
 | 
						|
+	pci_prepare_to_sleep(dev);
 | 
						|
 
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
-static int ssb_pcihost_resume(struct pci_dev *dev)
 | 
						|
+static int ssb_pcihost_resume(struct device *d)
 | 
						|
 {
 | 
						|
+	struct pci_dev *dev = to_pci_dev(d);
 | 
						|
 	struct ssb_bus *ssb = pci_get_drvdata(dev);
 | 
						|
 	int err;
 | 
						|
 
 | 
						|
-	pci_set_power_state(dev, PCI_D0);
 | 
						|
+	pci_back_from_sleep(dev);
 | 
						|
 	err = pci_enable_device(dev);
 | 
						|
 	if (err)
 | 
						|
 		return err;
 | 
						|
@@ -49,10 +57,12 @@ static int ssb_pcihost_resume(struct pci
 | 
						|
 
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
-#else /* CONFIG_PM */
 | 
						|
-# define ssb_pcihost_suspend	NULL
 | 
						|
-# define ssb_pcihost_resume	NULL
 | 
						|
-#endif /* CONFIG_PM */
 | 
						|
+
 | 
						|
+static const struct dev_pm_ops ssb_pcihost_pm_ops = {
 | 
						|
+	SET_SYSTEM_SLEEP_PM_OPS(ssb_pcihost_suspend, ssb_pcihost_resume)
 | 
						|
+};
 | 
						|
+
 | 
						|
+#endif /* CONFIG_PM_SLEEP */
 | 
						|
 
 | 
						|
 static int ssb_pcihost_probe(struct pci_dev *dev,
 | 
						|
 			     const struct pci_device_id *id)
 | 
						|
@@ -115,8 +125,9 @@ int ssb_pcihost_register(struct pci_driv
 | 
						|
 {
 | 
						|
 	driver->probe = ssb_pcihost_probe;
 | 
						|
 	driver->remove = ssb_pcihost_remove;
 | 
						|
-	driver->suspend = ssb_pcihost_suspend;
 | 
						|
-	driver->resume = ssb_pcihost_resume;
 | 
						|
+#ifdef CONFIG_PM_SLEEP
 | 
						|
+	driver->driver.pm = &ssb_pcihost_pm_ops;
 | 
						|
+#endif
 | 
						|
 
 | 
						|
 	return pci_register_driver(driver);
 | 
						|
 }
 |