diff options
author | Frederic Barrat <fbarrat@linux.ibm.com> | 2021-08-04 12:50:57 +0530 |
---|---|---|
committer | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2021-08-06 12:22:07 +0530 |
commit | 7706e3300ceaa446e5f2fe1d3078fb0ace49b4d7 (patch) | |
tree | 112b5bede893d3e1c707fc3afe8b6e0369f38875 /hdata/iohub.c | |
parent | e813a0c09dc08aea7144425e1d4ee6c9134e9f47 (diff) | |
download | skiboot-7706e3300ceaa446e5f2fe1d3078fb0ace49b4d7.zip skiboot-7706e3300ceaa446e5f2fe1d3078fb0ace49b4d7.tar.gz skiboot-7706e3300ceaa446e5f2fe1d3078fb0ace49b4d7.tar.bz2 |
hdata/iohub: Read PCI Gen5 equalization settings for P10
HDAT spec added fields to define the equalization settings for PCI
Gen5 link. Format is the same as PCI Gen4, so we just need to add
extra fields in the "ibm,lane-eq" in the device tree.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Diffstat (limited to 'hdata/iohub.c')
-rw-r--r-- | hdata/iohub.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/hdata/iohub.c b/hdata/iohub.c index fb215e1..92df48b 100644 --- a/hdata/iohub.c +++ b/hdata/iohub.c @@ -152,8 +152,8 @@ static struct dt_node *add_pec_stack(const struct cechub_io_hub *hub, { struct dt_node *stack; const char *compat; - u64 eq[8]; - u8 *gen4; + u64 eq[12]; + u8 *ptr; int i; stack = dt_new_addr(pbcq, "stack", stack_index); @@ -181,18 +181,27 @@ static struct dt_node *add_pec_stack(const struct cechub_io_hub *hub, eq[i] = be64_to_cpu(hub->phb_lane_eq[phb_index][i]); for (i = 0; i < 4; i++) /* gen 4 eq settings */ eq[i+4] = be64_to_cpu(hub->phb4_lane_eq[phb_index][i]); + for (i = 0; i < 4; i++) /* gen 5 eq settings */ + eq[i+8] = be64_to_cpu(hub->phb5_lane_eq[phb_index][i]); /* Lane-eq settings are packed 2 bytes per lane for 16 lanes - * On P9 DD2, 1 byte per lane is used in the hardware + * On P9 DD2 and P10, 1 byte per lane is used in the hardware */ - /* Repack 2 byte lane settings into 1 byte */ - gen4 = (u8 *)&eq[4]; - for (i = 0; i < 16; i++) - gen4[i] = gen4[2*i]; + /* Repack 2 byte lane settings into 1 byte for gen 4 & 5 */ + ptr = (u8 *)&eq[4]; + for (i = 0; i < 32; i++) + ptr[i] = ptr[2*i]; - dt_add_property_u64s(stack, "ibm,lane-eq", eq[0], eq[1], - eq[2], eq[3], eq[4], eq[5]); + if (proc_gen == proc_gen_p9) + dt_add_property_u64s(stack, "ibm,lane-eq", + eq[0], eq[1], eq[2], eq[3], + eq[4], eq[5]); + else + dt_add_property_u64s(stack, "ibm,lane-eq", + eq[0], eq[1], eq[2], eq[3], + eq[4], eq[5], + eq[6], eq[7]); return stack; } |