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
20typedef unsigned long       DWORD;
21typedef unsigned char       BYTE;
22typedef 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
59typedef 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
82typedef struct GPSPos {  /* Position */
83	long wAltitude;
84	long wLongitude;
85	long wLatitude;
86} GPSPos;
87
88/* clock hardware version */
89
90typedef 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
97typedef 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
111typedef struct DcfAntenne {
112	BYTE bStatus;
113	BYTE bStatus1;
114	WORD wAntValue;
115} DcfAntenne;
116
117/* hopf PCI clock */
118
119typedef 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
134typedef 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