/*
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef _SYS_IPW2100_H
#define	_SYS_IPW2100_H

#ifdef __cplusplus
extern "C" {
#endif

/*
 * Intel Wireless PRO/2100 mini-PCI adapter driver
 * ipw2100.h: common definitions and interface to user land application
 */
#include <sys/types.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>

#define	IPW2100_DRV_NAME  "ipw"
#define	IPW2100_DRV_DESC  "Intel Wireless 2100"

/*
 * Debug functionalities
 */
#define	IPW2100_DBG_INIT	(0x00000001)  /* initialization */
#define	IPW2100_DBG_GLD		(0x00000002)  /* GLD */
#define	IPW2100_DBG_WIFI	(0x00000004)  /* WiFi */
#define	IPW2100_DBG_DMA		(0x00000008)  /* DMA */
#define	IPW2100_DBG_CSR		(0x00000010)  /* low-level CSR access */
#define	IPW2100_DBG_FW		(0x00000020)  /* uc & fw */
#define	IPW2100_DBG_RING	(0x00000040)  /* ring operations */
#define	IPW2100_DBG_IOCTL	(0x00000080)  /* ioctl */
#define	IPW2100_DBG_INT		(0x00000100)  /* interrupt */
#define	IPW2100_DBG_TABLE	(0x00000200)  /* ipw2100 tables */
#define	IPW2100_DBG_HWCAP	(0x00001000)  /* hardware capabilities */
#define	IPW2100_DBG_SOFTINT	(0x00008000)  /* softinterrupt */
#define	IPW2100_DBG_STATISTIC	(0x00010000)  /* statistic */
#define	IPW2100_DBG_FATAL	(0x00020000)  /* interrup report error */
#define	IPW2100_DBG_BRUSSELS	(0x00040000)  /* brussels support */

extern uint32_t ipw2100_debug;
extern void	ipw2100_dbg(dev_info_t *dip, int level, const char *fmt, ...);

#ifdef	DEBUG
#define	IPW2100_DBG(l, x)	do {				\
	_NOTE(CONSTANTCONDITION)				\
	if ((l) & ipw2100_debug) 				\
	    ipw2100_dbg x;		 			\
	_NOTE(CONSTANTCONDITION)				\
} while (0)
#else
#define	IPW2100_DBG(l, x)
#endif

#define	IPW2100_WARN(x)   ipw2100_dbg x
#define	IPW2100_REPORT(x) ipw2100_dbg x

#ifdef __cplusplus
}
#endif

#endif /* _SYS_IPW2100_H */