summaryrefslogtreecommitdiffstats
path: root/cfe/cfe/pci/ldtreg.h
diff options
context:
space:
mode:
Diffstat (limited to 'cfe/cfe/pci/ldtreg.h')
-rw-r--r--cfe/cfe/pci/ldtreg.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/cfe/cfe/pci/ldtreg.h b/cfe/cfe/pci/ldtreg.h
new file mode 100644
index 0000000..140effe
--- /dev/null
+++ b/cfe/cfe/pci/ldtreg.h
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2000,2001
+ * Broadcom Corporation. All rights reserved.
+ *
+ * This software is furnished under license and may be used and
+ * copied only in accordance with the following terms and
+ * conditions. Subject to these conditions, you may download,
+ * copy, install, use, modify and distribute modified or unmodified
+ * copies of this software in source and/or binary form. No title
+ * or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce
+ * and retain this copyright notice and list of conditions as
+ * they appear in the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or
+ * logo of Broadcom Corporation. Neither the "Broadcom
+ * Corporation" name nor any trademark or logo of Broadcom
+ * Corporation may be used to endorse or promote products
+ * derived from this software without the prior written
+ * permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
+ * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ * PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
+ * SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
+ * PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _LDTREG_H_
+#define _LDTREG_H_
+
+/*
+ * LDT capability register definitions and macros.
+ * Derived from Revison 0.17 of the LDT (now HyperTransport)
+ * Specification with some 1.02/1.03 features.
+ *
+ * Note: Register and field definitions assume 32-bit register accesses.
+ */
+
+/*
+ * LDT Capability registers (identified by offsets within the capability)
+ */
+
+/*
+ * Command Register; contains command and capability fields.
+ */
+#define LDT_COMMAND_CAP_OFF 0x00
+
+#define LDT_CAP_ID_MASK 0x000000ff
+#define LDT_CAP_ID_SHIFT 0
+#define LDT_CAP_PTR_MASK 0x0000ff00
+#define LDT_CAP_PTR_SHIFT 8
+
+#define LDT_COMMAND_MASK 0xffff0000
+#define LDT_COMMAND_SHIFT 16
+#define LDT_COMMAND(cmd) \
+ (((cmd) & LDT_COMMAND_MASK) >> LDT_COMMAND_SHIFT)
+#define LDT_COMMAND_TYPE_MASK 0xe0000000
+#define LDT_COMMAND_TYPE_SHIFT (16+13)
+#define LDT_COMMAND_TYPE(cmd) \
+ (((cmd) & LDT_COMMAND_TYPE_MASK) >> LDT_COMMAND_TYPE_SHIFT)
+#define LDT_COMMAND_TYPE_SLAVE 0x0
+#define LDT_COMMAND_TYPE_HOST 0x1
+#define LDT_COMMAND_TYPE_IDC 0x4
+#define LDT_COMMAND_TYPE_AMAP 0x5
+/* Following for 1.0x only */
+#define LDT_COMMAND_DROP_ON_INIT 0x10000000
+
+/*
+ * An LDT capability for type Slave (aka Primary, aka "tunnel") consists
+ * of a Command register, two Link registers, and two Freq/Rev registers.
+ */
+/* Slave/Primary commands */
+#define LDT_COMMAND_UNIT_ID_MASK 0x001f0000
+#define LDT_COMMAND_UNIT_ID_SHIFT (16+0)
+#define LDT_COMMAND_UNIT_ID(cmd) \
+ (((cmd) & LDT_COMMAND_UNIT_ID_MASK) >> LDT_COMMAND_UNIT_ID_SHIFT)
+#define LDT_COMMAND_UNIT_COUNT_MASK 0x03e00000
+#define LDT_COMMAND_UNIT_COUNT_SHIFT (16+5)
+#define LDT_COMMAND_UNIT_COUNT(cmd) \
+ (((cmd) & LDT_COMMAND_UNIT_COUNT_MASK) >> LDT_COMMAND_UNIT_COUNT_SHIFT)
+#define LDT_COMMAND_MASTER_HOST_MASK 0x04000000
+#define LDT_COMMAND_MASTER_HOST(cmd) \
+ (((cmd) & LDT_COMMAND_MASTER_HOST_MASK) ? 1 : 0)
+#define LDT_COMMAND_DEFAULT_DIRECTION_MASK 0x08000000
+#define LDT_COMMAND_DEFAULT_DIRECTION(cmd) \
+ (((cmd) & LDT_COMMAND_DEFAULT_DIRECTION_MASK) ? 1 : 0)
+
+/*
+ * An LDT capability for type Host (aka Secondary) consists of a
+ * Command register, a single Link register, and a Freq/Rev register.
+ */
+/* Host/Secondary command fields */
+#define LDT_COMMAND_WARM_RESET 0x00010000
+#define LDT_COMMAND_DOUBLE_ENDED 0x00020000
+#define LDT_COMMAND_DEVICE_NUMBER_MASK 0x007c0000
+#define LDT_COMMAND_DEVICE_NUMBER_SHIFT (16+2)
+/* Following for 1.0x only */
+#define LDT_COMMAND_CHAIN_SIDE 0x00800000
+#define LDT_COMMAND_HOST_HIDE 0x01000000
+#define LDT_COMMAND_ACT_AS_SLAVE 0x02000000
+#define LDT_COMMAND_INBOUND_EOC_ERROR 0x04000000
+
+
+/*
+ * Link Register; contains control and config fields.
+ */
+#define LDT_LINK_OFF(n) (0x04 + ((n)<<2))
+
+#define LDT_LINKCTRL_MASK 0x0000ffff
+#define LDT_LINKCTRL_SHIFT 0
+#define LDT_LINKCTRL(cr) \
+ (((cr) & LDT_LINKCTRL_MASK) >> LDT_LINKCTRL_SHIFT)
+#define LDT_LINKCTRL_CFLE 0x00000002
+#define LDT_LINKCTRL_CST 0x00000004
+#define LDT_LINKCTRL_CFE 0x00000008
+#define LDT_LINKCTRL_LINKFAIL 0x00000010
+#define LDT_LINKCTRL_INITDONE 0x00000020
+#define LDT_LINKCTRL_EOC 0x00000040
+#define LDT_LINKCTRL_TXOFF 0x00000080
+#define LDT_LINKCTRL_CRCERROR_MASK 0x00000f00
+#define LDT_LINKCTRL_CRCERROR_SHIFT 8
+#define LDT_LINKCTRL_ISOCEN 0x00001000
+#define LDT_LINKCTRL_LSEN 0x00002000
+/* Following for 1.0x only */
+#define LDT_LINKCTRL_EXTCTL 0x00004000
+
+#define LDT_LINKCFG_MASK 0xffff0000
+#define LDT_LINKCFG_SHIFT 16
+#define LDT_LINKCFG(cr) \
+ (((cr) & LDT_LINKCFG_MASK) >> LDT_LINKCFG_SHIFT)
+#define LDT_LINKCFG_MAX_WIDTH_IN(cr) \
+ (((cr) >> (16+0)) & 0xf)
+#define LDT_LINKCFG_MAX_WIDTH_OUT(cr) \
+ (((cr) >> (16+4)) & 0xf)
+#define LDT_LINKCFG_WIDTH_IN(cr) \
+ (((cr) >> (16+8)) & 0xf)
+#define LDT_LINKCFG_WIDTH_OUT(cr) \
+ (((cr) >> (16+12)) & 0xf)
+
+
+/*
+ * Link Frequency Register; contains version and frequency fields.
+ */
+#define LDT_LINKFREQ_CAP(cr) \
+ (((cr) >> 16) & 0xffff)
+
+#define LDT_LINKFREQ_MASK 0x00000f00
+#define LDT_LINKFREQ_SHIFT 8
+#define LDT_LINKFREQ(cr) \
+ (((cr) >> 8) & 0x0f)
+
+#define LDT_REVISION_ID(cr) \
+ (((cr) >> 0) & 0xff)
+
+#define LDT_REV_017 0x11
+#define LDT_REV_102 0x22
+
+/* Slave/Primary offsets */
+#define LDT_FREQ0_OFF 0x0c
+#define LDT_FREQ1_OFF 0x10
+#define LDT_FREQn_OFF(n) (0x0c + ((n)<<2))
+
+/* Host/Secondary offsets */
+#define LDT_FREQ_OFF 0x08
+
+#define LDT_FREQ_200 0x00
+#define LDT_FREQ_300 0x01
+#define LDT_FREQ_400 0x02
+#define LDT_FREQ_500 0x03
+#define LDT_FREQ_600 0x04
+#define LDT_FREQ_800 0x05
+#define LDT_FREQ_1000 0x06
+
+#endif /* _LDTREG_H_ */