From: Antoine Tenart <antoine.tenart@bootlin.com>
To: davem@davemloft.net, kishon@ti.com, linux@armlinux.org.uk,
gregory.clement@bootlin.com, andrew@lunn.ch,
jason@lakedaemon.net, sebastian.hesselbarth@gmail.com
Cc: Antoine Tenart <antoine.tenart@bootlin.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
thomas.petazzoni@bootlin.com, maxime.chevallier@bootlin.com,
miquel.raynal@bootlin.com, nadavh@marvell.com,
stefanc@marvell.com, ymarkman@marvell.com, mw@semihalf.com,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH net-next v2 07/13] phy: cp110-comphy: 2.5G SGMII mode
Date: Fri, 4 May 2018 15:56:37 +0200 [thread overview]
Message-ID: <20180504135643.23466-8-antoine.tenart@bootlin.com> (raw)
In-Reply-To: <20180504135643.23466-1-antoine.tenart@bootlin.com>
This patch allow the CP110 comphy to configure some lanes in the
2.5G SGMII mode. This mode is quite close to SGMII and uses nearly the
same code path.
Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com>
---
drivers/phy/marvell/phy-mvebu-cp110-comphy.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/drivers/phy/marvell/phy-mvebu-cp110-comphy.c b/drivers/phy/marvell/phy-mvebu-cp110-comphy.c
index a0d522154cdf..4ef429250d7b 100644
--- a/drivers/phy/marvell/phy-mvebu-cp110-comphy.c
+++ b/drivers/phy/marvell/phy-mvebu-cp110-comphy.c
@@ -135,19 +135,25 @@ struct mvebu_comhy_conf {
static const struct mvebu_comhy_conf mvebu_comphy_cp110_modes[] = {
/* lane 0 */
MVEBU_COMPHY_CONF(0, 1, PHY_MODE_SGMII, 0x1),
+ MVEBU_COMPHY_CONF(0, 1, PHY_MODE_2500SGMII, 0x1),
/* lane 1 */
MVEBU_COMPHY_CONF(1, 2, PHY_MODE_SGMII, 0x1),
+ MVEBU_COMPHY_CONF(1, 2, PHY_MODE_2500SGMII, 0x1),
/* lane 2 */
MVEBU_COMPHY_CONF(2, 0, PHY_MODE_SGMII, 0x1),
+ MVEBU_COMPHY_CONF(2, 0, PHY_MODE_2500SGMII, 0x1),
MVEBU_COMPHY_CONF(2, 0, PHY_MODE_10GKR, 0x1),
/* lane 3 */
MVEBU_COMPHY_CONF(3, 1, PHY_MODE_SGMII, 0x2),
+ MVEBU_COMPHY_CONF(3, 1, PHY_MODE_2500SGMII, 0x2),
/* lane 4 */
MVEBU_COMPHY_CONF(4, 0, PHY_MODE_SGMII, 0x2),
+ MVEBU_COMPHY_CONF(4, 0, PHY_MODE_2500SGMII, 0x2),
MVEBU_COMPHY_CONF(4, 0, PHY_MODE_10GKR, 0x2),
MVEBU_COMPHY_CONF(4, 1, PHY_MODE_SGMII, 0x1),
/* lane 5 */
MVEBU_COMPHY_CONF(5, 2, PHY_MODE_SGMII, 0x1),
+ MVEBU_COMPHY_CONF(5, 2, PHY_MODE_2500SGMII, 0x1),
};
struct mvebu_comphy_priv {
@@ -206,6 +212,10 @@ static void mvebu_comphy_ethernet_init_reset(struct mvebu_comphy_lane *lane,
if (mode == PHY_MODE_10GKR)
val |= MVEBU_COMPHY_SERDES_CFG0_GEN_RX(0xe) |
MVEBU_COMPHY_SERDES_CFG0_GEN_TX(0xe);
+ else if (mode == PHY_MODE_2500SGMII)
+ val |= MVEBU_COMPHY_SERDES_CFG0_GEN_RX(0x8) |
+ MVEBU_COMPHY_SERDES_CFG0_GEN_TX(0x8) |
+ MVEBU_COMPHY_SERDES_CFG0_HALF_BUS;
else if (mode == PHY_MODE_SGMII)
val |= MVEBU_COMPHY_SERDES_CFG0_GEN_RX(0x6) |
MVEBU_COMPHY_SERDES_CFG0_GEN_TX(0x6) |
@@ -296,13 +306,13 @@ static int mvebu_comphy_init_plls(struct mvebu_comphy_lane *lane,
return 0;
}
-static int mvebu_comphy_set_mode_sgmii(struct phy *phy)
+static int mvebu_comphy_set_mode_sgmii(struct phy *phy, enum phy_mode mode)
{
struct mvebu_comphy_lane *lane = phy_get_drvdata(phy);
struct mvebu_comphy_priv *priv = lane->priv;
u32 val;
- mvebu_comphy_ethernet_init_reset(lane, PHY_MODE_SGMII);
+ mvebu_comphy_ethernet_init_reset(lane, mode);
val = readl(priv->base + MVEBU_COMPHY_RX_CTRL1(lane->id));
val &= ~MVEBU_COMPHY_RX_CTRL1_CLK8T_EN;
@@ -487,7 +497,8 @@ static int mvebu_comphy_power_on(struct phy *phy)
switch (lane->mode) {
case PHY_MODE_SGMII:
- ret = mvebu_comphy_set_mode_sgmii(phy);
+ case PHY_MODE_2500SGMII:
+ ret = mvebu_comphy_set_mode_sgmii(phy, lane->mode);
break;
case PHY_MODE_10GKR:
ret = mvebu_comphy_set_mode_10gkr(phy);
--
2.17.0
next prev parent reply other threads:[~2018-05-04 14:03 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-04 13:56 [PATCH net-next v2 00/13] net: mvpp2: phylink conversion Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 01/13] net: phy: sfp: make the i2c-bus property really optional Antoine Tenart
2018-05-04 17:03 ` Florian Fainelli
2018-05-04 17:19 ` Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 02/13] net: phy: sfp: handle non-wired SFP connectors Antoine Tenart
2018-05-04 17:04 ` Florian Fainelli
2018-05-04 17:17 ` Andrew Lunn
2018-05-04 17:23 ` Antoine Tenart
2018-05-05 15:39 ` Thomas Petazzoni
2018-05-05 17:48 ` Andrew Lunn
2018-05-08 11:52 ` Russell King - ARM Linux
2018-05-14 9:26 ` Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 03/13] net: phy: sfp: warn the user when no tx_disable pin is available Antoine Tenart
2018-05-04 17:07 ` Florian Fainelli
2018-05-04 17:14 ` Andrew Lunn
2018-05-05 20:38 ` Florian Fainelli
2018-05-05 20:52 ` Andrew Lunn
2018-05-08 12:45 ` Russell King - ARM Linux
2018-05-08 11:53 ` Russell King - ARM Linux
2018-05-04 13:56 ` [PATCH net-next v2 04/13] net: mvpp2: align the ethtool ops definition Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 05/13] net: mvpp2: phylink support Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 06/13] phy: add 2.5G SGMII mode to the phy_mode enum Antoine Tenart
2018-05-08 12:34 ` Russell King - ARM Linux
2018-05-14 8:37 ` Antoine Tenart
2018-05-04 13:56 ` Antoine Tenart [this message]
2018-05-04 13:56 ` [PATCH net-next v2 08/13] net: mvpp2: 1000baseX support Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 09/13] net: mvpp2: 2500baseX support Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 10/13] arm64: dts: marvell: mcbin: add 10G SFP support Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 11/13] arm64: dts: marvell: mcbin: enable the fourth network interface Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 12/13] arm64: dts: marvell: 7040-db: describe the 10G SFP cage Antoine Tenart
2018-05-04 13:56 ` [PATCH net-next v2 13/13] arm64: dts: marvell: 8040-db: describe the 10G SFP cages Antoine Tenart
2018-05-08 3:18 ` [PATCH net-next v2 00/13] net: mvpp2: phylink conversion David Miller
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=20180504135643.23466-8-antoine.tenart@bootlin.com \
--to=antoine.tenart@bootlin.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=gregory.clement@bootlin.com \
--cc=jason@lakedaemon.net \
--cc=kishon@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maxime.chevallier@bootlin.com \
--cc=miquel.raynal@bootlin.com \
--cc=mw@semihalf.com \
--cc=nadavh@marvell.com \
--cc=netdev@vger.kernel.org \
--cc=sebastian.hesselbarth@gmail.com \
--cc=stefanc@marvell.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=ymarkman@marvell.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).