1 /*- 2 * Copyright 2021 Intel Corp 3 * Copyright 2021 Rubicon Communications, LLC (Netgate) 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 * $FreeBSD$ 7 */ 8 9 #ifndef _FREEBSD_OS_H_ 10 #define _FREEBSD_OS_H_ 11 12 #include <sys/types.h> 13 #include <sys/param.h> 14 #include <sys/systm.h> 15 #include <sys/lock.h> 16 #include <sys/mutex.h> 17 #include <sys/mbuf.h> 18 #include <sys/protosw.h> 19 #include <sys/socket.h> 20 #include <sys/malloc.h> 21 #include <sys/kernel.h> 22 #include <sys/bus.h> 23 24 #include <net/ethernet.h> 25 #include <net/if.h> 26 #include <net/if_var.h> 27 #include <net/iflib.h> 28 29 #include <machine/bus.h> 30 #include <sys/rman.h> 31 #include <machine/resource.h> 32 #include <vm/vm.h> 33 #include <vm/pmap.h> 34 #include <machine/clock.h> 35 #include <dev/pci/pcivar.h> 36 #include <dev/pci/pcireg.h> 37 38 #define usec_delay(x) DELAY(x) 39 #define usec_delay_irq(x) usec_delay(x) 40 #define msec_delay(x) DELAY(1000*(x)) 41 #define msec_delay_irq(x) DELAY(1000*(x)) 42 43 /* Enable/disable debugging statements in shared code */ 44 #define DBG 0 45 46 #define DEBUGOUT(...) \ 47 do { if (DBG) printf(__VA_ARGS__); } while (0) 48 #define DEBUGOUT1(...) DEBUGOUT(__VA_ARGS__) 49 #define DEBUGOUT2(...) DEBUGOUT(__VA_ARGS__) 50 #define DEBUGOUT3(...) DEBUGOUT(__VA_ARGS__) 51 #define DEBUGOUT7(...) DEBUGOUT(__VA_ARGS__) 52 #define DEBUGFUNC(F) DEBUGOUT(F "\n") 53 54 typedef uint64_t u64; 55 typedef uint32_t u32; 56 typedef uint16_t u16; 57 typedef uint8_t u8; 58 typedef int64_t s64; 59 typedef int32_t s32; 60 typedef int16_t s16; 61 typedef int8_t s8; 62 63 #define __le16 u16 64 #define __le32 u32 65 #define __le64 u64 66 67 struct igc_osdep 68 { 69 bus_space_tag_t mem_bus_space_tag; 70 bus_space_handle_t mem_bus_space_handle; 71 bus_space_tag_t io_bus_space_tag; 72 bus_space_handle_t io_bus_space_handle; 73 bus_space_tag_t flash_bus_space_tag; 74 bus_space_handle_t flash_bus_space_handle; 75 device_t dev; 76 if_ctx_t ctx; 77 }; 78 79 #define IGC_REGISTER(hw, reg) reg 80 81 #define IGC_WRITE_FLUSH(a) IGC_READ_REG(a, IGC_STATUS) 82 83 /* Read from an absolute offset in the adapter's memory space */ 84 #define IGC_READ_OFFSET(hw, offset) \ 85 bus_space_read_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 86 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, offset) 87 88 /* Write to an absolute offset in the adapter's memory space */ 89 #define IGC_WRITE_OFFSET(hw, offset, value) \ 90 bus_space_write_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 91 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, offset, value) 92 93 /* Register READ/WRITE macros */ 94 95 #define IGC_READ_REG(hw, reg) \ 96 bus_space_read_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 97 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 98 IGC_REGISTER(hw, reg)) 99 100 #define IGC_WRITE_REG(hw, reg, value) \ 101 bus_space_write_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 102 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 103 IGC_REGISTER(hw, reg), value) 104 105 #define IGC_READ_REG_ARRAY(hw, reg, index) \ 106 bus_space_read_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 107 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 108 IGC_REGISTER(hw, reg) + ((index)<< 2)) 109 110 #define IGC_WRITE_REG_ARRAY(hw, reg, index, value) \ 111 bus_space_write_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 112 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 113 IGC_REGISTER(hw, reg) + ((index)<< 2), value) 114 115 #define IGC_READ_REG_ARRAY_DWORD IGC_READ_REG_ARRAY 116 #define IGC_WRITE_REG_ARRAY_DWORD IGC_WRITE_REG_ARRAY 117 118 #define IGC_READ_REG_ARRAY_BYTE(hw, reg, index) \ 119 bus_space_read_1(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 120 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 121 IGC_REGISTER(hw, reg) + index) 122 123 #define IGC_WRITE_REG_ARRAY_BYTE(hw, reg, index, value) \ 124 bus_space_write_1(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 125 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 126 IGC_REGISTER(hw, reg) + index, value) 127 128 #define IGC_WRITE_REG_ARRAY_WORD(hw, reg, index, value) \ 129 bus_space_write_2(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \ 130 ((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \ 131 IGC_REGISTER(hw, reg) + (index << 1), value) 132 133 #endif /* _FREEBSD_OS_H_ */ 134