static void lpass_q6_crash_shutdown(const struct subsys_desc *subsys)
{
	struct q6v3_data *drv;

	drv = container_of(subsys, struct q6v3_data, subsys_desc);
	send_q6_nmi(drv);
}
static int lpass_q6_shutdown(const struct subsys_desc *subsys)
{
	struct q6v3_data *drv;

	drv = container_of(subsys, struct q6v3_data, subsys_desc);
	send_q6_nmi(drv);
	writel_relaxed(0x0, drv->wd_base + 0x24);
	mb();

	pil_shutdown(&drv->pil_desc);
	disable_irq_nosync(drv->irq);

	return 0;
}
int subsys_q6_shutdown(const struct subsys_data *crashed_subsys)
{
    void __iomem *q6_wdog_addr =
        ioremap_nocache(Q6SS_WDOG_ENABLE, 8);

    send_q6_nmi();
    writel_relaxed(0x0, q6_wdog_addr);

    mb();
    iounmap(q6_wdog_addr);

    pil_force_shutdown("q6");
    disable_irq_nosync(LPASS_Q6SS_WDOG_EXPIRED);

    return 0;
}
int subsys_q6_shutdown(const char * const crashed_subsys)
{
    void __iomem *q6_wdog_addr =
        ioremap_nocache(Q6SS_WDOG_ENABLE, 8);

    send_q6_nmi();
    writel_relaxed(0x0, q6_wdog_addr);
    /* The write needs to go through before the q6 is shutdown. */
    mb();
    iounmap(q6_wdog_addr);

    pil_force_shutdown("q6");
    disable_irq_nosync(LPASS_Q6SS_WDOG_EXPIRED);

    if (get_restart_level() == RESET_SUBSYS_MIXED)
        smsm_reset_modem(SMSM_RESET);

    return 0;
}
void subsys_q6_crash_shutdown(const struct subsys_data *crashed_subsys)
{
	send_q6_nmi();
}
void subsys_q6_crash_shutdown(const char * const crashed_subsys)
{
    send_q6_nmi();
}