diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 08:41:41 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 13:07:53 -0400 |
| commit | 816724e65c72a90a44fbad0ef0b59b186c85fa90 (patch) | |
| tree | 421fa29aedff988e392f92780637553e275d37a0 /drivers/pci/setup-res.c | |
| parent | 70ac4385a13f78bc478f26d317511893741b05bd (diff) | |
| parent | d384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff) | |
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
Conflicts:
fs/nfs/inode.c
fs/super.c
Fix conflicts between patch 'NFS: Split fs/nfs/inode.c' and patch
'VFS: Permit filesystem to override root dentry on mount'
Diffstat (limited to 'drivers/pci/setup-res.c')
| -rw-r--r-- | drivers/pci/setup-res.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c index ea9277b7f899..577f4b55c46d 100644 --- a/drivers/pci/setup-res.c +++ b/drivers/pci/setup-res.c | |||
| @@ -155,6 +155,46 @@ int pci_assign_resource(struct pci_dev *dev, int resno) | |||
| 155 | return ret; | 155 | return ret; |
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | #ifdef CONFIG_EMBEDDED | ||
| 159 | int pci_assign_resource_fixed(struct pci_dev *dev, int resno) | ||
| 160 | { | ||
| 161 | struct pci_bus *bus = dev->bus; | ||
| 162 | struct resource *res = dev->resource + resno; | ||
| 163 | unsigned int type_mask; | ||
| 164 | int i, ret = -EBUSY; | ||
| 165 | |||
| 166 | type_mask = IORESOURCE_IO | IORESOURCE_MEM | IORESOURCE_PREFETCH; | ||
| 167 | |||
| 168 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { | ||
| 169 | struct resource *r = bus->resource[i]; | ||
| 170 | if (!r) | ||
| 171 | continue; | ||
| 172 | |||
| 173 | /* type_mask must match */ | ||
| 174 | if ((res->flags ^ r->flags) & type_mask) | ||
| 175 | continue; | ||
| 176 | |||
| 177 | ret = request_resource(r, res); | ||
| 178 | |||
| 179 | if (ret == 0) | ||
| 180 | break; | ||
| 181 | } | ||
| 182 | |||
| 183 | if (ret) { | ||
| 184 | printk(KERN_ERR "PCI: Failed to allocate %s resource " | ||
| 185 | "#%d:%llx@%llx for %s\n", | ||
| 186 | res->flags & IORESOURCE_IO ? "I/O" : "mem", | ||
| 187 | resno, (unsigned long long)(res->end - res->start + 1), | ||
| 188 | (unsigned long long)res->start, pci_name(dev)); | ||
| 189 | } else if (resno < PCI_BRIDGE_RESOURCES) { | ||
| 190 | pci_update_resource(dev, res, resno); | ||
| 191 | } | ||
| 192 | |||
| 193 | return ret; | ||
| 194 | } | ||
| 195 | EXPORT_SYMBOL_GPL(pci_assign_resource_fixed); | ||
| 196 | #endif | ||
| 197 | |||
| 158 | /* Sort resources by alignment */ | 198 | /* Sort resources by alignment */ |
| 159 | void __devinit | 199 | void __devinit |
| 160 | pdev_sort_resources(struct pci_dev *dev, struct resource_list *head) | 200 | pdev_sort_resources(struct pci_dev *dev, struct resource_list *head) |
