Пример #1
0
static ofdn_t ofd_vdevice(void *m, struct domain *d)
{
    ofdn_t n;
    static const char path[] = "/vdevice";
    static const char name[] = "vdevice";
    static const char compatible[] = "IBM,vdevice";
    u32 val;

    n = ofd_node_add(m, OFD_ROOT, path, sizeof (path));

    if (n > 0) {

        ofd_prop_add(m, n, "name", name, sizeof (name));
        val = 1;
        ofd_prop_add(m, n, "#address-cells", &val, sizeof (val));
        val = 0;
        ofd_prop_add(m, n, "#size-cells", &val, sizeof (val));
        ofd_prop_add(m, n, "compatible",
                     compatible, sizeof (compatible));
        ofd_prop_add(m, n, "device_type", name, sizeof (name));
        ofd_prop_add(m, n, "interupt-controller", NULL, 0);

#ifdef PAPR_VDEVICE
        ofdn_t r;

        /* add vty */
        r = ofd_vdevice_vty(m, n, d);
        printk("vdevice r: %x\n", r);
        n = r;
#endif
    }
    return n;
}
Пример #2
0
static ofdn_t
ofd_vdevice(void *m, struct partition_status *ps)
{
	ofdn_t n;
	static const char path[] = "/vdevice";
	static const char name[] = "vdevice";
	static const char compatible[] = "IBM,vdevice";
	uval32 val;

	n = ofd_node_add(m, OFD_ROOT, path, sizeof (path));

	if (n > 0) {
		ofdn_t r;

		ofd_prop_add(m, n, "name", name, sizeof (name));
		val = 1;
		ofd_prop_add(m, n, "#address-cells", &val, sizeof (val));
		val = 0;
		ofd_prop_add(m, n, "#size-cells", &val, sizeof (val));
		ofd_prop_add(m, n, "compatible",
				compatible, sizeof (compatible));
		ofd_prop_add(m, n, "device_type", name, sizeof (name));
		ofd_prop_add(m, n, "interupt-controller", NULL, 0);

		/* add vty */
		r = ofd_vdevice_vty(m, n, ps);
		hprintf("vdevice r: %x\n",r );
		if (r > 0) {
			r = ofd_vdevice_llan(m, n, ps->lpid);
		}
		if (r > 0) {
			hprintf("VSCSI: lpid: 0x%lx iohost: 0x%lx\n",
				ps->lpid, iohost_lpid);
			if (ps->lpid == iohost_lpid) {
				r = ofd_vdevice_vscsi_server(m, n,
							     ps->lpid, 10);
			}
		}
		n = r;
	}
	return n;
}