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

Commit 9ef0bf11 authored by Milo Kim's avatar Milo Kim Committed by Sebastian Reichel
Browse files

power: supply: tps65217: Use 'poll_task' on unloading the module



Use the task_struct variable for running polling thread. If polling task
is activated, then use it to stop running thread.
This is a preceding step of supporting two interrupts of TPS65217 charger,
so checking single IRQ number is not appropriate when the module is removed.

Signed-off-by: default avatarMilo Kim <woogyom.kim@gmail.com>
Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
parent bdca5d9e
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -200,6 +200,7 @@ static int tps65217_charger_probe(struct platform_device *pdev)
	struct tps65217 *tps = dev_get_drvdata(pdev->dev.parent);
	struct tps65217_charger *charger;
	struct power_supply_config cfg = {};
	struct task_struct *poll_task;
	int irq;
	int ret;

@@ -250,14 +251,16 @@ static int tps65217_charger_probe(struct platform_device *pdev)
		/* Check current state */
		tps65217_charger_irq(irq, charger);
	} else {
		charger->poll_task = kthread_run(tps65217_charger_poll_task,
		poll_task = kthread_run(tps65217_charger_poll_task,
					charger, "ktps65217charger");
		if (IS_ERR(charger->poll_task)) {
			ret = PTR_ERR(charger->poll_task);
		if (IS_ERR(poll_task)) {
			ret = PTR_ERR(poll_task);
			dev_err(charger->dev,
				"Unable to run kthread err %d\n", ret);
			return ret;
		}

		charger->poll_task = poll_task;
	}

	return 0;
@@ -267,7 +270,7 @@ static int tps65217_charger_remove(struct platform_device *pdev)
{
	struct tps65217_charger *charger = platform_get_drvdata(pdev);

	if (charger->irq == -ENXIO)
	if (charger->poll_task)
		kthread_stop(charger->poll_task);

	return 0;