2018-01-26 21:50:27 +03:00
// SPDX-License-Identifier: GPL-2.0
2016-06-14 21:29:45 +03:00
/*
* Intel MID platform PM support
*
* Copyright ( C ) 2016 , Intel Corporation
*
* Author : Andy Shevchenko < andriy . shevchenko @ linux . intel . com >
*/
# include <linux/init.h>
# include <linux/pci.h>
# include <asm/cpu_device_id.h>
# include <asm/intel-family.h>
# include <asm/intel-mid.h>
# include "pci.h"
static bool mid_pci_power_manageable ( struct pci_dev * dev )
{
return true ;
}
static int mid_pci_set_power_state ( struct pci_dev * pdev , pci_power_t state )
{
return intel_mid_pci_set_power_state ( pdev , state ) ;
}
2016-10-23 14:55:34 +03:00
static pci_power_t mid_pci_get_power_state ( struct pci_dev * pdev )
{
return intel_mid_pci_get_power_state ( pdev ) ;
}
2016-06-14 21:29:45 +03:00
static pci_power_t mid_pci_choose_state ( struct pci_dev * pdev )
{
return PCI_D3hot ;
}
2017-06-24 02:57:35 +03:00
static int mid_pci_wakeup ( struct pci_dev * dev , bool enable )
2016-06-14 21:29:45 +03:00
{
return 0 ;
}
static bool mid_pci_need_resume ( struct pci_dev * dev )
{
return false ;
}
2016-12-12 18:45:47 +03:00
static const struct pci_platform_pm_ops mid_pci_platform_pm = {
2016-06-14 21:29:45 +03:00
. is_manageable = mid_pci_power_manageable ,
. set_state = mid_pci_set_power_state ,
2016-10-23 14:55:34 +03:00
. get_state = mid_pci_get_power_state ,
2016-06-14 21:29:45 +03:00
. choose_state = mid_pci_choose_state ,
2017-06-24 02:57:35 +03:00
. set_wakeup = mid_pci_wakeup ,
2016-06-14 21:29:45 +03:00
. need_resume = mid_pci_need_resume ,
} ;
2016-09-08 13:32:31 +03:00
/*
* This table should be in sync with the one in
* arch / x86 / platform / intel - mid / pwr . c .
*/
2016-06-14 21:29:45 +03:00
static const struct x86_cpu_id lpss_cpu_ids [ ] = {
2020-03-20 16:14:02 +03:00
X86_MATCH_INTEL_FAM6_MODEL ( ATOM_SALTWELL_MID , NULL ) ,
X86_MATCH_INTEL_FAM6_MODEL ( ATOM_SILVERMONT_MID , NULL ) ,
2016-06-14 21:29:45 +03:00
{ }
} ;
static int __init mid_pci_init ( void )
{
const struct x86_cpu_id * id ;
id = x86_match_cpu ( lpss_cpu_ids ) ;
if ( id )
pci_set_platform_pm ( & mid_pci_platform_pm ) ;
return 0 ;
}
arch_initcall ( mid_pci_init ) ;