Skip to content

Commit

Permalink
bcma: move code for core registration into separate function
Browse files Browse the repository at this point in the history
This cleans code a bit and will us to register cores in other places as
well. The only difference with this patch is using "core_index" for
setting device name.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
rmilecki authored and linvjw committed Sep 9, 2014
1 parent ed364ab commit 6e094bd
Showing 1 changed file with 36 additions and 31 deletions.
67 changes: 36 additions & 31 deletions drivers/bcma/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,42 @@ static void bcma_release_core_dev(struct device *dev)
kfree(core);
}

static int bcma_register_cores(struct bcma_bus *bus)
static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
{
int err;

core->dev.release = bcma_release_core_dev;
core->dev.bus = &bcma_bus_type;
dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);

switch (bus->hosttype) {
case BCMA_HOSTTYPE_PCI:
core->dev.parent = &bus->host_pci->dev;
core->dma_dev = &bus->host_pci->dev;
core->irq = bus->host_pci->irq;
break;
case BCMA_HOSTTYPE_SOC:
core->dev.dma_mask = &core->dev.coherent_dma_mask;
core->dma_dev = &core->dev;
break;
case BCMA_HOSTTYPE_SDIO:
break;
}

err = device_register(&core->dev);
if (err) {
bcma_err(bus, "Could not register dev for core 0x%03X\n",
core->id.id);
put_device(&core->dev);
return;
}
core->dev_registered = true;
}

static int bcma_register_devices(struct bcma_bus *bus)
{
struct bcma_device *core;
int err, dev_id = 0;
int err;

list_for_each_entry(core, &bus->cores, list) {
/* We support that cores ourself */
Expand All @@ -143,34 +175,7 @@ static int bcma_register_cores(struct bcma_bus *bus)
core->core_unit > 0)
continue;

core->dev.release = bcma_release_core_dev;
core->dev.bus = &bcma_bus_type;
dev_set_name(&core->dev, "bcma%d:%d", bus->num, dev_id);

switch (bus->hosttype) {
case BCMA_HOSTTYPE_PCI:
core->dev.parent = &bus->host_pci->dev;
core->dma_dev = &bus->host_pci->dev;
core->irq = bus->host_pci->irq;
break;
case BCMA_HOSTTYPE_SOC:
core->dev.dma_mask = &core->dev.coherent_dma_mask;
core->dma_dev = &core->dev;
break;
case BCMA_HOSTTYPE_SDIO:
break;
}

err = device_register(&core->dev);
if (err) {
bcma_err(bus,
"Could not register dev for core 0x%03X\n",
core->id.id);
put_device(&core->dev);
continue;
}
core->dev_registered = true;
dev_id++;
bcma_register_core(bus, core);
}

#ifdef CONFIG_BCMA_DRIVER_MIPS
Expand Down Expand Up @@ -297,7 +302,7 @@ int bcma_bus_register(struct bcma_bus *bus)
}

/* Register found cores */
bcma_register_cores(bus);
bcma_register_devices(bus);

bcma_info(bus, "Bus registered\n");

Expand Down

0 comments on commit 6e094bd

Please sign in to comment.