Merge "msm: modem-8960: Add ramdump support" into msm-3.0
This commit is contained in:
committed by
QuIC Gerrit Code Review
commit
d22f17065f
@@ -149,9 +149,58 @@ void modem_crash_shutdown(const struct subsys_data *subsys)
|
||||
smsm_reset_modem(SMSM_RESET);
|
||||
}
|
||||
|
||||
int modem_ramdump(int enable, const struct subsys_data *subsys)
|
||||
/* FIXME: Get address, size from PIL */
|
||||
static struct ramdump_segment modemsw_segments[] = {
|
||||
{0x89000000, 0x8D400000 - 0x89000000},
|
||||
};
|
||||
|
||||
static struct ramdump_segment modemfw_segments[] = {
|
||||
{0x8D400000, 0x8DA00000 - 0x8D400000},
|
||||
};
|
||||
|
||||
static struct ramdump_segment smem_segments[] = {
|
||||
{0x80000000, 0x00200000},
|
||||
};
|
||||
|
||||
static void *modemfw_ramdump_dev;
|
||||
static void *modemsw_ramdump_dev;
|
||||
static void *smem_ramdump_dev;
|
||||
|
||||
static int modem_ramdump(int enable,
|
||||
const struct subsys_data *crashed_subsys)
|
||||
{
|
||||
return 0;
|
||||
int ret = 0;
|
||||
|
||||
if (enable) {
|
||||
ret = do_ramdump(modemsw_ramdump_dev, modemsw_segments,
|
||||
ARRAY_SIZE(modemsw_segments));
|
||||
|
||||
if (ret < 0) {
|
||||
pr_err("Unable to dump modem sw memory (rc = %d).\n",
|
||||
ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = do_ramdump(modemfw_ramdump_dev, modemfw_segments,
|
||||
ARRAY_SIZE(modemfw_segments));
|
||||
|
||||
if (ret < 0) {
|
||||
pr_err("Unable to dump modem fw memory (rc = %d).\n",
|
||||
ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = do_ramdump(smem_ramdump_dev, smem_segments,
|
||||
ARRAY_SIZE(smem_segments));
|
||||
|
||||
if (ret < 0) {
|
||||
pr_err("Unable to dump smem memory (rc = %d).\n", ret);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static irqreturn_t modem_wdog_bite_irq(int irq, void *dev_id)
|
||||
@@ -263,6 +312,33 @@ static int __init modem_8960_init(void)
|
||||
goto out;
|
||||
}
|
||||
|
||||
modemfw_ramdump_dev = create_ramdump_device("modem_fw");
|
||||
|
||||
if (!modemfw_ramdump_dev) {
|
||||
pr_err("%s: Unable to create modem fw ramdump device. (%d)\n",
|
||||
__func__, -ENOMEM);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
modemsw_ramdump_dev = create_ramdump_device("modem_sw");
|
||||
|
||||
if (!modemsw_ramdump_dev) {
|
||||
pr_err("%s: Unable to create modem sw ramdump device. (%d)\n",
|
||||
__func__, -ENOMEM);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
smem_ramdump_dev = create_ramdump_device("smem");
|
||||
|
||||
if (!smem_ramdump_dev) {
|
||||
pr_err("%s: Unable to create smem ramdump device. (%d)\n",
|
||||
__func__, -ENOMEM);
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = modem_debugfs_init();
|
||||
|
||||
pr_info("%s: modem fatal driver init'ed.\n", __func__);
|
||||
|
||||
Reference in New Issue
Block a user