drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b1ant.c
Source file repositories/reference/linux-study-clean/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b1ant.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b1ant.c- Extension
.c- Size
- 106408 bytes
- Lines
- 3438
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
halbt_precomp.h
Detected Declarations
function halbtc8723b1ant_updatera_maskfunction btc8723b1ant_auto_rate_fb_retryfunction halbtc8723b1ant_retry_limitfunction halbtc8723b1ant_ampdu_maxtimefunction halbtc8723b1ant_limited_txfunction halbtc8723b1ant_limited_rxfunction halbtc8723b1ant_query_bt_infofunction halbtc8723b1ant_monitor_bt_ctrfunction halbtc8723b1ant_monitor_wifi_ctrfunction btc8723b1ant_is_wifi_status_changedfunction halbtc8723b1ant_update_bt_link_infofunction halbtc8723b1ant_set_bt_auto_reportfunction halbtc8723b1ant_bt_auto_reportfunction btc8723b1ant_set_sw_pen_tx_rate_adaptfunction halbtc8723b1ant_low_penalty_rafunction halbtc8723b1ant_set_coex_tablefunction halbtc8723b1ant_coex_tablefunction halbtc8723b1ant_coex_table_with_typefunction halbtc8723b1ant_set_fw_ignore_wlan_actfunction halbtc8723b1ant_ignore_wlan_actfunction halbtc8723b1ant_set_fw_ps_tdmafunction halbtc8723b1ant_set_lps_rpwmfunction halbtc8723b1ant_lps_rpwmfunction halbtc8723b1ant_sw_mechanismfunction halbtc8723b1ant_set_ant_pathfunction halbtc8723b1ant_ps_tdmafunction btc8723b1ant_tdma_dur_adj_for_aclfunction halbtc8723b1ant_ps_tdma_chk_pwr_savefunction halbtc8723b1ant_power_save_statefunction halbtc8723b1ant_action_wifi_onlyfunction halbtc8723b1ant_monitor_bt_enable_disablefunction halbtc8723b1ant_action_bt_whck_testfunction halbtc8723b1ant_action_wifi_multiportfunction halbtc8723b1ant_action_hsfunction halbtc8723b1ant_action_bt_inquiryfunction btc8723b1ant_act_bt_sco_hid_only_busyfunction halbtc8723b1ant_action_wifi_connected_bt_acl_busyfunction btc8723b1ant_action_wifi_not_connfunction btc8723b1ant_action_wifi_not_conn_scanfunction btc8723b1ant_act_wifi_not_conn_asso_authfunction btc8723b1ant_action_wifi_conn_scanfunction halbtc8723b1ant_action_wifi_connected_special_packetfunction halbtc8723b1ant_action_wifi_connectedfunction halbtc8723b1ant_run_coexist_mechanismfunction halbtc8723b1ant_init_coex_dmfunction halbtc8723b1ant_init_hw_configfunction ex_btc8723b1ant_power_on_settingfunction ex_btc8723b1ant_init_hwconfig
Annotated Snippet
switch (coex_dm->cur_arfr_type) {
case 0: /* normal mode */
btcoexist->btc_write_4byte(btcoexist, 0x430,
coex_dm->backup_arfr_cnt1);
btcoexist->btc_write_4byte(btcoexist, 0x434,
coex_dm->backup_arfr_cnt2);
break;
case 1:
btcoexist->btc_get(btcoexist,
BTC_GET_BL_WIFI_UNDER_B_MODE,
&wifi_under_bmode);
if (wifi_under_bmode) {
btcoexist->btc_write_4byte(btcoexist,
0x430, 0x0);
btcoexist->btc_write_4byte(btcoexist,
0x434, 0x01010101);
} else {
btcoexist->btc_write_4byte(btcoexist,
0x430, 0x0);
btcoexist->btc_write_4byte(btcoexist,
0x434, 0x04030201);
}
break;
default:
break;
}
}
coex_dm->pre_arfr_type = coex_dm->cur_arfr_type;
}
static void halbtc8723b1ant_retry_limit(struct btc_coexist *btcoexist,
bool force_exec, u8 type)
{
coex_dm->cur_retry_limit_type = type;
if (force_exec || (coex_dm->pre_retry_limit_type !=
coex_dm->cur_retry_limit_type)) {
switch (coex_dm->cur_retry_limit_type) {
case 0: /* normal mode */
btcoexist->btc_write_2byte(btcoexist, 0x42a,
coex_dm->backup_retry_limit);
break;
case 1: /* retry limit = 8 */
btcoexist->btc_write_2byte(btcoexist, 0x42a, 0x0808);
break;
default:
break;
}
}
coex_dm->pre_retry_limit_type = coex_dm->cur_retry_limit_type;
}
static void halbtc8723b1ant_ampdu_maxtime(struct btc_coexist *btcoexist,
bool force_exec, u8 type)
{
coex_dm->cur_ampdu_time_type = type;
if (force_exec || (coex_dm->pre_ampdu_time_type !=
coex_dm->cur_ampdu_time_type)) {
switch (coex_dm->cur_ampdu_time_type) {
case 0: /* normal mode */
btcoexist->btc_write_1byte(btcoexist, 0x456,
coex_dm->backup_ampdu_max_time);
break;
case 1: /* AMPDU timw = 0x38 * 32us */
btcoexist->btc_write_1byte(btcoexist, 0x456, 0x38);
break;
default:
break;
}
}
coex_dm->pre_ampdu_time_type = coex_dm->cur_ampdu_time_type;
}
static void halbtc8723b1ant_limited_tx(struct btc_coexist *btcoexist,
bool force_exec, u8 ra_masktype,
u8 arfr_type, u8 retry_limit_type,
u8 ampdu_time_type)
{
switch (ra_masktype) {
case 0: /* normal mode */
halbtc8723b1ant_updatera_mask(btcoexist, force_exec, 0x0);
break;
case 1: /* disable cck 1/2 */
halbtc8723b1ant_updatera_mask(btcoexist, force_exec,
0x00000003);
break;
Annotation
- Immediate include surface: `halbt_precomp.h`.
- Detected declarations: `function halbtc8723b1ant_updatera_mask`, `function btc8723b1ant_auto_rate_fb_retry`, `function halbtc8723b1ant_retry_limit`, `function halbtc8723b1ant_ampdu_maxtime`, `function halbtc8723b1ant_limited_tx`, `function halbtc8723b1ant_limited_rx`, `function halbtc8723b1ant_query_bt_info`, `function halbtc8723b1ant_monitor_bt_ctr`, `function halbtc8723b1ant_monitor_wifi_ctr`, `function btc8723b1ant_is_wifi_status_changed`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.