diff --git a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini
new file mode 100644
index 000000000000..0806a84739a7
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/port_config.ini
@@ -0,0 +1,33 @@
+# name lanes alias fec index
+Ethernet0 1,2,3,4 QSFP1 rs 1
+Ethernet1 5,6,7,8 QSFP2 rs 2
+Ethernet2 9,10,11,12 QSFP3 rs 3
+Ethernet3 13,14,15,16 QSFP4 rs 4
+Ethernet4 17,18,19,20 QSFP5 rs 5
+Ethernet5 21,22,23,24 QSFP6 rs 6
+Ethernet6 25,26,27,28 QSFP7 rs 7
+Ethernet7 29,30,31,32 QSFP8 rs 8
+Ethernet8 33,34,35,36 QSFP9 rs 9
+Ethernet9 37,38,39,40 QSFP10 rs 10
+Ethernet10 41,42,43,44 QSFP11 rs 11
+Ethernet11 45,46,47,48 QSFP12 rs 12
+Ethernet12 49,50,51,52 QSFP13 rs 13
+Ethernet13 53,54,55,56 QSFP14 rs 14
+Ethernet14 57,58,59,60 QSFP15 rs 15
+Ethernet15 61,62,63,64 QSFP16 rs 16
+Ethernet16 65,66,67,68 QSFP17 rs 17
+Ethernet17 69,70,71,72 QSFP18 rs 18
+Ethernet18 73,74,75,76 QSFP19 rs 19
+Ethernet19 77,78,79,80 QSFP20 rs 20
+Ethernet20 81,82,83,84 QSFP21 rs 21
+Ethernet21 85,86,87,88 QSFP22 rs 22
+Ethernet22 89,90,91,92 QSFP23 rs 23
+Ethernet23 93,94,95,96 QSFP24 rs 24
+Ethernet24 97,98,99,100 QSFP25 rs 25
+Ethernet25 101,102,103,104 QSFP26 rs 26
+Ethernet26 105,106,107,108 QSFP27 rs 27
+Ethernet27 109,110,111,112 QSFP28 rs 28
+Ethernet28 113,114,115,116 QSFP29 rs 29
+Ethernet29 117,118,119,120 QSFP30 rs 30
+Ethernet30 121,122,123,124 QSFP31 rs 31
+Ethernet31 125,126,127,128 QSFP32 rs 32
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/sai.profile b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/sai.profile
new file mode 100644
index 000000000000..c74f30fd54f7
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/Seastone_2/sai.profile
@@ -0,0 +1 @@
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/platform/td3-seastone_2-32x100G.config.bcm
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/custom.bin b/device/celestica/x86_64-cel_seastone_2-r0/custom.bin
new file mode 100644
index 000000000000..a9597df309ab
Binary files /dev/null and b/device/celestica/x86_64-cel_seastone_2-r0/custom.bin differ
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/default_sku b/device/celestica/x86_64-cel_seastone_2-r0/default_sku
new file mode 100644
index 000000000000..5ed4cdc66166
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/default_sku
@@ -0,0 +1 @@
+Seastone_2 t1
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/installer.conf b/device/celestica/x86_64-cel_seastone_2-r0/installer.conf
new file mode 100644
index 000000000000..3222a45fe1d4
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/installer.conf
@@ -0,0 +1,3 @@
+CONSOLE_DEV=0
+CONSOLE_SPEED=115200
+ONIE_PLATFORM_EXTRA_CMDLINE_LINUX="earlycon=uart8250,mmio,0xdf37b000"
\ No newline at end of file
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/led_proc_init.soc b/device/celestica/x86_64-cel_seastone_2-r0/led_proc_init.soc
new file mode 100644
index 000000000000..a47644c032e1
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/led_proc_init.soc
@@ -0,0 +1,9 @@
+#Enable all ports
+port all en=1
+sleep 6
+#linkscan 250000; port xe,ce linkscan=on
+
+#Load LED
+led auto on; led start
+
+
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/linkscan_fw.bin b/device/celestica/x86_64-cel_seastone_2-r0/linkscan_fw.bin
new file mode 100644
index 000000000000..a6a4794ecc2b
Binary files /dev/null and b/device/celestica/x86_64-cel_seastone_2-r0/linkscan_fw.bin differ
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/minigraph.xml b/device/celestica/x86_64-cel_seastone_2-r0/minigraph.xml
new file mode 100644
index 000000000000..89a53f08be8e
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/minigraph.xml
@@ -0,0 +1,854 @@
+
+
+
+
+
+ ARISTA01T0
+ 10.0.0.33
+ sonic
+ 10.0.0.32
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.0
+ ARISTA01T2
+ 10.0.0.1
+ 1
+ 180
+ 60
+
+
+ ARISTA02T0
+ 10.0.0.35
+ sonic
+ 10.0.0.34
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.2
+ ARISTA02T2
+ 10.0.0.3
+ 1
+ 180
+ 60
+
+
+ ARISTA03T0
+ 10.0.0.37
+ sonic
+ 10.0.0.36
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.4
+ ARISTA03T2
+ 10.0.0.5
+ 1
+ 180
+ 60
+
+
+ ARISTA04T0
+ 10.0.0.39
+ sonic
+ 10.0.0.38
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.6
+ ARISTA04T2
+ 10.0.0.7
+ 1
+ 180
+ 60
+
+
+ ARISTA05T0
+ 10.0.0.41
+ sonic
+ 10.0.0.40
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.8
+ ARISTA05T2
+ 10.0.0.9
+ 1
+ 180
+ 60
+
+
+ ARISTA06T0
+ 10.0.0.43
+ sonic
+ 10.0.0.42
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.10
+ ARISTA06T2
+ 10.0.0.11
+ 1
+ 180
+ 60
+
+
+ ARISTA07T0
+ 10.0.0.45
+ sonic
+ 10.0.0.44
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.12
+ ARISTA07T2
+ 10.0.0.13
+ 1
+ 180
+ 60
+
+
+ ARISTA08T0
+ 10.0.0.47
+ sonic
+ 10.0.0.46
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.14
+ ARISTA08T2
+ 10.0.0.15
+ 1
+ 180
+ 60
+
+
+ ARISTA09T0
+ 10.0.0.49
+ sonic
+ 10.0.0.48
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.16
+ ARISTA09T2
+ 10.0.0.17
+ 1
+ 180
+ 60
+
+
+ ARISTA10T0
+ 10.0.0.51
+ sonic
+ 10.0.0.50
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.18
+ ARISTA10T2
+ 10.0.0.19
+ 1
+ 180
+ 60
+
+
+ ARISTA11T0
+ 10.0.0.53
+ sonic
+ 10.0.0.52
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.20
+ ARISTA11T2
+ 10.0.0.21
+ 1
+ 180
+ 60
+
+
+ ARISTA12T0
+ 10.0.0.55
+ sonic
+ 10.0.0.54
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.22
+ ARISTA12T2
+ 10.0.0.23
+ 1
+ 180
+ 60
+
+
+ ARISTA13T0
+ 10.0.0.57
+ sonic
+ 10.0.0.56
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.24
+ ARISTA13T2
+ 10.0.0.25
+ 1
+ 180
+ 60
+
+
+ ARISTA14T0
+ 10.0.0.59
+ sonic
+ 10.0.0.58
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.26
+ ARISTA14T2
+ 10.0.0.27
+ 1
+ 180
+ 60
+
+
+ ARISTA15T0
+ 10.0.0.61
+ sonic
+ 10.0.0.60
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.28
+ ARISTA15T2
+ 10.0.0.29
+ 1
+ 180
+ 60
+
+
+ ARISTA16T0
+ 10.0.0.63
+ sonic
+ 10.0.0.62
+ 1
+ 180
+ 60
+
+
+ sonic
+ 10.0.0.30
+ ARISTA16T2
+ 10.0.0.31
+ 1
+ 180
+ 60
+
+
+
+
+ 65100
+ sonic
+
+
+ 10.0.0.33
+
+
+
+
+ 10.0.0.1
+
+
+
+
+ 10.0.0.35
+
+
+
+
+ 10.0.0.3
+
+
+
+
+ 10.0.0.37
+
+
+
+
+ 10.0.0.5
+
+
+
+
+ 10.0.0.39
+
+
+
+
+ 10.0.0.7
+
+
+
+
+ 10.0.0.41
+
+
+
+
+ 10.0.0.9
+
+
+
+
+ 10.0.0.43
+
+
+
+
+ 10.0.0.11
+
+
+
+
+ 10.0.0.45
+
+
+
+
+ 10.0.0.13
+
+
+
+
+ 10.0.0.47
+
+
+
+
+ 10.0.0.15
+
+
+
+
+ 10.0.0.49
+
+
+
+
+ 10.0.0.17
+
+
+
+
+ 10.0.0.51
+
+
+
+
+ 10.0.0.19
+
+
+
+
+ 10.0.0.53
+
+
+
+
+ 10.0.0.21
+
+
+
+
+ 10.0.0.55
+
+
+
+
+ 10.0.0.23
+
+
+
+
+ 10.0.0.57
+
+
+
+
+ 10.0.0.25
+
+
+
+
+ 10.0.0.59
+
+
+
+
+ 10.0.0.27
+
+
+
+
+ 10.0.0.61
+
+
+
+
+ 10.0.0.29
+
+
+
+
+ 10.0.0.63
+
+
+
+
+ 10.0.0.31
+
+
+
+
+
+
+
+ 64001
+ ARISTA01T0
+
+
+
+ 65200
+ ARISTA01T2
+
+
+
+ 64002
+ ARISTA02T0
+
+
+
+ 65200
+ ARISTA02T2
+
+
+
+ 64003
+ ARISTA03T0
+
+
+
+ 65200
+ ARISTA03T2
+
+
+
+ 64004
+ ARISTA04T0
+
+
+
+ 65200
+ ARISTA04T2
+
+
+
+ 64005
+ ARISTA05T0
+
+
+
+ 65200
+ ARISTA05T2
+
+
+
+ 64006
+ ARISTA06T0
+
+
+
+ 65200
+ ARISTA06T2
+
+
+
+ 64007
+ ARISTA07T0
+
+
+
+ 65200
+ ARISTA07T2
+
+
+
+ 64008
+ ARISTA08T0
+
+
+
+ 65200
+ ARISTA08T2
+
+
+
+ 64009
+ ARISTA09T0
+
+
+
+ 65200
+ ARISTA09T2
+
+
+
+ 64010
+ ARISTA10T0
+
+
+
+ 65200
+ ARISTA10T2
+
+
+
+ 64011
+ ARISTA11T0
+
+
+
+ 65200
+ ARISTA11T2
+
+
+
+ 64012
+ ARISTA12T0
+
+
+
+ 65200
+ ARISTA12T2
+
+
+
+ 64013
+ ARISTA13T0
+
+
+
+ 65200
+ ARISTA13T2
+
+
+
+ 64014
+ ARISTA14T0
+
+
+
+ 65200
+ ARISTA14T2
+
+
+
+ 64015
+ ARISTA15T0
+
+
+
+ 65200
+ ARISTA15T2
+
+
+
+ 64016
+ ARISTA16T0
+
+
+
+ 65200
+ ARISTA16T2
+
+
+
+
+
+
+
+
+
+ HostIP
+ Loopback0
+
+ 10.1.0.32/32
+
+ 10.1.0.32/32
+
+
+
+
+
+
+
+ sonic
+
+
+
+
+
+ QSFP1
+ 10.0.0.0/31
+
+
+
+ QSFP2
+ 10.0.0.2/31
+
+
+
+ QSFP3
+ 10.0.0.4/31
+
+
+
+ QSFP4
+ 10.0.0.6/31
+
+
+
+ QSFP5
+ 10.0.0.8/31
+
+
+
+ QSFP6
+ 10.0.0.10/31
+
+
+
+ QSFP7
+ 10.0.0.12/31
+
+
+
+ QSFP8
+ 10.0.0.14/31
+
+
+
+ QSFP9
+ 10.0.0.16/31
+
+
+
+ QSFP10
+ 10.0.0.18/31
+
+
+
+ QSFP11
+ 10.0.0.20/31
+
+
+
+ QSFP12
+ 10.0.0.22/31
+
+
+
+ QSFP13
+ 10.0.0.24/31
+
+
+
+ QSFP14
+ 10.0.0.26/31
+
+
+
+ QSFP15
+ 10.0.0.28/31
+
+
+
+ QSFP16
+ 10.0.0.30/31
+
+
+
+ QSFP17
+ 10.0.0.32/31
+
+
+
+ QSFP18
+ 10.0.0.34/31
+
+
+
+ QSFP19
+ 10.0.0.36/31
+
+
+
+ QSFP20
+ 10.0.0.38/31
+
+
+
+ QSFP21
+ 10.0.0.40/31
+
+
+
+ QSFP22
+ 10.0.0.42/31
+
+
+
+ QSFP23
+ 10.0.0.44/31
+
+
+
+ QSFP24
+ 10.0.0.46/31
+
+
+
+ QSFP25
+ 10.0.0.48/31
+
+
+
+ QSFP26
+ 10.0.0.50/31
+
+
+
+ QSFP27
+ 10.0.0.52/31
+
+
+
+ QSFP28
+ 10.0.0.54/31
+
+
+
+ QSFP29
+ 10.0.0.56/31
+
+
+
+ QSFP30
+ 10.0.0.58/31
+
+
+
+ QSFP31
+ 10.0.0.60/31
+
+
+
+ QSFP32
+ 10.0.0.62/31
+
+
+
+
+
+
+
+
+
+
+
+
+ sonic
+ Seastone_2
+
+
+
+
+
+
+ sonic
+
+
+ DhcpResources
+
+
+
+
+ NtpResources
+
+ 0.debian.pool.ntp.org;1.debian.pool.ntp.org;2.debian.pool.ntp.org;3.debian.pool.ntp.org
+
+
+ SyslogResources
+
+
+
+
+ ErspanDestinationIpv4
+
+ 2.2.2.2
+
+
+
+
+
+
+ sonic
+ Seastone_2
+
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/plugins/eeprom.py b/device/celestica/x86_64-cel_seastone_2-r0/plugins/eeprom.py
new file mode 100644
index 000000000000..2ae540870c41
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/plugins/eeprom.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+
+#############################################################################
+# Celestica Seastone2
+#
+# Platform and model specific eeprom subclass, inherits from the base class,
+# and provides the followings:
+# - the eeprom format definition
+# - specific encoder/decoder if there is special need
+#############################################################################
+
+try:
+ from sonic_eeprom import eeprom_tlvinfo
+except ImportError, e:
+ raise ImportError (str(e) + "- required module not found")
+
+
+class board(eeprom_tlvinfo.TlvInfoDecoder):
+
+ def __init__(self, name, path, cpld_root, ro):
+ self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0056/eeprom"
+ super(board, self).__init__(self.eeprom_path, 0, '', True)
+
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/plugins/psuutil.py b/device/celestica/x86_64-cel_seastone_2-r0/plugins/psuutil.py
new file mode 100644
index 000000000000..e39e11d8b57d
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/plugins/psuutil.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+
+import os.path
+import subprocess
+import sys
+import re
+
+try:
+ from sonic_psu.psu_base import PsuBase
+except ImportError as e:
+ raise ImportError (str(e) + "- required module not found")
+
+class PsuUtil(PsuBase):
+ """Platform-specific PSUutil class"""
+
+ def __init__(self):
+ self.ipmi_sensor = "docker exec -ti pmon ipmitool sensor"
+ PsuBase.__init__(self)
+
+ def run_command(self, command):
+ proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
+ (out, err) = proc.communicate()
+
+ if proc.returncode != 0:
+ sys.exit(proc.returncode)
+
+ return out
+
+ def find_value(self, grep_string):
+ result = re.search(".+\| (0x\d{2})\d{2}\|.+", grep_string)
+ if result:
+ return result.group(1)
+ else:
+ return result
+
+ def get_num_psus(self):
+ """
+ Retrieves the number of PSUs available on the device
+ :return: An integer, the number of PSUs available on the device
+ """
+ return 2
+
+ def get_psu_status(self, index):
+ """
+ Retrieves the oprational status of power supply unit (PSU) defined
+ by 1-based index
+ :param index: An integer, 1-based index of the PSU of which to query status
+ :return: Boolean, True if PSU is operating properly, False if PSU is faulty
+ """
+ if index is None:
+ return False
+
+ grep_key = "PSUL_Status" if index == 1 else "PSUR_Status"
+ grep_string = self.run_command(self.ipmi_sensor + ' | grep '+ grep_key)
+ status_byte = self.find_value(grep_string)
+
+ if status_byte is None:
+ return False
+
+ failure_detected = (int(status_byte, 16) >> 1) & 1
+ input_lost = (int(status_byte, 16) >> 3) & 1
+ if failure_detected or input_lost:
+ return False
+ else:
+ return True
+
+ def get_psu_presence(self, index):
+ """
+ Retrieves the presence status of power supply unit (PSU) defined
+ by 1-based index
+ :param index: An integer, 1-based index of the PSU of which to query status
+ :return: Boolean, True if PSU is plugged, False if not
+ """
+ if index is None:
+ return False
+
+ grep_key = "PSUL_Status" if index == 1 else "PSUR_Status"
+ grep_string = self.run_command(self.ipmi_sensor + ' | grep '+ grep_key)
+ status_byte = self.find_value(grep_string)
+
+ if status_byte is None:
+ return False
+
+ presence = ( int(status_byte, 16) >> 0 ) & 1
+ if presence:
+ return True
+ else:
+ return False
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/plugins/sfputil.py b/device/celestica/x86_64-cel_seastone_2-r0/plugins/sfputil.py
new file mode 100755
index 000000000000..c35b20d8fbd0
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/plugins/sfputil.py
@@ -0,0 +1,182 @@
+#!/usr/bin/env python
+#
+# Platform-specific SFP transceiver interface for SONiC
+#
+
+try:
+ import time
+ from sonic_sfp.sfputilbase import SfpUtilBase
+except ImportError as e:
+ raise ImportError("%s - required module not found" % str(e))
+
+
+class SfpUtil(SfpUtilBase):
+ """Platform-specific SfpUtil class"""
+
+ PORT_START = 1
+ PORT_END = 33
+ QSFP_PORT_START = 1
+ QSFP_PORT_END = 32
+
+ EEPROM_OFFSET = 1
+ PORT_INFO_PATH = '/sys/class/seastone2_fpga'
+
+ _port_name = ""
+ _port_to_eeprom_mapping = {}
+ _port_to_i2cbus_mapping = {}
+
+ @property
+ def port_start(self):
+ return self.PORT_START
+
+ @property
+ def port_end(self):
+ return self.PORT_END
+
+ @property
+ def qsfp_ports(self):
+ return range(self.QSFP_PORT_START, self.QSFP_PORT_END + 1)
+
+ @property
+ def port_to_eeprom_mapping(self):
+ return self._port_to_eeprom_mapping
+
+ @property
+ def port_to_i2cbus_mapping(self):
+ return self._port_to_i2cbus_mapping
+
+ def get_port_name(self, port_num):
+ if port_num in self.qsfp_ports:
+ self._port_name = "QSFP" + str(port_num - self.QSFP_PORT_START + 1)
+ else:
+ self._port_name = "SFP" + str(port_num)
+ return self._port_name
+
+ # def get_eeprom_dom_raw(self, port_num):
+ # if port_num in self.qsfp_ports:
+ # # QSFP DOM EEPROM is also at addr 0x50 and thus also stored in eeprom_ifraw
+ # return None
+ # else:
+ # # Read dom eeprom at addr 0x51
+ # return self._read_eeprom_devid(port_num, self.DOM_EEPROM_ADDR, 256)
+
+ def __init__(self):
+ # Override port_to_eeprom_mapping for class initialization
+ eeprom_path = '/sys/bus/i2c/devices/i2c-{0}/{0}-0050/eeprom'
+
+ for x in range(self.PORT_START, self.PORT_END+1):
+ self.port_to_i2cbus_mapping[x] = (x + self.EEPROM_OFFSET)
+ self.port_to_eeprom_mapping[x] = eeprom_path.format(
+ x + self.EEPROM_OFFSET)
+ SfpUtilBase.__init__(self)
+
+ def get_presence(self, port_num):
+
+ # Check for invalid port_num
+ if port_num not in range(self.port_start, self.port_end + 1):
+ return False
+
+ # Get path for access port presence status
+ port_name = self.get_port_name(port_num)
+ sysfs_filename = "qsfp_modprs" if port_num in self.qsfp_ports else "sfp_modabs"
+ reg_path = "/".join([self.PORT_INFO_PATH, port_name, sysfs_filename])
+
+ # Read status
+ try:
+ reg_file = open(reg_path)
+ content = reg_file.readline().rstrip()
+ reg_value = int(content)
+ except IOError as e:
+ print "Error: unable to open file: %s" % str(e)
+ return False
+
+ # Module present is active low
+ if reg_value == 0:
+ return True
+
+ return False
+
+ def get_low_power_mode(self, port_num):
+ # Check for invalid QSFP port_num
+ if port_num not in self.qsfp_ports:
+ return False
+
+ try:
+ port_name = self.get_port_name(port_num)
+ reg_file = open(
+ "/".join([self.PORT_INFO_PATH, port_name, "qsfp_lpmode"]), "r+")
+ except IOError as e:
+ print "Error: unable to open file: %s" % str(e)
+ return False
+
+ # Read status
+ content = reg_file.readline().rstrip()
+ reg_value = int(content, 16)
+ # ModPrsL is active low
+ if reg_value == 0:
+ return False
+
+ return True
+
+ def set_low_power_mode(self, port_num, lpmode):
+ # Check for invalid QSFP port_num
+ if port_num not in self.qsfp_ports:
+ return False
+
+ try:
+ port_name = self.get_port_name(port_num)
+ reg_file = open(
+ "/".join([self.PORT_INFO_PATH, port_name, "qsfp_lpmode"]), "r+")
+ except IOError as e:
+ print "Error: unable to open file: %s" % str(e)
+ return False
+
+ content = hex(lpmode)
+
+ reg_file.seek(0)
+ reg_file.write(content)
+ reg_file.close()
+
+ return True
+
+ def reset(self, port_num):
+ # Check for invalid QSFP port_num
+ if port_num not in self.qsfp_ports:
+ return False
+
+ try:
+ port_name = self.get_port_name(port_num)
+ reg_file = open(
+ "/".join([self.PORT_INFO_PATH, port_name, "qsfp_reset"]), "w")
+ except IOError as e:
+ print "Error: unable to open file: %s" % str(e)
+ return False
+
+ # Convert our register value back to a hex string and write back
+ reg_file.seek(0)
+ reg_file.write(hex(0))
+ reg_file.close()
+
+ # Sleep 1 second to allow it to settle
+ time.sleep(1)
+
+ # Flip the bit back high and write back to the register to take port out of reset
+ try:
+ reg_file = open(
+ "/".join([self.PORT_INFO_PATH, port_name, "qsfp_reset"]), "w")
+ except IOError as e:
+ print "Error: unable to open file: %s" % str(e)
+ return False
+
+ reg_file.seek(0)
+ reg_file.write(hex(1))
+ reg_file.close()
+
+ return True
+
+ def get_transceiver_change_event(self, timeout=0):
+ """
+ TBD: When the feature request.
+ """
+ return NotImplementedError
+
diff --git a/device/celestica/x86_64-cel_seastone_2-r0/td3-seastone_2-32x100G.config.bcm b/device/celestica/x86_64-cel_seastone_2-r0/td3-seastone_2-32x100G.config.bcm
new file mode 100644
index 000000000000..f46eac7c2e5c
--- /dev/null
+++ b/device/celestica/x86_64-cel_seastone_2-r0/td3-seastone_2-32x100G.config.bcm
@@ -0,0 +1,598 @@
+help_cli_enable=1
+ifp_inports_support_enable=1
+ipv6_lpm_128b_enable=0x1
+l2_mem_entries=32768
+l2xmsg_mode=1
+l3_max_ecmp_mode=1
+l3_mem_entries=16384
+lpm_scaling_enable=1
+max_vp_lags=0
+mem_cache_enable=0
+memlist_enable=1
+miim_intr_enable=0
+module_64ports=1
+oversubscribe_mode=1
+parity_enable=0
+serdes_lane_config_dfe=on
+#serdes_fec_enable=1
+serdes_if_type_ce=14
+pbmp_gport_stack.0=0x0000000000000000000000000000000000000000000000000000000000000000
+#pbmp_xport_xe=0x48878787f8787808dfe1e0203e1e1e022
+pbmp_xport_xe=0x88888888888888882222222222222222
+
+ptp_ts_pll_fref=50000000
+ptp_bs_fref_0=50000000
+ptp_bs_fref_1=50000000
+
+portmap_1.0=1:100
+portmap_5.0=5:100
+portmap_9.0=9:100
+portmap_13.0=13:100
+portmap_17.0=17:100
+portmap_21.0=21:100
+portmap_25.0=25:100
+portmap_29.0=29:100
+portmap_33.0=33:100
+portmap_37.0=37:100
+portmap_41.0=41:100
+portmap_45.0=45:100
+portmap_49.0=49:100
+portmap_53.0=53:100
+portmap_57.0=57:100
+portmap_61.0=61:100
+portmap_67.0=65:100
+portmap_71.0=69:100
+portmap_75.0=73:100
+portmap_79.0=77:100
+portmap_83.0=81:100
+portmap_87.0=85:100
+portmap_91.0=89:100
+portmap_95.0=93:100
+portmap_99.0=97:100
+portmap_103.0=101:100
+portmap_107.0=105:100
+portmap_111.0=109:100
+portmap_115.0=113:100
+portmap_119.0=117:100
+portmap_123.0=121:100
+portmap_127.0=125:100
+portmap_66.0=129:10:m
+portmap_130.0=128:10:m
+
+#wc0 lane swap
+phy_chain_tx_lane_map_physical{1.0}=0x0132
+phy_chain_rx_lane_map_physical{1.0}=0x3210
+
+#wc1 lane swap
+phy_chain_tx_lane_map_physical{5.0}=0x2301
+phy_chain_rx_lane_map_physical{5.0}=0x2031
+
+#wc2 lane swap
+phy_chain_tx_lane_map_physical{9.0}=0x0132
+phy_chain_rx_lane_map_physical{9.0}=0x3210
+
+#wc3 lane swap
+phy_chain_tx_lane_map_physical{13.0}=0x3201
+phy_chain_rx_lane_map_physical{13.0}=0x2031
+
+#wc4 lane swap
+phy_chain_tx_lane_map_physical{17.0}=0x0123
+phy_chain_rx_lane_map_physical{17.0}=0x3210
+
+#wc5 lane swap
+phy_chain_tx_lane_map_physical{21.0}=0x2301
+phy_chain_rx_lane_map_physical{21.0}=0x2031
+
+#wc6 lane swap
+phy_chain_tx_lane_map_physical{25.0}=0x0123
+phy_chain_rx_lane_map_physical{25.0}=0x3210
+
+#wc7 lane swap
+phy_chain_tx_lane_map_physical{29.0}=0x3201
+phy_chain_rx_lane_map_physical{29.0}=0x2031
+
+#wc8 lane swap
+phy_chain_tx_lane_map_physical{33.0}=0x0213
+phy_chain_rx_lane_map_physical{33.0}=0x1302
+
+#wc9 lane swap
+phy_chain_tx_lane_map_physical{37.0}=0x1302
+phy_chain_rx_lane_map_physical{37.0}=0x2031
+
+#wc10 lane swap
+phy_chain_tx_lane_map_physical{41.0}=0x0231
+phy_chain_rx_lane_map_physical{41.0}=0x3120
+
+#wc11 lane swap
+phy_chain_tx_lane_map_physical{45.0}=0x1302
+phy_chain_rx_lane_map_physical{45.0}=0x2031
+
+#wc12 lane swap
+phy_chain_tx_lane_map_physical{49.0}=0x2103
+phy_chain_rx_lane_map_physical{49.0}=0x3120
+
+#wc13 lane swap
+phy_chain_tx_lane_map_physical{53.0}=0x2301
+phy_chain_rx_lane_map_physical{53.0}=0x2031
+
+#wc14 lane swap
+phy_chain_tx_lane_map_physical{57.0}=0x0123
+phy_chain_rx_lane_map_physical{57.0}=0x2301
+
+#wc15 lane swap
+phy_chain_tx_lane_map_physical{61.0}=0x3210
+phy_chain_rx_lane_map_physical{61.0}=0x1032
+
+#wc16 lane swap
+phy_chain_tx_lane_map_physical{65.0}=0x3210
+phy_chain_rx_lane_map_physical{65.0}=0x1023
+
+#wc17 lane swap
+phy_chain_tx_lane_map_physical{69.0}=0x0123
+phy_chain_rx_lane_map_physical{69.0}=0x1302
+
+#wc18 lane swap
+phy_chain_tx_lane_map_physical{73.0}=0x2301
+phy_chain_rx_lane_map_physical{73.0}=0x1032
+
+#wc19 lane swap
+phy_chain_tx_lane_map_physical{77.0}=0x2013
+phy_chain_rx_lane_map_physical{77.0}=0x3120
+
+#wc20 lane swap
+phy_chain_tx_lane_map_physical{81.0}=0x1302
+phy_chain_rx_lane_map_physical{81.0}=0x2031
+
+#wc21 lane swap
+phy_chain_tx_lane_map_physical{85.0}=0x0123
+phy_chain_rx_lane_map_physical{85.0}=0x2130
+
+#wc22 lane swap
+phy_chain_tx_lane_map_physical{89.0}=0x2301
+phy_chain_rx_lane_map_physical{89.0}=0x2031
+
+#wc23 lane swap
+phy_chain_tx_lane_map_physical{93.0}=0x0312
+phy_chain_rx_lane_map_physical{93.0}=0x2310
+
+#wc24 lane swap
+phy_chain_tx_lane_map_physical{97.0}=0x2301
+phy_chain_rx_lane_map_physical{97.0}=0x1032
+
+#wc25 lane swap
+phy_chain_tx_lane_map_physical{101.0}=0x0123
+phy_chain_rx_lane_map_physical{101.0}=0x3210
+
+#wc26 lane swap
+phy_chain_tx_lane_map_physical{105.0}=0x2301
+phy_chain_rx_lane_map_physical{105.0}=0x1032
+
+#wc27 lane swap
+phy_chain_tx_lane_map_physical{109.0}=0x0123
+phy_chain_rx_lane_map_physical{109.0}=0x3210
+
+#wc28 lane swap
+phy_chain_tx_lane_map_physical{113.0}=0x2301
+phy_chain_rx_lane_map_physical{113.0}=0x2031
+
+#wc29 lane swap
+phy_chain_tx_lane_map_physical{117.0}=0x0123
+phy_chain_rx_lane_map_physical{117.0}=0x3210
+
+#wc30 lane swap
+phy_chain_tx_lane_map_physical{121.0}=0x2301
+phy_chain_rx_lane_map_physical{121.0}=0x1032
+
+#wc31 lane swap
+phy_chain_tx_lane_map_physical{125.0}=0x0123
+phy_chain_rx_lane_map_physical{125.0}=0x3210
+
+#MC lane swap
+phy_chain_tx_lane_map_physical{129.0}=0x3210
+phy_chain_rx_lane_map_physical{129.0}=0x3210
+
+
+#wc0 P/N flip
+phy_chain_tx_polarity_flip_physical{1.0}=0x0
+phy_chain_rx_polarity_flip_physical{1.0}=0x0
+phy_chain_tx_polarity_flip_physical{2.0}=0x0
+phy_chain_rx_polarity_flip_physical{2.0}=0x1
+phy_chain_tx_polarity_flip_physical{3.0}=0x0
+phy_chain_rx_polarity_flip_physical{3.0}=0x0
+phy_chain_tx_polarity_flip_physical{4.0}=0x1
+phy_chain_rx_polarity_flip_physical{4.0}=0x1
+
+#wc1 P/N flip
+phy_chain_tx_polarity_flip_physical{5.0}=0x0
+phy_chain_rx_polarity_flip_physical{5.0}=0x0
+phy_chain_tx_polarity_flip_physical{6.0}=0x1
+phy_chain_rx_polarity_flip_physical{6.0}=0x1
+phy_chain_tx_polarity_flip_physical{7.0}=0x0
+phy_chain_rx_polarity_flip_physical{7.0}=0x1
+phy_chain_tx_polarity_flip_physical{8.0}=0x1
+phy_chain_rx_polarity_flip_physical{8.0}=0x1
+
+#wc2 P/N flip
+phy_chain_tx_polarity_flip_physical{9.0}=0x0
+phy_chain_rx_polarity_flip_physical{9.0}=0x0
+phy_chain_tx_polarity_flip_physical{10.0}=0x0
+phy_chain_rx_polarity_flip_physical{10.0}=0x1
+phy_chain_tx_polarity_flip_physical{11.0}=0x0
+phy_chain_rx_polarity_flip_physical{11.0}=0x0
+phy_chain_tx_polarity_flip_physical{12.0}=0x1
+phy_chain_rx_polarity_flip_physical{12.0}=0x1
+
+#wc3 P/N flip
+phy_chain_tx_polarity_flip_physical{13.0}=0x0
+phy_chain_rx_polarity_flip_physical{13.0}=0x0
+phy_chain_tx_polarity_flip_physical{14.0}=0x1
+phy_chain_rx_polarity_flip_physical{14.0}=0x1
+phy_chain_tx_polarity_flip_physical{15.0}=0x0
+phy_chain_rx_polarity_flip_physical{15.0}=0x1
+phy_chain_tx_polarity_flip_physical{16.0}=0x0
+phy_chain_rx_polarity_flip_physical{16.0}=0x1
+
+#wc4 P/N flip
+phy_chain_tx_polarity_flip_physical{17.0}=0x0
+phy_chain_rx_polarity_flip_physical{17.0}=0x0
+phy_chain_tx_polarity_flip_physical{18.0}=0x1
+phy_chain_rx_polarity_flip_physical{18.0}=0x1
+phy_chain_tx_polarity_flip_physical{19.0}=0x0
+phy_chain_rx_polarity_flip_physical{19.0}=0x0
+phy_chain_tx_polarity_flip_physical{20.0}=0x1
+phy_chain_rx_polarity_flip_physical{20.0}=0x1
+
+#wc5 P/N flip
+phy_chain_tx_polarity_flip_physical{21.0}=0x0
+phy_chain_rx_polarity_flip_physical{21.0}=0x0
+phy_chain_tx_polarity_flip_physical{22.0}=0x1
+phy_chain_rx_polarity_flip_physical{22.0}=0x1
+phy_chain_tx_polarity_flip_physical{23.0}=0x0
+phy_chain_rx_polarity_flip_physical{23.0}=0x1
+phy_chain_tx_polarity_flip_physical{24.0}=0x1
+phy_chain_rx_polarity_flip_physical{24.0}=0x1
+
+#wc6 P/N flip
+phy_chain_tx_polarity_flip_physical{25.0}=0x0
+phy_chain_rx_polarity_flip_physical{25.0}=0x1
+phy_chain_tx_polarity_flip_physical{26.0}=0x1
+phy_chain_rx_polarity_flip_physical{26.0}=0x0
+phy_chain_tx_polarity_flip_physical{27.0}=0x0
+phy_chain_rx_polarity_flip_physical{27.0}=0x1
+phy_chain_tx_polarity_flip_physical{28.0}=0x1
+phy_chain_rx_polarity_flip_physical{28.0}=0x0
+
+#wc7 P/N flip
+phy_chain_tx_polarity_flip_physical{29.0}=0x1
+phy_chain_rx_polarity_flip_physical{29.0}=0x1
+phy_chain_tx_polarity_flip_physical{30.0}=0x1
+phy_chain_rx_polarity_flip_physical{30.0}=0x0
+phy_chain_tx_polarity_flip_physical{31.0}=0x0
+phy_chain_rx_polarity_flip_physical{31.0}=0x0
+phy_chain_tx_polarity_flip_physical{32.0}=0x0
+phy_chain_rx_polarity_flip_physical{32.0}=0x0
+
+#wc8 P/N flip
+phy_chain_tx_polarity_flip_physical{33.0}=0x1
+phy_chain_rx_polarity_flip_physical{33.0}=0x1
+phy_chain_tx_polarity_flip_physical{34.0}=0x0
+phy_chain_rx_polarity_flip_physical{34.0}=0x0
+phy_chain_tx_polarity_flip_physical{35.0}=0x0
+phy_chain_rx_polarity_flip_physical{35.0}=0x0
+phy_chain_tx_polarity_flip_physical{36.0}=0x1
+phy_chain_rx_polarity_flip_physical{36.0}=0x0
+
+#wc9 P/N flip
+phy_chain_tx_polarity_flip_physical{37.0}=0x1
+phy_chain_rx_polarity_flip_physical{37.0}=0x1
+phy_chain_tx_polarity_flip_physical{38.0}=0x1
+phy_chain_rx_polarity_flip_physical{38.0}=0x0
+phy_chain_tx_polarity_flip_physical{39.0}=0x1
+phy_chain_rx_polarity_flip_physical{39.0}=0x0
+phy_chain_tx_polarity_flip_physical{40.0}=0x0
+phy_chain_rx_polarity_flip_physical{40.0}=0x1
+
+#wc10 P/N flip
+phy_chain_tx_polarity_flip_physical{41.0}=0x1
+phy_chain_rx_polarity_flip_physical{41.0}=0x1
+phy_chain_tx_polarity_flip_physical{42.0}=0x0
+phy_chain_rx_polarity_flip_physical{42.0}=0x1
+phy_chain_tx_polarity_flip_physical{43.0}=0x1
+phy_chain_rx_polarity_flip_physical{43.0}=0x0
+phy_chain_tx_polarity_flip_physical{44.0}=0x1
+phy_chain_rx_polarity_flip_physical{44.0}=0x1
+
+#wc11 P/N flip
+phy_chain_tx_polarity_flip_physical{45.0}=0x1
+phy_chain_rx_polarity_flip_physical{45.0}=0x0
+phy_chain_tx_polarity_flip_physical{46.0}=0x1
+phy_chain_rx_polarity_flip_physical{46.0}=0x0
+phy_chain_tx_polarity_flip_physical{47.0}=0x1
+phy_chain_rx_polarity_flip_physical{47.0}=0x1
+phy_chain_tx_polarity_flip_physical{48.0}=0x0
+phy_chain_rx_polarity_flip_physical{48.0}=0x1
+
+#wc12 P/N flip
+phy_chain_tx_polarity_flip_physical{49.0}=0x1
+phy_chain_rx_polarity_flip_physical{49.0}=0x0
+phy_chain_tx_polarity_flip_physical{50.0}=0x1
+phy_chain_rx_polarity_flip_physical{50.0}=0x0
+phy_chain_tx_polarity_flip_physical{51.0}=0x0
+phy_chain_rx_polarity_flip_physical{51.0}=0x1
+phy_chain_tx_polarity_flip_physical{52.0}=0x1
+phy_chain_rx_polarity_flip_physical{52.0}=0x1
+
+#wc13 P/N flip
+phy_chain_tx_polarity_flip_physical{53.0}=0x0
+phy_chain_rx_polarity_flip_physical{53.0}=0x0
+phy_chain_tx_polarity_flip_physical{54.0}=0x1
+phy_chain_rx_polarity_flip_physical{54.0}=0x1
+phy_chain_tx_polarity_flip_physical{55.0}=0x0
+phy_chain_rx_polarity_flip_physical{55.0}=0x1
+phy_chain_tx_polarity_flip_physical{56.0}=0x1
+phy_chain_rx_polarity_flip_physical{56.0}=0x1
+
+#wc14 P/N flip
+phy_chain_tx_polarity_flip_physical{57.0}=0x1
+phy_chain_rx_polarity_flip_physical{57.0}=0x0
+phy_chain_tx_polarity_flip_physical{58.0}=0x1
+phy_chain_rx_polarity_flip_physical{58.0}=0x1
+phy_chain_tx_polarity_flip_physical{59.0}=0x0
+phy_chain_rx_polarity_flip_physical{59.0}=0x0
+phy_chain_tx_polarity_flip_physical{60.0}=0x1
+phy_chain_rx_polarity_flip_physical{60.0}=0x1
+
+#wc15 P/N flip
+phy_chain_tx_polarity_flip_physical{61.0}=0x0
+phy_chain_rx_polarity_flip_physical{61.0}=0x1
+phy_chain_tx_polarity_flip_physical{62.0}=0x1
+phy_chain_rx_polarity_flip_physical{62.0}=0x0
+phy_chain_tx_polarity_flip_physical{63.0}=0x0
+phy_chain_rx_polarity_flip_physical{63.0}=0x1
+phy_chain_tx_polarity_flip_physical{64.0}=0x0
+phy_chain_rx_polarity_flip_physical{64.0}=0x0
+
+#wc16 P/N flip
+phy_chain_tx_polarity_flip_physical{65.0}=0x1
+phy_chain_rx_polarity_flip_physical{65.0}=0x0
+phy_chain_tx_polarity_flip_physical{66.0}=0x0
+phy_chain_rx_polarity_flip_physical{66.0}=0x0
+phy_chain_tx_polarity_flip_physical{67.0}=0x1
+phy_chain_rx_polarity_flip_physical{67.0}=0x1
+phy_chain_tx_polarity_flip_physical{68.0}=0x0
+phy_chain_rx_polarity_flip_physical{68.0}=0x0
+
+#wc17 P/N flip
+phy_chain_tx_polarity_flip_physical{69.0}=0x1
+phy_chain_rx_polarity_flip_physical{69.0}=0x1
+phy_chain_tx_polarity_flip_physical{70.0}=0x0
+phy_chain_rx_polarity_flip_physical{70.0}=0x0
+phy_chain_tx_polarity_flip_physical{71.0}=0x1
+phy_chain_rx_polarity_flip_physical{71.0}=0x0
+phy_chain_tx_polarity_flip_physical{72.0}=0x0
+phy_chain_rx_polarity_flip_physical{72.0}=0x0
+
+#wc18 P/N flip
+phy_chain_tx_polarity_flip_physical{73.0}=0x0
+phy_chain_rx_polarity_flip_physical{73.0}=0x1
+phy_chain_tx_polarity_flip_physical{74.0}=0x1
+phy_chain_rx_polarity_flip_physical{74.0}=0x0
+phy_chain_tx_polarity_flip_physical{75.0}=0x0
+phy_chain_rx_polarity_flip_physical{75.0}=0x1
+phy_chain_tx_polarity_flip_physical{76.0}=0x1
+phy_chain_rx_polarity_flip_physical{76.0}=0x0
+
+#wc19 P/N flip
+phy_chain_tx_polarity_flip_physical{77.0}=0x0
+phy_chain_rx_polarity_flip_physical{77.0}=0x0
+phy_chain_tx_polarity_flip_physical{78.0}=0x0
+phy_chain_rx_polarity_flip_physical{78.0}=0x0
+phy_chain_tx_polarity_flip_physical{79.0}=0x1
+phy_chain_rx_polarity_flip_physical{79.0}=0x1
+phy_chain_tx_polarity_flip_physical{80.0}=0x1
+phy_chain_rx_polarity_flip_physical{80.0}=0x1
+
+#wc20 P/N flip
+phy_chain_tx_polarity_flip_physical{81.0}=0x0
+phy_chain_rx_polarity_flip_physical{81.0}=0x0
+phy_chain_tx_polarity_flip_physical{82.0}=0x0
+phy_chain_rx_polarity_flip_physical{82.0}=0x0
+phy_chain_tx_polarity_flip_physical{83.0}=0x1
+phy_chain_rx_polarity_flip_physical{83.0}=0x1
+phy_chain_tx_polarity_flip_physical{84.0}=0x1
+phy_chain_rx_polarity_flip_physical{84.0}=0x0
+
+#wc21 P/N flip
+phy_chain_tx_polarity_flip_physical{85.0}=0x1
+phy_chain_rx_polarity_flip_physical{85.0}=0x1
+phy_chain_tx_polarity_flip_physical{86.0}=0x0
+phy_chain_rx_polarity_flip_physical{86.0}=0x1
+phy_chain_tx_polarity_flip_physical{87.0}=0x1
+phy_chain_rx_polarity_flip_physical{87.0}=0x0
+phy_chain_tx_polarity_flip_physical{88.0}=0x0
+phy_chain_rx_polarity_flip_physical{88.0}=0x0
+
+#wc22 P/N flip
+phy_chain_tx_polarity_flip_physical{89.0}=0x1
+phy_chain_rx_polarity_flip_physical{89.0}=0x0
+phy_chain_tx_polarity_flip_physical{90.0}=0x0
+phy_chain_rx_polarity_flip_physical{90.0}=0x0
+phy_chain_tx_polarity_flip_physical{91.0}=0x1
+phy_chain_rx_polarity_flip_physical{91.0}=0x1
+phy_chain_tx_polarity_flip_physical{92.0}=0x0
+phy_chain_rx_polarity_flip_physical{92.0}=0x1
+
+#wc23 P/N flip
+phy_chain_tx_polarity_flip_physical{93.0}=0x1
+phy_chain_rx_polarity_flip_physical{93.0}=0x1
+phy_chain_tx_polarity_flip_physical{94.0}=0x1
+phy_chain_rx_polarity_flip_physical{94.0}=0x1
+phy_chain_tx_polarity_flip_physical{95.0}=0x0
+phy_chain_rx_polarity_flip_physical{95.0}=0x0
+phy_chain_tx_polarity_flip_physical{96.0}=0x0
+phy_chain_rx_polarity_flip_physical{96.0}=0x1
+
+#wc24 P/N flip
+phy_chain_tx_polarity_flip_physical{97.0}=0x1
+phy_chain_rx_polarity_flip_physical{97.0}=0x1
+phy_chain_tx_polarity_flip_physical{98.0}=0x0
+phy_chain_rx_polarity_flip_physical{98.0}=0x0
+phy_chain_tx_polarity_flip_physical{99.0}=0x1
+phy_chain_rx_polarity_flip_physical{99.0}=0x1
+phy_chain_tx_polarity_flip_physical{100.0}=0x0
+phy_chain_rx_polarity_flip_physical{100.0}=0x0
+
+#wc25 P/N flip
+phy_chain_tx_polarity_flip_physical{101.0}=0x1
+phy_chain_rx_polarity_flip_physical{101.0}=0x0
+phy_chain_tx_polarity_flip_physical{102.0}=0x0
+phy_chain_rx_polarity_flip_physical{102.0}=0x1
+phy_chain_tx_polarity_flip_physical{103.0}=0x1
+phy_chain_rx_polarity_flip_physical{103.0}=0x0
+phy_chain_tx_polarity_flip_physical{104.0}=0x0
+phy_chain_rx_polarity_flip_physical{104.0}=0x0
+
+#wc26 P/N flip
+phy_chain_tx_polarity_flip_physical{105.0}=0x1
+phy_chain_rx_polarity_flip_physical{105.0}=0x0
+phy_chain_tx_polarity_flip_physical{106.0}=0x0
+phy_chain_rx_polarity_flip_physical{106.0}=0x1
+phy_chain_tx_polarity_flip_physical{107.0}=0x1
+phy_chain_rx_polarity_flip_physical{107.0}=0x0
+phy_chain_tx_polarity_flip_physical{108.0}=0x0
+phy_chain_rx_polarity_flip_physical{108.0}=0x1
+
+#wc27 P/N flip
+phy_chain_tx_polarity_flip_physical{109.0}=0x1
+phy_chain_rx_polarity_flip_physical{109.0}=0x1
+phy_chain_tx_polarity_flip_physical{110.0}=0x0
+phy_chain_rx_polarity_flip_physical{110.0}=0x0
+phy_chain_tx_polarity_flip_physical{111.0}=0x1
+phy_chain_rx_polarity_flip_physical{111.0}=0x1
+phy_chain_tx_polarity_flip_physical{112.0}=0x0
+phy_chain_rx_polarity_flip_physical{112.0}=0x0
+
+#wc28 P/N flip
+phy_chain_tx_polarity_flip_physical{113.0}=0x1
+phy_chain_rx_polarity_flip_physical{113.0}=0x1
+phy_chain_tx_polarity_flip_physical{114.0}=0x0
+phy_chain_rx_polarity_flip_physical{114.0}=0x0
+phy_chain_tx_polarity_flip_physical{115.0}=0x1
+phy_chain_rx_polarity_flip_physical{115.0}=0x0
+phy_chain_tx_polarity_flip_physical{116.0}=0x0
+phy_chain_rx_polarity_flip_physical{116.0}=0x0
+
+#wc29 P/N flip
+phy_chain_tx_polarity_flip_physical{117.0}=0x1
+phy_chain_rx_polarity_flip_physical{117.0}=0x1
+phy_chain_tx_polarity_flip_physical{118.0}=0x0
+phy_chain_rx_polarity_flip_physical{118.0}=0x0
+phy_chain_tx_polarity_flip_physical{119.0}=0x1
+phy_chain_rx_polarity_flip_physical{119.0}=0x1
+phy_chain_tx_polarity_flip_physical{120.0}=0x0
+phy_chain_rx_polarity_flip_physical{120.0}=0x0
+
+#wc30 P/N flip
+phy_chain_tx_polarity_flip_physical{121.0}=0x1
+phy_chain_rx_polarity_flip_physical{121.0}=0x0
+phy_chain_tx_polarity_flip_physical{122.0}=0x0
+phy_chain_rx_polarity_flip_physical{122.0}=0x1
+phy_chain_tx_polarity_flip_physical{123.0}=0x1
+phy_chain_rx_polarity_flip_physical{123.0}=0x0
+phy_chain_tx_polarity_flip_physical{124.0}=0x0
+phy_chain_rx_polarity_flip_physical{124.0}=0x1
+
+#wc31 P/N flip
+phy_chain_tx_polarity_flip_physical{125.0}=0x1
+phy_chain_rx_polarity_flip_physical{125.0}=0x1
+phy_chain_tx_polarity_flip_physical{126.0}=0x0
+phy_chain_rx_polarity_flip_physical{126.0}=0x0
+phy_chain_tx_polarity_flip_physical{127.0}=0x1
+phy_chain_rx_polarity_flip_physical{127.0}=0x1
+phy_chain_tx_polarity_flip_physical{128.0}=0x0
+phy_chain_rx_polarity_flip_physical{128.0}=0x0
+
+#MC P/N flip
+phy_chain_tx_polarity_flip_physical{129.0}=0x0
+phy_chain_rx_polarity_flip_physical{129.0}=0x0
+phy_chain_tx_polarity_flip_physical{130.0}=0x0
+phy_chain_rx_polarity_flip_physical{130.0}=0x0
+phy_chain_tx_polarity_flip_physical{131.0}=0x0
+phy_chain_rx_polarity_flip_physical{131.0}=0x0
+phy_chain_tx_polarity_flip_physical{132.0}=0x0
+phy_chain_rx_polarity_flip_physical{132.0}=0x0
+
+dport_map_port_1=1
+dport_map_port_5=2
+dport_map_port_9=3
+dport_map_port_13=4
+dport_map_port_17=5
+dport_map_port_21=6
+dport_map_port_25=7
+dport_map_port_29=8
+dport_map_port_33=9
+dport_map_port_37=10
+dport_map_port_41=11
+dport_map_port_45=12
+dport_map_port_49=13
+dport_map_port_53=14
+dport_map_port_57=15
+dport_map_port_61=16
+dport_map_port_67=17
+dport_map_port_71=18
+dport_map_port_75=19
+dport_map_port_79=20
+dport_map_port_83=21
+dport_map_port_87=22
+dport_map_port_91=23
+dport_map_port_95=24
+dport_map_port_99=25
+dport_map_port_103=26
+dport_map_port_107=27
+dport_map_port_111=28
+dport_map_port_115=29
+dport_map_port_119=30
+dport_map_port_123=31
+dport_map_port_127=32
+dport_map_port_66=33
+dport_map_port_130=34
+
+# configuration for 100G optical module
+serdes_preemphasis_1=0x164608
+serdes_preemphasis_5=0x164608
+serdes_preemphasis_9=0x164608
+serdes_preemphasis_13=0x134908
+serdes_preemphasis_17=0x134908
+serdes_preemphasis_21=0x134908
+serdes_preemphasis_25=0x124a08
+serdes_preemphasis_29=0x124a08
+serdes_preemphasis_33=0x114b08
+serdes_preemphasis_37=0x114b08
+serdes_preemphasis_41=0x0f4d08
+serdes_preemphasis_45=0x0f4d08
+serdes_preemphasis_49=0x0d4f08
+serdes_preemphasis_53=0x0d4f08
+serdes_preemphasis_57=0x0d4f08
+serdes_preemphasis_61=0x0d4f08
+serdes_preemphasis_67=0x0d4f08
+serdes_preemphasis_71=0x0d4f08
+serdes_preemphasis_75=0x0d4f08
+serdes_preemphasis_79=0x0d4f08
+serdes_preemphasis_83=0x0d4f08
+serdes_preemphasis_87=0x0f4d08
+serdes_preemphasis_91=0x0f4d08
+serdes_preemphasis_95=0x0f4d08
+serdes_preemphasis_99=0x114b08
+serdes_preemphasis_103=0x114b08
+serdes_preemphasis_107=0x114b08
+serdes_preemphasis_111=0x124a08
+serdes_preemphasis_115=0x134908
+serdes_preemphasis_119=0x134908
+serdes_preemphasis_123=0x134908
+serdes_preemphasis_127=0x164608
+
+reglist_enable=1
+scache_filename=/tmp/scache
+schan_intr_enable=0
+stable_size=0x5500000
+tdma_timeout_usec=3000000
diff --git a/src/sonic-device-data/tests/permitted_list b/src/sonic-device-data/tests/permitted_list
index 370a920d2187..f0c46570a9b8 100644
--- a/src/sonic-device-data/tests/permitted_list
+++ b/src/sonic-device-data/tests/permitted_list
@@ -209,3 +209,10 @@ sai_preinit_cmd_file
sai_preinit_warmboot_cmd_file
sai_postinit_cmd_file
sai_postinit_warmboot_cmd_file
+help_cli_enable
+memlist_enable
+serdes_lane_config_dfe
+serdes_fec_enable
+pbmp_gport_stack
+reglist_enable
+scache_filename