Skip to content

Commit

Permalink
bcma: clean bus initialization code
Browse files Browse the repository at this point in the history
This moves main bus init code to the main.c and renames old function to
make its purpose clear.
Thanks to this change we'll also be able to separate scanning from
registration (and support PCIe Gen 2 devices) in the future.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  • Loading branch information
rmilecki authored and Kalle Valo committed Jan 23, 2015
1 parent 6b47aac commit 799038e
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 9 deletions.
3 changes: 2 additions & 1 deletion drivers/bcma/bcma_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ struct bcma_bus;
bool bcma_wait_value(struct bcma_device *core, u16 reg, u32 mask, u32 value,
int timeout);
void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core);
void bcma_init_bus(struct bcma_bus *bus);
int bcma_bus_register(struct bcma_bus *bus);
void bcma_bus_unregister(struct bcma_bus *bus);
int __init bcma_bus_early_register(struct bcma_bus *bus,
Expand All @@ -36,11 +37,11 @@ int bcma_bus_resume(struct bcma_bus *bus);
#endif

/* scan.c */
void bcma_detect_chip(struct bcma_bus *bus);
int bcma_bus_scan(struct bcma_bus *bus);
int __init bcma_bus_scan_early(struct bcma_bus *bus,
struct bcma_device_id *match,
struct bcma_device *core);
void bcma_init_bus(struct bcma_bus *bus);

/* sprom.c */
int bcma_sprom_get(struct bcma_bus *bus);
Expand Down
16 changes: 12 additions & 4 deletions drivers/bcma/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,18 @@ void bcma_prepare_core(struct bcma_bus *bus, struct bcma_device *core)
}
}

void bcma_init_bus(struct bcma_bus *bus)
{
mutex_lock(&bcma_buses_mutex);
bus->num = bcma_bus_next_num++;
mutex_unlock(&bcma_buses_mutex);

INIT_LIST_HEAD(&bus->cores);
bus->nr_cores = 0;

bcma_detect_chip(bus);
}

static void bcma_register_core(struct bcma_bus *bus, struct bcma_device *core)
{
int err;
Expand Down Expand Up @@ -369,10 +381,6 @@ int bcma_bus_register(struct bcma_bus *bus)
int err;
struct bcma_device *core;

mutex_lock(&bcma_buses_mutex);
bus->num = bcma_bus_next_num++;
mutex_unlock(&bcma_buses_mutex);

/* Scan for devices (cores) */
err = bcma_bus_scan(bus);
if (err) {
Expand Down
5 changes: 1 addition & 4 deletions drivers/bcma/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -435,15 +435,12 @@ static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr,
return 0;
}

void bcma_init_bus(struct bcma_bus *bus)
void bcma_detect_chip(struct bcma_bus *bus)
{
s32 tmp;
struct bcma_chipinfo *chipinfo = &(bus->chipinfo);
char chip_id[8];

INIT_LIST_HEAD(&bus->cores);
bus->nr_cores = 0;

bcma_scan_switch_core(bus, BCMA_ADDR_BASE);

tmp = bcma_scan_read32(bus, 0, BCMA_CC_ID);
Expand Down

0 comments on commit 799038e

Please sign in to comment.