aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/jesd204b/xilinx_jesd204b.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/jesd204b/xilinx_jesd204b.h')
-rw-r--r--drivers/misc/jesd204b/xilinx_jesd204b.h135
1 files changed, 135 insertions, 0 deletions
diff --git a/drivers/misc/jesd204b/xilinx_jesd204b.h b/drivers/misc/jesd204b/xilinx_jesd204b.h
new file mode 100644
index 000000000000..b9946a723a23
--- /dev/null
+++ b/drivers/misc/jesd204b/xilinx_jesd204b.h
@@ -0,0 +1,135 @@
+/*
+ * Xilinx AXI-JESD204B v5.1 Interface Module
+ *
+ * Copyright 2014 Analog Devices Inc.
+ *
+ * Licensed under the GPL-2.
+ *
+ * http://wiki.analog.com/resources/fpga/xilinx/
+ */
+
+#ifndef XILINX_JESD204B_H_
+#define XILINX_JESD204B_H_
+
+struct jesd204b_state {
+ struct device *dev;
+ void __iomem *regs;
+ void __iomem *phy;
+ struct clk *clk;
+ u32 lanes;
+ u32 vers_id;
+ u32 addr;
+ u32 band;
+ u32 transmit;
+ u32 pll;
+ unsigned long rate;
+};
+
+#define XLNX_JESD204_REG_VERSION 0x000
+#define XLNX_JESD204_VERSION_MAJOR(x) (((x) >> 24) & 0xFF)
+#define XLNX_JESD204_VERSION_MINOR(x) (((x) >> 16) & 0xFF)
+#define XLNX_JESD204_VERSION_REV(x) (((x) >> 8) & 0xFF)
+
+#define XLNX_JESD204_REG_RESET 0x004
+#define XLNX_JESD204_RESET (1 << 0)
+
+#define XLNX_JESD204_REG_ILA_CTRL 0x008
+#define XLNX_JESD204_ILA_EN (1 << 0)
+
+#define XLNX_JESD204_REG_SCR_CTRL 0x00C
+#define XLNX_JESD204_SCR_EN (1 << 0)
+
+#define XLNX_JESD204_REG_SYSREF_CTRL 0x010
+#define XLNX_JESD204_ALWAYS_SYSREF_EN (1 << 0)
+
+#define XLNX_JESD204_REG_ILA_MFC 0x014
+#define XLNX_JESD204_ILA_MFC(x) (((x) - 1) & 0xFF)
+ /* TX only 4..256 */
+
+#define XLNX_JESD204_REG_TEST_MODE_SEL 0x018
+#define XLNX_JESD204_TEST_MODE_OFF 0 /* Normal operation */
+#define XLNX_JESD204_TEST_MODE_K28_5 1 /* Send/Receive /K28.5/
+ * indefinitely
+ */
+#define XLNX_JESD204_TEST_MODE_ILA 2 /* Synchronize as normal then
+ * send/receive repeated ILA
+ * sequences
+ */
+#define XLNX_JESD204_TEST_MODE_D21_5 3 /* Send/Receive /D21.5/
+ * indefinitely
+ */
+#define XLNX_JESD204_TEST_MODE_RPAT 5 /* Send/Receive modified
+ * random pattern (RPAT)
+ */
+#define XLNX_JESD204_TEST_MODE_JSPAT 7 /* Send/Receive a scrambled
+ * jitter pattern (JSPAT)
+ */
+
+#define XLNX_JESD204_REG_SYNC_STATUS 0x038 /* Link SYNC status */
+#define XLNX_JESD204_REG_SYNC_ERR_STAT 0x01C /* RX only */
+#define XLNX_JESD204_SYNC_ERR_NOT_IN_TAB(lane) (1 << (0 + (lane) * 3))
+#define XLNX_JESD204_SYNC_ERR_DISPARITY(lane) (1 << (1 + (lane) * 3))
+#define XLNX_JESD204_SYNC_ERR_UNEXPECTED_K(lane) (1 << (2 + (lane) * 3))
+
+#define XLNX_JESD204_REG_OCTETS_PER_FRAME 0x020
+#define XLNX_JESD204_OCTETS_PER_FRAME(x) (((x) - 1) & 0xFF) /* 1..256 */
+
+#define XLNX_JESD204_REG_FRAMES_PER_MFRAME 0x024
+#define XLNX_JESD204_FRAMES_PER_MFRAME(x) (((x) - 1) & 0x1F) /* 1..32 */
+
+#define XLNX_JESD204_REG_LANES 0x028
+#define XLNX_JESD204_LANES(x) (((x) - 1) & 0x1F) /* 1..32 */
+
+#define XLNX_JESD204_REG_SUBCLASS 0x02C
+
+#define XLNX_JESD204_REG_RX_BUF_DELAY 0x030 /* RX only */
+#define XLNX_JESD204_RX_BUF_DELAY(x) ((x) & 0x1FFF)
+
+#define XLNX_JESD204_REG_RX_LINK_CTRL 0x034 /* RX only */
+#define XLNX_JESD204_LINK_TEST_EN (1 << 0)
+#define XLNX_JESD204_SYNC_ERR_REP_DIS (1 << 8)
+
+/* Per LANE Registers */
+#define XLNX_JESD204_REG_LANE_VERSION(l) (0x800 + ((l) * 0x40))
+#define XLNX_JESD204_LANE_SUBCLASS(x) (((x) >> 0) & 0x7)
+#define XLNX_JESD204_LANE_JESDV(x) (((x) >> 8) & 0x7)
+
+#define XLNX_JESD204_REG_LANE_F(l) (0x804 + ((l) * 0x40))
+#define XLNX_JESD204_LANE_F(x) ((((x) >> 0) & 0xFF) + 1)
+
+#define XLNX_JESD204_REG_LANE_K(l) (0x808 + ((l) * 0x40))
+#define XLNX_JESD204_LANE_K(x) ((((x) >> 0) & 0x1F) + 1)
+
+#define XLNX_JESD204_REG_ID_L(l) (0x80C + ((l) * 0x40))
+#define XLNX_JESD204_LANE_DID(x) (((x) >> 0) & 0xFF)
+#define XLNX_JESD204_LANE_BID(x) (((x) >> 8) & 0x1F)
+#define XLNX_JESD204_LANE_LID(x) (((x) >> 16) & 0x1F)
+#define XLNX_JESD204_LANE_L(x) ((((x) >> 24) & 0x1F) + 1)
+
+#define XLNX_JESD204_REG_M_N_ND_CS(l) (0x810 + ((l) * 0x40))
+#define XLNX_JESD204_LANE_M(x) ((((x) >> 0) & 0xFF) + 1)
+#define XLNX_JESD204_LANE_N(x) ((((x) >> 8) & 0x1F) + 1)
+#define XLNX_JESD204_LANE_ND(x) ((((x) >> 16) & 0x1F) + 1)
+#define XLNX_JESD204_LANE_CS(x) (((x) >> 24) & 0x3)
+
+#define XLNX_JESD204_REG_SCR_S_HD_CF(l) (0x814 + ((l) * 0x40))
+#define XLNX_JESD204_LANE_SCR(x) (((x) >> 0) & 0x1)
+#define XLNX_JESD204_LANE_S(x) ((((x) >> 8) & 0x1F) + 1)
+#define XLNX_JESD204_LANE_HD(x) (((x) >> 16) & 0x1)
+#define XLNX_JESD204_LANE_CF(x) (((x) >> 24) & 0x1F)
+
+#define XLNX_JESD204_REG_FCHK(l) (0x818 + ((l) * 0x40))
+#define XLNX_JESD204_LANE_FCHK(x) (((x) >> 16) & 0xFF)
+
+#define XLNX_JESD204_REG_SC2_ADJ_CTRL(l) (0x81C + ((l) * 0x40))
+#define XLNX_JESD204_LANE_ADJ_CNT(x) (((x) >> 0) & 0xF)
+#define XLNX_JESD204_LANE_PHASE_ADJ_REQ(x) (((x) >> 8) & 0x1)
+#define XLNX_JESD204_LANE_ADJ_CNT_DIR(x) (((x) >> 16) & 0x1)
+
+#define XLNX_JESD204_REG_TM_ERR_CNT(l) (0x820 + ((l) * 0x40))
+#define XLNX_JESD204_REG_TM_LINK_ERR_CNT(l) (0x824 + ((l) * 0x40))
+#define XLNX_JESD204_REG_TM_ILA_CNT(l) (0x828 + ((l) * 0x40))
+#define XLNX_JESD204_REG_TM_MFC_CNT(l) (0x82C + ((l) * 0x40))
+#define XLNX_JESD204_REG_TM_BUF_ADJ(l) (0x830 + ((l) * 0x40))
+
+#endif /* ADI_JESD204B_V51_H_ */