Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 5657
b: refs/heads/master
c: 43c3473
h: refs/heads/master
i:
  5655: ddd5205
v: v3
  • Loading branch information
Dominik Brodowski authored and Linus Torvalds committed Aug 5, 2005
1 parent 2c74a50 commit cd08502
Show file tree
Hide file tree
Showing 12 changed files with 102 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fec59a711eef002d4ef9eb8de09dd0a26986eb77
refs/heads/master: 43c34735524d5b1c9b9e5d63b49dd4c1b394bde4
16 changes: 16 additions & 0 deletions trunk/arch/alpha/kernel/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -350,8 +350,24 @@ pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
region->end = res->end - offset;
}

void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region)
{
struct pci_controller *hose = (struct pci_controller *)dev->sysdata;
unsigned long offset = 0;

if (res->flags & IORESOURCE_IO)
offset = hose->io_space->start;
else if (res->flags & IORESOURCE_MEM)
offset = hose->mem_space->start;

res->start = region->start + offset;
res->end = region->end + offset;
}

#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL(pcibios_resource_to_bus);
EXPORT_SYMBOL(pcibios_bus_to_resource);
#endif

int
Expand Down
17 changes: 17 additions & 0 deletions trunk/arch/arm/kernel/bios32.c
Original file line number Diff line number Diff line change
Expand Up @@ -447,9 +447,26 @@ pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
region->end = res->end - offset;
}

void __devinit
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region)
{
struct pci_sys_data *root = dev->sysdata;
unsigned long offset = 0;

if (res->flags & IORESOURCE_IO)
offset = root->io_offset;
if (res->flags & IORESOURCE_MEM)
offset = root->mem_offset;

res->start = region->start + offset;
res->end = region->end + offset;
}

#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL(pcibios_fixup_bus);
EXPORT_SYMBOL(pcibios_resource_to_bus);
EXPORT_SYMBOL(pcibios_bus_to_resource);
#endif

/*
Expand Down
15 changes: 15 additions & 0 deletions trunk/arch/ppc/kernel/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,21 @@ void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
}
EXPORT_SYMBOL(pcibios_resource_to_bus);

void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region)
{
unsigned long offset = 0;
struct pci_controller *hose = dev->sysdata;

if (hose && res->flags & IORESOURCE_IO)
offset = (unsigned long)hose->io_base_virt - isa_io_base;
else if (hose && res->flags & IORESOURCE_MEM)
offset = hose->pci_mem_offset;
res->start = region->start + offset;
res->end = region->end + offset;
}
EXPORT_SYMBOL(pcibios_bus_to_resource);

/*
* We need to avoid collisions with `mirrored' VGA ports
* and other strange ISA hardware, so we always want the
Expand Down
20 changes: 20 additions & 0 deletions trunk/arch/ppc64/kernel/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,28 @@ void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region
region->end = res->end - offset;
}

void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region)
{
unsigned long offset = 0;
struct pci_controller *hose = pci_bus_to_host(dev->bus);

if (!hose)
return;

if (res->flags & IORESOURCE_IO)
offset = (unsigned long)hose->io_base_virt - pci_io_base;

if (res->flags & IORESOURCE_MEM)
offset = hose->pci_mem_offset;

res->start = region->start + offset;
res->end = region->end + offset;
}

#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL(pcibios_resource_to_bus);
EXPORT_SYMBOL(pcibios_bus_to_resource);
#endif

/*
Expand Down
15 changes: 6 additions & 9 deletions trunk/drivers/pcmcia/yenta_socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -605,9 +605,8 @@ static int yenta_search_res(struct yenta_socket *socket, struct resource *res,

static void yenta_allocate_res(struct yenta_socket *socket, int nr, unsigned type, int addr_start, int addr_end)
{
struct pci_bus *bus;
struct resource *root, *res;
u32 start, end;
struct pci_bus_region region;
unsigned mask;

res = socket->dev->resource + PCI_BRIDGE_RESOURCES + nr;
Expand All @@ -620,15 +619,13 @@ static void yenta_allocate_res(struct yenta_socket *socket, int nr, unsigned typ
if (type & IORESOURCE_IO)
mask = ~3;

bus = socket->dev->subordinate;
res->name = bus->name;
res->name = socket->dev->subordinate->name;
res->flags = type;

start = config_readl(socket, addr_start) & mask;
end = config_readl(socket, addr_end) | ~mask;
if (start && end > start && !override_bios) {
res->start = start;
res->end = end;
region.start = config_readl(socket, addr_start) & mask;
region.end = config_readl(socket, addr_end) | ~mask;
if (region.start && region.end > region.start && !override_bios) {
pcibios_bus_to_resource(socket->dev, res, &region);
root = pci_find_parent_resource(socket->dev, res);
if (root && (request_resource(root, res) == 0))
return;
Expand Down
3 changes: 3 additions & 0 deletions trunk/include/asm-alpha/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,9 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
extern void pcibios_resource_to_bus(struct pci_dev *, struct pci_bus_region *,
struct resource *);

extern void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region);

#define pci_domain_nr(bus) ((struct pci_controller *)(bus)->sysdata)->index

static inline int pci_proc_domain(struct pci_bus *bus)
Expand Down
4 changes: 4 additions & 0 deletions trunk/include/asm-arm/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@ extern void
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
struct resource *res);

extern void
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region);

static inline void pcibios_add_platform_entries(struct pci_dev *dev)
{
}
Expand Down
8 changes: 8 additions & 0 deletions trunk/include/asm-generic/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
region->end = res->end;
}

static inline void
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region)
{
res->start = region->start;
res->end = region->end;
}

#define pcibios_scan_all_fns(a, b) 0

#ifndef HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ
Expand Down
4 changes: 4 additions & 0 deletions trunk/include/asm-parisc/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,10 @@ extern void
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
struct resource *res);

extern void
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region);

static inline void pcibios_add_platform_entries(struct pci_dev *dev)
{
}
Expand Down
4 changes: 4 additions & 0 deletions trunk/include/asm-ppc/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,10 @@ extern void
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
struct resource *res);

extern void
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region);

extern void pcibios_add_platform_entries(struct pci_dev *dev);

struct file;
Expand Down
4 changes: 4 additions & 0 deletions trunk/include/asm-ppc64/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ extern void
pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
struct resource *res);

extern void
pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
struct pci_bus_region *region);

extern int
unmap_bus_range(struct pci_bus *bus);

Expand Down

0 comments on commit cd08502

Please sign in to comment.