From 1b657becc901b58939458d715faeacbb14282c55 Mon Sep 17 00:00:00 2001 From: Viktor Ekmark Date: Sun, 16 Jan 2022 07:41:28 +0100 Subject: [PATCH] [Celestica Seastone2] Build correct platform files (#9660) * fix workdir for seastone2 Signed-off-by: Viktor Ekmark * seastone2: Add I2C SFP definition for SFP1 Signed-off-by: Christian Svensson * [device/cel_seastone_2] sfputil logic for SFP1 Earlier logic resulted in the name of SFP1 being SFP33 which is not correct. The cannonical source is seastone2_fpga module and it calls it SFP1, so ensure the logic does as well. Signed-off-by: Christian Svensson * [device/cel_seastone_2] sysfs paths for SFP1 Various changes that plumbs the correct port presence and DOM decoding for the SFP1 port. Signed-off-by: Christian Svensson Co-authored-by: Christian Svensson --- .../plugins/sfputil.py | 16 +++--- .../sonic_platform_config/event.py | 11 +++-- .../sonic_platform_config/sfp.json | 49 ++++++++++++++++--- .../sonic-platform-modules-cel/debian/rules | 2 +- 4 files changed, 60 insertions(+), 18 deletions(-) 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 index 6f05527621..88c4d9a26e 100755 --- a/device/celestica/x86_64-cel_seastone_2-r0/plugins/sfputil.py +++ b/device/celestica/x86_64-cel_seastone_2-r0/plugins/sfputil.py @@ -47,16 +47,16 @@ class SfpUtil(SfpUtilBase): 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) + self._port_name = "SFP" + str(port_num - self.QSFP_PORT_END) 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 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 as offset 0x100 on optoe eeprom + return self._read_eeprom_devid(port_num, self.DOM_EEPROM_ADDR, 256) def __init__(self): # Override port_to_eeprom_mapping for class initialization diff --git a/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/event.py b/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/event.py index ed3b78cf7f..32073479a1 100644 --- a/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/event.py +++ b/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/event.py @@ -38,9 +38,14 @@ class SfpEvent: for index in range(self.num_sfp): port_num = index + 1 - port_name = "QSFP{}".format(port_num) - port_type = "qsfp" - sysfs_prs_file = "{}_modprs".format(port_type) + if port_num <= 32: + port_name = "QSFP{}".format(port_num) + port_type = "qsfp" + sysfs_prs_file = "{}_modprs".format(port_type) + else: + port_name = "SFP{}".format(port_num - 32) + port_type = "sfp" + sysfs_prs_file = "{}_modabs".format(port_type) sfp_info_obj[index] = {} sfp_info_obj[index]['intmask_sysfs'] = self.PATH_INTMASK_SYSFS.format( diff --git a/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/sfp.json b/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/sfp.json index d77e75e50e..d12f0c3ffc 100644 --- a/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/sfp.json +++ b/device/celestica/x86_64-cel_seastone_2-r0/sonic_platform_config/sfp.json @@ -1,5 +1,5 @@ { - "port_num": 32, + "port_num": 33, "eeprom_path": "/sys/bus/i2c/devices/i2c-{0}/{0}-0050/eeprom", "port_i2c_mapping": [ 2, @@ -33,12 +33,13 @@ 30, 31, 32, - 33 + 33, + 34 ], "get_presence": { "output_source": "sysfs_value", - "sysfs_path": "/sys/devices/platform/switchboard/SFF/{}/qsfp_modprs", - "argument": "$ref:_port_name", + "sysfs_path": "/sys/devices/platform/switchboard/SFF/{}", + "argument": "$ref:_presence_file", "output_translator": "False if '{}' == '1' else True" }, "get_lpmode": { @@ -101,6 +102,42 @@ "QSFP29", "QSFP30", "QSFP31", - "QSFP32" + "QSFP32", + "SFP1" + ], + "_presence_file": [ + "QSFP1/qsfp_modprs", + "QSFP2/qsfp_modprs", + "QSFP3/qsfp_modprs", + "QSFP4/qsfp_modprs", + "QSFP5/qsfp_modprs", + "QSFP6/qsfp_modprs", + "QSFP7/qsfp_modprs", + "QSFP8/qsfp_modprs", + "QSFP9/qsfp_modprs", + "QSFP10/qsfp_modprs", + "QSFP11/qsfp_modprs", + "QSFP12/qsfp_modprs", + "QSFP13/qsfp_modprs", + "QSFP14/qsfp_modprs", + "QSFP15/qsfp_modprs", + "QSFP16/qsfp_modprs", + "QSFP17/qsfp_modprs", + "QSFP18/qsfp_modprs", + "QSFP19/qsfp_modprs", + "QSFP20/qsfp_modprs", + "QSFP21/qsfp_modprs", + "QSFP22/qsfp_modprs", + "QSFP23/qsfp_modprs", + "QSFP24/qsfp_modprs", + "QSFP25/qsfp_modprs", + "QSFP26/qsfp_modprs", + "QSFP27/qsfp_modprs", + "QSFP28/qsfp_modprs", + "QSFP29/qsfp_modprs", + "QSFP30/qsfp_modprs", + "QSFP31/qsfp_modprs", + "QSFP32/qsfp_modprs", + "SFP1/sfp_modabs" ] -} \ No newline at end of file +} diff --git a/platform/broadcom/sonic-platform-modules-cel/debian/rules b/platform/broadcom/sonic-platform-modules-cel/debian/rules index 3a6ef1bfdb..97d383fcfa 100755 --- a/platform/broadcom/sonic-platform-modules-cel/debian/rules +++ b/platform/broadcom/sonic-platform-modules-cel/debian/rules @@ -14,7 +14,7 @@ override_dh_auto_build: (for mod in $(MODULE_DIRS); do \ make -C $(KERNEL_SRC)/build M=$(MOD_SRC_DIR)/$${mod}/modules; \ if [ $$mod = "seastone2" ]; then \ - cd services/platform_api; \ + cd $(MOD_SRC_DIR)/services/platform_api; \ python3 setup.py bdist_wheel -d $(MOD_SRC_DIR)/$${mod}/modules; \ continue; \ fi; \