]> git.sur5r.net Git - u-boot/blobdiff - board/mpl/vcma9/vcma9.h
Merge branch 'sf' of git://git.denx.de/u-boot-blackfin
[u-boot] / board / mpl / vcma9 / vcma9.h
index bc0e3a460d4750e7c61bb215e82002ec09570184..94fd2faf3bf9a730eacc801ab9dab9ea35595514 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2002
+ * (C) Copyright 2002, 2003
  * David Mueller, ELSOFT AG, d.mueller@elsoft.ch
  *
  * See file CREDITS for list of people who contributed to this
  * Global routines used for VCMA9
  *****************************************************************************/
 
+#include <asm/arch/s3c24x0_cpu.h>
 
 extern int  mem_test(unsigned long start, unsigned long ramsize,int mode);
 
 void print_vcma9_info(void);
 
+#if defined(CONFIG_CMD_NAND)
+typedef enum {
+       NFCE_LOW,
+       NFCE_HIGH
+} NFCE_STATE;
 
-#define PLD_BASE_ADDRESS               0x2C000100
-#define PLD_ID_REG                     (PLD_BASE_ADDRESS + 0)
-#define PLD_NIC_REG                    (PLD_BASE_ADDRESS + 1)
-#define PLD_CAN_REG                    (PLD_BASE_ADDRESS + 2)
-#define PLD_MISC_REG                   (PLD_BASE_ADDRESS + 3)
-#define PLD_GPCD_REG                   (PLD_BASE_ADDRESS + 4)
-#define PLD_BOARD_REG                  (PLD_BASE_ADDRESS + 5)
+static inline void NF_Conf(u16 conf)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
 
+       nand->NFCONF = conf;
+}
 
+static inline void NF_Cmd(u8 cmd)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
 
+       nand->NFCMD = cmd;
+}
+
+static inline void NF_CmdW(u8 cmd)
+{
+       NF_Cmd(cmd);
+       udelay(1);
+}
+
+static inline void NF_Addr(u8 addr)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       nand->NFADDR = addr;
+}
+
+static inline void NF_SetCE(NFCE_STATE s)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       switch (s) {
+               case NFCE_LOW:
+                       nand->NFCONF &= ~(1<<11);
+                       break;
+
+               case NFCE_HIGH:
+                       nand->NFCONF |= (1<<11);
+                       break;
+       }
+}
+
+static inline void NF_WaitRB(void)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       while (!(nand->NFSTAT & (1<<0)));
+}
+
+static inline void NF_Write(u8 data)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       nand->NFDATA = data;
+}
+
+static inline u8 NF_Read(void)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       return(nand->NFDATA);
+}
+
+static inline void NF_Init_ECC(void)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       nand->NFCONF |= (1<<12);
+}
+
+static inline u32 NF_Read_ECC(void)
+{
+       struct s3c2410_nand * const nand = s3c2410_get_base_nand();
+
+       return(nand->NFECC);
+}
+
+#endif
+
+/* VCMA9 PLD regsiters */
+typedef struct {
+       u8      ID;
+       u8      NIC;
+       u8      CAN;
+       u8      MISC;
+       u8      GPCD;
+       u8      BOARD;
+       u8      SDRAM;
+} /*__attribute__((__packed__))*/ VCMA9_PLD;
+
+#define VCMA9_PLD_BASE 0x2C000100
+static inline VCMA9_PLD *VCMA9_get_base_PLD(void)
+{
+       return (VCMA9_PLD * const)VCMA9_PLD_BASE;
+}