power.power_state is scheduled for removal. This patch (as1053) removes all uses of that field from drivers/usb. Almost all of them were write-only, the most significant exceptions being sl811-hcd.c and u132-hcd.c. Part of this patch was written by Pavel Machek. Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> CC: David Brownell <david-b@xxxxxxxxxxx> --- Index: usb-2.6/drivers/usb/core/driver.c =================================================================== --- usb-2.6.orig/drivers/usb/core/driver.c +++ usb-2.6/drivers/usb/core/driver.c @@ -797,8 +797,6 @@ static int usb_suspend_device(struct usb done: dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status); - if (status == 0) - udev->dev.power.power_state.event = msg.event; return status; } @@ -827,10 +825,8 @@ static int usb_resume_device(struct usb_ done: dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status); - if (status == 0) { + if (status == 0) udev->autoresume_disabled = 0; - udev->dev.power.power_state.event = PM_EVENT_ON; - } return status; } @@ -1183,8 +1179,7 @@ static int usb_resume_both(struct usb_de } } else { - /* Needed for setting udev->dev.power.power_state.event, - * for possible debugging message, and for reset_resume. */ + /* Needed for reset-resume */ status = usb_resume_device(udev); } @@ -1197,7 +1192,8 @@ static int usb_resume_both(struct usb_de done: dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status); - udev->reset_resume = 0; + if (!status) + udev->reset_resume = 0; return status; } Index: usb-2.6/drivers/usb/core/hcd-pci.c =================================================================== --- usb-2.6.orig/drivers/usb/core/hcd-pci.c +++ usb-2.6/drivers/usb/core/hcd-pci.c @@ -73,7 +73,6 @@ int usb_hcd_pci_probe(struct pci_dev *de if (pci_enable_device(dev) < 0) return -ENODEV; dev->current_state = PCI_D0; - dev->dev.power.power_state = PMSG_ON; if (!dev->irq) { dev_err(&dev->dev, @@ -302,8 +301,6 @@ int usb_hcd_pci_suspend(struct pci_dev * done: if (retval == 0) { - dev->dev.power.power_state = PMSG_SUSPEND; - #ifdef CONFIG_PPC_PMAC /* Disable ASIC clocks for USB */ if (machine_is(powermac)) { @@ -406,8 +403,6 @@ int usb_hcd_pci_resume(struct pci_dev *d pci_set_master(dev); pci_restore_state(dev); - dev->dev.power.power_state = PMSG_ON; - clear_bit(HCD_FLAG_SAW_IRQ, &hcd->flags); if (hcd->driver->resume) { Index: usb-2.6/drivers/usb/core/usb.h =================================================================== --- usb-2.6.orig/drivers/usb/core/usb.h +++ usb-2.6/drivers/usb/core/usb.h @@ -114,13 +114,11 @@ static inline int is_usb_device_driver(s static inline void mark_active(struct usb_interface *f) { f->is_active = 1; - f->dev.power.power_state.event = PM_EVENT_ON; } static inline void mark_quiesced(struct usb_interface *f) { f->is_active = 0; - f->dev.power.power_state.event = PM_EVENT_SUSPEND; } static inline int is_active(const struct usb_interface *f) Index: usb-2.6/drivers/usb/misc/usbtest.c =================================================================== --- usb-2.6.orig/drivers/usb/misc/usbtest.c +++ usb-2.6/drivers/usb/misc/usbtest.c @@ -1563,7 +1563,8 @@ usbtest_ioctl (struct usb_interface *int if (mutex_lock_interruptible(&dev->lock)) return -ERESTARTSYS; - if (intf->dev.power.power_state.event != PM_EVENT_ON) { + /* FIXME: What if a system sleep starts while a test is running? */ + if (!intf->is_active) { mutex_unlock(&dev->lock); return -EHOSTUNREACH; } Index: usb-2.6/drivers/usb/gadget/dummy_hcd.c =================================================================== --- usb-2.6.orig/drivers/usb/gadget/dummy_hcd.c +++ usb-2.6/drivers/usb/gadget/dummy_hcd.c @@ -900,7 +900,6 @@ static int dummy_udc_suspend (struct pla set_link_state (dum); spin_unlock_irq (&dum->lock); - pdev->dev.power.power_state = state; usb_hcd_poll_rh_status (dummy_to_hcd (dum)); return 0; } @@ -915,7 +914,6 @@ static int dummy_udc_resume (struct plat set_link_state (dum); spin_unlock_irq (&dum->lock); - pdev->dev.power.power_state = PMSG_ON; usb_hcd_poll_rh_status (dummy_to_hcd (dum)); return 0; } Index: usb-2.6/drivers/usb/gadget/omap_udc.c =================================================================== --- usb-2.6.orig/drivers/usb/gadget/omap_udc.c +++ usb-2.6/drivers/usb/gadget/omap_udc.c @@ -1265,8 +1265,6 @@ static int can_pullup(struct omap_udc *u static void pullup_enable(struct omap_udc *udc) { - udc->gadget.dev.parent->power.power_state = PMSG_ON; - udc->gadget.dev.power.power_state = PMSG_ON; UDC_SYSCON1_REG |= UDC_PULLUP_EN; if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx()) OTG_CTRL_REG |= OTG_BSESSVLD; @@ -3061,8 +3059,6 @@ static int omap_udc_suspend(struct platf omap_pullup(&udc->gadget, 0); } - udc->gadget.dev.power.power_state = PMSG_SUSPEND; - udc->gadget.dev.parent->power.power_state = PMSG_SUSPEND; return 0; } Index: usb-2.6/drivers/usb/host/ehci-dbg.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ehci-dbg.c +++ usb-2.6/drivers/usb/host/ehci-dbg.c @@ -670,7 +670,7 @@ static ssize_t fill_registers_buffer(str spin_lock_irqsave (&ehci->lock, flags); - if (buf->bus->controller->power.power_state.event) { + if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) { size = scnprintf (next, size, "bus %s, device %s (driver " DRIVER_VERSION ")\n" "%s\n" Index: usb-2.6/drivers/usb/host/ehci-ps3.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ehci-ps3.c +++ usb-2.6/drivers/usb/host/ehci-ps3.c @@ -125,7 +125,6 @@ static int ps3_ehci_probe(struct ps3_sys goto fail_irq; } - dev->core.power.power_state = PMSG_ON; dev->core.dma_mask = &dummy_mask; /* FIXME: for improper usb code */ hcd = usb_create_hcd(&ps3_ehci_hc_driver, &dev->core, dev->core.bus_id); Index: usb-2.6/drivers/usb/host/isp116x-hcd.c =================================================================== --- usb-2.6.orig/drivers/usb/host/isp116x-hcd.c +++ usb-2.6/drivers/usb/host/isp116x-hcd.c @@ -1442,11 +1442,6 @@ static int isp116x_bus_resume(struct usb break; case HCCONTROL_USB_OPER: spin_unlock_irq(&isp116x->lock); - /* Without setting power_state here the - SUSPENDED state won't be removed from - sysfs/usbN/power.state as a response to remote - wakeup. Maybe in the future. */ - hcd->self.root_hub->dev.power.power_state = PMSG_ON; return 0; default: /* HCCONTROL_USB_RESET: this may happen, when during @@ -1460,7 +1455,6 @@ static int isp116x_bus_resume(struct usb if ((isp116x->rhdesca & RH_A_NDP) == 2) isp116x_hub_control(hcd, SetPortFeature, USB_PORT_FEAT_POWER, 2, NULL, 0); - hcd->self.root_hub->dev.power.power_state = PMSG_ON; return 0; } @@ -1486,8 +1480,6 @@ static int isp116x_bus_resume(struct usb isp116x_write_reg32(isp116x, HCCONTROL, (val & ~HCCONTROL_HCFS) | HCCONTROL_USB_OPER); spin_unlock_irq(&isp116x->lock); - /* see analogous comment above */ - hcd->self.root_hub->dev.power.power_state = PMSG_ON; hcd->state = HC_STATE_RUNNING; return 0; @@ -1663,7 +1655,6 @@ static int __devinit isp116x_probe(struc static int isp116x_suspend(struct platform_device *dev, pm_message_t state) { VDBG("%s: state %x\n", __func__, state.event); - dev->dev.power.power_state = state; return 0; } @@ -1672,8 +1663,7 @@ static int isp116x_suspend(struct platfo */ static int isp116x_resume(struct platform_device *dev) { - VDBG("%s: state %x\n", __func__, dev->power.power_state.event); - dev->dev.power.power_state = PMSG_ON; + VDBG("%s\n", __func__); return 0; } Index: usb-2.6/drivers/usb/host/ohci-dbg.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ohci-dbg.c +++ usb-2.6/drivers/usb/host/ohci-dbg.c @@ -655,7 +655,7 @@ static ssize_t fill_registers_buffer(str hcd->product_desc, hcd_name); - if (bus->controller->power.power_state.event) { + if (!test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags)) { size -= scnprintf (next, size, "SUSPENDED (no register access)\n"); goto done; Index: usb-2.6/drivers/usb/host/ohci-ep93xx.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ohci-ep93xx.c +++ usb-2.6/drivers/usb/host/ohci-ep93xx.c @@ -177,7 +177,6 @@ static int ohci_hcd_ep93xx_drv_suspend(s ep93xx_stop_hc(&pdev->dev); hcd->state = HC_STATE_SUSPENDED; - pdev->dev.power.power_state = PMSG_SUSPEND; return 0; } @@ -193,7 +192,6 @@ static int ohci_hcd_ep93xx_drv_resume(st ohci->next_statechange = jiffies; ep93xx_start_hc(&pdev->dev); - pdev->dev.power.power_state = PMSG_ON; usb_hcd_resume_root_hub(hcd); return 0; Index: usb-2.6/drivers/usb/host/ohci-omap.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ohci-omap.c +++ usb-2.6/drivers/usb/host/ohci-omap.c @@ -505,7 +505,6 @@ static int ohci_omap_suspend(struct plat omap_ohci_clock_power(0); ohci_to_hcd(ohci)->state = HC_STATE_SUSPENDED; - dev->dev.power.power_state = PMSG_SUSPEND; return 0; } @@ -518,7 +517,6 @@ static int ohci_omap_resume(struct platf ohci->next_statechange = jiffies; omap_ohci_clock_power(1); - dev->dev.power.power_state = PMSG_ON; usb_hcd_resume_root_hub(platform_get_drvdata(dev)); return 0; } Index: usb-2.6/drivers/usb/host/ohci-ps3.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ohci-ps3.c +++ usb-2.6/drivers/usb/host/ohci-ps3.c @@ -127,7 +127,6 @@ static int ps3_ohci_probe(struct ps3_sys goto fail_irq; } - dev->core.power.power_state = PMSG_ON; dev->core.dma_mask = &dummy_mask; /* FIXME: for improper usb code */ hcd = usb_create_hcd(&ps3_ohci_hc_driver, &dev->core, dev->core.bus_id); Index: usb-2.6/drivers/usb/host/ohci-pxa27x.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ohci-pxa27x.c +++ usb-2.6/drivers/usb/host/ohci-pxa27x.c @@ -339,7 +339,6 @@ static int ohci_hcd_pxa27x_drv_suspend(s pxa27x_stop_hc(&pdev->dev); hcd->state = HC_STATE_SUSPENDED; - pdev->dev.power.power_state = PMSG_SUSPEND; return 0; } @@ -357,7 +356,6 @@ static int ohci_hcd_pxa27x_drv_resume(st if ((status = pxa27x_start_hc(&pdev->dev)) < 0) return status; - pdev->dev.power.power_state = PMSG_ON; usb_hcd_resume_root_hub(hcd); return 0; Index: usb-2.6/drivers/usb/host/ohci-sm501.c =================================================================== --- usb-2.6.orig/drivers/usb/host/ohci-sm501.c +++ usb-2.6/drivers/usb/host/ohci-sm501.c @@ -224,7 +224,6 @@ static int ohci_sm501_suspend(struct pla sm501_unit_power(dev->parent, SM501_GATE_USB_HOST, 0); ohci_to_hcd(ohci)->state = HC_STATE_SUSPENDED; - dev->power.power_state = PMSG_SUSPEND; return 0; } @@ -238,7 +237,6 @@ static int ohci_sm501_resume(struct plat ohci->next_statechange = jiffies; sm501_unit_power(dev->parent, SM501_GATE_USB_HOST, 1); - dev->power.power_state = PMSG_ON; usb_hcd_resume_root_hub(platform_get_drvdata(pdev)); return 0; } Index: usb-2.6/drivers/usb/host/r8a66597-hcd.c =================================================================== --- usb-2.6.orig/drivers/usb/host/r8a66597-hcd.c +++ usb-2.6/drivers/usb/host/r8a66597-hcd.c @@ -2106,13 +2106,11 @@ static struct hc_driver r8a66597_hc_driv #if defined(CONFIG_PM) static int r8a66597_suspend(struct platform_device *pdev, pm_message_t state) { - pdev->dev.power.power_state = state; return 0; } static int r8a66597_resume(struct platform_device *pdev) { - pdev->dev.power.power_state = PMSG_ON; return 0; } #else /* if defined(CONFIG_PM) */ Index: usb-2.6/drivers/usb/host/sl811-hcd.c =================================================================== --- usb-2.6.orig/drivers/usb/host/sl811-hcd.c +++ usb-2.6/drivers/usb/host/sl811-hcd.c @@ -93,12 +93,10 @@ 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 = PMSG_ON; } else { sl811->port1 = 0; sl811->irq_enable = 0; hcd->state = HC_STATE_HALT; - hcd->self.controller->power.power_state = PMSG_SUSPEND; } sl811->ctrl1 = 0; sl811_write(sl811, SL11H_IRQ_ENABLE, 0); @@ -1771,8 +1769,6 @@ sl811h_suspend(struct platform_device *d port_power(sl811, 0); break; } - if (retval == 0) - dev->dev.power.power_state = state; return retval; } @@ -1785,15 +1781,13 @@ sl811h_resume(struct platform_device *de /* with no "check to see if VBUS is still powered" board hook, * let's assume it'd only be powered to enable remote wakeup. */ - if (dev->dev.power.power_state.event == PM_EVENT_SUSPEND - || !device_can_wakeup(&hcd->self.root_hub->dev)) { + if (!sl811->port1 || !device_can_wakeup(&hcd->self.root_hub->dev)) { sl811->port1 = 0; port_power(sl811, 1); usb_root_hub_lost_power(hcd->self.root_hub); return 0; } - dev->dev.power.power_state = PMSG_ON; return sl811h_bus_resume(hcd); } Index: usb-2.6/drivers/usb/host/u132-hcd.c =================================================================== --- usb-2.6.orig/drivers/usb/host/u132-hcd.c +++ usb-2.6/drivers/usb/host/u132-hcd.c @@ -1534,11 +1534,9 @@ static void u132_power(struct u132 *u132 if (u132->power) return; u132->power = 1; - hcd->self.controller->power.power_state = PMSG_ON; } else { u132->power = 0; hcd->state = HC_STATE_HALT; - hcd->self.controller->power.power_state = PMSG_SUSPEND; } } @@ -3227,8 +3225,6 @@ static int u132_suspend(struct platform_ } break; } - if (retval == 0) - pdev->dev.power.power_state = state; return retval; } } @@ -3246,14 +3242,13 @@ static int u132_resume(struct platform_d return -ESHUTDOWN; } else { int retval = 0; - if (pdev->dev.power.power_state.event == PM_EVENT_SUSPEND) { + if (!u132->port[0].power) { int ports = MAX_U132_PORTS; while (ports-- > 0) { port_power(u132, ports, 1); } retval = 0; } else { - pdev->dev.power.power_state = PMSG_ON; retval = u132_bus_resume(hcd); } return retval; _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm