| /* bnx2x_self_test.h: Broadcom Everest network driver. |
| * |
| * Copyright (c) 2007-2009 Broadcom Corporation |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation. |
| * |
| * Maintained by: Eilon Greenstein <eilong@broadcom.com> |
| * Written by: Yitchak Gertner <gertner@broadcom.com> |
| */ |
| |
| /* self test */ |
| |
| static int idle_chk_errors; |
| static int idle_chk_warnings; |
| |
| |
| #define IDLE_CHK_E1 0x1 |
| #define IDLE_CHK_E1H 0x2 |
| |
| #define IDLE_CHK_ERROR 1 |
| #define IDLE_CHK_ERROR_NO_TRAFFIC 2 |
| #define IDLE_CHK_WARNING 3 |
| |
| |
| #define CHIP_MASK_CHK(chip_mask) \ |
| (((((chip_mask) & IDLE_CHK_E1) && is_e1) || \ |
| (((chip_mask) & IDLE_CHK_E1H) && is_e1h)) ? 1 : 0) |
| |
| #define CONDITION_CHK(condition, severity, fail_msg, arg_list...) \ |
| do { \ |
| if (condition) { \ |
| switch (severity) { \ |
| case IDLE_CHK_ERROR: \ |
| BNX2X_DBG_ERR("ERROR " fail_msg, ##arg_list); \ |
| idle_chk_errors++; \ |
| break; \ |
| case IDLE_CHK_ERROR_NO_TRAFFIC: \ |
| BNX2X_DBG_ERR("INFO " fail_msg, ##arg_list); \ |
| break; \ |
| case IDLE_CHK_WARNING: \ |
| BNX2X_DBG_ERR("WARNING " fail_msg, \ |
| ##arg_list); \ |
| idle_chk_warnings++; \ |
| break; \ |
| } \ |
| } \ |
| } while (0); |
| |
| |
| static void bnx2x_idle_chk6(struct bnx2x *bp, u32 chip_mask, u32 offset, |
| int loop, int inc, int severity) |
| { |
| int is_e1 = CHIP_IS_E1(bp); |
| int is_e1h = CHIP_IS_E1H(bp); |
| int i; |
| u32 val1, val2; |
| u32 rd_ptr, wr_ptr, rd_bank, wr_bank; |
| |
| if (!CHIP_MASK_CHK(chip_mask)) |
| return; |
| |
| for (i = 0; i < loop; i++) { |
| val1 = REG_RD(bp, offset + i*inc); |
| val2 = REG_RD(bp, offset + i*inc + 4); |
| rd_ptr = ((val1 & 0x3FFFFFC0) >> 6); |
| wr_ptr = ((((val1 & 0xC0000000) >> 30) & 0x3) | |
| ((val2 & 0x3FFFFF) << 2)); |
| CONDITION_CHK((rd_ptr != wr_ptr), severity, |
| "QM: PTRTBL entry %d - rd_ptr is not" |
| " equal to wr_ptr. Values are 0x%x 0x%x\n", |
| i, rd_ptr, wr_ptr); |
| rd_bank = ((val1 & 0x30) >> 4); |
| wr_bank = (val1 & 0x03); |
| CONDITION_CHK((rd_bank != wr_bank), severity, |
| "QM: PTRTBL entry %d - rd_bank is not" |
| " equal to wr_bank. Values are 0x%x 0x%x\n", |
| i, rd_bank, wr_bank); |
| } |
| } |
| |
| static int bnx2x_idle_chk(struct bnx2x *bp) |
| { |
| |
| /* read one reg and check the condition */ |
| #define IDLE_CHK_1(chip_mask, offset, condition, severity, fail_msg) \ |
| do { \ |
| if (CHIP_MASK_CHK(chip_mask)) { \ |
| val = REG_RD(bp, offset); \ |
| CONDITION_CHK(condition, severity, \ |
| fail_msg ". Value is 0x%x\n", val); \ |
| } \ |
| } while (0); |
| |
| /* loop to read one reg and check the condition */ |
| #define IDLE_CHK_2(chip_mask, offset, loop, inc, condition, severity, \ |
| fail_msg) \ |
| do { \ |
| if (CHIP_MASK_CHK(chip_mask)) \ |
| for (i = 0; i < (loop); i++) { \ |
| val = REG_RD(bp, offset + i*(inc)); \ |
| CONDITION_CHK(condition, severity, \ |
| fail_msg ". Value is 0x%x\n", \ |
| i, val); \ |
| } \ |
| } while (0); |
| |
| /* read two regs and check the condition */ |
| #define IDLE_CHK_3(chip_mask, offset1, offset2, condition, severity, \ |
| fail_msg) \ |
| do { \ |
| if (CHIP_MASK_CHK(chip_mask)) { \ |
| val1 = REG_RD(bp, offset1); \ |
| val2 = REG_RD(bp, offset2); \ |
| CONDITION_CHK(condition, severity, \ |
| fail_msg ". Values are 0x%x 0x%x\n", \ |
| val1, val2); \ |
| } \ |
| } while (0); |
| |
| /* loop to read two regs and check the condition */ |
| #define IDLE_CHK_4(chip_mask, offset1, offset2, loop, inc, condition, \ |
| severity, fail_msg) \ |
| do { \ |
| if (CHIP_MASK_CHK(chip_mask)) \ |
| for (i = 0; i < (loop); i++) { \ |
| val1 = REG_RD(bp, offset1 + i*(inc)); \ |
| val2 = (REG_RD(bp, offset2 + i*(inc)) >> 1); \ |
| CONDITION_CHK(condition, severity, fail_msg \ |
| " - LCID %d CID_CAM 0x%x" \ |
| " Value is 0x%x\n", \ |
| i, val2, val1); \ |
| } \ |
| } while (0); |
| |
| /* read one reg and check according to another reg */ |
| #define IDLE_CHK_5(chip_mask, offset, offset1, offset2, condition, severity, \ |
| fail_msg) \ |
| do { \ |
| if (CHIP_MASK_CHK(chip_mask)) \ |
| if (!REG_RD(bp, offset)) \ |
| IDLE_CHK_3(chip_mask, offset1, offset2, \ |
| condition, severity, fail_msg); \ |
| } while (0); |
| |
| /* read wide-bus reg and check sub-fields */ |
| #define IDLE_CHK_6(chip_mask, offset, loop, inc, severity) \ |
| bnx2x_idle_chk6(bp, chip_mask, offset, loop, inc, severity) |
| |
| /* loop to read wide-bus reg and check according to another reg */ |
| #define IDLE_CHK_7(chip_mask, offset, offset1, offset2, loop, inc, condition, \ |
| severity, fail_msg) \ |
| do { \ |
| if (CHIP_MASK_CHK(chip_mask)) \ |
| for (i = 0; i < (loop); i++) { \ |
| if (REG_RD(bp, offset + i*4) == 1) { \ |
| val1 = REG_RD(bp, offset1 + i*(inc)); \ |
| val1 = REG_RD(bp, offset1 + i*(inc) + \ |
| 4); \ |
| val1 = ((REG_RD(bp, offset1 + i*(inc) \ |
| + 8) & 0x00000078) >> 3); \ |
| val2 = (REG_RD(bp, offset2 + i*4)>>1); \ |
| CONDITION_CHK(condition, severity, \ |
| fail_msg " - LCID %d " \ |
| "CID_CAM 0x%x" \ |
| " Value is 0x%x\n", \ |
| i, val2, val1); \ |
| } \ |
| } \ |
| } while (0); |
| |
| |
| int is_e1 = CHIP_IS_E1(bp); |
| int is_e1h = CHIP_IS_E1H(bp); |
| int i; |
| u32 val, val1, val2; |
| |
| idle_chk_errors = 0; |
| idle_chk_warnings = 0; |
| |
| if (!netif_running(bp->dev)) |
| return idle_chk_errors; |
| |
| IDLE_CHK_1(0x7, 0x2114, ((val & 0x0ff010) != 0), IDLE_CHK_ERROR, |
| "PCIE: ucorr_err_status is not 0"); |
| IDLE_CHK_1(0x7, 0x2114, ((val & 0x100000) != 0), IDLE_CHK_WARNING, |
| "PCIE: ucorr_err_status - Unsupported request error"); |
| IDLE_CHK_1(0x7, 0x2120, |
| (((val & 0x31c1) != 0x2000) && ((val & 0x31c1) != 0)), |
| IDLE_CHK_WARNING, "PCIE: corr_err_status is not 0x2000"); |
| IDLE_CHK_1(0x7, 0x2814, ((val & ~0x40100) != 0), IDLE_CHK_ERROR, |
| "PCIE: attentions register is not 0x40100"); |
| IDLE_CHK_1(0x6, 0x281c, ((val & ~0x40040100) != 0), IDLE_CHK_ERROR, |
| "PCIE: attentions register is not 0x40040100"); |
| IDLE_CHK_1(0x6, 0x2820, ((val & ~0x40040100) != 0), IDLE_CHK_ERROR, |
| "PCIE: attentions register is not 0x40040100"); |
| IDLE_CHK_1(0x3, PXP2_REG_PGL_EXP_ROM2, (val != 0xffffffff), |
| IDLE_CHK_WARNING, |
| "PXP2: There are outstanding read requests. Not all" |
| " completions have arrived for read requests on tags that" |
| " are marked with 0"); |
| IDLE_CHK_2(0x7, 0x212c, 4, 4, ((val != 0) && (idle_chk_errors > 0)), |
| IDLE_CHK_WARNING, "PCIE: error packet header %d is not 0"); |
| |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ0_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ0 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ1_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ1 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ2_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ2 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ3_ENTRY_CNT, (val > 2), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ3 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ4_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ4 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ5_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ5 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ6_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ6 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ7_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ7 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ8_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ8 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ9_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ9 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ10_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ10 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ11_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ11 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ12_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ12 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ13_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ13 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ14_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ14 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ15_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ15 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ16_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ16 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ17_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ17 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ18_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ18 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ19_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ19 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ20_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ20 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ21_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ21 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ22_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ22 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ23_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ23 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ24_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ24 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ25_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ25 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ26_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ26 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ27_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ27 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ28_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ28 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ29_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ29 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ30_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ30 is not empty"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_VQ31_ENTRY_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PXP2: VQ31 is not empty"); |
| |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_UFIFO_NUM_OF_ENTRY, (val != 0), |
| IDLE_CHK_ERROR, "PXP2: rq_ufifo_num_of_entry is not 0"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_RBC_DONE, (val != 1), IDLE_CHK_ERROR, |
| "PXP2: rq_rbc_done is not 1"); |
| IDLE_CHK_1(0x7, PXP2_REG_RQ_CFG_DONE, (val != 1), IDLE_CHK_ERROR, |
| "PXP2: rq_cfg_done is not 1"); |
| IDLE_CHK_1(0x7, PXP2_REG_PSWRQ_BW_CREDIT, (val != 0x1b), |
| IDLE_CHK_ERROR, |
| "PXP2: rq_read_credit and rq_write_credit are not 3"); |
| IDLE_CHK_1(0x7, PXP2_REG_RD_START_INIT, (val != 1), IDLE_CHK_ERROR, |
| "PXP2: rd_start_init is not 1"); |
| IDLE_CHK_1(0x7, PXP2_REG_RD_INIT_DONE, (val != 1), IDLE_CHK_ERROR, |
| "PXP2: rd_init_done is not 1"); |
| |
| IDLE_CHK_3(0x7, PXP2_REG_RD_SR_CNT, PXP2_REG_RD_SR_NUM_CFG, |
| (val1 != (val2-1)), IDLE_CHK_WARNING, |
| "PXP2: rd_sr_cnt is not equal to rd_sr_num_cfg"); |
| IDLE_CHK_3(0x7, PXP2_REG_RD_BLK_CNT, PXP2_REG_RD_BLK_NUM_CFG, |
| (val1 != val2), IDLE_CHK_WARNING, |
| "PXP2: rd_blk_cnt is not equal to rd_blk_num_cfg"); |
| |
| IDLE_CHK_3(0x7, PXP2_REG_RD_SR_CNT, PXP2_REG_RD_SR_NUM_CFG, |
| (val1 < (val2-3)), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: There are more than two unused SRs"); |
| IDLE_CHK_3(0x7, PXP2_REG_RD_BLK_CNT, PXP2_REG_RD_BLK_NUM_CFG, |
| (val1 < (val2-2)), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: There are more than two unused blocks"); |
| |
| IDLE_CHK_1(0x7, PXP2_REG_RD_PORT_IS_IDLE_0, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: P0 All delivery ports are not idle"); |
| IDLE_CHK_1(0x7, PXP2_REG_RD_PORT_IS_IDLE_1, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: P1 All delivery ports are not idle"); |
| |
| IDLE_CHK_2(0x7, PXP2_REG_RD_ALMOST_FULL_0, 11, 4, (val != 0), |
| IDLE_CHK_ERROR, "PXP2: rd_almost_full_%d is not 0"); |
| |
| IDLE_CHK_1(0x7, PXP2_REG_RD_DISABLE_INPUTS, (val != 0), |
| IDLE_CHK_ERROR, "PXP2: PSWRD inputs are disabled"); |
| IDLE_CHK_1(0x7, PXP2_REG_HST_HEADER_FIFO_STATUS, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: HST header FIFO status is not 0"); |
| IDLE_CHK_1(0x7, PXP2_REG_HST_DATA_FIFO_STATUS, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: HST data FIFO status is not 0"); |
| IDLE_CHK_1(0x7, PXP2_REG_PGL_WRITE_BLOCKED, (val != 0), |
| IDLE_CHK_ERROR, "PXP2: pgl_write_blocked is not 0"); |
| IDLE_CHK_1(0x7, PXP2_REG_PGL_READ_BLOCKED, (val != 0), IDLE_CHK_ERROR, |
| "PXP2: pgl_read_blocked is not 0"); |
| IDLE_CHK_1(0x7, PXP2_REG_PGL_TXW_CDTS, (((val >> 17) & 1) != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PXP2: There is data which is ready"); |
| |
| IDLE_CHK_1(0x7, PXP_REG_HST_ARB_IS_IDLE, (val != 1), IDLE_CHK_WARNING, |
| "PXP: HST arbiter is not idle"); |
| IDLE_CHK_1(0x7, PXP_REG_HST_CLIENTS_WAITING_TO_ARB, (val != 0), |
| IDLE_CHK_WARNING, |
| "PXP: HST one of the clients is waiting for delivery"); |
| IDLE_CHK_1(0x6, PXP_REG_HST_DISCARD_INTERNAL_WRITES_STATUS, |
| (val != 0), IDLE_CHK_WARNING, |
| "PXP: HST Close the gates: Discarding internal writes"); |
| IDLE_CHK_1(0x6, PXP_REG_HST_DISCARD_DOORBELLS_STATUS, (val != 0), |
| IDLE_CHK_WARNING, |
| "PXP: HST Close the gates: Discarding doorbells"); |
| |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C0, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 0 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C1, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 1 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C2, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 2 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C3, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 3 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C4, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 4 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C5, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 5 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C6, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 6 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C7, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 7 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C8, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 8 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C9, (val != 0), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DMAE: command 9 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C10, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 10 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C11, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 11 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C12, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 12 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C13, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 13 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C14, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 14 go is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_GO_C15, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DMAE: command 15 go is not 0"); |
| |
| IDLE_CHK_1(0x7, CFC_REG_ERROR_VECTOR, (val != 0), IDLE_CHK_ERROR, |
| "CFC: error vector is not 0"); |
| IDLE_CHK_1(0x7, CFC_REG_NUM_LCIDS_ARRIVING, (val != 0), |
| IDLE_CHK_ERROR, "CFC: number of arriving LCIDs is not 0"); |
| IDLE_CHK_1(0x7, CFC_REG_NUM_LCIDS_ALLOC, (val != 0), IDLE_CHK_ERROR, |
| "CFC: number of alloc LCIDs is not 0"); |
| IDLE_CHK_1(0x7, CFC_REG_NUM_LCIDS_LEAVING, (val != 0), IDLE_CHK_ERROR, |
| "CFC: number of leaving LCIDs is not 0"); |
| |
| IDLE_CHK_4(0x7, CFC_REG_ACTIVITY_COUNTER, CFC_REG_CID_CAM, |
| (CFC_REG_ACTIVITY_COUNTER_SIZE >> 2), 4, (val1 > 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "CFC: AC > 1"); |
| IDLE_CHK_7(0x7, CFC_REG_ACTIVITY_COUNTER, CFC_REG_INFO_RAM, |
| CFC_REG_CID_CAM, (CFC_REG_INFO_RAM_SIZE >> 4), 16, |
| (val1 == 3), IDLE_CHK_WARNING, |
| "CFC: AC is 1, connType is 3"); |
| IDLE_CHK_7(0x7, CFC_REG_ACTIVITY_COUNTER, CFC_REG_INFO_RAM, |
| CFC_REG_CID_CAM, (CFC_REG_INFO_RAM_SIZE >> 4), 16, |
| ((val1 != 0) && (val1 != 3)), IDLE_CHK_ERROR, |
| "CFC: AC is 1, connType is not 0 nor 3"); |
| |
| IDLE_CHK_2(0x7, QM_REG_QTASKCTR_0, 64, 4, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "QM: Q_%d, queue is not empty"); |
| |
| IDLE_CHK_3(0x7, QM_REG_VOQCREDIT_0, QM_REG_VOQINITCREDIT_0, |
| (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "QM: VOQ_0, VOQ credit is not equal to initial credit"); |
| IDLE_CHK_3(0x7, QM_REG_VOQCREDIT_1, QM_REG_VOQINITCREDIT_1, |
| (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "QM: VOQ_1, VOQ credit is not equal to initial credit"); |
| IDLE_CHK_3(0x7, QM_REG_VOQCREDIT_4, QM_REG_VOQINITCREDIT_4, |
| (val1 != val2), IDLE_CHK_ERROR, |
| "QM: VOQ_4, VOQ credit is not equal to initial credit"); |
| |
| IDLE_CHK_3(0x3, QM_REG_PORT0BYTECRD, QM_REG_BYTECRDINITVAL, |
| (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "QM: P0 Byte credit is not equal to initial credit"); |
| IDLE_CHK_3(0x3, QM_REG_PORT1BYTECRD, QM_REG_BYTECRDINITVAL, |
| (val1 != val2), IDLE_CHK_ERROR_NO_TRAFFIC, |
| "QM: P1 Byte credit is not equal to initial credit"); |
| |
| IDLE_CHK_1(0x7, CCM_REG_CAM_OCCUP, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "CCM: XX protection CAM is not empty"); |
| IDLE_CHK_1(0x7, TCM_REG_CAM_OCCUP, (val != 0), IDLE_CHK_ERROR, |
| "TCM: XX protection CAM is not empty"); |
| IDLE_CHK_1(0x7, UCM_REG_CAM_OCCUP, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "UCM: XX protection CAM is not empty"); |
| IDLE_CHK_1(0x7, XCM_REG_CAM_OCCUP, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XCM: XX protection CAM is not empty"); |
| |
| IDLE_CHK_1(0x7, BRB1_REG_NUM_OF_FULL_BLOCKS, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "BRB1: BRB is not empty"); |
| |
| IDLE_CHK_1(0x7, CSEM_REG_SLEEP_THREADS_VALID, (val != 0), |
| IDLE_CHK_ERROR, "CSEM: There are sleeping threads"); |
| IDLE_CHK_1(0x7, TSEM_REG_SLEEP_THREADS_VALID, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSEM: There are sleeping threads"); |
| IDLE_CHK_1(0x7, USEM_REG_SLEEP_THREADS_VALID, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USEM: There are sleeping threads"); |
| IDLE_CHK_1(0x7, XSEM_REG_SLEEP_THREADS_VALID, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSEM: There are sleeping threads"); |
| |
| IDLE_CHK_1(0x7, CSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), |
| IDLE_CHK_ERROR, "CSEM: External store FIFO is not empty"); |
| IDLE_CHK_1(0x7, TSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSEM: External store FIFO is not empty"); |
| IDLE_CHK_1(0x7, USEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USEM: External store FIFO is not empty"); |
| IDLE_CHK_1(0x7, XSEM_REG_SLOW_EXT_STORE_EMPTY, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSEM: External store FIFO is not empty"); |
| |
| IDLE_CHK_1(0x7, CSDM_REG_SYNC_PARSER_EMPTY, (val != 1), |
| IDLE_CHK_ERROR, "CSDM: Parser serial FIFO is not empty"); |
| IDLE_CHK_1(0x7, TSDM_REG_SYNC_PARSER_EMPTY, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSDM: Parser serial FIFO is not empty"); |
| IDLE_CHK_1(0x7, USDM_REG_SYNC_PARSER_EMPTY, (val != 1), |
| IDLE_CHK_ERROR, "USDM: Parser serial FIFO is not empty"); |
| IDLE_CHK_1(0x7, XSDM_REG_SYNC_PARSER_EMPTY, (val != 1), |
| IDLE_CHK_ERROR, "XSDM: Parser serial FIFO is not empty"); |
| |
| IDLE_CHK_1(0x7, CSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, |
| "CSDM: Parser SYNC serial FIFO is not empty"); |
| IDLE_CHK_1(0x7, TSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, |
| "TSDM: Parser SYNC serial FIFO is not empty"); |
| IDLE_CHK_1(0x7, USDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, |
| "USDM: Parser SYNC serial FIFO is not empty"); |
| IDLE_CHK_1(0x7, XSDM_REG_SYNC_SYNC_EMPTY, (val != 1), IDLE_CHK_ERROR, |
| "XSDM: Parser SYNC serial FIFO is not empty"); |
| |
| IDLE_CHK_1(0x7, CSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), |
| IDLE_CHK_ERROR, |
| "CSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" |
| " block"); |
| IDLE_CHK_1(0x7, TSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), |
| IDLE_CHK_ERROR, |
| "TSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" |
| " block"); |
| IDLE_CHK_1(0x7, USDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" |
| " block"); |
| IDLE_CHK_1(0x7, XSDM_REG_RSP_PXP_CTRL_RDATA_EMPTY, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSDM: pxp_ctrl rd_data fifo is not empty in sdm_dma_rsp" |
| " block"); |
| |
| IDLE_CHK_1(0x7, DORQ_REG_DQ_FILL_LVLF, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "DQ: DORQ queue is not empty"); |
| |
| IDLE_CHK_1(0x7, CFC_REG_CFC_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "CFC: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, CDU_REG_CDU_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "CDU: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, CCM_REG_CCM_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, TCM_REG_TCM_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, UCM_REG_UCM_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, XCM_REG_XCM_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, PBF_REG_PBF_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "PBF: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, TM_REG_TM_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "TIMERS: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, DORQ_REG_DORQ_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "DQ: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, SRC_REG_SRC_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "SRCH: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_PRS_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "PRS: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, BRB1_REG_BRB1_INT_STS, ((val & ~0xfc00) != 0), |
| IDLE_CHK_ERROR, "BRB1: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, GRCBASE_XPB + PB_REG_PB_INT_STS, (val != 0), |
| IDLE_CHK_ERROR, "XPB: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, GRCBASE_UPB + PB_REG_PB_INT_STS, (val != 0), |
| IDLE_CHK_ERROR, "UPB: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, PXP2_REG_PXP2_INT_STS_0, (val != 0), IDLE_CHK_WARNING, |
| "PXP2: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x6, PXP2_REG_PXP2_INT_STS_1, (val != 0), IDLE_CHK_WARNING, |
| "PXP2: interrupt status 1 is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_QM_INT_STS, (val != 0), IDLE_CHK_ERROR, |
| "QM: interrupt status is not 0"); |
| IDLE_CHK_1(0x7, PXP_REG_PXP_INT_STS_0, (val != 0), IDLE_CHK_ERROR, |
| "PXP: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, PXP_REG_PXP_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "PXP: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, DORQ_REG_RSPA_CRD_CNT, (val != 2), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "DQ: Credit to XCM is not full"); |
| IDLE_CHK_1(0x7, DORQ_REG_RSPB_CRD_CNT, (val != 2), IDLE_CHK_ERROR, |
| "DQ: Credit to UCM is not full"); |
| |
| IDLE_CHK_1(0x3, QM_REG_VOQCRDERRREG, (val != 0), IDLE_CHK_ERROR, |
| "QM: Credit error register is not 0 (byte or credit" |
| " overflow/underflow)"); |
| IDLE_CHK_1(0x7, DORQ_REG_DQ_FULL_ST, (val != 0), IDLE_CHK_ERROR, |
| "DQ: DORQ queue is full"); |
| |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_1_FUNC_0, |
| ((val & ~0xcffc) != 0), IDLE_CHK_WARNING, |
| "AEU: P0 AFTER_INVERT_1 is not 0"); |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_2_FUNC_0, (val != 0), |
| IDLE_CHK_ERROR, "AEU: P0 AFTER_INVERT_2 is not 0"); |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_3_FUNC_0, |
| ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR, |
| "AEU: P0 AFTER_INVERT_3 is not 0"); |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_4_FUNC_0, |
| ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR, |
| "AEU: P0 AFTER_INVERT_4 is not 0"); |
| |
| IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_1_FUNC_1, |
| ((val & ~0xcffc) != 0), IDLE_CHK_WARNING, |
| "AEU: P1 AFTER_INVERT_1 is not 0"); |
| IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_2_FUNC_1, (val != 0), |
| IDLE_CHK_ERROR, "AEU: P1 AFTER_INVERT_2 is not 0"); |
| IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_3_FUNC_1, |
| ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR, |
| "AEU: P1 AFTER_INVERT_3 is not 0"); |
| IDLE_CHK_1(0x3, MISC_REG_AEU_AFTER_INVERT_4_FUNC_1, |
| ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR, |
| "AEU: P1 AFTER_INVERT_4 is not 0"); |
| |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_1_MCP, |
| ((val & ~0xcffc) != 0), IDLE_CHK_WARNING, |
| "AEU: MCP AFTER_INVERT_1 is not 0"); |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_2_MCP, (val != 0), |
| IDLE_CHK_ERROR, "AEU: MCP AFTER_INVERT_2 is not 0"); |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_3_MCP, |
| ((val & ~0xc21b0000) != 0), IDLE_CHK_ERROR, |
| "AEU: MCP AFTER_INVERT_3 is not 0"); |
| IDLE_CHK_1(0x7, MISC_REG_AEU_AFTER_INVERT_4_MCP, |
| ((val & ~0x801fffff) != 0), IDLE_CHK_ERROR, |
| "AEU: MCP AFTER_INVERT_4 is not 0"); |
| |
| IDLE_CHK_5(0x7, PBF_REG_DISABLE_NEW_TASK_PROC_P0, PBF_REG_P0_CREDIT, |
| PBF_REG_P0_INIT_CRD, (val1 != val2), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PBF: P0 credit is not equal to init_crd"); |
| IDLE_CHK_5(0x7, PBF_REG_DISABLE_NEW_TASK_PROC_P1, PBF_REG_P1_CREDIT, |
| PBF_REG_P1_INIT_CRD, (val1 != val2), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PBF: P1 credit is not equal to init_crd"); |
| IDLE_CHK_3(0x7, PBF_REG_P4_CREDIT, PBF_REG_P4_INIT_CRD, |
| (val1 != val2), IDLE_CHK_ERROR, |
| "PBF: P4 credit is not equal to init_crd"); |
| |
| IDLE_CHK_1(0x7, PBF_REG_P0_TASK_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PBF: P0 task_cnt is not 0"); |
| IDLE_CHK_1(0x7, PBF_REG_P1_TASK_CNT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "PBF: P1 task_cnt is not 0"); |
| IDLE_CHK_1(0x7, PBF_REG_P4_TASK_CNT, (val != 0), IDLE_CHK_ERROR, |
| "PBF: P4 task_cnt is not 0"); |
| |
| IDLE_CHK_1(0x7, XCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR, |
| "XCM: CFC_INIT_CRD is not 1"); |
| IDLE_CHK_1(0x7, UCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR, |
| "UCM: CFC_INIT_CRD is not 1"); |
| IDLE_CHK_1(0x7, TCM_REG_CFC_INIT_CRD, (val != 1), IDLE_CHK_ERROR, |
| "TCM: CFC_INIT_CRD is not 1"); |
| IDLE_CHK_1(0x7, CCM_REG_CFC_INIT_CRD, (val != 1), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: CFC_INIT_CRD is not 1"); |
| |
| IDLE_CHK_1(0x7, XCM_REG_XQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR, |
| "XCM: XQM_INIT_CRD is not 32"); |
| IDLE_CHK_1(0x7, UCM_REG_UQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR, |
| "UCM: UQM_INIT_CRD is not 32"); |
| IDLE_CHK_1(0x7, TCM_REG_TQM_INIT_CRD, (val != 32), IDLE_CHK_ERROR, |
| "TCM: TQM_INIT_CRD is not 32"); |
| IDLE_CHK_1(0x7, CCM_REG_CQM_INIT_CRD, (val != 32), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: CQM_INIT_CRD is not 32"); |
| |
| IDLE_CHK_1(0x7, XCM_REG_TM_INIT_CRD, (val != 4), IDLE_CHK_ERROR, |
| "XCM: TM_INIT_CRD is not 4"); |
| IDLE_CHK_1(0x7, UCM_REG_TM_INIT_CRD, (val != 4), IDLE_CHK_ERROR, |
| "UCM: TM_INIT_CRD is not 4"); |
| |
| IDLE_CHK_1(0x7, XCM_REG_FIC0_INIT_CRD, (val != 64), IDLE_CHK_WARNING, |
| "XCM: FIC0_INIT_CRD is not 64"); |
| IDLE_CHK_1(0x7, UCM_REG_FIC0_INIT_CRD, (val != 64), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "UCM: FIC0_INIT_CRD is not 64"); |
| IDLE_CHK_1(0x7, TCM_REG_FIC0_INIT_CRD, (val != 64), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "TCM: FIC0_INIT_CRD is not 64"); |
| IDLE_CHK_1(0x7, CCM_REG_FIC0_INIT_CRD, (val != 64), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "CCM: FIC0_INIT_CRD is not 64"); |
| |
| IDLE_CHK_1(0x7, XCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, |
| "XCM: FIC1_INIT_CRD is not 64"); |
| IDLE_CHK_1(0x7, UCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, |
| "UCM: FIC1_INIT_CRD is not 64"); |
| IDLE_CHK_1(0x7, TCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, |
| "TCM: FIC1_INIT_CRD is not 64"); |
| IDLE_CHK_1(0x7, CCM_REG_FIC1_INIT_CRD, (val != 64), IDLE_CHK_ERROR, |
| "CCM: FIC1_INIT_CRD is not 64"); |
| |
| IDLE_CHK_1(0x1, XCM_REG_XX_FREE, (val != 31), IDLE_CHK_ERROR, |
| "XCM: XX_FREE is not 31"); |
| IDLE_CHK_1(0x6, XCM_REG_XX_FREE, (val != 32), IDLE_CHK_ERROR, |
| "XCM: XX_FREE is not 32"); |
| IDLE_CHK_1(0x7, UCM_REG_XX_FREE, (val != 27), |
| IDLE_CHK_ERROR_NO_TRAFFIC, "UCM: XX_FREE is not 27"); |
| IDLE_CHK_1(0x7, TCM_REG_XX_FREE, (val != 32), IDLE_CHK_ERROR, |
| "TCM: XX_FREE is not 32"); |
| IDLE_CHK_1(0x7, CCM_REG_XX_FREE, (val != 24), IDLE_CHK_ERROR, |
| "CCM: XX_FREE is not 24"); |
| |
| IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x18000, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSEM: FOC0 credit less than initial credit"); |
| IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x18040, (val != 24), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSEM: FOC1 credit less than initial credit"); |
| IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x18080, (val != 12), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSEM: FOC2 credit less than initial credit"); |
| IDLE_CHK_1(0x7, XSEM_REG_FAST_MEMORY + 0x180C0, (val != 102), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "XSEM: FOC3 credit less than initial credit"); |
| |
| IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x18000, (val != 26), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USEM: FOC0 credit less than initial credit"); |
| IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x18040, (val != 78), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USEM: FOC1 credit less than initial credit"); |
| IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x18080, (val != 16), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USEM: FOC2 credit less than initial credit"); |
| IDLE_CHK_1(0x7, USEM_REG_FAST_MEMORY + 0x180C0, (val != 32), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "USEM: FOC3 credit less than initial credit"); |
| |
| IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x18000, (val != 52), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSEM: FOC0 credit less than initial credit"); |
| IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x18040, (val != 24), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSEM: FOC1 credit less than initial credit"); |
| IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x18080, (val != 12), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSEM: FOC2 credit less than initial credit"); |
| IDLE_CHK_1(0x7, TSEM_REG_FAST_MEMORY + 0x180C0, (val != 32), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "TSEM: FOC3 credit less than initial credit"); |
| |
| IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x18000, (val != 16), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "CSEM: FOC0 credit less than initial credit"); |
| IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x18040, (val != 18), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "CSEM: FOC1 credit less than initial credit"); |
| IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x18080, (val != 48), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "CSEM: FOC2 credit less than initial credit"); |
| IDLE_CHK_1(0x7, CSEM_REG_FAST_MEMORY + 0x180C0, (val != 14), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "CSEM: FOC3 credit less than initial credit"); |
| |
| IDLE_CHK_1(0x7, PRS_REG_TSDM_CURRENT_CREDIT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: TSDM current credit is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_TCM_CURRENT_CREDIT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: TCM current credit is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_CFC_LD_CURRENT_CREDIT, (val != 0), |
| IDLE_CHK_ERROR, "PRS: CFC_LD current credit is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_CFC_SEARCH_CURRENT_CREDIT, (val != 0), |
| IDLE_CHK_ERROR, "PRS: CFC_SEARCH current credit is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_SRC_CURRENT_CREDIT, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: SRCH current credit is not 0"); |
| |
| IDLE_CHK_1(0x7, PRS_REG_PENDING_BRB_PRS_RQ, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: PENDING_BRB_PRS_RQ is not 0"); |
| IDLE_CHK_2(0x7, PRS_REG_PENDING_BRB_CAC0_RQ, 5, 4, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: PENDING_BRB_CAC%d_RQ is not 0"); |
| |
| IDLE_CHK_1(0x7, PRS_REG_SERIAL_NUM_STATUS_LSB, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: SERIAL_NUM_STATUS_LSB is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_SERIAL_NUM_STATUS_MSB, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "PRS: SERIAL_NUM_STATUS_MSB is not 0"); |
| |
| IDLE_CHK_1(0x7, CDU_REG_ERROR_DATA, (val != 0), IDLE_CHK_ERROR, |
| "CDU: ERROR_DATA is not 0"); |
| |
| IDLE_CHK_1(0x7, CCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: STORM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, CCM_REG_CSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: CSDM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, CCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: TSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, CCM_REG_XSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: XSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, CCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: USEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, CCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "CCM: PBF declared message length unequal to actual"); |
| |
| IDLE_CHK_1(0x7, TCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: STORM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, TCM_REG_TSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: TSDM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, TCM_REG_PRS_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: PRS declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, TCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: PBF declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, TCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: USEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, TCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "TCM: CSEM declared message length unequal to actual"); |
| |
| IDLE_CHK_1(0x7, UCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: STORM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, UCM_REG_USDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: USDM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, UCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: TSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, UCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: CSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, UCM_REG_XSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: XSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, UCM_REG_DORQ_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "UCM: DORQ declared message length unequal to actual"); |
| |
| IDLE_CHK_1(0x7, XCM_REG_STORM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: STORM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_XSDM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: XSDM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_TSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: TSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_CSEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: CSEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_USEM_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: USEM declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_DORQ_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: DORQ declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_PBF_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: PBF declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_NIG0_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: NIG0 declared message length unequal to actual"); |
| IDLE_CHK_1(0x7, XCM_REG_NIG1_LENGTH_MIS, (val != 0), IDLE_CHK_ERROR, |
| "XCM: NIG1 declared message length unequal to actual"); |
| |
| IDLE_CHK_1(0x7, QM_REG_XQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, |
| "QM: XQM wrc_fifolvl is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_UQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, |
| "QM: UQM wrc_fifolvl is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_TQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, |
| "QM: TQM wrc_fifolvl is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_CQM_WRC_FIFOLVL, (val != 0), IDLE_CHK_ERROR, |
| "QM: CQM wrc_fifolvl is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_QSTATUS_LOW, (val != 0), IDLE_CHK_ERROR, |
| "QM: QSTATUS_LOW is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_QSTATUS_HIGH, (val != 0), IDLE_CHK_ERROR, |
| "QM: QSTATUS_HIGH is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_PAUSESTATE0, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE0 is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_PAUSESTATE1, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE1 is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_OVFQNUM, (val != 0), IDLE_CHK_ERROR, |
| "QM: OVFQNUM is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_OVFERROR, (val != 0), IDLE_CHK_ERROR, |
| "QM: OVFERROR is not 0"); |
| |
| IDLE_CHK_6(0x7, QM_REG_PTRTBL, 64, 8, IDLE_CHK_ERROR_NO_TRAFFIC); |
| |
| IDLE_CHK_1(0x7, BRB1_REG_BRB1_PRTY_STS, ((val & ~0x8) != 0), |
| IDLE_CHK_WARNING, "BRB1: parity status is not 0"); |
| IDLE_CHK_1(0x7, CDU_REG_CDU_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "CDU: parity status is not 0"); |
| IDLE_CHK_1(0x7, CFC_REG_CFC_PRTY_STS, ((val & ~0x2) != 0), |
| IDLE_CHK_WARNING, "CFC: parity status is not 0"); |
| IDLE_CHK_1(0x7, CSDM_REG_CSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "CSDM: parity status is not 0"); |
| IDLE_CHK_1(0x7, DBG_REG_DBG_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "DBG: parity status is not 0"); |
| IDLE_CHK_1(0x7, DMAE_REG_DMAE_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "DMAE: parity status is not 0"); |
| IDLE_CHK_1(0x7, DORQ_REG_DORQ_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "DQ: parity status is not 0"); |
| IDLE_CHK_1(0x1, TCM_REG_TCM_PRTY_STS, ((val & ~0x3ffc0) != 0), |
| IDLE_CHK_WARNING, "TCM: parity status is not 0"); |
| IDLE_CHK_1(0x6, TCM_REG_TCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "TCM: parity status is not 0"); |
| IDLE_CHK_1(0x1, CCM_REG_CCM_PRTY_STS, ((val & ~0x3ffc0) != 0), |
| IDLE_CHK_WARNING, "CCM: parity status is not 0"); |
| IDLE_CHK_1(0x6, CCM_REG_CCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "CCM: parity status is not 0"); |
| IDLE_CHK_1(0x1, UCM_REG_UCM_PRTY_STS, ((val & ~0x3ffc0) != 0), |
| IDLE_CHK_WARNING, "UCM: parity status is not 0"); |
| IDLE_CHK_1(0x6, UCM_REG_UCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "UCM: parity status is not 0"); |
| IDLE_CHK_1(0x1, XCM_REG_XCM_PRTY_STS, ((val & ~0x3ffc0) != 0), |
| IDLE_CHK_WARNING, "XCM: parity status is not 0"); |
| IDLE_CHK_1(0x6, XCM_REG_XCM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "XCM: parity status is not 0"); |
| IDLE_CHK_1(0x1, HC_REG_HC_PRTY_STS, ((val & ~0x1) != 0), |
| IDLE_CHK_WARNING, "HC: parity status is not 0"); |
| IDLE_CHK_1(0x1, MISC_REG_MISC_PRTY_STS, ((val & ~0x1) != 0), |
| IDLE_CHK_WARNING, "MISC: parity status is not 0"); |
| IDLE_CHK_1(0x7, PRS_REG_PRS_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "PRS: parity status is not 0"); |
| IDLE_CHK_1(0x7, PXP_REG_PXP_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "PXP: parity status is not 0"); |
| IDLE_CHK_1(0x7, QM_REG_QM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "QM: parity status is not 0"); |
| IDLE_CHK_1(0x1, SRC_REG_SRC_PRTY_STS, ((val & ~0x4) != 0), |
| IDLE_CHK_WARNING, "SRCH: parity status is not 0"); |
| IDLE_CHK_1(0x7, TSDM_REG_TSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "TSDM: parity status is not 0"); |
| IDLE_CHK_1(0x7, USDM_REG_USDM_PRTY_STS, ((val & ~0x20) != 0), |
| IDLE_CHK_WARNING, "USDM: parity status is not 0"); |
| IDLE_CHK_1(0x7, XSDM_REG_XSDM_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "XSDM: parity status is not 0"); |
| IDLE_CHK_1(0x7, GRCBASE_XPB + PB_REG_PB_PRTY_STS, (val != 0), |
| IDLE_CHK_WARNING, "XPB: parity status is not 0"); |
| IDLE_CHK_1(0x7, GRCBASE_UPB + PB_REG_PB_PRTY_STS, (val != 0), |
| IDLE_CHK_WARNING, "UPB: parity status is not 0"); |
| |
| IDLE_CHK_1(0x7, CSEM_REG_CSEM_PRTY_STS_0, (val != 0), |
| IDLE_CHK_WARNING, "CSEM: parity status 0 is not 0"); |
| IDLE_CHK_1(0x1, PXP2_REG_PXP2_PRTY_STS_0, ((val & ~0xfff40020) != 0), |
| IDLE_CHK_WARNING, "PXP2: parity status 0 is not 0"); |
| IDLE_CHK_1(0x6, PXP2_REG_PXP2_PRTY_STS_0, ((val & ~0x20) != 0), |
| IDLE_CHK_WARNING, "PXP2: parity status 0 is not 0"); |
| IDLE_CHK_1(0x7, TSEM_REG_TSEM_PRTY_STS_0, (val != 0), |
| IDLE_CHK_WARNING, "TSEM: parity status 0 is not 0"); |
| IDLE_CHK_1(0x7, USEM_REG_USEM_PRTY_STS_0, (val != 0), |
| IDLE_CHK_WARNING, "USEM: parity status 0 is not 0"); |
| IDLE_CHK_1(0x7, XSEM_REG_XSEM_PRTY_STS_0, (val != 0), |
| IDLE_CHK_WARNING, "XSEM: parity status 0 is not 0"); |
| |
| IDLE_CHK_1(0x7, CSEM_REG_CSEM_PRTY_STS_1, (val != 0), |
| IDLE_CHK_WARNING, "CSEM: parity status 1 is not 0"); |
| IDLE_CHK_1(0x1, PXP2_REG_PXP2_PRTY_STS_1, ((val & ~0x20) != 0), |
| IDLE_CHK_WARNING, "PXP2: parity status 1 is not 0"); |
| IDLE_CHK_1(0x6, PXP2_REG_PXP2_PRTY_STS_1, (val != 0), |
| IDLE_CHK_WARNING, "PXP2: parity status 1 is not 0"); |
| IDLE_CHK_1(0x7, TSEM_REG_TSEM_PRTY_STS_1, (val != 0), |
| IDLE_CHK_WARNING, "TSEM: parity status 1 is not 0"); |
| IDLE_CHK_1(0x7, USEM_REG_USEM_PRTY_STS_1, (val != 0), |
| IDLE_CHK_WARNING, "USEM: parity status 1 is not 0"); |
| IDLE_CHK_1(0x7, XSEM_REG_XSEM_PRTY_STS_1, (val != 0), |
| IDLE_CHK_WARNING, "XSEM: parity status 1 is not 0"); |
| |
| IDLE_CHK_2(0x2, QM_REG_QTASKCTR_EXT_A_0, 64, 4, (val != 0), |
| IDLE_CHK_ERROR_NO_TRAFFIC, |
| "QM: Q_EXT_A_%d, queue is not empty"); |
| IDLE_CHK_1(0x2, QM_REG_QSTATUS_LOW_EXT_A, (val != 0), IDLE_CHK_ERROR, |
| "QM: QSTATUS_LOW_EXT_A is not 0"); |
| IDLE_CHK_1(0x2, QM_REG_QSTATUS_HIGH_EXT_A, (val != 0), IDLE_CHK_ERROR, |
| "QM: QSTATUS_HIGH_EXT_A is not 0"); |
| IDLE_CHK_1(0x6, QM_REG_PAUSESTATE2, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE2 is not 0"); |
| IDLE_CHK_1(0x6, QM_REG_PAUSESTATE3, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE3 is not 0"); |
| IDLE_CHK_1(0x2, QM_REG_PAUSESTATE4, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE4 is not 0"); |
| IDLE_CHK_1(0x2, QM_REG_PAUSESTATE5, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE5 is not 0"); |
| IDLE_CHK_1(0x2, QM_REG_PAUSESTATE6, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE6 is not 0"); |
| IDLE_CHK_1(0x2, QM_REG_PAUSESTATE7, (val != 0), IDLE_CHK_ERROR, |
| "QM: PAUSESTATE7 is not 0"); |
| IDLE_CHK_6(0x2, QM_REG_PTRTBL_EXT_A, 64, 8, |
| IDLE_CHK_ERROR_NO_TRAFFIC); |
| |
| IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_OCCURRED, (val != 0), |
| IDLE_CHK_ERROR, "MISC: system kill occurd;"); |
| IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_0, (val != 0), |
| IDLE_CHK_ERROR, |
| "MISC: system kill occurd; status_0 register"); |
| IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_1, (val != 0), |
| IDLE_CHK_ERROR, |
| "MISC: system kill occurd; status_1 register"); |
| IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_2, (val != 0), |
| IDLE_CHK_ERROR, |
| "MISC: system kill occurd; status_2 register"); |
| IDLE_CHK_1(0x6, MISC_REG_AEU_SYS_KILL_STATUS_3, (val != 0), |
| IDLE_CHK_ERROR, |
| "MISC: system kill occurd; status_3 register"); |
| IDLE_CHK_1(0x6, MISC_REG_PCIE_HOT_RESET, (val != 0), IDLE_CHK_WARNING, |
| "MISC: pcie_rst_b was asserted without perst assertion"); |
| |
| IDLE_CHK_1(0x7, NIG_REG_NIG_INT_STS_0, ((val & ~0x300) != 0), |
| IDLE_CHK_ERROR, "NIG: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, NIG_REG_NIG_INT_STS_0, (val == 0x300), |
| IDLE_CHK_WARNING, |
| "NIG: Access to BMAC while not active. If tested on FPGA," |
| " ignore this warning."); |
| IDLE_CHK_1(0x7, NIG_REG_NIG_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "NIG: interrupt status 1 is not 0"); |
| IDLE_CHK_1(0x6, NIG_REG_NIG_PRTY_STS, ((val & ~0xffc00000) != 0), |
| IDLE_CHK_WARNING, "NIG: parity status is not 0"); |
| |
| IDLE_CHK_1(0x7, TSEM_REG_TSEM_INT_STS_0, ((val & ~0x10000000) != 0), |
| IDLE_CHK_ERROR, "TSEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, TSEM_REG_TSEM_INT_STS_0, (val == 0x10000000), |
| IDLE_CHK_WARNING, "TSEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, TSEM_REG_TSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "TSEM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, CSEM_REG_CSEM_INT_STS_0, ((val & ~0x10000000) != 0), |
| IDLE_CHK_ERROR, "CSEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, CSEM_REG_CSEM_INT_STS_0, (val == 0x10000000), |
| IDLE_CHK_WARNING, "CSEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, CSEM_REG_CSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "CSEM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, USEM_REG_USEM_INT_STS_0, ((val & ~0x10000000) != 0), |
| IDLE_CHK_ERROR, "USEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, USEM_REG_USEM_INT_STS_0, (val == 0x10000000), |
| IDLE_CHK_WARNING, "USEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, USEM_REG_USEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "USEM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, XSEM_REG_XSEM_INT_STS_0, ((val & ~0x10000000) != 0), |
| IDLE_CHK_ERROR, "XSEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, XSEM_REG_XSEM_INT_STS_0, (val == 0x10000000), |
| IDLE_CHK_WARNING, "XSEM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, XSEM_REG_XSEM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "XSEM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, TSDM_REG_TSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, |
| "TSDM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, TSDM_REG_TSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "TSDM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, CSDM_REG_CSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, |
| "CSDM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, CSDM_REG_CSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "CSDM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, USDM_REG_USDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, |
| "USDM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, USDM_REG_USDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "USDM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x7, XSDM_REG_XSDM_INT_STS_0, (val != 0), IDLE_CHK_ERROR, |
| "XSDM: interrupt status 0 is not 0"); |
| IDLE_CHK_1(0x7, XSDM_REG_XSDM_INT_STS_1, (val != 0), IDLE_CHK_ERROR, |
| "XSDM: interrupt status 1 is not 0"); |
| |
| IDLE_CHK_1(0x6, HC_REG_HC_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "HC: parity status is not 0"); |
| IDLE_CHK_1(0x6, MISC_REG_MISC_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "MISC: parity status is not 0"); |
| IDLE_CHK_1(0x6, SRC_REG_SRC_PRTY_STS, (val != 0), IDLE_CHK_WARNING, |
| "SRCH: parity status is not 0"); |
| |
| if (idle_chk_errors == 0) { |
| BNX2X_DBG_ERR("completed successfully (with %d warnings)\n", |
| idle_chk_warnings); |
| } else { |
| BNX2X_DBG_ERR("failed (with %d errors, %d warnings)\n", |
| idle_chk_errors, idle_chk_warnings); |
| } |
| return idle_chk_errors; |
| } |
| |