SD-FEC Driver for Zynq Ultrascale+ RFSoC


This page gives an overview of the Soft-Decision FEC (SD-FEC) driver which is available as part of the Xilinx Linux distribution.
This driver provides early access to the linux driver interface and is subject to change.
This driver supports the Soft-Decision FEC (SD-FEC) Integrated Block.

The driver is available at

HW IP Features

The HW IP features summary is documented in

Features supported in driver

  • Supports retrieval of the Integrated Block Configuration and Status information
  • Supports configuration of LDPC Codes
  • Supports configuration of Turbo Decoding

Missing Features, Known Issues and Limitations

  • Only allows a single open file handler to any instance of the driver at any time
  • Reset of the SD-FEC Integrated Block is not controlled by this driver
  • Interrupt supported is implemented but not fully tested

Kernel Configuration

To compile a kernel with a driver for the SD-FEC enable the following kernel config option:

Device Tree Settings

For more details about the device tree bindings please refer to . Below is an example of a SD-FEC device tree entry.

    sd_fec_0: sd-fec@a0040000 {
        compatible = "xlnx,sd-fec-1.1";
        reg = <0x0 0xa0040000 0x0 0x40000>;
        interrupt-parent = <&gic>;
        interrupts = <0 89 4>;
        xlnx,sdfec-code = "ldpc";
        xlnx,sdfec-din-words = <0>;
        xlnx,sdfec-din-width = <2>;
        xlnx,sdfec-dout-words = <0>;
        xlnx,sdfec-dout-width = <1>;

Driver Examples

LDPC DOCSIS 3.1 Demo Example

The zip file contents the following:
User bash script used to create the Petalinux project
A Perl script used by
Source files for the demo application
Source files for library used by the demo application. The Library provides wrappers for Linux system calls to the SD-FEC Linux Kernel Module plus utility functions to format code parameters.
Demo documentation
Where linux_sdfec_demo.pdf documents the demo application flow, structure plus how to use the scripts provided to add the demo application to a petalinux project using a ZCU111 BSP.

Change Log

f3d40d3 : misc: xilinx-sdfec: Correct write to protect regs
e5b6542 : misc: xilinx-sdfec: Correct write to AXIS_WIDTH reg
672ffb4 : misc: xilinx-sdfec: Remove RESET_REQ IOCTL
74b7976 : misc: xilinx-sdfec: Add SET_DEFAULT_CONFIG IOCTL
7631d68 : misc: xilinx-sdfec: Add GET_STATS IOCTL
60727d9 : misc: xilinx-sdfec: Add CLEAR_STATS IOCTL
5bf8ce6 : misc: xilinx-sdfec: add_ldpc incorrectly sets code
8155bf1 : misc: xilinx-sdfec: Remove tracking of table entries
795d614 : misc: xilinx-sdfec: Fix AXIS_ENABLE_MASK value
7b2c496 : misc: xilinx-sdfec: Updated DT update implementation
4140b0f : misc: xilinx-sdfec: Use xsdfec_config in xsdfec
1474437 : misc: xilinx-sdfec: Improve the IOCTL Handling
2e5a707 : misc: xilinx-sdfec: Use "code_id" to dev_err calls
4d16f52 : misc: xilinx-sdfec: Remove Max Device Limitation
Initial supported version that provides an early access release to driver
bd44d45 : misc: xilinx-sdfec: Setting FEC_CODE change

Related Links