drivers/scsi/aic94xx/aic94xx_dump.c

Source file repositories/reference/linux-study-clean/drivers/scsi/aic94xx/aic94xx_dump.c

File Facts

System
Linux kernel
Corpus path
drivers/scsi/aic94xx/aic94xx_dump.c
Extension
.c
Size
29276 bytes
Lines
766
Domain
Driver Families
Bucket
drivers/scsi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Aic94xx SAS/SATA driver dump interface.
 *
 * Copyright (C) 2004 Adaptec, Inc.  All rights reserved.
 * Copyright (C) 2004 David Chaw <david_chaw@adaptec.com>
 * Copyright (C) 2005 Luben Tuikov <luben_tuikov@adaptec.com>
 *
 * 2005/07/14/LT  Complete overhaul of this file.  Update pages, register
 * locations, names, etc.  Make use of macros.  Print more information.
 * Print all cseq and lseq mip and mdp.
 */

#include <linux/pci.h>
#include "aic94xx.h"
#include "aic94xx_reg.h"
#include "aic94xx_reg_def.h"
#include "aic94xx_sas.h"

#include "aic94xx_dump.h"

#ifdef ASD_DEBUG

#define MD(x)	    (1 << (x))
#define MODE_COMMON (1 << 31)
#define MODE_0_7    (0xFF)

static const struct lseq_cio_regs {
	char	*name;
	u32	offs;
	u8	width;
	u32	mode;
} LSEQmCIOREGS[] = {
	{"LmMnSCBPTR",    0x20, 16, MD(0)|MD(1)|MD(2)|MD(3)|MD(4) },
	{"LmMnDDBPTR",    0x22, 16, MD(0)|MD(1)|MD(2)|MD(3)|MD(4) },
	{"LmREQMBX",      0x30, 32, MODE_COMMON },
	{"LmRSPMBX",      0x34, 32, MODE_COMMON },
	{"LmMnINT",       0x38, 32, MODE_0_7 },
	{"LmMnINTEN",     0x3C, 32, MODE_0_7 },
	{"LmXMTPRIMD",    0x40, 32, MODE_COMMON },
	{"LmXMTPRIMCS",   0x44,  8, MODE_COMMON },
	{"LmCONSTAT",     0x45,  8, MODE_COMMON },
	{"LmMnDMAERRS",   0x46,  8, MD(0)|MD(1) },
	{"LmMnSGDMAERRS", 0x47,  8, MD(0)|MD(1) },
	{"LmMnEXPHDRP",   0x48,  8, MD(0) },
	{"LmMnSASAALIGN", 0x48,  8, MD(1) },
	{"LmMnMSKHDRP",   0x49,  8, MD(0) },
	{"LmMnSTPALIGN",  0x49,  8, MD(1) },
	{"LmMnRCVHDRP",   0x4A,  8, MD(0) },
	{"LmMnXMTHDRP",   0x4A,  8, MD(1) },
	{"LmALIGNMODE",   0x4B,  8, MD(1) },
	{"LmMnEXPRCVCNT", 0x4C, 32, MD(0) },
	{"LmMnXMTCNT",    0x4C, 32, MD(1) },
	{"LmMnCURRTAG",   0x54, 16, MD(0) },
	{"LmMnPREVTAG",   0x56, 16, MD(0) },
	{"LmMnACKOFS",    0x58,  8, MD(1) },
	{"LmMnXFRLVL",    0x59,  8, MD(0)|MD(1) },
	{"LmMnSGDMACTL",  0x5A,  8, MD(0)|MD(1) },
	{"LmMnSGDMASTAT", 0x5B,  8, MD(0)|MD(1) },
	{"LmMnDDMACTL",   0x5C,  8, MD(0)|MD(1) },
	{"LmMnDDMASTAT",  0x5D,  8, MD(0)|MD(1) },
	{"LmMnDDMAMODE",  0x5E, 16, MD(0)|MD(1) },
	{"LmMnPIPECTL",   0x61,  8, MD(0)|MD(1) },
	{"LmMnACTSCB",    0x62, 16, MD(0)|MD(1) },
	{"LmMnSGBHADR",   0x64,  8, MD(0)|MD(1) },
	{"LmMnSGBADR",    0x65,  8, MD(0)|MD(1) },
	{"LmMnSGDCNT",    0x66,  8, MD(0)|MD(1) },
	{"LmMnSGDMADR",   0x68, 32, MD(0)|MD(1) },
	{"LmMnSGDMADR",   0x6C, 32, MD(0)|MD(1) },
	{"LmMnXFRCNT",    0x70, 32, MD(0)|MD(1) },
	{"LmMnXMTCRC",    0x74, 32, MD(1) },
	{"LmCURRTAG",     0x74, 16, MD(0) },
	{"LmPREVTAG",     0x76, 16, MD(0) },
	{"LmMnDPSEL",     0x7B,  8, MD(0)|MD(1) },
	{"LmDPTHSTAT",    0x7C,  8, MODE_COMMON },
	{"LmMnHOLDLVL",   0x7D,  8, MD(0) },
	{"LmMnSATAFS",    0x7E,  8, MD(1) },
	{"LmMnCMPLTSTAT", 0x7F,  8, MD(0)|MD(1) },
	{"LmPRMSTAT0",    0x80, 32, MODE_COMMON },
	{"LmPRMSTAT1",    0x84, 32, MODE_COMMON },
	{"LmGPRMINT",     0x88,  8, MODE_COMMON },
        {"LmMnCURRSCB",   0x8A, 16, MD(0) },
	{"LmPRMICODE",    0x8C, 32, MODE_COMMON },
	{"LmMnRCVCNT",    0x90, 16, MD(0) },
	{"LmMnBUFSTAT",   0x92, 16, MD(0) },
	{"LmMnXMTHDRSIZE",0x92,  8, MD(1) },
	{"LmMnXMTSIZE",   0x93,  8, MD(1) },
	{"LmMnTGTXFRCNT", 0x94, 32, MD(0) },
	{"LmMnEXPROFS",   0x98, 32, MD(0) },
	{"LmMnXMTROFS",   0x98, 32, MD(1) },

Annotation

Implementation Notes