182498Sroberto/****************************************************************************/
282498Sroberto/*      hopf6039.h                                                          */
382498Sroberto/*      hopf Elektronik 6039 PCI radio clock header                         */
482498Sroberto/*      (c) 1999, 2000 Bernd Altmeier    <altmeier@ATLSoft.de>              */
582498Sroberto/*      Rev. 1.00 Date 25.03.2000                                           */
682498Sroberto/*      History:                                                            */
782498Sroberto/****************************************************************************/
882498Sroberto
982498Sroberto#ifndef _hopf6039_H_
1082498Sroberto#define _hopf6039_H_
1182498Sroberto
1282498Sroberto#define HOPF_MAXVERSION			8
1382498Sroberto#define	HOPF_CNTR_MEM_LEN		0x7f
1482498Sroberto#define	HOPF_DATA_MEM_LEN		0x3ff	/* this is our memory size */
1582498Sroberto
1682498Sroberto/* macros and definition for 32 to 16 to 8 bit conversion */
1782498Sroberto
1882498Srobertotypedef unsigned long       DWORD;
1982498Srobertotypedef unsigned char       BYTE;
2082498Srobertotypedef unsigned short      WORD;
2182498Sroberto
2282498Sroberto#define LOWORD(l)     ((WORD)(l))
2382498Sroberto#define HIWORD(l)     ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
2482498Sroberto#define LOBYTE(w)     ((BYTE)(w))
2582498Sroberto#define HIBYTE(w)     ((BYTE)(((WORD)(w) >> 8) & 0xFF))
2682498Sroberto
2782498Sroberto/* iocntl codes for driver access */
2882498Sroberto
2982498Sroberto#define HOPF_CLOCK_CMD_MASK 0xff000
3082498Sroberto
3182498Sroberto#define HOPF_CLOCK_GET_LOCAL		0x10000
3282498Sroberto#define HOPF_CLOCK_GET_UTC		0x20000
3382498Sroberto#define HOPF_CLOCK_GET_ANTENNA		0x30000
3482498Sroberto#define HOPF_CLOCK_GET_DIFFERENCE	0x40000
3582498Sroberto#define HOPF_CLOCK_GET_VERSION		0x50000
3682498Sroberto#define HOPF_CLOCK_GET_POSITION		0x60000
3782498Sroberto#define HOPF_CLOCK_GET_SATDATA		0x70000
3882498Sroberto#define HOPF_CLOCK_GET_SYSTEMBYTE	0x80000
3982498Sroberto#define HOPF_CLOCK_GET_IRIG		0x90000
4082498Sroberto
4182498Sroberto#define HOPF_CLOCK_SET_DIFFERENCE	0x01000
4282498Sroberto#define HOPF_CLOCK_SET_ANTENNA		0x02000
4382498Sroberto#define HOPF_CLOCK_SET_TIME 		0x03000
4482498Sroberto#define HOPF_CLOCK_SET_POSITION		0x04000
4582498Sroberto#define HOPF_CLOCK_SET_SATMODE		0x05000
4682498Sroberto#define HOPF_CLOCK_SET_SYSTEMBYTE	0x06000
4782498Sroberto#define HOPF_CLOCK_SET_RESET		0x07000
4882498Sroberto#define HOPF_CLOCK_SET_IRIG		0x08000
4982498Sroberto
5082498Sroberto/* clock command codes */
5182498Sroberto
5282498Sroberto#define HOPF_CLOCK_HARDRESET		0x00008000
5382498Sroberto#define HOPF_CLOCK_SOFTRESET		0x00004000
5482498Sroberto
5582498Sroberto/* sat-information */
5682498Sroberto
5782498Srobertotypedef struct SatStat{
5882498Sroberto	BYTE wVisible;
5982498Sroberto	BYTE wMode;
6082498Sroberto	BYTE wSat0;
6182498Sroberto	BYTE wRat0;
6282498Sroberto	BYTE wSat1;
6382498Sroberto	BYTE wRat1;
6482498Sroberto	BYTE wSat2;
6582498Sroberto	BYTE wRat2;
6682498Sroberto	BYTE wSat3;
6782498Sroberto	BYTE wRat3;
6882498Sroberto	BYTE wSat4;
6982498Sroberto	BYTE wRat4;
7082498Sroberto	BYTE wSat5;
7182498Sroberto	BYTE wRat5;
7282498Sroberto	BYTE wSat6;
7382498Sroberto	BYTE wRat6;
7482498Sroberto	BYTE wSat7;
7582498Sroberto	BYTE wRat7;
7682498Sroberto} SatStat;
7782498Sroberto
7882498Sroberto/* GPS position */
7982498Sroberto
8082498Srobertotypedef struct GPSPos {  /* Position */
8182498Sroberto	long wAltitude;
8282498Sroberto	long wLongitude;
8382498Sroberto	long wLatitude;
8482498Sroberto} GPSPos;
8582498Sroberto
8682498Sroberto/* clock hardware version */
8782498Sroberto
8882498Srobertotypedef struct ClockVersion {
8982498Sroberto	char cVersion[255];  /* Hardware Version like " DCF-RECEIVER,   VERSION 01.01, DAT: 23.NOV.1999" */
9082498Sroberto	char dVersion[255];  /* Driver Version */
9182498Sroberto} ClockVersion;
9282498Sroberto
9382498Sroberto/* hopftime what you think */
9482498Sroberto
9582498Srobertotypedef struct HOPFTIME {
9682498Sroberto    unsigned int wYear;
9782498Sroberto    unsigned int wMonth;
9882498Sroberto    unsigned int wDayOfWeek;
9982498Sroberto    unsigned int wDay;
10082498Sroberto    unsigned int wHour;
10182498Sroberto    unsigned int wMinute;
10282498Sroberto    unsigned int wSecond;
10382498Sroberto    unsigned int wMilliseconds;
10482498Sroberto    unsigned int wStatus;
10582498Sroberto} HOPFTIME;
10682498Sroberto
10782498Sroberto/* DCF77 antenna alignment */
10882498Sroberto
10982498Srobertotypedef struct DcfAntenne {
11082498Sroberto	BYTE bStatus;
11182498Sroberto	BYTE bStatus1;
11282498Sroberto	WORD wAntValue;
11382498Sroberto} DcfAntenne;
11482498Sroberto
11582498Sroberto/* hopf PCI clock */
11682498Sroberto
11782498Srobertotypedef struct hopfCard {
11882498Sroberto	char name[32];
11982498Sroberto	unsigned irq;
12082498Sroberto	unsigned long membase; /* without mmap */
12182498Sroberto	unsigned int port;
12282498Sroberto
12382498Sroberto	int versionlen;
12482498Sroberto	char versionbuf[1024];
12582498Sroberto	char *version[HOPF_MAXVERSION];
12682498Sroberto	char cardname[32];
12782498Sroberto	int interrupt;
12882498Sroberto	void *mbase;		   /* this will be our memory base address */
12982498Sroberto
13082498Sroberto} hopfCard;
13182498Sroberto
13282498Srobertotypedef struct cardparams {
13382498Sroberto	unsigned int port;
13482498Sroberto	unsigned irq;
13582498Sroberto	int cardtype;
13682498Sroberto	int cardnr;
13782498Sroberto	unsigned int membase;
13882498Sroberto} cardparams;
13982498Sroberto
14082498Sroberto
14182498Sroberto#define WRITE_REGISTER		0x00
14282498Sroberto#define READ_REGISTER		0x01
14382498Sroberto
14482498Sroberto#endif /* _hopf6039_H_ */
145