1*c66ec88fSEmmanuel Vadot* Xilinx SDFEC(16nm) IP * 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThe Soft Decision Forward Error Correction (SDFEC) Engine is a Hard IP block 4*c66ec88fSEmmanuel Vadotwhich provides high-throughput LDPC and Turbo Code implementations. 5*c66ec88fSEmmanuel VadotThe LDPC decode & encode functionality is capable of covering a range of 6*c66ec88fSEmmanuel Vadotcustomer specified Quasi-cyclic (QC) codes. The Turbo decode functionality 7*c66ec88fSEmmanuel Vadotprincipally covers codes used by LTE. The FEC Engine offers significant 8*c66ec88fSEmmanuel Vadotpower and area savings versus implementations done in the FPGA fabric. 9*c66ec88fSEmmanuel Vadot 10*c66ec88fSEmmanuel Vadot 11*c66ec88fSEmmanuel VadotRequired properties: 12*c66ec88fSEmmanuel Vadot- compatible: Must be "xlnx,sd-fec-1.1" 13*c66ec88fSEmmanuel Vadot- clock-names : List of input clock names from the following: 14*c66ec88fSEmmanuel Vadot - "core_clk", Main processing clock for processing core (required) 15*c66ec88fSEmmanuel Vadot - "s_axi_aclk", AXI4-Lite memory-mapped slave interface clock (required) 16*c66ec88fSEmmanuel Vadot - "s_axis_din_aclk", DIN AXI4-Stream Slave interface clock (optional) 17*c66ec88fSEmmanuel Vadot - "s_axis_din_words-aclk", DIN_WORDS AXI4-Stream Slave interface clock (optional) 18*c66ec88fSEmmanuel Vadot - "s_axis_ctrl_aclk", Control input AXI4-Stream Slave interface clock (optional) 19*c66ec88fSEmmanuel Vadot - "m_axis_dout_aclk", DOUT AXI4-Stream Master interface clock (optional) 20*c66ec88fSEmmanuel Vadot - "m_axis_dout_words_aclk", DOUT_WORDS AXI4-Stream Master interface clock (optional) 21*c66ec88fSEmmanuel Vadot - "m_axis_status_aclk", Status output AXI4-Stream Master interface clock (optional) 22*c66ec88fSEmmanuel Vadot- clocks : Clock phandles (see clock_bindings.txt for details). 23*c66ec88fSEmmanuel Vadot- reg: Should contain Xilinx SDFEC 16nm Hardened IP block registers 24*c66ec88fSEmmanuel Vadot location and length. 25*c66ec88fSEmmanuel Vadot- xlnx,sdfec-code : Should contain "ldpc" or "turbo" to describe the codes 26*c66ec88fSEmmanuel Vadot being used. 27*c66ec88fSEmmanuel Vadot- xlnx,sdfec-din-words : A value 0 indicates that the DIN_WORDS interface is 28*c66ec88fSEmmanuel Vadot driven with a fixed value and is not present on the device, a value of 1 29*c66ec88fSEmmanuel Vadot configures the DIN_WORDS to be block based, while a value of 2 configures the 30*c66ec88fSEmmanuel Vadot DIN_WORDS input to be supplied for each AXI transaction. 31*c66ec88fSEmmanuel Vadot- xlnx,sdfec-din-width : Configures the DIN AXI stream where a value of 1 32*c66ec88fSEmmanuel Vadot configures a width of "1x128b", 2 a width of "2x128b" and 4 configures a width 33*c66ec88fSEmmanuel Vadot of "4x128b". 34*c66ec88fSEmmanuel Vadot- xlnx,sdfec-dout-words : A value 0 indicates that the DOUT_WORDS interface is 35*c66ec88fSEmmanuel Vadot driven with a fixed value and is not present on the device, a value of 1 36*c66ec88fSEmmanuel Vadot configures the DOUT_WORDS to be block based, while a value of 2 configures the 37*c66ec88fSEmmanuel Vadot DOUT_WORDS input to be supplied for each AXI transaction. 38*c66ec88fSEmmanuel Vadot- xlnx,sdfec-dout-width : Configures the DOUT AXI stream where a value of 1 39*c66ec88fSEmmanuel Vadot configures a width of "1x128b", 2 a width of "2x128b" and 4 configures a width 40*c66ec88fSEmmanuel Vadot of "4x128b". 41*c66ec88fSEmmanuel VadotOptional properties: 42*c66ec88fSEmmanuel Vadot- interrupts: should contain SDFEC interrupt number 43*c66ec88fSEmmanuel Vadot 44*c66ec88fSEmmanuel VadotExample 45*c66ec88fSEmmanuel Vadot--------------------------------------- 46*c66ec88fSEmmanuel Vadot sd_fec_0: sd-fec@a0040000 { 47*c66ec88fSEmmanuel Vadot compatible = "xlnx,sd-fec-1.1"; 48*c66ec88fSEmmanuel Vadot clock-names = "core_clk","s_axi_aclk","s_axis_ctrl_aclk","s_axis_din_aclk","m_axis_status_aclk","m_axis_dout_aclk"; 49*c66ec88fSEmmanuel Vadot clocks = <&misc_clk_2>,<&misc_clk_0>,<&misc_clk_1>,<&misc_clk_1>,<&misc_clk_1>, <&misc_clk_1>; 50*c66ec88fSEmmanuel Vadot reg = <0x0 0xa0040000 0x0 0x40000>; 51*c66ec88fSEmmanuel Vadot interrupt-parent = <&axi_intc>; 52*c66ec88fSEmmanuel Vadot interrupts = <1 0>; 53*c66ec88fSEmmanuel Vadot xlnx,sdfec-code = "ldpc"; 54*c66ec88fSEmmanuel Vadot xlnx,sdfec-din-words = <0>; 55*c66ec88fSEmmanuel Vadot xlnx,sdfec-din-width = <2>; 56*c66ec88fSEmmanuel Vadot xlnx,sdfec-dout-words = <0>; 57*c66ec88fSEmmanuel Vadot xlnx,sdfec-dout-width = <1>; 58*c66ec88fSEmmanuel Vadot }; 59