aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2016-05-02 15:26:21 +1000
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-05-10 16:04:51 +1000
commit591feeef8353c8a0ee73e42ff1538cf436c5fd1d (patch)
tree224bfb9fbed30b06eede81bd82d0506d91f24bb3 /hw
parent3ff350343a67cd1897f37684613468a5f849ac1b (diff)
downloadskiboot-591feeef8353c8a0ee73e42ff1538cf436c5fd1d.zip
skiboot-591feeef8353c8a0ee73e42ff1538cf436c5fd1d.tar.gz
skiboot-591feeef8353c8a0ee73e42ff1538cf436c5fd1d.tar.bz2
Add base POWER9 support
Add PVR detection, chip id and other misc bits for POWER9. POWER9 changes the location of the HILE and attn enable bits in the HID0 register, so add these definitions also. Signed-off-by: Michael Neuling <mikey@neuling.org> [stewart@linux.vnet.ibm.com: Fix Numbus typo, hdata_to_dt build fixes] Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw')
-rw-r--r--hw/xscom.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/hw/xscom.c b/hw/xscom.c
index 1c45cbc..4d88ce5 100644
--- a/hw/xscom.c
+++ b/hw/xscom.c
@@ -426,11 +426,13 @@ int64_t xscom_read_cfam_chipid(uint32_t partid, uint32_t *chip_id)
int64_t rc = OPAL_SUCCESS;
/* Mambo chip model lacks the f000f register, just make
- * something up (Murano DD2.1)
+ * something up
*/
- if (chip_quirk(QUIRK_NO_F000F))
- val = 0x221EF04980000000UL;
- else
+ if (chip_quirk(QUIRK_NO_F000F)) {
+ val = 0x221EF04980000000UL; /* P8 Murano DD2.1 */
+ if (proc_gen == proc_gen_p9)
+ val = 0x100D104980000000UL; /* P9 Nimbus DD1.0 */
+ } else
rc = xscom_read(partid, 0xf000f, &val);
/* Extract CFAM id */
@@ -474,6 +476,14 @@ static void xscom_init_chip_info(struct proc_chip *chip)
chip->type = PROC_CHIP_P8_NAPLES;
assert(proc_gen == proc_gen_p8);
break;
+ case 0xd1:
+ chip->type = PROC_CHIP_P9_NIMBUS;
+ assert(proc_gen == proc_gen_p9);
+ break;
+ case 0xd4:
+ chip->type = PROC_CHIP_P9_CUMULUS;
+ assert(proc_gen == proc_gen_p9);
+ break;
default:
printf("CHIP: Unknown chip type 0x%02x !!!\n",
(unsigned char)(val & 0xff));