File indexing completed on 2025-05-11 08:23:43
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #ifndef __GRTM_H__
0031 #define __GRTM_H__
0032
0033 #include <rtems.h>
0034
0035 #ifdef __cplusplus
0036 extern "C" {
0037 #endif
0038
0039 #define GRTM_IOC_UNUSED 0
0040
0041
0042 #define GRTM_IOC_START 1
0043 #define GRTM_IOC_STOP 2
0044 #define GRTM_IOC_ISSTARTED 3
0045 #define GRTM_IOC_SET_BLOCKING_MODE 4
0046 #define GRTM_IOC_SET_TIMEOUT 5
0047
0048
0049 #define GRTM_IOC_SET_CONFIG 32
0050
0051
0052 #define GRTM_IOC_RECLAIM 64
0053 #define GRTM_IOC_GET_CONFIG 65
0054 #define GRTM_IOC_GET_HW_IMPL 66
0055 #define GRTM_IOC_GET_HW_STATUS 67
0056 #define GRTM_IOC_GET_OCFREG 68
0057 #define GRTM_IOC_GET_STATS 69
0058 #define GRTM_IOC_CLR_STATS 70
0059
0060
0061 #define GRTM_IOC_SEND 96
0062
0063
0064 enum {
0065 GRTM_BLKMODE_POLL = 0,
0066 GRTM_BLKMODE_BLK = 1,
0067 };
0068
0069
0070 enum {
0071 GRTM_RS_IMPL_NONE = 0,
0072 GRTM_RS_IMPL_E16 = 1,
0073 GRTM_RS_IMPL_E8 = 2,
0074 GRTM_RS_IMPL_BOTH = 3
0075
0076 };
0077
0078 struct grtm_ioc_hw {
0079 char cs;
0080 char sp;
0081 char ce;
0082 char nrz;
0083 char psr;
0084 char te;
0085 unsigned char rsdep;
0086 unsigned char rs;
0087 char aasm;
0088 char fecf;
0089 char ocf;
0090 char evc;
0091 char idle;
0092 char fsh;
0093 char mcg;
0094 char iz;
0095 char fhec;
0096 char aos;
0097 char cif;
0098 char ocfb;
0099
0100 unsigned short blk_size;
0101 unsigned short fifo_size;
0102
0103 };
0104
0105
0106 enum {
0107 GRTM_MODE_TM = 0,
0108 GRTM_MODE_AOS = 1
0109 };
0110
0111
0112 #define GRTM_IOC_PHY_SCF (1<<15)
0113 #define GRTM_IOC_PHY_SF (1<<31)
0114
0115
0116 #define GRTM_IOC_CODE_SC (1<<0)
0117 #define GRTM_IOC_CODE_SP (1<<1)
0118 #define GRTM_IOC_CODE_CE (1<<5)
0119 #define GRTM_IOC_CODE_NRZ (1<<6)
0120 #define GRTM_IOC_CODE_PSR (1<<7)
0121 #define GRTM_IOC_CODE_RS8 (1<<11)
0122 #define GRTM_IOC_CODE_RS (1<<15)
0123 #define GRTM_IOC_CODE_AASM (1<<16)
0124 #define GRTM_IOC_CODE_ALL (GRTM_IOC_CODE_SC|GRTM_IOC_CODE_SP|GRTM_IOC_CODE_CE| \
0125 GRTM_IOC_CODE_NRZ|GRTM_IOC_CODE_PSR|GRTM_IOC_CODE_RS8|\
0126 GRTM_IOC_CODE_RS|GRTM_IOC_CODE_AASM)
0127
0128 enum {
0129 GRTM_CERATE_00 = 0,
0130 GRTM_CERATE_02 = 2,
0131 GRTM_CERATE_04 = 4,
0132 GRTM_CERATE_05 = 5,
0133 GRTM_CERATE_06 = 6,
0134 GRTM_CERATE_07 = 7,
0135 };
0136
0137
0138 #define GRTM_IOC_ALL_FHEC 0x01
0139 #define GRTM_IOC_ALL_FECF 0x02
0140 #define GRTM_IOC_ALL_IZ 0x04
0141 #define GRTM_IOC_ALL_ALL (GRTM_IOC_ALL_FHEC|GRTM_IOC_ALL_FECF|GRTM_IOC_ALL_IZ)
0142
0143
0144 #define GRTM_IOC_MF_OW 0x01
0145 #define GRTM_IOC_MF_OCF 0x02
0146 #define GRTM_IOC_MF_FSH 0x04
0147 #define GRTM_IOC_MF_MC 0x08
0148 #define GRTM_IOC_MF_ALL (GRTM_IOC_MF_OW|GRTM_IOC_MF_OCF|GRTM_IOC_MF_FSH|GRTM_IOC_MF_MC)
0149
0150
0151 #define GRTM_IOC_IDLE_MC 0x01
0152 #define GRTM_IOC_IDLE_VCC 0x02
0153 #define GRTM_IOC_IDLE_FSH 0x04
0154 #define GRTM_IOC_IDLE_EVC 0x08
0155 #define GRTM_IOC_IDLE_OCF 0x10
0156 #define GRTM_IOC_IDLE_EN 0x20
0157 #define GRTM_IOC_IDLE_ALL (GRTM_IOC_IDLE_MC|GRTM_IOC_IDLE_VCC|GRTM_IOC_IDLE_FSH| \
0158 GRTM_IOC_IDLE_EVC|GRTM_IOC_IDLE_OCF|GRTM_IOC_IDLE_EN)
0159
0160
0161
0162
0163
0164
0165 struct grtm_ioc_config {
0166
0167
0168 unsigned char mode;
0169
0170 unsigned short frame_length;
0171 unsigned short limit;
0172 unsigned int as_marker;
0173
0174
0175 unsigned short phy_subrate;
0176 unsigned short phy_symbolrate;
0177 unsigned char phy_opts;
0178
0179
0180 unsigned char code_rsdep;
0181 unsigned char code_ce_rate;
0182 unsigned char code_csel;
0183 unsigned int code_opts;
0184
0185
0186 unsigned char all_izlen;
0187 unsigned char all_opts;
0188
0189
0190 unsigned char mf_opts;
0191
0192
0193 unsigned short idle_scid;
0194 unsigned char idle_vcid;
0195 unsigned char idle_opts;
0196
0197
0198 unsigned int enable_cnt;
0199 int isr_desc_proc;
0200 int blocking;
0201 rtems_interval timeout;
0202 };
0203
0204 struct grtm_frame;
0205
0206 struct grtm_list {
0207 struct grtm_frame *head;
0208 struct grtm_frame *tail;
0209 };
0210
0211 #define GRTM_FLAGS_SENT 0x01
0212 #define GRRM_FLAGS_ERR 0x02
0213
0214 #define GRTM_FLAGS_TRANSLATE (1<<31)
0215 #define GRTM_FLAGS_TRANSLATE_AND_REMEMBER (1<<30)
0216
0217 #define GRTM_FLAGS_COPY_DATA (1<<29)
0218
0219
0220
0221 #define GRTM_FLAGS_TS (1<<14)
0222 #define GRTM_FLAGS_VCE (1<<9)
0223 #define GRTM_FLAGS_MCB (1<<8)
0224 #define GRTM_FLAGS_FSHB (1<<7)
0225 #define GRTM_FLAGS_OCFB (1<<6)
0226 #define GRTM_FLAGS_FHECB (1<<5)
0227 #define GRTM_FLAGS_IZB (1<<4)
0228 #define GRTM_FLAGS_FECFB (1<<3)
0229
0230 #define GRTM_FLAGS_MASK (GRTM_FLAGS_TS|GRTM_FLAGS_VCE|GRTM_FLAGS_MCB|\
0231 GRTM_FLAGS_FSHB|GRTM_FLAGS_OCFB|GRTM_FLAGS_FHECB|\
0232 GRTM_FLAGS_IZB|GRTM_FLAGS_FECFB)
0233
0234
0235 struct grtm_frame {
0236
0237 unsigned int flags;
0238
0239 struct grtm_frame *next;
0240
0241 unsigned int *payload;
0242 };
0243
0244 #define FRAME_SIZE(payloadlen) (sizeof(struct grtm_frame)+payloadlen)
0245
0246 struct grtm_ioc_stats {
0247 unsigned long long frames_sent;
0248 unsigned int err_underrun;
0249 unsigned int err_tx;
0250 unsigned int err_ahb;
0251 unsigned int err_transfer_frame;
0252 };
0253
0254
0255 void grtm_register_drv(void);
0256
0257
0258 void grtm_rmap_register_drv (void);
0259
0260 #ifdef __cplusplus
0261 }
0262 #endif
0263
0264 #endif