CPCI750: Add CPCI-HD/2 support
authorReinhard Arlt <reinhard.arlt@esd.eu>
Thu, 10 Nov 2011 08:51:57 +0000 (08:51 +0000)
committerWolfgang Denk <wd@denx.de>
Sun, 18 Mar 2012 19:10:02 +0000 (20:10 +0100)
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>
board/esd/cpci750/ide.c
include/ata.h
include/configs/CPCI750.h

index a3bd1b73d5801e75755a36dfd50c0a90e84bf9ee..aa001df0b83fae30475004b05d1ae23d866d5937 100644 (file)
 #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;
 
index b51475da814e99b0e40f9ecc6d01c4a6ec0fe2c2..3b2d737e6176cacdef08122fdf7006ac844f8a65 100644 (file)
@@ -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
 
 /*
index d735e613d8ac429dc986e44a7bf7fda0c76b97b4..a6af86c9314507f77e16da6b74912e7561f3f3fd 100644 (file)
 #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       */
 
 #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.)
 #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
  * 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)
 #define CPCI750_ECC_TEST       (((in8(0xf0300000) & 0x02) == 0) ? 1 : 0)
 #define CONFIG_SYS_PLD_VER     0xf0e00000
 
+#define CONFIG_OF_LIBFDT 1
+
 #endif /* __CONFIG_H */