Messages in this thread | | | Date | Fri, 12 Nov 2004 16:35:30 +0100 | From | Pavel Machek <> | Subject | Re: [linux-pm] Adapt drivers to type-safe pci |
| |
Hi!
> > This adapts few drivers to type-safe pci powermanagment. I introduced > > device_to_pci_state helper that will be usefull to few drivers... Does > > it look okay? > > I'd rather have something like the attached patch. > Fixed policy mappings are generically broken; what > about devices that don't support PCI_D2?
Point taken, this function is probably too big to be in header.
> This should I guess use the new "pci_power_t", but > I'm not that current yet.
I'd still like this function to return suitable state (and do nothing else), to make converting drivers easier.
For now suspend() only gets 0 or 3; I'd rather not change code for now. Do we really enter PCI_D1 on standby? I believe PCI transitions are fast enough to enter PCI_D3hot even for standby / suspend-to-ram.
Pavel
> +void > +pci_choose_state(struct pci_dev *pdev, suspend_state_t sleepstate) > +{ > + int pm, state; > + u16 pmc; > + > + /* nothing to do for legacy PCI devices */ > + pm = pci_find_capability(pdev, PCI_CAP_ID_PM); > + if (!pm) > + return; > + > + /* map to a PCI PM state this device supports > + * FIXME ACPI may know what states to use; we should probably > + * prefer that policy to this one. > + */ > + state = 3; > + switch (sleepstate) { > + case PM_SUSPEND_ON: > + state = 0; > + break; > + case PM_SUSPEND_STANDBY: > + case PM_SUSPEND_MEM: > + pci_read_config_word(pdev, pm + PCI_PM_PMC, &pmc); > + if (sleepstate == PM_SUSPEND_STANDBY > + && (pmc & PCI_PM_CAP_D1) != 0) > + state = 1; > + else if ((pmc & PCI_PM_CAP_D2) != 0) > + state = 2; > + break; > + } > + > + /* maybe go to a deeper power state */ > + if (pdev->current_state < state) > + pci_set_power_state(pdev, state); > +} > +EXPORT_SYMBOL(pci_choose_state); > > /** > * pci_save_state - save the PCI configuration space of a device before suspending
-- People were complaining that M$ turns users into beta-testers... ...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl! - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |