SDFEC Driver

Table of Contents

SD-FEC Driver for Zynq Ultrascale+TM 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 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 SD-FEC Product Guide (PG256)

Features supported in driver

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

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
  • Does not support shared LDPC code table wraparound
  • Does not utilizes Linux Clock Control Framework

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.

Driver Examples

LDPC DOCSIS 3.1 Demo Example

This example demonstrates how to set up and control the BER test hardware and to configure a SD-FEC IP instance. It implements an interactive software described in the processor-based example design of SD-FEC Product Guide (PG256).

Source path for the demo is located at:

To create images that can be deployed using an SD-CARD

  • Create petalinux project using the following command:

Note: xilinx-zcu111-v2019.2-final.bsp is the PetaLinux BSP for ZCU111 Production Silicon Rev1.0 Board.

  • Change to the PetaLinux project directory using the following command:
  • Build the Linux images using the following command:
  • After the above statement executes successfully, verify the images and the timestamp in the images directory in the PetaLinux project folder using the following commands:
  • Generate the Boot image using the following command:

The above procedure will create the following SD-Card deployable images
   a. BOOT.bin
   b. image.ub

Copy the BOOT.BIN and image.ub from plnx-sdfec-demo/plnx_sdfec_demo/images/linux to a SD-CARD.

The following console log demonstrate how to run the SD-FEC demo, to exit the application press CTRL-C.

Change Log



1076693 - misc: xilinx-sdfec: Include doc in TOC
a2aeab2 - misc: xilinx-sdfec: Rename return value
d835d0d - misc: xilinx-sdfec: Apply appendix _MASK
629478d - misc: xilinx-sdfec: Post review document update
7186bc2 - misc: xilinx-sdfec: Correct parameter range check
e532d98 - misc: xilinx-sdfec: Correct an error handling
7ded866 - misc: xilinx-sdfec: Correct integer comparison
2e9d5ef - misc: xilinx-sdfec: Remove not needed ORDER enums
82eb00f - misc: xilinx-sdfec: Remove not needed CODE enums
2fc0d02 - misc: xilinx-sdfec: Realign ioctl magic numbers
ae312a9 - misc: xilinx-sdfec: Remove not used parameters
28e6af0 - misc: xilinx-sdfec: Update after clang-format
498c280 - misc: xilinx_sdfec: Add support for CCF
e588573 - dt: bindings: misc: xilinx_sdfec: Add clock descriptions
4659da9 - MAINTAINERS: Add entry for Xilinx SD-FEC controller



b68293a : misc: xilinx-sdfec: Driver kernel-doc improvements
1e1b849 : misc: xilinx-sdfec: Driver document improvements
7b377d2 : misc: xilinx-sdfec: Add overview for SD-FEC driver
bfaacfd : misc: xilinx-sdfec: Add kernel-doc style comments
86131ff : misc: xilinx-sdfec: Use SPDX license header
d1d2865 : misc: xilinx-sdfec: Update config from hardware
7d30baf  : misc: xilinx-sdfec: Increase number of LDPC codes
ea63d3f : misc: xilinx-sdfec: Add ADD_LDPC_CODE protection
003492d : misc: xilinx-sdfec: Remove GET_LDPC_PARAMS ioctl
5097ede : misc: xilinx-sdfec: Change OUT i/fs always enabled
e389d62 : misc: xilinx-sdfec: Fix ECC ISR err classification
5bb72ad : misc: xilinx-sdfec: Include PL init in irq flow
cf6b703 : misc: xilinx-sdfec: Add table size function
39a1065 : misc: xilinx-sdfec: Detect scale illegal value
03fb31b : misc: xilinx-sdfec: Change algorithm param to enum
2ab8e05 : misc: xilinx-sdfec: Change for bypass query
b098c62 : misc: xilinx-sdfec: Change SET_BYPASS arg to bool
7cd18a1 : misc: xilinx-sdfec: Fix error reporting interface
5fd39d6 : misc: xilinx-sdfec: Refactor log error functions
1253a90 : misc: xilinx-sdfec: Refactor interrupt dev_err


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