Hello Andy, Andy Fleming wrote: > On Thu, Jan 7, 2010 at 2:01 AM, Heiko Schocher <h...@denx.de> wrote: >> If using UCC as Ethernet Controller and type = FAST_ETH, it was >> not possible to switch between 10 and 100 MBit interfaces. This >> patch adds this for following interfaces: >> >> 10_MII >> 10_RMII >> 10_RGMII >> 100_MII >> 100_RMII >> 100_RGMII >> >> Signed-off-by: Heiko Schocher <h...@denx.de> >> --- >> drivers/qe/uec.c | 73 >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 files changed, 73 insertions(+), 0 deletions(-) >> >> diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c >> index db95ada..9851cc4 100644 >> --- a/drivers/qe/uec.c >> +++ b/drivers/qe/uec.c >> @@ -65,6 +65,22 @@ static uec_info_t uec_info[] = { >> >> #define MAXCONTROLLERS (8) >> >> +static char *enet_interface_name[] = { >> + "10_MII", >> + "10_RMII", >> + "10_RGMII", >> + "100_MII", >> + "100_RMII", >> + "100_RGMII", >> + "1000_GMII", >> + "1000_RGMII", >> + "1000_RGMII_ID", >> + "1000_RGMII_RXID", >> + "1000_TBI", >> + "1000_RTBI", >> + "1000_SGMII" >> +}; >> + >> static struct eth_device *devlist[MAXCONTROLLERS]; >> >> u16 phy_read (struct uec_mii_info *mii_info, u16 regnum); >> @@ -497,6 +513,60 @@ bus_fail: >> return err; >> } >> >> +static void adjust_fast_enet_interface(int speed, struct eth_device *dev) >> +{ >> + uec_private_t *uec = (uec_private_t *)dev->priv; >> + uec_t *uec_regs; >> + int change = 0; >> + >> + extern void change_phy_interface_mode(struct eth_device *dev, >> + enet_interface_e mode); >> + uec_regs = uec->uec_regs; >> + >> + switch (speed) { >> + case 100: >> + switch (uec->uec_info->enet_interface) { >> + case ENET_10_MII: >> + case ENET_10_RMII: >> + case ENET_10_RGMII: > > > I know you aren't responsible for this design choice, but I'd love it > if we stopped this sort of thing. There's no sensible reason to unite > speed and interface type into one variable. They are, in fact, two > nearly-independent variables. If they directly corresponded to some
Yes, you are right! That would be the right way ... > register value, it might make sense, but really they encourage a > rigidity of thought about a concept which is much more fluid. The > speed will vary based on the link partner. The interface is usually > hardwired by the board designer, and at most, modifiable at boot time > by DIP switches. Yep, I try to prepare such a patch, which splits this variable in two (If others have no objections). Thanks. bye Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot