MT7601u/src/include/eeprom.h
Murat Demirtas 612db32659 FIXED
2016-10-30 14:40:00 +00:00

322 lines
9.5 KiB
C

/*
***************************************************************************
* Ralink Tech Inc.
* 4F, No. 2 Technology 5th Rd.
* Science-based Industrial Park
* Hsin-chu, Taiwan, R.O.C.
*
* (c) Copyright 2002-2004, Ralink Technology, Inc.
*
* All rights reserved. Ralink's source code is an unpublished work and the
* use of a copyright notice does not imply otherwise. This source code
* contains confidential trade secret material of Ralink Tech. Any attemp
* or participation in deciphering, decoding, reverse engineering or in any
* way altering the source code is stricitly prohibited, unless the prior
* written consent of Ralink Technology, Inc. is obtained.
***************************************************************************
Module Name:
eeprom.h
Abstract:
Miniport header file for eeprom related information
Revision History:
Who When What
-------- ---------- ----------------------------------------------
*/
#ifndef __EEPROM_H__
#define __EEPROM_H__
/* For ioctl check usage */
#define EEPROM_IS_PROGRAMMED 0x80
#ifdef RTMP_MAC_USB
#define EEPROM_SIZE 0x400
#endif /* RTMP_MAC_USB */
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_WORD_STRUC {
struct {
UCHAR Byte1; // High Byte
UCHAR Byte0; // Low Byte
} field;
USHORT word;
} EEPROM_WORD_STRUC;
#else
typedef union _EEPROM_WORD_STRUC {
struct {
UCHAR Byte0;
UCHAR Byte1;
} field;
USHORT word;
} EEPROM_WORD_STRUC;
#endif
/* ------------------------------------------------------------------- */
/* E2PROM data layout */
/* ------------------------------------------------------------------- */
/* Board type */
#define BOARD_TYPE_MINI_CARD 0 /* Mini card */
#define BOARD_TYPE_USB_PEN 1 /* USB pen */
/*
EEPROM antenna select format
*/
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_NIC_CINFIG2_STRUC {
struct {
USHORT DACTestBit:1; /* control if driver should patch the DAC issue */
USHORT CoexBit:1;
USHORT bInternalTxALC:1; /* Internal Tx ALC */
USHORT AntOpt:1; /* Fix Antenna Option: 0:Main; 1: Aux */
USHORT AntDiversity:1; /* Antenna diversity */
USHORT Rsv1:1; /* must be 0 */
USHORT BW40MAvailForA:1; /* 0:enable, 1:disable */
USHORT BW40MAvailForG:1; /* 0:enable, 1:disable */
USHORT EnableWPSPBC:1; /* WPS PBC Control bit */
USHORT BW40MSidebandForA:1;
USHORT BW40MSidebandForG:1;
USHORT CardbusAcceleration:1; /* !!! NOTE: 0 - enable, 1 - disable */
USHORT ExternalLNAForA:1; /* external LNA enable for 5G */
USHORT ExternalLNAForG:1; /* external LNA enable for 2.4G */
USHORT DynamicTxAgcControl:1; /* */
USHORT HardwareRadioControl:1; /* Whether RF is controlled by driver or HW. 1:enable hw control, 0:disable */
} field;
USHORT word;
} EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC;
#else
typedef union _EEPROM_NIC_CINFIG2_STRUC {
struct {
USHORT HardwareRadioControl:1; /* 1:enable, 0:disable */
USHORT DynamicTxAgcControl:1; /* */
USHORT ExternalLNAForG:1; /* */
USHORT ExternalLNAForA:1; /* external LNA enable for 2.4G */
USHORT CardbusAcceleration:1; /* !!! NOTE: 0 - enable, 1 - disable */
USHORT BW40MSidebandForG:1;
USHORT BW40MSidebandForA:1;
USHORT EnableWPSPBC:1; /* WPS PBC Control bit */
USHORT BW40MAvailForG:1; /* 0:enable, 1:disable */
USHORT BW40MAvailForA:1; /* 0:enable, 1:disable */
USHORT Rsv1:1; /* must be 0 */
USHORT AntDiversity:1; /* Antenna diversity */
USHORT AntOpt:1; /* Fix Antenna Option: 0:Main; 1: Aux */
USHORT bInternalTxALC:1; /* Internal Tx ALC */
USHORT CoexBit:1;
USHORT DACTestBit:1; /* control if driver should patch the DAC issue */
} field;
USHORT word;
} EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC;
#endif
#if defined(BT_COEXISTENCE_SUPPORT) || defined(RT3290)
#ifdef RTMP_USB_SUPPORT
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_NIC_CINFIG3_STRUC {
struct {
USHORT Rsv1:7; /* must be 0 */
USHORT CoexMethod:1;
USHORT TxStream:4; /* Number of Tx stream */
USHORT RxStream:4; /* Number of rx stream */
} field;
USHORT word;
} EEPROM_NIC_CONFIG3_STRUC, *PEEPROM_NIC_CONFIG3_STRUC;
#else
typedef union _EEPROM_NIC_CINFIG3_STRUC {
struct {
USHORT RxStream:4; /* Number of rx stream */
USHORT TxStream:4; /* Number of Tx stream */
USHORT CoexMethod:1;
USHORT Rsv1:7; /* must be 0 */
} field;
USHORT word;
} EEPROM_NIC_CONFIG3_STRUC, *PEEPROM_NIC_CONFIG3_STRUC;
#endif
#endif /* RTMP_USB_SUPPORT */
#endif /* defined(BT_COEXISTENCE_SUPPORT) || defined(RT3290) */
/*
TX_PWR Value valid range 0xFA(-6) ~ 0x24(36)
*/
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_TX_PWR_STRUC {
struct {
signed char Byte1; /* High Byte */
signed char Byte0; /* Low Byte */
} field;
USHORT word;
} EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC;
#else
typedef union _EEPROM_TX_PWR_STRUC {
struct {
signed char Byte0; /* Low Byte */
signed char Byte1; /* High Byte */
} field;
USHORT word;
} EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC;
#endif
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_VERSION_STRUC {
struct {
UCHAR Version; /* High Byte */
UCHAR FaeReleaseNumber; /* Low Byte */
} field;
USHORT word;
} EEPROM_VERSION_STRUC, *PEEPROM_VERSION_STRUC;
#else
typedef union _EEPROM_VERSION_STRUC {
struct {
UCHAR FaeReleaseNumber; /* Low Byte */
UCHAR Version; /* High Byte */
} field;
USHORT word;
} EEPROM_VERSION_STRUC, *PEEPROM_VERSION_STRUC;
#endif
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_LED_STRUC {
struct {
USHORT Rsvd:3; /* Reserved */
USHORT LedMode:5; /* Led mode. */
USHORT PolarityGPIO_4:1; /* Polarity GPIO#4 setting. */
USHORT PolarityGPIO_3:1; /* Polarity GPIO#3 setting. */
USHORT PolarityGPIO_2:1; /* Polarity GPIO#2 setting. */
USHORT PolarityGPIO_1:1; /* Polarity GPIO#1 setting. */
USHORT PolarityGPIO_0:1; /* Polarity GPIO#0 setting. */
USHORT PolarityACT:1; /* Polarity ACT setting. */
USHORT PolarityRDY_A:1; /* Polarity RDY_A setting. */
USHORT PolarityRDY_G:1; /* Polarity RDY_G setting. */
} field;
USHORT word;
} EEPROM_LED_STRUC, *PEEPROM_LED_STRUC;
#else
typedef union _EEPROM_LED_STRUC {
struct {
USHORT PolarityRDY_G:1; /* Polarity RDY_G setting. */
USHORT PolarityRDY_A:1; /* Polarity RDY_A setting. */
USHORT PolarityACT:1; /* Polarity ACT setting. */
USHORT PolarityGPIO_0:1; /* Polarity GPIO#0 setting. */
USHORT PolarityGPIO_1:1; /* Polarity GPIO#1 setting. */
USHORT PolarityGPIO_2:1; /* Polarity GPIO#2 setting. */
USHORT PolarityGPIO_3:1; /* Polarity GPIO#3 setting. */
USHORT PolarityGPIO_4:1; /* Polarity GPIO#4 setting. */
USHORT LedMode:5; /* Led mode. */
USHORT Rsvd:3; /* Reserved */
} field;
USHORT word;
} EEPROM_LED_STRUC, *PEEPROM_LED_STRUC;
#endif
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_TXPOWER_DELTA_STRUC {
struct {
UCHAR TxPowerEnable:1; /* Enable */
UCHAR Type:1; /* 1: plus the delta value, 0: minus the delta value */
UCHAR DeltaValue:6; /* Tx Power dalta value (MAX=4) */
} field;
UCHAR value;
} EEPROM_TXPOWER_DELTA_STRUC, *PEEPROM_TXPOWER_DELTA_STRUC;
#else
typedef union _EEPROM_TXPOWER_DELTA_STRUC {
struct {
UCHAR DeltaValue:6; /* Tx Power dalta value (MAX=4) */
UCHAR Type:1; /* 1: plus the delta value, 0: minus the delta value */
UCHAR TxPowerEnable:1; /* Enable */
} field;
UCHAR value;
} EEPROM_TXPOWER_DELTA_STRUC, *PEEPROM_TXPOWER_DELTA_STRUC;
#endif
#ifdef RT_BIG_ENDIAN
typedef union _EEPROM_TX_PWR_OFFSET_STRUC
{
struct
{
UCHAR Byte1; /* High Byte */
UCHAR Byte0; /* Low Byte */
} field;
USHORT word;
} EEPROM_TX_PWR_OFFSET_STRUC, *PEEPROM_TX_PWR_OFFSET_STRUC;
#else
typedef union _EEPROM_TX_PWR_OFFSET_STRUC
{
struct
{
UCHAR Byte0; /* Low Byte */
UCHAR Byte1; /* High Byte */
} field;
USHORT word;
} EEPROM_TX_PWR_OFFSET_STRUC, *PEEPROM_TX_PWR_OFFSET_STRUC;
#endif /* RT_BIG_ENDIAN */
struct _RTMP_ADAPTER;
#ifdef RTMP_USB_SUPPORT
NTSTATUS RTUSBReadEEPROM16(
IN struct _RTMP_ADAPTER *pAd,
IN USHORT offset,
OUT USHORT *pData);
NTSTATUS RTUSBWriteEEPROM16(
IN struct _RTMP_ADAPTER *pAd,
IN USHORT offset,
IN USHORT value);
#endif /* RTMP_USB_SUPPORT */
#if defined(RTMP_RBUS_SUPPORT) || defined(RTMP_FLASH_SUPPORT)
NDIS_STATUS rtmp_nv_init(struct _RTMP_ADAPTER *pAd);
int rtmp_ee_flash_read(struct _RTMP_ADAPTER *pAd, USHORT Offset, USHORT *pVal);
int rtmp_ee_flash_write(struct _RTMP_ADAPTER *pAd, USHORT Offset, USHORT data);
VOID rtmp_ee_flash_read_all(struct _RTMP_ADAPTER *pAd, USHORT *Data);
VOID rtmp_ee_flash_write_all(struct _RTMP_ADAPTER *pAd, USHORT *Data);
#endif /* defined(RTMP_RBUS_SUPPORT) || defined(RTMP_FLASH_SUPPORT) */
#ifdef RTMP_EFUSE_SUPPORT
INT eFuseLoadEEPROM(struct _RTMP_ADAPTER *pAd);
INT eFuseWriteEeeppromBuf(struct _RTMP_ADAPTER *pAd);
VOID eFuseGetFreeBlockCount(struct _RTMP_ADAPTER *pAd, UINT *EfuseFreeBlock);
int rtmp_ee_efuse_read16(struct _RTMP_ADAPTER *pAd, USHORT Offset, USHORT *pVal);
int rtmp_ee_efuse_write16(struct _RTMP_ADAPTER *pAd, USHORT Offset, USHORT data);
NTSTATUS eFuseRead(struct _RTMP_ADAPTER *pAd, USHORT Offset, USHORT *pData, USHORT len);
NTSTATUS eFuseWrite(struct _RTMP_ADAPTER *pAd, USHORT Offset, USHORT *pData, USHORT len);
INT eFuse_init(struct _RTMP_ADAPTER *pAd);
INT efuse_probe(struct _RTMP_ADAPTER *pAd);
#ifdef RALINK_ATE
INT Set_LoadEepromBufferFromEfuse_Proc(
IN struct _RTMP_ADAPTER *pAd,
IN PSTRING arg);
#endif /* RALINK_ATE */
#endif /* RTMP_EFUSE_SUPPORT */
/*************************************************************************
* Public function declarations for prom operation callback functions setting
************************************************************************/
INT RtmpChipOpsEepromHook(struct _RTMP_ADAPTER *pAd, INT infType);
#endif /* __EEPROM_H__ */