linux/drivers/scsi/aic7xxx/aic79xx_pci.c

/*
 * Product specific probe and attach routines for:
 *	aic7901 and aic7902 SCSI controllers
 *
 * Copyright (c) 1994-2001 Justin T. Gibbs.
 * Copyright (c) 2000-2002 Adaptec Inc.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 *    substantially similar to the "NO WARRANTY" disclaimer below
 *    ("Disclaimer") and any redistribution must be conditioned upon
 *    including a substantially similar Disclaimer requirement for further
 *    binary redistribution.
 * 3. Neither the names of the above-listed copyright holders nor the names
 *    of any contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 *
 * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#92 $
 */

#include "aic79xx_osm.h"
#include "aic79xx_inline.h"
#include "aic79xx_pci.h"

static inline uint64_t
ahd_compose_id(u_int device, u_int vendor, u_int subdevice, u_int subvendor)
{}

#define ID_AIC7902_PCI_REV_A4
#define ID_AIC7902_PCI_REV_B0
#define SUBID_HP

#define DEVID_9005_HOSTRAID(id)

#define DEVID_9005_TYPE(id)
#define DEVID_9005_TYPE_HBA
#define DEVID_9005_TYPE_HBA_2EXT
#define DEVID_9005_TYPE_IROC
#define DEVID_9005_TYPE_MB

#define DEVID_9005_MFUNC(id)

#define DEVID_9005_PACKETIZED(id)

#define SUBID_9005_TYPE(id)
#define SUBID_9005_TYPE_HBA
#define SUBID_9005_TYPE_MB

#define SUBID_9005_AUTOTERM(id)

#define SUBID_9005_LEGACYCONN_FUNC(id)

#define SUBID_9005_SEEPTYPE(id)
#define SUBID_9005_SEEPTYPE_NONE
#define SUBID_9005_SEEPTYPE_4K

static ahd_device_setup_t ahd_aic7901_setup;
static ahd_device_setup_t ahd_aic7901A_setup;
static ahd_device_setup_t ahd_aic7902_setup;
static ahd_device_setup_t ahd_aic790X_setup;

static const struct ahd_pci_identity ahd_pci_ident_table[] =;

static const u_int ahd_num_pci_devs =;
		
#define DEVCONFIG
#define PCIXINITPAT
#define PCIXINIT_PCI33_66
#define PCIXINIT_PCIX50_66
#define PCIXINIT_PCIX66_100
#define PCIXINIT_PCIX100_133
#define PCI_BUS_MODES_INDEX(devconfig)
static const char *pci_bus_modes[] =;

#define TESTMODE
#define IRDY_RST
#define FRAME_RST
#define PCI64BIT
#define MRDCEN
#define ENDIANSEL
#define MIXQWENDIANEN
#define DACEN
#define STPWLEVEL
#define QWENDIANSEL

#define DEVCONFIG1
#define PREQDIS

#define CSIZE_LATTIME
#define CACHESIZE
#define LATTIME

static int	ahd_check_extport(struct ahd_softc *ahd);
static void	ahd_configure_termination(struct ahd_softc *ahd,
					  u_int adapter_control);
static void	ahd_pci_split_intr(struct ahd_softc *ahd, u_int intstat);
static void	ahd_pci_intr(struct ahd_softc *ahd);

const struct ahd_pci_identity *
ahd_find_pci_device(ahd_dev_softc_t pci)
{}

int
ahd_pci_config(struct ahd_softc *ahd, const struct ahd_pci_identity *entry)
{}

void __maybe_unused
ahd_pci_suspend(struct ahd_softc *ahd)
{}

void __maybe_unused
ahd_pci_resume(struct ahd_softc *ahd)
{}

/*
 * Perform some simple tests that should catch situations where
 * our registers are invalidly mapped.
 */
int
ahd_pci_test_register_access(struct ahd_softc *ahd)
{}

/*
 * Check the external port logic for a serial eeprom
 * and termination/cable detection contrls.
 */
static int
ahd_check_extport(struct ahd_softc *ahd)
{}

static void
ahd_configure_termination(struct ahd_softc *ahd, u_int adapter_control)
{}

#define DPE
#define SSE
#define RMA
#define RTA
#define STA
#define DPR

static const char *split_status_source[] =;

static const char *pci_status_source[] =;

static const char *split_status_strings[] =;

static const char *pci_status_strings[] =;

static void
ahd_pci_intr(struct ahd_softc *ahd)
{}

static void
ahd_pci_split_intr(struct ahd_softc *ahd, u_int intstat)
{}

static int
ahd_aic7901_setup(struct ahd_softc *ahd)
{}

static int
ahd_aic7901A_setup(struct ahd_softc *ahd)
{}

static int
ahd_aic7902_setup(struct ahd_softc *ahd)
{}

static int
ahd_aic790X_setup(struct ahd_softc *ahd)
{}