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; }
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; }