wl->status.map.lps = BTC_LPS_RF_OFF;
                wl->status.map.busy = 0;
                break;
+       case BTC_RFCTRL_LPS_WL_ON: /* LPS-Protocol (RFon) */
+               wl->status.map.rf_off = 0;
+               wl->status.map.lps = BTC_LPS_RF_ON;
+               wl->status.map.busy = 0;
+               break;
        case BTC_RFCTRL_WL_ON:
        default:
                wl->status.map.rf_off = 0;
                rtw89_btc_fw_en_rpt(rtwdev, RPT_EN_ALL, false);
                if (rf_state == BTC_RFCTRL_WL_OFF)
                        _write_scbd(rtwdev, BTC_WSCB_ALL, false);
+               else if (rf_state == BTC_RFCTRL_LPS_WL_ON &&
+                        wl->status.map.lps_pre != BTC_LPS_OFF)
+                       _update_bt_scbd(rtwdev, true);
        }
 
        btc->dm.cnt_dm[BTC_DCNT_BTCNT_HANG] = 0;
                btc->dm.tdma_instant_excute = 0;
 
        _run_coex(rtwdev, BTC_RSN_NTFY_RADIO_STATE);
-
+       btc->dm.tdma_instant_excute = 0;
        wl->status.map.rf_off_pre = wl->status.map.rf_off;
        wl->status.map.lps_pre = wl->status.map.lps;
 }