Skip to content

Commit 6a553b4

Browse files
committed
Merge branch 'stmmac-misc'
Corentin Labbe says: ==================== stmmac: misc patchs This is a follow up of my previous stmmac serie which address some comment done in v2. ==================== Acked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 36a4a50 + c80151e commit 6a553b4

File tree

3 files changed

+71
-69
lines changed

3 files changed

+71
-69
lines changed

drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -442,24 +442,24 @@ static void stmmac_ethtool_gregs(struct net_device *dev,
442442

443443
memset(reg_space, 0x0, REG_SPACE_SIZE);
444444

445-
if (!(priv->plat->has_gmac || priv->plat->has_gmac4)) {
445+
if (priv->plat->has_gmac || priv->plat->has_gmac4) {
446446
/* MAC registers */
447-
for (i = 0; i < 12; i++)
447+
for (i = 0; i < 55; i++)
448448
reg_space[i] = readl(priv->ioaddr + (i * 4));
449449
/* DMA registers */
450-
for (i = 0; i < 9; i++)
451-
reg_space[i + 12] =
450+
for (i = 0; i < 22; i++)
451+
reg_space[i + 55] =
452452
readl(priv->ioaddr + (DMA_BUS_MODE + (i * 4)));
453-
reg_space[22] = readl(priv->ioaddr + DMA_CUR_TX_BUF_ADDR);
454-
reg_space[23] = readl(priv->ioaddr + DMA_CUR_RX_BUF_ADDR);
455453
} else {
456454
/* MAC registers */
457-
for (i = 0; i < 55; i++)
455+
for (i = 0; i < 12; i++)
458456
reg_space[i] = readl(priv->ioaddr + (i * 4));
459457
/* DMA registers */
460-
for (i = 0; i < 22; i++)
461-
reg_space[i + 55] =
458+
for (i = 0; i < 9; i++)
459+
reg_space[i + 12] =
462460
readl(priv->ioaddr + (DMA_BUS_MODE + (i * 4)));
461+
reg_space[22] = readl(priv->ioaddr + DMA_CUR_TX_BUF_ADDR);
462+
reg_space[23] = readl(priv->ioaddr + DMA_CUR_RX_BUF_ADDR);
463463
}
464464
}
465465

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -716,32 +716,36 @@ static void stmmac_adjust_link(struct net_device *dev)
716716
new_state = 1;
717717
switch (phydev->speed) {
718718
case 1000:
719-
if (likely((priv->plat->has_gmac) ||
720-
(priv->plat->has_gmac4)))
719+
if (priv->plat->has_gmac ||
720+
priv->plat->has_gmac4)
721721
ctrl &= ~priv->hw->link.port;
722-
stmmac_hw_fix_mac_speed(priv);
723722
break;
724723
case 100:
724+
if (priv->plat->has_gmac ||
725+
priv->plat->has_gmac4) {
726+
ctrl |= priv->hw->link.port;
727+
ctrl |= priv->hw->link.speed;
728+
} else {
729+
ctrl &= ~priv->hw->link.port;
730+
}
731+
break;
725732
case 10:
726-
if (likely((priv->plat->has_gmac) ||
727-
(priv->plat->has_gmac4))) {
733+
if (priv->plat->has_gmac ||
734+
priv->plat->has_gmac4) {
728735
ctrl |= priv->hw->link.port;
729-
if (phydev->speed == SPEED_100) {
730-
ctrl |= priv->hw->link.speed;
731-
} else {
732-
ctrl &= ~(priv->hw->link.speed);
733-
}
736+
ctrl &= ~(priv->hw->link.speed);
734737
} else {
735738
ctrl &= ~priv->hw->link.port;
736739
}
737-
stmmac_hw_fix_mac_speed(priv);
738740
break;
739741
default:
740742
netif_warn(priv, link, priv->dev,
741743
"broken speed: %d\n", phydev->speed);
744+
phydev->speed = SPEED_UNKNOWN;
742745
break;
743746
}
744-
747+
if (phydev->speed != SPEED_UNKNOWN)
748+
stmmac_hw_fix_mac_speed(priv);
745749
priv->speed = phydev->speed;
746750
}
747751

@@ -754,8 +758,8 @@ static void stmmac_adjust_link(struct net_device *dev)
754758
} else if (priv->oldlink) {
755759
new_state = 1;
756760
priv->oldlink = 0;
757-
priv->speed = 0;
758-
priv->oldduplex = -1;
761+
priv->speed = SPEED_UNKNOWN;
762+
priv->oldduplex = DUPLEX_UNKNOWN;
759763
}
760764

761765
if (new_state && netif_msg_link(priv))
@@ -817,8 +821,8 @@ static int stmmac_init_phy(struct net_device *dev)
817821
int interface = priv->plat->interface;
818822
int max_speed = priv->plat->max_speed;
819823
priv->oldlink = 0;
820-
priv->speed = 0;
821-
priv->oldduplex = -1;
824+
priv->speed = SPEED_UNKNOWN;
825+
priv->oldduplex = DUPLEX_UNKNOWN;
822826

823827
if (priv->plat->phy_node) {
824828
phydev = of_phy_connect(dev, priv->plat->phy_node,
@@ -3434,8 +3438,8 @@ int stmmac_suspend(struct device *dev)
34343438
spin_unlock_irqrestore(&priv->lock, flags);
34353439

34363440
priv->oldlink = 0;
3437-
priv->speed = 0;
3438-
priv->oldduplex = -1;
3441+
priv->speed = SPEED_UNKNOWN;
3442+
priv->oldduplex = DUPLEX_UNKNOWN;
34393443
return 0;
34403444
}
34413445
EXPORT_SYMBOL_GPL(stmmac_suspend);

drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -247,50 +247,48 @@ int stmmac_mdio_register(struct net_device *ndev)
247247
found = 0;
248248
for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
249249
struct phy_device *phydev = mdiobus_get_phy(new_bus, addr);
250+
int act = 0;
251+
char irq_num[4];
252+
char *irq_str;
253+
254+
if (!phydev)
255+
continue;
256+
257+
/*
258+
* If an IRQ was provided to be assigned after
259+
* the bus probe, do it here.
260+
*/
261+
if (!mdio_bus_data->irqs &&
262+
(mdio_bus_data->probed_phy_irq > 0)) {
263+
new_bus->irq[addr] = mdio_bus_data->probed_phy_irq;
264+
phydev->irq = mdio_bus_data->probed_phy_irq;
265+
}
250266

251-
if (phydev) {
252-
int act = 0;
253-
char irq_num[4];
254-
char *irq_str;
255-
256-
/*
257-
* If an IRQ was provided to be assigned after
258-
* the bus probe, do it here.
259-
*/
260-
if ((!mdio_bus_data->irqs) &&
261-
(mdio_bus_data->probed_phy_irq > 0)) {
262-
new_bus->irq[addr] =
263-
mdio_bus_data->probed_phy_irq;
264-
phydev->irq = mdio_bus_data->probed_phy_irq;
265-
}
266-
267-
/*
268-
* If we're going to bind the MAC to this PHY bus,
269-
* and no PHY number was provided to the MAC,
270-
* use the one probed here.
271-
*/
272-
if (priv->plat->phy_addr == -1)
273-
priv->plat->phy_addr = addr;
274-
275-
act = (priv->plat->phy_addr == addr);
276-
switch (phydev->irq) {
277-
case PHY_POLL:
278-
irq_str = "POLL";
279-
break;
280-
case PHY_IGNORE_INTERRUPT:
281-
irq_str = "IGNORE";
282-
break;
283-
default:
284-
sprintf(irq_num, "%d", phydev->irq);
285-
irq_str = irq_num;
286-
break;
287-
}
288-
netdev_info(ndev, "PHY ID %08x at %d IRQ %s (%s)%s\n",
289-
phydev->phy_id, addr,
290-
irq_str, phydev_name(phydev),
291-
act ? " active" : "");
292-
found = 1;
267+
/*
268+
* If we're going to bind the MAC to this PHY bus,
269+
* and no PHY number was provided to the MAC,
270+
* use the one probed here.
271+
*/
272+
if (priv->plat->phy_addr == -1)
273+
priv->plat->phy_addr = addr;
274+
275+
act = (priv->plat->phy_addr == addr);
276+
switch (phydev->irq) {
277+
case PHY_POLL:
278+
irq_str = "POLL";
279+
break;
280+
case PHY_IGNORE_INTERRUPT:
281+
irq_str = "IGNORE";
282+
break;
283+
default:
284+
sprintf(irq_num, "%d", phydev->irq);
285+
irq_str = irq_num;
286+
break;
293287
}
288+
netdev_info(ndev, "PHY ID %08x at %d IRQ %s (%s)%s\n",
289+
phydev->phy_id, addr, irq_str, phydev_name(phydev),
290+
act ? " active" : "");
291+
found = 1;
294292
}
295293

296294
if (!found && !mdio_node) {

0 commit comments

Comments
 (0)