Commit 9c1fe834c1bd7725b411055c66886b64c928083d

Authored by Linus Torvalds

Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6

* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:
  PM / yenta: Fix cardbus suspend/resume regression
  PM / PCMCIA: Drop second argument of pcmcia_socket_dev_suspend()

Showing 18 changed files Side-by-side Diff

drivers/pcmcia/at91_cf.c
... ... @@ -363,7 +363,7 @@
363 363 struct at91_cf_socket *cf = platform_get_drvdata(pdev);
364 364 struct at91_cf_data *board = cf->board;
365 365  
366   - pcmcia_socket_dev_suspend(&pdev->dev, mesg);
  366 + pcmcia_socket_dev_suspend(&pdev->dev);
367 367 if (device_may_wakeup(&pdev->dev)) {
368 368 enable_irq_wake(board->det_pin);
369 369 if (board->irq_pin)
drivers/pcmcia/au1000_generic.c
... ... @@ -515,7 +515,7 @@
515 515 static int au1x00_drv_pcmcia_suspend(struct platform_device *dev,
516 516 pm_message_t state)
517 517 {
518   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  518 + return pcmcia_socket_dev_suspend(&dev->dev);
519 519 }
520 520  
521 521 static int au1x00_drv_pcmcia_resume(struct platform_device *dev)
drivers/pcmcia/bfin_cf_pcmcia.c
... ... @@ -302,7 +302,7 @@
302 302  
303 303 static int bfin_cf_suspend(struct platform_device *pdev, pm_message_t mesg)
304 304 {
305   - return pcmcia_socket_dev_suspend(&pdev->dev, mesg);
  305 + return pcmcia_socket_dev_suspend(&pdev->dev);
306 306 }
307 307  
308 308 static int bfin_cf_resume(struct platform_device *pdev)
... ... @@ -101,7 +101,7 @@
101 101 static int socket_resume(struct pcmcia_socket *skt);
102 102 static int socket_suspend(struct pcmcia_socket *skt);
103 103  
104   -int pcmcia_socket_dev_suspend(struct device *dev, pm_message_t state)
  104 +int pcmcia_socket_dev_suspend(struct device *dev)
105 105 {
106 106 struct pcmcia_socket *socket;
107 107  
drivers/pcmcia/i82092.c
... ... @@ -42,7 +42,7 @@
42 42 #ifdef CONFIG_PM
43 43 static int i82092aa_socket_suspend (struct pci_dev *dev, pm_message_t state)
44 44 {
45   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  45 + return pcmcia_socket_dev_suspend(&dev->dev);
46 46 }
47 47  
48 48 static int i82092aa_socket_resume (struct pci_dev *dev)
drivers/pcmcia/i82365.c
... ... @@ -1241,7 +1241,7 @@
1241 1241 static int i82365_drv_pcmcia_suspend(struct platform_device *dev,
1242 1242 pm_message_t state)
1243 1243 {
1244   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  1244 + return pcmcia_socket_dev_suspend(&dev->dev);
1245 1245 }
1246 1246  
1247 1247 static int i82365_drv_pcmcia_resume(struct platform_device *dev)
drivers/pcmcia/m32r_cfc.c
... ... @@ -699,7 +699,7 @@
699 699 static int cfc_drv_pcmcia_suspend(struct platform_device *dev,
700 700 pm_message_t state)
701 701 {
702   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  702 + return pcmcia_socket_dev_suspend(&dev->dev);
703 703 }
704 704  
705 705 static int cfc_drv_pcmcia_resume(struct platform_device *dev)
drivers/pcmcia/m32r_pcc.c
... ... @@ -675,7 +675,7 @@
675 675 static int pcc_drv_pcmcia_suspend(struct platform_device *dev,
676 676 pm_message_t state)
677 677 {
678   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  678 + return pcmcia_socket_dev_suspend(&dev->dev);
679 679 }
680 680  
681 681 static int pcc_drv_pcmcia_resume(struct platform_device *dev)
drivers/pcmcia/m8xx_pcmcia.c
... ... @@ -1296,7 +1296,7 @@
1296 1296 #ifdef CONFIG_PM
1297 1297 static int m8xx_suspend(struct platform_device *pdev, pm_message_t state)
1298 1298 {
1299   - return pcmcia_socket_dev_suspend(&pdev->dev, state);
  1299 + return pcmcia_socket_dev_suspend(&pdev->dev);
1300 1300 }
1301 1301  
1302 1302 static int m8xx_resume(struct platform_device *pdev)
drivers/pcmcia/omap_cf.c
... ... @@ -334,7 +334,7 @@
334 334  
335 335 static int omap_cf_suspend(struct platform_device *pdev, pm_message_t mesg)
336 336 {
337   - return pcmcia_socket_dev_suspend(&pdev->dev, mesg);
  337 + return pcmcia_socket_dev_suspend(&pdev->dev);
338 338 }
339 339  
340 340 static int omap_cf_resume(struct platform_device *pdev)
drivers/pcmcia/pd6729.c
... ... @@ -758,7 +758,7 @@
758 758 #ifdef CONFIG_PM
759 759 static int pd6729_socket_suspend(struct pci_dev *dev, pm_message_t state)
760 760 {
761   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  761 + return pcmcia_socket_dev_suspend(&dev->dev);
762 762 }
763 763  
764 764 static int pd6729_socket_resume(struct pci_dev *dev)
drivers/pcmcia/pxa2xx_base.c
... ... @@ -302,7 +302,7 @@
302 302  
303 303 static int pxa2xx_drv_pcmcia_suspend(struct device *dev)
304 304 {
305   - return pcmcia_socket_dev_suspend(dev, PMSG_SUSPEND);
  305 + return pcmcia_socket_dev_suspend(dev);
306 306 }
307 307  
308 308 static int pxa2xx_drv_pcmcia_resume(struct device *dev)
drivers/pcmcia/sa1100_generic.c
... ... @@ -89,7 +89,7 @@
89 89 static int sa11x0_drv_pcmcia_suspend(struct platform_device *dev,
90 90 pm_message_t state)
91 91 {
92   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  92 + return pcmcia_socket_dev_suspend(&dev->dev);
93 93 }
94 94  
95 95 static int sa11x0_drv_pcmcia_resume(struct platform_device *dev)
drivers/pcmcia/sa1111_generic.c
... ... @@ -159,7 +159,7 @@
159 159  
160 160 static int pcmcia_suspend(struct sa1111_dev *dev, pm_message_t state)
161 161 {
162   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  162 + return pcmcia_socket_dev_suspend(&dev->dev);
163 163 }
164 164  
165 165 static int pcmcia_resume(struct sa1111_dev *dev)
drivers/pcmcia/tcic.c
... ... @@ -366,7 +366,7 @@
366 366 static int tcic_drv_pcmcia_suspend(struct platform_device *dev,
367 367 pm_message_t state)
368 368 {
369   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  369 + return pcmcia_socket_dev_suspend(&dev->dev);
370 370 }
371 371  
372 372 static int tcic_drv_pcmcia_resume(struct platform_device *dev)
drivers/pcmcia/vrc4171_card.c
... ... @@ -707,7 +707,7 @@
707 707 static int vrc4171_card_suspend(struct platform_device *dev,
708 708 pm_message_t state)
709 709 {
710   - return pcmcia_socket_dev_suspend(&dev->dev, state);
  710 + return pcmcia_socket_dev_suspend(&dev->dev);
711 711 }
712 712  
713 713 static int vrc4171_card_resume(struct platform_device *dev)
drivers/pcmcia/yenta_socket.c
... ... @@ -1225,60 +1225,71 @@
1225 1225 }
1226 1226  
1227 1227 #ifdef CONFIG_PM
1228   -static int yenta_dev_suspend (struct pci_dev *dev, pm_message_t state)
  1228 +static int yenta_dev_suspend_noirq(struct device *dev)
1229 1229 {
1230   - struct yenta_socket *socket = pci_get_drvdata(dev);
  1230 + struct pci_dev *pdev = to_pci_dev(dev);
  1231 + struct yenta_socket *socket = pci_get_drvdata(pdev);
1231 1232 int ret;
1232 1233  
1233   - ret = pcmcia_socket_dev_suspend(&dev->dev, state);
  1234 + ret = pcmcia_socket_dev_suspend(dev);
1234 1235  
1235   - if (socket) {
1236   - if (socket->type && socket->type->save_state)
1237   - socket->type->save_state(socket);
  1236 + if (!socket)
  1237 + return ret;
1238 1238  
1239   - /* FIXME: pci_save_state needs to have a better interface */
1240   - pci_save_state(dev);
1241   - pci_read_config_dword(dev, 16*4, &socket->saved_state[0]);
1242   - pci_read_config_dword(dev, 17*4, &socket->saved_state[1]);
1243   - pci_disable_device(dev);
  1239 + if (socket->type && socket->type->save_state)
  1240 + socket->type->save_state(socket);
1244 1241  
1245   - /*
1246   - * Some laptops (IBM T22) do not like us putting the Cardbus
1247   - * bridge into D3. At a guess, some other laptop will
1248   - * probably require this, so leave it commented out for now.
1249   - */
1250   - /* pci_set_power_state(dev, 3); */
1251   - }
  1242 + pci_save_state(pdev);
  1243 + pci_read_config_dword(pdev, 16*4, &socket->saved_state[0]);
  1244 + pci_read_config_dword(pdev, 17*4, &socket->saved_state[1]);
  1245 + pci_disable_device(pdev);
1252 1246  
  1247 + /*
  1248 + * Some laptops (IBM T22) do not like us putting the Cardbus
  1249 + * bridge into D3. At a guess, some other laptop will
  1250 + * probably require this, so leave it commented out for now.
  1251 + */
  1252 + /* pci_set_power_state(dev, 3); */
  1253 +
1253 1254 return ret;
1254 1255 }
1255 1256  
1256   -
1257   -static int yenta_dev_resume (struct pci_dev *dev)
  1257 +static int yenta_dev_resume_noirq(struct device *dev)
1258 1258 {
1259   - struct yenta_socket *socket = pci_get_drvdata(dev);
  1259 + struct pci_dev *pdev = to_pci_dev(dev);
  1260 + struct yenta_socket *socket = pci_get_drvdata(pdev);
  1261 + int ret;
1260 1262  
1261   - if (socket) {
1262   - int rc;
  1263 + if (!socket)
  1264 + return 0;
1263 1265  
1264   - pci_set_power_state(dev, 0);
1265   - /* FIXME: pci_restore_state needs to have a better interface */
1266   - pci_restore_state(dev);
1267   - pci_write_config_dword(dev, 16*4, socket->saved_state[0]);
1268   - pci_write_config_dword(dev, 17*4, socket->saved_state[1]);
  1266 + pci_write_config_dword(pdev, 16*4, socket->saved_state[0]);
  1267 + pci_write_config_dword(pdev, 17*4, socket->saved_state[1]);
1269 1268  
1270   - rc = pci_enable_device(dev);
1271   - if (rc)
1272   - return rc;
  1269 + ret = pci_enable_device(pdev);
  1270 + if (ret)
  1271 + return ret;
1273 1272  
1274   - pci_set_master(dev);
  1273 + pci_set_master(pdev);
1275 1274  
1276   - if (socket->type && socket->type->restore_state)
1277   - socket->type->restore_state(socket);
1278   - }
  1275 + if (socket->type && socket->type->restore_state)
  1276 + socket->type->restore_state(socket);
1279 1277  
1280   - return pcmcia_socket_dev_resume(&dev->dev);
  1278 + return pcmcia_socket_dev_resume(dev);
1281 1279 }
  1280 +
  1281 +static struct dev_pm_ops yenta_pm_ops = {
  1282 + .suspend_noirq = yenta_dev_suspend_noirq,
  1283 + .resume_noirq = yenta_dev_resume_noirq,
  1284 + .freeze_noirq = yenta_dev_suspend_noirq,
  1285 + .thaw_noirq = yenta_dev_resume_noirq,
  1286 + .poweroff_noirq = yenta_dev_suspend_noirq,
  1287 + .restore_noirq = yenta_dev_resume_noirq,
  1288 +};
  1289 +
  1290 +#define YENTA_PM_OPS (&yenta_pm_ops)
  1291 +#else
  1292 +#define YENTA_PM_OPS NULL
1282 1293 #endif
1283 1294  
1284 1295 #define CB_ID(vend,dev,type) \
... ... @@ -1376,10 +1387,7 @@
1376 1387 .id_table = yenta_table,
1377 1388 .probe = yenta_probe,
1378 1389 .remove = __devexit_p(yenta_close),
1379   -#ifdef CONFIG_PM
1380   - .suspend = yenta_dev_suspend,
1381   - .resume = yenta_dev_resume,
1382   -#endif
  1390 + .driver.pm = YENTA_PM_OPS,
1383 1391 };
1384 1392  
1385 1393  
... ... @@ -279,7 +279,7 @@
279 279 extern struct pccard_resource_ops pccard_nonstatic_ops;
280 280  
281 281 /* socket drivers are expected to use these callbacks in their .drv struct */
282   -extern int pcmcia_socket_dev_suspend(struct device *dev, pm_message_t state);
  282 +extern int pcmcia_socket_dev_suspend(struct device *dev);
283 283 extern int pcmcia_socket_dev_resume(struct device *dev);
284 284  
285 285 /* socket drivers use this callback in their IRQ handler */