[Skiboot] [RFC 01/12] npu2-hw-procedures: Move some opencapi PHY settings in one-off init
Andrew Donnellan
ajd at linux.ibm.com
Thu Jun 20 15:15:47 AEST 2019
On 19/6/19 10:44 pm, Frederic Barrat wrote:
> 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.
>
> Signed-off-by: Frederic Barrat <fbarrat at linux.ibm.com>
Reviewed-by: Andrew Donnellan <ajd at linux.ibm.com>
> ---
> hw/npu2-hw-procedures.c | 35 ++++++++++++++++-------------------
> 1 file changed, 16 insertions(+), 19 deletions(-)
>
> diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c
> index 0779ddea..548dae16 100644
> --- a/hw/npu2-hw-procedures.c
> +++ b/hw/npu2-hw-procedures.c
> @@ -426,25 +426,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);
> @@ -1034,6 +1015,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)
>
--
Andrew Donnellan OzLabs, ADL Canberra
ajd at linux.ibm.com IBM Australia Limited
More information about the Skiboot
mailing list