bcma: unregister gpios before unloading bcma
This patch unregisters the gpio chip before bcma gets unloaded. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Reported-by: Piotr Haber <phaber@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
a5ffbe0a19
commit
c50ae9470e
|
@ -94,11 +94,16 @@ void __devinit bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc);
|
|||
#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
|
||||
|
|
|
@ -96,3 +96,8 @@ int bcma_gpio_init(struct bcma_drv_cc *cc)
|
|||
|
||||
return gpiochip_add(chip);
|
||||
}
|
||||
|
||||
int bcma_gpio_unregister(struct bcma_drv_cc *cc)
|
||||
{
|
||||
return gpiochip_remove(&cc->gpio);
|
||||
}
|
||||
|
|
|
@ -268,6 +268,13 @@ int __devinit bcma_bus_register(struct bcma_bus *bus)
|
|||
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);
|
||||
|
|
Loading…
Reference in New Issue