commit
ce1e03e5ba
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -74,3 +74,6 @@
|
|||||||
[submodule "platform/p4/SAI-P4-BM"]
|
[submodule "platform/p4/SAI-P4-BM"]
|
||||||
path = platform/p4/SAI-P4-BM
|
path = platform/p4/SAI-P4-BM
|
||||||
url = https://github.com/Mellanox/SAI-P4-BM.git
|
url = https://github.com/Mellanox/SAI-P4-BM.git
|
||||||
|
[submodule "platform/barefoot/sonic-platform-modules-ingrasys"]
|
||||||
|
path = platform/barefoot/sonic-platform-modules-ingrasys
|
||||||
|
url = https://github.com/Ingrasys-sonic/sonic-platform-modules-ingrasys-barefoot.git
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
# name lanes alias speed autoneg fec index
|
||||||
|
Ethernet0 0,1,2,3 Ethernet0 100000 0 0 0
|
||||||
|
Ethernet4 4,5,6,7 Ethernet4 100000 0 0 1
|
||||||
|
Ethernet8 8,9,10,11 Ethernet8 100000 0 0 2
|
||||||
|
Ethernet12 12,13,14,15 Ethernet12 100000 0 0 3
|
||||||
|
Ethernet16 16,17,18,19 Ethernet16 100000 0 0 4
|
||||||
|
Ethernet20 20,21,22,23 Ethernet20 100000 0 0 5
|
||||||
|
Ethernet24 24,25,26,27 Ethernet24 100000 0 0 6
|
||||||
|
Ethernet28 28,29,30,31 Ethernet28 100000 0 0 7
|
||||||
|
Ethernet32 32,33,34,35 Ethernet32 100000 0 0 8
|
||||||
|
Ethernet36 36,37,38,39 Ethernet36 100000 0 0 9
|
||||||
|
Ethernet40 40,41,42,43 Ethernet40 100000 0 0 10
|
||||||
|
Ethernet44 44,45,46,47 Ethernet44 100000 0 0 11
|
||||||
|
Ethernet48 48,49,50,51 Ethernet48 100000 0 0 12
|
||||||
|
Ethernet52 52,53,54,55 Ethernet52 100000 0 0 13
|
||||||
|
Ethernet56 56,57,58,59 Ethernet56 100000 0 0 14
|
||||||
|
Ethernet60 60,61,62,63 Ethernet60 100000 0 0 15
|
||||||
|
Ethernet64 64,65,66,67 Ethernet64 100000 0 0 16
|
||||||
|
Ethernet68 68,69,70,71 Ethernet68 100000 0 0 17
|
||||||
|
Ethernet72 72,73,74,75 Ethernet72 100000 0 0 18
|
||||||
|
Ethernet76 76,77,78,79 Ethernet76 100000 0 0 19
|
||||||
|
Ethernet80 80,81,82,83 Ethernet80 100000 0 0 20
|
||||||
|
Ethernet84 84,85,86,87 Ethernet84 100000 0 0 21
|
||||||
|
Ethernet88 88,89,90,91 Ethernet88 100000 0 0 22
|
||||||
|
Ethernet92 92,93,94,95 Ethernet92 100000 0 0 23
|
||||||
|
Ethernet96 96,97,98,99 Ethernet96 100000 0 0 24
|
||||||
|
Ethernet100 100,101,102,103 Ethernet100 100000 0 0 25
|
||||||
|
Ethernet104 104,105,106,107 Ethernet104 100000 0 0 26
|
||||||
|
Ethernet108 108,109,110,111 Ethernet108 100000 0 0 27
|
||||||
|
Ethernet112 112,113,114,115 Ethernet112 100000 0 0 28
|
||||||
|
Ethernet116 116,117,118,119 Ethernet116 100000 0 0 29
|
||||||
|
Ethernet120 120,121,122,123 Ethernet120 100000 0 0 30
|
||||||
|
Ethernet124 124,125,126,127 Ethernet124 100000 0 0 31
|
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"chip_list": [
|
||||||
|
{
|
||||||
|
"id": "asic-0",
|
||||||
|
"chip_family": "Tofino",
|
||||||
|
"instance": 0,
|
||||||
|
"pcie_sysfs_prefix": "/sys/devices/pci0000:00/0000:00:03.0/0000:05:00.0",
|
||||||
|
"pcie_domain": 0,
|
||||||
|
"pcie_bus": 5,
|
||||||
|
"pcie_fn": 0,
|
||||||
|
"pcie_dev": 0,
|
||||||
|
"pcie_int_mode": 1,
|
||||||
|
"sds_fw_path": "share/tofino_sds_fw/avago/firmware"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instance": 0,
|
||||||
|
"p4_program_list": [
|
||||||
|
{
|
||||||
|
"id": "pgm-0",
|
||||||
|
"instance": 0,
|
||||||
|
"path": "switch",
|
||||||
|
"program-name": "switch",
|
||||||
|
"pd": "lib/tofinopd/switch/libpd.so",
|
||||||
|
"pd-thrift": "lib/tofinopd/switch/libpdthrift.so",
|
||||||
|
"table-config": "share/tofinopd/switch/context.json",
|
||||||
|
"tofino-bin": "share/tofinopd/switch/tofino.bin",
|
||||||
|
"switchapi": "lib/libswitchapi.so",
|
||||||
|
"switchsai": "lib/libswitchsai.so",
|
||||||
|
"agent0": "lib/platform/x86_64-ingrasys_s9180_32x-r0/libpltfm_mgr.so",
|
||||||
|
"switchapi_port_add": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
12
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/fancontrol
Normal file
12
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/fancontrol
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Configuration file generated by pwmconfig, changes will be lost
|
||||||
|
INTERVAL=10
|
||||||
|
DEVPATH=hwmon1=devices/pci0000:00/0000:00:1f.3/i2c-0/i2c-56/56-002f
|
||||||
|
DEVNAME=hwmon1=w83795adg
|
||||||
|
FCTEMPS=hwmon1/device/pwm2=hwmon2/temp2_input hwmon1/device/pwm1=hwmon2/temp2_input
|
||||||
|
FCFANS=hwmon1/device/pwm2=hwmon1/device/fan8_input hwmon1/device/pwm2=hwmon1/device/fan7_input hwmon1/device/pwm2=hwmon1/device/fan6_input hwmon1/device/pwm2=hwmon1/device/fan5_input hwmon1/device/pwm1=hwmon1/device/fan4_input hwmon1/device/pwm1=hwmon1/device/fan3_input hwmon1/device/pwm1=hwmon1/device/fan2_input hwmon1/device/pwm1=hwmon1/device/fan1_input
|
||||||
|
# TODO: check the temp value with HW after board ready
|
||||||
|
MINTEMP=hwmon1/device/pwm2=20 hwmon1/device/pwm1=20
|
||||||
|
MAXTEMP=hwmon1/device/pwm2=60 hwmon1/device/pwm1=60
|
||||||
|
MINSTART=hwmon1/device/pwm2=75 hwmon1/device/pwm1=75
|
||||||
|
MINSTOP=hwmon1/device/pwm2=22 hwmon1/device/pwm1=22
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
CONSOLE_PORT=0x3f8
|
||||||
|
CONSOLE_DEV=0
|
||||||
|
CONSOLE_SPEED=115200
|
151
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/minigraph.xml
Normal file
151
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/minigraph.xml
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
<DeviceMiniGraph xmlns="Microsoft.Search.Autopilot.Evolution" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<CpgDec>
|
||||||
|
<IsisRouters xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
<PeeringSessions>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>OCPSCH0104001MS</StartRouter>
|
||||||
|
<StartPeer>10.10.1.26</StartPeer>
|
||||||
|
<EndRouter>OCPSCH01040GGLF</EndRouter>
|
||||||
|
<EndPeer>10.10.1.25</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>10</HoldTime>
|
||||||
|
<KeepAliveTime>3</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
<BGPSession>
|
||||||
|
<StartRouter>OCPSCH0104002MS</StartRouter>
|
||||||
|
<StartPeer>10.10.2.26</StartPeer>
|
||||||
|
<EndRouter>OCPSCH01040GGLF</EndRouter>
|
||||||
|
<EndPeer>10.10.2.25</EndPeer>
|
||||||
|
<Multihop>1</Multihop>
|
||||||
|
<HoldTime>10</HoldTime>
|
||||||
|
<KeepAliveTime>3</KeepAliveTime>
|
||||||
|
</BGPSession>
|
||||||
|
</PeeringSessions>
|
||||||
|
<Routers xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64536</a:ASN>
|
||||||
|
<a:Hostname>OCPSCH01040GGLF</a:Hostname>
|
||||||
|
<a:Peers>
|
||||||
|
<BGPPeer>
|
||||||
|
<Address>10.10.1.26</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
<BGPPeer>
|
||||||
|
<Address>10.10.2.26</Address>
|
||||||
|
<RouteMapIn i:nil="true"/>
|
||||||
|
<RouteMapOut i:nil="true"/>
|
||||||
|
</BGPPeer>
|
||||||
|
</a:Peers>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64542</a:ASN>
|
||||||
|
<a:Hostname>OCPSCH0104001MS</a:Hostname>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
<a:BGPRouterDeclaration>
|
||||||
|
<a:ASN>64543</a:ASN>
|
||||||
|
<a:Hostname>OCPSCH0104002MS</a:Hostname>
|
||||||
|
<a:RouteMaps/>
|
||||||
|
</a:BGPRouterDeclaration>
|
||||||
|
</Routers>
|
||||||
|
</CpgDec>
|
||||||
|
<DpgDec>
|
||||||
|
<DeviceDataPlaneInfo>
|
||||||
|
<IPSecTunnels/>
|
||||||
|
<LoopbackIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:LoopbackIPInterface>
|
||||||
|
<Name>HostIP</Name>
|
||||||
|
<AttachTo>Loopback0</AttachTo>
|
||||||
|
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.NetMux">
|
||||||
|
<b:IPPrefix>100.0.0.9/32</b:IPPrefix>
|
||||||
|
</a:Prefix>
|
||||||
|
<a:PrefixStr>100.0.0.9/32</a:PrefixStr>
|
||||||
|
</a:LoopbackIPInterface>
|
||||||
|
</LoopbackIPInterfaces>
|
||||||
|
<ManagementIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
</ManagementIPInterfaces>
|
||||||
|
<MplsInterfaces/>
|
||||||
|
<MplsTeInterfaces/>
|
||||||
|
<RsvpInterfaces/>
|
||||||
|
<Hostname>OCPSCH01040GGLF</Hostname>
|
||||||
|
<PortChannelInterfaces/>
|
||||||
|
<VlanInterfaces/>
|
||||||
|
<IPInterfaces>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>Ethernet0</AttachTo>
|
||||||
|
<Prefix>10.10.1.25/30</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
<IPInterface>
|
||||||
|
<Name i:nil="true"/>
|
||||||
|
<AttachTo>Ethernet4</AttachTo>
|
||||||
|
<Prefix>10.10.2.25/30</Prefix>
|
||||||
|
</IPInterface>
|
||||||
|
</IPInterfaces>
|
||||||
|
<DataAcls/>
|
||||||
|
<AclInterfaces/>
|
||||||
|
<DownstreamSummaries/>
|
||||||
|
<DownstreamSummarySet xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
</DeviceDataPlaneInfo>
|
||||||
|
</DpgDec>
|
||||||
|
<PngDec>
|
||||||
|
<DeviceInterfaceLinks>
|
||||||
|
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
||||||
|
<Bandwidth>40000</Bandwidth>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>OCPSCH0104001MS</EndDevice>
|
||||||
|
<EndPort>Ethernet24</EndPort>
|
||||||
|
<StartDevice>OCPSCH01040GGLF</StartDevice>
|
||||||
|
<StartPort>Ethernet0</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
||||||
|
<Bandwidth>40000</Bandwidth>
|
||||||
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
|
<EndDevice>OCPSCH0104002MS</EndDevice>
|
||||||
|
<EndPort>Ethernet24</EndPort>
|
||||||
|
<StartDevice>OCPSCH01040GGLF</StartDevice>
|
||||||
|
<StartPort>Ethernet4</StartPort>
|
||||||
|
</DeviceLinkBase>
|
||||||
|
</DeviceInterfaceLinks>
|
||||||
|
<Devices>
|
||||||
|
<Device i:type="LeafRouter">
|
||||||
|
<Hostname>OCPSCH01040GGLF</Hostname>
|
||||||
|
<HwSku>INGRASYS-S9180-32X</HwSku>
|
||||||
|
</Device>
|
||||||
|
</Devices>
|
||||||
|
</PngDec>
|
||||||
|
<MetadataDeclaration>
|
||||||
|
<Devices xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
|
<a:DeviceMetadata>
|
||||||
|
<a:Name>OCPSCH01040GGLF</a:Name>
|
||||||
|
<a:Properties>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>DhcpResources</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value></a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>NtpResources</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>0.debian.pool.ntp.org;1.debian.pool.ntp.org;2.debian.pool.ntp.org;3.debian.pool.ntp.org</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>SyslogResources</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value></a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
<a:DeviceProperty>
|
||||||
|
<a:Name>ErspanDestinationIpv4</a:Name>
|
||||||
|
<a:Reference i:nil="true"/>
|
||||||
|
<a:Value>2.2.2.2</a:Value>
|
||||||
|
</a:DeviceProperty>
|
||||||
|
</a:Properties>
|
||||||
|
</a:DeviceMetadata>
|
||||||
|
</Devices>
|
||||||
|
<Properties xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||||
|
</MetadataDeclaration>
|
||||||
|
<Hostname>OCPSCH01040GGLF</Hostname>
|
||||||
|
<HwSku>INGRASYS-S9180-32X</HwSku>
|
||||||
|
</DeviceMiniGraph>
|
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# Ingrasys S9180-32X
|
||||||
|
#
|
||||||
|
# Platform and model specific eeprom subclass, inherits from the base class,
|
||||||
|
# and provides the followings:
|
||||||
|
# - the eeprom format definition
|
||||||
|
# - specific encoder/decoder if there is special need
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
try:
|
||||||
|
from sonic_eeprom import eeprom_tlvinfo
|
||||||
|
except ImportError, e:
|
||||||
|
raise ImportError (str(e) + "- required module not found")
|
||||||
|
|
||||||
|
|
||||||
|
class board(eeprom_tlvinfo.TlvInfoDecoder):
|
||||||
|
|
||||||
|
def __init__(self, name, path, cpld_root, ro):
|
||||||
|
self.eeprom_path = "/sys/class/i2c-adapter/i2c-0/0-0055/eeprom"
|
||||||
|
super(board, self).__init__(self.eeprom_path, 0, '', True)
|
@ -0,0 +1,90 @@
|
|||||||
|
#
|
||||||
|
# psuutil.py
|
||||||
|
# Platform-specific PSU status interface for SONiC
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
try:
|
||||||
|
from sonic_psu.psu_base import PsuBase
|
||||||
|
except ImportError as e:
|
||||||
|
raise ImportError(str(e) + "- required module not found")
|
||||||
|
|
||||||
|
|
||||||
|
class PsuUtil(PsuBase):
|
||||||
|
"""Platform-specific PSUutil class"""
|
||||||
|
|
||||||
|
SYS_GPIO_DIR = "/sys/class/gpio/"
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
PsuBase.__init__(self)
|
||||||
|
|
||||||
|
|
||||||
|
# Get sysfs attribute
|
||||||
|
def get_attr_value(self, attr_path):
|
||||||
|
|
||||||
|
retval = 'ERR'
|
||||||
|
if (not os.path.isfile(attr_path)):
|
||||||
|
return retval
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(attr_path, 'r') as fd:
|
||||||
|
retval = fd.read()
|
||||||
|
except Exception as error:
|
||||||
|
logging.error("Unable to open ", attr_path, " file !")
|
||||||
|
|
||||||
|
retval = retval.rstrip('\r\n')
|
||||||
|
return retval
|
||||||
|
|
||||||
|
def get_num_psus(self):
|
||||||
|
"""
|
||||||
|
Retrieves the number of PSUs available on the device
|
||||||
|
:return: An integer, the number of PSUs available on the device
|
||||||
|
"""
|
||||||
|
MAX_PSUS = 2
|
||||||
|
return MAX_PSUS
|
||||||
|
|
||||||
|
def get_psu_status(self, index):
|
||||||
|
"""
|
||||||
|
Retrieves the oprational status of power supply unit (PSU) defined
|
||||||
|
by index <index>
|
||||||
|
:param index: An integer, index of the PSU of which to query status
|
||||||
|
:return: Boolean, True if PSU is operating properly, False if PSU is\
|
||||||
|
faulty
|
||||||
|
"""
|
||||||
|
status = 0
|
||||||
|
gpio_path = [ 'gpio99/value', 'gpio96/value' ]
|
||||||
|
attr_path = self.SYS_GPIO_DIR + gpio_path[index-1]
|
||||||
|
|
||||||
|
attr_value = self.get_attr_value(attr_path)
|
||||||
|
|
||||||
|
if (attr_value != 'ERR'):
|
||||||
|
attr_value = int(attr_value, 10)
|
||||||
|
# Check for PSU status
|
||||||
|
if (attr_value == 1):
|
||||||
|
status = 1
|
||||||
|
|
||||||
|
return status
|
||||||
|
|
||||||
|
def get_psu_presence(self, index):
|
||||||
|
"""
|
||||||
|
Retrieves the presence status of power supply unit (PSU) defined
|
||||||
|
by index <index>
|
||||||
|
:param index: An integer, index of the PSU of which to query status
|
||||||
|
:return: Boolean, True if PSU is plugged, False if not
|
||||||
|
"""
|
||||||
|
status = 0
|
||||||
|
gpio_path = [ 'gpio100/value', 'gpio97/value' ]
|
||||||
|
attr_path = self.SYS_GPIO_DIR + gpio_path[index-1]
|
||||||
|
|
||||||
|
attr_value = self.get_attr_value(attr_path)
|
||||||
|
|
||||||
|
if (attr_value != 'ERR'):
|
||||||
|
attr_value = int(attr_value, 10)
|
||||||
|
# Check for PSU status
|
||||||
|
if (attr_value == 1):
|
||||||
|
status = 1
|
||||||
|
|
||||||
|
return status
|
||||||
|
|
290
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/plugins/sfputil.py
Normal file
290
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/plugins/sfputil.py
Normal file
@ -0,0 +1,290 @@
|
|||||||
|
# sfputil.py
|
||||||
|
#
|
||||||
|
# Platform-specific SFP transceiver interface for SONiC
|
||||||
|
#
|
||||||
|
|
||||||
|
try:
|
||||||
|
import time
|
||||||
|
from sonic_sfp.sfputilbase import SfpUtilBase
|
||||||
|
except ImportError as e:
|
||||||
|
raise ImportError("%s - required module not found" % str(e))
|
||||||
|
|
||||||
|
|
||||||
|
class SfpUtil(SfpUtilBase):
|
||||||
|
"""Platform-specific SfpUtil class"""
|
||||||
|
|
||||||
|
PORT_START = 0
|
||||||
|
PORT_END = 33
|
||||||
|
SFP_PORT_START = 32
|
||||||
|
PORTS_IN_BLOCK = 34
|
||||||
|
|
||||||
|
BASE_DIR_PATH = "/sys/class/gpio/gpio{0}/direction"
|
||||||
|
BASE_VAL_PATH = "/sys/class/gpio/gpio{0}/value"
|
||||||
|
|
||||||
|
_port_to_eeprom_mapping = {}
|
||||||
|
port_to_i2c_mapping = {
|
||||||
|
0: 10,
|
||||||
|
1: 9,
|
||||||
|
2: 12,
|
||||||
|
3: 11,
|
||||||
|
4: 14,
|
||||||
|
5: 13,
|
||||||
|
6: 16,
|
||||||
|
7: 15,
|
||||||
|
8: 18,
|
||||||
|
9: 17,
|
||||||
|
10: 20,
|
||||||
|
11: 19,
|
||||||
|
12: 22,
|
||||||
|
13: 21,
|
||||||
|
14: 24,
|
||||||
|
15: 23,
|
||||||
|
16: 26,
|
||||||
|
17: 25,
|
||||||
|
18: 28,
|
||||||
|
19: 27,
|
||||||
|
20: 30,
|
||||||
|
21: 29,
|
||||||
|
22: 32,
|
||||||
|
23: 31,
|
||||||
|
24: 34,
|
||||||
|
25: 33,
|
||||||
|
26: 36,
|
||||||
|
27: 35,
|
||||||
|
28: 38,
|
||||||
|
29: 37,
|
||||||
|
30: 40,
|
||||||
|
31: 39,
|
||||||
|
32: 45,
|
||||||
|
33: 46
|
||||||
|
}
|
||||||
|
|
||||||
|
abs_to_gpio_mapping = {
|
||||||
|
0: 241,
|
||||||
|
1: 240,
|
||||||
|
2: 243,
|
||||||
|
3: 242,
|
||||||
|
4: 245,
|
||||||
|
5: 244,
|
||||||
|
6: 247,
|
||||||
|
7: 246,
|
||||||
|
8: 249,
|
||||||
|
9: 248,
|
||||||
|
10: 251,
|
||||||
|
11: 250,
|
||||||
|
12: 253,
|
||||||
|
13: 252,
|
||||||
|
14: 255,
|
||||||
|
15: 254,
|
||||||
|
16: 225,
|
||||||
|
17: 224,
|
||||||
|
18: 227,
|
||||||
|
19: 226,
|
||||||
|
20: 229,
|
||||||
|
21: 228,
|
||||||
|
22: 231,
|
||||||
|
23: 230,
|
||||||
|
24: 233,
|
||||||
|
25: 232,
|
||||||
|
26: 235,
|
||||||
|
27: 234,
|
||||||
|
28: 237,
|
||||||
|
29: 236,
|
||||||
|
30: 239,
|
||||||
|
31: 238,
|
||||||
|
32: 177,
|
||||||
|
33: 176
|
||||||
|
}
|
||||||
|
|
||||||
|
lpmode_to_gpio_mapping = {
|
||||||
|
0: 161,
|
||||||
|
1: 160,
|
||||||
|
2: 163,
|
||||||
|
3: 162,
|
||||||
|
4: 165,
|
||||||
|
5: 164,
|
||||||
|
6: 167,
|
||||||
|
7: 166,
|
||||||
|
8: 169,
|
||||||
|
9: 168,
|
||||||
|
10: 171,
|
||||||
|
11: 170,
|
||||||
|
12: 173,
|
||||||
|
13: 172,
|
||||||
|
14: 175,
|
||||||
|
15: 174,
|
||||||
|
16: 145,
|
||||||
|
17: 144,
|
||||||
|
18: 147,
|
||||||
|
19: 146,
|
||||||
|
20: 149,
|
||||||
|
21: 148,
|
||||||
|
22: 151,
|
||||||
|
23: 150,
|
||||||
|
24: 153,
|
||||||
|
25: 152,
|
||||||
|
26: 155,
|
||||||
|
27: 154,
|
||||||
|
28: 157,
|
||||||
|
29: 156,
|
||||||
|
30: 159,
|
||||||
|
31: 158
|
||||||
|
}
|
||||||
|
|
||||||
|
reset_to_gpio_mapping = {
|
||||||
|
0: 129,
|
||||||
|
1: 128,
|
||||||
|
2: 131,
|
||||||
|
3: 130,
|
||||||
|
4: 133,
|
||||||
|
5: 132,
|
||||||
|
6: 135,
|
||||||
|
7: 134,
|
||||||
|
8: 137,
|
||||||
|
9: 136,
|
||||||
|
10: 139,
|
||||||
|
11: 138,
|
||||||
|
12: 141,
|
||||||
|
13: 140,
|
||||||
|
14: 143,
|
||||||
|
15: 142,
|
||||||
|
16: 113,
|
||||||
|
17: 112,
|
||||||
|
18: 115,
|
||||||
|
19: 114,
|
||||||
|
20: 117,
|
||||||
|
21: 116,
|
||||||
|
22: 119,
|
||||||
|
23: 118,
|
||||||
|
24: 121,
|
||||||
|
25: 120,
|
||||||
|
26: 123,
|
||||||
|
27: 122,
|
||||||
|
28: 125,
|
||||||
|
29: 124,
|
||||||
|
30: 127,
|
||||||
|
31: 126
|
||||||
|
}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def port_start(self):
|
||||||
|
return self.PORT_START
|
||||||
|
|
||||||
|
@property
|
||||||
|
def port_end(self):
|
||||||
|
return self.PORT_END
|
||||||
|
|
||||||
|
@property
|
||||||
|
def qsfp_ports(self):
|
||||||
|
return range(0, self.PORTS_IN_BLOCK + 1)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def port_to_eeprom_mapping(self):
|
||||||
|
return self._port_to_eeprom_mapping
|
||||||
|
@property
|
||||||
|
def sfp_port_start(self):
|
||||||
|
return self.SFP_PORT_START
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
# Override port_to_eeprom_mapping for class initialization
|
||||||
|
eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom"
|
||||||
|
|
||||||
|
for x in range(self.port_start, self.port_end + 1):
|
||||||
|
port_eeprom_path = eeprom_path.format(self.port_to_i2c_mapping[x])
|
||||||
|
self.port_to_eeprom_mapping[x] = port_eeprom_path
|
||||||
|
|
||||||
|
SfpUtilBase.__init__(self)
|
||||||
|
|
||||||
|
def get_presence(self, port_num):
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.port_end:
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
abs_device_file = self.BASE_VAL_PATH.format(
|
||||||
|
self.abs_to_gpio_mapping[port_num])
|
||||||
|
val_file = open(abs_device_file)
|
||||||
|
except IOError as e:
|
||||||
|
print "Error: unable to open file: %s" % str(e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
content = val_file.readline().rstrip()
|
||||||
|
val_file.close()
|
||||||
|
|
||||||
|
# content is a string, either "0" or "1"
|
||||||
|
if content == "1":
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def get_low_power_mode(self, port_num):
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.sfp_port_start: # TBD
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
lpmode_val_device_file = self.BASE_VAL_PATH.format(
|
||||||
|
self.lpmode_to_gpio_mapping[port_num])
|
||||||
|
val_file = open(lpmode_val_device_file)
|
||||||
|
except IOError as e:
|
||||||
|
print "Error: unable to open file: %s" % str(e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
content = val_file.readline().rstrip()
|
||||||
|
val_file.close()
|
||||||
|
|
||||||
|
# content is a string, either "0" or "1"
|
||||||
|
if content == "1":
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def set_low_power_mode(self, port_num, lpmode):
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.sfp_port_start: # TBD
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
lpmode_val_device_file = self.BASE_VAL_PATH.format(
|
||||||
|
self.lpmode_to_gpio_mapping[port_num])
|
||||||
|
val_file = open(lpmode_val_device_file, "w")
|
||||||
|
except IOError as e:
|
||||||
|
print "Error: unable to open file: %s" % str(e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
val_file.write("1" if lpmode is True else "0")
|
||||||
|
val_file.close()
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def reset(self, port_num):
|
||||||
|
# Check for invalid port_num
|
||||||
|
if port_num < self.port_start or port_num > self.sfp_port_start: # TBD
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
reset_val_device_file = self.BASE_VAL_PATH.format(
|
||||||
|
self.reset_to_gpio_mapping[port_num])
|
||||||
|
val_file = open(reset_val_device_file, "w")
|
||||||
|
except IOError as e:
|
||||||
|
print "Error: unable to open file: %s" % str(e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
val_file.write("1")
|
||||||
|
val_file.close()
|
||||||
|
|
||||||
|
# Sleep 1 second to allow it to settle
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
reset_val_device_file = self.BASE_VAL_PATH.format(
|
||||||
|
self.reset_to_gpio_mapping[port_num])
|
||||||
|
val_file = open(reset_val_device_file, "w")
|
||||||
|
except IOError as e:
|
||||||
|
print "Error: unable to open file: %s" % str(e)
|
||||||
|
return False
|
||||||
|
|
||||||
|
val_file.write("0")
|
||||||
|
val_file.close()
|
||||||
|
|
||||||
|
return True
|
76
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/sensors.conf
Normal file
76
device/ingrasys/x86_64-ingrasys_s9180_32x-r0/sensors.conf
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# libsensors configuration file
|
||||||
|
chip "i350bb-*"
|
||||||
|
ignore loc1
|
||||||
|
|
||||||
|
chip "jc42-*"
|
||||||
|
label temp1 "DIMM Temp"
|
||||||
|
set temp1_max 50
|
||||||
|
set temp1_crit 85
|
||||||
|
|
||||||
|
bus "i2c-0" "I2C I801"
|
||||||
|
chip "tmp75-i2c-*-4f"
|
||||||
|
label temp1 "CPU Board Temp"
|
||||||
|
set temp1_max 50
|
||||||
|
|
||||||
|
bus "i2c-41" "i2c-7-switch (chan_id 0)"
|
||||||
|
chip "tmp75-i2c-*-48"
|
||||||
|
label temp1 "Near PSU1"
|
||||||
|
set temp1_max 50
|
||||||
|
chip "tmp75-i2c-*-4a"
|
||||||
|
label temp1 "Rear MAC"
|
||||||
|
set temp1_max 50
|
||||||
|
chip "tmp75-i2c-*-4b"
|
||||||
|
label temp1 "Near Port 32"
|
||||||
|
set temp1_max 50
|
||||||
|
chip "tmp75-i2c-*-4d"
|
||||||
|
label temp1 "Near PSU2"
|
||||||
|
set temp1_max 50
|
||||||
|
chip "lm86-i2c-*-4c"
|
||||||
|
label temp1 "Front MAC"
|
||||||
|
label temp2 "ASIC Core Temp"
|
||||||
|
set temp1_min 20
|
||||||
|
set temp1_max 65
|
||||||
|
set temp1_crit 70
|
||||||
|
set temp2_min 20
|
||||||
|
set temp2_max 70
|
||||||
|
set temp2_crit 80
|
||||||
|
|
||||||
|
bus "i2c-56" "i2c-0-mux (chan_id 7)"
|
||||||
|
chip "w83795adg-*"
|
||||||
|
label in0 "0.9V"
|
||||||
|
set in0_max 0.927
|
||||||
|
set in0_min 0.873
|
||||||
|
label in1 "0.86V"
|
||||||
|
set in1_max 0.877
|
||||||
|
set in1_min 0.843
|
||||||
|
ignore in2
|
||||||
|
ignore in3
|
||||||
|
ignore in4
|
||||||
|
ignore in5
|
||||||
|
ignore in6
|
||||||
|
ignore in7
|
||||||
|
label in12 "2.5V"
|
||||||
|
#compute in12 (2*4*@)/10, @-(2*4*@/10)
|
||||||
|
compute in12 @/(1+(3/10)), @*(1+(3/10))
|
||||||
|
set in12_max 2.625
|
||||||
|
set in12_min 2.375
|
||||||
|
# in12 and in13 are the same source
|
||||||
|
ignore in13
|
||||||
|
ignore in14
|
||||||
|
ignore in15
|
||||||
|
ignore in16
|
||||||
|
label fan1 "FANTRAY 1-A"
|
||||||
|
label fan2 "FANTRAY 1-B"
|
||||||
|
label fan3 "FANTRAY 2-A"
|
||||||
|
label fan4 "FANTRAY 2-B"
|
||||||
|
label fan5 "FANTRAY 3-A"
|
||||||
|
label fan6 "FANTRAY 3-B"
|
||||||
|
label fan7 "FANTRAY 4-A"
|
||||||
|
label fan8 "FANTRAY 4-B"
|
||||||
|
ignore temp1
|
||||||
|
ignore temp2
|
||||||
|
ignore temp3
|
||||||
|
ignore temp4
|
||||||
|
ignore temp5
|
||||||
|
ignore temp6
|
||||||
|
ignore intrusion0
|
5
platform/barefoot/bfn-platform-ingrasys.mk
Normal file
5
platform/barefoot/bfn-platform-ingrasys.mk
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
BFN_INGRASYS_PLATFORM = bfnplatform-ingrasys_1.0.0_amd64.deb
|
||||||
|
$(BFN_INGRASYS_PLATFORM)_URL = "https://github.com/Ingrasys-sonic/packages/raw/master/lib/bfnplatform-ingrasys_1.0.0_amd64.deb"
|
||||||
|
|
||||||
|
SONIC_ONLINE_DEBS += $(BFN_INGRASYS_PLATFORM) # $(BFN_SAI_DEV)
|
||||||
|
$(BFN_SAI_DEV)_DEPENDS += $(BFN_INGRASYS_PLATFORM)
|
@ -1,5 +1,5 @@
|
|||||||
BFN_SAI = bfnsdk_1.0.0_amd64.deb
|
BFN_SAI = bfnsdk_1.0.0_amd64.deb
|
||||||
$(BFN_SAI)_URL = "https://github.com/barefootnetworks/sonic-release-pkgs/raw/rel_7_0/bfnsdk_1.0.0_amd64.deb"
|
$(BFN_SAI)_URL = "https://github.com/Ingrasys-sonic/packages/raw/master/sai/bfnsdk_1.0.0_amd64.deb"
|
||||||
|
|
||||||
SONIC_ONLINE_DEBS += $(BFN_SAI) # $(BFN_SAI_DEV)
|
SONIC_ONLINE_DEBS += $(BFN_SAI) # $(BFN_SAI_DEV)
|
||||||
$(BFN_SAI_DEV)_DEPENDS += $(BFN_SAI)
|
$(BFN_SAI_DEV)_DEPENDS += $(BFN_SAI)
|
||||||
|
@ -6,5 +6,6 @@ $(SONIC_ONE_IMAGE)_IMAGE_TYPE = onie
|
|||||||
$(SONIC_ONE_IMAGE)_INSTALLS += $(BFN_PLATFORM_MODULE)
|
$(SONIC_ONE_IMAGE)_INSTALLS += $(BFN_PLATFORM_MODULE)
|
||||||
$(SONIC_ONE_IMAGE)_INSTALLS += $(BFN_MONTARA_PLATFORM_MODULE)
|
$(SONIC_ONE_IMAGE)_INSTALLS += $(BFN_MONTARA_PLATFORM_MODULE)
|
||||||
$(SONIC_ONE_IMAGE)_INSTALLS += $(WNC_OSW1800_PLATFORM_MODULE)
|
$(SONIC_ONE_IMAGE)_INSTALLS += $(WNC_OSW1800_PLATFORM_MODULE)
|
||||||
|
$(SONIC_ONE_IMAGE)_INSTALLS += $(INGRASYS_S9180_32X_PLATFORM_MODULE)
|
||||||
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
|
$(SONIC_ONE_IMAGE)_DOCKERS += $(SONIC_INSTALL_DOCKER_IMAGES)
|
||||||
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
|
SONIC_INSTALLERS += $(SONIC_ONE_IMAGE)
|
||||||
|
11
platform/barefoot/platform-modules-ingrasys.mk
Normal file
11
platform/barefoot/platform-modules-ingrasys.mk
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Ingrasys S9180-32X Platform modules
|
||||||
|
|
||||||
|
INGRASYS_S9180_32X_PLATFORM_MODULE_VERSION = 1.1.0
|
||||||
|
|
||||||
|
export INGRASYS_S9180_32X_PLATFORM_MODULE_VERSION
|
||||||
|
|
||||||
|
INGRASYS_S9180_32X_PLATFORM_MODULE = sonic-platform-ingrasys-s9180-32x_$(INGRASYS_S9180_32X_PLATFORM_MODULE_VERSION)_amd64.deb
|
||||||
|
$(INGRASYS_S9180_32X_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-ingrasys
|
||||||
|
$(INGRASYS_S9180_32X_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
|
||||||
|
$(INGRASYS_S9180_32X_PLATFORM_MODULE)_PLATFORM = x86_64-ingrasys_s9180_32x-r0
|
||||||
|
SONIC_DPKG_DEBS += $(INGRASYS_S9180_32X_PLATFORM_MODULE)
|
@ -1,6 +1,7 @@
|
|||||||
include $(PLATFORM_PATH)/platform-modules-bfn.mk
|
include $(PLATFORM_PATH)/platform-modules-bfn.mk
|
||||||
include $(PLATFORM_PATH)/platform-modules-bfn-montara.mk
|
include $(PLATFORM_PATH)/platform-modules-bfn-montara.mk
|
||||||
include $(PLATFORM_PATH)/platform-modules-wnc-osw1800.mk
|
include $(PLATFORM_PATH)/platform-modules-wnc-osw1800.mk
|
||||||
|
include $(PLATFORM_PATH)/platform-modules-ingrasys.mk
|
||||||
include $(PLATFORM_PATH)/bfn-sai.mk
|
include $(PLATFORM_PATH)/bfn-sai.mk
|
||||||
include $(PLATFORM_PATH)/docker-syncd-bfn.mk
|
include $(PLATFORM_PATH)/docker-syncd-bfn.mk
|
||||||
include $(PLATFORM_PATH)/docker-syncd-bfn-rpc.mk
|
include $(PLATFORM_PATH)/docker-syncd-bfn-rpc.mk
|
||||||
@ -11,12 +12,12 @@ include $(PLATFORM_PATH)/python-saithrift.mk
|
|||||||
include $(PLATFORM_PATH)/docker-ptf-bfn.mk
|
include $(PLATFORM_PATH)/docker-ptf-bfn.mk
|
||||||
include $(PLATFORM_PATH)/bfn-platform.mk
|
include $(PLATFORM_PATH)/bfn-platform.mk
|
||||||
include $(PLATFORM_PATH)/bfn-platform-wnc.mk
|
include $(PLATFORM_PATH)/bfn-platform-wnc.mk
|
||||||
|
include $(PLATFORM_PATH)/bfn-platform-ingrasys.mk
|
||||||
SONIC_ALL += $(SONIC_ONE_IMAGE) \
|
SONIC_ALL += $(SONIC_ONE_IMAGE) \
|
||||||
$(DOCKER_FPM)
|
$(DOCKER_FPM)
|
||||||
|
|
||||||
# Inject sai into sairedis
|
# Inject sai into sairedis
|
||||||
$(LIBSAIREDIS)_DEPENDS += $(BFN_SAI) $(WNC_OSW1800_PLATFORM) $(BFN_PLATFORM) #$(LIBSAITHRIFT_DEV_BFN)
|
$(LIBSAIREDIS)_DEPENDS += $(BFN_SAI) $(WNC_OSW1800_PLATFORM) $(BFN_INGRASYS_PLATFORM) $(BFN_PLATFORM) #$(LIBSAITHRIFT_DEV_BFN)
|
||||||
|
|
||||||
# Runtime dependency on sai is set only for syncd
|
# Runtime dependency on sai is set only for syncd
|
||||||
$(SYNCD)_RDEPENDS += $(BFN_SAI) $(WNC_OSW1800_PLATFORM) $(BFN_PLATFORM)
|
$(SYNCD)_RDEPENDS += $(BFN_SAI) $(WNC_OSW1800_PLATFORM) $(BFN_INGRASYS_PLATFORM) $(BFN_PLATFORM)
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c165fddbb8da8bb11efc3c6952cb98949f2cdc87
|
Loading…
Reference in New Issue
Block a user