linux/drivers/staging/rtl8723au/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 ******************************************************************************/
  16#ifndef __RTW_EFUSE_H__
  17#define __RTW_EFUSE_H__
  18
  19#include <osdep_service.h>
  20
  21#define EFUSE_ERROE_HANDLE              1
  22
  23#define PG_STATE_HEADER                 0x01
  24#define PG_STATE_WORD_0         0x02
  25#define PG_STATE_WORD_1         0x04
  26#define PG_STATE_WORD_2         0x08
  27#define PG_STATE_WORD_3         0x10
  28#define PG_STATE_DATA                   0x20
  29
  30#define PG_SWBYTE_H                     0x01
  31#define PG_SWBYTE_L                     0x02
  32
  33#define PGPKT_DATA_SIZE         8
  34
  35#define EFUSE_WIFI                              0
  36#define EFUSE_BT                                1
  37
  38enum _EFUSE_DEF_TYPE {
  39        TYPE_EFUSE_MAX_SECTION                          = 0,
  40        TYPE_EFUSE_REAL_CONTENT_LEN                     = 1,
  41        TYPE_AVAILABLE_EFUSE_BYTES_BANK         = 2,
  42        TYPE_AVAILABLE_EFUSE_BYTES_TOTAL        = 3,
  43        TYPE_EFUSE_MAP_LEN                                      = 4,
  44        TYPE_EFUSE_PROTECT_BYTES_BANK           = 5,
  45        TYPE_EFUSE_CONTENT_LEN_BANK                     = 6,
  46};
  47
  48/* E-Fuse */
  49#define EFUSE_MAP_SIZE      256
  50
  51#define EFUSE_MAX_SIZE      512
  52/* end of E-Fuse */
  53
  54#define         EFUSE_MAX_MAP_LEN               256
  55#define         EFUSE_MAX_HW_SIZE               512
  56#define         EFUSE_MAX_SECTION_BASE  16
  57
  58#define EXT_HEADER(header) ((header & 0x1F) == 0x0F)
  59#define ALL_WORDS_DISABLED(wde) ((wde & 0x0F) == 0x0F)
  60#define GET_HDR_OFFSET_2_0(header) ( (header & 0xE0) >> 5)
  61
  62#define         EFUSE_REPEAT_THRESHOLD_                 3
  63
  64/*  */
  65/*      The following is for BT Efuse definition */
  66/*  */
  67#define         EFUSE_BT_MAX_MAP_LEN            1024
  68#define         EFUSE_MAX_BANK                  4
  69#define         EFUSE_MAX_BT_BANK               (EFUSE_MAX_BANK-1)
  70/*  */
  71/*--------------------------Define Parameters-------------------------------*/
  72#define         EFUSE_MAX_WORD_UNIT                     4
  73
  74/*------------------------------Define structure----------------------------*/
  75struct pg_pkt_struct {
  76        u8 offset;
  77        u8 word_en;
  78        u8 data[8];
  79        u8 word_cnts;
  80};
  81
  82/*------------------------Export global variable----------------------------*/
  83
  84u16     efuse_GetMaxSize23a(struct rtw_adapter *padapter);
  85int     rtw_efuse_access23a(struct rtw_adapter *padapter, u8 bRead, u16 start_addr, u16 cnts, u8 *data);
  86int     rtw_efuse_map_read23a(struct rtw_adapter *padapter, u16 addr, u16 cnts, u8 *data);
  87u8      rtw_efuse_map_write(struct rtw_adapter *padapter, u16 addr, u16 cnts, u8 *data);
  88int     rtw_BT_efuse_map_read23a(struct rtw_adapter *padapter, u16 addr, u16 cnts, u8 *data);
  89u8      rtw_BT_efuse_map_write(struct rtw_adapter *padapter, u16 addr, u16 cnts, u8 *data);
  90
  91u16     Efuse_GetCurrentSize23a(struct rtw_adapter *pAdapter, u8 efuseType);
  92u8      Efuse_CalculateWordCnts23a(u8 word_en);
  93void    ReadEFuseByte23a(struct rtw_adapter *Adapter, u16 _offset, u8 *pbuf);
  94void    EFUSE_GetEfuseDefinition23a(struct rtw_adapter *pAdapter, u8 efuseType, u8 type, void *pOut);
  95int     efuse_OneByteRead23a(struct rtw_adapter *pAdapter, u16 addr, u8 *data);
  96int     efuse_OneByteWrite23a(struct rtw_adapter *pAdapter, u16 addr, u8 data);
  97
  98void    Efuse_PowerSwitch23a(struct rtw_adapter *pAdapter, u8 bWrite,
  99                             u8 PwrState);
 100int     Efuse_PgPacketRead23a(struct rtw_adapter *pAdapter, u8 offset, u8 *data);
 101int     Efuse_PgPacketWrite23a(struct rtw_adapter *pAdapter, u8 offset, u8 word_en, u8 *data);
 102void    efuse_WordEnableDataRead23a(u8 word_en, u8 *sourdata, u8 *targetdata);
 103u8      Efuse_WordEnableDataWrite23a(struct rtw_adapter *pAdapter, u16 efuse_addr, u8 word_en, u8 *data);
 104
 105u8      EFUSE_Read1Byte23a(struct rtw_adapter *pAdapter, u16 Address);
 106void    EFUSE_ShadowMapUpdate23a(struct rtw_adapter *pAdapter, u8 efuseType);
 107void    EFUSE_ShadowRead23a(struct rtw_adapter *pAdapter, u8 Type, u16 Offset, u32 *Value);
 108
 109#endif
 110