12865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#ifndef __RTL8712_EFUSE_H__
22865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define __RTL8712_EFUSE_H__
32865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger
42865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#include "osdep_service.h"
52865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger
62865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger
72865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define _REPEAT_THRESHOLD_	3
82865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger
92865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define EFUSE_MAX_SIZE		512
102865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define EFUSE_MAP_MAX_SIZE	128
112865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger
122865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define PGPKG_MAX_WORDS	4
132865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define PGPKT_DATA_SIZE	8 /* PGPKG_MAX_WORDS*2; BYTES sizeof(u8)*8*/
142865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define MAX_PGPKT_SIZE	9 /* 1 + PGPKT_DATA_SIZE; header + 2 * 4 words (BYTES)*/
152865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger
162865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define GET_EFUSE_OFFSET(header)	((header & 0xF0) >> 4)
172865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define GET_EFUSE_WORD_EN(header)	(header & 0x0F)
182865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#define MAKE_EFUSE_HEADER(offset, word_en)	(((offset & 0x0F) << 4) | \
192865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger						(word_en & 0x0F))
202865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger/*--------------------------------------------------------------------------*/
212865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerstruct PGPKT_STRUCT {
222865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger	u8 offset;
232865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger	u8 word_en;
242865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger	u8 data[PGPKT_DATA_SIZE];
252865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger};
262865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger/*--------------------------------------------------------------------------*/
272865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru8 r8712_efuse_reg_init(struct _adapter *padapter);
282865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingervoid r8712_efuse_reg_uninit(struct _adapter *padapter);
292865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru16 r8712_efuse_get_current_size(struct _adapter *padapter);
302865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingerint r8712_efuse_get_max_size(struct _adapter *padapter);
312865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingervoid r8712_efuse_change_max_size(struct _adapter *padapter);
322865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru8 r8712_efuse_pg_packet_read(struct _adapter *padapter,
332865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger			      u8 offset, u8 *data);
342865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru8 r8712_efuse_pg_packet_write(struct _adapter *padapter,
352865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger			       const u8 offset, const u8 word_en,
362865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger			       const u8 *data);
372865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru8 r8712_efuse_access(struct _adapter *padapter, u8 bRead,
382865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger		      u16 start_addr, u16 cnts, u8 *data);
392865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru8 r8712_efuse_map_read(struct _adapter *padapter, u16 addr,
402865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger			u16 cnts, u8 *data);
412865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Fingeru8 r8712_efuse_map_write(struct _adapter *padapter, u16 addr,
422865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger				u16 cnts, u8 *data);
432865d42c78a9121caad52cb02d1fbb7f5cdbc4efLarry Finger#endif
44