[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
|
# name lanes alias index
|
||||||
Ethernet0 13 tenGigE0
|
Ethernet0 13 tenGigE0 0
|
||||||
Ethernet1 14 tenGigE1
|
Ethernet1 14 tenGigE1 1
|
||||||
Ethernet2 15 tenGigE2
|
Ethernet2 15 tenGigE2 2
|
||||||
Ethernet3 16 tenGigE3
|
Ethernet3 16 tenGigE3 3
|
||||||
Ethernet4 21 tenGigE4
|
Ethernet4 21 tenGigE4 4
|
||||||
Ethernet5 22 tenGigE5
|
Ethernet5 22 tenGigE5 5
|
||||||
Ethernet6 23 tenGigE6
|
Ethernet6 23 tenGigE6 6
|
||||||
Ethernet7 24 tenGigE7
|
Ethernet7 24 tenGigE7 7
|
||||||
Ethernet8 25 tenGigE8
|
Ethernet8 25 tenGigE8 8
|
||||||
Ethernet9 26 tenGigE9
|
Ethernet9 26 tenGigE9 9
|
||||||
Ethernet10 27 tenGigE10
|
Ethernet10 27 tenGigE10 10
|
||||||
Ethernet11 28 tenGigE11
|
Ethernet11 28 tenGigE11 11
|
||||||
Ethernet12 29 tenGigE12
|
Ethernet12 29 tenGigE12 12
|
||||||
Ethernet13 30 tenGigE13
|
Ethernet13 30 tenGigE13 13
|
||||||
Ethernet14 31 tenGigE14
|
Ethernet14 31 tenGigE14 14
|
||||||
Ethernet15 32 tenGigE15
|
Ethernet15 32 tenGigE15 15
|
||||||
Ethernet16 45 tenGigE16
|
Ethernet16 45 tenGigE16 16
|
||||||
Ethernet17 46 tenGigE17
|
Ethernet17 46 tenGigE17 17
|
||||||
Ethernet18 47 tenGigE18
|
Ethernet18 47 tenGigE18 18
|
||||||
Ethernet19 48 tenGigE19
|
Ethernet19 48 tenGigE19 19
|
||||||
Ethernet20 49 tenGigE20
|
Ethernet20 49 tenGigE20 20
|
||||||
Ethernet21 50 tenGigE21
|
Ethernet21 50 tenGigE21 21
|
||||||
Ethernet22 51 tenGigE22
|
Ethernet22 51 tenGigE22 22
|
||||||
Ethernet23 52 tenGigE23
|
Ethernet23 52 tenGigE23 23
|
||||||
Ethernet24 53 tenGigE24
|
Ethernet24 53 tenGigE24 24
|
||||||
Ethernet25 54 tenGigE25
|
Ethernet25 54 tenGigE25 25
|
||||||
Ethernet26 55 tenGigE26
|
Ethernet26 55 tenGigE26 26
|
||||||
Ethernet27 56 tenGigE27
|
Ethernet27 56 tenGigE27 27
|
||||||
Ethernet28 57 tenGigE28
|
Ethernet28 57 tenGigE28 28
|
||||||
Ethernet29 58 tenGigE29
|
Ethernet29 58 tenGigE29 29
|
||||||
Ethernet30 59 tenGigE30
|
Ethernet30 59 tenGigE30 30
|
||||||
Ethernet31 60 tenGigE31
|
Ethernet31 60 tenGigE31 31
|
||||||
Ethernet32 61 tenGigE32
|
Ethernet32 61 tenGigE32 32
|
||||||
Ethernet33 62 tenGigE33
|
Ethernet33 62 tenGigE33 33
|
||||||
Ethernet34 63 tenGigE34
|
Ethernet34 63 tenGigE34 34
|
||||||
Ethernet35 64 tenGigE35
|
Ethernet35 64 tenGigE35 35
|
||||||
Ethernet36 65 tenGigE36
|
Ethernet36 65 tenGigE36 36
|
||||||
Ethernet37 66 tenGigE37
|
Ethernet37 66 tenGigE37 37
|
||||||
Ethernet38 67 tenGigE38
|
Ethernet38 67 tenGigE38 38
|
||||||
Ethernet39 68 tenGigE39
|
Ethernet39 68 tenGigE39 39
|
||||||
Ethernet40 69 tenGigE40
|
Ethernet40 69 tenGigE40 40
|
||||||
Ethernet41 70 tenGigE41
|
Ethernet41 70 tenGigE41 41
|
||||||
Ethernet42 71 tenGigE42
|
Ethernet42 71 tenGigE42 42
|
||||||
Ethernet43 72 tenGigE43
|
Ethernet43 72 tenGigE43 43
|
||||||
Ethernet44 73 tenGigE44
|
Ethernet44 73 tenGigE44 44
|
||||||
Ethernet45 74 tenGigE45
|
Ethernet45 74 tenGigE45 45
|
||||||
Ethernet46 75 tenGigE46
|
Ethernet46 75 tenGigE46 46
|
||||||
Ethernet47 76 tenGigE47
|
Ethernet47 76 tenGigE47 47
|
||||||
Ethernet48 97 tenGigE48
|
Ethernet48 97 tenGigE48 48
|
||||||
Ethernet49 98 tenGigE49
|
Ethernet49 98 tenGigE49 49
|
||||||
Ethernet50 99 tenGigE50
|
Ethernet50 99 tenGigE50 50
|
||||||
Ethernet51 100 tenGigE51
|
Ethernet51 100 tenGigE51 51
|
||||||
Ethernet52 101 tenGigE52
|
Ethernet52 101 tenGigE52 52
|
||||||
Ethernet53 102 tenGigE53
|
Ethernet53 102 tenGigE53 53
|
||||||
Ethernet54 103 tenGigE54
|
Ethernet54 103 tenGigE54 54
|
||||||
Ethernet55 104 tenGigE55
|
Ethernet55 104 tenGigE55 55
|
||||||
Ethernet56 81 tenGigE56
|
Ethernet56 81 tenGigE56 56
|
||||||
Ethernet57 82 tenGigE57
|
Ethernet57 82 tenGigE57 57
|
||||||
Ethernet58 83 tenGigE58
|
Ethernet58 83 tenGigE58 58
|
||||||
Ethernet59 84 tenGigE59
|
Ethernet59 84 tenGigE59 59
|
||||||
Ethernet60 105 tenGigE60
|
Ethernet60 105 tenGigE60 60
|
||||||
Ethernet61 106 tenGigE61
|
Ethernet61 106 tenGigE61 61
|
||||||
Ethernet62 107 tenGigE62
|
Ethernet62 107 tenGigE62 62
|
||||||
Ethernet63 108 tenGigE63
|
Ethernet63 108 tenGigE63 63
|
||||||
Ethernet64 109 tenGigE64
|
Ethernet64 109 tenGigE64 64
|
||||||
Ethernet65 110 tenGigE65
|
Ethernet65 110 tenGigE65 65
|
||||||
Ethernet66 111 tenGigE66
|
Ethernet66 111 tenGigE66 66
|
||||||
Ethernet67 112 tenGigE67
|
Ethernet67 112 tenGigE67 67
|
||||||
Ethernet68 77 tenGigE68
|
Ethernet68 77 tenGigE68 68
|
||||||
Ethernet69 78 tenGigE69
|
Ethernet69 78 tenGigE69 69
|
||||||
Ethernet70 79 tenGigE70
|
Ethernet70 79 tenGigE70 70
|
||||||
Ethernet71 80 tenGigE71
|
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
|
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>
|
<PeeringSessions>
|
||||||
<BGPSession>
|
<BGPSession>
|
||||||
<StartRouter>OCPSCH0104001MS</StartRouter>
|
<StartRouter>OCPSCH0104001MS</StartRouter>
|
||||||
<StartPeer>10.10.1.26</StartPeer>
|
<StartPeer>10.10.1.2</StartPeer>
|
||||||
<EndRouter>switch1</EndRouter>
|
<EndRouter>OCPSCH01040AALF</EndRouter>
|
||||||
<EndPeer>10.10.1.25</EndPeer>
|
<EndPeer>10.10.1.1</EndPeer>
|
||||||
<Multihop>1</Multihop>
|
<Multihop>1</Multihop>
|
||||||
<HoldTime>10</HoldTime>
|
<HoldTime>10</HoldTime>
|
||||||
<KeepAliveTime>3</KeepAliveTime>
|
<KeepAliveTime>3</KeepAliveTime>
|
||||||
</BGPSession>
|
</BGPSession>
|
||||||
<BGPSession>
|
<BGPSession>
|
||||||
<StartRouter>OCPSCH0104002MS</StartRouter>
|
<StartRouter>OCPSCH0104002MS</StartRouter>
|
||||||
<StartPeer>10.10.2.26</StartPeer>
|
<StartPeer>10.10.2.2</StartPeer>
|
||||||
<EndRouter>switch1</EndRouter>
|
<EndRouter>OCPSCH01040AALF</EndRouter>
|
||||||
<EndPeer>10.10.2.25</EndPeer>
|
<EndPeer>10.10.2.1</EndPeer>
|
||||||
<Multihop>1</Multihop>
|
<Multihop>1</Multihop>
|
||||||
<HoldTime>10</HoldTime>
|
<HoldTime>10</HoldTime>
|
||||||
<KeepAliveTime>3</KeepAliveTime>
|
<KeepAliveTime>3</KeepAliveTime>
|
||||||
@ -24,15 +24,15 @@
|
|||||||
<Routers xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
<Routers xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
||||||
<a:BGPRouterDeclaration>
|
<a:BGPRouterDeclaration>
|
||||||
<a:ASN>64536</a:ASN>
|
<a:ASN>64536</a:ASN>
|
||||||
<a:Hostname>switch1</a:Hostname>
|
<a:Hostname>OCPSCH01040AALF</a:Hostname>
|
||||||
<a:Peers>
|
<a:Peers>
|
||||||
<BGPPeer>
|
<BGPPeer>
|
||||||
<Address>10.10.1.26</Address>
|
<Address>10.10.1.1</Address>
|
||||||
<RouteMapIn i:nil="true"/>
|
<RouteMapIn i:nil="true"/>
|
||||||
<RouteMapOut i:nil="true"/>
|
<RouteMapOut i:nil="true"/>
|
||||||
</BGPPeer>
|
</BGPPeer>
|
||||||
<BGPPeer>
|
<BGPPeer>
|
||||||
<Address>10.10.2.26</Address>
|
<Address>10.10.2.1</Address>
|
||||||
<RouteMapIn i:nil="true"/>
|
<RouteMapIn i:nil="true"/>
|
||||||
<RouteMapOut i:nil="true"/>
|
<RouteMapOut i:nil="true"/>
|
||||||
</BGPPeer>
|
</BGPPeer>
|
||||||
@ -59,29 +59,37 @@
|
|||||||
<Name>HostIP</Name>
|
<Name>HostIP</Name>
|
||||||
<AttachTo>Loopback0</AttachTo>
|
<AttachTo>Loopback0</AttachTo>
|
||||||
<a:Prefix xmlns:b="Microsoft.Search.Autopilot.NetMux">
|
<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:Prefix>
|
||||||
<a:PrefixStr>100.0.0.9/32</a:PrefixStr>
|
<a:PrefixStr>100.0.0.3/32</a:PrefixStr>
|
||||||
</a:LoopbackIPInterface>
|
</a:LoopbackIPInterface>
|
||||||
</LoopbackIPInterfaces>
|
</LoopbackIPInterfaces>
|
||||||
<ManagementIPInterfaces xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
<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>
|
</ManagementIPInterfaces>
|
||||||
<MplsInterfaces/>
|
<MplsInterfaces/>
|
||||||
<MplsTeInterfaces/>
|
<MplsTeInterfaces/>
|
||||||
<RsvpInterfaces/>
|
<RsvpInterfaces/>
|
||||||
<Hostname>switch1</Hostname>
|
<Hostname>OCPSCH01040AALF</Hostname>
|
||||||
<PortChannelInterfaces/>
|
<PortChannelInterfaces/>
|
||||||
<VlanInterfaces/>
|
<VlanInterfaces/>
|
||||||
<IPInterfaces>
|
<IPInterfaces>
|
||||||
<IPInterface>
|
<IPInterface>
|
||||||
<Name i:nil="true"/>
|
<Name i:nil="true"/>
|
||||||
<AttachTo>Ethernet48</AttachTo>
|
<AttachTo>tenGigE0</AttachTo>
|
||||||
<Prefix>10.10.1.25/30</Prefix>
|
<Prefix>10.10.1.1/30</Prefix>
|
||||||
</IPInterface>
|
</IPInterface>
|
||||||
<IPInterface>
|
<IPInterface>
|
||||||
<Name i:nil="true"/>
|
<Name i:nil="true"/>
|
||||||
<AttachTo>Ethernet52</AttachTo>
|
<AttachTo>tenGigE4</AttachTo>
|
||||||
<Prefix>10.10.2.25/30</Prefix>
|
<Prefix>10.10.2.1/30</Prefix>
|
||||||
</IPInterface>
|
</IPInterface>
|
||||||
</IPInterfaces>
|
</IPInterfaces>
|
||||||
<DataAcls/>
|
<DataAcls/>
|
||||||
@ -93,59 +101,33 @@
|
|||||||
<PngDec>
|
<PngDec>
|
||||||
<DeviceInterfaceLinks>
|
<DeviceInterfaceLinks>
|
||||||
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
||||||
<Bandwidth>40000</Bandwidth>
|
<Bandwidth>10000</Bandwidth>
|
||||||
<ElementType>DeviceInterfaceLink</ElementType>
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
<EndDevice>OCPSCH0104001MS</EndDevice>
|
<EndDevice>OCPSCH0104001MS</EndDevice>
|
||||||
<EndPort>Ethernet24</EndPort>
|
<EndPort>tenGigE0</EndPort>
|
||||||
<StartDevice>switch1</StartDevice>
|
<StartDevice>OCPSCH01040AALF</StartDevice>
|
||||||
<StartPort>Ethernet48</StartPort>
|
<StartPort>tenGigE0</StartPort>
|
||||||
</DeviceLinkBase>
|
</DeviceLinkBase>
|
||||||
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
<DeviceLinkBase i:type="DeviceInterfaceLink">
|
||||||
<Bandwidth>40000</Bandwidth>
|
<Bandwidth>10000</Bandwidth>
|
||||||
<ElementType>DeviceInterfaceLink</ElementType>
|
<ElementType>DeviceInterfaceLink</ElementType>
|
||||||
<EndDevice>OCPSCH0104002MS</EndDevice>
|
<EndDevice>OCPSCH0104002MS</EndDevice>
|
||||||
<EndPort>Ethernet24</EndPort>
|
<EndPort>tenGigE0</EndPort>
|
||||||
<StartDevice>switch1</StartDevice>
|
<StartDevice>OCPSCH01040AALF</StartDevice>
|
||||||
<StartPort>Ethernet52</StartPort>
|
<StartPort>tenGigE4</StartPort>
|
||||||
</DeviceLinkBase>
|
</DeviceLinkBase>
|
||||||
</DeviceInterfaceLinks>
|
</DeviceInterfaceLinks>
|
||||||
<Devices>
|
<Devices>
|
||||||
<Device i:type="LeafRouter">
|
<Device i:type="LeafRouter">
|
||||||
<Hostname>switch1</Hostname>
|
<Hostname>OCPSCH01040AALF</Hostname>
|
||||||
<HwSku>Accton-AS5712-54X</HwSku>
|
<HwSku>Accton-AS5712-54X</HwSku>
|
||||||
</Device>
|
</Device>
|
||||||
</Devices>
|
</Devices>
|
||||||
</PngDec>
|
</PngDec>
|
||||||
<MetadataDeclaration>
|
<MetadataDeclaration>
|
||||||
<Devices xmlns:a="http://schemas.datacontract.org/2004/07/Microsoft.Search.Autopilot.Evolution">
|
<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>
|
|
||||||
<Properties 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>
|
</MetadataDeclaration>
|
||||||
<Hostname>switch1</Hostname>
|
<Hostname>OCPSCH01040AALF</Hostname>
|
||||||
<HwSku>Accton-AS5712-54X</HwSku>
|
<HwSku>Accton-AS5712-54X</HwSku>
|
||||||
</DeviceMiniGraph>
|
</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"""
|
"""Platform-specific SfpUtil class"""
|
||||||
|
|
||||||
PORT_START = 0
|
PORT_START = 0
|
||||||
PORT_END = 31
|
PORT_END = 71
|
||||||
PORTS_IN_BLOCK = 32
|
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_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
|
@property
|
||||||
def port_start(self):
|
def port_start(self):
|
||||||
@ -31,17 +109,19 @@ class SfpUtil(SfpUtilBase):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def qsfp_ports(self):
|
def qsfp_ports(self):
|
||||||
return range(0, self.PORTS_IN_BLOCK + 1)
|
return range(self.QSFP_PORT_START, self.PORTS_IN_BLOCK + 1)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def port_to_eeprom_mapping(self):
|
def port_to_eeprom_mapping(self):
|
||||||
return self._port_to_eeprom_mapping
|
return self._port_to_eeprom_mapping
|
||||||
|
|
||||||
def __init__(self):
|
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):
|
for x in range(0, self.port_end+1):
|
||||||
self._port_to_eeprom_mapping[x] = eeprom_path.format(x + self.EEPROM_OFFSET)
|
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)
|
SfpUtilBase.__init__(self)
|
||||||
|
|
||||||
@ -50,126 +130,29 @@ class SfpUtil(SfpUtilBase):
|
|||||||
if port_num < self.port_start or port_num > self.port_end:
|
if port_num < self.port_start or port_num > self.port_end:
|
||||||
return False
|
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:
|
try:
|
||||||
reg_file = open("/sys/devices/platform/accton/qsfp_modprs")
|
val_file = open(self.__port_to_is_present)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
print "Error: unable to open file: %s" % str(e)
|
print "Error: unable to open file: %s" % str(e)
|
||||||
return False
|
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
|
# content is a string, either "0" or "1"
|
||||||
reg_value = int(content, 16)
|
if content == "1":
|
||||||
|
|
||||||
# Mask off the bit corresponding to our port
|
|
||||||
mask = (1 << port_num)
|
|
||||||
|
|
||||||
# ModPrsL is active low
|
|
||||||
if reg_value & mask == 0:
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_low_power_mode(self, port_num):
|
def get_low_power_mode(self, port_num):
|
||||||
# Check for invalid port_num
|
raise NotImplementedError
|
||||||
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
|
|
||||||
|
|
||||||
def set_low_power_mode(self, port_num, lpmode):
|
def set_low_power_mode(self, port_num, lpmode):
|
||||||
# Check for invalid port_num
|
raise NotImplementedError
|
||||||
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
|
|
||||||
|
|
||||||
def reset(self, port_num):
|
def reset(self, port_num):
|
||||||
QSFP_RESET_REGISTER_DEVICE_FILE = "/sys/devices/platform/accton/qsfp_reset"
|
raise NotImplementedError
|
||||||
|
|
||||||
# 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
|
|
||||||
|
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_S9100_PLATFORM_MODULE) \
|
||||||
$(INGRASYS_S8810_32Q_PLATFORM_MODULE) \
|
$(INGRASYS_S8810_32Q_PLATFORM_MODULE) \
|
||||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE) \
|
$(ACCTON_AS7712_32X_PLATFORM_MODULE) \
|
||||||
|
$(ACCTON_AS5712_54X_PLATFORM_MODULE) \
|
||||||
$(INVENTEC_D7032Q28B_PLATFORM_MODULE) \
|
$(INVENTEC_D7032Q28B_PLATFORM_MODULE) \
|
||||||
$(INVENTEC_D7054Q28B_PLATFORM_MODULE) \
|
$(INVENTEC_D7054Q28B_PLATFORM_MODULE) \
|
||||||
$(CEL_DX010_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 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_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 = 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)_SRC_PATH = $(PLATFORM_PATH)/sonic-platform-modules-accton
|
||||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
|
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_DEPENDS += $(LINUX_HEADERS) $(LINUX_HEADERS_COMMON)
|
||||||
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_PLATFORM = x86_64-accton_as7712_32x-r0
|
$(ACCTON_AS7712_32X_PLATFORM_MODULE)_PLATFORM = x86_64-accton_as7712_32x-r0
|
||||||
SONIC_DPKG_DEBS += $(ACCTON_AS7712_32X_PLATFORM_MODULE)
|
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