// 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]> * *----------------------------------------------------------------------------- */ #include "sym_glue.h" /* * Macros used for all firmwares. */ #define SYM_GEN_A … #define SYM_GEN_B … #define SYM_GEN_Z … #define PADDR_A … #define PADDR_B … #if SYM_CONF_GENERIC_SUPPORT /* * Allocate firmware #1 script area. */ #define SYM_FWA_SCR … #define SYM_FWB_SCR … #define SYM_FWZ_SCR … #include "sym_fw1.h" static struct sym_fwa_ofs sym_fw1a_ofs = …; static struct sym_fwb_ofs sym_fw1b_ofs = …; static struct sym_fwz_ofs sym_fw1z_ofs = …; #undef SYM_FWA_SCR #undef SYM_FWB_SCR #undef SYM_FWZ_SCR #endif /* SYM_CONF_GENERIC_SUPPORT */ /* * Allocate firmware #2 script area. */ #define SYM_FWA_SCR … #define SYM_FWB_SCR … #define SYM_FWZ_SCR … #include "sym_fw2.h" static struct sym_fwa_ofs sym_fw2a_ofs = …; static struct sym_fwb_ofs sym_fw2b_ofs = …; static struct sym_fwz_ofs sym_fw2z_ofs = …; #undef SYM_FWA_SCR #undef SYM_FWB_SCR #undef SYM_FWZ_SCR #undef SYM_GEN_A #undef SYM_GEN_B #undef SYM_GEN_Z #undef PADDR_A #undef PADDR_B #if SYM_CONF_GENERIC_SUPPORT /* * Patch routine for firmware #1. */ static void sym_fw1_patch(struct Scsi_Host *shost) { … } #endif /* SYM_CONF_GENERIC_SUPPORT */ /* * Patch routine for firmware #2. */ static void sym_fw2_patch(struct Scsi_Host *shost) { … } /* * Fill the data area in scripts. * To be done for all firmwares. */ static void sym_fw_fill_data (u32 *in, u32 *out) { … } /* * Setup useful script bus addresses. * To be done for all firmwares. */ static void sym_fw_setup_bus_addresses(struct sym_hcb *np, struct sym_fw *fw) { … } #if SYM_CONF_GENERIC_SUPPORT /* * Setup routine for firmware #1. */ static void sym_fw1_setup(struct sym_hcb *np, struct sym_fw *fw) { … } #endif /* SYM_CONF_GENERIC_SUPPORT */ /* * Setup routine for firmware #2. */ static void sym_fw2_setup(struct sym_hcb *np, struct sym_fw *fw) { … } /* * Allocate firmware descriptors. */ #if SYM_CONF_GENERIC_SUPPORT static struct sym_fw sym_fw1 = …; #endif /* SYM_CONF_GENERIC_SUPPORT */ static struct sym_fw sym_fw2 = …; /* * Find the most appropriate firmware for a chip. */ struct sym_fw * sym_find_firmware(struct sym_chip *chip) { … } /* * Bind a script to physical addresses. */ void sym_fw_bind_script(struct sym_hcb *np, u32 *start, int len) { … }