added low level flash support
[my-code/arm.git] / betty / flash.h
diff --git a/betty/flash.h b/betty/flash.h
new file mode 100644 (file)
index 0000000..8683b93
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * flash.h - header file for the low level flash handling
+ *
+ * author: hackbard@hackdaworld.org
+ *
+ */
+
+#ifndef FLASH_H
+#define FLASH_H
+
+#include "lpc2xxx.h"
+#include "types.h"
+
+/*
+ * defines
+ */
+
+#define BANK0                          '0'
+#define BANK2                          '2'
+#define FLASH_BANK0                    0x80000000
+#define FLASH_BANK2                    0x82000000
+#define FLASH_SIZE                     0x00100000
+
+/* cmd addresses (shifted to left!) */
+#define FLASH_B0F555   (*((volatile unsigned short *)(FLASH_BANK0|0xaaa)))
+#define FLASH_B0F2AA   (*((volatile unsigned short *)(FLASH_BANK0|0x554)))
+#define FLASH_B0F      (*((volatile unsigned short *)(FLASH_BANK0)))
+#define FLASH_B2F555   (*((volatile unsigned short *)(FLASH_BANK2|0xaaa)))
+#define FLASH_B2F2AA   (*((volatile unsigned short *)(FLASH_BANK2|0x554)))
+#define FLASH_B2F      (*((volatile unsigned short *)(FLASH_BANK2)))
+
+/*
+ * function prototypes
+ */
+
+void flash_init(void);
+void flash_reset(u8 bank);
+void flash_sector_erase(u8 flash,u8 sector);
+void flash_chip_erase(u8 bank);
+void flash_unlock_bypass(u8 bank);
+void flash_unlock_bypass_reset(u8 bank);
+int flash_write_word(u32 addr,u16 data);
+int flash_write_buf(u32 addr,u16 *buf,int len);
+void flash_read_buf(u32 addr,u16 *buf,int len);
+
+#endif