aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/tg3.c16
-rw-r--r--drivers/net/tg3.h9
2 files changed, 24 insertions, 1 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index bb3b73435170..ecd64a224e95 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -3154,6 +3154,22 @@ static int tg3_setup_phy(struct tg3 *tp, int force_reset)
3154 err = tg3_setup_copper_phy(tp, force_reset); 3154 err = tg3_setup_copper_phy(tp, force_reset);
3155 } 3155 }
3156 3156
3157 if (tp->pci_chip_rev_id == CHIPREV_ID_5784_A0) {
3158 u32 val, scale;
3159
3160 val = tr32(TG3_CPMU_CLCK_STAT) & CPMU_CLCK_STAT_MAC_CLCK_MASK;
3161 if (val == CPMU_CLCK_STAT_MAC_CLCK_62_5)
3162 scale = 65;
3163 else if (val == CPMU_CLCK_STAT_MAC_CLCK_6_25)
3164 scale = 6;
3165 else
3166 scale = 12;
3167
3168 val = tr32(GRC_MISC_CFG) & ~GRC_MISC_CFG_PRESCALAR_MASK;
3169 val |= (scale << GRC_MISC_CFG_PRESCALAR_SHIFT);
3170 tw32(GRC_MISC_CFG, val);
3171 }
3172
3157 if (tp->link_config.active_speed == SPEED_1000 && 3173 if (tp->link_config.active_speed == SPEED_1000 &&
3158 tp->link_config.active_duplex == DUPLEX_HALF) 3174 tp->link_config.active_duplex == DUPLEX_HALF)
3159 tw32(MAC_TX_LENGTHS, 3175 tw32(MAC_TX_LENGTHS,
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h
index 5b799ff2c4d6..d325ab59b391 100644
--- a/drivers/net/tg3.h
+++ b/drivers/net/tg3.h
@@ -874,7 +874,14 @@
874#define TG3_CPMU_HST_ACC 0x0000361c 874#define TG3_CPMU_HST_ACC 0x0000361c
875#define CPMU_HST_ACC_MACCLK_MASK 0x001f0000 875#define CPMU_HST_ACC_MACCLK_MASK 0x001f0000
876#define CPMU_HST_ACC_MACCLK_6_25 0x00130000 876#define CPMU_HST_ACC_MACCLK_6_25 0x00130000
877/* 0x3620 --> 0x365c unused */ 877/* 0x3620 --> 0x3630 unused */
878
879#define TG3_CPMU_CLCK_STAT 0x00003630
880#define CPMU_CLCK_STAT_MAC_CLCK_MASK 0x001f0000
881#define CPMU_CLCK_STAT_MAC_CLCK_62_5 0x00000000
882#define CPMU_CLCK_STAT_MAC_CLCK_12_5 0x00110000
883#define CPMU_CLCK_STAT_MAC_CLCK_6_25 0x00130000
884/* 0x3634 --> 0x365c unused */
878 885
879#define TG3_CPMU_MUTEX_REQ 0x0000365c 886#define TG3_CPMU_MUTEX_REQ 0x0000365c
880#define CPMU_MUTEX_REQ_DRIVER 0x00001000 887#define CPMU_MUTEX_REQ_DRIVER 0x00001000