Skip to content

Commit

Permalink
Merge branch 'stmmac-cleanups-for-stmmac_mdio_reset'
Browse files Browse the repository at this point in the history
Martin Blumenstingl says:

====================
stmmac: cleanups for stmmac_mdio_reset

This is a successor to my previous series "stmmac: honor the GPIO flags
for the PHY reset GPIO" from [0]. It contains only the "cleanup"
patches from that series plus some additional cleanups on top.

I broke out the actual GPIO flag handling into a separate patch which
is already part of net-next: "net: stmmac: use GPIO descriptors in
stmmac_mdio_reset" from [1]

I have build and runtime tested this on my ARM Meson8b Odroid-C1.

[0] https://patchwork.kernel.org/cover/10983801/
[1] https://patchwork.ozlabs.org/patch/1114798/
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Jun 16, 2019
2 parents a514862 + fead5b1 commit 4e18a8a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 42 deletions.
52 changes: 16 additions & 36 deletions drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/mii.h>
#include <linux/of.h>
#include <linux/of_mdio.h>
#include <linux/phy.h>
#include <linux/property.h>
#include <linux/slab.h>

#include "dwxgmac2.h"
Expand Down Expand Up @@ -247,50 +247,35 @@ int stmmac_mdio_reset(struct mii_bus *bus)
struct net_device *ndev = bus->priv;
struct stmmac_priv *priv = netdev_priv(ndev);
unsigned int mii_address = priv->hw->mii.addr;
struct stmmac_mdio_bus_data *data = priv->plat->mdio_bus_data;

#ifdef CONFIG_OF
if (priv->device->of_node) {
struct gpio_desc *reset_gpio;
u32 delays[3];

if (data->reset_gpio < 0) {
struct device_node *np = priv->device->of_node;
reset_gpio = devm_gpiod_get_optional(priv->device,
"snps,reset",
GPIOD_OUT_LOW);
if (IS_ERR(reset_gpio))
return PTR_ERR(reset_gpio);

if (!np)
return 0;
device_property_read_u32_array(priv->device,
"snps,reset-delays-us",
delays, ARRAY_SIZE(delays));

reset_gpio = devm_gpiod_get_optional(priv->device,
"snps,reset",
GPIOD_OUT_LOW);
if (IS_ERR(reset_gpio))
return PTR_ERR(reset_gpio);

of_property_read_u32_array(np,
"snps,reset-delays-us", data->delays, 3);
} else {
reset_gpio = gpio_to_desc(data->reset_gpio);

gpiod_direction_output(reset_gpio, 0);
}

if (data->delays[0])
msleep(DIV_ROUND_UP(data->delays[0], 1000));
if (delays[0])
msleep(DIV_ROUND_UP(delays[0], 1000));

gpiod_set_value_cansleep(reset_gpio, 1);
if (data->delays[1])
msleep(DIV_ROUND_UP(data->delays[1], 1000));
if (delays[1])
msleep(DIV_ROUND_UP(delays[1], 1000));

gpiod_set_value_cansleep(reset_gpio, 0);
if (data->delays[2])
msleep(DIV_ROUND_UP(data->delays[2], 1000));
if (delays[2])
msleep(DIV_ROUND_UP(delays[2], 1000));
}
#endif

if (data->phy_reset) {
netdev_dbg(ndev, "stmmac_mdio_reset: calling phy_reset\n");
data->phy_reset(priv->plat->bsp_priv);
}

/* This is a workaround for problems with the STE101P PHY.
* It doesn't complete its reset until at least one clock cycle
* on MDC, so perform a dummy mdio read. To be updated for GMAC4
Expand Down Expand Up @@ -327,11 +312,6 @@ int stmmac_mdio_register(struct net_device *ndev)
if (mdio_bus_data->irqs)
memcpy(new_bus->irq, mdio_bus_data->irqs, sizeof(new_bus->irq));

#ifdef CONFIG_OF
if (priv->device->of_node)
mdio_bus_data->reset_gpio = -1;
#endif

new_bus->name = "stmmac";

if (priv->plat->has_xgmac) {
Expand Down
1 change: 0 additions & 1 deletion drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ static void common_default_data(struct plat_stmmacenet_data *plat)
plat->has_gmac = 1;
plat->force_sf_dma_mode = 1;

plat->mdio_bus_data->phy_reset = NULL;
plat->mdio_bus_data->phy_mask = 0;

/* Set default value for multicast hash bins */
Expand Down
5 changes: 0 additions & 5 deletions include/linux/stmmac.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,14 +92,9 @@
/* Platfrom data for platform device structure's platform_data field */

struct stmmac_mdio_bus_data {
int (*phy_reset)(void *priv);
unsigned int phy_mask;
int *irqs;
int probed_phy_irq;
#ifdef CONFIG_OF
int reset_gpio;
u32 delays[3];
#endif
};

struct stmmac_dma_cfg {
Expand Down

0 comments on commit 4e18a8a

Please sign in to comment.