/** @file */
|
/******************************************************************************
|
*
|
* Copyright(c) 2019 Realtek Corporation. All rights reserved.
|
*
|
* This program is free software; you can redistribute it and/or modify it
|
* under the terms of version 2 of the GNU General Public License as
|
* published by the Free Software Foundation.
|
*
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
* more details.
|
*
|
******************************************************************************/
|
|
#ifndef _MAC_AX_FWDL_H_
|
#define _MAC_AX_FWDL_H_
|
|
#include "../type.h"
|
#include "fwcmd.h"
|
#include "trx_desc.h"
|
#include "trxcfg.h"
|
#include "dle.h"
|
#include "hci_fc.h"
|
#include "power_saving.h"
|
|
#if MAC_AX_PCIE_SUPPORT
|
#include "_pcie.h"
|
#endif
|
|
#if MAC_AX_8852A_SUPPORT
|
#include "../fw_ax/rtl8852a/hal8852a_fw.h"
|
#endif
|
#if MAC_AX_8852B_SUPPORT
|
#include "../fw_ax/rtl8852b/hal8852b_fw_u1.h"
|
#include "../fw_ax/rtl8852b/hal8852b_fw.h"
|
#endif
|
|
#define FWHDR_HDR_LEN (sizeof(struct fwhdr_hdr_t))
|
#define FWHDR_SECTION_LEN (sizeof(struct fwhdr_section_t))
|
|
#define ROMDL_SEG_LEN 0x40000
|
|
#define AX_BOOT_REASON_PWR_ON 0
|
#define AX_BOOT_REASON_WDT 1
|
#define AX_BOOT_REASON_LPS 2
|
|
#define RTL8852A_ID 0x50
|
#define RTL8852B_ID 0x51
|
#define RTL8852C_ID 0x52
|
#define RTL8834A_ID 0x53
|
|
#define RTL8852A_ROM_ADDR 0x18900000
|
#define RTL8852B_ROM_ADDR 0x18900000
|
#define RTL8852C_ROM_ADDR 0x20000000
|
#define RTL8192XB_ROM_ADDR 0x20000000
|
|
/**
|
* @struct fwhdr_hdr_t
|
* @brief fwhdr_hdr_t
|
*
|
* @var fwhdr_hdr_t::dword0
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword1
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword2
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword3
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword4
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword5
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword6
|
* Please Place Description here.
|
* @var fwhdr_hdr_t::dword7
|
* Please Place Description here.
|
*/
|
struct fwhdr_hdr_t {
|
u32 dword0;
|
u32 dword1;
|
u32 dword2;
|
u32 dword3;
|
u32 dword4;
|
u32 dword5;
|
u32 dword6;
|
u32 dword7;
|
};
|
|
/**
|
* @struct fwhdr_section_t
|
* @brief fwhdr_section_t
|
*
|
* @var fwhdr_section_t::dword0
|
* Please Place Description here.
|
* @var fwhdr_section_t::dword1
|
* Please Place Description here.
|
* @var fwhdr_section_t::dword2
|
* Please Place Description here.
|
* @var fwhdr_section_t::dword3
|
* Please Place Description here.
|
*/
|
struct fwhdr_section_t {
|
u32 dword0;
|
u32 dword1;
|
u32 dword2;
|
u32 dword3;
|
};
|
|
/**
|
* @enum fw_dl_status
|
*
|
* @brief fw_dl_status
|
*
|
* @var fw_dl_status::FWDL_INITIAL_STATE
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_FWDL_ONGOING
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_CHECKSUM_FAIL
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_SECURITY_FAIL
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_CUT_NOT_MATCH
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_RSVD0
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_WCPU_FWDL_RDY
|
* Please Place Description here.
|
* @var fw_dl_status::FWDL_WCPU_FW_INIT_RDY
|
* Please Place Description here.
|
*/
|
enum fw_dl_status {
|
FWDL_INITIAL_STATE = 0,
|
FWDL_FWDL_ONGOING = 1,
|
FWDL_CHECKSUM_FAIL = 2,
|
FWDL_SECURITY_FAIL = 3,
|
FWDL_CUT_NOT_MATCH = 4,
|
FWDL_RSVD0 = 5,
|
FWDL_WCPU_FWDL_RDY = 6,
|
FWDL_WCPU_FW_INIT_RDY = 7
|
};
|
|
/**
|
* @enum fw_dl_cv
|
*
|
* @brief fw_dl_cv
|
*
|
* @var fw_dl_chip_cut::FWDL_CAV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CBV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CCV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CDV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CEV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CFV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CGV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CHV
|
* Please Place Description here.
|
* @var fw_dl_chip_cut::FWDL_CIV
|
* Please Place Description here.
|
*/
|
enum fw_dl_cv {
|
FWDL_CAV = 0,
|
FWDL_CBV = 1,
|
FWDL_CCV,
|
FWDL_CDV,
|
FWDL_CEV,
|
FWDL_CFV,
|
FWDL_CGV,
|
FWDL_CHV,
|
FWDL_CIV,
|
};
|
|
/* === FW header === */
|
/* dword0 */
|
#define FWHDR_CUTID_SH 0
|
#define FWHDR_CUTID_MSK 0xff
|
#define FWHDR_CHIPID_SH 8
|
#define FWHDR_CHIPID_MSK 0xffffff
|
|
/* dword1 */
|
#define FWHDR_MAJORVER_SH 0
|
#define FWHDR_MAJORVER_MSK 0xff
|
#define FWHDR_MINORVER_SH 8
|
#define FWHDR_MINORVER_MSK 0xff
|
#define FWHDR_SUBVERSION_SH 16
|
#define FWHDR_SUBVERSION_MSK 0xff
|
#define FWHDR_SUBINDEX_SH 24
|
#define FWHDR_SUBINDEX_MSK 0xff
|
|
/* dword2 */
|
#define FWHDR_COMMITID_SH 0
|
#define FWHDR_COMMITID_MSK 0xffffffff
|
|
/* dword3 */
|
#define FWHDR_SEC_HDR_OFFSET_SH 0
|
#define FWHDR_SEC_HDR_OFFSET_MSK 0xff
|
#define FWHDR_SEC_HDR_SZ_SH 8
|
#define FWHDR_SEC_HDR_SZ_MSK 0xff
|
#define FWHDR_FWHDR_SZ_SH 16
|
#define FWHDR_FWHDR_SZ_MSK 0xff
|
#define FWHDR_FWHDR_VER_SH 24
|
#define FWHDR_FWHDR_VER_MSK 0xff
|
|
/* dword4 */
|
#define FWHDR_MONTH_SH 0
|
#define FWHDR_MONTH_MSK 0xff
|
#define FWHDR_DATE_SH 8
|
#define FWHDR_DATE_MSK 0xff
|
#define FWHDR_HOUR_SH 16
|
#define FWHDR_HOUR_MSK 0xff
|
#define FWHDR_MIN_SH 24
|
#define FWHDR_MIN_MSK 0xff
|
|
/* dword5 */
|
#define FWHDR_YEAR_SH 0
|
#define FWHDR_YEAR_MSK 0xffff
|
|
/* dword6 */
|
#define FWHDR_IMAGEFROM_SH 0
|
#define FWHDR_IMAGEFROM_MSK 0x3
|
#define FWHDR_BOOTFROM_SH 4
|
#define FWHDR_BOOTFROM_MSK 0x3
|
#define FWHDR_ROM_ONLY BIT(6)
|
#define FWHDR_FW_TYPE BIT(7)
|
#define FWHDR_SEC_NUM_SH 8
|
#define FWHDR_SEC_NUM_MSK 0xff
|
#define FWHDR_HCI_TYPE_SH 16
|
#define FWHDR_HCI_TYPE_MSK 0xf
|
#define FWHDR_NET_TYPE_SH 20
|
#define FWHDR_NET_TYPE_MSK 0xf
|
|
/* dword7 */
|
#define FWHDR_FW_PART_SZ_SH 0
|
#define FWHDR_FW_PART_SZ_MSK 0xffff
|
#define FWHDR_CMD_VER_SH 24
|
#define FWHDR_CMD_VER_MSK 0xff
|
|
/* === Section header === */
|
/* dword0 */
|
#define SECTION_INFO_SEC_DL_ADDR_SH 0
|
#define SECTION_INFO_SEC_DL_ADDR_MSK 0xffffffff
|
|
/* dword1 */
|
#define SECTION_INFO_SEC_SIZE_SH 0
|
#define SECTION_INFO_SEC_SIZE_MSK 0xffffff
|
#define SECTION_INFO_SECTIONTYPE_SH 24
|
#define SECTION_INFO_SECTIONTYPE_MSK 0xf
|
#define SECTION_INFO_CHECKSUM BIT(28)
|
#define SECTION_INFO_REDL BIT(29)
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
/**
|
* @brief disable_fw_watchdog
|
*
|
* @param *adapter
|
* @param *fw
|
* @param len
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 disable_fw_watchdog(struct mac_ax_adapter *adapter);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
/**
|
* @brief mac_fwredl
|
*
|
* @param *adapter
|
* @param *fw
|
* @param len
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_fwredl(struct mac_ax_adapter *adapter, u8 *fw, u32 len);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
|
/**
|
* @brief mac_fwdl
|
*
|
* @param *adapter
|
* @param *fw
|
* @param len
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_fwdl(struct mac_ax_adapter *adapter, u8 *fw, u32 len);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
|
/**
|
* @brief mac_enable_cpu
|
*
|
* @param *adapter
|
* @param boot_reason
|
* @param dlfw
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_enable_cpu(struct mac_ax_adapter *adapter, u8 boot_reason, u8 dlfw);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
|
/**
|
* @brief mac_disable_cpu
|
*
|
* @param *adapter
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_disable_cpu(struct mac_ax_adapter *adapter);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
|
/**
|
* @brief mac_romdl
|
*
|
* @param *adapter
|
* @param *rom
|
* @param romaddr
|
* @param len
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_romdl(struct mac_ax_adapter *adapter, u8 *rom, u32 romaddr, u32 len);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
|
/**
|
* @brief mac_ram_boot
|
*
|
* @param *adapter
|
* @param *fw
|
* @param len
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_ram_boot(struct mac_ax_adapter *adapter, u8 *fw, u32 len);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @addtogroup Firmware
|
* @{
|
* @addtogroup FW_Download
|
* @{
|
*/
|
|
/**
|
* @brief mac_enable_fw
|
*
|
* @param *adapter
|
* @param cat
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_enable_fw(struct mac_ax_adapter *adapter, enum rtw_fw_type cat);
|
/**
|
* @}
|
* @}
|
*/
|
|
/**
|
* @brief mac_query_fw_buff
|
*
|
* @param *adapter
|
* @param cat
|
* @param **fw
|
* @param *fw_len
|
* @return Please Place Description here.
|
* @retval u32
|
*/
|
u32 mac_query_fw_buff(struct mac_ax_adapter *adapter, enum rtw_fw_type cat, u8 **fw, u32 *fw_len);
|
/**
|
* @}
|
* @}
|
*/
|
#endif
|