[lkml]   [2020]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe:[RFC net-next] net: phy: Add basic support for Synopsys XPCS using a PHY driver
Hi Jose,
>> So, besides not having a DT based setup to test changes, I also don't
>> have access to SFP bus neither SERDES ... As you suggested, I would
>> like to integrate XPCS with PHYLINK in stmmac but I'm not entirely
>> sure on how to implement the remaining connections as the
>> connect_phy() callbacks will fail because the only MMD device in the
>> bus will be XPCS. That's why I suggested the Fixed PHY approach ...
> Having access to the SFP or not is not that relevent to the data link.
> Generally, the SFP is not like a PHY, and doesn't take part in the
> link negotiation unless it happens to contain a copper PHY.
> Also, please, do not use fixed-phy support with phylink. phylink
> implements a replacement for that, where it supports fixed-links
> without needing the fixed-phy stuff. This is far more flexible
> than fixed-phy which is restricted to the capabilities of clause 22
> PHYs only.
> To make fixed-phy support modes beyond clause 22 PHY capabilities
> would need clause 45 register set emulation by swphy and a
> corresponding clause 45 phylib driver; clause 45 annoyingly does
> not define the 1G negotiation registers in the standard register
> set, so every PHY vendor implements that using their own vendor
> specific solution.
> This is why phylink implements its own solution without using
> fixed-phy (which I wish could be removed some day).
> I would strongly recommend supporting the XPCS natively and not
> via phylib. Consider the case:
> Host PC x86 -> PCI -> XGMAC -> XPCS -> SERDES 10G-BASE-R -> PHY -> RJ45
> You can only have one phylib PHY attached to a network device via
> connect_phy(); that is a restriction in the higher net layers. If you
> use phylib for the XPCS, how do you attach the PHY to the setup and
> configure it?
> Also, using a PHY via connect_phy() negates using fixed-link mode in
> phylink, the two have always been exclusive.

Currently our network SoC has something like this:
XGMAC-> XPCS -> Combo PHY -> PHY

In the xpcs driver probe(), get and calibrate the phy:

priv->phy = devm_phy_get(&pdev->dev, "phy");
if (IS_ERR(priv->phy)) {
    dev_warn(dev, "No phy\n");
    return PTR_ERR(priv->phy);

ret = phy_init(priv->phy);
if (ret)
    return ret;

ret = phy_power_on(priv->phy);
if (ret) {
    return ret;
ret = phy_calibrate(priv->phy);
if (ret) {
    return ret;

xpcs driver needs to handle phy or phy_device depending on the phy?

Best regards,
Chng Jack Ping

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