cnss2: Support enable 32k sleep clk from cnss2

Add one new device tree config item "qcom,sleep-clk-supported"
to support enable 32k internal sleep clock in case it has no
external 32k clk attached in wlan chipset HW. Like qca6390
on some auto platform, host need explicitly tell firmware
to use internal sleep clock, otherwise it will cause LMAC
ps failure.

Change-Id: I52f5d332a912235596eb127ab8e4660355988038
CRs-Fixed: 3448595
此提交包含在:
Chaoli Zhou
2023-04-10 14:15:57 +08:00
提交者 Madan Koyyalamudi
父節點 8eb1e1e993
當前提交 03a337ba78
共有 4 個檔案被更改,包括 25 行新增0 行删除

查看文件

@@ -57,6 +57,11 @@
#define QMI_WLFW_MAC_READY_TIMEOUT_MS 50
#define QMI_WLFW_MAC_READY_MAX_RETRY 200
enum nm_modem_bit {
SLEEP_CLOCK_SELECT_INTERNAL_BIT = BIT(1),
HOST_CSTATE_BIT = BIT(2),
};
#ifdef CONFIG_CNSS2_DEBUG
static bool ignore_qmi_failure;
#define CNSS_QMI_ASSERT() CNSS_ASSERT(ignore_qmi_failure)
@@ -309,6 +314,14 @@ static int cnss_wlfw_host_cap_send_sync(struct cnss_plat_data *plat_priv)
req->cal_done = plat_priv->cal_done;
cnss_pr_dbg("Calibration done is %d\n", plat_priv->cal_done);
if (plat_priv->sleep_clk) {
req->nm_modem_valid = 1;
/* Notify firmware about the sleep clock selection,
* nm_modem_bit[1] is used for this purpose.
*/
req->nm_modem |= SLEEP_CLOCK_SELECT_INTERNAL_BIT;
}
if (cnss_bus_is_smmu_s1_enabled(plat_priv) &&
!cnss_bus_get_iova(plat_priv, &iova_start, &iova_size) &&
!cnss_bus_get_iova_ipa(plat_priv, &iova_ipa_start,