All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ralph Campbell <ralph.campbell-h88ZbnxC6KDQT0dZR+AlfA@public.gmane.org>
To: Roland Dreier <rdreier-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH 31/53] IB/qib: Add qib_qsfp.h
Date: Thu, 19 Nov 2009 15:39:39 -0800	[thread overview]
Message-ID: <20091119233938.30356.1366.stgit@chromite.mv.qlogic.com> (raw)
In-Reply-To: <20091119233655.30356.57433.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>

creates the qib_qsfp.h file.

Signed-off-by: Ralph Campbell <ralph.campbell-h88ZbnxC6KDQT0dZR+AlfA@public.gmane.org>
---

 drivers/infiniband/hw/qib/qib_qsfp.h |  183 ++++++++++++++++++++++++++++++++++
 1 files changed, 183 insertions(+), 0 deletions(-)
 create mode 100644 drivers/infiniband/hw/qib/qib_qsfp.h

diff --git a/drivers/infiniband/hw/qib/qib_qsfp.h b/drivers/infiniband/hw/qib/qib_qsfp.h
new file mode 100644
index 0000000..01ea507
--- /dev/null
+++ b/drivers/infiniband/hw/qib/qib_qsfp.h
@@ -0,0 +1,183 @@
+/*
+ * Copyright (c) 2006, 2007, 2008, 2009 QLogic Corporation. All rights reserved.
+ * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved.
+ *
+ * This software is available to you under a choice of one of two
+ * licenses.  You may choose to be licensed under the terms of the GNU
+ * General Public License (GPL) Version 2, available from the file
+ * COPYING in the main directory of this source tree, or the
+ * OpenIB.org BSD license below:
+ *
+ *     Redistribution and use in source and binary forms, with or
+ *     without modification, are permitted provided that the following
+ *     conditions are met:
+ *
+ *      - Redistributions of source code must retain the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer.
+ *
+ *      - Redistributions in binary form must reproduce the above
+ *        copyright notice, this list of conditions and the following
+ *        disclaimer in the documentation and/or other materials
+ *        provided with the distribution.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+/* QSFP support common definitions, for ib_qib driver */
+
+#define QSFP_DEV 0xA0
+#define QSFP_PWR_LAG_MSEC 2000
+
+/*
+ * Below are masks for various QSFP signals, for Port 1.
+ * Port2 equivalents are shifted by QSFP_GPIO_PORT2_SHIFT.
+ * _N means asserted low
+ */
+#define QSFP_GPIO_MOD_SEL_N (4)
+#define QSFP_GPIO_MOD_PRS_N (8)
+#define QSFP_GPIO_INT_N (0x10)
+#define QSFP_GPIO_MOD_RST_N (0x20)
+#define QSFP_GPIO_LP_MODE (0x40)
+#define QSFP_GPIO_PORT2_SHIFT 5
+
+#define QSFP_PAGESIZE 128
+/* Defined fields that QLogic requires of qualified cables */
+/* Byte 0 is Identifier, not checked */
+/* Byte 1 is reserved "status MSB" */
+/* Byte 2 is "status LSB" We only care that D2 "Flat Mem" is set. */
+/*
+ * Rest of first 128 not used, although 127 is reserved for page select
+ * if module is not "Flat memory".
+ */
+/* Byte 128 is Identifier: must be 0x0c for QSFP, or 0x0d for QSFP+ */
+#define QSFP_MOD_ID_OFFS 128
+/*
+ * Byte 129 is "Extended Identifier". We only care about D7,D6: Power class
+ *  0:1.5W, 1:2.0W, 2:2.5W, 3:3.5W
+ */
+#define QSFP_MOD_PWR_OFFS 129
+/* Byte 130 is Connector type. Not QLogic req'd */
+/* Bytes 131..138 are Transceiver types, bit maps for various tech, none IB */
+/* Byte 139 is encoding. code 0x01 is 8b10b. Not QLogic req'd */
+/* byte 140 is nominal bit-rate, in units of 100Mbits/sec Not QLogic req'd */
+/* Byte 141 is Extended Rate Select. Not QLogic req'd */
+/* Bytes 142..145 are lengths for various fiber types. Not QLogic req'd */
+/* Byte 146 is length for Copper. Units of 1 meter */
+#define QSFP_MOD_LEN_OFFS 146
+/*
+ * Byte 147 is Device technology. D0..3 not Qlogc req'd
+ * D4..7 select from 15 choices, translated by table:
+ */
+#define QSFP_MOD_TECH_OFFS 147
+extern const char *const qib_qsfp_devtech[16];
+/* Length is only valid if technology is "copper" */
+#define QSFP_IS_CU(tech) ((0xED00 >> ((tech) >> 4)) & 1)
+#define QSFP_TECH_1490 9
+
+#define QSFP_OUI(oui) (((unsigned)oui[0] << 16) | ((unsigned)oui[1] << 8) | \
+			oui[2])
+#define QSFP_OUI_AMPHENOL 0x415048
+#define QSFP_OUI_FINISAR  0x009065
+#define QSFP_OUI_GORE     0x002177
+
+/* Bytes 148..163 are Vendor Name, Left-justified Blank-filled */
+#define QSFP_VEND_OFFS 148
+#define QSFP_VEND_LEN 16
+/* Byte 164 is IB Extended tranceiver codes Bits D0..3 are SDR,DDR,QDR,EDR */
+#define QSFP_IBXCV_OFFS 164
+/* Bytes 165..167 are Vendor OUI number */
+#define QSFP_VOUI_OFFS 165
+#define QSFP_VOUI_LEN 3
+/* Bytes 168..183 are Vendor Part Number, string */
+#define QSFP_PN_OFFS 168
+#define QSFP_PN_LEN 16
+/* Bytes 184,185 are Vendor Rev. Left Justified, Blank-filled */
+#define QSFP_REV_OFFS 184
+#define QSFP_REV_LEN 2
+/*
+ * Bytes 186,187 are Wavelength, if Optical. Not Qlogic req'd
+ *  If copper, they are attenuation in dB:
+ * Byte 186 is at 2.5Gb/sec (SDR), Byte 187 at 5.0Gb/sec (DDR)
+ */
+#define QSFP_ATTEN_OFFS 186
+#define QSFP_ATTEN_LEN 2
+/* Bytes 188,189 are Wavelength tolerance, not QLogic req'd */
+/* Byte 190 is Max Case Temp. Not QLogic req'd */
+/* Byte 191 is LSB of sum of bytes 128..190. Not QLogic req'd */
+#define QSFP_CC_OFFS 191
+/* Bytes 192..195 are Options implemented in qsfp. Not Qlogic req'd */
+/* Bytes 196..211 are Serial Number, String */
+#define QSFP_SN_OFFS 196
+#define QSFP_SN_LEN 16
+/* Bytes 212..219 are date-code YYMMDD (MM==1 for Jan) */
+#define QSFP_DATE_OFFS 212
+#define QSFP_DATE_LEN 6
+/* Bytes 218,219 are optional lot-code, string */
+#define QSFP_LOT_OFFS 218
+#define QSFP_LOT_LEN 2
+/* Bytes 220, 221 indicate monitoring options, Not QLogic req'd */
+/* Byte 223 is LSB of sum of bytes 192..222 */
+#define QSFP_CC_EXT_OFFS 223
+
+/*
+ * struct qib_qsfp_data encapsulates state of QSFP device for one port.
+ * it will be part of port-chip-specific data if a board supports QSFP.
+ *
+ * Since multiple board-types use QSFP, and their pport_data structs
+ * differ (in the chip-specific section), we need a pointer to its head.
+ *
+ * Avoiding premature optimization, we will have one work_struct per port,
+ * and let the (increasingly inaccurately named) eep_lock arbitrate
+ * access to common resources.
+ *
+ */
+
+/*
+ * Hold the parts of the onboard EEPROM that we care about, so we aren't
+ * coonstantly bit-boffing
+ */
+struct qib_qsfp_cache {
+	u8 id;	/* must be 0x0C or 0x0D */
+	u8 pwr; /* in D6,7 */
+	u8 len;	/* in meters, Cu only */
+	u8 tech;
+	char vendor[QSFP_VEND_LEN];
+	u8 xt_xcv; /* Ext. tranceiver codes, 4 lsbs are IB speed supported */
+	u8 oui[QSFP_VOUI_LEN];
+	u8 partnum[QSFP_PN_LEN];
+	u8 rev[QSFP_REV_LEN];
+	u8 atten[QSFP_ATTEN_LEN];
+	u8 cks1;	/* Checksum of bytes 128..190 */
+	u8 serial[QSFP_SN_LEN];
+	u8 date[QSFP_DATE_LEN];
+	u8 lot[QSFP_LOT_LEN];
+	u8 cks2;	/* Checsum of bytes 192..222 */
+};
+
+#define QSFP_PWR(pbyte) (((pbyte) >> 6) & 3)
+#define QSFP_ATTEN_SDR(attenarray) (attenarray[0])
+#define QSFP_ATTEN_DDR(attenarray) (attenarray[1])
+
+struct qib_qsfp_data {
+	/* Helps to find our way */
+	struct qib_pportdata *ppd;
+	struct work_struct work;
+	struct qib_qsfp_cache cache;
+	u64 t_insert;
+};
+
+extern int qib_refresh_qsfp_cache(struct qib_pportdata *ppd,
+				  struct qib_qsfp_cache *cp);
+extern void qib_qsfp_short_msg(struct qib_qsfp_data *qd);
+
+extern void qib_qsfp_init(struct qib_qsfp_data *qd,
+			  void (*fevent)(struct work_struct *));
+extern void qib_qsfp_deinit(struct qib_qsfp_data *qd);
+

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2009-11-19 23:39 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-19 23:36 [PATCH 0/53] IB/qib: add Ralph Campbell
     [not found] ` <20091119233655.30356.57433.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-19 23:37   ` [PATCH 01/53] IB/qib: Add Kconfig Ralph Campbell
     [not found]     ` <20091119233701.30356.78628.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-20  0:02       ` Roland Dreier
2009-11-19 23:37   ` [PATCH 02/53] IB/qib: Add Makefile Ralph Campbell
     [not found]     ` <20091119233706.30356.20051.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-20  0:05       ` Roland Dreier
     [not found]         ` <adaeinu6owu.fsf-BjVyx320WGW9gfZ95n9DRSW4+XlvGpQz@public.gmane.org>
2009-11-20  1:07           ` Dave Olson
     [not found]             ` <alpine.LFD.1.10.0911191700500.21294-vxnkQ4oxbxUi9g6yJnKVd0EOCMrvLtNR@public.gmane.org>
2009-11-24  3:59               ` Roland Dreier
     [not found]                 ` <adamy2c3754.fsf-BjVyx320WGW9gfZ95n9DRSW4+XlvGpQz@public.gmane.org>
2009-11-24 17:10                   ` [PATCH 02/53] IB/qib: Add Makefile (ipath vs qib) Dave Olson
2009-11-24  4:02               ` [PATCH 02/53] IB/qib: Add Makefile Roland Dreier
2009-11-19 23:37   ` [PATCH 03/53] IB/qib: Add qib.h Ralph Campbell
2009-11-19 23:37   ` [PATCH 04/53] IB/qib: Add qib_6120_regs.h Ralph Campbell
2009-11-19 23:37   ` [PATCH 05/53] IB/qib: Add qib_7220.h Ralph Campbell
2009-11-19 23:37   ` [PATCH 06/53] IB/qib: Add qib_7220_regs.h Ralph Campbell
2009-11-19 23:37   ` [PATCH 08/53] IB/qib: Add qib_common.h Ralph Campbell
2009-11-19 23:37   ` [PATCH 09/53] IB/qib: Add qib_cq.c Ralph Campbell
2009-11-19 23:37   ` [PATCH 10/53] IB/qib: Add qib_debug.h Ralph Campbell
2009-11-19 23:37   ` [PATCH 11/53] IB/qib: Add qib_diag.c Ralph Campbell
2009-11-19 23:37   ` [PATCH 12/53] IB/qib: Add qib_dma.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 13/53] IB/qib: Add qib_driver.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 14/53] IB/qib: Add qib_eeprom.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 15/53] IB/qib: Add qib_file_ops.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 16/53] IB/qib: Add qib_fs.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 20/53] IB/qib: Add qib_init.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 21/53] IB/qib: Add qib_intr.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 22/53] IB/qib: Add qib_keys.c Ralph Campbell
2009-11-19 23:38   ` [PATCH 23/53] IB/qib: Add qib_mad.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 24/53] IB/qib: Add qib_mad.h Ralph Campbell
2009-11-19 23:39   ` [PATCH 25/53] IB/qib: Add qib_mmap.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 26/53] IB/qib: Add qib_mr.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 27/53] IB/qib: Add qib_pcie.c Ralph Campbell
     [not found]     ` <20091119233918.30356.5469.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-20  0:11       ` Roland Dreier
     [not found]         ` <adaaayi6onr.fsf-BjVyx320WGW9gfZ95n9DRSW4+XlvGpQz@public.gmane.org>
2009-11-20  1:00           ` Dave Olson
2009-11-19 23:39   ` [PATCH 28/53] IB/qib: Add qib_pio_copy.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 29/53] IB/qib: Add qib_qp.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 30/53] IB/qib: Add qib_qsfp.c Ralph Campbell
2009-11-19 23:39   ` Ralph Campbell [this message]
2009-11-19 23:39   ` [PATCH 32/53] IB/qib: Add qib_rc.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 33/53] IB/qib: Add qib_ruc.c Ralph Campbell
2009-11-19 23:39   ` [PATCH 34/53] IB/qib: Add qib_sd7220.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 35/53] IB/qib: Add qib_sd7220_img.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 36/53] IB/qib: Add qib_sdma.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 37/53] IB/qib: Add qib_srq.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 38/53] IB/qib: Add qib_sysfs.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 39/53] IB/qib: Add qib_trace.c Ralph Campbell
     [not found]     ` <20091119234021.30356.77098.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-20  0:14       ` Roland Dreier
     [not found]         ` <ada63966oip.fsf-BjVyx320WGW9gfZ95n9DRSW4+XlvGpQz@public.gmane.org>
2009-11-20  0:53           ` Dave Olson
     [not found]             ` <alpine.LFD.1.10.0911191652280.21294-vxnkQ4oxbxUi9g6yJnKVd0EOCMrvLtNR@public.gmane.org>
2009-11-24  4:09               ` Roland Dreier
2009-12-02  0:10           ` Ralph Campbell
     [not found]             ` <1259712618.992.637.camel-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-12-02 17:52               ` Roland Dreier
2009-11-19 23:40   ` [PATCH 40/53] IB/qib: Add qib_trace.h Ralph Campbell
2009-11-19 23:40   ` [PATCH 41/53] IB/qib: Add qib_twsi.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 42/53] IB/qib: Add qib_tx.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 43/53] IB/qib: Add qib_uc.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 44/53] IB/qib: Add qib_ud.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 45/53] IB/qib: Add qib_user_pages.c Ralph Campbell
2009-11-19 23:40   ` [PATCH 46/53] IB/qib: Add qib_user_sdma.c Ralph Campbell
2009-11-19 23:41   ` [PATCH 47/53] IB/qib: Add qib_user_sdma.h Ralph Campbell
2009-11-19 23:41   ` [PATCH 48/53] IB/qib: Add qib_verbs.c Ralph Campbell
2009-11-19 23:41   ` [PATCH 49/53] IB/qib: Add qib_verbs.h Ralph Campbell
2009-11-19 23:41   ` [PATCH 50/53] IB/qib: Add qib_verbs_mcast.c Ralph Campbell
2009-11-19 23:41   ` [PATCH 51/53] IB/qib: Add qib_wc_ppc64.c Ralph Campbell
2009-11-19 23:41   ` [PATCH 52/53] IB/qib: Add qib_wc_x86_64.c Ralph Campbell
2009-11-19 23:41   ` [PATCH 53/53] IB/qib: Hooks for adding the QIB driver into the framework Ralph Campbell
2009-11-24  3:52   ` [PATCH 0/53] IB/qib: add Roland Dreier
     [not found] ` <20091119233732.30356.15053.stgit@chromite.mv.qlogic.com>
     [not found]   ` <20091119233732.30356.15053.stgit-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-24  4:04     ` [PATCH 07/53] IB/qib: Add qib_7322_regs.h Roland Dreier
     [not found]       ` <adaeino36vw.fsf-BjVyx320WGW9gfZ95n9DRSW4+XlvGpQz@public.gmane.org>
2009-11-24 20:28         ` Ralph Campbell
     [not found]           ` <1259094504.992.517.camel-/vjeY7uYZjrPXfVEPVhPGq6RkeBMCJyt@public.gmane.org>
2009-11-24 22:29             ` Roland Dreier
     [not found]               ` <ada1vjn36bz.fsf-BjVyx320WGW9gfZ95n9DRSW4+XlvGpQz@public.gmane.org>
2009-11-25  0:15                 ` Ralph Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091119233938.30356.1366.stgit@chromite.mv.qlogic.com \
    --to=ralph.campbell-h88zbnxc6kdqt0dzr+alfa@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=rdreier-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.