File tree Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Expand file tree Collapse file tree 1 file changed +14
-2
lines changed Original file line number Diff line number Diff line change 20
20
#include <linux/io.h>
21
21
#include <linux/module.h>
22
22
#include <linux/of.h>
23
+ #include <linux/pinctrl/consumer.h>
23
24
#include <linux/platform_device.h>
24
25
#include <linux/pwm.h>
25
26
#include <linux/slab.h>
@@ -380,6 +381,7 @@ static int pwm_imx_tpm_probe(struct platform_device *pdev)
380
381
static int pwm_imx_tpm_suspend (struct device * dev )
381
382
{
382
383
struct imx_tpm_pwm_chip * tpm = dev_get_drvdata (dev );
384
+ int ret ;
383
385
384
386
if (tpm -> enable_count > 0 )
385
387
return - EBUSY ;
@@ -393,17 +395,27 @@ static int pwm_imx_tpm_suspend(struct device *dev)
393
395
394
396
clk_disable_unprepare (tpm -> clk );
395
397
396
- return 0 ;
398
+ ret = pinctrl_pm_select_sleep_state (dev );
399
+ if (ret )
400
+ clk_prepare_enable (tpm -> clk );
401
+
402
+ return ret ;
397
403
}
398
404
399
405
static int pwm_imx_tpm_resume (struct device * dev )
400
406
{
401
407
struct imx_tpm_pwm_chip * tpm = dev_get_drvdata (dev );
402
408
int ret = 0 ;
403
409
404
- ret = clk_prepare_enable ( tpm -> clk );
410
+ ret = pinctrl_pm_select_default_state ( dev );
405
411
if (ret )
412
+ return ret ;
413
+
414
+ ret = clk_prepare_enable (tpm -> clk );
415
+ if (ret ) {
406
416
dev_err (dev , "failed to prepare or enable clock: %d\n" , ret );
417
+ pinctrl_pm_select_sleep_state (dev );
418
+ }
407
419
408
420
return ret ;
409
421
}
You can’t perform that action at this time.
0 commit comments