- /*
- * External Diva Server driver include file
- *
- * Copyright (C) Eicon Technology Corporation, 2000.
- *
- * Eicon File Revision : 1.5
- *
- * This software may be used and distributed according to the terms
- * of the GNU General Public License, incorporated herein by reference.
- *
- */
- #if !defined(DIVAS_H)
- #define DIVAS_H
- #include "sys.h"
- /* IOCTL commands */
- #define DIA_IOCTL_INIT (0)
- #define DIA_IOCTL_LOAD (1)
- #define DIA_IOCTL_CONFIG (2)
- #define DIA_IOCTL_START (3)
- #define DIA_IOCTL_GET_NUM (4)
- #define DIA_IOCTL_GET_LIST (5)
- #define DIA_IOCTL_LOG (6)
- #define DIA_IOCTL_DETECT (7)
- #define DIA_IOCTL_SPACE (8)
- #define DIA_IOCTL_GET_MEM (9)
- #define DIA_IOCTL_FLAVOUR (10)
- #define DIA_IOCTL_XLOG_REQ (11)
- /* Error codes */
- #define XLOG_ERR_CARD_NUM (13)
- #define XLOG_ERR_DONE (14)
- #define XLOG_ERR_CMD (15)
- #define XLOG_ERR_TIMEOUT (16)
- #define XLOG_ERR_CARD_STATE (17)
- #define XLOG_ERR_UNKNOWN (18)
- #define XLOG_OK (0)
- /* Adapter states */
- #define DIA_UNKNOWN (0)
- #define DIA_RESET (1)
- #define DIA_LOADED (2)
- #define DIA_CONFIGURED (3)
- #define DIA_RUNNING (4)
- /* Stucture for getting card specific information from active cad driver */
- typedef struct
- {
- int card_type;
- int card_slot;
- int state;
- } dia_card_list_t;
- /* use following to select which logging to have active */
- #define DIVAS_LOG_DEBUG (1 << 0)
- #define DIVAS_LOG_XLOG (1 << 1)
- #define DIVAS_LOG_IDI (1 << 2)
- #define DIVAS_LOG_CAPI (1 << 3)
- /* stucture for DIA_IOCTL_LOG to get information from adapter */
- typedef struct
- {
- int card_id;
- int log_types; /* bit mask of log types: use DIVAS_LOG_XXX */
- } dia_log_t;
- /* list of cards supported by this driver */
- #define DIA_CARD_TYPE_DIVA_SERVER (0) /* Diva Server PRI */
- #define DIA_CARD_TYPE_DIVA_SERVER_B (1) /* Diva Server BRI */
- #define DIA_CARD_TYPE_DIVA_SERVER_Q (2) /* Diva Server 4-BRI */
- /* bus types */
- #define DIA_BUS_TYPE_ISA (0)
- #define DIA_BUS_TYPE_ISA_PNP (1)
- #define DIA_BUS_TYPE_PCI (2)
- #define DIA_BUS_TYPE_MCA (3)
- /* types of memory used (index for memory array below) */
- #define DIVAS_RAM_MEMORY 0
- #define DIVAS_REG_MEMORY 1
- #define DIVAS_CFG_MEMORY 2
- #define DIVAS_SHARED_MEMORY 3
- #define DIVAS_CTL_MEMORY 4
- /*
- * card config information
- * passed as parameter to DIA_IOCTL_INIT ioctl to initialise new card
- */
- typedef struct
- {
- int card_id; /* unique id assigned to this card */
- int card_type; /* use DIA_CARD_TYPE_xxx above */
- int bus_type; /* use DIA_BUS_TYPE_xxx above */
- int bus_num; /* bus number (instance number of bus type) */
- int func_num; /* adapter function number (PCI register) */
- int slot; /* slot number in bus */
- unsigned char irq; /* IRQ number */
- int reset_base; /* Reset register for I/O mapped cards */
- int io_base; /* I/O base for I/O mapped cards */
- void *memory[5]; /* memory base addresses for memory mapped cards */
- char name[9]; /* name of adapter */
- int serial; /* serial number */
- unsigned char int_priority; /* Interrupt priority */
- } dia_card_t;
- /*
- * protocol configuration information
- * passed as parameter to DIA_IOCTL_CONFIG ioctl to configure card
- */
- typedef struct
- {
- int card_id; /* to identify particular card */
- unsigned char tei;
- unsigned char nt2;
- unsigned char watchdog;
- unsigned char permanent;
- unsigned char x_interface;
- unsigned char stable_l2;
- unsigned char no_order_check;
- unsigned char handset_type;
- unsigned char sig_flags;
- unsigned char low_channel;
- unsigned char prot_version;
- unsigned char crc4;
- struct
- {
- unsigned char oad[32];
- unsigned char osa[32];
- unsigned char spid[32];
- }terminal[2];
- } dia_config_t;
- /*
- * code configuration
- * passed as parameter to DIA_IOCTL_LOAD ioctl
- * one of these ioctl per code file to load
- */
- typedef struct
- {
- int card_id; /* card to load */
- enum
- {
- DIA_CPU_CODE, /* CPU code */
- DIA_DSP_CODE, /* DSP code */
- DIA_CONT_CODE, /* continuation of code */
- DIA_TABLE_CODE, /* code table */
- DIA_DLOAD_CNT, /* number of downloads*/
- DIA_FPGA_CODE
- } code_type; /* code for CPU or DSP ? */
- int length; /* length of code */
- unsigned char *code; /* pointer (in user-space) to code */
- } dia_load_t;
- /*
- * start configuration
- * passed as parameter to DIA_IOCTL_START ioctl
- */
- typedef struct
- {
- int card_id; /* card to start */
- } dia_start_t;
- /* used for retrieving memory from the card */
- typedef struct {
- word card_id;
- dword addr;
- byte data[16 * 8];
- } mem_block_t;
- /* DIVA Server specific addresses */
- #define DIVAS_CPU_START_ADDR (0x0)
- #define ORG_MAX_PROTOCOL_CODE_SIZE 0x000A0000
- #define ORG_MAX_DSP_CODE_SIZE (0x000F0000 - ORG_MAX_PROTOCOL_CODE_SIZE)
- #define ORG_DSP_CODE_BASE (0xBF7F0000 - ORG_MAX_DSP_CODE_SIZE)
- #define DIVAS_DSP_START_ADDR (0xBF7A0000)
- #define DIVAS_SHARED_OFFSET (0x1000)
- #define MP_DSP_CODE_BASE 0xa03a0000
- #define MQ_PROTCODE_OFFSET 0x100000
- #define MQ_SM_OFFSET 0X0f0000
- #define V90D_MAX_PROTOCOL_CODE_SIZE 0x00090000
- #define V90D_MAX_DSP_CODE_SIZE (0x000F0000 - V90D_MAX_PROTOCOL_CODE_SIZE)
- #define V90D_DSP_CODE_BASE (0xBF7F0000 - V90D_MAX_DSP_CODE_SIZE)
- #define MQ_ORG_MAX_PROTOCOL_CODE_SIZE 0x000a0000 /* max 640K Protocol-Code */
- #define MQ_ORG_MAX_DSP_CODE_SIZE 0x00050000 /* max 320K DSP-Code */
- #define MQ_ORG_DSP_CODE_BASE (MQ_MAX_DSP_DOWNLOAD_ADDR
- - MQ_ORG_MAX_DSP_CODE_SIZE)
- #define MQ_V90D_MAX_PROTOCOL_CODE_SIZE 0x00090000 /* max 576K Protocol-Code */
- #define MQ_V90D_MAX_DSP_CODE_SIZE 0x00060000 /* max 384K DSP-Code if V.90D included */
- #define MQ_MAX_DSP_DOWNLOAD_ADDR 0xa03f0000
- #define MQ_V90D_DSP_CODE_BASE (MQ_MAX_DSP_DOWNLOAD_ADDR
- - MQ_V90D_MAX_DSP_CODE_SIZE)
- #define ALIGNMENT_MASK_MAESTRA 0xfffffffc
- #endif /* DIVAS_H */