cregit-Linux how code gets into the kernel

Release 4.8 drivers/staging/vt6655/srom.c

/*
 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * File: srom.c
 *
 * Purpose:Implement functions to access eeprom
 *
 * Author: Jerry Chen
 *
 * Date: Jan 29, 2003
 *
 * Functions:
 *      SROMbyReadEmbedded - Embedded read eeprom via MAC
 *      SROMbWriteEmbedded - Embedded write eeprom via MAC
 *      SROMvRegBitsOn - Set Bits On in eeprom
 *      SROMvRegBitsOff - Clear Bits Off in eeprom
 *      SROMbIsRegBitsOn - Test if Bits On in eeprom
 *      SROMbIsRegBitsOff - Test if Bits Off in eeprom
 *      SROMvReadAllContents - Read all contents in eeprom
 *      SROMvWriteAllContents - Write all contents in eeprom
 *      SROMvReadEtherAddress - Read Ethernet Address in eeprom
 *      SROMvWriteEtherAddress - Write Ethernet Address in eeprom
 *      SROMvReadSubSysVenId - Read Sub_VID and Sub_SysId in eeprom
 *      SROMbAutoLoad - Auto Load eeprom to MAC register
 *
 * Revision History:
 *
 */

#include "upc.h"
#include "tmacro.h"
#include "mac.h"
#include "srom.h"

/*---------------------  Static Definitions -------------------------*/

/*---------------------  Static Classes  ----------------------------*/

/*---------------------  Static Variables  --------------------------*/

/*---------------------  Static Functions  --------------------------*/

/*---------------------  Export Variables  --------------------------*/

/*---------------------  Export Functions  --------------------------*/

/*
 * Description: Read a byte from EEPROM, by MAC I2C
 *
 * Parameters:
 *  In:
 *      dwIoBase        - I/O base address
 *      byContntOffset  - address of EEPROM
 *  Out:
 *      none
 *
 * Return Value: data read
 *
 */

unsigned char SROMbyReadEmbedded(void __iomem *dwIoBase, unsigned char byContntOffset) { unsigned short wDelay, wNoACK; unsigned char byWait; unsigned char byData; unsigned char byOrg; byData = 0xFF; VNSvInPortB(dwIoBase + MAC_REG_I2MCFG, &byOrg); /* turn off hardware retry for getting NACK */ VNSvOutPortB(dwIoBase + MAC_REG_I2MCFG, (byOrg & (~I2MCFG_NORETRY))); for (wNoACK = 0; wNoACK < W_MAX_I2CRETRY; wNoACK++) { VNSvOutPortB(dwIoBase + MAC_REG_I2MTGID, EEP_I2C_DEV_ID); VNSvOutPortB(dwIoBase + MAC_REG_I2MTGAD, byContntOffset); /* issue read command */ VNSvOutPortB(dwIoBase + MAC_REG_I2MCSR, I2MCSR_EEMR); /* wait DONE be set */ for (wDelay = 0; wDelay < W_MAX_TIMEOUT; wDelay++) { VNSvInPortB(dwIoBase + MAC_REG_I2MCSR, &byWait); if (byWait & (I2MCSR_DONE | I2MCSR_NACK)) break; PCAvDelayByIO(CB_DELAY_LOOP_WAIT); } if ((wDelay < W_MAX_TIMEOUT) && (!(byWait & I2MCSR_NACK))) { break; } } VNSvInPortB(dwIoBase + MAC_REG_I2MDIPT, &byData); VNSvOutPortB(dwIoBase + MAC_REG_I2MCFG, byOrg); return byData; }

Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond16887.96%116.67%
charles clementcharles clement126.28%233.33%
jim liebjim lieb52.62%116.67%
steven harmssteven harms31.57%116.67%
guillaume clementguillaume clement31.57%116.67%
Total191100.00%6100.00%

/* * Description: Read all contents of eeprom to buffer * * Parameters: * In: * dwIoBase - I/O base address * Out: * pbyEepromRegs - EEPROM content Buffer * * Return Value: none * */
void SROMvReadAllContents(void __iomem *dwIoBase, unsigned char *pbyEepromRegs) { int ii; /* ii = Rom Address */ for (ii = 0; ii < EEP_MAX_CONTEXT_SIZE; ii++) { *pbyEepromRegs = SROMbyReadEmbedded(dwIoBase, (unsigned char)ii); pbyEepromRegs++; } }

Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond3772.55%116.67%
malcolm priestleymalcolm priestley59.80%116.67%
charles clementcharles clement59.80%233.33%
guillaume clementguillaume clement35.88%116.67%
steven harmssteven harms11.96%116.67%
Total51100.00%6100.00%

/* * Description: Read Ethernet Address from eeprom to buffer * * Parameters: * In: * dwIoBase - I/O base address * Out: * pbyEtherAddress - Ethernet Address buffer * * Return Value: none * */
void SROMvReadEtherAddress(void __iomem *dwIoBase, unsigned char *pbyEtherAddress) { unsigned char ii; /* ii = Rom Address */ for (ii = 0; ii < ETH_ALEN; ii++) { *pbyEtherAddress = SROMbyReadEmbedded(dwIoBase, ii); pbyEtherAddress++; } }

Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond3879.17%116.67%
charles clementcharles clement612.50%350.00%
guillaume clementguillaume clement36.25%116.67%
steven harmssteven harms12.08%116.67%
Total48100.00%6100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
forest bondforest bond26484.62%111.11%
charles clementcharles clement237.37%444.44%
guillaume clementguillaume clement92.88%111.11%
malcolm priestleymalcolm priestley61.92%111.11%
steven harmssteven harms51.60%111.11%
jim liebjim lieb51.60%111.11%
Total312100.00%9100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.