ppc4xx: Disable pci node in device tree on CPCI405 pci adapters
authorMatthias Fuchs <matthias.fuchs@esd-electronics.com>
Fri, 2 Jan 2009 11:18:12 +0000 (12:18 +0100)
committerStefan Roese <sr@denx.de>
Wed, 14 Jan 2009 10:18:53 +0000 (11:18 +0100)
Signed-off-by: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
Signed-off-by: Stefan Roese <sr@denx.de>
board/esd/cpci405/cpci405.c

index 9bb5f6360825471d994e287cd024c09cda9c82cd..bd569a62971576327940d81870b9be546fd0f348 100644 (file)
@@ -21,6 +21,8 @@
  * MA 02111-1307 USA
  */
 #include <common.h>
+#include <libfdt.h>
+#include <fdt_support.h>
 #include <asm/processor.h>
 #include <asm/io.h>
 #include <command.h>
@@ -523,6 +525,28 @@ int pci_pre_init(struct pci_controller *hose)
 }
 #endif /* defined(CONFIG_PCI) */
 
+#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
+void ft_board_setup(void *blob, bd_t *bd)
+{
+       int rc;
+
+       __ft_board_setup(blob, bd);
+
+       /*
+        * Disable PCI in adapter mode.
+        */
+       if (!cpci405_host()) {
+               rc = fdt_find_and_setprop(blob, "/plb/pci@ec000000", "status",
+                                         "disabled", sizeof("disabled"), 1);
+               if (rc) {
+                       printf("Unable to update property status in PCI node, "
+                              "err=%s\n",
+                              fdt_strerror(rc));
+               }
+       }
+}
+#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
+
 #if defined(CONFIG_CPCI405AB)
 #define ONE_WIRE_CLEAR  out_be16((void*)(CONFIG_SYS_FPGA_BASE_ADDR +   \
                                          CONFIG_SYS_FPGA_MODE),        \