Browse Source

CPCI750: Add CPCI-HD/2 support

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 swapped.

Signed-off-by: Reinhard Arlt <reinhard.arlt@esd.eu>
Reinhard Arlt 12 years ago
parent
commit
2b22460956
3 changed files with 33 additions and 9 deletions
  1. 20 1
      board/esd/cpci750/ide.c
  2. 2 0
      include/ata.h
  3. 11 8
      include/configs/CPCI750.h

+ 20 - 1
board/esd/cpci750/ide.c

@@ -31,6 +31,18 @@
 #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 +51,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;
 

+ 2 - 0
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
 
 /*

+ 11 - 8
include/configs/CPCI750.h

@@ -187,6 +187,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	*/
@@ -241,11 +243,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.)
@@ -457,7 +454,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
@@ -497,8 +498,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)
@@ -622,4 +623,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 */