blob: 88c0514c4f95d6e0ac281a9898b8b448cc456428 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
/******************************************************************************
*
* Copyright (c) 2007 Windond Electronics Corp.
* All rights reserved.
*
* $Workfile: cfi.h $
*
*
******************************************************************************/
#ifndef __CFI_H__
#define __CFI_H__
#define SELECT_QUERY_MODE(_base_) do{*(unsigned short volatile *)(((_base_) & 0xFFF00000) + (0x55 << 1)) = 0x98;}while(0)
#define DESELECT_QUERY_MODE(_base_) do{*(unsigned short volatile *)((_base_) & 0xFFF00000) = 0xF0;\
*(unsigned short volatile *)((_base_) & 0xFFF00000) = 0xFF;}while(0)
#define CFI_READ(_base_, _offset_, _var_) do{_var_ = *(unsigned short volatile *)(((_base_) & 0xFFF00000) + ((_offset_) << 1));}while(0)
#define CFI_WRITE(_base_, _offset_, _var_) do{*(unsigned short volatile *)(((_base_) /*& 0xFFF00000*/) + ((_offset_) << 1)) = (_var_);}while(0)
#define AMD_CMD_SET 0x0002
#define INTEL_CMD_SET 0x0003
struct cfi_erase_block_region_info {
unsigned int size;
unsigned int num;
};
struct cfi_command{
int (*write) (unsigned int address, unsigned char *data, unsigned int size);
int (*erase) (unsigned int address, unsigned int size);
};
extern unsigned int cfiGetBlockSize(unsigned int address);
extern unsigned int cfiGetFlashSize(void);
extern int cfiGetFlashInfo(void);
extern struct cfi_command cfiCmd;
#endif // #ifdef __CFI_H__
|