Annotation of sys/dev/pci/if_em_osdep.h, Revision 1.1
1.1 ! nbrk 1: /**************************************************************************
! 2:
! 3: Copyright (c) 2001-2006, Intel Corporation
! 4: All rights reserved.
! 5:
! 6: Redistribution and use in source and binary forms, with or without
! 7: modification, are permitted provided that the following conditions are met:
! 8:
! 9: 1. Redistributions of source code must retain the above copyright notice,
! 10: this list of conditions and the following disclaimer.
! 11:
! 12: 2. Redistributions in binary form must reproduce the above copyright
! 13: notice, this list of conditions and the following disclaimer in the
! 14: documentation and/or other materials provided with the distribution.
! 15:
! 16: 3. Neither the name of the Intel Corporation nor the names of its
! 17: contributors may be used to endorse or promote products derived from
! 18: this software without specific prior written permission.
! 19:
! 20: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
! 21: AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 22: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 23: ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
! 24: LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 25: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 26: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 27: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 28: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 29: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 30: POSSIBILITY OF SUCH DAMAGE.
! 31:
! 32: ***************************************************************************/
! 33:
! 34: /* $OpenBSD: if_em_osdep.h,v 1.10 2006/11/06 03:52:37 brad Exp $ */
! 35: /* $FreeBSD: if_em_osdep.h,v 1.11 2003/05/02 21:17:08 pdeuskar Exp $ */
! 36:
! 37: #ifndef _EM_OPENBSD_OS_H_
! 38: #define _EM_OPENBSD_OS_H_
! 39:
! 40: /* The happy-fun DELAY macro is defined in /usr/src/sys/i386/include/clock.h */
! 41: #define usec_delay(x) DELAY(x)
! 42: #define msec_delay(x) DELAY(1000*(x))
! 43: /* TODO: Should we be paranoid about delaying in interrupt context? */
! 44: #define msec_delay_irq(x) DELAY(1000*(x))
! 45:
! 46: #define MSGOUT(S, A, B) printf(S "\n", A, B)
! 47: #define DEBUGFUNC(F) DEBUGOUT(F);
! 48: #ifdef DBG
! 49: #define DEBUGOUT(S) printf(S "\n")
! 50: #define DEBUGOUT1(S,A) printf(S "\n",A)
! 51: #define DEBUGOUT2(S,A,B) printf(S "\n",A,B)
! 52: #define DEBUGOUT3(S,A,B,C) printf(S "\n",A,B,C)
! 53: #define DEBUGOUT7(S,A,B,C,D,E,F,G) printf(S "\n",A,B,C,D,E,F,G)
! 54: #else
! 55: #define DEBUGOUT(S)
! 56: #define DEBUGOUT1(S,A)
! 57: #define DEBUGOUT2(S,A,B)
! 58: #define DEBUGOUT3(S,A,B,C)
! 59: #define DEBUGOUT7(S,A,B,C,D,E,F,G)
! 60: #endif
! 61:
! 62: #define CMD_MEM_WRT_INVALIDATE 0x0010 /* BIT_4 */
! 63:
! 64: struct em_osdep
! 65: {
! 66: bus_space_tag_t mem_bus_space_tag;
! 67: bus_space_handle_t mem_bus_space_handle;
! 68: bus_space_tag_t io_bus_space_tag;
! 69: bus_space_handle_t io_bus_space_handle;
! 70: bus_space_tag_t flash_bus_space_tag;
! 71: bus_space_handle_t flash_bus_space_handle;
! 72: struct device *dev;
! 73:
! 74: struct pci_attach_args em_pa;
! 75:
! 76: bus_size_t em_memsize;
! 77: bus_addr_t em_membase;
! 78: bus_size_t em_iosize;
! 79: bus_addr_t em_iobase;
! 80: bus_size_t em_flashsize;
! 81: bus_addr_t em_flashbase;
! 82: };
! 83:
! 84: #define E1000_WRITE_FLUSH(hw) E1000_READ_REG(hw, STATUS)
! 85:
! 86: /* Read from an absolute offset in the adapter's memory space */
! 87: #define E1000_READ_OFFSET(hw, offset) \
! 88: bus_space_read_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 89: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 90: offset)
! 91:
! 92: /* Write to an absolute offset in the adapter's memory space */
! 93: #define E1000_WRITE_OFFSET(hw, offset, value) \
! 94: bus_space_write_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 95: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 96: offset, value)
! 97:
! 98: /* Convert a register name to its offset in the adapter's memory space */
! 99: #define E1000_REG_OFFSET(hw, reg) \
! 100: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg)
! 101:
! 102: /* Register READ/WRITE macros */
! 103:
! 104: #define E1000_READ_REG(hw, reg) \
! 105: bus_space_read_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 106: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 107: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg))
! 108:
! 109: #define E1000_WRITE_REG(hw, reg, value) \
! 110: bus_space_write_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 111: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 112: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg), \
! 113: value)
! 114:
! 115: #define E1000_READ_REG_ARRAY(hw, reg, index) \
! 116: bus_space_read_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 117: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 118: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg) \
! 119: + ((index) << 2))
! 120:
! 121: #define E1000_WRITE_REG_ARRAY(hw, reg, index, value) \
! 122: bus_space_write_4(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 123: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 124: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg) \
! 125: + ((index) << 2), value)
! 126:
! 127: #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
! 128: #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
! 129:
! 130: #define E1000_WRITE_REG_ARRAY_BYTE(hw, reg, index, value) \
! 131: bus_space_write_1(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 132: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 133: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg \
! 134: + index), value)
! 135:
! 136: #define E1000_WRITE_REG_ARRAY_WORD(hw, reg, index, value) \
! 137: bus_space_write_2(((struct em_osdep *)(hw)->back)->mem_bus_space_tag, \
! 138: ((struct em_osdep *)(hw)->back)->mem_bus_space_handle, \
! 139: ((hw)->mac_type >= em_82543 ? E1000_##reg : E1000_82542_##reg \
! 140: + (index << 1)), value)
! 141:
! 142: #define E1000_READ_ICH_FLASH_REG(hw, reg) \
! 143: bus_space_read_4(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
! 144: ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, reg)
! 145:
! 146: #define E1000_READ_ICH_FLASH_REG16(hw, reg) \
! 147: bus_space_read_2(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
! 148: ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, reg)
! 149:
! 150: #define E1000_WRITE_ICH_FLASH_REG(hw, reg, value) \
! 151: bus_space_write_4(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
! 152: ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, \
! 153: reg, value)
! 154:
! 155: #define E1000_WRITE_ICH_FLASH_REG16(hw, reg, value) \
! 156: bus_space_write_2(((struct em_osdep *)(hw)->back)->flash_bus_space_tag, \
! 157: ((struct em_osdep *)(hw)->back)->flash_bus_space_handle, \
! 158: reg, value)
! 159:
! 160: #define em_io_read(hw, port) \
! 161: bus_space_read_4(((struct em_osdep *)(hw)->back)->io_bus_space_tag, \
! 162: ((struct em_osdep *)(hw)->back)->io_bus_space_handle, (port))
! 163:
! 164: #define em_io_write(hw, port, value) \
! 165: bus_space_write_4(((struct em_osdep *)(hw)->back)->io_bus_space_tag, \
! 166: ((struct em_osdep *)(hw)->back)->io_bus_space_handle, \
! 167: (port), (value))
! 168:
! 169: #ifdef DEBUG
! 170: #define EM_KASSERT(exp,msg) do { if (!(exp)) panic msg; } while (0)
! 171: #else
! 172: #define EM_KASSERT(exp,msg)
! 173: #endif
! 174:
! 175: #endif /* _EM_OPENBSD_OS_H_ */
CVSweb