net: designware: Make driver independent from DM_GPIO again

Commit 90b7fc924a "net: designware: support phy reset device-tree
bindings" made DW GMAC driver dependent on DM_GPIO by unconditional
usage of purely DM_GPIO stuff like:
 * dm_gpio_XXX()
 * gpio_request_by_name()

But since that driver as of today might be easily used without
DM_GPIO (that's the case for Synopsys AXS10x boards) we're
shielding all DM_GPIO things by ifdefs.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Beniamino Galvani <b.galvani@gmail.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Cc: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Cc: Sonic Zhang <sonic.zhang@analog.com>
Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Marek Vasut <marex@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
Alexey Brodkin 2016-06-27 13:17:51 +03:00 committed by Joe Hershberger
parent 2307ea4053
commit 66d027e22c
2 changed files with 14 additions and 3 deletions

View File

@ -80,7 +80,7 @@ static int dw_mdio_write(struct mii_dev *bus, int addr, int devad, int reg,
return ret; return ret;
} }
#if CONFIG_DM_ETH #if defined(CONFIG_DM_ETH) && defined(CONFIG_DM_GPIO)
static int dw_mdio_reset(struct mii_dev *bus) static int dw_mdio_reset(struct mii_dev *bus)
{ {
struct udevice *dev = bus->priv; struct udevice *dev = bus->priv;
@ -126,7 +126,7 @@ static int dw_mdio_init(const char *name, void *priv)
bus->read = dw_mdio_read; bus->read = dw_mdio_read;
bus->write = dw_mdio_write; bus->write = dw_mdio_write;
snprintf(bus->name, sizeof(bus->name), "%s", name); snprintf(bus->name, sizeof(bus->name), "%s", name);
#ifdef CONFIG_DM_ETH #if defined(CONFIG_DM_ETH) && defined(CONFIG_DM_GPIO)
bus->reset = dw_mdio_reset; bus->reset = dw_mdio_reset;
#endif #endif
@ -690,11 +690,15 @@ static const struct eth_ops designware_eth_ops = {
static int designware_eth_ofdata_to_platdata(struct udevice *dev) static int designware_eth_ofdata_to_platdata(struct udevice *dev)
{ {
struct dw_eth_pdata *dw_pdata = dev_get_platdata(dev); struct dw_eth_pdata *dw_pdata = dev_get_platdata(dev);
#ifdef CONFIG_DM_GPIO
struct dw_eth_dev *priv = dev_get_priv(dev); struct dw_eth_dev *priv = dev_get_priv(dev);
#endif
struct eth_pdata *pdata = &dw_pdata->eth_pdata; struct eth_pdata *pdata = &dw_pdata->eth_pdata;
const char *phy_mode; const char *phy_mode;
const fdt32_t *cell; const fdt32_t *cell;
#ifdef CONFIG_DM_GPIO
int reset_flags = GPIOD_IS_OUT; int reset_flags = GPIOD_IS_OUT;
#endif
int ret = 0; int ret = 0;
pdata->iobase = dev_get_addr(dev); pdata->iobase = dev_get_addr(dev);
@ -712,6 +716,7 @@ static int designware_eth_ofdata_to_platdata(struct udevice *dev)
if (cell) if (cell)
pdata->max_speed = fdt32_to_cpu(*cell); pdata->max_speed = fdt32_to_cpu(*cell);
#ifdef CONFIG_DM_GPIO
if (fdtdec_get_bool(gd->fdt_blob, dev->of_offset, if (fdtdec_get_bool(gd->fdt_blob, dev->of_offset,
"snps,reset-active-low")) "snps,reset-active-low"))
reset_flags |= GPIOD_ACTIVE_LOW; reset_flags |= GPIOD_ACTIVE_LOW;
@ -724,6 +729,7 @@ static int designware_eth_ofdata_to_platdata(struct udevice *dev)
} else if (ret == -ENOENT) { } else if (ret == -ENOENT) {
ret = 0; ret = 0;
} }
#endif
return ret; return ret;
} }

View File

@ -8,7 +8,9 @@
#ifndef _DW_ETH_H #ifndef _DW_ETH_H
#define _DW_ETH_H #define _DW_ETH_H
#include <asm/gpio.h> #ifdef CONFIG_DM_GPIO
#include <asm-generic/gpio.h>
#endif
#define CONFIG_TX_DESCR_NUM 16 #define CONFIG_TX_DESCR_NUM 16
#define CONFIG_RX_DESCR_NUM 16 #define CONFIG_RX_DESCR_NUM 16
@ -234,7 +236,10 @@ struct dw_eth_dev {
#ifndef CONFIG_DM_ETH #ifndef CONFIG_DM_ETH
struct eth_device *dev; struct eth_device *dev;
#endif #endif
#ifdef CONFIG_DM_GPIO
struct gpio_desc reset_gpio; struct gpio_desc reset_gpio;
#endif
struct phy_device *phydev; struct phy_device *phydev;
struct mii_dev *bus; struct mii_dev *bus;
}; };