summaryrefslogtreecommitdiffstats
path: root/uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2011-03-18 19:56:30 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2011-03-18 19:56:30 (GMT)
commitb10d9039a678f38ed48f4cf032c6b3bc82848594 (patch)
treefb0f35237b91b33d0694b8213d89cef0e84a80b8 /uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h
parent569556c4a762771f01d767db95ad18966cedd2f7 (diff)
downloadopenipcam-b10d9039a678f38ed48f4cf032c6b3bc82848594.zip
openipcam-b10d9039a678f38ed48f4cf032c6b3bc82848594.tar.gz
openipcam-b10d9039a678f38ed48f4cf032c6b3bc82848594.tar.bz2
Winbond flash support.
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h')
-rw-r--r--uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h b/uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h
new file mode 100644
index 0000000..19f2a65
--- /dev/null
+++ b/uClinux-2.4.20-uc1/drivers/block/wbflash/cfi.h
@@ -0,0 +1,39 @@
+/******************************************************************************
+ *
+ * Copyright (c) 2007 Windond Electronics Corp.
+ * All rights reserved.
+ *
+ * $Workfile: cfi.h $
+ *
+ *
+ ******************************************************************************/
+#ifndef __CFI_H__
+#define __CFI_H__
+
+#define SELECT_QUERY_MODE(_base_) do{*(unsigned short volatile *)(((_base_) & 0xFFF00000) + (0x55 << 1)) = 0x98;}while(0)
+#define DESELECT_QUERY_MODE(_base_) do{*(unsigned short volatile *)((_base_) & 0xFFF00000) = 0xF0;\
+ *(unsigned short volatile *)((_base_) & 0xFFF00000) = 0xFF;}while(0)
+
+#define CFI_READ(_base_, _offset_, _var_) do{_var_ = *(unsigned short volatile *)(((_base_) & 0xFFF00000) + ((_offset_) << 1));}while(0)
+#define CFI_WRITE(_base_, _offset_, _var_) do{*(unsigned short volatile *)(((_base_) /*& 0xFFF00000*/) + ((_offset_) << 1)) = (_var_);}while(0)
+
+#define AMD_CMD_SET 0x0002
+#define INTEL_CMD_SET 0x0003
+
+struct cfi_erase_block_region_info {
+ unsigned int size;
+ unsigned int num;
+};
+
+
+struct cfi_command{
+ int (*write) (unsigned int address, unsigned char *data, unsigned int size);
+ int (*erase) (unsigned int address, unsigned int size);
+};
+
+extern unsigned int cfiGetBlockSize(unsigned int address);
+extern unsigned int cfiGetFlashSize(void);
+extern int cfiGetFlashInfo(void);
+extern struct cfi_command cfiCmd;
+
+#endif // #ifdef __CFI_H__