| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- /******************************************************************************
- *
- * Copyright(c) 2007 - 2017 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.
- *
- * The full GNU General Public License is included in this distribution in the
- * file called LICENSE.
- *
- * Contact Information:
- * wlanfae <wlanfae@realtek.com>
- * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
- * Hsinchu 300, Taiwan.
- *
- * Larry Finger <Larry.Finger@lwfinger.net>
- *
- *****************************************************************************/
- /* ************************************************************
- * include files
- * ************************************************************
- */
- #include "mp_precomp.h"
- #include "phydm_precomp.h"
- void halrf_basic_profile(void *dm_void, u32 *_used, char *output, u32 *_out_len)
- {
- #ifdef CONFIG_PHYDM_DEBUG_FUNCTION
- struct dm_struct *dm = (struct dm_struct *)dm_void;
- u32 used = *_used;
- u32 out_len = *_out_len;
- /* HAL RF version List */
- PDM_SNPF(out_len, used, output + used, out_len - used, "%-35s\n",
- "% HAL RF version %");
- PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
- "Power Tracking", HALRF_POWRTRACKING_VER);
- PDM_SNPF(out_len, used, output + used, out_len - used,
- " %-35s: %s %s\n", "IQK",
- (dm->fw_offload_ability & PHYDM_RF_IQK_OFFLOAD) ? "FW" :
- HALRF_IQK_VER,
- (halrf_match_iqk_version(dm_void)) ? "(match)" : "(mismatch)");
- PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
- "LCK", HALRF_LCK_VER);
- PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
- "DPK", HALRF_DPK_VER);
- PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
- "KFREE", HALRF_KFREE_VER);
- PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
- "TX 2G Current Calibration", HALRF_PABIASK_VER);
- PDM_SNPF(out_len, used, output + used, out_len - used, " %-35s: %s\n",
- "RFK Init. Parameter", HALRF_RFK_INIT_VER);
- *_used = used;
- *_out_len = out_len;
- #endif
- }
- void halrf_debug_trace(void *dm_void, char input[][16], u32 *_used,
- char *output, u32 *_out_len)
- {
- struct dm_struct *dm = (struct dm_struct *)dm_void;
- struct _hal_rf_ *rf = &dm->rf_table;
- u32 one = 1;
- u32 used = *_used;
- u32 out_len = *_out_len;
- u32 rf_var[10] = {0};
- u8 i;
- for (i = 0; i < 5; i++)
- if (input[i + 1])
- PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &rf_var[i]);
- if (rf_var[0] == 100) {
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "\n[DBG MSG] RF Selection\n");
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "00. (( %s ))TX_PWR_TRACK\n",
- ((rf->rf_dbg_comp & DBG_RF_TX_PWR_TRACK) ? ("V") :
- (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "01. (( %s ))IQK\n",
- ((rf->rf_dbg_comp & DBG_RF_IQK) ? ("V") : (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "02. (( %s ))LCK\n",
- ((rf->rf_dbg_comp & DBG_RF_LCK) ? ("V") : (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "03. (( %s ))DPK\n",
- ((rf->rf_dbg_comp & DBG_RF_DPK) ? ("V") : (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "04. (( %s ))TXGAPK\n",
- ((rf->rf_dbg_comp & DBG_RF_TXGAPK) ? ("V") : (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "29. (( %s ))MP\n",
- ((rf->rf_dbg_comp & DBG_RF_MP) ? ("V") : (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "30. (( %s ))TMP\n",
- ((rf->rf_dbg_comp & DBG_RF_TMP) ? ("V") : (".")));
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "31. (( %s ))INIT\n",
- ((rf->rf_dbg_comp & DBG_RF_INIT) ? ("V") : (".")));
- } else if (rf_var[0] == 101) {
- rf->rf_dbg_comp = 0;
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "Disable all DBG COMP\n");
- } else {
- if (rf_var[1] == 1) /*enable*/
- rf->rf_dbg_comp |= (one << rf_var[0]);
- else if (rf_var[1] == 2) /*disable*/
- rf->rf_dbg_comp &= ~(one << rf_var[0]);
- }
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "\nCurr-RF_Dbg_Comp = 0x%x\n", rf->rf_dbg_comp);
- *_used = used;
- *_out_len = out_len;
- }
- struct halrf_command {
- char name[16];
- u8 id;
- };
- enum halrf_CMD_ID {
- HALRF_HELP,
- HALRF_SUPPORTABILITY,
- HALRF_DBG_COMP,
- HALRF_PROFILE,
- HALRF_IQK_INFO,
- HALRF_IQK,
- HALRF_IQK_DEBUG,
- };
- struct halrf_command halrf_cmd_ary[] = {
- {"-h", HALRF_HELP},
- {"ability", HALRF_SUPPORTABILITY},
- {"dbg", HALRF_DBG_COMP},
- {"profile", HALRF_PROFILE},
- {"iqk_info", HALRF_IQK_INFO},
- {"iqk", HALRF_IQK},
- {"iqk_dbg", HALRF_IQK_DEBUG},
- };
- void halrf_cmd_parser(void *dm_void, char input[][16], u32 *_used, char *output,
- u32 *_out_len, u32 input_num)
- {
- struct dm_struct *dm = (struct dm_struct *)dm_void;
- #ifdef CONFIG_PHYDM_DEBUG_FUNCTION
- u8 id = 0;
- u32 rf_var[10] = {0};
- u32 i, input_idx = 0;
- u32 halrf_ary_size =
- sizeof(halrf_cmd_ary) / sizeof(struct halrf_command);
- u32 used = *_used;
- u32 out_len = *_out_len;
- /* Parsing Cmd ID */
- for (i = 0; i < halrf_ary_size; i++) {
- if (strcmp(halrf_cmd_ary[i].name, input[1]) == 0) {
- id = halrf_cmd_ary[i].id;
- break;
- }
- }
- if (i == halrf_ary_size) {
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "RF Cmd not found\n");
- return;
- }
- switch (id) {
- case HALRF_HELP:
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "RF cmd ==>\n");
- for (i = 0; i < halrf_ary_size - 1; i++) {
- PDM_SNPF(out_len, used, output + used, out_len - used,
- " %-5d: %s\n", i, halrf_cmd_ary[i + 1].name);
- }
- break;
- case HALRF_SUPPORTABILITY:
- halrf_support_ability_debug(dm, &input[0], &used, output,
- &out_len);
- break;
- case HALRF_DBG_COMP:
- halrf_debug_trace(dm, &input[0], &used, output, &out_len);
- break;
- case HALRF_PROFILE:
- halrf_basic_profile(dm, &used, output, &out_len);
- break;
- case HALRF_IQK_INFO:
- #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
- halrf_iqk_info_dump(dm, &used, output, &out_len);
- #endif
- break;
- case HALRF_IQK:
- PDM_SNPF(out_len, used, output + used, out_len - used,
- "TRX IQK Trigger\n");
- halrf_iqk_trigger(dm, false);
- #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
- halrf_iqk_info_dump(dm, &used, output, &out_len);
- #endif
- break;
- case HALRF_IQK_DEBUG:
- for (i = 0; i < 5; i++) {
- if (input[i + 1]) {
- PHYDM_SSCANF(input[i + 2], DCMD_HEX,
- &rf_var[i]);
- input_idx++;
- }
- }
- if (input_idx >= 1) {
- #if (RTL8822B_SUPPORT == 1 || RTL8821C_SUPPORT == 1)
- if (dm->support_ic_type & (ODM_RTL8822B | ODM_RTL8821C))
- halrf_iqk_debug(dm, (u32 *)rf_var, &used,
- output, &out_len);
- #endif
- }
- break;
- default:
- break;
- }
- *_used = used;
- *_out_len = out_len;
- #endif
- }
- void halrf_init_debug_setting(void *dm_void)
- {
- struct dm_struct *dm = (struct dm_struct *)dm_void;
- struct _hal_rf_ *rf = &dm->rf_table;
- rf->rf_dbg_comp =
- #if DBG
- #if 0
- /*DBG_RF_TX_PWR_TRACK |*/
- /*DBG_RF_IQK | */
- /*DBG_RF_LCK | */
- /*DBG_RF_DPK | */
- /*DBG_RF_TXGAPK | */
- /*DBG_RF_TMP | */
- /*DBG_RF_INIT | */
- #endif
- #endif
- 0;
- }
|