xref: /freebsd/sys/dev/bhnd/siba/sibareg.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
14ad7e9b0SAdrian Chadd /*-
24ad7e9b0SAdrian Chadd  * Copyright (c) 2015 Landon Fuller <landon@landonf.org>
34ad7e9b0SAdrian Chadd  * Copyright (c) 2010 Broadcom Corporation
44ad7e9b0SAdrian Chadd  *
54ad7e9b0SAdrian Chadd  * This file was derived from the sbconfig.h header distributed with
64ad7e9b0SAdrian Chadd  * Broadcom's initial brcm80211 Linux driver release, as
74ad7e9b0SAdrian Chadd  * contributed to the Linux staging repository.
84ad7e9b0SAdrian Chadd  *
94ad7e9b0SAdrian Chadd  * Permission to use, copy, modify, and/or distribute this software for any
104ad7e9b0SAdrian Chadd  * purpose with or without fee is hereby granted, provided that the above
114ad7e9b0SAdrian Chadd  * copyright notice and this permission notice appear in all copies.
124ad7e9b0SAdrian Chadd  *
134ad7e9b0SAdrian Chadd  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
144ad7e9b0SAdrian Chadd  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
154ad7e9b0SAdrian Chadd  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
164ad7e9b0SAdrian Chadd  * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
174ad7e9b0SAdrian Chadd  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
184ad7e9b0SAdrian Chadd  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
194ad7e9b0SAdrian Chadd  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
204ad7e9b0SAdrian Chadd  *
214ad7e9b0SAdrian Chadd  */
224ad7e9b0SAdrian Chadd 
234ad7e9b0SAdrian Chadd #ifndef _BHND_SIBA_SIBAREG_
244ad7e9b0SAdrian Chadd #define _BHND_SIBA_SIBAREG_
254ad7e9b0SAdrian Chadd 
264ad7e9b0SAdrian Chadd #include <dev/bhnd/bhndreg.h>
274ad7e9b0SAdrian Chadd 
284ad7e9b0SAdrian Chadd /*
294ad7e9b0SAdrian Chadd  * Broadcom SIBA Configuration Space Registers.
304ad7e9b0SAdrian Chadd  *
314ad7e9b0SAdrian Chadd  * Backplane configuration registers common to siba(4) core register
324ad7e9b0SAdrian Chadd  * blocks.
334ad7e9b0SAdrian Chadd  */
344ad7e9b0SAdrian Chadd 
354ad7e9b0SAdrian Chadd /**
364ad7e9b0SAdrian Chadd  * Extract a config attribute by applying _MASK and _SHIFT defines.
374ad7e9b0SAdrian Chadd  *
384ad7e9b0SAdrian Chadd  * @param _reg The register value containing the desired attribute
394ad7e9b0SAdrian Chadd  * @param _attr The BCMA EROM attribute name (e.g. ENTRY_ISVALID), to be
404ad7e9b0SAdrian Chadd  * concatenated with the `SB` prefix and `_MASK`/`_SHIFT` suffixes.
414ad7e9b0SAdrian Chadd  */
424ad7e9b0SAdrian Chadd #define	SIBA_REG_GET(_entry, _attr)			\
434ad7e9b0SAdrian Chadd 	((_entry & SIBA_ ## _attr ## _MASK)	\
444ad7e9b0SAdrian Chadd 	>> SIBA_ ## _attr ## _SHIFT)
454ad7e9b0SAdrian Chadd 
464ad7e9b0SAdrian Chadd #define	SIBA_ENUM_ADDR		BHND_DEFAULT_CHIPC_ADDR	/**< enumeration space */
474ad7e9b0SAdrian Chadd #define	SIBA_ENUM_SIZE		0x00100000		/**< size of the enumeration space */
484ad7e9b0SAdrian Chadd #define	SIBA_CORE_SIZE		BHND_DEFAULT_CORE_SIZE	/**< per-core register block size */
49*caeff9a3SLandon J. Fuller #define	SIBA_MAX_INTR		32			/**< maximum number of backplane interrupt vectors */
504ad7e9b0SAdrian Chadd #define	SIBA_MAX_CORES	\
514ad7e9b0SAdrian Chadd     (SIBA_ENUM_SIZE/SIBA_CORE_SIZE)			/**< Maximum number of cores */
524ad7e9b0SAdrian Chadd 
53664a7497SLandon J. Fuller /** Evaluates to the bus address offset of the @p idx core register block */
54664a7497SLandon J. Fuller #define	SIBA_CORE_OFFSET(idx)	((idx) * SIBA_CORE_SIZE)
55664a7497SLandon J. Fuller 
56664a7497SLandon J. Fuller /** Evaluates to the bus address of the @p idx core register block */
57664a7497SLandon J. Fuller #define	SIBA_CORE_ADDR(idx)	(SIBA_ENUM_ADDR + SIBA_CORE_OFFSET(idx))
584ad7e9b0SAdrian Chadd 
594ad7e9b0SAdrian Chadd /*
604ad7e9b0SAdrian Chadd  * Sonics configuration registers are mapped to each core's enumeration
614ad7e9b0SAdrian Chadd  * space, at the end of the 4kb device register block, in reverse
624ad7e9b0SAdrian Chadd  * order:
634ad7e9b0SAdrian Chadd  *
644ad7e9b0SAdrian Chadd  * [0x0000-0x0dff]	core registers
654ad7e9b0SAdrian Chadd  * [0x0e00-0x0eff]	SIBA_R1 registers	(sonics >= 2.3)
664ad7e9b0SAdrian Chadd  * [0x0f00-0x0fff]	SIBA_R0 registers
674ad7e9b0SAdrian Chadd  */
684ad7e9b0SAdrian Chadd 
694ad7e9b0SAdrian Chadd #define	SIBA_CFG0_OFFSET	0xf00	/**< first configuration block */
704ad7e9b0SAdrian Chadd #define	SIBA_CFG1_OFFSET	0xe00	/**< second configuration block (sonics >= 2.3) */
714ad7e9b0SAdrian Chadd #define	SIBA_CFG_SIZE		0x100	/**< cfg register block size */
724ad7e9b0SAdrian Chadd 
73*caeff9a3SLandon J. Fuller /* Return the SIBA_CORE_ADDR-relative offset for the given siba configuration
74*caeff9a3SLandon J. Fuller  * register block; configuration blocks are allocated starting at
75*caeff9a3SLandon J. Fuller  * SIBA_CFG0_OFFSET, growing downwards. */
76*caeff9a3SLandon J. Fuller #define	SIBA_CFG_OFFSET(_n)	(SIBA_CFG0_OFFSET - ((_n) * SIBA_CFG_SIZE))
77*caeff9a3SLandon J. Fuller 
784ad7e9b0SAdrian Chadd /* Return the SIBA_CORE_ADDR-relative offset for a SIBA_CFG* register. */
794ad7e9b0SAdrian Chadd #define	SB0_REG_ABS(off)	((off) + SIBA_CFG0_OFFSET)
804ad7e9b0SAdrian Chadd #define	SB1_REG_ABS(off)	((off) + SIBA_CFG1_OFFSET)
814ad7e9b0SAdrian Chadd 
824ad7e9b0SAdrian Chadd /* SIBA_CFG0 registers */
834ad7e9b0SAdrian Chadd #define	SIBA_CFG0_IPSFLAG	0x08	/**< initiator port ocp slave flag */
844ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TPSFLAG	0x18	/**< target port ocp slave flag */
854ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TMERRLOGA	0x48	/**< sonics >= 2.3 */
864ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TMERRLOG	0x50	/**< sonics >= 2.3 */
874ad7e9b0SAdrian Chadd #define	SIBA_CFG0_ADMATCH3	0x60	/**< address match3 */
884ad7e9b0SAdrian Chadd #define	SIBA_CFG0_ADMATCH2	0x68	/**< address match2 */
894ad7e9b0SAdrian Chadd #define	SIBA_CFG0_ADMATCH1	0x70	/**< address match1 */
904ad7e9b0SAdrian Chadd #define	SIBA_CFG0_IMSTATE	0x90	/**< initiator agent state */
914ad7e9b0SAdrian Chadd #define	SIBA_CFG0_INTVEC	0x94	/**< interrupt mask */
924ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TMSTATELOW	0x98	/**< target state */
934ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TMSTATEHIGH	0x9c	/**< target state */
944ad7e9b0SAdrian Chadd #define	SIBA_CFG0_BWA0		0xa0	/**< bandwidth allocation table0 */
954ad7e9b0SAdrian Chadd #define	SIBA_CFG0_IMCONFIGLOW	0xa8	/**< initiator configuration */
964ad7e9b0SAdrian Chadd #define	SIBA_CFG0_IMCONFIGHIGH	0xac	/**< initiator configuration */
974ad7e9b0SAdrian Chadd #define	SIBA_CFG0_ADMATCH0	0xb0	/**< address match0 */
984ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TMCONFIGLOW	0xb8	/**< target configuration */
994ad7e9b0SAdrian Chadd #define	SIBA_CFG0_TMCONFIGHIGH	0xbc	/**< target configuration */
1004ad7e9b0SAdrian Chadd #define	SIBA_CFG0_BCONFIG	0xc0	/**< broadcast configuration */
1014ad7e9b0SAdrian Chadd #define	SIBA_CFG0_BSTATE	0xc8	/**< broadcast state */
1024ad7e9b0SAdrian Chadd #define	SIBA_CFG0_ACTCNFG	0xd8	/**< activate configuration */
1034ad7e9b0SAdrian Chadd #define	SIBA_CFG0_FLAGST	0xe8	/**< current sbflags */
1044ad7e9b0SAdrian Chadd #define	SIBA_CFG0_IDLOW		0xf8	/**< identification */
1054ad7e9b0SAdrian Chadd #define	SIBA_CFG0_IDHIGH	0xfc	/**< identification */
1064ad7e9b0SAdrian Chadd 
1074ad7e9b0SAdrian Chadd /* SIBA_CFG1 registers (sonics >= 2.3) */
1084ad7e9b0SAdrian Chadd #define	SIBA_CFG1_IMERRLOGA	0xa8	/**< (sonics >= 2.3) */
1094ad7e9b0SAdrian Chadd #define	SIBA_CFG1_IMERRLOG	0xb0	/**< sbtmerrlog (sonics >= 2.3) */
1104ad7e9b0SAdrian Chadd #define	SIBA_CFG1_TMPORTCONNID0	0xd8	/**< sonics >= 2.3 */
1114ad7e9b0SAdrian Chadd #define	SIBA_CFG1_TMPORTLOCK0	0xf8	/**< sonics >= 2.3 */
1124ad7e9b0SAdrian Chadd 
1134ad7e9b0SAdrian Chadd /* sbipsflag */
1144ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT1_MASK	0x3f		/* which sbflags get routed to mips interrupt 1 */
1154ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT1_SHIFT	0
1164ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT2_MASK	0x3f00		/* which sbflags get routed to mips interrupt 2 */
1174ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT2_SHIFT	8
1184ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT3_MASK	0x3f0000	/* which sbflags get routed to mips interrupt 3 */
1194ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT3_SHIFT	16
1204ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT4_MASK	0x3f000000	/* which sbflags get routed to mips interrupt 4 */
1214ad7e9b0SAdrian Chadd #define	SIBA_IPS_INT4_SHIFT	24
1224ad7e9b0SAdrian Chadd 
123*caeff9a3SLandon J. Fuller #define	SIBA_IPS_INT_SHIFT(_i)	((_i - 1) * 8)
124*caeff9a3SLandon J. Fuller #define	SIBA_IPS_INT_MASK(_i)	(SIBA_IPS_INT1_MASK << SIBA_IPS_INT_SHIFT(_i))
125*caeff9a3SLandon J. Fuller 
1264ad7e9b0SAdrian Chadd /* sbtpsflag */
1274ad7e9b0SAdrian Chadd #define	SIBA_TPS_NUM0_MASK	0x3f		/* interrupt sbFlag # generated by this core */
128824b48efSLandon J. Fuller #define	SIBA_TPS_NUM0_SHIFT	0
1294ad7e9b0SAdrian Chadd #define	SIBA_TPS_F0EN0		0x40		/* interrupt is always sent on the backplane */
1304ad7e9b0SAdrian Chadd 
1314ad7e9b0SAdrian Chadd /* sbtmerrlog */
1324ad7e9b0SAdrian Chadd #define	SIBA_TMEL_CM		0x00000007	/* command */
1334ad7e9b0SAdrian Chadd #define	SIBA_TMEL_CI		0x0000ff00	/* connection id */
1344ad7e9b0SAdrian Chadd #define	SIBA_TMEL_EC		0x0f000000	/* error code */
1354ad7e9b0SAdrian Chadd #define	SIBA_TMEL_ME		0x80000000	/* multiple error */
1364ad7e9b0SAdrian Chadd 
1374ad7e9b0SAdrian Chadd /* sbimstate */
1384ad7e9b0SAdrian Chadd #define	SIBA_IM_PC		0xf		/* pipecount */
1394ad7e9b0SAdrian Chadd #define	SIBA_IM_AP_MASK		0x30		/* arbitration policy */
1404ad7e9b0SAdrian Chadd #define	SIBA_IM_AP_BOTH		0x00		/* use both timeslaces and token */
1414ad7e9b0SAdrian Chadd #define	SIBA_IM_AP_TS		0x10		/* use timesliaces only */
1424ad7e9b0SAdrian Chadd #define	SIBA_IM_AP_TK		0x20		/* use token only */
1434ad7e9b0SAdrian Chadd #define	SIBA_IM_AP_RSV		0x30		/* reserved */
1444ad7e9b0SAdrian Chadd #define	SIBA_IM_IBE		0x20000		/* inbanderror */
1454ad7e9b0SAdrian Chadd #define	SIBA_IM_TO		0x40000		/* timeout */
1464ad7e9b0SAdrian Chadd #define	SIBA_IM_BY		0x01800000	/* busy (sonics >= 2.3) */
1474ad7e9b0SAdrian Chadd #define	SIBA_IM_RJ		0x02000000	/* reject (sonics >= 2.3) */
1484ad7e9b0SAdrian Chadd 
1494ad7e9b0SAdrian Chadd /* sbtmstatelow */
1504ad7e9b0SAdrian Chadd #define	SIBA_TML_RESET		0x0001		/* reset */
1514ad7e9b0SAdrian Chadd #define	SIBA_TML_REJ_MASK	0x0006		/* reject field */
1524ad7e9b0SAdrian Chadd #define	SIBA_TML_REJ		0x0002		/* reject */
1534ad7e9b0SAdrian Chadd #define	SIBA_TML_TMPREJ		0x0004		/* temporary reject, for error recovery */
1548a03f98aSLandon J. Fuller #define	SIBA_TML_SICF_MASK	0xFFFF0000	/* core IOCTL flags */
1558a03f98aSLandon J. Fuller #define	SIBA_TML_SICF_SHIFT	16
1564ad7e9b0SAdrian Chadd 
1574ad7e9b0SAdrian Chadd /* sbtmstatehigh */
1584ad7e9b0SAdrian Chadd #define	SIBA_TMH_SERR		0x0001		/* serror */
1594ad7e9b0SAdrian Chadd #define	SIBA_TMH_INT		0x0002		/* interrupt */
1604ad7e9b0SAdrian Chadd #define	SIBA_TMH_BUSY		0x0004		/* busy */
1614ad7e9b0SAdrian Chadd #define	SIBA_TMH_TO		0x0020		/* timeout (sonics >= 2.3) */
1628a03f98aSLandon J. Fuller #define	SIBA_TMH_SISF_MASK	0xFFFF0000	/* core IOST flags */
1638a03f98aSLandon J. Fuller #define	SIBA_TMH_SISF_SHIFT	16
1644ad7e9b0SAdrian Chadd 
1654ad7e9b0SAdrian Chadd /* sbbwa0 */
1664ad7e9b0SAdrian Chadd #define	SIBA_BWA_TAB0_MASK	0xffff		/* lookup table 0 */
1674ad7e9b0SAdrian Chadd #define	SIBA_BWA_TAB1_MASK	0xffff		/* lookup table 1 */
1684ad7e9b0SAdrian Chadd #define	SIBA_BWA_TAB1_SHIFT	16
1694ad7e9b0SAdrian Chadd 
1704ad7e9b0SAdrian Chadd /* sbimconfiglow */
1714ad7e9b0SAdrian Chadd #define	SIBA_IMCL_STO_MASK	0x7		/* service timeout */
1724ad7e9b0SAdrian Chadd #define	SIBA_IMCL_RTO_MASK	0x70		/* request timeout */
1734ad7e9b0SAdrian Chadd #define	SIBA_IMCL_RTO_SHIFT	4
1744ad7e9b0SAdrian Chadd #define	SIBA_IMCL_CID_MASK	0xff0000	/* connection id */
1754ad7e9b0SAdrian Chadd #define	SIBA_IMCL_CID_SHIFT	16
1764ad7e9b0SAdrian Chadd 
1774ad7e9b0SAdrian Chadd /* sbimconfighigh */
1784ad7e9b0SAdrian Chadd #define	SIBA_IMCH_IEM_MASK	0xc		/* inband error mode */
1794ad7e9b0SAdrian Chadd #define	SIBA_IMCH_TEM_MASK	0x30		/* timeout error mode */
1804ad7e9b0SAdrian Chadd #define	SIBA_IMCH_TEM_SHIFT	4
1814ad7e9b0SAdrian Chadd #define	SIBA_IMCH_BEM_MASK	0xc0		/* bus error mode */
1824ad7e9b0SAdrian Chadd #define	SIBA_IMCH_BEM_SHIFT	6
1834ad7e9b0SAdrian Chadd 
18406018a8eSLandon J. Fuller /* sbadmatch0-4 */
1854ad7e9b0SAdrian Chadd #define	SIBA_AM_TYPE_MASK	0x3		/* address type */
1864ad7e9b0SAdrian Chadd #define	SIBA_AM_TYPE_SHIFT	0x0
1874ad7e9b0SAdrian Chadd #define	SIBA_AM_AD64		0x4		/* reserved */
1884ad7e9b0SAdrian Chadd #define	SIBA_AM_ADINT0_MASK	0xf8		/* type0 size */
1894ad7e9b0SAdrian Chadd #define	SIBA_AM_ADINT0_SHIFT	3
1904ad7e9b0SAdrian Chadd #define	SIBA_AM_ADINT1_MASK	0x1f8		/* type1 size */
1914ad7e9b0SAdrian Chadd #define	SIBA_AM_ADINT1_SHIFT	3
1924ad7e9b0SAdrian Chadd #define	SIBA_AM_ADINT2_MASK	0x1f8		/* type2 size */
1934ad7e9b0SAdrian Chadd #define	SIBA_AM_ADINT2_SHIFT	3
1944ad7e9b0SAdrian Chadd #define	SIBA_AM_ADEN		0x400		/* enable */
1954ad7e9b0SAdrian Chadd #define	SIBA_AM_ADNEG		0x800		/* negative decode */
1964ad7e9b0SAdrian Chadd #define	SIBA_AM_BASE0_MASK	0xffffff00	/* type0 base address */
1974ad7e9b0SAdrian Chadd #define	SIBA_AM_BASE0_SHIFT	8
1984ad7e9b0SAdrian Chadd #define	SIBA_AM_BASE1_MASK	0xfffff000	/* type1 base address for the core */
1994ad7e9b0SAdrian Chadd #define	SIBA_AM_BASE1_SHIFT	12
2004ad7e9b0SAdrian Chadd #define	SIBA_AM_BASE2_MASK	0xffff0000	/* type2 base address for the core */
2014ad7e9b0SAdrian Chadd #define	SIBA_AM_BASE2_SHIFT	16
2024ad7e9b0SAdrian Chadd 
2034ad7e9b0SAdrian Chadd /* sbtmconfiglow */
2044ad7e9b0SAdrian Chadd #define	SIBA_TMCL_CD_MASK	0xff		/* clock divide */
2054ad7e9b0SAdrian Chadd #define	SIBA_TMCL_CO_MASK	0xf800		/* clock offset */
2064ad7e9b0SAdrian Chadd #define	SIBA_TMCL_CO_SHIFT	11
2074ad7e9b0SAdrian Chadd #define	SIBA_TMCL_IF_MASK	0xfc0000	/* interrupt flags */
2084ad7e9b0SAdrian Chadd #define	SIBA_TMCL_IF_SHIFT	18
2094ad7e9b0SAdrian Chadd #define	SIBA_TMCL_IM_MASK	0x3000000	/* interrupt mode */
2104ad7e9b0SAdrian Chadd #define	SIBA_TMCL_IM_SHIFT	24
2114ad7e9b0SAdrian Chadd 
2124ad7e9b0SAdrian Chadd /* sbtmconfighigh */
2134ad7e9b0SAdrian Chadd #define	SIBA_TMCH_BM_MASK	0x3		/* busy mode */
2144ad7e9b0SAdrian Chadd #define	SIBA_TMCH_RM_MASK	0x3		/* retry mode */
2154ad7e9b0SAdrian Chadd #define	SIBA_TMCH_RM_SHIFT	2
2164ad7e9b0SAdrian Chadd #define	SIBA_TMCH_SM_MASK	0x30		/* stop mode */
2174ad7e9b0SAdrian Chadd #define	SIBA_TMCH_SM_SHIFT	4
2184ad7e9b0SAdrian Chadd #define	SIBA_TMCH_EM_MASK	0x300		/* sb error mode */
2194ad7e9b0SAdrian Chadd #define	SIBA_TMCH_EM_SHIFT	8
2204ad7e9b0SAdrian Chadd #define	SIBA_TMCH_IM_MASK	0xc00		/* int mode */
2214ad7e9b0SAdrian Chadd #define	SIBA_TMCH_IM_SHIFT	10
2224ad7e9b0SAdrian Chadd 
2234ad7e9b0SAdrian Chadd /* sbbconfig */
2244ad7e9b0SAdrian Chadd #define	SIBA_BC_LAT_MASK	0x3		/* sb latency */
2254ad7e9b0SAdrian Chadd #define	SIBA_BC_MAX0_MASK	0xf0000		/* maxccntr0 */
2264ad7e9b0SAdrian Chadd #define	SIBA_BC_MAX0_SHIFT	16
2274ad7e9b0SAdrian Chadd #define	SIBA_BC_MAX1_MASK	0xf00000	/* maxccntr1 */
2284ad7e9b0SAdrian Chadd #define	SIBA_BC_MAX1_SHIFT	20
2294ad7e9b0SAdrian Chadd 
2304ad7e9b0SAdrian Chadd /* sbbstate */
2314ad7e9b0SAdrian Chadd #define	SIBA_BS_SRD		0x1		/* st reg disable */
2324ad7e9b0SAdrian Chadd #define	SIBA_BS_HRD		0x2		/* hold reg disable */
2334ad7e9b0SAdrian Chadd 
2344ad7e9b0SAdrian Chadd /* sbidlow */
2354ad7e9b0SAdrian Chadd #define	SIBA_IDL_CS_MASK	0x3		/* config space */
2364ad7e9b0SAdrian Chadd #define	SIBA_IDL_CS_SHIFT	0
2374ad7e9b0SAdrian Chadd #define	SIBA_IDL_NRADDR_MASK	0x38		/* # address ranges supported */
2384ad7e9b0SAdrian Chadd #define	SIBA_IDL_NRADDR_SHIFT	3
2394ad7e9b0SAdrian Chadd #define	SIBA_IDL_SYNCH		0x40		/* sync */
2404ad7e9b0SAdrian Chadd #define	SIBA_IDL_INIT		0x80		/* initiator */
2414ad7e9b0SAdrian Chadd #define	SIBA_IDL_MINLAT_MASK	0xf00		/* minimum backplane latency */
2424ad7e9b0SAdrian Chadd #define	SIBA_IDL_MINLAT_SHIFT	8
2434ad7e9b0SAdrian Chadd #define	SIBA_IDL_MAXLAT_MASK	0xf000		/* maximum backplane latency */
2444ad7e9b0SAdrian Chadd #define	SIBA_IDL_MAXLAT_SHIFT	12
2454ad7e9b0SAdrian Chadd #define	SIBA_IDL_FIRST_MASK	0x10000		/* this initiator is first */
2464ad7e9b0SAdrian Chadd #define	SIBA_IDL_FIRST_SHIFT	16
2474ad7e9b0SAdrian Chadd #define	SIBA_IDL_CW_MASK	0xc0000		/* cycle counter width */
2484ad7e9b0SAdrian Chadd #define	SIBA_IDL_CW_SHIFT	18
2494ad7e9b0SAdrian Chadd #define	SIBA_IDL_TP_MASK	0xf00000	/* target ports */
2504ad7e9b0SAdrian Chadd #define	SIBA_IDL_TP_SHIFT	20
2514ad7e9b0SAdrian Chadd #define	SIBA_IDL_IP_MASK	0xf000000	/* initiator ports */
2524ad7e9b0SAdrian Chadd #define	SIBA_IDL_IP_SHIFT	24
2534ad7e9b0SAdrian Chadd #define	SIBA_IDL_SBREV_MASK	0xf0000000	/* sonics backplane revision code */
2544ad7e9b0SAdrian Chadd #define	SIBA_IDL_SBREV_SHIFT	28
2554ad7e9b0SAdrian Chadd #define	SIBA_IDL_SBREV_2_2	0x0		/* version 2.2 or earlier */
2564ad7e9b0SAdrian Chadd #define	SIBA_IDL_SBREV_2_3	0x1		/* version 2.3 */
2574ad7e9b0SAdrian Chadd 
2584ad7e9b0SAdrian Chadd /* sbidhigh */
2594ad7e9b0SAdrian Chadd #define	SIBA_IDH_RC_MASK	0x000f		/* revision code */
2604ad7e9b0SAdrian Chadd #define	SIBA_IDH_RCE_MASK	0x7000		/* revision code extension field */
2614ad7e9b0SAdrian Chadd #define	SIBA_IDH_RCE_SHIFT	8
2624ad7e9b0SAdrian Chadd #define	SIBA_IDH_DEVICE_MASK	0x8ff0		/* core code */
2634ad7e9b0SAdrian Chadd #define	SIBA_IDH_DEVICE_SHIFT	4
2644ad7e9b0SAdrian Chadd #define	SIBA_IDH_VENDOR_MASK	0xffff0000	/* vendor code */
2654ad7e9b0SAdrian Chadd #define	SIBA_IDH_VENDOR_SHIFT	16
2664ad7e9b0SAdrian Chadd 
2674ad7e9b0SAdrian Chadd #define	SIBA_IDH_CORE_REV(sbidh) \
2684ad7e9b0SAdrian Chadd 	(SIBA_REG_GET((sbidh), IDH_RCE) | ((sbidh) & SIBA_IDH_RC_MASK))
2694ad7e9b0SAdrian Chadd 
2704ad7e9b0SAdrian Chadd #define	SIBA_COMMIT		0xfd8		/* update buffered registers value */
2714ad7e9b0SAdrian Chadd 
2724ad7e9b0SAdrian Chadd #endif /* _BHND_SIBA_SIBAREG_ */
273