root / lab4 / .minix-src / include / sys / flashio.h @ 14
History | View | Annotate | Download (3.28 KB)
1 |
/* $NetBSD: flashio.h,v 1.4 2011/06/28 20:49:43 ahoka Exp $ */
|
---|---|
2 |
|
3 |
/*-
|
4 |
* Copyright (c) 2011 Department of Software Engineering,
|
5 |
* University of Szeged, Hungary
|
6 |
* Copyright (c) 2011 Adam Hoka <ahoka@NetBSD.org>
|
7 |
* Copyright (c) 2010 David Tengeri <dtengeri@inf.u-szeged.hu>
|
8 |
* All rights reserved.
|
9 |
*
|
10 |
* This code is derived from software contributed to The NetBSD Foundation
|
11 |
* by the Department of Software Engineering, University of Szeged, Hungary
|
12 |
*
|
13 |
* Redistribution and use in source and binary forms, with or without
|
14 |
* modification, are permitted provided that the following conditions
|
15 |
* are met:
|
16 |
* 1. Redistributions of source code must retain the above copyright
|
17 |
* notice, this list of conditions and the following disclaimer.
|
18 |
* 2. Redistributions in binary form must reproduce the above copyright
|
19 |
* notice, this list of conditions and the following disclaimer in the
|
20 |
* documentation and/or other materials provided with the distribution.
|
21 |
*
|
22 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
23 |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
24 |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
25 |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
26 |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
27 |
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
28 |
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
29 |
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
30 |
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
31 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
32 |
* SUCH DAMAGE.
|
33 |
*/
|
34 |
|
35 |
#ifndef _FLASHIO_H_
|
36 |
#define _FLASHIO_H_
|
37 |
|
38 |
#include <sys/ioctl.h> |
39 |
|
40 |
/* this header may be used fron the kernel */
|
41 |
#if defined(_KERNEL) || defined(_STANDALONE)
|
42 |
#include <sys/types.h> |
43 |
#else
|
44 |
#include <stdint.h> |
45 |
#include <stdbool.h> |
46 |
#endif
|
47 |
|
48 |
enum {
|
49 |
FLASH_ERASE_DONE = 0x0,
|
50 |
FLASH_ERASE_FAILED = 0x1
|
51 |
}; |
52 |
|
53 |
enum {
|
54 |
FLASH_TYPE_UNKNOWN = 0x0,
|
55 |
FLASH_TYPE_NOR = 0x1,
|
56 |
FLASH_TYPE_NAND = 0x2
|
57 |
}; |
58 |
|
59 |
/* public userspace API */
|
60 |
|
61 |
/* common integer type to address flash */
|
62 |
typedef int64_t flash_off_t;
|
63 |
typedef uint64_t flash_size_t;
|
64 |
typedef uint64_t flash_addr_t;
|
65 |
|
66 |
/**
|
67 |
* struct erase_params - for ioctl erase call
|
68 |
* @addr: start address of the erase
|
69 |
* @len: length of the erase
|
70 |
*/
|
71 |
struct flash_erase_params {
|
72 |
flash_off_t ep_addr; |
73 |
flash_off_t ep_len; |
74 |
}; |
75 |
|
76 |
struct flash_badblock_params {
|
77 |
flash_off_t bbp_addr; |
78 |
bool bbp_isbad;
|
79 |
}; |
80 |
|
81 |
struct flash_info_params {
|
82 |
flash_off_t ip_flash_size; |
83 |
flash_size_t ip_page_size; |
84 |
flash_size_t ip_erase_size; |
85 |
uint8_t ip_flash_type; |
86 |
}; |
87 |
|
88 |
struct flash_dump_params {
|
89 |
flash_off_t dp_block; |
90 |
flash_off_t dp_len; |
91 |
uint8_t *dp_buf; |
92 |
}; |
93 |
|
94 |
enum {
|
95 |
FLASH_IOCTL_ERASE_BLOCK, |
96 |
FLASH_IOCTL_DUMP, |
97 |
FLASH_IOCTL_GET_INFO, |
98 |
FLASH_IOCTL_BLOCK_ISBAD, |
99 |
FLASH_IOCTL_BLOCK_MARKBAD |
100 |
}; |
101 |
|
102 |
#define FLASH_ERASE_BLOCK \
|
103 |
_IOW('&', FLASH_IOCTL_ERASE_BLOCK, struct flash_erase_params) |
104 |
|
105 |
#define FLASH_DUMP \
|
106 |
_IOWR('&', FLASH_IOCTL_DUMP, struct flash_dump_params) |
107 |
|
108 |
#define FLASH_GET_INFO \
|
109 |
_IOWR('&', FLASH_IOCTL_GET_INFO, struct flash_info_params) |
110 |
|
111 |
#define FLASH_BLOCK_ISBAD \
|
112 |
_IOWR('&', FLASH_IOCTL_BLOCK_ISBAD, struct flash_badblock_params) |
113 |
|
114 |
#define FLASH_BLOCK_MARKBAD \
|
115 |
_IOW('&', FLASH_IOCTL_BLOCK_MARKBAD, struct flash_badblock_params) |
116 |
|
117 |
#endif
|
118 |
|