1 // SPDX-License-Identifier: GPL-2.0
2 /******************************************************************************
3 *
4 * Copyright(c) 2007 - 2016 Realtek Corporation.
5 *
6 * Contact Information:
7 * wlanfae <wlanfae@realtek.com>
8 * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
9 * Hsinchu 300, Taiwan.
10 *
11 * Larry Finger <Larry.Finger@lwfinger.net>
12 *
13 *****************************************************************************/
14
15 /* ************************************************************
16 * include files
17 * *************************************************************/
18 #include "mp_precomp.h"
19 #include "phydm_precomp.h"
20
odm_dynamic_tx_power_init(void * dm_void)21 void odm_dynamic_tx_power_init(void *dm_void)
22 {
23 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
24
25 dm->last_dtp_lvl = tx_high_pwr_level_normal;
26 dm->dynamic_tx_high_power_lvl = tx_high_pwr_level_normal;
27 dm->tx_agc_ofdm_18_6 =
28 odm_get_bb_reg(dm, 0xC24, MASKDWORD); /*TXAGC {18M 12M 9M 6M}*/
29 }
30
odm_dynamic_tx_power_save_power_index(void * dm_void)31 void odm_dynamic_tx_power_save_power_index(void *dm_void) {}
32
odm_dynamic_tx_power_restore_power_index(void * dm_void)33 void odm_dynamic_tx_power_restore_power_index(void *dm_void) {}
34
odm_dynamic_tx_power_write_power_index(void * dm_void,u8 value)35 void odm_dynamic_tx_power_write_power_index(void *dm_void, u8 value)
36 {
37 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
38 u8 index;
39 u32 power_index_reg[6] = {0xc90, 0xc91, 0xc92, 0xc98, 0xc99, 0xc9a};
40
41 for (index = 0; index < 6; index++)
42 odm_write_1byte(dm, power_index_reg[index], value);
43 }
44
odm_dynamic_tx_power_nic_ce(void * dm_void)45 static void odm_dynamic_tx_power_nic_ce(void *dm_void) {}
46
odm_dynamic_tx_power(void * dm_void)47 void odm_dynamic_tx_power(void *dm_void)
48 {
49 /* */
50 /* For AP/ADSL use struct rtl8192cd_priv* */
51 /* For CE/NIC use struct void* */
52 /* */
53 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
54
55 if (!(dm->support_ability & ODM_BB_DYNAMIC_TXPWR))
56 return;
57 /* 2011/09/29 MH In HW integration first stage, we provide 4 different
58 * handle to operate at the same time.
59 * In the stage2/3, we need to prive universal interface and merge all
60 * HW dynamic mechanism.
61 */
62 switch (dm->support_platform) {
63 case ODM_WIN:
64 odm_dynamic_tx_power_nic(dm);
65 break;
66 case ODM_CE:
67 odm_dynamic_tx_power_nic_ce(dm);
68 break;
69 case ODM_AP:
70 odm_dynamic_tx_power_ap(dm);
71 break;
72 default:
73 break;
74 }
75 }
76
odm_dynamic_tx_power_nic(void * dm_void)77 void odm_dynamic_tx_power_nic(void *dm_void)
78 {
79 struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void;
80
81 if (!(dm->support_ability & ODM_BB_DYNAMIC_TXPWR))
82 return;
83 }
84
odm_dynamic_tx_power_ap(void * dm_void)85 void odm_dynamic_tx_power_ap(void *dm_void
86
87 )
88 {
89 }
90
odm_dynamic_tx_power_8821(void * dm_void,u8 * desc,u8 mac_id)91 void odm_dynamic_tx_power_8821(void *dm_void, u8 *desc, u8 mac_id) {}
92