Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / include / asm-mips / mach-db1x00 / db1x00.h
index 65990e1..0f5f4c2 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright 2001 MontaVista Software Inc.
  * Author: MontaVista Software, Inc.
  *             ppopov@mvista.com or source@mvista.com
+ * Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
  *
  * ########################################################################
  *
  *
  * ########################################################################
  *
- * 
+ *
  */
 #ifndef __ASM_DB1X00_H
 #define __ASM_DB1X00_H
 
 
+#ifdef CONFIG_MIPS_DB1550
+
+#define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX
+#define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX
+#define DBDMA_I2S_TX_CHAN  DSCR_CMD0_PSC3_TX
+#define DBDMA_I2S_RX_CHAN  DSCR_CMD0_PSC3_RX
+
+#define SPI_PSC_BASE       PSC0_BASE_ADDR
+#define AC97_PSC_BASE      PSC1_BASE_ADDR
+#define SMBUS_PSC_BASE     PSC2_BASE_ADDR
+#define I2S_PSC_BASE       PSC3_BASE_ADDR
+
+#define BCSR_KSEG1_ADDR 0xAF000000
+#define NAND_PHYS_ADDR  0x20000000
+
+#else
+#define BCSR_KSEG1_ADDR 0xAE000000
+#endif
+
 /*
  * Overlay data structure of the Db1x00 board registers.
- * Registers located at physical 1E0000xx, KSEG1 0xAE0000xx
+ * Registers located at physical 0E0000xx, KSEG1 0xAE0000xx
  */
 typedef volatile struct
 {
-       /*00*/  unsigned long whoami;
-       /*04*/  unsigned long status;
-       /*08*/  unsigned long switches;
-       /*0C*/  unsigned long resets;
-       /*10*/  unsigned long pcmcia;
-       /*14*/  unsigned long specific;
-       /*18*/  unsigned long leds;
-       /*1C*/  unsigned long swreset;
+       /*00*/  unsigned short whoami;
+       unsigned short reserved0;
+       /*04*/  unsigned short status;
+       unsigned short reserved1;
+       /*08*/  unsigned short switches;
+       unsigned short reserved2;
+       /*0C*/  unsigned short resets;
+       unsigned short reserved3;
+       /*10*/  unsigned short pcmcia;
+       unsigned short reserved4;
+       /*14*/  unsigned short specific;
+       unsigned short reserved5;
+       /*18*/  unsigned short leds;
+       unsigned short reserved6;
+       /*1C*/  unsigned short swreset;
+       unsigned short reserved7;
 
 } BCSR;
 
@@ -117,15 +145,6 @@ typedef volatile struct
 #define SET_VCC_VPP(VCC, VPP, SLOT)\
        ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8))
 
-/* MTD CONFIG OPTIONS */
-#if defined(CONFIG_MTD_DB1X00_BOOT) && defined(CONFIG_MTD_DB1X00_USER)
-#define DB1X00_BOTH_BANKS
-#elif defined(CONFIG_MTD_DB1X00_BOOT) && !defined(CONFIG_MTD_DB1X00_USER)
-#define DB1X00_BOOT_ONLY
-#elif !defined(CONFIG_MTD_DB1X00_BOOT) && defined(CONFIG_MTD_DB1X00_USER)
-#define DB1X00_USER_ONLY
-#endif
-
 /* SD controller macros */
 /*
  * Detect card.
@@ -169,5 +188,35 @@ typedef volatile struct
                } \
        } while (0)
 
+
+/* NAND defines */
+/* Timing values as described in databook, * ns value stripped of
+ * lower 2 bits.
+ * These defines are here rather than an SOC1550 generic file because
+ * the parts chosen on another board may be different and may require
+ * different timings.
+ */
+#define NAND_T_H                       (18 >> 2)
+#define NAND_T_PUL                     (30 >> 2)
+#define NAND_T_SU                      (30 >> 2)
+#define NAND_T_WH                      (30 >> 2)
+
+/* Bitfield shift amounts */
+#define NAND_T_H_SHIFT         0
+#define NAND_T_PUL_SHIFT       4
+#define NAND_T_SU_SHIFT                8
+#define NAND_T_WH_SHIFT                12
+
+#define NAND_TIMING    ((NAND_T_H   & 0xF)     << NAND_T_H_SHIFT)   | \
+                       ((NAND_T_PUL & 0xF)     << NAND_T_PUL_SHIFT) | \
+                       ((NAND_T_SU  & 0xF)     << NAND_T_SU_SHIFT)  | \
+                       ((NAND_T_WH  & 0xF)     << NAND_T_WH_SHIFT)
+#define NAND_CS 1
+
+/* should be done by yamon */
+#define NAND_STCFG  0x00400005 /* 8-bit NAND */
+#define NAND_STTIME 0x00007774 /* valid for 396MHz SD=2 only */
+#define NAND_STADDR 0x12000FFF /* physical address 0x20000000 */
+
 #endif /* __ASM_DB1X00_H */