#ifndef _SYS_DB21554_CTRL_H
#define _SYS_DB21554_CTRL_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#define DB_SECONDARY_NEXUS 0x80000000
#define DB_PRIMARY_NEXUS 0x40000000
#define DB_ATTACHED 0x00000001
#define DB_SUSPENDED 0x00100000
#define DB_DEBUG_MODE_ON 0x01000000
#define DB_PCI_CONF_RNUMBER 0
#define DB_PCI_CONF_OFFSET 0
#define DB_CSR_MEMBAR_RNUMBER 1
#define DB_CSR_MEM_OFFSET 0
#define DB_CSR_SIZE 0x1000
#define DB_CSR_IOBAR_RNUMBER 2
#define DB_CSR_IO_OFFSET 0
#define DB_PCI_TIMEOUT 10000
#define DB_PCI_WAIT_MS 0
#define DB_CONF_FAILURE -1
#define DB_PIF_SECONDARY_TO_HOST 0x80
#define DB_PIF_PRIMARY_TO_HOST 0x40
typedef struct db_cfg_state {
dev_info_t *dip;
uchar_t cache_line_size;
uchar_t latency_timer;
uchar_t header_type;
uchar_t sec_latency_timer;
ushort_t command;
ushort_t bridge_control;
} db_cfg_state_t;
typedef struct db_ctrl {
dev_info_t *dip;
uint32_t dev_state;
caddr_t csr_mem;
caddr_t csr_io;
caddr_t conf_io;
pci_bus_range_t range;
uint16_t p_command;
uint16_t s_command;
int8_t p_latency_timer;
int8_t p_cache_line_size;
int8_t s_latency_timer;
int8_t s_cache_line_size;
int8_t p_pwrite_threshold;
int8_t s_pwrite_threshold;
int8_t p_dread_threshold;
int8_t s_dread_threshold;
int8_t delayed_trans_order;
int8_t serr_fwd_enable;
uint8_t latency_timer;
uint8_t cache_line_size;
uint32_t db_pci_err_count;
#ifdef DEBUG
uint32_t db_pci_max_wait_count;
#endif
uint_t config_state_index;
db_cfg_state_t *db_config_state_p;
ddi_acc_handle_t csr_mem_handle;
ddi_acc_handle_t csr_io_handle;
ddi_acc_handle_t conf_handle;
ddi_iblock_cookie_t i_block_cookie;
kmutex_t db_busown;
kmutex_t db_mutex;
uint_t db_soft_state;
#define DB_SOFT_STATE_CLOSED 0x00
#define DB_SOFT_STATE_OPEN 0x01
#define DB_SOFT_STATE_OPEN_EXCL 0x02
int fm_cap;
ddi_iblock_cookie_t fm_ibc;
}db_ctrl_t;
typedef struct db_acc_cfg_addr {
uchar_t c_busnum;
uchar_t c_devnum;
uchar_t c_funcnum;
uchar_t c_fill;
} db_acc_cfg_addr_t;
typedef struct db_acc_pvt {
db_acc_cfg_addr_t dev_addr;
uint32_t *addr;
uint32_t *data;
uint8_t *bus_own;
uint8_t *bus_release;
uint8_t mask;
ushort_t access_mode;
db_ctrl_t *dbp;
ddi_acc_handle_t handle;
} db_acc_pvt_t;
#define DB_IO_MAP_DIRECT 1
#define DB_IO_MAP_INDIRECT 2
#define DB_CONF_MAP_INDIRECT_CONF 4
#define DB_CONF_MAP_INDIRECT_IO 8
#define DB_PCI_CONF_CYCLE_TYPE0 0x100
#define DB_PCI_CONF_CYCLE_TYPE1 0x200
#ifdef __cplusplus
}
#endif
#endif