From: Pavel Machek This corrects type-checking into more drivers. No code changes, apart from pci_choose_state() which should not matter because we are only ever passing 0 or 3 to suspend method. With this, and after fixing sound, we should be able to switch pm_message_t into struct in early 2.6.12 (and solve long-term problems). From: Bernard Blackham Signed-off-by: Pavel Machek Signed-off-by: Andrew Morton --- 25-akpm/drivers/media/video/bttv-driver.c | 2 +- 25-akpm/drivers/net/3c59x.c | 2 +- 25-akpm/drivers/net/e100.c | 4 ++-- 25-akpm/drivers/net/epic100.c | 2 +- 25-akpm/drivers/net/natsemi.c | 2 +- 25-akpm/drivers/net/ne2k-pci.c | 4 ++-- 25-akpm/drivers/net/sis900.c | 2 +- 25-akpm/drivers/net/sungem.c | 2 +- 25-akpm/drivers/net/typhoon.c | 10 +++++----- 25-akpm/drivers/net/via-velocity.c | 4 ++-- 25-akpm/drivers/pcmcia/pd6729.c | 2 +- 25-akpm/drivers/usb/host/sl811-hcd.c | 6 +++--- 25-akpm/drivers/usb/net/pegasus.c | 2 +- 25-akpm/drivers/video/aty/aty128fb.c | 6 +++--- 25-akpm/drivers/video/aty/atyfb_base.c | 4 ++-- 25-akpm/drivers/video/cyber2000fb.c | 2 +- 25-akpm/drivers/video/i810/i810_main.c | 2 +- 25-akpm/drivers/video/i810/i810_main.h | 2 +- 18 files changed, 30 insertions(+), 30 deletions(-) diff -puN drivers/media/video/bttv-driver.c~driver-model-type-checking-for-more-drivers drivers/media/video/bttv-driver.c --- 25/drivers/media/video/bttv-driver.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.006086400 -0800 +++ 25-akpm/drivers/media/video/bttv-driver.c 2005-01-28 14:14:07.186059040 -0800 @@ -3914,7 +3914,7 @@ static void __devexit bttv_remove(struct return; } -static int bttv_suspend(struct pci_dev *pci_dev, u32 state) +static int bttv_suspend(struct pci_dev *pci_dev, pm_message_t state) { struct bttv *btv = pci_get_drvdata(pci_dev); struct bttv_buffer_set idle; diff -puN drivers/net/3c59x.c~driver-model-type-checking-for-more-drivers drivers/net/3c59x.c --- 25/drivers/net/3c59x.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.025083512 -0800 +++ 25-akpm/drivers/net/3c59x.c 2005-01-28 14:14:07.189058584 -0800 @@ -962,7 +962,7 @@ static void poll_vortex(struct net_devic #ifdef CONFIG_PM -static int vortex_suspend (struct pci_dev *pdev, u32 state) +static int vortex_suspend (struct pci_dev *pdev, pm_message_t state) { struct net_device *dev = pci_get_drvdata(pdev); diff -puN drivers/net/e100.c~driver-model-type-checking-for-more-drivers drivers/net/e100.c --- 25/drivers/net/e100.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.027083208 -0800 +++ 25-akpm/drivers/net/e100.c 2005-01-28 14:14:07.192058128 -0800 @@ -2309,7 +2309,7 @@ static void __devexit e100_remove(struct } #ifdef CONFIG_PM -static int e100_suspend(struct pci_dev *pdev, u32 state) +static int e100_suspend(struct pci_dev *pdev, pm_message_t state) { struct net_device *netdev = pci_get_drvdata(pdev); struct nic *nic = netdev_priv(netdev); @@ -2320,7 +2320,7 @@ static int e100_suspend(struct pci_dev * netif_device_detach(netdev); pci_save_state(pdev); - pci_enable_wake(pdev, state, nic->flags & (wol_magic | e100_asf(nic))); + pci_enable_wake(pdev, pci_choose_state(pdev, state), nic->flags & (wol_magic | e100_asf(nic))); pci_disable_device(pdev); pci_set_power_state(pdev, pci_choose_state(pdev, state)); diff -puN drivers/net/epic100.c~driver-model-type-checking-for-more-drivers drivers/net/epic100.c --- 25/drivers/net/epic100.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.029082904 -0800 +++ 25-akpm/drivers/net/epic100.c 2005-01-28 14:14:07.194057824 -0800 @@ -1624,7 +1624,7 @@ static void __devexit epic_remove_one (s #ifdef CONFIG_PM -static int epic_suspend (struct pci_dev *pdev, u32 state) +static int epic_suspend (struct pci_dev *pdev, pm_message_t state) { struct net_device *dev = pci_get_drvdata(pdev); long ioaddr = dev->base_addr; diff -puN drivers/net/natsemi.c~driver-model-type-checking-for-more-drivers drivers/net/natsemi.c --- 25/drivers/net/natsemi.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.038081536 -0800 +++ 25-akpm/drivers/net/natsemi.c 2005-01-28 14:14:07.196057520 -0800 @@ -3160,7 +3160,7 @@ static void __devexit natsemi_remove1 (s * Interrupts must be disabled, otherwise hands_off can cause irq storms. */ -static int natsemi_suspend (struct pci_dev *pdev, u32 state) +static int natsemi_suspend (struct pci_dev *pdev, pm_message_t state) { struct net_device *dev = pci_get_drvdata (pdev); struct netdev_private *np = netdev_priv(dev); diff -puN drivers/net/ne2k-pci.c~driver-model-type-checking-for-more-drivers drivers/net/ne2k-pci.c --- 25/drivers/net/ne2k-pci.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.040081232 -0800 +++ 25-akpm/drivers/net/ne2k-pci.c 2005-01-28 14:14:07.207055848 -0800 @@ -654,13 +654,13 @@ static void __devexit ne2k_pci_remove_on } #ifdef CONFIG_PM -static int ne2k_pci_suspend (struct pci_dev *pdev, u32 state) +static int ne2k_pci_suspend (struct pci_dev *pdev, pm_message_t state) { struct net_device *dev = pci_get_drvdata (pdev); netif_device_detach(dev); pci_save_state(pdev); - pci_set_power_state(pdev, state); + pci_set_power_state(pdev, pci_choose_state(pdev, state)); return 0; } diff -puN drivers/net/sis900.c~driver-model-type-checking-for-more-drivers drivers/net/sis900.c --- 25/drivers/net/sis900.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.041081080 -0800 +++ 25-akpm/drivers/net/sis900.c 2005-01-28 14:14:07.208055696 -0800 @@ -2226,7 +2226,7 @@ static void __devexit sis900_remove(stru #ifdef CONFIG_PM -static int sis900_suspend(struct pci_dev *pci_dev, u32 state) +static int sis900_suspend(struct pci_dev *pci_dev, pm_message_t state) { struct net_device *net_dev = pci_get_drvdata(pci_dev); long ioaddr = net_dev->base_addr; diff -puN drivers/net/sungem.c~driver-model-type-checking-for-more-drivers drivers/net/sungem.c --- 25/drivers/net/sungem.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.043080776 -0800 +++ 25-akpm/drivers/net/sungem.c 2005-01-28 14:14:07.211055240 -0800 @@ -2346,7 +2346,7 @@ static int gem_close(struct net_device * } #ifdef CONFIG_PM -static int gem_suspend(struct pci_dev *pdev, u32 state) +static int gem_suspend(struct pci_dev *pdev, pm_message_t state) { struct net_device *dev = pci_get_drvdata(pdev); struct gem *gp = dev->priv; diff -puN drivers/net/typhoon.c~driver-model-type-checking-for-more-drivers drivers/net/typhoon.c --- 25/drivers/net/typhoon.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.049079864 -0800 +++ 25-akpm/drivers/net/typhoon.c 2005-01-28 14:14:07.213054936 -0800 @@ -2136,7 +2136,7 @@ out_sleep: goto out; } - if(typhoon_sleep(tp, 3, 0) < 0) + if(typhoon_sleep(tp, PCI_D3hot, 0) < 0) printk(KERN_ERR "%s: unable to go back to sleep\n", dev->name); out: @@ -2163,7 +2163,7 @@ typhoon_close(struct net_device *dev) if(typhoon_boot_3XP(tp, TYPHOON_STATUS_WAITING_FOR_HOST) < 0) printk(KERN_ERR "%s: unable to boot sleep image\n", dev->name); - if(typhoon_sleep(tp, 3, 0) < 0) + if(typhoon_sleep(tp, PCI_D3hot, 0) < 0) printk(KERN_ERR "%s: unable to put card to sleep\n", dev->name); return 0; @@ -2203,7 +2203,7 @@ reset: } static int -typhoon_suspend(struct pci_dev *pdev, u32 state) +typhoon_suspend(struct pci_dev *pdev, pm_message_t state) { struct net_device *dev = pci_get_drvdata(pdev); struct typhoon *tp = netdev_priv(dev); @@ -2255,7 +2255,7 @@ typhoon_suspend(struct pci_dev *pdev, u3 goto need_resume; } - if(typhoon_sleep(tp, state, tp->wol_events) < 0) { + if(typhoon_sleep(tp, pci_choose_state(pdev, state), tp->wol_events) < 0) { printk(KERN_ERR "%s: unable to put card to sleep\n", dev->name); goto need_resume; } @@ -2454,7 +2454,7 @@ typhoon_init_one(struct pci_dev *pdev, c if(xp_resp[0].numDesc != 0) tp->capabilities |= TYPHOON_WAKEUP_NEEDS_RESET; - if(typhoon_sleep(tp, 3, 0) < 0) { + if(typhoon_sleep(tp, PCI_D3hot, 0) < 0) { printk(ERR_PFX "%s: cannot put adapter to sleep\n", pci_name(pdev)); err = -EIO; diff -puN drivers/net/via-velocity.c~driver-model-type-checking-for-more-drivers drivers/net/via-velocity.c --- 25/drivers/net/via-velocity.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.061078040 -0800 +++ 25-akpm/drivers/net/via-velocity.c 2005-01-28 14:14:07.215054632 -0800 @@ -263,7 +263,7 @@ static int velocity_set_media_mode(struc #ifdef CONFIG_PM -static int velocity_suspend(struct pci_dev *pdev, u32 state); +static int velocity_suspend(struct pci_dev *pdev, pm_message_t state); static int velocity_resume(struct pci_dev *pdev); static int velocity_netdev_event(struct notifier_block *nb, unsigned long notification, void *ptr); @@ -3210,7 +3210,7 @@ static int velocity_set_wol(struct veloc return 0; } -static int velocity_suspend(struct pci_dev *pdev, u32 state) +static int velocity_suspend(struct pci_dev *pdev, pm_message_t state) { struct velocity_info *vptr = pci_get_drvdata(pdev); unsigned long flags; diff -puN drivers/pcmcia/pd6729.c~driver-model-type-checking-for-more-drivers drivers/pcmcia/pd6729.c --- 25/drivers/pcmcia/pd6729.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.088073936 -0800 +++ 25-akpm/drivers/pcmcia/pd6729.c 2005-01-28 14:14:07.216054480 -0800 @@ -833,7 +833,7 @@ static void __devexit pd6729_pci_remove( kfree(socket); } -static int pd6729_socket_suspend(struct pci_dev *dev, u32 state) +static int pd6729_socket_suspend(struct pci_dev *dev, pm_message_t state) { return pcmcia_socket_dev_suspend(&dev->dev, state); } diff -puN drivers/usb/host/sl811-hcd.c~driver-model-type-checking-for-more-drivers drivers/usb/host/sl811-hcd.c --- 25/drivers/usb/host/sl811-hcd.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.090073632 -0800 +++ 25-akpm/drivers/usb/host/sl811-hcd.c 2005-01-28 14:14:07.218054176 -0800 @@ -103,12 +103,12 @@ static void port_power(struct sl811 *sl8 sl811->port1 = (1 << USB_PORT_FEAT_POWER); sl811->irq_enable = SL11H_INTMASK_INSRMV; - hcd->self.controller->power.power_state = PM_SUSPEND_ON; + hcd->self.controller->power.power_state = PMSG_ON; } else { sl811->port1 = 0; sl811->irq_enable = 0; hcd->state = USB_STATE_HALT; - hcd->self.controller->power.power_state = PM_SUSPEND_DISK; + hcd->self.controller->power.power_state = PMSG_SUSPEND; } sl811->ctrl1 = 0; sl811_write(sl811, SL11H_IRQ_ENABLE, 0); @@ -1799,7 +1799,7 @@ sl811h_probe(struct device *dev) */ static int -sl811h_suspend(struct device *dev, u32 state, u32 phase) +sl811h_suspend(struct device *dev, pm_message_t state, u32 phase) { struct sl811 *sl811 = dev_get_drvdata(dev); int retval = 0; diff -puN drivers/usb/net/pegasus.c~driver-model-type-checking-for-more-drivers drivers/usb/net/pegasus.c --- 25/drivers/usb/net/pegasus.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.091073480 -0800 +++ 25-akpm/drivers/usb/net/pegasus.c 2005-01-28 14:14:07.219054024 -0800 @@ -1253,7 +1253,7 @@ static void pegasus_disconnect(struct us free_netdev(pegasus->net); } -static int pegasus_suspend (struct usb_interface *intf, u32 state) +static int pegasus_suspend (struct usb_interface *intf, pm_message_t state) { struct pegasus *pegasus = usb_get_intfdata(intf); diff -puN drivers/video/aty/aty128fb.c~driver-model-type-checking-for-more-drivers drivers/video/aty/aty128fb.c --- 25/drivers/video/aty/aty128fb.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.093073176 -0800 +++ 25-akpm/drivers/video/aty/aty128fb.c 2005-01-28 14:14:07.225053112 -0800 @@ -165,7 +165,7 @@ static const char *r128_family[] __devin static int aty128_probe(struct pci_dev *pdev, const struct pci_device_id *ent); static void aty128_remove(struct pci_dev *pdev); -static int aty128_pci_suspend(struct pci_dev *pdev, u32 state); +static int aty128_pci_suspend(struct pci_dev *pdev, pm_message_t state); static int aty128_pci_resume(struct pci_dev *pdev); /* supported Rage128 chipsets */ @@ -2309,7 +2309,7 @@ static void aty128_set_suspend(struct at } } -static int aty128_pci_suspend(struct pci_dev *pdev, u32 state) +static int aty128_pci_suspend(struct pci_dev *pdev, pm_message_t state) { struct fb_info *info = pci_get_drvdata(pdev); struct aty128fb_par *par = info->par; @@ -2396,7 +2396,7 @@ static int aty128_pci_resume(struct pci_ release_console_sem(); - pdev->dev.power.power_state = 0; + pdev->dev.power.power_state = PMSG_ON; printk(KERN_DEBUG "aty128fb: resumed !\n"); diff -puN drivers/video/aty/atyfb_base.c~driver-model-type-checking-for-more-drivers drivers/video/aty/atyfb_base.c --- 25/drivers/video/aty/atyfb_base.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.095072872 -0800 +++ 25-akpm/drivers/video/aty/atyfb_base.c 2005-01-28 14:14:07.228052656 -0800 @@ -2016,7 +2016,7 @@ static int aty_power_mgmt(int sleep, str return timeout ? 0 : -EIO; } -static int atyfb_pci_suspend(struct pci_dev *pdev, u32 state) +static int atyfb_pci_suspend(struct pci_dev *pdev, pm_message_t state) { struct fb_info *info = pci_get_drvdata(pdev); struct atyfb_par *par = (struct atyfb_par *) info->par; @@ -2091,7 +2091,7 @@ static int atyfb_pci_resume(struct pci_d release_console_sem(); - pdev->dev.power.power_state = 0; + pdev->dev.power.power_state = PMSG_ON; return 0; } diff -puN drivers/video/cyber2000fb.c~driver-model-type-checking-for-more-drivers drivers/video/cyber2000fb.c --- 25/drivers/video/cyber2000fb.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.129067704 -0800 +++ 25-akpm/drivers/video/cyber2000fb.c 2005-01-28 14:14:07.229052504 -0800 @@ -1665,7 +1665,7 @@ static void __devexit cyberpro_pci_remov } } -static int cyberpro_pci_suspend(struct pci_dev *dev, u32 state) +static int cyberpro_pci_suspend(struct pci_dev *dev, pm_message_t state) { return 0; } diff -puN drivers/video/i810/i810_main.c~driver-model-type-checking-for-more-drivers drivers/video/i810/i810_main.c --- 25/drivers/video/i810/i810_main.c~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.153064056 -0800 +++ 25-akpm/drivers/video/i810/i810_main.c 2005-01-28 14:14:07.231052200 -0800 @@ -1524,7 +1524,7 @@ static int i810fb_suspend(struct pci_dev pci_disable_device(dev); } pci_save_state(dev); - pci_set_power_state(dev, state); + pci_set_power_state(dev, pci_choose_state(dev, state)); return 0; } diff -puN drivers/video/i810/i810_main.h~driver-model-type-checking-for-more-drivers drivers/video/i810/i810_main.h --- 25/drivers/video/i810/i810_main.h~driver-model-type-checking-for-more-drivers 2005-01-28 14:14:07.154063904 -0800 +++ 25-akpm/drivers/video/i810/i810_main.h 2005-01-28 14:14:07.231052200 -0800 @@ -18,7 +18,7 @@ static int __devinit i810fb_init_pci (s const struct pci_device_id *entry); static void __exit i810fb_remove_pci(struct pci_dev *dev); static int i810fb_resume(struct pci_dev *dev); -static int i810fb_suspend(struct pci_dev *dev, u32 state); +static int i810fb_suspend(struct pci_dev *dev, pm_message_t state); /* * voffset - framebuffer offset in MiB from aperture start address. In order for _