1 /****************************************************************************** 2 * 3 * Copyright(c) 2019 Realtek Corporation. 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 _HAL_EFUSE_H_ 16 #define _HAL_EFUSE_H_ 17 18 #define MAX_EFUSE_FILE_VERSION_LENGTH 6 19 #define EFUSE_MASK_FILE_LEN 96 20 #define MAX_EFUSE_MAP_LEN 1536 21 22 enum EFUSE_STATUS_FLAGS { 23 EFUSE_STATUS_PROCESS = BIT0, 24 EFUSE_STATUS_MAP_FILE_LOADED = BIT1, 25 EFUSE_STATUS_MASK_FILE_LOADED = BIT2, 26 EFUSE_STATUS_BT_MAP_FILE_LOADED = BIT3, 27 EFUSE_STATUS_BT_MASK_FILE_LOADED = BIT4 28 }; 29 30 enum EFUSE_SHADOW_MAP_STATUS { 31 DEFAULT_MAP = 0, 32 HW_LOG_MAP = 1, 33 FILE_MAP = 2, 34 EFUSE_UNKNOWN, 35 }; 36 37 #define SHADOWMAP_FROM2STR(status)\ 38 (status == DEFAULT_MAP) ? "DEFAULT" :\ 39 (status == HW_LOG_MAP) ? "HW_LOG_EFUSE" :\ 40 (status == FILE_MAP) ? "FILE_EFUSE" :\ 41 "UNknow" 42 43 /* 44 * @phl_com 45 * @hal_com 46 * @shadow_map: Buffer pointer for limited size logical map 47 * @mask: Buffer pointer for limited size mask read from mask file 48 * @map_version: Buffer pointer for map version read from map file 49 * @mask_version: Buffer pointer for mask version read from mask file 50 * @log_efuse_size: Limited logical map size 51 * @mask_size: Limited mask size 52 * @version_len: Length of verion field in map/mask 53 * @status: Efuse status 54 * @is_map_valid: Flag to check autoload status 55 * @reserved 56 */ 57 struct efuse_t { 58 struct rtw_phl_com_t *phl_com; 59 struct rtw_hal_com_t *hal_com; 60 u8 *shadow_map; 61 u8 *mask; 62 u8 *map_version; 63 u8 *mask_version; 64 u32 log_efuse_size; 65 u32 mask_size; 66 u32 limit_efuse_size; 67 u32 limit_mask_size; 68 u8 version_len; 69 u8 status; 70 u8 is_map_valid; 71 u8 reserved; 72 u8 map_from_status; 73 /* BT*/ 74 u8 *bt_shadow_map; 75 u8 *bt_mask; 76 u32 bt_log_efuse_size; 77 u32 bt_efuse_size; 78 u32 bt_mask_size; 79 }; 80 81 #endif /* _HAL_EFUSE_H_ */ 82