Merge with git+ssh://sr@pollux.denx.org/home/sr/git/u-boot/denx/.git
[oweals/u-boot.git] / cpu / mpc5xxx / ide.c
index 47188691df6c27a75da8a1b51815954ff4f1c771..29b99f6b15ddada936f3b3226dfdddf0e2d5098d 100644 (file)
@@ -27,6 +27,8 @@
 #ifdef CFG_CMD_IDE
 #include <mpc5xxx.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #define CALC_TIMING(t) (t + period - 1) / period
 
 #ifdef CONFIG_IDE_RESET
@@ -35,13 +37,18 @@ extern void init_ide_reset (void);
 
 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... */
@@ -73,7 +80,7 @@ int ide_preinit (void)
        *(vu_long *) MPC5XXX_ATA_PIO2 = reg;
 
 #ifdef CONFIG_IDE_RESET
-        init_ide_reset ();
+       init_ide_reset ();
 #endif /* CONFIG_IDE_RESET */
 
        return (0);