#ifndef _SYS_NIUMX_VAR_H
#define _SYS_NIUMX_VAR_H
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
NIUMX_DBG_ATTACH,
NIUMX_DBG_MAP,
NIUMX_DBG_CTLOPS,
NIUMX_DBG_INTROPS,
NIUMX_DBG_A_INTX,
NIUMX_DBG_R_INTX,
NIUMX_DBG_INTR,
NIUMX_DBG_DMA_ALLOCH,
NIUMX_DBG_DMA_BINDH,
NIUMX_DBG_DMA_UNBINDH,
NIUMX_DBG_CHK_MOD
} niumx_debug_bit_t;
#if defined(DEBUG)
#define DBG niumx_dbg
extern void niumx_dbg(niumx_debug_bit_t bit, dev_info_t *dip, char *fmt, ...);
#else
#define DBG 0 &&
#endif
typedef uint64_t niudevhandle_t;
#define NIUMX_DEVHDLE_MASK 0xFFFFFFF
typedef uint32_t niucpuid_t;
typedef uint32_t niudevino_t;
typedef uint64_t niusysino_t;
typedef struct niumx_ih {
dev_info_t *ih_dip;
uint32_t ih_inum;
niusysino_t ih_sysino;
niucpuid_t ih_cpuid;
int ih_state;
int ih_pri;
uint_t (*ih_hdlr)();
caddr_t ih_arg1;
caddr_t ih_arg2;
struct niumx_ih *ih_next;
} niumx_ih_t;
#define NIUMX_MAX_INTRS 64
#define NIUMX_SOFT_STATE_OPEN 1
#define NIUMX_SOFT_STATE_OPEN_EXCL 2
#define NIUMX_SOFT_STATE_CLOSED 4
typedef struct niumx_devstate {
dev_info_t *dip;
int niumx_soft_state;
int niumx_open_count;
niudevhandle_t niumx_dev_hdl;
kmutex_t niumx_mutex;
int niumx_fm_cap;
ddi_iblock_cookie_t niumx_fm_ibc;
niumx_ih_t niumx_ihtable[NIUMX_MAX_INTRS];
} niumx_devstate_t;
#define dmai_pfnlst dmai_iopte
#define dmai_pfn0 dmai_sbi
#define dmai_roffset dmai_pool
#define NIUMX_PAGE_SHIFT 13
#define NIUMX_PAGE_SIZE (1 << NIUMX_PAGE_SHIFT)
#define NIUMX_PAGE_MASK ~(NIUMX_PAGE_SIZE - 1)
#define NIUMX_PAGE_OFFSET (NIUMX_PAGE_SIZE - 1)
#define NIUMX_PTOB(x) (((uint64_t)(x)) << NIUMX_PAGE_SHIFT)
typedef struct niumx_ranges {
uint32_t child_hi;
uint32_t child_lo;
uint32_t parent_hi;
uint32_t parent_lo;
uint32_t size_hi;
uint32_t size_lo;
} niumx_ranges_t;
#define NIUMX_DEFAULT_PIL 6
typedef struct {
uint32_t addr_high;
uint32_t addr_low;
uint32_t size_high;
uint32_t size_low;
} niu_regspec_t;
#define NIUMX_INTR_MAJOR_VER_1 0x1ull
#define NIUMX_INTR_MAJOR_VER NIUMX_INTR_MAJOR_VER_1
#define NIUMX_INTR_MINOR_VER_0 0x0ull
#define NIUMX_INTR_MINOR_VER NIUMX_INTR_MINOR_VER_0
#define NIUMX_NAMEINST(dip) ddi_driver_name(dip), ddi_get_instance(dip)
#define NIUMX_DIP_TO_HANDLE(dip) \
((niumx_devstate_t *)NIUMX_DIP_TO_STATE(dip))->niumx_dev_hdl
#define NIUMX_DIP_TO_INST(dip) ddi_get_instance(dip)
#define NIUMX_INST_TO_STATE(inst) ddi_get_soft_state(niumx_state, inst)
#define NIUMX_DIP_TO_STATE(dip) NIUMX_INST_TO_STATE(NIUMX_DIP_TO_INST(dip))
#define NIUMX_DEV_TO_SOFTSTATE(dev) \
((pci_t *)ddi_get_soft_state(niumx_state, \
PCI_MINOR_NUM_TO_INSTANCE(getminor(dev))))
#ifdef __cplusplus
}
#endif
#endif