rtl8852ce: Add base driver v1.19.16.1-0-g1fe335ba1.20240815_PC

- support Android-14
- support Linux kernel 6.9
- support 6G regulation
- support Thermal protection
- support TX shortcut to reduce CPU loading
- fix some coverity issues
- Use RTW regulatory version rtk_8852CE_M.2_2230-67-52
- default enable con-current and MCC

Bug 4667769
Bug 4667981

Change-Id: Iee069ecdd1f00a0b78285d0a4ef5778ed9ace478
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3195601
Tested-by: Shobek Attupurath <sattupurath@nvidia.com>
Reviewed-by: Revanth Kumar Uppala <ruppala@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
This commit is contained in:
Shobek Attupurath
2024-08-16 19:29:47 +00:00
committed by Jon Hunter
parent 5220de6faa
commit 7dd632ff96
1061 changed files with 1210881 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
/******************************************************************************
*
* Copyright(c) 2007 - 2019 Realtek Corporation.
*
* 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 __RTW_PWRCTRL_H_
#define __RTW_PWRCTRL_H_
typedef _sema _pwrlock;
/*
BIT[2:0] = HW state
BIT[3] = Protocol PS state, 0: register active state , 1: register sleep state
BIT[4] = sub-state
*/
enum ps_ips_level {
PS_IPS_NONE = 0,
PS_PWR_OFF = 1,
PS_IPS_RF_OFF = 2,
PS_IPS_CLK_GATED = 3,
PS_IPS_PWR_GATED = 4,
PS_IPS_MAX = 5
};
enum ps_lps_level {
PS_LPS_NONE = 0,
PS_LPS_RF_OFF = 1,
PS_LPS_CLK_GATED = 2,
PS_LPS_PWR_GATED = 3,
PS_LPS_MAX = 4
};
struct pwrctrl_priv {
_pwrlock lock;
u32 alives;
_workitem dma_event; /*for handle un-synchronized tx dma*/
u8 bInSuspend;
#ifdef CONFIG_BTC
u8 bAutoResume;
u8 autopm_cnt;
#endif
u8 bSupportRemoteWakeup;
u8 wowlan_ap_mode;
u8 wowlan_mode;
u8 wowlan_p2p_mode;
u8 wowlan_no_link_mode;
u8 wowlan_pno_enable;
u8 wowlan_in_resume;
#ifdef CONFIG_GPIO_WAKEUP
#endif /* CONFIG_GPIO_WAKEUP */
u8 hst2dev_high_active;
#ifdef CONFIG_WOWLAN
#ifdef CONFIG_IPV6
u8 wowlan_ns_offload_en;
#endif /*CONFIG_IPV6*/
u8 wowlan_txpause_status;
u8 wowlan_pattern_idx;
u64 wowlan_fw_iv;
struct rtl_priv_pattern patterns[MAX_WKFM_CAM_NUM];
_mutex wowlan_pattern_cam_mutex;
u8 wowlan_aoac_rpt_loc;
struct aoac_report wowlan_aoac_rpt;
#endif /* CONFIG_WOWLAN */
u8 bkeepfwalive;
#ifdef CONFIG_RESUME_IN_WORKQUEUE
struct workqueue_struct *rtw_workqueue;
_workitem resume_work;
#endif
#ifdef CONFIG_HAS_EARLYSUSPEND
struct early_suspend early_suspend;
u8 do_late_resume;
#endif /* CONFIG_HAS_EARLYSUSPEND */
#ifdef CONFIG_ANDROID_POWER
android_early_suspend_t early_suspend;
u8 do_late_resume;
#endif
#ifdef CONFIG_RTW_CFGVENDOR_LLSTATS
systime radio_on_start_time;
systime pwr_saving_start_time;
u32 pwr_saving_time;
u32 on_time;
u32 tx_time;
u32 rx_time;
#endif /* CONFIG_RTW_CFGVENDOR_LLSTATS */
enum rtw_rf_state rfkill_state;
};
#ifdef CONFIG_RTW_IPS
bool rtw_core_set_ips_state(void *drv_priv, enum rtw_rf_state state);
#endif
extern void rtw_init_pwrctrl_priv(_adapter *adapter);
extern void rtw_free_pwrctrl_priv(_adapter *adapter);
#ifdef CONFIG_RESUME_IN_WORKQUEUE
void rtw_resume_in_workqueue(struct pwrctrl_priv *pwrpriv);
#endif /* CONFIG_RESUME_IN_WORKQUEUE */
#if defined(CONFIG_HAS_EARLYSUSPEND) || defined(CONFIG_ANDROID_POWER)
bool rtw_is_earlysuspend_registered(struct pwrctrl_priv *pwrpriv);
bool rtw_is_do_late_resume(struct pwrctrl_priv *pwrpriv);
void rtw_set_do_late_resume(struct pwrctrl_priv *pwrpriv, bool enable);
void rtw_register_early_suspend(struct pwrctrl_priv *pwrpriv);
void rtw_unregister_early_suspend(struct pwrctrl_priv *pwrpriv);
#else
#define rtw_is_earlysuspend_registered(pwrpriv) _FALSE
#define rtw_is_do_late_resume(pwrpriv) _FALSE
#define rtw_set_do_late_resume(pwrpriv, enable) do {} while (0)
#define rtw_register_early_suspend(pwrpriv) do {} while (0)
#define rtw_unregister_early_suspend(pwrpriv) do {} while (0)
#endif /* CONFIG_HAS_EARLYSUSPEND || CONFIG_ANDROID_POWER */
void rtw_ssmps_enter(_adapter *adapter, struct sta_info *sta);
void rtw_ssmps_leave(_adapter *adapter, struct sta_info *sta);
void rtw_update_ips_setting(int make_level, int ins_level, u8 *mode, u8 *cap, bool is_wow);
void rtw_update_lps_setting(int make_level, int ins_level, u8 *mode, u8 *cap, bool is_wow);
#endif /* __RTL871X_PWRCTRL_H_ */