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