Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2c4f4ecb authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Add domain-services nodes to VIO device tree.



They sit under the root of the MD tree unlike the rest of
the LDC channel based virtual devices.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cb481235
Loading
Loading
Loading
Loading
+29 −7
Original line number Diff line number Diff line
@@ -104,18 +104,24 @@ static ssize_t devspec_show(struct device *dev,
	struct vio_dev *vdev = to_vio_dev(dev);
	const char *str = "none";

	if (vdev->type) {
	if (!strcmp(vdev->type, "network"))
		str = "vnet";
	else if (!strcmp(vdev->type, "block"))
		str = "vdisk";
	}

	return sprintf(buf, "%s\n", str);
}

static ssize_t type_show(struct device *dev,
		struct device_attribute *attr, char *buf)
{
	struct vio_dev *vdev = to_vio_dev(dev);
	return sprintf(buf, "%s\n", vdev->type);
}

static struct device_attribute vio_dev_attrs[] = {
	__ATTR_RO(devspec),
	__ATTR_RO(type),
	__ATTR_NULL
};

@@ -201,8 +207,11 @@ static struct vio_dev *vio_create_one(struct mdesc_node *mp,
	int err, clen;

	type = md_get_property(mp, "device-type", NULL);
	if (!type)
	if (!type) {
		type = md_get_property(mp, "name", NULL);
		if (!type)
			type = mp->name;
	}
	compat = md_get_property(mp, "device-type", &clen);

	vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);
@@ -279,6 +288,8 @@ static void walk_tree(struct mdesc_node *n, struct vio_dev *parent)

static void create_devices(struct mdesc_node *root)
{
	struct mdesc_node *mp;

	root_vdev = vio_create_one(root, NULL);
	if (!root_vdev) {
		printk(KERN_ERR "VIO: Coult not create root device.\n");
@@ -286,6 +297,17 @@ static void create_devices(struct mdesc_node *root)
	}

	walk_tree(root, root_vdev);

	/* Domain services is odd as it doesn't sit underneath the
	 * channel-devices node, so we plug it in manually.
	 */
	mp = md_find_node_by_name(NULL, "domain-services");
	if (mp) {
		struct vio_dev *parent = vio_create_one(mp, &root_vdev->dev);

		if (parent)
			walk_tree(mp, parent);
	}
}

const char *channel_devices_node = "channel-devices";