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); if (ret < 0) pr_err("Unable to free up resources (rc = %d).\n", ret); pil_mss_remove_proxy_votes(&drv->q6->desc); return ret; }
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); dma_free_coherent(&drv->mba_mem_dev, drv->q6->mba_size, drv->q6->mba_virt, drv->q6->mba_phys); pil_mss_shutdown(&drv->q6->desc); pil_mss_remove_proxy_votes(&drv->q6->desc); return ret; }