@@ -503,8 +503,6 @@ int platform_driver_register(struct platform_driver *drv)
503
503
drv -> driver .suspend = platform_drv_suspend ;
504
504
if (drv -> resume )
505
505
drv -> driver .resume = platform_drv_resume ;
506
- if (drv -> pm )
507
- drv -> driver .pm = & drv -> pm -> base ;
508
506
return driver_register (& drv -> driver );
509
507
}
510
508
EXPORT_SYMBOL_GPL (platform_driver_register );
@@ -686,7 +684,10 @@ static int platform_pm_suspend(struct device *dev)
686
684
struct device_driver * drv = dev -> driver ;
687
685
int ret = 0 ;
688
686
689
- if (drv && drv -> pm ) {
687
+ if (!drv )
688
+ return 0 ;
689
+
690
+ if (drv -> pm ) {
690
691
if (drv -> pm -> suspend )
691
692
ret = drv -> pm -> suspend (dev );
692
693
} else {
@@ -698,16 +699,15 @@ static int platform_pm_suspend(struct device *dev)
698
699
699
700
static int platform_pm_suspend_noirq (struct device * dev )
700
701
{
701
- struct platform_driver * pdrv ;
702
+ struct device_driver * drv = dev -> driver ;
702
703
int ret = 0 ;
703
704
704
- if (!dev -> driver )
705
+ if (!drv )
705
706
return 0 ;
706
707
707
- pdrv = to_platform_driver (dev -> driver );
708
- if (pdrv -> pm ) {
709
- if (pdrv -> pm -> suspend_noirq )
710
- ret = pdrv -> pm -> suspend_noirq (dev );
708
+ if (drv -> pm ) {
709
+ if (drv -> pm -> suspend_noirq )
710
+ ret = drv -> pm -> suspend_noirq (dev );
711
711
} else {
712
712
ret = platform_legacy_suspend_late (dev , PMSG_SUSPEND );
713
713
}
@@ -720,7 +720,10 @@ static int platform_pm_resume(struct device *dev)
720
720
struct device_driver * drv = dev -> driver ;
721
721
int ret = 0 ;
722
722
723
- if (drv && drv -> pm ) {
723
+ if (!drv )
724
+ return 0 ;
725
+
726
+ if (drv -> pm ) {
724
727
if (drv -> pm -> resume )
725
728
ret = drv -> pm -> resume (dev );
726
729
} else {
@@ -732,16 +735,15 @@ static int platform_pm_resume(struct device *dev)
732
735
733
736
static int platform_pm_resume_noirq (struct device * dev )
734
737
{
735
- struct platform_driver * pdrv ;
738
+ struct device_driver * drv = dev -> driver ;
736
739
int ret = 0 ;
737
740
738
- if (!dev -> driver )
741
+ if (!drv )
739
742
return 0 ;
740
743
741
- pdrv = to_platform_driver (dev -> driver );
742
- if (pdrv -> pm ) {
743
- if (pdrv -> pm -> resume_noirq )
744
- ret = pdrv -> pm -> resume_noirq (dev );
744
+ if (drv -> pm ) {
745
+ if (drv -> pm -> resume_noirq )
746
+ ret = drv -> pm -> resume_noirq (dev );
745
747
} else {
746
748
ret = platform_legacy_resume_early (dev );
747
749
}
@@ -780,16 +782,15 @@ static int platform_pm_freeze(struct device *dev)
780
782
781
783
static int platform_pm_freeze_noirq (struct device * dev )
782
784
{
783
- struct platform_driver * pdrv ;
785
+ struct device_driver * drv = dev -> driver ;
784
786
int ret = 0 ;
785
787
786
- if (!dev -> driver )
788
+ if (!drv )
787
789
return 0 ;
788
790
789
- pdrv = to_platform_driver (dev -> driver );
790
- if (pdrv -> pm ) {
791
- if (pdrv -> pm -> freeze_noirq )
792
- ret = pdrv -> pm -> freeze_noirq (dev );
791
+ if (drv -> pm ) {
792
+ if (drv -> pm -> freeze_noirq )
793
+ ret = drv -> pm -> freeze_noirq (dev );
793
794
} else {
794
795
ret = platform_legacy_suspend_late (dev , PMSG_FREEZE );
795
796
}
@@ -802,7 +803,10 @@ static int platform_pm_thaw(struct device *dev)
802
803
struct device_driver * drv = dev -> driver ;
803
804
int ret = 0 ;
804
805
805
- if (drv && drv -> pm ) {
806
+ if (!drv )
807
+ return 0 ;
808
+
809
+ if (drv -> pm ) {
806
810
if (drv -> pm -> thaw )
807
811
ret = drv -> pm -> thaw (dev );
808
812
} else {
@@ -814,16 +818,15 @@ static int platform_pm_thaw(struct device *dev)
814
818
815
819
static int platform_pm_thaw_noirq (struct device * dev )
816
820
{
817
- struct platform_driver * pdrv ;
821
+ struct device_driver * drv = dev -> driver ;
818
822
int ret = 0 ;
819
823
820
- if (!dev -> driver )
824
+ if (!drv )
821
825
return 0 ;
822
826
823
- pdrv = to_platform_driver (dev -> driver );
824
- if (pdrv -> pm ) {
825
- if (pdrv -> pm -> thaw_noirq )
826
- ret = pdrv -> pm -> thaw_noirq (dev );
827
+ if (drv -> pm ) {
828
+ if (drv -> pm -> thaw_noirq )
829
+ ret = drv -> pm -> thaw_noirq (dev );
827
830
} else {
828
831
ret = platform_legacy_resume_early (dev );
829
832
}
@@ -836,7 +839,10 @@ static int platform_pm_poweroff(struct device *dev)
836
839
struct device_driver * drv = dev -> driver ;
837
840
int ret = 0 ;
838
841
839
- if (drv && drv -> pm ) {
842
+ if (!drv )
843
+ return 0 ;
844
+
845
+ if (drv -> pm ) {
840
846
if (drv -> pm -> poweroff )
841
847
ret = drv -> pm -> poweroff (dev );
842
848
} else {
@@ -848,16 +854,15 @@ static int platform_pm_poweroff(struct device *dev)
848
854
849
855
static int platform_pm_poweroff_noirq (struct device * dev )
850
856
{
851
- struct platform_driver * pdrv ;
857
+ struct device_driver * drv = dev -> driver ;
852
858
int ret = 0 ;
853
859
854
- if (!dev -> driver )
860
+ if (!drv )
855
861
return 0 ;
856
862
857
- pdrv = to_platform_driver (dev -> driver );
858
- if (pdrv -> pm ) {
859
- if (pdrv -> pm -> poweroff_noirq )
860
- ret = pdrv -> pm -> poweroff_noirq (dev );
863
+ if (drv -> pm ) {
864
+ if (drv -> pm -> poweroff_noirq )
865
+ ret = drv -> pm -> poweroff_noirq (dev );
861
866
} else {
862
867
ret = platform_legacy_suspend_late (dev , PMSG_HIBERNATE );
863
868
}
@@ -870,7 +875,10 @@ static int platform_pm_restore(struct device *dev)
870
875
struct device_driver * drv = dev -> driver ;
871
876
int ret = 0 ;
872
877
873
- if (drv && drv -> pm ) {
878
+ if (!drv )
879
+ return 0 ;
880
+
881
+ if (drv -> pm ) {
874
882
if (drv -> pm -> restore )
875
883
ret = drv -> pm -> restore (dev );
876
884
} else {
@@ -882,16 +890,15 @@ static int platform_pm_restore(struct device *dev)
882
890
883
891
static int platform_pm_restore_noirq (struct device * dev )
884
892
{
885
- struct platform_driver * pdrv ;
893
+ struct device_driver * drv = dev -> driver ;
886
894
int ret = 0 ;
887
895
888
- if (!dev -> driver )
896
+ if (!drv )
889
897
return 0 ;
890
898
891
- pdrv = to_platform_driver (dev -> driver );
892
- if (pdrv -> pm ) {
893
- if (pdrv -> pm -> restore_noirq )
894
- ret = pdrv -> pm -> restore_noirq (dev );
899
+ if (drv -> pm ) {
900
+ if (drv -> pm -> restore_noirq )
901
+ ret = drv -> pm -> restore_noirq (dev );
895
902
} else {
896
903
ret = platform_legacy_resume_early (dev );
897
904
}
@@ -912,17 +919,15 @@ static int platform_pm_restore_noirq(struct device *dev)
912
919
913
920
#endif /* !CONFIG_HIBERNATION */
914
921
915
- static struct pm_ext_ops platform_pm_ops = {
916
- .base = {
917
- .prepare = platform_pm_prepare ,
918
- .complete = platform_pm_complete ,
919
- .suspend = platform_pm_suspend ,
920
- .resume = platform_pm_resume ,
921
- .freeze = platform_pm_freeze ,
922
- .thaw = platform_pm_thaw ,
923
- .poweroff = platform_pm_poweroff ,
924
- .restore = platform_pm_restore ,
925
- },
922
+ static struct dev_pm_ops platform_dev_pm_ops = {
923
+ .prepare = platform_pm_prepare ,
924
+ .complete = platform_pm_complete ,
925
+ .suspend = platform_pm_suspend ,
926
+ .resume = platform_pm_resume ,
927
+ .freeze = platform_pm_freeze ,
928
+ .thaw = platform_pm_thaw ,
929
+ .poweroff = platform_pm_poweroff ,
930
+ .restore = platform_pm_restore ,
926
931
.suspend_noirq = platform_pm_suspend_noirq ,
927
932
.resume_noirq = platform_pm_resume_noirq ,
928
933
.freeze_noirq = platform_pm_freeze_noirq ,
@@ -931,7 +936,7 @@ static struct pm_ext_ops platform_pm_ops = {
931
936
.restore_noirq = platform_pm_restore_noirq ,
932
937
};
933
938
934
- #define PLATFORM_PM_OPS_PTR &platform_pm_ops
939
+ #define PLATFORM_PM_OPS_PTR (&platform_dev_pm_ops)
935
940
936
941
#else /* !CONFIG_PM_SLEEP */
937
942
0 commit comments