summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/cnss/icnss.txt2
-rw-r--r--drivers/soc/qcom/icnss.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/cnss/icnss.txt b/Documentation/devicetree/bindings/cnss/icnss.txt
index f07a2beafbb3..08fab81f3393 100644
--- a/Documentation/devicetree/bindings/cnss/icnss.txt
+++ b/Documentation/devicetree/bindings/cnss/icnss.txt
@@ -14,6 +14,7 @@ Required properties:
- qcom,wlan-msa-memory: MSA memory size
Optional properties:
+ - qcom,skip-qmi: Boolean property to decide whether to use QMI or not
Example:
@@ -35,4 +36,5 @@ Example:
<0 140 0 /* CE10 */ >,
<0 141 0 /* CE11 */ >;
qcom,wlan-msa-memory = <0x200000>;
+ qcom,skip-qmi;
};
diff --git a/drivers/soc/qcom/icnss.c b/drivers/soc/qcom/icnss.c
index e9f7b8931d9b..477a35b9b6e3 100644
--- a/drivers/soc/qcom/icnss.c
+++ b/drivers/soc/qcom/icnss.c
@@ -99,6 +99,7 @@ static struct {
u32 rf_pin_result;
struct icnss_mem_region_info
icnss_mem_region[QMI_WLFW_MAX_NUM_MEMORY_REGIONS_V01];
+ bool skip_qmi;
} *penv;
static int icnss_qmi_event_post(enum icnss_qmi_event_type type, void *data)
@@ -810,6 +811,9 @@ int icnss_register_driver(struct icnss_driver_ops *ops)
}
penv->ops = ops;
+ if (penv->skip_qmi)
+ penv->state |= ICNSS_FW_READY;
+
/* check for all conditions before invoking probe */
if (ICNSS_IS_FW_READY(penv->state) && penv->ops->probe) {
ret = penv->ops->probe(&pdev->dev);
@@ -1101,6 +1105,9 @@ skip:
if (ret)
pr_err("%s: Failed to send mode, ret = %d\n", __func__, ret);
out:
+ if (penv->skip_qmi)
+ ret = 0;
+
return ret;
}
EXPORT_SYMBOL(icnss_wlan_enable);
@@ -1175,6 +1182,9 @@ static int icnss_probe(struct platform_device *pdev)
goto out;
}
+ penv->skip_qmi = of_property_read_bool(dev->of_node,
+ "qcom,skip-qmi");
+
penv->qmi_event_wq = alloc_workqueue("icnss_qmi_event", 0, 0);
if (!penv->qmi_event_wq) {
pr_err("%s: workqueue creation failed\n", __func__);