Hi Sascha, I have attached a fixed version of Patch 1 and 2. Sorry for sending an incomplete patch, thanks, Alexander On Wed, 24 Feb 2016, Sascha Hauer wrote: > Hi Alexander, > > On Sun, Feb 21, 2016 at 07:06:28PM +0100, Alexander Kurz wrote: > > Passing phy configuration to the ep93xx_eth driver was not supported yet > > and will be added with this patch. When no pdata is passed, the probably > > broken default of phy_addr = 0 will be used to maintain compatibility > > with the previous implementation. > > > > Signed-off-by: Alexander Kurz <akurz@xxxxxxxx> > > --- > > drivers/net/ep93xx.c | 14 ++++++++++++-- > > drivers/net/ep93xx.h | 2 ++ > > 2 files changed, 14 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/ep93xx.c b/drivers/net/ep93xx.c > > index 90c12fc..d2458eb 100644 > > --- a/drivers/net/ep93xx.c > > +++ b/drivers/net/ep93xx.c > > @@ -38,6 +38,7 @@ > > #include <linux/types.h> > > #include <mach/ep93xx-regs.h> > > #include <linux/phy.h> > > +#include <ep93xx_eth.h> > > This file is missing. Forgot to git add it? > While at it, could you move it to include/net/ please? > > Thanks > Sascha > > -- > Pengutronix e.K. | | > Industrial Linux Solutions | http://www.pengutronix.de/ | > Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox >
From df439a5ef8af4d04a6f92df6b50bef5bb7f8d383 Mon Sep 17 00:00:00 2001 From: Alexander Kurz <akurz@xxxxxxxx> Date: Sun, 21 Feb 2016 18:03:30 +0100 Subject: [PATCH 1/4] EP93xx eth: allow passing of phy config via platform data Passing phy configuration to the ep93xx_eth driver was not supported yet and will be added with this patch. When no pdata is passed, the probably broken default of phy_addr = 0 will be used to maintain compatibility with the previous implementation. Signed-off-by: Alexander Kurz <akurz@xxxxxxxx> --- drivers/net/ep93xx.c | 14 ++++++++++++-- drivers/net/ep93xx.h | 2 ++ include/net/ep93xx_eth.h | 26 ++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 include/net/ep93xx_eth.h diff --git a/drivers/net/ep93xx.c b/drivers/net/ep93xx.c index 90c12fc..ef534c0 100644 --- a/drivers/net/ep93xx.c +++ b/drivers/net/ep93xx.c @@ -38,6 +38,7 @@ #include <linux/types.h> #include <mach/ep93xx-regs.h> #include <linux/phy.h> +#include <net/ep93xx_eth.h> #include "ep93xx.h" #define EP93XX_MAX_PKT_SIZE 1536 @@ -203,8 +204,8 @@ static int ep93xx_eth_open(struct eth_device *edev) pr_debug("+ep93xx_eth_open\n"); - ret = phy_device_connect(edev, &priv->miibus, 0, NULL, - 0, PHY_INTERFACE_MODE_NA); + ret = phy_device_connect(edev, &priv->miibus, priv->phy_addr, NULL, + 0, priv->interface); if (ret) return ret; @@ -482,6 +483,7 @@ static int ep93xx_eth_set_ethaddr(struct eth_device *edev, static int ep93xx_eth_probe(struct device_d *dev) { + struct ep93xx_eth_platform_data *pdata = (struct ep93xx_eth_platform_data *)dev->platform_data; struct eth_device *edev; struct ep93xx_eth_priv *priv; int ret = -1; @@ -504,6 +506,14 @@ static int ep93xx_eth_probe(struct device_d *dev) edev->set_ethaddr = ep93xx_eth_set_ethaddr; edev->parent = dev; + if (pdata) { + priv->interface = pdata->xcv_type; + priv->phy_addr = pdata->phy_addr; + } else { + priv->interface = PHY_INTERFACE_MODE_NA; + priv->phy_addr = 0; + } + priv->miibus.read = ep93xx_phy_read; priv->miibus.write = ep93xx_phy_write; priv->miibus.parent = dev; diff --git a/drivers/net/ep93xx.h b/drivers/net/ep93xx.h index 89451b8..32ae57f 100644 --- a/drivers/net/ep93xx.h +++ b/drivers/net/ep93xx.h @@ -137,6 +137,8 @@ struct ep93xx_eth_priv { struct tx_descriptor_queue tx_dq; struct tx_status_queue tx_sq; + int phy_addr; + phy_interface_t interface; struct mii_bus miibus; }; diff --git a/include/net/ep93xx_eth.h b/include/net/ep93xx_eth.h new file mode 100644 index 0000000..0fb11d0 --- /dev/null +++ b/include/net/ep93xx_eth.h @@ -0,0 +1,26 @@ +/* + * (C) Copyright 2016 Alexander Kurz <akurz@xxxxxxxx> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#ifndef __NET_EP93XX_ETH_H +#define __NET_EP93XX_ETH_H + +#include <linux/phy.h> + +struct ep93xx_eth_platform_data { + phy_interface_t xcv_type; + int phy_addr; +}; + +#endif /* __NET_EP93XX_ETH_H */ -- 2.1.4
From 69d1cdd4cf512a11f2446a03151c9afbd84020bc Mon Sep 17 00:00:00 2001 From: Alexander Kurz <akurz@xxxxxxxx> Date: Sun, 21 Feb 2016 18:17:33 +0100 Subject: [PATCH 2/4] edb9302 eth: privide proper phy config The evaluation boards EDB9302 and Olimex-CS-E9302 both use a KS8721BL transciever in default strapping which is phy_addr=1 Signed-off-by: Alexander Kurz <akurz@xxxxxxxx> --- arch/arm/boards/edb93xx/edb93xx.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/arm/boards/edb93xx/edb93xx.c b/arch/arm/boards/edb93xx/edb93xx.c index c314320..0fb93d2 100644 --- a/arch/arm/boards/edb93xx/edb93xx.c +++ b/arch/arm/boards/edb93xx/edb93xx.c @@ -27,10 +27,16 @@ #include <malloc.h> #include <generated/mach-types.h> #include <mach/ep93xx-regs.h> +#include <net/ep93xx_eth.h> #include "edb93xx.h" #define DEVCFG_U1EN (1 << 18) +static struct ep93xx_eth_platform_data ep93xx_eth_info = { + .xcv_type = PHY_INTERFACE_MODE_MII, + .phy_addr = 1, +}; + static int ep93xx_mem_init(void) { arm_add_mem_device("ram0", CONFIG_EP93XX_SDRAM_BANK0_BASE, @@ -70,7 +76,7 @@ static int ep93xx_devices_init(void) * CS line 6, data width is 16 bit */ add_generic_device("ep93xx_eth", DEVICE_ID_DYNAMIC, NULL, 0, 0, IORESOURCE_MEM, - NULL); + &ep93xx_eth_info); armlinux_set_architecture(MACH_TYPE); -- 2.1.4
_______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox