Changeset 9916841 in mainline


Ignore:
Timestamp:
2011-12-14T17:10:27Z (12 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
792807f, c1e104fc, e285656, f4d5f90
Parents:
fd6bd6d
Message:

make the e1k driver compile (non-fuctional)

Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile

    rfd6bd6d r9916841  
    119119        drv/bus/usb/vhc \
    120120        drv/nic/lo \
    121         drv/nic/ne2k
     121        drv/nic/ne2k \
     122        drv/nic/e1k
    122123
    123124ifeq ($(CONFIG_PCC),y)
  • uspace/drv/nic/e1k/e1k.c

    rfd6bd6d r9916841  
    5858#define NAME  "e1k"
    5959
    60 #define E1000_DEFAULT_INTERRUPT_INTEVAL_USEC  250
     60#define E1000_DEFAULT_INTERRUPT_INTERVAL_USEC  250
    6161
    6262/* Must be power of 8 */
     
    116116        void *virt_reg_base;
    117117        /** Tx ring */
    118         dma_mem_t tx_ring;
     118        dmamem_t tx_ring;
    119119        /** Packets in tx ring  */
    120120        packet_t **tx_ring_packets;
    121121        /** Rx ring */
    122         dma_mem_t rx_ring;
     122        dmamem_t rx_ring;
    123123        /** Packets in rx ring  */
    124124        packet_t **rx_ring_packets;
     
    188188static ddf_dev_ops_t e1000_dev_ops;
    189189
    190 static int e1000_add_device(ddf_dev_t *);
     190static int e1000_dev_add(ddf_dev_t *);
    191191
    192192/** Basic driver operations for E1000 driver */
    193193static driver_ops_t e1000_driver_ops = {
    194         .add_device = e1000_add_device
     194        .dev_add = e1000_dev_add
    195195};
    196196
     
    654654        for (unsigned int ra_num = E1000_RECEIVE_ADDRESS - 1;
    655655            ra_num >= first_multicast_ra_num;
    656             ra_num-- {
     656            ra_num--) {
    657657                e1000_write_receive_address(e1000_data, ra_num, addr_iterator, true);
    658658                addr_iterator++;
     
    10621062        *(e1000_data->rx_ring_packets + offset) = packet;
    10631063        e1000_rx_descriptor_t * rx_descriptor = (e1000_rx_descriptor_t *)
    1064             (e1000_data->rx_ring.virtual +
     1064            (e1000_data->rx_ring.virt +
    10651065            offset * sizeof(e1000_rx_descriptor_t));
    10661066       
     
    10891089{
    10901090        e1000_rx_descriptor_t *rx_descriptor = (e1000_rx_descriptor_t *)
    1091             (e1000_data->rx_ring.virtual +
     1091            (e1000_data->rx_ring.virt +
    10921092            offset * sizeof(e1000_rx_descriptor_t));
    10931093       
     
    11101110       
    11111111        e1000_tx_descriptor_t * tx_descriptor = (e1000_tx_descriptor_t *)
    1112             (e1000_data->tx_ring.virtual +
     1112            (e1000_data->tx_ring.virt +
    11131113            offset * sizeof(e1000_tx_descriptor_t));
    11141114       
     
    11591159       
    11601160        e1000_rx_descriptor_t *rx_descriptor = (e1000_rx_descriptor_t *)
    1161             (e1000_data->rx_ring.virtual +
     1161            (e1000_data->rx_ring.virt +
    11621162            next_tail * sizeof(e1000_rx_descriptor_t));
    11631163       
     
    11771177               
    11781178                rx_descriptor = (e1000_rx_descriptor_t *)
    1179                     (e1000_data->rx_ring.virtual +
     1179                    (e1000_data->rx_ring.virt +
    11801180                    next_tail * sizeof(e1000_rx_descriptor_t));
    11811181        }
     
    13641364        fibril_mutex_lock(&e1000_data->rx_lock);
    13651365       
    1366         e1000_data->rx_ring.size =
    1367             ALIGN_UP(E1000_RX_PACKETS_COUNT * sizeof(e1000_rx_descriptor_t),
    1368             PAGE_SIZE) / PAGE_SIZE;
    1369         e1000_data->rx_ring.mapping_flags = AS_AREA_READ | AS_AREA_WRITE;
    1370        
    1371         int rc = dma_allocate_anonymous(&e1000_data->rx_ring, 0);
     1366        int rc = dmamem_map(&e1000_data->rx_ring,
     1367            SIZE2PAGES(E1000_RX_PACKETS_COUNT * sizeof(e1000_rx_descriptor_t)),
     1368            AS_AREA_READ | AS_AREA_WRITE, 0);
    13721369        if (rc != EOK)
    13731370                return rc;
    13741371       
    13751372        E1000_REG_WRITE(e1000_data, E1000_RDBAH,
    1376             (uint32_t) (PTR_TO_U64(e1000_data->rx_ring.physical) >> 32));
     1373            (uint32_t) (PTR_TO_U64(e1000_data->rx_ring.phys) >> 32));
    13771374        E1000_REG_WRITE(e1000_data, E1000_RDBAL,
    1378             (uint32_t) PTR_TO_U64(e1000_data->rx_ring.physical));
     1375            (uint32_t) PTR_TO_U64(e1000_data->rx_ring.phys));
    13791376       
    13801377        e1000_data->rx_ring_packets =
     
    14131410       
    14141411        free(e1000_data->rx_ring_packets);
    1415         dma_free(&e1000_data->rx_ring);
     1412        dmamem_unmap(&e1000_data->rx_ring);
    14161413}
    14171414
     
    14781475        E1000_REG_WRITE(e1000_data, E1000_ITR,
    14791476            e1000_calculate_itr_interval_from_usecs(
    1480             E1000_DEFAULT_INTERRUPT_INTEVAL_USEC));
     1477            E1000_DEFAULT_INTERRUPT_INTERVAL_USEC));
    14811478        E1000_REG_WRITE(e1000_data, E1000_FCAH, 0);
    14821479        E1000_REG_WRITE(e1000_data, E1000_FCAL, 0);
     
    15181515        fibril_mutex_lock(&e1000_data->tx_lock);
    15191516       
    1520         e1000_data->tx_ring.size =
    1521             ALIGN_UP(E1000_TX_PACKETS_COUNT * sizeof(e1000_tx_descriptor_t),
    1522             PAGE_SIZE) / PAGE_SIZE;
    1523         e1000_data->tx_ring.mapping_flags = AS_AREA_READ | AS_AREA_WRITE;
    1524        
    1525         int rc = dma_allocate_anonymous(&e1000_data->tx_ring, 0);
     1517        int rc = dmamem_map(&e1000_data->tx_ring,
     1518            SIZE2PAGES(E1000_TX_PACKETS_COUNT * sizeof(e1000_tx_descriptor_t)),
     1519            AS_AREA_READ | AS_AREA_WRITE, 0);
    15261520        if (rc != EOK)
    15271521                return rc;
    15281522       
    1529         bzero(e1000_data->tx_ring.virtual,
     1523        bzero(e1000_data->tx_ring.virt,
    15301524            E1000_TX_PACKETS_COUNT * sizeof(e1000_tx_descriptor_t));
    15311525       
    15321526        E1000_REG_WRITE(e1000_data, E1000_TDBAH,
    1533             (uint32_t) (PTR_TO_U64(e1000_data->tx_ring.physical) >> 32));
     1527            (uint32_t) (PTR_TO_U64(e1000_data->tx_ring.phys) >> 32));
    15341528        E1000_REG_WRITE(e1000_data, E1000_TDBAL,
    1535             (uint32_t) PTR_TO_U64(e1000_data->tx_ring.physical));
     1529            (uint32_t) PTR_TO_U64(e1000_data->tx_ring.phys));
    15361530       
    15371531        e1000_data->tx_ring_packets =
     
    15531547{
    15541548        free(e1000_data->tx_ring_packets);
    1555         dma_free(&e1000_data->tx_ring);
     1549        dmamem_unmap(&e1000_data->tx_ring);
    15561550}
    15571551
     
    18891883       
    18901884        /* Obtain and fill hardware resources info */
    1891         rc = e1000_get_resource_info(dev);
     1885        int rc = e1000_get_resource_info(dev);
    18921886        if (rc != EOK) {
    18931887                e1000_dev_cleanup(dev);
     
    19251919}
    19261920
    1927 /** The add_device callback of E1000 callback
    1928  *
    1929  * Probe and initialize the newly added device.
     1921/** Probe and initialize the newly added device.
    19301922 *
    19311923 * @param dev E1000 device.
    19321924 *
    19331925 */
    1934 int e1000_add_device(ddf_dev_t *dev)
     1926int e1000_dev_add(ddf_dev_t *dev)
    19351927{
    19361928        assert(dev);
     
    21142106        int rc = nic_report_address(nic_data, addr);
    21152107        if (rc == EOK)
    2116                 e1000_write_receive_address(e1000_data, 0, addr, false)
     2108                e1000_write_receive_address(e1000_data, 0, addr, false);
    21172109       
    21182110        fibril_mutex_unlock(&e1000_data->tx_lock);
     
    21522144        uint32_t tdt = E1000_REG_READ(e1000_data, E1000_TDT);
    21532145        e1000_tx_descriptor_t *tx_descriptor_addr = (e1000_tx_descriptor_t *)
    2154             (e1000_data->tx_ring.virtual + tdt * sizeof(e1000_tx_descriptor_t));
     2146            (e1000_data->tx_ring.virt + tdt * sizeof(e1000_tx_descriptor_t));
    21552147       
    21562148        bool descriptor_available = false;
     
    22192211int main(void)
    22202212{
    2221         int rc = dma_allocator_init();
     2213        int rc = nic_driver_init(NAME);
    22222214        if (rc != EOK)
    22232215                return rc;
    22242216       
    22252217        nic_driver_implement(&e1000_driver_ops, &e1000_dev_ops, &e1000_nic_iface);
    2226         e1000_driver_init();
    22272218        return ddf_driver_main(&e1000_driver);
    22282219}
  • uspace/drv/nic/e1k/e1k.h

    rfd6bd6d r9916841  
    3636#ifndef E1K_H_
    3737#define E1K_H_
     38
     39#include <stdint.h>
    3840
    3941/** Ethernet CRC size after packet received in rx_descriptor */
Note: See TracChangeset for help on using the changeset viewer.