diff options
Diffstat (limited to 'drivers/net/tsec.c')
-rw-r--r-- | drivers/net/tsec.c | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index 9edba6a..399116f 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -1332,6 +1332,35 @@ struct phy_info phy_info_cis8201 = { {miim_end,} }, }; +struct phy_info phy_info_VSC8211 = { + 0xfc4b, + "Vitesse VSC8211", + 4, + (struct phy_cmd[]) { /* config */ + /* Override PHY config settings */ + {MIIM_CIS8201_AUX_CONSTAT, + MIIM_CIS8201_AUXCONSTAT_INIT, NULL}, + /* Set up the interface mode */ + {MIIM_CIS8201_EXT_CON1, + MIIM_CIS8201_EXTCON1_INIT, NULL}, + /* Configure some basic stuff */ + {MIIM_CONTROL, MIIM_CONTROL_INIT, &mii_cr_init}, + {miim_end,} + }, + (struct phy_cmd[]) { /* startup */ + /* Read the Status (2x to make sure link is right) */ + {MIIM_STATUS, miim_read, NULL}, + /* Auto-negotiate */ + {MIIM_STATUS, miim_read, &mii_parse_sr}, + /* Read the status */ + {MIIM_CIS8201_AUX_CONSTAT, miim_read, + &mii_parse_cis8201}, + {miim_end,} + }, + (struct phy_cmd[]) { /* shutdown */ + {miim_end,} + }, +}; struct phy_info phy_info_VSC8244 = { 0x3f1b, "Vitesse VSC8244", @@ -1590,11 +1619,12 @@ struct phy_info *phy_info[] = { &phy_info_M88E1149S, &phy_info_dm9161, &phy_info_lxt971, + &phy_info_VSC8211, &phy_info_VSC8244, &phy_info_VSC8601, &phy_info_dp83865, &phy_info_rtl8211b, - &phy_info_generic, + &phy_info_generic, /* must be last; has ID 0 and 32 bit mask */ NULL }; @@ -1626,9 +1656,8 @@ struct phy_info *get_phy_info(struct eth_device *dev) } } - if (theInfo == NULL) { - printf("%s: PHY id %x is not supported!\n", dev->name, phy_ID); - return NULL; + if (theInfo == &phy_info_generic) { + printf("%s: No support for PHY id %x; assuming generic\n", dev->name, phy_ID); } else { debug("%s: PHY is %s (%x)\n", dev->name, theInfo->name, phy_ID); } |