summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Oltean <vladimir.oltean@nxp.com>2020-01-06 14:30:58 +0200
committerJason Liu <jason.hui.liu@nxp.com>2020-02-26 04:17:34 +0800
commitb3a6ebfef696673ec94d0b61463ae47f8308bb1b (patch)
tree598e19f301f339b6258328704b700a61d7996c46
parent5ee24291877cf7a78ee56e858a2b0460f11c4e64 (diff)
Revert "net: mscc: ocelot: do not force Felix MACs at lower speeds than gigabit"
This reverts commit f3ebad1269aad8a04710e84dc1cd5de485e5fec4. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> (cherry picked from commit 7a7928a5246b0bd1c44c6a015d8925fb576020ac)
-rw-r--r--drivers/net/dsa/ocelot/felix.c1
-rw-r--r--drivers/net/dsa/ocelot/felix.h1
-rw-r--r--drivers/net/dsa/ocelot/felix_vsc9959.c1
-rw-r--r--drivers/net/ethernet/mscc/ocelot.c32
-rw-r--r--include/soc/mscc/ocelot.h7
5 files changed, 14 insertions, 28 deletions
diff --git a/drivers/net/dsa/ocelot/felix.c b/drivers/net/dsa/ocelot/felix.c
index 4077df10c18c..ca0f3e30ad7e 100644
--- a/drivers/net/dsa/ocelot/felix.c
+++ b/drivers/net/dsa/ocelot/felix.c
@@ -249,7 +249,6 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports)
ocelot->num_stats = felix->info->num_stats;
ocelot->shared_queue_sz = felix->info->shared_queue_sz;
ocelot->ops = felix->info->ops;
- ocelot->quirks = felix->info->quirks;
base = pci_resource_start(felix->pdev, felix->info->pci_bar);
diff --git a/drivers/net/dsa/ocelot/felix.h b/drivers/net/dsa/ocelot/felix.h
index 6649c0cbadd2..204296e51d0c 100644
--- a/drivers/net/dsa/ocelot/felix.h
+++ b/drivers/net/dsa/ocelot/felix.h
@@ -18,7 +18,6 @@ struct felix_info {
unsigned int num_stats;
int num_ports;
int pci_bar;
- unsigned long quirks;
};
extern struct felix_info felix_info_vsc9959;
diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelot/felix_vsc9959.c
index cbbada2fe692..ac91ede54178 100644
--- a/drivers/net/dsa/ocelot/felix_vsc9959.c
+++ b/drivers/net/dsa/ocelot/felix_vsc9959.c
@@ -584,5 +584,4 @@ struct felix_info felix_info_vsc9959 = {
.shared_queue_sz = 128 * 1024,
.num_ports = 6,
.pci_bar = 4,
- .quirks = OCELOT_PCS_PERFORMS_RATE_ADAPTATION,
};
diff --git a/drivers/net/ethernet/mscc/ocelot.c b/drivers/net/ethernet/mscc/ocelot.c
index b9bdc435361f..88fe353b4465 100644
--- a/drivers/net/ethernet/mscc/ocelot.c
+++ b/drivers/net/ethernet/mscc/ocelot.c
@@ -409,32 +409,27 @@ static u16 ocelot_wm_enc(u16 value)
void ocelot_adjust_link(struct ocelot *ocelot, int port,
struct phy_device *phydev)
{
- int speed, mac_speed, mac_mode = DEV_MAC_MODE_CFG_FDX_ENA;
struct ocelot_port *ocelot_port = ocelot->ports[port];
+ int speed, mode = 0;
- if (ocelot->quirks & OCELOT_PCS_PERFORMS_RATE_ADAPTATION)
- speed = SPEED_1000;
- else
- speed = phydev->speed;
-
- switch (speed) {
+ switch (phydev->speed) {
case SPEED_10:
- mac_speed = OCELOT_SPEED_10;
+ speed = OCELOT_SPEED_10;
break;
case SPEED_100:
- mac_speed = OCELOT_SPEED_100;
+ speed = OCELOT_SPEED_100;
break;
case SPEED_1000:
- mac_speed = OCELOT_SPEED_1000;
- mac_mode |= DEV_MAC_MODE_CFG_GIGA_MODE_ENA;
+ speed = OCELOT_SPEED_1000;
+ mode = DEV_MAC_MODE_CFG_GIGA_MODE_ENA;
break;
case SPEED_2500:
- mac_speed = OCELOT_SPEED_2500;
- mac_mode |= DEV_MAC_MODE_CFG_GIGA_MODE_ENA;
+ speed = OCELOT_SPEED_2500;
+ mode = DEV_MAC_MODE_CFG_GIGA_MODE_ENA;
break;
default:
dev_err(ocelot->dev, "Unsupported PHY speed on port %d: %d\n",
- port, speed);
+ port, phydev->speed);
return;
}
@@ -444,7 +439,8 @@ void ocelot_adjust_link(struct ocelot *ocelot, int port,
return;
/* Only full duplex supported for now */
- ocelot_port_writel(ocelot_port, mac_mode, DEV_MAC_MODE_CFG);
+ ocelot_port_writel(ocelot_port, DEV_MAC_MODE_CFG_FDX_ENA |
+ mode, DEV_MAC_MODE_CFG);
if (ocelot->ops->pcs_init)
ocelot->ops->pcs_init(ocelot, port);
@@ -455,11 +451,11 @@ void ocelot_adjust_link(struct ocelot *ocelot, int port,
/* Take MAC, Port, Phy (intern) and PCS (SGMII/Serdes) clock out of
* reset */
- ocelot_port_writel(ocelot_port, DEV_CLOCK_CFG_LINK_SPEED(mac_speed),
+ ocelot_port_writel(ocelot_port, DEV_CLOCK_CFG_LINK_SPEED(speed),
DEV_CLOCK_CFG);
/* No PFC */
- ocelot_write_gix(ocelot, ANA_PFC_PFC_CFG_FC_LINK_SPEED(mac_speed),
+ ocelot_write_gix(ocelot, ANA_PFC_PFC_CFG_FC_LINK_SPEED(speed),
ANA_PFC_PFC_CFG, port);
/* Core: Enable port for frame transfer */
@@ -473,7 +469,7 @@ void ocelot_adjust_link(struct ocelot *ocelot, int port,
SYS_MAC_FC_CFG_RX_FC_ENA | SYS_MAC_FC_CFG_TX_FC_ENA |
SYS_MAC_FC_CFG_ZERO_PAUSE_ENA |
SYS_MAC_FC_CFG_FC_LATENCY_CFG(0x7) |
- SYS_MAC_FC_CFG_FC_LINK_SPEED(mac_speed),
+ SYS_MAC_FC_CFG_FC_LINK_SPEED(speed),
SYS_MAC_FC_CFG, port);
ocelot_write_rix(ocelot, 0, ANA_POL_FLOWC, port);
}
diff --git a/include/soc/mscc/ocelot.h b/include/soc/mscc/ocelot.h
index c64cf12d1569..ad0843a0edfd 100644
--- a/include/soc/mscc/ocelot.h
+++ b/include/soc/mscc/ocelot.h
@@ -404,11 +404,6 @@ enum ocelot_tag_prefix {
OCELOT_TAG_PREFIX_LONG,
};
-/* Hardware quirks (differences between switch instantiations) */
-enum {
- OCELOT_PCS_PERFORMS_RATE_ADAPTATION = BIT(0),
-};
-
struct ocelot;
struct ocelot_ops {
@@ -469,8 +464,6 @@ struct ocelot {
struct delayed_work stats_work;
struct workqueue_struct *stats_queue;
- unsigned long quirks;
-
u8 ptp:1;
struct ptp_clock *ptp_clock;
struct ptp_clock_info ptp_info;