1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef __XILINX_SDFEC_H__ 20 #define __XILINX_SDFEC_H__ 21 #include <linux/types.h> 22 #define XSDFEC_LDPC_SC_TABLE_ADDR_BASE (0x10000) 23 #define XSDFEC_LDPC_SC_TABLE_ADDR_HIGH (0x10400) 24 #define XSDFEC_LDPC_LA_TABLE_ADDR_BASE (0x18000) 25 #define XSDFEC_LDPC_LA_TABLE_ADDR_HIGH (0x19000) 26 #define XSDFEC_LDPC_QC_TABLE_ADDR_BASE (0x20000) 27 #define XSDFEC_LDPC_QC_TABLE_ADDR_HIGH (0x28000) 28 #define XSDFEC_SC_TABLE_DEPTH (XSDFEC_LDPC_SC_TABLE_ADDR_HIGH - XSDFEC_LDPC_SC_TABLE_ADDR_BASE) 29 #define XSDFEC_LA_TABLE_DEPTH (XSDFEC_LDPC_LA_TABLE_ADDR_HIGH - XSDFEC_LDPC_LA_TABLE_ADDR_BASE) 30 #define XSDFEC_QC_TABLE_DEPTH (XSDFEC_LDPC_QC_TABLE_ADDR_HIGH - XSDFEC_LDPC_QC_TABLE_ADDR_BASE) 31 enum xsdfec_code { 32 XSDFEC_TURBO_CODE = 0, 33 XSDFEC_LDPC_CODE, 34 }; 35 enum xsdfec_order { 36 XSDFEC_MAINTAIN_ORDER = 0, 37 XSDFEC_OUT_OF_ORDER, 38 }; 39 enum xsdfec_turbo_alg { 40 XSDFEC_MAX_SCALE = 0, 41 XSDFEC_MAX_STAR, 42 XSDFEC_TURBO_ALG_MAX, 43 }; 44 enum xsdfec_state { 45 XSDFEC_INIT = 0, 46 XSDFEC_STARTED, 47 XSDFEC_STOPPED, 48 XSDFEC_NEEDS_RESET, 49 XSDFEC_PL_RECONFIGURE, 50 }; 51 enum xsdfec_axis_width { 52 XSDFEC_1x128b = 1, 53 XSDFEC_2x128b = 2, 54 XSDFEC_4x128b = 4, 55 }; 56 enum xsdfec_axis_word_include { 57 XSDFEC_FIXED_VALUE = 0, 58 XSDFEC_IN_BLOCK, 59 XSDFEC_PER_AXI_TRANSACTION, 60 XSDFEC_AXIS_WORDS_INCLUDE_MAX, 61 }; 62 struct xsdfec_turbo { 63 __u32 alg; 64 __u8 scale; 65 }; 66 struct xsdfec_ldpc_params { 67 __u32 n; 68 __u32 k; 69 __u32 psize; 70 __u32 nlayers; 71 __u32 nqc; 72 __u32 nmqc; 73 __u32 nm; 74 __u32 norm_type; 75 __u32 no_packing; 76 __u32 special_qc; 77 __u32 no_final_parity; 78 __u32 max_schedule; 79 __u32 sc_off; 80 __u32 la_off; 81 __u32 qc_off; 82 __u32 * sc_table; 83 __u32 * la_table; 84 __u32 * qc_table; 85 __u16 code_id; 86 }; 87 struct xsdfec_status { 88 __u32 state; 89 __s8 activity; 90 }; 91 struct xsdfec_irq { 92 __s8 enable_isr; 93 __s8 enable_ecc_isr; 94 }; 95 struct xsdfec_config { 96 __u32 code; 97 __u32 order; 98 __u32 din_width; 99 __u32 din_word_include; 100 __u32 dout_width; 101 __u32 dout_word_include; 102 struct xsdfec_irq irq; 103 __s8 bypass; 104 __s8 code_wr_protect; 105 }; 106 struct xsdfec_stats { 107 __u32 isr_err_count; 108 __u32 cecc_count; 109 __u32 uecc_count; 110 }; 111 struct xsdfec_ldpc_param_table_sizes { 112 __u32 sc_size; 113 __u32 la_size; 114 __u32 qc_size; 115 }; 116 #define XSDFEC_MAGIC 'f' 117 #define XSDFEC_START_DEV _IO(XSDFEC_MAGIC, 0) 118 #define XSDFEC_STOP_DEV _IO(XSDFEC_MAGIC, 1) 119 #define XSDFEC_GET_STATUS _IOR(XSDFEC_MAGIC, 2, struct xsdfec_status) 120 #define XSDFEC_SET_IRQ _IOW(XSDFEC_MAGIC, 3, struct xsdfec_irq) 121 #define XSDFEC_SET_TURBO _IOW(XSDFEC_MAGIC, 4, struct xsdfec_turbo) 122 #define XSDFEC_ADD_LDPC_CODE_PARAMS _IOW(XSDFEC_MAGIC, 5, struct xsdfec_ldpc_params) 123 #define XSDFEC_GET_CONFIG _IOR(XSDFEC_MAGIC, 6, struct xsdfec_config) 124 #define XSDFEC_GET_TURBO _IOR(XSDFEC_MAGIC, 7, struct xsdfec_turbo) 125 #define XSDFEC_SET_ORDER _IOW(XSDFEC_MAGIC, 8, unsigned long) 126 #define XSDFEC_SET_BYPASS _IOW(XSDFEC_MAGIC, 9, bool) 127 #define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 10, bool) 128 #define XSDFEC_CLEAR_STATS _IO(XSDFEC_MAGIC, 11) 129 #define XSDFEC_GET_STATS _IOR(XSDFEC_MAGIC, 12, struct xsdfec_stats) 130 #define XSDFEC_SET_DEFAULT_CONFIG _IO(XSDFEC_MAGIC, 13) 131 #endif 132