linux/drivers/isdn/sc/message.h
<<
>>
Prefs
   1/* $Id: message.h,v 1.1.10.1 2001/09/23 22:24:59 kai Exp $
   2 *
   3 * Copyright (C) 1996  SpellCaster Telecommunications Inc.
   4 *
   5 * structures, macros and defines useful for sending
   6 * messages to the adapter
   7 *
   8 * This software may be used and distributed according to the terms
   9 * of the GNU General Public License, incorporated herein by reference.
  10 *
  11 * For more information, please contact gpl-info@spellcast.com or write:
  12 *
  13 *     SpellCaster Telecommunications Inc.
  14 *     5621 Finch Avenue East, Unit #3
  15 *     Scarborough, Ontario  Canada
  16 *     M1B 2T9
  17 *     +1 (416) 297-8565
  18 *     +1 (416) 297-6433 Facsimile
  19 */
  20
  21/*
  22 * Board message macros, defines and structures
  23 */
  24 
  25#ifndef MESSAGE_H
  26#define MESSAGE_H
  27
  28#define MAX_MESSAGES            32      /* Maximum messages that can be
  29                                           queued */
  30#define MSG_DATA_LEN            48      /* Maximum size of message payload */
  31#define MSG_LEN                 64      /* Size of a message */
  32#define CMPID                   0       /* Loader message process ID */
  33#define CEPID                   64      /* Firmware message process ID */
  34
  35/*
  36 * Macro to determine if a message is a loader message
  37 */
  38#define IS_CM_MESSAGE(mesg, tx, cx, dx)         \
  39                ((mesg.type == cmRspType##tx)           \
  40                &&(mesg.class == cmRspClass##cx)        \
  41                &&(mesg.code == cmRsp##dx))
  42
  43/*
  44 * Macro to determine if a message is a firmware message
  45 */
  46#define IS_CE_MESSAGE(mesg, tx, cx, dx)         \
  47                ((mesg.type == ceRspType##tx)           \
  48                &&(mesg.class == ceRspClass##cx)        \
  49                &&(mesg.code == ceRsp##tx##dx))
  50
  51/* 
  52 * Loader Request and Response Messages
  53 */
  54
  55/* message types */
  56#define cmReqType1                      1
  57#define cmReqType2                      2
  58#define cmRspType0                      0
  59#define cmRspType1                      1
  60#define cmRspType2                      2
  61#define cmRspType5                      5
  62
  63/* message classes */
  64#define cmReqClass0                     0
  65#define cmRspClass0                     0
  66
  67/* message codes */
  68#define cmReqHWConfig           1                       /* 1,0,1 */
  69#define cmReqMsgLpbk            2                       /* 1,0,2 */
  70#define cmReqVersion            3                       /* 1,0,3 */
  71#define cmReqLoadProc           1                       /* 2,0,1 */
  72#define cmReqStartProc          2                       /* 2,0,2 */
  73#define cmReqReadMem            6                       /* 2,0,6 */
  74#define cmRspHWConfig           cmReqHWConfig
  75#define cmRspMsgLpbk            cmReqMsgLpbk
  76#define cmRspVersion            cmReqVersion
  77#define cmRspLoadProc           cmReqLoadProc
  78#define cmRspStartProc          cmReqStartProc
  79#define cmRspReadMem            cmReqReadMem
  80#define cmRspMiscEngineUp       1                       /* 5,0,1 */
  81#define cmRspInvalid            0                       /* 0,0,0 */
  82
  83
  84/*
  85 * Firmware Request and Response Messages
  86 */
  87
  88/* message types */
  89#define ceReqTypePhy            1
  90#define ceReqTypeLnk            2
  91#define ceReqTypeCall           3
  92#define ceReqTypeStat           1
  93#define ceRspTypeErr            0
  94#define ceRspTypePhy            ceReqTypePhy
  95#define ceRspTypeLnk            ceReqTypeLnk
  96#define ceRspTypeCall           ceReqTypeCall
  97#define ceRspTypeStat           ceReqTypeStat
  98
  99/* message classes */
 100#define ceReqClass0             0
 101#define ceReqClass1             1
 102#define ceReqClass2             2
 103#define ceReqClass3             3
 104#define ceRspClass0             ceReqClass0
 105#define ceRspClass1             ceReqClass1
 106#define ceRspClass2             ceReqClass2
 107#define ceRspClass3             ceReqClass3
 108
 109/* message codes  (B) = BRI only, (P) = PRI only, (V) = POTS only */
 110#define ceReqPhyProcInfo        1                       /* 1,0,1 */
 111#define ceReqPhyConnect         1                       /* 1,1,1 */
 112#define ceReqPhyDisconnect      2                       /* 1,1,2 */
 113#define ceReqPhySetParams       3                       /* 1,1,3 (P) */
 114#define ceReqPhyGetParams       4                       /* 1,1,4 (P) */
 115#define ceReqPhyStatus          1                       /* 1,2,1 */
 116#define ceReqPhyAcfaStatus      2                       /* 1,2,2 (P) */
 117#define ceReqPhyChCallState     3                       /* 1,2,3 (P) */
 118#define ceReqPhyChServState     4                       /* 1,2,4 (P) */
 119#define ceReqPhyRLoopBack       1                       /* 1,3,1 */
 120#define ceRspPhyProcInfo        ceReqPhyProcInfo
 121#define ceRspPhyConnect         ceReqPhyConnect
 122#define ceRspPhyDisconnect      ceReqPhyDisconnect
 123#define ceRspPhySetParams       ceReqPhySetParams
 124#define ceRspPhyGetParams       ceReqPhyGetParams
 125#define ceRspPhyStatus          ceReqPhyStatus
 126#define ceRspPhyAcfaStatus      ceReqPhyAcfaStatus
 127#define ceRspPhyChCallState     ceReqPhyChCallState
 128#define ceRspPhyChServState     ceReqPhyChServState
 129#define ceRspPhyRLoopBack       ceReqphyRLoopBack
 130#define ceReqLnkSetParam        1                       /* 2,0,1 */
 131#define ceReqLnkGetParam        2                       /* 2,0,2 */
 132#define ceReqLnkGetStats        3                       /* 2,0,3 */
 133#define ceReqLnkWrite           1                       /* 2,1,1 */
 134#define ceReqLnkRead            2                       /* 2,1,2 */
 135#define ceReqLnkFlush           3                       /* 2,1,3 */
 136#define ceReqLnkWrBufTrc        4                       /* 2,1,4 */
 137#define ceReqLnkRdBufTrc        5                       /* 2,1,5 */
 138#define ceRspLnkSetParam        ceReqLnkSetParam
 139#define ceRspLnkGetParam        ceReqLnkGetParam
 140#define ceRspLnkGetStats        ceReqLnkGetStats
 141#define ceRspLnkWrite           ceReqLnkWrite
 142#define ceRspLnkRead            ceReqLnkRead
 143#define ceRspLnkFlush           ceReqLnkFlush
 144#define ceRspLnkWrBufTrc        ceReqLnkWrBufTrc
 145#define ceRspLnkRdBufTrc        ceReqLnkRdBufTrc
 146#define ceReqCallSetSwitchType  1                       /* 3,0,1 */
 147#define ceReqCallGetSwitchType  2                       /* 3,0,2 */
 148#define ceReqCallSetFrameFormat 3                       /* 3,0,3 */
 149#define ceReqCallGetFrameFormat 4                       /* 3,0,4 */
 150#define ceReqCallSetCallType    5                       /* 3,0,5 */
 151#define ceReqCallGetCallType    6                       /* 3,0,6 */
 152#define ceReqCallSetSPID        7                       /* 3,0,7 (!P) */
 153#define ceReqCallGetSPID        8                       /* 3,0,8 (!P) */
 154#define ceReqCallSetMyNumber    9                       /* 3,0,9 (!P) */
 155#define ceReqCallGetMyNumber    10                      /* 3,0,10 (!P) */
 156#define ceRspCallSetSwitchType  ceReqCallSetSwitchType
 157#define ceRspCallGetSwitchType  ceReqCallSetSwitchType
 158#define ceRspCallSetFrameFormat ceReqCallSetFrameFormat
 159#define ceRspCallGetFrameFormat ceReqCallGetFrameFormat
 160#define ceRspCallSetCallType    ceReqCallSetCallType
 161#define ceRspCallGetCallType    ceReqCallGetCallType
 162#define ceRspCallSetSPID        ceReqCallSetSPID
 163#define ceRspCallGetSPID        ceReqCallGetSPID
 164#define ceRspCallSetMyNumber    ceReqCallSetMyNumber
 165#define ceRspCallGetMyNumber    ceReqCallGetMyNumber
 166#define ceRspStatAcfaStatus     2
 167#define ceRspStat
 168#define ceRspErrError           0                       /* 0,0,0 */
 169
 170/*
 171 * Call Types
 172 */
 173#define CALLTYPE_64K            0
 174#define CALLTYPE_56K            1
 175#define CALLTYPE_SPEECH         2
 176#define CALLTYPE_31KHZ          3
 177
 178/*
 179 * Link Level data contains a pointer to and the length of
 180 * a buffer in shared RAM. Used by LnkRead and LnkWrite message
 181 * types. Part of RspMsgStruct and ReqMsgStruct.
 182 */
 183typedef struct {
 184        unsigned long buff_offset;
 185        unsigned short msg_len;
 186} LLData;
 187
 188
 189/* 
 190 * Message payload template for an HWConfig message
 191 */
 192typedef struct {
 193        char st_u_sense;
 194        char powr_sense;
 195        char sply_sense;
 196        unsigned char asic_id;
 197        long ram_size;
 198        char serial_no[13];
 199        char part_no[13];
 200        char rev_no[2];
 201} HWConfig_pl;
 202
 203/*
 204 * A Message
 205 */
 206struct message {
 207        unsigned char sequence_no;
 208        unsigned char process_id;
 209        unsigned char time_stamp;
 210        unsigned char cmd_sequence_no;  /* Rsp messages only */
 211        unsigned char reserved1[3];
 212        unsigned char msg_byte_cnt;
 213        unsigned char type;
 214        unsigned char class;
 215        unsigned char code;
 216        unsigned char phy_link_no;
 217        unsigned char rsp_status;       /* Rsp messages only */
 218        unsigned char reseved2[3];
 219        union {
 220                unsigned char byte_array[MSG_DATA_LEN];
 221                LLData response;
 222                HWConfig_pl HWCresponse;
 223        } msg_data;
 224};
 225
 226typedef struct message ReqMessage;      /* Request message */
 227typedef struct message RspMessage;      /* Response message */
 228
 229/*
 230 * The first 5010 bytes of shared memory contain the message queues,
 231 * indexes and other data. This structure is its template
 232 */
 233typedef struct {
 234        volatile ReqMessage req_queue[MAX_MESSAGES];
 235        volatile RspMessage rsp_queue[MAX_MESSAGES];
 236        volatile unsigned char req_head;
 237        volatile unsigned char req_tail;
 238        volatile unsigned char rsp_head;
 239        volatile unsigned char rsp_tail;
 240        volatile unsigned long signature;
 241        volatile unsigned long trace_enable;
 242        volatile unsigned char reserved[4];
 243} DualPortMemory;
 244
 245#endif
 246