• Vaibhav Gupta's avatar
    mtip32xx: convert to generic power management · cd97b7e0
    Vaibhav Gupta authored
    Convert mtip32xx from legacy PCI power management to the generic power
    management framework.
    
    Previously, mtip32xx used legacy PCI power management, where
    mtip_pci_suspend() and mtip_pci_resume() were responsible for both
    device-specific things and generic PCI things:
    
      mtip_pci_suspend
        mtip_block_suspend(dd)              <-- device-specific
        pci_save_state(pdev)                <-- generic PCI
        pci_set_power_state(pdev, pci_choose_state(pdev, state))
    
      mtip_pci_resume
        pci_set_power_state(PCI_D0)         <-- generic PCI
        pci_restore_state(pdev)             <-- generic PCI
        pcim_enable_device(pdev)            <-- generic PCI
        pci_set_master(pdev)                <-- generic PCI
        mtip_block_resume(dd)               <-- device-specific
    
    With generic power management, the PCI bus PM methods do the generic PCI
    things, and the driver needs only the device-specific part, i.e.,
    
      suspend_devices_and_enter
        dpm_suspend_start(PMSG_SUSPEND)
          pci_pm_suspend                    # PCI bus .suspend() method
            mtip_pci_suspend                # dev->driver->pm->suspend
              mtip_block_suspend            <-- device-specific
        suspend_enter
          dpm_suspend_noirq(PMSG_SUSPEND)
            pci_pm_suspend_noirq            # PCI bus .suspend_noirq() method
              pci_save_state                <-- generic PCI
              pci_prepare_to_sleep          <-- generic PCI
                pci_set_power_state
        ...
        dpm_resume_end(PMSG_RESUME)
          pci_pm_resume                     # PCI bus .resume() method
            pci_restore_standard_config
              pci_set_power_state(PCI_D0)   <-- generic PCI
              pci_restore_state             <-- generic PCI
            mtip_pci_resume                 # dev->driver->pm->resume
              mtip_block_resume             <-- device-specific
    
    [bhelgaas: commit log]
    
    Link: https://lore.kernel.org/r/20210114115423.52414-2-vaibhavgupta40@gmail.comSigned-off-by: default avatarVaibhav Gupta <vaibhavgupta40@gmail.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Link: https://lore.kernel.org/r/20211208192449.146076-4-helgaas@kernel.orgSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    cd97b7e0
mtip32xx.c 105 KB