Codebase list hwinfo / 9b17fbd
Update upstream source from tag 'upstream/21.59' Update to upstream version '21.59' with Debian dir 39cd4189df9e2bea2233d21ff44063bbbc93e29c Tomasz Buchert 5 years ago
1 changed file(s) with 76 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
6363 static void hd_read_mmc(hd_data_t *hd_data);
6464 static void hd_read_sdio(hd_data_t *hd_data);
6565 static void hd_read_nd(hd_data_t *hd_data);
66 static void hd_read_visorbus(hd_data_t *hd_data);
6667
6768 void hd_scan_sysfs_pci(hd_data_t *hd_data)
6869 {
123124
124125 PROGRESS(15, 0, "nd");
125126 hd_read_nd(hd_data);
127
128 PROGRESS(16, 0, "visorbus");
129 hd_read_visorbus(hd_data);
126130 }
127131
128132
20602064 free_str_list(sf_bus);
20612065 }
20622066
2067
2068 /*
2069 * visorbus
2070 */
2071 void hd_read_visorbus(hd_data_t *hd_data)
2072 {
2073 uint64_t ul0;
2074 hd_t *hd;
2075 str_list_t *sf_bus, *sf_bus_e;
2076 char *sf_dev, *drv, *drv_name;
2077
2078 sf_bus = read_dir("/sys/bus/visorbus/devices", 'l');
2079
2080 if(!sf_bus) {
2081 ADD2LOG("sysfs: no such bus: visorbus\n");
2082 return;
2083 }
2084
2085 for(sf_bus_e = sf_bus; sf_bus_e; sf_bus_e = sf_bus_e->next) {
2086 sf_dev = new_str(hd_read_sysfs_link("/sys/bus/visorbus/devices", sf_bus_e->str));
2087
2088 ADD2LOG(
2089 " visorbus device: name = %s\n path = %s\n",
2090 sf_bus_e->str,
2091 hd_sysfs_id(sf_dev)
2092 );
2093
2094 hd = add_hd_entry(hd_data, __LINE__, 0);
2095 hd->vendor.id = MAKE_ID(TAG_PCI, 0xA0F1); /* Unisys */
2096
2097 drv_name = NULL;
2098 drv = new_str(hd_read_sysfs_link(sf_dev, "driver"));
2099 if(drv) {
2100 drv_name = strrchr(drv, '/');
2101 if(drv_name) {
2102 drv_name++;
2103 ADD2LOG(" driver = \"%s\"\n", drv_name);
2104
2105 if(!strcmp(drv_name,"visornic")) {
2106 hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0002);
2107 hd->base_class.id = bc_network;
2108 }
2109 else if(!strcmp(drv_name,"visorthba")) {
2110 hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0003);
2111 hd->base_class.id = bc_storage;
2112 }
2113 else {
2114 hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0000);
2115 hd->base_class.id = bc_other;
2116 }
2117 }
2118 }
2119 else {
2120 hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0001);
2121 hd->base_class.id = bc_bridge;
2122 }
2123
2124 if(hd_attr_uint(get_sysfs_attr_by_path(sf_dev, "device"), &ul0, 0)) {
2125 hd->device.id = MAKE_ID(TAG_SPECIAL, ul0 );
2126 ADD2LOG(" device = %lu\n", ul0);
2127 }
2128
2129 hd->sysfs_id = new_str(hd_sysfs_id(sf_dev));
2130 hd->sysfs_bus_id = new_str(sf_bus_e->str);
2131 if(drv_name) add_str_list(&hd->drivers, drv_name);
2132
2133 free_mem(sf_dev);
2134 free_mem(drv);
2135 }
2136
2137 free_str_list(sf_bus);
2138 }
20632139 /** @} */
20642140