1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef __MTD_FLASHCHIP_H__
13#define __MTD_FLASHCHIP_H__
14
15#include <linux/sched.h>
16
17typedef enum {
18 FL_READY,
19 FL_STATUS,
20 FL_CFI_QUERY,
21 FL_JEDEC_QUERY,
22 FL_ERASING,
23 FL_ERASE_SUSPENDING,
24 FL_ERASE_SUSPENDED,
25 FL_WRITING,
26 FL_WRITING_TO_BUFFER,
27 FL_OTP_WRITE,
28 FL_WRITE_SUSPENDING,
29 FL_WRITE_SUSPENDED,
30 FL_PM_SUSPENDED,
31 FL_SYNCING,
32 FL_UNLOADING,
33 FL_LOCKING,
34 FL_UNLOCKING,
35 FL_POINT,
36 FL_XIP_WHILE_ERASING,
37 FL_XIP_WHILE_WRITING,
38 FL_UNKNOWN
39} flstate_t;
40
41struct flchip {
42 unsigned long start;
43
44 int ref_point_counter;
45 flstate_t state;
46 flstate_t oldstate;
47
48 unsigned int write_suspended:1;
49 unsigned int erase_suspended:1;
50 unsigned long in_progress_block_addr;
51
52 spinlock_t *mutex;
53 spinlock_t _spinlock;
54 wait_queue_head_t wq;
55 int word_write_time;
56 int buffer_write_time;
57 int erase_time;
58
59 void *priv;
60};
61
62struct flchip_shared {
63 spinlock_t lock;
64 struct flchip *writing;
65 struct flchip *erasing;
66};
67
68#endif
69