]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - board/emk/top5200/top5200.c
Change initdram() return type to phys_size_t
[karo-tx-uboot.git] / board / emk / top5200 / top5200.c
index 3969e2aa12a6239f156fc6ba4740cad5eb3cea45..27886261c779bf0bf2d18b89930166ab374d1e06 100644 (file)
@@ -32,7 +32,7 @@
  * initialize SDRAM/DDRAM controller.
  * TBD: get data from I2C EEPROM
  *****************************************************************************/
-long int initdram (int board_type)
+phys_size_t initdram (int board_type)
 {
        ulong dramsize = 0;
 #ifndef CFG_RAMBOOT
@@ -57,7 +57,7 @@ long int initdram (int board_type)
        *(vu_long *)MPC5XXX_SDRAM_CTRL = CFG_DRAM_CONTROL | MODE_EN;
        /* precharge all banks */
        *(vu_long *)MPC5XXX_SDRAM_CTRL = CFG_DRAM_CONTROL | MODE_EN | SOFT_PRE;
-#if CFG_DRAM_DDR
+#ifdef CFG_DRAM_DDR
        /* set extended mode register */
        *(vu_short *)MPC5XXX_SDRAM_MODE = CFG_DRAM_EMODE;
 #endif
@@ -113,11 +113,15 @@ int checkboard (void)
 #if defined (CONFIG_EVAL5200)
        puts ("Board: EMK TOP5200 on EVAL5200\n");
 #else
+#if defined (CONFIG_LITE5200)
+       puts ("Board: LITE5200\n");
+#else
 #if defined (CONFIG_MINI5200)
        puts ("Board: EMK TOP5200 on MINI5200\n");
 #else
        puts ("Board: EMK TOP5200\n");
 #endif
+#endif
 #endif
        return 0;
 }
@@ -155,54 +159,11 @@ void flash_afterinit(uint bank, ulong start, ulong size)
  *****************************************************************************/
 int misc_init_r (void)
 {
+#if !defined (CONFIG_LITE5200)
        /* read 'factory' part of EEPROM */
-       uchar buf[81];
-       uchar *p;
-       uint length;
-       uint addr;
-       uint len;
-
-       /* get length first */
-       addr = CFG_FACT_OFFSET;
-       if (eeprom_read (CFG_I2C_FACT_ADDR, addr, buf, 2)) {
-bailout:
-               printf ("cannot read factory configuration\n");
-               printf ("be sure to set ethaddr yourself!\n");
-               return 0;
-       }
-       length = buf[0] + (buf[1] << 8);
-       addr += 2;
-
-       /* sanity check */
-       if (length < 20 || length > CFG_FACT_SIZE - 2)
-               goto bailout;
-
-       /* read lines */
-       while (length > 0) {
-               /* read one line */
-               len = length > 80 ? 80 : length;
-               if (eeprom_read (CFG_I2C_FACT_ADDR, addr, buf, len))
-                       goto bailout;
-               /* mark end of buffer */
-               buf[len] = 0;
-               /* search end of line */
-               for (p = buf; *p && *p != 0x0a; p++);
-               if (!*p)
-                       goto bailout;
-               *p++ = 0;
-               /* advance to next line start */
-               length -= p - buf;
-               addr += p - buf;
-               /*printf ("%s\n", buf); */
-               /* search for our specific entry */
-               if (!strncmp ((char *) buf, "[RLA/lan/Ethernet] ", 19)) {
-                       setenv ("ethaddr", buf + 19);
-               } else if (!strncmp ((char *) buf, "[BOARD/SERIAL] ", 15)) {
-                       setenv ("serial#", buf + 15);
-               } else if (!strncmp ((char *) buf, "[BOARD/TYPE] ", 13)) {
-                       setenv ("board_id", buf + 13);
-               }
-       }
+       extern void read_factory_r (void);
+       read_factory_r ();
+#endif
        return (0);
 }
 
@@ -219,3 +180,29 @@ void pci_init_board(void)
        pci_mpc5xxx_init(&hose);
 }
 #endif
+
+/*****************************************************************************
+ * provide the IDE Reset Function
+ *****************************************************************************/
+#if defined(CONFIG_CMD_IDE) && defined(CONFIG_IDE_RESET)
+
+void init_ide_reset (void)
+{
+       debug ("init_ide_reset\n");
+
+       /* Configure PSC1_4 as GPIO output for ATA reset */
+       *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
+       *(vu_long *) MPC5XXX_WU_GPIO_DIR    |= GPIO_PSC1_4;
+}
+
+void ide_set_reset (int idereset)
+{
+       debug ("ide_reset(%d)\n", idereset);
+
+       if (idereset) {
+               *(vu_long *) MPC5XXX_WU_GPIO_DATA_O &= ~GPIO_PSC1_4;
+       } else {
+               *(vu_long *) MPC5XXX_WU_GPIO_DATA_O |=  GPIO_PSC1_4;
+       }
+}
+#endif