]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wirel...
authorJohn W. Linville <linville@tuxdriver.com>
Wed, 6 Feb 2013 18:55:44 +0000 (13:55 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 6 Feb 2013 18:55:44 +0000 (13:55 -0500)
1  2 
drivers/bcma/bcma_private.h
drivers/bcma/main.c
drivers/ssb/main.c

index 19e3fbfd5757368790980dfec756135e981b0eaf,966ce4d0579181d1055d25c502e4de9d92029114..cb0c4548857282c3bc6b38cfa836ad9474370604
@@@ -22,7 -22,7 +22,7 @@@
  struct bcma_bus;
  
  /* main.c */
 -int __devinit bcma_bus_register(struct bcma_bus *bus);
 +int bcma_bus_register(struct bcma_bus *bus);
  void bcma_bus_unregister(struct bcma_bus *bus);
  int __init bcma_bus_early_register(struct bcma_bus *bus,
                                   struct bcma_device *core_cc,
@@@ -87,18 -87,23 +87,23 @@@ u32 bcma_pcie_read(struct bcma_drv_pci 
  extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc);
  
  #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
 -bool __devinit bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc);
 -void __devinit bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc);
 +bool bcma_core_pci_is_in_hostmode(struct bcma_drv_pci *pc);
 +void bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc);
  #endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */
  
  #ifdef CONFIG_BCMA_DRIVER_GPIO
  /* driver_gpio.c */
  int bcma_gpio_init(struct bcma_drv_cc *cc);
+ int bcma_gpio_unregister(struct bcma_drv_cc *cc);
  #else
  static inline int bcma_gpio_init(struct bcma_drv_cc *cc)
  {
        return -ENOTSUPP;
  }
+ static inline int bcma_gpio_unregister(struct bcma_drv_cc *cc)
+ {
+       return 0;
+ }
  #endif /* CONFIG_BCMA_DRIVER_GPIO */
  
  #endif
diff --combined drivers/bcma/main.c
index 4a92f647b58bdef4fa28f28b772d960036469c78,e08b9c6044484c29c0bad62a472770c48b345109..324f9debda88007ac096320dae35340db99e3fe5
@@@ -192,7 -192,7 +192,7 @@@ static void bcma_unregister_cores(struc
                platform_device_unregister(bus->drv_cc.watchdog);
  }
  
 -int __devinit bcma_bus_register(struct bcma_bus *bus)
 +int bcma_bus_register(struct bcma_bus *bus)
  {
        int err;
        struct bcma_device *core;
  void bcma_bus_unregister(struct bcma_bus *bus)
  {
        struct bcma_device *cores[3];
+       int err;
+       err = bcma_gpio_unregister(&bus->drv_cc);
+       if (err == -EBUSY)
+               bcma_err(bus, "Some GPIOs are still in use.\n");
+       else if (err)
+               bcma_err(bus, "Can not unregister GPIO driver: %i\n", err);
  
        cores[0] = bcma_find_core(bus, BCMA_CORE_MIPS_74K);
        cores[1] = bcma_find_core(bus, BCMA_CORE_PCIE);
diff --combined drivers/ssb/main.c
index 772ad9b5c304fc986b459c4f4c6c5513e70ecd16,7140c88738f41f435136b6a3530c2ea06844c7b6..24dc331b4701efd796381882e635c6ef791c45cf
@@@ -443,6 -443,15 +443,15 @@@ static void ssb_devices_unregister(stru
  
  void ssb_bus_unregister(struct ssb_bus *bus)
  {
+       int err;
+       err = ssb_gpio_unregister(bus);
+       if (err == -EBUSY)
+               ssb_dprintk(KERN_ERR PFX "Some GPIOs are still in use.\n");
+       else if (err)
+               ssb_dprintk(KERN_ERR PFX
+                           "Can not unregister GPIO driver: %i\n", err);
        ssb_buses_lock();
        ssb_devices_unregister(bus);
        list_del(&bus->list);
@@@ -548,7 -557,7 +557,7 @@@ error
  }
  
  /* Needs ssb_buses_lock() */
 -static int __devinit ssb_attach_queued_buses(void)
 +static int ssb_attach_queued_buses(void)
  {
        struct ssb_bus *bus, *n;
        int err = 0;
@@@ -761,9 -770,9 +770,9 @@@ out
        return err;
  }
  
 -static int __devinit ssb_bus_register(struct ssb_bus *bus,
 -                                    ssb_invariants_func_t get_invariants,
 -                                    unsigned long baseaddr)
 +static int ssb_bus_register(struct ssb_bus *bus,
 +                          ssb_invariants_func_t get_invariants,
 +                          unsigned long baseaddr)
  {
        int err;
  
@@@ -851,7 -860,8 +860,7 @@@ err_disable_xtal
  }
  
  #ifdef CONFIG_SSB_PCIHOST
 -int __devinit ssb_bus_pcibus_register(struct ssb_bus *bus,
 -                                    struct pci_dev *host_pci)
 +int ssb_bus_pcibus_register(struct ssb_bus *bus, struct pci_dev *host_pci)
  {
        int err;
  
@@@ -874,9 -884,9 +883,9 @@@ EXPORT_SYMBOL(ssb_bus_pcibus_register)
  #endif /* CONFIG_SSB_PCIHOST */
  
  #ifdef CONFIG_SSB_PCMCIAHOST
 -int __devinit ssb_bus_pcmciabus_register(struct ssb_bus *bus,
 -                                       struct pcmcia_device *pcmcia_dev,
 -                                       unsigned long baseaddr)
 +int ssb_bus_pcmciabus_register(struct ssb_bus *bus,
 +                             struct pcmcia_device *pcmcia_dev,
 +                             unsigned long baseaddr)
  {
        int err;
  
@@@ -896,8 -906,9 +905,8 @@@ EXPORT_SYMBOL(ssb_bus_pcmciabus_registe
  #endif /* CONFIG_SSB_PCMCIAHOST */
  
  #ifdef CONFIG_SSB_SDIOHOST
 -int __devinit ssb_bus_sdiobus_register(struct ssb_bus *bus,
 -                                     struct sdio_func *func,
 -                                     unsigned int quirks)
 +int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func,
 +                           unsigned int quirks)
  {
        int err;
  
  EXPORT_SYMBOL(ssb_bus_sdiobus_register);
  #endif /* CONFIG_SSB_PCMCIAHOST */
  
 -int __devinit ssb_bus_ssbbus_register(struct ssb_bus *bus,
 -                                    unsigned long baseaddr,
 -                                    ssb_invariants_func_t get_invariants)
 +int ssb_bus_ssbbus_register(struct ssb_bus *bus, unsigned long baseaddr,
 +                          ssb_invariants_func_t get_invariants)
  {
        int err;