Ignore:
File:
1 edited

Legend:

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

    r8820544 r99e8fb7b  
    2727 */
    2828
     29/* XXX Fix this */
     30#define _DDF_DATA_IMPLANT
     31
    2932#include <assert.h>
    3033#include <errno.h>
     
    3235#include <byteorder.h>
    3336#include <libarch/barrier.h>
     37
    3438#include <as.h>
    3539#include <ddf/log.h>
     
    3842#include <nic.h>
    3943#include <pci_dev_iface.h>
    40 #include <irc.h>
    41 #include <stdio.h>
     44
     45#include <ipc/irc.h>
     46#include <sysinfo.h>
     47#include <ipc/ns.h>
     48
    4249#include <str.h>
    4350
     
    852859/** Handle device interrupt
    853860 *
    854  * @param iid    The IPC call id
    855  * @param icall  The IPC call structure
    856  * @param dev    The rtl8139 device
    857  *
    858  */
    859 static void rtl8139_interrupt_handler(ipc_callid_t iid, ipc_call_t *icall,
    860     ddf_dev_t *dev)
     861 *  @param dev    The rtl8139 device
     862 *  @param iid    The IPC call id
     863 *  @param icall  The IPC call structure
     864 */
     865static void rtl8139_interrupt_handler(ddf_dev_t *dev, ipc_callid_t iid,
     866    ipc_call_t *icall)
    861867{
    862868        assert(dev);
     
    954960        rtl8139->int_mask = RTL_DEFAULT_INTERRUPTS;
    955961        rtl8139_hw_int_enable(rtl8139);
    956 
    957         int rc = irc_enable_interrupt(rtl8139->irq);
    958         if (rc != EOK) {
    959                 rtl8139_on_stopped(nic_data);
    960                 return rc;
    961         }
     962        nic_enable_interrupt(nic_data, rtl8139->irq);
    962963
    963964        ddf_msg(LVL_DEBUG, "Device activated, interrupt %d registered", rtl8139->irq);
     
    11401141
    11411142        ddf_msg(LVL_DEBUG, "Creating buffers");
    1142        
    1143         rtl8139->tx_buff_virt = AS_AREA_ANY;
     1143
    11441144        rc = dmamem_map_anonymous(TX_PAGES * PAGE_SIZE, DMAMEM_4GiB,
    11451145            AS_AREA_WRITE, 0, &rtl8139->tx_buff_phys, &rtl8139->tx_buff_virt);
     
    11611161        ddf_msg(LVL_DEBUG, "Allocating receiver buffer of the size %d bytes",
    11621162            RxBUF_TOT_LENGTH);
    1163        
    1164         rtl8139->rx_buff_virt = AS_AREA_ANY;
     1163
    11651164        rc = dmamem_map_anonymous(RxBUF_TOT_LENGTH, DMAMEM_4GiB,
    11661165            AS_AREA_READ, 0, &rtl8139->rx_buff_phys, &rtl8139->rx_buff_virt);
     
    13241323                goto err_pio;
    13251324
     1325        rc = nic_connect_to_services(nic_data);
     1326        if (rc != EOK) {
     1327                ddf_msg(LVL_ERROR, "Failed to connect to services (%d)", rc);
     1328                goto err_irq;
     1329        }
     1330
    13261331        fun = ddf_fun_create(nic_get_ddf_dev(nic_data), fun_exposed, "port0");
    13271332        if (fun == NULL) {
     
    13291334                goto err_srv;
    13301335        }
    1331 
    13321336        nic_set_ddf_fun(nic_data, fun);
    13331337        ddf_fun_set_ops(fun, &rtl8139_dev_ops);
     1338        ddf_fun_data_implant(fun, nic_data);
    13341339
    13351340        rc = ddf_fun_bind(fun);
     
    13541359        ddf_fun_destroy(fun);
    13551360err_srv:
     1361        /* XXX Disconnect from services */
     1362err_irq:
    13561363        unregister_interrupt_handler(dev, rtl8139->irq);
    13571364err_pio:
     
    21712178int main(void)
    21722179{
    2173         printf("%s: HelenOS RTL8139 network adapter driver\n", NAME);
    2174 
    21752180        int rc = nic_driver_init(NAME);
    21762181        if (rc != EOK)
    21772182                return rc;
    2178 
    2179         nic_driver_implement(&rtl8139_driver_ops, &rtl8139_dev_ops,
    2180             &rtl8139_nic_iface);
     2183        nic_driver_implement(
     2184                &rtl8139_driver_ops, &rtl8139_dev_ops, &rtl8139_nic_iface);
    21812185
    21822186        ddf_log_init(NAME);
     2187        ddf_msg(LVL_NOTE, "HelenOS RTL8139 driver started");
    21832188        return ddf_driver_main(&rtl8139_driver);
    21842189}
Note: See TracChangeset for help on using the changeset viewer.