* Some code cleanup
[pandora-u-boot.git] / include / flash.h
index 32f4f4a..bda11d5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2000, 2001
+ * (C) Copyright 2000-2004
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * See file CREDITS for list of people who contributed to this
@@ -42,7 +42,9 @@ typedef struct {
        ulong   erase_blk_tout;         /* maximum block erase timeout          */
        ulong   write_tout;             /* maximum write timeout                */
        ulong   buffer_write_tout;      /* maximum buffer write timeout         */
-
+       ushort  vendor;                 /* the primary vendor id                */
+       ushort  cmd_reset;              /* Vendor specific reset command        */
+       ushort  interface;              /* used for x8/x16 adjustments          */
 #endif
 } flash_info_t;
 
@@ -60,7 +62,17 @@ typedef struct {
 #define FLASH_CFI_BY16         0x02
 #define FLASH_CFI_BY32         0x04
 #define FLASH_CFI_BY64         0x08
+/* convert between bit value and numeric value */
+#define CFI_FLASH_SHIFT_WIDTH      3
+/*
+ * Values for the flash device interface
+ */
+#define FLASH_CFI_X8           0x00
+#define FLASH_CFI_X16          0x01
+#define FLASH_CFI_X8X16                0x02
 
+/* convert between bit value and numeric value */
+#define CFI_FLASH_SHIFT_WIDTH      3
 /* Prototypes */
 
 extern unsigned long flash_init (void);
@@ -78,6 +90,8 @@ extern int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt);
 /* board/?/flash.c */
 #if defined(CFG_FLASH_PROTECTION)
 extern int flash_real_protect(flash_info_t *info, long sector, int prot);
+extern void flash_read_user_serial(flash_info_t * info, void * buffer, int offset, int len);
+extern void flash_read_factory_serial(flash_info_t * info, void * buffer, int offset, int len);
 #endif /* CFG_FLASH_PROTECTION */
 
 /*-----------------------------------------------------------------------
@@ -136,6 +150,8 @@ extern int flash_real_protect(flash_info_t *info, long sector, int prot);
 #define AMD_ID_LV116DT 0xC7            /* 29LV116DT   ( 2 M x 8, top boot sect) */
 #define AMD_ID_LV016B  0xc8            /* 29LV016 ID  ( 2 M x 8)               */
 
+#define AMD_ID_PL160CB  0x22452245      /* 29PL160CB ID (16 M, bottom boot sect */
+
 #define AMD_ID_LV400T  0x22B922B9      /* 29LV400T ID ( 4 M, top boot sector)  */
 #define AMD_ID_LV400B  0x22BA22BA      /* 29LV400B ID ( 4 M, bottom boot sect) */
 
@@ -163,10 +179,13 @@ extern int flash_real_protect(flash_info_t *info, long sector, int prot);
 
 #define AMD_ID_DL640   0x227E227E      /* 29DL640D ID (64 M, dual boot sectors)*/
 #define AMD_ID_MIRROR  0x227E227E      /* 1st ID word for MirrorBit family */
-#define AMD_ID_LV640U_2        0x220C220C      /* 2d ID word for AM29LV640M at 0x38 */
-#define AMD_ID_LV640U_3        0x22012201      /* 3d ID word for AM29LV640M at 0x3c */
-#define AMD_ID_LV128U_2 0x22122212     /* 2d ID word for AM29LV128M at 0x38 */
-#define AMD_ID_LV128U_3 0x22002200     /* 3d ID word for AM29LV128M at 0x3c */
+#define AMD_ID_LV640U_2        0x220C220C      /* 2d ID word for AM29LV640M  at 0x38 */
+#define AMD_ID_LV640U_3        0x22012201      /* 3d ID word for AM29LV640M  at 0x3c */
+#define AMD_ID_LV128U_2 0x22122212     /* 2d ID word for AM29LV128M  at 0x38 */
+#define AMD_ID_LV128U_3 0x22002200     /* 3d ID word for AM29LV128M  at 0x3c */
+
+#define AMD_ID_LV320B_2        0x221A221A      /* 2d ID word for AM29LV320MB at 0x38 */
+#define AMD_ID_LV320B_3 0x22002200     /* 3d ID word for AM29LV320MB at 0x3c */
 
 #define AMD_ID_LV640U  0x22D722D7      /* 29LV640U ID (64 M, uniform sectors)  */
 
@@ -175,6 +194,7 @@ extern int flash_real_protect(flash_info_t *info, long sector, int prot);
 
 #define FUJI_ID_29F800BA  0x22582258   /* MBM29F800BA ID  (8M) */
 #define FUJI_ID_29F800TA  0x22D622D6   /* MBM29F800TA ID  (8M) */
+#define FUJI_ID_29LV650UE 0x22d722d7   /* MBM29LV650UE/651UE ID (8M = 128 x 32kWord) */
 
 #define SST_ID_xF200A  0x27892789      /* 39xF200A ID ( 2M = 128K x 16 )       */
 #define SST_ID_xF400A  0x27802780      /* 39xF400A ID ( 4M = 256K x 16 )       */
@@ -210,7 +230,7 @@ extern int flash_real_protect(flash_info_t *info, long sector, int prot);
 #define INTEL_ID_28F640C3T  0x88CC88CC /*  64M = 4M x 16 top boot sector       */
 #define INTEL_ID_28F640C3B  0x88CD88CD /*  64M = 4M x 16 bottom boot sector    */
 
-#define INTEL_ID_28F128J3   0x89189818 /*  16M = 8M x 16 x 128 */
+#define INTEL_ID_28F128J3   0x89188918 /*  16M = 8M x 16 x 128 */
 #define INTEL_ID_28F320J5   0x00140014 /*  32M = 128K x  32    */
 #define INTEL_ID_28F640J5   0x00150015 /*  64M = 128K x  64    */
 #define INTEL_ID_28F320J3A  0x00160016 /*  32M = 128K x  32    */
@@ -320,13 +340,17 @@ extern int flash_real_protect(flash_info_t *info, long sector, int prot);
 #define FLASH_28F320C3B 0x009F         /* Intel 28F320C3B ( 32M = 2M x 16 )    */
 #define FLASH_28F640C3T 0x00A0         /* Intel 28F640C3T ( 64M = 4M x 16 )    */
 #define FLASH_28F640C3B 0x00A1         /* Intel 28F640C3B ( 64M = 4M x 16 )    */
-#define FLASH_AMLV320U 0x00A2          /* AMD 29LV128M    ( 128M = 8M x 16 )   */
+#define FLASH_AMLV320U 0x00A2          /* AMD 29LV320M    ( 32M = 2M x 16 )    */
 #define FLASH_AMLV640U 0x00A4          /* AMD 29LV640M    ( 64M = 4M x 16 )    */
 #define FLASH_AMLV128U 0x00A6          /* AMD 29LV128M    ( 128M = 8M x 16 )   */
+#define FLASH_AMLV320B  0x00A7         /* AMD 29LV320MB   ( 32M = 2M x 16 )    */
+#define FLASH_AMLV320T 0x00A8          /* AMD 29LV320MT   ( 32M = 2M x 16 )    */
 /* Intel 28F256L18T 256M = 128K x 255 + 32k x 4        */
-#define FLASH_28F256L18T 0x00A8
-#define FLASH_AMDL163T 0x00A2          /* AMD AM29DL163T (2M x 16 )                    */
-#define FLASH_AMDL163B 0x00A3
+#define FLASH_28F256L18T 0x00B0
+#define FLASH_AMDL163T 0x00B2          /* AMD AM29DL163T (2M x 16 )                    */
+#define FLASH_AMDL163B 0x00B3
+
+#define FLASH_FUJLV650 0x00B4          /* Fujitsu MBM 29LV650UE/651UE          */
 
 #define FLASH_UNKNOWN  0xFFFF          /* unknown flash type                   */