[PATCH] Update Prodrive P3Mx support
authorStefan Roese <sr@denx.de>
Thu, 18 Jan 2007 10:54:52 +0000 (11:54 +0100)
committerStefan Roese <sr@denx.de>
Thu, 18 Jan 2007 10:54:52 +0000 (11:54 +0100)
Signed-off-by: Stefan Roese <sr@denx.de>
board/prodrive/p3mx/p3mx.c
board/prodrive/p3mx/sdram_init.c
include/configs/p3mx.h

index 6cebd1aeb6db265581144ccf5ecfd5e402dc6d26..d54ddaffc1ecbc4dbe51fc382430773d79f1d9d6 100644 (file)
@@ -45,6 +45,7 @@
 #include "mpsc.h"
 #include "64460.h"
 #include "mv_regs.h"
+#include "p3mx.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -79,6 +80,7 @@ extern flash_info_t flash_info[];
 void board_prebootm_init (void);
 unsigned int INTERNAL_REG_BASE_ADDR = CFG_GT_REGS;
 int display_mem_map (void);
+void set_led(int);
 
 /* ------------------------------------------------------------------------- */
 
@@ -246,7 +248,6 @@ int board_early_init_f (void)
         * that if it's not at the power-on location, it's where we put
         * it last time. (huber)
         */
-
        my_remap_gt_regs (CFG_DFL_GT_REGS, CFG_GT_REGS);
 
 #ifdef CONFIG_PCI
@@ -287,6 +288,8 @@ int board_early_init_f (void)
 
        GT_REG_WRITE (GPP_LEVEL_CONTROL, CFG_GPP_LEVEL_CONTROL);
 
+       set_led(LED_RED);
+
        return 0;
 }
 
@@ -332,6 +335,7 @@ void after_reloc (ulong dest_addr, gd_t * gd)
 /*     display_mem_map(); */
 
        /* now, jump to the main U-Boot board init code */
+       set_led(LED_GREEN);
        board_init_r (gd, dest_addr);
        /* NOTREACHED */
 }
@@ -356,15 +360,66 @@ int checkboard (void)
        return (0);
 }
 
-/* utility functions */
-void debug_led (int led, int mode)
+void set_led(int col)
 {
+       int tmp;
+       int on_pin;
+       int off_pin;
+
+       /* Program Mpp[22] as Gpp[22]
+        * Program Mpp[23] as Gpp[23]
+        */
+       tmp = GTREGREAD(MPP_CONTROL2);
+       tmp &= 0x00ffffff;
+       GT_REG_WRITE(MPP_CONTROL2,tmp);
+
+       /* Program Gpp[22] and Gpp[23] as output
+        */
+       tmp = GTREGREAD(GPP_IO_CONTROL);
+       tmp |= 0x00C00000;
+       GT_REG_WRITE(GPP_IO_CONTROL, tmp);
+
+       /* Program Gpp[22] and Gpp[23] as active high
+        */
+       tmp = GTREGREAD(GPP_LEVEL_CONTROL);
+       tmp &= 0xff3fffff;
+       GT_REG_WRITE(GPP_LEVEL_CONTROL, tmp);
+
+       switch(col) {
+       default:
+       case LED_OFF :
+               on_pin  = 0;
+               off_pin = ((1 << 23) | (1 << 22));
+               break;
+       case LED_RED :
+               on_pin  = (1 << 23);
+               off_pin = (1 << 22);
+               break;
+       case LED_GREEN :
+               on_pin  = (1 << 22);
+               off_pin = (1 << 23);
+               break;
+       case LED_ORANGE :
+               on_pin  = ((1 << 23) | (1 << 22));
+               off_pin = 0;
+               break;
+       }
+
+       /* Set output Gpp[22] and Gpp[23]
+        */
+       tmp = GTREGREAD(GPP_VALUE);
+       tmp |= on_pin;
+       tmp &= ~off_pin;
+       GT_REG_WRITE(GPP_VALUE, tmp);
 }
 
 int display_mem_map (void)
 {
-       int i, j;
+       int i;
        unsigned int base, size, width;
+#ifdef CONFIG_PCI
+       int j;
+#endif
 
        /* SDRAM */
        printf ("SD (DDR) RAM\n");
index 176252efee5ff0986cf02a9c13f735d7d39b7bb6..0464860424eae14a39f32b961ac51cd9ea38f0fb 100644 (file)
@@ -65,7 +65,7 @@ int mvDmaTransfer (int, ulong, ulong, ulong, ulong);
 int memory_map_bank (unsigned int bankNo,
                     unsigned int bankBase, unsigned int bankLength)
 {
-#ifdef MAP_PCI
+#if defined (MAP_PCI) && defined (CONFIG_PCI)
        PCI_HOST host;
 #endif
 
@@ -80,7 +80,7 @@ int memory_map_bank (unsigned int bankNo,
 
        memoryMapBank (bankNo, bankBase, bankLength);
 
-#ifdef MAP_PCI
+#if defined (MAP_PCI) && defined (CONFIG_PCI)
        for (host = PCI_HOST0; host <= PCI_HOST1; host++) {
                const int features =
                        PREFETCH_ENABLE |
index 262e9d6acfc754ec29e8949c9f589f0f646d88bb..54462f007cd5d53c04abe4de38a15c79c58cb5f9 100644 (file)
 #define PCI_HOST_FORCE 1               /* configure as pci host        */
 #define PCI_HOST_AUTO  2               /* detected via arbiter enable  */
 
-#define CONFIG_PCI                     /* include pci support          */
+#undef CONFIG_PCI                      /* include pci support          */
+#ifdef CONFIG_PCI
 #define CONFIG_PCI_HOST PCI_HOST_FORCE /* select pci host function     */
 #define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
 #define CONFIG_PCI_SCAN_SHOW           /* show devices on bus          */
+#endif /* CONFIG_PCI */
 
 /* PCI MEMORY MAP section */
 #define CFG_PCI0_MEM_BASE      0x80000000
 #define CFG_PCI1_IO_SPACE_PCI  0x00000000
 
 #define CFG_ISA_IO_BASE_ADDRESS (CFG_PCI0_IO_BASE)
-
 #define CFG_PCI_IDSEL 0x30
 
 #undef CONFIG_BOOTARGS