[Accton]: Add a new supported platform, AS5712-54X (#1167)
* Switch Vendor: Edge-core * Switch SKU: AS5712-54X * ASIC Vendor: Broadcom * Swich ASIC: TRIDENT2 * Port Configuration: 48x10G+6x40G * SONiC Image: SONiC-ONIE-Broadcom Signed-off-by: polly_hsu@accton.com
This commit is contained in:
parent
21764008da
commit
0f903d008b
147
device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/port_config.ini
Normal file → Executable file
147
device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/port_config.ini
Normal file → Executable file
@ -1,74 +1,73 @@
|
||||
# name lanes alias
|
||||
Ethernet0 13 tenGigE0
|
||||
Ethernet1 14 tenGigE1
|
||||
Ethernet2 15 tenGigE2
|
||||
Ethernet3 16 tenGigE3
|
||||
Ethernet4 21 tenGigE4
|
||||
Ethernet5 22 tenGigE5
|
||||
Ethernet6 23 tenGigE6
|
||||
Ethernet7 24 tenGigE7
|
||||
Ethernet8 25 tenGigE8
|
||||
Ethernet9 26 tenGigE9
|
||||
Ethernet10 27 tenGigE10
|
||||
Ethernet11 28 tenGigE11
|
||||
Ethernet12 29 tenGigE12
|
||||
Ethernet13 30 tenGigE13
|
||||
Ethernet14 31 tenGigE14
|
||||
Ethernet15 32 tenGigE15
|
||||
Ethernet16 45 tenGigE16
|
||||
Ethernet17 46 tenGigE17
|
||||
Ethernet18 47 tenGigE18
|
||||
Ethernet19 48 tenGigE19
|
||||
Ethernet20 49 tenGigE20
|
||||
Ethernet21 50 tenGigE21
|
||||
Ethernet22 51 tenGigE22
|
||||
Ethernet23 52 tenGigE23
|
||||
Ethernet24 53 tenGigE24
|
||||
Ethernet25 54 tenGigE25
|
||||
Ethernet26 55 tenGigE26
|
||||
Ethernet27 56 tenGigE27
|
||||
Ethernet28 57 tenGigE28
|
||||
Ethernet29 58 tenGigE29
|
||||
Ethernet30 59 tenGigE30
|
||||
Ethernet31 60 tenGigE31
|
||||
Ethernet32 61 tenGigE32
|
||||
Ethernet33 62 tenGigE33
|
||||
Ethernet34 63 tenGigE34
|
||||
Ethernet35 64 tenGigE35
|
||||
Ethernet36 65 tenGigE36
|
||||
Ethernet37 66 tenGigE37
|
||||
Ethernet38 67 tenGigE38
|
||||
Ethernet39 68 tenGigE39
|
||||
Ethernet40 69 tenGigE40
|
||||
Ethernet41 70 tenGigE41
|
||||
Ethernet42 71 tenGigE42
|
||||
Ethernet43 72 tenGigE43
|
||||
Ethernet44 73 tenGigE44
|
||||
Ethernet45 74 tenGigE45
|
||||
Ethernet46 75 tenGigE46
|
||||
Ethernet47 76 tenGigE47
|
||||
Ethernet48 97 tenGigE48
|
||||
Ethernet49 98 tenGigE49
|
||||
Ethernet50 99 tenGigE50
|
||||
Ethernet51 100 tenGigE51
|
||||
Ethernet52 101 tenGigE52
|
||||
Ethernet53 102 tenGigE53
|
||||
Ethernet54 103 tenGigE54
|
||||
Ethernet55 104 tenGigE55
|
||||
Ethernet56 81 tenGigE56
|
||||
Ethernet57 82 tenGigE57
|
||||
Ethernet58 83 tenGigE58
|
||||
Ethernet59 84 tenGigE59
|
||||
Ethernet60 105 tenGigE60
|
||||
Ethernet61 106 tenGigE61
|
||||
Ethernet62 107 tenGigE62
|
||||
Ethernet63 108 tenGigE63
|
||||
Ethernet64 109 tenGigE64
|
||||
Ethernet65 110 tenGigE65
|
||||
Ethernet66 111 tenGigE66
|
||||
Ethernet67 112 tenGigE67
|
||||
Ethernet68 77 tenGigE68
|
||||
Ethernet69 78 tenGigE69
|
||||
Ethernet70 79 tenGigE70
|
||||
Ethernet71 80 tenGigE71
|
||||
|
||||
# name lanes alias index
|
||||
Ethernet0 13 tenGigE0 0
|
||||
Ethernet1 14 tenGigE1 1
|
||||
Ethernet2 15 tenGigE2 2
|
||||
Ethernet3 16 tenGigE3 3
|
||||
Ethernet4 21 tenGigE4 4
|
||||
Ethernet5 22 tenGigE5 5
|
||||
Ethernet6 23 tenGigE6 6
|
||||
Ethernet7 24 tenGigE7 7
|
||||
Ethernet8 25 tenGigE8 8
|
||||
Ethernet9 26 tenGigE9 9
|
||||
Ethernet10 27 tenGigE10 10
|
||||
Ethernet11 28 tenGigE11 11
|
||||
Ethernet12 29 tenGigE12 12
|
||||
Ethernet13 30 tenGigE13 13
|
||||
Ethernet14 31 tenGigE14 14
|
||||
Ethernet15 32 tenGigE15 15
|
||||
Ethernet16 45 tenGigE16 16
|
||||
Ethernet17 46 tenGigE17 17
|
||||
Ethernet18 47 tenGigE18 18
|
||||
Ethernet19 48 tenGigE19 19
|
||||
Ethernet20 49 tenGigE20 20
|
||||
Ethernet21 50 tenGigE21 21
|
||||
Ethernet22 51 tenGigE22 22
|
||||
Ethernet23 52 tenGigE23 23
|
||||
Ethernet24 53 tenGigE24 24
|
||||
Ethernet25 54 tenGigE25 25
|
||||
Ethernet26 55 tenGigE26 26
|
||||
Ethernet27 56 tenGigE27 27
|
||||
Ethernet28 57 tenGigE28 28
|
||||
Ethernet29 58 tenGigE29 29
|
||||
Ethernet30 59 tenGigE30 30
|
||||
Ethernet31 60 tenGigE31 31
|
||||
Ethernet32 61 tenGigE32 32
|
||||
Ethernet33 62 tenGigE33 33
|
||||
Ethernet34 63 tenGigE34 34
|
||||
Ethernet35 64 tenGigE35 35
|
||||
Ethernet36 65 tenGigE36 36
|
||||
Ethernet37 66 tenGigE37 37
|
||||
Ethernet38 67 tenGigE38 38
|
||||
Ethernet39 68 tenGigE39 39
|
||||
Ethernet40 69 tenGigE40 40
|
||||
Ethernet41 70 tenGigE41 41
|
||||
Ethernet42 71 tenGigE42 42
|
||||
Ethernet43 72 tenGigE43 43
|
||||
Ethernet44 73 tenGigE44 44
|
||||
Ethernet45 74 tenGigE45 45
|
||||
Ethernet46 75 tenGigE46 46
|
||||
Ethernet47 76 tenGigE47 47
|
||||
Ethernet48 97 tenGigE48 48
|
||||
Ethernet49 98 tenGigE49 49
|
||||
Ethernet50 99 tenGigE50 50
|
||||
Ethernet51 100 tenGigE51 51
|
||||
Ethernet52 101 tenGigE52 52
|
||||
Ethernet53 102 tenGigE53 53
|
||||
Ethernet54 103 tenGigE54 54
|
||||
Ethernet55 104 tenGigE55 55
|
||||
Ethernet56 81 tenGigE56 56
|
||||
Ethernet57 82 tenGigE57 57
|
||||
Ethernet58 83 tenGigE58 58
|
||||
Ethernet59 84 tenGigE59 59
|
||||
Ethernet60 105 tenGigE60 60
|
||||
Ethernet61 106 tenGigE61 61
|
||||
Ethernet62 107 tenGigE62 62
|
||||
Ethernet63 108 tenGigE63 63
|
||||
Ethernet64 109 tenGigE64 64
|
||||
Ethernet65 110 tenGigE65 65
|
||||
Ethernet66 111 tenGigE66 66
|
||||
Ethernet67 112 tenGigE67 67
|
||||
Ethernet68 77 tenGigE68 68
|
||||
Ethernet69 78 tenGigE69 69
|
||||
Ethernet70 79 tenGigE70 70
|
||||
Ethernet71 80 tenGigE71 71
|
||||
|
1
device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/sai.profile
Normal file → Executable file
1
device/accton/x86_64-accton_as5712_54x-r0/Accton-AS5712-54X/sai.profile
Normal file → Executable file
@ -1,2 +1 @@
|
||||
SAI_INIT_CONFIG_FILE=/etc/bcm/td2-as5712-72x10G.config.bcm
|
||||
|
||||
|
88
device/accton/x86_64-accton_as5712_54x-r0/minigraph.xml
Normal file → Executable file
88
device/accton/x86_64-accton_as5712_54x-r0/minigraph.xml
Normal file → Executable file
@ -4,18 +4,18 @@
|
||||
<PeeringSessions>
|
||||
<BGPSession>
|
||||
<StartRouter>OCPSCH0104001MS</StartRouter>
|
||||
<StartPeer>10.10.1.26</StartPeer>
|
||||
<EndRouter>switch1</EndRouter>
|
||||
<EndPeer>10.10.1.25</EndPeer>
|
||||
<StartPeer>10.10.1.2</StartPeer>
|
||||
<EndRouter>OCPSCH01040AALF</EndRouter>
|
||||
<EndPeer>10.10.1.1</EndPeer>
|
||||
<Multihop>1</Multihop>
|
||||
<HoldTime>10</HoldTime>
|
||||
<KeepAliveTime>3</KeepAliveTime>
|
||||
</BGPSession>
|
||||
<BGPSession>
|
||||
<StartRouter>OCPSCH0104002MS</StartRouter>
|
||||
<StartPeer>10.10.2.26</StartPeer>
|
||||
<EndRouter>switch1</EndRouter>
|
||||
<EndPeer>10.10.2.25</EndPeer>
|
||||
<StartPeer>10.10.2.2</StartPeer>
|
||||
<EndRouter>OCPSCH01040AALF</EndRouter>
|
||||
<EndPeer>10.10.2.1</EndPeer>
|
||||
<Multihop>1</Multihop>
|
||||
<HoldTime>10</HoldTime>
|
||||
<KeepAliveTime>3</KeepAliveTime>
|
||||
@ -24,15 +24,15 @@
|
||||
<Routers xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||
<a:BGPRouterDeclaration>
|
||||
<a:ASN>64536</a:ASN>
|
||||
<a:Hostname>switch1</a:Hostname>
|
||||
<a:Hostname>OCPSCH01040AALF</a:Hostname>
|
||||
<a:Peers>
|
||||
<BGPPeer>
|
||||
<Address>10.10.1.26</Address>
|
||||
<Address>10.10.1.1</Address>
|
||||
<RouteMapIn i:nil="true"/>
|
||||
<RouteMapOut i:nil="true"/>
|
||||
</BGPPeer>
|
||||
<BGPPeer>
|
||||
<Address>10.10.2.26</Address>
|
||||
<Address>10.10.2.1</Address>
|
||||
<RouteMapIn i:nil="true"/>
|
||||
<RouteMapOut i:nil="true"/>
|
||||
</BGPPeer>
|
||||
@ -59,29 +59,37 @@
|
||||
<Name>HostIP</Name>
|
||||
<AttachTo>Loopback0</AttachTo>
|
||||
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.NetMux">
|
||||
<b:IPPrefix>100.0.0.9/32</b:IPPrefix>
|
||||
<b:IPPrefix>100.0.0.3/32</b:IPPrefix>
|
||||
</a:Prefix>
|
||||
<a:PrefixStr>100.0.0.9/32</a:PrefixStr>
|
||||
<a:PrefixStr>100.0.0.3/32</a:PrefixStr>
|
||||
</a:LoopbackIPInterface>
|
||||
</LoopbackIPInterfaces>
|
||||
<ManagementIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||
<a:ManagementIPInterface>
|
||||
<Name>ManagementIP1</Name>
|
||||
<AttachTo>Management0</AttachTo>
|
||||
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.NetMux">
|
||||
<b:IPPrefix>192.168.200.12/24</b:IPPrefix>
|
||||
</a:Prefix>
|
||||
<a:PrefixStr>192.168.200.12/24</a:PrefixStr>
|
||||
</a:ManagementIPInterface>
|
||||
</ManagementIPInterfaces>
|
||||
<MplsInterfaces/>
|
||||
<MplsTeInterfaces/>
|
||||
<RsvpInterfaces/>
|
||||
<Hostname>switch1</Hostname>
|
||||
<Hostname>OCPSCH01040AALF</Hostname>
|
||||
<PortChannelInterfaces/>
|
||||
<VlanInterfaces/>
|
||||
<IPInterfaces>
|
||||
<IPInterface>
|
||||
<Name i:nil="true"/>
|
||||
<AttachTo>Ethernet48</AttachTo>
|
||||
<Prefix>10.10.1.25/30</Prefix>
|
||||
<AttachTo>tenGigE0</AttachTo>
|
||||
<Prefix>10.10.1.1/30</Prefix>
|
||||
</IPInterface>
|
||||
<IPInterface>
|
||||
<Name i:nil="true"/>
|
||||
<AttachTo>Ethernet52</AttachTo>
|
||||
<Prefix>10.10.2.25/30</Prefix>
|
||||
<AttachTo>tenGigE4</AttachTo>
|
||||
<Prefix>10.10.2.1/30</Prefix>
|
||||
</IPInterface>
|
||||
</IPInterfaces>
|
||||
<DataAcls/>
|
||||
@ -93,59 +101,33 @@
|
||||
<PngDec>
|
||||
<DeviceInterfaceLinks>
|
||||
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
||||
<Bandwidth>40000</Bandwidth>
|
||||
<Bandwidth>10000</Bandwidth>
|
||||
<ElementType>DeviceInterfaceLink</ElementType>
|
||||
<EndDevice>OCPSCH0104001MS</EndDevice>
|
||||
<EndPort>Ethernet24</EndPort>
|
||||
<StartDevice>switch1</StartDevice>
|
||||
<StartPort>Ethernet48</StartPort>
|
||||
<EndPort>tenGigE0</EndPort>
|
||||
<StartDevice>OCPSCH01040AALF</StartDevice>
|
||||
<StartPort>tenGigE0</StartPort>
|
||||
</DeviceLinkBase>
|
||||
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
||||
<Bandwidth>40000</Bandwidth>
|
||||
<Bandwidth>10000</Bandwidth>
|
||||
<ElementType>DeviceInterfaceLink</ElementType>
|
||||
<EndDevice>OCPSCH0104002MS</EndDevice>
|
||||
<EndPort>Ethernet24</EndPort>
|
||||
<StartDevice>switch1</StartDevice>
|
||||
<StartPort>Ethernet52</StartPort>
|
||||
<EndPort>tenGigE0</EndPort>
|
||||
<StartDevice>OCPSCH01040AALF</StartDevice>
|
||||
<StartPort>tenGigE4</StartPort>
|
||||
</DeviceLinkBase>
|
||||
</DeviceInterfaceLinks>
|
||||
<Devices>
|
||||
<Device i:type="LeafRouter">
|
||||
<Hostname>switch1</Hostname>
|
||||
<Hostname>OCPSCH01040AALF</Hostname>
|
||||
<HwSku>Accton-AS5712-54X</HwSku>
|
||||
</Device>
|
||||
</Devices>
|
||||
</PngDec>
|
||||
<MetadataDeclaration>
|
||||
<Devices xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||
<a:DeviceMetadata>
|
||||
<a:Name>switch1</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>
|
||||
<Devices xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||
<Properties xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution"/>
|
||||
</MetadataDeclaration>
|
||||
<Hostname>switch1</Hostname>
|
||||
<Hostname>OCPSCH01040AALF</Hostname>
|
||||
<HwSku>Accton-AS5712-54X</HwSku>
|
||||
</DeviceMiniGraph>
|
||||
|
213
device/accton/x86_64-accton_as5712_54x-r0/plugins/sfputil.py
Normal file → Executable file
213
device/accton/x86_64-accton_as5712_54x-r0/plugins/sfputil.py
Normal file → Executable file
@ -14,12 +14,90 @@ class SfpUtil(SfpUtilBase):
|
||||
"""Platform-specific SfpUtil class"""
|
||||
|
||||
PORT_START = 0
|
||||
PORT_END = 31
|
||||
PORTS_IN_BLOCK = 32
|
||||
PORT_END = 71
|
||||
PORTS_IN_BLOCK = 72
|
||||
QSFP_PORT_START = 72
|
||||
QSFP_PORT_END = 72
|
||||
|
||||
EEPROM_OFFSET = 20
|
||||
BASE_VAL_PATH = "/sys/class/i2c-adapter/i2c-{0}/{1}-0050/"
|
||||
|
||||
_port_to_is_present = {}
|
||||
|
||||
_port_to_eeprom_mapping = {}
|
||||
_port_to_i2c_mapping = {
|
||||
0: [2, 2],
|
||||
1: [3, 3],
|
||||
2: [4, 4],
|
||||
3: [5, 5],
|
||||
4: [6, 6],
|
||||
5: [7, 7],
|
||||
6: [8, 8],
|
||||
7: [9, 9],
|
||||
8: [10, 10],
|
||||
9: [11, 11],
|
||||
10: [12, 12],
|
||||
11: [13, 13],
|
||||
12: [14, 14],
|
||||
13: [15, 15],
|
||||
14: [16, 16],
|
||||
15: [17, 17],
|
||||
16: [18, 18],
|
||||
17: [19, 19],
|
||||
18: [20, 20],
|
||||
19: [21, 21],
|
||||
20: [22, 22],
|
||||
21: [23, 23],
|
||||
22: [24, 24],
|
||||
23: [25, 25],
|
||||
24: [26, 26],
|
||||
25: [27, 27],
|
||||
26: [28, 28],
|
||||
27: [29, 29],
|
||||
28: [30, 30],
|
||||
29: [31, 31],
|
||||
30: [32, 32],
|
||||
31: [33, 33],
|
||||
32: [34, 34],
|
||||
33: [35, 35],
|
||||
34: [36, 36],
|
||||
35: [37, 37],
|
||||
36: [38, 38],
|
||||
37: [39, 39],
|
||||
38: [40, 40],
|
||||
39: [41, 41],
|
||||
40: [42, 42],
|
||||
41: [43, 43],
|
||||
42: [44, 44],
|
||||
43: [45, 45],
|
||||
44: [46, 46],
|
||||
45: [47, 47],
|
||||
46: [48, 48],
|
||||
47: [49, 49],
|
||||
48: [50, 50], #QSFP49
|
||||
49: [50, 50],
|
||||
50: [50, 50],
|
||||
51: [50, 50],
|
||||
52: [52, 52], #QSFP50
|
||||
53: [52, 52],
|
||||
54: [52, 52],
|
||||
55: [52, 52],
|
||||
56: [54, 54], #QSFP51
|
||||
57: [54, 54],
|
||||
58: [54, 54],
|
||||
59: [54, 54],
|
||||
60: [51, 51], #QSFP52
|
||||
61: [51, 51],
|
||||
62: [51, 51],
|
||||
63: [51, 51],
|
||||
64: [53, 53], #QSFP53
|
||||
65: [53, 53],
|
||||
66: [53, 53],
|
||||
67: [53, 53],
|
||||
68: [55, 55], #QSFP54
|
||||
69: [55, 55],
|
||||
70: [55, 55],
|
||||
71: [55, 55],
|
||||
}
|
||||
|
||||
@property
|
||||
def port_start(self):
|
||||
@ -31,17 +109,19 @@ class SfpUtil(SfpUtilBase):
|
||||
|
||||
@property
|
||||
def qsfp_ports(self):
|
||||
return range(0, self.PORTS_IN_BLOCK + 1)
|
||||
return range(self.QSFP_PORT_START, self.PORTS_IN_BLOCK + 1)
|
||||
|
||||
@property
|
||||
def port_to_eeprom_mapping(self):
|
||||
return self._port_to_eeprom_mapping
|
||||
|
||||
def __init__(self):
|
||||
eeprom_path = "/sys/class/i2c-adapter/i2c-{0}/{0}-0050/eeprom"
|
||||
eeprom_path = self.BASE_VAL_PATH + "sfp_eeprom"
|
||||
|
||||
for x in range(0, self.port_end + 1):
|
||||
self._port_to_eeprom_mapping[x] = eeprom_path.format(x + self.EEPROM_OFFSET)
|
||||
for x in range(0, self.port_end+1):
|
||||
self.port_to_eeprom_mapping[x] = eeprom_path.format(
|
||||
self._port_to_i2c_mapping[x][0],
|
||||
self._port_to_i2c_mapping[x][1])
|
||||
|
||||
SfpUtilBase.__init__(self)
|
||||
|
||||
@ -50,126 +130,29 @@ class SfpUtil(SfpUtilBase):
|
||||
if port_num < self.port_start or port_num > self.port_end:
|
||||
return False
|
||||
|
||||
present_path = self.BASE_VAL_PATH + "sfp_is_present"
|
||||
self.__port_to_is_present = present_path.format(self._port_to_i2c_mapping[port_num][0], self._port_to_i2c_mapping[port_num][1])
|
||||
|
||||
try:
|
||||
reg_file = open("/sys/devices/platform/accton/qsfp_modprs")
|
||||
val_file = open(self.__port_to_is_present)
|
||||
except IOError as e:
|
||||
print "Error: unable to open file: %s" % str(e)
|
||||
return False
|
||||
|
||||
content = reg_file.readline().rstrip()
|
||||
content = val_file.readline().rstrip()
|
||||
val_file.close()
|
||||
|
||||
# content is a string containing the hex representation of the register
|
||||
reg_value = int(content, 16)
|
||||
|
||||
# Mask off the bit corresponding to our port
|
||||
mask = (1 << port_num)
|
||||
|
||||
# ModPrsL is active low
|
||||
if reg_value & mask == 0:
|
||||
# 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.port_end:
|
||||
return False
|
||||
|
||||
try:
|
||||
reg_file = open("/sys/devices/platform/accton/qsfp_lpmode")
|
||||
except IOError as e:
|
||||
print "Error: unable to open file: %s" % str(e)
|
||||
|
||||
content = reg_file.readline().rstrip()
|
||||
|
||||
# content is a string containing the hex representation of the register
|
||||
reg_value = int(content, 16)
|
||||
|
||||
# Mask off the bit corresponding to our port
|
||||
mask = (1 << port_num)
|
||||
|
||||
# LPMode is active high
|
||||
if reg_value & mask == 0:
|
||||
return False
|
||||
|
||||
return True
|
||||
raise NotImplementedError
|
||||
|
||||
def set_low_power_mode(self, port_num, lpmode):
|
||||
# Check for invalid port_num
|
||||
if port_num < self.port_start or port_num > self.port_end:
|
||||
return False
|
||||
|
||||
try:
|
||||
reg_file = open("/sys/devices/platform/accton/qsfp_lpmode", "r+")
|
||||
except IOError as e:
|
||||
print "Error: unable to open file: %s" % str(e)
|
||||
return False
|
||||
|
||||
content = reg_file.readline().rstrip()
|
||||
|
||||
# content is a string containing the hex representation of the register
|
||||
reg_value = int(content, 16)
|
||||
|
||||
# Mask off the bit corresponding to our port
|
||||
mask = (1 << port_num)
|
||||
|
||||
# LPMode is active high; set or clear the bit accordingly
|
||||
if lpmode is True:
|
||||
reg_value = reg_value | mask
|
||||
else:
|
||||
reg_value = reg_value & ~mask
|
||||
|
||||
# Convert our register value back to a hex string and write back
|
||||
content = hex(reg_value)
|
||||
|
||||
reg_file.seek(0)
|
||||
reg_file.write(content)
|
||||
reg_file.close()
|
||||
|
||||
return True
|
||||
raise NotImplementedError
|
||||
|
||||
def reset(self, port_num):
|
||||
QSFP_RESET_REGISTER_DEVICE_FILE = "/sys/devices/platform/accton/qsfp_reset"
|
||||
|
||||
# Check for invalid port_num
|
||||
if port_num < self.port_start or port_num > self.port_end:
|
||||
return False
|
||||
|
||||
try:
|
||||
reg_file = open(QSFP_RESET_REGISTER_DEVICE_FILE, "r+")
|
||||
except IOError as e:
|
||||
print "Error: unable to open file: %s" % str(e)
|
||||
return False
|
||||
|
||||
content = reg_file.readline().rstrip()
|
||||
|
||||
# File content is a string containing the hex representation of the register
|
||||
reg_value = int(content, 16)
|
||||
|
||||
# Mask off the bit corresponding to our port
|
||||
mask = (1 << port_num)
|
||||
|
||||
# ResetL is active low
|
||||
reg_value = reg_value & ~mask
|
||||
|
||||
# Convert our register value back to a hex string and write back
|
||||
reg_file.seek(0)
|
||||
reg_file.write(hex(reg_value))
|
||||
reg_file.close()
|
||||
|
||||
# Sleep 1 second to allow it to settle
|
||||
time.sleep(1)
|
||||
|
||||
# Flip the bit back high and write back to the register to take port out of reset
|
||||
try:
|
||||
reg_file = open(QSFP_RESET_REGISTER_DEVICE_FILE, "w")
|
||||
except IOError as e:
|
||||
print "Error: unable to open file: %s" % str(e)
|
||||
return False
|
||||
|
||||
reg_value = reg_value | mask
|
||||
reg_file.seek(0)
|
||||
reg_file.write(hex(reg_value))
|
||||
reg_file.close()
|
||||
|
||||
return True
|
||||
raise NotImplementedError
|
||||
|
1
platform/broadcom/one-image.mk
Normal file → Executable file
1
platform/broadcom/one-image.mk
Normal file → Executable file
@ -12,6 +12,7 @@ $(SONIC_ONE_IMAGE)_LAZY_INSTALLS += $(DELL_S6000_PLATFORM_MODULE) \
|
||||
$(INGRASYS_S9100_PLATFORM_MODULE) \
|
||||
$(INGRASYS_S8810_32Q_PLATFORM_MODULE) \
|
||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE) \
|
||||
$(ACCTON_AS5712_54X_PLATFORM_MODULE) \
|
||||
$(INVENTEC_D7032Q28B_PLATFORM_MODULE) \
|
||||
$(INVENTEC_D7054Q28B_PLATFORM_MODULE) \
|
||||
$(CEL_DX010_PLATFORM_MODULE)
|
||||
|
10
platform/broadcom/platform-modules-accton.mk
Normal file → Executable file
10
platform/broadcom/platform-modules-accton.mk
Normal file → Executable file
@ -1,11 +1,19 @@
|
||||
# Accton Platform modules
|
||||
|
||||
ACCTON_AS7712_32X_PLATFORM_MODULE_VERSION = 1.0
|
||||
ACCTON_AS7712_32X_PLATFORM_MODULE_VERSION = 1.1
|
||||
ACCTON_AS5712_54X_PLATFORM_MODULE_VERSION = 1.1
|
||||
|
||||
export ACCTON_AS7712_32X_PLATFORM_MODULE_VERSION
|
||||
export ACCTON_AS5712_54X_PLATFORM_MODULE_VERSION
|
||||
|
||||
ACCTON_AS7712_32X_PLATFORM_MODULE = sonic-platform-accton-as7712-32x_$(ACCTON_AS7712_32X_PLATFORM_MODULE_VERSION)_amd64.deb
|
||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-accton
|
||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
|
||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_PLATFORM = x86_64-accton_as7712_32x-r0
|
||||
SONIC_DPKG_DEBS += $(ACCTON_AS7712_32X_PLATFORM_MODULE)
|
||||
|
||||
ACCTON_AS5712_54X_PLATFORM_MODULE = sonic-platform-accton-as5712-54x_$(ACCTON_AS5712_54X_PLATFORM_MODULE_VERSION)_amd64.deb
|
||||
$(ACCTON_AS5712_54X_PLATFORM_MODULE)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-accton
|
||||
$(ACCTON_AS5712_54X_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
|
||||
$(ACCTON_AS5712_54X_PLATFORM_MODULE)_PLATFORM = x86_64-accton_as5712_54x-r0
|
||||
SONIC_DPKG_DEBS += $(ACCTON_AS5712_54X_PLATFORM_MODULE)
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 99607d63220de336a61d81f6b4d1e64062761abe
|
||||
Subproject commit 3fbde584ba15f0178dc22cb7e56f2bb8481692d4
|
Loading…
Reference in New Issue
Block a user