Changes in uspace/drv/nic/rtl8139/driver.c [1ae74c6:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/rtl8139/driver.c
r1ae74c6 r9d58539 27 27 */ 28 28 29 /* XXX Fix this */30 #define _DDF_DATA_IMPLANT31 32 29 #include <assert.h> 33 30 #include <errno.h> 34 31 #include <align.h> 35 32 #include <byteorder.h> 33 #include <libarch/ddi.h> 36 34 #include <libarch/barrier.h> 37 35 … … 46 44 #include <sysinfo.h> 47 45 #include <ipc/ns.h> 46 47 #include <net_checksum.h> 48 48 49 49 #include <str.h> … … 214 214 rtl8139_regs_lock(rtl8139->io_port); 215 215 216 async_sess_t *pci_sess =217 ddf_dev_parent_sess_get(nic_get_ddf_dev(rtl8139->nic_data));218 219 216 if (bit_val) { 217 async_sess_t *pci_sess = 218 nic_get_ddf_dev(rtl8139->nic_data)->parent_sess; 220 219 uint8_t pmen; 221 220 pci_config_space_read_8(pci_sess, 0x55, &pmen); 222 221 pci_config_space_write_8(pci_sess, 0x55, pmen | 1 | (1 << 7)); 223 222 } else { 223 async_sess_t *pci_sess = 224 nic_get_ddf_dev(rtl8139->nic_data)->parent_sess; 224 225 uint8_t pmen; 225 226 pci_config_space_read_8(pci_sess, 0x55, &pmen); … … 619 620 /* Check if the header is valid, otherwise we are lost in the buffer */ 620 621 if (size == 0 || size > RTL8139_FRAME_MAX_LENGTH) { 621 ddf_msg(LVL_ERROR, "Receiver error -> receiver reset (size: %4" PRIu16", "622 "header 0x%4" PRIx16 ". Offset: %d)", size, frame_header,622 ddf_msg(LVL_ERROR, "Receiver error -> receiver reset (size: %4"PRIu16", " 623 "header 0x%4"PRIx16". Offset: %zu)", size, frame_header, 623 624 rx_offset); 624 625 goto rx_err; … … 1053 1054 assert(dev); 1054 1055 1055 if (d df_dev_data_get(dev))1056 if (dev->driver_data) 1056 1057 nic_unbind_and_destroy(dev); 1058 1059 if (dev->parent_sess != NULL) { 1060 async_hangup(dev->parent_sess); 1061 dev->parent_sess = NULL; 1062 } 1057 1063 } 1058 1064 … … 1076 1082 1077 1083 if (hw_resources->irqs.count != 1) { 1078 ddf_msg(LVL_ERROR, "%s device: unexpected irq count", d df_dev_get_name(dev));1084 ddf_msg(LVL_ERROR, "%s device: unexpected irq count", dev->name); 1079 1085 return EINVAL; 1080 1086 }; 1081 1087 if (hw_resources->io_ranges.count != 1) { 1082 ddf_msg(LVL_ERROR, "%s device: unexpected io ranges count", d df_dev_get_name(dev));1088 ddf_msg(LVL_ERROR, "%s device: unexpected io ranges count", dev->name); 1083 1089 return EINVAL; 1084 1090 } 1085 1091 1086 1092 rtl8139->irq = hw_resources->irqs.irqs[0]; 1087 ddf_msg(LVL_DEBUG, "%s device: irq 0x%x assigned", d df_dev_get_name(dev), rtl8139->irq);1093 ddf_msg(LVL_DEBUG, "%s device: irq 0x%x assigned", dev->name, rtl8139->irq); 1088 1094 1089 1095 rtl8139->io_addr = IOADDR_TO_PTR(hw_resources->io_ranges.ranges[0].address); 1090 1096 if (hw_resources->io_ranges.ranges[0].size < RTL8139_IO_SIZE) { 1091 1097 ddf_msg(LVL_ERROR, "i/o range assigned to the device " 1092 "%s is too small.", d df_dev_get_name(dev));1098 "%s is too small.", dev->name); 1093 1099 return EINVAL; 1094 1100 } 1095 ddf_msg(LVL_DEBUG, "%s device: i/o addr %p assigned.", d df_dev_get_name(dev), rtl8139->io_addr);1101 ddf_msg(LVL_DEBUG, "%s device: i/o addr %p assigned.", dev->name, rtl8139->io_addr); 1096 1102 1097 1103 return EOK; … … 1161 1167 1162 1168 /* Allocate buffer for receiver */ 1163 ddf_msg(LVL_DEBUG, "Allocating receiver buffer of the size % dbytes",1169 ddf_msg(LVL_DEBUG, "Allocating receiver buffer of the size %zu bytes", 1164 1170 RxBUF_TOT_LENGTH); 1165 1171 … … 1188 1194 static int rtl8139_device_initialize(ddf_dev_t *dev) 1189 1195 { 1190 ddf_msg(LVL_DEBUG, "rtl8139_dev_initialize %s", d df_dev_get_name(dev));1196 ddf_msg(LVL_DEBUG, "rtl8139_dev_initialize %s", dev->name); 1191 1197 1192 1198 int ret = EOK; … … 1197 1203 rtl8139_t *rtl8139 = rtl8139_create_dev_data(dev); 1198 1204 if (rtl8139 == NULL) { 1199 ddf_msg(LVL_ERROR, "Not enough memory for initializing %s.", d df_dev_get_name(dev));1205 ddf_msg(LVL_ERROR, "Not enough memory for initializing %s.", dev->name); 1200 1206 return ENOMEM; 1201 1207 } … … 1242 1248 static int rtl8139_pio_enable(ddf_dev_t *dev) 1243 1249 { 1244 ddf_msg(LVL_DEBUG, NAME ": rtl8139_pio_enable %s", d df_dev_get_name(dev));1250 ddf_msg(LVL_DEBUG, NAME ": rtl8139_pio_enable %s", dev->name); 1245 1251 1246 1252 rtl8139_t *rtl8139 = nic_get_specific(nic_get_from_ddf_dev(dev)); … … 1248 1254 /* Gain control over port's registers. */ 1249 1255 if (pio_enable(rtl8139->io_addr, RTL8139_IO_SIZE, &rtl8139->io_port)) { 1250 ddf_msg(LVL_ERROR, "Cannot gain the port % pfor device %s.", rtl8139->io_addr,1251 d df_dev_get_name(dev));1256 ddf_msg(LVL_ERROR, "Cannot gain the port %lx for device %s.", rtl8139->io_addr, 1257 dev->name); 1252 1258 return EADDRNOTAVAIL; 1253 1259 } … … 1295 1301 1296 1302 assert(dev); 1297 ddf_msg(LVL_NOTE, "RTL8139_dev_add %s (handle = %zu)", 1298 ddf_dev_get_name(dev), ddf_dev_get_handle(dev)); 1303 ddf_msg(LVL_NOTE, "RTL8139_dev_add %s (handle = %d)", dev->name, dev->handle); 1299 1304 1300 1305 /* Init device structure for rtl8139 */ … … 1327 1332 rc = nic_connect_to_services(nic_data); 1328 1333 if (rc != EOK) { 1329 ddf_msg(LVL_ERROR, "Failed to connect to services (%d)", rc);1334 ddf_msg(LVL_ERROR, "Failed to connect to services", rc); 1330 1335 goto err_irq; 1331 1336 } … … 1337 1342 } 1338 1343 nic_set_ddf_fun(nic_data, fun); 1339 ddf_fun_set_ops(fun, &rtl8139_dev_ops);1340 ddf_fun_data_implant(fun, nic_data);1344 fun->ops = &rtl8139_dev_ops; 1345 fun->driver_data = nic_data; 1341 1346 1342 1347 rc = ddf_fun_bind(fun); … … 1352 1357 1353 1358 ddf_msg(LVL_NOTE, "The %s device has been successfully initialized.", 1354 d df_dev_get_name(dev));1359 dev->name); 1355 1360 1356 1361 return EOK; … … 2138 2143 pio_write_32(rtl8139->io_port + TCTR, 0); 2139 2144 2140 ddf_msg(LVL_DEBUG, "Periodic mode. Interrupt mask %" PRIx16 ", " 2141 "poll.full_skips %zu, last timer %" PRIu32, 2142 rtl8139->int_mask, rtl8139->poll_timer.full_skips, 2143 rtl8139->poll_timer.last_val); 2145 ddf_msg(LVL_DEBUG, "Periodic mode. Interrupt mask %"PRIx16", poll.full_skips %" 2146 PRIu32", last timer %"PRIu32".", rtl8139->int_mask, 2147 rtl8139->poll_timer.full_skips, rtl8139->poll_timer.last_val); 2144 2148 break; 2145 2149 default: … … 2186 2190 &rtl8139_driver_ops, &rtl8139_dev_ops, &rtl8139_nic_iface); 2187 2191 2188 ddf_log_init(NAME );2192 ddf_log_init(NAME, LVL_ERROR); 2189 2193 ddf_msg(LVL_NOTE, "HelenOS RTL8139 driver started"); 2190 2194 return ddf_driver_main(&rtl8139_driver);
Note:
See TracChangeset
for help on using the changeset viewer.