From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lothar =?UTF-8?B?V2HDn21hbm4=?= Date: Tue, 20 Mar 2018 09:51:50 +0100 Subject: [U-Boot] [PATCH 4/5] net: fec: sharing MDIO for two enet controllers In-Reply-To: <20180310011957.21801-4-peng.fan@nxp.com> References: <20180310011957.21801-1-peng.fan@nxp.com> <20180310011957.21801-4-peng.fan@nxp.com> Message-ID: <20180320095150.6d1b2f62@karo-electronics.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: quoted-printable To: u-boot@lists.denx.de Hi, On Sat, 10 Mar 2018 09:19:56 +0800 Peng Fan wrote: > On i.MX6SX, 6UL and 7D, there are two enet controllers each has a > MDIO port. But Some boards share one MDIO port for the two enets. So > introduce a configuration CONFIG_FEC_MXC_MDIO_BASE to indicate > the MDIO port for sharing. >=20 This is already the case for i.MX28. There is no need to implement a second mechanism to achieve the same result. > Signed-off-by: Peng Fan > --- > drivers/net/Kconfig | 7 +++++++ > drivers/net/fec_mxc.c | 9 +++++++++ > 2 files changed, 16 insertions(+) >=20 > diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig > index de1947ccc1..3a468a7c59 100644 > --- a/drivers/net/Kconfig > +++ b/drivers/net/Kconfig > @@ -147,6 +147,13 @@ config ETHOC > help > This MAC is present in OpenRISC and Xtensa XTFPGA boards. > =20 > +config FEC_MXC_MDIO_BASE > + hex "MDIO base address for the FEC controller" > + depends on FEC_MXC > + help > + This specifies the MDIO registers base address. It is used when > + two FEC controllers share MDIO bus. > + > config FEC_MXC > bool "FEC Ethernet controller" > depends on MX5 || MX6 > diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c > index 2c3171ecc9..e8f8fef66a 100644 > --- a/drivers/net/fec_mxc.c > +++ b/drivers/net/fec_mxc.c > @@ -1161,8 +1161,12 @@ int fecmxc_initialize_multi(bd_t *bd, int dev_id, = int phy_id, uint32_t addr) > * Only the first one can access the MDIO bus. > */ > base_mii =3D MXS_ENET0_BASE; > +#else > +#ifdef CONFIG_FEC_MXC_MDIO_BASE > + base_mii =3D CONFIG_FEC_MXC_MDIO_BASE; > #else > base_mii =3D addr; > +#endif > #endif > debug("eth_init: fec_probe(bd, %i, %i) @ %08x\n", dev_id, phy_id, addr); > bus =3D fec_get_miibus(base_mii, dev_id); > @@ -1274,7 +1278,12 @@ static int fecmxc_probe(struct udevice *dev) > fec_reg_setup(priv); > =20 > priv->dev_id =3D dev->seq; > + > +#ifdef CONFIG_FEC_MXC_MDIO_BASE > + bus =3D fec_get_miibus((ulong)CONFIG_FEC_MXC_MDIO_BASE, dev->seq); > +#else > bus =3D fec_get_miibus((ulong)priv->eth, dev->seq); > +#endif > if (!bus) { > ret =3D -ENOMEM; > goto err_mii; Lothar Wa=C3=9Fmann