#ifndef _SYS_DB21554_CONFIG_H
#define _SYS_DB21554_CONFIG_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <sys/pci.h>
#define DB_PCONF_PRI_HDR_OFF 0x00
#define DB_PCONF_SEC_HDR_OFF 0x40
#define DB_SCONF_PRI_HDR_OFF 0x40
#define DB_SCONF_SEC_HDR_OFF 0x00
#define DB_CONF_REGS 0x80
#define DB_SCONF_HDR_OFF 0x40
#define DB_PCONF_MEM_CSR PCI_CONF_BASE0
#define DB_PCONF_IO_CSR PCI_CONF_BASE1
#define DB_PCONF_DS_IO_MEM1 PCI_CONF_BASE2
#define DB_PCONF_DS_MEM2 PCI_CONF_BASE3
#define DB_PCONF_DS_MEM3 PCI_CONF_BASE4
#define DB_PCONF_DS_UMEM3 PCI_CONF_BASE5
#define DB_PCONF_EXP_ROM PCI_CONF_ROM
#define DB_PCONF_US_IO_MEM0 DB_PCONF_SEC_HDR_OFF+PCI_CONF_BASE2
#define DB_PCONF_US_MEM1 DB_PCONF_SEC_HDR_OFF+PCI_CONF_BASE3
#define DB_PCONF_US_MEM2 DB_PCONF_SEC_HDR_OFF+PCI_CONF_BASE4
#define DB_SCONF_MEM_CSR PCI_CONF_BASE0
#define DB_SCONF_IO_CSR PCI_CONF_BASE1
#define DB_SCONF_US_IO_MEM0 PCI_CONF_BASE2
#define DB_SCONF_US_MEM1 PCI_CONF_BASE3
#define DB_SCONF_US_MEM2 PCI_CONF_BASE4
#define DB_SCONF_DS_IO_MEM1 DB_SCONF_PRI_HDR_OFF+PCI_CONF_BASE2
#define DB_SCONF_DS_MEM2 DB_SCONF_PRI_HDR_OFF+PCI_CONF_BASE3
#define DB_SCONF_DS_MEM3 DB_PCONF_PRI_HDR_OFF+PCI_CONF_BASE4
#define DB_SCONF_DS_UMEM3 DB_PCONF_PRI_HDR_OFF+PCI_CONF_BASE5
#define DB_IO_BIT 0x00000001
#define DB_CONF_DS_CONF_ADDR 0x80
#define DB_CONF_DS_CONF_DATA 0x84
#define DB_CONF_US_CONF_ADDR 0x88
#define DB_CONF_US_CONF_DATA 0x8C
#define DB_CONF_CONF_OWN 0x90
#define DB_CONF8_DS_CONF_OWN 0x90
#define DB_CONF8_US_CONF_OWN 0x91
#define DB_CONF_CONF_CSR 0x92
#define DB_CONF8_DS_CONF_CSR 0x92
#define DB_CONF8_US_CONF_CSR 0x93
#define DB_CONF_DS_MEM0_TR_BASE 0x94
#define DB_CONF_DS_IO_MEM1_TR_BASE 0x98
#define DB_CONF_DS_MEM2_TR_BASE 0x9C
#define DB_CONF_DS_MEM3_TR_BASE 0xA0
#define DB_CONF_US_IO_MEM0_TR_BASE 0xA4
#define DB_CONF_US_MEM1_TR_BASE 0xA8
#define DB_CONF_DS_MEM0_SETUP 0xAC
#define DB_CONF_DS_IO_MEM1_SETUP 0xB0
#define DB_CONF_DS_MEM2_SETUP 0xB4
#define DB_CONF_DS_MEM3_SETUP 0xB8
#define DB_CONF_DS_UP32_MEM3_SETUP 0xBC
#define DB_CONF_PRIM_EXP_ROM_SETUP 0xC0
#define DB_CONF_US_IO_MEM0_SETUP 0xC4
#define DB_CONF_US_MEM1_SETUP 0xC8
#define DB_CONF_CHIP_CTRL0 0xCC
#define DB_CONF_CHIP_CTRL1 0xCE
#define DB_CONF_STATUS 0xD0
#define DB_CONF_ARBITER_CTRL 0xD2
#define DB_CONF_PRIM_SERR_DISABLES 0xD4
#define DB_CONF_SEC_SERR_DISABLES 0xD5
#define DB_CONF_RESET_CTRL 0xD8
#define DB_CONF_CAP_ID_1 0xDC
#define DB_CONF_NEXT_ITEM_PTR_1 0xDD
#define DB_CONF_PM_CAP 0xDE
#define DB_CONF_PM_CSR 0xE0
#define DB_CONF_PM_CSR_BSE 0xE2
#define DB_CONF_PM_DATA 0xE3
#define DB_CONF_CAP_ID_2 0xE4
#define DB_CONF_NEXT_ITEM_PTR_2 0xE5
#define DB_CONF_VPD_ADDRESS 0xE6
#define DB_CONF_VPD_DATA 0xE8
#define DB_CONF_CAP_ID_3 0xEC
#define DB_CONF_NEXT_ITEM_PTR_3 0xED
#define DB_CONF_HS_CSR 0xEE
#define DB_VENDOR_ID 0x1011
#define DB_DEVICE_ID 0x46
#define DB_INVAL_VEND 0xffff
#define DS_CONF_OWN 0x0001
#define US_CONF_OWN 0x0100
#define DS8_CONF_OWN 0x01
#define US8_CONF_OWN 0x01
#define DS_OWN_STAT 0x0001
#define DS_ENABLE 0x0002
#define US_OWN_STAT 0x0100
#define US_ENABLE 0x0200
#define DELAYED_TRANS_ORDER 0x0040
#define SERR_FWD 0x0080
#define PLOCKOUT 0x0400
#define SEC_CLK_DIS 0x0800
#define P_PW_THRESHOLD 0x0001
#define S_PW_THRESHOLD 0x0002
#define P_DREAD_THRESHOLD_MASK 0x000C
#define S_DREAD_THRESHOLD_MASK 0x0030
#define DREAD_THRESHOLD_VALBITS 0x3
#define US_MEM2_DISABLE 0x0000
#define PAGESIZE_256 0x0100
#define PAGESIZE_512 0x0200
#define PAGESIZE_1K 0x0300
#define PAGESIZE_2K 0x0400
#define PAGESIZE_4K 0x0500
#define PAGESIZE_8K 0x0600
#define PAGESIZE_16K 0x0700
#define PAGESIZE_32K 0x0800
#define PAGESIZE_64K 0x0900
#define PAGESIZE_128K 0x0A00
#define PAGESIZE_256K 0x0B00
#define PAGESIZE_512K 0x0C00
#define PAGESIZE_1M 0x0D00
#define PAGESIZE_2M 0x0E00
#define PAGESIZE_4M 0x0F00
#define GET_PAGESIZE(chip_ctrl1) (((chip_ctrl1) & 0x0F00) >> 8)
#define RESET_CTRL_RST_SEC 0x01
#define RESET_CTRL_RST 0x02
#define RESET_CTRL_LSTAT 0x08
#define DS_DEL_MTO 0x0001
#define DS_DEL_RD_DISCARD 0x0002
#define DS_DEL_WR_DISCARD 0x0004
#define DS_POST_WRDATA_DISCA 0x0008
#define US_DEL_MTO 0x0100
#define US_DEL_RD_DISCARD 0x0200
#define US_DEL_WR_DISCARD 0x0400
#define US_POST_WRDATA_DISCA 0x0800
#define DB_PCI_REG_ADDR(bus, device, function, reg) \
(((bus) & 0xff) << 16) | (((device & 0x1f)) << 11) \
| (((function) & 0x7) << 8) | ((reg) & 0xff)
#define DB_PCI_REG_ADDR_TYPE0(bus, device, function, reg) \
(((1 << (device & 0x1f)) << 11) \
| (((function) & 0x7) << 8) | \
((reg) & 0xfc))
#define DB_PCI_REG_ADDR_TYPE1(bus, device, function, reg) \
((((bus) & 0xff) << 16) | (((device & 0x1f)) << 11) \
| (((function) & 0x7) << 8) | ((reg) & 0xfc))
#define DB_ENABLE_PCI_CONF_CYCLE_TYPE0 0
#define DB_ENABLE_PCI_CONF_CYCLE_TYPE1 1
#define DB_PCI_CONF_CYCLE_TYPE0_ADDR(conf_addr) \
(((conf_addr) & 0xfffffffc) | DB_ENABLE_PCI_CONF_CYCLE_TYPE0)
#define DB_PCI_CONF_CYCLE_TYPE1_ADDR(conf_addr) \
(((conf_addr) & 0xfffffffc) | DB_ENABLE_PCI_CONF_CYCLE_TYPE1)
#define PCI_HDR_SIZE 64
typedef struct db_pci_header {
uint16_t venid;
uint16_t devid;
uint16_t command;
uint16_t status;
uint8_t revid;
uint8_t pif;
uint8_t subclass;
uint8_t class;
uint8_t cacheline;
uint8_t lat;
uint8_t hdr_type;
uint8_t bist;
uint32_t bar0;
uint32_t bar1;
uint32_t bar2;
uint32_t bar3;
uint32_t bar4;
uint32_t bar5;
uint32_t cardbus_cisp;
uint16_t sub_venid;
uint16_t sub_devid;
uint32_t exprom_bar;
uint32_t res1;
uint32_t res2;
uint8_t int_line;
uint8_t int_pin;
uint8_t min_gnt;
uint8_t max_lat;
} db_pci_header_t;
typedef struct db_conf_regs {
uint32_t ds_mem0_tr_base;
uint32_t ds_io_mem1_tr_base;
uint32_t ds_mem2_tr_base;
uint32_t ds_mem3_tr_base;
uint32_t us_io_mem0_tr_base;
uint32_t us_mem1_tr_base;
uint32_t ds_mem0_setup_reg;
uint32_t ds_io_mem1_setup_reg;
uint32_t ds_mem2_setup_reg;
uint64_t ds_mem3_setup_reg;
uint32_t p_exp_rom_setup;
uint32_t us_io_mem0_setup_reg;
uint32_t us_mem1_setup_reg;
ushort_t chip_control0;
ushort_t chip_control1;
ushort_t chip_status;
ushort_t arb_control;
uchar_t p_serr_disables;
uchar_t s_serr_disables;
ushort_t config_csr;
uint32_t reset_control;
ushort_t pm_cap;
ushort_t pm_csr;
uint8_t hs_csr;
} db_conf_regs_t;
#ifdef __cplusplus
}
#endif
#endif