linux/drivers/staging/rtl8188eu/include/rtw_efuse.h
<<
>>
Prefs
   1/******************************************************************************
   2 *
   3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
   4 *
   5 * This program is free software; you can redistribute it and/or modify it
   6 * under the terms of version 2 of the GNU General Public License as
   7 * published by the Free Software Foundation.
   8 *
   9 * This program is distributed in the hope that it will be useful, but WITHOUT
  10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12 * more details.
  13 *
  14 ******************************************************************************/
  15#ifndef __RTW_EFUSE_H__
  16#define __RTW_EFUSE_H__
  17
  18#include <osdep_service.h>
  19
  20#define EFUSE_ERROE_HANDLE              1
  21
  22#define PG_STATE_HEADER                 0x01
  23#define PG_STATE_WORD_0         0x02
  24#define PG_STATE_WORD_1         0x04
  25#define PG_STATE_WORD_2         0x08
  26#define PG_STATE_WORD_3         0x10
  27#define PG_STATE_DATA                   0x20
  28
  29#define PG_SWBYTE_H                     0x01
  30#define PG_SWBYTE_L                     0x02
  31
  32#define PGPKT_DATA_SIZE         8
  33
  34#define EFUSE_WIFI                              0
  35#define EFUSE_BT                                1
  36
  37enum _EFUSE_DEF_TYPE {
  38        TYPE_EFUSE_MAX_SECTION                          = 0,
  39        TYPE_EFUSE_REAL_CONTENT_LEN                     = 1,
  40        TYPE_AVAILABLE_EFUSE_BYTES_BANK         = 2,
  41        TYPE_AVAILABLE_EFUSE_BYTES_TOTAL        = 3,
  42        TYPE_EFUSE_MAP_LEN                                      = 4,
  43        TYPE_EFUSE_PROTECT_BYTES_BANK           = 5,
  44        TYPE_EFUSE_CONTENT_LEN_BANK                     = 6,
  45};
  46
  47/* E-Fuse */
  48#define EFUSE_MAP_SIZE      512
  49#define EFUSE_MAX_SIZE      256
  50/* end of E-Fuse */
  51
  52#define         EFUSE_MAX_MAP_LEN               512
  53#define         EFUSE_MAX_HW_SIZE               512
  54#define         EFUSE_MAX_SECTION_BASE  16
  55
  56#define EXT_HEADER(header) ((header & 0x1F) == 0x0F)
  57#define ALL_WORDS_DISABLED(wde) ((wde & 0x0F) == 0x0F)
  58#define GET_HDR_OFFSET_2_0(header) ((header & 0xE0) >> 5)
  59
  60#define         EFUSE_REPEAT_THRESHOLD_                 3
  61
  62/*      The following is for BT Efuse definition */
  63#define         EFUSE_BT_MAX_MAP_LEN            1024
  64#define         EFUSE_MAX_BANK                  4
  65#define         EFUSE_MAX_BT_BANK               (EFUSE_MAX_BANK-1)
  66/*--------------------------Define Parameters-------------------------------*/
  67#define         EFUSE_MAX_WORD_UNIT                     4
  68
  69/*------------------------------Define structure----------------------------*/
  70struct pgpkt {
  71        u8 offset;
  72        u8 word_en;
  73        u8 data[8];
  74        u8 word_cnts;
  75};
  76
  77/*------------------------------Define structure----------------------------*/
  78struct efuse_hal {
  79        u8 fakeEfuseBank;
  80        u32     fakeEfuseUsedBytes;
  81        u8 fakeEfuseContent[EFUSE_MAX_HW_SIZE];
  82        u8 fakeEfuseInitMap[EFUSE_MAX_MAP_LEN];
  83        u8 fakeEfuseModifiedMap[EFUSE_MAX_MAP_LEN];
  84
  85        u16 BTEfuseUsedBytes;
  86        u8 BTEfuseUsedPercentage;
  87        u8 BTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
  88        u8 BTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
  89        u8 BTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
  90
  91        u16 fakeBTEfuseUsedBytes;
  92        u8 fakeBTEfuseContent[EFUSE_MAX_BT_BANK][EFUSE_MAX_HW_SIZE];
  93        u8 fakeBTEfuseInitMap[EFUSE_BT_MAX_MAP_LEN];
  94        u8 fakeBTEfuseModifiedMap[EFUSE_BT_MAX_MAP_LEN];
  95};
  96
  97u8 Efuse_CalculateWordCnts(u8 word_en);
  98void EFUSE_GetEfuseDefinition(struct adapter *adapt, u8 type, u8 type1,
  99                              void *out);
 100u8 efuse_OneByteRead(struct adapter *adapter, u16 addr, u8 *data);
 101u8 efuse_OneByteWrite(struct adapter *adapter, u16 addr, u8 data);
 102
 103void efuse_ReadEFuse(struct adapter *Adapter, u8 efuseType, u16 _offset,
 104                u16 _size_byte, u8 *pbuf);
 105void Efuse_PowerSwitch(struct adapter *adapt, u8 bWrite, u8  PwrState);
 106int Efuse_PgPacketRead(struct adapter *adapt, u8 offset, u8 *data);
 107bool Efuse_PgPacketWrite(struct adapter *adapter, u8 offset, u8 word, u8 *data);
 108void efuse_WordEnableDataRead(u8 word_en, u8 *sourdata, u8 *targetdata);
 109u8 Efuse_WordEnableDataWrite(struct adapter *adapter, u16 efuse_addr,
 110                             u8 word_en, u8 *data);
 111
 112void EFUSE_ShadowMapUpdate(struct adapter *adapter, u8 efusetype);
 113#endif
 114