
On Thursday 23 July 2009 08:44:57 Prafulla Wadaskar wrote:
So, is this ethernet port in question connected to switch? Then a forced link (highest speed) should be used.
This is what I was trying to do, but it was through CONGIF_ options and that is applied to both ports, in case we need to force link speed then I need to provide some configurable interface for u-boot kirkwood egiga driver.
We have such an "interface" in the PPC4xx ethernet driver:
drivers/net/4xx_enet.c:
/*--------------------------------------------------------------------+ * Fixed PHY (PHY-less) support for Ethernet Ports. *--------------------------------------------------------------------*/
/* * Some boards do not have a PHY for each ethernet port. These ports * are known as Fixed PHY (or PHY-less) ports. For such ports, set * the appropriate CONFIG_PHY_ADDR equal to CONFIG_FIXED_PHY and * then define CONFIG_SYS_FIXED_PHY_PORTS to define what the speed and * duplex should be for these ports in the board configuration * file. * * For Example: * #define CONFIG_FIXED_PHY 0xFFFFFFFF * * #define CONFIG_PHY_ADDR CONFIG_FIXED_PHY * #define CONFIG_PHY1_ADDR 1 * #define CONFIG_PHY2_ADDR CONFIG_FIXED_PHY * #define CONFIG_PHY3_ADDR 3 * * #define CONFIG_SYS_FIXED_PHY_PORT(devnum,speed,duplex) \ * {devnum, speed, duplex}, * * #define CONFIG_SYS_FIXED_PHY_PORTS \ * CONFIG_SYS_FIXED_PHY_PORT(0,1000,FULL) \ * CONFIG_SYS_FIXED_PHY_PORT(2,100,HALF) */
#ifndef CONFIG_FIXED_PHY #define CONFIG_FIXED_PHY 0xFFFFFFFF /* Fixed PHY (PHY-less) */ #endif
#ifndef CONFIG_SYS_FIXED_PHY_PORTS #define CONFIG_SYS_FIXED_PHY_PORTS /* default is an empty array */ #endif
struct fixed_phy_port { unsigned int devnum; /* ethernet port */ unsigned int speed; /* specified speed 10,100 or 1000 */ unsigned int duplex; /* specified duplex FULL or HALF */ };
static const struct fixed_phy_port fixed_phy_port[] = { CONFIG_SYS_FIXED_PHY_PORTS /* defined in board configuration file */ };
And include/configs/canyonlands.h:
#define CONFIG_FIXED_PHY 0xFFFFFFFF #define CONFIG_PHY_ADDR CONFIG_FIXED_PHY
#define CONFIG_SYS_FIXED_PHY_PORT(devnum, speed, duplex) \ {devnum, speed, duplex} #define CONFIG_SYS_FIXED_PHY_PORTS \ CONFIG_SYS_FIXED_PHY_PORT(0, 1000, FULL)
It's definitely not perfect but perhaps you could re-use it for your problem as well.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================