diff options
Diffstat (limited to 'drivers/bcma')
| -rw-r--r-- | drivers/bcma/bcma_private.h | 5 | ||||
| -rw-r--r-- | drivers/bcma/driver_chipcommon_nflash.c | 2 | ||||
| -rw-r--r-- | drivers/bcma/driver_gpio.c | 5 | ||||
| -rw-r--r-- | drivers/bcma/main.c | 7 | 
4 files changed, 18 insertions, 1 deletions
diff --git a/drivers/bcma/bcma_private.h b/drivers/bcma/bcma_private.h index 19e3fbfd575..cb0c4548857 100644 --- a/drivers/bcma/bcma_private.h +++ b/drivers/bcma/bcma_private.h @@ -94,11 +94,16 @@ void 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 diff --git a/drivers/bcma/driver_chipcommon_nflash.c b/drivers/bcma/driver_chipcommon_nflash.c index dbda91e4dff..1f0b83e18f6 100644 --- a/drivers/bcma/driver_chipcommon_nflash.c +++ b/drivers/bcma/driver_chipcommon_nflash.c @@ -21,7 +21,7 @@ int bcma_nflash_init(struct bcma_drv_cc *cc)  	struct bcma_bus *bus = cc->core->bus;  	if (bus->chipinfo.id != BCMA_CHIP_ID_BCM4706 && -	    cc->core->id.rev != 0x38) { +	    cc->core->id.rev != 38) {  		bcma_err(bus, "NAND flash on unsupported board!\n");  		return -ENOTSUPP;  	} diff --git a/drivers/bcma/driver_gpio.c b/drivers/bcma/driver_gpio.c index 9a6f585da2d..71f755c06fc 100644 --- a/drivers/bcma/driver_gpio.c +++ b/drivers/bcma/driver_gpio.c @@ -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); +} diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c index 4a92f647b58..324f9debda8 100644 --- a/drivers/bcma/main.c +++ b/drivers/bcma/main.c @@ -268,6 +268,13 @@ int 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);  |