/* * Copyright (c) 2008-2009 Atheros Corporation. 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 version 2 as * published by the Free Software Foundation; * * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. * *
* * */ #ifndef _BTCONFIG_H_ #define _BTCONFIG_H_ #define VERSION "1.0" #define PS_ASIC_FILENAME "/lib/firmware/PS_ASIC.pst" #define PS_FPGA_FILENAME "/lib/firmware/PS_FPGA.pst" #define TESTPATCH_FILENAME "/lib/firmware/Testpatch.txt" #define PATCH_FILENAME "/lib/firmware/RamPatch.txt" #define TRUE 1 #define FALSE 0 #define LINE_SIZE_MAX 3000 #define BD_ADDR_SIZE 6 #define BD_ADDR_PSTAG 1 #define WRITE_PATCH 8 #define ENABLE_PATCH 11 #define PS_RESET 2 #define PS_READ 0 #define PS_WRITE 1 #define PS_READ_RAW 3 #define PS_WRITE_RAW 4 #define PS_GET_LENGTH 5 #define PS_SET_ACCESS_MODE 6 #define PS_SET_ACCESS_PRIORITY 7 #define PS_WRITE 1 #define PS_DYNMEM_OVERRIDE 10 #define PS_VERIFY_CRC 9 #define CHANGE_BDADDR 15 #define PS_COMMAND_HEADER 4 #define HCI_EVENT_SIZE 7 #define PS_RETRY_COUNT 3 #define RAM_PS_REGION (1<<0) #define RAM_PATCH_REGION (1<<1) #define RAM_DYN_MEM_REGION (1<<2) #define RAMPS_MAX_PS_DATA_PER_TAG 244 #define RAMPS_MAX_PS_TAGS_PER_FILE 50 #define PSTAG_RF_TEST_BLOCK_START (300) #define PSTAG_SYSTEM_BLOCK_START (1) #define BT_SOC_INIT_TOOL_START_MAGIC_WORD 0xB1B1 #define PSTAG_RF_PARAM_TABLE0 (PSTAG_RF_TEST_BLOCK_START+0) #define PSTAG_SYSCFG_PARAM_TABLE0 (PSTAG_SYSTEM_BLOCK_START+18) #define PATCH_MAX_LEN 20000 #define DYN_MEM_MAX_LEN 40 #define SKIP_BLANKS(str) while (*str == ' ') str++ #define MAX_RADIO_CFG_TABLE_SIZE 1000 #define MAX_BYTE_LENGTH 244 #define DEBUG_EVENT_TYPE_PS 0x02 #define DEBUG_EVENT_TYPE_MEMBLK 0x03 #define HCI_EVENT_HEADER_SIZE 0x03 #define HI_MAGIC_NUMBER ((const short int) 0xFADE) #define HI_VERSION (0x0300) //Version 3.0 #define EEPROM_CONFIG 0x00020C00 #define FPGA_REGISTER 0x4FFC // Vendor specific command OCF #define OCF_PS 0x000B #define OCF_MEMOP 0x0014 #define OGF_TEST_CMD 0x06 #define OCF_HOST_INTEREST 0x000A #define OCF_CONT_TX_TESTER 0x0023 #define OCF_TX_TESTER 0x001B #define OCF_SLEEP_MODE 0x0004 #define OCF_READ_MEMORY 0x0005 #define OCF_WRITE_MEMORY 0x0006 #define OCF_DISABLE_TX 0x002D #define OCF_TEST_MODE_SEQN_TRACKING 0x0018 #define OCF_READ_VERSION 0x001E #define OCF_AUDIO_CMD 0x0013 #define OCF_GET_BERTYPE 0x005C #define UCHAR unsigned char #define BOOL unsigned short #define UINT16 unsigned short int #define UINT32 unsigned int #define SINT16 signed short int #define UINT8 unsigned char typedef struct tPsTagEntry { int TagId; UCHAR TagLen; UCHAR TagData[RAMPS_MAX_PS_DATA_PER_TAG]; } tPsTagEntry, *tpPsTagEntry; typedef struct tRamPatch { int Len; UCHAR Data[PATCH_MAX_LEN]; } tRamPatch, *ptRamPatch; typedef struct tRamDynMemOverride { int Len; UCHAR Data[DYN_MEM_MAX_LEN]; } tRamDynMemOverride, *ptRamDynMemOverride; tPsTagEntry PsTagEntry[RAMPS_MAX_PS_TAGS_PER_FILE]; tRamPatch RamPatch[50]; tRamDynMemOverride RamDynMemOverride; enum MB_FILEFORMAT { MB_FILEFORMAT_PS, MB_FILEFORMAT_PATCH, MB_FILEFORMAT_DY, }; enum RamPsSection { RAM_PS_SECTION, RAM_PATCH_SECTION, RAM_DYN_MEM_SECTION }; enum eType { eHex, edecimal, }; struct ST_PS_DATA_FORMAT { enum eType eDataType; BOOL bIsArray; }; #define CONV_DEC_DIGIT_TO_VALUE(c) ((c) - '0') #define IS_HEX(c) (IS_BETWEEN((c), '0', '9') || IS_BETWEEN((c), 'a', 'f') || IS_BETWEEN((c), 'A', 'F')) #define IS_BETWEEN(x, lower, upper) (((lower) <= (x)) && ((x) <= (upper))) #define IS_DIGIT(c) (IS_BETWEEN((c), '0', '9')) #define CONV_HEX_DIGIT_TO_VALUE(c) (IS_DIGIT(c) ? ((c) - '0') : (IS_BETWEEN((c), 'A', 'Z') ? ((c) - 'A' + 10) : ((c) - 'a' + 10))) #define BYTES_OF_PS_DATA_PER_LINE 16 struct ST_READ_STATUS { unsigned uTagID; unsigned uSection; unsigned uLineCount; unsigned uCharCount; unsigned uByteCount; }; //DUT MODE related #define MC_BCAM_COMPARE_ADDRESS 0x00008080 #define HCI_3_PATCH_SPACE_LENGTH_1 (0x80) #define HCI_3_PATCH_SPACE_LENGTH_2 (0x279C) #define MEM_BLK_DATA_MAX (244) #define MC_BCAM_VALID_ADDRESS 0x00008100 //Audio stat typedef struct tAudio_Stat { UINT16 RxSilenceInsert; UINT16 RxAirPktDump; UINT16 RxCmplt; UINT16 TxCmplt; UINT16 MaxPLCGenInterval; UINT16 RxAirPktStatusGood; UINT16 RxAirPktStatusError; UINT16 RxAirPktStatusLost; UINT16 RxAirPktStatusPartial; SINT16 SampleMin; SINT16 SampleMax; UINT16 SampleCounter; UINT16 SampleStatEnable; } tAudioStat; //DMA stats typedef struct tBRM_Stats { // DMA Stats UINT32 DmaIntrs; // Voice Stats UINT16 VoiceTxDmaIntrs; UINT16 VoiceTxErrorIntrs; UINT16 VoiceTxDmaErrorIntrs; UINT16 VoiceTxPktAvail; UINT16 VoiceTxPktDumped; UINT16 VoiceTxDmaSilenceInserts; UINT16 VoiceRxDmaIntrs; UINT16 VoiceRxErrorIntrs; UINT16 VoiceRxGoodPkts; UINT16 VoiceRxErrCrc; UINT16 VoiceRxErrUnderOverFlow; UINT16 VoiceRxPktDumped; UINT16 VoiceTxReapOnError; UINT16 VoiceRxReapOnError; UINT16 VoiceSchedulingError; UINT16 SchedOnVoiceError; UINT16 Temp1; UINT16 Temp2; // Control Stats UINT16 ErrWrongLlid; UINT16 ErrL2CapLen; UINT16 ErrUnderOverFlow; UINT16 RxBufferDumped; UINT16 ErrWrongLmpPktType; UINT16 ErrWrongL2CapPktType; UINT16 HecFailPkts; UINT16 IgnoredPkts; UINT16 CrcFailPkts; UINT16 HwErrRxOverflow; UINT16 CtrlErrNoLmpBufs; // ACL Stats UINT16 DataTxBuffers; UINT16 DataRxBuffers; UINT16 DataRxErrCrc; UINT16 DataRxPktDumped; UINT16 LmpTxBuffers; UINT16 LmpRxBuffers; UINT16 ForceOverQosJob; // Sniff Stats UINT16 SniffSchedulingError; UINT16 SniffIntervalNoCorr; // Test Mode Stats UINT16 TestModeDroppedTxPkts; UINT16 TestModeDroppedLmps; // Error Stats UINT16 TimePassedIntrs; UINT16 NoCommandIntrs; } tBRM_Stats; typedef struct tSYSUTIL_ChipId { char *pName; UINT32 HwRev; } tSYSUTIL_ChipId; typedef struct tSU_RevInfo { tSYSUTIL_ChipId *pChipId; tSYSUTIL_ChipId *pChipRadioId; UINT32 ChipRadioId; UINT32 SubRadioId; UINT32 RomVersion; UINT32 RomBuildNumber; UINT32 BuildVersion; UINT32 BuildNumber; UINT16 RadioFormat; UINT16 RadioContent; UINT16 SysCfgFormat; UINT16 SysCfgContent; UINT8 ProductId; } tSU_RevInfo; #endif