Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / u-boot / include / dataflash.h
diff --git a/qemu/roms/u-boot/include/dataflash.h b/qemu/roms/u-boot/include/dataflash.h
new file mode 100644 (file)
index 0000000..142b555
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * (C) Copyright 2003
+ * Data Flash Atmel Description File
+ * Author : Hamid Ikdoumi (Atmel)
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/* File Name           : dataflash.h                                   */
+/* Object              : Data Flash Atmel Description File             */
+/* Translator          :                                               */
+/*                                                                     */
+/* 1.0 03/04/01 HI     : Creation                                      */
+/* 1.2 20/10/02 FB     : Adapatation Service and Lib v3                */
+/*----------------------------------------------------------------------*/
+
+#ifndef _DataFlash_h
+#define _DataFlash_h
+
+
+#include "config.h"
+
+/*number of protected area*/
+#define NB_DATAFLASH_AREA              5
+
+#ifdef CONFIG_SYS_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 /* CONFIG_SYS_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;
+
+/*----------------------------------------------------------------------*/
+/* DataFlash Structures                                                        */
+/*----------------------------------------------------------------------*/
+
+/*---------------------------------------------*/
+/* DataFlash Descriptor Structure Definition   */
+/*---------------------------------------------*/
+typedef struct _AT91S_DataflashDesc {
+       unsigned char *tx_cmd_pt;
+       unsigned int tx_cmd_size;
+       unsigned char *rx_cmd_pt;
+       unsigned int rx_cmd_size;
+       unsigned char *tx_data_pt;
+       unsigned int tx_data_size;
+       unsigned char *rx_data_pt;
+       unsigned int rx_data_size;
+       volatile unsigned char state;
+       volatile unsigned char DataFlash_state;
+       unsigned char command[8];
+} AT91S_DataflashDesc, *AT91PS_DataflashDesc;
+
+/*---------------------------------------------*/
+/* DataFlash device definition structure       */
+/*---------------------------------------------*/
+typedef struct _AT91S_Dataflash {
+       int pages_number;                       /* dataflash page number */
+       int pages_size;                         /* dataflash page size */
+       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;
+
+/*---------------------------------------------*/
+/* DataFlash Structure Definition             */
+/*---------------------------------------------*/
+typedef struct _AT91S_DataFlash {
+       AT91PS_DataflashDesc pDataFlashDesc;    /* dataflash descriptor */
+       AT91PS_DataflashFeatures pDevice;       /* Pointer on a dataflash features array */
+} 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 */
+} AT91S_DATAFLASH_INFO, *AT91PS_DATAFLASH_INFO;
+
+struct dataflash_addr {
+       unsigned long addr;
+       int cs;
+};
+/*-------------------------------------------------------------------------------------------------*/
+#define AT45DB161      0x2c
+#define AT45DB021      0x14
+#define AT45DB081      0x24
+#define AT45DB321      0x34
+#define AT45DB642      0x3c
+#define AT45DB128      0x10
+#define        PAGES_PER_BLOCK 8
+
+#define AT91C_DATAFLASH_TIMEOUT                10000   /* For AT91F_DataFlashWaitReady */
+
+/* DataFlash return value */
+#define DATAFLASH_BUSY                 0x00
+#define DATAFLASH_OK                   0x01
+#define DATAFLASH_ERROR                        0x02
+#define DATAFLASH_MEMORY_OVERFLOW      0x03
+#define DATAFLASH_BAD_COMMAND          0x04
+#define DATAFLASH_BAD_ADDRESS          0x05
+
+
+/* Driver State */
+#define IDLE           0x0
+#define BUSY           0x1
+#define ERROR          0x2
+
+/* DataFlash Driver State */
+#define GET_STATUS     0x0F
+
+/*-------------------------------------------------------------------------------------------------*/
+/* Command Definition                                                                             */
+/*-------------------------------------------------------------------------------------------------*/
+
+/* READ COMMANDS */
+#define DB_CONTINUOUS_ARRAY_READ       0xE8    /* Continuous array read */
+#define DB_BURST_ARRAY_READ            0xE8    /* Burst array read */
+#define DB_PAGE_READ                   0xD2    /* Main memory page read */
+#define DB_BUF1_READ                   0xD4    /* Buffer 1 read */
+#define DB_BUF2_READ                   0xD6    /* Buffer 2 read */
+#define DB_STATUS                      0xD7    /* Status Register */
+
+/* PROGRAM and ERASE COMMANDS */
+#define DB_BUF1_WRITE                  0x84    /* Buffer 1 write */
+#define DB_BUF2_WRITE                  0x87    /* Buffer 2 write */
+#define DB_BUF1_PAGE_ERASE_PGM         0x83    /* Buffer 1 to main memory page program with built-In erase */
+#define DB_BUF1_PAGE_ERASE_FASTPGM     0x93    /* Buffer 1 to main memory page program with built-In erase, Fast program */
+#define DB_BUF2_PAGE_ERASE_PGM         0x86    /* Buffer 2 to main memory page program with built-In erase */
+#define DB_BUF2_PAGE_ERASE_FASTPGM     0x96    /* Buffer 1 to main memory page program with built-In erase, Fast program */
+#define DB_BUF1_PAGE_PGM               0x88    /* Buffer 1 to main memory page program without built-In erase */
+#define DB_BUF1_PAGE_FASTPGM           0x98    /* Buffer 1 to main memory page program without built-In erase, Fast program */
+#define DB_BUF2_PAGE_PGM               0x89    /* Buffer 2 to main memory page program without built-In erase */
+#define DB_BUF2_PAGE_FASTPGM           0x99    /* Buffer 1 to main memory page program without built-In erase, Fast program */
+#define DB_PAGE_ERASE                  0x81    /* Page Erase */
+#define DB_BLOCK_ERASE                 0x50    /* Block Erase */
+#define DB_PAGE_PGM_BUF1               0x82    /* Main memory page through buffer 1 */
+#define DB_PAGE_FASTPGM_BUF1           0x92    /* Main memory page through buffer 1, Fast program */
+#define DB_PAGE_PGM_BUF2               0x85    /* Main memory page through buffer 2 */
+#define DB_PAGE_FastPGM_BUF2           0x95    /* Main memory page through buffer 2, Fast program */
+
+/* ADDITIONAL COMMANDS */
+#define DB_PAGE_2_BUF1_TRF             0x53    /* Main memory page to buffer 1 transfert */
+#define DB_PAGE_2_BUF2_TRF             0x55    /* Main memory page to buffer 2 transfert */
+#define DB_PAGE_2_BUF1_CMP             0x60    /* Main memory page to buffer 1 compare */
+#define DB_PAGE_2_BUF2_CMP             0x61    /* Main memory page to buffer 2 compare */
+#define DB_AUTO_PAGE_PGM_BUF1          0x58    /* Auto page rewrite throught buffer 1 */
+#define DB_AUTO_PAGE_PGM_BUF2          0x59    /* Auto page rewrite throught buffer 2 */
+
+/*-------------------------------------------------------------------------------------------------*/
+
+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_dest, unsigned long addr_src,
+                       unsigned long size);
+extern int AT91F_DataflashInit(void);
+
+extern void dataflash_print_info (void);
+extern void dataflash_perror (int err);
+extern void AT91F_DataflashSetEnv (void);
+
+extern struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS];
+extern dataflash_protect_t area_list[NB_DATAFLASH_AREA];
+extern AT91S_DATAFLASH_INFO dataflash_info[];
+#endif