aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2016-06-25 08:47:26 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-07-06 19:30:48 +1000
commite70575a8330e5a225ca676071815c73d8e296de7 (patch)
tree92d4d0a94e6d07bf8113f31203930609c9a492d8 /hw
parent45d1baf860b9c60baea4fdb8badff60a31bb9627 (diff)
downloadskiboot-e70575a8330e5a225ca676071815c73d8e296de7.zip
skiboot-e70575a8330e5a225ca676071815c73d8e296de7.tar.gz
skiboot-e70575a8330e5a225ca676071815c73d8e296de7.tar.bz2
POWER9: Make xscom_addr() work for p8 and p9
Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/xscom.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/hw/xscom.c b/hw/xscom.c
index 2a91a7b..9aa2c81 100644
--- a/hw/xscom.c
+++ b/hw/xscom.c
@@ -69,9 +69,11 @@ static inline void *xscom_addr(uint32_t gcid, uint32_t pcb_addr)
assert(chip);
addr = chip->xscom_base;
- addr |= ((uint64_t)pcb_addr << 4) & ~0xfful;
- addr |= (pcb_addr << 3) & 0x78;
-
+ if (proc_gen <= proc_gen_p8) {
+ addr |= ((uint64_t)pcb_addr << 4) & ~0xfful;
+ addr |= (pcb_addr << 3) & 0x78;
+ } else
+ addr |= ((uint64_t)pcb_addr << 3);
return (void *)addr;
}