diff --git a/cmake/LedService.cmake b/cmake/LedService.cmake index 1eea16b2be1bf..6c19a5be1750c 100644 --- a/cmake/LedService.cmake +++ b/cmake/LedService.cmake @@ -68,6 +68,7 @@ add_library(led_manager_lib fboss/led_service/M4052ACTMLedManager.cpp fboss/led_service/M4061nhpLedManager.cpp fboss/led_service/M4062nhpLedManager.cpp + fboss/led_service/M4340nhpLedManager.cpp fboss/led_service/Icetea800bcLedManager.cpp fboss/led_service/Meru800biaLedManager.cpp fboss/led_service/Meru800bfaLedManager.cpp @@ -97,6 +98,7 @@ target_link_libraries(led_manager_lib icecube800bc_bsp m4061nhp_bsp m4062nhp_bsp + m4340nhp_bsp icetea800bc_bsp meru800bia_bsp meru800bfa_bsp diff --git a/cmake/QsfpService.cmake b/cmake/QsfpService.cmake index c14a8b28cb70c..0d85d7171a64e 100644 --- a/cmake/QsfpService.cmake +++ b/cmake/QsfpService.cmake @@ -264,6 +264,16 @@ target_link_libraries(m4062nhp_bsp FBThrift::thriftcpp2 ) +add_library(m4340nhp_bsp + fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.cpp +) + +target_link_libraries(m4340nhp_bsp + bsp_platform_mapping + bsp_platform_mapping_cpp2 + FBThrift::thriftcpp2 +) + add_library(m4052actm_bsp fboss/lib/bsp/m4052actm/M4052ACTMBspPlatformMapping.cpp ) @@ -328,6 +338,7 @@ target_link_libraries(qsfp_bsp_core m4052actm_bsp m4061nhp_bsp m4062nhp_bsp + m4340nhp_bsp m5120csc_bsp device_mdio fpga_device diff --git a/fboss/configs/platforms/nexthop/m4340nhp/platform_stack/platform_manager.json b/fboss/configs/platforms/nexthop/m4340nhp/platform_stack/platform_manager.json new file mode 100644 index 0000000000000..00790c389b3ca --- /dev/null +++ b/fboss/configs/platforms/nexthop/m4340nhp/platform_stack/platform_manager.json @@ -0,0 +1,766 @@ +{ + "platformName": "M4340NHP", + "rootPmUnitName": "SCM", + "rootSlotType": "SCM_SLOT", + "slotTypeConfigs": { + "SCM_SLOT": { + "numOutgoingI2cBuses": 10, + "idpromConfig": { + "busName": "CPU_BUS@0", + "address": "0x50", + "kernelDeviceName": "24c64" + }, + "pmUnitName": "SCM" + }, + "SMB_SLOT": { + "numOutgoingI2cBuses": 2, + "idpromConfig": { + "busName": "INCOMING@1", + "address": "0x50", + "kernelDeviceName": "24c64" + }, + "pmUnitName": "SMB" + } + }, + "pmUnitConfigs": { + "SCM": { + "pluggedInSlotType": "SCM_SLOT", + "pciDeviceConfigs": [ + { + "pmUnitScopedName": "SCM_IOB", + "vendorId": "0x10ee", + "deviceId": "0x7016", + "subSystemVendorId": "0x20a4", + "subSystemDeviceId": "0x0001", + "i2cAdapterBlockConfigs": [ + { + "pmUnitScopedNamePrefix": "SCM_IOB_I2C", + "deviceName": "i2c_master", + "csrOffsetCalc": "0x40000 + ({adapterIndex} - {startAdapterIndex}) * 0x200", + "startAdapterIndex": 0, + "numAdapters": 10 + } + ], + "infoRomConfigs": [ + { + "pmUnitScopedName": "SCM_IOB_INFO_ROM", + "deviceName": "fpga_info_iob", + "csrOffset": "0x0000" + } + ] + } + ], + "i2cDeviceConfigs": [ + { + "busName": "SCM_IOB_I2C_3", + "address": "0x41", + "kernelDeviceName": "adm1266", + "pmUnitScopedName": "DPM" + }, + { + "busName": "SCM_IOB_I2C_4", + "address": "0x60", + "kernelDeviceName": "isl68221", + "pmUnitScopedName": "SVI_VR" + } + ], + "embeddedSensorConfigs": [ + { + "pmUnitScopedName": "CPU_TEMP", + "sysfsPath": "/sys/bus/pci/drivers/k10temp/0000:00:18.3" + }, + { + "pmUnitScopedName": "NVME_TEMP", + "sysfsPath": "/sys/class/nvme/nvme0" + }, + { + "pmUnitScopedName": "NIC_TEMP", + "sysfsPath": "/sys/bus/pci/devices/0000:02:00.0" + }, + { + "pmUnitScopedName": "DIMM1_TEMP", + "sysfsPath": "/run/nexthop_bsp/sensors/DIMM1_TEMP" + }, + { + "pmUnitScopedName": "DIMM2_TEMP", + "sysfsPath": "/run/nexthop_bsp/sensors/DIMM2_TEMP" + } + ], + "outgoingSlotConfigs": { + "SMB_SLOT@0": { + "slotType": "SMB_SLOT", + "outgoingI2cBusNames": [ + "SCM_IOB_I2C_5", + "SCM_IOB_I2C_6" + ] + } + } + }, + "SMB": { + "pluggedInSlotType": "SMB_SLOT", + "pciDeviceConfigs": [ + { + "pmUnitScopedName": "SMB_IOB", + "vendorId": "0x10ee", + "deviceId": "0x7024", + "subSystemVendorId": "0x10ee", + "subSystemDeviceId": "0x0007", + "miscCtrlConfigs": [ + { + "pmUnitScopedName": "SMB_IOB_PSU_PRESENT", + "deviceName": "psu_present", + "csrOffset": "0x2c" + } + ], + "i2cAdapterBlockConfigs": [ + { + "pmUnitScopedNamePrefix": "SMB_IOB_I2C", + "deviceName": "i2c_master", + "csrOffsetCalc": "0x40000 + ({adapterIndex} - {startAdapterIndex}) * 0x200", + "startAdapterIndex": 0, + "numAdapters": 7 + }, + { + "pmUnitScopedNamePrefix": "SMB_OSFP_I2C", + "deviceName": "i2c_master", + "csrOffsetCalc": "0x40E00 + ({adapterIndex} - {startAdapterIndex}) * 0x200", + "startAdapterIndex": 1, + "numAdapters": 64 + } + ], + "fanTachoPwmConfigs": [ + { + "fpgaIpBlockConfig": { + "pmUnitScopedName": "FAN_CTRL", + "deviceName": "fan_ctrl", + "csrOffset": "0x00a0" + }, + "numFans": 5 + } + ], + "ledCtrlConfigs": [ + { + "fpgaIpBlockConfig": { + "pmUnitScopedName": "SYSTEM_STATUS_LED", + "deviceName": "sys_led", + "csrOffset": "0x9c" + }, + "portNumber": -1, + "ledId": 1 + }, + { + "fpgaIpBlockConfig": { + "pmUnitScopedName": "FAN_STATUS_LED", + "deviceName": "fan_led", + "csrOffset": "0x9c" + }, + "portNumber": -1, + "ledId": 1 + }, + { + "fpgaIpBlockConfig": { + "pmUnitScopedName": "PSU_STATUS_LED", + "deviceName": "psu_led", + "csrOffset": "0x9c" + }, + "portNumber": -1, + "ledId": 1 + } + ], + "ledCtrlBlockConfigs": [ + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x60", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 1 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x64", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 9 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x68", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 17 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x6c", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 25 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x70", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 33 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x74", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 41 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x78", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 49 + }, + { + "pmUnitScopedNamePrefix": "SMB_PORT_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x7c", + "numPorts": 8, + "ledPerPort": 1, + "startPort": 57 + }, + { + "pmUnitScopedNamePrefix": "MGMT_QSFP_LED", + "deviceName": "port_led", + "csrOffsetCalc": "0x9c", + "numPorts": 2, + "ledPerPort": 1, + "lanesPerPort": 4, + "startPort": 65 + } + ], + "xcvrCtrlBlockConfigs": [ + { + "pmUnitScopedNamePrefix": "OSFP", + "deviceName": "xcvr_ctrl", + "csrOffsetCalc": "0x0030", + "startPort": 1, + "numPorts": 32 + }, + { + "pmUnitScopedNamePrefix": "OSFP", + "deviceName": "xcvr_ctrl", + "csrOffsetCalc": "0x0040", + "startPort": 33, + "numPorts": 32 + }, + { + "pmUnitScopedNamePrefix": "QSFP", + "deviceName": "xcvr_ctrl", + "csrOffsetCalc": "0x0", + "startPort": 65, + "numPorts": 2 + } + ], + "infoRomConfigs": [ + { + "pmUnitScopedName": "SMB_IOB_INFO_ROM", + "deviceName": "fpga_info_iob", + "csrOffset": "0x0000" + } + ] + } + ], + "i2cDeviceConfigs": [ + { + "busName": "INCOMING@0", + "address": "0x41", + "kernelDeviceName": "adm1266", + "pmUnitScopedName": "DPM_1" + }, + { + "busName": "INCOMING@0", + "address": "0x43", + "kernelDeviceName": "adm1266", + "pmUnitScopedName": "DPM_2" + }, + { + "busName": "INCOMING@0", + "address": "0x45", + "kernelDeviceName": "adm1266", + "pmUnitScopedName": "DPM_3" + }, + { + "busName": "SMB_IOB_I2C_0", + "address": "0x71", + "kernelDeviceName": "fpga-mux", + "pmUnitScopedName": "SMB_MUX_0", + "numOutgoingChannels": 4 + }, + { + "busName": "SMB_IOB_I2C_1", + "address": "0x71", + "kernelDeviceName": "fpga-mux", + "pmUnitScopedName": "SMB_MUX_1", + "numOutgoingChannels": 4 + }, + { + "busName": "SMB_IOB_I2C_2", + "address": "0x71", + "kernelDeviceName": "fpga-mux", + "pmUnitScopedName": "SMB_MUX_2", + "numOutgoingChannels": 3 + }, + { + "busName": "SMB_IOB_I2C_3", + "address": "0x71", + "kernelDeviceName": "fpga-mux", + "pmUnitScopedName": "SMB_MUX_3", + "numOutgoingChannels": 4 + }, + { + "busName": "SMB_MUX_1@3", + "address": "0x48", + "kernelDeviceName": "tmp464", + "pmUnitScopedName": "SWITCH_CARD_TEMP_SENSOR" + }, + { + "busName": "SMB_MUX_1@3", + "address": "0x49", + "kernelDeviceName": "tmp468", + "pmUnitScopedName": "SWITCH_CARD_TEMP_SENSOR_1" + }, + { + "busName": "SMB_MUX_1@3", + "address": "0x4a", + "kernelDeviceName": "tmp468", + "pmUnitScopedName": "SWITCH_CARD_TEMP_SENSOR_2" + }, + { + "busName": "SMB_MUX_1@3", + "address": "0x4b", + "kernelDeviceName": "tmp468", + "pmUnitScopedName": "SWITCH_CARD_TEMP_SENSOR_3" + }, + { + "busName": "SMB_MUX_1@1", + "address": "0x70", + "kernelDeviceName": "pmbus", + "pmUnitScopedName": "DCDC0" + }, + { + "busName": "SMB_MUX_1@1", + "address": "0x72", + "kernelDeviceName": "pmbus", + "pmUnitScopedName": "DCDC1" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x60", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC2" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x60", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC3" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x61", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC4" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x61", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC5" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x76", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC6" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x62", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC7" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x62", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC8" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x63", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC9" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x63", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC10" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x72", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC11" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x72", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC12" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x74", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC13" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x74", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC14" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x75", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC15" + }, + { + "busName": "SMB_MUX_1@0", + "address": "0x75", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC16" + }, + { + "busName": "SMB_MUX_3@0", + "address": "0x76", + "kernelDeviceName": "raa228228", + "pmUnitScopedName": "DCDC17" + }, + { + "busName": "SMB_MUX_0@3", + "address": "0x5a", + "kernelDeviceName": "pmbus", + "pmUnitScopedName": "PSU1" + }, + { + "busName": "SMB_MUX_0@3", + "address": "0x52", + "kernelDeviceName": "24c02", + "pmUnitScopedName": "PSU1_EEPROM", + "isEeprom": true + }, + { + "busName": "SMB_MUX_0@2", + "address": "0x5a", + "kernelDeviceName": "pmbus", + "pmUnitScopedName": "PSU2" + }, + { + "busName": "SMB_MUX_0@2", + "address": "0x52", + "kernelDeviceName": "24c02", + "pmUnitScopedName": "PSU2_EEPROM", + "isEeprom": true + }, + { + "busName": "SMB_MUX_0@1", + "address": "0x5a", + "kernelDeviceName": "pmbus", + "pmUnitScopedName": "PSU3" + }, + { + "busName": "SMB_MUX_0@1", + "address": "0x52", + "kernelDeviceName": "24c02", + "pmUnitScopedName": "PSU3_EEPROM", + "isEeprom": true + }, + { + "busName": "SMB_MUX_0@0", + "address": "0x5a", + "kernelDeviceName": "pmbus", + "pmUnitScopedName": "PSU4" + }, + { + "busName": "SMB_MUX_0@0", + "address": "0x52", + "kernelDeviceName": "24c02", + "pmUnitScopedName": "PSU4_EEPROM", + "isEeprom": true + }, + { + "busName": "SMB_MUX_2@0", + "address": "0x4c", + "kernelDeviceName": "lm90", + "pmUnitScopedName": "MGMT_TEMP_SENSOR" + }, + { + "busName": "SMB_IOB_I2C_0", + "address": "0x50", + "kernelDeviceName": "24c64", + "pmUnitScopedName": "PDC_EEPROM", + "isEeprom": true + }, + { + "busName": "SMB_IOB_I2C_4", + "address": "0x50", + "kernelDeviceName": "24c64", + "pmUnitScopedName": "FAN_EEPROM", + "isEeprom": true + }, + { + "busName": "SMB_IOB_I2C_4", + "address": "0x40", + "kernelDeviceName": "ina230", + "pmUnitScopedName": "FAN_POWER_MONITOR" + }, + { + "busName": "SMB_MUX_2@0", + "address": "0x50", + "kernelDeviceName": "24c64", + "pmUnitScopedName": "MGMT_EEPROM", + "isEeprom": true + } + ] + } + }, + "i2cAdaptersFromCpu": [ + "CPU_BUS@0" + ], + "symbolicLinkToDevicePath": { + "/run/devmap/eeproms/CHASSIS_EEPROM": "/SMB_SLOT@0/[IDPROM]", + "/run/devmap/eeproms/SCM_EEPROM": "/[IDPROM]", + "/run/devmap/sensors/DPM": "/[DPM]", + "/run/devmap/sensors/SVI_VR": "/[SVI_VR]", + "/run/devmap/sensors/DPM_1": "/SMB_SLOT@0/[DPM_1]", + "/run/devmap/sensors/DPM_2": "/SMB_SLOT@0/[DPM_2]", + "/run/devmap/sensors/DPM_3": "/SMB_SLOT@0/[DPM_3]", + "/run/devmap/sensors/DIMM1_TEMP": "/[DIMM1_TEMP]", + "/run/devmap/sensors/DIMM2_TEMP": "/[DIMM2_TEMP]", + "/run/devmap/sensors/CPU_TEMP": "/[CPU_TEMP]", + "/run/devmap/sensors/NVME_TEMP": "/[NVME_TEMP]", + "/run/devmap/sensors/NIC_TEMP": "/[NIC_TEMP]", + "/run/devmap/fpgas/SCM_IOB": "/[SCM_IOB]", + "/run/devmap/inforoms/SCM_IOB_INFO_ROM": "/[SCM_IOB_INFO_ROM]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_0": "/[SCM_IOB_I2C_0]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_1": "/[SCM_IOB_I2C_1]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_2": "/[SCM_IOB_I2C_2]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_3": "/[SCM_IOB_I2C_3]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_4": "/[SCM_IOB_I2C_4]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_5": "/[SCM_IOB_I2C_5]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_6": "/[SCM_IOB_I2C_6]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_7": "/[SCM_IOB_I2C_7]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_8": "/[SCM_IOB_I2C_8]", + "/run/devmap/i2c-busses/SCM_IOB_I2C_9": "/[SCM_IOB_I2C_9]", + "/run/devmap/fpgas/SMB_IOB": "/SMB_SLOT@0/[SMB_IOB]", + "/run/devmap/inforoms/SMB_IOB_INFO_ROM": "/SMB_SLOT@0/[SMB_IOB_INFO_ROM]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_0": "/SMB_SLOT@0/[SMB_IOB_I2C_0]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_1": "/SMB_SLOT@0/[SMB_IOB_I2C_1]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_2": "/SMB_SLOT@0/[SMB_IOB_I2C_2]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_3": "/SMB_SLOT@0/[SMB_IOB_I2C_3]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_4": "/SMB_SLOT@0/[SMB_IOB_I2C_4]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_5": "/SMB_SLOT@0/[SMB_IOB_I2C_5]", + "/run/devmap/i2c-busses/SMB_IOB_I2C_6": "/SMB_SLOT@0/[SMB_IOB_I2C_6]", + "/run/devmap/sensors/PSU_PRESENT": "/SMB_SLOT@0/[SMB_IOB_PSU_PRESENT]", + "/run/devmap/sensors/FAN_CTRL": "/SMB_SLOT@0/[FAN_CTRL]", + "/run/devmap/sensors/SWITCH_CARD_TEMP_SENSOR": "/SMB_SLOT@0/[SWITCH_CARD_TEMP_SENSOR]", + "/run/devmap/sensors/SWITCH_CARD_TEMP_SENSOR_1": "/SMB_SLOT@0/[SWITCH_CARD_TEMP_SENSOR_1]", + "/run/devmap/sensors/SWITCH_CARD_TEMP_SENSOR_2": "/SMB_SLOT@0/[SWITCH_CARD_TEMP_SENSOR_2]", + "/run/devmap/sensors/SWITCH_CARD_TEMP_SENSOR_3": "/SMB_SLOT@0/[SWITCH_CARD_TEMP_SENSOR_3]", + "/run/devmap/eeproms/PSU1_EEPROM": "/SMB_SLOT@0/[PSU1_EEPROM]", + "/run/devmap/eeproms/PSU2_EEPROM": "/SMB_SLOT@0/[PSU2_EEPROM]", + "/run/devmap/eeproms/PSU3_EEPROM": "/SMB_SLOT@0/[PSU3_EEPROM]", + "/run/devmap/eeproms/PSU4_EEPROM": "/SMB_SLOT@0/[PSU4_EEPROM]", + "/run/devmap/sensors/PSU1": "/SMB_SLOT@0/[PSU1]", + "/run/devmap/sensors/PSU2": "/SMB_SLOT@0/[PSU2]", + "/run/devmap/sensors/PSU3": "/SMB_SLOT@0/[PSU3]", + "/run/devmap/sensors/PSU4": "/SMB_SLOT@0/[PSU4]", + "/run/devmap/sensors/MGMT_TEMP_SENSOR": "/SMB_SLOT@0/[MGMT_TEMP_SENSOR]", + "/run/devmap/sensors/DCDC0": "/SMB_SLOT@0/[DCDC0]", + "/run/devmap/sensors/DCDC1": "/SMB_SLOT@0/[DCDC1]", + "/run/devmap/sensors/DCDC2": "/SMB_SLOT@0/[DCDC2]", + "/run/devmap/sensors/DCDC3": "/SMB_SLOT@0/[DCDC3]", + "/run/devmap/sensors/DCDC4": "/SMB_SLOT@0/[DCDC4]", + "/run/devmap/sensors/DCDC5": "/SMB_SLOT@0/[DCDC5]", + "/run/devmap/sensors/DCDC6": "/SMB_SLOT@0/[DCDC6]", + "/run/devmap/sensors/DCDC7": "/SMB_SLOT@0/[DCDC7]", + "/run/devmap/sensors/DCDC8": "/SMB_SLOT@0/[DCDC8]", + "/run/devmap/sensors/DCDC9": "/SMB_SLOT@0/[DCDC9]", + "/run/devmap/sensors/DCDC10": "/SMB_SLOT@0/[DCDC10]", + "/run/devmap/sensors/DCDC11": "/SMB_SLOT@0/[DCDC11]", + "/run/devmap/sensors/DCDC12": "/SMB_SLOT@0/[DCDC12]", + "/run/devmap/sensors/DCDC13": "/SMB_SLOT@0/[DCDC13]", + "/run/devmap/sensors/DCDC14": "/SMB_SLOT@0/[DCDC14]", + "/run/devmap/sensors/DCDC15": "/SMB_SLOT@0/[DCDC15]", + "/run/devmap/sensors/DCDC16": "/SMB_SLOT@0/[DCDC16]", + "/run/devmap/sensors/DCDC17": "/SMB_SLOT@0/[DCDC17]", + "/run/devmap/xcvrs/xcvr_io_1": "/SMB_SLOT@0/[SMB_OSFP_I2C_1]", + "/run/devmap/xcvrs/xcvr_ctrl_1": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_1]", + "/run/devmap/xcvrs/xcvr_io_2": "/SMB_SLOT@0/[SMB_OSFP_I2C_2]", + "/run/devmap/xcvrs/xcvr_ctrl_2": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_2]", + "/run/devmap/xcvrs/xcvr_io_3": "/SMB_SLOT@0/[SMB_OSFP_I2C_3]", + "/run/devmap/xcvrs/xcvr_ctrl_3": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_3]", + "/run/devmap/xcvrs/xcvr_io_4": "/SMB_SLOT@0/[SMB_OSFP_I2C_4]", + "/run/devmap/xcvrs/xcvr_ctrl_4": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_4]", + "/run/devmap/xcvrs/xcvr_io_5": "/SMB_SLOT@0/[SMB_OSFP_I2C_5]", + "/run/devmap/xcvrs/xcvr_ctrl_5": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_5]", + "/run/devmap/xcvrs/xcvr_io_6": "/SMB_SLOT@0/[SMB_OSFP_I2C_6]", + "/run/devmap/xcvrs/xcvr_ctrl_6": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_6]", + "/run/devmap/xcvrs/xcvr_io_7": "/SMB_SLOT@0/[SMB_OSFP_I2C_7]", + "/run/devmap/xcvrs/xcvr_ctrl_7": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_7]", + "/run/devmap/xcvrs/xcvr_io_8": "/SMB_SLOT@0/[SMB_OSFP_I2C_8]", + "/run/devmap/xcvrs/xcvr_ctrl_8": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_8]", + "/run/devmap/xcvrs/xcvr_io_9": "/SMB_SLOT@0/[SMB_OSFP_I2C_9]", + "/run/devmap/xcvrs/xcvr_ctrl_9": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_9]", + "/run/devmap/xcvrs/xcvr_io_10": "/SMB_SLOT@0/[SMB_OSFP_I2C_10]", + "/run/devmap/xcvrs/xcvr_ctrl_10": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_10]", + "/run/devmap/xcvrs/xcvr_io_11": "/SMB_SLOT@0/[SMB_OSFP_I2C_11]", + "/run/devmap/xcvrs/xcvr_ctrl_11": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_11]", + "/run/devmap/xcvrs/xcvr_io_12": "/SMB_SLOT@0/[SMB_OSFP_I2C_12]", + "/run/devmap/xcvrs/xcvr_ctrl_12": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_12]", + "/run/devmap/xcvrs/xcvr_io_13": "/SMB_SLOT@0/[SMB_OSFP_I2C_13]", + "/run/devmap/xcvrs/xcvr_ctrl_13": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_13]", + "/run/devmap/xcvrs/xcvr_io_14": "/SMB_SLOT@0/[SMB_OSFP_I2C_14]", + "/run/devmap/xcvrs/xcvr_ctrl_14": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_14]", + "/run/devmap/xcvrs/xcvr_io_15": "/SMB_SLOT@0/[SMB_OSFP_I2C_15]", + "/run/devmap/xcvrs/xcvr_ctrl_15": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_15]", + "/run/devmap/xcvrs/xcvr_io_16": "/SMB_SLOT@0/[SMB_OSFP_I2C_16]", + "/run/devmap/xcvrs/xcvr_ctrl_16": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_16]", + "/run/devmap/xcvrs/xcvr_io_17": "/SMB_SLOT@0/[SMB_OSFP_I2C_17]", + "/run/devmap/xcvrs/xcvr_ctrl_17": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_17]", + "/run/devmap/xcvrs/xcvr_io_18": "/SMB_SLOT@0/[SMB_OSFP_I2C_18]", + "/run/devmap/xcvrs/xcvr_ctrl_18": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_18]", + "/run/devmap/xcvrs/xcvr_io_19": "/SMB_SLOT@0/[SMB_OSFP_I2C_19]", + "/run/devmap/xcvrs/xcvr_ctrl_19": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_19]", + "/run/devmap/xcvrs/xcvr_io_20": "/SMB_SLOT@0/[SMB_OSFP_I2C_20]", + "/run/devmap/xcvrs/xcvr_ctrl_20": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_20]", + "/run/devmap/xcvrs/xcvr_io_21": "/SMB_SLOT@0/[SMB_OSFP_I2C_21]", + "/run/devmap/xcvrs/xcvr_ctrl_21": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_21]", + "/run/devmap/xcvrs/xcvr_io_22": "/SMB_SLOT@0/[SMB_OSFP_I2C_22]", + "/run/devmap/xcvrs/xcvr_ctrl_22": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_22]", + "/run/devmap/xcvrs/xcvr_io_23": "/SMB_SLOT@0/[SMB_OSFP_I2C_23]", + "/run/devmap/xcvrs/xcvr_ctrl_23": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_23]", + "/run/devmap/xcvrs/xcvr_io_24": "/SMB_SLOT@0/[SMB_OSFP_I2C_24]", + "/run/devmap/xcvrs/xcvr_ctrl_24": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_24]", + "/run/devmap/xcvrs/xcvr_io_25": "/SMB_SLOT@0/[SMB_OSFP_I2C_25]", + "/run/devmap/xcvrs/xcvr_ctrl_25": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_25]", + "/run/devmap/xcvrs/xcvr_io_26": "/SMB_SLOT@0/[SMB_OSFP_I2C_26]", + "/run/devmap/xcvrs/xcvr_ctrl_26": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_26]", + "/run/devmap/xcvrs/xcvr_io_27": "/SMB_SLOT@0/[SMB_OSFP_I2C_27]", + "/run/devmap/xcvrs/xcvr_ctrl_27": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_27]", + "/run/devmap/xcvrs/xcvr_io_28": "/SMB_SLOT@0/[SMB_OSFP_I2C_28]", + "/run/devmap/xcvrs/xcvr_ctrl_28": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_28]", + "/run/devmap/xcvrs/xcvr_io_29": "/SMB_SLOT@0/[SMB_OSFP_I2C_29]", + "/run/devmap/xcvrs/xcvr_ctrl_29": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_29]", + "/run/devmap/xcvrs/xcvr_io_30": "/SMB_SLOT@0/[SMB_OSFP_I2C_30]", + "/run/devmap/xcvrs/xcvr_ctrl_30": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_30]", + "/run/devmap/xcvrs/xcvr_io_31": "/SMB_SLOT@0/[SMB_OSFP_I2C_31]", + "/run/devmap/xcvrs/xcvr_ctrl_31": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_31]", + "/run/devmap/xcvrs/xcvr_io_32": "/SMB_SLOT@0/[SMB_OSFP_I2C_32]", + "/run/devmap/xcvrs/xcvr_ctrl_32": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_32]", + "/run/devmap/xcvrs/xcvr_io_33": "/SMB_SLOT@0/[SMB_OSFP_I2C_33]", + "/run/devmap/xcvrs/xcvr_ctrl_33": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_33]", + "/run/devmap/xcvrs/xcvr_io_34": "/SMB_SLOT@0/[SMB_OSFP_I2C_34]", + "/run/devmap/xcvrs/xcvr_ctrl_34": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_34]", + "/run/devmap/xcvrs/xcvr_io_35": "/SMB_SLOT@0/[SMB_OSFP_I2C_35]", + "/run/devmap/xcvrs/xcvr_ctrl_35": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_35]", + "/run/devmap/xcvrs/xcvr_io_36": "/SMB_SLOT@0/[SMB_OSFP_I2C_36]", + "/run/devmap/xcvrs/xcvr_ctrl_36": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_36]", + "/run/devmap/xcvrs/xcvr_io_37": "/SMB_SLOT@0/[SMB_OSFP_I2C_37]", + "/run/devmap/xcvrs/xcvr_ctrl_37": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_37]", + "/run/devmap/xcvrs/xcvr_io_38": "/SMB_SLOT@0/[SMB_OSFP_I2C_38]", + "/run/devmap/xcvrs/xcvr_ctrl_38": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_38]", + "/run/devmap/xcvrs/xcvr_io_39": "/SMB_SLOT@0/[SMB_OSFP_I2C_39]", + "/run/devmap/xcvrs/xcvr_ctrl_39": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_39]", + "/run/devmap/xcvrs/xcvr_io_40": "/SMB_SLOT@0/[SMB_OSFP_I2C_40]", + "/run/devmap/xcvrs/xcvr_ctrl_40": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_40]", + "/run/devmap/xcvrs/xcvr_io_41": "/SMB_SLOT@0/[SMB_OSFP_I2C_41]", + "/run/devmap/xcvrs/xcvr_ctrl_41": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_41]", + "/run/devmap/xcvrs/xcvr_io_42": "/SMB_SLOT@0/[SMB_OSFP_I2C_42]", + "/run/devmap/xcvrs/xcvr_ctrl_42": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_42]", + "/run/devmap/xcvrs/xcvr_io_43": "/SMB_SLOT@0/[SMB_OSFP_I2C_43]", + "/run/devmap/xcvrs/xcvr_ctrl_43": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_43]", + "/run/devmap/xcvrs/xcvr_io_44": "/SMB_SLOT@0/[SMB_OSFP_I2C_44]", + "/run/devmap/xcvrs/xcvr_ctrl_44": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_44]", + "/run/devmap/xcvrs/xcvr_io_45": "/SMB_SLOT@0/[SMB_OSFP_I2C_45]", + "/run/devmap/xcvrs/xcvr_ctrl_45": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_45]", + "/run/devmap/xcvrs/xcvr_io_46": "/SMB_SLOT@0/[SMB_OSFP_I2C_46]", + "/run/devmap/xcvrs/xcvr_ctrl_46": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_46]", + "/run/devmap/xcvrs/xcvr_io_47": "/SMB_SLOT@0/[SMB_OSFP_I2C_47]", + "/run/devmap/xcvrs/xcvr_ctrl_47": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_47]", + "/run/devmap/xcvrs/xcvr_io_48": "/SMB_SLOT@0/[SMB_OSFP_I2C_48]", + "/run/devmap/xcvrs/xcvr_ctrl_48": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_48]", + "/run/devmap/xcvrs/xcvr_io_49": "/SMB_SLOT@0/[SMB_OSFP_I2C_49]", + "/run/devmap/xcvrs/xcvr_ctrl_49": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_49]", + "/run/devmap/xcvrs/xcvr_io_50": "/SMB_SLOT@0/[SMB_OSFP_I2C_50]", + "/run/devmap/xcvrs/xcvr_ctrl_50": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_50]", + "/run/devmap/xcvrs/xcvr_io_51": "/SMB_SLOT@0/[SMB_OSFP_I2C_51]", + "/run/devmap/xcvrs/xcvr_ctrl_51": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_51]", + "/run/devmap/xcvrs/xcvr_io_52": "/SMB_SLOT@0/[SMB_OSFP_I2C_52]", + "/run/devmap/xcvrs/xcvr_ctrl_52": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_52]", + "/run/devmap/xcvrs/xcvr_io_53": "/SMB_SLOT@0/[SMB_OSFP_I2C_53]", + "/run/devmap/xcvrs/xcvr_ctrl_53": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_53]", + "/run/devmap/xcvrs/xcvr_io_54": "/SMB_SLOT@0/[SMB_OSFP_I2C_54]", + "/run/devmap/xcvrs/xcvr_ctrl_54": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_54]", + "/run/devmap/xcvrs/xcvr_io_55": "/SMB_SLOT@0/[SMB_OSFP_I2C_55]", + "/run/devmap/xcvrs/xcvr_ctrl_55": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_55]", + "/run/devmap/xcvrs/xcvr_io_56": "/SMB_SLOT@0/[SMB_OSFP_I2C_56]", + "/run/devmap/xcvrs/xcvr_ctrl_56": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_56]", + "/run/devmap/xcvrs/xcvr_io_57": "/SMB_SLOT@0/[SMB_OSFP_I2C_57]", + "/run/devmap/xcvrs/xcvr_ctrl_57": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_57]", + "/run/devmap/xcvrs/xcvr_io_58": "/SMB_SLOT@0/[SMB_OSFP_I2C_58]", + "/run/devmap/xcvrs/xcvr_ctrl_58": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_58]", + "/run/devmap/xcvrs/xcvr_io_59": "/SMB_SLOT@0/[SMB_OSFP_I2C_59]", + "/run/devmap/xcvrs/xcvr_ctrl_59": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_59]", + "/run/devmap/xcvrs/xcvr_io_60": "/SMB_SLOT@0/[SMB_OSFP_I2C_60]", + "/run/devmap/xcvrs/xcvr_ctrl_60": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_60]", + "/run/devmap/xcvrs/xcvr_io_61": "/SMB_SLOT@0/[SMB_OSFP_I2C_61]", + "/run/devmap/xcvrs/xcvr_ctrl_61": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_61]", + "/run/devmap/xcvrs/xcvr_io_62": "/SMB_SLOT@0/[SMB_OSFP_I2C_62]", + "/run/devmap/xcvrs/xcvr_ctrl_62": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_62]", + "/run/devmap/xcvrs/xcvr_io_63": "/SMB_SLOT@0/[SMB_OSFP_I2C_63]", + "/run/devmap/xcvrs/xcvr_ctrl_63": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_63]", + "/run/devmap/xcvrs/xcvr_io_64": "/SMB_SLOT@0/[SMB_OSFP_I2C_64]", + "/run/devmap/xcvrs/xcvr_ctrl_64": "/SMB_SLOT@0/[OSFP_XCVR_CTRL_PORT_64]", + "/run/devmap/xcvrs/xcvr_io_65": "/SMB_SLOT@0/[SMB_MUX_2@1]", + "/run/devmap/xcvrs/xcvr_ctrl_65": "/SMB_SLOT@0/[QSFP_XCVR_CTRL_PORT_65]", + "/run/devmap/xcvrs/xcvr_io_66": "/SMB_SLOT@0/[SMB_MUX_2@2]", + "/run/devmap/xcvrs/xcvr_ctrl_66": "/SMB_SLOT@0/[QSFP_XCVR_CTRL_PORT_66]", + "/run/devmap/eeproms/PDC_EEPROM": "/SMB_SLOT@0/[PDC_EEPROM]", + "/run/devmap/eeproms/FAN_EEPROM": "/SMB_SLOT@0/[FAN_EEPROM]", + "/run/devmap/eeproms/MGMT_EEPROM": "/SMB_SLOT@0/[MGMT_EEPROM]", + "/run/devmap/sensors/FAN_POWER_MONITOR": "/SMB_SLOT@0/[FAN_POWER_MONITOR]" + }, + "chassisEepromDevicePath": "/SMB_SLOT@0/[IDPROM]", + "numXcvrs": 66, + "bspKmodsRpmName": "nexthop_bsp_kmods", + "bspKmodsRpmVersion": "1.0.0-1", + "nonBspKmodsToLoad": [ + "i2c_i801", + "i2c_piix4", + "spd5118", + "i2c_mux", + "tmp464", + "adm1266", + "pmbus", + "lm90", + "isl68137" + ] +} diff --git a/fboss/led_service/BUCK b/fboss/led_service/BUCK index f05457192bcdb..c7450854495ca 100644 --- a/fboss/led_service/BUCK +++ b/fboss/led_service/BUCK @@ -60,6 +60,7 @@ cpp_library( "M4061clscLedManager.cpp", "M4061nhpLedManager.cpp", "M4062nhpLedManager.cpp", + "M4340nhpLedManager.cpp", "Meru800bfaLedManager.cpp", "Meru800biaLedManager.cpp", "Minipack3BTALedManager.cpp", @@ -99,6 +100,7 @@ cpp_library( "M4061clscLedManager.h", "M4061nhpLedManager.h", "M4062nhpLedManager.h", + "M4340nhpLedManager.h", "Meru800bfaLedManager.h", "Meru800biaLedManager.h", "Minipack3BTALedManager.h", @@ -153,6 +155,7 @@ cpp_library( "//fboss/lib/bsp/m4061clsc:m4061clsc_bsp", "//fboss/lib/bsp/m4061nhp:m4061nhp_bsp", "//fboss/lib/bsp/m4062nhp:m4062nhp_bsp", + "//fboss/lib/bsp/m4340nhp:m4340nhp_bsp", "//fboss/lib/bsp/meru800bfa:meru800bfa_bsp", "//fboss/lib/bsp/meru800bia:meru800bia_bsp", "//fboss/lib/bsp/minipack3bta:minipack3bta_bsp", diff --git a/fboss/led_service/LedManagerInit.cpp b/fboss/led_service/LedManagerInit.cpp index 8da1b5747d4e5..4c1bb17d51736 100644 --- a/fboss/led_service/LedManagerInit.cpp +++ b/fboss/led_service/LedManagerInit.cpp @@ -14,6 +14,7 @@ #include "fboss/led_service/M4061clscLedManager.h" #include "fboss/led_service/M4061nhpLedManager.h" #include "fboss/led_service/M4062nhpLedManager.h" +#include "fboss/led_service/M4340nhpLedManager.h" #include "fboss/led_service/Meru800bfaLedManager.h" #include "fboss/led_service/Meru800biaLedManager.h" #include "fboss/led_service/Minipack3BTALedManager.h" @@ -87,6 +88,8 @@ std::unique_ptr createLedManager() { return std::make_unique(); } else if (mode == PlatformType::PLATFORM_M4062NHP) { return std::make_unique(); + } else if (mode == PlatformType::PLATFORM_M4340NHP) { + return std::make_unique(); } else if (mode == PlatformType::PLATFORM_M4061CLSC) { return std::make_unique(); } else if (mode == PlatformType::PLATFORM_ICETEA800BC) { diff --git a/fboss/led_service/M4340nhpLedManager.cpp b/fboss/led_service/M4340nhpLedManager.cpp new file mode 100644 index 0000000000000..81a8298a64613 --- /dev/null +++ b/fboss/led_service/M4340nhpLedManager.cpp @@ -0,0 +1,13 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +#include "fboss/led_service/M4340nhpLedManager.h" +#include "fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h" + +namespace facebook::fboss { + +M4340nhpLedManager::M4340nhpLedManager() : BspLedManager() { + init(PlatformType::PLATFORM_M4340NHP); + XLOG(INFO) << "Created M4340nhp BSP LED Manager"; +} + +} // namespace facebook::fboss diff --git a/fboss/led_service/M4340nhpLedManager.h b/fboss/led_service/M4340nhpLedManager.h new file mode 100644 index 0000000000000..d3f99b29f1905 --- /dev/null +++ b/fboss/led_service/M4340nhpLedManager.h @@ -0,0 +1,21 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +#pragma once + +#include "fboss/led_service/BspLedManager.h" + +namespace facebook::fboss { + +class M4340nhpLedManager : public BspLedManager { + public: + M4340nhpLedManager(); + ~M4340nhpLedManager() override = default; + + // Forbidden copy and move constructors and assignment operators + M4340nhpLedManager(M4340nhpLedManager const&) = delete; + M4340nhpLedManager& operator=(M4340nhpLedManager const&) = delete; + M4340nhpLedManager(M4340nhpLedManager&&) = delete; + M4340nhpLedManager& operator=(M4340nhpLedManager&&) = delete; +}; + +} // namespace facebook::fboss diff --git a/fboss/lib/bsp/BUCK b/fboss/lib/bsp/BUCK index 2bf28f4f04f1a..c7ac71d5bffa4 100644 --- a/fboss/lib/bsp/BUCK +++ b/fboss/lib/bsp/BUCK @@ -123,6 +123,7 @@ cpp_library( "//fboss/lib/bsp/m4061clsc:m4061clsc_bsp", "//fboss/lib/bsp/m4061nhp:m4061nhp_bsp", "//fboss/lib/bsp/m4062nhp:m4062nhp_bsp", + "//fboss/lib/bsp/m4340nhp:m4340nhp_bsp", "//fboss/lib/bsp/m5120csc:m5120csc_bsp", "//fboss/lib/bsp/meru800bfa:meru800bfa_bsp", "//fboss/lib/bsp/meru800bia:meru800bia_bsp", diff --git a/fboss/lib/bsp/BspGenericSystemContainer.cpp b/fboss/lib/bsp/BspGenericSystemContainer.cpp index fe23739752ec2..8a1fea1b66790 100644 --- a/fboss/lib/bsp/BspGenericSystemContainer.cpp +++ b/fboss/lib/bsp/BspGenericSystemContainer.cpp @@ -12,6 +12,7 @@ #include "fboss/lib/bsp/m4061clsc/M4061clscBspPlatformMapping.h" #include "fboss/lib/bsp/m4061nhp/M4061nhpBspPlatformMapping.h" #include "fboss/lib/bsp/m4062nhp/M4062nhpBspPlatformMapping.h" +#include "fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h" #include "fboss/lib/bsp/m5120csc/M5120cscBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bfa/Meru800bfaBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bia/Meru800biaBspPlatformMapping.h" @@ -233,5 +234,17 @@ M5120cscSystemContainer::getInstance() { return _m5120cscSystemContainer.try_get(); } +using M4340nhpSystemContainer = + BspGenericSystemContainer; +folly::Singleton _m4340nhpSystemContainer; +template <> +std::shared_ptr +M4340nhpSystemContainer::getInstance() { + // Instance-form try_get() keeps the singleton referenced so the linker + // cannot drop its registration with the SingletonVault. + // NOLINTNEXTLINE(readability-static-accessed-through-instance) + return _m4340nhpSystemContainer.try_get(); +} + } // namespace fboss } // namespace facebook diff --git a/fboss/lib/bsp/m4340nhp/BUCK b/fboss/lib/bsp/m4340nhp/BUCK new file mode 100644 index 0000000000000..47fe086b7799d --- /dev/null +++ b/fboss/lib/bsp/m4340nhp/BUCK @@ -0,0 +1,17 @@ +load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library") + +oncall("fboss_optics_phy") + +cpp_library( + name = "m4340nhp_bsp", + srcs = [ + "M4340nhpBspPlatformMapping.cpp", + ], + headers = [ + "M4340nhpBspPlatformMapping.h", + ], + exported_deps = [ + "//fboss/lib/bsp:bsp_platform_mapping_lib", + "//thrift/lib/cpp2/protocol:protocol", + ], +) diff --git a/fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.cpp b/fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.cpp new file mode 100644 index 0000000000000..6fbff2ff65c43 --- /dev/null +++ b/fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.cpp @@ -0,0 +1,18 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +#include "fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h" + +#include + +namespace facebook::fboss { + +M4340nhpBspPlatformMapping::M4340nhpBspPlatformMapping() + : BspPlatformMapping("m4340nhp") {} + +M4340nhpBspPlatformMapping::M4340nhpBspPlatformMapping( + const std::string& platformMappingStr) + : BspPlatformMapping( + apache::thrift::SimpleJSONSerializer::deserialize< + BspPlatformMappingThrift>(platformMappingStr)) {} + +} // namespace facebook::fboss diff --git a/fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h b/fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h new file mode 100644 index 0000000000000..bc55bb88b51a8 --- /dev/null +++ b/fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h @@ -0,0 +1,15 @@ +// Copyright (c) Meta Platforms, Inc. and affiliates. + +#pragma once + +#include "fboss/lib/bsp/BspPlatformMapping.h" + +namespace facebook::fboss { + +class M4340nhpBspPlatformMapping : public BspPlatformMapping { + public: + M4340nhpBspPlatformMapping(); + explicit M4340nhpBspPlatformMapping(const std::string& platformMappingStr); +}; + +} // namespace facebook::fboss diff --git a/fboss/platform/config_lib/ConfigLibTest.cpp b/fboss/platform/config_lib/ConfigLibTest.cpp index 62bea2a6f7094..4d2cbe36dfb6c 100644 --- a/fboss/platform/config_lib/ConfigLibTest.cpp +++ b/fboss/platform/config_lib/ConfigLibTest.cpp @@ -20,6 +20,7 @@ const std::string kBlackwolf800banw = "blackwolf800banw"; const std::string kIcecube = "icecube"; const std::string kM4061nhp = "m4061nhp"; const std::string kM4062nhp = "m4062nhp"; +const std::string kM4340nhp = "m4340nhp"; const std::string kSample = "sample"; const std::string kWedge800cact = "wedge800cact"; const std::string kWedge800cnhp = "wedge800cnhp"; @@ -60,6 +61,7 @@ TEST(ConfigLibTest, Basic) { EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kMontblanc)); EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kM4061nhp)); EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kM4062nhp)); + EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kM4340nhp)); EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kMorgan800cc)); EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kJanga800bic)); EXPECT_NO_THROW(ConfigLib().getPlatformManagerConfig(kTahan800bc)); diff --git a/fboss/platform/platform_manager/platform_manager_validators.thrift b/fboss/platform/platform_manager/platform_manager_validators.thrift index ddd21c93fb0f4..ce8196a79e13c 100644 --- a/fboss/platform/platform_manager/platform_manager_validators.thrift +++ b/fboss/platform/platform_manager/platform_manager_validators.thrift @@ -97,6 +97,7 @@ const list PLATFORMS_WITH_IDPROM_CHASSIS_EEPROM = [ "JANGA800BIC", "TAHAN800BC", "M4062NHP", + "M4340NHP", ]; // List of platforms that are allowed to have logical EEPROMs. diff --git a/fboss/qsfp_service/platforms/wedge/WedgeManagerInit.cpp b/fboss/qsfp_service/platforms/wedge/WedgeManagerInit.cpp index 15d726e5603bc..0c3ba29f325cf 100644 --- a/fboss/qsfp_service/platforms/wedge/WedgeManagerInit.cpp +++ b/fboss/qsfp_service/platforms/wedge/WedgeManagerInit.cpp @@ -20,6 +20,7 @@ #include "fboss/lib/bsp/m4061clsc/M4061clscBspPlatformMapping.h" #include "fboss/lib/bsp/m4061nhp/M4061nhpBspPlatformMapping.h" #include "fboss/lib/bsp/m4062nhp/M4062nhpBspPlatformMapping.h" +#include "fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h" #include "fboss/lib/bsp/m5120csc/M5120cscBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bfa/Meru800bfaBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bia/Meru800biaBspPlatformMapping.h" @@ -138,6 +139,10 @@ std::unique_ptr createWedgeManager( return createBspWedgeManager< M4062nhpBspPlatformMapping, PlatformType::PLATFORM_M4062NHP>(platformMapping, qsfpServiceThreads); + case PlatformType::PLATFORM_M4340NHP: + return createBspWedgeManager< + M4340nhpBspPlatformMapping, + PlatformType::PLATFORM_M4340NHP>(platformMapping, qsfpServiceThreads); case PlatformType::PLATFORM_M5120CSC: return createBspWedgeManager< M5120cscBspPlatformMapping, diff --git a/fboss/qsfp_service/test/BUCK b/fboss/qsfp_service/test/BUCK index 6fa7bc533f9ab..9719863e8e481 100644 --- a/fboss/qsfp_service/test/BUCK +++ b/fboss/qsfp_service/test/BUCK @@ -110,6 +110,7 @@ cpp_unittest( "//fboss/lib/bsp/leh800bcls:leh800bcls_bsp", "//fboss/lib/bsp/m4061nhp:m4061nhp_bsp", "//fboss/lib/bsp/m4062nhp:m4062nhp_bsp", + "//fboss/lib/bsp/m4340nhp:m4340nhp_bsp", "//fboss/lib/bsp/meru800bfa:meru800bfa_bsp", "//fboss/lib/bsp/meru800bia:meru800bia_bsp", "//fboss/lib/bsp/minipack3bta:minipack3bta_bsp", diff --git a/fboss/qsfp_service/test/BspPlatformMapTest.cpp b/fboss/qsfp_service/test/BspPlatformMapTest.cpp index fa51636b02d57..ba970dbf2b5f7 100644 --- a/fboss/qsfp_service/test/BspPlatformMapTest.cpp +++ b/fboss/qsfp_service/test/BspPlatformMapTest.cpp @@ -8,6 +8,7 @@ #include "fboss/lib/bsp/leh800bcls/Leh800bclsBspPlatformMapping.h" #include "fboss/lib/bsp/m4061nhp/M4061nhpBspPlatformMapping.h" #include "fboss/lib/bsp/m4062nhp/M4062nhpBspPlatformMapping.h" +#include "fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bfa/Meru800bfaBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bia/Meru800biaBspPlatformMapping.h" #include "fboss/lib/bsp/minipack3bta/Minipack3BTABspPlatformMapping.h" @@ -93,6 +94,12 @@ TEST_F(BspPlatformMapTest, checkNumPimTransceivers) { EXPECT_TRUE(m4061nhpBspPlatformMap.hasTcvrMapping(65)); EXPECT_FALSE(m4061nhpBspPlatformMap.hasTcvrMapping(66)); EXPECT_EQ(m4061nhpBspPlatformMap.getLedId(65, 1), 65); + // Check M4340nhp + auto m4340nhpBspPlatformMap = M4340nhpBspPlatformMapping(); + EXPECT_EQ(m4340nhpBspPlatformMap.numPims(), 1); + EXPECT_EQ(m4340nhpBspPlatformMap.numTransceivers(), 66); + EXPECT_TRUE(m4340nhpBspPlatformMap.hasTcvrMapping(66)); + EXPECT_EQ(m4340nhpBspPlatformMap.getLedId(66, 1), 66); } } // namespace facebook::fboss diff --git a/fboss/util/BUCK b/fboss/util/BUCK index c527532ba7ce4..25cf38369d42c 100644 --- a/fboss/util/BUCK +++ b/fboss/util/BUCK @@ -93,6 +93,7 @@ cpp_library( "//fboss/lib/bsp/m4061clsc:m4061clsc_bsp", "//fboss/lib/bsp/m4061nhp:m4061nhp_bsp", "//fboss/lib/bsp/m4062nhp:m4062nhp_bsp", + "//fboss/lib/bsp/m4340nhp:m4340nhp_bsp", "//fboss/lib/bsp/meru800bfa:meru800bfa_bsp", "//fboss/lib/bsp/meru800bia:meru800bia_bsp", "//fboss/lib/bsp/minipack3bta:minipack3bta_bsp", diff --git a/fboss/util/wedge_qsfp_util.cpp b/fboss/util/wedge_qsfp_util.cpp index c33f0d23edd06..259ab2025c597 100644 --- a/fboss/util/wedge_qsfp_util.cpp +++ b/fboss/util/wedge_qsfp_util.cpp @@ -58,6 +58,7 @@ #include "fboss/lib/bsp/m4061clsc/M4061clscBspPlatformMapping.h" #include "fboss/lib/bsp/m4061nhp/M4061nhpBspPlatformMapping.h" #include "fboss/lib/bsp/m4062nhp/M4062nhpBspPlatformMapping.h" +#include "fboss/lib/bsp/m4340nhp/M4340nhpBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bfa/Meru800bfaBspPlatformMapping.h" #include "fboss/lib/bsp/meru800bia/Meru800biaBspPlatformMapping.h" #include "fboss/lib/bsp/minipack3bta/Minipack3BTABspPlatformMapping.h" @@ -4880,6 +4881,12 @@ std::pair, int> getTransceiverAPI() { .get(); auto ioBus = std::make_unique(systemContainer); return std::make_pair(std::move(ioBus), 0); + } else if (FLAGS_platform == "m4340nhp") { + auto systemContainer = + BspGenericSystemContainer::getInstance() + .get(); + auto ioBus = std::make_unique(systemContainer); + return std::make_pair(std::move(ioBus), 0); } else if (FLAGS_platform == "icetea800bc") { auto systemContainer = BspGenericSystemContainer< Icetea800bcBspPlatformMapping>::getInstance() @@ -4993,6 +5000,12 @@ std::pair, int> getTransceiverAPI() { .get(); auto ioBus = std::make_unique(systemContainer); return std::make_pair(std::move(ioBus), 0); + } else if (mode == PlatformType::PLATFORM_M4340NHP) { + auto systemContainer = + BspGenericSystemContainer::getInstance() + .get(); + auto ioBus = std::make_unique(systemContainer); + return std::make_pair(std::move(ioBus), 0); } else if (mode == PlatformType::PLATFORM_M4061CLSC) { auto systemContainer = BspGenericSystemContainer::getInstance() @@ -5121,6 +5134,8 @@ getTransceiverPlatformAPI(TransceiverI2CApi* i2cBus) { mode = PlatformType::PLATFORM_M4061NHP; } else if (FLAGS_platform == "m4062nhp") { mode = PlatformType::PLATFORM_M4062NHP; + } else if (FLAGS_platform == "m4340nhp") { + mode = PlatformType::PLATFORM_M4340NHP; } else if (FLAGS_platform == "icetea800bc") { mode = PlatformType::PLATFORM_ICETEA800BC; } else if (FLAGS_platform == "tahansb800bc") { @@ -5188,6 +5203,12 @@ getTransceiverPlatformAPI(TransceiverI2CApi* i2cBus) { .get(); return std::make_pair( std::make_unique(systemContainer), 0); + } else if (mode == PlatformType::PLATFORM_M4340NHP) { + auto systemContainer = + BspGenericSystemContainer::getInstance() + .get(); + return std::make_pair( + std::make_unique(systemContainer), 0); } else if (mode == PlatformType::PLATFORM_M4061CLSC) { auto systemContainer = BspGenericSystemContainer::getInstance()