xref: /freebsd/sys/contrib/device-tree/Bindings/misc/xlnx,sd-fec.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
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