aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.c
diff options
context:
space:
mode:
authorstephen hemminger <shemminger@vyatta.com>2010-02-07 01:24:50 -0500
committerDavid S. Miller <davem@davemloft.net>2010-02-10 20:56:28 -0500
commitacd12dde26eef5186a9d2ead9399d136932d2398 (patch)
treef33441d04a249eb69749fd9e3910972bfcc65e93 /drivers/net/sky2.c
parenta0db28b898266265c1cc2ff84f041a561a265504 (diff)
sky2: disable ASF on Yukon Supreme
Clone of vendor code to disable ASF on Extreme and Supreme chips. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r--drivers/net/sky2.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 1593ed49e8f..1aa1f331670 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -3035,11 +3035,20 @@ static void sky2_reset(struct sky2_hw *hw)
3035 u32 hwe_mask = Y2_HWE_ALL_MASK; 3035 u32 hwe_mask = Y2_HWE_ALL_MASK;
3036 3036
3037 /* disable ASF */ 3037 /* disable ASF */
3038 if (hw->chip_id == CHIP_ID_YUKON_EX) { 3038 if (hw->chip_id == CHIP_ID_YUKON_EX
3039 || hw->chip_id == CHIP_ID_YUKON_SUPR) {
3040 sky2_write32(hw, CPU_WDOG, 0);
3039 status = sky2_read16(hw, HCU_CCSR); 3041 status = sky2_read16(hw, HCU_CCSR);
3040 status &= ~(HCU_CCSR_AHB_RST | HCU_CCSR_CPU_RST_MODE | 3042 status &= ~(HCU_CCSR_AHB_RST | HCU_CCSR_CPU_RST_MODE |
3041 HCU_CCSR_UC_STATE_MSK); 3043 HCU_CCSR_UC_STATE_MSK);
3044 /*
3045 * CPU clock divider shouldn't be used because
3046 * - ASF firmware may malfunction
3047 * - Yukon-Supreme: Parallel FLASH doesn't support divided clocks
3048 */
3049 status &= ~HCU_CCSR_CPU_CLK_DIVIDE_MSK;
3042 sky2_write16(hw, HCU_CCSR, status); 3050 sky2_write16(hw, HCU_CCSR, status);
3051 sky2_write32(hw, CPU_WDOG, 0);
3043 } else 3052 } else
3044 sky2_write8(hw, B28_Y2_ASF_STAT_CMD, Y2_ASF_RESET); 3053 sky2_write8(hw, B28_Y2_ASF_STAT_CMD, Y2_ASF_RESET);
3045 sky2_write16(hw, B0_CTST, Y2_ASF_DISABLE); 3054 sky2_write16(hw, B0_CTST, Y2_ASF_DISABLE);