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 __GRCTM_H__
0031 #define __GRCTM_H__
0032
0033 #define DAT0_IRQ 0x1
0034 #define DAT1_IRQ 0x2
0035 #define DAT2_IRQ 0x4
0036 #define PULSE0_IRQ 0x10
0037 #define PULSE1_IRQ 0x20
0038 #define PULSE2_IRQ 0x40
0039 #define PULSE3_IRQ 0x80
0040 #define PULSE4_IRQ 0x100
0041 #define PULSE5_IRQ 0x200
0042 #define PULSE6_IRQ 0x400
0043 #define PULSE7_IRQ 0x800
0044
0045 struct grctm_regs {
0046 volatile unsigned int grr;
0047 volatile unsigned int gcr;
0048 volatile unsigned int gsr;
0049 volatile unsigned int unused[2];
0050 volatile unsigned int pfr;
0051 volatile unsigned int etcr;
0052 volatile unsigned int etfr;
0053 volatile unsigned int dcr0;
0054 volatile unsigned int dfr0;
0055 volatile unsigned int dcr1;
0056 volatile unsigned int dfr1;
0057 volatile unsigned int dcr2;
0058 volatile unsigned int dfr2;
0059 volatile unsigned int stcr;
0060 volatile unsigned int stfr;
0061 volatile unsigned int pdr[8];
0062 volatile unsigned int pimsr;
0063 volatile unsigned int pimr;
0064 volatile unsigned int pisr;
0065 volatile unsigned int pir;
0066 volatile unsigned int imr;
0067 volatile unsigned int picr;
0068 volatile unsigned int unused1[2];
0069 volatile unsigned int etir;
0070 volatile unsigned int fsir;
0071 volatile unsigned int serconf;
0072 volatile unsigned int unused2;
0073 volatile unsigned int twsc;
0074 volatile unsigned int twadj;
0075 volatile unsigned int twtx;
0076 volatile unsigned int twrx;
0077 };
0078
0079 struct grctm_stats {
0080
0081
0082 unsigned int nirqs;
0083 unsigned int pulse;
0084 };
0085
0086
0087 typedef void (*grctm_isr_t)(unsigned int pimr, void *data);
0088
0089
0090 extern void *grctm_open(int minor);
0091
0092
0093 extern void grctm_close(void *spwcuc);
0094
0095
0096 extern int grctm_reset(void *grctm);
0097
0098
0099 extern void grctm_int_enable(void *grctm);
0100
0101
0102 extern void grctm_int_disable(void *grctm);
0103
0104
0105 extern void grctm_clr_stats(void *grctm);
0106
0107
0108 extern void grctm_get_stats(void *grctm, struct grctm_stats *stats);
0109
0110
0111
0112
0113 extern void grctm_int_register(void *grctm, grctm_isr_t func, void *data);
0114
0115
0116 extern void grctm_enable_ext_sync(void *grctm);
0117
0118
0119 extern void grctm_disable_ext_sync(void *grctm);
0120
0121
0122 extern void grctm_enable_tw_sync(void *grctm);
0123
0124
0125 extern void grctm_disable_tw_sync(void *grctm);
0126
0127
0128 extern void grctm_disable_fs(void *grctm);
0129
0130
0131 extern void grctm_enable_fs(void *grctm);
0132
0133
0134 extern unsigned int grctm_get_et_coarse(void *grctm);
0135
0136
0137 extern unsigned int grctm_get_et_fine(void *grctm);
0138
0139
0140 extern unsigned long long grctm_get_et(void *grctm);
0141
0142
0143 extern int grctm_is_dat_latched(void *grctm, int dat);
0144
0145
0146 extern void grctm_set_dat_edge(void *grctm, int dat, int edge);
0147
0148
0149 extern unsigned int grctm_get_dat_coarse(void *grctm, int dat);
0150
0151
0152 extern unsigned int grctm_get_dat_fine(void *grctm, int dat);
0153
0154
0155 extern unsigned long long grctm_get_dat_et(void *grctm, int dat);
0156
0157
0158 extern unsigned int grctm_get_pulse_reg(void *grctm, int pulse);
0159
0160
0161 extern void grctm_set_pulse_reg(void *grctm, int pulse, unsigned int val);
0162
0163
0164 extern void grctm_cfg_pulse(void *grctm, int pulse, int pp, int pw, int pl, int en);
0165
0166
0167 extern void grctm_enable_pulse(void *grctm, int pulse);
0168
0169
0170 extern void grctm_disable_pulse(void *grctm, int pulse);
0171
0172
0173 extern void grctm_clear_irqs(void *grctm, int irqs);
0174
0175
0176 extern void grctm_enable_irqs(void *grctm, int irqs);
0177
0178
0179 void grctm_set_fs_incr(void *grctm, int incr);
0180
0181
0182 void grctm_set_et_incr(void *grctm, int incr);
0183
0184
0185 struct grctm_regs *grctm_get_regs(void *grctm);
0186
0187
0188 extern void grctm_register(void);
0189
0190 #endif