• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/rt2860/common/
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