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#include "../rt_config.h" 38 39int RtmpChipOpsEepromHook(struct rt_rtmp_adapter *pAd, int infType) 40{ 41 struct rt_rtmp_chip_op *pChipOps = &pAd->chipOps; 42#ifdef RT30xx 43#ifdef RTMP_EFUSE_SUPPORT 44 u32 eFuseCtrl, MacCsr0; 45 int index; 46 47 index = 0; 48 do { 49 RTMP_IO_READ32(pAd, MAC_CSR0, &MacCsr0); 50 pAd->MACVersion = MacCsr0; 51 52 if ((pAd->MACVersion != 0x00) 53 && (pAd->MACVersion != 0xFFFFFFFF)) 54 break; 55 56 RTMPusecDelay(10); 57 } while (index++ < 100); 58 59 pAd->bUseEfuse = FALSE; 60 RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrl); 61 pAd->bUseEfuse = ((eFuseCtrl & 0x80000000) == 0x80000000) ? 1 : 0; 62 if (pAd->bUseEfuse) { 63 pChipOps->eeinit = eFuse_init; 64 pChipOps->eeread = rtmp_ee_efuse_read16; 65 return 0; 66 } else 67 DBGPRINT(RT_DEBUG_TRACE, ("NVM is EEPROM\n")); 68#endif /* RTMP_EFUSE_SUPPORT // */ 69#endif /* RT30xx // */ 70 71 switch (infType) { 72#ifdef RTMP_PCI_SUPPORT 73 case RTMP_DEV_INF_PCI: 74 pChipOps->eeinit = NULL; 75 pChipOps->eeread = rtmp_ee_prom_read16; 76 break; 77#endif /* RTMP_PCI_SUPPORT // */ 78#ifdef RTMP_USB_SUPPORT 79 case RTMP_DEV_INF_USB: 80 pChipOps->eeinit = NULL; 81 pChipOps->eeread = RTUSBReadEEPROM16; 82 break; 83#endif /* RTMP_USB_SUPPORT // */ 84 85 default: 86 DBGPRINT(RT_DEBUG_ERROR, ("RtmpChipOpsEepromHook() failed!\n")); 87 break; 88 } 89 90 return 0; 91} 92