vio.cc
1 #include "version.h" 2 #include "hw.h" 3 #include "sysfs.h" 4 #include "vio.h" 5 6 #include <vector> 7 8 __ID("@(#) $Id$"); 9 10 using namespace std; 11 12 13 bool scan_vio(hwNode & n) 14 { 15 vector < sysfs::entry > entries = sysfs::entries_by_bus("vio"); 16 17 if (entries.empty()) 18 return false; 19 20 for (vector < sysfs::entry >::iterator it = entries.begin(); 21 it != entries.end(); ++it) 22 { 23 const sysfs::entry & e = *it; 24 25 if (e.name() == "vio") 26 continue; // skip root device 27 28 string name = e.string_attr("name"); 29 if (name.empty()) 30 name = e.name(); 31 32 hwNode device(name); 33 device.setDescription("Virtual I/O device (" + name + ")"); 34 35 string businfo = e.businfo(); 36 if (!businfo.empty()) 37 device.setBusInfo(businfo); 38 39 string driver = e.driver(); 40 if (!driver.empty()) 41 device.setConfig("driver", driver); 42 43 string devicetree_node = e.string_attr("devspec"); 44 if (!devicetree_node.empty() && devicetree_node[0] == '/') 45 device.setLogicalName("/proc/device-tree" + devicetree_node); 46 47 n.addChild(device); 48 } 49 50 return true; 51 }