| /* |
| * 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 */ |