1*01950c46SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2*01950c46SEmmanuel Vadot%YAML 1.2 3*01950c46SEmmanuel Vadot--- 4*01950c46SEmmanuel Vadot$id: http://devicetree.org/schemas/misc/xlnx,sd-fec.yaml# 5*01950c46SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*01950c46SEmmanuel Vadot 7*01950c46SEmmanuel Vadottitle: Xilinx SDFEC(16nm) IP 8*01950c46SEmmanuel Vadot 9*01950c46SEmmanuel Vadotmaintainers: 10*01950c46SEmmanuel Vadot - Cvetic, Dragan <dragan.cvetic@amd.com> 11*01950c46SEmmanuel Vadot - Erim, Salih <salih.erim@amd.com> 12*01950c46SEmmanuel Vadot 13*01950c46SEmmanuel Vadotdescription: 14*01950c46SEmmanuel Vadot The Soft Decision Forward Error Correction (SDFEC) Engine is a Hard IP block 15*01950c46SEmmanuel Vadot which provides high-throughput LDPC and Turbo Code implementations. 16*01950c46SEmmanuel Vadot The LDPC decode & encode functionality is capable of covering a range of 17*01950c46SEmmanuel Vadot customer specified Quasi-cyclic (QC) codes. The Turbo decode functionality 18*01950c46SEmmanuel Vadot principally covers codes used by LTE. The FEC Engine offers significant 19*01950c46SEmmanuel Vadot power and area savings versus implementations done in the FPGA fabric. 20*01950c46SEmmanuel Vadot 21*01950c46SEmmanuel Vadotproperties: 22*01950c46SEmmanuel Vadot compatible: 23*01950c46SEmmanuel Vadot const: xlnx,sd-fec-1.1 24*01950c46SEmmanuel Vadot 25*01950c46SEmmanuel Vadot reg: 26*01950c46SEmmanuel Vadot maxItems: 1 27*01950c46SEmmanuel Vadot 28*01950c46SEmmanuel Vadot clocks: 29*01950c46SEmmanuel Vadot minItems: 2 30*01950c46SEmmanuel Vadot maxItems: 8 31*01950c46SEmmanuel Vadot additionalItems: true 32*01950c46SEmmanuel Vadot items: 33*01950c46SEmmanuel Vadot - description: Main processing clock for processing core 34*01950c46SEmmanuel Vadot - description: AXI4-Lite memory-mapped slave interface clock 35*01950c46SEmmanuel Vadot - description: Control input AXI4-Stream Slave interface clock 36*01950c46SEmmanuel Vadot - description: DIN AXI4-Stream Slave interface clock 37*01950c46SEmmanuel Vadot - description: Status output AXI4-Stream Master interface clock 38*01950c46SEmmanuel Vadot - description: DOUT AXI4-Stream Master interface clock 39*01950c46SEmmanuel Vadot - description: DIN_WORDS AXI4-Stream Slave interface clock 40*01950c46SEmmanuel Vadot - description: DOUT_WORDS AXI4-Stream Master interface clock 41*01950c46SEmmanuel Vadot 42*01950c46SEmmanuel Vadot clock-names: 43*01950c46SEmmanuel Vadot allOf: 44*01950c46SEmmanuel Vadot - minItems: 2 45*01950c46SEmmanuel Vadot maxItems: 8 46*01950c46SEmmanuel Vadot additionalItems: true 47*01950c46SEmmanuel Vadot items: 48*01950c46SEmmanuel Vadot - const: core_clk 49*01950c46SEmmanuel Vadot - const: s_axi_aclk 50*01950c46SEmmanuel Vadot - items: 51*01950c46SEmmanuel Vadot enum: 52*01950c46SEmmanuel Vadot - core_clk 53*01950c46SEmmanuel Vadot - s_axi_aclk 54*01950c46SEmmanuel Vadot - s_axis_ctrl_aclk 55*01950c46SEmmanuel Vadot - s_axis_din_aclk 56*01950c46SEmmanuel Vadot - m_axis_status_aclk 57*01950c46SEmmanuel Vadot - m_axis_dout_aclk 58*01950c46SEmmanuel Vadot - s_axis_din_words_aclk 59*01950c46SEmmanuel Vadot - m_axis_dout_words_aclk 60*01950c46SEmmanuel Vadot 61*01950c46SEmmanuel Vadot interrupts: 62*01950c46SEmmanuel Vadot maxItems: 1 63*01950c46SEmmanuel Vadot 64*01950c46SEmmanuel Vadot xlnx,sdfec-code: 65*01950c46SEmmanuel Vadot description: 66*01950c46SEmmanuel Vadot The SD-FEC integrated block supports Low Density Parity Check (LDPC) 67*01950c46SEmmanuel Vadot decoding and encoding and Turbo code decoding. The LDPC codes used are 68*01950c46SEmmanuel Vadot highly configurable, and the specific code used can be specified on 69*01950c46SEmmanuel Vadot a codeword-by-codeword basis. The Turbo code decoding is required by LTE 70*01950c46SEmmanuel Vadot standard. 71*01950c46SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 72*01950c46SEmmanuel Vadot items: 73*01950c46SEmmanuel Vadot enum: [ ldpc, turbo ] 74*01950c46SEmmanuel Vadot 75*01950c46SEmmanuel Vadot xlnx,sdfec-din-width: 76*01950c46SEmmanuel Vadot description: 77*01950c46SEmmanuel Vadot Configures the DIN AXI stream where a value of 1 78*01950c46SEmmanuel Vadot configures a width of "1x128b", 2 a width of "2x128b" and 4 configures a width 79*01950c46SEmmanuel Vadot of "4x128b". 80*01950c46SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 81*01950c46SEmmanuel Vadot enum: [ 1, 2, 4 ] 82*01950c46SEmmanuel Vadot 83*01950c46SEmmanuel Vadot xlnx,sdfec-din-words: 84*01950c46SEmmanuel Vadot description: 85*01950c46SEmmanuel Vadot A value 0 indicates that the DIN_WORDS interface is 86*01950c46SEmmanuel Vadot driven with a fixed value and is not present on the device, a value of 1 87*01950c46SEmmanuel Vadot configures the DIN_WORDS to be block based, while a value of 2 configures the 88*01950c46SEmmanuel Vadot DIN_WORDS input to be supplied for each AXI transaction. 89*01950c46SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 90*01950c46SEmmanuel Vadot enum: [ 0, 1, 2 ] 91*01950c46SEmmanuel Vadot 92*01950c46SEmmanuel Vadot xlnx,sdfec-dout-width: 93*01950c46SEmmanuel Vadot description: 94*01950c46SEmmanuel Vadot Configures the DOUT AXI stream where a value of 1 configures a width of "1x128b", 95*01950c46SEmmanuel Vadot 2 a width of "2x128b" and 4 configures a width of "4x128b". 96*01950c46SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 97*01950c46SEmmanuel Vadot enum: [ 1, 2, 4 ] 98*01950c46SEmmanuel Vadot 99*01950c46SEmmanuel Vadot xlnx,sdfec-dout-words: 100*01950c46SEmmanuel Vadot description: 101*01950c46SEmmanuel Vadot A value 0 indicates that the DOUT_WORDS interface is 102*01950c46SEmmanuel Vadot driven with a fixed value and is not present on the device, a value of 1 103*01950c46SEmmanuel Vadot configures the DOUT_WORDS to be block based, while a value of 2 configures the 104*01950c46SEmmanuel Vadot DOUT_WORDS input to be supplied for each AXI transaction. 105*01950c46SEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 106*01950c46SEmmanuel Vadot enum: [ 0, 1, 2 ] 107*01950c46SEmmanuel Vadot 108*01950c46SEmmanuel Vadotrequired: 109*01950c46SEmmanuel Vadot - compatible 110*01950c46SEmmanuel Vadot - reg 111*01950c46SEmmanuel Vadot - clocks 112*01950c46SEmmanuel Vadot - clock-names 113*01950c46SEmmanuel Vadot - xlnx,sdfec-code 114*01950c46SEmmanuel Vadot - xlnx,sdfec-din-width 115*01950c46SEmmanuel Vadot - xlnx,sdfec-din-words 116*01950c46SEmmanuel Vadot - xlnx,sdfec-dout-width 117*01950c46SEmmanuel Vadot - xlnx,sdfec-dout-words 118*01950c46SEmmanuel Vadot 119*01950c46SEmmanuel VadotadditionalProperties: false 120*01950c46SEmmanuel Vadot 121*01950c46SEmmanuel Vadotexamples: 122*01950c46SEmmanuel Vadot - | 123*01950c46SEmmanuel Vadot #include <dt-bindings/interrupt-controller/irq.h> 124*01950c46SEmmanuel Vadot 125*01950c46SEmmanuel Vadot sd-fec@a0040000 { 126*01950c46SEmmanuel Vadot compatible = "xlnx,sd-fec-1.1"; 127*01950c46SEmmanuel Vadot reg = <0xa0040000 0x40000>; 128*01950c46SEmmanuel Vadot clocks = <&misc_clk_2>, <&misc_clk_0>, <&misc_clk_1>, <&misc_clk_1>, 129*01950c46SEmmanuel Vadot <&misc_clk_1>, <&misc_clk_1>; 130*01950c46SEmmanuel Vadot clock-names = "core_clk", "s_axi_aclk", "s_axis_ctrl_aclk", 131*01950c46SEmmanuel Vadot "s_axis_din_aclk", "m_axis_status_aclk", 132*01950c46SEmmanuel Vadot "m_axis_dout_aclk"; 133*01950c46SEmmanuel Vadot interrupts = <1 IRQ_TYPE_LEVEL_HIGH>; 134*01950c46SEmmanuel Vadot xlnx,sdfec-code = "ldpc"; 135*01950c46SEmmanuel Vadot xlnx,sdfec-din-width = <2>; 136*01950c46SEmmanuel Vadot xlnx,sdfec-din-words = <0>; 137*01950c46SEmmanuel Vadot xlnx,sdfec-dout-width = <1>; 138*01950c46SEmmanuel Vadot xlnx,sdfec-dout-words = <0>; 139*01950c46SEmmanuel Vadot }; 140*01950c46SEmmanuel Vadot 141