static void asd_dump_lseq_state()

in aic94xx/aic94xx_dump.c [473:721]


static void asd_dump_lseq_state(struct asd_ha_struct *asd_ha, int lseq)
{
	u32 moffs;
	int mode;

	asd_printk("LSEQ %d STATE\n", lseq);

	asd_printk("LSEQ%d: ARP2 REGISTERS\n", lseq);
	PRINT_LREG_32bit(asd_ha, lseq, ARP2CTL);
	PRINT_LREG_32bit(asd_ha, lseq, ARP2INT);
	PRINT_LREG_32bit(asd_ha, lseq, ARP2INTEN);
	PRINT_LREG_8bit(asd_ha, lseq, MODEPTR);
	PRINT_LREG_8bit(asd_ha, lseq, ALTMODE);
	PRINT_LREG_8bit(asd_ha, lseq, FLAG);
	PRINT_LREG_8bit(asd_ha, lseq, ARP2INTCTL);
	PRINT_LREG_16bit(asd_ha, lseq, STACK);
	PRINT_LREG_16bit(asd_ha, lseq, PRGMCNT);
	PRINT_LREG_16bit(asd_ha, lseq, ACCUM);
	PRINT_LREG_16bit(asd_ha, lseq, SINDEX);
	PRINT_LREG_16bit(asd_ha, lseq, DINDEX);
	PRINT_LREG_8bit(asd_ha, lseq, SINDIR);
	PRINT_LREG_8bit(asd_ha, lseq, DINDIR);
	PRINT_LREG_8bit(asd_ha, lseq, JUMLDIR);
	PRINT_LREG_8bit(asd_ha, lseq, ARP2HALTCODE);
	PRINT_LREG_16bit(asd_ha, lseq, CURRADDR);
	PRINT_LREG_16bit(asd_ha, lseq, LASTADDR);
	PRINT_LREG_16bit(asd_ha, lseq, NXTLADDR);

	asd_printk("LSEQ%d: IOP REGISTERS\n", lseq);

	PRINT_LREG_32bit(asd_ha, lseq, MODECTL);
	PRINT_LREG_32bit(asd_ha, lseq, DBGMODE);
	PRINT_LREG_32bit(asd_ha, lseq, CONTROL);
	PRINT_REG_32bit(asd_ha, BISTCTL0, LmBISTCTL0(lseq));
	PRINT_REG_32bit(asd_ha, BISTCTL1, LmBISTCTL1(lseq));

	asd_printk("LSEQ%d: CIO REGISTERS\n", lseq);
	asd_printk("Mode common:\n");

	for (mode = 0; mode < 8; mode++) {
		u32 lseq_cio_addr = LmSEQ_PHY_BASE(mode, lseq);
		int i;

		for (i = 0; LSEQmCIOREGS[i].name; i++)
			if (LSEQmCIOREGS[i].mode == MODE_COMMON)
				asd_print_lseq_cio_reg(asd_ha,lseq_cio_addr,i);
	}

	asd_printk("Mode unique:\n");
	for (mode = 0; mode < 8; mode++) {
		u32 lseq_cio_addr = LmSEQ_PHY_BASE(mode, lseq);
		int i;

		asd_printk("Mode %d\n", mode);
		for  (i = 0; LSEQmCIOREGS[i].name; i++) {
			if (!(LSEQmCIOREGS[i].mode & (1 << mode)))
				continue;
			asd_print_lseq_cio_reg(asd_ha, lseq_cio_addr, i);
		}
	}

	asd_printk("SCRATCH MEMORY\n");

	asd_printk("LSEQ%d MIP 0 >>>>\n", lseq);
	PRINT_LMIP_word(asd_ha, lseq, Q_TGTXFR_HEAD);
	PRINT_LMIP_word(asd_ha, lseq, Q_TGTXFR_TAIL);
	PRINT_LMIP_byte(asd_ha, lseq, LINK_NUMBER);
	PRINT_LMIP_byte(asd_ha, lseq, SCRATCH_FLAGS);
	PRINT_LMIP_dword(asd_ha, lseq, CONNECTION_STATE);
	PRINT_LMIP_word(asd_ha, lseq, CONCTL);
	PRINT_LMIP_byte(asd_ha, lseq, CONSTAT);
	PRINT_LMIP_byte(asd_ha, lseq, CONNECTION_MODES);
	PRINT_LMIP_word(asd_ha, lseq, REG1_ISR);
	PRINT_LMIP_word(asd_ha, lseq, REG2_ISR);
	PRINT_LMIP_word(asd_ha, lseq, REG3_ISR);
	PRINT_LMIP_qword(asd_ha, lseq,REG0_ISR);

	asd_printk("LSEQ%d MIP 1 >>>>\n", lseq);
	PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR0);
	PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR1);
	PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR2);
	PRINT_LMIP_word(asd_ha, lseq, EST_NEXUS_SCBPTR3);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE0);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE1);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE2);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_OPCODE3);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_HEAD);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_SCB_TAIL);
	PRINT_LMIP_byte(asd_ha, lseq, EST_NEXUS_BUF_AVAIL);
	PRINT_LMIP_dword(asd_ha, lseq, TIMEOUT_CONST);
	PRINT_LMIP_word(asd_ha, lseq, ISR_SAVE_SINDEX);
	PRINT_LMIP_word(asd_ha, lseq, ISR_SAVE_DINDEX);

	asd_printk("LSEQ%d MIP 2 >>>>\n", lseq);
	PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR0);
	PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR1);
	PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR2);
	PRINT_LMIP_word(asd_ha, lseq, EMPTY_SCB_PTR3);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD0);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD1);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD2);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_OPCD3);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_HEAD);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_SCB_TAIL);
	PRINT_LMIP_byte(asd_ha, lseq, EMPTY_BUFS_AVAIL);

	asd_printk("LSEQ%d MIP 3 >>>>\n", lseq);
	PRINT_LMIP_dword(asd_ha, lseq, DEV_PRES_TMR_TOUT_CONST);
	PRINT_LMIP_dword(asd_ha, lseq, SATA_INTERLOCK_TIMEOUT);
	PRINT_LMIP_dword(asd_ha, lseq, SRST_ASSERT_TIMEOUT);
	PRINT_LMIP_dword(asd_ha, lseq, RCV_FIS_TIMEOUT);
	PRINT_LMIP_dword(asd_ha, lseq, ONE_MILLISEC_TIMEOUT);
	PRINT_LMIP_dword(asd_ha, lseq, TEN_MS_COMINIT_TIMEOUT);
	PRINT_LMIP_dword(asd_ha, lseq, SMP_RCV_TIMEOUT);

	for (mode = 0; mode < 3; mode++) {
		asd_printk("LSEQ%d MDP 0 MODE %d >>>>\n", lseq, mode);
		moffs = mode * LSEQ_MODE_SCRATCH_SIZE;

		asd_printk(STR_16BIT, "RET_ADDR", 0,
			   asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR(lseq)
					     + moffs));
		asd_printk(STR_16BIT, "REG0_MODE", 2,
			   asd_read_reg_word(asd_ha, LmSEQ_REG0_MODE(lseq)
					     + moffs));
		asd_printk(STR_16BIT, "MODE_FLAGS", 4,
			   asd_read_reg_word(asd_ha, LmSEQ_MODE_FLAGS(lseq)
					     + moffs));
		asd_printk(STR_16BIT, "RET_ADDR2", 0x6,
			   asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR2(lseq)
					     + moffs));
		asd_printk(STR_16BIT, "RET_ADDR1", 0x8,
			   asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR1(lseq)
					     + moffs));
		asd_printk(STR_8BIT, "OPCODE_TO_CSEQ", 0xB,
			   asd_read_reg_byte(asd_ha, LmSEQ_OPCODE_TO_CSEQ(lseq)
					     + moffs));
		asd_printk(STR_16BIT, "DATA_TO_CSEQ", 0xC,
			   asd_read_reg_word(asd_ha, LmSEQ_DATA_TO_CSEQ(lseq)
					     + moffs));
	}

	asd_printk("LSEQ%d MDP 0 MODE 5 >>>>\n", lseq);
	moffs = LSEQ_MODE5_PAGE0_OFFSET;
	asd_printk(STR_16BIT, "RET_ADDR", 0,
		   asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR(lseq) + moffs));
	asd_printk(STR_16BIT, "REG0_MODE", 2,
		   asd_read_reg_word(asd_ha, LmSEQ_REG0_MODE(lseq) + moffs));
	asd_printk(STR_16BIT, "MODE_FLAGS", 4,
		   asd_read_reg_word(asd_ha, LmSEQ_MODE_FLAGS(lseq) + moffs));
	asd_printk(STR_16BIT, "RET_ADDR2", 0x6,
		   asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR2(lseq) + moffs));
	asd_printk(STR_16BIT, "RET_ADDR1", 0x8,
		   asd_read_reg_word(asd_ha, LmSEQ_RET_ADDR1(lseq) + moffs));
	asd_printk(STR_8BIT, "OPCODE_TO_CSEQ", 0xB,
	   asd_read_reg_byte(asd_ha, LmSEQ_OPCODE_TO_CSEQ(lseq) + moffs));
	asd_printk(STR_16BIT, "DATA_TO_CSEQ", 0xC,
	   asd_read_reg_word(asd_ha, LmSEQ_DATA_TO_CSEQ(lseq) + moffs));

	asd_printk("LSEQ%d MDP 0 MODE 0 >>>>\n", lseq);
	PRINT_LMIP_word(asd_ha, lseq, FIRST_INV_DDB_SITE);
	PRINT_LMIP_word(asd_ha, lseq, EMPTY_TRANS_CTX);
	PRINT_LMIP_word(asd_ha, lseq, RESP_LEN);
	PRINT_LMIP_word(asd_ha, lseq, FIRST_INV_SCB_SITE);
	PRINT_LMIP_dword(asd_ha, lseq, INTEN_SAVE);
	PRINT_LMIP_byte(asd_ha, lseq, LINK_RST_FRM_LEN);
	PRINT_LMIP_byte(asd_ha, lseq, LINK_RST_PROTOCOL);
	PRINT_LMIP_byte(asd_ha, lseq, RESP_STATUS);
	PRINT_LMIP_byte(asd_ha, lseq, LAST_LOADED_SGE);
	PRINT_LMIP_byte(asd_ha, lseq, SAVE_SCBPTR);

	asd_printk("LSEQ%d MDP 0 MODE 1 >>>>\n", lseq);
	PRINT_LMIP_word(asd_ha, lseq, Q_XMIT_HEAD);
	PRINT_LMIP_word(asd_ha, lseq, M1_EMPTY_TRANS_CTX);
	PRINT_LMIP_word(asd_ha, lseq, INI_CONN_TAG);
	PRINT_LMIP_byte(asd_ha, lseq, FAILED_OPEN_STATUS);
	PRINT_LMIP_byte(asd_ha, lseq, XMIT_REQUEST_TYPE);
	PRINT_LMIP_byte(asd_ha, lseq, M1_RESP_STATUS);
	PRINT_LMIP_byte(asd_ha, lseq, M1_LAST_LOADED_SGE);
	PRINT_LMIP_word(asd_ha, lseq, M1_SAVE_SCBPTR);

	asd_printk("LSEQ%d MDP 0 MODE 2 >>>>\n", lseq);
	PRINT_LMIP_word(asd_ha, lseq, PORT_COUNTER);
	PRINT_LMIP_word(asd_ha, lseq, PM_TABLE_PTR);
	PRINT_LMIP_word(asd_ha, lseq, SATA_INTERLOCK_TMR_SAVE);
	PRINT_LMIP_word(asd_ha, lseq, IP_BITL);
	PRINT_LMIP_word(asd_ha, lseq, COPY_SMP_CONN_TAG);
	PRINT_LMIP_byte(asd_ha, lseq, P0M2_OFFS1AH);

	asd_printk("LSEQ%d MDP 0 MODE 4/5 >>>>\n", lseq);
	PRINT_LMIP_byte(asd_ha, lseq, SAVED_OOB_STATUS);
	PRINT_LMIP_byte(asd_ha, lseq, SAVED_OOB_MODE);
	PRINT_LMIP_word(asd_ha, lseq, Q_LINK_HEAD);
	PRINT_LMIP_byte(asd_ha, lseq, LINK_RST_ERR);
	PRINT_LMIP_byte(asd_ha, lseq, SAVED_OOB_SIGNALS);
	PRINT_LMIP_byte(asd_ha, lseq, SAS_RESET_MODE);
	PRINT_LMIP_byte(asd_ha, lseq, LINK_RESET_RETRY_COUNT);
	PRINT_LMIP_byte(asd_ha, lseq, NUM_LINK_RESET_RETRIES);
	PRINT_LMIP_word(asd_ha, lseq, OOB_INT_ENABLES);
	PRINT_LMIP_word(asd_ha, lseq, NOTIFY_TIMER_TIMEOUT);
	PRINT_LMIP_word(asd_ha, lseq, NOTIFY_TIMER_DOWN_COUNT);

	asd_printk("LSEQ%d MDP 1 MODE 0 >>>>\n", lseq);
	PRINT_LMIP_qword(asd_ha, lseq, SG_LIST_PTR_ADDR0);
	PRINT_LMIP_qword(asd_ha, lseq, SG_LIST_PTR_ADDR1);

	asd_printk("LSEQ%d MDP 1 MODE 1 >>>>\n", lseq);
	PRINT_LMIP_qword(asd_ha, lseq, M1_SG_LIST_PTR_ADDR0);
	PRINT_LMIP_qword(asd_ha, lseq, M1_SG_LIST_PTR_ADDR1);

	asd_printk("LSEQ%d MDP 1 MODE 2 >>>>\n", lseq);
	PRINT_LMIP_dword(asd_ha, lseq, INVALID_DWORD_COUNT);
	PRINT_LMIP_dword(asd_ha, lseq, DISPARITY_ERROR_COUNT);
	PRINT_LMIP_dword(asd_ha, lseq, LOSS_OF_SYNC_COUNT);

	asd_printk("LSEQ%d MDP 1 MODE 4/5 >>>>\n", lseq);
	PRINT_LMIP_dword(asd_ha, lseq, FRAME_TYPE_MASK);
	PRINT_LMIP_dword(asd_ha, lseq, HASHED_SRC_ADDR_MASK_PRINT);
	PRINT_LMIP_byte(asd_ha, lseq, NUM_FILL_BYTES_MASK);
	PRINT_LMIP_word(asd_ha, lseq, TAG_MASK);
	PRINT_LMIP_word(asd_ha, lseq, TARGET_PORT_XFER_TAG);
	PRINT_LMIP_dword(asd_ha, lseq, DATA_OFFSET);

	asd_printk("LSEQ%d MDP 2 MODE 0 >>>>\n", lseq);
	PRINT_LMIP_dword(asd_ha, lseq, SMP_RCV_TIMER_TERM_TS);
	PRINT_LMIP_byte(asd_ha, lseq, DEVICE_BITS);
	PRINT_LMIP_word(asd_ha, lseq, SDB_DDB);
	PRINT_LMIP_word(asd_ha, lseq, SDB_NUM_TAGS);
	PRINT_LMIP_word(asd_ha, lseq, SDB_CURR_TAG);

	asd_printk("LSEQ%d MDP 2 MODE 1 >>>>\n", lseq);
	PRINT_LMIP_qword(asd_ha, lseq, TX_ID_ADDR_FRAME);
	PRINT_LMIP_dword(asd_ha, lseq, OPEN_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, SRST_AS_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, LAST_LOADED_SG_EL);

	asd_printk("LSEQ%d MDP 2 MODE 2 >>>>\n", lseq);
	PRINT_LMIP_dword(asd_ha, lseq, CLOSE_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, BREAK_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, DWS_RESET_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, SATA_INTERLOCK_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, MCTL_TIMER_TERM_TS);

	asd_printk("LSEQ%d MDP 2 MODE 4/5 >>>>\n", lseq);
	PRINT_LMIP_dword(asd_ha, lseq, COMINIT_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, RCV_ID_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, RCV_FIS_TIMER_TERM_TS);
	PRINT_LMIP_dword(asd_ha, lseq, DEV_PRES_TIMER_TERM_TS);
}