1c59adfc6SAlexander V. Chernikov /*- 2c59adfc6SAlexander V. Chernikov * Copyright (c) 2014 Yandex LLC. 3c59adfc6SAlexander V. Chernikov * 4c59adfc6SAlexander V. Chernikov * All rights reserved. 5c59adfc6SAlexander V. Chernikov * 6c59adfc6SAlexander V. Chernikov * Redistribution and use in source and binary forms, with or without 7c59adfc6SAlexander V. Chernikov * modification, are permitted provided that the following conditions 8c59adfc6SAlexander V. Chernikov * are met: 9c59adfc6SAlexander V. Chernikov * 1. Redistributions of source code must retain the above copyright 10c59adfc6SAlexander V. Chernikov * notice, this list of conditions and the following disclaimer. 11c59adfc6SAlexander V. Chernikov * 2. Redistributions in binary form must reproduce the above copyright 12c59adfc6SAlexander V. Chernikov * notice, this list of conditions and the following disclaimer in the 13c59adfc6SAlexander V. Chernikov * documentation and/or other materials provided with the distribution. 14c59adfc6SAlexander V. Chernikov * 15c59adfc6SAlexander V. Chernikov * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16c59adfc6SAlexander V. Chernikov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17c59adfc6SAlexander V. Chernikov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18c59adfc6SAlexander V. Chernikov * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19c59adfc6SAlexander V. Chernikov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20c59adfc6SAlexander V. Chernikov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21c59adfc6SAlexander V. Chernikov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22c59adfc6SAlexander V. Chernikov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23c59adfc6SAlexander V. Chernikov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24c59adfc6SAlexander V. Chernikov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25c59adfc6SAlexander V. Chernikov * SUCH DAMAGE. 26c59adfc6SAlexander V. Chernikov */ 27c59adfc6SAlexander V. Chernikov 28c59adfc6SAlexander V. Chernikov /* 29c59adfc6SAlexander V. Chernikov * The following set of constants are from Document SFF-8436 30c59adfc6SAlexander V. Chernikov * "QSFP+ 10 Gbs 4X PLUGGABLE TRANSCEIVER" revision 4.8 dated October 31, 2013 31c59adfc6SAlexander V. Chernikov * 32c59adfc6SAlexander V. Chernikov * This SFF standard defines the following QSFP+ memory address module: 33c59adfc6SAlexander V. Chernikov * 34c59adfc6SAlexander V. Chernikov * 1) 256-byte addressable block and 128-byte pages 35c59adfc6SAlexander V. Chernikov * 2) Lower 128-bytes addresses always refer to the same page 36c59adfc6SAlexander V. Chernikov * 3) Upper address space may refer to different pages depending on 37c59adfc6SAlexander V. Chernikov * "page select" byte value. 38c59adfc6SAlexander V. Chernikov * 39c59adfc6SAlexander V. Chernikov * Map description: 40c59adfc6SAlexander V. Chernikov * 41c59adfc6SAlexander V. Chernikov * Serial address 0xA02: 42c59adfc6SAlexander V. Chernikov * 43c59adfc6SAlexander V. Chernikov * Lower bits 44c59adfc6SAlexander V. Chernikov * 0-127 Monitoring data & page select byte 45c59adfc6SAlexander V. Chernikov * 128-255: 46c59adfc6SAlexander V. Chernikov * 47c59adfc6SAlexander V. Chernikov * Page 00: 48c59adfc6SAlexander V. Chernikov * 128-191 Base ID Fields 49c59adfc6SAlexander V. Chernikov * 191-223 Extended ID 50c59adfc6SAlexander V. Chernikov * 223-255 Vendor Specific ID 51c59adfc6SAlexander V. Chernikov * 52c59adfc6SAlexander V. Chernikov * Page 01 (optional): 53c59adfc6SAlexander V. Chernikov * 128-255 App-specific data 54c59adfc6SAlexander V. Chernikov * 55c59adfc6SAlexander V. Chernikov * Page 02 (optional): 56c59adfc6SAlexander V. Chernikov * 128-255 User EEPROM Data 57c59adfc6SAlexander V. Chernikov * 58c59adfc6SAlexander V. Chernikov * Page 03 (optional for Cable Assmeblies) 59c59adfc6SAlexander V. Chernikov * 128-223 Thresholds 60c59adfc6SAlexander V. Chernikov * 225-237 Vendor Specific 61c59adfc6SAlexander V. Chernikov * 238-253 Channel Controls/Monitor 62c59adfc6SAlexander V. Chernikov * 254-255 Reserverd 63c59adfc6SAlexander V. Chernikov * 64c59adfc6SAlexander V. Chernikov * All these values are read across an I2C (i squared C) bus. 65c59adfc6SAlexander V. Chernikov */ 66c59adfc6SAlexander V. Chernikov 67c59adfc6SAlexander V. Chernikov #define SFF_8436_BASE 0xA0 /* Base address for all requests */ 68c59adfc6SAlexander V. Chernikov 69c59adfc6SAlexander V. Chernikov /* Table 17 - Lower Memory Map */ 70c59adfc6SAlexander V. Chernikov enum { 71c59adfc6SAlexander V. Chernikov SFF_8436_MID = 0, /* Copy of SFF_8436_ID field */ 72c59adfc6SAlexander V. Chernikov SFF_8436_STATUS = 1, /* 2-bytes status (Table 18) */ 73c59adfc6SAlexander V. Chernikov SFF_8436_INTR_START = 3, /* Interrupt flags (Tables 19-21) */ 74c59adfc6SAlexander V. Chernikov SFF_8436_INTR_END = 21, 75c59adfc6SAlexander V. Chernikov SFF_8436_MODMON_START = 22, /* Module monitors (Table 22 */ 76c59adfc6SAlexander V. Chernikov SFF_8436_TEMP = 22, /* Internally measured module temp */ 77c59adfc6SAlexander V. Chernikov SFF_8436_VCC = 26, /* Internally mesasure module 78c59adfc6SAlexander V. Chernikov * supplied voltage */ 79c59adfc6SAlexander V. Chernikov SFF_8436_MODMON_END = 33, 80c59adfc6SAlexander V. Chernikov SFF_8436_CHMON_START = 34, /* Channel monitors (Table 23) */ 81c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH1_MSB = 34, /* Internally measured RX input power */ 82c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH1_LSB = 35, /* for channel 1 */ 83c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH2_MSB = 36, /* Internally measured RX input power */ 84c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH2_LSB = 37, /* for channel 2 */ 85c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH3_MSB = 38, /* Internally measured RX input power */ 86c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH3_LSB = 39, /* for channel 3 */ 87c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH4_MSB = 40, /* Internally measured RX input power */ 88c59adfc6SAlexander V. Chernikov SFF_8436_RX_CH4_LSB = 41, /* for channel 4 */ 89c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH1_MSB = 42, /* Internally measured TX bias */ 90c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH1_LSB = 43, /* for channel 1 */ 91c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH2_MSB = 44, /* Internally measured TX bias */ 92c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH2_LSB = 45, /* for channel 2 */ 93c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH3_MSB = 46, /* Internally measured TX bias */ 94c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH3_LSB = 47, /* for channel 3 */ 95c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH4_MSB = 48, /* Internally measured TX bias */ 96c59adfc6SAlexander V. Chernikov SFF_8436_TX_CH4_LSB = 49, /* for channel 4 */ 97c59adfc6SAlexander V. Chernikov SFF_8436_CHANMON_END = 81, 98c59adfc6SAlexander V. Chernikov SFF_8436_CONTROL_START = 86, /* Control (Table 24) */ 99c59adfc6SAlexander V. Chernikov SFF_8436_CONTROL_END = 97, 100c59adfc6SAlexander V. Chernikov SFF_8436_MASKS_START = 100, /* Module/channel masks (Table 25) */ 101c59adfc6SAlexander V. Chernikov SFF_8436_MASKS_END = 106, 102c59adfc6SAlexander V. Chernikov SFF_8436_CHPASSWORD = 119, /* Password change entry (4 bytes) */ 103c59adfc6SAlexander V. Chernikov SFF_8436_PASSWORD = 123, /* Password entry area (4 bytes) */ 104c59adfc6SAlexander V. Chernikov SFF_8436_PAGESEL = 127, /* Page select byte */ 105c59adfc6SAlexander V. Chernikov }; 106c59adfc6SAlexander V. Chernikov 107c59adfc6SAlexander V. Chernikov /* Table 18 - Status Indicators bits */ 108c59adfc6SAlexander V. Chernikov /* Byte 1: all bits reserved */ 109c59adfc6SAlexander V. Chernikov 110c59adfc6SAlexander V. Chernikov /* Byte 2 bits */ 111c59adfc6SAlexander V. Chernikov #define SFF_8436_STATUS_FLATMEM (1 << 2) /* Upper memory flat or paged 112c59adfc6SAlexander V. Chernikov * 0 = paging, 1=Page 0 only */ 113c59adfc6SAlexander V. Chernikov #define SFF_8436_STATUS_INTL (1 << 1) /* Digital state of the intL 114c59adfc6SAlexander V. Chernikov * Interrupt output pin */ 115c59adfc6SAlexander V. Chernikov #define SFF_8436_STATUS_NOTREADY 1 /* Module has not yet achieved 116c59adfc6SAlexander V. Chernikov * power up and memory data is not 117c59adfc6SAlexander V. Chernikov * ready. 0=data is ready */ 118c59adfc6SAlexander V. Chernikov /* 119c59adfc6SAlexander V. Chernikov * Upper page 0 definitions: 120c59adfc6SAlexander V. Chernikov * Table 29 - Serial ID: Data fields. 121c59adfc6SAlexander V. Chernikov * 122c59adfc6SAlexander V. Chernikov * Note that this table is mostly the same as used in SFF-8472. 123c59adfc6SAlexander V. Chernikov * The only differenee is address shift: +128 bytes. 124c59adfc6SAlexander V. Chernikov */ 125c59adfc6SAlexander V. Chernikov enum { 126c59adfc6SAlexander V. Chernikov SFF_8436_ID = 128, /* Module Type (defined in sff8472.h) */ 127c59adfc6SAlexander V. Chernikov SFF_8436_EXT_ID = 129, /* Extended transceiver type 128c59adfc6SAlexander V. Chernikov * (Table 31) */ 129c59adfc6SAlexander V. Chernikov SFF_8436_CONNECTOR = 130, /* Connector type (Table 32) */ 130c59adfc6SAlexander V. Chernikov SFF_8436_TRANS_START = 131, /* Electric or Optical Compatibility 131c59adfc6SAlexander V. Chernikov * (Table 33) */ 132*a18742e9SAlexander V. Chernikov SFF_8436_CODE_E1040100G = 131, /* 10/40/100G Ethernet Compliance Code */ 133c59adfc6SAlexander V. Chernikov SFF_8436_CODE_SONET = 132, /* SONET Compliance codes */ 134c59adfc6SAlexander V. Chernikov SFF_8436_CODE_SATA = 133, /* SAS/SATA compliance codes */ 135c59adfc6SAlexander V. Chernikov SFF_8436_CODE_E1G = 134, /* Gigabit Ethernet Compliant codes */ 136c59adfc6SAlexander V. Chernikov SFF_8436_CODE_FC_START = 135, /* FC link/media/speed */ 137c59adfc6SAlexander V. Chernikov SFF_8436_CODE_FC_END = 138, 138c59adfc6SAlexander V. Chernikov SFF_8436_TRANS_END = 138, 139c59adfc6SAlexander V. Chernikov SFF_8436_ENCODING = 139, /* Encoding Code for high speed 140c59adfc6SAlexander V. Chernikov * serial encoding algorithm (see 141c59adfc6SAlexander V. Chernikov * Table 34) */ 142c59adfc6SAlexander V. Chernikov SFF_8436_BITRATE = 140, /* Nominal signaling rate, units 143c59adfc6SAlexander V. Chernikov * of 100MBd. */ 144c59adfc6SAlexander V. Chernikov SFF_8436_RATEID = 141, /* Extended RateSelect Compliance 145c59adfc6SAlexander V. Chernikov * (see Table 35) */ 146c59adfc6SAlexander V. Chernikov SFF_8436_LEN_SMF_KM = 142, /* Link length supported for single 147c59adfc6SAlexander V. Chernikov * mode fiber, units of km */ 148c59adfc6SAlexander V. Chernikov SFF_8436_LEN_OM3 = 143, /* Link length supported for 850nm 149c59adfc6SAlexander V. Chernikov * 50um multimode fiber, units of 2 m */ 150c59adfc6SAlexander V. Chernikov SFF_8436_LEN_OM2 = 144, /* Link length supported for 50 um 151c59adfc6SAlexander V. Chernikov * OM2 fiber, units of 1 m */ 152c59adfc6SAlexander V. Chernikov SFF_8436_LEN_OM1 = 145, /* Link length supported for 1310 nm 153c59adfc6SAlexander V. Chernikov * 50um multi-mode fiber, units of 1m*/ 154c59adfc6SAlexander V. Chernikov SFF_8436_LEN_ASM = 144, /* Link length of passive cable assembly 155c59adfc6SAlexander V. Chernikov * Length is specified as in the INF 156c59adfc6SAlexander V. Chernikov * 8074, units of 1m. 0 means this is 157c59adfc6SAlexander V. Chernikov * not value assembly. Value of 255 158c59adfc6SAlexander V. Chernikov * means thet the Module supports length 159c59adfc6SAlexander V. Chernikov * greater than 254 m. */ 160c59adfc6SAlexander V. Chernikov SFF_8436_DEV_TECH = 147, /* Device/transmitter technology, 161c59adfc6SAlexander V. Chernikov * see Table 36/37 */ 162c59adfc6SAlexander V. Chernikov SFF_8436_VENDOR_START = 148, /* Vendor name, 16 bytes, padded 163c59adfc6SAlexander V. Chernikov * right with 0x20 */ 164c59adfc6SAlexander V. Chernikov SFF_8436_VENDOR_END = 163, 165c59adfc6SAlexander V. Chernikov SFF_8436_EXTMODCODE = 164, /* Extended module code, Table 164 */ 166c59adfc6SAlexander V. Chernikov SFF_8436_VENDOR_OUI_START = 165 , /* Vendor OUI SFP vendor IEEE 167c59adfc6SAlexander V. Chernikov * company ID */ 168c59adfc6SAlexander V. Chernikov SFF_8436_VENDOR_OUI_END = 167, 169c59adfc6SAlexander V. Chernikov SFF_8436_PN_START = 168, /* Vendor PN, padded right with 0x20 */ 170c59adfc6SAlexander V. Chernikov SFF_8436_PN_END = 183, 171c59adfc6SAlexander V. Chernikov SFF_8436_REV_START = 184, /* Vendor Revision, padded right 0x20 */ 172c59adfc6SAlexander V. Chernikov SFF_8436_REV_END = 185, 173c59adfc6SAlexander V. Chernikov SFF_8436_WAVELEN_START = 186, /* Wavelength Laser wavelength 174c59adfc6SAlexander V. Chernikov * (Passive/Active Cable 175c59adfc6SAlexander V. Chernikov * Specification Compliance) */ 176c59adfc6SAlexander V. Chernikov SFF_8436_WAVELEN_END = 189, 177c59adfc6SAlexander V. Chernikov SFF_8436_MAX_CASE_TEMP = 190, /* Allows to specify maximum temp 178c59adfc6SAlexander V. Chernikov * above 70C. Maximum case temperature is 179c59adfc6SAlexander V. Chernikov * an 8-bit value in Degrees C. A value 180c59adfc6SAlexander V. Chernikov *of 0 implies the standard 70C rating.*/ 181c59adfc6SAlexander V. Chernikov SFF_8436_CC_BASE = 191, /* CC_BASE Check code for Base ID 182c59adfc6SAlexander V. Chernikov * Fields (first 63 bytes) */ 183c59adfc6SAlexander V. Chernikov /* Extended ID fields */ 184c59adfc6SAlexander V. Chernikov SFF_8436_OPTIONS_START = 192, /* Options Indicates which optional 185c59adfc6SAlexander V. Chernikov * transceiver signals are 186c59adfc6SAlexander V. Chernikov * implemented (see Table 39) */ 187c59adfc6SAlexander V. Chernikov SFF_8436_OPTIONS_END = 195, 188c59adfc6SAlexander V. Chernikov SFF_8436_SN_START = 196, /* Vendor SN, riwght padded with 0x20 */ 189c59adfc6SAlexander V. Chernikov SFF_8436_SN_END = 211, 190c59adfc6SAlexander V. Chernikov SFF_8436_DATE_START = 212, /* Vendor’s manufacturing date code 191c59adfc6SAlexander V. Chernikov * (see Table 40) */ 192c59adfc6SAlexander V. Chernikov SFF_8436_DATE_END = 219, 193c59adfc6SAlexander V. Chernikov SFF_8436_DIAG_TYPE = 220, /* Diagnostic Monitoring Type 194c59adfc6SAlexander V. Chernikov * Indicates which type of 195c59adfc6SAlexander V. Chernikov * diagnostic monitoring is 196c59adfc6SAlexander V. Chernikov * implemented (if any) in the 197c59adfc6SAlexander V. Chernikov * transceiver (see Table 41) */ 198c59adfc6SAlexander V. Chernikov 199c59adfc6SAlexander V. Chernikov SFF_8436_ENHANCED = 221, /* Enhanced Options Indicates which 200c59adfc6SAlexander V. Chernikov * optional features are implemented 201c59adfc6SAlexander V. Chernikov * (if any) in the transceiver 202c59adfc6SAlexander V. Chernikov * (see Table 42) */ 2035446b3f1SAlexander V. Chernikov SFF_8636_BITRATE = 222, /* Nominal bit rate per channel, units 2045446b3f1SAlexander V. Chernikov * of 250 Mbps */ 2055446b3f1SAlexander V. Chernikov SFF_8436_CC_EXT = 223, /* Check code for the Extended ID 206c59adfc6SAlexander V. Chernikov * Fields (bytes 192-222 incl) */ 207c59adfc6SAlexander V. Chernikov SFF_8436_VENDOR_RSRVD_START = 224, 208c59adfc6SAlexander V. Chernikov SFF_8436_VENDOR_RSRVD_END = 255, 209c59adfc6SAlexander V. Chernikov }; 210