#ifndef _tffs_direct_nor_h_ #define _tffs_direct_nor_h_ /*-------------------------------------------------------------------------------------*\ * \*-------------------------------------------------------------------------------------*/ #define PROGRAM_ERROR_NO_ERROR 0 #define PROGRAM_ERROR_WRITE_FAILED 1 #define PROGRAM_ERROR_CLEAR_FAILED 2 #define PROGRAM_ERROR_MANUFACTURER_FAILED 3 #define PROGRAM_ERROR_LAYOUT_FAILED 4 #define PROGRAM_ERROR_CRC_FAILED 5 #define PROGRAM_ERROR_UNKNOWN 6 #define PROGRAM_ERROR_UNLOCK_FAILED 7 #define CFI_Query 0x98 #define Autosel 0x90 /*-------------------------------------------------------------------------------------*\ * MACRONIX Definitionen \*-------------------------------------------------------------------------------------*/ #define FLASH_OFFSET(ADDR) ((ADDR) << 1) #define Enable_CFI_Query FLASH_OFFSET(0x0055) /*--- address for cfi query enable ---*/ #define MX_Enable_Rom_Write1 FLASH_OFFSET(0x0555) /*--- address1 ---*/ #define MX_Enable_Rom_Write2 FLASH_OFFSET(0x02AA) /*--- address2 ---*/ #define MX_Enable_Rom_Write3 FLASH_OFFSET(0x0555) /*--- address3 ---*/ #define MX_Enable_Rom_Write4 FLASH_OFFSET(0x0555) /*--- address4 ---*/ #define MX_Enable_Rom_Write5 FLASH_OFFSET(0x02AA) /*--- address5 ---*/ #define MX_Enable_Rom_Write6 FLASH_OFFSET(0x0555) /*--- address6 ---*/ #define MX_Enable_Rom_Write1_Data 0xAA /*--- data for address1 ---*/ #define MX_Enable_Rom_Write2_Data 0x55 /*--- data for address2 ---*/ #define MX_Program 0xA0 /*--- program ---*/ #define MX_Autosel 0x90 /*--- autosel ---*/ #define MX_Erase 0x80 /*--- Enable erase ---*/ #define MX_Enable_Rom_Write4_Data 0xAA /*--- data for address4 ---*/ #define MX_Enable_Rom_Write5_Data 0x55 /*--- data for address5 ---*/ #define MX_ChipErase 0x10 /*--- chip erase ---*/ #define MX_SectorErase 0x30 /*--- Sector erase ---*/ #define MX_Enable_Rom_Erase 0x80 /*--- data for chiperase ---*/ #define MX_toggle6 0x40 #define MX_toggle62 0x44 #define MX_Flash_Reset 0xF0 /*--- data for flashreset ---*/ #define MX_Write_Buffer 0x25 #define MX_Program_Buffer 0x29 #define MX_DPB_Entry 0xE0 /*--- Enable DynamicProtectionBits ---*/ #define MX_DPB_Write 0xA0 /*--- Change DynamicProtectionBits ---*/ #define MX_DPB_Exit1 0x90 /*--- Exit DynamicProtectionBits ---*/ #define MX_DPB_Exit2 0x00 /*--- Exit DynamicProtectionBits ---*/ #define MIRRORBIT_DEVICE_ID 0x7E /*--- Mirrorbit Flashs Macronix/Spansion ---*/ /*------------------------------------------------------------------------------------------*\ \*------------------------------------------------------------------------------------------*/ #define MX_MANUFACTURE_ID 0xC2 #define MX_DEVICE_ID_64MB_TOP 0xC9 /*--- MX29LV640AT ---*/ #define MX_DEVICE_ID_64MB_BOTTOM 0xCB /*--- MX29LV640AT ---*/ #define MX_DEVICE_ID_32MB_TOP 0xA7 /*--- MX29LV320AT ---*/ #define MX_DEVICE_ID_32MB_BOTTOM 0xA8 /*--- MX29LV320AB ---*/ #define MX_DEVICE_ID_16MB_TOP 0xC4 /*--- MX29LV160AT ---*/ #define MX_DEVICE_ID_16MB_BOTTOM 0x49 /*--- MX29LV160AB ---*/ #define MX_MEMORY_TYPE_SPI 0x20 /*--- MX25L6405 ---*/ #define MX_SIZE_64MB_SPI 0x17 #define MX_SIZE_128MB_SPI 0x18 /*------------------------------------------------------------------------------------------*\ * Spansion ist identisch zu Macronix \*------------------------------------------------------------------------------------------*/ #define SPANSION_MANUFACTURE_ID 0x01 #define SPANSION_L016A_BOTTOM 0x49 #define SPANSION_L016A_TOP 0xC4 #define SPANSION_L032A_MIRROR_BT 0x1A /*--- kann sowohl Bottom als auch Top sein ---*/ #define SPANSION_L032A_MIRROR_UNIFORM 0x1D #define SPANSION_L064A_MIRROR_BT 0x10 #define SPANSION_L064A_MIRROR_UNIFORM 0x0C #define SPANSION_L064A_MIRROR_UNIFORM_R67 0x13 /*--- wird vom Design nicht unterstützt ---*/ #define SPANSION_MEMORY_TYPE_SPI 0x02 /*--- S25FL064A ---*/ #define SPANSION_MEMORY_TYPE_I_SPI 0x19 /*--- S70FL256P ---*/ #define SPANSION_MEMORY_TYPE_II_SPI 0x20 /*--- S25FL129 ---*/ #define SPANSION_SIZE_64MB_SPI 0x16 /*------------------------------------------------------------------------------------------*\ * ST ist identisch zu Macronix \*------------------------------------------------------------------------------------------*/ #define ST_MANUFACTURE_ID 0x20 #define ST_M29W640GH_GL 0x0C #define ST_M29W640GT_GB 0x10 #define ST_M29W128GH_GL 0x7E /*------------------------------------------------------------------------------------------*\ * offsets cfi \*------------------------------------------------------------------------------------------*/ #define CFI_QRY_STRING 0x10 #define CFI_PRIM_VENDOR_CMD 0x13 #define CFI_SYSTEM_DATA 0x1B #define CFI_GEO_DEVICE_SIZE 0x27 #define CFI_GEO_WRITE_BUFFER_SIZE 0x2A #define CFI_GEO_NUM_ERASE_REGIONS 0x2C #define CFI_GEO_ERASE_INFO 0x2D /*--- macronix spezifisch, die Adresse der Primary Table wird separat ermittelt ---*/ #define MX_BOOTSECTOR_FLAG_OFFSET 0x0F /*------------------------------------------------------------------------------------------*\ \*------------------------------------------------------------------------------------------*/ #define TOP_FLASH 0 #define BOTTOM_FLASH 1 #define UNIFORM_FLASH 2 #define FLASH_BUFFER_SIZE 256 /*-------------------------------------------------------------------------------------*\ * * Defines aus urlader => include/errors.h * \*-------------------------------------------------------------------------------------*/ #define FLASH_SUCCESS 0 #define FLASH_INVAL_ADDR 0x8002 #define FLASH_ID_FAILED 0x8003 #define FLASH_QUERY_FAILED 0x8004 #define FLASH_ERASE_REGIONS 0x8005 #define FLASH_MX_BOTTOM_FAILED 0x8006 /*------------------------------------------------------------------------------------------*\ * neue Fehler für Flashfunktionen - werden negativ ausgegeben * z.B. -FLASH_ERASE_ERROR \*------------------------------------------------------------------------------------------*/ #define FLASH_NO_ERROR 0 #define FLASH_ERASE_ERROR 1 #define FLASH_WRITE_ERROR 2 #define FLASH_BAD_BLOCK 3 #define FLASH_VERIFY_ERROR 4 #define FLASH_SINGLEBIT_ERROR 5 #define FLASH_MULTIBIT_ERROR 6 #define FLASH_PARAMETER_ERROR 7 /*-------------------------------------------------------------------------------------*\ * * Struct's aus urlader => include/flash16.h * \*-------------------------------------------------------------------------------------*/ struct _CFI_System_Data_ { unsigned char min_VCC; unsigned char max_VCC; unsigned char min_VPP; unsigned char max_VPP; unsigned char write_timeout; unsigned char buffer_write_timeout; unsigned char erase_sector_timeout; unsigned char erase_chip_timeout; unsigned char max_write_timeout; unsigned char max_buffer_write_timeout; unsigned char max_erase_sector_timeout; unsigned char max_erase_chip_timeout; }; struct _CFI_Erase_Regions_ { unsigned short blk_num; unsigned int blk_size; unsigned int size; }; struct _CFI_Device_Geometry_ { unsigned short flash_interface_size; unsigned short interface_code; unsigned short writeBuffer_size; unsigned char num_erase_regions; struct _CFI_Erase_Regions_ erase_regions[4]; }; struct _CFI_ { char Query[3]; unsigned int PriVendorCmdSet_ID; unsigned int Addr_ext_Query_Table; unsigned int AltVendorIDCode; unsigned int Addr_Second_ext_Query_Table; }; struct tffs_nor_flash_device { unsigned char Manufacturer; unsigned char ID; unsigned char Organisation; unsigned char Blockmode; unsigned int Size; struct _CFI_ Ident; struct _CFI_System_Data_ System; struct _CFI_Device_Geometry_ Geometry; }; #endif /*--- #ifndef _tffs_direct_nor_h_ ---*/