summaryrefslogtreecommitdiff
path: root/sys/dev/pci/if_em_osdep.h
diff options
context:
space:
mode:
authorNathan Binkert <nate@cvs.openbsd.org>2002-09-24 18:56:03 +0000
committerNathan Binkert <nate@cvs.openbsd.org>2002-09-24 18:56:03 +0000
commitc6114f8901bd269105a2d6f7131dea78a070ecb6 (patch)
treec63dd3ca76eb52bb5b4562532ed75a7d791b0c37 /sys/dev/pci/if_em_osdep.h
parent59c0d446267e5ac5962411ba74fe8dc57703e0cf (diff)
Driver for Intel PRO/1000 gigabit ethernet adapters.
This driver should work with all current models of gigabit ethernet adapters. Driver written by Intel Ported from FreeBSD by Henric Jungheim <henric@attbi.com> bus_dma and endian support by me.
Diffstat (limited to 'sys/dev/pci/if_em_osdep.h')
-rw-r--r--sys/dev/pci/if_em_osdep.h131
1 files changed, 131 insertions, 0 deletions
diff --git a/sys/dev/pci/if_em_osdep.h b/sys/dev/pci/if_em_osdep.h
new file mode 100644
index 00000000000..e6e4c793a0f
--- /dev/null
+++ b/sys/dev/pci/if_em_osdep.h
@@ -0,0 +1,131 @@
+/**************************************************************************
+
+Copyright (c) 2001-2002 Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms of the Software, with or
+without modification, are permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code of the Software may retain the above
+ copyright notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form of the Software may reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+
+ 3. Neither the name of the Intel Corporation nor the names of its
+ contributors shall be used to endorse or promote products derived from
+ this Software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR ITS CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+***************************************************************************/
+
+/*$FreeBSD$*/
+
+#ifndef _OPENBSD_OS_H_
+#define _OPENBSD_OS_H_
+
+#define ASSERT(x) if(!(x)) panic("EM: x")
+
+/* The happy-fun DELAY macro is defined in /usr/src/sys/i386/include/clock.h */
+#define usec_delay(x) DELAY(x)
+#define msec_delay(x) DELAY(1000*(x))
+
+#define MSGOUT(S, A, B) printf(S "\n", A, B)
+#define DEBUGFUNC(F) DEBUGOUT(F);
+#if DBG
+ #define DEBUGOUT(S) printf(S "\n")
+ #define DEBUGOUT1(S,A) printf(S "\n",A)
+ #define DEBUGOUT2(S,A,B) printf(S "\n",A,B)
+ #define DEBUGOUT3(S,A,B,C) printf(S "\n",A,B,C)
+ #define DEBUGOUT7(S,A,B,C,D,E,F,G) printf(S "\n",A,B,C,D,E,F,G)
+#else
+ #define DEBUGOUT(S)
+ #define DEBUGOUT1(S,A)
+ #define DEBUGOUT2(S,A,B)
+ #define DEBUGOUT3(S,A,B,C)
+ #define DEBUGOUT7(S,A,B,C,D,E,F,G)
+#endif
+
+#define FALSE 0
+#define TRUE 1
+#define CMD_MEM_WRT_INVALIDATE 0x0010 /* BIT_4 */
+#define PCI_COMMAND_REGISTER PCI_COMMAND_STATUS_REG
+
+struct em_dmamap
+{
+ bus_size_t emm_size;
+ caddr_t emm_ptr, emm_kva;
+ bus_dma_segment_t emm_seg;
+ bus_dmamap_t emm_dmamap;
+ int emm_rseg;
+};
+
+struct em_osdep
+{
+ struct device *dev;
+
+ struct em_dmamap em_rx;
+ struct em_dmamap em_tx;
+
+ struct pci_attach_args em_pa;
+
+ bus_space_handle_t em_bhandle;
+ bus_space_tag_t em_btag;
+ bus_size_t em_memsize;
+ bus_addr_t em_membase;
+
+ bus_space_handle_t em_iobhandle;
+ bus_space_tag_t em_iobtag;
+ bus_size_t em_iosize;
+ bus_addr_t em_iobase;
+
+};
+
+#define E1000_READ_REG(hw, reg) \
+ bus_space_read_4( \
+ ((struct em_osdep *)(hw)->back)->em_btag, \
+ ((struct em_osdep *)(hw)->back)->em_bhandle, \
+ ((hw)->mac_type >= em_82543) ? \
+ E1000_##reg : E1000_82542_##reg)
+
+#define E1000_WRITE_REG(hw, reg, value) \
+ bus_space_write_4( \
+ ((struct em_osdep *)(hw)->back)->em_btag, \
+ ((struct em_osdep *)(hw)->back)->em_bhandle, \
+ ((hw)->mac_type >= em_82543) ? \
+ E1000_##reg : E1000_82542_##reg, \
+ value)
+
+#define E1000_READ_REG_ARRAY(sc, reg, offset) \
+ bus_space_read_4( \
+ ((struct em_osdep *)(hw)->back)->em_btag, \
+ ((struct em_osdep *)(hw)->back)->em_bhandle, \
+ ((hw)->mac_type >= em_82543) ? \
+ (E1000_##reg + ((offset) << 2)) : \
+ (E1000_82542_##reg + ((offset) << 2)) )
+
+#define E1000_WRITE_REG_ARRAY(sc, reg, offset, value) \
+ bus_space_write_4( \
+ ((struct em_osdep *)(hw)->back)->em_btag, \
+ ((struct em_osdep *)(hw)->back)->em_bhandle, \
+ ((hw)->mac_type >= em_82543) ? \
+ (E1000_##reg + ((offset) << 2)) : \
+ (E1000_82542_##reg + ((offset) << 2)), \
+ value)
+
+#endif /* _OPENBSD_OS_H_ */
+