summaryrefslogtreecommitdiffstats
path: root/kernel/drivers/isdn/hysdn/ince1pc.h
blob: cab68361de6574459d9021bdcdc0b6e31db7f626 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
 * Linux driver for HYSDN cards
 * common definitions for both sides of the bus:
 * - conventions both spoolers must know
 * - channel numbers agreed upon
 *
 * Author    M. Steinkopf
 * Copyright 1999 by M. Steinkopf
 *
 * This software may be used and distributed according to the terms
 * of the GNU General Public License, incorporated herein by reference.
 *
 */

#ifndef __INCE1PC_H__
#define __INCE1PC_H__

/*  basic scalar definitions have same meanning,
 *  but their declaration location depends on environment
 */

/*--------------------------------------channel numbers---------------------*/
#define CHAN_SYSTEM     0x0001      /* system channel (spooler to spooler) */
#define CHAN_ERRLOG     0x0005      /* error logger */
#define CHAN_CAPI       0x0064      /* CAPI interface */
#define CHAN_NDIS_DATA  0x1001      /* NDIS data transfer */

/*--------------------------------------POF ready msg-----------------------*/
/* NOTE: after booting POF sends system ready message to PC: */
#define RDY_MAGIC       0x52535953UL    /* 'SYSR' reversed */
#define RDY_MAGIC_SIZE  4               /* size in bytes */

#define MAX_N_TOK_BYTES 255

#define MIN_RDY_MSG_SIZE    RDY_MAGIC_SIZE
#define MAX_RDY_MSG_SIZE    (RDY_MAGIC_SIZE + MAX_N_TOK_BYTES)

#define SYSR_TOK_END            0
#define SYSR_TOK_B_CHAN         1   /* nr. of B-Channels;   DataLen=1; def: 2 */
#define SYSR_TOK_FAX_CHAN       2   /* nr. of FAX Channels; DataLen=1; def: 0 */
#define SYSR_TOK_MAC_ADDR       3   /* MAC-Address; DataLen=6; def: auto */
#define SYSR_TOK_ESC            255 /* undefined data size yet */
/* default values, if not corrected by token: */
#define SYSR_TOK_B_CHAN_DEF     2   /* assume 2 B-Channels */
#define SYSR_TOK_FAX_CHAN_DEF   1   /* assume 1 FAX Channel */

/*  syntax of new SYSR token stream:
 *  channel: CHAN_SYSTEM
 *  msgsize: MIN_RDY_MSG_SIZE <= x <= MAX_RDY_MSG_SIZE
 *           RDY_MAGIC_SIZE   <= x <= (RDY_MAGIC_SIZE+MAX_N_TOK_BYTES)
 *  msg    : 0 1 2 3 {4 5 6 ..}
 *           S Y S R  MAX_N_TOK_BYTES bytes of TokenStream
 *
 *  TokenStream     :=   empty
 *                     | {NonEndTokenChunk} EndToken RotlCRC
 *  NonEndTokenChunk:= NonEndTokenId DataLen [Data]
 *  NonEndTokenId   := 0x01 .. 0xFE                 1 BYTE
 *  DataLen         := 0x00 .. 0xFF                 1 BYTE
 *  Data            := DataLen bytes
 *  EndToken        := 0x00
 *  RotlCRC         := special 1 byte CRC over all NonEndTokenChunk bytes
 *                     s. RotlCRC algorithm
 *
 *  RotlCRC algorithm:
 *      ucSum= 0                        1 unsigned char
 *      for all NonEndTokenChunk bytes:
 *          ROTL(ucSum,1)               rotate left by 1
 *          ucSum += Char;              add current byte with swap around
 *      RotlCRC= ~ucSum;                invert all bits for result
 *
 *  note:
 *  - for 16-bit FIFO add padding 0 byte to achieve even token data bytes!
 */

/*--------------------------------------error logger------------------------*/
/* note: pof needs final 0 ! */
#define ERRLOG_CMD_REQ          "ERRLOG ON"
#define ERRLOG_CMD_REQ_SIZE     10              /* with final 0 byte ! */
#define ERRLOG_CMD_STOP         "ERRLOG OFF"
#define ERRLOG_CMD_STOP_SIZE    11              /* with final 0 byte ! */

#define ERRLOG_ENTRY_SIZE       64      /* sizeof(tErrLogEntry) */
					/* remaining text size = 55 */
#define ERRLOG_TEXT_SIZE    (ERRLOG_ENTRY_SIZE - 2 * 4 - 1)

typedef struct ErrLogEntry_tag {

	/*00 */ unsigned long ulErrType;

	/*04 */ unsigned long ulErrSubtype;

	/*08 */ unsigned char ucTextSize;

	/*09 */ unsigned char ucText[ERRLOG_TEXT_SIZE];
	/* ASCIIZ of len ucTextSize-1 */

/*40 */
} tErrLogEntry;


#if defined(__TURBOC__)
#if sizeof(tErrLogEntry) != ERRLOG_ENTRY_SIZE
#error size of tErrLogEntry != ERRLOG_ENTRY_SIZE
#endif				/*  */
#endif				/*  */

/*--------------------------------------DPRAM boot spooler------------------*/
/*  this is the struture used between pc and
 *  hyperstone to exchange boot data
 */
#define DPRAM_SPOOLER_DATA_SIZE 0x20
typedef struct DpramBootSpooler_tag {

	/*00 */ unsigned char Len;

	/*01 */ volatile unsigned char RdPtr;

	/*02 */ unsigned char WrPtr;

	/*03 */ unsigned char Data[DPRAM_SPOOLER_DATA_SIZE];

/*23 */
} tDpramBootSpooler;


#define DPRAM_SPOOLER_MIN_SIZE  5       /* Len+RdPtr+Wrptr+2*data */
#define DPRAM_SPOOLER_DEF_SIZE  0x23    /* current default size   */

/*--------------------------------------HYCARD/ERGO DPRAM SoftUart----------*/
/* at DPRAM offset 0x1C00: */
#define SIZE_RSV_SOFT_UART  0x1B0   /* 432 bytes reserved for SoftUart */


#endif	/* __INCE1PC_H__ */