[U-Boot] [PATCH] CPCI750: Add CPCI-HD/2 support

Reinhard Arlt reinhard.arlt at esd.eu
Tue Aug 9 13:48:06 CEST 2011


From: Reinhard Arlt <reinhard.arlt at esd.eu>

This patch adds support for the esd CPCI-HD/2 board to u-boot for CPCI-CPU/750.
As the primary devices on the CPCI-HD/2 board are connected to device 1 and 3,
the device must be swaped. 

Signed-off-by: Reinhard Arlt <reinhard.arlt at esd.eu>

--

diff --git a/board/esd/cpci750/ide.c b/board/esd/cpci750/ide.c
index a3bd1b7..a615c4d 100644
--- a/board/esd/cpci750/ide.c
+++ b/board/esd/cpci750/ide.c
@@ -31,6 +31,19 @@
 #include <pci.h>
 
 extern ulong ide_bus_offset[CONFIG_SYS_IDE_MAXBUS];
+int cpci_hd_type;
+
+int ata_device (int dev)
+{
+	int retval;
+
+	retval = (dev & 1) << 4;
+	if (cpci_hd_type == 2) {
+		retval ^= 1 << 4;
+	}
+	return retval;
+}
+
 
 int ide_preinit (void)
 {
@@ -39,14 +52,21 @@ int ide_preinit (void)
 	int l;
 
 	status = 1;
+	cpci_hd_type = 0;
 	if (CPCI750_SLAVE_TEST != 0)
 		return status;
 	for (l = 0; l < CONFIG_SYS_IDE_MAXBUS; l++) {
 		ide_bus_offset[l] = -ATA_STATUS;
 	}
 	devbusfn = pci_find_device (0x1103, 0x0004, 0);
-	if (devbusfn == -1)
+	if (devbusfn != -1) {
+		cpci_hd_type = 1;
+	} else {
 	        devbusfn = pci_find_device (0x1095, 0x3114, 0);
+		if (devbusfn != -1) {
+			cpci_hd_type = 2;
+		}
+	}
 	if (devbusfn != -1) {
 		ulong *ide_bus_offset_ptr;
 
diff --git a/include/ata.h b/include/ata.h
index b51475d..3b2d737 100644
--- a/include/ata.h
+++ b/include/ata.h
@@ -82,7 +82,9 @@
 /*
  * Device / Head Register Bits
  */
+#ifndef ATA_DEVICE
 #define ATA_DEVICE(x)	((x & 1)<<4)
+#endif /* ATA_DEVICE */
 #define ATA_LBA		0xE0
 
 /*
diff --git a/include/configs/CPCI750.h b/include/configs/CPCI750.h
index 92ffaaa..899c40c 100644
--- a/include/configs/CPCI750.h
+++ b/include/configs/CPCI750.h
@@ -188,6 +188,8 @@
 #define CONFIG_SYS_I2C_MULTI_EEPROMS
 #define CONFIG_SYS_I2C_SPEED	80000		/* I2C speed default */
 
+#define CONFIG_PRAM 0
+
 #define CONFIG_SYS_GT_DUAL_CPU			/* also for JTAG even with one cpu */
 #define CONFIG_SYS_LONGHELP			/* undef to save memory		*/
 #define CONFIG_SYS_PROMPT	"=> "		/* Monitor Command Prompt	*/
@@ -242,11 +244,6 @@
 
 #define CONFIG_SYS_TCLK		133000000
 
-/*#define CONFIG_SYS_750FX_HID0		0x8000c084*/
-#define CONFIG_SYS_750FX_HID0		0x80008484
-#define CONFIG_SYS_750FX_HID1		0x54800000
-#define CONFIG_SYS_750FX_HID2		0x00000000
-
 /*
  * Low Level Configuration Settings
  * (address mappings, register initial values, etc.)
@@ -458,7 +455,11 @@
 #define CONFIG_SYS_ATA_DATA_OFFSET	0x0000	/* Offset for data I/O			*/
 #define CONFIG_SYS_ATA_REG_OFFSET	0x0000	/* Offset for normal register accesses	*/
 #define CONFIG_SYS_ATA_ALT_OFFSET	0x0000	/* Offset for alternate registers	*/
-
+#ifndef __ASSEMBLY__
+int ata_device(int dev);
+#endif
+#define ATA_DEVICE(dev)                 ata_device(dev)
+#define CONFIG_ATAPI                    1
 
 /*----------------------------------------------------------------------
  * Initial BAT mappings
@@ -498,8 +499,8 @@
  * IBAT4 and DBAT4
  * FIXME: ingo disable BATs for Linux Kernel
  */
-#undef SETUP_HIGH_BATS_FX750		/* don't initialize BATS 4-7 */
-/*#define SETUP_HIGH_BATS_FX750*/		/* initialize BATS 4-7 */
+/* #undef SETUP_HIGH_BATS_FX750	*/	/* don't initialize BATS 4-7 */
+#define SETUP_HIGH_BATS_FX750		/* initialize BATS 4-7 */
 
 #ifdef SETUP_HIGH_BATS_FX750
 #define CONFIG_SYS_IBAT4L (CONFIG_SYS_SDRAM1_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
@@ -623,4 +624,6 @@
 #define CPCI750_ECC_TEST	(((in8(0xf0300000) & 0x02) == 0) ? 1 : 0)
 #define CONFIG_SYS_PLD_VER	0xf0e00000
 
+#define CONFIG_OF_LIBFDT 1
+
 #endif	/* __CONFIG_H */




More information about the U-Boot mailing list