[U-Boot-Users] [PATCH] ide arm support

michael trimarchi at gandalf.sssup.it
Mon Feb 11 21:40:53 CET 2008


Add ide support to the arm cpu. Tested on arm little endian
machine. Include #define __io in config board file.

Signed-off-by: Michael Trimarchi <trimarchimichael at yahoo.it>
---

diff --git a/common/cmd_ide.c b/common/cmd_ide.c
index c38be4f..e507c15 100644
--- a/common/cmd_ide.c
+++ b/common/cmd_ide.c
@@ -934,7 +934,14 @@ output_data(int dev, ulong *sect_buf, int words)
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
+#ifndef __ARM__
 	outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words<<1);
+#else
+	int i = words;
+	u16 *buf = (u16 *) sect_buf;
+	for (i = 0; i < (words << 1); i++, buf++) 
+		outw(ATA_CURR_BASE(dev) + ATA_DATA_REG, buf);
+#endif
 }
 #endif	/* __PPC__ */
 
@@ -992,7 +999,14 @@ input_data(int dev, ulong *sect_buf, int words)
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
+#ifndef __ARM__
 	insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
+#else
+	int i;
+	volatile u16 *buf = (u16 *) sect_buf;
+	for(i = 0; i < (words << 1); i++, buf++)
+		*buf = inw(ATA_CURR_BASE(dev) + ATA_DATA_REG);
+#endif
 }
 
 #endif	/* __PPC__ */
diff --git a/lib_arm/board.c b/lib_arm/board.c
index 7e7a282..ddf4d5f 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -435,6 +435,12 @@ extern void dm644x_eth_set_mac_addr (const u_int8_t *addr);
 	reset_phy();
 #endif
 #endif
+
+#if defined(CONFIG_CMD_IDE)
+	puts("IDE:   ");
+	ide_init();
+#endif
+
 	/* main_loop() can return to retry autoboot, if so just run it again. */
 	for (;;) {
 		main_loop ();





More information about the U-Boot mailing list