Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c50ae947 authored by Hauke Mehrtens's avatar Hauke Mehrtens Committed by John W. Linville
Browse files

bcma: unregister gpios before unloading bcma



This patch unregisters the gpio chip before bcma gets unloaded.

Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
Reported-by: default avatarPiotr Haber <phaber@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a5ffbe0a
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -94,11 +94,16 @@ void __devinit bcma_core_pci_hostmode_init(struct bcma_drv_pci *pc);
#ifdef CONFIG_BCMA_DRIVER_GPIO
#ifdef CONFIG_BCMA_DRIVER_GPIO
/* driver_gpio.c */
/* driver_gpio.c */
int bcma_gpio_init(struct bcma_drv_cc *cc);
int bcma_gpio_init(struct bcma_drv_cc *cc);
int bcma_gpio_unregister(struct bcma_drv_cc *cc);
#else
#else
static inline int bcma_gpio_init(struct bcma_drv_cc *cc)
static inline int bcma_gpio_init(struct bcma_drv_cc *cc)
{
{
	return -ENOTSUPP;
	return -ENOTSUPP;
}
}
static inline int bcma_gpio_unregister(struct bcma_drv_cc *cc)
{
	return 0;
}
#endif /* CONFIG_BCMA_DRIVER_GPIO */
#endif /* CONFIG_BCMA_DRIVER_GPIO */


#endif
#endif
+5 −0
Original line number Original line Diff line number Diff line
@@ -96,3 +96,8 @@ int bcma_gpio_init(struct bcma_drv_cc *cc)


	return gpiochip_add(chip);
	return gpiochip_add(chip);
}
}

int bcma_gpio_unregister(struct bcma_drv_cc *cc)
{
	return gpiochip_remove(&cc->gpio);
}
+7 −0
Original line number Original line Diff line number Diff line
@@ -268,6 +268,13 @@ int __devinit bcma_bus_register(struct bcma_bus *bus)
void bcma_bus_unregister(struct bcma_bus *bus)
void bcma_bus_unregister(struct bcma_bus *bus)
{
{
	struct bcma_device *cores[3];
	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[0] = bcma_find_core(bus, BCMA_CORE_MIPS_74K);
	cores[1] = bcma_find_core(bus, BCMA_CORE_PCIE);
	cores[1] = bcma_find_core(bus, BCMA_CORE_PCIE);