0908-remoteproc-qcom_q6v5_wcss-add-optional-qdss_at-clock.patch 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. From 87dbcc69a7e3fe6ccddf4fe9bdbf51330f5e4a77 Mon Sep 17 00:00:00 2001
  2. From: Mantas Pucka <[email protected]>
  3. Date: Tue, 23 Jan 2024 11:04:04 +0200
  4. Subject: [PATCH] remoteproc: qcom_q6v5_wcss: add optional qdss_at clock
  5. IPQ6018 needs QDSS_AT clock enabled when loading wifi. Optionally enable it
  6. when provided by DT.
  7. Signed-off-by: Mantas Pucka <[email protected]>
  8. ---
  9. drivers/remoteproc/qcom_q6v5_wcss.c | 24 ++++++++++++++++++++++++
  10. 1 file changed, 24 insertions(+)
  11. --- a/drivers/remoteproc/qcom_q6v5_wcss.c
  12. +++ b/drivers/remoteproc/qcom_q6v5_wcss.c
  13. @@ -120,6 +120,7 @@ struct q6v5_wcss {
  14. struct clk *qdsp6ss_core_gfmux;
  15. struct clk *lcc_bcr_sleep;
  16. struct clk *prng_clk;
  17. + struct clk *qdss_clk;
  18. struct regulator *cx_supply;
  19. struct qcom_sysmon *sysmon;
  20. @@ -259,6 +260,9 @@ static int q6v5_wcss_start(struct rproc
  21. return ret;
  22. }
  23. + if (wcss->qdss_clk)
  24. + clk_prepare_enable(wcss->qdss_clk);
  25. +
  26. qcom_q6v5_prepare(&wcss->q6v5);
  27. if (wcss->need_mem_protection) {
  28. @@ -772,6 +776,8 @@ static int q6v5_wcss_stop(struct rproc *
  29. }
  30. pas_done:
  31. + if (wcss->qdss_clk)
  32. + clk_disable_unprepare(wcss->qdss_clk);
  33. clk_disable_unprepare(wcss->prng_clk);
  34. qcom_q6v5_unprepare(&wcss->q6v5);
  35. @@ -980,6 +986,12 @@ static int ipq_init_clock(struct q6v5_wc
  36. dev_err(wcss->dev, "Failed to get prng clock\n");
  37. return ret;
  38. }
  39. +
  40. + wcss->qdss_clk = devm_clk_get(wcss->dev, "qdss");
  41. + if (IS_ERR(wcss->qdss_clk)) {
  42. + wcss->qdss_clk = NULL;
  43. + }
  44. +
  45. return 0;
  46. }