On 30-04-20, 15:15, Dilip Kota wrote:

> +enum {
> +     PHY_0,
> +     PHY_1,
> +     PHY_MAX_NUM

PHY_MAX_NUM = PHY_1?

> +static inline void combo_phy_w32_off_mask(void __iomem *base, unsigned int 
> reg,
> +                                       u32 mask, u32 val)
> +{
> +     u32 reg_val;
> +
> +     reg_val = readl(base + reg);
> +     reg_val &= ~mask;
> +     reg_val |= FIELD_PREP(mask, val);
> +     writel(reg_val, base + reg);

bypassing regmap here... why?

> +static int intel_cbphy_calibrate(struct phy *phy)
> +{
> +     struct intel_cbphy_iphy *iphy = phy_get_drvdata(phy);
> +     struct intel_combo_phy *cbphy = iphy->parent;
> +     void __iomem *cr_base = cbphy->cr_base;
> +     int val, ret, id;
> +
> +     if (cbphy->phy_mode != PHY_XPCS_MODE)
> +             return 0;
> +
> +     id = PHY_ID(iphy);
> +
> +     /* trigger auto RX adaptation */
> +     combo_phy_w32_off_mask(cr_base, CR_ADDR(PCS_XF_ATE_OVRD_IN_2, id),
> +                            ADAPT_REQ_MSK, 3);
> +     /* Wait RX adaptation to finish */
> +     ret = readl_poll_timeout(cr_base + CR_ADDR(PCS_XF_RX_ADAPT_ACK, id),
> +                              val, val & RX_ADAPT_ACK_BIT, 10, 5000);
> +     if (ret)
> +             dev_err(cbphy->dev, "RX Adaptation failed!\n");

you want to continue her and not return error?
-- 
~Vinod

Reply via email to