|
@@ -228,8 +228,24 @@ static u16 channel_id_to_papd(u16 ch_id)
|
|
|
|
|
|
static u16 channel_id_to_txp(struct iwl_phy_db *phy_db, u16 ch_id)
|
|
|
{
|
|
|
- /* TODO David*/
|
|
|
- return 0;
|
|
|
+ struct iwl_phy_db_chg_txp *txp_chg;
|
|
|
+ int i;
|
|
|
+ u8 ch_index = ch_id_to_ch_index(ch_id);
|
|
|
+ if (ch_index == 0xff)
|
|
|
+ return 0xff;
|
|
|
+
|
|
|
+ for (i = 0; i < IWL_NUM_TXP_CH_GROUPS; i++) {
|
|
|
+ txp_chg = (void *)phy_db->calib_ch_group_txp[i].data;
|
|
|
+ if (!txp_chg)
|
|
|
+ return 0xff;
|
|
|
+ /*
|
|
|
+ * Looking for the first channel group that its max channel is
|
|
|
+ * higher then wanted channel.
|
|
|
+ */
|
|
|
+ if (le16_to_cpu(txp_chg->max_channel_idx) >= ch_index)
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ return 0xff;
|
|
|
}
|
|
|
|
|
|
int iwl_phy_db_get_section_data(struct iwl_phy_db *phy_db,
|