ppc4xx: Add variable "korat_usbcf" for Korat board
authorLarry Johnson <lrj@acm.org>
Wed, 28 Jan 2009 20:30:02 +0000 (15:30 -0500)
committerStefan Roese <sr@denx.de>
Thu, 29 Jan 2009 09:55:56 +0000 (10:55 +0100)
The new environment variable "korat_usbcf" selects the USB
port used by the Korat board's CompactFlash controller.

Signed-off-by: Larry Johnson <lrj@acm.org>
Signed-off-by: Stefan Roese <sr@denx.de>
board/korat/korat.c
doc/README.korat

index 5ad75f7..8328ba3 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * (C) Copyright 2007-2008
+ * (C) Copyright 2007-2009
  * Larry Johnson, lrj@acm.org
  *
  * (C) Copyright 2006-2007
  * Larry Johnson, lrj@acm.org
  *
  * (C) Copyright 2006-2007
@@ -351,6 +351,7 @@ int misc_init_r(void)
        unsigned long sdr0_pfc1;
        uint32_t const flash1_size = gd->bd->bi_flashsize - CONFIG_SYS_FLASH0_SIZE;
        char const *const act = getenv("usbact");
        unsigned long sdr0_pfc1;
        uint32_t const flash1_size = gd->bd->bi_flashsize - CONFIG_SYS_FLASH0_SIZE;
        char const *const act = getenv("usbact");
+       char const *const usbcf = getenv("korat_usbcf");
 
        /*
         * Re-do FLASH1 sizing and adjust flash start and offset.
 
        /*
         * Re-do FLASH1 sizing and adjust flash start and offset.
@@ -405,6 +406,26 @@ int misc_init_r(void)
        /*
         * USB suff...
         */
        /*
         * USB suff...
         */
+       /*
+        * Select the USB controller on the 440EPx ("ppc") or on the PCI bus
+        * ("pci") for the CompactFlash.
+        */
+       if (usbcf != NULL && (strcmp(usbcf, "ppc") == 0)) {
+               /*
+                * If environment variable "usbcf" is defined and set to "ppc",
+                * then connect the CompactFlash controller to the PowerPC USB
+                * port.
+                */
+               printf("Attaching CompactFalsh controller to PPC USB\n");
+               out_8((u8 *) CONFIG_SYS_CPLD_BASE + 0x02,
+                     in_8((u8 *) CONFIG_SYS_CPLD_BASE + 0x02) | 0x10);
+       } else {
+               if (usbcf != NULL && (strcmp(usbcf, "pci") != 0))
+                       printf("Warning: \"korat_usbcf\" is not set to a legal "
+                              "value (\"ppc\" or \"pci\")\n");
+
+               printf("Attaching CompactFalsh controller to PCI USB\n");
+       }
        if (act == NULL || strcmp(act, "hostdev") == 0) {
                /* SDR Setting */
                mfsdr(SDR0_PFC1, sdr0_pfc1);
        if (act == NULL || strcmp(act, "hostdev") == 0) {
                /* SDR Setting */
                mfsdr(SDR0_PFC1, sdr0_pfc1);
index 0a59f40..49cd102 100644 (file)
@@ -49,3 +49,17 @@ creates the upgradable U-Boot but selecting loader file "u-boot-F7FC.lds" and
 leaving preprocessor symbol "CONFIG_KORAT_PERMANENT" undefined.
 
 2008-02-22, Larry Johnson <lrj@acm.org>
 leaving preprocessor symbol "CONFIG_KORAT_PERMANENT" undefined.
 
 2008-02-22, Larry Johnson <lrj@acm.org>
+
+
+
+The CompactFlash(R) controller on the Korat board provides a hi-speed USB
+interface.  This may be connected to either a dedicated port on the on-board
+USB controller, or to a USB port on the PowerPC 440EPx processor.  The U-Boot
+environment variable "korat_usbcf" can be used to specify which of these two
+USB host ports is used for CompactFlash.  The valid setting for the variable are
+the strings "pci" and "ppc".  If the variable defined and set to "ppc", then the
+PowerPC USB port is used.  In all other cases the on-board USB controller is
+used, but if "korat_usbcf" is defined but is set to a string other than the two
+valid options, a warning is also issued.
+
+2009-01-28, Larry Johnson <lrj@acm.org>