]> bbs.cooldavid.org Git - net-next-2.6.git/blob - drivers/staging/rt3090/common/eeprom.c
2e837499e5e4c172e2137344d5c992988a434a73
[net-next-2.6.git] / drivers / staging / rt3090 / common / eeprom.c
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
41 INT 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 }