|
|
1.1 ! root 1: /* ! 2: * Definitions for bulk memory services ! 3: * ! 4: * bulkmem.h 1.13 2001/08/24 12:16:12 ! 5: * ! 6: * The contents of this file are subject to the Mozilla Public License ! 7: * Version 1.1 (the "License"); you may not use this file except in ! 8: * compliance with the License. You may obtain a copy of the License ! 9: * at http://www.mozilla.org/MPL/ ! 10: * ! 11: * Software distributed under the License is distributed on an "AS IS" ! 12: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See ! 13: * the License for the specific language governing rights and ! 14: * limitations under the License. ! 15: * ! 16: * The initial developer of the original code is David A. Hinds ! 17: * <[email protected]>. Portions created by David A. Hinds ! 18: * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. ! 19: * ! 20: * Alternatively, the contents of this file may be used under the ! 21: * terms of the GNU General Public License version 2 (the "GPL"), in ! 22: * which case the provisions of the GPL are applicable instead of the ! 23: * above. If you wish to allow the use of your version of this file ! 24: * only under the terms of the GPL and not to allow others to use ! 25: * your version of this file under the MPL, indicate your decision by ! 26: * deleting the provisions above and replace them with the notice and ! 27: * other provisions required by the GPL. If you do not delete the ! 28: * provisions above, a recipient may use your version of this file ! 29: * under either the MPL or the GPL. ! 30: * bulkmem.h 1.3 1995/05/27 04:49:49 ! 31: */ ! 32: ! 33: #ifndef _LINUX_BULKMEM_H ! 34: #define _LINUX_BULKMEM_H ! 35: ! 36: /* For GetFirstRegion and GetNextRegion */ ! 37: typedef struct region_info_t { ! 38: u_int Attributes; ! 39: u_int CardOffset; ! 40: u_int RegionSize; ! 41: u_int AccessSpeed; ! 42: u_int BlockSize; ! 43: u_int PartMultiple; ! 44: u_char JedecMfr, JedecInfo; ! 45: memory_handle_t next; ! 46: } region_info_t; ! 47: ! 48: #define REGION_TYPE 0x0001 ! 49: #define REGION_TYPE_CM 0x0000 ! 50: #define REGION_TYPE_AM 0x0001 ! 51: #define REGION_PREFETCH 0x0008 ! 52: #define REGION_CACHEABLE 0x0010 ! 53: #define REGION_BAR_MASK 0xe000 ! 54: #define REGION_BAR_SHIFT 13 ! 55: ! 56: /* For OpenMemory */ ! 57: typedef struct open_mem_t { ! 58: u_int Attributes; ! 59: u_int Offset; ! 60: } open_mem_t; ! 61: ! 62: /* Attributes for OpenMemory */ ! 63: #define MEMORY_TYPE 0x0001 ! 64: #define MEMORY_TYPE_CM 0x0000 ! 65: #define MEMORY_TYPE_AM 0x0001 ! 66: #define MEMORY_EXCLUSIVE 0x0002 ! 67: #define MEMORY_PREFETCH 0x0008 ! 68: #define MEMORY_CACHEABLE 0x0010 ! 69: #define MEMORY_BAR_MASK 0xe000 ! 70: #define MEMORY_BAR_SHIFT 13 ! 71: ! 72: typedef struct eraseq_entry_t { ! 73: memory_handle_t Handle; ! 74: u_char State; ! 75: u_int Size; ! 76: u_int Offset; ! 77: void *Optional; ! 78: } eraseq_entry_t; ! 79: ! 80: typedef struct eraseq_hdr_t { ! 81: int QueueEntryCnt; ! 82: eraseq_entry_t *QueueEntryArray; ! 83: } eraseq_hdr_t; ! 84: ! 85: #define ERASE_QUEUED 0x00 ! 86: #define ERASE_IN_PROGRESS(n) (((n) > 0) && ((n) < 0x80)) ! 87: #define ERASE_IDLE 0xff ! 88: #define ERASE_PASSED 0xe0 ! 89: #define ERASE_FAILED 0xe1 ! 90: ! 91: #define ERASE_MISSING 0x80 ! 92: #define ERASE_MEDIA_WRPROT 0x84 ! 93: #define ERASE_NOT_ERASABLE 0x85 ! 94: #define ERASE_BAD_OFFSET 0xc1 ! 95: #define ERASE_BAD_TECH 0xc2 ! 96: #define ERASE_BAD_SOCKET 0xc3 ! 97: #define ERASE_BAD_VCC 0xc4 ! 98: #define ERASE_BAD_VPP 0xc5 ! 99: #define ERASE_BAD_SIZE 0xc6 ! 100: ! 101: /* For CopyMemory */ ! 102: typedef struct copy_op_t { ! 103: u_int Attributes; ! 104: u_int SourceOffset; ! 105: u_int DestOffset; ! 106: u_int Count; ! 107: } copy_op_t; ! 108: ! 109: /* For ReadMemory and WriteMemory */ ! 110: typedef struct mem_op_t { ! 111: u_int Attributes; ! 112: u_int Offset; ! 113: u_int Count; ! 114: } mem_op_t; ! 115: ! 116: #define MEM_OP_BUFFER 0x01 ! 117: #define MEM_OP_BUFFER_USER 0x00 ! 118: #define MEM_OP_BUFFER_KERNEL 0x01 ! 119: #define MEM_OP_DISABLE_ERASE 0x02 ! 120: #define MEM_OP_VERIFY 0x04 ! 121: ! 122: /* For RegisterMTD */ ! 123: typedef struct mtd_reg_t { ! 124: u_int Attributes; ! 125: u_int Offset; ! 126: u_long MediaID; ! 127: } mtd_reg_t; ! 128: ! 129: /* ! 130: * Definitions for MTD requests ! 131: */ ! 132: ! 133: typedef struct mtd_request_t { ! 134: u_int SrcCardOffset; ! 135: u_int DestCardOffset; ! 136: u_int TransferLength; ! 137: u_int Function; ! 138: u_long MediaID; ! 139: u_int Status; ! 140: u_int Timeout; ! 141: } mtd_request_t; ! 142: ! 143: /* Fields in MTD Function */ ! 144: #define MTD_REQ_ACTION 0x003 ! 145: #define MTD_REQ_ERASE 0x000 ! 146: #define MTD_REQ_READ 0x001 ! 147: #define MTD_REQ_WRITE 0x002 ! 148: #define MTD_REQ_COPY 0x003 ! 149: #define MTD_REQ_NOERASE 0x004 ! 150: #define MTD_REQ_VERIFY 0x008 ! 151: #define MTD_REQ_READY 0x010 ! 152: #define MTD_REQ_TIMEOUT 0x020 ! 153: #define MTD_REQ_LAST 0x040 ! 154: #define MTD_REQ_FIRST 0x080 ! 155: #define MTD_REQ_KERNEL 0x100 ! 156: ! 157: /* Status codes */ ! 158: #define MTD_WAITREQ 0x00 ! 159: #define MTD_WAITTIMER 0x01 ! 160: #define MTD_WAITRDY 0x02 ! 161: #define MTD_WAITPOWER 0x03 ! 162: ! 163: /* ! 164: * Definitions for MTD helper functions ! 165: */ ! 166: ! 167: /* For MTDModifyWindow */ ! 168: typedef struct mtd_mod_win_t { ! 169: u_int Attributes; ! 170: u_int AccessSpeed; ! 171: u_int CardOffset; ! 172: } mtd_mod_win_t; ! 173: ! 174: /* For MTDSetVpp */ ! 175: typedef struct mtd_vpp_req_t { ! 176: u_char Vpp1, Vpp2; ! 177: } mtd_vpp_req_t; ! 178: ! 179: /* For MTDRDYMask */ ! 180: typedef struct mtd_rdy_req_t { ! 181: u_int Mask; ! 182: } mtd_rdy_req_t; ! 183: ! 184: enum mtd_helper { ! 185: MTDRequestWindow, MTDModifyWindow, MTDReleaseWindow, ! 186: MTDSetVpp, MTDRDYMask ! 187: }; ! 188: ! 189: #ifdef IN_CARD_SERVICES ! 190: extern int MTDHelperEntry(int func, void *a1, void *a2); ! 191: #else ! 192: extern int MTDHelperEntry(int func, ...); ! 193: #endif ! 194: ! 195: #endif /* _LINUX_BULKMEM_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.