| From aac232a511428a627c56fd96690b110dfea06208 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 16 Jun 2020 10:31:40 +0200 |
| Subject: net: ethernet: mvneta: Add 2500BaseX support for SoCs without comphy |
| |
| From: Sascha Hauer <s.hauer@pengutronix.de> |
| |
| [ Upstream commit 1a642ca7f38992b086101fe204a1ae3c90ed8016 ] |
| |
| The older SoCs like Armada XP support a 2500BaseX mode in the datasheets |
| referred to as DR-SGMII (Double rated SGMII) or HS-SGMII (High Speed |
| SGMII). This is an upclocked 1000BaseX mode, thus |
| PHY_INTERFACE_MODE_2500BASEX is the appropriate mode define for it. |
| adding support for it merely means writing the correct magic value into |
| the MVNETA_SERDES_CFG register. |
| |
| Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/marvell/mvneta.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c |
| index b0599b205b36e..9799253948281 100644 |
| --- a/drivers/net/ethernet/marvell/mvneta.c |
| +++ b/drivers/net/ethernet/marvell/mvneta.c |
| @@ -108,6 +108,7 @@ |
| #define MVNETA_SERDES_CFG 0x24A0 |
| #define MVNETA_SGMII_SERDES_PROTO 0x0cc7 |
| #define MVNETA_QSGMII_SERDES_PROTO 0x0667 |
| +#define MVNETA_HSGMII_SERDES_PROTO 0x1107 |
| #define MVNETA_TYPE_PRIO 0x24bc |
| #define MVNETA_FORCE_UNI BIT(21) |
| #define MVNETA_TXQ_CMD_1 0x24e4 |
| @@ -3199,6 +3200,11 @@ static int mvneta_config_interface(struct mvneta_port *pp, |
| mvreg_write(pp, MVNETA_SERDES_CFG, |
| MVNETA_SGMII_SERDES_PROTO); |
| break; |
| + |
| + case PHY_INTERFACE_MODE_2500BASEX: |
| + mvreg_write(pp, MVNETA_SERDES_CFG, |
| + MVNETA_HSGMII_SERDES_PROTO); |
| + break; |
| default: |
| return -EINVAL; |
| } |
| -- |
| 2.25.1 |
| |