diff --git a/drivers/remoteproc/qcom_q6v5.c b/drivers/remoteproc/qcom_q6v5.c index 2f7a6ade7bc1..b92e6847da5b 100644 --- a/drivers/remoteproc/qcom_q6v5.c +++ b/drivers/remoteproc/qcom_q6v5.c @@ -5,7 +5,7 @@ * Copyright (C) 2016-2018 Linaro Ltd. * Copyright (C) 2014 Sony Mobile Communications AB * Copyright (c) 2012-2013, 2020-2021, The Linux Foundation. All rights reserved. - * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #include #include @@ -121,14 +121,13 @@ static irqreturn_t q6v5_wdog_interrupt(int irq, void *data) "disabled and lead to device crash" : "enabled and kick reovery process"); - if (q6v5->rproc->recovery_disabled) { - schedule_work(&q6v5->crash_handler); - } else { - if (q6v5->ssr_subdev) - qcom_notify_early_ssr_clients(q6v5->ssr_subdev); + if (q6v5->ssr_subdev) + qcom_notify_early_ssr_clients(q6v5->ssr_subdev); + if (q6v5->rproc->recovery_disabled) + schedule_work(&q6v5->crash_handler); + else rproc_report_crash(q6v5->rproc, RPROC_WATCHDOG); - } return IRQ_HANDLED; } @@ -156,14 +155,14 @@ static irqreturn_t q6v5_fatal_interrupt(int irq, void *data) dev_err(q6v5->dev, "rproc recovery state: %s\n", q6v5->rproc->recovery_disabled ? "disabled and lead to device crash" : "enabled and kick reovery process"); - if (q6v5->rproc->recovery_disabled) { - schedule_work(&q6v5->crash_handler); - } else { - if (q6v5->ssr_subdev) - qcom_notify_early_ssr_clients(q6v5->ssr_subdev); + if (q6v5->ssr_subdev) + qcom_notify_early_ssr_clients(q6v5->ssr_subdev); + + if (q6v5->rproc->recovery_disabled) + schedule_work(&q6v5->crash_handler); + else rproc_report_crash(q6v5->rproc, RPROC_FATAL_ERROR); - } return IRQ_HANDLED; }