hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/drivers/remoteproc/qcom_q6v5_wcss.c
....@@ -14,6 +14,7 @@
1414 #include <linux/reset.h>
1515 #include <linux/soc/qcom/mdt_loader.h>
1616 #include "qcom_common.h"
17
+#include "qcom_pil_info.h"
1718 #include "qcom_q6v5.h"
1819
1920 #define WCSS_CRASH_REASON 421
....@@ -91,6 +92,9 @@
9192 phys_addr_t mem_reloc;
9293 void *mem_region;
9394 size_t mem_size;
95
+
96
+ struct qcom_rproc_glink glink_subdev;
97
+ struct qcom_rproc_ssr ssr_subdev;
9498 };
9599
96100 static int q6v5_wcss_reset(struct q6v5_wcss *wcss)
....@@ -406,7 +410,7 @@
406410 return 0;
407411 }
408412
409
-static void *q6v5_wcss_da_to_va(struct rproc *rproc, u64 da, int len)
413
+static void *q6v5_wcss_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
410414 {
411415 struct q6v5_wcss *wcss = rproc->priv;
412416 int offset;
....@@ -421,10 +425,17 @@
421425 static int q6v5_wcss_load(struct rproc *rproc, const struct firmware *fw)
422426 {
423427 struct q6v5_wcss *wcss = rproc->priv;
428
+ int ret;
424429
425
- return qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
426
- 0, wcss->mem_region, wcss->mem_phys,
427
- wcss->mem_size, &wcss->mem_reloc);
430
+ ret = qcom_mdt_load_no_init(wcss->dev, fw, rproc->firmware,
431
+ 0, wcss->mem_region, wcss->mem_phys,
432
+ wcss->mem_size, &wcss->mem_reloc);
433
+ if (ret)
434
+ return ret;
435
+
436
+ qcom_pil_info_store("wcnss", wcss->mem_phys, wcss->mem_size);
437
+
438
+ return ret;
428439 }
429440
430441 static const struct rproc_ops q6v5_wcss_ops = {
....@@ -557,6 +568,9 @@
557568 if (ret)
558569 goto free_rproc;
559570
571
+ qcom_add_glink_subdev(rproc, &wcss->glink_subdev, "q6wcss");
572
+ qcom_add_ssr_subdev(rproc, &wcss->ssr_subdev, "q6wcss");
573
+
560574 ret = rproc_add(rproc);
561575 if (ret)
562576 goto free_rproc;