Commit e2169a32 authored by Jag Raman's avatar Jag Raman Committed by David S. Miller

sparc64: refactor code to obtain cfg_handle property from MDESC

Refactors code to get the cfg_handle property of a node from Machine
Description (MDESC)
Signed-off-by: default avatarJagannathan Raman <jag.raman@oracle.com>
Reviewed-by: default avatarLiam Merwick <liam.merwick@oracle.com>
Reviewed-by: default avatarShannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 06f3c3ac
...@@ -181,6 +181,24 @@ static struct device_node *cdev_node; ...@@ -181,6 +181,24 @@ static struct device_node *cdev_node;
static struct vio_dev *root_vdev; static struct vio_dev *root_vdev;
static u64 cdev_cfg_handle; static u64 cdev_cfg_handle;
static const u64 *vio_cfg_handle(struct mdesc_handle *hp, u64 node)
{
const u64 *cfg_handle = NULL;
u64 a;
mdesc_for_each_arc(a, hp, node, MDESC_ARC_TYPE_BACK) {
u64 target;
target = mdesc_arc_target(hp, a);
cfg_handle = mdesc_get_property(hp, target,
"cfg-handle", NULL);
if (cfg_handle)
break;
}
return cfg_handle;
}
static void vio_fill_channel_info(struct mdesc_handle *hp, u64 mp, static void vio_fill_channel_info(struct mdesc_handle *hp, u64 mp,
struct vio_dev *vdev) struct vio_dev *vdev)
{ {
...@@ -227,7 +245,6 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp, ...@@ -227,7 +245,6 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
struct vio_dev *vdev; struct vio_dev *vdev;
int err, tlen, clen; int err, tlen, clen;
const u64 *id, *cfg_handle; const u64 *id, *cfg_handle;
u64 a;
type = mdesc_get_property(hp, mp, "device-type", &tlen); type = mdesc_get_property(hp, mp, "device-type", &tlen);
if (!type) { if (!type) {
...@@ -245,16 +262,7 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp, ...@@ -245,16 +262,7 @@ static struct vio_dev *vio_create_one(struct mdesc_handle *hp, u64 mp,
id = mdesc_get_property(hp, mp, "id", NULL); id = mdesc_get_property(hp, mp, "id", NULL);
cfg_handle = NULL; cfg_handle = vio_cfg_handle(hp, mp);
mdesc_for_each_arc(a, hp, mp, MDESC_ARC_TYPE_BACK) {
u64 target;
target = mdesc_arc_target(hp, a);
cfg_handle = mdesc_get_property(hp, target,
"cfg-handle", NULL);
if (cfg_handle)
break;
}
bus_id_name = type; bus_id_name = type;
if (!strcmp(type, "domain-services-port")) if (!strcmp(type, "domain-services-port"))
......
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