From 95099d4622f8cb224d94e314c7a8e0df60b13f87 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 08:38:01 +0000
Subject: [PATCH] enable docker ppp
---
kernel/drivers/remoteproc/qcom_q6v5.c | 55 +++++++++++++++++++++++++------------------------------
1 files changed, 25 insertions(+), 30 deletions(-)
diff --git a/kernel/drivers/remoteproc/qcom_q6v5.c b/kernel/drivers/remoteproc/qcom_q6v5.c
index ef61cb7..fd6fd36 100644
--- a/kernel/drivers/remoteproc/qcom_q6v5.c
+++ b/kernel/drivers/remoteproc/qcom_q6v5.c
@@ -15,6 +15,8 @@
#include <linux/remoteproc.h>
#include "qcom_q6v5.h"
+#define Q6V5_PANIC_DELAY_MS 200
+
/**
* qcom_q6v5_prepare() - reinitialize the qcom_q6v5 context before start
* @q6v5: reference to qcom_q6v5 context to be reinitialized
@@ -165,6 +167,24 @@
EXPORT_SYMBOL_GPL(qcom_q6v5_request_stop);
/**
+ * qcom_q6v5_panic() - panic handler to invoke a stop on the remote
+ * @q6v5: reference to qcom_q6v5 context
+ *
+ * Set the stop bit and sleep in order to allow the remote processor to flush
+ * its caches etc for post mortem debugging.
+ *
+ * Return: 200ms
+ */
+unsigned long qcom_q6v5_panic(struct qcom_q6v5 *q6v5)
+{
+ qcom_smem_state_update_bits(q6v5->state,
+ BIT(q6v5->stop_bit), BIT(q6v5->stop_bit));
+
+ return Q6V5_PANIC_DELAY_MS;
+}
+EXPORT_SYMBOL_GPL(qcom_q6v5_panic);
+
+/**
* qcom_q6v5_init() - initializer of the q6v5 common struct
* @q6v5: handle to be initialized
* @pdev: platform_device reference for acquiring resources
@@ -189,13 +209,8 @@
init_completion(&q6v5->stop_done);
q6v5->wdog_irq = platform_get_irq_byname(pdev, "wdog");
- if (q6v5->wdog_irq < 0) {
- if (q6v5->wdog_irq != -EPROBE_DEFER)
- dev_err(&pdev->dev,
- "failed to retrieve wdog IRQ: %d\n",
- q6v5->wdog_irq);
+ if (q6v5->wdog_irq < 0)
return q6v5->wdog_irq;
- }
ret = devm_request_threaded_irq(&pdev->dev, q6v5->wdog_irq,
NULL, q6v5_wdog_interrupt,
@@ -207,13 +222,8 @@
}
q6v5->fatal_irq = platform_get_irq_byname(pdev, "fatal");
- if (q6v5->fatal_irq < 0) {
- if (q6v5->fatal_irq != -EPROBE_DEFER)
- dev_err(&pdev->dev,
- "failed to retrieve fatal IRQ: %d\n",
- q6v5->fatal_irq);
+ if (q6v5->fatal_irq < 0)
return q6v5->fatal_irq;
- }
ret = devm_request_threaded_irq(&pdev->dev, q6v5->fatal_irq,
NULL, q6v5_fatal_interrupt,
@@ -225,13 +235,8 @@
}
q6v5->ready_irq = platform_get_irq_byname(pdev, "ready");
- if (q6v5->ready_irq < 0) {
- if (q6v5->ready_irq != -EPROBE_DEFER)
- dev_err(&pdev->dev,
- "failed to retrieve ready IRQ: %d\n",
- q6v5->ready_irq);
+ if (q6v5->ready_irq < 0)
return q6v5->ready_irq;
- }
ret = devm_request_threaded_irq(&pdev->dev, q6v5->ready_irq,
NULL, q6v5_ready_interrupt,
@@ -243,13 +248,8 @@
}
q6v5->handover_irq = platform_get_irq_byname(pdev, "handover");
- if (q6v5->handover_irq < 0) {
- if (q6v5->handover_irq != -EPROBE_DEFER)
- dev_err(&pdev->dev,
- "failed to retrieve handover IRQ: %d\n",
- q6v5->handover_irq);
+ if (q6v5->handover_irq < 0)
return q6v5->handover_irq;
- }
ret = devm_request_threaded_irq(&pdev->dev, q6v5->handover_irq,
NULL, q6v5_handover_interrupt,
@@ -262,13 +262,8 @@
disable_irq(q6v5->handover_irq);
q6v5->stop_irq = platform_get_irq_byname(pdev, "stop-ack");
- if (q6v5->stop_irq < 0) {
- if (q6v5->stop_irq != -EPROBE_DEFER)
- dev_err(&pdev->dev,
- "failed to retrieve stop-ack IRQ: %d\n",
- q6v5->stop_irq);
+ if (q6v5->stop_irq < 0)
return q6v5->stop_irq;
- }
ret = devm_request_threaded_irq(&pdev->dev, q6v5->stop_irq,
NULL, q6v5_stop_interrupt,
--
Gitblit v1.6.2