NT4/private/ntos/nthals/halalpha/am29f400.h
2020-09-30 17:12:29 +02:00

98 lines
2.4 KiB
C

#ifndef _AM29F400_H_
#define _AM29F400_H_
//
// The AMD is a full 1/2 megabyte broken into the following sectors:
//
// 0x00000 .. 0x03fff -- > Section 1 // SROM
// 0x04000 .. 0x05fff -- > Section 2 // NVRAM_0
// 0x06000 .. 0x07fff -- > Section 3 // NVRAM_1
// 0x08000 .. 0x0ffff -- > Section 4 // DROM
// 0x10000 .. 0x1ffff -- > Section 5 // ARC starts here
// 0x20000 .. 0x2ffff -- > Section 6
// 0x30000 .. 0x3ffff -- > Section 7
// 0x40000 .. 0x4ffff -- > Section 8
// 0x50000 .. 0x5ffff -- > Section 8
// 0x60000 .. 0x6ffff -- > Section 9
// 0x70000 .. 0x7ffff -- > Section 10
//
// Name the blocks
//
#define SECTOR_1_BASE 0x0
#define SECTOR_2_BASE 0x4000
#define SECTOR_3_BASE 0x6000
#define SECTOR_4_BASE 0x8000
#define SECTOR_5_BASE 0x10000
#define SECTOR_1_SIZE (SECTOR_2_BASE - SECTOR_1_BASE)
#define SECTOR_2_SIZE (SECTOR_3_BASE - SECTOR_2_BASE)
#define SECTOR_3_SIZE (SECTOR_4_BASE - SECTOR_3_BASE)
#define SECTOR_4_SIZE (SECTOR_5_BASE - SECTOR_4_BASE)
#define SECTOR_5_SIZE 0x10000
#define ARC_SECTOR_SIZE SECTOR_5_SIZE
//
// The largest addressable offset
//
#define Am29F400_DEVICE_SIZE 0x7ffff
//
// What an erased data byte looks like
//
#define Am29F400_ERASED_DATA 0xff
//
// The command writing sequence for read/auto select/write
//
#define COMMAND_READ_RESET 0xf0
#define COMMAND_ADDR1 0xaaaa
#define COMMAND_DATA1 0xaa
#define COMMAND_ADDR2 0x5555
#define COMMAND_DATA2 0x55
#define COMMAND_ADDR3 0xaaaa
#define COMMAND_DATA3_READ 0xf0 // then {addr,data}
#define COMMAND_DATA3_AUTOSELECT 0x90
#define COMMAND_DATA3_PROGRAM 0xA0 // then {addr,data}
#define COMMAND_DATA3 0x80 // for the additional ops
//
// and additional bus cyles for chip and sector erase
//
#define COMMAND_ADDR4 0xaaaa
#define COMMAND_DATA4 0xaa
#define COMMAND_ADDR5 0x5555
#define COMMAND_DATA5 0x55
// for SECTOR ERASE, the addr is the sector number
#define COMMAND_DATA6_SECTOR_ERASE 0x30
#define COMMAND_ADDR6 0xaaaa
#define COMMAND_DATA6_CHIP_ERASE 0x10
//
// This is the Am29F400 made by AMD
//
#define MANUFACTURER_ID 0x01
#define DEVICE_ID 0xab
//
// Max attempts
//
#define MAX_FLASH_READ_ATTEMPTS 0x800000
#include "pflash.h"
#endif // _AM29F400_H_