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