Commit 8f9ada4f authored by Hauke Mehrtens's avatar Hauke Mehrtens Committed by John W. Linville

bcma: add bus num counter

If we have two bcma buses on one computer the second will not work
without this patch. Now each bus gets an own number.
Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 49dc9577
...@@ -13,6 +13,12 @@ ...@@ -13,6 +13,12 @@
MODULE_DESCRIPTION("Broadcom's specific AMBA driver"); MODULE_DESCRIPTION("Broadcom's specific AMBA driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
/* contains the number the next bus should get. */
static unsigned int bcma_bus_next_num = 0;
/* bcma_buses_mutex locks the bcma_bus_next_num */
static DEFINE_MUTEX(bcma_buses_mutex);
static int bcma_bus_match(struct device *dev, struct device_driver *drv); static int bcma_bus_match(struct device *dev, struct device_driver *drv);
static int bcma_device_probe(struct device *dev); static int bcma_device_probe(struct device *dev);
static int bcma_device_remove(struct device *dev); static int bcma_device_remove(struct device *dev);
...@@ -93,7 +99,7 @@ static int bcma_register_cores(struct bcma_bus *bus) ...@@ -93,7 +99,7 @@ static int bcma_register_cores(struct bcma_bus *bus)
core->dev.release = bcma_release_core_dev; core->dev.release = bcma_release_core_dev;
core->dev.bus = &bcma_bus_type; core->dev.bus = &bcma_bus_type;
dev_set_name(&core->dev, "bcma%d:%d", 0/*bus->num*/, dev_id); dev_set_name(&core->dev, "bcma%d:%d", bus->num, dev_id);
switch (bus->hosttype) { switch (bus->hosttype) {
case BCMA_HOSTTYPE_PCI: case BCMA_HOSTTYPE_PCI:
...@@ -137,6 +143,10 @@ int __devinit bcma_bus_register(struct bcma_bus *bus) ...@@ -137,6 +143,10 @@ int __devinit bcma_bus_register(struct bcma_bus *bus)
int err; int err;
struct bcma_device *core; struct bcma_device *core;
mutex_lock(&bcma_buses_mutex);
bus->num = bcma_bus_next_num++;
mutex_unlock(&bcma_buses_mutex);
/* Scan for devices (cores) */ /* Scan for devices (cores) */
err = bcma_bus_scan(bus); err = bcma_bus_scan(bus);
if (err) { if (err) {
......
...@@ -196,6 +196,7 @@ struct bcma_bus { ...@@ -196,6 +196,7 @@ struct bcma_bus {
struct list_head cores; struct list_head cores;
u8 nr_cores; u8 nr_cores;
u8 init_done:1; u8 init_done:1;
u8 num;
struct bcma_drv_cc drv_cc; struct bcma_drv_cc drv_cc;
struct bcma_drv_pci drv_pci; struct bcma_drv_pci drv_pci;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment