ppc4xx: 405EX: Correctly enable USB pins
authorStefan Roese <sr@denx.de>
Sat, 8 Dec 2007 13:47:34 +0000 (14:47 +0100)
committerStefan Roese <sr@denx.de>
Sat, 8 Dec 2007 13:47:34 +0000 (14:47 +0100)
This patch selects the USB data pins in the 405EX GPIO and MFC (multi
function control) registers. This is done for the AMCC Kilauea and
Makalu eval boards.

Signed-off-by: Stefan Roese <sr@denx.de>
board/amcc/kilauea/kilauea.c
board/amcc/makalu/makalu.c
include/configs/kilauea.h
include/configs/makalu.h
include/ppc405.h

index 36e9e4a..96c0dd4 100644 (file)
@@ -206,6 +206,13 @@ int board_early_init_f (void)
                (0x80000000 >> (28 + CFG_NAND_CS));
        mtsdr(SDR0_CUST0, val);
 
+       /*
+        * Configure PFC (Pin Function Control) registers
+        * -> Enable USB
+        */
+       val = SDR0_PFC1_USBEN | SDR0_PFC1_USBBIGEN | SDR0_PFC1_GPT_FREQ;
+       mtsdr(SDR0_PFC1, val);
+
        return 0;
 }
 
index b7933a0..15e51f4 100644 (file)
@@ -43,6 +43,8 @@ extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips  */
  */
 int board_early_init_f (void)
 {
+       u32 val;
+
        /*--------------------------------------------------------------------+
         | Interrupt controller setup for the AMCC 405EX(r) PINE evaluation board.
         +--------------------------------------------------------------------+
@@ -195,6 +197,13 @@ int board_early_init_f (void)
        udelay(100);
        gpio_write_bit(CFG_GPIO_PCIE_RST, 1);
 
+       /*
+        * Configure PFC (Pin Function Control) registers
+        * -> Enable USB
+        */
+       val = SDR0_PFC1_USBEN | SDR0_PFC1_USBBIGEN | SDR0_PFC1_GPT_FREQ;
+       mtsdr(SDR0_PFC1, val);
+
        return 0;
 }
 
index 98d745c..e3f24a4 100644 (file)
 {GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_0}, /* GPIO11 IRQ(6)                                */      \
 {GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO12 EBC_DATA(16)  USB2_DATA(0)    */      \
 {GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO13 EBC_DATA(17)  USB2_DATA(1)    */      \
-{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_1}, /* GPIO14 EBC_DATA(18)  USB2_DATA(2)    */      \
-{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_1}, /* GPIO15 EBC_DATA(19)  USB2_DATA(3)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO14 EBC_DATA(18)  USB2_DATA(2)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO15 EBC_DATA(19)  USB2_DATA(3)    */      \
 {GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_0}, /* GPIO16 UART0_DCD     UART1_CTS       */      \
 {GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_0}, /* GPIO17 UART0_DSR     UART1_RTS       */      \
 {GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_0}, /* GPIO18 UART0_CTS                     */      \
index e04efb7..2871a6c 100644 (file)
 {GPIO0_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_0}, /* GPIO1        EBC_DATA_PAR(1)                 */      \
 {GPIO0_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_0}, /* GPIO2        EBC_DATA_PAR(2)                 */      \
 {GPIO0_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_0}, /* GPIO3        EBC_DATA_PAR(3)                 */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO4        EBC_DATA(20)    USB2_DATA(4)    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO5        EBC_DATA(21)    USB2_DATA(5)    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO6        EBC_DATA(22)    USB2_DATA(6)    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO7        EBC_DATA(23)    USB2_DATA(7)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO4        EBC_DATA(20)    USB2_DATA(4)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO5        EBC_DATA(21)    USB2_DATA(5)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO6        EBC_DATA(22)    USB2_DATA(6)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO7        EBC_DATA(23)    USB2_DATA(7)    */      \
 {GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO8        CS(1)/NFCE(1)   IRQ(7)          */      \
 {GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO9        CS(2)/NFCE(2)   IRQ(8)          */      \
 {GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO10 CS(3)/NFCE(3) IRQ(9)          */      \
 {GPIO0_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO11 IRQ(6)                                */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO12 EBC_DATA(16)  USB2_DATA(0)    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO13 EBC_DATA(17)  USB2_DATA(1)    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_1}, /* GPIO14 EBC_DATA(18)  USB2_DATA(2)    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_1}, /* GPIO15 EBC_DATA(19)  USB2_DATA(3)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO12 EBC_DATA(16)  USB2_DATA(0)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO13 EBC_DATA(17)  USB2_DATA(1)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO14 EBC_DATA(18)  USB2_DATA(2)    */      \
+{GPIO0_BASE, GPIO_BI,  GPIO_ALT2, GPIO_OUT_0}, /* GPIO15 EBC_DATA(19)  USB2_DATA(3)    */      \
 {GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO16 UART0_DCD     UART1_CTS       */      \
 {GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO17 UART0_DSR     UART1_RTS       */      \
 {GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_0}, /* GPIO18 UART0_CTS                     */      \
index e5051d4..b5ad38f 100644 (file)
 #define   SDR0_CUST0_CHIPSELGAT_EN1   0x00000004       /* Chip Select1 Gating Enable */
 #define   SDR0_CUST0_CHIPSELGAT_EN2   0x00000002       /* Chip Select2 Gating Enable */
 #define   SDR0_CUST0_CHIPSELGAT_EN3   0x00000001       /* Chip Select3 Gating Enable */
+
+#define SDR0_PFC0              0x4100
+#define SDR0_PFC1              0x4101
+#define SDR0_PFC1_U1ME         0x02000000
+#define SDR0_PFC1_U0ME         0x00080000
+#define SDR0_PFC1_U0IM         0x00040000
+#define SDR0_PFC1_SIS          0x00020000
+#define SDR0_PFC1_DMAAEN       0x00010000
+#define SDR0_PFC1_DMADEN       0x00008000
+#define SDR0_PFC1_USBEN                0x00004000
+#define SDR0_PFC1_AHBSWAP      0x00000020
+#define SDR0_PFC1_USBBIGEN     0x00000010
+#define SDR0_PFC1_GPT_FREQ     0x0000000f
 #endif
 
 #endif /* __PPC405_H__ */