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