From: "H. J. Lu" <hjl@lucon.org>
To: dhinds <dhinds@sonic.net>
Cc: linux kernel <linux-kernel@vger.kernel.org>
Subject: PATCH: New fix for CardBus bridge behind a PCI bridge
Date: Mon, 12 Aug 2002 20:29:42 -0700 [thread overview]
Message-ID: <20020812202942.A27362@lucon.org> (raw)
In-Reply-To: <20020812154851.A20073@sonic.net>; from dhinds@sonic.net on Mon, Aug 12, 2002 at 03:48:51PM -0700
[-- Attachment #1: Type: text/plain, Size: 425 bytes --]
On Mon, Aug 12, 2002 at 03:48:51PM -0700, dhinds wrote:
> I guess the advantage of your original patch is that I think it should
> never hurt, and will help in any situation where a PCI bridge actually
> is transparent.
>
I was told all PCI_CLASS_BRIDGE_PCI bridges were transparent. The non-
transparent ones have class code PCI_CLASS_BRIDGE_OTHER. This new patch
only checks PCI_CLASS_BRIDGE_PCI and works for me.
H.J.
[-- Attachment #2: linux-2.4.18-yenta-bridge.patch --]
[-- Type: text/plain, Size: 1704 bytes --]
--- linux/drivers/pcmcia/yenta.c.bridge Sat Aug 10 20:30:35 2002
+++ linux/drivers/pcmcia/yenta.c Mon Aug 12 20:06:16 2002
@@ -706,7 +706,8 @@ static int yenta_suspend(pci_socket_t *s
static void yenta_allocate_res(pci_socket_t *socket, int nr, unsigned type)
{
- struct pci_bus *bus;
+ struct pci_bus *bus, *parent;
+ struct pci_dev *bridge;
struct resource *root, *res;
u32 start, end;
u32 align, size, min, max;
@@ -739,17 +740,38 @@ static void yenta_allocate_res(pci_socke
return;
}
- align = size = 4*1024*1024;
- min = PCIBIOS_MIN_MEM; max = ~0U;
if (type & IORESOURCE_IO) {
align = 1024;
size = 256;
min = 0x4000;
max = 0xffff;
}
+ else {
+ align = size = 4*1024*1024;
+ min = PCIBIOS_MIN_MEM;
+ max = ~0U;
+ }
- if (allocate_resource(root, res, size, min, max, align, NULL, NULL) < 0)
+
+ /* We check if we are behind a transparent PCI bridge. If yes,
+ we just allocate resources from its parent. */
+ for (parent = bus->parent; parent != NULL; parent = parent->parent) {
+ bridge = parent->self;
+ if (bridge != NULL
+ && (bridge->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
+ res->name = bridge->subordinate->name;
+ root = pci_find_parent_resource(bridge, res);
+ }
+ }
+
+ if (allocate_resource(root, res, size, min, max, align, NULL, NULL) < 0) {
+ printk (KERN_NOTICE "PCI: CardBus bridge (%04x:%04x, %04x:%04x): Failed to allocate %s resource: %d bytes!\n",
+ socket->dev->vendor, socket->dev->device,
+ socket->dev->subsystem_vendor,
+ socket->dev->subsystem_device,
+ (type & IORESOURCE_IO) ? "I/O" : "memory", size);
return;
+ }
config_writel(socket, offset, res->start);
config_writel(socket, offset+4, res->end);
next prev parent reply other threads:[~2002-08-13 3:25 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20020806105023.A17451@lucon.org>
[not found] ` <20020806112636.A29360@sonic.net>
[not found] ` <20020806130420.A19613@lucon.org>
[not found] ` <20020809160506.A19549@sonic.net>
[not found] ` <20020809164835.B21110@lucon.org>
[not found] ` <20020809172140.A30911@sonic.net>
[not found] ` <20020810222355.A13749@lucon.org>
2002-08-12 17:49 ` PATCH: Fix CardBus bridge behind a PCI bridge H. J. Lu
[not found] ` <20020812110431.A14125@sonic.net>
[not found] ` <20020812112911.A18947@lucon.org>
[not found] ` <20020812122158.A27172@sonic.net>
2002-08-12 21:07 ` H. J. Lu
[not found] ` <20020812154851.A20073@sonic.net>
2002-08-13 3:29 ` H. J. Lu [this message]
2002-08-16 15:48 ` PATCH: New fix for " Ivan Kokshaysky
2002-08-17 5:49 ` H. J. Lu
2002-08-17 14:55 ` Ivan Kokshaysky
2002-08-17 15:26 ` Jeff Garzik
2002-08-17 15:36 ` H. J. Lu
2002-08-18 10:49 ` Ivan Kokshaysky
2002-08-18 14:28 ` H. J. Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020812202942.A27362@lucon.org \
--to=hjl@lucon.org \
--cc=dhinds@sonic.net \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).