@@ -2204,6 +2204,12 @@ static int fsl_easrc_probe(struct platform_device *pdev)
22042204 goto err_pm_disable ;
22052205 }
22062206
2207+ ret = fsl_asrc_m2m_init (easrc );
2208+ if (ret ) {
2209+ dev_err (& pdev -> dev , "failed to init m2m device %d\n" , ret );
2210+ return ret ;
2211+ }
2212+
22072213 return 0 ;
22082214
22092215err_pm_disable :
@@ -2213,6 +2219,10 @@ static int fsl_easrc_probe(struct platform_device *pdev)
22132219
22142220static void fsl_easrc_remove (struct platform_device * pdev )
22152221{
2222+ struct fsl_asrc * easrc = dev_get_drvdata (& pdev -> dev );
2223+
2224+ fsl_asrc_m2m_exit (easrc );
2225+
22162226 pm_runtime_disable (& pdev -> dev );
22172227}
22182228
@@ -2313,10 +2323,29 @@ static int fsl_easrc_runtime_resume(struct device *dev)
23132323 return ret ;
23142324}
23152325
2326+ static int fsl_easrc_suspend (struct device * dev )
2327+ {
2328+ struct fsl_asrc * easrc = dev_get_drvdata (dev );
2329+ int ret ;
2330+
2331+ fsl_asrc_m2m_suspend (easrc );
2332+ ret = pm_runtime_force_suspend (dev );
2333+ return ret ;
2334+ }
2335+
2336+ static int fsl_easrc_resume (struct device * dev )
2337+ {
2338+ struct fsl_asrc * easrc = dev_get_drvdata (dev );
2339+ int ret ;
2340+
2341+ ret = pm_runtime_force_resume (dev );
2342+ fsl_asrc_m2m_resume (easrc );
2343+ return ret ;
2344+ }
2345+
23162346static const struct dev_pm_ops fsl_easrc_pm_ops = {
23172347 RUNTIME_PM_OPS (fsl_easrc_runtime_suspend , fsl_easrc_runtime_resume , NULL )
2318- SET_SYSTEM_SLEEP_PM_OPS (pm_runtime_force_suspend ,
2319- pm_runtime_force_resume )
2348+ SYSTEM_SLEEP_PM_OPS (fsl_easrc_suspend , fsl_easrc_resume )
23202349};
23212350
23222351static struct platform_driver fsl_easrc_driver = {
0 commit comments