Changeset 132ab5d1 in mainline for uspace/drv/nic/rtl8169/driver.c
- Timestamp:
- 2018-01-30T03:20:45Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5a6cc679
- Parents:
- 8bfb163 (diff), 6a5d05b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/rtl8169/driver.c
r8bfb163 r132ab5d1 28 28 29 29 #include <assert.h> 30 #include <async.h> 30 31 #include <errno.h> 32 #include <str_error.h> 31 33 #include <align.h> 32 34 #include <byteorder.h> … … 34 36 35 37 #include <as.h> 36 #include <thread.h>37 38 #include <ddf/log.h> 38 39 #include <ddf/interrupt.h> … … 42 43 #include <nic.h> 43 44 #include <pci_dev_iface.h> 44 45 #include <sysinfo.h>46 #include <ipc/ns.h>47 45 48 46 #include <str.h> … … 75 73 static int rtl8169_on_stopped(nic_t *nic_data); 76 74 static void rtl8169_send_frame(nic_t *nic_data, void *data, size_t size); 77 static void rtl8169_irq_handler(ipc_callid_t iid, ipc_call_t *icall, 78 ddf_dev_t *dev); 79 static inline int rtl8169_register_int_handler(nic_t *nic_data); 75 static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev); 76 static inline int rtl8169_register_int_handler(nic_t *nic_data, cap_handle_t *handle); 80 77 static inline void rtl8169_get_hwaddr(rtl8169_t *rtl8169, nic_address_t *addr); 81 78 static inline void rtl8169_set_hwaddr(rtl8169_t *rtl8169, const nic_address_t *addr); … … 363 360 } 364 361 365 inline static int rtl8169_register_int_handler(nic_t *nic_data )362 inline static int rtl8169_register_int_handler(nic_t *nic_data, cap_handle_t *handle) 366 363 { 367 364 rtl8169_t *rtl8169 = nic_get_specific(nic_data); … … 371 368 rtl8169_irq_code.cmds[2].addr = rtl8169->regs + ISR; 372 369 rtl8169_irq_code.cmds[3].addr = rtl8169->regs + IMR; 373 int irq_cap= register_interrupt_handler(nic_get_ddf_dev(nic_data),374 rtl8169->irq, rtl8169_irq_handler, &rtl8169_irq_code );375 376 return irq_cap;370 int rc = register_interrupt_handler(nic_get_ddf_dev(nic_data), 371 rtl8169->irq, rtl8169_irq_handler, &rtl8169_irq_code, handle); 372 373 return rc; 377 374 } 378 375 … … 431 428 goto err_pio; 432 429 433 int irq_cap = rtl8169_register_int_handler(nic_data);434 if (irq_cap < 0) {435 rc = irq_cap;436 ddf_msg(LVL_ERROR, "Failed to register IRQ handler (% d)", rc);430 int irq_cap; 431 rc = rtl8169_register_int_handler(nic_data, &irq_cap); 432 if (rc != EOK) { 433 ddf_msg(LVL_ERROR, "Failed to register IRQ handler (%s)", str_error_name(rc)); 437 434 goto err_irq; 438 435 } … … 710 707 rc = rtl8169_allocate_buffers(rtl8169); 711 708 if (rc != EOK) { 712 ddf_msg(LVL_ERROR, "Error allocating buffers: % d", rc);709 ddf_msg(LVL_ERROR, "Error allocating buffers: %s", str_error_name(rc)); 713 710 return 0; 714 711 } … … 767 764 memory_barrier(); 768 765 while (pio_read_8(rtl8169->regs + CR) & CR_RST) { 769 thread_usleep(1);766 async_usleep(1); 770 767 read_barrier(); 771 768 } … … 1035 1032 } 1036 1033 1037 static void rtl8169_irq_handler(ipc_callid_t iid, ipc_call_t *icall, 1038 ddf_dev_t *dev) 1034 static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev) 1039 1035 { 1040 1036 assert(dev); … … 1181 1177 do { 1182 1178 phyar = pio_read_32(rtl8169->regs + PHYAR); 1183 thread_usleep(20);1179 async_usleep(20); 1184 1180 } while ((phyar & PHYAR_RW_WRITE) == 0); 1185 1181 … … 1199 1195 do { 1200 1196 phyar = pio_read_32(rtl8169->regs + PHYAR); 1201 thread_usleep(20);1197 async_usleep(20); 1202 1198 } while ((phyar & PHYAR_RW_WRITE) != 0); 1203 1199 1204 thread_usleep(20);1200 async_usleep(20); 1205 1201 } 1206 1202
Note:
See TracChangeset
for help on using the changeset viewer.