#define CHIP_ADDR_REG_MAN 0x000000
#define CHIP_ADDR_REG_DEV 0x000001
#define CHIP_ADDR_REG_CFGM 0x000003
#define CHIP_ADDR_REG_CFG(b) (((b)<<16)|2)
#define CHIP_CMD_RST 0xFF
#define CHIP_CMD_RD_ID 0x90
#define CHIP_CMD_RD_QUERY 0x98
#define CHIP_CMD_RD_STAT 0x70
#define CHIP_CMD_CLR_STAT 0x50
#define CHIP_CMD_WR_BUF 0xE8
#define CHIP_CMD_PROG 0x40
#define CHIP_CMD_ERASE1 0x20
#define CHIP_CMD_ERASE2 0xD0
#define CHIP_CMD_ERASE_SUSP 0xB0
#define CHIP_CMD_LOCK 0x60
#define CHIP_CMD_SET_LOCK_BLK 0x01
#define CHIP_CMD_SET_LOCK_MSTR 0xF1
#define CHIP_CMD_CLR_LOCK_BLK 0xD0
#define CHIP_STAT_DPS 0x02
#define CHIP_STAT_VPPS 0x08
#define CHIP_STAT_PSLBS 0x10
#define CHIP_STAT_ECLBS 0x20
#define CHIP_STAT_ESS 0x40
#define CHIP_STAT_RDY 0x80
#define CHIP_STAT_ERR (CHIP_STAT_VPPS | CHIP_STAT_DPS | \
CHIP_STAT_ECLBS | CHIP_STAT_PSLBS)
#define CHIP_RD_ID_LOCK 0x01
#define CHIP_RD_ID_MAN 0x89
#define CHIP_RD_ID_DEV CFG_FLASH_ID
#define CHIP_NBLOCKS CFG_FLASH_NBLOCKS
#define CHIP_BLKSZ (128 * 1024)
#define CHIP_SIZE (CHIP_BLKSZ * CHIP_NBLOCKS)
typedef unsigned long bank_word_t;
typedef volatile bank_word_t *bank_addr_t;
typedef unsigned long bank_size_t;