162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci* cycx_cfm.h Cyclom 2X WAN Link Driver. 462306a36Sopenharmony_ci* Definitions for the Cyclom 2X Firmware Module (CFM). 562306a36Sopenharmony_ci* 662306a36Sopenharmony_ci* Author: Arnaldo Carvalho de Melo <acme@conectiva.com.br> 762306a36Sopenharmony_ci* 862306a36Sopenharmony_ci* Copyright: (c) 1998-2003 Arnaldo Carvalho de Melo 962306a36Sopenharmony_ci* 1062306a36Sopenharmony_ci* Based on sdlasfm.h by Gene Kozin <74604.152@compuserve.com> 1162306a36Sopenharmony_ci* 1262306a36Sopenharmony_ci* This program is free software; you can redistribute it and/or 1362306a36Sopenharmony_ci* modify it under the terms of the GNU General Public License 1462306a36Sopenharmony_ci* as published by the Free Software Foundation; either version 1562306a36Sopenharmony_ci* 2 of the License, or (at your option) any later version. 1662306a36Sopenharmony_ci* ============================================================================ 1762306a36Sopenharmony_ci* 1998/08/08 acme Initial version. 1862306a36Sopenharmony_ci*/ 1962306a36Sopenharmony_ci#ifndef _CYCX_CFM_H 2062306a36Sopenharmony_ci#define _CYCX_CFM_H 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci/* Defines */ 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#define CFM_VERSION 2 2562306a36Sopenharmony_ci#define CFM_SIGNATURE "CFM - Cyclades CYCX Firmware Module" 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci/* min/max */ 2862306a36Sopenharmony_ci#define CFM_IMAGE_SIZE 0x20000 /* max size of CYCX code image file */ 2962306a36Sopenharmony_ci#define CFM_DESCR_LEN 256 /* max length of description string */ 3062306a36Sopenharmony_ci#define CFM_MAX_CYCX 1 /* max number of compatible adapters */ 3162306a36Sopenharmony_ci#define CFM_LOAD_BUFSZ 0x400 /* buffer size for reset code (buffer_load) */ 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci/* Firmware Commands */ 3462306a36Sopenharmony_ci#define GEN_POWER_ON 0x1280 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci#define GEN_SET_SEG 0x1401 /* boot segment setting. */ 3762306a36Sopenharmony_ci#define GEN_BOOT_DAT 0x1402 /* boot data. */ 3862306a36Sopenharmony_ci#define GEN_START 0x1403 /* board start. */ 3962306a36Sopenharmony_ci#define GEN_DEFPAR 0x1404 /* buffer length for boot. */ 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci/* Adapter Types */ 4262306a36Sopenharmony_ci#define CYCX_2X 2 4362306a36Sopenharmony_ci/* for now only the 2X is supported, no plans to support 8X or 16X */ 4462306a36Sopenharmony_ci#define CYCX_8X 8 4562306a36Sopenharmony_ci#define CYCX_16X 16 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#define CFID_X25_2X 5200 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci/** 5062306a36Sopenharmony_ci * struct cycx_fw_info - firmware module information. 5162306a36Sopenharmony_ci * @codeid - firmware ID 5262306a36Sopenharmony_ci * @version - firmware version number 5362306a36Sopenharmony_ci * @adapter - compatible adapter types 5462306a36Sopenharmony_ci * @memsize - minimum memory size 5562306a36Sopenharmony_ci * @reserved - reserved 5662306a36Sopenharmony_ci * @startoffs - entry point offset 5762306a36Sopenharmony_ci * @winoffs - dual-port memory window offset 5862306a36Sopenharmony_ci * @codeoffs - code load offset 5962306a36Sopenharmony_ci * @codesize - code size 6062306a36Sopenharmony_ci * @dataoffs - configuration data load offset 6162306a36Sopenharmony_ci * @datasize - configuration data size 6262306a36Sopenharmony_ci */ 6362306a36Sopenharmony_cistruct cycx_fw_info { 6462306a36Sopenharmony_ci unsigned short codeid; 6562306a36Sopenharmony_ci unsigned short version; 6662306a36Sopenharmony_ci unsigned short adapter[CFM_MAX_CYCX]; 6762306a36Sopenharmony_ci unsigned long memsize; 6862306a36Sopenharmony_ci unsigned short reserved[2]; 6962306a36Sopenharmony_ci unsigned short startoffs; 7062306a36Sopenharmony_ci unsigned short winoffs; 7162306a36Sopenharmony_ci unsigned short codeoffs; 7262306a36Sopenharmony_ci unsigned long codesize; 7362306a36Sopenharmony_ci unsigned short dataoffs; 7462306a36Sopenharmony_ci unsigned long datasize; 7562306a36Sopenharmony_ci}; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci/** 7862306a36Sopenharmony_ci * struct cycx_firmware - CYCX firmware file structure 7962306a36Sopenharmony_ci * @signature - CFM file signature 8062306a36Sopenharmony_ci * @version - file format version 8162306a36Sopenharmony_ci * @checksum - info + image 8262306a36Sopenharmony_ci * @reserved - reserved 8362306a36Sopenharmony_ci * @descr - description string 8462306a36Sopenharmony_ci * @info - firmware module info 8562306a36Sopenharmony_ci * @image - code image (variable size) 8662306a36Sopenharmony_ci */ 8762306a36Sopenharmony_cistruct cycx_firmware { 8862306a36Sopenharmony_ci char signature[80]; 8962306a36Sopenharmony_ci unsigned short version; 9062306a36Sopenharmony_ci unsigned short checksum; 9162306a36Sopenharmony_ci unsigned short reserved[6]; 9262306a36Sopenharmony_ci char descr[CFM_DESCR_LEN]; 9362306a36Sopenharmony_ci struct cycx_fw_info info; 9462306a36Sopenharmony_ci unsigned char image[]; 9562306a36Sopenharmony_ci}; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_cistruct cycx_fw_header { 9862306a36Sopenharmony_ci unsigned long reset_size; 9962306a36Sopenharmony_ci unsigned long data_size; 10062306a36Sopenharmony_ci unsigned long code_size; 10162306a36Sopenharmony_ci}; 10262306a36Sopenharmony_ci#endif /* _CYCX_CFM_H */ 103