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