Commit 822dd8a8 authored by Hariprasad Shenai's avatar Hariprasad Shenai Committed by David S. Miller

cxgb4: Add the MC1 registers to read in the interrupt handler

Signed-off-by: default avatarHariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent bc3bd3f4
...@@ -1719,16 +1719,24 @@ static void mps_intr_handler(struct adapter *adapter) ...@@ -1719,16 +1719,24 @@ static void mps_intr_handler(struct adapter *adapter)
*/ */
static void mem_intr_handler(struct adapter *adapter, int idx) static void mem_intr_handler(struct adapter *adapter, int idx)
{ {
static const char name[3][5] = { "EDC0", "EDC1", "MC" }; static const char name[4][7] = { "EDC0", "EDC1", "MC/MC0", "MC1" };
unsigned int addr, cnt_addr, v; unsigned int addr, cnt_addr, v;
if (idx <= MEM_EDC1) { if (idx <= MEM_EDC1) {
addr = EDC_REG(EDC_INT_CAUSE, idx); addr = EDC_REG(EDC_INT_CAUSE, idx);
cnt_addr = EDC_REG(EDC_ECC_STATUS, idx); cnt_addr = EDC_REG(EDC_ECC_STATUS, idx);
} else if (idx == MEM_MC) {
if (is_t4(adapter->params.chip)) {
addr = MC_INT_CAUSE;
cnt_addr = MC_ECC_STATUS;
} else {
addr = MC_P_INT_CAUSE;
cnt_addr = MC_P_ECC_STATUS;
}
} else { } else {
addr = MC_INT_CAUSE; addr = MC_REG(MC_P_INT_CAUSE, 1);
cnt_addr = MC_ECC_STATUS; cnt_addr = MC_REG(MC_P_ECC_STATUS, 1);
} }
v = t4_read_reg(adapter, addr) & MEM_INT_MASK; v = t4_read_reg(adapter, addr) & MEM_INT_MASK;
...@@ -1892,6 +1900,8 @@ int t4_slow_intr_handler(struct adapter *adapter) ...@@ -1892,6 +1900,8 @@ int t4_slow_intr_handler(struct adapter *adapter)
pcie_intr_handler(adapter); pcie_intr_handler(adapter);
if (cause & MC) if (cause & MC)
mem_intr_handler(adapter, MEM_MC); mem_intr_handler(adapter, MEM_MC);
if (!is_t4(adapter->params.chip) && (cause & MC1))
mem_intr_handler(adapter, MEM_MC1);
if (cause & EDC0) if (cause & EDC0)
mem_intr_handler(adapter, MEM_EDC0); mem_intr_handler(adapter, MEM_EDC0);
if (cause & EDC1) if (cause & EDC1)
......
...@@ -448,11 +448,13 @@ ...@@ -448,11 +448,13 @@
#define TDUE 0x00010000U #define TDUE 0x00010000U
#define MC_INT_CAUSE 0x7518 #define MC_INT_CAUSE 0x7518
#define MC_P_INT_CAUSE 0x41318
#define ECC_UE_INT_CAUSE 0x00000004U #define ECC_UE_INT_CAUSE 0x00000004U
#define ECC_CE_INT_CAUSE 0x00000002U #define ECC_CE_INT_CAUSE 0x00000002U
#define PERR_INT_CAUSE 0x00000001U #define PERR_INT_CAUSE 0x00000001U
#define MC_ECC_STATUS 0x751c #define MC_ECC_STATUS 0x751c
#define MC_P_ECC_STATUS 0x4131c
#define ECC_CECNT_MASK 0xffff0000U #define ECC_CECNT_MASK 0xffff0000U
#define ECC_CECNT_SHIFT 16 #define ECC_CECNT_SHIFT 16
#define ECC_CECNT(x) ((x) << ECC_CECNT_SHIFT) #define ECC_CECNT(x) ((x) << ECC_CECNT_SHIFT)
...@@ -1101,6 +1103,7 @@ ...@@ -1101,6 +1103,7 @@
#define I2CM 0x00000002U #define I2CM 0x00000002U
#define CIM 0x00000001U #define CIM 0x00000001U
#define MC1 0x31
#define PL_INT_ENABLE 0x19410 #define PL_INT_ENABLE 0x19410
#define PL_INT_MAP0 0x19414 #define PL_INT_MAP0 0x19414
#define PL_RST 0x19428 #define PL_RST 0x19428
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment