mirror of https://gitee.com/openkylin/linux.git
ath11k: wmi: put hardware to DBS mode
For QCA6390, host puts hardware to Dual Band Simultaneous (DBS) mode by default so both 2G and 5G bands can be used. Otherwise only the 5G band can be used. QCA6390 doesn't provide band_to_mac configuration and firmware will do the band_to_mac map. Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1 Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.1.0.1-01238-QCAHKSWPL_SILICONZ-2 Signed-off-by: Carl Huang <cjhuang@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/1597576599-8857-12-git-send-email-kvalo@codeaurora.org
This commit is contained in:
parent
2d4bcbed5b
commit
ed0192f794
|
@ -36,6 +36,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
|
||||||
.host_ce_config = ath11k_host_ce_config_ipq8074,
|
.host_ce_config = ath11k_host_ce_config_ipq8074,
|
||||||
.ce_count = 12,
|
.ce_count = 12,
|
||||||
.single_pdev_only = false,
|
.single_pdev_only = false,
|
||||||
|
.needs_band_to_mac = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "qca6390 hw2.0",
|
.name = "qca6390 hw2.0",
|
||||||
|
@ -54,6 +55,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
|
||||||
.host_ce_config = ath11k_host_ce_config_qca6390,
|
.host_ce_config = ath11k_host_ce_config_qca6390,
|
||||||
.ce_count = 9,
|
.ce_count = 9,
|
||||||
.single_pdev_only = true,
|
.single_pdev_only = true,
|
||||||
|
.needs_band_to_mac = false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,12 @@ struct ath11k_hw_params {
|
||||||
u32 ce_count;
|
u32 ce_count;
|
||||||
|
|
||||||
bool single_pdev_only;
|
bool single_pdev_only;
|
||||||
|
|
||||||
|
/* For example on QCA6390 struct
|
||||||
|
* wmi_init_cmd_param::band_to_mac_config needs to be false as the
|
||||||
|
* firmware creates the mapping.
|
||||||
|
*/
|
||||||
|
bool needs_band_to_mac;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct ath11k_hw_ops ipq8074_ops;
|
extern const struct ath11k_hw_ops ipq8074_ops;
|
||||||
|
|
|
@ -3396,13 +3396,13 @@ int ath11k_wmi_cmd_init(struct ath11k_base *ab)
|
||||||
init_param.hw_mode_id = wmi_sc->preferred_hw_mode;
|
init_param.hw_mode_id = wmi_sc->preferred_hw_mode;
|
||||||
init_param.mem_chunks = wmi_sc->mem_chunks;
|
init_param.mem_chunks = wmi_sc->mem_chunks;
|
||||||
|
|
||||||
if (wmi_sc->preferred_hw_mode == WMI_HOST_HW_MODE_SINGLE ||
|
if (wmi_sc->preferred_hw_mode == WMI_HOST_HW_MODE_SINGLE)
|
||||||
ab->hw_params.single_pdev_only)
|
|
||||||
init_param.hw_mode_id = WMI_HOST_HW_MODE_MAX;
|
init_param.hw_mode_id = WMI_HOST_HW_MODE_MAX;
|
||||||
|
|
||||||
|
if (ab->hw_params.needs_band_to_mac) {
|
||||||
init_param.num_band_to_mac = ab->num_radios;
|
init_param.num_band_to_mac = ab->num_radios;
|
||||||
|
|
||||||
ath11k_fill_band_to_mac_param(ab, init_param.band_to_mac);
|
ath11k_fill_band_to_mac_param(ab, init_param.band_to_mac);
|
||||||
|
}
|
||||||
|
|
||||||
return ath11k_init_cmd_send(&wmi_sc->wmi[0], &init_param);
|
return ath11k_init_cmd_send(&wmi_sc->wmi[0], &init_param);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue