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

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
...@@ -200,6 +200,7 @@ static int tps65217_charger_probe(struct platform_device *pdev) ...@@ -200,6 +200,7 @@ static int tps65217_charger_probe(struct platform_device *pdev)
struct tps65217 *tps = dev_get_drvdata(pdev->dev.parent); struct tps65217 *tps = dev_get_drvdata(pdev->dev.parent);
struct tps65217_charger *charger; struct tps65217_charger *charger;
struct power_supply_config cfg = {}; struct power_supply_config cfg = {};
struct task_struct *poll_task;
int irq; int irq;
int ret; int ret;
...@@ -250,14 +251,16 @@ static int tps65217_charger_probe(struct platform_device *pdev) ...@@ -250,14 +251,16 @@ static int tps65217_charger_probe(struct platform_device *pdev)
/* Check current state */ /* Check current state */
tps65217_charger_irq(irq, charger); tps65217_charger_irq(irq, charger);
} else { } else {
charger->poll_task = kthread_run(tps65217_charger_poll_task, poll_task = kthread_run(tps65217_charger_poll_task,
charger, "ktps65217charger"); charger, "ktps65217charger");
if (IS_ERR(charger->poll_task)) { if (IS_ERR(poll_task)) {
ret = PTR_ERR(charger->poll_task); ret = PTR_ERR(poll_task);
dev_err(charger->dev, dev_err(charger->dev,
"Unable to run kthread err %d\n", ret); "Unable to run kthread err %d\n", ret);
return ret; return ret;
} }
charger->poll_task = poll_task;
} }
return 0; return 0;
...@@ -267,7 +270,7 @@ static int tps65217_charger_remove(struct platform_device *pdev) ...@@ -267,7 +270,7 @@ static int tps65217_charger_remove(struct platform_device *pdev)
{ {
struct tps65217_charger *charger = platform_get_drvdata(pdev); struct tps65217_charger *charger = platform_get_drvdata(pdev);
if (charger->irq == -ENXIO) if (charger->poll_task)
kthread_stop(charger->poll_task); kthread_stop(charger->poll_task);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment