summaryrefslogtreecommitdiff
path: root/gxp-kci.c
diff options
context:
space:
mode:
Diffstat (limited to 'gxp-kci.c')
-rw-r--r--gxp-kci.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gxp-kci.c b/gxp-kci.c
index 3caee9b..8381920 100644
--- a/gxp-kci.c
+++ b/gxp-kci.c
@@ -9,6 +9,7 @@
#include <linux/mutex.h>
#include <linux/slab.h>
#include <linux/types.h>
+#include <linux/workqueue.h>
#include <gcip/gcip-telemetry.h>
#include <gcip/gcip-usage-stats.h>
@@ -169,6 +170,7 @@ gxp_reverse_kci_handle_response(struct gcip_kci *kci,
struct gxp_mailbox *mbx = gcip_kci_get_data(kci);
struct gxp_dev *gxp = mbx->gxp;
struct gxp_kci *gxp_kci = mbx->data;
+ struct gxp_mcu_firmware *mcu_fw = gxp_mcu_firmware_of(gxp);
if (resp->code <= GCIP_RKCI_CHIP_CODE_LAST) {
gxp_kci_handle_rkci(gxp_kci, resp);
@@ -177,10 +179,12 @@ gxp_reverse_kci_handle_response(struct gcip_kci *kci,
switch (resp->code) {
case GCIP_RKCI_FIRMWARE_CRASH:
- gxp_mcu_firmware_crash_handler(gxp, resp->retval);
+ if (resp->retval == GCIP_FW_CRASH_UNRECOVERABLE_FAULT)
+ schedule_work(&mcu_fw->fw_crash_handler_work);
+ else
+ dev_warn(gxp->dev, "MCU non-fatal crash: %u", resp->retval);
break;
case GCIP_RKCI_JOB_LOCKUP:
- /* TODO(b/239638427): Handle job lookup */
dev_dbg(gxp->dev, "Job lookup received from MCU firmware");
break;
default: