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 <qiuxu.zhuo@intel.com> Cc: Tony Luck <tony.luck@intel.com> Cc: linux-edac <linux-edac@vger.kernel.org> Link: http://lkml.kernel.org/r/20170814154905.21707-1-qiuxu.zhuo@intel.com Signed-off-by: Borislav Petkov <bp@suse.de>
This commit is contained in:
parent
5fd77cb3ba
commit
bc8f10babc
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue