--- zzzz-none-000/linux-2.4.17/drivers/pci/pci.c 2001-11-21 05:53:29.000000000 +0000 +++ sangam-fb-322/linux-2.4.17/drivers/pci/pci.c 2004-11-24 13:23:18.000000000 +0000 @@ -1,5 +1,5 @@ /* - * $Id: pci.c,v 1.91 1999/01/21 13:34:01 davem Exp $ + * $Id: pci.c,v 1.1.1.1 2003/06/23 22:18:31 jharrell Exp $ * * PCI Bus Services, see include/linux/pci.h for further explanation. * @@ -356,6 +356,50 @@ return 0; } +#if defined(__arm__) +int +pci_compare_state(struct pci_dev *dev, u32 *buffer) +{ + int i; + unsigned int temp; + + if (buffer) { + for (i = 0; i < 16; i++) { + pci_read_config_dword(dev,i*4,&temp); + if (temp!=buffer[i]) + return 1; + } + } + return 0; +} + +int pci_generic_suspend_save(struct pci_dev *pdev, u32 state) +{ + if (pdev) + pci_save_state(pdev,pdev->saved_state); + return 0; +} + +int pci_generic_resume_restore(struct pci_dev *pdev) +{ + if (pdev) + pci_restore_state(pdev,pdev->saved_state); + return 0; +} + +int pci_generic_resume_compare(struct pci_dev *pdev) +{ + int retval=0; + if (pdev) + retval = pci_compare_state(pdev,pdev->saved_state); + return retval; +} + +EXPORT_SYMBOL(pci_generic_suspend_save); +EXPORT_SYMBOL(pci_generic_resume_restore); +EXPORT_SYMBOL(pci_generic_resume_compare); +#endif + /** * pci_enable_device - Initialize device before it's used by a driver. * @dev: PCI device to be initialized @@ -914,13 +958,23 @@ l = 0; if ((l & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_MEMORY) { res->start = l & PCI_BASE_ADDRESS_MEM_MASK; +#if defined(__arm__) + res->flags |= l & ~PCI_BASE_ADDRESS_MEM_MASK; +#endif sz = pci_size(sz, PCI_BASE_ADDRESS_MEM_MASK); } else { res->start = l & PCI_BASE_ADDRESS_IO_MASK; +#if defined(__arm__) + res->flags |= l & ~PCI_BASE_ADDRESS_IO_MASK; +#endif sz = pci_size(sz, PCI_BASE_ADDRESS_IO_MASK & 0xffff); } res->end = res->start + (unsigned long) sz; +#if !defined(__arm__) res->flags |= (l & 0xf) | pci_calc_resource_flags(l); +#else + res->flags |= pci_calc_resource_flags(l); +#endif if ((l & (PCI_BASE_ADDRESS_SPACE | PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == (PCI_BASE_ADDRESS_SPACE_MEMORY | PCI_BASE_ADDRESS_MEM_TYPE_64)) { pci_read_config_dword(dev, reg+4, &l);