diff --git a/core/pld/inc/pld_common.h b/core/pld/inc/pld_common.h index 3bb68db13516..dc31bc275306 100644 --- a/core/pld/inc/pld_common.h +++ b/core/pld/inc/pld_common.h @@ -150,6 +150,7 @@ enum pld_uevent { PLD_FW_CRASHED, PLD_FW_RECOVERY_START, PLD_FW_HANG_EVENT, + PLD_SMMU_FAULT, }; /** diff --git a/core/pld/src/pld_ipci.c b/core/pld/src/pld_ipci.c index 4e9b1d3e85ba..91f93c1cc285 100644 --- a/core/pld/src/pld_ipci.c +++ b/core/pld/src/pld_ipci.c @@ -335,6 +335,13 @@ static int pld_ipci_uevent(struct device *dev, data.uevent = PLD_FW_HANG_EVENT; pld_update_hang_evt_data(hang_data, &data); break; + case ICNSS_UEVENT_SMMU_FAULT: + if (!uevent->data) + return -EINVAL; + uevent_data = (struct icnss_uevent_fw_down_data *)uevent->data; + data.uevent = PLD_SMMU_FAULT; + data.fw_down.crashed = uevent_data->crashed; + break; default: goto out; }