162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Aic94xx SAS/SATA driver dump interface. 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2004 Adaptec, Inc. All rights reserved. 662306a36Sopenharmony_ci * Copyright (C) 2004 David Chaw <david_chaw@adaptec.com> 762306a36Sopenharmony_ci * Copyright (C) 2005 Luben Tuikov <luben_tuikov@adaptec.com> 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * 2005/07/14/LT Complete overhaul of this file. Update pages, register 1062306a36Sopenharmony_ci * locations, names, etc. Make use of macros. Print more information. 1162306a36Sopenharmony_ci * Print all cseq and lseq mip and mdp. 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <linux/pci.h> 1562306a36Sopenharmony_ci#include "aic94xx.h" 1662306a36Sopenharmony_ci#include "aic94xx_reg.h" 1762306a36Sopenharmony_ci#include "aic94xx_reg_def.h" 1862306a36Sopenharmony_ci#include "aic94xx_sas.h" 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#include "aic94xx_dump.h" 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#ifdef ASD_DEBUG 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci#define MD(x) (1 << (x)) 2562306a36Sopenharmony_ci#define MODE_COMMON (1 << 31) 2662306a36Sopenharmony_ci#define MODE_0_7 (0xFF) 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistatic const struct lseq_cio_regs { 2962306a36Sopenharmony_ci char *name; 3062306a36Sopenharmony_ci u32 offs; 3162306a36Sopenharmony_ci u8 width; 3262306a36Sopenharmony_ci u32 mode; 3362306a36Sopenharmony_ci} LSEQmCIOREGS[] = { 3462306a36Sopenharmony_ci {"LmMnSCBPTR", 0x20, 16, MD(0)|MD(1)|MD(2)|MD(3)|MD(4) }, 3562306a36Sopenharmony_ci {"LmMnDDBPTR", 0x22, 16, MD(0)|MD(1)|MD(2)|MD(3)|MD(4) }, 3662306a36Sopenharmony_ci {"LmREQMBX", 0x30, 32, MODE_COMMON }, 3762306a36Sopenharmony_ci {"LmRSPMBX", 0x34, 32, MODE_COMMON }, 3862306a36Sopenharmony_ci {"LmMnINT", 0x38, 32, MODE_0_7 }, 3962306a36Sopenharmony_ci {"LmMnINTEN", 0x3C, 32, MODE_0_7 }, 4062306a36Sopenharmony_ci {"LmXMTPRIMD", 0x40, 32, MODE_COMMON }, 4162306a36Sopenharmony_ci {"LmXMTPRIMCS", 0x44, 8, MODE_COMMON }, 4262306a36Sopenharmony_ci {"LmCONSTAT", 0x45, 8, MODE_COMMON }, 4362306a36Sopenharmony_ci {"LmMnDMAERRS", 0x46, 8, MD(0)|MD(1) }, 4462306a36Sopenharmony_ci {"LmMnSGDMAERRS", 0x47, 8, MD(0)|MD(1) }, 4562306a36Sopenharmony_ci {"LmMnEXPHDRP", 0x48, 8, MD(0) }, 4662306a36Sopenharmony_ci {"LmMnSASAALIGN", 0x48, 8, MD(1) }, 4762306a36Sopenharmony_ci {"LmMnMSKHDRP", 0x49, 8, MD(0) }, 4862306a36Sopenharmony_ci {"LmMnSTPALIGN", 0x49, 8, MD(1) }, 4962306a36Sopenharmony_ci {"LmMnRCVHDRP", 0x4A, 8, MD(0) }, 5062306a36Sopenharmony_ci {"LmMnXMTHDRP", 0x4A, 8, MD(1) }, 5162306a36Sopenharmony_ci {"LmALIGNMODE", 0x4B, 8, MD(1) }, 5262306a36Sopenharmony_ci {"LmMnEXPRCVCNT", 0x4C, 32, MD(0) }, 5362306a36Sopenharmony_ci {"LmMnXMTCNT", 0x4C, 32, MD(1) }, 5462306a36Sopenharmony_ci {"LmMnCURRTAG", 0x54, 16, MD(0) }, 5562306a36Sopenharmony_ci {"LmMnPREVTAG", 0x56, 16, MD(0) }, 5662306a36Sopenharmony_ci {"LmMnACKOFS", 0x58, 8, MD(1) }, 5762306a36Sopenharmony_ci {"LmMnXFRLVL", 0x59, 8, MD(0)|MD(1) }, 5862306a36Sopenharmony_ci {"LmMnSGDMACTL", 0x5A, 8, MD(0)|MD(1) }, 5962306a36Sopenharmony_ci {"LmMnSGDMASTAT", 0x5B, 8, MD(0)|MD(1) }, 6062306a36Sopenharmony_ci {"LmMnDDMACTL", 0x5C, 8, MD(0)|MD(1) }, 6162306a36Sopenharmony_ci {"LmMnDDMASTAT", 0x5D, 8, MD(0)|MD(1) }, 6262306a36Sopenharmony_ci {"LmMnDDMAMODE", 0x5E, 16, MD(0)|MD(1) }, 6362306a36Sopenharmony_ci {"LmMnPIPECTL", 0x61, 8, MD(0)|MD(1) }, 6462306a36Sopenharmony_ci {"LmMnACTSCB", 0x62, 16, MD(0)|MD(1) }, 6562306a36Sopenharmony_ci {"LmMnSGBHADR", 0x64, 8, MD(0)|MD(1) }, 6662306a36Sopenharmony_ci {"LmMnSGBADR", 0x65, 8, MD(0)|MD(1) }, 6762306a36Sopenharmony_ci {"LmMnSGDCNT", 0x66, 8, MD(0)|MD(1) }, 6862306a36Sopenharmony_ci {"LmMnSGDMADR", 0x68, 32, MD(0)|MD(1) }, 6962306a36Sopenharmony_ci {"LmMnSGDMADR", 0x6C, 32, MD(0)|MD(1) }, 7062306a36Sopenharmony_ci {"LmMnXFRCNT", 0x70, 32, MD(0)|MD(1) }, 7162306a36Sopenharmony_ci {"LmMnXMTCRC", 0x74, 32, MD(1) }, 7262306a36Sopenharmony_ci {"LmCURRTAG", 0x74, 16, MD(0) }, 7362306a36Sopenharmony_ci {"LmPREVTAG", 0x76, 16, MD(0) }, 7462306a36Sopenharmony_ci {"LmMnDPSEL", 0x7B, 8, MD(0)|MD(1) }, 7562306a36Sopenharmony_ci {"LmDPTHSTAT", 0x7C, 8, MODE_COMMON }, 7662306a36Sopenharmony_ci {"LmMnHOLDLVL", 0x7D, 8, MD(0) }, 7762306a36Sopenharmony_ci {"LmMnSATAFS", 0x7E, 8, MD(1) }, 7862306a36Sopenharmony_ci {"LmMnCMPLTSTAT", 0x7F, 8, MD(0)|MD(1) }, 7962306a36Sopenharmony_ci {"LmPRMSTAT0", 0x80, 32, MODE_COMMON }, 8062306a36Sopenharmony_ci {"LmPRMSTAT1", 0x84, 32, MODE_COMMON }, 8162306a36Sopenharmony_ci {"LmGPRMINT", 0x88, 8, MODE_COMMON }, 8262306a36Sopenharmony_ci {"LmMnCURRSCB", 0x8A, 16, MD(0) }, 8362306a36Sopenharmony_ci {"LmPRMICODE", 0x8C, 32, MODE_COMMON }, 8462306a36Sopenharmony_ci {"LmMnRCVCNT", 0x90, 16, MD(0) }, 8562306a36Sopenharmony_ci {"LmMnBUFSTAT", 0x92, 16, MD(0) }, 8662306a36Sopenharmony_ci {"LmMnXMTHDRSIZE",0x92, 8, MD(1) }, 8762306a36Sopenharmony_ci {"LmMnXMTSIZE", 0x93, 8, MD(1) }, 8862306a36Sopenharmony_ci {"LmMnTGTXFRCNT", 0x94, 32, MD(0) }, 8962306a36Sopenharmony_ci {"LmMnEXPROFS", 0x98, 32, MD(0) }, 9062306a36Sopenharmony_ci {"LmMnXMTROFS", 0x98, 32, MD(1) }, 9162306a36Sopenharmony_ci {"LmMnRCVROFS", 0x9C, 32, MD(0) }, 9262306a36Sopenharmony_ci {"LmCONCTL", 0xA0, 16, MODE_COMMON }, 9362306a36Sopenharmony_ci {"LmBITLTIMER", 0xA2, 16, MODE_COMMON }, 9462306a36Sopenharmony_ci {"LmWWNLOW", 0xA8, 32, MODE_COMMON }, 9562306a36Sopenharmony_ci {"LmWWNHIGH", 0xAC, 32, MODE_COMMON }, 9662306a36Sopenharmony_ci {"LmMnFRMERR", 0xB0, 32, MD(0) }, 9762306a36Sopenharmony_ci {"LmMnFRMERREN", 0xB4, 32, MD(0) }, 9862306a36Sopenharmony_ci {"LmAWTIMER", 0xB8, 16, MODE_COMMON }, 9962306a36Sopenharmony_ci {"LmAWTCTL", 0xBA, 8, MODE_COMMON }, 10062306a36Sopenharmony_ci {"LmMnHDRCMPS", 0xC0, 32, MD(0) }, 10162306a36Sopenharmony_ci {"LmMnXMTSTAT", 0xC4, 8, MD(1) }, 10262306a36Sopenharmony_ci {"LmHWTSTATEN", 0xC5, 8, MODE_COMMON }, 10362306a36Sopenharmony_ci {"LmMnRRDYRC", 0xC6, 8, MD(0) }, 10462306a36Sopenharmony_ci {"LmMnRRDYTC", 0xC6, 8, MD(1) }, 10562306a36Sopenharmony_ci {"LmHWTSTAT", 0xC7, 8, MODE_COMMON }, 10662306a36Sopenharmony_ci {"LmMnDATABUFADR",0xC8, 16, MD(0)|MD(1) }, 10762306a36Sopenharmony_ci {"LmDWSSTATUS", 0xCB, 8, MODE_COMMON }, 10862306a36Sopenharmony_ci {"LmMnACTSTAT", 0xCE, 16, MD(0)|MD(1) }, 10962306a36Sopenharmony_ci {"LmMnREQSCB", 0xD2, 16, MD(0)|MD(1) }, 11062306a36Sopenharmony_ci {"LmXXXPRIM", 0xD4, 32, MODE_COMMON }, 11162306a36Sopenharmony_ci {"LmRCVASTAT", 0xD9, 8, MODE_COMMON }, 11262306a36Sopenharmony_ci {"LmINTDIS1", 0xDA, 8, MODE_COMMON }, 11362306a36Sopenharmony_ci {"LmPSTORESEL", 0xDB, 8, MODE_COMMON }, 11462306a36Sopenharmony_ci {"LmPSTORE", 0xDC, 32, MODE_COMMON }, 11562306a36Sopenharmony_ci {"LmPRIMSTAT0EN", 0xE0, 32, MODE_COMMON }, 11662306a36Sopenharmony_ci {"LmPRIMSTAT1EN", 0xE4, 32, MODE_COMMON }, 11762306a36Sopenharmony_ci {"LmDONETCTL", 0xF2, 16, MODE_COMMON }, 11862306a36Sopenharmony_ci {NULL, 0, 0, 0 } 11962306a36Sopenharmony_ci}; 12062306a36Sopenharmony_ci/* 12162306a36Sopenharmony_cistatic struct lseq_cio_regs LSEQmOOBREGS[] = { 12262306a36Sopenharmony_ci {"OOB_BFLTR" ,0x100, 8, MD(5)}, 12362306a36Sopenharmony_ci {"OOB_INIT_MIN" ,0x102,16, MD(5)}, 12462306a36Sopenharmony_ci {"OOB_INIT_MAX" ,0x104,16, MD(5)}, 12562306a36Sopenharmony_ci {"OOB_INIT_NEG" ,0x106,16, MD(5)}, 12662306a36Sopenharmony_ci {"OOB_SAS_MIN" ,0x108,16, MD(5)}, 12762306a36Sopenharmony_ci {"OOB_SAS_MAX" ,0x10A,16, MD(5)}, 12862306a36Sopenharmony_ci {"OOB_SAS_NEG" ,0x10C,16, MD(5)}, 12962306a36Sopenharmony_ci {"OOB_WAKE_MIN" ,0x10E,16, MD(5)}, 13062306a36Sopenharmony_ci {"OOB_WAKE_MAX" ,0x110,16, MD(5)}, 13162306a36Sopenharmony_ci {"OOB_WAKE_NEG" ,0x112,16, MD(5)}, 13262306a36Sopenharmony_ci {"OOB_IDLE_MAX" ,0x114,16, MD(5)}, 13362306a36Sopenharmony_ci {"OOB_BURST_MAX" ,0x116,16, MD(5)}, 13462306a36Sopenharmony_ci {"OOB_XMIT_BURST" ,0x118, 8, MD(5)}, 13562306a36Sopenharmony_ci {"OOB_SEND_PAIRS" ,0x119, 8, MD(5)}, 13662306a36Sopenharmony_ci {"OOB_INIT_IDLE" ,0x11A, 8, MD(5)}, 13762306a36Sopenharmony_ci {"OOB_INIT_NEGO" ,0x11C, 8, MD(5)}, 13862306a36Sopenharmony_ci {"OOB_SAS_IDLE" ,0x11E, 8, MD(5)}, 13962306a36Sopenharmony_ci {"OOB_SAS_NEGO" ,0x120, 8, MD(5)}, 14062306a36Sopenharmony_ci {"OOB_WAKE_IDLE" ,0x122, 8, MD(5)}, 14162306a36Sopenharmony_ci {"OOB_WAKE_NEGO" ,0x124, 8, MD(5)}, 14262306a36Sopenharmony_ci {"OOB_DATA_KBITS" ,0x126, 8, MD(5)}, 14362306a36Sopenharmony_ci {"OOB_BURST_DATA" ,0x128,32, MD(5)}, 14462306a36Sopenharmony_ci {"OOB_ALIGN_0_DATA" ,0x12C,32, MD(5)}, 14562306a36Sopenharmony_ci {"OOB_ALIGN_1_DATA" ,0x130,32, MD(5)}, 14662306a36Sopenharmony_ci {"OOB_SYNC_DATA" ,0x134,32, MD(5)}, 14762306a36Sopenharmony_ci {"OOB_D10_2_DATA" ,0x138,32, MD(5)}, 14862306a36Sopenharmony_ci {"OOB_PHY_RST_CNT" ,0x13C,32, MD(5)}, 14962306a36Sopenharmony_ci {"OOB_SIG_GEN" ,0x140, 8, MD(5)}, 15062306a36Sopenharmony_ci {"OOB_XMIT" ,0x141, 8, MD(5)}, 15162306a36Sopenharmony_ci {"FUNCTION_MAKS" ,0x142, 8, MD(5)}, 15262306a36Sopenharmony_ci {"OOB_MODE" ,0x143, 8, MD(5)}, 15362306a36Sopenharmony_ci {"CURRENT_STATUS" ,0x144, 8, MD(5)}, 15462306a36Sopenharmony_ci {"SPEED_MASK" ,0x145, 8, MD(5)}, 15562306a36Sopenharmony_ci {"PRIM_COUNT" ,0x146, 8, MD(5)}, 15662306a36Sopenharmony_ci {"OOB_SIGNALS" ,0x148, 8, MD(5)}, 15762306a36Sopenharmony_ci {"OOB_DATA_DET" ,0x149, 8, MD(5)}, 15862306a36Sopenharmony_ci {"OOB_TIME_OUT" ,0x14C, 8, MD(5)}, 15962306a36Sopenharmony_ci {"OOB_TIMER_ENABLE" ,0x14D, 8, MD(5)}, 16062306a36Sopenharmony_ci {"OOB_STATUS" ,0x14E, 8, MD(5)}, 16162306a36Sopenharmony_ci {"HOT_PLUG_DELAY" ,0x150, 8, MD(5)}, 16262306a36Sopenharmony_ci {"RCD_DELAY" ,0x151, 8, MD(5)}, 16362306a36Sopenharmony_ci {"COMSAS_TIMER" ,0x152, 8, MD(5)}, 16462306a36Sopenharmony_ci {"SNTT_DELAY" ,0x153, 8, MD(5)}, 16562306a36Sopenharmony_ci {"SPD_CHNG_DELAY" ,0x154, 8, MD(5)}, 16662306a36Sopenharmony_ci {"SNLT_DELAY" ,0x155, 8, MD(5)}, 16762306a36Sopenharmony_ci {"SNWT_DELAY" ,0x156, 8, MD(5)}, 16862306a36Sopenharmony_ci {"ALIGN_DELAY" ,0x157, 8, MD(5)}, 16962306a36Sopenharmony_ci {"INT_ENABLE_0" ,0x158, 8, MD(5)}, 17062306a36Sopenharmony_ci {"INT_ENABLE_1" ,0x159, 8, MD(5)}, 17162306a36Sopenharmony_ci {"INT_ENABLE_2" ,0x15A, 8, MD(5)}, 17262306a36Sopenharmony_ci {"INT_ENABLE_3" ,0x15B, 8, MD(5)}, 17362306a36Sopenharmony_ci {"OOB_TEST_REG" ,0x15C, 8, MD(5)}, 17462306a36Sopenharmony_ci {"PHY_CONTROL_0" ,0x160, 8, MD(5)}, 17562306a36Sopenharmony_ci {"PHY_CONTROL_1" ,0x161, 8, MD(5)}, 17662306a36Sopenharmony_ci {"PHY_CONTROL_2" ,0x162, 8, MD(5)}, 17762306a36Sopenharmony_ci {"PHY_CONTROL_3" ,0x163, 8, MD(5)}, 17862306a36Sopenharmony_ci {"PHY_OOB_CAL_TX" ,0x164, 8, MD(5)}, 17962306a36Sopenharmony_ci {"PHY_OOB_CAL_RX" ,0x165, 8, MD(5)}, 18062306a36Sopenharmony_ci {"OOB_PHY_CAL_TX" ,0x166, 8, MD(5)}, 18162306a36Sopenharmony_ci {"OOB_PHY_CAL_RX" ,0x167, 8, MD(5)}, 18262306a36Sopenharmony_ci {"PHY_CONTROL_4" ,0x168, 8, MD(5)}, 18362306a36Sopenharmony_ci {"PHY_TEST" ,0x169, 8, MD(5)}, 18462306a36Sopenharmony_ci {"PHY_PWR_CTL" ,0x16A, 8, MD(5)}, 18562306a36Sopenharmony_ci {"PHY_PWR_DELAY" ,0x16B, 8, MD(5)}, 18662306a36Sopenharmony_ci {"OOB_SM_CON" ,0x16C, 8, MD(5)}, 18762306a36Sopenharmony_ci {"ADDR_TRAP_1" ,0x16D, 8, MD(5)}, 18862306a36Sopenharmony_ci {"ADDR_NEXT_1" ,0x16E, 8, MD(5)}, 18962306a36Sopenharmony_ci {"NEXT_ST_1" ,0x16F, 8, MD(5)}, 19062306a36Sopenharmony_ci {"OOB_SM_STATE" ,0x170, 8, MD(5)}, 19162306a36Sopenharmony_ci {"ADDR_TRAP_2" ,0x171, 8, MD(5)}, 19262306a36Sopenharmony_ci {"ADDR_NEXT_2" ,0x172, 8, MD(5)}, 19362306a36Sopenharmony_ci {"NEXT_ST_2" ,0x173, 8, MD(5)}, 19462306a36Sopenharmony_ci {NULL, 0, 0, 0 } 19562306a36Sopenharmony_ci}; 19662306a36Sopenharmony_ci*/ 19762306a36Sopenharmony_ci#define STR_8BIT " %30s[0x%04x]:0x%02x\n" 19862306a36Sopenharmony_ci#define STR_16BIT " %30s[0x%04x]:0x%04x\n" 19962306a36Sopenharmony_ci#define STR_32BIT " %30s[0x%04x]:0x%08x\n" 20062306a36Sopenharmony_ci#define STR_64BIT " %30s[0x%04x]:0x%llx\n" 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci#define PRINT_REG_8bit(_ha, _n, _r) asd_printk(STR_8BIT, #_n, _n, \ 20362306a36Sopenharmony_ci asd_read_reg_byte(_ha, _r)) 20462306a36Sopenharmony_ci#define PRINT_REG_16bit(_ha, _n, _r) asd_printk(STR_16BIT, #_n, _n, \ 20562306a36Sopenharmony_ci asd_read_reg_word(_ha, _r)) 20662306a36Sopenharmony_ci#define PRINT_REG_32bit(_ha, _n, _r) asd_printk(STR_32BIT, #_n, _n, \ 20762306a36Sopenharmony_ci asd_read_reg_dword(_ha, _r)) 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci#define PRINT_CREG_8bit(_ha, _n) asd_printk(STR_8BIT, #_n, _n, \ 21062306a36Sopenharmony_ci asd_read_reg_byte(_ha, C##_n)) 21162306a36Sopenharmony_ci#define PRINT_CREG_16bit(_ha, _n) asd_printk(STR_16BIT, #_n, _n, \ 21262306a36Sopenharmony_ci asd_read_reg_word(_ha, C##_n)) 21362306a36Sopenharmony_ci#define PRINT_CREG_32bit(_ha, _n) asd_printk(STR_32BIT, #_n, _n, \ 21462306a36Sopenharmony_ci asd_read_reg_dword(_ha, C##_n)) 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci#define MSTR_8BIT " Mode:%02d %30s[0x%04x]:0x%02x\n" 21762306a36Sopenharmony_ci#define MSTR_16BIT " Mode:%02d %30s[0x%04x]:0x%04x\n" 21862306a36Sopenharmony_ci#define MSTR_32BIT " Mode:%02d %30s[0x%04x]:0x%08x\n" 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ci#define PRINT_MREG_8bit(_ha, _m, _n, _r) asd_printk(MSTR_8BIT, _m, #_n, _n, \ 22162306a36Sopenharmony_ci asd_read_reg_byte(_ha, _r)) 22262306a36Sopenharmony_ci#define PRINT_MREG_16bit(_ha, _m, _n, _r) asd_printk(MSTR_16BIT, _m, #_n, _n, \ 22362306a36Sopenharmony_ci asd_read_reg_word(_ha, _r)) 22462306a36Sopenharmony_ci#define PRINT_MREG_32bit(_ha, _m, _n, _r) asd_printk(MSTR_32BIT, _m, #_n, _n, \ 22562306a36Sopenharmony_ci asd_read_reg_dword(_ha, _r)) 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci/* can also be used for MD when the register is mode aware already */ 22862306a36Sopenharmony_ci#define PRINT_MIS_byte(_ha, _n) asd_printk(STR_8BIT, #_n,CSEQ_##_n-CMAPPEDSCR,\ 22962306a36Sopenharmony_ci asd_read_reg_byte(_ha, CSEQ_##_n)) 23062306a36Sopenharmony_ci#define PRINT_MIS_word(_ha, _n) asd_printk(STR_16BIT,#_n,CSEQ_##_n-CMAPPEDSCR,\ 23162306a36Sopenharmony_ci asd_read_reg_word(_ha, CSEQ_##_n)) 23262306a36Sopenharmony_ci#define PRINT_MIS_dword(_ha, _n) \ 23362306a36Sopenharmony_ci asd_printk(STR_32BIT,#_n,CSEQ_##_n-CMAPPEDSCR,\ 23462306a36Sopenharmony_ci asd_read_reg_dword(_ha, CSEQ_##_n)) 23562306a36Sopenharmony_ci#define PRINT_MIS_qword(_ha, _n) \ 23662306a36Sopenharmony_ci asd_printk(STR_64BIT, #_n,CSEQ_##_n-CMAPPEDSCR, \ 23762306a36Sopenharmony_ci (unsigned long long)(((u64)asd_read_reg_dword(_ha, CSEQ_##_n)) \ 23862306a36Sopenharmony_ci | (((u64)asd_read_reg_dword(_ha, (CSEQ_##_n)+4))<<32))) 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci#define CMDP_REG(_n, _m) (_m*(CSEQ_PAGE_SIZE*2)+CSEQ_##_n) 24162306a36Sopenharmony_ci#define PRINT_CMDP_word(_ha, _n) \ 24262306a36Sopenharmony_ciasd_printk("%20s 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x\n", \ 24362306a36Sopenharmony_ci #_n, \ 24462306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 0)), \ 24562306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 1)), \ 24662306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 2)), \ 24762306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 3)), \ 24862306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 4)), \ 24962306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 5)), \ 25062306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 6)), \ 25162306a36Sopenharmony_ci asd_read_reg_word(_ha, CMDP_REG(_n, 7))) 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_ci#define PRINT_CMDP_byte(_ha, _n) \ 25462306a36Sopenharmony_ciasd_printk("%20s 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x\n", \ 25562306a36Sopenharmony_ci #_n, \ 25662306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 0)), \ 25762306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 1)), \ 25862306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 2)), \ 25962306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 3)), \ 26062306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 4)), \ 26162306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 5)), \ 26262306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 6)), \ 26362306a36Sopenharmony_ci asd_read_reg_byte(_ha, CMDP_REG(_n, 7))) 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_cistatic void asd_dump_cseq_state(struct asd_ha_struct *asd_ha) 26662306a36Sopenharmony_ci{ 26762306a36Sopenharmony_ci int mode; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci asd_printk("CSEQ STATE\n"); 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_ci asd_printk("ARP2 REGISTERS\n"); 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci PRINT_CREG_32bit(asd_ha, ARP2CTL); 27462306a36Sopenharmony_ci PRINT_CREG_32bit(asd_ha, ARP2INT); 27562306a36Sopenharmony_ci PRINT_CREG_32bit(asd_ha, ARP2INTEN); 27662306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, MODEPTR); 27762306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, ALTMODE); 27862306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, FLAG); 27962306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, ARP2INTCTL); 28062306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, STACK); 28162306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, PRGMCNT); 28262306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, ACCUM); 28362306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, SINDEX); 28462306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, DINDEX); 28562306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, SINDIR); 28662306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, DINDIR); 28762306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, JUMLDIR); 28862306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, ARP2HALTCODE); 28962306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, CURRADDR); 29062306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, LASTADDR); 29162306a36Sopenharmony_ci PRINT_CREG_16bit(asd_ha, NXTLADDR); 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_ci asd_printk("IOP REGISTERS\n"); 29462306a36Sopenharmony_ci 29562306a36Sopenharmony_ci PRINT_REG_32bit(asd_ha, BISTCTL1, CBISTCTL); 29662306a36Sopenharmony_ci PRINT_CREG_32bit(asd_ha, MAPPEDSCR); 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci asd_printk("CIO REGISTERS\n"); 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci for (mode = 0; mode < 9; mode++) 30162306a36Sopenharmony_ci PRINT_MREG_16bit(asd_ha, mode, MnSCBPTR, CMnSCBPTR(mode)); 30262306a36Sopenharmony_ci PRINT_MREG_16bit(asd_ha, 15, MnSCBPTR, CMnSCBPTR(15)); 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci for (mode = 0; mode < 9; mode++) 30562306a36Sopenharmony_ci PRINT_MREG_16bit(asd_ha, mode, MnDDBPTR, CMnDDBPTR(mode)); 30662306a36Sopenharmony_ci PRINT_MREG_16bit(asd_ha, 15, MnDDBPTR, CMnDDBPTR(15)); 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) 30962306a36Sopenharmony_ci PRINT_MREG_32bit(asd_ha, mode, MnREQMBX, CMnREQMBX(mode)); 31062306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) 31162306a36Sopenharmony_ci PRINT_MREG_32bit(asd_ha, mode, MnRSPMBX, CMnRSPMBX(mode)); 31262306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) 31362306a36Sopenharmony_ci PRINT_MREG_32bit(asd_ha, mode, MnINT, CMnINT(mode)); 31462306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) 31562306a36Sopenharmony_ci PRINT_MREG_32bit(asd_ha, mode, MnINTEN, CMnINTEN(mode)); 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci PRINT_CREG_8bit(asd_ha, SCRATCHPAGE); 31862306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) 31962306a36Sopenharmony_ci PRINT_MREG_8bit(asd_ha, mode, MnSCRATCHPAGE, 32062306a36Sopenharmony_ci CMnSCRATCHPAGE(mode)); 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci PRINT_REG_32bit(asd_ha, CLINKCON, CLINKCON); 32362306a36Sopenharmony_ci PRINT_REG_8bit(asd_ha, CCONMSK, CCONMSK); 32462306a36Sopenharmony_ci PRINT_REG_8bit(asd_ha, CCONEXIST, CCONEXIST); 32562306a36Sopenharmony_ci PRINT_REG_16bit(asd_ha, CCONMODE, CCONMODE); 32662306a36Sopenharmony_ci PRINT_REG_32bit(asd_ha, CTIMERCALC, CTIMERCALC); 32762306a36Sopenharmony_ci PRINT_REG_8bit(asd_ha, CINTDIS, CINTDIS); 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci asd_printk("SCRATCH MEMORY\n"); 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ci asd_printk("MIP 4 >>>>>\n"); 33262306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_EXE_HEAD); 33362306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_EXE_TAIL); 33462306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_DONE_HEAD); 33562306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_DONE_TAIL); 33662306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_SEND_HEAD); 33762306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_SEND_TAIL); 33862306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_DMA2CHIM_HEAD); 33962306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_DMA2CHIM_TAIL); 34062306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_COPY_HEAD); 34162306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_COPY_TAIL); 34262306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, REG0); 34362306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, REG1); 34462306a36Sopenharmony_ci PRINT_MIS_dword(asd_ha, REG2); 34562306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, LINK_CTL_Q_MAP); 34662306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, MAX_CSEQ_MODE); 34762306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, FREE_LIST_HACK_COUNT); 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci asd_printk("MIP 5 >>>>\n"); 35062306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, EST_NEXUS_REQ_QUEUE); 35162306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, EST_NEXUS_REQ_COUNT); 35262306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_EST_NEXUS_HEAD); 35362306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_EST_NEXUS_TAIL); 35462306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, NEED_EST_NEXUS_SCB); 35562306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, EST_NEXUS_REQ_HEAD); 35662306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, EST_NEXUS_REQ_TAIL); 35762306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, EST_NEXUS_SCB_OFFSET); 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci asd_printk("MIP 6 >>>>\n"); 36062306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, INT_ROUT_RET_ADDR0); 36162306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, INT_ROUT_RET_ADDR1); 36262306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, INT_ROUT_SCBPTR); 36362306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, INT_ROUT_MODE); 36462306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, ISR_SCRATCH_FLAGS); 36562306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, ISR_SAVE_SINDEX); 36662306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, ISR_SAVE_DINDEX); 36762306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_MONIRTT_HEAD); 36862306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_MONIRTT_TAIL); 36962306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, FREE_SCB_MASK); 37062306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, BUILTIN_FREE_SCB_HEAD); 37162306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, BUILTIN_FREE_SCB_TAIL); 37262306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, EXTENDED_FREE_SCB_HEAD); 37362306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, EXTENDED_FREE_SCB_TAIL); 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_ci asd_printk("MIP 7 >>>>\n"); 37662306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, EMPTY_REQ_QUEUE); 37762306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, EMPTY_REQ_COUNT); 37862306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_EMPTY_HEAD); 37962306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, Q_EMPTY_TAIL); 38062306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, NEED_EMPTY_SCB); 38162306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, EMPTY_REQ_HEAD); 38262306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, EMPTY_REQ_TAIL); 38362306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, EMPTY_SCB_OFFSET); 38462306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, PRIMITIVE_DATA); 38562306a36Sopenharmony_ci PRINT_MIS_dword(asd_ha, TIMEOUT_CONST); 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ci asd_printk("MDP 0 >>>>\n"); 38862306a36Sopenharmony_ci asd_printk("%-20s %6s %6s %6s %6s %6s %6s %6s %6s\n", 38962306a36Sopenharmony_ci "Mode: ", "0", "1", "2", "3", "4", "5", "6", "7"); 39062306a36Sopenharmony_ci PRINT_CMDP_word(asd_ha, LRM_SAVE_SINDEX); 39162306a36Sopenharmony_ci PRINT_CMDP_word(asd_ha, LRM_SAVE_SCBPTR); 39262306a36Sopenharmony_ci PRINT_CMDP_word(asd_ha, Q_LINK_HEAD); 39362306a36Sopenharmony_ci PRINT_CMDP_word(asd_ha, Q_LINK_TAIL); 39462306a36Sopenharmony_ci PRINT_CMDP_byte(asd_ha, LRM_SAVE_SCRPAGE); 39562306a36Sopenharmony_ci 39662306a36Sopenharmony_ci asd_printk("MDP 0 Mode 8 >>>>\n"); 39762306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, RET_ADDR); 39862306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, RET_SCBPTR); 39962306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, SAVE_SCBPTR); 40062306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, EMPTY_TRANS_CTX); 40162306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, RESP_LEN); 40262306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, TMF_SCBPTR); 40362306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, GLOBAL_PREV_SCB); 40462306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, GLOBAL_HEAD); 40562306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, CLEAR_LU_HEAD); 40662306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, TMF_OPCODE); 40762306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, SCRATCH_FLAGS); 40862306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, HSB_SITE); 40962306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, FIRST_INV_SCB_SITE); 41062306a36Sopenharmony_ci PRINT_MIS_word(asd_ha, FIRST_INV_DDB_SITE); 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_ci asd_printk("MDP 1 Mode 8 >>>>\n"); 41362306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, LUN_TO_CLEAR); 41462306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, LUN_TO_CHECK); 41562306a36Sopenharmony_ci 41662306a36Sopenharmony_ci asd_printk("MDP 2 Mode 8 >>>>\n"); 41762306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, HQ_NEW_POINTER); 41862306a36Sopenharmony_ci PRINT_MIS_qword(asd_ha, HQ_DONE_BASE); 41962306a36Sopenharmony_ci PRINT_MIS_dword(asd_ha, HQ_DONE_POINTER); 42062306a36Sopenharmony_ci PRINT_MIS_byte(asd_ha, HQ_DONE_PASS); 42162306a36Sopenharmony_ci} 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci#define PRINT_LREG_8bit(_h, _lseq, _n) \ 42462306a36Sopenharmony_ci asd_printk(STR_8BIT, #_n, _n, asd_read_reg_byte(_h, Lm##_n(_lseq))) 42562306a36Sopenharmony_ci#define PRINT_LREG_16bit(_h, _lseq, _n) \ 42662306a36Sopenharmony_ci asd_printk(STR_16BIT, #_n, _n, asd_read_reg_word(_h, Lm##_n(_lseq))) 42762306a36Sopenharmony_ci#define PRINT_LREG_32bit(_h, _lseq, _n) \ 42862306a36Sopenharmony_ci asd_printk(STR_32BIT, #_n, _n, asd_read_reg_dword(_h, Lm##_n(_lseq))) 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ci#define PRINT_LMIP_byte(_h, _lseq, _n) \ 43162306a36Sopenharmony_ci asd_printk(STR_8BIT, #_n, LmSEQ_##_n(_lseq)-LmSCRATCH(_lseq), \ 43262306a36Sopenharmony_ci asd_read_reg_byte(_h, LmSEQ_##_n(_lseq))) 43362306a36Sopenharmony_ci#define PRINT_LMIP_word(_h, _lseq, _n) \ 43462306a36Sopenharmony_ci asd_printk(STR_16BIT, #_n, LmSEQ_##_n(_lseq)-LmSCRATCH(_lseq), \ 43562306a36Sopenharmony_ci asd_read_reg_word(_h, LmSEQ_##_n(_lseq))) 43662306a36Sopenharmony_ci#define PRINT_LMIP_dword(_h, _lseq, _n) \ 43762306a36Sopenharmony_ci asd_printk(STR_32BIT, #_n, LmSEQ_##_n(_lseq)-LmSCRATCH(_lseq), \ 43862306a36Sopenharmony_ci asd_read_reg_dword(_h, LmSEQ_##_n(_lseq))) 43962306a36Sopenharmony_ci#define PRINT_LMIP_qword(_h, _lseq, _n) \ 44062306a36Sopenharmony_ci asd_printk(STR_64BIT, #_n, LmSEQ_##_n(_lseq)-LmSCRATCH(_lseq), \ 44162306a36Sopenharmony_ci (unsigned long long)(((unsigned long long) \ 44262306a36Sopenharmony_ci asd_read_reg_dword(_h, LmSEQ_##_n(_lseq))) \ 44362306a36Sopenharmony_ci | (((unsigned long long) \ 44462306a36Sopenharmony_ci asd_read_reg_dword(_h, LmSEQ_##_n(_lseq)+4))<<32))) 44562306a36Sopenharmony_ci 44662306a36Sopenharmony_cistatic void asd_print_lseq_cio_reg(struct asd_ha_struct *asd_ha, 44762306a36Sopenharmony_ci u32 lseq_cio_addr, int i) 44862306a36Sopenharmony_ci{ 44962306a36Sopenharmony_ci switch (LSEQmCIOREGS[i].width) { 45062306a36Sopenharmony_ci case 8: 45162306a36Sopenharmony_ci asd_printk("%20s[0x%x]: 0x%02x\n", LSEQmCIOREGS[i].name, 45262306a36Sopenharmony_ci LSEQmCIOREGS[i].offs, 45362306a36Sopenharmony_ci asd_read_reg_byte(asd_ha, lseq_cio_addr + 45462306a36Sopenharmony_ci LSEQmCIOREGS[i].offs)); 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci break; 45762306a36Sopenharmony_ci case 16: 45862306a36Sopenharmony_ci asd_printk("%20s[0x%x]: 0x%04x\n", LSEQmCIOREGS[i].name, 45962306a36Sopenharmony_ci LSEQmCIOREGS[i].offs, 46062306a36Sopenharmony_ci asd_read_reg_word(asd_ha, lseq_cio_addr + 46162306a36Sopenharmony_ci LSEQmCIOREGS[i].offs)); 46262306a36Sopenharmony_ci 46362306a36Sopenharmony_ci break; 46462306a36Sopenharmony_ci case 32: 46562306a36Sopenharmony_ci asd_printk("%20s[0x%x]: 0x%08x\n", LSEQmCIOREGS[i].name, 46662306a36Sopenharmony_ci LSEQmCIOREGS[i].offs, 46762306a36Sopenharmony_ci asd_read_reg_dword(asd_ha, lseq_cio_addr + 46862306a36Sopenharmony_ci LSEQmCIOREGS[i].offs)); 46962306a36Sopenharmony_ci break; 47062306a36Sopenharmony_ci } 47162306a36Sopenharmony_ci} 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_cistatic void asd_dump_lseq_state(struct asd_ha_struct *asd_ha, int lseq) 47462306a36Sopenharmony_ci{ 47562306a36Sopenharmony_ci u32 moffs; 47662306a36Sopenharmony_ci int mode; 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci asd_printk("LSEQ %d STATE\n", lseq); 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci asd_printk("LSEQ%d: ARP2 REGISTERS\n", lseq); 48162306a36Sopenharmony_ci PRINT_LREG_32bit(asd_ha, lseq, ARP2CTL); 48262306a36Sopenharmony_ci PRINT_LREG_32bit(asd_ha, lseq, ARP2INT); 48362306a36Sopenharmony_ci PRINT_LREG_32bit(asd_ha, lseq, ARP2INTEN); 48462306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, MODEPTR); 48562306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, ALTMODE); 48662306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, FLAG); 48762306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, ARP2INTCTL); 48862306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, STACK); 48962306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, PRGMCNT); 49062306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, ACCUM); 49162306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, SINDEX); 49262306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, DINDEX); 49362306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, SINDIR); 49462306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, DINDIR); 49562306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, JUMLDIR); 49662306a36Sopenharmony_ci PRINT_LREG_8bit(asd_ha, lseq, ARP2HALTCODE); 49762306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, CURRADDR); 49862306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, LASTADDR); 49962306a36Sopenharmony_ci PRINT_LREG_16bit(asd_ha, lseq, NXTLADDR); 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ci asd_printk("LSEQ%d: IOP REGISTERS\n", lseq); 50262306a36Sopenharmony_ci 50362306a36Sopenharmony_ci PRINT_LREG_32bit(asd_ha, lseq, MODECTL); 50462306a36Sopenharmony_ci PRINT_LREG_32bit(asd_ha, lseq, DBGMODE); 50562306a36Sopenharmony_ci PRINT_LREG_32bit(asd_ha, lseq, CONTROL); 50662306a36Sopenharmony_ci PRINT_REG_32bit(asd_ha, BISTCTL0, LmBISTCTL0(lseq)); 50762306a36Sopenharmony_ci PRINT_REG_32bit(asd_ha, BISTCTL1, LmBISTCTL1(lseq)); 50862306a36Sopenharmony_ci 50962306a36Sopenharmony_ci asd_printk("LSEQ%d: CIO REGISTERS\n", lseq); 51062306a36Sopenharmony_ci asd_printk("Mode common:\n"); 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) { 51362306a36Sopenharmony_ci u32 lseq_cio_addr = LmSEQ_PHY_BASE(mode, lseq); 51462306a36Sopenharmony_ci int i; 51562306a36Sopenharmony_ci 51662306a36Sopenharmony_ci for (i = 0; LSEQmCIOREGS[i].name; i++) 51762306a36Sopenharmony_ci if (LSEQmCIOREGS[i].mode == MODE_COMMON) 51862306a36Sopenharmony_ci asd_print_lseq_cio_reg(asd_ha,lseq_cio_addr,i); 51962306a36Sopenharmony_ci } 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ci asd_printk("Mode unique:\n"); 52262306a36Sopenharmony_ci for (mode = 0; mode < 8; mode++) { 52362306a36Sopenharmony_ci u32 lseq_cio_addr = LmSEQ_PHY_BASE(mode, lseq); 52462306a36Sopenharmony_ci int i; 52562306a36Sopenharmony_ci 52662306a36Sopenharmony_ci asd_printk("Mode %d\n", mode); 52762306a36Sopenharmony_ci for (i = 0; LSEQmCIOREGS[i].name; i++) { 52862306a36Sopenharmony_ci if (!(LSEQmCIOREGS[i].mode & (1 << mode))) 52962306a36Sopenharmony_ci continue; 53062306a36Sopenharmony_ci asd_print_lseq_cio_reg(asd_ha, lseq_cio_addr, i); 53162306a36Sopenharmony_ci } 53262306a36Sopenharmony_ci } 53362306a36Sopenharmony_ci 53462306a36Sopenharmony_ci asd_printk("SCRATCH MEMORY\n"); 53562306a36Sopenharmony_ci 53662306a36Sopenharmony_ci asd_printk("LSEQ%d MIP 0 >>>>\n", lseq); 53762306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, Q_TGTXFR_HEAD); 53862306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, Q_TGTXFR_TAIL); 53962306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, LINK_NUMBER); 54062306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, SCRATCH_FLAGS); 54162306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, CONNECTION_STATE); 54262306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, CONCTL); 54362306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, CONSTAT); 54462306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, CONNECTION_MODES); 54562306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, REG1_ISR); 54662306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, REG2_ISR); 54762306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, REG3_ISR); 54862306a36Sopenharmony_ci PRINT_LMIP_qword(asd_ha, lseq,REG0_ISR); 54962306a36Sopenharmony_ci 55062306a36Sopenharmony_ci asd_printk("LSEQ%d MIP 1 >>>>\n", lseq); 55162306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR0); 55262306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR1); 55362306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR2); 55462306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR3); 55562306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE0); 55662306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE1); 55762306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE2); 55862306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE3); 55962306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_HEAD); 56062306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_TAIL); 56162306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_BUF_AVAIL); 56262306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, TIMEOUT_CONST); 56362306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, ISR_SAVE_SINDEX); 56462306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, ISR_SAVE_DINDEX); 56562306a36Sopenharmony_ci 56662306a36Sopenharmony_ci asd_printk("LSEQ%d MIP 2 >>>>\n", lseq); 56762306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR0); 56862306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR1); 56962306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR2); 57062306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR3); 57162306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD0); 57262306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD1); 57362306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD2); 57462306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD3); 57562306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_HEAD); 57662306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_TAIL); 57762306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, EMPTY_BUFS_AVAIL); 57862306a36Sopenharmony_ci 57962306a36Sopenharmony_ci asd_printk("LSEQ%d MIP 3 >>>>\n", lseq); 58062306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, DEV_PRES_TMR_TOUT_CONST); 58162306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, SATA_INTERLOCK_TIMEOUT); 58262306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, SRST_ASSERT_TIMEOUT); 58362306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, RCV_FIS_TIMEOUT); 58462306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, ONE_MILLISEC_TIMEOUT); 58562306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, TEN_MS_COMINIT_TIMEOUT); 58662306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, SMP_RCV_TIMEOUT); 58762306a36Sopenharmony_ci 58862306a36Sopenharmony_ci for (mode = 0; mode < 3; mode++) { 58962306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 0 MODE %d >>>>\n", lseq, mode); 59062306a36Sopenharmony_ci moffs = mode * LSEQ_MODE_SCRATCH_SIZE; 59162306a36Sopenharmony_ci 59262306a36Sopenharmony_ci asd_printk(STR_16BIT, "RET_ADDR", 0, 59362306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR(lseq) 59462306a36Sopenharmony_ci + moffs)); 59562306a36Sopenharmony_ci asd_printk(STR_16BIT, "REG0_MODE", 2, 59662306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_REG0_MODE(lseq) 59762306a36Sopenharmony_ci + moffs)); 59862306a36Sopenharmony_ci asd_printk(STR_16BIT, "MODE_FLAGS", 4, 59962306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_MODE_FLAGS(lseq) 60062306a36Sopenharmony_ci + moffs)); 60162306a36Sopenharmony_ci asd_printk(STR_16BIT, "RET_ADDR2", 0x6, 60262306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR2(lseq) 60362306a36Sopenharmony_ci + moffs)); 60462306a36Sopenharmony_ci asd_printk(STR_16BIT, "RET_ADDR1", 0x8, 60562306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR1(lseq) 60662306a36Sopenharmony_ci + moffs)); 60762306a36Sopenharmony_ci asd_printk(STR_8BIT, "OPCODE_TO_CSEQ", 0xB, 60862306a36Sopenharmony_ci asd_read_reg_byte(asd_ha, LmSEQ_OPCODE_TO_CSEQ(lseq) 60962306a36Sopenharmony_ci + moffs)); 61062306a36Sopenharmony_ci asd_printk(STR_16BIT, "DATA_TO_CSEQ", 0xC, 61162306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_DATA_TO_CSEQ(lseq) 61262306a36Sopenharmony_ci + moffs)); 61362306a36Sopenharmony_ci } 61462306a36Sopenharmony_ci 61562306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 0 MODE 5 >>>>\n", lseq); 61662306a36Sopenharmony_ci moffs = LSEQ_MODE5_PAGE0_OFFSET; 61762306a36Sopenharmony_ci asd_printk(STR_16BIT, "RET_ADDR", 0, 61862306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR(lseq) + moffs)); 61962306a36Sopenharmony_ci asd_printk(STR_16BIT, "REG0_MODE", 2, 62062306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_REG0_MODE(lseq) + moffs)); 62162306a36Sopenharmony_ci asd_printk(STR_16BIT, "MODE_FLAGS", 4, 62262306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_MODE_FLAGS(lseq) + moffs)); 62362306a36Sopenharmony_ci asd_printk(STR_16BIT, "RET_ADDR2", 0x6, 62462306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR2(lseq) + moffs)); 62562306a36Sopenharmony_ci asd_printk(STR_16BIT, "RET_ADDR1", 0x8, 62662306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR1(lseq) + moffs)); 62762306a36Sopenharmony_ci asd_printk(STR_8BIT, "OPCODE_TO_CSEQ", 0xB, 62862306a36Sopenharmony_ci asd_read_reg_byte(asd_ha, LmSEQ_OPCODE_TO_CSEQ(lseq) + moffs)); 62962306a36Sopenharmony_ci asd_printk(STR_16BIT, "DATA_TO_CSEQ", 0xC, 63062306a36Sopenharmony_ci asd_read_reg_word(asd_ha, LmSEQ_DATA_TO_CSEQ(lseq) + moffs)); 63162306a36Sopenharmony_ci 63262306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 0 MODE 0 >>>>\n", lseq); 63362306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, FIRST_INV_DDB_SITE); 63462306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, EMPTY_TRANS_CTX); 63562306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, RESP_LEN); 63662306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, FIRST_INV_SCB_SITE); 63762306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, INTEN_SAVE); 63862306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, LINK_RST_FRM_LEN); 63962306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, LINK_RST_PROTOCOL); 64062306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, RESP_STATUS); 64162306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, LAST_LOADED_SGE); 64262306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, SAVE_SCBPTR); 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 0 MODE 1 >>>>\n", lseq); 64562306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, Q_XMIT_HEAD); 64662306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, M1_EMPTY_TRANS_CTX); 64762306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, INI_CONN_TAG); 64862306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, FAILED_OPEN_STATUS); 64962306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, XMIT_REQUEST_TYPE); 65062306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, M1_RESP_STATUS); 65162306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, M1_LAST_LOADED_SGE); 65262306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, M1_SAVE_SCBPTR); 65362306a36Sopenharmony_ci 65462306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 0 MODE 2 >>>>\n", lseq); 65562306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, PORT_COUNTER); 65662306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, PM_TABLE_PTR); 65762306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, SATA_INTERLOCK_TMR_SAVE); 65862306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, IP_BITL); 65962306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, COPY_SMP_CONN_TAG); 66062306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, P0M2_OFFS1AH); 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 0 MODE 4/5 >>>>\n", lseq); 66362306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, SAVED_OOB_STATUS); 66462306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, SAVED_OOB_MODE); 66562306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, Q_LINK_HEAD); 66662306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, LINK_RST_ERR); 66762306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, SAVED_OOB_SIGNALS); 66862306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, SAS_RESET_MODE); 66962306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, LINK_RESET_RETRY_COUNT); 67062306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, NUM_LINK_RESET_RETRIES); 67162306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, OOB_INT_ENABLES); 67262306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, NOTIFY_TIMER_TIMEOUT); 67362306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, NOTIFY_TIMER_DOWN_COUNT); 67462306a36Sopenharmony_ci 67562306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 1 MODE 0 >>>>\n", lseq); 67662306a36Sopenharmony_ci PRINT_LMIP_qword(asd_ha, lseq, SG_LIST_PTR_ADDR0); 67762306a36Sopenharmony_ci PRINT_LMIP_qword(asd_ha, lseq, SG_LIST_PTR_ADDR1); 67862306a36Sopenharmony_ci 67962306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 1 MODE 1 >>>>\n", lseq); 68062306a36Sopenharmony_ci PRINT_LMIP_qword(asd_ha, lseq, M1_SG_LIST_PTR_ADDR0); 68162306a36Sopenharmony_ci PRINT_LMIP_qword(asd_ha, lseq, M1_SG_LIST_PTR_ADDR1); 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 1 MODE 2 >>>>\n", lseq); 68462306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, INVALID_DWORD_COUNT); 68562306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, DISPARITY_ERROR_COUNT); 68662306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, LOSS_OF_SYNC_COUNT); 68762306a36Sopenharmony_ci 68862306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 1 MODE 4/5 >>>>\n", lseq); 68962306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, FRAME_TYPE_MASK); 69062306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, HASHED_SRC_ADDR_MASK_PRINT); 69162306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, NUM_FILL_BYTES_MASK); 69262306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, TAG_MASK); 69362306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, TARGET_PORT_XFER_TAG); 69462306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, DATA_OFFSET); 69562306a36Sopenharmony_ci 69662306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 2 MODE 0 >>>>\n", lseq); 69762306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, SMP_RCV_TIMER_TERM_TS); 69862306a36Sopenharmony_ci PRINT_LMIP_byte(asd_ha, lseq, DEVICE_BITS); 69962306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, SDB_DDB); 70062306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, SDB_NUM_TAGS); 70162306a36Sopenharmony_ci PRINT_LMIP_word(asd_ha, lseq, SDB_CURR_TAG); 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 2 MODE 1 >>>>\n", lseq); 70462306a36Sopenharmony_ci PRINT_LMIP_qword(asd_ha, lseq, TX_ID_ADDR_FRAME); 70562306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, OPEN_TIMER_TERM_TS); 70662306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, SRST_AS_TIMER_TERM_TS); 70762306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, LAST_LOADED_SG_EL); 70862306a36Sopenharmony_ci 70962306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 2 MODE 2 >>>>\n", lseq); 71062306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, CLOSE_TIMER_TERM_TS); 71162306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, BREAK_TIMER_TERM_TS); 71262306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, DWS_RESET_TIMER_TERM_TS); 71362306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, SATA_INTERLOCK_TIMER_TERM_TS); 71462306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, MCTL_TIMER_TERM_TS); 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_ci asd_printk("LSEQ%d MDP 2 MODE 4/5 >>>>\n", lseq); 71762306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, COMINIT_TIMER_TERM_TS); 71862306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, RCV_ID_TIMER_TERM_TS); 71962306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, RCV_FIS_TIMER_TERM_TS); 72062306a36Sopenharmony_ci PRINT_LMIP_dword(asd_ha, lseq, DEV_PRES_TIMER_TERM_TS); 72162306a36Sopenharmony_ci} 72262306a36Sopenharmony_ci 72362306a36Sopenharmony_ci/** 72462306a36Sopenharmony_ci * asd_dump_seq_state -- dump CSEQ and LSEQ states 72562306a36Sopenharmony_ci * @asd_ha: pointer to host adapter structure 72662306a36Sopenharmony_ci * @lseq_mask: mask of LSEQs of interest 72762306a36Sopenharmony_ci */ 72862306a36Sopenharmony_civoid asd_dump_seq_state(struct asd_ha_struct *asd_ha, u8 lseq_mask) 72962306a36Sopenharmony_ci{ 73062306a36Sopenharmony_ci int lseq; 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_ci asd_dump_cseq_state(asd_ha); 73362306a36Sopenharmony_ci 73462306a36Sopenharmony_ci if (lseq_mask != 0) 73562306a36Sopenharmony_ci for_each_sequencer(lseq_mask, lseq_mask, lseq) 73662306a36Sopenharmony_ci asd_dump_lseq_state(asd_ha, lseq); 73762306a36Sopenharmony_ci} 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_civoid asd_dump_frame_rcvd(struct asd_phy *phy, 74062306a36Sopenharmony_ci struct done_list_struct *dl) 74162306a36Sopenharmony_ci{ 74262306a36Sopenharmony_ci unsigned long flags; 74362306a36Sopenharmony_ci int i; 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_ci switch ((dl->status_block[1] & 0x70) >> 3) { 74662306a36Sopenharmony_ci case SAS_PROTOCOL_STP: 74762306a36Sopenharmony_ci ASD_DPRINTK("STP proto device-to-host FIS:\n"); 74862306a36Sopenharmony_ci break; 74962306a36Sopenharmony_ci default: 75062306a36Sopenharmony_ci case SAS_PROTOCOL_SSP: 75162306a36Sopenharmony_ci ASD_DPRINTK("SAS proto IDENTIFY:\n"); 75262306a36Sopenharmony_ci break; 75362306a36Sopenharmony_ci } 75462306a36Sopenharmony_ci spin_lock_irqsave(&phy->sas_phy.frame_rcvd_lock, flags); 75562306a36Sopenharmony_ci for (i = 0; i < phy->sas_phy.frame_rcvd_size; i+=4) 75662306a36Sopenharmony_ci ASD_DPRINTK("%02x: %02x %02x %02x %02x\n", 75762306a36Sopenharmony_ci i, 75862306a36Sopenharmony_ci phy->frame_rcvd[i], 75962306a36Sopenharmony_ci phy->frame_rcvd[i+1], 76062306a36Sopenharmony_ci phy->frame_rcvd[i+2], 76162306a36Sopenharmony_ci phy->frame_rcvd[i+3]); 76262306a36Sopenharmony_ci spin_unlock_irqrestore(&phy->sas_phy.frame_rcvd_lock, flags); 76362306a36Sopenharmony_ci} 76462306a36Sopenharmony_ci 76562306a36Sopenharmony_ci#endif /* ASD_DEBUG */ 766