diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/platform.c | 38 | ||||
-rw-r--r-- | drivers/base/power/main.c | 8 | ||||
-rw-r--r-- | drivers/dma/dw_dmac.c | 15 | ||||
-rw-r--r-- | drivers/dma/txx9dmac.c | 15 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-pxa.c | 25 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-s3c2410.c | 25 | ||||
-rw-r--r-- | drivers/pci/pci-driver.c | 16 | ||||
-rw-r--r-- | drivers/usb/musb/musb_core.c | 18 |
8 files changed, 79 insertions, 81 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 456594bd97bc..d28c289e4a3f 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -625,30 +625,6 @@ static int platform_legacy_suspend(struct device *dev, pm_message_t mesg) | |||
625 | return ret; | 625 | return ret; |
626 | } | 626 | } |
627 | 627 | ||
628 | static int platform_legacy_suspend_late(struct device *dev, pm_message_t mesg) | ||
629 | { | ||
630 | struct platform_driver *pdrv = to_platform_driver(dev->driver); | ||
631 | struct platform_device *pdev = to_platform_device(dev); | ||
632 | int ret = 0; | ||
633 | |||
634 | if (dev->driver && pdrv->suspend_late) | ||
635 | ret = pdrv->suspend_late(pdev, mesg); | ||
636 | |||
637 | return ret; | ||
638 | } | ||
639 | |||
640 | static int platform_legacy_resume_early(struct device *dev) | ||
641 | { | ||
642 | struct platform_driver *pdrv = to_platform_driver(dev->driver); | ||
643 | struct platform_device *pdev = to_platform_device(dev); | ||
644 | int ret = 0; | ||
645 | |||
646 | if (dev->driver && pdrv->resume_early) | ||
647 | ret = pdrv->resume_early(pdev); | ||
648 | |||
649 | return ret; | ||
650 | } | ||
651 | |||
652 | static int platform_legacy_resume(struct device *dev) | 628 | static int platform_legacy_resume(struct device *dev) |
653 | { | 629 | { |
654 | struct platform_driver *pdrv = to_platform_driver(dev->driver); | 630 | struct platform_driver *pdrv = to_platform_driver(dev->driver); |
@@ -711,8 +687,6 @@ static int platform_pm_suspend_noirq(struct device *dev) | |||
711 | if (drv->pm) { | 687 | if (drv->pm) { |
712 | if (drv->pm->suspend_noirq) | 688 | if (drv->pm->suspend_noirq) |
713 | ret = drv->pm->suspend_noirq(dev); | 689 | ret = drv->pm->suspend_noirq(dev); |
714 | } else { | ||
715 | ret = platform_legacy_suspend_late(dev, PMSG_SUSPEND); | ||
716 | } | 690 | } |
717 | 691 | ||
718 | return ret; | 692 | return ret; |
@@ -747,8 +721,6 @@ static int platform_pm_resume_noirq(struct device *dev) | |||
747 | if (drv->pm) { | 721 | if (drv->pm) { |
748 | if (drv->pm->resume_noirq) | 722 | if (drv->pm->resume_noirq) |
749 | ret = drv->pm->resume_noirq(dev); | 723 | ret = drv->pm->resume_noirq(dev); |
750 | } else { | ||
751 | ret = platform_legacy_resume_early(dev); | ||
752 | } | 724 | } |
753 | 725 | ||
754 | return ret; | 726 | return ret; |
@@ -794,8 +766,6 @@ static int platform_pm_freeze_noirq(struct device *dev) | |||
794 | if (drv->pm) { | 766 | if (drv->pm) { |
795 | if (drv->pm->freeze_noirq) | 767 | if (drv->pm->freeze_noirq) |
796 | ret = drv->pm->freeze_noirq(dev); | 768 | ret = drv->pm->freeze_noirq(dev); |
797 | } else { | ||
798 | ret = platform_legacy_suspend_late(dev, PMSG_FREEZE); | ||
799 | } | 769 | } |
800 | 770 | ||
801 | return ret; | 771 | return ret; |
@@ -830,8 +800,6 @@ static int platform_pm_thaw_noirq(struct device *dev) | |||
830 | if (drv->pm) { | 800 | if (drv->pm) { |
831 | if (drv->pm->thaw_noirq) | 801 | if (drv->pm->thaw_noirq) |
832 | ret = drv->pm->thaw_noirq(dev); | 802 | ret = drv->pm->thaw_noirq(dev); |
833 | } else { | ||
834 | ret = platform_legacy_resume_early(dev); | ||
835 | } | 803 | } |
836 | 804 | ||
837 | return ret; | 805 | return ret; |
@@ -866,8 +834,6 @@ static int platform_pm_poweroff_noirq(struct device *dev) | |||
866 | if (drv->pm) { | 834 | if (drv->pm) { |
867 | if (drv->pm->poweroff_noirq) | 835 | if (drv->pm->poweroff_noirq) |
868 | ret = drv->pm->poweroff_noirq(dev); | 836 | ret = drv->pm->poweroff_noirq(dev); |
869 | } else { | ||
870 | ret = platform_legacy_suspend_late(dev, PMSG_HIBERNATE); | ||
871 | } | 837 | } |
872 | 838 | ||
873 | return ret; | 839 | return ret; |
@@ -902,8 +868,6 @@ static int platform_pm_restore_noirq(struct device *dev) | |||
902 | if (drv->pm) { | 868 | if (drv->pm) { |
903 | if (drv->pm->restore_noirq) | 869 | if (drv->pm->restore_noirq) |
904 | ret = drv->pm->restore_noirq(dev); | 870 | ret = drv->pm->restore_noirq(dev); |
905 | } else { | ||
906 | ret = platform_legacy_resume_early(dev); | ||
907 | } | 871 | } |
908 | 872 | ||
909 | return ret; | 873 | return ret; |
@@ -922,7 +886,7 @@ static int platform_pm_restore_noirq(struct device *dev) | |||
922 | 886 | ||
923 | #endif /* !CONFIG_HIBERNATION */ | 887 | #endif /* !CONFIG_HIBERNATION */ |
924 | 888 | ||
925 | static struct dev_pm_ops platform_dev_pm_ops = { | 889 | static const struct dev_pm_ops platform_dev_pm_ops = { |
926 | .prepare = platform_pm_prepare, | 890 | .prepare = platform_pm_prepare, |
927 | .complete = platform_pm_complete, | 891 | .complete = platform_pm_complete, |
928 | .suspend = platform_pm_suspend, | 892 | .suspend = platform_pm_suspend, |
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 58a3e572f2c9..1b1a786b7dec 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c | |||
@@ -157,8 +157,9 @@ void device_pm_move_last(struct device *dev) | |||
157 | * @ops: PM operations to choose from. | 157 | * @ops: PM operations to choose from. |
158 | * @state: PM transition of the system being carried out. | 158 | * @state: PM transition of the system being carried out. |
159 | */ | 159 | */ |
160 | static int pm_op(struct device *dev, struct dev_pm_ops *ops, | 160 | static int pm_op(struct device *dev, |
161 | pm_message_t state) | 161 | const struct dev_pm_ops *ops, |
162 | pm_message_t state) | ||
162 | { | 163 | { |
163 | int error = 0; | 164 | int error = 0; |
164 | 165 | ||
@@ -220,7 +221,8 @@ static int pm_op(struct device *dev, struct dev_pm_ops *ops, | |||
220 | * The operation is executed with interrupts disabled by the only remaining | 221 | * The operation is executed with interrupts disabled by the only remaining |
221 | * functional CPU in the system. | 222 | * functional CPU in the system. |
222 | */ | 223 | */ |
223 | static int pm_noirq_op(struct device *dev, struct dev_pm_ops *ops, | 224 | static int pm_noirq_op(struct device *dev, |
225 | const struct dev_pm_ops *ops, | ||
224 | pm_message_t state) | 226 | pm_message_t state) |
225 | { | 227 | { |
226 | int error = 0; | 228 | int error = 0; |
diff --git a/drivers/dma/dw_dmac.c b/drivers/dma/dw_dmac.c index 98c9a847bf51..933c143b6a74 100644 --- a/drivers/dma/dw_dmac.c +++ b/drivers/dma/dw_dmac.c | |||
@@ -1399,8 +1399,9 @@ static void dw_shutdown(struct platform_device *pdev) | |||
1399 | clk_disable(dw->clk); | 1399 | clk_disable(dw->clk); |
1400 | } | 1400 | } |
1401 | 1401 | ||
1402 | static int dw_suspend_late(struct platform_device *pdev, pm_message_t mesg) | 1402 | static int dw_suspend_noirq(struct device *dev) |
1403 | { | 1403 | { |
1404 | struct platform_device *pdev = to_platform_device(dev); | ||
1404 | struct dw_dma *dw = platform_get_drvdata(pdev); | 1405 | struct dw_dma *dw = platform_get_drvdata(pdev); |
1405 | 1406 | ||
1406 | dw_dma_off(platform_get_drvdata(pdev)); | 1407 | dw_dma_off(platform_get_drvdata(pdev)); |
@@ -1408,23 +1409,27 @@ static int dw_suspend_late(struct platform_device *pdev, pm_message_t mesg) | |||
1408 | return 0; | 1409 | return 0; |
1409 | } | 1410 | } |
1410 | 1411 | ||
1411 | static int dw_resume_early(struct platform_device *pdev) | 1412 | static int dw_resume_noirq(struct device *dev) |
1412 | { | 1413 | { |
1414 | struct platform_device *pdev = to_platform_device(dev); | ||
1413 | struct dw_dma *dw = platform_get_drvdata(pdev); | 1415 | struct dw_dma *dw = platform_get_drvdata(pdev); |
1414 | 1416 | ||
1415 | clk_enable(dw->clk); | 1417 | clk_enable(dw->clk); |
1416 | dma_writel(dw, CFG, DW_CFG_DMA_EN); | 1418 | dma_writel(dw, CFG, DW_CFG_DMA_EN); |
1417 | return 0; | 1419 | return 0; |
1418 | |||
1419 | } | 1420 | } |
1420 | 1421 | ||
1422 | static struct dev_pm_ops dw_dev_pm_ops = { | ||
1423 | .suspend_noirq = dw_suspend_noirq, | ||
1424 | .resume_noirq = dw_resume_noirq, | ||
1425 | }; | ||
1426 | |||
1421 | static struct platform_driver dw_driver = { | 1427 | static struct platform_driver dw_driver = { |
1422 | .remove = __exit_p(dw_remove), | 1428 | .remove = __exit_p(dw_remove), |
1423 | .shutdown = dw_shutdown, | 1429 | .shutdown = dw_shutdown, |
1424 | .suspend_late = dw_suspend_late, | ||
1425 | .resume_early = dw_resume_early, | ||
1426 | .driver = { | 1430 | .driver = { |
1427 | .name = "dw_dmac", | 1431 | .name = "dw_dmac", |
1432 | .pm = &dw_dev_pm_ops, | ||
1428 | }, | 1433 | }, |
1429 | }; | 1434 | }; |
1430 | 1435 | ||
diff --git a/drivers/dma/txx9dmac.c b/drivers/dma/txx9dmac.c index 88dab52926f4..7837930146a4 100644 --- a/drivers/dma/txx9dmac.c +++ b/drivers/dma/txx9dmac.c | |||
@@ -1291,17 +1291,18 @@ static void txx9dmac_shutdown(struct platform_device *pdev) | |||
1291 | txx9dmac_off(ddev); | 1291 | txx9dmac_off(ddev); |
1292 | } | 1292 | } |
1293 | 1293 | ||
1294 | static int txx9dmac_suspend_late(struct platform_device *pdev, | 1294 | static int txx9dmac_suspend_noirq(struct device *dev) |
1295 | pm_message_t mesg) | ||
1296 | { | 1295 | { |
1296 | struct platform_device *pdev = to_platform_device(dev); | ||
1297 | struct txx9dmac_dev *ddev = platform_get_drvdata(pdev); | 1297 | struct txx9dmac_dev *ddev = platform_get_drvdata(pdev); |
1298 | 1298 | ||
1299 | txx9dmac_off(ddev); | 1299 | txx9dmac_off(ddev); |
1300 | return 0; | 1300 | return 0; |
1301 | } | 1301 | } |
1302 | 1302 | ||
1303 | static int txx9dmac_resume_early(struct platform_device *pdev) | 1303 | static int txx9dmac_resume_noirq(struct device *dev) |
1304 | { | 1304 | { |
1305 | struct platform_device *pdev = to_platform_device(dev); | ||
1305 | struct txx9dmac_dev *ddev = platform_get_drvdata(pdev); | 1306 | struct txx9dmac_dev *ddev = platform_get_drvdata(pdev); |
1306 | struct txx9dmac_platform_data *pdata = pdev->dev.platform_data; | 1307 | struct txx9dmac_platform_data *pdata = pdev->dev.platform_data; |
1307 | u32 mcr; | 1308 | u32 mcr; |
@@ -1314,6 +1315,11 @@ static int txx9dmac_resume_early(struct platform_device *pdev) | |||
1314 | 1315 | ||
1315 | } | 1316 | } |
1316 | 1317 | ||
1318 | static struct dev_pm_ops txx9dmac_dev_pm_ops = { | ||
1319 | .suspend_noirq = txx9dmac_suspend_noirq, | ||
1320 | .resume_noirq = txx9dmac_resume_noirq, | ||
1321 | }; | ||
1322 | |||
1317 | static struct platform_driver txx9dmac_chan_driver = { | 1323 | static struct platform_driver txx9dmac_chan_driver = { |
1318 | .remove = __exit_p(txx9dmac_chan_remove), | 1324 | .remove = __exit_p(txx9dmac_chan_remove), |
1319 | .driver = { | 1325 | .driver = { |
@@ -1324,10 +1330,9 @@ static struct platform_driver txx9dmac_chan_driver = { | |||
1324 | static struct platform_driver txx9dmac_driver = { | 1330 | static struct platform_driver txx9dmac_driver = { |
1325 | .remove = __exit_p(txx9dmac_remove), | 1331 | .remove = __exit_p(txx9dmac_remove), |
1326 | .shutdown = txx9dmac_shutdown, | 1332 | .shutdown = txx9dmac_shutdown, |
1327 | .suspend_late = txx9dmac_suspend_late, | ||
1328 | .resume_early = txx9dmac_resume_early, | ||
1329 | .driver = { | 1333 | .driver = { |
1330 | .name = "txx9dmac", | 1334 | .name = "txx9dmac", |
1335 | .pm = &txx9dmac_dev_pm_ops, | ||
1331 | }, | 1336 | }, |
1332 | }; | 1337 | }; |
1333 | 1338 | ||
diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c index 762e1e530882..049555777f67 100644 --- a/drivers/i2c/busses/i2c-pxa.c +++ b/drivers/i2c/busses/i2c-pxa.c | |||
@@ -1134,35 +1134,44 @@ static int __exit i2c_pxa_remove(struct platform_device *dev) | |||
1134 | } | 1134 | } |
1135 | 1135 | ||
1136 | #ifdef CONFIG_PM | 1136 | #ifdef CONFIG_PM |
1137 | static int i2c_pxa_suspend_late(struct platform_device *dev, pm_message_t state) | 1137 | static int i2c_pxa_suspend_noirq(struct device *dev) |
1138 | { | 1138 | { |
1139 | struct pxa_i2c *i2c = platform_get_drvdata(dev); | 1139 | struct platform_device *pdev = to_platform_device(dev); |
1140 | struct pxa_i2c *i2c = platform_get_drvdata(pdev); | ||
1141 | |||
1140 | clk_disable(i2c->clk); | 1142 | clk_disable(i2c->clk); |
1143 | |||
1141 | return 0; | 1144 | return 0; |
1142 | } | 1145 | } |
1143 | 1146 | ||
1144 | static int i2c_pxa_resume_early(struct platform_device *dev) | 1147 | static int i2c_pxa_resume_noirq(struct device *dev) |
1145 | { | 1148 | { |
1146 | struct pxa_i2c *i2c = platform_get_drvdata(dev); | 1149 | struct platform_device *pdev = to_platform_device(dev); |
1150 | struct pxa_i2c *i2c = platform_get_drvdata(pdev); | ||
1147 | 1151 | ||
1148 | clk_enable(i2c->clk); | 1152 | clk_enable(i2c->clk); |
1149 | i2c_pxa_reset(i2c); | 1153 | i2c_pxa_reset(i2c); |
1150 | 1154 | ||
1151 | return 0; | 1155 | return 0; |
1152 | } | 1156 | } |
1157 | |||
1158 | static struct dev_pm_ops i2c_pxa_dev_pm_ops = { | ||
1159 | .suspend_noirq = i2c_pxa_suspend_noirq, | ||
1160 | .resume_noirq = i2c_pxa_resume_noirq, | ||
1161 | }; | ||
1162 | |||
1163 | #define I2C_PXA_DEV_PM_OPS (&i2c_pxa_dev_pm_ops) | ||
1153 | #else | 1164 | #else |
1154 | #define i2c_pxa_suspend_late NULL | 1165 | #define I2C_PXA_DEV_PM_OPS NULL |
1155 | #define i2c_pxa_resume_early NULL | ||
1156 | #endif | 1166 | #endif |
1157 | 1167 | ||
1158 | static struct platform_driver i2c_pxa_driver = { | 1168 | static struct platform_driver i2c_pxa_driver = { |
1159 | .probe = i2c_pxa_probe, | 1169 | .probe = i2c_pxa_probe, |
1160 | .remove = __exit_p(i2c_pxa_remove), | 1170 | .remove = __exit_p(i2c_pxa_remove), |
1161 | .suspend_late = i2c_pxa_suspend_late, | ||
1162 | .resume_early = i2c_pxa_resume_early, | ||
1163 | .driver = { | 1171 | .driver = { |
1164 | .name = "pxa2xx-i2c", | 1172 | .name = "pxa2xx-i2c", |
1165 | .owner = THIS_MODULE, | 1173 | .owner = THIS_MODULE, |
1174 | .pm = I2C_PXA_DEV_PM_OPS, | ||
1166 | }, | 1175 | }, |
1167 | .id_table = i2c_pxa_id_table, | 1176 | .id_table = i2c_pxa_id_table, |
1168 | }; | 1177 | }; |
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index 20bb0ceb027b..96aafb91b69a 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c | |||
@@ -946,17 +946,20 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev) | |||
946 | } | 946 | } |
947 | 947 | ||
948 | #ifdef CONFIG_PM | 948 | #ifdef CONFIG_PM |
949 | static int s3c24xx_i2c_suspend_late(struct platform_device *dev, | 949 | static int s3c24xx_i2c_suspend_noirq(struct device *dev) |
950 | pm_message_t msg) | ||
951 | { | 950 | { |
952 | struct s3c24xx_i2c *i2c = platform_get_drvdata(dev); | 951 | struct platform_device *pdev = to_platform_device(dev); |
952 | struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); | ||
953 | |||
953 | i2c->suspended = 1; | 954 | i2c->suspended = 1; |
955 | |||
954 | return 0; | 956 | return 0; |
955 | } | 957 | } |
956 | 958 | ||
957 | static int s3c24xx_i2c_resume(struct platform_device *dev) | 959 | static int s3c24xx_i2c_resume(struct device *dev) |
958 | { | 960 | { |
959 | struct s3c24xx_i2c *i2c = platform_get_drvdata(dev); | 961 | struct platform_device *pdev = to_platform_device(dev); |
962 | struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev); | ||
960 | 963 | ||
961 | i2c->suspended = 0; | 964 | i2c->suspended = 0; |
962 | s3c24xx_i2c_init(i2c); | 965 | s3c24xx_i2c_init(i2c); |
@@ -964,9 +967,14 @@ static int s3c24xx_i2c_resume(struct platform_device *dev) | |||
964 | return 0; | 967 | return 0; |
965 | } | 968 | } |
966 | 969 | ||
970 | static struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { | ||
971 | .suspend_noirq = s3c24xx_i2c_suspend_noirq, | ||
972 | .resume = s3c24xx_i2c_resume, | ||
973 | }; | ||
974 | |||
975 | #define S3C24XX_DEV_PM_OPS (&s3c24xx_i2c_dev_pm_ops) | ||
967 | #else | 976 | #else |
968 | #define s3c24xx_i2c_suspend_late NULL | 977 | #define S3C24XX_DEV_PM_OPS NULL |
969 | #define s3c24xx_i2c_resume NULL | ||
970 | #endif | 978 | #endif |
971 | 979 | ||
972 | /* device driver for platform bus bits */ | 980 | /* device driver for platform bus bits */ |
@@ -985,12 +993,11 @@ MODULE_DEVICE_TABLE(platform, s3c24xx_driver_ids); | |||
985 | static struct platform_driver s3c24xx_i2c_driver = { | 993 | static struct platform_driver s3c24xx_i2c_driver = { |
986 | .probe = s3c24xx_i2c_probe, | 994 | .probe = s3c24xx_i2c_probe, |
987 | .remove = s3c24xx_i2c_remove, | 995 | .remove = s3c24xx_i2c_remove, |
988 | .suspend_late = s3c24xx_i2c_suspend_late, | ||
989 | .resume = s3c24xx_i2c_resume, | ||
990 | .id_table = s3c24xx_driver_ids, | 996 | .id_table = s3c24xx_driver_ids, |
991 | .driver = { | 997 | .driver = { |
992 | .owner = THIS_MODULE, | 998 | .owner = THIS_MODULE, |
993 | .name = "s3c-i2c", | 999 | .name = "s3c-i2c", |
1000 | .pm = S3C24XX_DEV_PM_OPS, | ||
994 | }, | 1001 | }, |
995 | }; | 1002 | }; |
996 | 1003 | ||
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index d76c4c85367e..0c2ea44ae5e1 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
@@ -575,7 +575,7 @@ static void pci_pm_complete(struct device *dev) | |||
575 | static int pci_pm_suspend(struct device *dev) | 575 | static int pci_pm_suspend(struct device *dev) |
576 | { | 576 | { |
577 | struct pci_dev *pci_dev = to_pci_dev(dev); | 577 | struct pci_dev *pci_dev = to_pci_dev(dev); |
578 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 578 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
579 | 579 | ||
580 | if (pci_has_legacy_pm_support(pci_dev)) | 580 | if (pci_has_legacy_pm_support(pci_dev)) |
581 | return pci_legacy_suspend(dev, PMSG_SUSPEND); | 581 | return pci_legacy_suspend(dev, PMSG_SUSPEND); |
@@ -613,7 +613,7 @@ static int pci_pm_suspend(struct device *dev) | |||
613 | static int pci_pm_suspend_noirq(struct device *dev) | 613 | static int pci_pm_suspend_noirq(struct device *dev) |
614 | { | 614 | { |
615 | struct pci_dev *pci_dev = to_pci_dev(dev); | 615 | struct pci_dev *pci_dev = to_pci_dev(dev); |
616 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 616 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
617 | 617 | ||
618 | if (pci_has_legacy_pm_support(pci_dev)) | 618 | if (pci_has_legacy_pm_support(pci_dev)) |
619 | return pci_legacy_suspend_late(dev, PMSG_SUSPEND); | 619 | return pci_legacy_suspend_late(dev, PMSG_SUSPEND); |
@@ -672,7 +672,7 @@ static int pci_pm_resume_noirq(struct device *dev) | |||
672 | static int pci_pm_resume(struct device *dev) | 672 | static int pci_pm_resume(struct device *dev) |
673 | { | 673 | { |
674 | struct pci_dev *pci_dev = to_pci_dev(dev); | 674 | struct pci_dev *pci_dev = to_pci_dev(dev); |
675 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 675 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
676 | int error = 0; | 676 | int error = 0; |
677 | 677 | ||
678 | /* | 678 | /* |
@@ -711,7 +711,7 @@ static int pci_pm_resume(struct device *dev) | |||
711 | static int pci_pm_freeze(struct device *dev) | 711 | static int pci_pm_freeze(struct device *dev) |
712 | { | 712 | { |
713 | struct pci_dev *pci_dev = to_pci_dev(dev); | 713 | struct pci_dev *pci_dev = to_pci_dev(dev); |
714 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 714 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
715 | 715 | ||
716 | if (pci_has_legacy_pm_support(pci_dev)) | 716 | if (pci_has_legacy_pm_support(pci_dev)) |
717 | return pci_legacy_suspend(dev, PMSG_FREEZE); | 717 | return pci_legacy_suspend(dev, PMSG_FREEZE); |
@@ -780,7 +780,7 @@ static int pci_pm_thaw_noirq(struct device *dev) | |||
780 | static int pci_pm_thaw(struct device *dev) | 780 | static int pci_pm_thaw(struct device *dev) |
781 | { | 781 | { |
782 | struct pci_dev *pci_dev = to_pci_dev(dev); | 782 | struct pci_dev *pci_dev = to_pci_dev(dev); |
783 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 783 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
784 | int error = 0; | 784 | int error = 0; |
785 | 785 | ||
786 | if (pci_has_legacy_pm_support(pci_dev)) | 786 | if (pci_has_legacy_pm_support(pci_dev)) |
@@ -799,7 +799,7 @@ static int pci_pm_thaw(struct device *dev) | |||
799 | static int pci_pm_poweroff(struct device *dev) | 799 | static int pci_pm_poweroff(struct device *dev) |
800 | { | 800 | { |
801 | struct pci_dev *pci_dev = to_pci_dev(dev); | 801 | struct pci_dev *pci_dev = to_pci_dev(dev); |
802 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 802 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
803 | 803 | ||
804 | if (pci_has_legacy_pm_support(pci_dev)) | 804 | if (pci_has_legacy_pm_support(pci_dev)) |
805 | return pci_legacy_suspend(dev, PMSG_HIBERNATE); | 805 | return pci_legacy_suspend(dev, PMSG_HIBERNATE); |
@@ -872,7 +872,7 @@ static int pci_pm_restore_noirq(struct device *dev) | |||
872 | static int pci_pm_restore(struct device *dev) | 872 | static int pci_pm_restore(struct device *dev) |
873 | { | 873 | { |
874 | struct pci_dev *pci_dev = to_pci_dev(dev); | 874 | struct pci_dev *pci_dev = to_pci_dev(dev); |
875 | struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; | 875 | const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; |
876 | int error = 0; | 876 | int error = 0; |
877 | 877 | ||
878 | /* | 878 | /* |
@@ -910,7 +910,7 @@ static int pci_pm_restore(struct device *dev) | |||
910 | 910 | ||
911 | #endif /* !CONFIG_HIBERNATION */ | 911 | #endif /* !CONFIG_HIBERNATION */ |
912 | 912 | ||
913 | struct dev_pm_ops pci_dev_pm_ops = { | 913 | const struct dev_pm_ops pci_dev_pm_ops = { |
914 | .prepare = pci_pm_prepare, | 914 | .prepare = pci_pm_prepare, |
915 | .complete = pci_pm_complete, | 915 | .complete = pci_pm_complete, |
916 | .suspend = pci_pm_suspend, | 916 | .suspend = pci_pm_suspend, |
diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index c7c1ca0494cd..1d26beddf2ca 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c | |||
@@ -2167,8 +2167,9 @@ static int __devexit musb_remove(struct platform_device *pdev) | |||
2167 | 2167 | ||
2168 | #ifdef CONFIG_PM | 2168 | #ifdef CONFIG_PM |
2169 | 2169 | ||
2170 | static int musb_suspend(struct platform_device *pdev, pm_message_t message) | 2170 | static int musb_suspend(struct device *dev) |
2171 | { | 2171 | { |
2172 | struct platform_device *pdev = to_platform_device(dev); | ||
2172 | unsigned long flags; | 2173 | unsigned long flags; |
2173 | struct musb *musb = dev_to_musb(&pdev->dev); | 2174 | struct musb *musb = dev_to_musb(&pdev->dev); |
2174 | 2175 | ||
@@ -2195,8 +2196,9 @@ static int musb_suspend(struct platform_device *pdev, pm_message_t message) | |||
2195 | return 0; | 2196 | return 0; |
2196 | } | 2197 | } |
2197 | 2198 | ||
2198 | static int musb_resume_early(struct platform_device *pdev) | 2199 | static int musb_resume_noirq(struct device *dev) |
2199 | { | 2200 | { |
2201 | struct platform_device *pdev = to_platform_device(dev); | ||
2200 | struct musb *musb = dev_to_musb(&pdev->dev); | 2202 | struct musb *musb = dev_to_musb(&pdev->dev); |
2201 | 2203 | ||
2202 | if (!musb->clock) | 2204 | if (!musb->clock) |
@@ -2214,9 +2216,14 @@ static int musb_resume_early(struct platform_device *pdev) | |||
2214 | return 0; | 2216 | return 0; |
2215 | } | 2217 | } |
2216 | 2218 | ||
2219 | static struct dev_pm_ops musb_dev_pm_ops = { | ||
2220 | .suspend = musb_suspend, | ||
2221 | .resume_noirq = musb_resume_noirq, | ||
2222 | }; | ||
2223 | |||
2224 | #define MUSB_DEV_PM_OPS (&musb_dev_pm_ops) | ||
2217 | #else | 2225 | #else |
2218 | #define musb_suspend NULL | 2226 | #define MUSB_DEV_PM_OPS NULL |
2219 | #define musb_resume_early NULL | ||
2220 | #endif | 2227 | #endif |
2221 | 2228 | ||
2222 | static struct platform_driver musb_driver = { | 2229 | static struct platform_driver musb_driver = { |
@@ -2224,11 +2231,10 @@ static struct platform_driver musb_driver = { | |||
2224 | .name = (char *)musb_driver_name, | 2231 | .name = (char *)musb_driver_name, |
2225 | .bus = &platform_bus_type, | 2232 | .bus = &platform_bus_type, |
2226 | .owner = THIS_MODULE, | 2233 | .owner = THIS_MODULE, |
2234 | .pm = MUSB_DEV_PM_OPS, | ||
2227 | }, | 2235 | }, |
2228 | .remove = __devexit_p(musb_remove), | 2236 | .remove = __devexit_p(musb_remove), |
2229 | .shutdown = musb_shutdown, | 2237 | .shutdown = musb_shutdown, |
2230 | .suspend = musb_suspend, | ||
2231 | .resume_early = musb_resume_early, | ||
2232 | }; | 2238 | }; |
2233 | 2239 | ||
2234 | /*-------------------------------------------------------------------------*/ | 2240 | /*-------------------------------------------------------------------------*/ |