1/* 2 ************************************************************************* 3 * Ralink Tech Inc. 4 * 5F., No.36, Taiyuan St., Jhubei City, 5 * Hsinchu County 302, 6 * Taiwan, R.O.C. 7 * 8 * (c) Copyright 2002-2007, Ralink Technology, Inc. 9 * 10 * This program is free software; you can redistribute it and/or modify * 11 * it under the terms of the GNU General Public License as published by * 12 * the Free Software Foundation; either version 2 of the License, or * 13 * (at your option) any later version. * 14 * * 15 * This program is distributed in the hope that it will be useful, * 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 18 * GNU General Public License for more details. * 19 * * 20 * You should have received a copy of the GNU General Public License * 21 * along with this program; if not, write to the * 22 * Free Software Foundation, Inc., * 23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 24 * * 25 ************************************************************************* 26 27 Module Name: 28 eeprom.c 29 30 Abstract: 31 32 Revision History: 33 Who When What 34 -------- ---------- ---------------------------------------------- 35 Name Date Modification logs 36*/ 37 38#include "../rt_config.h" 39 40 41INT RtmpChipOpsEepromHook( 42 IN RTMP_ADAPTER *pAd, 43 IN INT infType) 44{ 45 RTMP_CHIP_OP *pChipOps = &pAd->chipOps; 46#ifdef RT30xx 47#ifdef RTMP_EFUSE_SUPPORT 48 UINT32 eFuseCtrl, MacCsr0; 49 int index; 50 51 index = 0; 52 do 53 { 54 RTMP_IO_READ32(pAd, MAC_CSR0, &MacCsr0); 55 pAd->MACVersion = MacCsr0; 56 57 if ((pAd->MACVersion != 0x00) && (pAd->MACVersion != 0xFFFFFFFF)) 58 break; 59 60 RTMPusecDelay(10); 61 } while (index++ < 100); 62 63 pAd->bUseEfuse=FALSE; 64 RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrl); 65 pAd->bUseEfuse = ( (eFuseCtrl & 0x80000000) == 0x80000000) ? 1 : 0; 66 if(pAd->bUseEfuse) 67 { 68 pChipOps->eeinit = eFuse_init; 69 pChipOps->eeread = rtmp_ee_efuse_read16; 70 pChipOps->eewrite = rtmp_ee_efuse_write16; 71 return 0 ; 72 } 73 else 74 { 75 pAd->bFroceEEPROMBuffer = FALSE; 76 DBGPRINT(RT_DEBUG_TRACE, ("NVM is EEPROM\n")); 77 } 78#endif // RTMP_EFUSE_SUPPORT // 79#endif // RT30xx // 80 81 switch(infType) 82 { 83#ifdef RTMP_PCI_SUPPORT 84 case RTMP_DEV_INF_PCI: 85 pChipOps->eeinit = NULL; 86 pChipOps->eeread = rtmp_ee_prom_read16; 87 pChipOps->eewrite = rtmp_ee_prom_write16; 88 break; 89#endif // RTMP_PCI_SUPPORT // 90 91 92 default: 93 DBGPRINT(RT_DEBUG_ERROR, ("RtmpChipOpsEepromHook() failed!\n")); 94 break; 95 } 96 97 return 0; 98} 99