.is_manageable = mid_pci_power_manageable, .set_state = mid_pci_set_power_state, .choose_state = mid_pci_choose_state, .sleep_wake = mid_pci_sleep_wake, .run_wake = mid_pci_run_wake, .need_resume = mid_pci_need_resume, }; #define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, } /* * This table should be in sync with the one in * arch/x86/platform/intel-mid/pwr.c. */ static const struct x86_cpu_id lpss_cpu_ids[] = { ICPU(INTEL_FAM6_ATOM_PENWELL), ICPU(INTEL_FAM6_ATOM_MERRIFIELD), {} }; 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);
#define GPE0A_PME_B0_VIRT_GPIO_PIN 2 #define GPE0A_PME_B0_STS_BIT BIT(13) #define GPE0A_PME_B0_EN_BIT BIT(13) #define GPE0A_STS_PORT 0x420 #define GPE0A_EN_PORT 0x428 #define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, } static const struct x86_cpu_id int0002_cpu_ids[] = { /* * Limit ourselves to Cherry Trail for now, until testing shows we * need to handle the INT0002 device on Baytrail too. * ICPU(INTEL_FAM6_ATOM_SILVERMONT1), * Valleyview, Bay Trail * */ ICPU(INTEL_FAM6_ATOM_AIRMONT), /* Braswell, Cherry Trail */ {} }; /* * As this is not a real GPIO at all, but just a hack to model an event in * ACPI the get / set functions are dummy functions. */ static int int0002_gpio_get(struct gpio_chip *chip, unsigned int offset) { return 0; } static void int0002_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, } #define ENTRY(hid, uid, cpu_models, dmi...) { \ { { hid, }, {} }, \ { cpu_models, {} }, \ { { .matches = dmi }, {} }, \ uid, \ } static const struct always_present_id always_present_ids[] = { /* * Bay / Cherry Trail PWM directly poked by GPU driver in win10, * but Linux uses a separate PWM driver, harmless if not used. */ ENTRY("80860F09", "1", ICPU(INTEL_FAM6_ATOM_SILVERMONT), {}), ENTRY("80862288", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {}), /* Lenovo Yoga Book uses PWM2 for keyboard backlight control */ ENTRY("80862289", "2", ICPU(INTEL_FAM6_ATOM_AIRMONT), { DMI_MATCH(DMI_PRODUCT_NAME, "Lenovo YB1-X9"), }), /* * The INT0002 device is necessary to clear wakeup interrupt sources * on Cherry Trail devices, without it we get nobody cared IRQ msgs. */ ENTRY("INT0002", "1", ICPU(INTEL_FAM6_ATOM_AIRMONT), {}), /* * On the Dell Venue 11 Pro 7130 and 7139, the DSDT hides * the touchscreen ACPI device until a certain time * after _SB.PCI0.GFX0.LCD.LCD1._ON gets called has passed
return 0; } #else static inline int pmc_core_dbgfs_register(struct pmc_dev *pmcdev) { return 0; } static inline void pmc_core_dbgfs_unregister(struct pmc_dev *pmcdev) { } #endif /* CONFIG_DEBUG_FS */ static const struct x86_cpu_id intel_pmc_core_ids[] = { ICPU(INTEL_FAM6_SKYLAKE_MOBILE, &spt_reg_map), ICPU(INTEL_FAM6_SKYLAKE_DESKTOP, &spt_reg_map), ICPU(INTEL_FAM6_KABYLAKE_MOBILE, &spt_reg_map), ICPU(INTEL_FAM6_KABYLAKE_DESKTOP, &spt_reg_map), ICPU(INTEL_FAM6_CANNONLAKE_MOBILE, &cnp_reg_map), {} }; MODULE_DEVICE_TABLE(x86cpu, intel_pmc_core_ids); static const struct pci_device_id pmc_pci_ids[] = { { PCI_VDEVICE(INTEL, SPT_PMC_PCI_DEVICE_ID), 0}, { 0, }, }; static int __init pmc_core_probe(void)