Blame view
include/dataflash.h
7.53 KB
2abbe0754 * Patch by Nicola... |
1 2 3 4 5 |
/* * (C) Copyright 2003 * Data Flash Atmel Description File * Author : Hamid Ikdoumi (Atmel) * |
3765b3e7b Coding Style clea... |
6 |
* SPDX-License-Identifier: GPL-2.0+ |
2abbe0754 * Patch by Nicola... |
7 8 9 10 11 12 13 14 15 16 17 18 |
*/ /* 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 |
2abbe0754 * Patch by Nicola... |
19 |
#include "config.h" |
5779d8d98 * Patch by Nicola... |
20 |
/*number of protected area*/ |
5604e2178 Cleanup DataFlash... |
21 |
#define NB_DATAFLASH_AREA 5 |
d4fc6012f Add MACH_TYPE rec... |
22 |
|
6d0f6bcf3 rename CFG_ macro... |
23 |
#ifdef CONFIG_SYS_NO_FLASH |
d4fc6012f Add MACH_TYPE rec... |
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
/*----------------------------------------------------------------------- * 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 |
6d0f6bcf3 rename CFG_ macro... |
49 |
#endif /* CONFIG_SYS_NO_FLASH */ |
2abbe0754 * Patch by Nicola... |
50 |
|
5779d8d98 * Patch by Nicola... |
51 |
/*define the area structure*/ |
2abbe0754 * Patch by Nicola... |
52 |
typedef struct { |
5779d8d98 * Patch by Nicola... |
53 54 55 |
unsigned long start; unsigned long end; unsigned char protected; |
d4fc6012f Add MACH_TYPE rec... |
56 |
unsigned char setenv; |
f01dbb542 Coding style clea... |
57 |
unsigned char label[20]; |
5779d8d98 * Patch by Nicola... |
58 |
} dataflash_protect_t; |
2abbe0754 * Patch by Nicola... |
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
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; |
5779d8d98 * Patch by Nicola... |
92 |
dataflash_protect_t area_list[NB_DATAFLASH_AREA]; /* area protection status */ |
2abbe0754 * Patch by Nicola... |
93 94 95 96 97 98 99 100 101 |
} 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; |
2abbe0754 * Patch by Nicola... |
102 103 104 105 106 |
typedef struct _AT91S_DATAFLASH_INFO { AT91S_DataflashDesc Desc; AT91S_DataflashFeatures Device; /* Pointer on a dataflash features array */ unsigned long logical_address; |
d4fc6012f Add MACH_TYPE rec... |
107 |
unsigned long end_address; |
2abbe0754 * Patch by Nicola... |
108 |
unsigned int id; /* device id */ |
2abbe0754 * Patch by Nicola... |
109 |
} AT91S_DATAFLASH_INFO, *AT91PS_DATAFLASH_INFO; |
c3a60cb3b Clean up dataflas... |
110 111 112 113 |
struct dataflash_addr { unsigned long addr; int cs; }; |
2abbe0754 * Patch by Nicola... |
114 |
/*-------------------------------------------------------------------------------------------------*/ |
2abbe0754 * Patch by Nicola... |
115 |
#define AT45DB161 0x2c |
c6457e3b8 DataFlash AT45DB0... |
116 |
#define AT45DB021 0x14 |
f77d92a3f DataFlash: AT45DB... |
117 |
#define AT45DB081 0x24 |
2abbe0754 * Patch by Nicola... |
118 119 |
#define AT45DB321 0x34 #define AT45DB642 0x3c |
5779d8d98 * Patch by Nicola... |
120 |
#define AT45DB128 0x10 |
d4fc6012f Add MACH_TYPE rec... |
121 |
#define PAGES_PER_BLOCK 8 |
2abbe0754 * Patch by Nicola... |
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
#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 */ /*-------------------------------------------------------------------------------------------------*/ |
5779d8d98 * Patch by Nicola... |
181 182 |
extern int size_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr, unsigned long size); extern int prot_dataflash (AT91PS_DataFlash pdataFlash, unsigned long addr); |
d4fc6012f Add MACH_TYPE rec... |
183 |
extern int addr2ram(ulong addr); |
5779d8d98 * Patch by Nicola... |
184 |
extern int dataflash_real_protect (int flag, unsigned long start_addr, unsigned long end_addr); |
2abbe0754 * Patch by Nicola... |
185 186 |
extern int addr_dataflash (unsigned long addr); extern int read_dataflash (unsigned long addr, unsigned long size, char *result); |
abdbd67cb dataflash: fix pa... |
187 188 |
extern int write_dataflash(unsigned long addr_dest, unsigned long addr_src, unsigned long size); |
0901d9f89 env: clean env_da... |
189 |
extern int AT91F_DataflashInit(void); |
2abbe0754 * Patch by Nicola... |
190 191 |
extern void dataflash_print_info (void); extern void dataflash_perror (int err); |
c3a60cb3b Clean up dataflas... |
192 |
extern void AT91F_DataflashSetEnv (void); |
2abbe0754 * Patch by Nicola... |
193 |
|
6d0f6bcf3 rename CFG_ macro... |
194 |
extern struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS]; |
c3a60cb3b Clean up dataflas... |
195 196 |
extern dataflash_protect_t area_list[NB_DATAFLASH_AREA]; extern AT91S_DATAFLASH_INFO dataflash_info[]; |
2abbe0754 * Patch by Nicola... |
197 |
#endif |