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