aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Barrat <fbarrat@linux.ibm.com>2019-10-09 21:38:01 +0200
committerOliver O'Halloran <oohall@gmail.com>2019-10-22 17:31:32 +1100
commit13e1a7e54cf0f46e2fe414b8499661dd4b9b903d (patch)
treea05799209cb7ff4065b4d157e4c675ee01631c3b
parent94bc2d7a85110d752a8424d5f85382c4f02ec155 (diff)
downloadskiboot-13e1a7e54cf0f46e2fe414b8499661dd4b9b903d.zip
skiboot-13e1a7e54cf0f46e2fe414b8499661dd4b9b903d.tar.gz
skiboot-13e1a7e54cf0f46e2fe414b8499661dd4b9b903d.tar.bz2
npu2-hw-procedures: Move some opencapi PHY settings in one-off init
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>
-rw-r--r--hw/npu2-hw-procedures.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c
index c1ae8f1..6cd780c 100644
--- a/hw/npu2-hw-procedures.c
+++ b/hw/npu2-hw-procedures.c
@@ -418,25 +418,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);
@@ -1026,6 +1007,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)