Skip to content

Commit

Permalink
hdat: Fix XSCOM nodes for P9
Browse files Browse the repository at this point in the history
The address mapping for multiple chips is different

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
  • Loading branch information
ozbenh authored and stewartsmith committed Jan 16, 2017
1 parent 97fa9dd commit 0d81bda
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion hdata/spira.c
Expand Up @@ -233,7 +233,21 @@ static struct dt_node *add_xscom_node(uint64_t base, uint32_t hw_id,
uint64_t addr, size;
uint64_t freq;

addr = base | ((uint64_t)hw_id << PPC_BITLSHIFT(28));
switch (proc_gen) {
case proc_gen_p7:
case proc_gen_p8:
/* On P7 and P8 all the chip SCOMs share single region */
addr = base | ((uint64_t)hw_id << PPC_BITLSHIFT(28));
break;
case proc_gen_p9:
default:
/* On P9 we need to put the chip ID in the natural powerbus
* position.
*/
addr = base | (((uint64_t)hw_id) << 42);
break;
};

size = (u64)1 << PPC_BITLSHIFT(28);

prlog(PR_INFO, "XSCOM: Found HW ID 0x%x (PCID 0x%x) @ 0x%llx\n",
Expand Down Expand Up @@ -262,6 +276,10 @@ static struct dt_node *add_xscom_node(uint64_t base, uint32_t hw_id,
dt_add_property_strings(node, "compatible",
"ibm,xscom", "ibm,power9-xscom");
break;
case proc_gen_p9:
dt_add_property_strings(node, "compatible",
"ibm,xscom", "ibm,power9-xscom");
break;
default:
dt_add_property_strings(node, "compatible", "ibm,xscom");
}
Expand Down

0 comments on commit 0d81bda

Please sign in to comment.