@@ -105,9 +105,8 @@ static const struct {
105
105
[RTL_GIGA_MAC_VER_10 ] = {"RTL8101e" },
106
106
[RTL_GIGA_MAC_VER_11 ] = {"RTL8168b/8111b" },
107
107
[RTL_GIGA_MAC_VER_12 ] = {"RTL8168b/8111b" },
108
- [RTL_GIGA_MAC_VER_13 ] = {"RTL8101e" },
109
- [RTL_GIGA_MAC_VER_14 ] = {"RTL8100e" },
110
- [RTL_GIGA_MAC_VER_15 ] = {"RTL8100e" },
108
+ [RTL_GIGA_MAC_VER_13 ] = {"RTL8101e/RTL8100e" },
109
+ [RTL_GIGA_MAC_VER_14 ] = {"RTL8401" },
111
110
[RTL_GIGA_MAC_VER_16 ] = {"RTL8101e" },
112
111
[RTL_GIGA_MAC_VER_17 ] = {"RTL8168b/8111b" },
113
112
[RTL_GIGA_MAC_VER_18 ] = {"RTL8168cp/8111cp" },
@@ -2001,16 +2000,15 @@ static enum mac_version rtl8169_get_mac_version(u16 xid, bool gmii)
2001
2000
{ 0x7cf , 0x348 , RTL_GIGA_MAC_VER_07 },
2002
2001
{ 0x7cf , 0x248 , RTL_GIGA_MAC_VER_07 },
2003
2002
{ 0x7cf , 0x340 , RTL_GIGA_MAC_VER_13 },
2004
- /* RTL8401, reportedly works if treated as RTL8101e */
2005
- { 0x7cf , 0x240 , RTL_GIGA_MAC_VER_13 },
2003
+ { 0x7cf , 0x240 , RTL_GIGA_MAC_VER_14 },
2006
2004
{ 0x7cf , 0x343 , RTL_GIGA_MAC_VER_10 },
2007
2005
{ 0x7cf , 0x342 , RTL_GIGA_MAC_VER_16 },
2008
2006
{ 0x7c8 , 0x348 , RTL_GIGA_MAC_VER_09 },
2009
2007
{ 0x7c8 , 0x248 , RTL_GIGA_MAC_VER_09 },
2010
2008
{ 0x7c8 , 0x340 , RTL_GIGA_MAC_VER_16 },
2011
2009
/* FIXME: where did these entries come from ? -- FR */
2012
- { 0xfc8 , 0x388 , RTL_GIGA_MAC_VER_15 },
2013
- { 0xfc8 , 0x308 , RTL_GIGA_MAC_VER_14 },
2010
+ { 0xfc8 , 0x388 , RTL_GIGA_MAC_VER_13 },
2011
+ { 0xfc8 , 0x308 , RTL_GIGA_MAC_VER_13 },
2014
2012
2015
2013
/* 8110 family. */
2016
2014
{ 0xfc8 , 0x980 , RTL_GIGA_MAC_VER_06 },
@@ -3403,6 +3401,19 @@ static void rtl_hw_start_8102e_3(struct rtl8169_private *tp)
3403
3401
rtl_ephy_write (tp , 0x03 , 0xc2f9 );
3404
3402
}
3405
3403
3404
+ static void rtl_hw_start_8401 (struct rtl8169_private * tp )
3405
+ {
3406
+ static const struct ephy_info e_info_8401 [] = {
3407
+ { 0x01 , 0xffff , 0x6fe5 },
3408
+ { 0x03 , 0xffff , 0x0599 },
3409
+ { 0x06 , 0xffff , 0xaf25 },
3410
+ { 0x07 , 0xffff , 0x8e68 },
3411
+ };
3412
+
3413
+ rtl_ephy_init (tp , e_info_8401 );
3414
+ RTL_W8 (tp , Config3 , RTL_R8 (tp , Config3 ) & ~Beacon_en );
3415
+ }
3416
+
3406
3417
static void rtl_hw_start_8105e_1 (struct rtl8169_private * tp )
3407
3418
{
3408
3419
static const struct ephy_info e_info_8105e_1 [] = {
@@ -3616,8 +3627,7 @@ static void rtl_hw_config(struct rtl8169_private *tp)
3616
3627
[RTL_GIGA_MAC_VER_11 ] = rtl_hw_start_8168b ,
3617
3628
[RTL_GIGA_MAC_VER_12 ] = rtl_hw_start_8168b ,
3618
3629
[RTL_GIGA_MAC_VER_13 ] = NULL ,
3619
- [RTL_GIGA_MAC_VER_14 ] = NULL ,
3620
- [RTL_GIGA_MAC_VER_15 ] = NULL ,
3630
+ [RTL_GIGA_MAC_VER_14 ] = rtl_hw_start_8401 ,
3621
3631
[RTL_GIGA_MAC_VER_16 ] = NULL ,
3622
3632
[RTL_GIGA_MAC_VER_17 ] = rtl_hw_start_8168b ,
3623
3633
[RTL_GIGA_MAC_VER_18 ] = rtl_hw_start_8168cp_1 ,
0 commit comments