1 /*        $NetBSD: hopf6039.h,v 1.5 2020/05/25 20:47:19 christos Exp $          */
2 
3 /****************************************************************************/
4 /*      hopf6039.h                                                          */
5 /*      hopf Elektronik 6039 PCI radio clock header                         */
6 /*      (c) 1999, 2000 Bernd Altmeier    <altmeier@ATLSoft.de>              */
7 /*      Rev. 1.00 Date 25.03.2000                                           */
8 /*      History:                                                            */
9 /****************************************************************************/
10 
11 #ifndef _hopf6039_H_
12 #define _hopf6039_H_
13 
14 #define HOPF_MAXVERSION                           8
15 #define   HOPF_CNTR_MEM_LEN             0x7f
16 #define   HOPF_DATA_MEM_LEN             0x3ff     /* this is our memory size */
17 
18 /* macros and definition for 32 to 16 to 8 bit conversion */
19 
20 typedef unsigned long       DWORD;
21 typedef unsigned char       BYTE;
22 typedef unsigned short      WORD;
23 
24 #define LOWORD(l)     ((WORD)(l))
25 #define HIWORD(l)     ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
26 #define LOBYTE(w)     ((BYTE)(w))
27 #define HIBYTE(w)     ((BYTE)(((WORD)(w) >> 8) & 0xFF))
28 
29 /* iocntl codes for driver access */
30 
31 #define HOPF_CLOCK_CMD_MASK 0xff000
32 
33 #define HOPF_CLOCK_GET_LOCAL            0x10000
34 #define HOPF_CLOCK_GET_UTC              0x20000
35 #define HOPF_CLOCK_GET_ANTENNA                    0x30000
36 #define HOPF_CLOCK_GET_DIFFERENCE       0x40000
37 #define HOPF_CLOCK_GET_VERSION                    0x50000
38 #define HOPF_CLOCK_GET_POSITION                   0x60000
39 #define HOPF_CLOCK_GET_SATDATA                    0x70000
40 #define HOPF_CLOCK_GET_SYSTEMBYTE       0x80000
41 #define HOPF_CLOCK_GET_IRIG             0x90000
42 
43 #define HOPF_CLOCK_SET_DIFFERENCE       0x01000
44 #define HOPF_CLOCK_SET_ANTENNA                    0x02000
45 #define HOPF_CLOCK_SET_TIME             0x03000
46 #define HOPF_CLOCK_SET_POSITION                   0x04000
47 #define HOPF_CLOCK_SET_SATMODE                    0x05000
48 #define HOPF_CLOCK_SET_SYSTEMBYTE       0x06000
49 #define HOPF_CLOCK_SET_RESET            0x07000
50 #define HOPF_CLOCK_SET_IRIG             0x08000
51 
52 /* clock command codes */
53 
54 #define HOPF_CLOCK_HARDRESET            0x00008000
55 #define HOPF_CLOCK_SOFTRESET            0x00004000
56 
57 /* sat-information */
58 
59 typedef struct SatStat{
60           BYTE wVisible;
61           BYTE wMode;
62           BYTE wSat0;
63           BYTE wRat0;
64           BYTE wSat1;
65           BYTE wRat1;
66           BYTE wSat2;
67           BYTE wRat2;
68           BYTE wSat3;
69           BYTE wRat3;
70           BYTE wSat4;
71           BYTE wRat4;
72           BYTE wSat5;
73           BYTE wRat5;
74           BYTE wSat6;
75           BYTE wRat6;
76           BYTE wSat7;
77           BYTE wRat7;
78 } SatStat;
79 
80 /* GPS position */
81 
82 typedef struct GPSPos {  /* Position */
83           long wAltitude;
84           long wLongitude;
85           long wLatitude;
86 } GPSPos;
87 
88 /* clock hardware version */
89 
90 typedef struct ClockVersion {
91           char cVersion[255];  /* Hardware Version like " DCF-RECEIVER,   VERSION 01.01, DAT: 23.NOV.1999" */
92           char dVersion[255];  /* Driver Version */
93 } ClockVersion;
94 
95 /* hopftime what you think */
96 
97 typedef struct HOPFTIME {
98     unsigned int wYear;
99     unsigned int wMonth;
100     unsigned int wDayOfWeek;
101     unsigned int wDay;
102     unsigned int wHour;
103     unsigned int wMinute;
104     unsigned int wSecond;
105     unsigned int wMilliseconds;
106     unsigned int wStatus;
107 } HOPFTIME;
108 
109 /* DCF77 antenna alignment */
110 
111 typedef struct DcfAntenne {
112           BYTE bStatus;
113           BYTE bStatus1;
114           WORD wAntValue;
115 } DcfAntenne;
116 
117 /* hopf PCI clock */
118 
119 typedef struct hopfCard {
120           char name[32];
121           unsigned irq;
122           unsigned long membase; /* without mmap */
123           unsigned int port;
124 
125           int versionlen;
126           char versionbuf[1024];
127           char *version[HOPF_MAXVERSION];
128           char cardname[32];
129           int interrupt;
130           void *mbase;                     /* this will be our memory base address */
131 
132 } hopfCard;
133 
134 typedef struct cardparams {
135           unsigned int port;
136           unsigned irq;
137           int cardtype;
138           int cardnr;
139           unsigned int membase;
140 } cardparams;
141 
142 
143 #define WRITE_REGISTER                  0x00
144 #define READ_REGISTER                   0x01
145 
146 #endif /* _hopf6039_H_ */
147