/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Device driver for the SYMBIOS/LSILOGIC 53C8XX and 53C1010 family * of PCI-SCSI IO processors. * * Copyright (C) 1999-2001 Gerard Roudier <[email protected]> * * This driver is derived from the Linux sym53c8xx driver. * Copyright (C) 1998-2000 Gerard Roudier * * The sym53c8xx driver is derived from the ncr53c8xx driver that had been * a port of the FreeBSD ncr driver to Linux-1.2.13. * * The original ncr driver has been written for 386bsd and FreeBSD by * Wolfgang Stanglmeier <[email protected]> * Stefan Esser <[email protected]> * Copyright (C) 1994 Wolfgang Stanglmeier * * Other major contributions: * * NVRAM detection and reading. * Copyright (C) 1997 Richard Waltham <[email protected]> * *----------------------------------------------------------------------------- */ #ifndef SYM_FW_H #define SYM_FW_H /* * Macro used to generate interfaces for script A. */ #define SYM_GEN_FW_A(s) … /* * Macro used to generate interfaces for script B. */ #define SYM_GEN_FW_B(s) … /* * Macro used to generate interfaces for script Z. */ #define SYM_GEN_FW_Z(s) … /* * Generates structure interface that contains * offsets within script A, B and Z. */ #define SYM_GEN_A … #define SYM_GEN_B … #define SYM_GEN_Z … struct sym_fwa_ofs { … }; struct sym_fwb_ofs { … }; struct sym_fwz_ofs { … }; /* * Generates structure interface that contains * bus addresses within script A, B and Z. */ struct sym_fwa_ba { … }; struct sym_fwb_ba { … }; struct sym_fwz_ba { … }; #undef SYM_GEN_A #undef SYM_GEN_B #undef SYM_GEN_Z /* * Let cc know about the name of the controller data structure. * We need this for function prototype declarations just below. */ struct sym_hcb; /* * Generic structure that defines a firmware. */ struct sym_fw { … }; /* * Macro used to declare a firmware. */ #define SYM_FW_ENTRY(fw, name) … /* * Macros used from the C code to get useful * SCRIPTS bus addresses. */ #define SCRIPTA_BA(np, label) … #define SCRIPTB_BA(np, label) … #define SCRIPTZ_BA(np, label) … /* * Macros used by scripts definitions. * * HADDR_1 generates a reference to a field of the controller data. * HADDR_2 generates a reference to a field of the controller data * with offset. * RADDR_1 generates a reference to a script processor register. * RADDR_2 generates a reference to a script processor register * with offset. * PADDR_A generates a reference to another part of script A. * PADDR_B generates a reference to another part of script B. * * SYM_GEN_PADDR_A and SYM_GEN_PADDR_B are used to define respectively * the PADDR_A and PADDR_B macros for each firmware by setting argument * `s' to the name of the corresponding structure. * * SCR_DATA_ZERO is used to allocate a DWORD of data in scripts areas. */ #define RELOC_SOFTC … #define RELOC_LABEL_A … #define RELOC_REGISTER … #define RELOC_LABEL_B … #define RELOC_MASK … #define HADDR_1(label) … #define HADDR_2(label,ofs) … #define RADDR_1(label) … #define RADDR_2(label,ofs) … #define SYM_GEN_PADDR_A(s, label) … #define SYM_GEN_PADDR_B(s, label) … #define SCR_DATA_ZERO … #endif /* SYM_FW_H */