public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [patch 1/4] pci: store PCI_INTERRUPT_PIN in pci_dev
       [not found] <20051103001540.365407000@whizzy>
@ 2005-11-03  0:24 ` Kristen Accardi
  2005-11-03  0:24 ` [patch 2/4] apci: use pin stored " Kristen Accardi
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Kristen Accardi @ 2005-11-03  0:24 UTC (permalink / raw)
  To: pcihpd-discuss, acpi-devel, linux-kernel, rajesh.shah, greg,
	len.brown

plain text document attachment (patch-interrupt-pin)
Store the value of the INTERRUPT_PIN in the pci_dev structure
so that it can be retrieved later.

Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
 
 drivers/pci/probe.c |    1 +
 include/linux/pci.h |    1 +
 2 files changed, 2 insertions(+)

Index: linux-2.6.13/drivers/pci/probe.c
===================================================================
--- linux-2.6.13.orig/drivers/pci/probe.c
+++ linux-2.6.13/drivers/pci/probe.c
@@ -571,6 +571,7 @@ static void pci_read_irq(struct pci_dev 
 	unsigned char irq;
 
 	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
+	dev->pin = irq;
 	if (irq)
 		pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
 	dev->irq = irq;
Index: linux-2.6.13/include/linux/pci.h
===================================================================
--- linux-2.6.13.orig/include/linux/pci.h
+++ linux-2.6.13/include/linux/pci.h
@@ -98,6 +98,7 @@ struct pci_dev {
 	unsigned int	class;		/* 3 bytes: (base,sub,prog-if) */
 	u8		hdr_type;	/* PCI header type (`multi' flag masked out) */
 	u8		rom_base_reg;	/* which config register controls the ROM */
+	u8		pin;  		/* which interrupt pin this device uses */
 
 	struct pci_driver *driver;	/* which driver has allocated this device */
 	u64		dma_mask;	/* Mask of the bits of bus address this

--

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [patch 2/4] apci: use pin stored in pci_dev
       [not found] <20051103001540.365407000@whizzy>
  2005-11-03  0:24 ` [patch 1/4] pci: store PCI_INTERRUPT_PIN in pci_dev Kristen Accardi
@ 2005-11-03  0:24 ` Kristen Accardi
  2005-11-03  0:24 ` [patch 3/4] pci: " Kristen Accardi
  2005-11-03  0:24 ` [patch 4/4] pci: call pci_read_irq for bridges Kristen Accardi
  3 siblings, 0 replies; 5+ messages in thread
From: Kristen Accardi @ 2005-11-03  0:24 UTC (permalink / raw)
  To: pcihpd-discuss, acpi-devel, linux-kernel, rajesh.shah, greg,
	len.brown

Use the stored value of the Interrupt Pin, rather than try to read
it again.

Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
 
 drivers/acpi/pci_irq.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

Index: linux-2.6.13/drivers/acpi/pci_irq.c
===================================================================
--- linux-2.6.13.orig/drivers/acpi/pci_irq.c
+++ linux-2.6.13/drivers/acpi/pci_irq.c
@@ -361,8 +361,7 @@ acpi_pci_irq_derive(struct pci_dev *dev,
 
 		if ((bridge->class >> 8) == PCI_CLASS_BRIDGE_CARDBUS) {
 			/* PC card has the same IRQ as its cardbridge */
-			pci_read_config_byte(bridge, PCI_INTERRUPT_PIN,
-					     &bridge_pin);
+			bridge_pin = bridge->pin;
 			if (!bridge_pin) {
 				ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 						  "No interrupt pin configured for device %s\n",
@@ -412,7 +411,7 @@ int acpi_pci_irq_enable(struct pci_dev *
 	if (!dev)
 		return_VALUE(-EINVAL);
 
-	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
+	pin = dev->pin;
 	if (!pin) {
 		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
 				  "No interrupt pin configured for device %s\n",
@@ -503,7 +502,7 @@ void acpi_pci_irq_disable(struct pci_dev
 	if (!dev || !dev->bus)
 		return_VOID;
 
-	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
+	pin = dev->pin;
 	if (!pin)
 		return_VOID;
 	pin--;

--

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [patch 3/4] pci: use pin stored in pci_dev
       [not found] <20051103001540.365407000@whizzy>
  2005-11-03  0:24 ` [patch 1/4] pci: store PCI_INTERRUPT_PIN in pci_dev Kristen Accardi
  2005-11-03  0:24 ` [patch 2/4] apci: use pin stored " Kristen Accardi
@ 2005-11-03  0:24 ` Kristen Accardi
  2005-11-03  0:24 ` [patch 4/4] pci: call pci_read_irq for bridges Kristen Accardi
  3 siblings, 0 replies; 5+ messages in thread
From: Kristen Accardi @ 2005-11-03  0:24 UTC (permalink / raw)
  To: pcihpd-discuss, acpi-devel, linux-kernel, rajesh.shah, greg,
	len.brown

Use the stored value of the interrupt pin rather than try to read
the config again.

Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>
 
 drivers/pci/pci.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.13/drivers/pci/pci.c
===================================================================
--- linux-2.6.13.orig/drivers/pci/pci.c
+++ linux-2.6.13/drivers/pci/pci.c
@@ -567,7 +567,7 @@ pci_get_interrupt_pin(struct pci_dev *de
 {
 	u8 pin;
 
-	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
+	pin = dev->pin;
 	if (!pin)
 		return -1;
 	pin--;

--

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [patch 4/4] pci: call pci_read_irq for bridges
       [not found] <20051103001540.365407000@whizzy>
                   ` (2 preceding siblings ...)
  2005-11-03  0:24 ` [patch 3/4] pci: " Kristen Accardi
@ 2005-11-03  0:24 ` Kristen Accardi
  2005-11-03  0:55   ` Kristen Accardi
  3 siblings, 1 reply; 5+ messages in thread
From: Kristen Accardi @ 2005-11-03  0:24 UTC (permalink / raw)
  To: pcihpd-discuss, acpi-devel, linux-kernel, rajesh.shah, greg,
	len.brown

Call pci_read_irq() for bridges too, this ensures that the pin
value is stored for later use for bridges that require interrupts.

 drivers/pci/probe.c |    1 +
 1 files changed, 1 insertion(+)

Index: linux-2.6.13/drivers/pci/probe.c
===================================================================
--- linux-2.6.13.orig/drivers/pci/probe.c
+++ linux-2.6.13/drivers/pci/probe.c
@@ -624,6 +624,7 @@ static int pci_setup_device(struct pci_d
 		/* The PCI-to-PCI bridge spec requires that subtractive
 		   decoding (i.e. transparent) bridge must have programming
 		   interface code of 0x01. */ 
+		pci_read_irq(dev);
 		dev->transparent = ((dev->class & 0xff) == 1);
 		pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
 		break;

--

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [patch 4/4] pci: call pci_read_irq for bridges
  2005-11-03  0:24 ` [patch 4/4] pci: call pci_read_irq for bridges Kristen Accardi
@ 2005-11-03  0:55   ` Kristen Accardi
  0 siblings, 0 replies; 5+ messages in thread
From: Kristen Accardi @ 2005-11-03  0:55 UTC (permalink / raw)
  To: pcihpd-discuss; +Cc: acpi-devel, linux-kernel, rajesh.shah, greg, len.brown

Call pci_read_irq() for bridges too, so that the pin value
is stored for bridges that require interrupts.

Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com>

 drivers/pci/probe.c |    1 +
 1 files changed, 1 insertion(+)

Index: linux-2.6.13/drivers/pci/probe.c
===================================================================
--- linux-2.6.13.orig/drivers/pci/probe.c
+++ linux-2.6.13/drivers/pci/probe.c
@@ -624,6 +624,7 @@ static int pci_setup_device(struct pci_d
 		/* The PCI-to-PCI bridge spec requires that subtractive
 		   decoding (i.e. transparent) bridge must have programming
 		   interface code of 0x01. */ 
+		pci_read_irq(dev);
 		dev->transparent = ((dev->class & 0xff) == 1);
 		pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
 		break;


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-11-03  0:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20051103001540.365407000@whizzy>
2005-11-03  0:24 ` [patch 1/4] pci: store PCI_INTERRUPT_PIN in pci_dev Kristen Accardi
2005-11-03  0:24 ` [patch 2/4] apci: use pin stored " Kristen Accardi
2005-11-03  0:24 ` [patch 3/4] pci: " Kristen Accardi
2005-11-03  0:24 ` [patch 4/4] pci: call pci_read_irq for bridges Kristen Accardi
2005-11-03  0:55   ` Kristen Accardi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox