[Skiboot] [PATCH 2/2] platform/mihawk: Tune equalization settings for opencapi
Andrew Donnellan
ajd at linux.ibm.com
Wed Apr 8 10:47:49 AEST 2020
On 31/3/20 8:47 pm, Frederic Barrat wrote:
> The Bittware 250SOC adapter on Mihawk was showing a high count of CRC
> errors on one of the opencapi slots. The PHY team suggested new
> equalization settings to correct the errors.
>
> All existing adapters have been tested on mihawk to make sure the
> settings are compatible. However, the new settings should not be used
> on platforms other than mihawk.
>
> The changes specific to mihawk are:
> - Update the tx_ffe_pre_coeff and tx_ffe_post_coeff input parameters
> used during zcal
> - turn off the tx_ffe_boost parameter through scom
>
> Signed-off-by: Frederic Barrat <fbarrat at linux.ibm.com>
> Cc: skiboot-stable at lists.ozlabs.org # skiboot-op940.x
I can't validate the specific equalisation settings, so I'll take your
word that they are indeed correct.
> ---
> hw/npu2-hw-procedures.c | 25 ++++++++++++++++++-------
> include/npu2.h | 2 ++
> platforms/astbmc/mihawk.c | 1 +
> 3 files changed, 21 insertions(+), 7 deletions(-)
>
> diff --git a/hw/npu2-hw-procedures.c b/hw/npu2-hw-procedures.c
> index 890b25a8..95a0f9dc 100644
> --- a/hw/npu2-hw-procedures.c
> +++ b/hw/npu2-hw-procedures.c
> @@ -78,6 +78,7 @@ static struct npu2_phy_reg NPU2_PHY_TX_ZCAL_DONE = {0x3c1, 50, 1};
> static struct npu2_phy_reg NPU2_PHY_TX_ZCAL_ERROR = {0x3c1, 51, 1};
> static struct npu2_phy_reg NPU2_PHY_TX_ZCAL_N = {0x3c3, 48, 9};
> static struct npu2_phy_reg NPU2_PHY_TX_ZCAL_P = {0x3c5, 48, 9};
> +static struct npu2_phy_reg NPU2_PHY_TX_FFE_BOOST_EN = {0x34b, 59, 1};
> static struct npu2_phy_reg NPU2_PHY_TX_PSEG_PRE_EN = {0x34d, 51, 5};
> static struct npu2_phy_reg NPU2_PHY_TX_PSEG_PRE_SELECT = {0x34d, 56, 5};
> static struct npu2_phy_reg NPU2_PHY_TX_NSEG_PRE_EN = {0x34f, 51, 5};
> @@ -498,10 +499,11 @@ static uint32_t phy_tx_zcal_wait(struct npu2_dev *ndev)
> return PROCEDURE_NEXT;
> }
>
> -#define MARGIN_RATIO (0)
> -#define FFE_PRE_COEFF (0)
> -#define FFE_POST_COEFF (0)
>
> +int ffe_pre_coeff = 0;
> +int ffe_post_coeff = 0;
Is there any way to do this without exposing global variables? (My
primary objection is that global variables for specific things in
specific subsystems is ugly and inelegant)
--
Andrew Donnellan OzLabs, ADL Canberra
ajd at linux.ibm.com IBM Australia Limited
More information about the Skiboot
mailing list