drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c

Source file repositories/reference/linux-study-clean/drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c

File Facts

System
Linux kernel
Corpus path
drivers/staging/rtl8723bs/hal/HalBtc8723b2Ant.c
Extension
.c
Size
82329 bytes
Lines
2631
Domain
Driver Families
Bucket
drivers/staging
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.

Dependency Surface

Detected Declarations

Annotated Snippet

if (btRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
				btRssiState = BTC_RSSI_STATE_HIGH;
			} else {
				btRssiState = BTC_RSSI_STATE_STAY_LOW;
			}
		} else {
			if (btRssi < rssiThresh) {
				btRssiState = BTC_RSSI_STATE_LOW;
			} else {
				btRssiState = BTC_RSSI_STATE_STAY_HIGH;
			}
		}
	} else if (levelNum == 3) {
		if (rssiThresh > rssiThresh1) {
			return pCoexSta->preBtRssiState;
		}

		if (
			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_LOW) ||
			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_LOW)
		) {
			if (btRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
				btRssiState = BTC_RSSI_STATE_MEDIUM;
			} else {
				btRssiState = BTC_RSSI_STATE_STAY_LOW;
			}
		} else if (
			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_MEDIUM) ||
			(pCoexSta->preBtRssiState == BTC_RSSI_STATE_STAY_MEDIUM)
		) {
			if (btRssi >= (rssiThresh1 + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
				btRssiState = BTC_RSSI_STATE_HIGH;
			} else if (btRssi < rssiThresh) {
				btRssiState = BTC_RSSI_STATE_LOW;
			} else {
				btRssiState = BTC_RSSI_STATE_STAY_MEDIUM;
			}
		} else {
			if (btRssi < rssiThresh1) {
				btRssiState = BTC_RSSI_STATE_MEDIUM;
			} else {
				btRssiState = BTC_RSSI_STATE_STAY_HIGH;
			}
		}
	}

	pCoexSta->preBtRssiState = btRssiState;

	return btRssiState;
}

static u8 halbtc8723b2ant_WifiRssiState(
	struct btc_coexist *pBtCoexist,
	u8 index,
	u8 levelNum,
	u8 rssiThresh,
	u8 rssiThresh1
)
{
	s32 wifiRssi = 0;
	u8 wifiRssiState = pCoexSta->preWifiRssiState[index];

	pBtCoexist->fBtcGet(pBtCoexist, BTC_GET_S4_WIFI_RSSI, &wifiRssi);

	if (levelNum == 2) {
		if (
			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) ||
			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)
		) {
			if (wifiRssi >= (rssiThresh + BTC_RSSI_COEX_THRESH_TOL_8723B_2ANT)) {
				wifiRssiState = BTC_RSSI_STATE_HIGH;
			} else {
				wifiRssiState = BTC_RSSI_STATE_STAY_LOW;
			}
		} else {
			if (wifiRssi < rssiThresh) {
				wifiRssiState = BTC_RSSI_STATE_LOW;
			} else {
				wifiRssiState = BTC_RSSI_STATE_STAY_HIGH;
			}
		}
	} else if (levelNum == 3) {
		if (rssiThresh > rssiThresh1) {
			return pCoexSta->preWifiRssiState[index];
		}

		if (
			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_LOW) ||
			(pCoexSta->preWifiRssiState[index] == BTC_RSSI_STATE_STAY_LOW)
		) {

Annotation

Implementation Notes