lkml.org 
[lkml]   [2020]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v7 3/3] phy: intel: Add driver support for ComboPhy
From
Date

On 5/4/2020 3:29 PM, Vinod Koul wrote:
> On 30-04-20, 15:15, Dilip Kota wrote:
>
>> +enum {
>> + PHY_0,
>> + PHY_1,
>> + PHY_MAX_NUM
> PHY_MAX_NUM = PHY_1?
Driver is using it for no. of PHYs/maximum PHY id.

Code snippets:

struct intel_combo_phy {
...
        struct reset_control    *phy_rst;
        struct reset_control    *core_rst;
        struct intel_cbphy_iphy iphy[PHY_MAX_NUM];
...
}

....

static int intel_cbphy_create(struct intel_combo_phy *cbphy)
{
        struct phy_provider *phy_provider;
        struct device *dev = cbphy->dev;
        struct intel_cbphy_iphy *iphy;
        int i;

        for (i = 0; i < PHY_MAX_NUM; i++) {

...

>
>> +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?
It is not regmap address, one of the below two addresses are passed to
this function.

struct intel_combo_phy {
...
        void __iomem            *app_base;
        void __iomem            *cr_base;
...
}


>
>> +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?

Next step is stopping the Adaptation, it should be done in both error
and success case.

Regards,
Dilip

\
 
 \ /
  Last update: 2020-05-04 10:27    [W:1.734 / U:0.148 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site