Example #1
0
static void wcnss_wdog_bite_work_hdlr(struct work_struct *wcnss_work)
{
	struct pronto_data *drv = container_of(wcnss_work, struct pronto_data,
		wcnss_wdog_bite_work);

	wcnss_log_debug_regs_on_bite();

	restart_wcnss(drv);
}
static irqreturn_t wcnss_err_fatal_intr_handler(int irq, void *dev_id)
{
	struct pronto_data *drv = dev_id;

	pr_err("Fatal error on the wcnss.\n");

	drv->crash = true;
	if (drv->restart_inprogress) {
		pr_err("wcnss: Ignoring error fatal, restart in progress\n");
		return IRQ_HANDLED;
	}

	drv->restart_inprogress = true;
	restart_wcnss(drv);

	return IRQ_HANDLED;
}
static irqreturn_t wcnss_wdog_bite_irq_hdlr(int irq, void *dev_id)
{
	struct pronto_data *drv = dev_id;

	drv->crash = true;

	disable_irq_nosync(drv->irq);

	if (drv->restart_inprogress) {
		pr_err("Ignoring wcnss bite irq, restart in progress\n");
		return IRQ_HANDLED;
	}
	wcnss_pronto_log_debug_regs();

	drv->restart_inprogress = true;
	restart_wcnss(drv);

	return IRQ_HANDLED;
}
Example #4
0
static irqreturn_t wcnss_err_fatal_intr_handler(int irq, void *dev_id)
{
	struct pronto_data *drv = subsys_to_drv(dev_id);

	pr_err("Fatal error on the wcnss.\n");

	drv->crash = true;
	if (drv->restart_inprogress) {
		pr_err("wcnss: Ignoring error fatal, restart in progress\n");
		return IRQ_HANDLED;
	}

	drv->restart_inprogress = true;
	restart_wcnss(drv);

//S [VY52/VY55][bug_1807] Frank_Chan add
	schedule_delayed_work(&drv->subsys_crash_work, msecs_to_jiffies(5000));
//E [VY52/VY55][bug_1807] Frank_Chan add

	return IRQ_HANDLED;
}