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