From 66d027e22c55534135a43da794d31fcc98509913 Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Mon, 27 Jun 2016 13:17:51 +0300 Subject: net: designware: Make driver independent from DM_GPIO again Commit 90b7fc924adf "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 Cc: Simon Glass Cc: Beniamino Galvani Cc: Joe Hershberger Cc: Sjoerd Simons Cc: Sonic Zhang Cc: Bin Meng Cc: Marek Vasut Reviewed-by: Simon Glass Acked-by: Joe Hershberger --- drivers/net/designware.c | 10 ++++++++-- drivers/net/designware.h | 7 ++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'drivers') diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 8858f0768a..8ba72e30b1 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -80,7 +80,7 @@ static int dw_mdio_write(struct mii_dev *bus, int addr, int devad, int reg, return ret; } -#if CONFIG_DM_ETH +#if defined(CONFIG_DM_ETH) && defined(CONFIG_DM_GPIO) static int dw_mdio_reset(struct mii_dev *bus) { 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->write = dw_mdio_write; 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; #endif @@ -690,11 +690,15 @@ static const struct eth_ops designware_eth_ops = { static int designware_eth_ofdata_to_platdata(struct udevice *dev) { struct dw_eth_pdata *dw_pdata = dev_get_platdata(dev); +#ifdef CONFIG_DM_GPIO struct dw_eth_dev *priv = dev_get_priv(dev); +#endif struct eth_pdata *pdata = &dw_pdata->eth_pdata; const char *phy_mode; const fdt32_t *cell; +#ifdef CONFIG_DM_GPIO int reset_flags = GPIOD_IS_OUT; +#endif int ret = 0; pdata->iobase = dev_get_addr(dev); @@ -712,6 +716,7 @@ static int designware_eth_ofdata_to_platdata(struct udevice *dev) if (cell) pdata->max_speed = fdt32_to_cpu(*cell); +#ifdef CONFIG_DM_GPIO if (fdtdec_get_bool(gd->fdt_blob, dev->of_offset, "snps,reset-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) { ret = 0; } +#endif return ret; } diff --git a/drivers/net/designware.h b/drivers/net/designware.h index 51ba769cfb..d345c5b0c3 100644 --- a/drivers/net/designware.h +++ b/drivers/net/designware.h @@ -8,7 +8,9 @@ #ifndef _DW_ETH_H #define _DW_ETH_H -#include +#ifdef CONFIG_DM_GPIO +#include +#endif #define CONFIG_TX_DESCR_NUM 16 #define CONFIG_RX_DESCR_NUM 16 @@ -234,7 +236,10 @@ struct dw_eth_dev { #ifndef CONFIG_DM_ETH struct eth_device *dev; #endif +#ifdef CONFIG_DM_GPIO struct gpio_desc reset_gpio; +#endif + struct phy_device *phydev; struct mii_dev *bus; }; -- cgit v1.2.1 From 19c9ddaa4f41f6f0bc5cf2991f24fc178c6e56ed Mon Sep 17 00:00:00 2001 From: Mingkai Hu Date: Fri, 1 Jul 2016 19:03:23 +0800 Subject: driver: net: phylib: add support for aquantia AQR106/107 PHY This patch adds support for aquantia AQR106/107 PHY. Signed-off-by: Mingkai Hu Signed-off-by: Gong Qianyu Acked-by: Joe Hershberger --- drivers/net/phy/aquantia.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'drivers') diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia.c index f90c2ae3bb..ad12f6d61f 100644 --- a/drivers/net/phy/aquantia.c +++ b/drivers/net/phy/aquantia.c @@ -147,6 +147,32 @@ struct phy_driver aqr105_driver = { .shutdown = &gen10g_shutdown, }; +struct phy_driver aqr106_driver = { + .name = "Aquantia AQR106", + .uid = 0x3a1b4d0, + .mask = 0xfffffff0, + .features = PHY_10G_FEATURES, + .mmds = (MDIO_MMD_PMAPMD | MDIO_MMD_PCS| + MDIO_MMD_PHYXS | MDIO_MMD_AN | + MDIO_MMD_VEND1), + .config = &aquantia_config, + .startup = &aquantia_startup, + .shutdown = &gen10g_shutdown, +}; + +struct phy_driver aqr107_driver = { + .name = "Aquantia AQR107", + .uid = 0x3a1b4e0, + .mask = 0xfffffff0, + .features = PHY_10G_FEATURES, + .mmds = (MDIO_MMD_PMAPMD | MDIO_MMD_PCS| + MDIO_MMD_PHYXS | MDIO_MMD_AN | + MDIO_MMD_VEND1), + .config = &aquantia_config, + .startup = &aquantia_startup, + .shutdown = &gen10g_shutdown, +}; + struct phy_driver aqr405_driver = { .name = "Aquantia AQR405", .uid = 0x3a1b4b2, @@ -165,6 +191,8 @@ int phy_aquantia_init(void) phy_register(&aq1202_driver); phy_register(&aq2104_driver); phy_register(&aqr105_driver); + phy_register(&aqr106_driver); + phy_register(&aqr107_driver); phy_register(&aqr405_driver); return 0; -- cgit v1.2.1 From 4c64c4db3b87818318ed8b4cd6907c508aaf04ce Mon Sep 17 00:00:00 2001 From: Oleksandr Tymoshenko Date: Fri, 1 Jul 2016 13:22:00 -0700 Subject: net: rtl8169: Fix return value for rtl_send_common Return value of rtl_send_common propogates unmodified all the way up to eth_send and further to API consumer if CONFIG_API is enabled. Previously rtl_send_common returned number of bytes sent on success which was erroneouly detected as error condition by API consumers that checked for operation success by comparing return value with 0. Switch rtl_send_common to use common convention: return 0 on success and negative value for failure. Cc: Stephen Warren Cc: Joe Hershberger Signed-off-by: Oleksandr Tymoshenko Reviewed-by: Simon Glass Acked-by: Joe Hershberger --- drivers/net/rtl8169.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c index 843b083f8f..1cc0b40935 100644 --- a/drivers/net/rtl8169.c +++ b/drivers/net/rtl8169.c @@ -666,12 +666,12 @@ static int rtl_send_common(pci_dev_t dev, unsigned long dev_iobase, puts("tx timeout/error\n"); printf("%s elapsed time : %lu\n", __func__, currticks()-stime); #endif - ret = 0; + ret = -ETIMEDOUT; } else { #ifdef DEBUG_RTL8169_TX puts("tx done\n"); #endif - ret = length; + ret = 0; } /* Delay to make net console (nc) work properly */ udelay(20); -- cgit v1.2.1