From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Warren Date: Wed, 10 Sep 2008 16:08:35 -0700 Subject: [U-Boot] [PATCH v3] Support for multiple SGMII/TBI interfaces for TSEC ethernet In-Reply-To: <1221087977-23936-1-git-send-email-ptyser@xes-inc.com> References: <> <1221087977-23936-1-git-send-email-ptyser@xes-inc.com> Message-ID: <48C85373.5030306@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Andy, You're much more qualified than me to accept or reject this, so if you don't mind, please pick it up. regards, Ben Peter Tyser wrote: > Fix TBI PHY accesses to use the proper offset in CPU register space. The > previous code would incorrectly access the TBI PHY by reading/writing to CPU > register space at the same location as would be used to access external PHYs. > > Signed-off-by: Peter Tyser > --- > > Dohh... v2 of the patch introduced a compile warning. Please apply > this version instead. > > I replaced the hardcoding of CFG_TBIPA_VALUE in the tsec_configure_serdes() > to support possible changes of the TBI addressing down the road, but > kept the default TBI PHY address at CFG_TBIPA_VALUE as Andy Flemming > suggested. > > drivers/net/tsec.c | 10 +++++----- > 1 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c > index f81211a..cc7d528 100644 > --- a/drivers/net/tsec.c > +++ b/drivers/net/tsec.c > @@ -283,11 +283,13 @@ uint tsec_local_mdio_read(volatile tsec_t *phyregs, uint phyid, uint regnum) > /* Configure the TBI for SGMII operation */ > static void tsec_configure_serdes(struct tsec_private *priv) > { > - tsec_local_mdio_write(priv->phyregs, CFG_TBIPA_VALUE, TBI_ANA, > + /* Access TBI PHY registers at given TSEC register offset as opposed to the > + * register offset used for external PHY accesses */ > + tsec_local_mdio_write(priv->regs, priv->regs->tbipa, TBI_ANA, > TBIANA_SETTINGS); > - tsec_local_mdio_write(priv->phyregs, CFG_TBIPA_VALUE, TBI_TBICON, > + tsec_local_mdio_write(priv->regs, priv->regs->tbipa, TBI_TBICON, > TBICON_CLK_SELECT); > - tsec_local_mdio_write(priv->phyregs, CFG_TBIPA_VALUE, TBI_CR, > + tsec_local_mdio_write(priv->regs, priv->regs->tbipa, TBI_CR, > TBICR_SETTINGS); > } > > @@ -299,12 +301,10 @@ static int init_phy(struct eth_device *dev) > { > struct tsec_private *priv = (struct tsec_private *)dev->priv; > struct phy_info *curphy; > - volatile tsec_t *phyregs = priv->phyregs; > volatile tsec_t *regs = priv->regs; > > /* Assign a Physical address to the TBI */ > regs->tbipa = CFG_TBIPA_VALUE; > - phyregs->tbipa = CFG_TBIPA_VALUE; > asm("sync"); > > /* Reset MII (due to new addresses) */ >