This file is indexed.

/usr/include/openwince/device/flash/cfi.h is in openwince-include 0.3.2-3.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 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
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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
/*
 * $Id: cfi.h,v 1.11 2002/11/02 08:31:27 telka Exp $
 *
 * Common Flash Memory Interface (CFI) Declarations
 * Copyright (C) 2002 ETC s.r.o.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the ETC s.r.o. nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Written by Marcel Telka <marcel@telka.sk>, 2002.
 *
 * Documentation:
 * [1] JEDEC Solid State Technology Association, "Common Flash Interface (CFI)",
 *     September 1999, Order Number: JESD68
 * [2] JEDEC Solid State Technology Association, "Common Flash Interface (CFI) ID Codes",
 *     September 2001, Order Number: JEP137-A
 *
 */

#ifndef	FLASH_CFI_H
#define	FLASH_CFI_H

#include <common.h>

#if LANGUAGE == C
#include <stdint.h>
#endif

/* CFI commands - see Table 1 in [1] */

#define	CFI_CMD_READ_ARRAY1		0xFF
#define	CFI_CMD_READ_ARRAY2		0xF0
#define	CFI_CMD_QUERY			0x98
#define	CFI_CMD_QUERY_OFFSET		0x55

/* Query identification string - see 4.3.2 in [1] */

#define	CFI_QUERY_ID_OFFSET		0x10
#define	PRI_VENDOR_ID_OFFSET		0x13
#define	PRI_VENDOR_TABLE_ADR_OFFSET	0x15
#define	ALT_VENDOR_ID_OFFSET		0x17
#define	ALT_VENDOR_TABLE_ADR_OFFSET	0x19

#if LANGUAGE == C
typedef struct cfi_query_identification_string {
	uint16_t pri_id_code;
	void *pri_vendor_tbl;
	uint16_t alt_id_code;
	void *alt_vendor_tbl;
} cfi_query_identification_string_t;
#endif /* LANGUAGE == C */

/* Algorithm command set & control interface ID codes - see Table 1 in [2] */

#define	CFI_VENDOR_NULL			0x0000
#define	CFI_VENDOR_INTEL_ECS		0x0001
#define	CFI_VENDOR_AMD_SCS		0x0002
#define	CFI_VENDOR_INTEL_SCS		0x0003
#define	CFI_VENDOR_AMD_ECS		0x0004
#define	CFI_VENDOR_MITSUBISHI_SCS	0x0100
#define	CFI_VENDOR_MITSUBISHI_ECS	0x0101
#define	CFI_VENDOR_SST_PWCS		0x0102

/* Query system interface information - see 4.3.3 in [1] */

#define	VCC_MIN_WEV_OFFSET		0x1B		/* Vcc Logic Supply Minimum Write/Erase voltage */
#define	VCC_MAX_WEV_OFFSET		0x1C		/* Vcc Logic Supply Maximum Write/Erase voltage */
#define	VPP_MIN_WEV_OFFSET		0x1D		/* Vpp [Programming] Supply Minimum Write/Erase voltage */
#define	VPP_MAX_WEV_OFFSET		0x1E		/* Vpp [Programming] Supply Maximum Write/Erase voltage */
#define	TYP_SINGLE_WRITE_TIMEOUT_OFFSET	0x1F		/* Typical timeout per single byte/word write */
#define	TYP_BUFFER_WRITE_TIMEOUT_OFFSET	0x20		/* Typical timeout for minimum-size buffer write */
#define	TYP_BLOCK_ERASE_TIMEOUT_OFFSET	0x21		/* Typical timeout per individual block erase */
#define	TYP_CHIP_ERASE_TIMEOUT_OFFSET	0x22		/* Typical timeout for full chip erase */
#define	MAX_SINGLE_WRITE_TIMEOUT_OFFSET	0x23		/* Maximum timeout for byte/word write */
#define	MAX_BUFFER_WRITE_TIMEOUT_OFFSET	0x24		/* Maximum timeout for buffer write */
#define	MAX_BLOCK_ERASE_TIMEOUT_OFFSET	0x25		/* Maximum timeout per individual block erase */
#define	MAX_CHIP_ERASE_TIMEOUT_OFFSET	0x26		/* Maximum timeout for chip erase */

#if LANGUAGE == C
typedef struct cfi_query_system_interface_information {
	uint16_t vcc_min_wev;				/* in mV */
	uint16_t vcc_max_wev;				/* in mV */
	uint16_t vpp_min_wev;				/* in mV, 0 - no Vpp pin is present */
	uint16_t vpp_max_wev;				/* in mV, 0 - no Vpp pin is present */
	uint32_t typ_single_write_timeout;		/* in us, 0 - not supported */
	uint32_t typ_buffer_write_timeout;		/* in us, 0 - not supported */
	uint32_t typ_block_erase_timeout;		/* in ms, 0 - not supported */
	uint32_t typ_chip_erase_timeout;		/* in ms, 0 - not supported */
	uint32_t max_single_write_timeout;		/* in us, 0 - not supported */
	uint32_t max_buffer_write_timeout;		/* in us, 0 - not supported */
	uint32_t max_block_erase_timeout;		/* in ms, 0 - not supported */
	uint32_t max_chip_erase_timeout;		/* in ms, 0 - not supported */
} cfi_query_system_interface_information_t;
#endif /* LANGUAGE == C */

/* Device geometry definition - see 4.3.4 in [1] */

#define	DEVICE_SIZE_OFFSET		0x27		/* Device Size */
#define	FLASH_DEVICE_INTERFACE_OFFSET	0x28		/* Flash Device Interface description */
#define	MAX_BYTES_WRITE_OFFSET		0x2A		/* Maximum number of bytes in multi-byte write */
#define	NUMBER_OF_ERASE_REGIONS_OFFSET	0x2C		/* Number of Erase Block Regions */
#define	ERASE_BLOCK_REGION_OFFSET	0x2D		/* Erase Block Region Information */

#if LANGUAGE == C
typedef struct cfi_erase_block_region cfi_erase_block_region_t;

typedef struct cfi_device_geometry {
	uint32_t device_size;				/* in B */
	uint16_t device_interface;			/* see Table 2 in [2] */
	uint32_t max_bytes_write;			/* in B */
	uint8_t number_of_erase_regions;
	cfi_erase_block_region_t *erase_block_regions;
} cfi_device_geometry_t;

struct cfi_erase_block_region {
	uint32_t erase_block_size;			/* in B */
	uint32_t number_of_erase_blocks;
};
#endif /* LANGUAGE == C */

/* Device interface code assignments (for cfi_device_geometry.device_interface) - see Table 2 in [2] */

#define	CFI_INTERFACE_X8		0
#define CFI_INTERFACE_X16		1
#define	CFI_INTERFACE_X8_X16		2
#define	CFI_INTERFACE_X32		3
#define	CFI_INTERFACE_X16_X32		4

/* CFI Query structure - see 4.3.1 in [1] */

#if LANGUAGE == C
typedef struct cfi_query_structure {
	cfi_query_identification_string_t identification_string;
	cfi_query_system_interface_information_t system_interface_info;
	cfi_device_geometry_t device_geometry;
} cfi_query_structure_t;
#endif /* LANGUAGE == C */

#endif /* FLASH_CFI_H */