Ignore:
File:
1 edited

Legend:

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

    r60744cb re55d2c1  
    7474static errno_t rtl8169_on_stopped(nic_t *nic_data);
    7575static void rtl8169_send_frame(nic_t *nic_data, void *data, size_t size);
    76 static void rtl8169_irq_handler(ipc_call_t *icall, void *);
     76static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev);
    7777static inline errno_t rtl8169_register_int_handler(nic_t *nic_data,
    7878    cap_irq_handle_t *handle);
     
    372372        rtl8169_irq_code.cmds[3].addr = rtl8169->regs + IMR;
    373373        errno_t rc = register_interrupt_handler(nic_get_ddf_dev(nic_data),
    374             rtl8169->irq, rtl8169_irq_handler, (void *)rtl8169,
    375             &rtl8169_irq_code, handle);
     374            rtl8169->irq, rtl8169_irq_handler, &rtl8169_irq_code, handle);
    376375
    377376        return rc;
     
    458457        }
    459458
    460         rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     459        rc = nic_fun_add_to_cats(fun);
    461460        if (rc != EOK) {
    462                 ddf_msg(LVL_ERROR, "Failed adding function to category");
    463                 goto err_fun_bind;
     461                ddf_msg(LVL_ERROR, "Failed adding function to categories");
     462                ddf_fun_unbind(fun);
     463                return rc;
    464464        }
    465465
     
    468468        return EOK;
    469469
    470 err_fun_bind:
    471         ddf_fun_unbind(fun);
     470        // err_fun_bind:
     471        // ddf_fun_unbind(fun);
    472472err_fun_create:
    473473        ddf_fun_destroy(fun);
     
    10341034}
    10351035
    1036 /** RTL8169 IRQ handler.
    1037  *
    1038  * @param icall IRQ event notification
    1039  * @param arg Argument (rtl8169_t *)
    1040  */
    1041 static void rtl8169_irq_handler(ipc_call_t *icall, void *arg)
    1042 {
     1036static void rtl8169_irq_handler(ipc_call_t *icall, ddf_dev_t *dev)
     1037{
     1038        assert(dev);
     1039        assert(icall);
     1040
    10431041        uint16_t isr = (uint16_t) ipc_get_arg2(icall) & INT_KNOWN;
    1044         rtl8169_t *rtl8169 = (rtl8169_t *)arg;
     1042        nic_t *nic_data = nic_get_from_ddf_dev(dev);
     1043        rtl8169_t *rtl8169 = nic_get_specific(nic_data);
    10451044
    10461045        ddf_msg(LVL_DEBUG, "rtl8169_irq_handler(): isr=0x%04x", isr);
     
    10521051                /* Packet underrun or link change */
    10531052                if (isr & INT_PUN) {
    1054                         rtl8169_link_change(rtl8169->dev);
     1053                        rtl8169_link_change(dev);
    10551054                        pio_write_16(rtl8169->regs + ISR, INT_PUN);
    10561055                }
     
    10581057                /* Transmit notification */
    10591058                if (isr & (INT_TER | INT_TOK | INT_TDU)) {
    1060                         rtl8169_transmit_done(rtl8169->dev);
     1059                        rtl8169_transmit_done(dev);
    10611060                        pio_write_16(rtl8169->regs + ISR, (INT_TER | INT_TOK | INT_TDU));
    10621061                }
     
    10741073
    10751074                if (isr & (INT_RER | INT_ROK)) {
    1076                         rtl8169_receive_done(rtl8169->dev);
     1075                        rtl8169_receive_done(dev);
    10771076                        pio_write_16(rtl8169->regs + ISR, (INT_RER | INT_ROK));
    10781077                }
Note: See TracChangeset for help on using the changeset viewer.