From: Qiuxu Zhuo Date: Mon, 14 Aug 2017 15:49:05 +0000 (+0800) Subject: EDAC, pnd2: Properly toggle hidden state for P2SB PCI device X-Git-Tag: v4.14-rc1~145^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bc8f10babcc27c1f4d8e80d91cc543eabf9125c4;p=platform%2Fkernel%2Flinux-rpi.git EDAC, pnd2: Properly toggle hidden state for P2SB PCI device Properly handle hidden state of P2SB PCI device (DEV:D, FUN:0) for Apollo Lake. Signed-off-by: Qiuxu Zhuo Cc: Tony Luck Cc: linux-edac Link: http://lkml.kernel.org/r/20170814154905.21707-1-qiuxu.zhuo@intel.com Signed-off-by: Borislav Petkov --- diff --git a/drivers/edac/pnd2_edac.c b/drivers/edac/pnd2_edac.c index 89cdd9a..4395c84 100644 --- a/drivers/edac/pnd2_edac.c +++ b/drivers/edac/pnd2_edac.c @@ -161,8 +161,12 @@ static int _apl_rd_reg(int port, int off, int op, u32 *data) { int retries = 0xff, ret; u16 status; + u8 hidden; - P2SB_WRITE(byte, P2SB_HIDE_OFF, 0); + /* Unhide the P2SB device, if it's hidden */ + P2SB_READ(byte, P2SB_HIDE_OFF, &hidden); + if (hidden) + P2SB_WRITE(byte, P2SB_HIDE_OFF, 0); if (p2sb_is_busy(&status)) { ret = -EAGAIN; @@ -185,7 +189,9 @@ static int _apl_rd_reg(int port, int off, int op, u32 *data) P2SB_READ(dword, P2SB_DATA_OFF, data); ret = (status >> 1) & 0x3; out: - P2SB_WRITE(byte, P2SB_HIDE_OFF, 1); + /* Hide the P2SB device, if it was hidden before */ + if (hidden) + P2SB_WRITE(byte, P2SB_HIDE_OFF, hidden); return ret; }