1 /* 2 * Linux driver for HYSDN cards 3 * common definitions for both sides of the bus: 4 * - conventions both spoolers must know 5 * - channel numbers agreed upon 6 * 7 * Author M. Steinkopf 8 * Copyright 1999 by M. Steinkopf 9 * 10 * This software may be used and distributed according to the terms 11 * of the GNU General Public License, incorporated herein by reference. 12 * 13 */ 14 15 #ifndef __INCE1PC_H__ 16 #define __INCE1PC_H__ 17 18 /* basic scalar definitions have same meanning, 19 * but their declaration location depends on environment 20 */ 21 22 /*--------------------------------------channel numbers---------------------*/ 23 #define CHAN_SYSTEM 0x0001 /* system channel (spooler to spooler) */ 24 #define CHAN_ERRLOG 0x0005 /* error logger */ 25 #define CHAN_CAPI 0x0064 /* CAPI interface */ 26 #define CHAN_NDIS_DATA 0x1001 /* NDIS data transfer */ 27 28 /*--------------------------------------POF ready msg-----------------------*/ 29 /* NOTE: after booting POF sends system ready message to PC: */ 30 #define RDY_MAGIC 0x52535953UL /* 'SYSR' reversed */ 31 #define RDY_MAGIC_SIZE 4 /* size in bytes */ 32 33 #define MAX_N_TOK_BYTES 255 34 35 #define MIN_RDY_MSG_SIZE RDY_MAGIC_SIZE 36 #define MAX_RDY_MSG_SIZE (RDY_MAGIC_SIZE + MAX_N_TOK_BYTES) 37 38 #define SYSR_TOK_END 0 39 #define SYSR_TOK_B_CHAN 1 /* nr. of B-Channels; DataLen=1; def: 2 */ 40 #define SYSR_TOK_FAX_CHAN 2 /* nr. of FAX Channels; DataLen=1; def: 0 */ 41 #define SYSR_TOK_MAC_ADDR 3 /* MAC-Address; DataLen=6; def: auto */ 42 #define SYSR_TOK_ESC 255 /* undefined data size yet */ 43 /* default values, if not corrected by token: */ 44 #define SYSR_TOK_B_CHAN_DEF 2 /* assume 2 B-Channels */ 45 #define SYSR_TOK_FAX_CHAN_DEF 1 /* assume 1 FAX Channel */ 46 47 /* syntax of new SYSR token stream: 48 * channel: CHAN_SYSTEM 49 * msgsize: MIN_RDY_MSG_SIZE <= x <= MAX_RDY_MSG_SIZE 50 * RDY_MAGIC_SIZE <= x <= (RDY_MAGIC_SIZE+MAX_N_TOK_BYTES) 51 * msg : 0 1 2 3 {4 5 6 ..} 52 * S Y S R MAX_N_TOK_BYTES bytes of TokenStream 53 * 54 * TokenStream := empty 55 * | {NonEndTokenChunk} EndToken RotlCRC 56 * NonEndTokenChunk:= NonEndTokenId DataLen [Data] 57 * NonEndTokenId := 0x01 .. 0xFE 1 BYTE 58 * DataLen := 0x00 .. 0xFF 1 BYTE 59 * Data := DataLen bytes 60 * EndToken := 0x00 61 * RotlCRC := special 1 byte CRC over all NonEndTokenChunk bytes 62 * s. RotlCRC algorithm 63 * 64 * RotlCRC algorithm: 65 * ucSum= 0 1 unsigned char 66 * for all NonEndTokenChunk bytes: 67 * ROTL(ucSum,1) rotate left by 1 68 * ucSum += Char; add current byte with swap around 69 * RotlCRC= ~ucSum; invert all bits for result 70 * 71 * note: 72 * - for 16-bit FIFO add padding 0 byte to achieve even token data bytes! 73 */ 74 75 /*--------------------------------------error logger------------------------*/ 76 /* note: pof needs final 0 ! */ 77 #define ERRLOG_CMD_REQ "ERRLOG ON" 78 #define ERRLOG_CMD_REQ_SIZE 10 /* with final 0 byte ! */ 79 #define ERRLOG_CMD_STOP "ERRLOG OFF" 80 #define ERRLOG_CMD_STOP_SIZE 11 /* with final 0 byte ! */ 81 82 #define ERRLOG_ENTRY_SIZE 64 /* sizeof(tErrLogEntry) */ 83 /* remaining text size = 55 */ 84 #define ERRLOG_TEXT_SIZE (ERRLOG_ENTRY_SIZE - 2 * 4 - 1) 85 86 typedef struct ErrLogEntry_tag { 87 88 /*00 */ unsigned long ulErrType; 89 90 /*04 */ unsigned long ulErrSubtype; 91 92 /*08 */ unsigned char ucTextSize; 93 94 /*09 */ unsigned char ucText[ERRLOG_TEXT_SIZE]; 95 /* ASCIIZ of len ucTextSize-1 */ 96 97 /*40 */ 98 } tErrLogEntry; 99 100 101 #if defined(__TURBOC__) 102 #if sizeof(tErrLogEntry) != ERRLOG_ENTRY_SIZE 103 #error size of tErrLogEntry != ERRLOG_ENTRY_SIZE 104 #endif /* */ 105 #endif /* */ 106 107 /*--------------------------------------DPRAM boot spooler------------------*/ 108 /* this is the struture used between pc and 109 * hyperstone to exchange boot data 110 */ 111 #define DPRAM_SPOOLER_DATA_SIZE 0x20 112 typedef struct DpramBootSpooler_tag { 113 114 /*00 */ unsigned char Len; 115 116 /*01 */ volatile unsigned char RdPtr; 117 118 /*02 */ unsigned char WrPtr; 119 120 /*03 */ unsigned char Data[DPRAM_SPOOLER_DATA_SIZE]; 121 122 /*23 */ 123 } tDpramBootSpooler; 124 125 126 #define DPRAM_SPOOLER_MIN_SIZE 5 /* Len+RdPtr+Wrptr+2*data */ 127 #define DPRAM_SPOOLER_DEF_SIZE 0x23 /* current default size */ 128 129 /*--------------------------------------HYCARD/ERGO DPRAM SoftUart----------*/ 130 /* at DPRAM offset 0x1C00: */ 131 #define SIZE_RSV_SOFT_UART 0x1B0 /* 432 bytes reserved for SoftUart */ 132 133 134 #endif /* __INCE1PC_H__ */ 135