Loading...

linux-pm@lists.osdl.org

[Prev] Thread [Next]  |  [Prev] Date [Next]

Re: [linux-pm] [PATCH 4/5]PCIe native PME support Matthew Garrett Wed Aug 19 05:03:05 2009

On Wed, Aug 19, 2009 at 03:24:19PM +0800, Shaohua Li wrote:

> +static inline void npme_enable_pme(struct pci_dev *pdev, bool enable)
> +{
> +     int pos;
> +     u16 rtctl;
> +
> +     pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
> +
> +     pci_read_config_word(pdev, pos + PCI_EXP_RTCTL, &rtctl);
> +     if (!enable)
> +             rtctl &= ~PCI_EXP_RTCTL_PMEIE;
> +     else
> +             rtctl |= PCI_EXP_RTCTL_PMEIE;
> +     pci_write_config_word(pdev, pos + PCI_EXP_RTCTL, rtctl);
> +}

This seems to duplicate the existing pci_pme_active() function?

> +static inline void npme_clear_pme(struct pci_dev *pdev)
> +{
> +     int pos;
> +     u32 rtsta;
> +
> +     pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
> +
> +     pci_read_config_dword(pdev, pos + PCI_EXP_RTSTA, &rtsta);
> +     rtsta |= PCI_EXP_RTSTA_PME;
> +     pci_write_config_dword(pdev, pos + PCI_EXP_RTSTA, rtsta);
> +}

Ditto.

> +static bool npme_pme_target(struct pci_dev *target)
> +{
> +     bool ret = false;
> +     if (target->dev.bus->pm && target->dev.bus->pm->wakeup_event)
> +             ret = target->dev.bus->pm->wakeup_event(&target->dev);
> +     return ret;
> +}

Is there any situation in which we wouldn't want to just perform a 
runtime resume of the device here?

-- 
Matthew Garrett | [EMAIL PROTECTED]
_______________________________________________
linux-pm mailing list
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/linux-pm