forked from Minki/linux
Input: imx6ul_tsc - unify open/close and PM paths
Open/close and resume/suspend paths are very similar, let's factor out common parts. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
30df23c5ec
commit
925145f9e9
@ -315,9 +315,8 @@ static irqreturn_t adc_irq_fn(int irq, void *dev_id)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int imx6ul_tsc_open(struct input_dev *input_dev)
|
||||
static int imx6ul_tsc_start(struct imx6ul_tsc *tsc)
|
||||
{
|
||||
struct imx6ul_tsc *tsc = input_get_drvdata(input_dev);
|
||||
int err;
|
||||
|
||||
err = clk_prepare_enable(tsc->adc_clk);
|
||||
@ -349,16 +348,29 @@ disable_adc_clk:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void imx6ul_tsc_close(struct input_dev *input_dev)
|
||||
static void imx6ul_tsc_stop(struct imx6ul_tsc *tsc)
|
||||
{
|
||||
struct imx6ul_tsc *tsc = input_get_drvdata(input_dev);
|
||||
|
||||
imx6ul_tsc_disable(tsc);
|
||||
|
||||
clk_disable_unprepare(tsc->tsc_clk);
|
||||
clk_disable_unprepare(tsc->adc_clk);
|
||||
}
|
||||
|
||||
|
||||
static int imx6ul_tsc_open(struct input_dev *input_dev)
|
||||
{
|
||||
struct imx6ul_tsc *tsc = input_get_drvdata(input_dev);
|
||||
|
||||
return imx6ul_tsc_start(tsc);
|
||||
}
|
||||
|
||||
static void imx6ul_tsc_close(struct input_dev *input_dev)
|
||||
{
|
||||
struct imx6ul_tsc *tsc = input_get_drvdata(input_dev);
|
||||
|
||||
imx6ul_tsc_stop(tsc);
|
||||
}
|
||||
|
||||
static int imx6ul_tsc_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
@ -509,12 +521,8 @@ static int __maybe_unused imx6ul_tsc_suspend(struct device *dev)
|
||||
|
||||
mutex_lock(&input_dev->mutex);
|
||||
|
||||
if (input_dev->users) {
|
||||
imx6ul_tsc_disable(tsc);
|
||||
|
||||
clk_disable_unprepare(tsc->tsc_clk);
|
||||
clk_disable_unprepare(tsc->adc_clk);
|
||||
}
|
||||
if (input_dev->users)
|
||||
imx6ul_tsc_stop(tsc);
|
||||
|
||||
mutex_unlock(&input_dev->mutex);
|
||||
|
||||
@ -530,27 +538,11 @@ static int __maybe_unused imx6ul_tsc_resume(struct device *dev)
|
||||
|
||||
mutex_lock(&input_dev->mutex);
|
||||
|
||||
if (!input_dev->users)
|
||||
goto out;
|
||||
if (input_dev->users)
|
||||
retval = imx6ul_tsc_start(tsc);
|
||||
|
||||
retval = clk_prepare_enable(tsc->adc_clk);
|
||||
if (retval)
|
||||
goto out;
|
||||
|
||||
retval = clk_prepare_enable(tsc->tsc_clk);
|
||||
if (retval) {
|
||||
clk_disable_unprepare(tsc->adc_clk);
|
||||
goto out;
|
||||
}
|
||||
|
||||
retval = imx6ul_tsc_init(tsc);
|
||||
if (retval) {
|
||||
clk_disable_unprepare(tsc->tsc_clk);
|
||||
clk_disable_unprepare(tsc->adc_clk);
|
||||
goto out;
|
||||
}
|
||||
out:
|
||||
mutex_unlock(&input_dev->mutex);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user