Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 62289
b: refs/heads/master
c: 58fb666
h: refs/heads/master
i:
  62287: 29c92aa
v: v3
  • Loading branch information
David S. Miller committed Jul 21, 2007
1 parent 7bd3bed commit 7ce52b0
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3d6e470236bc759f43c9f2377899b526a50e2e63
refs/heads/master: 58fb666643acee28d347de0b59bb938844c22f83
35 changes: 16 additions & 19 deletions trunk/arch/sparc64/kernel/vio.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,8 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
struct device_node *dp;
struct vio_dev *vdev;
int err, tlen, clen;
const u64 *id;
const u64 *id, *cfg_handle;
u64 a;

type = mdesc_get_property(hp, mp, "device-type", &tlen);
if (!type) {
Expand All @@ -221,26 +222,18 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
return NULL;
}

if (!strcmp(type, "vdc-port")) {
u64 a;
id = mdesc_get_property(hp, mp, "id", NULL);

id = NULL;
mdesc_for_each_arc(a, hp, mp, MDESC_ARC_TYPE_BACK) {
u64 target;
cfg_handle = NULL;
mdesc_for_each_arc(a, hp, mp, MDESC_ARC_TYPE_BACK) {
u64 target;

target = mdesc_arc_target(hp, a);
id = mdesc_get_property(hp, target,
target = mdesc_arc_target(hp, a);
cfg_handle = mdesc_get_property(hp, target,
"cfg-handle", NULL);
if (id)
break;
}
if (!id) {
printk(KERN_ERR "VIO: vdc-port lacks parent "
"cfg-handle.\n");
return NULL;
}
} else
id = mdesc_get_property(hp, mp, "id", NULL);
if (cfg_handle)
break;
}

bus_id_name = type;
if (!strcmp(type, "domain-services-port"))
Expand Down Expand Up @@ -285,10 +278,14 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
snprintf(vdev->dev.bus_id, BUS_ID_SIZE, "%s",
bus_id_name);
vdev->dev_no = ~(u64)0;
} else {
} else if (!cfg_handle) {
snprintf(vdev->dev.bus_id, BUS_ID_SIZE, "%s-%lu",
bus_id_name, *id);
vdev->dev_no = *id;
} else {
snprintf(vdev->dev.bus_id, BUS_ID_SIZE, "%s-%lu-%lu",
bus_id_name, *cfg_handle, *id);
vdev->dev_no = *cfg_handle;
}

vdev->dev.parent = parent;
Expand Down

0 comments on commit 7ce52b0

Please sign in to comment.