Changes in uspace/drv/nic/e1k/e1k.c [acdb5bac:e882e3a] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/nic/e1k/e1k.c
racdb5bac re882e3a 33 33 */ 34 34 35 /* XXX Fix this */36 #define _DDF_DATA_IMPLANT37 38 35 #include <assert.h> 39 36 #include <stdio.h> … … 45 42 #include <ipc/irc.h> 46 43 #include <ipc/ns.h> 47 #include < ddi.h>44 #include <libarch/ddi.h> 48 45 #include <as.h> 49 46 #include <ddf/log.h> … … 52 49 #include <device/pci.h> 53 50 #include <nic.h> 51 #include <nil_remote.h> 54 52 #include <ops/nic.h> 55 53 #include "e1k.h" … … 74 72 ((e1000_t *) nic_get_specific(nic)) 75 73 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 */ 81 75 #define NIC_DATA_DEV(dev) \ 82 ((nic_t *) ddf_dev_data_get(dev))83 84 /** d df_dev_t* -> e1000_t* cast */76 ((nic_t *) ((dev)->driver_data)) 77 78 /** device_t* -> e1000_t* cast */ 85 79 #define DRIVER_DATA_DEV(dev) \ 86 80 (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)))91 81 92 82 /** Cast pointer to uint64_t … … 293 283 assert(info); 294 284 295 memset(info, 0, sizeof(nic_device_info_t));285 bzero(info, sizeof(nic_device_info_t)); 296 286 297 287 info->vendor_id = 0x8086; … … 316 306 * 317 307 */ 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); 308 static 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); 321 315 if (E1000_REG_READ(e1000, E1000_STATUS) & (STATUS_LU)) 322 316 *state = NIC_CS_PLUGGED; … … 335 329 * 336 330 */ 337 static int e1000_get_operation_mode(ddf_fun_t * fun, int *speed,331 static int e1000_get_operation_mode(ddf_fun_t *dev, int *speed, 338 332 nic_channel_mode_t *duplex, nic_role_t *role) 339 333 { 340 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);334 e1000_t *e1000 = DRIVER_DATA_DEV(dev); 341 335 uint32_t status = E1000_REG_READ(e1000, E1000_STATUS); 342 336 … … 383 377 * 384 378 */ 385 static int e1000_set_operation_mode(ddf_fun_t * fun, int speed,379 static int e1000_set_operation_mode(ddf_fun_t *dev, int speed, 386 380 nic_channel_mode_t duplex, nic_role_t role) 387 381 { … … 392 386 return EINVAL; 393 387 394 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);388 e1000_t *e1000 = DRIVER_DATA_DEV(dev); 395 389 396 390 fibril_mutex_lock(&e1000->ctrl_lock); … … 431 425 * 432 426 */ 433 static int e1000_autoneg_enable(ddf_fun_t * fun, uint32_t advertisement)434 { 435 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);427 static int e1000_autoneg_enable(ddf_fun_t *dev, uint32_t advertisement) 428 { 429 e1000_t *e1000 = DRIVER_DATA_DEV(dev); 436 430 437 431 fibril_mutex_lock(&e1000->ctrl_lock); … … 459 453 * 460 454 */ 461 static int e1000_autoneg_disable(ddf_fun_t * fun)462 { 463 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);455 static int e1000_autoneg_disable(ddf_fun_t *dev) 456 { 457 e1000_t *e1000 = DRIVER_DATA_DEV(dev); 464 458 465 459 fibril_mutex_lock(&e1000->ctrl_lock); … … 498 492 * 499 493 */ 500 static int e1000_defective_get_mode(ddf_fun_t * fun, uint32_t *mode)501 { 502 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);494 static int e1000_defective_get_mode(ddf_fun_t *device, uint32_t *mode) 495 { 496 e1000_t *e1000 = DRIVER_DATA_DEV(device); 503 497 504 498 *mode = 0; … … 519 513 * 520 514 */ 521 static int e1000_defective_set_mode(ddf_fun_t * fun, uint32_t mode)522 { 523 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);515 static int e1000_defective_set_mode(ddf_fun_t *device, uint32_t mode) 516 { 517 e1000_t *e1000 = DRIVER_DATA_DEV(device); 524 518 int rc = EOK; 525 519 … … 1045 1039 * 1046 1040 */ 1047 static int e1000_vlan_set_tag(ddf_fun_t * fun, uint16_t tag, bool add,1041 static int e1000_vlan_set_tag(ddf_fun_t *device, uint16_t tag, bool add, 1048 1042 bool strip) 1049 1043 { … … 1059 1053 return ENOTSUP; 1060 1054 1061 e1000_t *e1000 = DRIVER_DATA_ FUN(fun);1055 e1000_t *e1000 = DRIVER_DATA_DEV(device); 1062 1056 1063 1057 e1000->vlan_tag = tag; … … 1581 1575 goto error; 1582 1576 1583 memset(e1000->tx_ring_virt, 0,1577 bzero(e1000->tx_ring_virt, 1584 1578 E1000_TX_FRAME_COUNT * sizeof(e1000_tx_descriptor_t)); 1585 1579 … … 1862 1856 static e1000_t *e1000_create_dev_data(ddf_dev_t *dev) 1863 1857 { 1858 assert(dev); 1859 assert(!dev->driver_data); 1860 1864 1861 nic_t *nic = nic_create_and_bind(dev); 1865 1862 if (!nic) … … 1872 1869 } 1873 1870 1874 memset(e1000,0, sizeof(e1000_t));1871 bzero(e1000, sizeof(e1000_t)); 1875 1872 1876 1873 nic_set_specific(nic, e1000); … … 1900 1897 assert(dev); 1901 1898 1902 if (d df_dev_data_get(dev)!= NULL)1899 if (dev->driver_data != NULL) 1903 1900 nic_unbind_and_destroy(dev); 1904 1901 } … … 1914 1911 1915 1912 e1000_delete_dev_data(dev); 1913 1914 if (dev->parent_sess != NULL) { 1915 async_hangup(dev->parent_sess); 1916 dev->parent_sess = NULL; 1917 } 1916 1918 } 1917 1919 … … 1930 1932 const hw_res_list_parsed_t *hw_resources) 1931 1933 { 1934 assert(dev != NULL); 1935 assert(hw_resources != NULL); 1936 assert(dev->driver_data != NULL); 1937 1932 1938 e1000_t *e1000 = DRIVER_DATA_DEV(dev); 1933 1939 … … 1998 2004 1999 2005 uint16_t device_id; 2000 rc = pci_config_space_read_16(d df_dev_parent_sess_get(dev), PCI_DEVICE_ID,2006 rc = pci_config_space_read_16(dev->parent_sess, PCI_DEVICE_ID, 2001 2007 &device_id); 2002 2008 if (rc != EOK) { … … 2116 2122 2117 2123 /* Device initialization */ 2118 nic_t *nic = d df_dev_data_get(dev);2124 nic_t *nic = dev->driver_data; 2119 2125 e1000_t *e1000 = DRIVER_DATA_NIC(nic); 2120 2126 … … 2142 2148 goto err_tx_structure; 2143 2149 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; 2146 2152 2147 2153 rc = e1000_register_int_handler(nic); … … 2273 2279 * @return Negative error code otherwise 2274 2280 */ 2275 static int e1000_set_addr(ddf_fun_t * fun, const nic_address_t *addr)2276 { 2277 nic_t *nic = NIC_DATA_ FUN(fun);2281 static int e1000_set_addr(ddf_fun_t *dev, const nic_address_t *addr) 2282 { 2283 nic_t *nic = NIC_DATA_DEV(dev); 2278 2284 e1000_t *e1000 = DRIVER_DATA_NIC(nic); 2279 2285 … … 2381 2387 &e1000_nic_iface); 2382 2388 2383 ddf_log_init(NAME );2389 ddf_log_init(NAME, LVL_ERROR); 2384 2390 ddf_msg(LVL_NOTE, "HelenOS E1000 driver started"); 2385 2391 return ddf_driver_main(&e1000_driver);
Note:
See TracChangeset
for help on using the changeset viewer.