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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
/*
* Header file for UBI support for U-Boot
*
* Adaptation from kernel to U-Boot
*
* Copyright (C) 2005-2007 Samsung Electronics
* Kyungmin Park <kyungmin.park@samsung.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __UBOOT_UBI_H
#define __UBOOT_UBI_H
#include <common.h>
#include <malloc.h>
#include <div64.h>
#include <linux/crc32.h>
#include <linux/mtd/mtd.h>
#ifdef CONFIG_CMD_ONENAND
#include <onenand_uboot.h>
#endif
#include <asm/errno.h>
#define DPRINTK(format, args...) \
do { \
printf("%s[%d]: " format "\n", __func__, __LINE__, ##args); \
} while (0)
/* configurable */
#define CONFIG_MTD_UBI_WL_THRESHOLD 4096
#define CONFIG_MTD_UBI_BEB_RESERVE 1
#define UBI_IO_DEBUG 0
/* debug options (Linux: drivers/mtd/ubi/Kconfig.debug) */
#undef CONFIG_MTD_UBI_DEBUG
#undef CONFIG_MTD_UBI_DEBUG_PARANOID
#undef CONFIG_MTD_UBI_DEBUG_MSG
#undef CONFIG_MTD_UBI_DEBUG_MSG_EBA
#undef CONFIG_MTD_UBI_DEBUG_MSG_WL
#undef CONFIG_MTD_UBI_DEBUG_MSG_IO
#undef CONFIG_MTD_UBI_DEBUG_MSG_BLD
#define CONFIG_MTD_UBI_DEBUG_DISABLE_BGT
/* compiler options */
#define uninitialized_var(x) x = x
/* build.c */
#define get_device(...)
#define put_device(...)
#define ubi_sysfs_init(...) 0
#define ubi_sysfs_close(...) do { } while (0)
static inline int is_power_of_2(unsigned long n)
{
return (n != 0 && ((n & (n - 1)) == 0));
}
/* FIXME */
#define MKDEV(...) 0
#define MAJOR(dev) 0
#define MINOR(dev) 0
#define alloc_chrdev_region(...) 0
#define unregister_chrdev_region(...)
#define class_create(...) __builtin_return_address(0)
#define class_create_file(...) 0
#define class_remove_file(...)
#define class_destroy(...)
#define misc_register(...) 0
#define misc_deregister(...)
/* vmt.c */
#define device_register(...) 0
#define volume_sysfs_init(...) 0
#define volume_sysfs_close(...) do { } while (0)
/* kapi.c */
/* eba.c */
/* io.c */
#define init_waitqueue_head(...) do { } while (0)
#define wait_event_interruptible(...) 0
#define wake_up_interruptible(...) do { } while (0)
#define print_hex_dump(...) do { } while (0)
#define dump_stack(...) do { } while (0)
/* wl.c */
#define task_pid_nr(x) 0
#define set_freezable(...) do { } while (0)
#define try_to_freeze(...) 0
#define set_current_state(...) do { } while (0)
#define kthread_should_stop(...) 0
#define schedule() do { } while (0)
/* upd.c */
static inline unsigned long copy_from_user(void *dest, const void *src,
unsigned long count)
{
memcpy((void *)dest, (void *)src, count);
return 0;
}
/* common */
typedef int spinlock_t;
typedef int wait_queue_head_t;
#define spin_lock_init(...)
#define spin_lock(...)
#define spin_unlock(...)
#define mutex_init(...)
#define mutex_lock(...)
#define mutex_unlock(...)
#define init_rwsem(...) do { } while (0)
#define down_read(...) do { } while (0)
#define down_write(...) do { } while (0)
#define down_write_trylock(...) 0
#define up_read(...) do { } while (0)
#define up_write(...) do { } while (0)
struct kmem_cache { int i; };
#define kmem_cache_create(...) 1
#define kmem_cache_alloc(obj, gfp) malloc(sizeof(struct ubi_wl_entry))
#define kmem_cache_free(obj, size) free(size)
#define kmem_cache_destroy(...)
#define cond_resched() do { } while (0)
#define yield() do { } while (0)
#define KERN_WARNING
#define KERN_ERR
#define KERN_NOTICE
#define KERN_DEBUG
#define GFP_KERNEL 0
#define GFP_NOFS 1
#define __user
#define __init
#define __exit
#define kthread_create(...) __builtin_return_address(0)
#define kthread_stop(...) do { } while (0)
#define wake_up_process(...) do { } while (0)
#define BUS_ID_SIZE 20
struct rw_semaphore { int i; };
struct device {
struct device *parent;
struct class *class;
char bus_id[BUS_ID_SIZE]; /* position on parent bus */
dev_t devt; /* dev_t, creates the sysfs "dev" */
void (*release)(struct device *dev);
};
struct mutex { int i; };
struct kernel_param { int i; };
struct cdev {
int owner;
dev_t dev;
};
#define cdev_init(...) do { } while (0)
#define cdev_add(...) 0
#define cdev_del(...) do { } while (0)
#define MAX_ERRNO 4095
#define IS_ERR_VALUE(x) ((x) >= (unsigned long)-MAX_ERRNO)
static inline void *ERR_PTR(long error)
{
return (void *) error;
}
static inline long PTR_ERR(const void *ptr)
{
return (long) ptr;
}
static inline long IS_ERR(const void *ptr)
{
return IS_ERR_VALUE((unsigned long)ptr);
}
/* Force a compilation error if condition is true */
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
/* module */
#define THIS_MODULE 0
#define try_module_get(...) 0
#define module_put(...) do { } while (0)
#define module_init(...)
#define module_exit(...)
#define EXPORT_SYMBOL(...)
#define EXPORT_SYMBOL_GPL(...)
#define module_param_call(...)
#define MODULE_PARM_DESC(...)
#define MODULE_VERSION(...)
#define MODULE_DESCRIPTION(...)
#define MODULE_AUTHOR(...)
#define MODULE_LICENSE(...)
#include "../drivers/mtd/ubi/ubi.h"
/* functions */
extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp);
extern int ubi_init(void);
extern void ubi_exit(void);
extern struct ubi_device *ubi_devices[];
#endif
|