All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Vrabel <dvrabel@arcom.com>
To: Greg KH <greg@kroah.com>
Cc: Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [patch] PCI: Add is_bridge to pci_dev to allow fixups to disable bridge functionality.
Date: Mon, 01 Nov 2004 10:59:13 +0000	[thread overview]
Message-ID: <41861701.3020008@arcom.com> (raw)
In-Reply-To: <20041030032357.GA1441@kroah.com>

[-- Attachment #1: Type: text/plain, Size: 1164 bytes --]

Greg KH wrote:
> On Tue, Oct 19, 2004 at 12:22:49PM +0100, David Vrabel wrote:
> 
>>The plan was to make the CardBus driver (drivers/pcmcia/yenta_socket.c) 
>>honour the is_bridge flag and not bother with CardBus stuff if it's cleared.
> 
> But why can't any code that wants to check this, just look at the
> dev->hdr_type instead?  I don't think we need to add a new bit for this
> because of that, right?

Using the is_bridge flag allows PCI device fixups to disable the CardBus 
portion of the driver.  And you obviously can't tweak the hdr_type since 
the device header is still a CardBus/bridge type header.

e.g., I have:

static void __devinit pci_fixup_mercury_pci1520(struct pci_dev *dev)
{
         if (!machine_is_arcom_mercury())
                 return;

         dev->is_bridge = 0;
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1520, 
pci_fixup_mercury_pci1520);

> Also, your patch was linewrapped :(

Hmm.  Looks fine here.  I've attached it instead this time.

David Vrabel
-- 
David Vrabel, Design Engineer

Arcom, Clifton Road           Tel: +44 (0)1223 411200 ext. 3233
Cambridge CB1 7EA, UK         Web: http://www.arcom.com/

[-- Attachment #2: pci-allow-is_bridge-fixup --]
[-- Type: text/plain, Size: 1604 bytes --]

Index: linux-2.6-armbe/drivers/pci/probe.c
===================================================================
--- linux-2.6-armbe.orig/drivers/pci/probe.c	2004-10-14 11:26:38.000000000 +0100
+++ linux-2.6-armbe/drivers/pci/probe.c	2004-10-19 12:00:00.000000000 +0100
@@ -610,6 +610,8 @@
 	dev->devfn = devfn;
 	dev->hdr_type = hdr_type & 0x7f;
 	dev->multifunction = !!(hdr_type & 0x80);
+	dev->is_bridge = (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE
+			  || dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
 	dev->vendor = l & 0xffff;
 	dev->device = (l >> 16) & 0xffff;
 	dev->cfg_size = pci_cfg_space_size(dev);
@@ -718,8 +720,7 @@
 	pcibios_fixup_bus(bus);
 	for (pass=0; pass < 2; pass++)
 		list_for_each_entry(dev, &bus->devices, bus_list) {
-			if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
-			    dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
+			if  (dev->is_bridge)
 				max = pci_scan_bridge(bus, dev, max, pass);
 		}
 
Index: linux-2.6-armbe/include/linux/pci.h
===================================================================
--- linux-2.6-armbe.orig/include/linux/pci.h	2004-10-14 11:26:38.000000000 +0100
+++ linux-2.6-armbe/include/linux/pci.h	2004-10-14 11:43:24.000000000 +0100
@@ -532,6 +532,7 @@
 	/* These fields are used by common fixups */
 	unsigned int	transparent:1;	/* Transparent PCI bridge */
 	unsigned int	multifunction:1;/* Part of multi-function device */
+	unsigned int	is_bridge:1;	/* A PCI or CardBus bridge */
 	/* keep track of device state */
 	unsigned int	is_enabled:1;	/* pci_enable_device has been called */
 	unsigned int	is_busmaster:1; /* device is busmaster */

  reply	other threads:[~2004-11-01 10:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-19 11:22 [patch] PCI: Add is_bridge to pci_dev to allow fixups to disable bridge functionality David Vrabel
2004-10-30  3:23 ` Greg KH
2004-11-01 10:59   ` David Vrabel [this message]
2004-11-01 11:34     ` Russell King

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=41861701.3020008@arcom.com \
    --to=dvrabel@arcom.com \
    --cc=greg@kroah.com \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.