Changeset 132ab5d1 in mainline for uspace/drv/nic/rtl8169/driver.c


Ignore:
Timestamp:
2018-01-30T03:20:45Z (8 years ago)
Author:
Jenda <jenda.jzqk73@…>
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.
Message:

Merge commit '6a5d05bd2551e64111bea4f9332dd7448c26ce84' into forwardport

Separate return value from error code in gen_irq_code*().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/nic/rtl8169/driver.c

    r8bfb163 r132ab5d1  
    2828
    2929#include <assert.h>
     30#include <async.h>
    3031#include <errno.h>
     32#include <str_error.h>
    3133#include <align.h>
    3234#include <byteorder.h>
     
    3436
    3537#include <as.h>
    36 #include <thread.h>
    3738#include <ddf/log.h>
    3839#include <ddf/interrupt.h>
     
    4243#include <nic.h>
    4344#include <pci_dev_iface.h>
    44 
    45 #include <sysinfo.h>
    46 #include <ipc/ns.h>
    4745
    4846#include <str.h>
     
    7573static int rtl8169_on_stopped(nic_t *nic_data);
    7674static 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);
     75static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev);
     76static inline int rtl8169_register_int_handler(nic_t *nic_data, cap_handle_t *handle);
    8077static inline void rtl8169_get_hwaddr(rtl8169_t *rtl8169, nic_address_t *addr);
    8178static inline void rtl8169_set_hwaddr(rtl8169_t *rtl8169, const nic_address_t *addr);
     
    363360}
    364361
    365 inline static int rtl8169_register_int_handler(nic_t *nic_data)
     362inline static int rtl8169_register_int_handler(nic_t *nic_data, cap_handle_t *handle)
    366363{
    367364        rtl8169_t *rtl8169 = nic_get_specific(nic_data);
     
    371368        rtl8169_irq_code.cmds[2].addr = rtl8169->regs + ISR;
    372369        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;
    377374}
    378375
     
    431428                goto err_pio;
    432429
    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));
    437434                goto err_irq;
    438435        }
     
    710707        rc = rtl8169_allocate_buffers(rtl8169);
    711708        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));
    713710                return 0;
    714711        }
     
    767764        memory_barrier();
    768765        while (pio_read_8(rtl8169->regs + CR) & CR_RST) {
    769                 thread_usleep(1);
     766                async_usleep(1);
    770767                read_barrier();
    771768        }
     
    10351032}
    10361033
    1037 static void rtl8169_irq_handler(ipc_callid_t iid, ipc_call_t *icall,
    1038     ddf_dev_t *dev)
     1034static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev)
    10391035{
    10401036        assert(dev);
     
    11811177        do {
    11821178                phyar = pio_read_32(rtl8169->regs + PHYAR);
    1183                 thread_usleep(20);
     1179                async_usleep(20);
    11841180        } while ((phyar & PHYAR_RW_WRITE) == 0);
    11851181
     
    11991195        do {
    12001196                phyar = pio_read_32(rtl8169->regs + PHYAR);
    1201                 thread_usleep(20);
     1197                async_usleep(20);
    12021198        } while ((phyar & PHYAR_RW_WRITE) != 0);
    12031199
    1204         thread_usleep(20);
     1200        async_usleep(20);
    12051201}
    12061202
Note: See TracChangeset for help on using the changeset viewer.