Skip to content

Conversation

@hanger0106
Copy link

feat: Add full platform support for Accton DCG8510-32D

This commit introduces comprehensive platform support for the Accton DCG8510-32D switch platform.
This platform is also marketed by Edgecore as the AS9516-32Dv2.
For ONL development, the platform name remains dcg8510_32d (x86_64-accton_dcg8510_32d-r0).

[ACCTON][DCG8510-32D] Platform Specifications:

CPU: Intel Xeon D-1627, 2.90GHz
Sub-system:
DDR SDRAM: 32GB DDR4 ECC
M.2 SSD: 128GB
TPM: Trusted Platform Module 2.0

Management:
Console Port: UART RS232 (RJ45)
OOBM: 1x 1GbE (RJ45, Intel I210)
USB: 1x Type-A Port

Timing:
GNSS, 1PPS IN/OUT, 10MHz IN/OUT, ToD PPS support

MAC: Intel Tofino2 BFN-T20-128Q - Main Switching ASIC

Ethernet Ports:
32x QSFP-DD (Front, supports 400G/200G/100G/50G/40G/25G/10G)
Additional: 4x Intel X552 10GbE (Backplane), 1x Ethernity Networks Device 0110

CPLD: LATTICE MachXO3, LCMXO3LF family

FPGA: Xilinx Corporation Device 7021

PSU: 2x Hot-swappable AC/DC (1+1 Redundant), with internal fans


Detailed Changes Summary:

  • Initial platform integration and setup.
  • Implementation of core drivers (fan, LED, thermal).
  • Enhanced PSU handling (fan control, eeprom).
  • Refactored code (removed unused files/code).
  • Addressed bug fixes (fan status, thermal count).

peterd-sky and others added 30 commits March 23, 2021 09:29
The memory leak occurs on several accton platforms. It occurs on switches
that do not have PSU1 present. The memory leak is caused due to an allocated,
but empty string being returned from the onlp_file_read_str() function. The
code calling the onlp_file_read_str() function would free the returned
allocated string only if the string was not NULL and not empty.

Signed-off-by: Peter Dobransky <[email protected]>
The memory leak occurs on several accton platforms. It occurs on switches
that do not have PSU1 present. The memory leak is caused due to an allocated,
but empty string being returned from the onlp_file_read_str() function. The
code calling the onlp_file_read_str() function would free the returned
allocated string only if the string was not NULL and not empty.

Signed-off-by: Brandon Chuang <[email protected]>
Due to the HW change, make eeprom access compatible with both new and
old conditions.

Signed-off-by: Sean Wu <[email protected]>
CPU: Intel Broadwell-DE, 4 Core
MAC: Broadcom BCM88690
TCAM: Broadcom BCM16K knowledge-Based Processor
PHY: Broadcom BCM81724
CPLD: ALTERA 10M04SAU169C8G (1pc, BGA169 package)
      ALTERA 10M04SCU169C8G (2pc, BGA169 package)
      ALTERA 5M1270 ZF256C5N
FPGA: ALTERA EP4CGX30BF14C7N
Ethernet Ports: 40x QSFP28
Fabric Ports: 13x QSFP-DD
OOB Ports: 2x SFP+
Power Supply: 12V from 1600W PSU * 2
Cooling: 12V 60X60 fan-tray module *5, hot-swappable
Dimension: 635 mm (D: Depth) x 440mm (W: Width) x 87 mm (H: Height)

Signed-off-by: Brandon Chuang <[email protected]>
New PSU: YM-2401HCR, YM-2401HDR

Signed-off-by: Sean Wu <[email protected]>
To prevent error result from BMC message broken,
1. Remain wait time (55000us) and retry more times (20 times)
   These are experimental results.
   If wait time is over 80000us, it will cause onlpd for increasing
   CPU usage.
   Verified by overnight busy run and no error at /var/log/onlpd.log.
2. Clear tty rx buffer before transaction.
3. PSUs should locate at 0x5a and 0x59, instead of 0x59 and 0x5a.
4. Print PSU's model_name and serial if it's present but not powered.
5. Set i2c mux to PSUs are both opened. It makes no conflict for
   their addresses diff.
6. For individual onlp API can be called after its own init() is run.

Signed-off-by: Jake Lin <[email protected]>
To support as7315-27xb AC PSU,
1. Add new PSU model information to ym2651y.c for V_IN, I_IN and P_IN.
2. Add some conditions for ym2651y.c.
3. Add new PSU model information to x86-64-accton-as7315-27xb-psu.c.
4. Modify psui.c to support onlpd showing AC PSU state.

Signed-off-by: Jake Lin <[email protected]>
 - Remove soft link with D7332 for they're not using same drivers now
 - Update ONLP and init script according to driver changes

Signed-off-by: Dada Shih <[email protected]>
 - Support SMBus I2C topology.
 - Support I2C error handling.
 - Upgrade SWPS to verion SWPS_GA_v0.1.0 and bug fixes.
 - Fixed system can't bootup issues.
 - Fixed FAN VPD address conflict issues.
 - Fixed ONLP for fan and sfp module related issues.
 - Fixed present status abnormal issues.
 - Fixed lpmod status abnormal issues.
 - Fixed page select abnormal issues.

Signed-off-by: Dada Shih <[email protected]>
Because ym2651y.c returns 0 for unsupported PSU,
we remove the redundant condition in psui.c.

Signed-off-by: Jake Lin <[email protected]>
To support as5915-18x AC PSU,
1. Add new PSU model information to ym2651y.c for V_IN, I_IN and P_IN.
2. Add some conditions for ym2651y.c.
3. Add x86-64-accton-as7315-27xb-psu.c to show PSU eeprom.
4. Modify psui.c to support onlpd showing AC PSU state.
5. Modify __init__.py to insert driver(x86-64-accton-as7315-27xb-psu.ko).

Signed-off-by: Jake Lin <[email protected]>
The output of onlpdump is as below:
    psu @ 1 = {
        Description: PSU-1
        Model:  FSJ033-610G
        SN:     FSJ033202100000303
        Status: 0x00000001 [ PRESENT ]
        Caps:   0x000001fc [ DC48,VIN,VOUT,IIN,IOUT,PIN,POUT ]
        Vin:    54187
        Vout:   12031
        Iin:    2382
        Iout:   7500
        Pin:    121750
        Pout:   87000
        fan @ 7 = {
            Description: PSU 1 - Fan 1
            Status: 0x00000009 [ PRESENT,F2B ]
            Caps:   0x00000030 [ GET_RPM,GET_PERCENTAGE ]
            RPM:    14976
            Per:    58
            Model:  NULL
            SN:     NULL
        }
        thermal @ 11 = {
            Description: PSU-1 Thermal Sensor 1
            Status: 0x00000001 [ PRESENT ]
            Caps:   0x0000000f [ GET_TEMPERATURE,GET_WARNING_THRESHOLD,GET_ERROR_THRESHOLD,GET_SHUTDOWN_THRESHOLD ]
            Temperature: 29000
            thresholds = {
                Warning: 74000
                Error: 80000
                Shutdown: 84000
            }
        }
        thermal @ 12 = {
            Description: PSU-1 Thermal Sensor 2
            Status: 0x00000001 [ PRESENT ]
            Caps:   0x0000000f [ GET_TEMPERATURE,GET_WARNING_THRESHOLD,GET_ERROR_THRESHOLD,GET_SHUTDOWN_THRESHOLD ]
            Temperature: 42000
            thresholds = {
                Warning: 74000
                Error: 80000
                Shutdown: 84000
            }
        }
        thermal @ 13 = {
            Description: PSU-1 Thermal Sensor 3
            Status: 0x00000001 [ PRESENT ]
            Caps:   0x0000000f [ GET_TEMPERATURE,GET_WARNING_THRESHOLD,GET_ERROR_THRESHOLD,GET_SHUTDOWN_THRESHOLD ]
            Temperature: 44000
            thresholds = {
                Warning: 74000
                Error: 80000
                Shutdown: 84000
            }
        }
    }

Signed-off-by: Brandon Chuang <[email protected]>
CPU: Intel Broadwell-DE x86 8 cores
MAC: Broadcom BCM88795
PHY: Marvell 88E1111 & INPHI CS4227
CPLD: ALTERA 5M1270ZF256C5N (3 pcs, BGA256 package)
FPGA: ALTERA EP4CGX30CF23C7N (1 pc, BGA484 package)
ALETRA 10M04DAU324C8G (1 pc, BGA324 package)
Ethernet Port: 400G QSFP-DD port x 24
OOB Ports: 2x SFP+
Power Supply: 12V from 1300W PSU * 2
Cooling: 6 fan-tray modules with 41mmx41mmx92.9mm 12V fans, hot-swappable
Dimension: 536 mm (D: Depth) x 438.4 mm (W: Width) x 43.1 mm (H: Height)

Signed-off-by: Alex Lai <[email protected]>
…olt16-sfp.c

1. will add and commit some new codes the this file, so applied the

   Linux coding stye to it first.

Signed-off-by: Alex Lai <[email protected]>
1. A sysfs should exist to access the qsfp lp mode.

Signed-off-by: Alex Lai <[email protected]>
CPU: Intel Denverton C3558
MAC: Broadcom BCM56870
PHY: Broadcom BCM54616S
CPLD: Altera 5M2210 (3 pcs)
CPLD: Altera 5M1270 (2 pcs)
Ethernet Port: 32x QSFP100 ports and 2 x SFP+ ports(option)
Power Supply: 12V from 650W * 2
Cooling: 6 fan-tray modules with 6 pcs of 40mm x40mm x 56mm 12V fans, hot-swappable
Dimension: 515 mm (L: Depth) x 438.4mm (W: Width) x 43.5 mm (H: Height maximum)

Signed-off-by: Alex Lai <[email protected]>
Certificate checks are now disabled when pulling kernel tarballs under Jessie.
CPU: Intel Atom Processor C3508, 1.6GHz
MAC: Broadcom BCM88470
PHY: Broadcom BCM54140
CPLD: Altera 5M2210ZF324I5N (FBGA324) and 5M1270ZF256I5 (FBGA256)
FPGA: Altera EP4CGX30CF23I7N
Management:UART RS232 console port (RJ45), Out-band Management Ethernet port (RJ45)
Ethernet Ports:
    2x100GE QSFP28,
    8x1/10/25G SFP28,
    16x1/10G SFP+,
    4x10/100/1000M RJ45
Power Supply: Max 300W PSU, DC to DC, 1+1 redundant load-sharing, hot-swappable
Cooling: 5 fan-tray modules with 5 pcs of 40mm x40mm x 28mm 12V fans, hot-swappable
Dimension: 299.8 mm (D: Depth) x 438mm (W: Width) x 43.25 mm (H: Height)
PCB:
    20-Layers, TU883 and TU865 for Motherboard
    14-Layers, CPU module (depends on make and model)
    8-Layers, TG 150 Power Connection Board
    4-Layers, TG 150 FAN Board
    4-Layers, TG 150 Backplane Board

Signed-off-by: Brandon Chuang <[email protected]>
Description:
Support new PSU model "DPS-920AB B"

Changes:
1. Modify psui.c to ditinguish new delta model "DPS-920AB B"
2. Add vout/iout/pout capabilities into psui.c
   (Old psui.h did not define the fields when accton was developing as4610 long time ago,
   Now the fields are provided and should be filled in)
3. Modify accton_as4610_psu.c to verify the model name and serial of 3y/delta PSU.
4. Modify ym2651y.c to read vout_mode if the register is used.
   Originally, 3Y PSU only use READ_VOUT,
   But the new Delta psu use both READ_VOUT and VOUT_MODE registers.

```
psu @ 1 = {
    Description: PSU-1
    Model:  YM-1601A
    SN:     SA000P121518000062
    Status: 0x00000001 [ PRESENT ]
    Caps:   0x00000151 [ AC,VOUT,IOUT,POUT ]
    Vin:    0
    Vout:   54750
    Iin:    0
    Iout:   472
    Pin:    0
    Pout:   26000
}
psu @ 2 = {
    Description: PSU-2
    Model:  DPS-920AB B
    SN:     JQDD2125001617
    Status: 0x00000001 [ PRESENT ]
    Caps:   0x00000151 [ AC,VOUT,IOUT,POUT ]
    Vin:    0
    Vout:   54613
    Iin:    0
    Iout:   367
    Pin:    0
    Pout:   20000
}
```

Signed-off-by: Brandon Chuang <[email protected]>
sonoble and others added 29 commits May 14, 2024 08:28
…b_lpmode

[Edgecore][as7535_28xb] Add QSFP LP Mode
…0xfb_loc_led

[Edgecore][as7926_40xfb] Revise locator LED definition
…b_support_qsfp_reset_lpmode

[Edgecore][as7946-30xb] Add LP mode and fix reset function
…_support_reset_lpmode

[Edgecore][as5912-54x] Add lpmode and reset function
…ks_add_reset_lpmode

[Edgecore][AS5916-54XKS] Support QSFP reset funcion and LP mode
…4-nb

[Accton][as9817-64d-nb][as9817-64o-nb] Add new platform
…0xfb_port_config

[Edgecore][as7926_40xfb] Revise OnlPlatformPortConfig information
…e_add_qsfp_txdis_get_set

[Edgecore][AS4630-54PE] Add controlling function of QSFP Tx disable
…e_add_qsfp_txdis_get_set

[Edgecore][AS4630-54TE] Add controlling function of QSFP Tx disable
…_subdrivers

Accton AS4610: let the CPLD driver handle sub devices
1. the pcie addr of spi_busy_reg becomes the current bar0 addr
   plus spi_busy_reg offset, instead of a fixed addr.

Signed-off-by: Alex Lai <[email protected]>
…ailing to communicate with BMC

1. the driver will show the error message with
   the path to the calling application,
   the name of the raw ipmi cmd sent,
   and the ipmi tx message ID,
   when it fails to communicate with the BMC.

Signed-off-by: Alex Lai <[email protected]>
1. Add QSFP port lpmode and reset function

Signed-off-by: willy_liu <[email protected]>
…al Status/Control Bits as per SFF-8472 Specification for Management Interface for SFP+

Signed-off-by: S Muthu Kumar <[email protected]>
…_softselect_multirate

Enhanced the ONLP_SFP_CONTROL for 'Soft Rate_Select Select' in Optional Status/Control Bits as per SFF-8472  Specification for Management Interface for SFP+
…pi's to support ONLP_SFP_CONTROL for 'Soft Rate_Select Select' in Optional Status/Control Bits as per SFF-8472 Specification for Management Interface for SFP+

Signed-off-by: S Muthu Kumar <[email protected]>
…t_select

 Enhanced sfpi.c for AS7535-28XB-O-AC-F to support ONLP_SFP_CONTROL for 'Soft Rate_Select Select'
…_bmc

[Edgecore][as9817-64d][as9817-64o] Fixed spi_busy_reg's pcie addr issue
…l_add_lpmode_reset

[Edgecore][AS5916-54XL] Add lpmode and reset function
Signed-off-by: Thomas Thaulow Stöcklin <[email protected]>
This commit introduces comprehensive platform support for the Accton DCG8510-32D switch platform.
This platform is also marketed by Edgecore as the AS9516-32Dv2.
For ONL development, the platform name remains dcg8510_32d (x86_64-accton_dcg8510_32d-r0).

[ACCTON][DCG8510-32D] Platform Specifications:

CPU: Intel Xeon D-1627, 2.90GHz
Sub-system:
  DDR SDRAM: 32GB DDR4 ECC
  M.2 SSD: 128GB
  TPM: Trusted Platform Module 2.0

Management:
  Console Port: UART RS232 (RJ45)
  OOBM: 1x 1GbE (RJ45, Intel I210)
  USB: 1x Type-A Port

Timing:
  GNSS, 1PPS IN/OUT, 10MHz IN/OUT, ToD PPS support

MAC: Intel Tofino2 BFN-T20-128Q - Main Switching ASIC

Ethernet Ports:
  32x QSFP-DD (Front, supports 400G/200G/100G/50G/40G/25G/10G)
  Additional: 4x Intel X552 10GbE (Backplane), 1x Ethernity Networks Device 0110

CPLD: LATTICE MachXO3, LCMXO3LF family

FPGA: Xilinx Corporation Device 7021

PSU: 2x Hot-swappable AC/DC (1+1 Redundant), with internal fans

---
Detailed Changes Summary:
- Initial platform integration and setup.
- Implementation of core drivers (fan, LED, thermal).
- Enhanced PSU handling (fan control, eeprom).
- Refactored code (removed unused files/code).
- Addressed bug fixes (fan status, thermal count).
@hanger0106 hanger0106 force-pushed the dcg8510_32d_new_platform branch from eab17c9 to b4197aa Compare July 9, 2025 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.