1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * cycx_cfm.h Cyclom 2X WAN Link Driver. 3*53ee8cc1Swenshuai.xi * Definitions for the Cyclom 2X Firmware Module (CFM). 4*53ee8cc1Swenshuai.xi * 5*53ee8cc1Swenshuai.xi * Author: Arnaldo Carvalho de Melo <acme@conectiva.com.br> 6*53ee8cc1Swenshuai.xi * 7*53ee8cc1Swenshuai.xi * Copyright: (c) 1998-2003 Arnaldo Carvalho de Melo 8*53ee8cc1Swenshuai.xi * 9*53ee8cc1Swenshuai.xi * Based on sdlasfm.h by Gene Kozin <74604.152@compuserve.com> 10*53ee8cc1Swenshuai.xi * 11*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or 12*53ee8cc1Swenshuai.xi * modify it under the terms of the GNU General Public License 13*53ee8cc1Swenshuai.xi * as published by the Free Software Foundation; either version 14*53ee8cc1Swenshuai.xi * 2 of the License, or (at your option) any later version. 15*53ee8cc1Swenshuai.xi * ============================================================================ 16*53ee8cc1Swenshuai.xi * 1998/08/08 acme Initial version. 17*53ee8cc1Swenshuai.xi */ 18*53ee8cc1Swenshuai.xi #ifndef _CYCX_CFM_H 19*53ee8cc1Swenshuai.xi #define _CYCX_CFM_H 20*53ee8cc1Swenshuai.xi 21*53ee8cc1Swenshuai.xi /* Defines */ 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xi #define CFM_VERSION 2 24*53ee8cc1Swenshuai.xi #define CFM_SIGNATURE "CFM - Cyclades CYCX Firmware Module" 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi /* min/max */ 27*53ee8cc1Swenshuai.xi #define CFM_IMAGE_SIZE 0x20000 /* max size of CYCX code image file */ 28*53ee8cc1Swenshuai.xi #define CFM_DESCR_LEN 256 /* max length of description string */ 29*53ee8cc1Swenshuai.xi #define CFM_MAX_CYCX 1 /* max number of compatible adapters */ 30*53ee8cc1Swenshuai.xi #define CFM_LOAD_BUFSZ 0x400 /* buffer size for reset code (buffer_load) */ 31*53ee8cc1Swenshuai.xi 32*53ee8cc1Swenshuai.xi /* Firmware Commands */ 33*53ee8cc1Swenshuai.xi #define GEN_POWER_ON 0x1280 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi #define GEN_SET_SEG 0x1401 /* boot segment setting. */ 36*53ee8cc1Swenshuai.xi #define GEN_BOOT_DAT 0x1402 /* boot data. */ 37*53ee8cc1Swenshuai.xi #define GEN_START 0x1403 /* board start. */ 38*53ee8cc1Swenshuai.xi #define GEN_DEFPAR 0x1404 /* buffer length for boot. */ 39*53ee8cc1Swenshuai.xi 40*53ee8cc1Swenshuai.xi /* Adapter Types */ 41*53ee8cc1Swenshuai.xi #define CYCX_2X 2 42*53ee8cc1Swenshuai.xi /* for now only the 2X is supported, no plans to support 8X or 16X */ 43*53ee8cc1Swenshuai.xi #define CYCX_8X 8 44*53ee8cc1Swenshuai.xi #define CYCX_16X 16 45*53ee8cc1Swenshuai.xi 46*53ee8cc1Swenshuai.xi #define CFID_X25_2X 5200 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi /** 49*53ee8cc1Swenshuai.xi * struct cycx_fw_info - firmware module information. 50*53ee8cc1Swenshuai.xi * @codeid - firmware ID 51*53ee8cc1Swenshuai.xi * @version - firmware version number 52*53ee8cc1Swenshuai.xi * @adapter - compatible adapter types 53*53ee8cc1Swenshuai.xi * @memsize - minimum memory size 54*53ee8cc1Swenshuai.xi * @reserved - reserved 55*53ee8cc1Swenshuai.xi * @startoffs - entry point offset 56*53ee8cc1Swenshuai.xi * @winoffs - dual-port memory window offset 57*53ee8cc1Swenshuai.xi * @codeoffs - code load offset 58*53ee8cc1Swenshuai.xi * @codesize - code size 59*53ee8cc1Swenshuai.xi * @dataoffs - configuration data load offset 60*53ee8cc1Swenshuai.xi * @datasize - configuration data size 61*53ee8cc1Swenshuai.xi */ 62*53ee8cc1Swenshuai.xi struct cycx_fw_info { 63*53ee8cc1Swenshuai.xi unsigned short codeid; 64*53ee8cc1Swenshuai.xi unsigned short version; 65*53ee8cc1Swenshuai.xi unsigned short adapter[CFM_MAX_CYCX]; 66*53ee8cc1Swenshuai.xi unsigned long memsize; 67*53ee8cc1Swenshuai.xi unsigned short reserved[2]; 68*53ee8cc1Swenshuai.xi unsigned short startoffs; 69*53ee8cc1Swenshuai.xi unsigned short winoffs; 70*53ee8cc1Swenshuai.xi unsigned short codeoffs; 71*53ee8cc1Swenshuai.xi unsigned long codesize; 72*53ee8cc1Swenshuai.xi unsigned short dataoffs; 73*53ee8cc1Swenshuai.xi unsigned long datasize; 74*53ee8cc1Swenshuai.xi }; 75*53ee8cc1Swenshuai.xi 76*53ee8cc1Swenshuai.xi /** 77*53ee8cc1Swenshuai.xi * struct cycx_firmware - CYCX firmware file structure 78*53ee8cc1Swenshuai.xi * @signature - CFM file signature 79*53ee8cc1Swenshuai.xi * @version - file format version 80*53ee8cc1Swenshuai.xi * @checksum - info + image 81*53ee8cc1Swenshuai.xi * @reserved - reserved 82*53ee8cc1Swenshuai.xi * @descr - description string 83*53ee8cc1Swenshuai.xi * @info - firmware module info 84*53ee8cc1Swenshuai.xi * @image - code image (variable size) 85*53ee8cc1Swenshuai.xi */ 86*53ee8cc1Swenshuai.xi struct cycx_firmware { 87*53ee8cc1Swenshuai.xi char signature[80]; 88*53ee8cc1Swenshuai.xi unsigned short version; 89*53ee8cc1Swenshuai.xi unsigned short checksum; 90*53ee8cc1Swenshuai.xi unsigned short reserved[6]; 91*53ee8cc1Swenshuai.xi char descr[CFM_DESCR_LEN]; 92*53ee8cc1Swenshuai.xi struct cycx_fw_info info; 93*53ee8cc1Swenshuai.xi unsigned char image[0]; 94*53ee8cc1Swenshuai.xi }; 95*53ee8cc1Swenshuai.xi 96*53ee8cc1Swenshuai.xi struct cycx_fw_header { 97*53ee8cc1Swenshuai.xi unsigned long reset_size; 98*53ee8cc1Swenshuai.xi unsigned long data_size; 99*53ee8cc1Swenshuai.xi unsigned long code_size; 100*53ee8cc1Swenshuai.xi }; 101*53ee8cc1Swenshuai.xi #endif /* _CYCX_CFM_H */ 102