* [PATCH 8/8] pci and yenta: pcibios_bus_to_resource
@ 2005-07-11 22:21 Dominik Brodowski
2005-07-11 22:28 ` Russell King
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Dominik Brodowski @ 2005-07-11 22:21 UTC (permalink / raw)
To: akpm; +Cc: linux-pcmcia, linux-kernel, linux-pci, greg
In yenta_socket, we default to using the resource setting of the CardBus
bridge. However, this is a PCI-bus-centric view of resources and thus
needs to be converted to generic resources first. Therefore, add a call
to pcibios_bus_to_resource() call in between. This function is a mere
wrapper on x86 and friends, however on some others it already exists, is
added in this patch (alpha, arm, ppc, ppc64) or still needs to be
provided (parisc -- where is its pcibios_resource_to_bus() ?).
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
---
arch/alpha/kernel/pci.c | 16 ++++++++++++++++
arch/arm/kernel/bios32.c | 17 +++++++++++++++++
arch/ppc/kernel/pci.c | 15 +++++++++++++++
arch/ppc64/kernel/pci.c | 20 ++++++++++++++++++++
drivers/pcmcia/yenta_socket.c | 15 ++++++---------
include/asm-alpha/pci.h | 3 +++
include/asm-arm/pci.h | 4 ++++
include/asm-generic/pci.h | 8 ++++++++
include/asm-parisc/pci.h | 4 ++++
include/asm-ppc/pci.h | 4 ++++
include/asm-ppc64/pci.h | 4 ++++
11 files changed, 101 insertions(+), 9 deletions(-)
Index: 2.6.13-rc2-git3/include/asm-generic/pci.h
===================================================================
--- 2.6.13-rc2-git3.orig/include/asm-generic/pci.h
+++ 2.6.13-rc2-git3/include/asm-generic/pci.h
@@ -22,6 +22,14 @@ pcibios_resource_to_bus(struct pci_dev *
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
Index: 2.6.13-rc2-git3/drivers/pcmcia/yenta_socket.c
===================================================================
--- 2.6.13-rc2-git3.orig/drivers/pcmcia/yenta_socket.c
+++ 2.6.13-rc2-git3/drivers/pcmcia/yenta_socket.c
@@ -605,9 +605,8 @@ static int yenta_search_res(struct yenta
static int 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;
@@ -620,15 +619,13 @@ static int yenta_allocate_res(struct yen
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, ®ion);
root = pci_find_parent_resource(socket->dev, res);
if (root && (request_resource(root, res) == 0))
return 0;
Index: 2.6.13-rc2-git3/arch/arm/kernel/bios32.c
===================================================================
--- 2.6.13-rc2-git3.orig/arch/arm/kernel/bios32.c
+++ 2.6.13-rc2-git3/arch/arm/kernel/bios32.c
@@ -447,9 +447,26 @@ pcibios_resource_to_bus(struct pci_dev *
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_resources);
#endif
/*
Index: 2.6.13-rc2-git3/include/asm-alpha/pci.h
===================================================================
--- 2.6.13-rc2-git3.orig/include/asm-alpha/pci.h
+++ 2.6.13-rc2-git3/include/asm-alpha/pci.h
@@ -251,6 +251,9 @@ static inline int pci_get_legacy_ide_irq
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)
Index: 2.6.13-rc2-git3/include/asm-arm/pci.h
===================================================================
--- 2.6.13-rc2-git3.orig/include/asm-arm/pci.h
+++ 2.6.13-rc2-git3/include/asm-arm/pci.h
@@ -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)
{
}
Index: 2.6.13-rc2-git3/arch/alpha/kernel/pci.c
===================================================================
--- 2.6.13-rc2-git3.orig/arch/alpha/kernel/pci.c
+++ 2.6.13-rc2-git3/arch/alpha/kernel/pci.c
@@ -350,8 +350,24 @@ pcibios_resource_to_bus(struct pci_dev *
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
Index: 2.6.13-rc2-git3/include/asm-parisc/pci.h
===================================================================
--- 2.6.13-rc2-git3.orig/include/asm-parisc/pci.h
+++ 2.6.13-rc2-git3/include/asm-parisc/pci.h
@@ -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)
{
}
Index: 2.6.13-rc2-git3/include/asm-ppc/pci.h
===================================================================
--- 2.6.13-rc2-git3.orig/include/asm-ppc/pci.h
+++ 2.6.13-rc2-git3/include/asm-ppc/pci.h
@@ -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;
Index: 2.6.13-rc2-git3/arch/ppc/kernel/pci.c
===================================================================
--- 2.6.13-rc2-git3.orig/arch/ppc/kernel/pci.c
+++ 2.6.13-rc2-git3/arch/ppc/kernel/pci.c
@@ -160,6 +160,21 @@ void pcibios_resource_to_bus(struct pci_
}
EXPORT_SYMBOL(pcibios_resource_to_bus);
+void pcibios_resource_to_bus(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
Index: 2.6.13-rc2-git3/include/asm-ppc64/pci.h
===================================================================
--- 2.6.13-rc2-git3.orig/include/asm-ppc64/pci.h
+++ 2.6.13-rc2-git3/include/asm-ppc64/pci.h
@@ -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);
Index: 2.6.13-rc2-git3/arch/ppc64/kernel/pci.c
===================================================================
--- 2.6.13-rc2-git3.orig/arch/ppc64/kernel/pci.c
+++ 2.6.13-rc2-git3/arch/ppc64/kernel/pci.c
@@ -108,8 +108,28 @@ void pcibios_resource_to_bus(struct pci
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
/*
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource
2005-07-11 22:21 [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Dominik Brodowski
@ 2005-07-11 22:28 ` Russell King
2005-07-18 19:42 ` Grant Grundler
2005-07-26 23:50 ` [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Greg KH
2 siblings, 0 replies; 7+ messages in thread
From: Russell King @ 2005-07-11 22:28 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: akpm, linux-pcmcia, linux-kernel, linux-pci, greg
On Tue, Jul 12, 2005 at 12:21:38AM +0200, Dominik Brodowski wrote:
> --- 2.6.13-rc2-git3.orig/arch/arm/kernel/bios32.c
> +++ 2.6.13-rc2-git3/arch/arm/kernel/bios32.c
> @@ -447,9 +447,26 @@ pcibios_resource_to_bus(struct pci_dev *
> region->end = res->end - offset;
> }
>
> +void __devinit
> +pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
>...
> EXPORT_SYMBOL(pcibios_fixup_bus);
> EXPORT_SYMBOL(pcibios_resource_to_bus);
> +EXPORT_SYMBOL(pcibios_bus_to_resources);
Please look carefully at the above change. I'd appreciate it if this
could be fixed. 8)
Thanks.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource
2005-07-11 22:21 [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Dominik Brodowski
2005-07-11 22:28 ` Russell King
@ 2005-07-18 19:42 ` Grant Grundler
2005-07-23 19:54 ` [PATCH] pcibios_bus_to_resource for parisc [Was: Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource] Dominik Brodowski
2005-07-26 23:50 ` [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Greg KH
2 siblings, 1 reply; 7+ messages in thread
From: Grant Grundler @ 2005-07-18 19:42 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: akpm, linux-pcmcia, linux-kernel, linux-pci, greg
On Tue, Jul 12, 2005 at 12:21:38AM +0200, Dominik Brodowski wrote:
> In yenta_socket, we default to using the resource setting of the CardBus
> bridge. However, this is a PCI-bus-centric view of resources and thus
> needs to be converted to generic resources first. Therefore, add a call
> to pcibios_bus_to_resource() call in between. This function is a mere
> wrapper on x86 and friends, however on some others it already exists, is
> added in this patch (alpha, arm, ppc, ppc64) or still needs to be
> provided (parisc -- where is its pcibios_resource_to_bus() ?).
in arch/parisc/kernel/pci.c?
At least, it seems to be present in the 2.6.13-rc1 tree
on cvs.parisc-linux.org tree.
Arnaldo De Carmelo had add-on pci-pcmcia cards working in his
a500 (64-bit w/IOMMU PA-RISC) last year. ISTR a few other people have
similar cards working for on B180 workstation (32-bit w/o IOMMU PARISC).
grant
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] pcibios_bus_to_resource for parisc [Was: Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource]
2005-07-18 19:42 ` Grant Grundler
@ 2005-07-23 19:54 ` Dominik Brodowski
2005-07-25 1:28 ` Grant Grundler
0 siblings, 1 reply; 7+ messages in thread
From: Dominik Brodowski @ 2005-07-23 19:54 UTC (permalink / raw)
To: Grant Grundler; +Cc: akpm, greg, linux-pci, linux-pcmcia, linux-kernel
On Mon, Jul 18, 2005 at 01:42:16PM -0600, Grant Grundler wrote:
> On Tue, Jul 12, 2005 at 12:21:38AM +0200, Dominik Brodowski wrote:
> > In yenta_socket, we default to using the resource setting of the CardBus
> > bridge. However, this is a PCI-bus-centric view of resources and thus
> > needs to be converted to generic resources first. Therefore, add a call
> > to pcibios_bus_to_resource() call in between. This function is a mere
> > wrapper on x86 and friends, however on some others it already exists, is
> > added in this patch (alpha, arm, ppc, ppc64) or still needs to be
> > provided (parisc -- where is its pcibios_resource_to_bus() ?).
>
> in arch/parisc/kernel/pci.c?
> At least, it seems to be present in the 2.6.13-rc1 tree
> on cvs.parisc-linux.org tree.
Oh, yes, I seem to have missed it. Sorry. Does this patch look good?
Add pcibios_bus_to_resource for parisc.
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Index: 2.6.13-rc3-git2/arch/parisc/kernel/pci.c
===================================================================
--- 2.6.13-rc3-git2.orig/arch/parisc/kernel/pci.c
+++ 2.6.13-rc3-git2/arch/parisc/kernel/pci.c
@@ -255,8 +255,26 @@ void __devinit pcibios_resource_to_bus(s
pcibios_link_hba_resources(&hba->lmmio_space, bus->resource[1]);
}
+void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
+ struct pci_bus_region *region)
+{
+ struct pci_bus *bus = dev->bus;
+ struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data);
+
+ if (res->flags & IORESOURCE_MEM) {
+ res->start = PCI_HOST_ADDR(hba, region->start);
+ res->end = PCI_HOST_ADDR(hba, region->end);
+ }
+
+ if (res->flags & IORESOURCE_IO) {
+ res->start = region->start;
+ res->end = region->end;
+ }
+}
+
#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL(pcibios_resource_to_bus);
+EXPORT_SYMBOL(pcibios_bus_to_resource);
#endif
/*
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] pcibios_bus_to_resource for parisc [Was: Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource]
2005-07-23 19:54 ` [PATCH] pcibios_bus_to_resource for parisc [Was: Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource] Dominik Brodowski
@ 2005-07-25 1:28 ` Grant Grundler
0 siblings, 0 replies; 7+ messages in thread
From: Grant Grundler @ 2005-07-25 1:28 UTC (permalink / raw)
To: Grant Grundler, akpm, greg, linux-pci, linux-pcmcia, linux-kernel
On Sat, Jul 23, 2005 at 09:54:11PM +0200, Dominik Brodowski wrote:
> Oh, yes, I seem to have missed it. Sorry. Does this patch look good?
Yes.
Acked-by: Grant Grundler <grundler@parisc-linux.org>
I'll commit this to the cvs.parisc-linux.org tree as well.
Willy can let me deal with the collision if it's not trivial
on his next merge.
thanks,
grant
>
>
> Add pcibios_bus_to_resource for parisc.
>
> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
>
> Index: 2.6.13-rc3-git2/arch/parisc/kernel/pci.c
> ===================================================================
> --- 2.6.13-rc3-git2.orig/arch/parisc/kernel/pci.c
> +++ 2.6.13-rc3-git2/arch/parisc/kernel/pci.c
> @@ -255,8 +255,26 @@ void __devinit pcibios_resource_to_bus(s
> pcibios_link_hba_resources(&hba->lmmio_space, bus->resource[1]);
> }
>
> +void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
> + struct pci_bus_region *region)
> +{
> + struct pci_bus *bus = dev->bus;
> + struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data);
> +
> + if (res->flags & IORESOURCE_MEM) {
> + res->start = PCI_HOST_ADDR(hba, region->start);
> + res->end = PCI_HOST_ADDR(hba, region->end);
> + }
> +
> + if (res->flags & IORESOURCE_IO) {
> + res->start = region->start;
> + res->end = region->end;
> + }
> +}
> +
> #ifdef CONFIG_HOTPLUG
> EXPORT_SYMBOL(pcibios_resource_to_bus);
> +EXPORT_SYMBOL(pcibios_bus_to_resource);
> #endif
>
> /*
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource
2005-07-11 22:21 [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Dominik Brodowski
2005-07-11 22:28 ` Russell King
2005-07-18 19:42 ` Grant Grundler
@ 2005-07-26 23:50 ` Greg KH
2005-07-29 21:20 ` Dominik Brodowski
2 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2005-07-26 23:50 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: akpm, linux-pcmcia, linux-kernel, linux-pci
On Tue, Jul 12, 2005 at 12:21:38AM +0200, Dominik Brodowski wrote:
> In yenta_socket, we default to using the resource setting of the CardBus
> bridge. However, this is a PCI-bus-centric view of resources and thus
> needs to be converted to generic resources first. Therefore, add a call
> to pcibios_bus_to_resource() call in between. This function is a mere
> wrapper on x86 and friends, however on some others it already exists, is
> added in this patch (alpha, arm, ppc, ppc64) or still needs to be
> provided (parisc -- where is its pcibios_resource_to_bus() ?).
>
> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Hm, I saw a few different patches here, and some odd complaints. Care
to resend an updated version?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource
2005-07-26 23:50 ` [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Greg KH
@ 2005-07-29 21:20 ` Dominik Brodowski
0 siblings, 0 replies; 7+ messages in thread
From: Dominik Brodowski @ 2005-07-29 21:20 UTC (permalink / raw)
To: Greg KH; +Cc: akpm, linux-pcmcia, linux-kernel, linux-pci
On Tue, Jul 26, 2005 at 04:50:49PM -0700, Greg KH wrote:
> On Tue, Jul 12, 2005 at 12:21:38AM +0200, Dominik Brodowski wrote:
> > In yenta_socket, we default to using the resource setting of the CardBus
> > bridge. However, this is a PCI-bus-centric view of resources and thus
> > needs to be converted to generic resources first. Therefore, add a call
> > to pcibios_bus_to_resource() call in between. This function is a mere
> > wrapper on x86 and friends, however on some others it already exists, is
> > added in this patch (alpha, arm, ppc, ppc64) or still needs to be
> > provided (parisc -- where is its pcibios_resource_to_bus() ?).
> >
> > Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
>
> Hm, I saw a few different patches here, and some odd complaints. Care
> to resend an updated version?
AFAICS, Andrew has merged all fixes into this version:
http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc3/2.6.13-rc3-mm3/broken-out/pci-and-yenta-pcibios_bus_to_resource.patch
Thanks,
Dominik
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2005-07-29 21:25 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-11 22:21 [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Dominik Brodowski
2005-07-11 22:28 ` Russell King
2005-07-18 19:42 ` Grant Grundler
2005-07-23 19:54 ` [PATCH] pcibios_bus_to_resource for parisc [Was: Re: [PATCH 8/8] pci and yenta: pcibios_bus_to_resource] Dominik Brodowski
2005-07-25 1:28 ` Grant Grundler
2005-07-26 23:50 ` [PATCH 8/8] pci and yenta: pcibios_bus_to_resource Greg KH
2005-07-29 21:20 ` Dominik Brodowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).