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