From: Andrew Lunn <andrew@lunn.ch>
To: Parshuram Thombare <pthombar@cadence.com>
Cc: nicolas.ferre@microchip.com, davem@davemloft.net,
f.fainelli@gmail.com, netdev@vger.kernel.org,
hkallweit1@gmail.com, linux-kernel@vger.kernel.org,
rafalc@cadence.com, aniljoy@cadence.com, piotrs@cadence.com
Subject: Re: [PATCH 2/6] net: macb: add support for sgmii MAC-PHY interface
Date: Mon, 17 Jun 2019 17:01:45 +0200 [thread overview]
Message-ID: <20190617150145.GF25211@lunn.ch> (raw)
In-Reply-To: <1560642409-27074-1-git-send-email-pthombar@cadence.com>
> @@ -159,6 +160,9 @@
> #define GEM_PEFTN 0x01f4 /* PTP Peer Event Frame Tx Ns */
> #define GEM_PEFRSL 0x01f8 /* PTP Peer Event Frame Rx Sec Low */
> #define GEM_PEFRN 0x01fc /* PTP Peer Event Frame Rx Ns */
> +#define GEM_PCS_CTRL 0x0200 /* PCS Control */
> +#define GEM_PCS_STATUS 0x0204 /* PCS Status */
> +#define GEM_PCS_AN_LP_BASE 0x0214 /* PCS AN LP BASE*/
It looks like there are some space vs tab issues here and else where.
> static int gem_phylink_mac_link_state(struct phylink_config *pl_config,
> struct phylink_link_state *state)
> {
> + u32 status;
> struct net_device *netdev = to_net_dev(pl_config->dev);
> struct macb *bp = netdev_priv(netdev);
Reverse christmas tree please, here and everywhere you add new
variables.
>
> - state->speed = bp->speed;
> - state->duplex = bp->duplex;
> - state->link = bp->link;
> + if (bp->phy_interface == PHY_INTERFACE_MODE_SGMII) {
> + status = gem_readl(bp, PCS_STATUS);
> + state->an_complete = GEM_BFEXT(PCS_STATUS_AN_DONE, status);
> + status = gem_readl(bp, PCS_AN_LP_BASE);
> + switch (GEM_BFEXT(PCS_AN_LP_BASE_SPEED, status)) {
> + case 0:
> + state->speed = 10;
> + break;
> + case 1:
> + state->speed = 100;
> + break;
> + case 2:
> + state->speed = 1000;
> + break;
> + default:
> + break;
It would be nice to use SPEED_10, SPEED_100, etc.
> @@ -494,17 +551,23 @@ static void gem_mac_config(struct phylink_config *pl_config, unsigned int mode,
> reg &= ~(MACB_BIT(SPD) | MACB_BIT(FD));
> if (macb_is_gem(bp))
> reg &= ~GEM_BIT(GBE);
> -
> if (state->duplex)
> reg |= MACB_BIT(FD);
> - if (state->speed == SPEED_100)
> - reg |= MACB_BIT(SPD);
> - if (state->speed == SPEED_1000 &&
> - bp->caps & MACB_CAPS_GIGABIT_MODE_AVAILABLE)
> - reg |= GEM_BIT(GBE);
> -
> macb_or_gem_writel(bp, NCFGR, reg);
>
> + if (state->speed == SPEED_2500) {
> + gem_writel(bp, NCFGR, GEM_BIT(GBE) |
> + gem_readl(bp, NCFGR));
> + gem_writel(bp, NCR, GEM_BIT(TWO_PT_FIVE_GIG) |
> + gem_readl(bp, NCR));
> + } else if (state->speed == SPEED_1000) {
> + gem_writel(bp, NCFGR, GEM_BIT(GBE) |
> + gem_readl(bp, NCFGR));
> + } else if (state->speed == SPEED_100) {
> + macb_writel(bp, NCFGR, MACB_BIT(SPD) |
> + macb_readl(bp, NCFGR));
> + }
Maybe a switch statement?
> @@ -4232,11 +4327,37 @@ static int macb_probe(struct platform_device *pdev)
> }
>
> err = of_get_phy_mode(np);
The following code would be more readable if you replaced err with
phy_mode, or interface.
> - if (err < 0)
> + if (err < 0) {
> /* not found in DT, MII by default */
> bp->phy_interface = PHY_INTERFACE_MODE_MII;
> - else
> + } else if (bp->caps & MACB_CAPS_MACB_IS_GEM_GXL) {
> + u32 interface_supported = 1;
> +
> + if (err == PHY_INTERFACE_MODE_SGMII ||
> + err == PHY_INTERFACE_MODE_1000BASEX ||
> + err == PHY_INTERFACE_MODE_2500BASEX) {
> + if (!(bp->caps & MACB_CAPS_PCS))
> + interface_supported = 0;
> + } else if (err == PHY_INTERFACE_MODE_GMII ||
> + err == PHY_INTERFACE_MODE_RGMII) {
> + if (!macb_is_gem(bp))
> + interface_supported = 0;
> + } else if (err != PHY_INTERFACE_MODE_RMII &&
> + err != PHY_INTERFACE_MODE_MII) {
> + /* Add new mode before this */
> + interface_supported = 0;
> + }
> +
> + if (!interface_supported) {
> + netdev_err(dev, "Phy mode %s not supported",
> + phy_modes(err));
> + goto err_out_free_netdev;
> + }
> +
> bp->phy_interface = err;
> + } else {
> + bp->phy_interface = err;
> + }
Andrew
next prev parent reply other threads:[~2019-06-17 15:01 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-15 23:45 [PATCH 0/6] net: macb patch set cover letter Parshuram Thombare
2019-06-15 23:46 ` [PATCH 1/6] net: macb: add phylink support Parshuram Thombare
2019-06-15 23:46 ` [PATCH 2/6] net: macb: add support for sgmii MAC-PHY interface Parshuram Thombare
2019-06-15 23:47 ` [PATCH 3/6] net: macb: add PHY configuration in MACB PCI wrapper Parshuram Thombare
2019-06-15 23:48 ` [PATCH 4/6] net: macb: add support for c45 PHY Parshuram Thombare
2019-06-15 23:48 ` [PATCH 5/6] net: macb: add support for high speed interface Parshuram Thombare
2019-06-15 23:49 ` [PATCH 6/6] net: macb: parameter added to cadence ethernet controller DT binding Parshuram Thombare
2019-06-17 15:21 ` Andrew Lunn
2019-06-18 18:19 ` Parshuram Raju Thombare
2019-06-18 18:45 ` [PATCH v2 " Parshuram Thombare
2019-06-18 19:47 ` Florian Fainelli
2019-06-19 6:08 ` Parshuram Raju Thombare
2019-06-17 15:19 ` [PATCH 5/6] net: macb: add support for high speed interface Andrew Lunn
2019-06-18 18:18 ` Parshuram Raju Thombare
2019-06-18 18:44 ` [PATCH v2 " Parshuram Thombare
2019-06-18 18:43 ` [PATCH v2 4/6] net: macb: add support for c45 PHY Parshuram Thombare
2019-06-17 15:01 ` Andrew Lunn [this message]
2019-06-18 8:37 ` [PATCH 2/6] net: macb: add support for sgmii MAC-PHY interface Parshuram Raju Thombare
2019-06-17 17:42 ` [PATCH 1/6] net: macb: add phylink support Andrew Lunn
2019-06-18 18:22 ` Parshuram Raju Thombare
2019-06-18 18:41 ` [PATCH v2 " Parshuram Thombare
2019-06-18 21:32 ` Andrew Lunn
2019-06-19 8:28 ` Parshuram Raju Thombare
2019-06-16 6:56 ` [PATCH 0/6] net: macb patch set cover letter Parshuram Raju Thombare
2019-06-17 15:04 ` Andrew Lunn
2019-06-18 18:12 ` Parshuram Raju Thombare
2019-06-17 15:08 ` Andrew Lunn
2019-06-18 18:15 ` Parshuram Raju Thombare
[not found] <1560639680-19049-1-git-send-email-pthombar@cadence.com>
2019-06-16 7:04 ` [PATCH 2/6] net: macb: add support for sgmii MAC-PHY interface Parshuram Thombare
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190617150145.GF25211@lunn.ch \
--to=andrew@lunn.ch \
--cc=aniljoy@cadence.com \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nicolas.ferre@microchip.com \
--cc=piotrs@cadence.com \
--cc=pthombar@cadence.com \
--cc=rafalc@cadence.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.