Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/nic/e1k/e1k.c

    r267f235 re882e3a  
    3232 *
    3333 */
    34 
    35 /* XXX Fix this */
    36 #define _DDF_DATA_IMPLANT
    3734
    3835#include <assert.h>
     
    5249#include <device/pci.h>
    5350#include <nic.h>
     51#include <nil_remote.h>
    5452#include <ops/nic.h>
    5553#include "e1k.h"
     
    7472        ((e1000_t *) nic_get_specific(nic))
    7573
    76 /** ddf_fun_t * -> nic_driver_data_t* cast */
    77 #define NIC_DATA_FUN(fun) \
    78         ((nic_t *) ddf_fun_data_get(fun))
    79 
    80 /** ddf_dev_t * -> nic_driver_data_t* cast */
     74/** device_t* -> nic_driver_data_t* cast */
    8175#define NIC_DATA_DEV(dev) \
    82         ((nic_t *) ddf_dev_data_get(dev))
    83 
    84 /** ddf_dev_t * -> e1000_t* cast */
     76        ((nic_t *) ((dev)->driver_data))
     77
     78/** device_t* -> e1000_t* cast */
    8579#define DRIVER_DATA_DEV(dev) \
    8680        (DRIVER_DATA_NIC(NIC_DATA_DEV(dev)))
    87 
    88 /** ddf_fun_t * -> e1000_t* cast */
    89 #define DRIVER_DATA_FUN(fun) \
    90         (DRIVER_DATA_NIC(NIC_DATA_FUN(fun)))
    9181
    9282/** Cast pointer to uint64_t
     
    316306 *
    317307 */
    318 static int e1000_get_cable_state(ddf_fun_t *fun, nic_cable_state_t *state)
    319 {
    320         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     308static int e1000_get_cable_state(ddf_fun_t *dev, nic_cable_state_t *state)
     309{
     310        assert(dev);
     311        assert(DRIVER_DATA_DEV(dev));
     312        assert(state);
     313       
     314        e1000_t *e1000 = DRIVER_DATA_DEV(dev);
    321315        if (E1000_REG_READ(e1000, E1000_STATUS) & (STATUS_LU))
    322316                *state = NIC_CS_PLUGGED;
     
    335329 *
    336330 */
    337 static int e1000_get_operation_mode(ddf_fun_t *fun, int *speed,
     331static int e1000_get_operation_mode(ddf_fun_t *dev, int *speed,
    338332    nic_channel_mode_t *duplex, nic_role_t *role)
    339333{
    340         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     334        e1000_t *e1000 = DRIVER_DATA_DEV(dev);
    341335        uint32_t status = E1000_REG_READ(e1000, E1000_STATUS);
    342336       
     
    383377 *
    384378 */
    385 static int e1000_set_operation_mode(ddf_fun_t *fun, int speed,
     379static int e1000_set_operation_mode(ddf_fun_t *dev, int speed,
    386380    nic_channel_mode_t duplex, nic_role_t role)
    387381{
     
    392386                return EINVAL;
    393387       
    394         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     388        e1000_t *e1000 = DRIVER_DATA_DEV(dev);
    395389       
    396390        fibril_mutex_lock(&e1000->ctrl_lock);
     
    431425 *
    432426 */
    433 static int e1000_autoneg_enable(ddf_fun_t *fun, uint32_t advertisement)
    434 {
    435         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     427static int e1000_autoneg_enable(ddf_fun_t *dev, uint32_t advertisement)
     428{
     429        e1000_t *e1000 = DRIVER_DATA_DEV(dev);
    436430       
    437431        fibril_mutex_lock(&e1000->ctrl_lock);
     
    459453 *
    460454 */
    461 static int e1000_autoneg_disable(ddf_fun_t *fun)
    462 {
    463         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     455static int e1000_autoneg_disable(ddf_fun_t *dev)
     456{
     457        e1000_t *e1000 = DRIVER_DATA_DEV(dev);
    464458       
    465459        fibril_mutex_lock(&e1000->ctrl_lock);
     
    498492 *
    499493 */
    500 static int e1000_defective_get_mode(ddf_fun_t *fun, uint32_t *mode)
    501 {
    502         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     494static int e1000_defective_get_mode(ddf_fun_t *device, uint32_t *mode)
     495{
     496        e1000_t *e1000 = DRIVER_DATA_DEV(device);
    503497       
    504498        *mode = 0;
     
    519513 *
    520514 */
    521 static int e1000_defective_set_mode(ddf_fun_t *fun, uint32_t mode)
    522 {
    523         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     515static int e1000_defective_set_mode(ddf_fun_t *device, uint32_t mode)
     516{
     517        e1000_t *e1000 = DRIVER_DATA_DEV(device);
    524518        int rc = EOK;
    525519       
     
    10451039 *
    10461040 */
    1047 static int e1000_vlan_set_tag(ddf_fun_t *fun, uint16_t tag, bool add,
     1041static int e1000_vlan_set_tag(ddf_fun_t *device, uint16_t tag, bool add,
    10481042    bool strip)
    10491043{
     
    10591053                return ENOTSUP;
    10601054       
    1061         e1000_t *e1000 = DRIVER_DATA_FUN(fun);
     1055        e1000_t *e1000 = DRIVER_DATA_DEV(device);
    10621056       
    10631057        e1000->vlan_tag = tag;
     
    18621856static e1000_t *e1000_create_dev_data(ddf_dev_t *dev)
    18631857{
     1858        assert(dev);
     1859        assert(!dev->driver_data);
     1860       
    18641861        nic_t *nic = nic_create_and_bind(dev);
    18651862        if (!nic)
     
    19001897        assert(dev);
    19011898       
    1902         if (ddf_dev_data_get(dev) != NULL)
     1899        if (dev->driver_data != NULL)
    19031900                nic_unbind_and_destroy(dev);
    19041901}
     
    19141911       
    19151912        e1000_delete_dev_data(dev);
     1913       
     1914        if (dev->parent_sess != NULL) {
     1915                async_hangup(dev->parent_sess);
     1916                dev->parent_sess = NULL;
     1917        }
    19161918}
    19171919
     
    19301932    const hw_res_list_parsed_t *hw_resources)
    19311933{
     1934        assert(dev != NULL);
     1935        assert(hw_resources != NULL);
     1936        assert(dev->driver_data != NULL);
     1937       
    19321938        e1000_t *e1000 = DRIVER_DATA_DEV(dev);
    19331939       
     
    19982004       
    19992005        uint16_t device_id;
    2000         rc = pci_config_space_read_16(ddf_dev_parent_sess_get(dev), PCI_DEVICE_ID,
     2006        rc = pci_config_space_read_16(dev->parent_sess, PCI_DEVICE_ID,
    20012007            &device_id);
    20022008        if (rc != EOK) {
     
    21162122       
    21172123        /* Device initialization */
    2118         nic_t *nic = ddf_dev_data_get(dev);
     2124        nic_t *nic = dev->driver_data;
    21192125        e1000_t *e1000 = DRIVER_DATA_NIC(nic);
    21202126       
     
    21422148                goto err_tx_structure;
    21432149        nic_set_ddf_fun(nic, fun);
    2144         ddf_fun_set_ops(fun, &e1000_dev_ops);
    2145         ddf_fun_data_implant(fun, nic);
     2150        fun->ops = &e1000_dev_ops;
     2151        fun->driver_data = nic;
    21462152       
    21472153        rc = e1000_register_int_handler(nic);
     
    22732279 * @return Negative error code otherwise
    22742280 */
    2275 static int e1000_set_addr(ddf_fun_t *fun, const nic_address_t *addr)
    2276 {
    2277         nic_t *nic = NIC_DATA_FUN(fun);
     2281static int e1000_set_addr(ddf_fun_t *dev, const nic_address_t *addr)
     2282{
     2283        nic_t *nic = NIC_DATA_DEV(dev);
    22782284        e1000_t *e1000 = DRIVER_DATA_NIC(nic);
    22792285       
     
    23812387            &e1000_nic_iface);
    23822388       
    2383         ddf_log_init(NAME);
     2389        ddf_log_init(NAME, LVL_ERROR);
    23842390        ddf_msg(LVL_NOTE, "HelenOS E1000 driver started");
    23852391        return ddf_driver_main(&e1000_driver);
Note: See TracChangeset for help on using the changeset viewer.