diff --git a/drivers/soc/qcom/peripheral-loader.c b/drivers/soc/qcom/peripheral-loader.c index 08d1dc3c3f3c..92b153afd78a 100644 --- a/drivers/soc/qcom/peripheral-loader.c +++ b/drivers/soc/qcom/peripheral-loader.c @@ -413,8 +413,8 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev) } if (desc->minidump_as_elf32) - ret = do_elf_ramdump(ramdump_dev, ramdump_segs, - ss_valid_seg_cnt); + ret = do_minidump_elf32(ramdump_dev, ramdump_segs, + ss_valid_seg_cnt); else ret = do_minidump(ramdump_dev, ramdump_segs, ss_valid_seg_cnt); if (ret) diff --git a/drivers/soc/qcom/ramdump.c b/drivers/soc/qcom/ramdump.c index 01efce451f2b..4670b8017505 100644 --- a/drivers/soc/qcom/ramdump.c +++ b/drivers/soc/qcom/ramdump.c @@ -399,7 +399,7 @@ void destroy_ramdump_device(void *dev) EXPORT_SYMBOL(destroy_ramdump_device); static int _do_ramdump(void *handle, struct ramdump_segment *segments, - int nsegments, bool use_elf) + int nsegments, bool use_elf, bool complete_ramdump) { int ret, i; struct ramdump_device *rd_dev = (struct ramdump_device *)handle; @@ -427,7 +427,7 @@ static int _do_ramdump(void *handle, struct ramdump_segment *segments, return -EPIPE; } - if (rd_dev->complete_ramdump) { + if (complete_ramdump) { for (i = 0; i < nsegments-1; i++) segments[i].size = segments[i + 1].address - segments[i].address; @@ -628,7 +628,10 @@ static int _do_minidump(void *handle, struct ramdump_segment *segments, int do_ramdump(void *handle, struct ramdump_segment *segments, int nsegments) { - return _do_ramdump(handle, segments, nsegments, false); + struct ramdump_device *rd_dev = (struct ramdump_device *)handle; + + return _do_ramdump(handle, segments, nsegments, false, + rd_dev->complete_ramdump); } EXPORT_SYMBOL(do_ramdump); @@ -638,10 +641,20 @@ int do_minidump(void *handle, struct ramdump_segment *segments, int nsegments) } EXPORT_SYMBOL(do_minidump); +int do_minidump_elf32(void *handle, struct ramdump_segment *segments, + int nsegments) +{ + return _do_ramdump(handle, segments, nsegments, true, false); +} +EXPORT_SYMBOL(do_minidump_elf32); + int do_elf_ramdump(void *handle, struct ramdump_segment *segments, int nsegments) { - return _do_ramdump(handle, segments, nsegments, true); + struct ramdump_device *rd_dev = (struct ramdump_device *)handle; + + return _do_ramdump(handle, segments, nsegments, true, + rd_dev->complete_ramdump); } EXPORT_SYMBOL(do_elf_ramdump); diff --git a/include/soc/qcom/ramdump.h b/include/soc/qcom/ramdump.h index 99b3c445f013..ea57be70dcc0 100644 --- a/include/soc/qcom/ramdump.h +++ b/include/soc/qcom/ramdump.h @@ -39,6 +39,8 @@ extern int do_elf_ramdump(void *handle, struct ramdump_segment *segments, int nsegments); extern int do_minidump(void *handle, struct ramdump_segment *segments, int nsegments); +extern int do_minidump_elf32(void *handle, struct ramdump_segment *segments, + int nsegments); #else static inline void *create_ramdump_device(const char *dev_name, @@ -62,6 +64,19 @@ static inline int do_elf_ramdump(void *handle, struct ramdump_segment *segments, { return -ENODEV; } + +static inline int do_minidump(void *handle, struct ramdump_segment *segments, + int nsegments) +{ + return -ENODEV; +} + +static inline int do_minidump_elf32(void *handle, + struct ramdump_segment *segments, int nsegments) +{ + return -ENODEV; +} + #endif /* CONFIG_MSM_SUBSYSTEM_RESTART */ #endif