Commit d7646f7632549124fe70fec8af834c7c1246f365

Authored by Dominik Brodowski
1 parent e7176a37d4

pcmcia: use dev_pm_ops for class pcmcia_socket_class

Instead of requiring PCMCIA socket drivers to call various functions
during their (bus) resume and suspend functions, register an own
dev_pm_ops for this class. This fixes several suspend/resume bugs
seen on db1xxx-ss, and probably on some other socket drivers, too.

With regard to the asymmetry with only _noirq suspend, but split up
resume, please see bug 14334 and commit 9905d1b411946fb3 .

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Showing 19 changed files with 66 additions and 288 deletions Side-by-side Diff

drivers/pcmcia/at91_cf.c
... ... @@ -361,7 +361,6 @@
361 361 struct at91_cf_socket *cf = platform_get_drvdata(pdev);
362 362 struct at91_cf_data *board = cf->board;
363 363  
364   - pcmcia_socket_dev_suspend(&pdev->dev);
365 364 if (device_may_wakeup(&pdev->dev)) {
366 365 enable_irq_wake(board->det_pin);
367 366 if (board->irq_pin)
... ... @@ -381,7 +380,6 @@
381 380 disable_irq_wake(board->irq_pin);
382 381 }
383 382  
384   - pcmcia_socket_dev_resume(&pdev->dev);
385 383 return 0;
386 384 }
387 385  
drivers/pcmcia/au1000_generic.c
... ... @@ -510,17 +510,6 @@
510 510 return ret;
511 511 }
512 512  
513   -static int au1x00_drv_pcmcia_suspend(struct platform_device *dev,
514   - pm_message_t state)
515   -{
516   - return pcmcia_socket_dev_suspend(&dev->dev);
517   -}
518   -
519   -static int au1x00_drv_pcmcia_resume(struct platform_device *dev)
520   -{
521   - return pcmcia_socket_dev_resume(&dev->dev);
522   -}
523   -
524 513 static struct platform_driver au1x00_pcmcia_driver = {
525 514 .driver = {
526 515 .name = "au1x00-pcmcia",
... ... @@ -528,8 +517,6 @@
528 517 },
529 518 .probe = au1x00_drv_pcmcia_probe,
530 519 .remove = au1x00_drv_pcmcia_remove,
531   - .suspend = au1x00_drv_pcmcia_suspend,
532   - .resume = au1x00_drv_pcmcia_resume,
533 520 };
534 521  
535 522  
drivers/pcmcia/bfin_cf_pcmcia.c
... ... @@ -300,16 +300,6 @@
300 300 return 0;
301 301 }
302 302  
303   -static int bfin_cf_suspend(struct platform_device *pdev, pm_message_t mesg)
304   -{
305   - return pcmcia_socket_dev_suspend(&pdev->dev);
306   -}
307   -
308   -static int bfin_cf_resume(struct platform_device *pdev)
309   -{
310   - return pcmcia_socket_dev_resume(&pdev->dev);
311   -}
312   -
313 303 static struct platform_driver bfin_cf_driver = {
314 304 .driver = {
315 305 .name = (char *)driver_name,
... ... @@ -317,8 +307,6 @@
317 307 },
318 308 .probe = bfin_cf_probe,
319 309 .remove = __devexit_p(bfin_cf_remove),
320   - .suspend = bfin_cf_suspend,
321   - .resume = bfin_cf_resume,
322 310 };
323 311  
324 312 static int __init bfin_cf_init(void)
... ... @@ -76,65 +76,6 @@
76 76 EXPORT_SYMBOL(pcmcia_socket_list_rwsem);
77 77  
78 78  
79   -/*
80   - * Low-level PCMCIA socket drivers need to register with the PCCard
81   - * core using pcmcia_register_socket.
82   - *
83   - * socket drivers are expected to use the following callbacks in their
84   - * .drv struct:
85   - * - pcmcia_socket_dev_suspend
86   - * - pcmcia_socket_dev_resume
87   - * These functions check for the appropriate struct pcmcia_soket arrays,
88   - * and pass them to the low-level functions pcmcia_{suspend,resume}_socket
89   - */
90   -static int socket_early_resume(struct pcmcia_socket *skt);
91   -static int socket_late_resume(struct pcmcia_socket *skt);
92   -static int socket_resume(struct pcmcia_socket *skt);
93   -static int socket_suspend(struct pcmcia_socket *skt);
94   -
95   -static void pcmcia_socket_dev_run(struct device *dev,
96   - int (*cb)(struct pcmcia_socket *))
97   -{
98   - struct pcmcia_socket *socket;
99   -
100   - down_read(&pcmcia_socket_list_rwsem);
101   - list_for_each_entry(socket, &pcmcia_socket_list, socket_list) {
102   - if (socket->dev.parent != dev)
103   - continue;
104   - mutex_lock(&socket->skt_mutex);
105   - cb(socket);
106   - mutex_unlock(&socket->skt_mutex);
107   - }
108   - up_read(&pcmcia_socket_list_rwsem);
109   -}
110   -
111   -int pcmcia_socket_dev_suspend(struct device *dev)
112   -{
113   - pcmcia_socket_dev_run(dev, socket_suspend);
114   - return 0;
115   -}
116   -EXPORT_SYMBOL(pcmcia_socket_dev_suspend);
117   -
118   -void pcmcia_socket_dev_early_resume(struct device *dev)
119   -{
120   - pcmcia_socket_dev_run(dev, socket_early_resume);
121   -}
122   -EXPORT_SYMBOL(pcmcia_socket_dev_early_resume);
123   -
124   -void pcmcia_socket_dev_late_resume(struct device *dev)
125   -{
126   - pcmcia_socket_dev_run(dev, socket_late_resume);
127   -}
128   -EXPORT_SYMBOL(pcmcia_socket_dev_late_resume);
129   -
130   -int pcmcia_socket_dev_resume(struct device *dev)
131   -{
132   - pcmcia_socket_dev_run(dev, socket_resume);
133   - return 0;
134   -}
135   -EXPORT_SYMBOL(pcmcia_socket_dev_resume);
136   -
137   -
138 79 struct pcmcia_socket *pcmcia_get_socket(struct pcmcia_socket *skt)
139 80 {
140 81 struct device *dev = get_device(&skt->dev);
141 82  
... ... @@ -578,12 +519,18 @@
578 519  
579 520 static int socket_late_resume(struct pcmcia_socket *skt)
580 521 {
  522 + int ret;
  523 +
581 524 mutex_lock(&skt->ops_mutex);
582 525 skt->state &= ~SOCKET_SUSPEND;
583 526 mutex_unlock(&skt->ops_mutex);
584 527  
585   - if (!(skt->state & SOCKET_PRESENT))
586   - return socket_insert(skt);
  528 + if (!(skt->state & SOCKET_PRESENT)) {
  529 + ret = socket_insert(skt);
  530 + if (ret == -ENODEV)
  531 + ret = 0;
  532 + return ret;
  533 + }
587 534  
588 535 if (skt->resume_status) {
589 536 socket_shutdown(skt);
590 537  
... ... @@ -919,11 +866,66 @@
919 866 }
920 867  
921 868  
  869 +#ifdef CONFIG_PM
  870 +
  871 +static int __pcmcia_pm_op(struct device *dev,
  872 + int (*callback) (struct pcmcia_socket *skt))
  873 +{
  874 + struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
  875 + int ret;
  876 +
  877 + mutex_lock(&s->skt_mutex);
  878 + ret = callback(s);
  879 + mutex_unlock(&s->skt_mutex);
  880 +
  881 + return ret;
  882 +}
  883 +
  884 +static int pcmcia_socket_dev_suspend_noirq(struct device *dev)
  885 +{
  886 + return __pcmcia_pm_op(dev, socket_suspend);
  887 +}
  888 +
  889 +static int pcmcia_socket_dev_resume_noirq(struct device *dev)
  890 +{
  891 + return __pcmcia_pm_op(dev, socket_early_resume);
  892 +}
  893 +
  894 +static int pcmcia_socket_dev_resume(struct device *dev)
  895 +{
  896 + return __pcmcia_pm_op(dev, socket_late_resume);
  897 +}
  898 +
  899 +static const struct dev_pm_ops pcmcia_socket_pm_ops = {
  900 + /* dev_resume may be called with IRQs enabled */
  901 + SET_SYSTEM_SLEEP_PM_OPS(NULL,
  902 + pcmcia_socket_dev_resume)
  903 +
  904 + /* late suspend must be called with IRQs disabled */
  905 + .suspend_noirq = pcmcia_socket_dev_suspend_noirq,
  906 + .freeze_noirq = pcmcia_socket_dev_suspend_noirq,
  907 + .poweroff_noirq = pcmcia_socket_dev_suspend_noirq,
  908 +
  909 + /* early resume must be called with IRQs disabled */
  910 + .resume_noirq = pcmcia_socket_dev_resume_noirq,
  911 + .thaw_noirq = pcmcia_socket_dev_resume_noirq,
  912 + .restore_noirq = pcmcia_socket_dev_resume_noirq,
  913 +};
  914 +
  915 +#define PCMCIA_SOCKET_CLASS_PM_OPS (&pcmcia_socket_pm_ops)
  916 +
  917 +#else /* CONFIG_PM */
  918 +
  919 +#define PCMCIA_SOCKET_CLASS_PM_OPS NULL
  920 +
  921 +#endif /* CONFIG_PM */
  922 +
922 923 struct class pcmcia_socket_class = {
923 924 .name = "pcmcia_socket",
924 925 .dev_uevent = pcmcia_socket_uevent,
925 926 .dev_release = pcmcia_release_socket,
926 927 .class_release = pcmcia_release_socket_class,
  928 + .pm = PCMCIA_SOCKET_CLASS_PM_OPS,
927 929 };
928 930 EXPORT_SYMBOL(pcmcia_socket_class);
929 931  
drivers/pcmcia/db1xxx_ss.c
... ... @@ -558,37 +558,10 @@
558 558 return 0;
559 559 }
560 560  
561   -#ifdef CONFIG_PM
562   -static int db1x_pcmcia_suspend(struct device *dev)
563   -{
564   - return pcmcia_socket_dev_suspend(dev);
565   -}
566   -
567   -static int db1x_pcmcia_resume(struct device *dev)
568   -{
569   - return pcmcia_socket_dev_resume(dev);
570   -}
571   -
572   -static struct dev_pm_ops db1x_pcmcia_pmops = {
573   - .resume = db1x_pcmcia_resume,
574   - .suspend = db1x_pcmcia_suspend,
575   - .thaw = db1x_pcmcia_resume,
576   - .freeze = db1x_pcmcia_suspend,
577   -};
578   -
579   -#define DB1XXX_SS_PMOPS &db1x_pcmcia_pmops
580   -
581   -#else
582   -
583   -#define DB1XXX_SS_PMOPS NULL
584   -
585   -#endif
586   -
587 561 static struct platform_driver db1x_pcmcia_socket_driver = {
588 562 .driver = {
589 563 .name = "db1xxx_pcmcia",
590 564 .owner = THIS_MODULE,
591   - .pm = DB1XXX_SS_PMOPS
592 565 },
593 566 .probe = db1x_pcmcia_socket_probe,
594 567 .remove = __devexit_p(db1x_pcmcia_socket_remove),
drivers/pcmcia/i82092.c
... ... @@ -39,27 +39,11 @@
39 39 };
40 40 MODULE_DEVICE_TABLE(pci, i82092aa_pci_ids);
41 41  
42   -#ifdef CONFIG_PM
43   -static int i82092aa_socket_suspend (struct pci_dev *dev, pm_message_t state)
44   -{
45   - return pcmcia_socket_dev_suspend(&dev->dev);
46   -}
47   -
48   -static int i82092aa_socket_resume (struct pci_dev *dev)
49   -{
50   - return pcmcia_socket_dev_resume(&dev->dev);
51   -}
52   -#endif
53   -
54 42 static struct pci_driver i82092aa_pci_driver = {
55 43 .name = "i82092aa",
56 44 .id_table = i82092aa_pci_ids,
57 45 .probe = i82092aa_pci_probe,
58 46 .remove = __devexit_p(i82092aa_pci_remove),
59   -#ifdef CONFIG_PM
60   - .suspend = i82092aa_socket_suspend,
61   - .resume = i82092aa_socket_resume,
62   -#endif
63 47 };
64 48  
65 49  
drivers/pcmcia/i82365.c
... ... @@ -1223,16 +1223,7 @@
1223 1223 return 0;
1224 1224 }
1225 1225  
1226   -static int i82365_drv_pcmcia_suspend(struct platform_device *dev,
1227   - pm_message_t state)
1228   -{
1229   - return pcmcia_socket_dev_suspend(&dev->dev);
1230   -}
1231 1226  
1232   -static int i82365_drv_pcmcia_resume(struct platform_device *dev)
1233   -{
1234   - return pcmcia_socket_dev_resume(&dev->dev);
1235   -}
1236 1227 static struct pccard_operations pcic_operations = {
1237 1228 .init = pcic_init,
1238 1229 .get_status = pcic_get_status,
... ... @@ -1248,8 +1239,6 @@
1248 1239 .name = "i82365",
1249 1240 .owner = THIS_MODULE,
1250 1241 },
1251   - .suspend = i82365_drv_pcmcia_suspend,
1252   - .resume = i82365_drv_pcmcia_resume,
1253 1242 };
1254 1243  
1255 1244 static struct platform_device *i82365_device;
drivers/pcmcia/m32r_cfc.c
... ... @@ -685,16 +685,7 @@
685 685 .set_mem_map = pcc_set_mem_map,
686 686 };
687 687  
688   -static int cfc_drv_pcmcia_suspend(struct platform_device *dev,
689   - pm_message_t state)
690   -{
691   - return pcmcia_socket_dev_suspend(&dev->dev);
692   -}
693 688  
694   -static int cfc_drv_pcmcia_resume(struct platform_device *dev)
695   -{
696   - return pcmcia_socket_dev_resume(&dev->dev);
697   -}
698 689 /*====================================================================*/
699 690  
700 691 static struct platform_driver pcc_driver = {
... ... @@ -702,8 +693,6 @@
702 693 .name = "cfc",
703 694 .owner = THIS_MODULE,
704 695 },
705   - .suspend = cfc_drv_pcmcia_suspend,
706   - .resume = cfc_drv_pcmcia_resume,
707 696 };
708 697  
709 698 static struct platform_device pcc_device = {
drivers/pcmcia/m32r_pcc.c
... ... @@ -663,16 +663,6 @@
663 663 .set_mem_map = pcc_set_mem_map,
664 664 };
665 665  
666   -static int pcc_drv_pcmcia_suspend(struct platform_device *dev,
667   - pm_message_t state)
668   -{
669   - return pcmcia_socket_dev_suspend(&dev->dev);
670   -}
671   -
672   -static int pcc_drv_pcmcia_resume(struct platform_device *dev)
673   -{
674   - return pcmcia_socket_dev_resume(&dev->dev);
675   -}
676 666 /*====================================================================*/
677 667  
678 668 static struct platform_driver pcc_driver = {
... ... @@ -680,8 +670,6 @@
680 670 .name = "pcc",
681 671 .owner = THIS_MODULE,
682 672 },
683   - .suspend = pcc_drv_pcmcia_suspend,
684   - .resume = pcc_drv_pcmcia_resume,
685 673 };
686 674  
687 675 static struct platform_device pcc_device = {
drivers/pcmcia/m8xx_pcmcia.c
... ... @@ -1288,21 +1288,6 @@
1288 1288 return 0;
1289 1289 }
1290 1290  
1291   -#ifdef CONFIG_PM
1292   -static int m8xx_suspend(struct platform_device *pdev, pm_message_t state)
1293   -{
1294   - return pcmcia_socket_dev_suspend(&pdev->dev);
1295   -}
1296   -
1297   -static int m8xx_resume(struct platform_device *pdev)
1298   -{
1299   - return pcmcia_socket_dev_resume(&pdev->dev);
1300   -}
1301   -#else
1302   -#define m8xx_suspend NULL
1303   -#define m8xx_resume NULL
1304   -#endif
1305   -
1306 1291 static const struct of_device_id m8xx_pcmcia_match[] = {
1307 1292 {
1308 1293 .type = "pcmcia",
... ... @@ -1318,8 +1303,6 @@
1318 1303 .match_table = m8xx_pcmcia_match,
1319 1304 .probe = m8xx_probe,
1320 1305 .remove = m8xx_remove,
1321   - .suspend = m8xx_suspend,
1322   - .resume = m8xx_resume,
1323 1306 };
1324 1307  
1325 1308 static int __init m8xx_init(void)
drivers/pcmcia/omap_cf.c
... ... @@ -330,24 +330,12 @@
330 330 return 0;
331 331 }
332 332  
333   -static int omap_cf_suspend(struct platform_device *pdev, pm_message_t mesg)
334   -{
335   - return pcmcia_socket_dev_suspend(&pdev->dev);
336   -}
337   -
338   -static int omap_cf_resume(struct platform_device *pdev)
339   -{
340   - return pcmcia_socket_dev_resume(&pdev->dev);
341   -}
342   -
343 333 static struct platform_driver omap_cf_driver = {
344 334 .driver = {
345 335 .name = (char *) driver_name,
346 336 .owner = THIS_MODULE,
347 337 },
348 338 .remove = __exit_p(omap_cf_remove),
349   - .suspend = omap_cf_suspend,
350   - .resume = omap_cf_resume,
351 339 };
352 340  
353 341 static int __init omap_cf_init(void)
drivers/pcmcia/pd6729.c
... ... @@ -764,18 +764,6 @@
764 764 kfree(socket);
765 765 }
766 766  
767   -#ifdef CONFIG_PM
768   -static int pd6729_socket_suspend(struct pci_dev *dev, pm_message_t state)
769   -{
770   - return pcmcia_socket_dev_suspend(&dev->dev);
771   -}
772   -
773   -static int pd6729_socket_resume(struct pci_dev *dev)
774   -{
775   - return pcmcia_socket_dev_resume(&dev->dev);
776   -}
777   -#endif
778   -
779 767 static struct pci_device_id pd6729_pci_ids[] = {
780 768 {
781 769 .vendor = PCI_VENDOR_ID_CIRRUS,
... ... @@ -792,10 +780,6 @@
792 780 .id_table = pd6729_pci_ids,
793 781 .probe = pd6729_pci_probe,
794 782 .remove = __devexit_p(pd6729_pci_remove),
795   -#ifdef CONFIG_PM
796   - .suspend = pd6729_socket_suspend,
797   - .resume = pd6729_socket_resume,
798   -#endif
799 783 };
800 784  
801 785 static int pd6729_module_init(void)
drivers/pcmcia/pxa2xx_base.c
... ... @@ -325,19 +325,13 @@
325 325 return 0;
326 326 }
327 327  
328   -static int pxa2xx_drv_pcmcia_suspend(struct device *dev)
329   -{
330   - return pcmcia_socket_dev_suspend(dev);
331   -}
332   -
333 328 static int pxa2xx_drv_pcmcia_resume(struct device *dev)
334 329 {
335 330 pxa2xx_configure_sockets(dev);
336   - return pcmcia_socket_dev_resume(dev);
  331 + return 0;
337 332 }
338 333  
339 334 static const struct dev_pm_ops pxa2xx_drv_pcmcia_pm_ops = {
340   - .suspend = pxa2xx_drv_pcmcia_suspend,
341 335 .resume = pxa2xx_drv_pcmcia_resume,
342 336 };
343 337  
drivers/pcmcia/sa1100_generic.c
... ... @@ -95,17 +95,6 @@
95 95 return 0;
96 96 }
97 97  
98   -static int sa11x0_drv_pcmcia_suspend(struct platform_device *dev,
99   - pm_message_t state)
100   -{
101   - return pcmcia_socket_dev_suspend(&dev->dev);
102   -}
103   -
104   -static int sa11x0_drv_pcmcia_resume(struct platform_device *dev)
105   -{
106   - return pcmcia_socket_dev_resume(&dev->dev);
107   -}
108   -
109 98 static struct platform_driver sa11x0_pcmcia_driver = {
110 99 .driver = {
111 100 .name = "sa11x0-pcmcia",
... ... @@ -113,8 +102,6 @@
113 102 },
114 103 .probe = sa11x0_drv_pcmcia_probe,
115 104 .remove = sa11x0_drv_pcmcia_remove,
116   - .suspend = sa11x0_drv_pcmcia_suspend,
117   - .resume = sa11x0_drv_pcmcia_resume,
118 105 };
119 106  
120 107 /* sa11x0_pcmcia_init()
drivers/pcmcia/sa1111_generic.c
... ... @@ -213,16 +213,6 @@
213 213 return 0;
214 214 }
215 215  
216   -static int pcmcia_suspend(struct sa1111_dev *dev, pm_message_t state)
217   -{
218   - return pcmcia_socket_dev_suspend(&dev->dev);
219   -}
220   -
221   -static int pcmcia_resume(struct sa1111_dev *dev)
222   -{
223   - return pcmcia_socket_dev_resume(&dev->dev);
224   -}
225   -
226 216 static struct sa1111_driver pcmcia_driver = {
227 217 .drv = {
228 218 .name = "sa1111-pcmcia",
... ... @@ -230,8 +220,6 @@
230 220 .devid = SA1111_DEVID_PCMCIA,
231 221 .probe = pcmcia_probe,
232 222 .remove = __devexit_p(pcmcia_remove),
233   - .suspend = pcmcia_suspend,
234   - .resume = pcmcia_resume,
235 223 };
236 224  
237 225 static int __init sa1111_drv_pcmcia_init(void)
drivers/pcmcia/tcic.c
... ... @@ -348,16 +348,6 @@
348 348 return id;
349 349 }
350 350  
351   -static int tcic_drv_pcmcia_suspend(struct platform_device *dev,
352   - pm_message_t state)
353   -{
354   - return pcmcia_socket_dev_suspend(&dev->dev);
355   -}
356   -
357   -static int tcic_drv_pcmcia_resume(struct platform_device *dev)
358   -{
359   - return pcmcia_socket_dev_resume(&dev->dev);
360   -}
361 351 /*====================================================================*/
362 352  
363 353 static struct platform_driver tcic_driver = {
... ... @@ -365,8 +355,6 @@
365 355 .name = "tcic-pcmcia",
366 356 .owner = THIS_MODULE,
367 357 },
368   - .suspend = tcic_drv_pcmcia_suspend,
369   - .resume = tcic_drv_pcmcia_resume,
370 358 };
371 359  
372 360 static struct platform_device tcic_device = {
drivers/pcmcia/vrc4171_card.c
... ... @@ -705,24 +705,11 @@
705 705  
706 706 __setup("vrc4171_card=", vrc4171_card_setup);
707 707  
708   -static int vrc4171_card_suspend(struct platform_device *dev,
709   - pm_message_t state)
710   -{
711   - return pcmcia_socket_dev_suspend(&dev->dev);
712   -}
713   -
714   -static int vrc4171_card_resume(struct platform_device *dev)
715   -{
716   - return pcmcia_socket_dev_resume(&dev->dev);
717   -}
718   -
719 708 static struct platform_driver vrc4171_card_driver = {
720 709 .driver = {
721 710 .name = vrc4171_card_name,
722 711 .owner = THIS_MODULE,
723 712 },
724   - .suspend = vrc4171_card_suspend,
725   - .resume = vrc4171_card_resume,
726 713 };
727 714  
728 715 static int __devinit vrc4171_card_init(void)
drivers/pcmcia/yenta_socket.c
... ... @@ -1290,12 +1290,9 @@
1290 1290 {
1291 1291 struct pci_dev *pdev = to_pci_dev(dev);
1292 1292 struct yenta_socket *socket = pci_get_drvdata(pdev);
1293   - int ret;
1294 1293  
1295   - ret = pcmcia_socket_dev_suspend(dev);
1296   -
1297 1294 if (!socket)
1298   - return ret;
  1295 + return 0;
1299 1296  
1300 1297 if (socket->type && socket->type->save_state)
1301 1298 socket->type->save_state(socket);
... ... @@ -1312,7 +1309,7 @@
1312 1309 */
1313 1310 /* pci_set_power_state(dev, 3); */
1314 1311  
1315   - return ret;
  1312 + return 0;
1316 1313 }
1317 1314  
1318 1315 static int yenta_dev_resume_noirq(struct device *dev)
1319 1316  
1320 1317  
1321 1318  
1322 1319  
... ... @@ -1336,26 +1333,16 @@
1336 1333 if (socket->type && socket->type->restore_state)
1337 1334 socket->type->restore_state(socket);
1338 1335  
1339   - pcmcia_socket_dev_early_resume(dev);
1340 1336 return 0;
1341 1337 }
1342 1338  
1343   -static int yenta_dev_resume(struct device *dev)
1344   -{
1345   - pcmcia_socket_dev_late_resume(dev);
1346   - return 0;
1347   -}
1348   -
1349 1339 static const struct dev_pm_ops yenta_pm_ops = {
1350 1340 .suspend_noirq = yenta_dev_suspend_noirq,
1351 1341 .resume_noirq = yenta_dev_resume_noirq,
1352   - .resume = yenta_dev_resume,
1353 1342 .freeze_noirq = yenta_dev_suspend_noirq,
1354 1343 .thaw_noirq = yenta_dev_resume_noirq,
1355   - .thaw = yenta_dev_resume,
1356 1344 .poweroff_noirq = yenta_dev_suspend_noirq,
1357 1345 .restore_noirq = yenta_dev_resume_noirq,
1358   - .restore = yenta_dev_resume,
1359 1346 };
1360 1347  
1361 1348 #define YENTA_PM_OPS (&yenta_pm_ops)
... ... @@ -277,12 +277,6 @@
277 277 #endif
278 278  
279 279  
280   -/* socket drivers are expected to use these callbacks in their .drv struct */
281   -extern int pcmcia_socket_dev_suspend(struct device *dev);
282   -extern void pcmcia_socket_dev_early_resume(struct device *dev);
283   -extern void pcmcia_socket_dev_late_resume(struct device *dev);
284   -extern int pcmcia_socket_dev_resume(struct device *dev);
285   -
286 280 /* socket drivers use this callback in their IRQ handler */
287 281 extern void pcmcia_parse_events(struct pcmcia_socket *socket,
288 282 unsigned int events);