static int modem_ramdump(int enable, const struct subsys_desc *subsys) { struct modem_data *drv = subsys_to_drv(subsys); int ret; if (!enable) return 0; ret = pil_mss_make_proxy_votes(&drv->q6->desc); if (ret) return ret; ret = pil_mss_reset_load_mba(&drv->q6->desc); if (ret) return ret; ret = pil_do_ramdump(&drv->q6->desc, drv->ramdump_dev); if (ret < 0) pr_err("Unable to dump modem fw memory (rc = %d).\n", ret); ret = __pil_mss_deinit_image(&drv->q6->desc, false); if (ret < 0) pr_err("Unable to free up resources (rc = %d).\n", ret); pil_mss_remove_proxy_votes(&drv->q6->desc); return ret; }
int pil_mss_deinit_image(struct pil_desc *pil) { return __pil_mss_deinit_image(pil, true); }