summaryrefslogtreecommitdiffstats
path: root/drivers/bcma
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2015-01-24 12:47:19 -0500
committerKalle Valo <kvalo@codeaurora.org>2015-01-29 03:49:28 -0500
commit17fbaa6e426bf88226551374e3255f51220a22a6 (patch)
tree05aa8ee6379bd2b760d13c895bbe6c3c975a7908 /drivers/bcma
parent68fcd24503a8222657c99604bdb23713e344bee7 (diff)
bcma: simplify freeing cores (internal devices structs)
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/bcma')
-rw-r--r--drivers/bcma/main.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/bcma/main.c b/drivers/bcma/main.c
index c3c5e0a2d5be..73b2ee3de972 100644
--- a/drivers/bcma/main.c
+++ b/drivers/bcma/main.c
@@ -368,12 +368,19 @@ static void bcma_unregister_cores(struct bcma_bus *bus)
368 struct bcma_device *core, *tmp; 368 struct bcma_device *core, *tmp;
369 369
370 list_for_each_entry_safe(core, tmp, &bus->cores, list) { 370 list_for_each_entry_safe(core, tmp, &bus->cores, list) {
371 if (!core->dev_registered)
372 continue;
371 list_del(&core->list); 373 list_del(&core->list);
372 if (core->dev_registered) 374 device_unregister(&core->dev);
373 device_unregister(&core->dev);
374 } 375 }
375 if (bus->hosttype == BCMA_HOSTTYPE_SOC) 376 if (bus->hosttype == BCMA_HOSTTYPE_SOC)
376 platform_device_unregister(bus->drv_cc.watchdog); 377 platform_device_unregister(bus->drv_cc.watchdog);
378
379 /* Now noone uses internally-handled cores, we can free them */
380 list_for_each_entry_safe(core, tmp, &bus->cores, list) {
381 list_del(&core->list);
382 kfree(core);
383 }
377} 384}
378 385
379int bcma_bus_register(struct bcma_bus *bus) 386int bcma_bus_register(struct bcma_bus *bus)
@@ -467,7 +474,6 @@ int bcma_bus_register(struct bcma_bus *bus)
467 474
468void bcma_bus_unregister(struct bcma_bus *bus) 475void bcma_bus_unregister(struct bcma_bus *bus)
469{ 476{
470 struct bcma_device *cores[3];
471 int err; 477 int err;
472 478
473 err = bcma_gpio_unregister(&bus->drv_cc); 479 err = bcma_gpio_unregister(&bus->drv_cc);
@@ -478,15 +484,7 @@ void bcma_bus_unregister(struct bcma_bus *bus)
478 484
479 bcma_core_chipcommon_b_free(&bus->drv_cc_b); 485 bcma_core_chipcommon_b_free(&bus->drv_cc_b);
480 486
481 cores[0] = bcma_find_core(bus, BCMA_CORE_MIPS_74K);
482 cores[1] = bcma_find_core(bus, BCMA_CORE_PCIE);
483 cores[2] = bcma_find_core(bus, BCMA_CORE_4706_MAC_GBIT_COMMON);
484
485 bcma_unregister_cores(bus); 487 bcma_unregister_cores(bus);
486
487 kfree(cores[2]);
488 kfree(cores[1]);
489 kfree(cores[0]);
490} 488}
491 489
492/* 490/*