From 199661c21637cc2db24184ae84ae4ec06c11b113 Mon Sep 17 00:00:00 2001
From: selva <94485862+SelvaSupermicro@users.noreply.github.com>
Date: Thu, 19 Jan 2023 09:17:51 -0800
Subject: [PATCH] [devices]: add support to Supermicro G3748 switches (#13420)
Why I did it
Enabled SONiC on Supermicro switch SSE G3748. This contains the code needed under "device" directory.
How I did it
As per the porting guide documentation posted in SONiC WiKi
How to verify it
Build SONiC with ARC=arm64 PLATFORM=marvell and download image from ONIE into Supermicro SSE G3748
---
.../arm64-supermicro_sse_g3748-r0/default_sku | 1 +
.../arm64-supermicro_sse_g3748-r0/pcie.yaml | 5 +
.../platform.json | 113 ++
.../platform_components.json | 10 +
.../platform_reboot | 11 +
.../plugins/eeprom.py | 16 +
.../plugins/led_control.py | 175 ++
.../plugins/psuutil.py | 32 +
.../plugins/sfputil.py | 117 ++
.../pmon_daemon_control.json | 4 +
.../sensors.conf | 13 +
.../sse_g3748/ASK-Board-ac5x-G3748.md5 | 1 +
.../sse_g3748/ASK-Board-ac5x-G3748.xml | 1607 +++++++++++++++++
.../sse_g3748/ASK-L1-AC5X-G3748.md5 | 1 +
.../sse_g3748/ASK-L1-AC5X-G3748.xml | 1219 +++++++++++++
.../sse_g3748/ASK-PP-AC5X-G3748.md5 | 1 +
.../sse_g3748/ASK-PP-AC5X-G3748.xml | 891 +++++++++
.../sse_g3748/SAI-AC5X-G3748.md5 | 1 +
.../sse_g3748/SAI-AC5X-G3748.xml | 315 ++++
.../sse_g3748/platform.ini | 1 +
.../sse_g3748/port_config.ini | 55 +
.../sse_g3748/profile.ini | 7 +
.../sse_g3748/sai.profile | 4 +
.../system_health_monitoring_config.json | 14 +
.../thermal_policy.json | 65 +
25 files changed, 4679 insertions(+)
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/default_sku
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/pcie.yaml
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/platform.json
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/platform_components.json
create mode 100755 device/supermicro/arm64-supermicro_sse_g3748-r0/platform_reboot
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/eeprom.py
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/led_control.py
create mode 100755 device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/psuutil.py
create mode 100755 device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/sfputil.py
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/pmon_daemon_control.json
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sensors.conf
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.md5
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.xml
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.md5
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.xml
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.md5
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.xml
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.md5
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.xml
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/platform.ini
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/port_config.ini
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/profile.ini
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/sai.profile
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/system_health_monitoring_config.json
create mode 100644 device/supermicro/arm64-supermicro_sse_g3748-r0/thermal_policy.json
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/default_sku b/device/supermicro/arm64-supermicro_sse_g3748-r0/default_sku
new file mode 100644
index 0000000000..3f6851869a
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/default_sku
@@ -0,0 +1 @@
+sse_g3748 t1
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/pcie.yaml b/device/supermicro/arm64-supermicro_sse_g3748-r0/pcie.yaml
new file mode 100644
index 0000000000..d24f451843
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/pcie.yaml
@@ -0,0 +1,5 @@
+- bus: '00'
+ dev: '00'
+ fn: '0'
+ id: '9821'
+ name: 'Non-VGA unclassified device: Marvell Technology Group Ltd. Device 9821'
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/platform.json b/device/supermicro/arm64-supermicro_sse_g3748-r0/platform.json
new file mode 100644
index 0000000000..d2bf2fdc34
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/platform.json
@@ -0,0 +1,113 @@
+{
+ "chassis": {
+ "name": "SSE-G3748",
+ "components": [
+ {
+ "name": "System-CPLD"
+ },
+ {
+ "name": "U-Boot"
+ }
+ ],
+ "fans": [
+ {
+ "name": "Fan1",
+ "status_led": {
+ "controllable": true,
+ "colors": ["red", "green"]
+ }
+ },
+ {
+ "name": "Fan2",
+ "status_led": {
+ "controllable": true,
+ "colors": ["red", "green"]
+ }
+ }
+ ],
+ "fan_drawers": [
+ {
+ "name": "drawer1",
+ "status_led": {
+ "controllable": true,
+ "colors": ["red", "green"]
+ },
+ "max_consumed_power": false,
+ "fans": [
+ {
+ "name": "Fan1"
+ },
+ {
+ "name": "Fan2"
+ }
+ ]
+ }
+ ],
+ "psus": [
+ {
+ "name": "PSU1",
+ "status_led": {
+ "controllable": false
+ },
+ "current": false,
+ "power": false,
+ "max_power": false,
+ "voltage_high_threshold": false,
+ "voltage_low_threshold": false,
+ "temperature": false
+ },
+ {
+ "name": "PSU2",
+ "status_led": {
+ "controllable": false
+ },
+ "current": false,
+ "power": false,
+ "max_power": false,
+ "voltage_high_threshold": false,
+ "voltage_low_threshold": false,
+ "temperature": false
+ }
+ ],
+ "thermals": [
+ {
+ "name": "FRONT",
+ "controllable": false,
+ "low-threshold": false,
+ "high-threshold": false,
+ "low-crit-threshold": false,
+ "high-crit-threshold": false
+ },
+ {
+ "name": "REAR",
+ "controllable": false,
+ "low-threshold": false,
+ "high-threshold": false,
+ "low-crit-threshold": false,
+ "high-crit-threshold": false
+ }
+ ],
+ "sfps": [
+ {
+ "name": "Ethernet48"
+ },
+ {
+ "name": "Ethernet49"
+ },
+ {
+ "name": "Ethernet50"
+ },
+ {
+ "name": "Ethernet51"
+ },
+ {
+ "name": "Ethernet52"
+ },
+ {
+ "name": "Ethernet53"
+ }
+ ]
+ },
+ "interfaces": {}
+}
+
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/platform_components.json b/device/supermicro/arm64-supermicro_sse_g3748-r0/platform_components.json
new file mode 100644
index 0000000000..f515341b3d
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/platform_components.json
@@ -0,0 +1,10 @@
+{
+ "chassis": {
+ "SSE-G3748": {
+ "component": {
+ "U-Boot": { },
+ "System-CPLD": { }
+ }
+ }
+ }
+}
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/platform_reboot b/device/supermicro/arm64-supermicro_sse_g3748-r0/platform_reboot
new file mode 100755
index 0000000000..a95459054c
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/platform_reboot
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+function SafePwrCycle() {
+ sync ; sync
+ umount -fa > /dev/null 2&>1
+
+ # Write CPLD register to initiate cold reboot
+ sudo i2cset -f -y 0 0x66 0x02 0x80
+}
+
+SafePwrCycle
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/eeprom.py b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/eeprom.py
new file mode 100644
index 0000000000..b8d18f7ee9
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/eeprom.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+try:
+ from sonic_eeprom import eeprom_tlvinfo
+except ImportError as 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 = "/etc/sonic/eeprom"
+ self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0054/eeprom"
+ if not os.path.exists(self.eeprom_path):
+ os.system("echo 24c02 0x54 > /sys/class/i2c-adapter/i2c-0/new_device")
+ super(board, self).__init__(self.eeprom_path, 0, '', True)
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/led_control.py b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/led_control.py
new file mode 100644
index 0000000000..5010cd0463
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/led_control.py
@@ -0,0 +1,175 @@
+#
+# led_control.py
+#
+# Platform-specific LED control functionality for SONiC
+#
+
+try:
+ from sonic_led.led_control_base import LedControlBase
+ import os
+ import time
+ import syslog
+ import sonic_platform.platform
+ import sonic_platform.chassis
+except ImportError as e:
+ raise ImportError(str(e) + " - required module not found")
+
+smbus_present = 1
+
+try:
+ import smbus
+except ImportError as e:
+ smbus_present = 0
+
+
+def DBG_PRINT(str):
+ syslog.openlog("sse-g3748-led")
+ syslog.syslog(syslog.LOG_INFO, str)
+ syslog.closelog()
+
+
+class LedControl(LedControlBase):
+ """Platform specific LED control class"""
+ SONIC_PORT_NAME_PREFIX = "Ethernet"
+
+ # Constructor
+ def __init__(self):
+ self.chassis = sonic_platform.platform.Platform().get_chassis()
+ self._initDefaultConfig()
+
+ def _initDefaultConfig(self):
+ # The fan tray leds and system led managed by new chassis class API
+ # leaving only a couple other front panel leds to be done old style
+ DBG_PRINT("starting system leds")
+ self._initSystemLed()
+ DBG_PRINT(" led done")
+
+ def _set_i2c_register(self, reg_file, value):
+ # On successful write, the value read will be written on
+ # reg_name and on failure returns 'ERR'
+ rv = 'ERR'
+
+ if (not os.path.isfile(reg_file)):
+ return rv
+ try:
+ with open(reg_file, 'w') as fd:
+ rv = fd.write(str(value))
+ except Exception as e:
+ rv = 'ERR'
+
+ return rv
+
+ def _initSystemLed(self):
+ # Front Panel System LEDs setting
+ oldfan = 0xf
+ oldpsu0 = 0xf
+ oldpsu1 = 0xf
+
+ # Write sys led
+ if smbus_present == 0:
+ DBG_PRINT(" PMON LED SET ERROR -> smbus present = 0 ")
+ else:
+ # System LED is controlled by CPLD (i2c 0x66) register 0x11 bits:3-0
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x11
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ # write System LED Green
+ register = register & 0xFC | 0x01
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ DBG_PRINT(" System LED set O.K. ")
+
+ while True:
+ # Front Panel FAN Panel LED setting in CPLD (i2c 0x66) register 0x11 bits:7-4
+ if (self.chassis.get_fan(0).get_status() == self.chassis.get_fan(1).get_status() == True):
+ if oldfan != 0x1:
+ # Set Front Panel FAN LED to green
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x11
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ register = register & 0xCF | 0x20
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ oldfan = 0x1
+ DBG_PRINT(" Front panel LED FAN set green")
+ else:
+ if oldfan != 0x0:
+ # Set Front Panel FAN LED to red
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x11
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ register = register & 0xCF | 0x10
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ oldfan = 0x0
+ DBG_PRINT(" Front panel LED FAN set red")
+
+ # Front Panel PSU Panel LED setting in CPLD (i2c 0x66) register 0x12
+ # PSU0 -- bits: 1..0 PSU1 -- bits: 3..2
+ if (self.chassis.get_psu(0).get_status() == True):
+ if oldpsu0 != 0x1:
+ # Set PSU0 LED to green
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x12
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ register = register & 0xFC | 0x02
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ oldpsu0 = 0x1
+ DBG_PRINT(" Front panel LED PSU0 set green")
+ else:
+ if oldpsu0 != 0x0:
+ # Set PSU0 LED to red
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x12
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ register = register & 0xFC | 0x01
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ oldpsu0 = 0x0
+ DBG_PRINT(" Front panel LED PSU0 set red")
+
+ if (self.chassis.get_psu(1).get_status() == True):
+ if oldpsu1 != 0x1:
+ # Set PSU1 LED to green
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x12
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ register = register & 0xF3 | 0x08
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ oldpsu1 = 0x1
+ DBG_PRINT(" Front panel LED PSU1 set green")
+ else:
+ if oldpsu1 != 0x0:
+ # Set PSU1 LED to red
+ bus = smbus.SMBus(0)
+ DEVICE_ADDRESS = 0x66
+ DEVICEREG = 0x12
+ register = bus.read_byte_data(DEVICE_ADDRESS, DEVICEREG)
+ register = register & 0xF3 | 0x04
+ bus.write_byte_data(DEVICE_ADDRESS, DEVICEREG, register)
+ oldpsu1 = 0x0
+ DBG_PRINT(" Front panel LED PSU1 set red")
+
+ time.sleep(6)
+
+ # Helper method to map SONiC port name to index
+ def _port_name_to_index(self, port_name):
+ # Strip "Ethernet" off port name
+ if not port_name.startswith(self.SONIC_PORT_NAME_PREFIX):
+ return -1
+
+ port_idx = int(port_name[len(self.SONIC_PORT_NAME_PREFIX):])
+ return port_idx
+
+ def _port_state_to_mode(self, port_idx, state):
+ DBG_PRINT("_port_state_to_mode")
+
+ def _port_led_mode_update(self, port_idx, ledMode):
+ DBG_PRINT("_port_led_mode_update")
+
+ # called when port states change- implementation of port_link_state_change() method if needed
+ def port_link_state_change(self, portname, state):
+ # DBG_PRINT("port_link_state_change ")
+ return
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/psuutil.py b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/psuutil.py
new file mode 100755
index 0000000000..513b3ae408
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/psuutil.py
@@ -0,0 +1,32 @@
+try:
+ import sonic_platform.platform
+ import sonic_platform.chassis
+ 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):
+ PsuBase.__init__(self)
+ self.chassis = sonic_platform.platform.Platform().get_chassis()
+
+ def get_num_psus(self):
+ MAX_PSUS = 2
+ return MAX_PSUS
+
+ def get_psu_status(self, index):
+ # print " psuUtil redirect to PMON 2.0 "
+ if self.chassis is not None:
+ return self.chassis.get_psu(index-1).get_status()
+ else:
+ return False
+
+ def get_psu_presence(self, index):
+ # print " psuUtil redirect to PMON 2.0 "
+ if self.chassis is not None:
+ return self.chassis.get_psu(index-1).get_presence()
+ else:
+ return False
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/sfputil.py b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/sfputil.py
new file mode 100755
index 0000000000..58bdf3a476
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/plugins/sfputil.py
@@ -0,0 +1,117 @@
+try:
+ import glob
+ import sonic_platform.platform
+ import sonic_platform.chassis
+ from sonic_sfp.sfputilbase import SfpUtilBase
+except ImportError as e:
+ raise ImportError(str(e) + "- required module not found")
+
+
+class SfpUtil(SfpUtilBase):
+ """Platform specific sfputil class"""
+
+ _port_start = 49
+ _port_end = 54
+ ports_in_block = 4
+
+ _port_to_eeprom_mapping = {}
+ port_to_i2c_mapping = {
+ 49: 2,
+ 50: 3,
+ 51: 4,
+ 52: 5,
+ 53: 6,
+ 54: 7
+ }
+ _changed_ports = [0, 0, 0, 0]
+
+ @property
+ def port_start(self):
+ return self._port_start
+
+ @property
+ def port_end(self):
+ return self._port_end
+
+ @property
+ def qsfp_ports(self):
+ return list(range(0, 0))
+
+ @property
+ def port_to_eeprom_mapping(self):
+ return self._port_to_eeprom_mapping
+
+ def __init__(self):
+ # Mux Ordering
+ mux_dev = sorted(glob.glob("/sys/class/i2c-adapter/i2c-1/i2c-[2-7]"))
+ eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom"
+ y = 0
+ self.presence = {}
+ for x in range(self.port_start, self.port_end + 1):
+ mux_dev_num = mux_dev[y]
+ self.port_to_i2c_mapping[x] = mux_dev_num[-1]
+ y = y + 1
+ port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x])
+ self.port_to_eeprom_mapping[x] = port_eeprom_path
+ self._port_to_eeprom_mapping[x] = port_eeprom_path
+ self.presence[x] = False;
+
+ SfpUtilBase.__init__(self)
+
+ self.chassis = sonic_platform.platform.Platform().get_chassis()
+
+ def reset(self, port_num):
+ # print " SfpUtil(SfpUtilBase) re-directed to chassis PMON 2.0 "
+ if self.chassis is not None:
+ return self.chassis.get_sfp(port_num).reset()
+ else:
+ return False
+
+ def set_low_power_mode(self, port_nuM, lpmode):
+ # print " SfpUtil(SfpUtilBase) targeted for deprecation "
+ return False
+
+ def get_low_power_mode(self, port_num):
+ # print " SfpUtil(SfpUtilBase) targeted for deprecation "
+ return False
+
+ def get_presence(self, port_num):
+ # print " SfpUtil(SfpUtilBase) re-directed to chassis PMON 2.0 "
+ if self.chassis is not None:
+ return self.chassis.get_sfp(port_num).get_presence()
+ else:
+ return False
+
+ def get_transceiver_change_event(self, timeout):
+ # print " SfpUtil(SfpUtilBase) targeted for deprecation "
+#
+# raise NotImplementedError
+
+ now = time.time()
+ port_dict = {}
+
+ if timeout < 1000:
+ timeout = 1000
+ timeout = (timeout) / float(1000) # Convert to secs
+
+ if now < (self.data['last'] + timeout) and self.data['valid']:
+ return True, {}
+
+ for x in range(self.port_start, self.port_end + 1):
+ presence = self.get_presence(x)
+ if presence != self.presence[x]:
+ self.presence[x] = presence
+ # index in port_config.ini
+ if presence:
+ port_dict[x] = SFP_STATUS_INSERTED
+ else:
+ port_dict[x] = SFP_STATUS_REMOVED
+
+ if bool(port_dict):
+ self.data['last'] = now
+ self.data['valid'] = 1
+ return True, port_dict
+ else:
+ time.sleep(0.5)
+ return True, {}
+
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/pmon_daemon_control.json b/device/supermicro/arm64-supermicro_sse_g3748-r0/pmon_daemon_control.json
new file mode 100644
index 0000000000..f2a407daaf
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/pmon_daemon_control.json
@@ -0,0 +1,4 @@
+{
+ "skip_ledd": false
+}
+
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sensors.conf b/device/supermicro/arm64-supermicro_sse_g3748-r0/sensors.conf
new file mode 100644
index 0000000000..38a92857f1
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sensors.conf
@@ -0,0 +1,13 @@
+chip "lm75a-i2c-*-48"
+ label temp1 "Board temp sensor 1"
+ set temp1_max 65
+ set temp1_crit 75
+
+chip "lm75a-i2c-*-49"
+ label temp1 "Board temp sensor 2"
+ set temp2_max 65
+ set temp2_crit 75
+
+chip "armada_thermal-*"
+ ignore temp1
+
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.md5 b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.md5
new file mode 100644
index 0000000000..ad85b28162
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.md5
@@ -0,0 +1 @@
+a9434f801bdf89ef55e49be4ae288046
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.xml b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.xml
new file mode 100644
index 0000000000..a7bf814dc9
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-Board-ac5x-G3748.xml
@@ -0,0 +1,1607 @@
+
+
+
+
+
+ std-string
+ string
+ standard string.
+ 1
+ 100
+
+
+ board-callback-type
+ enumeration
+ Specifies os/ext drv callback types.
+
+ linux-static
+ Linux Static
+ 0
+
+
+ linux-shared
+ Linux Shared Lib mode
+ 1
+
+
+ external
+ External Os
+ 3
+
+
+ freeBsd
+ Free BSD
+ 4
+
+
+
+ board-pp-map-type
+ enumeration
+ Specifies pci info types.
+
+ fixed
+ Fixed
+ 0
+
+
+ autoscan
+ Auto scan
+ 1
+
+
+
+ board-pp-interface-channel-type
+ enumeration
+ Specifies interface tunnel.
+
+ pci
+ PCI
+ 0
+
+
+ smi
+ SMI
+ 1
+
+
+ pex
+ PEX
+ 3
+
+
+ pex_eagle
+ PEX EAGLE
+ 5
+
+
+ pex_falcon_z
+ PEX FALCON Z
+ 6
+
+
+
+ device-id-type
+ uint32
+ Device ID 0..1023
+ 0
+ 1023
+
+
+ port-mapping-type
+ enumeration
+ Specifies port map type.
+
+ ethernet_mac
+ ETHERNET_MAC
+ 0
+
+
+ cpu_sdma
+ CPU_SDMA
+ 1
+
+
+
+ interface-num-type
+ uint32
+ Interface number
+ 0
+ 1023
+
+
+ txq-port-number-type
+ uint32
+ 0 - 8 queues are configured per port (legacy mode),
+1...16 - the number of queues configured per port
+ SIP 5 : Bobcat2,BobK:0..71 ;Bobcat3: 0..576 ;Aldrin2:0..99
+ 0
+ 576
+
+
+ phy-smi-interface-type
+ uint32
+ Phy SMI interface type.
+ 0
+ 3
+
+
+ phy-xsmi-interface-type
+ uint32
+ Phy XSMI interface type.
+ 0
+ 15
+
+
+ phy-type
+ enumeration
+ Specifies the PHY Part Identifier.
+
+ NA
+ No Phy
+ 0
+
+
+ alaska-88E1543
+ Specifies PHY identifier 88E1543, used for Combo ports.
+ 1
+
+
+ alaska-88E1545
+ Specifies PHY identifier 88E1545, used for Copper GE with MAC on PHY support.
+ 2
+
+
+ alaska-88E1680
+ Specifies PHY identifier 88E1680, used for Copper with speeds of 10M/100M/1G.
+ 3
+
+
+ alaska-88E151X
+ Specifies PHY identifier 88E151X, used for Copper (HW supports combo and fiber).
+ 4
+
+
+ alaska-88E3140
+ Specifies PHY identifier 88E3140, used for Copper with speeds of 100M/1G/10G. Uses with FW SolarFlare next generation.
+ 5
+
+
+ alaska-88E3240
+ Specifies PHY identifier 88E3240, used for Copper with speeds of 100M/1G/10G. Uses with FW, SolarFlare next generation.
+ 6
+
+
+ alaska-88E3680
+ Specifies PHY identifier 88E3680, used for Octal Copper 100M.
+ 7
+
+
+ alaska-88E3220
+ Specifies PHY identifier 88E3220, used for Combo port with speeds of 100M/1G/10G. Uses FW, SolarFlare next generation.
+ 8
+
+
+ alaska-88E1680L
+ Specifies PHY identifier 88E1680L, used for Copper with speeds of 10M/100M/1G.
+ 9
+
+
+ alaska-88E33X0
+ Specifies PHY identifier 88E33X0, used for MGIG Combo.
+ 10
+
+
+ alaska-88E1548
+ Specifies PHY identifier 88E1548, used for Fiber GE.
+ 11
+
+
+ alaska-88E20X0
+ Specifies PHY identifier 88E20X0, used for Copper with speeds of 10M/100M/1G/2.5G/5G.
+ 12
+
+
+ alaska-88E1512
+ Specifies PHY identifier 88E1512, used for Copper with speeds of 10M/100M/1G.
+ 13
+
+
+ alaska-88E2180
+ Specifies PHY identifier 88E2180, used for Copper with speeds of 10M/100M/1G/2.5G/5G.
+ 14
+
+
+ alaska-88E1780
+ Specifies PHY identifier 88E1780, Integrated Octal 10/100/1000 Mbps Energy Efficient Ethernet Transceiver
+ 15
+
+
+ alaska-88E2540
+ Specifies PHY identifier 88E2540, 4 ports 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver with IEEE 1588v2 PTP Support
+ 16
+
+
+ alaska-88E2580
+ Specifies PHY identifier 88E12580, Octal 10/100/1000/2.5G/5GBASE-T Ethernet Transceiver with IEEE 1588v2 PTP Support
+ 17
+
+
+
+ physical-port-num-type
+ uint32
+ PHYSICAL PORT NUM
+ 0
+ 1023
+
+
+ led-stream-port-type
+ enumeration
+ Specifies the ledstream port type.
+
+ PORT_TYPE_TRI_SPEED
+ tri-speed port.
+ 1
+
+
+ PORT_TYPE_XG
+ XG port.
+ 2
+
+
+
+ led-stream-blink-select-type
+ enumeration
+ Specifies the LED stream blink select type.
+
+ BLINK_SELECT_0
+ Blink 0 signal.
+ 1
+
+
+ BLINK_SELECT_1
+ Blink 1 signal
+ 2
+
+
+
+ led-stream-order-mode-type
+ enumeration
+ Specifies the LED stream ordering mode.
+
+ ORDER_MODE_BY_PORT
+ the indication order is arranged by port.
+ 1
+
+
+ ORDER_MODE_BY_CLASS
+ the indication order is arranged by class.
+ 2
+
+
+
+ led-stream-blink-duty-cycle-type
+ enumeration
+ Specifies the LED stream blink cycle duty cycle type.
+
+ BLINK_DUTY_CYCLE_0
+ 25% on, 75% off.
+ 1
+
+
+ BLINK_DUTY_CYCLE_1
+ 50% on, 50% off.
+ 2
+
+
+ BLINK_DUTY_CYCLE_2
+ 50% on, 50% off.
+ 3
+
+
+ BLINK_DUTY_CYCLE_3
+ 75% on, 25% off.
+ 4
+
+
+
+ led-stream-blink-duration-type
+ enumeration
+ Specifies the LED stream blink period type.
+
+ BLINK_DURATION_0
+ BLINK_DURATION_0.
+ 1
+
+
+ BLINK_DURATION_1
+ BLINK_DURATION_1.
+ 2
+
+
+ BLINK_DURATION_2
+ BLINK_DURATION_2.
+ 3
+
+
+ BLINK_DURATION_3
+ BLINK_DURATION_3.
+ 4
+
+
+ BLINK_DURATION_4
+ BLINK_DURATION_4.
+ 5
+
+
+ BLINK_DURATION_5
+ BLINK_DURATION_5.
+ 6
+
+
+ BLINK_DURATION_6
+ (APPLICABLE DEVICES: xCat3; AC5; Lion2; Bobcat2; Caelum; Aldrin; AC3X; Bobcat3; Aldrin2; Pipe) .
+ 7
+
+
+ BLINK_DURATION_7
+ APPLICABLE DEVICES: Bobcat2; Caelum; Aldrin; AC3X; Bobcat3; Aldrin2; Pipe).
+ 8
+
+
+
+ led-stream-pulse-stretch-type
+ enumeration
+ Specifies the LED stream length of stretching for dynamic signals.
+
+ PULSE_STRETCH_0_NO
+ PULSE_STRETCH_0_NO.
+ 1
+
+
+ PULSE_STRETCH_1
+ PULSE_STRETCH_1.
+ 2
+
+
+ PULSE_STRETCH_2
+ PULSE_STRETCH_2.
+ 3
+
+
+ PULSE_STRETCH_3
+ PULSE_STRETCH_3.
+ 4
+
+
+ PULSE_STRETCH_4
+ PULSE_STRETCH_4.
+ 5
+
+
+ PULSE_STRETCH_5
+ PULSE_STRETCH_5.
+ 6
+
+
+ PULSE_STRETCH_6
+ (APPLICABLE DEVICES: Bobcat2; Caelum; Aldrin; AC3X; Bobcat3; Aldrin2; Falcon; AC5P; Pipe).
+ 7
+
+
+ PULSE_STRETCH_7
+ (APPLICABLE DEVICES: Bobcat2; Caelum; Aldrin; AC3X; Bobcat3; Aldrin2; Falcon; AC5P; Pipe).
+ 8
+
+
+
+ led-stream-clock-out-frequency-type
+ enumeration
+ Specifies the LED stream blink cycle duty cycle type.
+
+ _CLOCK_OUT_FREQUENCY_500
+ 500 KHz LED clock frequency.
+ 1
+
+
+ CLOCK_OUT_FREQUENCY_1000
+ 1 MHz LED clock frequency.
+ 2
+
+
+ CLOCK_OUT_FREQUENCY_2000
+ 2 MHz LED clock frequency.
+ 3
+
+
+ CLOCK_OUT_FREQUENCY_3000
+ 3 MHz LED clock frequency.
+ 4
+
+
+
+ led-stream-class5-select-type
+ enumeration
+ Specifies the LED stream indication displayed on class5 (for dual-media port/phy).
+
+ CLASS_5_SELECT_HALF_DUPLEX
+ Half Duplex is displayed on class5.
+ 1
+
+
+ CLASS_5_SELECT_FIBER_LINK_UP
+ If port is a dual media port, Fiber Link Up is displayed on class5.
+ 2
+
+
+
+ led-stream-class13-select-type
+ enumeration
+ Specifies the LED stream indication displayed on class13 (for dual-media port/phy).
+
+ CLASS_13_SELECT_LINK_DOWN
+ Link Down is displayed on class13.
+ 1
+
+
+ CLASS_13_SELECT_COPPER_LINK_UP
+ If port is a dual media port, Copper Link Up is displayed on class13.
+ 2
+
+
+
+ led-class-num-type
+ uint32
+ Led Class number
+ 0
+ 11
+
+
+ boolean-type
+ enumeration
+ Boolean 32 bits , due to bing endian
+
+ false
+ False
+ 0
+
+
+ true
+ True
+ 1
+
+
+
+ bus-id-type
+ uint32
+ Bus Id Type, PCI/SMI
+ 0
+ 255
+
+
+ function-id-type
+ uint32
+ Function Id Type, PCI/SMI
+ 0
+ 255
+
+
+ domain-type
+ uint32
+ Domain, PCI/SMI
+ 0
+ 255
+
+
+ led-interface-type
+ uint32
+ Led interface
+ 0
+ 255
+
+
+ led-position-type
+ uint32
+ Led position
+ 0
+ 63
+
+
+ serdes-lane-type
+ uint32
+ serdes lane
+ 0
+ 255
+
+
+ cpu-type
+ enumeration
+ The CPU Internal/External
+
+ external
+ Extrenal connected CPU
+ 0
+
+
+ internal
+ Internal CPU
+ 1
+
+
+
+ led-stream-clock-frequency-type
+ uint32
+ Led Clock Frequency Sip6
+ 500
+ 80000
+
+
+ led-unit-type
+ uint32
+ Led units
+ 1
+ 16
+
+
+ led-unit-or-no-unit-type
+ uint32
+ Led units, 0 for no Unit
+ 0
+ 16
+
+
+ led-group-type
+ uint32
+ Led Group
+ 0
+ 1
+
+
+ led-stream-force-data-type
+ string
+ A hexadecimal string with octets represented as hex digits
+separated by colons. The canonical representation uses
+lowercase characters.
+ 3
+ 11
+
+
+ bit-type
+ uint32
+ Bit range 0..31
+ 0
+ 31
+
+
+ bit-size-type
+ uint32
+ Bit leng 1..32
+ 1
+ 32
+
+
+ led-sip-type
+ enumeration
+ The LED scehme
+
+ na
+ NA
+ 0
+
+
+ sip5
+ SIP5: AC5, AC3x
+ 5
+
+
+ sip6
+ SIP6: Falcon, AC5x, AC5P
+ 6
+
+
+
+ port-cscd-type
+ enumeration
+ Specifies the cascade port type.
+
+ DSA_1_WORD
+ DSA Regular
+ 0
+
+
+ DSA_2_WORDS
+ DSA Extended
+ 1
+
+
+ NETWORK
+ Network.
+ 2
+
+
+ DSA_3_WORDS
+ DSA 3 Words
+ 3
+
+
+ DSA_4_WORD
+ DSA 4 Words
+ 4
+
+
+
+ trunk-cscd-type
+ uint32
+ Specifies the Cascade Trunk id.
+ 0
+ 127
+
+
+ port-trunk-cscd-type
+ enumeration
+ Specifies the cascade port type.
+
+ cscdPort
+ Cascade port
+ 0
+
+
+ cscdTrunk
+ Csacde trunk
+ 1
+
+
+
+ hash-cscd-type
+ enumeration
+ Specifies the hash used by cascade trunk.
+
+ pkt
+ Hash based on packet
+ 0
+
+
+ srcPort
+ Hash based on source port
+ 1
+
+
+
+ AC5X-RD-G3748
+ linux-static
+ linux-static
+ autoscan
+ internal
+ pex_eagle
+
+ 0
+ 0
+ ASK-PP-AC5X-G3748.xml
+ ASK-L1-AC5X-G3748.xml
+ na
+
+ 0
+
+ ethernet_mac
+ 0
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 0
+ 0
+
+
+
+
+ 1
+
+ ethernet_mac
+ 1
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 1
+ 0
+
+
+
+
+ 2
+
+ ethernet_mac
+ 2
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 2
+ 0
+
+
+
+
+ 3
+
+ ethernet_mac
+ 3
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 3
+ 0
+
+
+
+
+ 4
+
+ ethernet_mac
+ 4
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 4
+ 0
+
+
+
+
+ 5
+
+ ethernet_mac
+ 5
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 5
+ 0
+
+
+
+
+ 6
+
+ ethernet_mac
+ 6
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 6
+ 0
+
+
+
+
+ 7
+
+ ethernet_mac
+ 7
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 0
+ 7
+ 0
+
+
+
+
+ 8
+
+ ethernet_mac
+ 8
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 8
+ 0
+
+
+
+
+ 9
+
+ ethernet_mac
+ 9
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 9
+ 0
+
+
+
+
+ 10
+
+ ethernet_mac
+ 10
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 10
+ 0
+
+
+
+
+ 11
+
+ ethernet_mac
+ 11
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 11
+ 0
+
+
+
+
+ 12
+
+ ethernet_mac
+ 12
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 12
+ 0
+
+
+
+
+ 13
+
+ ethernet_mac
+ 13
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 13
+ 0
+
+
+
+
+ 14
+
+ ethernet_mac
+ 14
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 14
+ 0
+
+
+
+
+ 15
+
+ ethernet_mac
+ 15
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 1
+ 15
+ 0
+
+
+
+
+ 16
+
+ ethernet_mac
+ 16
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 16
+ 0
+
+
+
+
+ 17
+
+ ethernet_mac
+ 17
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 17
+ 0
+
+
+
+
+ 18
+
+ ethernet_mac
+ 18
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 18
+ 0
+
+
+
+
+ 19
+
+ ethernet_mac
+ 19
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 19
+ 0
+
+
+
+
+ 20
+
+ ethernet_mac
+ 20
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 20
+ 0
+
+
+
+
+ 21
+
+ ethernet_mac
+ 21
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 21
+ 0
+
+
+
+
+ 22
+
+ ethernet_mac
+ 22
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 22
+ 0
+
+
+
+
+ 23
+
+ ethernet_mac
+ 23
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 2
+ 23
+ 0
+
+
+
+
+ 24
+
+ ethernet_mac
+ 24
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 0
+ 1
+
+
+
+
+ 25
+
+ ethernet_mac
+ 25
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 1
+ 1
+
+
+
+
+ 26
+
+ ethernet_mac
+ 26
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 2
+ 1
+
+
+
+
+ 27
+
+ ethernet_mac
+ 27
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 3
+ 1
+
+
+
+
+ 28
+
+ ethernet_mac
+ 28
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 4
+ 1
+
+
+
+
+ 29
+
+ ethernet_mac
+ 29
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 5
+ 1
+
+
+
+
+ 30
+
+ ethernet_mac
+ 30
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 6
+ 1
+
+
+
+
+ 31
+
+ ethernet_mac
+ 31
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 3
+ 7
+ 1
+
+
+
+
+ 32
+
+ ethernet_mac
+ 32
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 8
+ 1
+
+
+
+
+ 33
+
+ ethernet_mac
+ 33
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 9
+ 1
+
+
+
+
+ 34
+
+ ethernet_mac
+ 34
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 10
+ 1
+
+
+
+
+ 35
+
+ ethernet_mac
+ 35
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 11
+ 1
+
+
+
+
+ 36
+
+ ethernet_mac
+ 36
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 12
+ 1
+
+
+
+
+ 37
+
+ ethernet_mac
+ 37
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 5
+ 13
+ 1
+
+
+
+
+ 38
+
+ ethernet_mac
+ 38
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 5
+ 14
+ 1
+
+
+
+
+ 39
+
+ ethernet_mac
+ 39
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 5
+ 15
+ 1
+
+
+
+
+ 40
+
+ ethernet_mac
+ 40
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 5
+ 16
+ 1
+
+
+
+
+ 41
+
+ ethernet_mac
+ 41
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 17
+ 1
+
+
+
+
+ 42
+
+ ethernet_mac
+ 42
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 18
+ 1
+
+
+
+
+ 43
+
+ ethernet_mac
+ 43
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 19
+ 1
+
+
+
+
+ 44
+
+ ethernet_mac
+ 44
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 20
+ 1
+
+
+
+
+ 45
+
+ ethernet_mac
+ 45
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 21
+ 1
+
+
+
+
+ 46
+
+ ethernet_mac
+ 46
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 22
+ 1
+
+
+
+
+ 47
+
+ ethernet_mac
+ 47
+ 0
+ false
+
+ NETWORK
+
+ alaska-88E1780
+ 4
+ 23
+ 1
+
+
+
+
+ 48
+
+ ethernet_mac
+ 48
+ 0
+ false
+
+ NETWORK
+
+ NA
+
+
+
+
+ 53
+
+ ethernet_mac
+ 53
+ 0
+ false
+
+ NETWORK
+
+ NA
+
+
+
+
+ 52
+
+ ethernet_mac
+ 52
+ 0
+ false
+
+ NETWORK
+
+ NA
+
+
+
+
+ 51
+
+ ethernet_mac
+ 51
+ 0
+ false
+
+ NETWORK
+
+ NA
+
+
+
+
+ 50
+
+ ethernet_mac
+ 50
+ 0
+ false
+
+ NETWORK
+
+ NA
+
+
+
+
+ 49
+
+ ethernet_mac
+ 49
+ 0
+ false
+
+ NETWORK
+
+ NA
+
+
+
+
+ 63
+
+ cpu_sdma
+ 54
+ 0
+ false
+
+ NETWORK
+
+
+ 60
+
+ cpu_sdma
+ 55
+ 0
+ false
+
+ NETWORK
+
+
+ .
+
+ 1
+
+
+
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.md5 b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.md5
new file mode 100644
index 0000000000..0a8f542ec0
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.md5
@@ -0,0 +1 @@
+8e51017346a381613f8660e192883697
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.xml b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.xml
new file mode 100644
index 0000000000..f4622aa75c
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-L1-AC5X-G3748.xml
@@ -0,0 +1,1219 @@
+
+
+
+
+
+ interface-mode-type
+ enumeration
+ Specifies supported Interface modes
+
+ 1000BASE_X
+ 1G
+ 6
+
+
+ SGMII
+ 1G , 2.5G
+ 3
+
+
+ QSGMII
+ 1G
+ 13
+
+
+ KR
+ 10G, 12G, 20G, 40G, 100G
+ 16
+
+
+ SR_LR
+ 5G, 10G, 12G, 20G, 40G
+ 20
+
+
+ KR2
+
+ 27
+
+
+ KR4
+
+ 28
+
+
+ SR_LR2
+
+ 29
+
+
+ SR_LR4
+ 100G
+ 30
+
+
+ KR_C
+ CONSORTIUM - 25G
+ 32
+
+
+ CR_C
+ CONSORTIUM - 25G
+ 33
+
+
+ KR2_C
+ CONSORTIUM - 50G
+ 34
+
+
+ CR2_C
+ CONSORTIUM - 50G
+ 35
+
+
+ CR
+
+ 36
+
+
+ CR2
+
+ 37
+
+
+ CR4
+
+ 38
+
+
+ KR_S
+
+ 39
+
+
+ CR_S
+
+ 40
+
+
+ KR8
+
+ 41
+
+
+ CR8
+
+ 42
+
+
+ SR_LR8
+
+ 43
+
+
+ USX_10G_QXGMII
+
+ 51
+
+
+ USX_20G_QXGMII
+
+ 52
+
+
+ USX_OUSGMII
+
+ 53
+
+
+ USX_20G_OXGMII
+
+ 54
+
+
+ NA
+
+ 57
+
+
+
+ port-speed-type
+ enumeration
+ Specifies supported speeds
+
+ 1G
+ 1G
+ 2
+
+
+ 10G
+ 10G
+ 3
+
+
+ 2500M
+ 2.5G
+ 5
+
+
+ 5G
+ 5G
+ 6
+
+
+ 25G
+ 25G, used in combination with CPSS_PORT_INTERFACE_MODE_KR_E, CPSS_PORT_INTERFACE_MODE_KR2_E
+ 21
+
+
+ 40G
+ 40G
+ 9
+
+
+ 50G
+ 50G
+ 14
+
+
+ 100G
+ 100G
+ 13
+
+
+ 200G
+ 200G
+ 24
+
+
+ 400G
+ 400G
+ 25
+
+
+ NA
+ NA
+ 35
+
+
+
+ fec-type
+ enumeration
+ Rx parameter type
+
+ enabled
+ Enabled
+ 0
+
+
+ disabled
+ Disabled
+ 1
+
+
+ rs_enabled
+ RS FEC enabled
+ 2
+
+
+ both_enabled
+ Both enabled
+ 3
+
+
+ rs_544_514_enabled
+ RS FEC 544 and 514
+ 4
+
+
+
+ physical-port-num-type
+ uint32
+ PHYSICAL PORT NUM
+ 0
+ 1023
+
+
+ tx-param-type
+ enumeration
+ Tx parameter type
+
+ atten
+ atten
+ 0
+
+
+ post
+ post
+ 1
+
+
+ pre
+ pre
+ 2
+
+
+ pre2
+ pre2
+ 3
+
+
+ pre3
+ pre3
+ 4
+
+
+ peak
+ peak
+ 5
+
+
+ main
+ main
+ 6
+
+
+ txAmpAdjEn
+ txAmpAdjEn
+ 7
+
+
+ emph0
+ emph0
+ 8
+
+
+ emph1
+ emph1
+ 9
+
+
+ txAmpShft
+ txAmpShft
+ 10
+
+
+ txEmphEn
+ txEmphEn
+ 11
+
+
+ txEmphEn1
+ txEmphEn1
+ 12
+
+
+ txAmpAdj
+ txAmpAdj
+ 13
+
+
+ slewCtrlEn
+ slewCtrlEn
+ 14
+
+
+ slewRate
+ slewRate
+ 15
+
+
+
+ rx-param-type
+ enumeration
+ Rx parameter type
+
+ sqlch
+ sqlch
+ 0
+
+
+ DC
+ DC
+ 1
+
+
+ LF
+ LF
+ 2
+
+
+ HF
+ HF
+ 3
+
+
+ gainShape1
+ gainShape1
+ 4
+
+
+ gainShape2
+ gainShape2
+ 5
+
+
+ shortChannelEn
+ shortChannelEn
+ 7
+
+
+ bfLf
+ bfLf
+ 8
+
+
+ bfHf
+ bfHf
+ 9
+
+
+ minLf
+ minLf
+ 10
+
+
+ maxLf
+ maxLf
+ 11
+
+
+ minHf
+ minHf
+ 12
+
+
+ maxHf
+ maxHf
+ 13
+
+
+ minPre1
+ minPre1
+ 14
+
+
+ maxPre1
+ maxPre1
+ 15
+
+
+ minPre2
+ minPre2
+ 16
+
+
+ maxPre2
+
+ 17
+
+
+ minPost
+ minPost
+ 18
+
+
+ maxPost
+ maxPost
+ 19
+
+
+ squelch
+ squelch
+ 20
+
+
+ termination
+ termination
+ 27
+
+
+ coldEnvelope
+ coldEnvelope
+ 35
+
+
+ hotEnvelope
+ hotEnvelope
+ 36
+
+
+ dcGain
+ dcGain
+ 37
+
+
+ bandWidth
+ bandWidth
+ 38
+
+
+ dfe
+ dfe
+ 39
+
+
+ ffeR
+ ffeR
+ 40
+
+
+ ffeC
+ ffeC
+ 41
+
+
+ sampler
+ sampler
+ 42
+
+
+ align90
+ align90
+ 43
+
+
+ ffeS
+ ffeS
+ 44
+
+
+ resSel
+ resSel
+ 45
+
+
+ resShift
+ resShift
+ 46
+
+
+ capSel
+ capSel
+ 47
+
+
+ ffeSettingForce
+ ffeSettingForce
+ 48
+
+
+ adaptedResSel
+ adaptedResSel
+ 49
+
+
+ adaptedCapSel
+ adaptedCapSel
+ 50
+
+
+ selmufi
+ selmufi
+ 51
+
+
+ selmuff
+ selmuff
+ 52
+
+
+ selmupi
+ selmupi
+ 53
+
+
+ selmupf
+ selmupf
+ 54
+
+
+ slewRateCtrl0
+ slewRateCtrl0
+ 55
+
+
+ slewRateCtrl1
+ slewRateCtrl1
+ 56
+
+
+ EO
+ EO
+ 57
+
+
+ dataRate
+ dataRate
+ 58
+
+
+ res1Sel
+ res1Sel
+ 59
+
+
+ res2Sel
+ res2Sel
+ 60
+
+
+ cap1Sel
+ cap1Sel
+ 61
+
+
+ cap2Sel
+ cap2Sel
+ 62
+
+
+ midpointLargeThresKLane
+ midpointLargeThresKLane
+ 63
+
+
+ midpointSmallThresKLane
+ midpointSmallThresKLane
+ 64
+
+
+ midpointLargeThresCLane
+ midpointLargeThresCLane
+ 65
+
+
+ midpointSmallThresCLane
+ midpointSmallThresCLane
+ 66
+
+
+ dfeResF0aHighThresInitLane
+ dfeResF0aHighThresInitLane
+ 67
+
+
+ dfeResF0aHighThresEndLane
+ dfeResF0aHighThresEndLane
+ 68
+
+
+ current1Sel
+ current1Sel
+ 69
+
+
+ rl1Sel
+ rl1Sel
+ 70
+
+
+ rl1Extra
+ rl1Extra
+ 71
+
+
+ cl1Ctrl
+ cl1Ctrl
+ 72
+
+
+ enMidFreq
+ enMidFreq
+ 73
+
+
+ cs1Mid
+ cs1Mid
+ 74
+
+
+ rs1Mid
+ rs1Mid
+ 75
+
+
+ rfCtrl
+ rfCtrl
+ 76
+
+
+ rl1TiaSel
+ rl1TiaSel
+ 77
+
+
+ rl1TiaExtra
+ rl1TiaExtra
+ 78
+
+
+ hpfRSel1st
+ hpfRSel1st
+ 79
+
+
+ current1TiaSel
+ current1TiaSel
+ 80
+
+
+ rl2Tune
+ rl2Tune
+ 81
+
+
+ rl2Sel
+ rl2Sel
+ 82
+
+
+ rs2Sel
+ rs2Sel
+ 83
+
+
+ current2Sel
+ current2Sel
+ 84
+
+
+ hpfRsel2nd
+ hpfRsel2nd
+ 85
+
+
+ BW
+ BW
+ 86
+
+
+ dfeGAIN
+ dfeGAIN
+ 87
+
+
+ dfeGAIN2
+ dfeGAIN2
+ 88
+
+
+ pre1
+ pre1
+ 89
+
+
+ pre2
+ pre2
+ 90
+
+
+ post1
+ post1
+ 91
+
+
+
+ boolean-type
+ enumeration
+ Boolean 32 bits , due to bing endian
+
+ false
+ False
+ 0
+
+
+ true
+ True
+ 1
+
+
+
+ serdes-type
+ enumeration
+ Serdes Type
+
+ NA
+ No serdes
+ 0
+
+
+ AVAGO
+ AVAGO
+ 1
+
+
+ COMPHY
+ COMPHY
+ 2
+
+
+ COMPHY_C12G
+ COMPHY_C12G
+ 3
+
+
+ COMPHY_C28G
+ COMPHY_C28G
+ 4
+
+
+ COMPHY_C112G
+ COMPHY_C112G
+ 5
+
+
+
+ uint8-type
+ uint32
+ Uint8 32 bits , due to bing endian
+ 0
+ 255
+
+
+ serdes-termination-type
+ enumeration
+ RX termination mode
+
+ GND
+ Enabled
+ 0
+
+
+ VDD
+ Disabled
+ 1
+
+
+ FLOATING
+ RS FEC enabled
+ 2
+
+
+
+ port-interconnect-profile-type
+ enumeration
+ Enumerator of interconnect profile.
+
+ profile_default
+ Profile Default
+ 0
+
+
+ profile_1
+ Profile 1
+ 1
+
+
+ profile_2
+ Profile 2
+ 2
+
+
+
+
+
+ 1000MR1
+
+ USX_OUSGMII
+ 1G
+ disabled
+
+
+ USX_OUSGMII
+ 1G
+ disabled
+ disabled
+
+
+
+ 2500MR1
+
+ USX_20G_OXGMII
+ 2500M
+ rs_enabled
+
+
+ USX_20G_OXGMII
+ 1G
+ rs_enabled
+
+
+ USX_20G_OXGMII
+ 2500M
+ rs_enabled
+ rs_enabled
+
+
+ USX_20G_OXGMII
+ 1G
+ rs_enabled
+ rs_enabled
+
+
+
+ 25GR1
+
+ CR
+ 25G
+ rs_enabled
+
+
+ KR
+ 25G
+ rs_enabled
+
+
+ KR
+ 10G
+ disabled
+
+
+ CR
+ 25G
+ rs_enabled
+ rs_enabled
+
+
+ KR
+ 25G
+ rs_enabled
+ rs_enabled
+
+
+ KR
+ 10G
+ disabled
+ disabled
+
+
+
+
+
+ 0
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 1
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 2
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 3
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 4
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 5
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 6
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 7
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 8
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 9
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 10
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 11
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 12
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 13
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 14
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 15
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 16
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 17
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 18
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 19
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 20
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 21
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 22
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 23
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 24
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 25
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 26
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 27
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 28
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 29
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 30
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 31
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 32
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 33
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 34
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 35
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 36
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 37
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 38
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 39
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 40
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 41
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 42
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 43
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 44
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 45
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 46
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 47
+ AVAGO
+ profile_default
+ 1000MR1
+
+
+ 48
+ AVAGO
+ profile_default
+ 25GR1
+
+
+ 49
+ AVAGO
+ profile_default
+ 25GR1
+
+
+ 50
+ AVAGO
+ profile_default
+ 25GR1
+
+
+ 51
+ AVAGO
+ profile_default
+ 25GR1
+
+
+ 52
+ AVAGO
+ profile_default
+ 25GR1
+
+
+ 53
+ AVAGO
+ profile_default
+ 25GR1
+
+
+
+
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.md5 b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.md5
new file mode 100644
index 0000000000..18f55a9315
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.md5
@@ -0,0 +1 @@
+330bea15c5dc5dcc0bdabd95940b6bab
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.xml b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.xml
new file mode 100644
index 0000000000..6944bbcb42
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/ASK-PP-AC5X-G3748.xml
@@ -0,0 +1,891 @@
+
+
+
+
+
+ std-string
+ string
+ standard string.
+ 1
+ 100
+
+
+ queue-id-type
+ uint32
+ Queue id
+ 0
+ 7
+
+
+ precent-type
+ uint32
+ Precent
+ 0
+ 100
+
+
+ phaThreadId-type
+ uint32
+ Thread id
+ 1
+ 255
+
+
+ routing-mode-type
+ enumeration
+ Specifies routing mode.
+
+ POLICY_BASED_ROUTING_ONLY
+ PBR only
+ 0
+
+
+ TCAM_ROUTER_BASED
+ Router engine or PBR
+ 1
+
+
+
+ shared-table-mode-type
+ enumeration
+ Specifies table sharing modes.
+
+ MAX_L3_MIN_L2_NO_EM
+ MAX_L3_MIN_L2_NO_EM
+ 0
+
+
+ MIN_L3_MAX_L2_NO_EM
+ MIN_L3_MAX_L2_NO_EM
+ 1
+
+
+ MID_L3_MID_L2_MIN_EM
+ MID_L3_MID_L2_MIN_EM
+ 2
+
+
+ MID_L3_MIN_L2_MAX_EM
+ MID_L3_MIN_L2_MAX_EM
+ 3
+
+
+ MID_LOW_L3_MID_LOW_L2_MAX_EM
+ MID_LOW_L3_MID_LOW_L2_MAX_EM
+ 4
+
+
+ MID_L3_MID_L2_NO_EM
+ MID_L3_MID_L2_NO_EM
+ 5
+
+
+ MID_LOW_L3_MID_L2_MID_EM
+ MID_LOW_L3_MID_L2_MID_EM
+ 6
+
+
+ MID_L3_MID_LOW_L2_MID_EM_MAX_ARP
+ MID_L3_MID_LOW_L2_MID_EM_MAX_ARP
+ 7
+
+
+
+ pha-firmware-image-id-type
+ enumeration
+ Specifies supported Pha image id
+
+ DEFAULT
+ Default PHA firmware image ID
+ 0
+
+
+ 01
+ 01 firmware image ID
+ 1
+
+
+ 02
+ 02 PHA firmware image ID
+ 2
+
+
+
+ pha-firmware-thread-type
+ enumeration
+ Specifies supported Pha thread type
+
+ IOAM_INGRESS_SWITCH_IPV4
+ IOAM_INGRESS_SWITCH_IPV4
+ 1
+
+
+ IOAM_INGRESS_SWITCH_IPV6
+ IOAM_INGRESS_SWITCH_IPV6
+ 2
+
+
+ IOAM_TRANSIT_SWITCH_IPV4
+ IOAM_TRANSIT_SWITCH_IPV4
+ 3
+
+
+ IOAM_TRANSIT_SWITCH_IPV6
+ IOAM_TRANSIT_SWITCH_IPV6
+ 4
+
+
+ INT_IOAM_MIRRORING
+ INT_IOAM_MIRRORING
+ 5
+
+
+ INT_IOAM_EGRESS_SWITCH
+ INT_IOAM_EGRESS_SWITCH
+ 6
+
+
+ MPLS_SR_NO_EL
+ MPLS_SR_NO_EL
+ 7
+
+
+ MPLS_SR_ONE_EL
+ MPLS_SR_ONE_EL
+ 8
+
+
+ MPLS_SR_TWO_EL
+ MPLS_SR_TWO_EL
+ 9
+
+
+ MPLS_SR_THREE_EL
+ MPLS_SR_THREE_EL
+ 10
+
+
+ UNIFIED_SR
+ UNIFIED_SR
+ 11
+
+
+ CLASSIFIER_NSH_OVER_ETHERNET
+ CLASSIFIER_NSH_OVER_ETHERNET
+ 12
+
+
+ CLASSIFIER_NSH_OVER_VXLAN_GPE
+ CLASSIFIER_NSH_OVER_VXLAN_GPE
+ 13
+
+
+ SFF_NSH_VXLAN_GPE_TO_ETHERNET
+ SFF_NSH_VXLAN_GPE_TO_ETHERNET
+ 14
+
+
+ SFF_NSH_ETHERNET_TO_VXLAN_GPE
+ SFF_NSH_ETHERNET_TO_VXLAN_GPE
+ 15
+
+
+ IOAM_EGRESS_SWITCH_IPV6
+ IOAM_EGRESS_SWITCH_IPV6
+ 16
+
+
+ SRV6_END_NODE
+ SRV6_END_NODE
+ 17
+
+
+ SRV6_PENULTIMATE_END_NODE
+ SRV6_PENULTIMATE_END_NODE
+ 18
+
+
+ SRV6_SRC_NODE_1_SEGMENT
+ SRV6_SRC_NODE_1_SEGMENT
+ 19
+
+
+ SRV6_SRC_NODE_FIRST_PASS_2_3_SEGMENTS
+ SRV6_SRC_NODE_FIRST_PASS_2_3_SEGMENTS
+ 20
+
+
+ SRV6_SRC_NODE_SECOND_PASS_3_SEGMENTS
+ SRV6_SRC_NODE_SECOND_PASS_3_SEGMENTS
+ 21
+
+
+ SRV6_SRC_NODE_SECOND_PASS_2_SEGMENTS
+ SRV6_SRC_NODE_SECOND_PASS_2_SEGMENTS
+ 22
+
+
+ SGT_NETWORK_ADD_MSB
+ SGT_NETWORK_ADD_MSB
+ 23
+
+
+ SGT_NETWORK_FIX
+ SGT_NETWORK_FIX
+ 24
+
+
+ SGT_NETWORK_REMOVE
+ SGT_NETWORK_REMOVE
+ 25
+
+
+ SGT_EDSA_FIX
+ SGT_EDSA_FIX
+ 26
+
+
+ SGT_EDSA_REMOVE
+ SGT_EDSA_REMOVE
+ 27
+
+
+ SGT_GBP_FIX_IPV4
+ SGT_GBP_FIX_IPV4
+ 28
+
+
+ SGT_GBP_FIX_IPV6
+ SGT_GBP_FIX_IPV6
+ 29
+
+
+ SGT_GBP_REMOVE_IPV4
+ SGT_GBP_REMOVE_IPV4
+ 30
+
+
+ SGT_GBP_REMOVE_IPV6
+ SGT_GBP_REMOVE_IPV6
+ 31
+
+
+ PTP_PHY_1_STEP
+ PTP_PHY_1_STEP
+ 32
+
+
+ EGRESS_MIRRORING_METADATA
+ EGRESS_MIRRORING_METADATA
+ 33
+
+
+ CC_ERSPAN_TYPE_II_TRG_DEV_LC_IPV4
+ CC_ERSPAN_TYPE_II_TRG_DEV_LC_IPV4
+ 34
+
+
+ CC_ERSPAN_TYPE_II_TRG_DEV_LC_IPV6
+ CC_ERSPAN_TYPE_II_TRG_DEV_LC_IPV6
+ 35
+
+
+ CC_ERSPAN_TYPE_II_TRG_DEV_DIRECT_IPV4
+ CC_ERSPAN_TYPE_II_TRG_DEV_DIRECT_IPV4
+ 36
+
+
+ CC_ERSPAN_TYPE_II_TRG_DEV_DIRECT_IPV6
+ CC_ERSPAN_TYPE_II_TRG_DEV_DIRECT_IPV6
+ 37
+
+
+ CC_ERSPAN_TYPE_II_SRC_DEV
+ CC_ERSPAN_TYPE_II_SRC_DEV
+ 38
+
+
+ VXLAN_GBP_SOURCE_GROUP_POLICY_ID
+ VXLAN_GBP_SOURCE_GROUP_POLICY_ID
+ 39
+
+
+ SRV6_BEST_EFFORT
+ SRV6_BEST_EFFORT
+ 40
+
+
+ SRV6_SRC_NODE_1_CONTAINER
+ SRV6_SRC_NODE_1_CONTAINER
+ 41
+
+
+ SRV6_SRC_NODE_FIRST_PASS_2_3_CONTAINERS
+ SRV6_SRC_NODE_FIRST_PASS_2_3_CONTAINERS
+ 42
+
+
+ SRV6_SRC_NODE_SECOND_PASS_2_CONTAINERS
+ SRV6_SRC_NODE_SECOND_PASS_2_CONTAINERS
+ 43
+
+
+ SRV6_SRC_NODE_SECOND_PASS_3_CONTAINERS
+ SRV6_SRC_NODE_SECOND_PASS_3_CONTAINERS
+ 44
+
+
+ SRV6_END_NODE_COC32_GSID
+ SRV6_END_NODE_COC32_GSID
+ 45
+
+
+ IPV4_TTL_INCREMENT
+ IPV4_TTL_INCREMENT
+ 46
+
+
+ IPV6_HOP_LIMIT_INCREMENT
+ IPV6_HOP_LIMIT_INCREMENT
+ 47
+
+
+ CLEAR_OUTGOING_MTAG_COMMAND
+ CLEAR_OUTGOING_MTAG_COMMAND
+ 48
+
+
+ SFLOW_V5_IPV4
+ SFLOW_V5_IPV4
+ 49
+
+
+ SFLOW_V5_IPV6
+ SFLOW_V5_IPV6
+ 50
+
+
+ SLS
+ SLS
+ 51
+
+
+
+ trunk-member-mode-type
+ enumeration
+ Specifies supported Pha image id
+
+ NATIVE
+ NATIVE
+ * the trunk members are filled
+ * according to the order given by application.
+ * Regular trunk may hold max of 8 members.
+ * Cascade trunk may hold :
+ * max of 64 members
+ 0
+
+
+ FLEX
+ FLEX
+ * A mode to allows flexibility for
+ * each Regular trunk to state it's max number of members (before starting to add members).
+ * (this mode not effect 'cascade trunk' members)
+ * Regular trunk may hold : max of 4K members. (each trunk set it's own limit)
+ * Cascade trunk may hold : max of 64 members.
+ 2
+
+
+
+ number-physical-port-type
+ enumeration
+ ac5x 128, falcon 64,128,256, 512, 1024
+
+ no-ports
+ no-ports
+ 0
+
+
+ 64-ports
+ 64-ports
+ 64
+
+
+ 128-ports
+ 128-ports
+ 128
+
+
+ 256-ports
+ 256-ports
+ 256
+
+
+ 512-ports
+ 512-ports
+ 512
+
+
+ 1024-ports
+ 1024-ports
+ 1024
+
+
+
+ serdes-ref-clock-type
+ enumeration
+ Specifies serdes refernce clock.
+
+ external_25_single_ended
+ EXTERNAL_25_SINGLE_ENDED
+ 0
+
+
+ external_125_single_ended
+ EXTERNAL_125_SINGLE_ENDED
+ 1
+
+
+ external_125_diff
+ EXTERNAL_125_DIFF
+ 2
+
+
+ external_156_25_single_ended
+ EXTERNAL_156_25_SINGLE_ENDED
+ 3
+
+
+ external_156_25_diff
+ EXTERNAL_156_25_DIFF
+ 4
+
+
+ internal_125
+ INTERNAL_125
+ 5
+
+
+
+ cpu-port-id-type
+ uint32
+ CPU port id
+ 0
+ 7
+
+
+ rx-buffer-size-type
+ uint32
+ Rx Buffer size
+ 64
+ 10240
+
+
+ tx-sdma-queue-mode-type
+ enumeration
+ Specifies TX queue mode.
+
+ Normal
+ Application
+ 0
+
+
+ Packet_Generator
+ Traffic generator
+ 1
+
+
+
+ alloc-method-type
+ enumeration
+ Specifies Buffers allocation method.
+
+ Dynamic_Alloc
+ Dynamic
+ 0
+
+
+ Static_Alloc
+ Static
+ 1
+
+
+
+ au_mesage_lenght-type
+ enumeration
+ Specifies Buffers allocation method.
+
+ 4_words
+ 4 Words
+ 0
+
+
+ 8_words
+ 8 Words
+ 1
+
+
+
+ boolean-type
+ enumeration
+ Boolean 32 bits , due to bing endian
+
+ false
+ False
+ 0
+
+
+ true
+ True
+ 1
+
+
+
+
+ AC5X-RD
+
+ 4294967295
+ external_25_single_ended
+ 2
+ 60
+ 128-ports
+ false
+ false
+ 0
+
+
+ true
+
+ 4096
+
+
+ 2048
+
+
+
+ 0
+ 0
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 7
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 6
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 5
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 4
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 3
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 2
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 1
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 1
+ 0
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 7
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 6
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 5
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 4
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 3
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 2
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 1
+ Static_Alloc
+ 20
+ 20
+ 2048
+ 0
+
+
+ 0
+ 0
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 1
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 2
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 3
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 4
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 5
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 6
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 0
+ 7
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 0
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 1
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 2
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 3
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 4
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 5
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 6
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+ 1
+ 7
+ Static_Alloc
+ Normal
+ 20
+ 0
+ 128
+
+
+
+ false
+ false
+ false
+ 0
+ 8_words
+ false
+
+
+
+ TCAM_ROUTER_BASED
+ 0
+ MID_L3_MID_L2_NO_EM
+ true
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+
+ 511
+ FLEX
+
+ true
+ true
+ true
+ true
+
+ false
+ 01
+ 0
+
+
+
+
+
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.md5 b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.md5
new file mode 100644
index 0000000000..6cdba7a1b7
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.md5
@@ -0,0 +1 @@
+3ac4dbcd6e23c747318b7e7c27e08a02
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.xml b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.xml
new file mode 100644
index 0000000000..bb2f800047
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/SAI-AC5X-G3748.xml
@@ -0,0 +1,315 @@
+
+
+
+
+
+ device-id-type
+ uint32
+ Device ID 0..1023
+ 0
+ 1023
+
+
+ port-id-type
+ uint32
+ Interface number
+ 0
+ 1023
+
+
+ ASK-Board-ac5x-G3748.xml
+
+ false
+
+
+
+ 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 1
+
+
+ 2
+ 0
+ 2
+
+
+ 3
+ 0
+ 3
+
+
+ 4
+ 0
+ 4
+
+
+ 5
+ 0
+ 5
+
+
+ 6
+ 0
+ 6
+
+
+ 7
+ 0
+ 7
+
+
+ 8
+ 0
+ 8
+
+
+ 9
+ 0
+ 9
+
+
+ 10
+ 0
+ 10
+
+
+ 11
+ 0
+ 11
+
+
+ 12
+ 0
+ 12
+
+
+ 13
+ 0
+ 13
+
+
+ 14
+ 0
+ 14
+
+
+ 15
+ 0
+ 15
+
+
+ 16
+ 0
+ 16
+
+
+ 17
+ 0
+ 17
+
+
+ 18
+ 0
+ 18
+
+
+ 19
+ 0
+ 19
+
+
+ 20
+ 0
+ 20
+
+
+ 21
+ 0
+ 21
+
+
+ 22
+ 0
+ 22
+
+
+ 23
+ 0
+ 23
+
+
+ 24
+ 0
+ 24
+
+
+ 25
+ 0
+ 25
+
+
+ 26
+ 0
+ 26
+
+
+ 27
+ 0
+ 27
+
+
+ 28
+ 0
+ 28
+
+
+ 29
+ 0
+ 29
+
+
+ 30
+ 0
+ 30
+
+
+ 31
+ 0
+ 31
+
+
+ 32
+ 0
+ 32
+
+
+ 33
+ 0
+ 33
+
+
+ 34
+ 0
+ 34
+
+
+ 35
+ 0
+ 35
+
+
+ 36
+ 0
+ 36
+
+
+ 37
+ 0
+ 37
+
+
+ 38
+ 0
+ 38
+
+
+ 39
+ 0
+ 39
+
+
+ 40
+ 0
+ 40
+
+
+ 41
+ 0
+ 41
+
+
+ 42
+ 0
+ 42
+
+
+ 43
+ 0
+ 43
+
+
+ 44
+ 0
+ 44
+
+
+ 45
+ 0
+ 45
+
+
+ 46
+ 0
+ 46
+
+
+ 47
+ 0
+ 47
+
+
+ 48
+ 0
+ 48
+
+
+ 49
+ 0
+ 49
+
+
+ 50
+ 0
+ 50
+
+
+ 51
+ 0
+ 51
+
+
+ 52
+ 0
+ 52
+
+
+ 53
+ 0
+ 53
+
+
+
+ 8
+ 0
+ 0
+ 64
+ 8
+ 8
+ 1024
+ 0
+
+
+
+ 0
+
+
+ 2048
+
+
+
+
\ No newline at end of file
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/platform.ini b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/platform.ini
new file mode 100644
index 0000000000..782144317a
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/platform.ini
@@ -0,0 +1 @@
+# Port lane speed DC BW HF LF sqlch minLf maxLf minHf maxHf
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/port_config.ini b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/port_config.ini
new file mode 100644
index 0000000000..003307d32f
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/port_config.ini
@@ -0,0 +1,55 @@
+# name lanes alias speed autoneg fec index
+Ethernet0 0 Gi0/1 1000 on none 1
+Ethernet1 1 Gi0/2 1000 on none 2
+Ethernet2 2 Gi0/3 1000 on none 3
+Ethernet3 3 Gi0/4 1000 on none 4
+Ethernet4 4 Gi0/5 1000 on none 5
+Ethernet5 5 Gi0/6 1000 on none 6
+Ethernet6 6 Gi0/7 1000 on none 7
+Ethernet7 7 Gi0/8 1000 on none 8
+Ethernet8 8 Gi0/9 1000 on none 9
+Ethernet9 9 Gi0/10 1000 on none 10
+Ethernet10 10 Gi0/11 1000 on none 11
+Ethernet11 11 Gi0/12 1000 on none 12
+Ethernet12 12 Gi0/13 1000 on none 13
+Ethernet13 13 Gi0/14 1000 on none 14
+Ethernet14 14 Gi0/15 1000 on none 15
+Ethernet15 15 Gi0/16 1000 on none 16
+Ethernet16 16 Gi0/17 1000 on none 17
+Ethernet17 17 Gi0/18 1000 on none 18
+Ethernet18 18 Gi0/19 1000 on none 19
+Ethernet19 19 Gi0/20 1000 on none 20
+Ethernet20 20 Gi0/21 1000 on none 21
+Ethernet21 21 Gi0/22 1000 on none 22
+Ethernet22 22 Gi0/23 1000 on none 23
+Ethernet23 23 Gi0/24 1000 on none 24
+Ethernet24 24 Gi0/25 1000 on none 25
+Ethernet25 25 Gi0/26 1000 on none 26
+Ethernet26 26 Gi0/27 1000 on none 27
+Ethernet27 27 Gi0/28 1000 on none 28
+Ethernet28 28 Gi0/29 1000 on none 29
+Ethernet29 29 Gi0/30 1000 on none 30
+Ethernet30 30 Gi0/31 1000 on none 31
+Ethernet31 31 Gi0/32 1000 on none 32
+Ethernet32 32 Gi0/33 1000 on none 33
+Ethernet33 33 Gi0/34 1000 on none 34
+Ethernet34 34 Gi0/35 1000 on none 35
+Ethernet35 35 Gi0/36 1000 on none 36
+Ethernet36 36 Gi0/37 1000 on none 37
+Ethernet37 37 Gi0/38 1000 on none 38
+Ethernet38 38 Gi0/39 1000 on none 39
+Ethernet39 39 Gi0/40 1000 on none 40
+Ethernet40 40 Gi0/41 1000 on none 41
+Ethernet41 41 Gi0/42 1000 on none 42
+Ethernet42 42 Gi0/43 1000 on none 43
+Ethernet43 43 Gi0/44 1000 on none 44
+Ethernet44 44 Gi0/45 1000 on none 45
+Ethernet45 45 Gi0/46 1000 on none 46
+Ethernet46 46 Gi0/47 1000 on none 47
+Ethernet47 47 Gi0/48 1000 on none 48
+Ethernet48 48 Fx0/1 25000 on rs 49
+Ethernet49 49 Fx0/2 25000 on rs 50
+Ethernet50 50 Fx0/3 25000 on rs 51
+Ethernet51 51 Fx0/4 25000 on rs 52
+Ethernet52 52 Fx0/5 25000 on rs 53
+Ethernet53 53 Fx0/6 25000 on rs 54
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/profile.ini b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/profile.ini
new file mode 100644
index 0000000000..16600d34e6
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/profile.ini
@@ -0,0 +1,7 @@
+switchMacAddress=00:01:02:03:04:05
+portListWithCableLen=000:1 001:1 002:1 003:1 004:1 005:1 006:1 007:1 008:1 009:1 010:1 011:1 012:1 013:1 014:1 015:1 016:1 017:1 018:1 019:1 020:1 021:1 022:1 023:1 024:1 025:1 026:1 027:1 028:1 029:1 030:1 031:1 032:1 033:1 034:1 035:1 036:1 037:1 038:1 039:1 040:1 041:1 042:1 043:1 044:1 045:1 046:1 047:1 048:1 049:1 050:1 051:1 052:1 053:1
+platformConfigFile=/usr/share/sonic/hwsku/platform.ini
+lpm_fdb_em_profile=MID_L3_MID_L2_NO_EM
+l3_counter_index_base=0 2K
+pbrMaxEntries=0
+SAI_NUM_ECMP_MEMBERS=64
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/sai.profile b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/sai.profile
new file mode 100644
index 0000000000..2f3febd68e
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/sse_g3748/sai.profile
@@ -0,0 +1,4 @@
+mode=1
+hwId=AC5XG3748
+switchProfile=/usr/share/sonic/hwsku/SAI-AC5X-G3748.xml
+SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/profile.ini
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/system_health_monitoring_config.json b/device/supermicro/arm64-supermicro_sse_g3748-r0/system_health_monitoring_config.json
new file mode 100644
index 0000000000..d5f3a7b983
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/system_health_monitoring_config.json
@@ -0,0 +1,14 @@
+{
+ "services_to_ignore": [],
+ "devices_to_ignore": [
+ "asic",
+ "psu.temperature"
+ ],
+ "user_defined_checkers": [],
+ "polling_interval": 60,
+ "led_color": {
+ "fault": "amber",
+ "normal": "green",
+ "booting": "blinking green"
+ }
+}
diff --git a/device/supermicro/arm64-supermicro_sse_g3748-r0/thermal_policy.json b/device/supermicro/arm64-supermicro_sse_g3748-r0/thermal_policy.json
new file mode 100644
index 0000000000..7757303c54
--- /dev/null
+++ b/device/supermicro/arm64-supermicro_sse_g3748-r0/thermal_policy.json
@@ -0,0 +1,65 @@
+{
+ "thermal_control_algorithm": {
+ "run_at_boot_up": "false",
+ "fan_speed_when_suspend": "50"
+ },
+ "info_types": [
+ {
+ "type": "fan_info"
+ },
+ {
+ "type": "thermal_info"
+ },
+ {
+ "type": "chassis_info"
+ }
+ ],
+ "policies": [
+ {
+ "name": "any fan absence",
+ "conditions": [
+ {
+ "type": "fan.any.absence"
+ }
+ ],
+ "actions": [
+ {
+ "type": "thermal_control.control",
+ "status": "false"
+ },
+ {
+ "type": "fan.all.set_speed",
+ "speed": "100"
+ }
+ ]
+ },
+ {
+ "name": "all fan presence",
+ "conditions": [
+ {
+ "type": "fan.all.presence"
+ }
+ ],
+ "actions": [
+ {
+ "type": "thermal.temp_check_and_set_all_fan_speed",
+ "default_speed": "25",
+ "hightemp_speed": "100"
+ }
+ ]
+ },
+ {
+ "name": "temp over high critical threshold",
+ "conditions": [
+ {
+ "type": "thermal.over.high_critical_threshold"
+ }
+ ],
+ "actions": [
+ {
+ "type": "switch.shutdown"
+ }
+ ]
+ }
+ ]
+}