|
@@ -879,8 +879,9 @@ static void realtek_detect ( struct realtek_nic *rtl ) {
|
879
|
879
|
* Try to enable C+ mode and PCI Dual Address Cycle (for
|
880
|
880
|
* 64-bit systems), if supported.
|
881
|
881
|
*/
|
882
|
|
- cpcr = ( RTL_CPCR_DAC | RTL_CPCR_MULRW | RTL_CPCR_CPRX |
|
883
|
|
- RTL_CPCR_CPTX );
|
|
882
|
+ cpcr = readw ( rtl->regs + RTL_CPCR );
|
|
883
|
+ cpcr |= ( RTL_CPCR_DAC | RTL_CPCR_MULRW | RTL_CPCR_CPRX |
|
|
884
|
+ RTL_CPCR_CPTX );
|
884
|
885
|
writew ( cpcr, rtl->regs + RTL_CPCR );
|
885
|
886
|
check_cpcr = readw ( rtl->regs + RTL_CPCR );
|
886
|
887
|
|
|
@@ -890,7 +891,7 @@ static void realtek_detect ( struct realtek_nic *rtl ) {
|
890
|
891
|
rtl->have_phy_regs = 1;
|
891
|
892
|
rtl->tppoll = RTL_TPPOLL_8169;
|
892
|
893
|
} else {
|
893
|
|
- if ( check_cpcr == cpcr ) {
|
|
894
|
+ if ( ( check_cpcr == cpcr ) && ( cpcr != 0xffff ) ) {
|
894
|
895
|
DBGC ( rtl, "REALTEK %p appears to be an RTL8139C+\n",
|
895
|
896
|
rtl );
|
896
|
897
|
rtl->tppoll = RTL_TPPOLL_8139CP;
|