]> git.sur5r.net Git - u-boot/blobdiff - include/dataflash.h
Merge branch 'master' of git://www.denx.de/git/u-boot-net
[u-boot] / include / dataflash.h
index cc4badfd16b076b49e4678e9c9260db5d9c9f2b5..fbd5e17f44c09b47a0123493be9b1583c3996469 100644 (file)
 #include <asm/arch/hardware.h>
 #include "config.h"
 
+/*number of protected area*/
+#ifdef CONFIG_NEW_PARTITION
+# define NB_DATAFLASH_AREA     6
+#else
+# define NB_DATAFLASH_AREA     4
+#endif
 
-typedef struct {
-       unsigned long base;             /* logical base address for a bank */
-       unsigned long size;             /* total bank size */
-       unsigned long page_count;
-       unsigned long page_size;
-       unsigned long id;               /* device id */
-       unsigned char protect[CFG_MAX_DATAFLASH_PAGES]; /* page protection status */
-} dataflash_info_t;
+#ifdef CFG_NO_FLASH
+
+/*-----------------------------------------------------------------------
+ * return codes from flash_write():
+ */
+# define ERR_OK                                0
+# define ERR_TIMOUT                    1
+# define ERR_NOT_ERASED                        2
+# define ERR_PROTECTED                 4
+# define ERR_INVAL                     8
+# define ERR_ALIGN                     16
+# define ERR_UNKNOWN_FLASH_VENDOR      32
+# define ERR_UNKNOWN_FLASH_TYPE                64
+# define ERR_PROG_ERROR                        128
+
+/*-----------------------------------------------------------------------
+ * Protection Flags for flash_protect():
+ */
+# define FLAG_PROTECT_SET              0x01
+# define FLAG_PROTECT_CLEAR            0x02
+# define FLAG_PROTECT_INVALID          0x03
 
+/*-----------------------------------------------------------------------
+ * Set Environment according to label:
+ */
+# define       FLAG_SETENV             0x80
+#endif /* CFG_NO_FLASH */
+
+/*define the area structure*/
+typedef struct {
+       unsigned long start;
+       unsigned long end;
+       unsigned char protected;
+       unsigned char setenv;
+       unsigned char label[20];
+} dataflash_protect_t;
 
 typedef unsigned int AT91S_DataFlashStatus;
 
@@ -80,6 +113,7 @@ typedef struct _AT91S_Dataflash {
        int page_offset;                        /* page offset in command */
        int byte_mask;                          /* byte mask in command */
        int cs;
+       dataflash_protect_t area_list[NB_DATAFLASH_AREA]; /* area protection status */
 } AT91S_DataflashFeatures, *AT91PS_DataflashFeatures;
 
 /*---------------------------------------------*/
@@ -91,14 +125,13 @@ typedef struct _AT91S_DataFlash {
 } AT91S_DataFlash, *AT91PS_DataFlash;
 
 
-
 typedef struct _AT91S_DATAFLASH_INFO {
 
        AT91S_DataflashDesc Desc;
        AT91S_DataflashFeatures Device; /* Pointer on a dataflash features array */
        unsigned long logical_address;
+       unsigned long end_address;
        unsigned int id;                        /* device id */
-       unsigned char protect[CFG_MAX_DATAFLASH_PAGES]; /* page protection status */
 } AT91S_DATAFLASH_INFO, *AT91PS_DATAFLASH_INFO;
 
 
@@ -107,6 +140,8 @@ typedef struct _AT91S_DATAFLASH_INFO {
 #define AT45DB161      0x2c
 #define AT45DB321      0x34
 #define AT45DB642      0x3c
+#define AT45DB128      0x10
+#define        PAGES_PER_BLOCK 8
 
 #define AT91C_DATAFLASH_TIMEOUT                10000   /* For AT91F_DataFlashWaitReady */
 
@@ -167,10 +202,18 @@ typedef struct _AT91S_DATAFLASH_INFO {
 
 /*-------------------------------------------------------------------------------------------------*/
 
+extern int size_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr, unsigned long size);
+extern int prot_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr);
+extern int addr2ram(ulong addr);
+extern int dataflash_real_protect (int flag, unsigned long start_addr, unsigned long end_addr);
 extern int addr_dataflash (unsigned long addr);
 extern int read_dataflash (unsigned long addr, unsigned long size, char *result);
 extern int write_dataflash (unsigned long addr, unsigned long dest, unsigned long size);
 extern void dataflash_print_info (void);
 extern void dataflash_perror (int err);
 
+#ifdef CONFIG_NEW_DF_PARTITION
+extern int AT91F_DataflashSetEnv (void); #endif
+#endif
+
 #endif