linux/drivers/staging/rt3090/common/eeprom.c
<<
>>
Prefs
   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
  41INT 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}
  99