diff options
author | Frederic Barrat <fbarrat@linux.ibm.com> | 2019-10-09 21:38:01 +0200 |
---|---|---|
committer | Vasant Hegde <hegdevasant@linux.vnet.ibm.com> | 2020-03-11 10:57:03 +0530 |
commit | c4cc427b7f161d1dba4a20f713a04536cb58deda (patch) | |
tree | 8ce46a13c8b07799bf054614f71fe4ad81d05b40 | |
parent | 912ea85ceaf72021ac9778c477f580fafbba7828 (diff) | |
download | skiboot-c4cc427b7f161d1dba4a20f713a04536cb58deda.zip skiboot-c4cc427b7f161d1dba4a20f713a04536cb58deda.tar.gz skiboot-c4cc427b7f161d1dba4a20f713a04536cb58deda.tar.bz2 |
npu2-hw-procedures: Move some opencapi PHY settings in one-off init
[ Upstream commit 13e1a7e54cf0f46e2fe414b8499661dd4b9b903d ]
The PHY_RX_AC_COUPLED and PHY_RX_SPEED_SELECT for opencapi are group
settings for the obus. They should be set in the one-off PHY init
function at boot and not on the link reset path, as they theoretically
impact more than one link.
Since we cannot mix link type and/or speed on an optical bus, it has
no pratical impact, it just looks cleaner.
Also use the OCAPIINF macro for the associated traces.
Reviewed-by: Christophe Lombard <clombard@linux.vnet.ibm.com>
Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com>
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
-rw-r--r-- | hw/npu2-hw-procedures.c | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c index 4e245d2..0d71844 100644 --- a/hw/npu2-hw-procedures.c +++ b/hw/npu2-hw-procedures.c @@ -425,25 +425,6 @@ static uint32_t phy_reset_complete(struct npu2_dev *ndev) { int lane; - if (ndev->type == NPU2_DEV_TYPE_OPENCAPI) { - phy_write(ndev, &NPU2_PHY_RX_AC_COUPLED, 1); - - switch (ndev->link_speed) { - case 20000000000UL: - prlog(PR_INFO, "OCAPI: Link speed set at 20Gb/s\n"); - phy_write(ndev, &NPU2_PHY_RX_SPEED_SELECT, 1); - break; - case 25000000000UL: - case 25781250000UL: - prlog(PR_INFO, "OCAPI: Link speed set at 25.xGb/s\n"); - phy_write(ndev, &NPU2_PHY_RX_SPEED_SELECT, 0); - break; - default: - prlog(PR_CRIT, "OCAPI: Invalid link speed!\n"); - assert(false); - } - } - FOR_EACH_LANE(ndev, lane) { phy_write_lane(ndev, &NPU2_PHY_RX_LANE_ANA_PDWN, lane, 0); phy_write_lane(ndev, &NPU2_PHY_RX_LANE_DIG_PDWN, lane, 0); @@ -1030,6 +1011,22 @@ void npu2_opencapi_phy_init(struct npu2_dev *dev) * Witherspoon it needs to be done in skiboot after device detection. */ phy_write(dev, &NPU2_PHY_RX_RC_ENABLE_AUTO_RECAL, 0x1); + phy_write(dev, &NPU2_PHY_RX_AC_COUPLED, 1); + + switch (dev->link_speed) { + case 20000000000UL: + OCAPIINF(dev, "Link speed set at 20Gb/s\n"); + phy_write(dev, &NPU2_PHY_RX_SPEED_SELECT, 1); + break; + case 25000000000UL: + case 25781250000UL: + OCAPIINF(dev, "Link speed set at 25.xGb/s\n"); + phy_write(dev, &NPU2_PHY_RX_SPEED_SELECT, 0); + break; + default: + OCAPIERR(dev, "Invalid link speed!\n"); + assert(false); + } } void npu2_opencapi_phy_reset(struct npu2_dev *dev) |