diff --git a/drivers/soc/qcom/peripheral-loader.c b/drivers/soc/qcom/peripheral-loader.c index 6e15e3bd9f7a..08d1dc3c3f3c 100644 --- a/drivers/soc/qcom/peripheral-loader.c +++ b/drivers/soc/qcom/peripheral-loader.c @@ -412,7 +412,11 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev) goto seg_mapping_fail; } - ret = do_minidump(ramdump_dev, ramdump_segs, ss_valid_seg_cnt); + if (desc->minidump_as_elf32) + ret = do_elf_ramdump(ramdump_dev, ramdump_segs, + ss_valid_seg_cnt); + else + ret = do_minidump(ramdump_dev, ramdump_segs, ss_valid_seg_cnt); if (ret) pil_err(desc, "%s: Minidump collection failed for subsys %s rc:%d\n", __func__, desc->name, ret); @@ -1624,6 +1628,9 @@ int pil_desc_init(struct pil_desc *desc) if (!desc->unmap_fw_mem) desc->unmap_fw_mem = unmap_fw_mem; + desc->minidump_as_elf32 = of_property_read_bool( + ofnode, "qcom,minidump-as-elf32"); + return 0; err_parse_dt: ida_simple_remove(&pil_ida, priv->id); diff --git a/drivers/soc/qcom/peripheral-loader.h b/drivers/soc/qcom/peripheral-loader.h index 137341e19409..57180c739f17 100644 --- a/drivers/soc/qcom/peripheral-loader.h +++ b/drivers/soc/qcom/peripheral-loader.h @@ -63,6 +63,7 @@ struct pil_desc { int *aux_minidump_ids; int num_aux_minidump_ids; u32 extra_size; + bool minidump_as_elf32; }; /**