@ -574,8 +574,7 @@ static const struct pci_platform_pm_ops *pci_platform_pm;
int pci_set_platform_pm ( const struct pci_platform_pm_ops * ops )
{
if ( ! ops - > is_manageable | | ! ops - > set_state | | ! ops - > get_state | |
! ops - > choose_state | | ! ops - > sleep_wake | | ! ops - > run_wake | |
! ops - > need_resume )
! ops - > choose_state | | ! ops - > set_wakeup | | ! ops - > need_resume )
return - EINVAL ;
pci_platform_pm = ops ;
return 0 ;
@ -603,16 +602,10 @@ static inline pci_power_t platform_pci_choose_state(struct pci_dev *dev)
pci_platform_pm - > choose_state ( dev ) : PCI_POWER_ERROR ;
}
static inline int platform_pci_sleep_wake ( struct pci_dev * dev , bool enable )
static inline int platform_pci_set_wakeup ( struct pci_dev * dev , bool enable )
{
return pci_platform_pm ?
pci_platform_pm - > sleep_wake ( dev , enable ) : - ENODEV ;
}
static inline int platform_pci_run_wake ( struct pci_dev * dev , bool enable )
{
return pci_platform_pm ?
pci_platform_pm - > run_wake ( dev , enable ) : - ENODEV ;
pci_platform_pm - > set_wakeup ( dev , enable ) : - ENODEV ;
}
static inline bool platform_pci_need_resume ( struct pci_dev * dev )
@ -1889,10 +1882,9 @@ void pci_pme_active(struct pci_dev *dev, bool enable)
EXPORT_SYMBOL ( pci_pme_active ) ;
/**
* __ pci_enable_wake - enable PCI device as wakeup event source
* pci_enable_wake - enable PCI device as wakeup event source
* @ dev : PCI device affected
* @ state : PCI state from which device will issue wakeup events
* @ runtime : True if the events are to be generated at run time
* @ enable : True to enable event generation ; false to disable
*
* This enables the device as a wakeup event source , or disables it .
@ -1908,14 +1900,10 @@ EXPORT_SYMBOL(pci_pme_active);
* Error code depending on the platform is returned if both the platform and
* the native mechanism fail to enable the generation of wake - up events
*/
int __pci_enable_wake ( struct pci_dev * dev , pci_power_t state ,
bool runtime , bool enable )
int pci_enable_wake ( struct pci_dev * dev , pci_power_t state , bool enable )
{
int ret = 0 ;
if ( enable & & ! runtime & & ! device_may_wakeup ( & dev - > dev ) )
return - EINVAL ;
/*
* Don ' t do the same thing twice in a row for one device , but restore
* PME Enable in case it has been updated by config space restoration .
@ -1938,24 +1926,20 @@ int __pci_enable_wake(struct pci_dev *dev, pci_power_t state,
pci_pme_active ( dev , true ) ;
else
ret = 1 ;
error = runtime ? platform_pci_run_wake ( dev , true ) :
platform_pci_sleep_wake ( dev , true ) ;
error = platform_pci_set_wakeup ( dev , true ) ;
if ( ret )
ret = error ;
if ( ! ret )
dev - > wakeup_prepared = true ;
} else {
if ( runtime )
platform_pci_run_wake ( dev , false ) ;
else
platform_pci_sleep_wake ( dev , false ) ;
platform_pci_set_wakeup ( dev , false ) ;
pci_pme_active ( dev , false ) ;
dev - > wakeup_prepared = false ;
}
return ret ;
}
EXPORT_SYMBOL ( __ pci_enable_wake) ;
EXPORT_SYMBOL ( pci_enable_wake ) ;
/**
* pci_wake_from_d3 - enable / disable device to wake up from D3_hot or D3_cold
@ -2097,12 +2081,12 @@ int pci_finish_runtime_suspend(struct pci_dev *dev)
dev - > runtime_d3cold = target_state = = PCI_D3cold ;
__ pci_enable_wake( dev , target_state , tru e , pci_dev_run_wake ( dev ) ) ;
pci_enable_wake ( dev , target_state , pci_dev_run_wake ( dev ) ) ;
error = pci_set_power_state ( dev , target_state ) ;
if ( error ) {
__ pci_enable_wake( dev , target_state , tru e , false ) ;
pci_enable_wake ( dev , target_state , false ) ;
dev - > runtime_d3cold = false ;
}