134 lines
4.2 KiB
C
134 lines
4.2 KiB
C
|
/*-
|
||
|
* Copyright 2021 Intel Corp
|
||
|
* Copyright 2021 Rubicon Communications, LLC (Netgate)
|
||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||
|
*
|
||
|
* $FreeBSD$
|
||
|
*/
|
||
|
|
||
|
#ifndef _FREEBSD_OS_H_
|
||
|
#define _FREEBSD_OS_H_
|
||
|
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/param.h>
|
||
|
#include <sys/systm.h>
|
||
|
#include <sys/lock.h>
|
||
|
#include <sys/mutex.h>
|
||
|
#include <sys/mbuf.h>
|
||
|
#include <sys/protosw.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <sys/malloc.h>
|
||
|
#include <sys/kernel.h>
|
||
|
#include <sys/bus.h>
|
||
|
|
||
|
#include <net/ethernet.h>
|
||
|
#include <net/if.h>
|
||
|
#include <net/if_var.h>
|
||
|
#include <net/iflib.h>
|
||
|
|
||
|
#include <machine/bus.h>
|
||
|
#include <sys/rman.h>
|
||
|
#include <machine/resource.h>
|
||
|
#include <vm/vm.h>
|
||
|
#include <vm/pmap.h>
|
||
|
#include <machine/clock.h>
|
||
|
#include <dev/pci/pcivar.h>
|
||
|
#include <dev/pci/pcireg.h>
|
||
|
|
||
|
#define usec_delay(x) DELAY(x)
|
||
|
#define usec_delay_irq(x) usec_delay(x)
|
||
|
#define msec_delay(x) DELAY(1000*(x))
|
||
|
#define msec_delay_irq(x) DELAY(1000*(x))
|
||
|
|
||
|
/* Enable/disable debugging statements in shared code */
|
||
|
#define DBG 0
|
||
|
|
||
|
#define DEBUGOUT(...) \
|
||
|
do { if (DBG) printf(__VA_ARGS__); } while (0)
|
||
|
#define DEBUGOUT1(...) DEBUGOUT(__VA_ARGS__)
|
||
|
#define DEBUGOUT2(...) DEBUGOUT(__VA_ARGS__)
|
||
|
#define DEBUGOUT3(...) DEBUGOUT(__VA_ARGS__)
|
||
|
#define DEBUGOUT7(...) DEBUGOUT(__VA_ARGS__)
|
||
|
#define DEBUGFUNC(F) DEBUGOUT(F "\n")
|
||
|
|
||
|
typedef uint64_t u64;
|
||
|
typedef uint32_t u32;
|
||
|
typedef uint16_t u16;
|
||
|
typedef uint8_t u8;
|
||
|
typedef int64_t s64;
|
||
|
typedef int32_t s32;
|
||
|
typedef int16_t s16;
|
||
|
typedef int8_t s8;
|
||
|
|
||
|
#define __le16 u16
|
||
|
#define __le32 u32
|
||
|
#define __le64 u64
|
||
|
|
||
|
struct igc_osdep
|
||
|
{
|
||
|
bus_space_tag_t mem_bus_space_tag;
|
||
|
bus_space_handle_t mem_bus_space_handle;
|
||
|
bus_space_tag_t io_bus_space_tag;
|
||
|
bus_space_handle_t io_bus_space_handle;
|
||
|
bus_space_tag_t flash_bus_space_tag;
|
||
|
bus_space_handle_t flash_bus_space_handle;
|
||
|
device_t dev;
|
||
|
if_ctx_t ctx;
|
||
|
};
|
||
|
|
||
|
#define IGC_REGISTER(hw, reg) reg
|
||
|
|
||
|
#define IGC_WRITE_FLUSH(a) IGC_READ_REG(a, IGC_STATUS)
|
||
|
|
||
|
/* Read from an absolute offset in the adapter's memory space */
|
||
|
#define IGC_READ_OFFSET(hw, offset) \
|
||
|
bus_space_read_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, offset)
|
||
|
|
||
|
/* Write to an absolute offset in the adapter's memory space */
|
||
|
#define IGC_WRITE_OFFSET(hw, offset, value) \
|
||
|
bus_space_write_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, offset, value)
|
||
|
|
||
|
/* Register READ/WRITE macros */
|
||
|
|
||
|
#define IGC_READ_REG(hw, reg) \
|
||
|
bus_space_read_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg))
|
||
|
|
||
|
#define IGC_WRITE_REG(hw, reg, value) \
|
||
|
bus_space_write_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg), value)
|
||
|
|
||
|
#define IGC_READ_REG_ARRAY(hw, reg, index) \
|
||
|
bus_space_read_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg) + ((index)<< 2))
|
||
|
|
||
|
#define IGC_WRITE_REG_ARRAY(hw, reg, index, value) \
|
||
|
bus_space_write_4(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg) + ((index)<< 2), value)
|
||
|
|
||
|
#define IGC_READ_REG_ARRAY_DWORD IGC_READ_REG_ARRAY
|
||
|
#define IGC_WRITE_REG_ARRAY_DWORD IGC_WRITE_REG_ARRAY
|
||
|
|
||
|
#define IGC_READ_REG_ARRAY_BYTE(hw, reg, index) \
|
||
|
bus_space_read_1(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg) + index)
|
||
|
|
||
|
#define IGC_WRITE_REG_ARRAY_BYTE(hw, reg, index, value) \
|
||
|
bus_space_write_1(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg) + index, value)
|
||
|
|
||
|
#define IGC_WRITE_REG_ARRAY_WORD(hw, reg, index, value) \
|
||
|
bus_space_write_2(((struct igc_osdep *)(hw)->back)->mem_bus_space_tag, \
|
||
|
((struct igc_osdep *)(hw)->back)->mem_bus_space_handle, \
|
||
|
IGC_REGISTER(hw, reg) + (index << 1), value)
|
||
|
|
||
|
#endif /* _FREEBSD_OS_H_ */
|