xref: /aosp_15_r20/bionic/libc/kernel/uapi/misc/xilinx_sdfec.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef __XILINX_SDFEC_H__
8*8d67ca89SAndroid Build Coastguard Worker #define __XILINX_SDFEC_H__
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LDPC_SC_TABLE_ADDR_BASE (0x10000)
11*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LDPC_SC_TABLE_ADDR_HIGH (0x10400)
12*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LDPC_LA_TABLE_ADDR_BASE (0x18000)
13*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LDPC_LA_TABLE_ADDR_HIGH (0x19000)
14*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LDPC_QC_TABLE_ADDR_BASE (0x20000)
15*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LDPC_QC_TABLE_ADDR_HIGH (0x28000)
16*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_SC_TABLE_DEPTH (XSDFEC_LDPC_SC_TABLE_ADDR_HIGH - XSDFEC_LDPC_SC_TABLE_ADDR_BASE)
17*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_LA_TABLE_DEPTH (XSDFEC_LDPC_LA_TABLE_ADDR_HIGH - XSDFEC_LDPC_LA_TABLE_ADDR_BASE)
18*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_QC_TABLE_DEPTH (XSDFEC_LDPC_QC_TABLE_ADDR_HIGH - XSDFEC_LDPC_QC_TABLE_ADDR_BASE)
19*8d67ca89SAndroid Build Coastguard Worker enum xsdfec_code {
20*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_TURBO_CODE = 0,
21*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_LDPC_CODE,
22*8d67ca89SAndroid Build Coastguard Worker };
23*8d67ca89SAndroid Build Coastguard Worker enum xsdfec_order {
24*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_MAINTAIN_ORDER = 0,
25*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_OUT_OF_ORDER,
26*8d67ca89SAndroid Build Coastguard Worker };
27*8d67ca89SAndroid Build Coastguard Worker enum xsdfec_turbo_alg {
28*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_MAX_SCALE = 0,
29*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_MAX_STAR,
30*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_TURBO_ALG_MAX,
31*8d67ca89SAndroid Build Coastguard Worker };
32*8d67ca89SAndroid Build Coastguard Worker enum xsdfec_state {
33*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_INIT = 0,
34*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_STARTED,
35*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_STOPPED,
36*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_NEEDS_RESET,
37*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_PL_RECONFIGURE,
38*8d67ca89SAndroid Build Coastguard Worker };
39*8d67ca89SAndroid Build Coastguard Worker enum xsdfec_axis_width {
40*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_1x128b = 1,
41*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_2x128b = 2,
42*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_4x128b = 4,
43*8d67ca89SAndroid Build Coastguard Worker };
44*8d67ca89SAndroid Build Coastguard Worker enum xsdfec_axis_word_include {
45*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_FIXED_VALUE = 0,
46*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_IN_BLOCK,
47*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_PER_AXI_TRANSACTION,
48*8d67ca89SAndroid Build Coastguard Worker   XSDFEC_AXIS_WORDS_INCLUDE_MAX,
49*8d67ca89SAndroid Build Coastguard Worker };
50*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_turbo {
51*8d67ca89SAndroid Build Coastguard Worker   __u32 alg;
52*8d67ca89SAndroid Build Coastguard Worker   __u8 scale;
53*8d67ca89SAndroid Build Coastguard Worker };
54*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_ldpc_params {
55*8d67ca89SAndroid Build Coastguard Worker   __u32 n;
56*8d67ca89SAndroid Build Coastguard Worker   __u32 k;
57*8d67ca89SAndroid Build Coastguard Worker   __u32 psize;
58*8d67ca89SAndroid Build Coastguard Worker   __u32 nlayers;
59*8d67ca89SAndroid Build Coastguard Worker   __u32 nqc;
60*8d67ca89SAndroid Build Coastguard Worker   __u32 nmqc;
61*8d67ca89SAndroid Build Coastguard Worker   __u32 nm;
62*8d67ca89SAndroid Build Coastguard Worker   __u32 norm_type;
63*8d67ca89SAndroid Build Coastguard Worker   __u32 no_packing;
64*8d67ca89SAndroid Build Coastguard Worker   __u32 special_qc;
65*8d67ca89SAndroid Build Coastguard Worker   __u32 no_final_parity;
66*8d67ca89SAndroid Build Coastguard Worker   __u32 max_schedule;
67*8d67ca89SAndroid Build Coastguard Worker   __u32 sc_off;
68*8d67ca89SAndroid Build Coastguard Worker   __u32 la_off;
69*8d67ca89SAndroid Build Coastguard Worker   __u32 qc_off;
70*8d67ca89SAndroid Build Coastguard Worker   __u32 * sc_table;
71*8d67ca89SAndroid Build Coastguard Worker   __u32 * la_table;
72*8d67ca89SAndroid Build Coastguard Worker   __u32 * qc_table;
73*8d67ca89SAndroid Build Coastguard Worker   __u16 code_id;
74*8d67ca89SAndroid Build Coastguard Worker };
75*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_status {
76*8d67ca89SAndroid Build Coastguard Worker   __u32 state;
77*8d67ca89SAndroid Build Coastguard Worker   __s8 activity;
78*8d67ca89SAndroid Build Coastguard Worker };
79*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_irq {
80*8d67ca89SAndroid Build Coastguard Worker   __s8 enable_isr;
81*8d67ca89SAndroid Build Coastguard Worker   __s8 enable_ecc_isr;
82*8d67ca89SAndroid Build Coastguard Worker };
83*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_config {
84*8d67ca89SAndroid Build Coastguard Worker   __u32 code;
85*8d67ca89SAndroid Build Coastguard Worker   __u32 order;
86*8d67ca89SAndroid Build Coastguard Worker   __u32 din_width;
87*8d67ca89SAndroid Build Coastguard Worker   __u32 din_word_include;
88*8d67ca89SAndroid Build Coastguard Worker   __u32 dout_width;
89*8d67ca89SAndroid Build Coastguard Worker   __u32 dout_word_include;
90*8d67ca89SAndroid Build Coastguard Worker   struct xsdfec_irq irq;
91*8d67ca89SAndroid Build Coastguard Worker   __s8 bypass;
92*8d67ca89SAndroid Build Coastguard Worker   __s8 code_wr_protect;
93*8d67ca89SAndroid Build Coastguard Worker };
94*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_stats {
95*8d67ca89SAndroid Build Coastguard Worker   __u32 isr_err_count;
96*8d67ca89SAndroid Build Coastguard Worker   __u32 cecc_count;
97*8d67ca89SAndroid Build Coastguard Worker   __u32 uecc_count;
98*8d67ca89SAndroid Build Coastguard Worker };
99*8d67ca89SAndroid Build Coastguard Worker struct xsdfec_ldpc_param_table_sizes {
100*8d67ca89SAndroid Build Coastguard Worker   __u32 sc_size;
101*8d67ca89SAndroid Build Coastguard Worker   __u32 la_size;
102*8d67ca89SAndroid Build Coastguard Worker   __u32 qc_size;
103*8d67ca89SAndroid Build Coastguard Worker };
104*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_MAGIC 'f'
105*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_START_DEV _IO(XSDFEC_MAGIC, 0)
106*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_STOP_DEV _IO(XSDFEC_MAGIC, 1)
107*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_GET_STATUS _IOR(XSDFEC_MAGIC, 2, struct xsdfec_status)
108*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_SET_IRQ _IOW(XSDFEC_MAGIC, 3, struct xsdfec_irq)
109*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_SET_TURBO _IOW(XSDFEC_MAGIC, 4, struct xsdfec_turbo)
110*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_ADD_LDPC_CODE_PARAMS _IOW(XSDFEC_MAGIC, 5, struct xsdfec_ldpc_params)
111*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_GET_CONFIG _IOR(XSDFEC_MAGIC, 6, struct xsdfec_config)
112*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_GET_TURBO _IOR(XSDFEC_MAGIC, 7, struct xsdfec_turbo)
113*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_SET_ORDER _IOW(XSDFEC_MAGIC, 8, unsigned long)
114*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_SET_BYPASS _IOW(XSDFEC_MAGIC, 9, bool)
115*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 10, bool)
116*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_CLEAR_STATS _IO(XSDFEC_MAGIC, 11)
117*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_GET_STATS _IOR(XSDFEC_MAGIC, 12, struct xsdfec_stats)
118*8d67ca89SAndroid Build Coastguard Worker #define XSDFEC_SET_DEFAULT_CONFIG _IO(XSDFEC_MAGIC, 13)
119*8d67ca89SAndroid Build Coastguard Worker #endif
120