Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e385636 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: pil-pronto: Move wcnss log on wdog bite function into a workqueue"

parents 4755023f 394840d6
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ struct pronto_data {
	bool restart_inprogress;
	bool crash;
	struct ramdump_device *ramdump_dev;
	struct work_struct wcnss_wdog_bite_work;
};

static int pil_pronto_make_proxy_vote(struct pil_desc *pil)
@@ -313,6 +314,16 @@ static irqreturn_t wcnss_err_fatal_intr_handler(int irq, void *dev_id)
	return IRQ_HANDLED;
}

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_wdog_bite_irq_hdlr(int irq, void *dev_id)
{
	struct pronto_data *drv = subsys_to_drv(dev_id);
@@ -322,10 +333,9 @@ static irqreturn_t wcnss_wdog_bite_irq_hdlr(int irq, void *dev_id)
		pr_err("Ignoring wcnss bite irq, restart in progress\n");
		return IRQ_HANDLED;
	}
	wcnss_log_debug_regs_on_bite();

	drv->restart_inprogress = true;
	restart_wcnss(drv);
	schedule_work(&drv->wcnss_wdog_bite_work);

	return IRQ_HANDLED;
}
@@ -454,6 +464,8 @@ static int pil_pronto_probe(struct platform_device *pdev)
	drv->subsys_desc.err_fatal_handler = wcnss_err_fatal_intr_handler;
	drv->subsys_desc.wdog_bite_handler = wcnss_wdog_bite_irq_hdlr;

	INIT_WORK(&drv->wcnss_wdog_bite_work, wcnss_wdog_bite_work_hdlr);

	drv->subsys = subsys_register(&drv->subsys_desc);
	if (IS_ERR(drv->subsys)) {
		ret = PTR_ERR(drv->subsys);