162306a36Sopenharmony_ci* Xilinx SDFEC(16nm) IP *
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThe Soft Decision Forward Error Correction (SDFEC) Engine is a Hard IP block
462306a36Sopenharmony_ciwhich provides high-throughput LDPC and Turbo Code implementations.
562306a36Sopenharmony_ciThe LDPC decode & encode functionality is capable of covering a range of
662306a36Sopenharmony_cicustomer specified Quasi-cyclic (QC) codes. The Turbo decode functionality
762306a36Sopenharmony_ciprincipally covers codes used by LTE. The FEC Engine offers significant
862306a36Sopenharmony_cipower and area savings versus implementations done in the FPGA fabric.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciRequired properties:
1262306a36Sopenharmony_ci- compatible: Must be "xlnx,sd-fec-1.1"
1362306a36Sopenharmony_ci- clock-names : List of input clock names from the following:
1462306a36Sopenharmony_ci    - "core_clk", Main processing clock for processing core (required)
1562306a36Sopenharmony_ci    - "s_axi_aclk", AXI4-Lite memory-mapped slave interface clock (required)
1662306a36Sopenharmony_ci    - "s_axis_din_aclk", DIN AXI4-Stream Slave interface clock (optional)
1762306a36Sopenharmony_ci    - "s_axis_din_words-aclk", DIN_WORDS AXI4-Stream Slave interface clock (optional)
1862306a36Sopenharmony_ci    - "s_axis_ctrl_aclk",  Control input AXI4-Stream Slave interface clock (optional)
1962306a36Sopenharmony_ci    - "m_axis_dout_aclk", DOUT AXI4-Stream Master interface clock (optional)
2062306a36Sopenharmony_ci    - "m_axis_dout_words_aclk", DOUT_WORDS AXI4-Stream Master interface clock (optional)
2162306a36Sopenharmony_ci    - "m_axis_status_aclk", Status output AXI4-Stream Master interface clock (optional)
2262306a36Sopenharmony_ci- clocks : Clock phandles (see clock_bindings.txt for details).
2362306a36Sopenharmony_ci- reg: Should contain Xilinx SDFEC 16nm Hardened IP block registers
2462306a36Sopenharmony_ci  location and length.
2562306a36Sopenharmony_ci- xlnx,sdfec-code : Should contain "ldpc" or "turbo" to describe the codes
2662306a36Sopenharmony_ci  being used.
2762306a36Sopenharmony_ci- xlnx,sdfec-din-words : A value 0 indicates that the DIN_WORDS interface is
2862306a36Sopenharmony_ci  driven with a fixed value and is not present on the device, a value of 1
2962306a36Sopenharmony_ci  configures the DIN_WORDS to be block based, while a value of 2 configures the
3062306a36Sopenharmony_ci  DIN_WORDS input to be supplied for each AXI transaction.
3162306a36Sopenharmony_ci- xlnx,sdfec-din-width : Configures the DIN AXI stream where a value of 1
3262306a36Sopenharmony_ci  configures a width of "1x128b", 2 a width of "2x128b" and 4 configures a width
3362306a36Sopenharmony_ci  of "4x128b".
3462306a36Sopenharmony_ci- xlnx,sdfec-dout-words : A value 0 indicates that the DOUT_WORDS interface is
3562306a36Sopenharmony_ci  driven with a fixed value and is not present on the device, a value of 1
3662306a36Sopenharmony_ci  configures the DOUT_WORDS to be block based, while a value of 2 configures the
3762306a36Sopenharmony_ci  DOUT_WORDS input to be supplied for each AXI transaction.
3862306a36Sopenharmony_ci- xlnx,sdfec-dout-width : Configures the DOUT AXI stream where a value of 1
3962306a36Sopenharmony_ci  configures a width of "1x128b", 2 a width of "2x128b" and 4 configures a width
4062306a36Sopenharmony_ci  of "4x128b".
4162306a36Sopenharmony_ciOptional properties:
4262306a36Sopenharmony_ci- interrupts: should contain SDFEC interrupt number
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciExample
4562306a36Sopenharmony_ci---------------------------------------
4662306a36Sopenharmony_ci	sd_fec_0: sd-fec@a0040000 {
4762306a36Sopenharmony_ci		compatible = "xlnx,sd-fec-1.1";
4862306a36Sopenharmony_ci		clock-names = "core_clk","s_axi_aclk","s_axis_ctrl_aclk","s_axis_din_aclk","m_axis_status_aclk","m_axis_dout_aclk";
4962306a36Sopenharmony_ci		clocks = <&misc_clk_2>,<&misc_clk_0>,<&misc_clk_1>,<&misc_clk_1>,<&misc_clk_1>, <&misc_clk_1>;
5062306a36Sopenharmony_ci		reg = <0x0 0xa0040000 0x0 0x40000>;
5162306a36Sopenharmony_ci		interrupt-parent = <&axi_intc>;
5262306a36Sopenharmony_ci		interrupts = <1 0>;
5362306a36Sopenharmony_ci		xlnx,sdfec-code = "ldpc";
5462306a36Sopenharmony_ci		xlnx,sdfec-din-words = <0>;
5562306a36Sopenharmony_ci		xlnx,sdfec-din-width = <2>;
5662306a36Sopenharmony_ci		xlnx,sdfec-dout-words = <0>;
5762306a36Sopenharmony_ci		xlnx,sdfec-dout-width = <1>;
5862306a36Sopenharmony_ci	};
59