Home | History | Annotate | Download | only in e1000
      1 /*******************************************************************************
      2 
      3   Intel PRO/1000 Linux driver
      4   Copyright(c) 1999 - 2006 Intel Corporation.
      5 
      6   This program is free software; you can redistribute it and/or modify it
      7   under the terms and conditions of the GNU General Public License,
      8   version 2, as published by the Free Software Foundation.
      9 
     10   This program is distributed in the hope it will be useful, but WITHOUT
     11   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     12   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
     13   more details.
     14 
     15   You should have received a copy of the GNU General Public License along with
     16   this program; if not, write to the Free Software Foundation, Inc.,
     17   51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
     18 
     19   The full GNU General Public License is included in this distribution in
     20   the file called "COPYING".
     21 
     22   Contact Information:
     23   Linux NICS <linux.nics (at) intel.com>
     24   e1000-devel Mailing List <e1000-devel (at) lists.sourceforge.net>
     25   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
     26 
     27 *******************************************************************************/
     28 
     29 FILE_LICENCE ( GPL2_ONLY );
     30 
     31 /* glue for the OS independent part of e1000
     32  * includes register access macros
     33  */
     34 
     35 #ifndef _E1000_OSDEP_H_
     36 #define _E1000_OSDEP_H_
     37 
     38 #include <stdint.h>
     39 #include <stdlib.h>
     40 #include <stdio.h>
     41 #include <gpxe/io.h>
     42 #include <errno.h>
     43 #include <unistd.h>
     44 #include <byteswap.h>
     45 #include <gpxe/pci.h>
     46 #include <gpxe/if_ether.h>
     47 #include <gpxe/ethernet.h>
     48 #include <gpxe/iobuf.h>
     49 #include <gpxe/netdevice.h>
     50 
     51 typedef enum {
     52 #undef FALSE
     53     FALSE = 0,
     54 #undef TRUE
     55     TRUE = 1
     56 } boolean_t;
     57 
     58 /* Debugging #defines */
     59 
     60 #if 1
     61 #define DEBUGFUNC(F) DBG(F "\n")
     62 #else
     63 #define DEBUGFUNC(F)
     64 #endif
     65 
     66 #if 1
     67 #define DEBUGOUT(S)             DBG(S)
     68 #define DEBUGOUT1(S, A...)      DBG(S, A)
     69 #else
     70 #define DEBUGOUT(S)
     71 #define DEBUGOUT1(S, A...)
     72 #endif
     73 
     74 #define DEBUGOUT2 DEBUGOUT1
     75 #define DEBUGOUT3 DEBUGOUT1
     76 #define DEBUGOUT7 DEBUGOUT1
     77 
     78 #define E1000_WRITE_REG(a, reg, value) \
     79     writel((value), ((a)->hw_addr + \
     80         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg)))
     81 
     82 #define E1000_READ_REG(a, reg) \
     83     readl((a)->hw_addr + \
     84         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg))
     85 
     86 #define E1000_WRITE_REG_ARRAY(a, reg, offset, value) \
     87     writel((value), ((a)->hw_addr + \
     88         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
     89         ((offset) << 2)))
     90 
     91 #define E1000_READ_REG_ARRAY(a, reg, offset) \
     92     readl((a)->hw_addr + \
     93         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
     94         ((offset) << 2))
     95 
     96 #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
     97 #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
     98 
     99 #define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) \
    100     writew((value), ((a)->hw_addr + \
    101         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
    102         ((offset) << 1)))
    103 
    104 #define E1000_READ_REG_ARRAY_WORD(a, reg, offset) \
    105     readw((a)->hw_addr + \
    106         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
    107         ((offset) << 1))
    108 
    109 #define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) \
    110     writeb((value), ((a)->hw_addr + \
    111         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
    112         (offset)))
    113 
    114 #define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) \
    115     readb((a)->hw_addr + \
    116         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
    117         (offset))
    118 
    119 #define E1000_WRITE_FLUSH(a) E1000_READ_REG(a, STATUS)
    120 
    121 #define E1000_WRITE_ICH_FLASH_REG(a, reg, value) \
    122     writel((value), ((a)->flash_address + reg))
    123 
    124 #define E1000_READ_ICH_FLASH_REG(a, reg) \
    125     readl((a)->flash_address + reg)
    126 
    127 #define E1000_WRITE_ICH_FLASH_REG16(a, reg, value) \
    128     writew((value), ((a)->flash_address + reg))
    129 
    130 #define E1000_READ_ICH_FLASH_REG16(a, reg) \
    131     readw((a)->flash_address + reg)
    132 
    133 #define	msleep(n) 	mdelay(n)
    134 
    135 #endif /* _E1000_OSDEP_H_ */
    136 
    137 /*
    138  * Local variables:
    139  *  c-basic-offset: 8
    140  *  c-indent-level: 8
    141  *  tab-width: 8
    142  * End:
    143  */
    144