Changes in uspace/drv/nic/ne2k/ne2k.c [56fd7cf:8820544] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/ne2k/ne2k.c
r56fd7cf r8820544 38 38 */ 39 39 40 /* XXX Fix this */41 #define _DDF_DATA_IMPLANT42 43 40 #include <stdio.h> 44 41 #include <errno.h> 42 #include <irc.h> 45 43 #include <stdlib.h> 46 44 #include <str_error.h> … … 124 122 }; 125 123 126 static void ne2k_interrupt_handler(ddf_dev_t *dev, ipc_callid_t iid, 127 ipc_call_t *call); 124 static void ne2k_interrupt_handler(ipc_callid_t, ipc_call_t *, ddf_dev_t *); 128 125 129 126 static int ne2k_register_interrupt(nic_t *nic_data) … … 211 208 ne2k->irq = hw_res_parsed.irqs.irqs[0]; 212 209 213 ne2k->base_port = (void *) (uintptr_t)214 hw_res_parsed.io_ranges.ranges[0].address;210 addr_range_t regs = hw_res_parsed.io_ranges.ranges[0]; 211 ne2k->base_port = RNGABSPTR(regs); 215 212 216 213 hw_res_list_parsed_clean(&hw_res_parsed); 217 214 218 /* Enable p ortI/O */219 if (pio_enable (ne2k->base_port, NE2K_IO_SIZE, &ne2k->port) != EOK)215 /* Enable programmed I/O */ 216 if (pio_enable_range(®s, &ne2k->port) != EOK) 220 217 return EADDRNOTAVAIL; 221 222 218 223 219 ne2k->data_port = ne2k->port + NE2K_DATA; … … 243 239 } 244 240 245 void ne2k_interrupt_handler( ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call)241 void ne2k_interrupt_handler(ipc_callid_t iid, ipc_call_t *call, ddf_dev_t *dev) 246 242 { 247 243 nic_t *nic_data = DRIVER_DATA(dev); 248 244 ne2k_interrupt(nic_data, IRQ_GET_ISR(*call), IRQ_GET_TSR(*call)); 249 245 250 246 async_answer_0(iid, EOK); 251 247 } … … 257 253 if (!ne2k->up) { 258 254 int rc = ne2k_up(ne2k); 255 if (rc != EOK) 256 return rc; 257 258 rc = irc_enable_interrupt(ne2k->irq); 259 259 if (rc != EOK) { 260 ne2k_down(ne2k); 260 261 return rc; 261 262 } 262 263 nic_enable_interrupt(nic_data, ne2k->irq);264 263 } 265 264 return EOK; … … 270 269 ne2k_t *ne2k = (ne2k_t *) nic_get_specific(nic_data); 271 270 272 nic_disable_interrupt(nic_data,ne2k->irq);271 (void) irc_disable_interrupt(ne2k->irq); 273 272 ne2k->receive_configuration = RCR_AB | RCR_AM; 274 273 ne2k_down(ne2k); … … 397 396 } 398 397 399 rc = nic_connect_to_services(nic_data);400 if (rc != EOK) {401 ne2k_dev_cleanup(dev);402 return rc;403 }404 405 398 fun = ddf_fun_create(nic_get_ddf_dev(nic_data), fun_exposed, "port0"); 406 399 if (fun == NULL) { … … 408 401 return ENOMEM; 409 402 } 403 410 404 nic_set_ddf_fun(nic_data, fun); 411 405 ddf_fun_set_ops(fun, &ne2k_dev_ops); 412 ddf_fun_data_implant(fun, nic_data);413 406 414 407 rc = ddf_fun_bind(fun); … … 444 437 int main(int argc, char *argv[]) 445 438 { 439 printf("%s: HelenOS NE 2000 network adapter driver\n", NAME); 440 446 441 nic_driver_init(NAME); 447 442 nic_driver_implement(&ne2k_driver_ops, &ne2k_dev_ops, &ne2k_nic_iface);
Note:
See TracChangeset
for help on using the changeset viewer.