--- zzzz-none-000/linux-2.6.39.4/drivers/pci/pci.c 2011-08-03 19:43:28.000000000 +0000 +++ puma6-arm-6490-729/linux-2.6.39.4/drivers/pci/pci.c 2021-11-10 13:23:10.000000000 +0000 @@ -6,6 +6,12 @@ * * Copyright 1997 -- 2000 Martin Mares */ +/****************************************************************** + + Includes Intel Corporation's changes/modifications dated: 07/2011. + Changed/modified portions - Copyright(c) 2011, Intel Corporation. + +******************************************************************/ #include #include @@ -749,6 +755,14 @@ return error; } +#ifdef CONFIG_ARCH_GEN3 +static int pci_pmcap_exception(struct pci_dev *dev) +{ + if((dev->vendor == 0x8086) && (dev->device == 0x070b)) + return 1; + return 0; +} +#endif /** * pci_choose_state - Choose the power state of a PCI device @@ -764,9 +778,13 @@ { pci_power_t ret; +#ifdef CONFIG_ARCH_GEN3 + if ((!pci_pmcap_exception(dev)) && (!pci_find_capability(dev, PCI_CAP_ID_PM))) + return PCI_D0; +#else if (!pci_find_capability(dev, PCI_CAP_ID_PM)) return PCI_D0; - +#endif ret = platform_pci_choose_state(dev); if (ret != PCI_POWER_ERROR) return ret; @@ -1530,6 +1548,28 @@ pci_power_t pci_target_state(struct pci_dev *dev) { pci_power_t target_state = PCI_D3hot; +#ifdef CONFIG_ARCH_GEN3 + unsigned int id; +#endif + +#ifdef CONFIG_ARCH_GEN3 + intelce_get_soc_info(&id, NULL); + + if (CE2600_SOC_DEVICE_ID == id) { + if (((PCI_VENDOR_ID_INTEL == dev->vendor) && (CE2600_SOC_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (PCI_DEVICE_ID_AVM_B1 == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_EMMC_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_SFLASH_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_GPIO_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_CP_TOP_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_DOCSIS_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_DOCSIS_DMA_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_L2_SWITCH_PCI_DEVICE_ID == dev->device)) || + ((PCI_VENDOR_ID_INTEL == dev->vendor) && (INTELCE_HWMUTEX_PCI_DEVICE_ID == dev->device))) { + return PCI_D0; + } + } +#endif if (platform_pci_power_manageable(dev)) { /*