Merge branch 'master' of git://www.denx.de/git/u-boot-mpc83xx
[oweals/u-boot.git] / cpu / mpc5xxx / ide.c
index 05eb8bc718b560931240881a411e22ddcabd839b..df5b4acd0ee61f7012c0ef375141028baf88a51c 100644 (file)
  */
 #include <common.h>
 
-#ifdef CFG_CMD_IDE
+#if defined(CONFIG_CMD_IDE)
 #include <mpc5xxx.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define CALC_TIMING(t) (t + period - 1) / period
 
-#define GPIO_PSC1_4    0x01000000ul
+#ifdef CONFIG_IDE_RESET
+extern void init_ide_reset (void);
+#endif
 
 int ide_preinit (void)
 {
-       DECLARE_GLOBAL_DATA_PTR;
        long period, t0, t1, t2_8, t2_16, t4, ta;
        vu_long reg;
        struct mpc5xxx_sdma *psdma = (struct mpc5xxx_sdma *) MPC5XXX_SDMA;
 
        reg = *(vu_long *) MPC5XXX_GPS_PORT_CONFIG;
+#if defined(CONFIG_TOTAL5200)
+       /* ATA cs0/1 on i2c2 clk/io */
+       reg = (reg & ~0x03000000ul) | 0x02000000ul;
+#else
+       /* ATA cs0/1 on Local Plus cs4/5 */
        reg = (reg & ~0x03000000ul) | 0x01000000ul;
+#endif /* CONFIG_TOTAL5200 */
        *(vu_long *) MPC5XXX_GPS_PORT_CONFIG = reg;
 
        /* All sample codes do that... */
        *(vu_long *) MPC5XXX_ATA_SHARE_COUNT = 0;
 
+#if defined(CONFIG_UC101)
+       /* Configure and reset host */
+       *(vu_long *) MPC5XXX_ATA_HOST_CONFIG =
+               MPC5xxx_ATA_HOSTCONF_SMR | MPC5xxx_ATA_HOSTCONF_FR;
+       udelay (10);
+       *(vu_long *) MPC5XXX_ATA_HOST_CONFIG = 0;
+#else
        /* Configure and reset host */
        *(vu_long *) MPC5XXX_ATA_HOST_CONFIG = MPC5xxx_ATA_HOSTCONF_IORDY |
                MPC5xxx_ATA_HOSTCONF_SMR | MPC5xxx_ATA_HOSTCONF_FR;
        udelay (10);
        *(vu_long *) MPC5XXX_ATA_HOST_CONFIG = MPC5xxx_ATA_HOSTCONF_IORDY;
+#endif
 
        /* Disable prefetch on Commbus */
        psdma->PtdCntrl |= 1;
@@ -70,24 +87,10 @@ int ide_preinit (void)
 
        *(vu_long *) MPC5XXX_ATA_PIO2 = reg;
 
-#if defined (CONFIG_ICECUBE) && defined (CONFIG_IDE_RESET)
-       /* Configure PSC1_4 as GPIO output for ATA reset */
-       *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
-       *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC1_4;
-       *(vu_long *) MPC5XXX_WU_GPIO_DIR |= GPIO_PSC1_4;
-#endif /* defined (CONFIG_ICECUBE) && defined (CONFIG_IDE_RESET) */
+#ifdef CONFIG_IDE_RESET
+       init_ide_reset ();
+#endif /* CONFIG_IDE_RESET */
 
        return (0);
 }
-
-#if defined (CONFIG_ICECUBE) && defined (CONFIG_IDE_RESET)
-void ide_set_reset (int idereset)
-{
-       if (idereset) {
-               *(vu_long *) MPC5XXX_WU_GPIO_DATA &= ~GPIO_PSC1_4;
-       } else {
-               *(vu_long *) MPC5XXX_WU_GPIO_DATA |= GPIO_PSC1_4;
-       }
-}
-#endif /* defined (CONFIG_ICECUBE) && defined (CONFIG_IDE_RESET) */
-#endif /* CFG_CMD_IDE */
+#endif