SD-FEC Driver for Zynq Ultrascale+ RFSoC

Introduction

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 https://www.xilinx.com/support/documentation/ip_documentation/sd_fec/v1_1/pg256-sdfec-integrated-block.pdf

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:
CONFIG_XILINX_SDFEC
CONFIG_XILINX_SDFEC.png

Device Tree Settings


For more details about the device tree bindings please refer to https://github.com/Xilinx/linux-xlnx/blob/master/Documentation/devicetree/bindings/misc/xlnx%2Csd-fec.txt . 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:

create_sdfec_demo.sh
User bash script used to create the Petalinux project
plnx_cmd_wrappers.pl
A Perl script used by create_sdfec_demo.sh
sw_plnx/sdfec_demo
Source files for the demo application
sw_plnx/sdfec_usr_intf
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.
linux_sdfec_demo.pdf
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

2018.2
Commits:
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
2018.1
Summary:
Initial supported version that provides an early access release to driver
Commit:
bd44d45 : misc: xilinx-sdfec: Setting FEC_CODE change

Related Links