1
2
3
4
5
6
7
8
9
10#ifndef __MTD_FLASHCHIP_H__
11#define __MTD_FLASHCHIP_H__
12
13
14
15
16
17#include <linux/sched.h>
18
19typedef enum {
20 FL_READY,
21 FL_STATUS,
22 FL_CFI_QUERY,
23 FL_JEDEC_QUERY,
24 FL_ERASING,
25 FL_ERASE_SUSPENDING,
26 FL_ERASE_SUSPENDED,
27 FL_WRITING,
28 FL_WRITING_TO_BUFFER,
29 FL_OTP_WRITE,
30 FL_WRITE_SUSPENDING,
31 FL_WRITE_SUSPENDED,
32 FL_PM_SUSPENDED,
33 FL_SYNCING,
34 FL_UNLOADING,
35 FL_LOCKING,
36 FL_UNLOCKING,
37 FL_POINT,
38 FL_XIP_WHILE_ERASING,
39 FL_XIP_WHILE_WRITING,
40 FL_SHUTDOWN,
41 FL_UNKNOWN
42} flstate_t;
43
44
45
46
47
48
49
50struct flchip {
51 unsigned long start;
52
53
54
55
56
57
58
59
60 int ref_point_counter;
61 flstate_t state;
62 flstate_t oldstate;
63
64 unsigned int write_suspended:1;
65 unsigned int erase_suspended:1;
66 unsigned long in_progress_block_addr;
67
68 spinlock_t *mutex;
69 spinlock_t _spinlock;
70 wait_queue_head_t wq;
71
72 int word_write_time;
73 int buffer_write_time;
74 int erase_time;
75
76 int word_write_time_max;
77 int buffer_write_time_max;
78 int erase_time_max;
79
80 void *priv;
81};
82
83
84
85struct flchip_shared {
86 spinlock_t lock;
87 struct flchip *writing;
88 struct flchip *erasing;
89};
90
91
92#endif
93