Skip to contentSkip to conversation

pci: Move PCI device configuration check into a separate weak function

PATCH New Stefan Roese 4 participants 10 messages Jul 8, 2008 – Jul 10, 2008 PCI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

This patch moves the check, if a device should be skipped in PCI PNP configuration into the function pci_skip_dev(). This function is defined as weak so that it can be overwritten by a platform specific one if needed. The check if the device should get printed in the PCI summary upon bootup (when CONFIG_PCI_SCAN_SHOW is defined) is moved to the function pci_print_dev() which is also defined as weak too.

---
 drivers/pci/pci.c |   70 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 46 insertions(+), 24 deletions(-)
drivers/pci/pci.c +46 -24
index b3ae3b1..16180cb 100644
@@ -411,6 +411,40 @@ void pci_cfgfunc_do_nothing(struct pci_controller *hose,
 extern int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev);
 extern void pciauto_config_init(struct pci_controller *hose);
 
+int __pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+	/*
+	 * Check if pci device should be skipped in configuration
+	 */
+	if (dev == PCI_BDF(hose->first_busno, 0, 0)) {
+#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE) /* don't skip host bridge */
+		/*
+		 * Only skip configuration if "pciconfighost" is not set
+		 */
+		if (getenv("pciconfighost") == NULL)
+			return 1;
+#else
+		return 1;
+#endif
+	}
+
+	return 0;
+}
+int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+	__attribute__((weak, alias("__pci_skip_dev")));
+
+#ifdef CONFIG_PCI_SCAN_SHOW
+int __pci_print_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+	if (dev == PCI_BDF(hose->first_busno, 0, 0))
+		return 0;
+
+	return 1;
+}
+int pci_print_dev(struct pci_controller *hose, pci_dev_t dev)
+	__attribute__((weak, alias("__pci_print_dev")));
+#endif /* CONFIG_PCI_SCAN_SHOW */
+
 int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 {
 	unsigned int sub_bus, found_multi=0;
@@ -423,21 +457,10 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 
 	for (dev =  PCI_BDF(bus,0,0);
 	     dev <  PCI_BDF(bus,PCI_MAX_PCI_DEVICES-1,PCI_MAX_PCI_FUNCTIONS-1);
-	     dev += PCI_BDF(0,0,1))
-	{
-		/* Skip our host bridge */
-		if ( dev == PCI_BDF(hose->first_busno,0,0) ) {
-#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE)              /* don't skip host bridge */
-			/*
-			 * Only skip hostbridge configuration if "pciconfighost" is not set
-			 */
-			if (getenv("pciconfighost") == NULL) {
-				continue; /* Skip our host bridge */
-			}
-#else
-			continue; /* Skip our host bridge */
-#endif
-		}
+	     dev += PCI_BDF(0,0,1)) {
+
+		if (pci_skip_dev(hose, dev))
+			continue;
 
 		if (PCI_FUNC(dev) && !found_multi)
 			continue;
@@ -473,15 +496,14 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 				hose->fixup_irq(hose, dev);
 
 #ifdef CONFIG_PCI_SCAN_SHOW
-			/* Skip our host bridge */
-			if ( dev != PCI_BDF(hose->first_busno,0,0) ) {
-			    unsigned char int_line;
-
-			    pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE,
-						      &int_line);
-			    printf("        %02x  %02x  %04x  %04x  %04x  %02x\n",
-				   PCI_BUS(dev), PCI_DEV(dev), vendor, device, class,
-				   int_line);
+			if (pci_print_dev(hose, dev)) {
+				unsigned char int_line;
+
+				pci_hose_read_config_byte(hose, dev, PCI_INTERRUPT_LINE,
+							  &int_line);
+				printf("        %02x  %02x  %04x  %04x  %04x  %02x\n",
+				       PCI_BUS(dev), PCI_DEV(dev), vendor, device, class,
+				       int_line);
 			}
 #endif
 		}
Signature · 1 line
1.5.6.2
#1 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Hi, Stefan.

2008/7/8 Stefan Roese <[email protected]>:

Quoted 43 lines

This patch moves the check, if a device should be skipped in PCI PNP configuration into the function pci_skip_dev(). This function is defined as weak so that it can be overwritten by a platform specific one if needed. The check if the device should get printed in the PCI summary upon bootup (when CONFIG_PCI_SCAN_SHOW is defined) is moved to the function pci_print_dev() which is also defined as weak too.

---
 drivers/pci/pci.c |   70 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 46 insertions(+), 24 deletions(-)
drivers/pci/pci.c +23 -0
index b3ae3b1..16180cb 100644
@@ -411,6 +411,40 @@ void pci_cfgfunc_do_nothing(struct pci_controller *hose,
 extern int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev);
 extern void pciauto_config_init(struct pci_controller *hose);
 
+int __pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+       /*
+        * Check if pci device should be skipped in configuration
+        */
+       if (dev == PCI_BDF(hose->first_busno, 0, 0)) {
+#if defined(CONFIG_PCI_CONFIG_HOST_BRIDGE) /* don't skip host bridge */
+               /*
+                * Only skip configuration if "pciconfighost" is not set
+                */
+               if (getenv("pciconfighost") == NULL)
+                       return 1;
+#else
+               return 1;
+#endif
+       }
+
+       return 0;
+}
+int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
+       __attribute__((weak, alias("__pci_skip_dev")));
+
+#ifdef CONFIG_PCI_SCAN_SHOW

drivers/pci/pci.c void pci_cfgfunc_do_nothing(struct pci_controller *hose, · line 446

Quoted 10 lines
drivers/pci/pci.c +10 -0
+int __pci_print_dev(struct pci_controller *hose, pci_dev_t dev)
+{
+       if (dev == PCI_BDF(hose->first_busno, 0, 0))
+               return 0;
+
+       return 1;
+}
+int pci_print_dev(struct pci_controller *hose, pci_dev_t dev)
+       __attribute__((weak, alias("__pci_print_dev")));
+#endif /* CONFIG_PCI_SCAN_SHOW */

When PCI_BDF was 0,0,0, does the board of PPC have the device which do not want to initialize?

Best regards,
Nobuhiro

Signature · 1 line
Nobuhiro Iwamatsu
#2 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Hi Nobuhiro,

Quoted 2 lines · Nobuhiro Iwamatsu

When PCI_BDF was 0,0,0, does the board of PPC have the device which do not want to initialize?

This is the current situation, yes. At least on PPC4xx. With this new patch all platforms can overwrite this default behavior without breaking backward compatibility.

Does it work for you?

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#3 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Hi, Stefan.

2008/7/9 Stefan Roese <[email protected]>:

Quoted 10 lines

Hi Nobuhiro,

Quoted 2 lines · Nobuhiro Iwamatsu

When PCI_BDF was 0,0,0, does the board of PPC have the device which do not want to initialize?

This is the current situation, yes. At least on PPC4xx. With this new patch all platforms can overwrite this default behavior without breaking backward compatibility.

OK, I see.

Quoted 1 line

Does it work for you?

Work fine. Thank you.
But I have suggestion.

If these cords depend on PPC4xx and other PPC platform, I think that move these code to PPC platform.
Do you think this suggestion?

Best regards,
Nobuhiro

#4 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Quoted 7 lines · Nobuhiro Iwamatsu
Quoted 6 lines
Quoted 2 lines

When PCI_BDF was 0,0,0, does the board of PPC have the device which do not want to initialize?

This is the current situation, yes. At least on PPC4xx. With this new patch all platforms can overwrite this default behavior without breaking backward compatibility.

Quoted 5 lines

OK, I see.

Quoted 1 line

Does it work for you?

Work fine. Thank you.

OK.

Quoted 5 lines

But I have suggestion.

If these cords depend on PPC4xx and other PPC platform, I think that move these code to PPC platform.
Do you think this suggestion?

I don't know if this current implementation only works for PPC. Its used on all platforms using this PCI code right now. So I think we should keep this version in this file as default behavior.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#5 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Hi, Stefan.

2008/7/9 Stefan Roese <[email protected]>:

Quoted 18 lines · Nobuhiro Iwamatsu
Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

When PCI_BDF was 0,0,0, does the board of PPC have the device which do not want to initialize?

This is the current situation, yes. At least on PPC4xx. With this new patch all platforms can overwrite this default behavior without breaking backward compatibility.

Quoted 5 lines

OK, I see.

Quoted 1 line

Does it work for you?

Work fine. Thank you.

OK.

Quoted 2 lines

But I have suggestion.

Quoted 7 lines
Quoted 3 lines

If these cords depend on PPC4xx and other PPC platform, I think that move these code to PPC platform.
Do you think this suggestion?

I don't know if this current implementation only works for PPC. Its used on all platforms using this PCI code right now. So I think we should keep this version in this file as default behavior.

OK, I understand.

Are you going to put this patch in 1.3.4?

Best regatds,
Nobuhiro

#6 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Hi Nobuhiro,

Quoted 6 lines · Nobuhiro Iwamatsu
Quoted 6 lines
Quoted 5 lines

But I have suggestion.

If these cords depend on PPC4xx and other PPC platform, I think that move these code to PPC platform.
Do you think this suggestion?

Quoted 8 lines
Quoted 3 lines

I don't know if this current implementation only works for PPC. Its used on all platforms using this PCI code right now. So I think we should keep this version in this file as default behavior.

OK, I understand.

Are you going to put this patch in 1.3.4?

Yes, I think we should put it into the repo now.

Wolfgang, can you please pick my patch up directly?

Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#7 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Quoted 4 lines · In message <[email protected]> you wrote:

Yes, I think we should put it into the repo now.

Wolfgang, can you please pick my patch up directly?

I can, if you tell me which one exactly.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The speed of time is one second per second.
#8 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

Quoted 6 lines · Wolfgang Denk
Quoted 3 lines · In message <[email protected]> you wrote:

Yes, I think we should put it into the repo now.

Wolfgang, can you please pick my patch up directly?

I can, if you tell me which one exactly.

The one from this email thread:

[PATCH] pci: Move PCI device configuration check into a separate weak function

From 08.07.2008

Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#9 lore raw

PATCH 1/1 pci: Move PCI device configuration check into a separate weak function

In reply to Stefan Roese
Quoted 11 lines · In message <[email protected]> you wrote:

This patch moves the check, if a device should be skipped in PCI PNP configuration into the function pci_skip_dev(). This function is defined as weak so that it can be overwritten by a platform specific one if needed. The check if the device should get printed in the PCI summary upon bootup (when CONFIG_PCI_SCAN_SHOW is defined) is moved to the function pci_print_dev() which is also defined as weak too.

---
 drivers/pci/pci.c |   70 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 46 insertions(+), 24 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Remember that Beethoven wrote his first symphony in C ...