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