/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
 * All rights reserved.
 *
 * Purpose: Implement functions to access eeprom
 *
 * Author: Jerry Chen
 *
 * Date: Jan 29, 2003
 */

#ifndef __SROM_H__
#define __SROM_H__

/*---------------------  Export Definitions -------------------------*/

#define EEP_MAX_CONTEXT_SIZE    256

#define CB_EEPROM_READBYTE_WAIT 900     /* us */

#define W_MAX_I2CRETRY          0x0fff

/* Contents in the EEPROM */
#define EEP_OFS_PAR         0x00        /* physical address */
#define EEP_OFS_ANTENNA     0x16
#define EEP_OFS_RADIOCTL    0x17
#define EEP_OFS_RFTYPE      0x1B        /* for select RF */
#define EEP_OFS_MINCHANNEL  0x1C        /* Min Channel # */
#define EEP_OFS_MAXCHANNEL  0x1D        /* Max Channel # */
#define EEP_OFS_SIGNATURE   0x1E
#define EEP_OFS_ZONETYPE    0x1F
#define EEP_OFS_RFTABLE     0x20        /* RF POWER TABLE */
#define EEP_OFS_PWR_CCK     0x20
#define EEP_OFS_SETPT_CCK   0x21
#define EEP_OFS_PWR_OFDMG   0x23
#define EEP_OFS_SETPT_OFDMG 0x24
#define EEP_OFS_PWR_FORMULA_OST  0x26
#define EEP_OFS_MAJOR_VER 0x2E
#define EEP_OFS_MINOR_VER 0x2F
#define EEP_OFS_CCK_PWR_TBL     0x30
#define EEP_OFS_CCK_PWR_dBm     0x3F
#define EEP_OFS_OFDM_PWR_TBL    0x40
#define EEP_OFS_OFDM_PWR_dBm    0x4F
/*{{ RobertYu: 20041124 */
#define EEP_OFS_SETPT_OFDMA         0x4E
#define EEP_OFS_OFDMA_PWR_TBL       0x50
/*}}*/
#define EEP_OFS_OFDMA_PWR_dBm       0xD2

/*----------need to remove --------------------*/
#define EEP_OFS_BBTAB_LEN   0x70        /* BB Table Length */
#define EEP_OFS_BBTAB_ADR   0x71        /* BB Table Offset */
#define EEP_OFS_CHECKSUM    0xFF        /* reserved area for baseband 28h~78h */

#define EEP_I2C_DEV_ID      0x50        /* EEPROM device address on I2C bus */

/* Bits in EEP_OFS_ANTENNA */
#define EEP_ANTENNA_MAIN    0x01
#define EEP_ANTENNA_AUX     0x02
#define EEP_ANTINV          0x04

/* Bits in EEP_OFS_RADIOCTL */
#define EEP_RADIOCTL_ENABLE 0x80
#define EEP_RADIOCTL_INV    0x01

/*---------------------  Export Types  ------------------------------*/

/*---------------------  Export Macros ------------------------------*/

/*---------------------  Export Classes  ----------------------------*/

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

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

unsigned char SROMbyReadEmbedded(void __iomem *iobase,
				 unsigned char byContntOffset);

void SROMvReadAllContents(void __iomem *iobase, unsigned char *pbyEepromRegs);

void SROMvReadEtherAddress(void __iomem *iobase,
			   unsigned char *pbyEtherAddress);

#endif /* __EEPROM_H__*/
