diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-04-19 12:17:29 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-04-19 12:17:29 -0400 |
commit | adf6d34e460387ee3e8f1e1875d52bff51212c7d (patch) | |
tree | 88ef100143e6184103a608f82dfd232bf6376eaf | |
parent | d1964dab60ce7c104dd21590e987a8787db18051 (diff) | |
parent | 3760d31f11bfbd0ead9eaeb8573e0602437a9d7c (diff) |
Merge branch 'omap2-upstream' into devel
737 files changed, 24475 insertions, 14528 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index fc8e7c7d182f..e8fb24671967 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -271,8 +271,6 @@ netlabel/ | |||
271 | - directory with information on the NetLabel subsystem. | 271 | - directory with information on the NetLabel subsystem. |
272 | networking/ | 272 | networking/ |
273 | - directory with info on various aspects of networking with Linux. | 273 | - directory with info on various aspects of networking with Linux. |
274 | nfsroot.txt | ||
275 | - short guide on setting up a diskless box with NFS root filesystem. | ||
276 | nmi_watchdog.txt | 274 | nmi_watchdog.txt |
277 | - info on NMI watchdog for SMP systems. | 275 | - info on NMI watchdog for SMP systems. |
278 | nommu-mmap.txt | 276 | nommu-mmap.txt |
@@ -321,8 +319,6 @@ robust-futexes.txt | |||
321 | - a description of what robust futexes are. | 319 | - a description of what robust futexes are. |
322 | rocket.txt | 320 | rocket.txt |
323 | - info on the Comtrol RocketPort multiport serial driver. | 321 | - info on the Comtrol RocketPort multiport serial driver. |
324 | rpc-cache.txt | ||
325 | - introduction to the caching mechanisms in the sunrpc layer. | ||
326 | rt-mutex-design.txt | 322 | rt-mutex-design.txt |
327 | - description of the RealTime mutex implementation design. | 323 | - description of the RealTime mutex implementation design. |
328 | rt-mutex.txt | 324 | rt-mutex.txt |
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index 08a1ed1cb5d8..1fc4e7144dce 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches | |||
@@ -328,7 +328,7 @@ now, but you can do this to mark internal company procedures or just | |||
328 | point out some special detail about the sign-off. | 328 | point out some special detail about the sign-off. |
329 | 329 | ||
330 | 330 | ||
331 | 13) When to use Acked-by: | 331 | 13) When to use Acked-by: and Cc: |
332 | 332 | ||
333 | The Signed-off-by: tag indicates that the signer was involved in the | 333 | The Signed-off-by: tag indicates that the signer was involved in the |
334 | development of the patch, or that he/she was in the patch's delivery path. | 334 | development of the patch, or that he/she was in the patch's delivery path. |
@@ -349,11 +349,59 @@ Acked-by: does not necessarily indicate acknowledgement of the entire patch. | |||
349 | For example, if a patch affects multiple subsystems and has an Acked-by: from | 349 | For example, if a patch affects multiple subsystems and has an Acked-by: from |
350 | one subsystem maintainer then this usually indicates acknowledgement of just | 350 | one subsystem maintainer then this usually indicates acknowledgement of just |
351 | the part which affects that maintainer's code. Judgement should be used here. | 351 | the part which affects that maintainer's code. Judgement should be used here. |
352 | When in doubt people should refer to the original discussion in the mailing | 352 | When in doubt people should refer to the original discussion in the mailing |
353 | list archives. | 353 | list archives. |
354 | 354 | ||
355 | If a person has had the opportunity to comment on a patch, but has not | ||
356 | provided such comments, you may optionally add a "Cc:" tag to the patch. | ||
357 | This is the only tag which might be added without an explicit action by the | ||
358 | person it names. This tag documents that potentially interested parties | ||
359 | have been included in the discussion | ||
355 | 360 | ||
356 | 14) The canonical patch format | 361 | |
362 | 14) Using Test-by: and Reviewed-by: | ||
363 | |||
364 | A Tested-by: tag indicates that the patch has been successfully tested (in | ||
365 | some environment) by the person named. This tag informs maintainers that | ||
366 | some testing has been performed, provides a means to locate testers for | ||
367 | future patches, and ensures credit for the testers. | ||
368 | |||
369 | Reviewed-by:, instead, indicates that the patch has been reviewed and found | ||
370 | acceptable according to the Reviewer's Statement: | ||
371 | |||
372 | Reviewer's statement of oversight | ||
373 | |||
374 | By offering my Reviewed-by: tag, I state that: | ||
375 | |||
376 | (a) I have carried out a technical review of this patch to | ||
377 | evaluate its appropriateness and readiness for inclusion into | ||
378 | the mainline kernel. | ||
379 | |||
380 | (b) Any problems, concerns, or questions relating to the patch | ||
381 | have been communicated back to the submitter. I am satisfied | ||
382 | with the submitter's response to my comments. | ||
383 | |||
384 | (c) While there may be things that could be improved with this | ||
385 | submission, I believe that it is, at this time, (1) a | ||
386 | worthwhile modification to the kernel, and (2) free of known | ||
387 | issues which would argue against its inclusion. | ||
388 | |||
389 | (d) While I have reviewed the patch and believe it to be sound, I | ||
390 | do not (unless explicitly stated elsewhere) make any | ||
391 | warranties or guarantees that it will achieve its stated | ||
392 | purpose or function properly in any given situation. | ||
393 | |||
394 | A Reviewed-by tag is a statement of opinion that the patch is an | ||
395 | appropriate modification of the kernel without any remaining serious | ||
396 | technical issues. Any interested reviewer (who has done the work) can | ||
397 | offer a Reviewed-by tag for a patch. This tag serves to give credit to | ||
398 | reviewers and to inform maintainers of the degree of review which has been | ||
399 | done on the patch. Reviewed-by: tags, when supplied by reviewers known to | ||
400 | understand the subject area and to perform thorough reviews, will normally | ||
401 | increase the liklihood of your patch getting into the kernel. | ||
402 | |||
403 | |||
404 | 15) The canonical patch format | ||
357 | 405 | ||
358 | The canonical patch subject line is: | 406 | The canonical patch subject line is: |
359 | 407 | ||
@@ -512,7 +560,7 @@ They provide type safety, have no length limitations, no formatting | |||
512 | limitations, and under gcc they are as cheap as macros. | 560 | limitations, and under gcc they are as cheap as macros. |
513 | 561 | ||
514 | Macros should only be used for cases where a static inline is clearly | 562 | Macros should only be used for cases where a static inline is clearly |
515 | suboptimal [there a few, isolated cases of this in fast paths], | 563 | suboptimal [there are a few, isolated cases of this in fast paths], |
516 | or where it is impossible to use a static inline function [such as | 564 | or where it is impossible to use a static inline function [such as |
517 | string-izing]. | 565 | string-izing]. |
518 | 566 | ||
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX index e68021c08fbd..52cd611277a3 100644 --- a/Documentation/filesystems/00-INDEX +++ b/Documentation/filesystems/00-INDEX | |||
@@ -66,6 +66,8 @@ mandatory-locking.txt | |||
66 | - info on the Linux implementation of Sys V mandatory file locking. | 66 | - info on the Linux implementation of Sys V mandatory file locking. |
67 | ncpfs.txt | 67 | ncpfs.txt |
68 | - info on Novell Netware(tm) filesystem using NCP protocol. | 68 | - info on Novell Netware(tm) filesystem using NCP protocol. |
69 | nfsroot.txt | ||
70 | - short guide on setting up a diskless box with NFS root filesystem. | ||
69 | ntfs.txt | 71 | ntfs.txt |
70 | - info and mount options for the NTFS filesystem (Windows NT). | 72 | - info and mount options for the NTFS filesystem (Windows NT). |
71 | ocfs2.txt | 73 | ocfs2.txt |
@@ -82,6 +84,10 @@ relay.txt | |||
82 | - info on relay, for efficient streaming from kernel to user space. | 84 | - info on relay, for efficient streaming from kernel to user space. |
83 | romfs.txt | 85 | romfs.txt |
84 | - description of the ROMFS filesystem. | 86 | - description of the ROMFS filesystem. |
87 | rpc-cache.txt | ||
88 | - introduction to the caching mechanisms in the sunrpc layer. | ||
89 | seq_file.txt | ||
90 | - how to use the seq_file API | ||
85 | sharedsubtree.txt | 91 | sharedsubtree.txt |
86 | - a description of shared subtrees for namespaces. | 92 | - a description of shared subtrees for namespaces. |
87 | smbfs.txt | 93 | smbfs.txt |
diff --git a/Documentation/nfsroot.txt b/Documentation/filesystems/nfsroot.txt index 31b329172343..31b329172343 100644 --- a/Documentation/nfsroot.txt +++ b/Documentation/filesystems/nfsroot.txt | |||
diff --git a/Documentation/rpc-cache.txt b/Documentation/filesystems/rpc-cache.txt index 8a382bea6808..8a382bea6808 100644 --- a/Documentation/rpc-cache.txt +++ b/Documentation/filesystems/rpc-cache.txt | |||
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt new file mode 100644 index 000000000000..cc6cdb95b73a --- /dev/null +++ b/Documentation/filesystems/seq_file.txt | |||
@@ -0,0 +1,283 @@ | |||
1 | The seq_file interface | ||
2 | |||
3 | Copyright 2003 Jonathan Corbet <corbet@lwn.net> | ||
4 | This file is originally from the LWN.net Driver Porting series at | ||
5 | http://lwn.net/Articles/driver-porting/ | ||
6 | |||
7 | |||
8 | There are numerous ways for a device driver (or other kernel component) to | ||
9 | provide information to the user or system administrator. One useful | ||
10 | technique is the creation of virtual files, in debugfs, /proc or elsewhere. | ||
11 | Virtual files can provide human-readable output that is easy to get at | ||
12 | without any special utility programs; they can also make life easier for | ||
13 | script writers. It is not surprising that the use of virtual files has | ||
14 | grown over the years. | ||
15 | |||
16 | Creating those files correctly has always been a bit of a challenge, | ||
17 | however. It is not that hard to make a virtual file which returns a | ||
18 | string. But life gets trickier if the output is long - anything greater | ||
19 | than an application is likely to read in a single operation. Handling | ||
20 | multiple reads (and seeks) requires careful attention to the reader's | ||
21 | position within the virtual file - that position is, likely as not, in the | ||
22 | middle of a line of output. The kernel has traditionally had a number of | ||
23 | implementations that got this wrong. | ||
24 | |||
25 | The 2.6 kernel contains a set of functions (implemented by Alexander Viro) | ||
26 | which are designed to make it easy for virtual file creators to get it | ||
27 | right. | ||
28 | |||
29 | The seq_file interface is available via <linux/seq_file.h>. There are | ||
30 | three aspects to seq_file: | ||
31 | |||
32 | * An iterator interface which lets a virtual file implementation | ||
33 | step through the objects it is presenting. | ||
34 | |||
35 | * Some utility functions for formatting objects for output without | ||
36 | needing to worry about things like output buffers. | ||
37 | |||
38 | * A set of canned file_operations which implement most operations on | ||
39 | the virtual file. | ||
40 | |||
41 | We'll look at the seq_file interface via an extremely simple example: a | ||
42 | loadable module which creates a file called /proc/sequence. The file, when | ||
43 | read, simply produces a set of increasing integer values, one per line. The | ||
44 | sequence will continue until the user loses patience and finds something | ||
45 | better to do. The file is seekable, in that one can do something like the | ||
46 | following: | ||
47 | |||
48 | dd if=/proc/sequence of=out1 count=1 | ||
49 | dd if=/proc/sequence skip=1 out=out2 count=1 | ||
50 | |||
51 | Then concatenate the output files out1 and out2 and get the right | ||
52 | result. Yes, it is a thoroughly useless module, but the point is to show | ||
53 | how the mechanism works without getting lost in other details. (Those | ||
54 | wanting to see the full source for this module can find it at | ||
55 | http://lwn.net/Articles/22359/). | ||
56 | |||
57 | |||
58 | The iterator interface | ||
59 | |||
60 | Modules implementing a virtual file with seq_file must implement a simple | ||
61 | iterator object that allows stepping through the data of interest. | ||
62 | Iterators must be able to move to a specific position - like the file they | ||
63 | implement - but the interpretation of that position is up to the iterator | ||
64 | itself. A seq_file implementation that is formatting firewall rules, for | ||
65 | example, could interpret position N as the Nth rule in the chain. | ||
66 | Positioning can thus be done in whatever way makes the most sense for the | ||
67 | generator of the data, which need not be aware of how a position translates | ||
68 | to an offset in the virtual file. The one obvious exception is that a | ||
69 | position of zero should indicate the beginning of the file. | ||
70 | |||
71 | The /proc/sequence iterator just uses the count of the next number it | ||
72 | will output as its position. | ||
73 | |||
74 | Four functions must be implemented to make the iterator work. The first, | ||
75 | called start() takes a position as an argument and returns an iterator | ||
76 | which will start reading at that position. For our simple sequence example, | ||
77 | the start() function looks like: | ||
78 | |||
79 | static void *ct_seq_start(struct seq_file *s, loff_t *pos) | ||
80 | { | ||
81 | loff_t *spos = kmalloc(sizeof(loff_t), GFP_KERNEL); | ||
82 | if (! spos) | ||
83 | return NULL; | ||
84 | *spos = *pos; | ||
85 | return spos; | ||
86 | } | ||
87 | |||
88 | The entire data structure for this iterator is a single loff_t value | ||
89 | holding the current position. There is no upper bound for the sequence | ||
90 | iterator, but that will not be the case for most other seq_file | ||
91 | implementations; in most cases the start() function should check for a | ||
92 | "past end of file" condition and return NULL if need be. | ||
93 | |||
94 | For more complicated applications, the private field of the seq_file | ||
95 | structure can be used. There is also a special value whch can be returned | ||
96 | by the start() function called SEQ_START_TOKEN; it can be used if you wish | ||
97 | to instruct your show() function (described below) to print a header at the | ||
98 | top of the output. SEQ_START_TOKEN should only be used if the offset is | ||
99 | zero, however. | ||
100 | |||
101 | The next function to implement is called, amazingly, next(); its job is to | ||
102 | move the iterator forward to the next position in the sequence. The | ||
103 | example module can simply increment the position by one; more useful | ||
104 | modules will do what is needed to step through some data structure. The | ||
105 | next() function returns a new iterator, or NULL if the sequence is | ||
106 | complete. Here's the example version: | ||
107 | |||
108 | static void *ct_seq_next(struct seq_file *s, void *v, loff_t *pos) | ||
109 | { | ||
110 | loff_t *spos = v; | ||
111 | *pos = ++*spos; | ||
112 | return spos; | ||
113 | } | ||
114 | |||
115 | The stop() function is called when iteration is complete; its job, of | ||
116 | course, is to clean up. If dynamic memory is allocated for the iterator, | ||
117 | stop() is the place to free it. | ||
118 | |||
119 | static void ct_seq_stop(struct seq_file *s, void *v) | ||
120 | { | ||
121 | kfree(v); | ||
122 | } | ||
123 | |||
124 | Finally, the show() function should format the object currently pointed to | ||
125 | by the iterator for output. It should return zero, or an error code if | ||
126 | something goes wrong. The example module's show() function is: | ||
127 | |||
128 | static int ct_seq_show(struct seq_file *s, void *v) | ||
129 | { | ||
130 | loff_t *spos = v; | ||
131 | seq_printf(s, "%lld\n", (long long)*spos); | ||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | We will look at seq_printf() in a moment. But first, the definition of the | ||
136 | seq_file iterator is finished by creating a seq_operations structure with | ||
137 | the four functions we have just defined: | ||
138 | |||
139 | static const struct seq_operations ct_seq_ops = { | ||
140 | .start = ct_seq_start, | ||
141 | .next = ct_seq_next, | ||
142 | .stop = ct_seq_stop, | ||
143 | .show = ct_seq_show | ||
144 | }; | ||
145 | |||
146 | This structure will be needed to tie our iterator to the /proc file in | ||
147 | a little bit. | ||
148 | |||
149 | It's worth noting that the interator value returned by start() and | ||
150 | manipulated by the other functions is considered to be completely opaque by | ||
151 | the seq_file code. It can thus be anything that is useful in stepping | ||
152 | through the data to be output. Counters can be useful, but it could also be | ||
153 | a direct pointer into an array or linked list. Anything goes, as long as | ||
154 | the programmer is aware that things can happen between calls to the | ||
155 | iterator function. However, the seq_file code (by design) will not sleep | ||
156 | between the calls to start() and stop(), so holding a lock during that time | ||
157 | is a reasonable thing to do. The seq_file code will also avoid taking any | ||
158 | other locks while the iterator is active. | ||
159 | |||
160 | |||
161 | Formatted output | ||
162 | |||
163 | The seq_file code manages positioning within the output created by the | ||
164 | iterator and getting it into the user's buffer. But, for that to work, that | ||
165 | output must be passed to the seq_file code. Some utility functions have | ||
166 | been defined which make this task easy. | ||
167 | |||
168 | Most code will simply use seq_printf(), which works pretty much like | ||
169 | printk(), but which requires the seq_file pointer as an argument. It is | ||
170 | common to ignore the return value from seq_printf(), but a function | ||
171 | producing complicated output may want to check that value and quit if | ||
172 | something non-zero is returned; an error return means that the seq_file | ||
173 | buffer has been filled and further output will be discarded. | ||
174 | |||
175 | For straight character output, the following functions may be used: | ||
176 | |||
177 | int seq_putc(struct seq_file *m, char c); | ||
178 | int seq_puts(struct seq_file *m, const char *s); | ||
179 | int seq_escape(struct seq_file *m, const char *s, const char *esc); | ||
180 | |||
181 | The first two output a single character and a string, just like one would | ||
182 | expect. seq_escape() is like seq_puts(), except that any character in s | ||
183 | which is in the string esc will be represented in octal form in the output. | ||
184 | |||
185 | There is also a function for printing filenames: | ||
186 | |||
187 | int seq_path(struct seq_file *m, struct path *path, char *esc); | ||
188 | |||
189 | Here, path indicates the file of interest, and esc is a set of characters | ||
190 | which should be escaped in the output. | ||
191 | |||
192 | |||
193 | Making it all work | ||
194 | |||
195 | So far, we have a nice set of functions which can produce output within the | ||
196 | seq_file system, but we have not yet turned them into a file that a user | ||
197 | can see. Creating a file within the kernel requires, of course, the | ||
198 | creation of a set of file_operations which implement the operations on that | ||
199 | file. The seq_file interface provides a set of canned operations which do | ||
200 | most of the work. The virtual file author still must implement the open() | ||
201 | method, however, to hook everything up. The open function is often a single | ||
202 | line, as in the example module: | ||
203 | |||
204 | static int ct_open(struct inode *inode, struct file *file) | ||
205 | { | ||
206 | return seq_open(file, &ct_seq_ops); | ||
207 | } | ||
208 | |||
209 | Here, the call to seq_open() takes the seq_operations structure we created | ||
210 | before, and gets set up to iterate through the virtual file. | ||
211 | |||
212 | On a successful open, seq_open() stores the struct seq_file pointer in | ||
213 | file->private_data. If you have an application where the same iterator can | ||
214 | be used for more than one file, you can store an arbitrary pointer in the | ||
215 | private field of the seq_file structure; that value can then be retrieved | ||
216 | by the iterator functions. | ||
217 | |||
218 | The other operations of interest - read(), llseek(), and release() - are | ||
219 | all implemented by the seq_file code itself. So a virtual file's | ||
220 | file_operations structure will look like: | ||
221 | |||
222 | static const struct file_operations ct_file_ops = { | ||
223 | .owner = THIS_MODULE, | ||
224 | .open = ct_open, | ||
225 | .read = seq_read, | ||
226 | .llseek = seq_lseek, | ||
227 | .release = seq_release | ||
228 | }; | ||
229 | |||
230 | There is also a seq_release_private() which passes the contents of the | ||
231 | seq_file private field to kfree() before releasing the structure. | ||
232 | |||
233 | The final step is the creation of the /proc file itself. In the example | ||
234 | code, that is done in the initialization code in the usual way: | ||
235 | |||
236 | static int ct_init(void) | ||
237 | { | ||
238 | struct proc_dir_entry *entry; | ||
239 | |||
240 | entry = create_proc_entry("sequence", 0, NULL); | ||
241 | if (entry) | ||
242 | entry->proc_fops = &ct_file_ops; | ||
243 | return 0; | ||
244 | } | ||
245 | |||
246 | module_init(ct_init); | ||
247 | |||
248 | And that is pretty much it. | ||
249 | |||
250 | |||
251 | seq_list | ||
252 | |||
253 | If your file will be iterating through a linked list, you may find these | ||
254 | routines useful: | ||
255 | |||
256 | struct list_head *seq_list_start(struct list_head *head, | ||
257 | loff_t pos); | ||
258 | struct list_head *seq_list_start_head(struct list_head *head, | ||
259 | loff_t pos); | ||
260 | struct list_head *seq_list_next(void *v, struct list_head *head, | ||
261 | loff_t *ppos); | ||
262 | |||
263 | These helpers will interpret pos as a position within the list and iterate | ||
264 | accordingly. Your start() and next() functions need only invoke the | ||
265 | seq_list_* helpers with a pointer to the appropriate list_head structure. | ||
266 | |||
267 | |||
268 | The extra-simple version | ||
269 | |||
270 | For extremely simple virtual files, there is an even easier interface. A | ||
271 | module can define only the show() function, which should create all the | ||
272 | output that the virtual file will contain. The file's open() method then | ||
273 | calls: | ||
274 | |||
275 | int single_open(struct file *file, | ||
276 | int (*show)(struct seq_file *m, void *p), | ||
277 | void *data); | ||
278 | |||
279 | When output time comes, the show() function will be called once. The data | ||
280 | value given to single_open() can be found in the private field of the | ||
281 | seq_file structure. When using single_open(), the programmer should use | ||
282 | single_release() instead of seq_release() in the file_operations structure | ||
283 | to avoid a memory leak. | ||
diff --git a/Documentation/hrtimers/highres.txt b/Documentation/hrtimers/highres.txt index ce0e9a91e157..a73ecf5b4bdb 100644 --- a/Documentation/hrtimers/highres.txt +++ b/Documentation/hrtimers/highres.txt | |||
@@ -98,7 +98,7 @@ System-level global event devices are used for the Linux periodic tick. Per-CPU | |||
98 | event devices are used to provide local CPU functionality such as process | 98 | event devices are used to provide local CPU functionality such as process |
99 | accounting, profiling, and high resolution timers. | 99 | accounting, profiling, and high resolution timers. |
100 | 100 | ||
101 | The management layer assignes one or more of the folliwing functions to a clock | 101 | The management layer assigns one or more of the following functions to a clock |
102 | event device: | 102 | event device: |
103 | - system global periodic tick (jiffies update) | 103 | - system global periodic tick (jiffies update) |
104 | - cpu local update_process_times | 104 | - cpu local update_process_times |
diff --git a/Documentation/i386/IO-APIC.txt b/Documentation/i386/IO-APIC.txt index f95166645d29..30b4c714fbe1 100644 --- a/Documentation/i386/IO-APIC.txt +++ b/Documentation/i386/IO-APIC.txt | |||
@@ -70,7 +70,7 @@ Every PCI card emits a PCI IRQ, which can be INTA, INTB, INTC or INTD: | |||
70 | 70 | ||
71 | These INTA-D PCI IRQs are always 'local to the card', their real meaning | 71 | These INTA-D PCI IRQs are always 'local to the card', their real meaning |
72 | depends on which slot they are in. If you look at the daisy chaining diagram, | 72 | depends on which slot they are in. If you look at the daisy chaining diagram, |
73 | a card in slot4, issuing INTA IRQ, it will end up as a signal on PIRQ2 of | 73 | a card in slot4, issuing INTA IRQ, it will end up as a signal on PIRQ4 of |
74 | the PCI chipset. Most cards issue INTA, this creates optimal distribution | 74 | the PCI chipset. Most cards issue INTA, this creates optimal distribution |
75 | between the PIRQ lines. (distributing IRQ sources properly is not a | 75 | between the PIRQ lines. (distributing IRQ sources properly is not a |
76 | necessity, PCI IRQs can be shared at will, but it's a good for performance | 76 | necessity, PCI IRQs can be shared at will, but it's a good for performance |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 508e2a2c9864..dafd001bf833 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -170,11 +170,6 @@ and is between 256 and 4096 characters. It is defined in the file | |||
170 | acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA | 170 | acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA |
171 | Format: <irq>,<irq>... | 171 | Format: <irq>,<irq>... |
172 | 172 | ||
173 | acpi_new_pts_ordering [HW,ACPI] | ||
174 | Enforce the ACPI 2.0 ordering of the _PTS control | ||
175 | method wrt putting devices into low power states | ||
176 | default: pre ACPI 2.0 ordering of _PTS | ||
177 | |||
178 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT | 173 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT |
179 | 174 | ||
180 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS | 175 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS |
@@ -380,6 +375,10 @@ and is between 256 and 4096 characters. It is defined in the file | |||
380 | ccw_timeout_log [S390] | 375 | ccw_timeout_log [S390] |
381 | See Documentation/s390/CommonIO for details. | 376 | See Documentation/s390/CommonIO for details. |
382 | 377 | ||
378 | cgroup_disable= [KNL] Disable a particular controller | ||
379 | Format: {name of the controller(s) to disable} | ||
380 | {Currently supported controllers - "memory"} | ||
381 | |||
383 | checkreqprot [SELINUX] Set initial checkreqprot flag value. | 382 | checkreqprot [SELINUX] Set initial checkreqprot flag value. |
384 | Format: { "0" | "1" } | 383 | Format: { "0" | "1" } |
385 | See security/selinux/Kconfig help text. | 384 | See security/selinux/Kconfig help text. |
@@ -845,7 +844,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
845 | arch/alpha/kernel/core_marvel.c. | 844 | arch/alpha/kernel/core_marvel.c. |
846 | 845 | ||
847 | ip= [IP_PNP] | 846 | ip= [IP_PNP] |
848 | See Documentation/nfsroot.txt. | 847 | See Documentation/filesystems/nfsroot.txt. |
849 | 848 | ||
850 | ip2= [HW] Set IO/IRQ pairs for up to 4 IntelliPort boards | 849 | ip2= [HW] Set IO/IRQ pairs for up to 4 IntelliPort boards |
851 | See comment before ip2_setup() in | 850 | See comment before ip2_setup() in |
@@ -1199,10 +1198,10 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1199 | file if at all. | 1198 | file if at all. |
1200 | 1199 | ||
1201 | nfsaddrs= [NFS] | 1200 | nfsaddrs= [NFS] |
1202 | See Documentation/nfsroot.txt. | 1201 | See Documentation/filesystems/nfsroot.txt. |
1203 | 1202 | ||
1204 | nfsroot= [NFS] nfs root filesystem for disk-less boxes. | 1203 | nfsroot= [NFS] nfs root filesystem for disk-less boxes. |
1205 | See Documentation/nfsroot.txt. | 1204 | See Documentation/filesystems/nfsroot.txt. |
1206 | 1205 | ||
1207 | nfs.callback_tcpport= | 1206 | nfs.callback_tcpport= |
1208 | [NFS] set the TCP port on which the NFSv4 callback | 1207 | [NFS] set the TCP port on which the NFSv4 callback |
diff --git a/Documentation/lguest/lguest.c b/Documentation/lguest/lguest.c index bec5a32e4095..4c1fc65a8b3d 100644 --- a/Documentation/lguest/lguest.c +++ b/Documentation/lguest/lguest.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /*P:100 This is the Launcher code, a simple program which lays out the | 1 | /*P:100 This is the Launcher code, a simple program which lays out the |
2 | * "physical" memory for the new Guest by mapping the kernel image and the | 2 | * "physical" memory for the new Guest by mapping the kernel image and |
3 | * virtual devices, then reads repeatedly from /dev/lguest to run the Guest. | 3 | * the virtual devices, then opens /dev/lguest to tell the kernel |
4 | :*/ | 4 | * about the Guest and control it. :*/ |
5 | #define _LARGEFILE64_SOURCE | 5 | #define _LARGEFILE64_SOURCE |
6 | #define _GNU_SOURCE | 6 | #define _GNU_SOURCE |
7 | #include <stdio.h> | 7 | #include <stdio.h> |
@@ -43,7 +43,7 @@ | |||
43 | #include "linux/virtio_console.h" | 43 | #include "linux/virtio_console.h" |
44 | #include "linux/virtio_ring.h" | 44 | #include "linux/virtio_ring.h" |
45 | #include "asm-x86/bootparam.h" | 45 | #include "asm-x86/bootparam.h" |
46 | /*L:110 We can ignore the 38 include files we need for this program, but I do | 46 | /*L:110 We can ignore the 39 include files we need for this program, but I do |
47 | * want to draw attention to the use of kernel-style types. | 47 | * want to draw attention to the use of kernel-style types. |
48 | * | 48 | * |
49 | * As Linus said, "C is a Spartan language, and so should your naming be." I | 49 | * As Linus said, "C is a Spartan language, and so should your naming be." I |
@@ -320,7 +320,7 @@ static unsigned long map_elf(int elf_fd, const Elf32_Ehdr *ehdr) | |||
320 | err(1, "Reading program headers"); | 320 | err(1, "Reading program headers"); |
321 | 321 | ||
322 | /* Try all the headers: there are usually only three. A read-only one, | 322 | /* Try all the headers: there are usually only three. A read-only one, |
323 | * a read-write one, and a "note" section which isn't loadable. */ | 323 | * a read-write one, and a "note" section which we don't load. */ |
324 | for (i = 0; i < ehdr->e_phnum; i++) { | 324 | for (i = 0; i < ehdr->e_phnum; i++) { |
325 | /* If this isn't a loadable segment, we ignore it */ | 325 | /* If this isn't a loadable segment, we ignore it */ |
326 | if (phdr[i].p_type != PT_LOAD) | 326 | if (phdr[i].p_type != PT_LOAD) |
@@ -387,7 +387,7 @@ static unsigned long load_kernel(int fd) | |||
387 | if (memcmp(hdr.e_ident, ELFMAG, SELFMAG) == 0) | 387 | if (memcmp(hdr.e_ident, ELFMAG, SELFMAG) == 0) |
388 | return map_elf(fd, &hdr); | 388 | return map_elf(fd, &hdr); |
389 | 389 | ||
390 | /* Otherwise we assume it's a bzImage, and try to unpack it */ | 390 | /* Otherwise we assume it's a bzImage, and try to load it. */ |
391 | return load_bzimage(fd); | 391 | return load_bzimage(fd); |
392 | } | 392 | } |
393 | 393 | ||
@@ -433,12 +433,12 @@ static unsigned long load_initrd(const char *name, unsigned long mem) | |||
433 | return len; | 433 | return len; |
434 | } | 434 | } |
435 | 435 | ||
436 | /* Once we know how much memory we have, we can construct simple linear page | 436 | /* Once we know how much memory we have we can construct simple linear page |
437 | * tables which set virtual == physical which will get the Guest far enough | 437 | * tables which set virtual == physical which will get the Guest far enough |
438 | * into the boot to create its own. | 438 | * into the boot to create its own. |
439 | * | 439 | * |
440 | * We lay them out of the way, just below the initrd (which is why we need to | 440 | * We lay them out of the way, just below the initrd (which is why we need to |
441 | * know its size). */ | 441 | * know its size here). */ |
442 | static unsigned long setup_pagetables(unsigned long mem, | 442 | static unsigned long setup_pagetables(unsigned long mem, |
443 | unsigned long initrd_size) | 443 | unsigned long initrd_size) |
444 | { | 444 | { |
@@ -850,7 +850,8 @@ static void handle_console_output(int fd, struct virtqueue *vq) | |||
850 | * | 850 | * |
851 | * Handling output for network is also simple: we get all the output buffers | 851 | * Handling output for network is also simple: we get all the output buffers |
852 | * and write them (ignoring the first element) to this device's file descriptor | 852 | * and write them (ignoring the first element) to this device's file descriptor |
853 | * (stdout). */ | 853 | * (/dev/net/tun). |
854 | */ | ||
854 | static void handle_net_output(int fd, struct virtqueue *vq) | 855 | static void handle_net_output(int fd, struct virtqueue *vq) |
855 | { | 856 | { |
856 | unsigned int head, out, in; | 857 | unsigned int head, out, in; |
@@ -924,7 +925,7 @@ static void enable_fd(int fd, struct virtqueue *vq) | |||
924 | write(waker_fd, &vq->dev->fd, sizeof(vq->dev->fd)); | 925 | write(waker_fd, &vq->dev->fd, sizeof(vq->dev->fd)); |
925 | } | 926 | } |
926 | 927 | ||
927 | /* Resetting a device is fairly easy. */ | 928 | /* When the Guest asks us to reset a device, it's is fairly easy. */ |
928 | static void reset_device(struct device *dev) | 929 | static void reset_device(struct device *dev) |
929 | { | 930 | { |
930 | struct virtqueue *vq; | 931 | struct virtqueue *vq; |
@@ -1003,8 +1004,8 @@ static void handle_input(int fd) | |||
1003 | if (select(devices.max_infd+1, &fds, NULL, NULL, &poll) == 0) | 1004 | if (select(devices.max_infd+1, &fds, NULL, NULL, &poll) == 0) |
1004 | break; | 1005 | break; |
1005 | 1006 | ||
1006 | /* Otherwise, call the device(s) which have readable | 1007 | /* Otherwise, call the device(s) which have readable file |
1007 | * file descriptors and a method of handling them. */ | 1008 | * descriptors and a method of handling them. */ |
1008 | for (i = devices.dev; i; i = i->next) { | 1009 | for (i = devices.dev; i; i = i->next) { |
1009 | if (i->handle_input && FD_ISSET(i->fd, &fds)) { | 1010 | if (i->handle_input && FD_ISSET(i->fd, &fds)) { |
1010 | int dev_fd; | 1011 | int dev_fd; |
@@ -1015,8 +1016,7 @@ static void handle_input(int fd) | |||
1015 | * should no longer service it. Networking and | 1016 | * should no longer service it. Networking and |
1016 | * console do this when there's no input | 1017 | * console do this when there's no input |
1017 | * buffers to deliver into. Console also uses | 1018 | * buffers to deliver into. Console also uses |
1018 | * it when it discovers that stdin is | 1019 | * it when it discovers that stdin is closed. */ |
1019 | * closed. */ | ||
1020 | FD_CLR(i->fd, &devices.infds); | 1020 | FD_CLR(i->fd, &devices.infds); |
1021 | /* Tell waker to ignore it too, by sending a | 1021 | /* Tell waker to ignore it too, by sending a |
1022 | * negative fd number (-1, since 0 is a valid | 1022 | * negative fd number (-1, since 0 is a valid |
@@ -1033,7 +1033,8 @@ static void handle_input(int fd) | |||
1033 | * | 1033 | * |
1034 | * All devices need a descriptor so the Guest knows it exists, and a "struct | 1034 | * All devices need a descriptor so the Guest knows it exists, and a "struct |
1035 | * device" so the Launcher can keep track of it. We have common helper | 1035 | * device" so the Launcher can keep track of it. We have common helper |
1036 | * routines to allocate and manage them. */ | 1036 | * routines to allocate and manage them. |
1037 | */ | ||
1037 | 1038 | ||
1038 | /* The layout of the device page is a "struct lguest_device_desc" followed by a | 1039 | /* The layout of the device page is a "struct lguest_device_desc" followed by a |
1039 | * number of virtqueue descriptors, then two sets of feature bits, then an | 1040 | * number of virtqueue descriptors, then two sets of feature bits, then an |
@@ -1078,7 +1079,7 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs, | |||
1078 | struct virtqueue **i, *vq = malloc(sizeof(*vq)); | 1079 | struct virtqueue **i, *vq = malloc(sizeof(*vq)); |
1079 | void *p; | 1080 | void *p; |
1080 | 1081 | ||
1081 | /* First we need some pages for this virtqueue. */ | 1082 | /* First we need some memory for this virtqueue. */ |
1082 | pages = (vring_size(num_descs, getpagesize()) + getpagesize() - 1) | 1083 | pages = (vring_size(num_descs, getpagesize()) + getpagesize() - 1) |
1083 | / getpagesize(); | 1084 | / getpagesize(); |
1084 | p = get_pages(pages); | 1085 | p = get_pages(pages); |
@@ -1122,7 +1123,7 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs, | |||
1122 | } | 1123 | } |
1123 | 1124 | ||
1124 | /* The first half of the feature bitmask is for us to advertise features. The | 1125 | /* The first half of the feature bitmask is for us to advertise features. The |
1125 | * second half if for the Guest to accept features. */ | 1126 | * second half is for the Guest to accept features. */ |
1126 | static void add_feature(struct device *dev, unsigned bit) | 1127 | static void add_feature(struct device *dev, unsigned bit) |
1127 | { | 1128 | { |
1128 | u8 *features = get_feature_bits(dev); | 1129 | u8 *features = get_feature_bits(dev); |
@@ -1151,7 +1152,9 @@ static void set_config(struct device *dev, unsigned len, const void *conf) | |||
1151 | } | 1152 | } |
1152 | 1153 | ||
1153 | /* This routine does all the creation and setup of a new device, including | 1154 | /* This routine does all the creation and setup of a new device, including |
1154 | * calling new_dev_desc() to allocate the descriptor and device memory. */ | 1155 | * calling new_dev_desc() to allocate the descriptor and device memory. |
1156 | * | ||
1157 | * See what I mean about userspace being boring? */ | ||
1155 | static struct device *new_device(const char *name, u16 type, int fd, | 1158 | static struct device *new_device(const char *name, u16 type, int fd, |
1156 | bool (*handle_input)(int, struct device *)) | 1159 | bool (*handle_input)(int, struct device *)) |
1157 | { | 1160 | { |
@@ -1383,7 +1386,6 @@ struct vblk_info | |||
1383 | * Launcher triggers interrupt to Guest. */ | 1386 | * Launcher triggers interrupt to Guest. */ |
1384 | int done_fd; | 1387 | int done_fd; |
1385 | }; | 1388 | }; |
1386 | /*:*/ | ||
1387 | 1389 | ||
1388 | /*L:210 | 1390 | /*L:210 |
1389 | * The Disk | 1391 | * The Disk |
@@ -1493,7 +1495,10 @@ static int io_thread(void *_dev) | |||
1493 | while (read(vblk->workpipe[0], &c, 1) == 1) { | 1495 | while (read(vblk->workpipe[0], &c, 1) == 1) { |
1494 | /* We acknowledge each request immediately to reduce latency, | 1496 | /* We acknowledge each request immediately to reduce latency, |
1495 | * rather than waiting until we've done them all. I haven't | 1497 | * rather than waiting until we've done them all. I haven't |
1496 | * measured to see if it makes any difference. */ | 1498 | * measured to see if it makes any difference. |
1499 | * | ||
1500 | * That would be an interesting test, wouldn't it? You could | ||
1501 | * also try having more than one I/O thread. */ | ||
1497 | while (service_io(dev)) | 1502 | while (service_io(dev)) |
1498 | write(vblk->done_fd, &c, 1); | 1503 | write(vblk->done_fd, &c, 1); |
1499 | } | 1504 | } |
@@ -1501,7 +1506,7 @@ static int io_thread(void *_dev) | |||
1501 | } | 1506 | } |
1502 | 1507 | ||
1503 | /* Now we've seen the I/O thread, we return to the Launcher to see what happens | 1508 | /* Now we've seen the I/O thread, we return to the Launcher to see what happens |
1504 | * when the thread tells us it's completed some I/O. */ | 1509 | * when that thread tells us it's completed some I/O. */ |
1505 | static bool handle_io_finish(int fd, struct device *dev) | 1510 | static bool handle_io_finish(int fd, struct device *dev) |
1506 | { | 1511 | { |
1507 | char c; | 1512 | char c; |
@@ -1573,11 +1578,12 @@ static void setup_block_file(const char *filename) | |||
1573 | * more work. */ | 1578 | * more work. */ |
1574 | pipe(vblk->workpipe); | 1579 | pipe(vblk->workpipe); |
1575 | 1580 | ||
1576 | /* Create stack for thread and run it */ | 1581 | /* Create stack for thread and run it. Since stack grows upwards, we |
1582 | * point the stack pointer to the end of this region. */ | ||
1577 | stack = malloc(32768); | 1583 | stack = malloc(32768); |
1578 | /* SIGCHLD - We dont "wait" for our cloned thread, so prevent it from | 1584 | /* SIGCHLD - We dont "wait" for our cloned thread, so prevent it from |
1579 | * becoming a zombie. */ | 1585 | * becoming a zombie. */ |
1580 | if (clone(io_thread, stack + 32768, CLONE_VM | SIGCHLD, dev) == -1) | 1586 | if (clone(io_thread, stack + 32768, CLONE_VM | SIGCHLD, dev) == -1) |
1581 | err(1, "Creating clone"); | 1587 | err(1, "Creating clone"); |
1582 | 1588 | ||
1583 | /* We don't need to keep the I/O thread's end of the pipes open. */ | 1589 | /* We don't need to keep the I/O thread's end of the pipes open. */ |
@@ -1587,14 +1593,14 @@ static void setup_block_file(const char *filename) | |||
1587 | verbose("device %u: virtblock %llu sectors\n", | 1593 | verbose("device %u: virtblock %llu sectors\n", |
1588 | devices.device_num, le64_to_cpu(conf.capacity)); | 1594 | devices.device_num, le64_to_cpu(conf.capacity)); |
1589 | } | 1595 | } |
1590 | /* That's the end of device setup. :*/ | 1596 | /* That's the end of device setup. */ |
1591 | 1597 | ||
1592 | /* Reboot */ | 1598 | /*L:230 Reboot is pretty easy: clean up and exec() the Launcher afresh. */ |
1593 | static void __attribute__((noreturn)) restart_guest(void) | 1599 | static void __attribute__((noreturn)) restart_guest(void) |
1594 | { | 1600 | { |
1595 | unsigned int i; | 1601 | unsigned int i; |
1596 | 1602 | ||
1597 | /* Closing pipes causes the waker thread and io_threads to die, and | 1603 | /* Closing pipes causes the Waker thread and io_threads to die, and |
1598 | * closing /dev/lguest cleans up the Guest. Since we don't track all | 1604 | * closing /dev/lguest cleans up the Guest. Since we don't track all |
1599 | * open fds, we simply close everything beyond stderr. */ | 1605 | * open fds, we simply close everything beyond stderr. */ |
1600 | for (i = 3; i < FD_SETSIZE; i++) | 1606 | for (i = 3; i < FD_SETSIZE; i++) |
@@ -1603,7 +1609,7 @@ static void __attribute__((noreturn)) restart_guest(void) | |||
1603 | err(1, "Could not exec %s", main_args[0]); | 1609 | err(1, "Could not exec %s", main_args[0]); |
1604 | } | 1610 | } |
1605 | 1611 | ||
1606 | /*L:220 Finally we reach the core of the Launcher, which runs the Guest, serves | 1612 | /*L:220 Finally we reach the core of the Launcher which runs the Guest, serves |
1607 | * its input and output, and finally, lays it to rest. */ | 1613 | * its input and output, and finally, lays it to rest. */ |
1608 | static void __attribute__((noreturn)) run_guest(int lguest_fd) | 1614 | static void __attribute__((noreturn)) run_guest(int lguest_fd) |
1609 | { | 1615 | { |
@@ -1644,7 +1650,7 @@ static void __attribute__((noreturn)) run_guest(int lguest_fd) | |||
1644 | err(1, "Resetting break"); | 1650 | err(1, "Resetting break"); |
1645 | } | 1651 | } |
1646 | } | 1652 | } |
1647 | /* | 1653 | /*L:240 |
1648 | * This is the end of the Launcher. The good news: we are over halfway | 1654 | * This is the end of the Launcher. The good news: we are over halfway |
1649 | * through! The bad news: the most fiendish part of the code still lies ahead | 1655 | * through! The bad news: the most fiendish part of the code still lies ahead |
1650 | * of us. | 1656 | * of us. |
@@ -1691,8 +1697,8 @@ int main(int argc, char *argv[]) | |||
1691 | * device receive input from a file descriptor, we keep an fdset | 1697 | * device receive input from a file descriptor, we keep an fdset |
1692 | * (infds) and the maximum fd number (max_infd) with the head of the | 1698 | * (infds) and the maximum fd number (max_infd) with the head of the |
1693 | * list. We also keep a pointer to the last device. Finally, we keep | 1699 | * list. We also keep a pointer to the last device. Finally, we keep |
1694 | * the next interrupt number to hand out (1: remember that 0 is used by | 1700 | * the next interrupt number to use for devices (1: remember that 0 is |
1695 | * the timer). */ | 1701 | * used by the timer). */ |
1696 | FD_ZERO(&devices.infds); | 1702 | FD_ZERO(&devices.infds); |
1697 | devices.max_infd = -1; | 1703 | devices.max_infd = -1; |
1698 | devices.lastdev = NULL; | 1704 | devices.lastdev = NULL; |
@@ -1793,8 +1799,8 @@ int main(int argc, char *argv[]) | |||
1793 | lguest_fd = tell_kernel(pgdir, start); | 1799 | lguest_fd = tell_kernel(pgdir, start); |
1794 | 1800 | ||
1795 | /* We fork off a child process, which wakes the Launcher whenever one | 1801 | /* We fork off a child process, which wakes the Launcher whenever one |
1796 | * of the input file descriptors needs attention. Otherwise we would | 1802 | * of the input file descriptors needs attention. We call this the |
1797 | * run the Guest until it tries to output something. */ | 1803 | * Waker, and we'll cover it in a moment. */ |
1798 | waker_fd = setup_waker(lguest_fd); | 1804 | waker_fd = setup_waker(lguest_fd); |
1799 | 1805 | ||
1800 | /* Finally, run the Guest. This doesn't return. */ | 1806 | /* Finally, run the Guest. This doesn't return. */ |
diff --git a/Documentation/lguest/lguest.txt b/Documentation/lguest/lguest.txt index 722d4e7fbebe..29510dc51510 100644 --- a/Documentation/lguest/lguest.txt +++ b/Documentation/lguest/lguest.txt | |||
@@ -1,6 +1,7 @@ | |||
1 | Rusty's Remarkably Unreliable Guide to Lguest | 1 | __ |
2 | - or, A Young Coder's Illustrated Hypervisor | 2 | (___()'`; Rusty's Remarkably Unreliable Guide to Lguest |
3 | http://lguest.ozlabs.org | 3 | /, /` - or, A Young Coder's Illustrated Hypervisor |
4 | \\"--\\ http://lguest.ozlabs.org | ||
4 | 5 | ||
5 | Lguest is designed to be a minimal hypervisor for the Linux kernel, for | 6 | Lguest is designed to be a minimal hypervisor for the Linux kernel, for |
6 | Linux developers and users to experiment with virtualization with the | 7 | Linux developers and users to experiment with virtualization with the |
@@ -41,12 +42,16 @@ Running Lguest: | |||
41 | CONFIG_PHYSICAL_ALIGN=0x100000) | 42 | CONFIG_PHYSICAL_ALIGN=0x100000) |
42 | 43 | ||
43 | "Device Drivers": | 44 | "Device Drivers": |
45 | "Block devices" | ||
46 | "Virtio block driver (EXPERIMENTAL)" = M/Y | ||
44 | "Network device support" | 47 | "Network device support" |
45 | "Universal TUN/TAP device driver support" = M/Y | 48 | "Universal TUN/TAP device driver support" = M/Y |
46 | (CONFIG_TUN=m) | 49 | "Virtio network driver (EXPERIMENTAL)" = M/Y |
47 | "Virtualization" | 50 | (CONFIG_VIRTIO_BLK=m, CONFIG_VIRTIO_NET=m and CONFIG_TUN=m) |
48 | "Linux hypervisor example code" = M/Y | 51 | |
49 | (CONFIG_LGUEST=m) | 52 | "Virtualization" |
53 | "Linux hypervisor example code" = M/Y | ||
54 | (CONFIG_LGUEST=m) | ||
50 | 55 | ||
51 | - A tool called "lguest" is available in this directory: type "make" | 56 | - A tool called "lguest" is available in this directory: type "make" |
52 | to build it. If you didn't build your kernel in-tree, use "make | 57 | to build it. If you didn't build your kernel in-tree, use "make |
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index 02e56d447a8f..c485ee028bd9 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
@@ -84,9 +84,6 @@ policy-routing.txt | |||
84 | - IP policy-based routing | 84 | - IP policy-based routing |
85 | ray_cs.txt | 85 | ray_cs.txt |
86 | - Raylink Wireless LAN card driver info. | 86 | - Raylink Wireless LAN card driver info. |
87 | sk98lin.txt | ||
88 | - Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit | ||
89 | Ethernet Adapter family driver info | ||
90 | skfp.txt | 87 | skfp.txt |
91 | - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info. | 88 | - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info. |
92 | smc9.txt | 89 | smc9.txt |
diff --git a/Documentation/networking/sk98lin.txt b/Documentation/networking/sk98lin.txt deleted file mode 100644 index 8590a954df1d..000000000000 --- a/Documentation/networking/sk98lin.txt +++ /dev/null | |||
@@ -1,568 +0,0 @@ | |||
1 | (C)Copyright 1999-2004 Marvell(R). | ||
2 | All rights reserved | ||
3 | =========================================================================== | ||
4 | |||
5 | sk98lin.txt created 13-Feb-2004 | ||
6 | |||
7 | Readme File for sk98lin v6.23 | ||
8 | Marvell Yukon/SysKonnect SK-98xx Gigabit Ethernet Adapter family driver for LINUX | ||
9 | |||
10 | This file contains | ||
11 | 1 Overview | ||
12 | 2 Required Files | ||
13 | 3 Installation | ||
14 | 3.1 Driver Installation | ||
15 | 3.2 Inclusion of adapter at system start | ||
16 | 4 Driver Parameters | ||
17 | 4.1 Per-Port Parameters | ||
18 | 4.2 Adapter Parameters | ||
19 | 5 Large Frame Support | ||
20 | 6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad) | ||
21 | 7 Troubleshooting | ||
22 | |||
23 | =========================================================================== | ||
24 | |||
25 | |||
26 | 1 Overview | ||
27 | =========== | ||
28 | |||
29 | The sk98lin driver supports the Marvell Yukon and SysKonnect | ||
30 | SK-98xx/SK-95xx compliant Gigabit Ethernet Adapter on Linux. It has | ||
31 | been tested with Linux on Intel/x86 machines. | ||
32 | *** | ||
33 | |||
34 | |||
35 | 2 Required Files | ||
36 | ================= | ||
37 | |||
38 | The linux kernel source. | ||
39 | No additional files required. | ||
40 | *** | ||
41 | |||
42 | |||
43 | 3 Installation | ||
44 | =============== | ||
45 | |||
46 | It is recommended to download the latest version of the driver from the | ||
47 | SysKonnect web site www.syskonnect.com. If you have downloaded the latest | ||
48 | driver, the Linux kernel has to be patched before the driver can be | ||
49 | installed. For details on how to patch a Linux kernel, refer to the | ||
50 | patch.txt file. | ||
51 | |||
52 | 3.1 Driver Installation | ||
53 | ------------------------ | ||
54 | |||
55 | The following steps describe the actions that are required to install | ||
56 | the driver and to start it manually. These steps should be carried | ||
57 | out for the initial driver setup. Once confirmed to be ok, they can | ||
58 | be included in the system start. | ||
59 | |||
60 | NOTE 1: To perform the following tasks you need 'root' access. | ||
61 | |||
62 | NOTE 2: In case of problems, please read the section "Troubleshooting" | ||
63 | below. | ||
64 | |||
65 | The driver can either be integrated into the kernel or it can be compiled | ||
66 | as a module. Select the appropriate option during the kernel | ||
67 | configuration. | ||
68 | |||
69 | Compile/use the driver as a module | ||
70 | ---------------------------------- | ||
71 | To compile the driver, go to the directory /usr/src/linux and | ||
72 | execute the command "make menuconfig" or "make xconfig" and proceed as | ||
73 | follows: | ||
74 | |||
75 | To integrate the driver permanently into the kernel, proceed as follows: | ||
76 | |||
77 | 1. Select the menu "Network device support" and then "Ethernet(1000Mbit)" | ||
78 | 2. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support" | ||
79 | with (*) | ||
80 | 3. Build a new kernel when the configuration of the above options is | ||
81 | finished. | ||
82 | 4. Install the new kernel. | ||
83 | 5. Reboot your system. | ||
84 | |||
85 | To use the driver as a module, proceed as follows: | ||
86 | |||
87 | 1. Enable 'loadable module support' in the kernel. | ||
88 | 2. For automatic driver start, enable the 'Kernel module loader'. | ||
89 | 3. Select the menu "Network device support" and then "Ethernet(1000Mbit)" | ||
90 | 4. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support" | ||
91 | with (M) | ||
92 | 5. Execute the command "make modules". | ||
93 | 6. Execute the command "make modules_install". | ||
94 | The appropriate modules will be installed. | ||
95 | 7. Reboot your system. | ||
96 | |||
97 | |||
98 | Load the module manually | ||
99 | ------------------------ | ||
100 | To load the module manually, proceed as follows: | ||
101 | |||
102 | 1. Enter "modprobe sk98lin". | ||
103 | 2. If a Marvell Yukon or SysKonnect SK-98xx adapter is installed in | ||
104 | your computer and you have a /proc file system, execute the command: | ||
105 | "ls /proc/net/sk98lin/" | ||
106 | This should produce an output containing a line with the following | ||
107 | format: | ||
108 | eth0 eth1 ... | ||
109 | which indicates that your adapter has been found and initialized. | ||
110 | |||
111 | NOTE 1: If you have more than one Marvell Yukon or SysKonnect SK-98xx | ||
112 | adapter installed, the adapters will be listed as 'eth0', | ||
113 | 'eth1', 'eth2', etc. | ||
114 | For each adapter, repeat steps 3 and 4 below. | ||
115 | |||
116 | NOTE 2: If you have other Ethernet adapters installed, your Marvell | ||
117 | Yukon or SysKonnect SK-98xx adapter will be mapped to the | ||
118 | next available number, e.g. 'eth1'. The mapping is executed | ||
119 | automatically. | ||
120 | The module installation message (displayed either in a system | ||
121 | log file or on the console) prints a line for each adapter | ||
122 | found containing the corresponding 'ethX'. | ||
123 | |||
124 | 3. Select an IP address and assign it to the respective adapter by | ||
125 | entering: | ||
126 | ifconfig eth0 <ip-address> | ||
127 | With this command, the adapter is connected to the Ethernet. | ||
128 | |||
129 | SK-98xx Gigabit Ethernet Server Adapters: The yellow LED on the adapter | ||
130 | is now active, the link status LED of the primary port is active and | ||
131 | the link status LED of the secondary port (on dual port adapters) is | ||
132 | blinking (if the ports are connected to a switch or hub). | ||
133 | SK-98xx V2.0 Gigabit Ethernet Adapters: The link status LED is active. | ||
134 | In addition, you will receive a status message on the console stating | ||
135 | "ethX: network connection up using port Y" and showing the selected | ||
136 | connection parameters (x stands for the ethernet device number | ||
137 | (0,1,2, etc), y stands for the port name (A or B)). | ||
138 | |||
139 | NOTE: If you are in doubt about IP addresses, ask your network | ||
140 | administrator for assistance. | ||
141 | |||
142 | 4. Your adapter should now be fully operational. | ||
143 | Use 'ping <otherstation>' to verify the connection to other computers | ||
144 | on your network. | ||
145 | 5. To check the adapter configuration view /proc/net/sk98lin/[devicename]. | ||
146 | For example by executing: | ||
147 | "cat /proc/net/sk98lin/eth0" | ||
148 | |||
149 | Unload the module | ||
150 | ----------------- | ||
151 | To stop and unload the driver modules, proceed as follows: | ||
152 | |||
153 | 1. Execute the command "ifconfig eth0 down". | ||
154 | 2. Execute the command "rmmod sk98lin". | ||
155 | |||
156 | 3.2 Inclusion of adapter at system start | ||
157 | ----------------------------------------- | ||
158 | |||
159 | Since a large number of different Linux distributions are | ||
160 | available, we are unable to describe a general installation procedure | ||
161 | for the driver module. | ||
162 | Because the driver is now integrated in the kernel, installation should | ||
163 | be easy, using the standard mechanism of your distribution. | ||
164 | Refer to the distribution's manual for installation of ethernet adapters. | ||
165 | |||
166 | *** | ||
167 | |||
168 | 4 Driver Parameters | ||
169 | ==================== | ||
170 | |||
171 | Parameters can be set at the command line after the module has been | ||
172 | loaded with the command 'modprobe'. | ||
173 | In some distributions, the configuration tools are able to pass parameters | ||
174 | to the driver module. | ||
175 | |||
176 | If you use the kernel module loader, you can set driver parameters | ||
177 | in the file /etc/modprobe.conf (or /etc/modules.conf in 2.4 or earlier). | ||
178 | To set the driver parameters in this file, proceed as follows: | ||
179 | |||
180 | 1. Insert a line of the form : | ||
181 | options sk98lin ... | ||
182 | For "...", the same syntax is required as described for the command | ||
183 | line parameters of modprobe below. | ||
184 | 2. To activate the new parameters, either reboot your computer | ||
185 | or | ||
186 | unload and reload the driver. | ||
187 | The syntax of the driver parameters is: | ||
188 | |||
189 | modprobe sk98lin parameter=value1[,value2[,value3...]] | ||
190 | |||
191 | where value1 refers to the first adapter, value2 to the second etc. | ||
192 | |||
193 | NOTE: All parameters are case sensitive. Write them exactly as shown | ||
194 | below. | ||
195 | |||
196 | Example: | ||
197 | Suppose you have two adapters. You want to set auto-negotiation | ||
198 | on the first adapter to ON and on the second adapter to OFF. | ||
199 | You also want to set DuplexCapabilities on the first adapter | ||
200 | to FULL, and on the second adapter to HALF. | ||
201 | Then, you must enter: | ||
202 | |||
203 | modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half | ||
204 | |||
205 | NOTE: The number of adapters that can be configured this way is | ||
206 | limited in the driver (file skge.c, constant SK_MAX_CARD_PARAM). | ||
207 | The current limit is 16. If you happen to install | ||
208 | more adapters, adjust this and recompile. | ||
209 | |||
210 | |||
211 | 4.1 Per-Port Parameters | ||
212 | ------------------------ | ||
213 | |||
214 | These settings are available for each port on the adapter. | ||
215 | In the following description, '?' stands for the port for | ||
216 | which you set the parameter (A or B). | ||
217 | |||
218 | Speed | ||
219 | ----- | ||
220 | Parameter: Speed_? | ||
221 | Values: 10, 100, 1000, Auto | ||
222 | Default: Auto | ||
223 | |||
224 | This parameter is used to set the speed capabilities. It is only valid | ||
225 | for the SK-98xx V2.0 copper adapters. | ||
226 | Usually, the speed is negotiated between the two ports during link | ||
227 | establishment. If this fails, a port can be forced to a specific setting | ||
228 | with this parameter. | ||
229 | |||
230 | Auto-Negotiation | ||
231 | ---------------- | ||
232 | Parameter: AutoNeg_? | ||
233 | Values: On, Off, Sense | ||
234 | Default: On | ||
235 | |||
236 | The "Sense"-mode automatically detects whether the link partner supports | ||
237 | auto-negotiation or not. | ||
238 | |||
239 | Duplex Capabilities | ||
240 | ------------------- | ||
241 | Parameter: DupCap_? | ||
242 | Values: Half, Full, Both | ||
243 | Default: Both | ||
244 | |||
245 | This parameters is only relevant if auto-negotiation for this port is | ||
246 | not set to "Sense". If auto-negotiation is set to "On", all three values | ||
247 | are possible. If it is set to "Off", only "Full" and "Half" are allowed. | ||
248 | This parameter is useful if your link partner does not support all | ||
249 | possible combinations. | ||
250 | |||
251 | Flow Control | ||
252 | ------------ | ||
253 | Parameter: FlowCtrl_? | ||
254 | Values: Sym, SymOrRem, LocSend, None | ||
255 | Default: SymOrRem | ||
256 | |||
257 | This parameter can be used to set the flow control capabilities the | ||
258 | port reports during auto-negotiation. It can be set for each port | ||
259 | individually. | ||
260 | Possible modes: | ||
261 | -- Sym = Symmetric: both link partners are allowed to send | ||
262 | PAUSE frames | ||
263 | -- SymOrRem = SymmetricOrRemote: both or only remote partner | ||
264 | are allowed to send PAUSE frames | ||
265 | -- LocSend = LocalSend: only local link partner is allowed | ||
266 | to send PAUSE frames | ||
267 | -- None = no link partner is allowed to send PAUSE frames | ||
268 | |||
269 | NOTE: This parameter is ignored if auto-negotiation is set to "Off". | ||
270 | |||
271 | Role in Master-Slave-Negotiation (1000Base-T only) | ||
272 | -------------------------------------------------- | ||
273 | Parameter: Role_? | ||
274 | Values: Auto, Master, Slave | ||
275 | Default: Auto | ||
276 | |||
277 | This parameter is only valid for the SK-9821 and SK-9822 adapters. | ||
278 | For two 1000Base-T ports to communicate, one must take the role of the | ||
279 | master (providing timing information), while the other must be the | ||
280 | slave. Usually, this is negotiated between the two ports during link | ||
281 | establishment. If this fails, a port can be forced to a specific setting | ||
282 | with this parameter. | ||
283 | |||
284 | |||
285 | 4.2 Adapter Parameters | ||
286 | ----------------------- | ||
287 | |||
288 | Connection Type (SK-98xx V2.0 copper adapters only) | ||
289 | --------------- | ||
290 | Parameter: ConType | ||
291 | Values: Auto, 100FD, 100HD, 10FD, 10HD | ||
292 | Default: Auto | ||
293 | |||
294 | The parameter 'ConType' is a combination of all five per-port parameters | ||
295 | within one single parameter. This simplifies the configuration of both ports | ||
296 | of an adapter card! The different values of this variable reflect the most | ||
297 | meaningful combinations of port parameters. | ||
298 | |||
299 | The following table shows the values of 'ConType' and the corresponding | ||
300 | combinations of the per-port parameters: | ||
301 | |||
302 | ConType | DupCap AutoNeg FlowCtrl Role Speed | ||
303 | ----------+------------------------------------------------------ | ||
304 | Auto | Both On SymOrRem Auto Auto | ||
305 | 100FD | Full Off None Auto (ignored) 100 | ||
306 | 100HD | Half Off None Auto (ignored) 100 | ||
307 | 10FD | Full Off None Auto (ignored) 10 | ||
308 | 10HD | Half Off None Auto (ignored) 10 | ||
309 | |||
310 | Stating any other port parameter together with this 'ConType' variable | ||
311 | will result in a merged configuration of those settings. This due to | ||
312 | the fact, that the per-port parameters (e.g. Speed_? ) have a higher | ||
313 | priority than the combined variable 'ConType'. | ||
314 | |||
315 | NOTE: This parameter is always used on both ports of the adapter card. | ||
316 | |||
317 | Interrupt Moderation | ||
318 | -------------------- | ||
319 | Parameter: Moderation | ||
320 | Values: None, Static, Dynamic | ||
321 | Default: None | ||
322 | |||
323 | Interrupt moderation is employed to limit the maximum number of interrupts | ||
324 | the driver has to serve. That is, one or more interrupts (which indicate any | ||
325 | transmit or receive packet to be processed) are queued until the driver | ||
326 | processes them. When queued interrupts are to be served, is determined by the | ||
327 | 'IntsPerSec' parameter, which is explained later below. | ||
328 | |||
329 | Possible modes: | ||
330 | |||
331 | -- None - No interrupt moderation is applied on the adapter card. | ||
332 | Therefore, each transmit or receive interrupt is served immediately | ||
333 | as soon as it appears on the interrupt line of the adapter card. | ||
334 | |||
335 | -- Static - Interrupt moderation is applied on the adapter card. | ||
336 | All transmit and receive interrupts are queued until a complete | ||
337 | moderation interval ends. If such a moderation interval ends, all | ||
338 | queued interrupts are processed in one big bunch without any delay. | ||
339 | The term 'static' reflects the fact, that interrupt moderation is | ||
340 | always enabled, regardless how much network load is currently | ||
341 | passing via a particular interface. In addition, the duration of | ||
342 | the moderation interval has a fixed length that never changes while | ||
343 | the driver is operational. | ||
344 | |||
345 | -- Dynamic - Interrupt moderation might be applied on the adapter card, | ||
346 | depending on the load of the system. If the driver detects that the | ||
347 | system load is too high, the driver tries to shield the system against | ||
348 | too much network load by enabling interrupt moderation. If - at a later | ||
349 | time - the CPU utilization decreases again (or if the network load is | ||
350 | negligible) the interrupt moderation will automatically be disabled. | ||
351 | |||
352 | Interrupt moderation should be used when the driver has to handle one or more | ||
353 | interfaces with a high network load, which - as a consequence - leads also to a | ||
354 | high CPU utilization. When moderation is applied in such high network load | ||
355 | situations, CPU load might be reduced by 20-30%. | ||
356 | |||
357 | NOTE: The drawback of using interrupt moderation is an increase of the round- | ||
358 | trip-time (RTT), due to the queueing and serving of interrupts at dedicated | ||
359 | moderation times. | ||
360 | |||
361 | Interrupts per second | ||
362 | --------------------- | ||
363 | Parameter: IntsPerSec | ||
364 | Values: 30...40000 (interrupts per second) | ||
365 | Default: 2000 | ||
366 | |||
367 | This parameter is only used if either static or dynamic interrupt moderation | ||
368 | is used on a network adapter card. Using this parameter if no moderation is | ||
369 | applied will lead to no action performed. | ||
370 | |||
371 | This parameter determines the length of any interrupt moderation interval. | ||
372 | Assuming that static interrupt moderation is to be used, an 'IntsPerSec' | ||
373 | parameter value of 2000 will lead to an interrupt moderation interval of | ||
374 | 500 microseconds. | ||
375 | |||
376 | NOTE: The duration of the moderation interval is to be chosen with care. | ||
377 | At first glance, selecting a very long duration (e.g. only 100 interrupts per | ||
378 | second) seems to be meaningful, but the increase of packet-processing delay | ||
379 | is tremendous. On the other hand, selecting a very short moderation time might | ||
380 | compensate the use of any moderation being applied. | ||
381 | |||
382 | |||
383 | Preferred Port | ||
384 | -------------- | ||
385 | Parameter: PrefPort | ||
386 | Values: A, B | ||
387 | Default: A | ||
388 | |||
389 | This is used to force the preferred port to A or B (on dual-port network | ||
390 | adapters). The preferred port is the one that is used if both are detected | ||
391 | as fully functional. | ||
392 | |||
393 | RLMT Mode (Redundant Link Management Technology) | ||
394 | ------------------------------------------------ | ||
395 | Parameter: RlmtMode | ||
396 | Values: CheckLinkState,CheckLocalPort, CheckSeg, DualNet | ||
397 | Default: CheckLinkState | ||
398 | |||
399 | RLMT monitors the status of the port. If the link of the active port | ||
400 | fails, RLMT switches immediately to the standby link. The virtual link is | ||
401 | maintained as long as at least one 'physical' link is up. | ||
402 | |||
403 | Possible modes: | ||
404 | |||
405 | -- CheckLinkState - Check link state only: RLMT uses the link state | ||
406 | reported by the adapter hardware for each individual port to | ||
407 | determine whether a port can be used for all network traffic or | ||
408 | not. | ||
409 | |||
410 | -- CheckLocalPort - In this mode, RLMT monitors the network path | ||
411 | between the two ports of an adapter by regularly exchanging packets | ||
412 | between them. This mode requires a network configuration in which | ||
413 | the two ports are able to "see" each other (i.e. there must not be | ||
414 | any router between the ports). | ||
415 | |||
416 | -- CheckSeg - Check local port and segmentation: This mode supports the | ||
417 | same functions as the CheckLocalPort mode and additionally checks | ||
418 | network segmentation between the ports. Therefore, this mode is only | ||
419 | to be used if Gigabit Ethernet switches are installed on the network | ||
420 | that have been configured to use the Spanning Tree protocol. | ||
421 | |||
422 | -- DualNet - In this mode, ports A and B are used as separate devices. | ||
423 | If you have a dual port adapter, port A will be configured as eth0 | ||
424 | and port B as eth1. Both ports can be used independently with | ||
425 | distinct IP addresses. The preferred port setting is not used. | ||
426 | RLMT is turned off. | ||
427 | |||
428 | NOTE: RLMT modes CLP and CLPSS are designed to operate in configurations | ||
429 | where a network path between the ports on one adapter exists. | ||
430 | Moreover, they are not designed to work where adapters are connected | ||
431 | back-to-back. | ||
432 | *** | ||
433 | |||
434 | |||
435 | 5 Large Frame Support | ||
436 | ====================== | ||
437 | |||
438 | The driver supports large frames (also called jumbo frames). Using large | ||
439 | frames can result in an improved throughput if transferring large amounts | ||
440 | of data. | ||
441 | To enable large frames, set the MTU (maximum transfer unit) of the | ||
442 | interface to the desired value (up to 9000), execute the following | ||
443 | command: | ||
444 | ifconfig eth0 mtu 9000 | ||
445 | This will only work if you have two adapters connected back-to-back | ||
446 | or if you use a switch that supports large frames. When using a switch, | ||
447 | it should be configured to allow large frames and auto-negotiation should | ||
448 | be set to OFF. The setting must be configured on all adapters that can be | ||
449 | reached by the large frames. If one adapter is not set to receive large | ||
450 | frames, it will simply drop them. | ||
451 | |||
452 | You can switch back to the standard ethernet frame size by executing the | ||
453 | following command: | ||
454 | ifconfig eth0 mtu 1500 | ||
455 | |||
456 | To permanently configure this setting, add a script with the 'ifconfig' | ||
457 | line to the system startup sequence (named something like "S99sk98lin" | ||
458 | in /etc/rc.d/rc2.d). | ||
459 | *** | ||
460 | |||
461 | |||
462 | 6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad) | ||
463 | ================================================================== | ||
464 | |||
465 | The Marvell Yukon/SysKonnect Linux drivers are able to support VLAN and | ||
466 | Link Aggregation according to IEEE standards 802.1, 802.1q, and 802.3ad. | ||
467 | These features are only available after installation of open source | ||
468 | modules available on the Internet: | ||
469 | For VLAN go to: http://www.candelatech.com/~greear/vlan.html | ||
470 | For Link Aggregation go to: http://www.st.rim.or.jp/~yumo | ||
471 | |||
472 | NOTE: SysKonnect GmbH does not offer any support for these open source | ||
473 | modules and does not take the responsibility for any kind of | ||
474 | failures or problems arising in connection with these modules. | ||
475 | |||
476 | NOTE: Configuring Link Aggregation on a SysKonnect dual link adapter may | ||
477 | cause problems when unloading the driver. | ||
478 | |||
479 | |||
480 | 7 Troubleshooting | ||
481 | ================== | ||
482 | |||
483 | If any problems occur during the installation process, check the | ||
484 | following list: | ||
485 | |||
486 | |||
487 | Problem: The SK-98xx adapter cannot be found by the driver. | ||
488 | Solution: In /proc/pci search for the following entry: | ||
489 | 'Ethernet controller: SysKonnect SK-98xx ...' | ||
490 | If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has | ||
491 | been found by the system and should be operational. | ||
492 | If this entry does not exist or if the file '/proc/pci' is not | ||
493 | found, there may be a hardware problem or the PCI support may | ||
494 | not be enabled in your kernel. | ||
495 | The adapter can be checked using the diagnostics program which | ||
496 | is available on the SysKonnect web site: | ||
497 | www.syskonnect.com | ||
498 | |||
499 | Some COMPAQ machines have problems dealing with PCI under Linux. | ||
500 | This problem is described in the 'PCI howto' document | ||
501 | (included in some distributions or available from the | ||
502 | web, e.g. at 'www.linux.org'). | ||
503 | |||
504 | |||
505 | Problem: Programs such as 'ifconfig' or 'route' cannot be found or the | ||
506 | error message 'Operation not permitted' is displayed. | ||
507 | Reason: You are not logged in as user 'root'. | ||
508 | Solution: Logout and login as 'root' or change to 'root' via 'su'. | ||
509 | |||
510 | |||
511 | Problem: Upon use of the command 'ping <address>' the message | ||
512 | "ping: sendto: Network is unreachable" is displayed. | ||
513 | Reason: Your route is not set correctly. | ||
514 | Solution: If you are using RedHat, you probably forgot to set up the | ||
515 | route in the 'network configuration'. | ||
516 | Check the existing routes with the 'route' command and check | ||
517 | if an entry for 'eth0' exists, and if so, if it is set correctly. | ||
518 | |||
519 | |||
520 | Problem: The driver can be started, the adapter is connected to the | ||
521 | network, but you cannot receive or transmit any packets; | ||
522 | e.g. 'ping' does not work. | ||
523 | Reason: There is an incorrect route in your routing table. | ||
524 | Solution: Check the routing table with the command 'route' and read the | ||
525 | manual help pages dealing with routes (enter 'man route'). | ||
526 | |||
527 | NOTE: Although the 2.2.x kernel versions generate the routing entry | ||
528 | automatically, problems of this kind may occur here as well. We've | ||
529 | come across a situation in which the driver started correctly at | ||
530 | system start, but after the driver has been removed and reloaded, | ||
531 | the route of the adapter's network pointed to the 'dummy0'device | ||
532 | and had to be corrected manually. | ||
533 | |||
534 | |||
535 | Problem: Your computer should act as a router between multiple | ||
536 | IP subnetworks (using multiple adapters), but computers in | ||
537 | other subnetworks cannot be reached. | ||
538 | Reason: Either the router's kernel is not configured for IP forwarding | ||
539 | or the routing table and gateway configuration of at least one | ||
540 | computer is not working. | ||
541 | |||
542 | Problem: Upon driver start, the following error message is displayed: | ||
543 | "eth0: -- ERROR -- | ||
544 | Class: internal Software error | ||
545 | Nr: 0xcc | ||
546 | Msg: SkGeInitPort() cannot init running ports" | ||
547 | Reason: You are using a driver compiled for single processor machines | ||
548 | on a multiprocessor machine with SMP (Symmetric MultiProcessor) | ||
549 | kernel. | ||
550 | Solution: Configure your kernel appropriately and recompile the kernel or | ||
551 | the modules. | ||
552 | |||
553 | |||
554 | |||
555 | If your problem is not listed here, please contact SysKonnect's technical | ||
556 | support for help (linux@syskonnect.de). | ||
557 | When contacting our technical support, please ensure that the following | ||
558 | information is available: | ||
559 | - System Manufacturer and HW Informations (CPU, Memory... ) | ||
560 | - PCI-Boards in your system | ||
561 | - Distribution | ||
562 | - Kernel version | ||
563 | - Driver version | ||
564 | *** | ||
565 | |||
566 | |||
567 | |||
568 | ***End of Readme File*** | ||
diff --git a/Documentation/nmi_watchdog.txt b/Documentation/nmi_watchdog.txt index c025a4561c10..757c729ee42e 100644 --- a/Documentation/nmi_watchdog.txt +++ b/Documentation/nmi_watchdog.txt | |||
@@ -23,8 +23,7 @@ kernel debugging options, such as Kernel Stack Meter or Kernel Tracer, | |||
23 | may implicitly disable the NMI watchdog.] | 23 | may implicitly disable the NMI watchdog.] |
24 | 24 | ||
25 | For x86-64, the needed APIC is always compiled in, and the NMI watchdog is | 25 | For x86-64, the needed APIC is always compiled in, and the NMI watchdog is |
26 | always enabled with I/O-APIC mode (nmi_watchdog=1). Currently, local APIC | 26 | always enabled with I/O-APIC mode (nmi_watchdog=1). |
27 | mode (nmi_watchdog=2) does not work on x86-64. | ||
28 | 27 | ||
29 | Using local APIC (nmi_watchdog=2) needs the first performance register, so | 28 | Using local APIC (nmi_watchdog=2) needs the first performance register, so |
30 | you can't use it for other purposes (such as high precision performance | 29 | you can't use it for other purposes (such as high precision performance |
diff --git a/Documentation/scheduler/00-INDEX b/Documentation/scheduler/00-INDEX index b5f5ca069b2d..fc234d093fbf 100644 --- a/Documentation/scheduler/00-INDEX +++ b/Documentation/scheduler/00-INDEX | |||
@@ -12,5 +12,7 @@ sched-domains.txt | |||
12 | - information on scheduling domains. | 12 | - information on scheduling domains. |
13 | sched-nice-design.txt | 13 | sched-nice-design.txt |
14 | - How and why the scheduler's nice levels are implemented. | 14 | - How and why the scheduler's nice levels are implemented. |
15 | sched-rt-group.txt | ||
16 | - real-time group scheduling. | ||
15 | sched-stats.txt | 17 | sched-stats.txt |
16 | - information on schedstats (Linux Scheduler Statistics). | 18 | - information on schedstats (Linux Scheduler Statistics). |
diff --git a/Documentation/sched-rt-group.txt b/Documentation/scheduler/sched-rt-group.txt index 1c6332f4543c..1c6332f4543c 100644 --- a/Documentation/sched-rt-group.txt +++ b/Documentation/scheduler/sched-rt-group.txt | |||
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary index 8861e47e5a2d..6d5f18143c50 100644 --- a/Documentation/spi/spi-summary +++ b/Documentation/spi/spi-summary | |||
@@ -116,6 +116,13 @@ low order bit. So when a chip's timing diagram shows the clock | |||
116 | starting low (CPOL=0) and data stabilized for sampling during the | 116 | starting low (CPOL=0) and data stabilized for sampling during the |
117 | trailing clock edge (CPHA=1), that's SPI mode 1. | 117 | trailing clock edge (CPHA=1), that's SPI mode 1. |
118 | 118 | ||
119 | Note that the clock mode is relevant as soon as the chipselect goes | ||
120 | active. So the master must set the clock to inactive before selecting | ||
121 | a slave, and the slave can tell the chosen polarity by sampling the | ||
122 | clock level when its select line goes active. That's why many devices | ||
123 | support for example both modes 0 and 3: they don't care about polarity, | ||
124 | and alway clock data in/out on rising clock edges. | ||
125 | |||
119 | 126 | ||
120 | How do these driver programming interfaces work? | 127 | How do these driver programming interfaces work? |
121 | ------------------------------------------------ | 128 | ------------------------------------------------ |
@@ -379,8 +386,14 @@ any more such messages. | |||
379 | + when bidirectional reads and writes start ... by how its | 386 | + when bidirectional reads and writes start ... by how its |
380 | sequence of spi_transfer requests is arranged; | 387 | sequence of spi_transfer requests is arranged; |
381 | 388 | ||
389 | + which I/O buffers are used ... each spi_transfer wraps a | ||
390 | buffer for each transfer direction, supporting full duplex | ||
391 | (two pointers, maybe the same one in both cases) and half | ||
392 | duplex (one pointer is NULL) transfers; | ||
393 | |||
382 | + optionally defining short delays after transfers ... using | 394 | + optionally defining short delays after transfers ... using |
383 | the spi_transfer.delay_usecs setting; | 395 | the spi_transfer.delay_usecs setting (this delay can be the |
396 | only protocol effect, if the buffer length is zero); | ||
384 | 397 | ||
385 | + whether the chipselect becomes inactive after a transfer and | 398 | + whether the chipselect becomes inactive after a transfer and |
386 | any delay ... by using the spi_transfer.cs_change flag; | 399 | any delay ... by using the spi_transfer.cs_change flag; |
diff --git a/Documentation/spinlocks.txt b/Documentation/spinlocks.txt index 471e75389778..619699dde593 100644 --- a/Documentation/spinlocks.txt +++ b/Documentation/spinlocks.txt | |||
@@ -5,6 +5,28 @@ Please use DEFINE_SPINLOCK()/DEFINE_RWLOCK() or | |||
5 | __SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static | 5 | __SPIN_LOCK_UNLOCKED()/__RW_LOCK_UNLOCKED() as appropriate for static |
6 | initialization. | 6 | initialization. |
7 | 7 | ||
8 | Most of the time, you can simply turn: | ||
9 | |||
10 | static spinlock_t xxx_lock = SPIN_LOCK_UNLOCKED; | ||
11 | |||
12 | into: | ||
13 | |||
14 | static DEFINE_SPINLOCK(xxx_lock); | ||
15 | |||
16 | Static structure member variables go from: | ||
17 | |||
18 | struct foo bar { | ||
19 | .lock = SPIN_LOCK_UNLOCKED; | ||
20 | }; | ||
21 | |||
22 | to: | ||
23 | |||
24 | struct foo bar { | ||
25 | .lock = __SPIN_LOCK_UNLOCKED(bar.lock); | ||
26 | }; | ||
27 | |||
28 | Declaration of static rw_locks undergo a similar transformation. | ||
29 | |||
8 | Dynamic initialization, when necessary, may be performed as | 30 | Dynamic initialization, when necessary, may be performed as |
9 | demonstrated below. | 31 | demonstrated below. |
10 | 32 | ||
diff --git a/Documentation/unaligned-memory-access.txt b/Documentation/unaligned-memory-access.txt index 6223eace3c09..b0472ac5226a 100644 --- a/Documentation/unaligned-memory-access.txt +++ b/Documentation/unaligned-memory-access.txt | |||
@@ -57,7 +57,7 @@ here; a summary of the common scenarios is presented below: | |||
57 | unaligned access to be corrected. | 57 | unaligned access to be corrected. |
58 | - Some architectures are not capable of unaligned memory access, but will | 58 | - Some architectures are not capable of unaligned memory access, but will |
59 | silently perform a different memory access to the one that was requested, | 59 | silently perform a different memory access to the one that was requested, |
60 | resulting a a subtle code bug that is hard to detect! | 60 | resulting in a subtle code bug that is hard to detect! |
61 | 61 | ||
62 | It should be obvious from the above that if your code causes unaligned | 62 | It should be obvious from the above that if your code causes unaligned |
63 | memory accesses to happen, your code will not work correctly on certain | 63 | memory accesses to happen, your code will not work correctly on certain |
@@ -209,7 +209,7 @@ memory and you wish to avoid unaligned access, its usage is as follows: | |||
209 | 209 | ||
210 | u32 value = get_unaligned((u32 *) data); | 210 | u32 value = get_unaligned((u32 *) data); |
211 | 211 | ||
212 | These macros work work for memory accesses of any length (not just 32 bits as | 212 | These macros work for memory accesses of any length (not just 32 bits as |
213 | in the examples above). Be aware that when compared to standard access of | 213 | in the examples above). Be aware that when compared to standard access of |
214 | aligned memory, using these macros to access unaligned memory can be costly in | 214 | aligned memory, using these macros to access unaligned memory can be costly in |
215 | terms of performance. | 215 | terms of performance. |
diff --git a/MAINTAINERS b/MAINTAINERS index d1c7be38b10a..a1d3dc873487 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -163,6 +163,12 @@ M: A2232@gmx.net | |||
163 | L: linux-m68k@lists.linux-m68k.org | 163 | L: linux-m68k@lists.linux-m68k.org |
164 | S: Maintained | 164 | S: Maintained |
165 | 165 | ||
166 | AFS FILESYSTEM & AF_RXRPC SOCKET DOMAIN | ||
167 | P: David Howells | ||
168 | M: dhowells@redhat.com | ||
169 | L: linux-afs@lists.infradead.org | ||
170 | S: Supported | ||
171 | |||
166 | AIO | 172 | AIO |
167 | P: Benjamin LaHaise | 173 | P: Benjamin LaHaise |
168 | M: bcrl@kvack.org | 174 | M: bcrl@kvack.org |
@@ -2116,7 +2122,7 @@ M: reinette.chatre@intel.com | |||
2116 | L: linux-wireless@vger.kernel.org | 2122 | L: linux-wireless@vger.kernel.org |
2117 | L: ipw3945-devel@lists.sourceforge.net | 2123 | L: ipw3945-devel@lists.sourceforge.net |
2118 | W: http://intellinuxwireless.org | 2124 | W: http://intellinuxwireless.org |
2119 | T: git git://intellinuxwireless.org/repos/iwlwifi | 2125 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/rchatre/iwlwifi-2.6.git |
2120 | S: Supported | 2126 | S: Supported |
2121 | 2127 | ||
2122 | IOC3 ETHERNET DRIVER | 2128 | IOC3 ETHERNET DRIVER |
@@ -2320,14 +2326,14 @@ L: kexec@lists.infradead.org | |||
2320 | S: Maintained | 2326 | S: Maintained |
2321 | 2327 | ||
2322 | KPROBES | 2328 | KPROBES |
2323 | P: Prasanna S Panchamukhi | ||
2324 | M: prasanna@in.ibm.com | ||
2325 | P: Ananth N Mavinakayanahalli | 2329 | P: Ananth N Mavinakayanahalli |
2326 | M: ananth@in.ibm.com | 2330 | M: ananth@in.ibm.com |
2327 | P: Anil S Keshavamurthy | 2331 | P: Anil S Keshavamurthy |
2328 | M: anil.s.keshavamurthy@intel.com | 2332 | M: anil.s.keshavamurthy@intel.com |
2329 | P: David S. Miller | 2333 | P: David S. Miller |
2330 | M: davem@davemloft.net | 2334 | M: davem@davemloft.net |
2335 | P: Masami Hiramatsu | ||
2336 | M: mhiramat@redhat.com | ||
2331 | L: linux-kernel@vger.kernel.org | 2337 | L: linux-kernel@vger.kernel.org |
2332 | S: Maintained | 2338 | S: Maintained |
2333 | 2339 | ||
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 25 | 3 | SUBLEVEL = 25 |
4 | EXTRAVERSION = -rc7 | 4 | EXTRAVERSION = -rc9 |
5 | NAME = Funky Weasel is Jiggy wit it | 5 | NAME = Funky Weasel is Jiggy wit it |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index 4e1c08636edd..dd6e334ab9e1 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c | |||
@@ -424,11 +424,13 @@ EXPORT_SYMBOL(pci_unmap_page); | |||
424 | else DMA_ADDRP is undefined. */ | 424 | else DMA_ADDRP is undefined. */ |
425 | 425 | ||
426 | void * | 426 | void * |
427 | pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_addrp) | 427 | __pci_alloc_consistent(struct pci_dev *pdev, size_t size, |
428 | dma_addr_t *dma_addrp, gfp_t gfp) | ||
428 | { | 429 | { |
429 | void *cpu_addr; | 430 | void *cpu_addr; |
430 | long order = get_order(size); | 431 | long order = get_order(size); |
431 | gfp_t gfp = GFP_ATOMIC; | 432 | |
433 | gfp &= ~GFP_DMA; | ||
432 | 434 | ||
433 | try_again: | 435 | try_again: |
434 | cpu_addr = (void *)__get_free_pages(gfp, order); | 436 | cpu_addr = (void *)__get_free_pages(gfp, order); |
@@ -458,7 +460,7 @@ try_again: | |||
458 | 460 | ||
459 | return cpu_addr; | 461 | return cpu_addr; |
460 | } | 462 | } |
461 | EXPORT_SYMBOL(pci_alloc_consistent); | 463 | EXPORT_SYMBOL(__pci_alloc_consistent); |
462 | 464 | ||
463 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must | 465 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must |
464 | be values that were returned from pci_alloc_consistent. SIZE must | 466 | be values that were returned from pci_alloc_consistent. SIZE must |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index ac1bef1797e6..a34cc03e727f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -476,6 +476,7 @@ config ARCH_DAVINCI | |||
476 | config ARCH_OMAP | 476 | config ARCH_OMAP |
477 | bool "TI OMAP" | 477 | bool "TI OMAP" |
478 | select GENERIC_GPIO | 478 | select GENERIC_GPIO |
479 | select HAVE_GPIO_LIB | ||
479 | select GENERIC_TIME | 480 | select GENERIC_TIME |
480 | select GENERIC_CLOCKEVENTS | 481 | select GENERIC_CLOCKEVENTS |
481 | help | 482 | help |
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index 538262241483..5fe9588db077 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c | |||
@@ -120,6 +120,7 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc) | |||
120 | time, when they all three were 0. */ | 120 | time, when they all three were 0. */ |
121 | bits_pd = __raw_readl(IT8152_INTC_PDCNIRR); | 121 | bits_pd = __raw_readl(IT8152_INTC_PDCNIRR); |
122 | bits_lp = __raw_readl(IT8152_INTC_LPCNIRR); | 122 | bits_lp = __raw_readl(IT8152_INTC_LPCNIRR); |
123 | bits_ld = __raw_readl(IT8152_INTC_LDCNIRR); | ||
123 | if (!(bits_ld | bits_lp | bits_pd)) | 124 | if (!(bits_ld | bits_lp | bits_pd)) |
124 | return; | 125 | return; |
125 | } | 126 | } |
@@ -133,14 +134,14 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc) | |||
133 | 134 | ||
134 | bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1); | 135 | bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1); |
135 | while (bits_lp) { | 136 | while (bits_lp) { |
136 | i = __ffs(bits_pd); | 137 | i = __ffs(bits_lp); |
137 | it8152_irq(IT8152_LP_IRQ(i)); | 138 | it8152_irq(IT8152_LP_IRQ(i)); |
138 | bits_lp &= ~(1 << i); | 139 | bits_lp &= ~(1 << i); |
139 | } | 140 | } |
140 | 141 | ||
141 | bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1); | 142 | bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1); |
142 | while (bits_ld) { | 143 | while (bits_ld) { |
143 | i = __ffs(bits_pd); | 144 | i = __ffs(bits_ld); |
144 | it8152_irq(IT8152_LD_IRQ(i)); | 145 | it8152_irq(IT8152_LD_IRQ(i)); |
145 | bits_ld &= ~(1 << i); | 146 | bits_ld &= ~(1 << i); |
146 | } | 147 | } |
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index 95f1c121cb30..30a67a5a40a8 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -336,7 +336,7 @@ | |||
336 | CALL(sys_mknodat) | 336 | CALL(sys_mknodat) |
337 | /* 325 */ CALL(sys_fchownat) | 337 | /* 325 */ CALL(sys_fchownat) |
338 | CALL(sys_futimesat) | 338 | CALL(sys_futimesat) |
339 | CALL(sys_fstatat64) | 339 | CALL(ABI(sys_fstatat64, sys_oabi_fstatat64)) |
340 | CALL(sys_unlinkat) | 340 | CALL(sys_unlinkat) |
341 | CALL(sys_renameat) | 341 | CALL(sys_renameat) |
342 | /* 330 */ CALL(sys_linkat) | 342 | /* 330 */ CALL(sys_linkat) |
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c index e8b98046895b..96ab5f52949c 100644 --- a/arch/arm/kernel/sys_oabi-compat.c +++ b/arch/arm/kernel/sys_oabi-compat.c | |||
@@ -25,6 +25,7 @@ | |||
25 | * sys_stat64: | 25 | * sys_stat64: |
26 | * sys_lstat64: | 26 | * sys_lstat64: |
27 | * sys_fstat64: | 27 | * sys_fstat64: |
28 | * sys_fstatat64: | ||
28 | * | 29 | * |
29 | * struct stat64 has different sizes and some members are shifted | 30 | * struct stat64 has different sizes and some members are shifted |
30 | * Compatibility wrappers are needed for them and provided below. | 31 | * Compatibility wrappers are needed for them and provided below. |
@@ -169,6 +170,29 @@ asmlinkage long sys_oabi_fstat64(unsigned long fd, | |||
169 | return error; | 170 | return error; |
170 | } | 171 | } |
171 | 172 | ||
173 | asmlinkage long sys_oabi_fstatat64(int dfd, | ||
174 | char __user *filename, | ||
175 | struct oldabi_stat64 __user *statbuf, | ||
176 | int flag) | ||
177 | { | ||
178 | struct kstat stat; | ||
179 | int error = -EINVAL; | ||
180 | |||
181 | if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) | ||
182 | goto out; | ||
183 | |||
184 | if (flag & AT_SYMLINK_NOFOLLOW) | ||
185 | error = vfs_lstat_fd(dfd, filename, &stat); | ||
186 | else | ||
187 | error = vfs_stat_fd(dfd, filename, &stat); | ||
188 | |||
189 | if (!error) | ||
190 | error = cp_oldabi_stat64(&stat, statbuf); | ||
191 | |||
192 | out: | ||
193 | return error; | ||
194 | } | ||
195 | |||
172 | struct oabi_flock64 { | 196 | struct oabi_flock64 { |
173 | short l_type; | 197 | short l_type; |
174 | short l_whence; | 198 | short l_whence; |
diff --git a/arch/arm/mach-omap1/Makefile b/arch/arm/mach-omap1/Makefile index 015a66b3ca8e..c06f5254c0f3 100644 --- a/arch/arm/mach-omap1/Makefile +++ b/arch/arm/mach-omap1/Makefile | |||
@@ -5,7 +5,8 @@ | |||
5 | # Common support | 5 | # Common support |
6 | obj-y := io.o id.o clock.o irq.o mux.o serial.o devices.o | 6 | obj-y := io.o id.o clock.o irq.o mux.o serial.o devices.o |
7 | 7 | ||
8 | obj-$(CONFIG_OMAP_MPU_TIMER) += time.o | 8 | obj-$(CONFIG_OMAP_MPU_TIMER) += time.o |
9 | obj-$(CONFIG_OMAP_32K_TIMER) += timer32k.o | ||
9 | 10 | ||
10 | # Power Management | 11 | # Power Management |
11 | obj-$(CONFIG_PM) += pm.o sleep.o | 12 | obj-$(CONFIG_PM) += pm.o sleep.o |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 5279e35a8aec..4f9baba7d893 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
33 | #include <linux/irq.h> | 33 | #include <linux/irq.h> |
34 | #include <linux/i2c.h> | 34 | #include <linux/i2c.h> |
35 | #include <linux/leds.h> | ||
35 | 36 | ||
36 | #include <linux/mtd/mtd.h> | 37 | #include <linux/mtd/mtd.h> |
37 | #include <linux/mtd/partitions.h> | 38 | #include <linux/mtd/partitions.h> |
@@ -183,11 +184,80 @@ static struct platform_device *osk5912_devices[] __initdata = { | |||
183 | &osk5912_mcbsp1_device, | 184 | &osk5912_mcbsp1_device, |
184 | }; | 185 | }; |
185 | 186 | ||
187 | static struct gpio_led tps_leds[] = { | ||
188 | /* NOTE: D9 and D2 have hardware blink support. | ||
189 | * Also, D9 requires non-battery power. | ||
190 | */ | ||
191 | { .gpio = OSK_TPS_GPIO_LED_D9, .name = "d9", }, | ||
192 | { .gpio = OSK_TPS_GPIO_LED_D2, .name = "d2", }, | ||
193 | { .gpio = OSK_TPS_GPIO_LED_D3, .name = "d3", .active_low = 1, | ||
194 | .default_trigger = "heartbeat", }, | ||
195 | }; | ||
196 | |||
197 | static struct gpio_led_platform_data tps_leds_data = { | ||
198 | .num_leds = 3, | ||
199 | .leds = tps_leds, | ||
200 | }; | ||
201 | |||
202 | static struct platform_device osk5912_tps_leds = { | ||
203 | .name = "leds-gpio", | ||
204 | .id = 0, | ||
205 | .dev.platform_data = &tps_leds_data, | ||
206 | }; | ||
207 | |||
208 | static int osk_tps_setup(struct i2c_client *client, void *context) | ||
209 | { | ||
210 | /* Set GPIO 1 HIGH to disable VBUS power supply; | ||
211 | * OHCI driver powers it up/down as needed. | ||
212 | */ | ||
213 | gpio_request(OSK_TPS_GPIO_USB_PWR_EN, "n_vbus_en"); | ||
214 | gpio_direction_output(OSK_TPS_GPIO_USB_PWR_EN, 1); | ||
215 | |||
216 | /* Set GPIO 2 high so LED D3 is off by default */ | ||
217 | tps65010_set_gpio_out_value(GPIO2, HIGH); | ||
218 | |||
219 | /* Set GPIO 3 low to take ethernet out of reset */ | ||
220 | gpio_request(OSK_TPS_GPIO_LAN_RESET, "smc_reset"); | ||
221 | gpio_direction_output(OSK_TPS_GPIO_LAN_RESET, 0); | ||
222 | |||
223 | /* GPIO4 is VDD_DSP */ | ||
224 | gpio_request(OSK_TPS_GPIO_DSP_PWR_EN, "dsp_power"); | ||
225 | gpio_direction_output(OSK_TPS_GPIO_DSP_PWR_EN, 1); | ||
226 | /* REVISIT if DSP support isn't configured, power it off ... */ | ||
227 | |||
228 | /* Let LED1 (D9) blink; leds-gpio may override it */ | ||
229 | tps65010_set_led(LED1, BLINK); | ||
230 | |||
231 | /* Set LED2 off by default */ | ||
232 | tps65010_set_led(LED2, OFF); | ||
233 | |||
234 | /* Enable LOW_PWR handshake */ | ||
235 | tps65010_set_low_pwr(ON); | ||
236 | |||
237 | /* Switch VLDO2 to 3.0V for AIC23 */ | ||
238 | tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V | ||
239 | | TPS_LDO1_ENABLE); | ||
240 | |||
241 | /* register these three LEDs */ | ||
242 | osk5912_tps_leds.dev.parent = &client->dev; | ||
243 | platform_device_register(&osk5912_tps_leds); | ||
244 | |||
245 | return 0; | ||
246 | } | ||
247 | |||
248 | static struct tps65010_board tps_board = { | ||
249 | .base = OSK_TPS_GPIO_BASE, | ||
250 | .outmask = 0x0f, | ||
251 | .setup = osk_tps_setup, | ||
252 | }; | ||
253 | |||
186 | static struct i2c_board_info __initdata osk_i2c_board_info[] = { | 254 | static struct i2c_board_info __initdata osk_i2c_board_info[] = { |
187 | { | 255 | { |
188 | I2C_BOARD_INFO("tps65010", 0x48), | 256 | I2C_BOARD_INFO("tps65010", 0x48), |
189 | .type = "tps65010", | 257 | .type = "tps65010", |
190 | .irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)), | 258 | .irq = OMAP_GPIO_IRQ(OMAP_MPUIO(1)), |
259 | .platform_data = &tps_board, | ||
260 | |||
191 | }, | 261 | }, |
192 | /* TODO when driver support is ready: | 262 | /* TODO when driver support is ready: |
193 | * - aic23 audio chip at 0x1a | 263 | * - aic23 audio chip at 0x1a |
@@ -198,7 +268,7 @@ static struct i2c_board_info __initdata osk_i2c_board_info[] = { | |||
198 | 268 | ||
199 | static void __init osk_init_smc91x(void) | 269 | static void __init osk_init_smc91x(void) |
200 | { | 270 | { |
201 | if ((omap_request_gpio(0)) < 0) { | 271 | if ((gpio_request(0, "smc_irq")) < 0) { |
202 | printk("Error requesting gpio 0 for smc91x irq\n"); | 272 | printk("Error requesting gpio 0 for smc91x irq\n"); |
203 | return; | 273 | return; |
204 | } | 274 | } |
@@ -210,7 +280,7 @@ static void __init osk_init_smc91x(void) | |||
210 | static void __init osk_init_cf(void) | 280 | static void __init osk_init_cf(void) |
211 | { | 281 | { |
212 | omap_cfg_reg(M7_1610_GPIO62); | 282 | omap_cfg_reg(M7_1610_GPIO62); |
213 | if ((omap_request_gpio(62)) < 0) { | 283 | if ((gpio_request(62, "cf_irq")) < 0) { |
214 | printk("Error requesting gpio 62 for CF irq\n"); | 284 | printk("Error requesting gpio 62 for CF irq\n"); |
215 | return; | 285 | return; |
216 | } | 286 | } |
@@ -334,7 +404,7 @@ static struct platform_device *mistral_devices[] __initdata = { | |||
334 | 404 | ||
335 | static int mistral_get_pendown_state(void) | 405 | static int mistral_get_pendown_state(void) |
336 | { | 406 | { |
337 | return !omap_get_gpio_datain(4); | 407 | return !gpio_get_value(4); |
338 | } | 408 | } |
339 | 409 | ||
340 | static const struct ads7846_platform_data mistral_ts_info = { | 410 | static const struct ads7846_platform_data mistral_ts_info = { |
@@ -396,25 +466,31 @@ static void __init osk_mistral_init(void) | |||
396 | omap_cfg_reg(W14_1610_CCP_DATAP); | 466 | omap_cfg_reg(W14_1610_CCP_DATAP); |
397 | 467 | ||
398 | /* CAM_PWDN */ | 468 | /* CAM_PWDN */ |
399 | if (omap_request_gpio(11) == 0) { | 469 | if (gpio_request(11, "cam_pwdn") == 0) { |
400 | omap_cfg_reg(N20_1610_GPIO11); | 470 | omap_cfg_reg(N20_1610_GPIO11); |
401 | omap_set_gpio_direction(11, 0 /* out */); | 471 | gpio_direction_output(11, 0); |
402 | omap_set_gpio_dataout(11, 0 /* off */); | ||
403 | } else | 472 | } else |
404 | pr_debug("OSK+Mistral: CAM_PWDN is awol\n"); | 473 | pr_debug("OSK+Mistral: CAM_PWDN is awol\n"); |
405 | 474 | ||
406 | 475 | ||
407 | /* omap_cfg_reg(P19_1610_GPIO6); */ /* BUSY */ | 476 | /* omap_cfg_reg(P19_1610_GPIO6); */ /* BUSY */ |
477 | gpio_request(6, "ts_busy"); | ||
478 | gpio_direction_input(6); | ||
479 | |||
408 | omap_cfg_reg(P20_1610_GPIO4); /* PENIRQ */ | 480 | omap_cfg_reg(P20_1610_GPIO4); /* PENIRQ */ |
481 | gpio_request(4, "ts_int"); | ||
482 | gpio_direction_input(4); | ||
409 | set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING); | 483 | set_irq_type(OMAP_GPIO_IRQ(4), IRQT_FALLING); |
484 | |||
410 | spi_register_board_info(mistral_boardinfo, | 485 | spi_register_board_info(mistral_boardinfo, |
411 | ARRAY_SIZE(mistral_boardinfo)); | 486 | ARRAY_SIZE(mistral_boardinfo)); |
412 | 487 | ||
413 | /* the sideways button (SW1) is for use as a "wakeup" button */ | 488 | /* the sideways button (SW1) is for use as a "wakeup" button */ |
414 | omap_cfg_reg(N15_1610_MPUIO2); | 489 | omap_cfg_reg(N15_1610_MPUIO2); |
415 | if (omap_request_gpio(OMAP_MPUIO(2)) == 0) { | 490 | if (gpio_request(OMAP_MPUIO(2), "wakeup") == 0) { |
416 | int ret = 0; | 491 | int ret = 0; |
417 | omap_set_gpio_direction(OMAP_MPUIO(2), 1); | 492 | |
493 | gpio_direction_input(OMAP_MPUIO(2)); | ||
418 | set_irq_type(OMAP_GPIO_IRQ(OMAP_MPUIO(2)), IRQT_RISING); | 494 | set_irq_type(OMAP_GPIO_IRQ(OMAP_MPUIO(2)), IRQT_RISING); |
419 | #ifdef CONFIG_PM | 495 | #ifdef CONFIG_PM |
420 | /* share the IRQ in case someone wants to use the | 496 | /* share the IRQ in case someone wants to use the |
@@ -425,7 +501,7 @@ static void __init osk_mistral_init(void) | |||
425 | IRQF_SHARED, "mistral_wakeup", | 501 | IRQF_SHARED, "mistral_wakeup", |
426 | &osk_mistral_wake_interrupt); | 502 | &osk_mistral_wake_interrupt); |
427 | if (ret != 0) { | 503 | if (ret != 0) { |
428 | omap_free_gpio(OMAP_MPUIO(2)); | 504 | gpio_free(OMAP_MPUIO(2)); |
429 | printk(KERN_ERR "OSK+Mistral: no wakeup irq, %d?\n", | 505 | printk(KERN_ERR "OSK+Mistral: no wakeup irq, %d?\n", |
430 | ret); | 506 | ret); |
431 | } else | 507 | } else |
@@ -438,10 +514,8 @@ static void __init osk_mistral_init(void) | |||
438 | * board, like the touchscreen, EEPROM, and wakeup (!) switch. | 514 | * board, like the touchscreen, EEPROM, and wakeup (!) switch. |
439 | */ | 515 | */ |
440 | omap_cfg_reg(PWL); | 516 | omap_cfg_reg(PWL); |
441 | if (omap_request_gpio(2) == 0) { | 517 | if (gpio_request(2, "lcd_pwr") == 0) |
442 | omap_set_gpio_direction(2, 0 /* out */); | 518 | gpio_direction_output(2, 1); |
443 | omap_set_gpio_dataout(2, 1 /* on */); | ||
444 | } | ||
445 | 519 | ||
446 | platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices)); | 520 | platform_add_devices(mistral_devices, ARRAY_SIZE(mistral_devices)); |
447 | } | 521 | } |
@@ -484,44 +558,6 @@ static void __init osk_map_io(void) | |||
484 | omap1_map_common_io(); | 558 | omap1_map_common_io(); |
485 | } | 559 | } |
486 | 560 | ||
487 | #ifdef CONFIG_TPS65010 | ||
488 | static int __init osk_tps_init(void) | ||
489 | { | ||
490 | if (!machine_is_omap_osk()) | ||
491 | return 0; | ||
492 | |||
493 | /* Let LED1 (D9) blink */ | ||
494 | tps65010_set_led(LED1, BLINK); | ||
495 | |||
496 | /* Disable LED 2 (D2) */ | ||
497 | tps65010_set_led(LED2, OFF); | ||
498 | |||
499 | /* Set GPIO 1 HIGH to disable VBUS power supply; | ||
500 | * OHCI driver powers it up/down as needed. | ||
501 | */ | ||
502 | tps65010_set_gpio_out_value(GPIO1, HIGH); | ||
503 | |||
504 | /* Set GPIO 2 low to turn on LED D3 */ | ||
505 | tps65010_set_gpio_out_value(GPIO2, HIGH); | ||
506 | |||
507 | /* Set GPIO 3 low to take ethernet out of reset */ | ||
508 | tps65010_set_gpio_out_value(GPIO3, LOW); | ||
509 | |||
510 | /* gpio4 for VDD_DSP */ | ||
511 | /* FIXME send power to DSP iff it's configured */ | ||
512 | |||
513 | /* Enable LOW_PWR */ | ||
514 | tps65010_set_low_pwr(ON); | ||
515 | |||
516 | /* Switch VLDO2 to 3.0V for AIC23 */ | ||
517 | tps65010_config_vregs1(TPS_LDO2_ENABLE | TPS_VLDO2_3_0V | ||
518 | | TPS_LDO1_ENABLE); | ||
519 | |||
520 | return 0; | ||
521 | } | ||
522 | fs_initcall(osk_tps_init); | ||
523 | #endif | ||
524 | |||
525 | MACHINE_START(OMAP_OSK, "TI-OSK") | 561 | MACHINE_START(OMAP_OSK, "TI-OSK") |
526 | /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */ | 562 | /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */ |
527 | .phys_io = 0xfff00000, | 563 | .phys_io = 0xfff00000, |
diff --git a/arch/arm/mach-omap1/leds-osk.c b/arch/arm/mach-omap1/leds-osk.c index 026685ed461a..754383dde807 100644 --- a/arch/arm/mach-omap1/leds-osk.c +++ b/arch/arm/mach-omap1/leds-osk.c | |||
@@ -1,11 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-omap1/leds-osk.c | 2 | * linux/arch/arm/mach-omap1/leds-osk.c |
3 | * | 3 | * |
4 | * LED driver for OSK, and optionally Mistral QVGA, boards | 4 | * LED driver for OSK with optional Mistral QVGA board |
5 | */ | 5 | */ |
6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
7 | #include <linux/workqueue.h> | ||
8 | #include <linux/i2c/tps65010.h> | ||
9 | 7 | ||
10 | #include <asm/hardware.h> | 8 | #include <asm/hardware.h> |
11 | #include <asm/leds.h> | 9 | #include <asm/leds.h> |
@@ -20,49 +18,11 @@ | |||
20 | #define LED_STATE_CLAIMED (1 << 1) | 18 | #define LED_STATE_CLAIMED (1 << 1) |
21 | static u8 led_state; | 19 | static u8 led_state; |
22 | 20 | ||
23 | #define GREEN_LED (1 << 0) /* TPS65010 LED1 */ | ||
24 | #define AMBER_LED (1 << 1) /* TPS65010 LED2 */ | ||
25 | #define RED_LED (1 << 2) /* TPS65010 GPIO2 */ | ||
26 | #define TIMER_LED (1 << 3) /* Mistral board */ | 21 | #define TIMER_LED (1 << 3) /* Mistral board */ |
27 | #define IDLE_LED (1 << 4) /* Mistral board */ | 22 | #define IDLE_LED (1 << 4) /* Mistral board */ |
28 | static u8 hw_led_state; | 23 | static u8 hw_led_state; |
29 | 24 | ||
30 | 25 | ||
31 | /* TPS65010 leds are changed using i2c -- from a task context. | ||
32 | * Using one of these for the "idle" LED would be impractical... | ||
33 | */ | ||
34 | #define TPS_LEDS (GREEN_LED | RED_LED | AMBER_LED) | ||
35 | |||
36 | static u8 tps_leds_change; | ||
37 | |||
38 | static void tps_work(struct work_struct *unused) | ||
39 | { | ||
40 | for (;;) { | ||
41 | u8 leds; | ||
42 | |||
43 | local_irq_disable(); | ||
44 | leds = tps_leds_change; | ||
45 | tps_leds_change = 0; | ||
46 | local_irq_enable(); | ||
47 | |||
48 | if (!leds) | ||
49 | break; | ||
50 | |||
51 | /* careful: the set_led() value is on/off/blink */ | ||
52 | if (leds & GREEN_LED) | ||
53 | tps65010_set_led(LED1, !!(hw_led_state & GREEN_LED)); | ||
54 | if (leds & AMBER_LED) | ||
55 | tps65010_set_led(LED2, !!(hw_led_state & AMBER_LED)); | ||
56 | |||
57 | /* the gpio led doesn't have that issue */ | ||
58 | if (leds & RED_LED) | ||
59 | tps65010_set_gpio_out_value(GPIO2, | ||
60 | !(hw_led_state & RED_LED)); | ||
61 | } | ||
62 | } | ||
63 | |||
64 | static DECLARE_WORK(work, tps_work); | ||
65 | |||
66 | #ifdef CONFIG_OMAP_OSK_MISTRAL | 26 | #ifdef CONFIG_OMAP_OSK_MISTRAL |
67 | 27 | ||
68 | /* For now, all system indicators require the Mistral board, since that | 28 | /* For now, all system indicators require the Mistral board, since that |
@@ -112,7 +72,6 @@ void osk_leds_event(led_event_t evt) | |||
112 | case led_stop: | 72 | case led_stop: |
113 | led_state &= ~LED_STATE_ENABLED; | 73 | led_state &= ~LED_STATE_ENABLED; |
114 | hw_led_state = 0; | 74 | hw_led_state = 0; |
115 | /* NOTE: work may still be pending!! */ | ||
116 | break; | 75 | break; |
117 | 76 | ||
118 | case led_claim: | 77 | case led_claim: |
@@ -145,48 +104,11 @@ void osk_leds_event(led_event_t evt) | |||
145 | 104 | ||
146 | #endif /* CONFIG_OMAP_OSK_MISTRAL */ | 105 | #endif /* CONFIG_OMAP_OSK_MISTRAL */ |
147 | 106 | ||
148 | /* "green" == tps LED1 (leftmost, normally power-good) | ||
149 | * works only with DC adapter, not on battery power! | ||
150 | */ | ||
151 | case led_green_on: | ||
152 | if (led_state & LED_STATE_CLAIMED) | ||
153 | hw_led_state |= GREEN_LED; | ||
154 | break; | ||
155 | case led_green_off: | ||
156 | if (led_state & LED_STATE_CLAIMED) | ||
157 | hw_led_state &= ~GREEN_LED; | ||
158 | break; | ||
159 | |||
160 | /* "amber" == tps LED2 (middle) */ | ||
161 | case led_amber_on: | ||
162 | if (led_state & LED_STATE_CLAIMED) | ||
163 | hw_led_state |= AMBER_LED; | ||
164 | break; | ||
165 | case led_amber_off: | ||
166 | if (led_state & LED_STATE_CLAIMED) | ||
167 | hw_led_state &= ~AMBER_LED; | ||
168 | break; | ||
169 | |||
170 | /* "red" == LED on tps gpio3 (rightmost) */ | ||
171 | case led_red_on: | ||
172 | if (led_state & LED_STATE_CLAIMED) | ||
173 | hw_led_state |= RED_LED; | ||
174 | break; | ||
175 | case led_red_off: | ||
176 | if (led_state & LED_STATE_CLAIMED) | ||
177 | hw_led_state &= ~RED_LED; | ||
178 | break; | ||
179 | |||
180 | default: | 107 | default: |
181 | break; | 108 | break; |
182 | } | 109 | } |
183 | 110 | ||
184 | leds ^= hw_led_state; | 111 | leds ^= hw_led_state; |
185 | leds &= TPS_LEDS; | ||
186 | if (leds && (led_state & LED_STATE_CLAIMED)) { | ||
187 | tps_leds_change |= leds; | ||
188 | schedule_work(&work); | ||
189 | } | ||
190 | 112 | ||
191 | done: | 113 | done: |
192 | local_irq_restore(flags); | 114 | local_irq_restore(flags); |
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c index 52c70e5fcf65..e207bf7cb853 100644 --- a/arch/arm/mach-omap1/mux.c +++ b/arch/arm/mach-omap1/mux.c | |||
@@ -3,9 +3,9 @@ | |||
3 | * | 3 | * |
4 | * OMAP1 pin multiplexing configurations | 4 | * OMAP1 pin multiplexing configurations |
5 | * | 5 | * |
6 | * Copyright (C) 2003 - 2005 Nokia Corporation | 6 | * Copyright (C) 2003 - 2008 Nokia Corporation |
7 | * | 7 | * |
8 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | 8 | * Written by Tony Lindgren |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
11 | * it under the terms of the GNU General Public License as published by | 11 | * it under the terms of the GNU General Public License as published by |
@@ -32,8 +32,10 @@ | |||
32 | 32 | ||
33 | #ifdef CONFIG_OMAP_MUX | 33 | #ifdef CONFIG_OMAP_MUX |
34 | 34 | ||
35 | static struct omap_mux_cfg arch_mux_cfg; | ||
36 | |||
35 | #ifdef CONFIG_ARCH_OMAP730 | 37 | #ifdef CONFIG_ARCH_OMAP730 |
36 | struct pin_config __initdata_or_module omap730_pins[] = { | 38 | static struct pin_config __initdata_or_module omap730_pins[] = { |
37 | MUX_CFG_730("E2_730_KBR0", 12, 21, 0, 20, 1, 0) | 39 | MUX_CFG_730("E2_730_KBR0", 12, 21, 0, 20, 1, 0) |
38 | MUX_CFG_730("J7_730_KBR1", 12, 25, 0, 24, 1, 0) | 40 | MUX_CFG_730("J7_730_KBR1", 12, 25, 0, 24, 1, 0) |
39 | MUX_CFG_730("E1_730_KBR2", 12, 29, 0, 28, 1, 0) | 41 | MUX_CFG_730("E1_730_KBR2", 12, 29, 0, 28, 1, 0) |
@@ -49,10 +51,14 @@ MUX_CFG_730("AA17_730_USB_DM", 2, 21, 0, 20, 0, 0) | |||
49 | MUX_CFG_730("W16_730_USB_PU_EN", 2, 25, 0, 24, 0, 0) | 51 | MUX_CFG_730("W16_730_USB_PU_EN", 2, 25, 0, 24, 0, 0) |
50 | MUX_CFG_730("W17_730_USB_VBUSI", 2, 29, 0, 28, 0, 0) | 52 | MUX_CFG_730("W17_730_USB_VBUSI", 2, 29, 0, 28, 0, 0) |
51 | }; | 53 | }; |
52 | #endif | 54 | #define OMAP730_PINS_SZ ARRAY_SIZE(omap730_pins) |
55 | #else | ||
56 | #define omap730_pins NULL | ||
57 | #define OMAP730_PINS_SZ 0 | ||
58 | #endif /* CONFIG_ARCH_OMAP730 */ | ||
53 | 59 | ||
54 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) | 60 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) |
55 | struct pin_config __initdata_or_module omap1xxx_pins[] = { | 61 | static struct pin_config __initdata_or_module omap1xxx_pins[] = { |
56 | /* | 62 | /* |
57 | * description mux mode mux pull pull pull pu_pd pu dbg | 63 | * description mux mode mux pull pull pull pu_pd pu dbg |
58 | * reg offset mode reg bit ena reg | 64 | * reg offset mode reg bit ena reg |
@@ -306,22 +312,136 @@ MUX_CFG("Y12_1610_CCP_CLKP", 8, 18, 6, 1, 24, 1, 1, 0, 0) | |||
306 | MUX_CFG("W13_1610_CCP_CLKM", 9, 0, 6, 1, 28, 1, 1, 0, 0) | 312 | MUX_CFG("W13_1610_CCP_CLKM", 9, 0, 6, 1, 28, 1, 1, 0, 0) |
307 | MUX_CFG("W14_1610_CCP_DATAP", 9, 24, 6, 2, 4, 1, 2, 0, 0) | 313 | MUX_CFG("W14_1610_CCP_DATAP", 9, 24, 6, 2, 4, 1, 2, 0, 0) |
308 | MUX_CFG("Y14_1610_CCP_DATAM", 9, 21, 6, 2, 3, 1, 2, 0, 0) | 314 | MUX_CFG("Y14_1610_CCP_DATAM", 9, 21, 6, 2, 3, 1, 2, 0, 0) |
309 | |||
310 | }; | 315 | }; |
316 | #define OMAP1XXX_PINS_SZ ARRAY_SIZE(omap1xxx_pins) | ||
317 | #else | ||
318 | #define omap1xxx_pins NULL | ||
319 | #define OMAP1XXX_PINS_SZ 0 | ||
311 | #endif /* CONFIG_ARCH_OMAP15XX || CONFIG_ARCH_OMAP16XX */ | 320 | #endif /* CONFIG_ARCH_OMAP15XX || CONFIG_ARCH_OMAP16XX */ |
312 | 321 | ||
313 | int __init omap1_mux_init(void) | 322 | int __init_or_module omap1_cfg_reg(const struct pin_config *cfg) |
314 | { | 323 | { |
315 | 324 | static DEFINE_SPINLOCK(mux_spin_lock); | |
316 | #ifdef CONFIG_ARCH_OMAP730 | 325 | unsigned long flags; |
317 | omap_mux_register(omap730_pins, ARRAY_SIZE(omap730_pins)); | 326 | unsigned int reg_orig = 0, reg = 0, pu_pd_orig = 0, pu_pd = 0, |
327 | pull_orig = 0, pull = 0; | ||
328 | unsigned int mask, warn = 0; | ||
329 | |||
330 | /* Check the mux register in question */ | ||
331 | if (cfg->mux_reg) { | ||
332 | unsigned tmp1, tmp2; | ||
333 | |||
334 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
335 | reg_orig = omap_readl(cfg->mux_reg); | ||
336 | |||
337 | /* The mux registers always seem to be 3 bits long */ | ||
338 | mask = (0x7 << cfg->mask_offset); | ||
339 | tmp1 = reg_orig & mask; | ||
340 | reg = reg_orig & ~mask; | ||
341 | |||
342 | tmp2 = (cfg->mask << cfg->mask_offset); | ||
343 | reg |= tmp2; | ||
344 | |||
345 | if (tmp1 != tmp2) | ||
346 | warn = 1; | ||
347 | |||
348 | omap_writel(reg, cfg->mux_reg); | ||
349 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
350 | } | ||
351 | |||
352 | /* Check for pull up or pull down selection on 1610 */ | ||
353 | if (!cpu_is_omap15xx()) { | ||
354 | if (cfg->pu_pd_reg && cfg->pull_val) { | ||
355 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
356 | pu_pd_orig = omap_readl(cfg->pu_pd_reg); | ||
357 | mask = 1 << cfg->pull_bit; | ||
358 | |||
359 | if (cfg->pu_pd_val) { | ||
360 | if (!(pu_pd_orig & mask)) | ||
361 | warn = 1; | ||
362 | /* Use pull up */ | ||
363 | pu_pd = pu_pd_orig | mask; | ||
364 | } else { | ||
365 | if (pu_pd_orig & mask) | ||
366 | warn = 1; | ||
367 | /* Use pull down */ | ||
368 | pu_pd = pu_pd_orig & ~mask; | ||
369 | } | ||
370 | omap_writel(pu_pd, cfg->pu_pd_reg); | ||
371 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
372 | } | ||
373 | } | ||
374 | |||
375 | /* Check for an associated pull down register */ | ||
376 | if (cfg->pull_reg) { | ||
377 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
378 | pull_orig = omap_readl(cfg->pull_reg); | ||
379 | mask = 1 << cfg->pull_bit; | ||
380 | |||
381 | if (cfg->pull_val) { | ||
382 | if (pull_orig & mask) | ||
383 | warn = 1; | ||
384 | /* Low bit = pull enabled */ | ||
385 | pull = pull_orig & ~mask; | ||
386 | } else { | ||
387 | if (!(pull_orig & mask)) | ||
388 | warn = 1; | ||
389 | /* High bit = pull disabled */ | ||
390 | pull = pull_orig | mask; | ||
391 | } | ||
392 | |||
393 | omap_writel(pull, cfg->pull_reg); | ||
394 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
395 | } | ||
396 | |||
397 | if (warn) { | ||
398 | #ifdef CONFIG_OMAP_MUX_WARNINGS | ||
399 | printk(KERN_WARNING "MUX: initialized %s\n", cfg->name); | ||
318 | #endif | 400 | #endif |
319 | 401 | } | |
320 | #if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX) | 402 | |
321 | omap_mux_register(omap1xxx_pins, ARRAY_SIZE(omap1xxx_pins)); | 403 | #ifdef CONFIG_OMAP_MUX_DEBUG |
404 | if (cfg->debug || warn) { | ||
405 | printk("MUX: Setting register %s\n", cfg->name); | ||
406 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | ||
407 | cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg); | ||
408 | |||
409 | if (!cpu_is_omap15xx()) { | ||
410 | if (cfg->pu_pd_reg && cfg->pull_val) { | ||
411 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | ||
412 | cfg->pu_pd_name, cfg->pu_pd_reg, | ||
413 | pu_pd_orig, pu_pd); | ||
414 | } | ||
415 | } | ||
416 | |||
417 | if (cfg->pull_reg) | ||
418 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | ||
419 | cfg->pull_name, cfg->pull_reg, pull_orig, pull); | ||
420 | } | ||
322 | #endif | 421 | #endif |
323 | 422 | ||
423 | #ifdef CONFIG_OMAP_MUX_ERRORS | ||
424 | return warn ? -ETXTBSY : 0; | ||
425 | #else | ||
324 | return 0; | 426 | return 0; |
427 | #endif | ||
428 | } | ||
429 | |||
430 | int __init omap1_mux_init(void) | ||
431 | { | ||
432 | if (cpu_is_omap730()) { | ||
433 | arch_mux_cfg.pins = omap730_pins; | ||
434 | arch_mux_cfg.size = OMAP730_PINS_SZ; | ||
435 | arch_mux_cfg.cfg_reg = omap1_cfg_reg; | ||
436 | } | ||
437 | |||
438 | if (cpu_is_omap15xx() || cpu_is_omap16xx()) { | ||
439 | arch_mux_cfg.pins = omap1xxx_pins; | ||
440 | arch_mux_cfg.size = OMAP1XXX_PINS_SZ; | ||
441 | arch_mux_cfg.cfg_reg = omap1_cfg_reg; | ||
442 | } | ||
443 | |||
444 | return omap_mux_register(&arch_mux_cfg); | ||
325 | } | 445 | } |
326 | 446 | ||
327 | #endif | 447 | #endif |
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index a4f8b2055437..5d2b270935a2 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c | |||
@@ -56,37 +56,6 @@ | |||
56 | #define OMAP_MPU_TIMER_BASE OMAP_MPU_TIMER1_BASE | 56 | #define OMAP_MPU_TIMER_BASE OMAP_MPU_TIMER1_BASE |
57 | #define OMAP_MPU_TIMER_OFFSET 0x100 | 57 | #define OMAP_MPU_TIMER_OFFSET 0x100 |
58 | 58 | ||
59 | /* cycles to nsec conversions taken from arch/i386/kernel/timers/timer_tsc.c, | ||
60 | * converted to use kHz by Kevin Hilman */ | ||
61 | /* convert from cycles(64bits) => nanoseconds (64bits) | ||
62 | * basic equation: | ||
63 | * ns = cycles / (freq / ns_per_sec) | ||
64 | * ns = cycles * (ns_per_sec / freq) | ||
65 | * ns = cycles * (10^9 / (cpu_khz * 10^3)) | ||
66 | * ns = cycles * (10^6 / cpu_khz) | ||
67 | * | ||
68 | * Then we use scaling math (suggested by george at mvista.com) to get: | ||
69 | * ns = cycles * (10^6 * SC / cpu_khz / SC | ||
70 | * ns = cycles * cyc2ns_scale / SC | ||
71 | * | ||
72 | * And since SC is a constant power of two, we can convert the div | ||
73 | * into a shift. | ||
74 | * -johnstul at us.ibm.com "math is hard, lets go shopping!" | ||
75 | */ | ||
76 | static unsigned long cyc2ns_scale; | ||
77 | #define CYC2NS_SCALE_FACTOR 10 /* 2^10, carefully chosen */ | ||
78 | |||
79 | static inline void set_cyc2ns_scale(unsigned long cpu_khz) | ||
80 | { | ||
81 | cyc2ns_scale = (1000000 << CYC2NS_SCALE_FACTOR)/cpu_khz; | ||
82 | } | ||
83 | |||
84 | static inline unsigned long long cycles_2_ns(unsigned long long cyc) | ||
85 | { | ||
86 | return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR; | ||
87 | } | ||
88 | |||
89 | |||
90 | typedef struct { | 59 | typedef struct { |
91 | u32 cntl; /* CNTL_TIMER, R/W */ | 60 | u32 cntl; /* CNTL_TIMER, R/W */ |
92 | u32 load_tim; /* LOAD_TIM, W */ | 61 | u32 load_tim; /* LOAD_TIM, W */ |
@@ -194,8 +163,6 @@ static struct irqaction omap_mpu_timer1_irq = { | |||
194 | 163 | ||
195 | static __init void omap_init_mpu_timer(unsigned long rate) | 164 | static __init void omap_init_mpu_timer(unsigned long rate) |
196 | { | 165 | { |
197 | set_cyc2ns_scale(rate / 1000); | ||
198 | |||
199 | setup_irq(INT_TIMER1, &omap_mpu_timer1_irq); | 166 | setup_irq(INT_TIMER1, &omap_mpu_timer1_irq); |
200 | omap_mpu_timer_start(0, (rate / HZ) - 1, 1); | 167 | omap_mpu_timer_start(0, (rate / HZ) - 1, 1); |
201 | 168 | ||
@@ -260,22 +227,6 @@ static void __init omap_init_clocksource(unsigned long rate) | |||
260 | printk(err, clocksource_mpu.name); | 227 | printk(err, clocksource_mpu.name); |
261 | } | 228 | } |
262 | 229 | ||
263 | |||
264 | /* | ||
265 | * Scheduler clock - returns current time in nanosec units. | ||
266 | */ | ||
267 | unsigned long long sched_clock(void) | ||
268 | { | ||
269 | unsigned long ticks = 0 - omap_mpu_timer_read(1); | ||
270 | unsigned long long ticks64; | ||
271 | |||
272 | ticks64 = omap_mpu_timer2_overflows; | ||
273 | ticks64 <<= 32; | ||
274 | ticks64 |= ticks; | ||
275 | |||
276 | return cycles_2_ns(ticks64); | ||
277 | } | ||
278 | |||
279 | /* | 230 | /* |
280 | * --------------------------------------------------------------------------- | 231 | * --------------------------------------------------------------------------- |
281 | * Timer initialization | 232 | * Timer initialization |
diff --git a/arch/arm/plat-omap/timer32k.c b/arch/arm/mach-omap1/timer32k.c index ea76f1979a3d..fbbdb806c95a 100644 --- a/arch/arm/plat-omap/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/plat-omap/timer32k.c | 2 | * linux/arch/arm/mach-omap1/timer32k.c |
3 | * | 3 | * |
4 | * OMAP 32K Timer | 4 | * OMAP 32K Timer |
5 | * | 5 | * |
@@ -70,8 +70,6 @@ struct sys_timer omap_timer; | |||
70 | 70 | ||
71 | #if defined(CONFIG_ARCH_OMAP16XX) | 71 | #if defined(CONFIG_ARCH_OMAP16XX) |
72 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 | 72 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 |
73 | #elif defined(CONFIG_ARCH_OMAP24XX) | ||
74 | #define TIMER_32K_SYNCHRONIZED (OMAP24XX_32KSYNCT_BASE + 0x10) | ||
75 | #else | 73 | #else |
76 | #error OMAP 32KHz timer does not currently work on 15XX! | 74 | #error OMAP 32KHz timer does not currently work on 15XX! |
77 | #endif | 75 | #endif |
@@ -93,8 +91,6 @@ struct sys_timer omap_timer; | |||
93 | #define JIFFIES_TO_HW_TICKS(nr_jiffies, clock_rate) \ | 91 | #define JIFFIES_TO_HW_TICKS(nr_jiffies, clock_rate) \ |
94 | (((nr_jiffies) * (clock_rate)) / HZ) | 92 | (((nr_jiffies) * (clock_rate)) / HZ) |
95 | 93 | ||
96 | #if defined(CONFIG_ARCH_OMAP1) | ||
97 | |||
98 | static inline void omap_32k_timer_write(int val, int reg) | 94 | static inline void omap_32k_timer_write(int val, int reg) |
99 | { | 95 | { |
100 | omap_writew(val, OMAP1_32K_TIMER_BASE + reg); | 96 | omap_writew(val, OMAP1_32K_TIMER_BASE + reg); |
@@ -120,30 +116,14 @@ static inline void omap_32k_timer_stop(void) | |||
120 | 116 | ||
121 | #define omap_32k_timer_ack_irq() | 117 | #define omap_32k_timer_ack_irq() |
122 | 118 | ||
123 | #elif defined(CONFIG_ARCH_OMAP2) | 119 | static int omap_32k_timer_set_next_event(unsigned long delta, |
124 | 120 | struct clock_event_device *dev) | |
125 | static struct omap_dm_timer *gptimer; | ||
126 | |||
127 | static inline void omap_32k_timer_start(unsigned long load_val) | ||
128 | { | ||
129 | omap_dm_timer_set_load(gptimer, 1, 0xffffffff - load_val); | ||
130 | omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_OVERFLOW); | ||
131 | omap_dm_timer_start(gptimer); | ||
132 | } | ||
133 | |||
134 | static inline void omap_32k_timer_stop(void) | ||
135 | { | 121 | { |
136 | omap_dm_timer_stop(gptimer); | 122 | omap_32k_timer_start(delta); |
137 | } | ||
138 | 123 | ||
139 | static inline void omap_32k_timer_ack_irq(void) | 124 | return 0; |
140 | { | ||
141 | u32 status = omap_dm_timer_read_status(gptimer); | ||
142 | omap_dm_timer_write_status(gptimer, status); | ||
143 | } | 125 | } |
144 | 126 | ||
145 | #endif | ||
146 | |||
147 | static void omap_32k_timer_set_mode(enum clock_event_mode mode, | 127 | static void omap_32k_timer_set_mode(enum clock_event_mode mode, |
148 | struct clock_event_device *evt) | 128 | struct clock_event_device *evt) |
149 | { | 129 | { |
@@ -164,8 +144,9 @@ static void omap_32k_timer_set_mode(enum clock_event_mode mode, | |||
164 | 144 | ||
165 | static struct clock_event_device clockevent_32k_timer = { | 145 | static struct clock_event_device clockevent_32k_timer = { |
166 | .name = "32k-timer", | 146 | .name = "32k-timer", |
167 | .features = CLOCK_EVT_FEAT_PERIODIC, | 147 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, |
168 | .shift = 32, | 148 | .shift = 32, |
149 | .set_next_event = omap_32k_timer_set_next_event, | ||
169 | .set_mode = omap_32k_timer_set_mode, | 150 | .set_mode = omap_32k_timer_set_mode, |
170 | }; | 151 | }; |
171 | 152 | ||
@@ -178,32 +159,6 @@ static inline unsigned long omap_32k_sync_timer_read(void) | |||
178 | return omap_readl(TIMER_32K_SYNCHRONIZED); | 159 | return omap_readl(TIMER_32K_SYNCHRONIZED); |
179 | } | 160 | } |
180 | 161 | ||
181 | /* | ||
182 | * Rounds down to nearest usec. Note that this will overflow for larger values. | ||
183 | */ | ||
184 | static inline unsigned long omap_32k_ticks_to_usecs(unsigned long ticks_32k) | ||
185 | { | ||
186 | return (ticks_32k * 5*5*5*5*5*5) >> 9; | ||
187 | } | ||
188 | |||
189 | /* | ||
190 | * Rounds down to nearest nsec. | ||
191 | */ | ||
192 | static inline unsigned long long | ||
193 | omap_32k_ticks_to_nsecs(unsigned long ticks_32k) | ||
194 | { | ||
195 | return (unsigned long long) ticks_32k * 1000 * 5*5*5*5*5*5 >> 9; | ||
196 | } | ||
197 | |||
198 | /* | ||
199 | * Returns current time from boot in nsecs. It's OK for this to wrap | ||
200 | * around for now, as it's just a relative time stamp. | ||
201 | */ | ||
202 | unsigned long long sched_clock(void) | ||
203 | { | ||
204 | return omap_32k_ticks_to_nsecs(omap_32k_sync_timer_read()); | ||
205 | } | ||
206 | |||
207 | static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id) | 162 | static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id) |
208 | { | 163 | { |
209 | struct clock_event_device *evt = &clockevent_32k_timer; | 164 | struct clock_event_device *evt = &clockevent_32k_timer; |
@@ -222,22 +177,7 @@ static struct irqaction omap_32k_timer_irq = { | |||
222 | 177 | ||
223 | static __init void omap_init_32k_timer(void) | 178 | static __init void omap_init_32k_timer(void) |
224 | { | 179 | { |
225 | if (cpu_class_is_omap1()) | 180 | setup_irq(INT_OS_TIMER, &omap_32k_timer_irq); |
226 | setup_irq(INT_OS_TIMER, &omap_32k_timer_irq); | ||
227 | |||
228 | #ifdef CONFIG_ARCH_OMAP2 | ||
229 | /* REVISIT: Check 24xx TIOCP_CFG settings after idle works */ | ||
230 | if (cpu_is_omap24xx()) { | ||
231 | gptimer = omap_dm_timer_request_specific(1); | ||
232 | BUG_ON(gptimer == NULL); | ||
233 | |||
234 | omap_dm_timer_set_source(gptimer, OMAP_TIMER_SRC_32_KHZ); | ||
235 | setup_irq(omap_dm_timer_get_irq(gptimer), &omap_32k_timer_irq); | ||
236 | omap_dm_timer_set_int_enable(gptimer, | ||
237 | OMAP_TIMER_INT_CAPTURE | OMAP_TIMER_INT_OVERFLOW | | ||
238 | OMAP_TIMER_INT_MATCH); | ||
239 | } | ||
240 | #endif | ||
241 | 181 | ||
242 | clockevent_32k_timer.mult = div_sc(OMAP_32K_TICKS_PER_SEC, | 182 | clockevent_32k_timer.mult = div_sc(OMAP_32K_TICKS_PER_SEC, |
243 | NSEC_PER_SEC, | 183 | NSEC_PER_SEC, |
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index b05b738d31e6..2feb6870b735 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile | |||
@@ -3,13 +3,15 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | # Common support | 5 | # Common support |
6 | obj-y := irq.o id.o io.o sram-fn.o memory.o prcm.o clock.o mux.o devices.o \ | 6 | obj-y := irq.o id.o io.o sram-fn.o memory.o control.o prcm.o clock.o mux.o \ |
7 | serial.o gpmc.o | 7 | devices.o serial.o gpmc.o timer-gp.o |
8 | |||
9 | obj-$(CONFIG_OMAP_MPU_TIMER) += timer-gp.o | ||
10 | 8 | ||
11 | # Power Management | 9 | # Power Management |
12 | obj-$(CONFIG_PM) += pm.o pm-domain.o sleep.o | 10 | obj-$(CONFIG_PM) += pm.o sleep.o |
11 | |||
12 | # Clock framework | ||
13 | obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o | ||
14 | obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o | ||
13 | 15 | ||
14 | # Specific board support | 16 | # Specific board support |
15 | obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o | 17 | obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o |
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 64235dee5614..1c12d7c6c7fc 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/arch/board.h> | 33 | #include <asm/arch/board.h> |
34 | #include <asm/arch/common.h> | 34 | #include <asm/arch/common.h> |
35 | #include <asm/arch/gpmc.h> | 35 | #include <asm/arch/gpmc.h> |
36 | #include "prcm-regs.h" | ||
37 | 36 | ||
38 | #include <asm/io.h> | 37 | #include <asm/io.h> |
39 | 38 | ||
@@ -125,15 +124,18 @@ static inline void __init sdp2430_init_smc91x(void) | |||
125 | int eth_cs; | 124 | int eth_cs; |
126 | unsigned long cs_mem_base; | 125 | unsigned long cs_mem_base; |
127 | unsigned int rate; | 126 | unsigned int rate; |
128 | struct clk *l3ck; | 127 | struct clk *gpmc_fck; |
129 | 128 | ||
130 | eth_cs = SDP2430_SMC91X_CS; | 129 | eth_cs = SDP2430_SMC91X_CS; |
131 | 130 | ||
132 | l3ck = clk_get(NULL, "core_l3_ck"); | 131 | gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */ |
133 | if (IS_ERR(l3ck)) | 132 | if (IS_ERR(gpmc_fck)) { |
134 | rate = 100000000; | 133 | WARN_ON(1); |
135 | else | 134 | return; |
136 | rate = clk_get_rate(l3ck); | 135 | } |
136 | |||
137 | clk_enable(gpmc_fck); | ||
138 | rate = clk_get_rate(gpmc_fck); | ||
137 | 139 | ||
138 | /* Make sure CS1 timings are correct, for 2430 always muxed */ | 140 | /* Make sure CS1 timings are correct, for 2430 always muxed */ |
139 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200); | 141 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200); |
@@ -160,7 +162,7 @@ static inline void __init sdp2430_init_smc91x(void) | |||
160 | 162 | ||
161 | if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) { | 163 | if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) { |
162 | printk(KERN_ERR "Failed to request GPMC mem for smc91x\n"); | 164 | printk(KERN_ERR "Failed to request GPMC mem for smc91x\n"); |
163 | return; | 165 | goto out; |
164 | } | 166 | } |
165 | 167 | ||
166 | sdp2430_smc91x_resources[0].start = cs_mem_base + 0x300; | 168 | sdp2430_smc91x_resources[0].start = cs_mem_base + 0x300; |
@@ -171,10 +173,13 @@ static inline void __init sdp2430_init_smc91x(void) | |||
171 | printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n", | 173 | printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n", |
172 | OMAP24XX_ETHR_GPIO_IRQ); | 174 | OMAP24XX_ETHR_GPIO_IRQ); |
173 | gpmc_cs_free(eth_cs); | 175 | gpmc_cs_free(eth_cs); |
174 | return; | 176 | goto out; |
175 | } | 177 | } |
176 | omap_set_gpio_direction(OMAP24XX_ETHR_GPIO_IRQ, 1); | 178 | omap_set_gpio_direction(OMAP24XX_ETHR_GPIO_IRQ, 1); |
177 | 179 | ||
180 | out: | ||
181 | clk_disable(gpmc_fck); | ||
182 | clk_put(gpmc_fck); | ||
178 | } | 183 | } |
179 | 184 | ||
180 | static void __init omap_2430sdp_init_irq(void) | 185 | static void __init omap_2430sdp_init_irq(void) |
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 7846551f0575..a1e1e6765b5b 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -26,6 +26,8 @@ | |||
26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
27 | #include <linux/delay.h> | 27 | #include <linux/delay.h> |
28 | #include <linux/leds.h> | 28 | #include <linux/leds.h> |
29 | #include <linux/err.h> | ||
30 | #include <linux/clk.h> | ||
29 | 31 | ||
30 | #include <asm/hardware.h> | 32 | #include <asm/hardware.h> |
31 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
@@ -39,7 +41,7 @@ | |||
39 | #include <asm/arch/board.h> | 41 | #include <asm/arch/board.h> |
40 | #include <asm/arch/common.h> | 42 | #include <asm/arch/common.h> |
41 | #include <asm/arch/gpmc.h> | 43 | #include <asm/arch/gpmc.h> |
42 | #include "prcm-regs.h" | 44 | #include <asm/arch/control.h> |
43 | 45 | ||
44 | /* LED & Switch macros */ | 46 | /* LED & Switch macros */ |
45 | #define LED0_GPIO13 13 | 47 | #define LED0_GPIO13 13 |
@@ -187,17 +189,47 @@ static inline void __init apollon_init_smc91x(void) | |||
187 | { | 189 | { |
188 | unsigned long base; | 190 | unsigned long base; |
189 | 191 | ||
192 | unsigned int rate; | ||
193 | struct clk *gpmc_fck; | ||
194 | int eth_cs; | ||
195 | |||
196 | gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */ | ||
197 | if (IS_ERR(gpmc_fck)) { | ||
198 | WARN_ON(1); | ||
199 | return; | ||
200 | } | ||
201 | |||
202 | clk_enable(gpmc_fck); | ||
203 | rate = clk_get_rate(gpmc_fck); | ||
204 | |||
205 | eth_cs = APOLLON_ETH_CS; | ||
206 | |||
190 | /* Make sure CS1 timings are correct */ | 207 | /* Make sure CS1 timings are correct */ |
191 | GPMC_CONFIG1_1 = 0x00011203; | 208 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200); |
192 | GPMC_CONFIG2_1 = 0x001f1f01; | 209 | |
193 | GPMC_CONFIG3_1 = 0x00080803; | 210 | if (rate >= 160000000) { |
194 | GPMC_CONFIG4_1 = 0x1c091c09; | 211 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01); |
195 | GPMC_CONFIG5_1 = 0x041f1f1f; | 212 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803); |
196 | GPMC_CONFIG6_1 = 0x000004c4; | 213 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a); |
214 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F); | ||
215 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4); | ||
216 | } else if (rate >= 130000000) { | ||
217 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00); | ||
218 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802); | ||
219 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09); | ||
220 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F); | ||
221 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4); | ||
222 | } else {/* rate = 100000000 */ | ||
223 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00); | ||
224 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802); | ||
225 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09); | ||
226 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F); | ||
227 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2); | ||
228 | } | ||
197 | 229 | ||
198 | if (gpmc_cs_request(APOLLON_ETH_CS, SZ_16M, &base) < 0) { | 230 | if (gpmc_cs_request(APOLLON_ETH_CS, SZ_16M, &base) < 0) { |
199 | printk(KERN_ERR "Failed to request GPMC CS for smc91x\n"); | 231 | printk(KERN_ERR "Failed to request GPMC CS for smc91x\n"); |
200 | return; | 232 | goto out; |
201 | } | 233 | } |
202 | apollon_smc91x_resources[0].start = base + 0x300; | 234 | apollon_smc91x_resources[0].start = base + 0x300; |
203 | apollon_smc91x_resources[0].end = base + 0x30f; | 235 | apollon_smc91x_resources[0].end = base + 0x30f; |
@@ -208,9 +240,13 @@ static inline void __init apollon_init_smc91x(void) | |||
208 | printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n", | 240 | printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n", |
209 | APOLLON_ETHR_GPIO_IRQ); | 241 | APOLLON_ETHR_GPIO_IRQ); |
210 | gpmc_cs_free(APOLLON_ETH_CS); | 242 | gpmc_cs_free(APOLLON_ETH_CS); |
211 | return; | 243 | goto out; |
212 | } | 244 | } |
213 | omap_set_gpio_direction(APOLLON_ETHR_GPIO_IRQ, 1); | 245 | omap_set_gpio_direction(APOLLON_ETHR_GPIO_IRQ, 1); |
246 | |||
247 | out: | ||
248 | clk_disable(gpmc_fck); | ||
249 | clk_put(gpmc_fck); | ||
214 | } | 250 | } |
215 | 251 | ||
216 | static void __init omap_apollon_init_irq(void) | 252 | static void __init omap_apollon_init_irq(void) |
@@ -330,6 +366,8 @@ static void __init apollon_usb_init(void) | |||
330 | 366 | ||
331 | static void __init omap_apollon_init(void) | 367 | static void __init omap_apollon_init(void) |
332 | { | 368 | { |
369 | u32 v; | ||
370 | |||
333 | apollon_led_init(); | 371 | apollon_led_init(); |
334 | apollon_sw_init(); | 372 | apollon_sw_init(); |
335 | apollon_flash_init(); | 373 | apollon_flash_init(); |
@@ -339,7 +377,9 @@ static void __init omap_apollon_init(void) | |||
339 | omap_cfg_reg(W19_24XX_SYS_NIRQ); | 377 | omap_cfg_reg(W19_24XX_SYS_NIRQ); |
340 | 378 | ||
341 | /* Use Interal loop-back in MMC/SDIO Module Input Clock selection */ | 379 | /* Use Interal loop-back in MMC/SDIO Module Input Clock selection */ |
342 | CONTROL_DEVCONF |= (1 << 24); | 380 | v = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); |
381 | v |= (1 << 24); | ||
382 | omap_ctrl_writel(v, OMAP2_CONTROL_DEVCONF0); | ||
343 | 383 | ||
344 | /* | 384 | /* |
345 | * Make sure the serial ports are muxed on at this point. | 385 | * Make sure the serial ports are muxed on at this point. |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index f125f432cc3e..d1915f99a5fa 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -19,6 +19,8 @@ | |||
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/workqueue.h> | 20 | #include <linux/workqueue.h> |
21 | #include <linux/input.h> | 21 | #include <linux/input.h> |
22 | #include <linux/err.h> | ||
23 | #include <linux/clk.h> | ||
22 | 24 | ||
23 | #include <asm/hardware.h> | 25 | #include <asm/hardware.h> |
24 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
@@ -26,6 +28,7 @@ | |||
26 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
27 | #include <asm/mach/flash.h> | 29 | #include <asm/mach/flash.h> |
28 | 30 | ||
31 | #include <asm/arch/control.h> | ||
29 | #include <asm/arch/gpio.h> | 32 | #include <asm/arch/gpio.h> |
30 | #include <asm/arch/gpioexpander.h> | 33 | #include <asm/arch/gpioexpander.h> |
31 | #include <asm/arch/mux.h> | 34 | #include <asm/arch/mux.h> |
@@ -36,10 +39,13 @@ | |||
36 | #include <asm/arch/keypad.h> | 39 | #include <asm/arch/keypad.h> |
37 | #include <asm/arch/menelaus.h> | 40 | #include <asm/arch/menelaus.h> |
38 | #include <asm/arch/dma.h> | 41 | #include <asm/arch/dma.h> |
39 | #include "prcm-regs.h" | 42 | #include <asm/arch/gpmc.h> |
40 | 43 | ||
41 | #include <asm/io.h> | 44 | #include <asm/io.h> |
42 | 45 | ||
46 | #define H4_FLASH_CS 0 | ||
47 | #define H4_SMC91X_CS 1 | ||
48 | |||
43 | static unsigned int row_gpios[6] = { 88, 89, 124, 11, 6, 96 }; | 49 | static unsigned int row_gpios[6] = { 88, 89, 124, 11, 6, 96 }; |
44 | static unsigned int col_gpios[7] = { 90, 91, 100, 36, 12, 97, 98 }; | 50 | static unsigned int col_gpios[7] = { 90, 91, 100, 36, 12, 97, 98 }; |
45 | 51 | ||
@@ -116,8 +122,6 @@ static struct flash_platform_data h4_flash_data = { | |||
116 | }; | 122 | }; |
117 | 123 | ||
118 | static struct resource h4_flash_resource = { | 124 | static struct resource h4_flash_resource = { |
119 | .start = H4_CS0_BASE, | ||
120 | .end = H4_CS0_BASE + SZ_64M - 1, | ||
121 | .flags = IORESOURCE_MEM, | 125 | .flags = IORESOURCE_MEM, |
122 | }; | 126 | }; |
123 | 127 | ||
@@ -253,21 +257,107 @@ static struct platform_device *h4_devices[] __initdata = { | |||
253 | &h4_lcd_device, | 257 | &h4_lcd_device, |
254 | }; | 258 | }; |
255 | 259 | ||
260 | /* 2420 Sysboot setup (2430 is different) */ | ||
261 | static u32 get_sysboot_value(void) | ||
262 | { | ||
263 | return (omap_ctrl_readl(OMAP24XX_CONTROL_STATUS) & | ||
264 | (OMAP2_SYSBOOT_5_MASK | OMAP2_SYSBOOT_4_MASK | | ||
265 | OMAP2_SYSBOOT_3_MASK | OMAP2_SYSBOOT_2_MASK | | ||
266 | OMAP2_SYSBOOT_1_MASK | OMAP2_SYSBOOT_0_MASK)); | ||
267 | } | ||
268 | |||
269 | /* H4-2420's always used muxed mode, H4-2422's always use non-muxed | ||
270 | * | ||
271 | * Note: OMAP-GIT doesn't correctly do is_cpu_omap2422 and is_cpu_omap2423 | ||
272 | * correctly. The macro needs to look at production_id not just hawkeye. | ||
273 | */ | ||
274 | static u32 is_gpmc_muxed(void) | ||
275 | { | ||
276 | u32 mux; | ||
277 | mux = get_sysboot_value(); | ||
278 | if ((mux & 0xF) == 0xd) | ||
279 | return 1; /* NAND config (could be either) */ | ||
280 | if (mux & 0x2) /* if mux'ed */ | ||
281 | return 1; | ||
282 | else | ||
283 | return 0; | ||
284 | } | ||
285 | |||
256 | static inline void __init h4_init_debug(void) | 286 | static inline void __init h4_init_debug(void) |
257 | { | 287 | { |
288 | int eth_cs; | ||
289 | unsigned long cs_mem_base; | ||
290 | unsigned int muxed, rate; | ||
291 | struct clk *gpmc_fck; | ||
292 | |||
293 | eth_cs = H4_SMC91X_CS; | ||
294 | |||
295 | gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */ | ||
296 | if (IS_ERR(gpmc_fck)) { | ||
297 | WARN_ON(1); | ||
298 | return; | ||
299 | } | ||
300 | |||
301 | clk_enable(gpmc_fck); | ||
302 | rate = clk_get_rate(gpmc_fck); | ||
303 | clk_disable(gpmc_fck); | ||
304 | clk_put(gpmc_fck); | ||
305 | |||
306 | if (is_gpmc_muxed()) | ||
307 | muxed = 0x200; | ||
308 | else | ||
309 | muxed = 0; | ||
310 | |||
258 | /* Make sure CS1 timings are correct */ | 311 | /* Make sure CS1 timings are correct */ |
259 | GPMC_CONFIG1_1 = 0x00011200; | 312 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, |
260 | GPMC_CONFIG2_1 = 0x001f1f01; | 313 | 0x00011000 | muxed); |
261 | GPMC_CONFIG3_1 = 0x00080803; | 314 | |
262 | GPMC_CONFIG4_1 = 0x1c091c09; | 315 | if (rate >= 160000000) { |
263 | GPMC_CONFIG5_1 = 0x041f1f1f; | 316 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01); |
264 | GPMC_CONFIG6_1 = 0x000004c4; | 317 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803); |
265 | GPMC_CONFIG7_1 = 0x00000f40 | (0x08000000 >> 24); | 318 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a); |
319 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F); | ||
320 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4); | ||
321 | } else if (rate >= 130000000) { | ||
322 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00); | ||
323 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802); | ||
324 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09); | ||
325 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F); | ||
326 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4); | ||
327 | } else {/* rate = 100000000 */ | ||
328 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00); | ||
329 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802); | ||
330 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09); | ||
331 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F); | ||
332 | gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2); | ||
333 | } | ||
334 | |||
335 | if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) { | ||
336 | printk(KERN_ERR "Failed to request GPMC mem for smc91x\n"); | ||
337 | goto out; | ||
338 | } | ||
339 | |||
266 | udelay(100); | 340 | udelay(100); |
267 | 341 | ||
268 | omap_cfg_reg(M15_24XX_GPIO92); | 342 | omap_cfg_reg(M15_24XX_GPIO92); |
269 | if (debug_card_init(cs_mem_base, OMAP24XX_ETHR_GPIO_IRQ) < 0) | 343 | if (debug_card_init(cs_mem_base, OMAP24XX_ETHR_GPIO_IRQ) < 0) |
270 | gpmc_cs_free(eth_cs); | 344 | gpmc_cs_free(eth_cs); |
345 | |||
346 | out: | ||
347 | clk_disable(gpmc_fck); | ||
348 | clk_put(gpmc_fck); | ||
349 | } | ||
350 | |||
351 | static void __init h4_init_flash(void) | ||
352 | { | ||
353 | unsigned long base; | ||
354 | |||
355 | if (gpmc_cs_request(H4_FLASH_CS, SZ_64M, &base) < 0) { | ||
356 | printk("Can't request GPMC CS for flash\n"); | ||
357 | return; | ||
358 | } | ||
359 | h4_flash_resource.start = base; | ||
360 | h4_flash_resource.end = base + SZ_64M - 1; | ||
271 | } | 361 | } |
272 | 362 | ||
273 | static void __init omap_h4_init_irq(void) | 363 | static void __init omap_h4_init_irq(void) |
@@ -275,6 +365,7 @@ static void __init omap_h4_init_irq(void) | |||
275 | omap2_init_common_hw(); | 365 | omap2_init_common_hw(); |
276 | omap_init_irq(); | 366 | omap_init_irq(); |
277 | omap_gpio_init(); | 367 | omap_gpio_init(); |
368 | h4_init_flash(); | ||
278 | } | 369 | } |
279 | 370 | ||
280 | static struct omap_uart_config h4_uart_config __initdata = { | 371 | static struct omap_uart_config h4_uart_config __initdata = { |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index e6e85b7b097b..b57ffb5a22a5 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -1,20 +1,19 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-omap2/clock.c | 2 | * linux/arch/arm/mach-omap2/clock.c |
3 | * | 3 | * |
4 | * Copyright (C) 2005 Texas Instruments Inc. | 4 | * Copyright (C) 2005-2008 Texas Instruments, Inc. |
5 | * Richard Woodruff <r-woodruff2@ti.com> | 5 | * Copyright (C) 2004-2008 Nokia Corporation |
6 | * Created for OMAP2. | ||
7 | * | ||
8 | * Cleaned up and modified to use omap shared clock framework by | ||
9 | * Tony Lindgren <tony@atomide.com> | ||
10 | * | 6 | * |
11 | * Based on omap1 clock.c, Copyright (C) 2004 - 2005 Nokia corporation | 7 | * Contacts: |
12 | * Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com> | 8 | * Richard Woodruff <r-woodruff2@ti.com> |
9 | * Paul Walmsley | ||
13 | * | 10 | * |
14 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
15 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
16 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
17 | */ | 14 | */ |
15 | #undef DEBUG | ||
16 | |||
18 | #include <linux/module.h> | 17 | #include <linux/module.h> |
19 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
20 | #include <linux/device.h> | 19 | #include <linux/device.h> |
@@ -22,176 +21,227 @@ | |||
22 | #include <linux/errno.h> | 21 | #include <linux/errno.h> |
23 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
24 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <asm/bitops.h> | ||
25 | 25 | ||
26 | #include <asm/io.h> | 26 | #include <asm/io.h> |
27 | 27 | ||
28 | #include <asm/arch/clock.h> | 28 | #include <asm/arch/clock.h> |
29 | #include <asm/arch/sram.h> | 29 | #include <asm/arch/sram.h> |
30 | #include <asm/arch/cpu.h> | ||
30 | #include <asm/div64.h> | 31 | #include <asm/div64.h> |
31 | 32 | ||
32 | #include "prcm-regs.h" | ||
33 | #include "memory.h" | 33 | #include "memory.h" |
34 | #include "sdrc.h" | ||
34 | #include "clock.h" | 35 | #include "clock.h" |
36 | #include "prm.h" | ||
37 | #include "prm-regbits-24xx.h" | ||
38 | #include "cm.h" | ||
39 | #include "cm-regbits-24xx.h" | ||
40 | #include "cm-regbits-34xx.h" | ||
35 | 41 | ||
36 | #undef DEBUG | 42 | #define MAX_CLOCK_ENABLE_WAIT 100000 |
37 | |||
38 | //#define DOWN_VARIABLE_DPLL 1 /* Experimental */ | ||
39 | 43 | ||
40 | static struct prcm_config *curr_prcm_set; | 44 | u8 cpu_mask; |
41 | static u32 curr_perf_level = PRCM_FULL_SPEED; | ||
42 | static struct clk *vclk; | ||
43 | static struct clk *sclk; | ||
44 | 45 | ||
45 | /*------------------------------------------------------------------------- | 46 | /*------------------------------------------------------------------------- |
46 | * Omap2 specific clock functions | 47 | * Omap2 specific clock functions |
47 | *-------------------------------------------------------------------------*/ | 48 | *-------------------------------------------------------------------------*/ |
48 | 49 | ||
49 | /* Recalculate SYST_CLK */ | 50 | /** |
50 | static void omap2_sys_clk_recalc(struct clk * clk) | 51 | * omap2_init_clksel_parent - set a clksel clk's parent field from the hardware |
52 | * @clk: OMAP clock struct ptr to use | ||
53 | * | ||
54 | * Given a pointer to a source-selectable struct clk, read the hardware | ||
55 | * register and determine what its parent is currently set to. Update the | ||
56 | * clk->parent field with the appropriate clk ptr. | ||
57 | */ | ||
58 | void omap2_init_clksel_parent(struct clk *clk) | ||
51 | { | 59 | { |
52 | u32 div = PRCM_CLKSRC_CTRL; | 60 | const struct clksel *clks; |
53 | div &= (1 << 7) | (1 << 6); /* Test if ext clk divided by 1 or 2 */ | 61 | const struct clksel_rate *clkr; |
54 | div >>= clk->rate_offset; | 62 | u32 r, found = 0; |
55 | clk->rate = (clk->parent->rate / div); | 63 | |
56 | propagate_rate(clk); | 64 | if (!clk->clksel) |
65 | return; | ||
66 | |||
67 | r = __raw_readl(clk->clksel_reg) & clk->clksel_mask; | ||
68 | r >>= __ffs(clk->clksel_mask); | ||
69 | |||
70 | for (clks = clk->clksel; clks->parent && !found; clks++) { | ||
71 | for (clkr = clks->rates; clkr->div && !found; clkr++) { | ||
72 | if ((clkr->flags & cpu_mask) && (clkr->val == r)) { | ||
73 | if (clk->parent != clks->parent) { | ||
74 | pr_debug("clock: inited %s parent " | ||
75 | "to %s (was %s)\n", | ||
76 | clk->name, clks->parent->name, | ||
77 | ((clk->parent) ? | ||
78 | clk->parent->name : "NULL")); | ||
79 | clk->parent = clks->parent; | ||
80 | }; | ||
81 | found = 1; | ||
82 | } | ||
83 | } | ||
84 | } | ||
85 | |||
86 | if (!found) | ||
87 | printk(KERN_ERR "clock: init parent: could not find " | ||
88 | "regval %0x for clock %s\n", r, clk->name); | ||
89 | |||
90 | return; | ||
57 | } | 91 | } |
58 | 92 | ||
59 | static u32 omap2_get_dpll_rate(struct clk * tclk) | 93 | /* Returns the DPLL rate */ |
94 | u32 omap2_get_dpll_rate(struct clk *clk) | ||
60 | { | 95 | { |
61 | long long dpll_clk; | 96 | long long dpll_clk; |
62 | int dpll_mult, dpll_div, amult; | 97 | u32 dpll_mult, dpll_div, dpll; |
98 | const struct dpll_data *dd; | ||
99 | |||
100 | dd = clk->dpll_data; | ||
101 | /* REVISIT: What do we return on error? */ | ||
102 | if (!dd) | ||
103 | return 0; | ||
104 | |||
105 | dpll = __raw_readl(dd->mult_div1_reg); | ||
106 | dpll_mult = dpll & dd->mult_mask; | ||
107 | dpll_mult >>= __ffs(dd->mult_mask); | ||
108 | dpll_div = dpll & dd->div1_mask; | ||
109 | dpll_div >>= __ffs(dd->div1_mask); | ||
63 | 110 | ||
64 | dpll_mult = (CM_CLKSEL1_PLL >> 12) & 0x03ff; /* 10 bits */ | 111 | dpll_clk = (long long)clk->parent->rate * dpll_mult; |
65 | dpll_div = (CM_CLKSEL1_PLL >> 8) & 0x0f; /* 4 bits */ | ||
66 | dpll_clk = (long long)tclk->parent->rate * dpll_mult; | ||
67 | do_div(dpll_clk, dpll_div + 1); | 112 | do_div(dpll_clk, dpll_div + 1); |
68 | amult = CM_CLKSEL2_PLL & 0x3; | ||
69 | dpll_clk *= amult; | ||
70 | 113 | ||
71 | return dpll_clk; | 114 | return dpll_clk; |
72 | } | 115 | } |
73 | 116 | ||
74 | static void omap2_followparent_recalc(struct clk *clk) | 117 | /* |
75 | { | 118 | * Used for clocks that have the same value as the parent clock, |
76 | followparent_recalc(clk); | 119 | * divided by some factor |
77 | } | 120 | */ |
78 | 121 | void omap2_fixed_divisor_recalc(struct clk *clk) | |
79 | static void omap2_propagate_rate(struct clk * clk) | ||
80 | { | 122 | { |
81 | if (!(clk->flags & RATE_FIXED)) | 123 | WARN_ON(!clk->fixed_div); |
82 | clk->rate = clk->parent->rate; | ||
83 | 124 | ||
84 | propagate_rate(clk); | 125 | clk->rate = clk->parent->rate / clk->fixed_div; |
85 | } | ||
86 | 126 | ||
87 | static void omap2_set_osc_ck(int enable) | 127 | if (clk->flags & RATE_PROPAGATES) |
88 | { | 128 | propagate_rate(clk); |
89 | if (enable) | ||
90 | PRCM_CLKSRC_CTRL &= ~(0x3 << 3); | ||
91 | else | ||
92 | PRCM_CLKSRC_CTRL |= 0x3 << 3; | ||
93 | } | 129 | } |
94 | 130 | ||
95 | /* Enable an APLL if off */ | 131 | /** |
96 | static void omap2_clk_fixed_enable(struct clk *clk) | 132 | * omap2_wait_clock_ready - wait for clock to enable |
133 | * @reg: physical address of clock IDLEST register | ||
134 | * @mask: value to mask against to determine if the clock is active | ||
135 | * @name: name of the clock (for printk) | ||
136 | * | ||
137 | * Returns 1 if the clock enabled in time, or 0 if it failed to enable | ||
138 | * in roughly MAX_CLOCK_ENABLE_WAIT microseconds. | ||
139 | */ | ||
140 | int omap2_wait_clock_ready(void __iomem *reg, u32 mask, const char *name) | ||
97 | { | 141 | { |
98 | u32 cval, i=0; | 142 | int i = 0; |
143 | int ena = 0; | ||
99 | 144 | ||
100 | if (clk->enable_bit == 0xff) /* Parent will do it */ | 145 | /* |
101 | return; | 146 | * 24xx uses 0 to indicate not ready, and 1 to indicate ready. |
147 | * 34xx reverses this, just to keep us on our toes | ||
148 | */ | ||
149 | if (cpu_mask & (RATE_IN_242X | RATE_IN_243X)) { | ||
150 | ena = mask; | ||
151 | } else if (cpu_mask & RATE_IN_343X) { | ||
152 | ena = 0; | ||
153 | } | ||
102 | 154 | ||
103 | cval = CM_CLKEN_PLL; | 155 | /* Wait for lock */ |
156 | while (((__raw_readl(reg) & mask) != ena) && | ||
157 | (i++ < MAX_CLOCK_ENABLE_WAIT)) { | ||
158 | udelay(1); | ||
159 | } | ||
104 | 160 | ||
105 | if ((cval & (0x3 << clk->enable_bit)) == (0x3 << clk->enable_bit)) | 161 | if (i < MAX_CLOCK_ENABLE_WAIT) |
106 | return; | 162 | pr_debug("Clock %s stable after %d loops\n", name, i); |
163 | else | ||
164 | printk(KERN_ERR "Clock %s didn't enable in %d tries\n", | ||
165 | name, MAX_CLOCK_ENABLE_WAIT); | ||
107 | 166 | ||
108 | cval &= ~(0x3 << clk->enable_bit); | ||
109 | cval |= (0x3 << clk->enable_bit); | ||
110 | CM_CLKEN_PLL = cval; | ||
111 | 167 | ||
112 | if (clk == &apll96_ck) | 168 | return (i < MAX_CLOCK_ENABLE_WAIT) ? 1 : 0; |
113 | cval = (1 << 8); | 169 | }; |
114 | else if (clk == &apll54_ck) | ||
115 | cval = (1 << 6); | ||
116 | 170 | ||
117 | while (!(CM_IDLEST_CKGEN & cval)) { /* Wait for lock */ | ||
118 | ++i; | ||
119 | udelay(1); | ||
120 | if (i == 100000) { | ||
121 | printk(KERN_ERR "Clock %s didn't lock\n", clk->name); | ||
122 | break; | ||
123 | } | ||
124 | } | ||
125 | } | ||
126 | 171 | ||
172 | /* | ||
173 | * Note: We don't need special code here for INVERT_ENABLE | ||
174 | * for the time being since INVERT_ENABLE only applies to clocks enabled by | ||
175 | * CM_CLKEN_PLL | ||
176 | */ | ||
127 | static void omap2_clk_wait_ready(struct clk *clk) | 177 | static void omap2_clk_wait_ready(struct clk *clk) |
128 | { | 178 | { |
129 | unsigned long reg, other_reg, st_reg; | 179 | void __iomem *reg, *other_reg, *st_reg; |
130 | u32 bit; | 180 | u32 bit; |
131 | int i; | 181 | |
132 | 182 | /* | |
133 | reg = (unsigned long) clk->enable_reg; | 183 | * REVISIT: This code is pretty ugly. It would be nice to generalize |
134 | if (reg == (unsigned long) &CM_FCLKEN1_CORE || | 184 | * it and pull it into struct clk itself somehow. |
135 | reg == (unsigned long) &CM_FCLKEN2_CORE) | 185 | */ |
136 | other_reg = (reg & ~0xf0) | 0x10; | 186 | reg = clk->enable_reg; |
137 | else if (reg == (unsigned long) &CM_ICLKEN1_CORE || | 187 | if ((((u32)reg & 0xff) >= CM_FCLKEN1) && |
138 | reg == (unsigned long) &CM_ICLKEN2_CORE) | 188 | (((u32)reg & 0xff) <= OMAP24XX_CM_FCLKEN2)) |
139 | other_reg = (reg & ~0xf0) | 0x00; | 189 | other_reg = (void __iomem *)(((u32)reg & ~0xf0) | 0x10); /* CM_ICLKEN* */ |
190 | else if ((((u32)reg & 0xff) >= CM_ICLKEN1) && | ||
191 | (((u32)reg & 0xff) <= OMAP24XX_CM_ICLKEN4)) | ||
192 | other_reg = (void __iomem *)(((u32)reg & ~0xf0) | 0x00); /* CM_FCLKEN* */ | ||
140 | else | 193 | else |
141 | return; | 194 | return; |
142 | 195 | ||
196 | /* REVISIT: What are the appropriate exclusions for 34XX? */ | ||
143 | /* No check for DSS or cam clocks */ | 197 | /* No check for DSS or cam clocks */ |
144 | if ((reg & 0x0f) == 0) { | 198 | if (cpu_is_omap24xx() && ((u32)reg & 0x0f) == 0) { /* CM_{F,I}CLKEN1 */ |
145 | if (clk->enable_bit <= 1 || clk->enable_bit == 31) | 199 | if (clk->enable_bit == OMAP24XX_EN_DSS2_SHIFT || |
200 | clk->enable_bit == OMAP24XX_EN_DSS1_SHIFT || | ||
201 | clk->enable_bit == OMAP24XX_EN_CAM_SHIFT) | ||
146 | return; | 202 | return; |
147 | } | 203 | } |
148 | 204 | ||
205 | /* REVISIT: What are the appropriate exclusions for 34XX? */ | ||
206 | /* OMAP3: ignore DSS-mod clocks */ | ||
207 | if (cpu_is_omap34xx() && | ||
208 | (((u32)reg & ~0xff) == (u32)OMAP_CM_REGADDR(OMAP3430_DSS_MOD, 0))) | ||
209 | return; | ||
210 | |||
149 | /* Check if both functional and interface clocks | 211 | /* Check if both functional and interface clocks |
150 | * are running. */ | 212 | * are running. */ |
151 | bit = 1 << clk->enable_bit; | 213 | bit = 1 << clk->enable_bit; |
152 | if (!(__raw_readl(other_reg) & bit)) | 214 | if (!(__raw_readl(other_reg) & bit)) |
153 | return; | 215 | return; |
154 | st_reg = (other_reg & ~0xf0) | 0x20; | 216 | st_reg = (void __iomem *)(((u32)other_reg & ~0xf0) | 0x20); /* CM_IDLEST* */ |
155 | i = 0; | 217 | |
156 | while (!(__raw_readl(st_reg) & bit)) { | 218 | omap2_wait_clock_ready(st_reg, bit, clk->name); |
157 | i++; | ||
158 | if (i == 100000) { | ||
159 | printk(KERN_ERR "Timeout enabling clock %s\n", clk->name); | ||
160 | break; | ||
161 | } | ||
162 | } | ||
163 | if (i) | ||
164 | pr_debug("Clock %s stable after %d loops\n", clk->name, i); | ||
165 | } | 219 | } |
166 | 220 | ||
167 | /* Enables clock without considering parent dependencies or use count | 221 | /* Enables clock without considering parent dependencies or use count |
168 | * REVISIT: Maybe change this to use clk->enable like on omap1? | 222 | * REVISIT: Maybe change this to use clk->enable like on omap1? |
169 | */ | 223 | */ |
170 | static int _omap2_clk_enable(struct clk * clk) | 224 | int _omap2_clk_enable(struct clk *clk) |
171 | { | 225 | { |
172 | u32 regval32; | 226 | u32 regval32; |
173 | 227 | ||
174 | if (clk->flags & ALWAYS_ENABLED) | 228 | if (clk->flags & (ALWAYS_ENABLED | PARENT_CONTROLS_CLOCK)) |
175 | return 0; | 229 | return 0; |
176 | 230 | ||
177 | if (unlikely(clk == &osc_ck)) { | 231 | if (clk->enable) |
178 | omap2_set_osc_ck(1); | 232 | return clk->enable(clk); |
179 | return 0; | ||
180 | } | ||
181 | 233 | ||
182 | if (unlikely(clk->enable_reg == 0)) { | 234 | if (unlikely(clk->enable_reg == 0)) { |
183 | printk(KERN_ERR "clock.c: Enable for %s without enable code\n", | 235 | printk(KERN_ERR "clock.c: Enable for %s without enable code\n", |
184 | clk->name); | 236 | clk->name); |
185 | return 0; | 237 | return 0; /* REVISIT: -EINVAL */ |
186 | } | ||
187 | |||
188 | if (clk->enable_reg == (void __iomem *)&CM_CLKEN_PLL) { | ||
189 | omap2_clk_fixed_enable(clk); | ||
190 | return 0; | ||
191 | } | 238 | } |
192 | 239 | ||
193 | regval32 = __raw_readl(clk->enable_reg); | 240 | regval32 = __raw_readl(clk->enable_reg); |
194 | regval32 |= (1 << clk->enable_bit); | 241 | if (clk->flags & INVERT_ENABLE) |
242 | regval32 &= ~(1 << clk->enable_bit); | ||
243 | else | ||
244 | regval32 |= (1 << clk->enable_bit); | ||
195 | __raw_writel(regval32, clk->enable_reg); | 245 | __raw_writel(regval32, clk->enable_reg); |
196 | wmb(); | 246 | wmb(); |
197 | 247 | ||
@@ -200,44 +250,48 @@ static int _omap2_clk_enable(struct clk * clk) | |||
200 | return 0; | 250 | return 0; |
201 | } | 251 | } |
202 | 252 | ||
203 | /* Stop APLL */ | ||
204 | static void omap2_clk_fixed_disable(struct clk *clk) | ||
205 | { | ||
206 | u32 cval; | ||
207 | |||
208 | if(clk->enable_bit == 0xff) /* let parent off do it */ | ||
209 | return; | ||
210 | |||
211 | cval = CM_CLKEN_PLL; | ||
212 | cval &= ~(0x3 << clk->enable_bit); | ||
213 | CM_CLKEN_PLL = cval; | ||
214 | } | ||
215 | |||
216 | /* Disables clock without considering parent dependencies or use count */ | 253 | /* Disables clock without considering parent dependencies or use count */ |
217 | static void _omap2_clk_disable(struct clk *clk) | 254 | void _omap2_clk_disable(struct clk *clk) |
218 | { | 255 | { |
219 | u32 regval32; | 256 | u32 regval32; |
220 | 257 | ||
221 | if (unlikely(clk == &osc_ck)) { | 258 | if (clk->flags & (ALWAYS_ENABLED | PARENT_CONTROLS_CLOCK)) |
222 | omap2_set_osc_ck(0); | ||
223 | return; | 259 | return; |
224 | } | ||
225 | 260 | ||
226 | if (clk->enable_reg == 0) | 261 | if (clk->disable) { |
262 | clk->disable(clk); | ||
227 | return; | 263 | return; |
264 | } | ||
228 | 265 | ||
229 | if (clk->enable_reg == (void __iomem *)&CM_CLKEN_PLL) { | 266 | if (clk->enable_reg == 0) { |
230 | omap2_clk_fixed_disable(clk); | 267 | /* |
268 | * 'Independent' here refers to a clock which is not | ||
269 | * controlled by its parent. | ||
270 | */ | ||
271 | printk(KERN_ERR "clock: clk_disable called on independent " | ||
272 | "clock %s which has no enable_reg\n", clk->name); | ||
231 | return; | 273 | return; |
232 | } | 274 | } |
233 | 275 | ||
234 | regval32 = __raw_readl(clk->enable_reg); | 276 | regval32 = __raw_readl(clk->enable_reg); |
235 | regval32 &= ~(1 << clk->enable_bit); | 277 | if (clk->flags & INVERT_ENABLE) |
278 | regval32 |= (1 << clk->enable_bit); | ||
279 | else | ||
280 | regval32 &= ~(1 << clk->enable_bit); | ||
236 | __raw_writel(regval32, clk->enable_reg); | 281 | __raw_writel(regval32, clk->enable_reg); |
237 | wmb(); | 282 | wmb(); |
238 | } | 283 | } |
239 | 284 | ||
240 | static int omap2_clk_enable(struct clk *clk) | 285 | void omap2_clk_disable(struct clk *clk) |
286 | { | ||
287 | if (clk->usecount > 0 && !(--clk->usecount)) { | ||
288 | _omap2_clk_disable(clk); | ||
289 | if (likely((u32)clk->parent)) | ||
290 | omap2_clk_disable(clk->parent); | ||
291 | } | ||
292 | } | ||
293 | |||
294 | int omap2_clk_enable(struct clk *clk) | ||
241 | { | 295 | { |
242 | int ret = 0; | 296 | int ret = 0; |
243 | 297 | ||
@@ -261,519 +315,314 @@ static int omap2_clk_enable(struct clk *clk) | |||
261 | return ret; | 315 | return ret; |
262 | } | 316 | } |
263 | 317 | ||
264 | static void omap2_clk_disable(struct clk *clk) | ||
265 | { | ||
266 | if (clk->usecount > 0 && !(--clk->usecount)) { | ||
267 | _omap2_clk_disable(clk); | ||
268 | if (likely((u32)clk->parent)) | ||
269 | omap2_clk_disable(clk->parent); | ||
270 | } | ||
271 | } | ||
272 | |||
273 | /* | ||
274 | * Uses the current prcm set to tell if a rate is valid. | ||
275 | * You can go slower, but not faster within a given rate set. | ||
276 | */ | ||
277 | static u32 omap2_dpll_round_rate(unsigned long target_rate) | ||
278 | { | ||
279 | u32 high, low; | ||
280 | |||
281 | if ((CM_CLKSEL2_PLL & 0x3) == 1) { /* DPLL clockout */ | ||
282 | high = curr_prcm_set->dpll_speed * 2; | ||
283 | low = curr_prcm_set->dpll_speed; | ||
284 | } else { /* DPLL clockout x 2 */ | ||
285 | high = curr_prcm_set->dpll_speed; | ||
286 | low = curr_prcm_set->dpll_speed / 2; | ||
287 | } | ||
288 | |||
289 | #ifdef DOWN_VARIABLE_DPLL | ||
290 | if (target_rate > high) | ||
291 | return high; | ||
292 | else | ||
293 | return target_rate; | ||
294 | #else | ||
295 | if (target_rate > low) | ||
296 | return high; | ||
297 | else | ||
298 | return low; | ||
299 | #endif | ||
300 | |||
301 | } | ||
302 | |||
303 | /* | 318 | /* |
304 | * Used for clocks that are part of CLKSEL_xyz governed clocks. | 319 | * Used for clocks that are part of CLKSEL_xyz governed clocks. |
305 | * REVISIT: Maybe change to use clk->enable() functions like on omap1? | 320 | * REVISIT: Maybe change to use clk->enable() functions like on omap1? |
306 | */ | 321 | */ |
307 | static void omap2_clksel_recalc(struct clk * clk) | 322 | void omap2_clksel_recalc(struct clk *clk) |
308 | { | 323 | { |
309 | u32 fixed = 0, div = 0; | 324 | u32 div = 0; |
310 | 325 | ||
311 | if (clk == &dpll_ck) { | 326 | pr_debug("clock: recalc'ing clksel clk %s\n", clk->name); |
312 | clk->rate = omap2_get_dpll_rate(clk); | ||
313 | fixed = 1; | ||
314 | div = 0; | ||
315 | } | ||
316 | 327 | ||
317 | if (clk == &iva1_mpu_int_ifck) { | 328 | div = omap2_clksel_get_divisor(clk); |
318 | div = 2; | 329 | if (div == 0) |
319 | fixed = 1; | ||
320 | } | ||
321 | |||
322 | if ((clk == &dss1_fck) && ((CM_CLKSEL1_CORE & (0x1f << 8)) == 0)) { | ||
323 | clk->rate = sys_ck.rate; | ||
324 | return; | 330 | return; |
325 | } | ||
326 | 331 | ||
327 | if (!fixed) { | 332 | if (unlikely(clk->rate == clk->parent->rate / div)) |
328 | div = omap2_clksel_get_divisor(clk); | 333 | return; |
329 | if (div == 0) | 334 | clk->rate = clk->parent->rate / div; |
330 | return; | ||
331 | } | ||
332 | 335 | ||
333 | if (div != 0) { | 336 | pr_debug("clock: new clock rate is %ld (div %d)\n", clk->rate, div); |
334 | if (unlikely(clk->rate == clk->parent->rate / div)) | ||
335 | return; | ||
336 | clk->rate = clk->parent->rate / div; | ||
337 | } | ||
338 | 337 | ||
339 | if (unlikely(clk->flags & RATE_PROPAGATES)) | 338 | if (unlikely(clk->flags & RATE_PROPAGATES)) |
340 | propagate_rate(clk); | 339 | propagate_rate(clk); |
341 | } | 340 | } |
342 | 341 | ||
343 | /* | 342 | /** |
344 | * Finds best divider value in an array based on the source and target | 343 | * omap2_get_clksel_by_parent - return clksel struct for a given clk & parent |
345 | * rates. The divider array must be sorted with smallest divider first. | 344 | * @clk: OMAP struct clk ptr to inspect |
345 | * @src_clk: OMAP struct clk ptr of the parent clk to search for | ||
346 | * | ||
347 | * Scan the struct clksel array associated with the clock to find | ||
348 | * the element associated with the supplied parent clock address. | ||
349 | * Returns a pointer to the struct clksel on success or NULL on error. | ||
346 | */ | 350 | */ |
347 | static inline u32 omap2_divider_from_table(u32 size, u32 *div_array, | 351 | const struct clksel *omap2_get_clksel_by_parent(struct clk *clk, |
348 | u32 src_rate, u32 tgt_rate) | 352 | struct clk *src_clk) |
349 | { | 353 | { |
350 | int i, test_rate; | 354 | const struct clksel *clks; |
351 | 355 | ||
352 | if (div_array == NULL) | 356 | if (!clk->clksel) |
353 | return ~1; | 357 | return NULL; |
354 | 358 | ||
355 | for (i=0; i < size; i++) { | 359 | for (clks = clk->clksel; clks->parent; clks++) { |
356 | test_rate = src_rate / *div_array; | 360 | if (clks->parent == src_clk) |
357 | if (test_rate <= tgt_rate) | 361 | break; /* Found the requested parent */ |
358 | return *div_array; | ||
359 | ++div_array; | ||
360 | } | 362 | } |
361 | 363 | ||
362 | return ~0; /* No acceptable divider */ | 364 | if (!clks->parent) { |
365 | printk(KERN_ERR "clock: Could not find parent clock %s in " | ||
366 | "clksel array of clock %s\n", src_clk->name, | ||
367 | clk->name); | ||
368 | return NULL; | ||
369 | } | ||
370 | |||
371 | return clks; | ||
363 | } | 372 | } |
364 | 373 | ||
365 | /* | 374 | /** |
366 | * Find divisor for the given clock and target rate. | 375 | * omap2_clksel_round_rate_div - find divisor for the given clock and rate |
376 | * @clk: OMAP struct clk to use | ||
377 | * @target_rate: desired clock rate | ||
378 | * @new_div: ptr to where we should store the divisor | ||
367 | * | 379 | * |
380 | * Finds 'best' divider value in an array based on the source and target | ||
381 | * rates. The divider array must be sorted with smallest divider first. | ||
368 | * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT, | 382 | * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT, |
369 | * they are only settable as part of virtual_prcm set. | 383 | * they are only settable as part of virtual_prcm set. |
384 | * | ||
385 | * Returns the rounded clock rate or returns 0xffffffff on error. | ||
370 | */ | 386 | */ |
371 | static u32 omap2_clksel_round_rate(struct clk *tclk, u32 target_rate, | 387 | u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate, |
372 | u32 *new_div) | 388 | u32 *new_div) |
373 | { | 389 | { |
374 | u32 gfx_div[] = {2, 3, 4}; | 390 | unsigned long test_rate; |
375 | u32 sysclkout_div[] = {1, 2, 4, 8, 16}; | 391 | const struct clksel *clks; |
376 | u32 dss1_div[] = {1, 2, 3, 4, 5, 6, 8, 9, 12, 16}; | 392 | const struct clksel_rate *clkr; |
377 | u32 vylnq_div[] = {1, 2, 3, 4, 6, 8, 9, 12, 16, 18}; | 393 | u32 last_div = 0; |
378 | u32 best_div = ~0, asize = 0; | 394 | |
379 | u32 *div_array = NULL; | 395 | printk(KERN_INFO "clock: clksel_round_rate_div: %s target_rate %ld\n", |
380 | 396 | clk->name, target_rate); | |
381 | switch (tclk->flags & SRC_RATE_SEL_MASK) { | 397 | |
382 | case CM_GFX_SEL1: | 398 | *new_div = 1; |
383 | asize = 3; | 399 | |
384 | div_array = gfx_div; | 400 | clks = omap2_get_clksel_by_parent(clk, clk->parent); |
385 | break; | 401 | if (clks == NULL) |
386 | case CM_PLL_SEL1: | 402 | return ~0; |
387 | return omap2_dpll_round_rate(target_rate); | 403 | |
388 | case CM_SYSCLKOUT_SEL1: | 404 | for (clkr = clks->rates; clkr->div; clkr++) { |
389 | asize = 5; | 405 | if (!(clkr->flags & cpu_mask)) |
390 | div_array = sysclkout_div; | 406 | continue; |
391 | break; | 407 | |
392 | case CM_CORE_SEL1: | 408 | /* Sanity check */ |
393 | if(tclk == &dss1_fck){ | 409 | if (clkr->div <= last_div) |
394 | if(tclk->parent == &core_ck){ | 410 | printk(KERN_ERR "clock: clksel_rate table not sorted " |
395 | asize = 10; | 411 | "for clock %s", clk->name); |
396 | div_array = dss1_div; | 412 | |
397 | } else { | 413 | last_div = clkr->div; |
398 | *new_div = 0; /* fixed clk */ | 414 | |
399 | return(tclk->parent->rate); | 415 | test_rate = clk->parent->rate / clkr->div; |
400 | } | 416 | |
401 | } else if((tclk == &vlynq_fck) && cpu_is_omap2420()){ | 417 | if (test_rate <= target_rate) |
402 | if(tclk->parent == &core_ck){ | 418 | break; /* found it */ |
403 | asize = 10; | ||
404 | div_array = vylnq_div; | ||
405 | } else { | ||
406 | *new_div = 0; /* fixed clk */ | ||
407 | return(tclk->parent->rate); | ||
408 | } | ||
409 | } | ||
410 | break; | ||
411 | } | 419 | } |
412 | 420 | ||
413 | best_div = omap2_divider_from_table(asize, div_array, | 421 | if (!clkr->div) { |
414 | tclk->parent->rate, target_rate); | 422 | printk(KERN_ERR "clock: Could not find divisor for target " |
415 | if (best_div == ~0){ | 423 | "rate %ld for clock %s parent %s\n", target_rate, |
416 | *new_div = 1; | 424 | clk->name, clk->parent->name); |
417 | return best_div; /* signal error */ | 425 | return ~0; |
418 | } | 426 | } |
419 | 427 | ||
420 | *new_div = best_div; | 428 | *new_div = clkr->div; |
421 | return (tclk->parent->rate / best_div); | 429 | |
430 | printk(KERN_INFO "clock: new_div = %d, new_rate = %ld\n", *new_div, | ||
431 | (clk->parent->rate / clkr->div)); | ||
432 | |||
433 | return (clk->parent->rate / clkr->div); | ||
422 | } | 434 | } |
423 | 435 | ||
424 | /* Given a clock and a rate apply a clock specific rounding function */ | 436 | /** |
425 | static long omap2_clk_round_rate(struct clk *clk, unsigned long rate) | 437 | * omap2_clksel_round_rate - find rounded rate for the given clock and rate |
438 | * @clk: OMAP struct clk to use | ||
439 | * @target_rate: desired clock rate | ||
440 | * | ||
441 | * Compatibility wrapper for OMAP clock framework | ||
442 | * Finds best target rate based on the source clock and possible dividers. | ||
443 | * rates. The divider array must be sorted with smallest divider first. | ||
444 | * Note that this will not work for clocks which are part of CONFIG_PARTICIPANT, | ||
445 | * they are only settable as part of virtual_prcm set. | ||
446 | * | ||
447 | * Returns the rounded clock rate or returns 0xffffffff on error. | ||
448 | */ | ||
449 | long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate) | ||
426 | { | 450 | { |
427 | u32 new_div = 0; | 451 | u32 new_div; |
428 | int valid_rate; | ||
429 | 452 | ||
430 | if (clk->flags & RATE_FIXED) | 453 | return omap2_clksel_round_rate_div(clk, target_rate, &new_div); |
431 | return clk->rate; | 454 | } |
432 | 455 | ||
433 | if (clk->flags & RATE_CKCTL) { | ||
434 | valid_rate = omap2_clksel_round_rate(clk, rate, &new_div); | ||
435 | return valid_rate; | ||
436 | } | ||
437 | 456 | ||
457 | /* Given a clock and a rate apply a clock specific rounding function */ | ||
458 | long omap2_clk_round_rate(struct clk *clk, unsigned long rate) | ||
459 | { | ||
438 | if (clk->round_rate != 0) | 460 | if (clk->round_rate != 0) |
439 | return clk->round_rate(clk, rate); | 461 | return clk->round_rate(clk, rate); |
440 | 462 | ||
463 | if (clk->flags & RATE_FIXED) | ||
464 | printk(KERN_ERR "clock: generic omap2_clk_round_rate called " | ||
465 | "on fixed-rate clock %s\n", clk->name); | ||
466 | |||
441 | return clk->rate; | 467 | return clk->rate; |
442 | } | 468 | } |
443 | 469 | ||
444 | /* | 470 | /** |
445 | * Check the DLL lock state, and return tue if running in unlock mode. | 471 | * omap2_clksel_to_divisor() - turn clksel field value into integer divider |
446 | * This is needed to compensate for the shifted DLL value in unlock mode. | 472 | * @clk: OMAP struct clk to use |
473 | * @field_val: register field value to find | ||
474 | * | ||
475 | * Given a struct clk of a rate-selectable clksel clock, and a register field | ||
476 | * value to search for, find the corresponding clock divisor. The register | ||
477 | * field value should be pre-masked and shifted down so the LSB is at bit 0 | ||
478 | * before calling. Returns 0 on error | ||
447 | */ | 479 | */ |
448 | static u32 omap2_dll_force_needed(void) | 480 | u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val) |
449 | { | 481 | { |
450 | u32 dll_state = SDRC_DLLA_CTRL; /* dlla and dllb are a set */ | 482 | const struct clksel *clks; |
483 | const struct clksel_rate *clkr; | ||
451 | 484 | ||
452 | if ((dll_state & (1 << 2)) == (1 << 2)) | 485 | clks = omap2_get_clksel_by_parent(clk, clk->parent); |
453 | return 1; | 486 | if (clks == NULL) |
454 | else | ||
455 | return 0; | 487 | return 0; |
456 | } | ||
457 | 488 | ||
458 | static u32 omap2_reprogram_sdrc(u32 level, u32 force) | 489 | for (clkr = clks->rates; clkr->div; clkr++) { |
459 | { | 490 | if ((clkr->flags & cpu_mask) && (clkr->val == field_val)) |
460 | u32 slow_dll_ctrl, fast_dll_ctrl, m_type; | 491 | break; |
461 | u32 prev = curr_perf_level, flags; | ||
462 | |||
463 | if ((curr_perf_level == level) && !force) | ||
464 | return prev; | ||
465 | |||
466 | m_type = omap2_memory_get_type(); | ||
467 | slow_dll_ctrl = omap2_memory_get_slow_dll_ctrl(); | ||
468 | fast_dll_ctrl = omap2_memory_get_fast_dll_ctrl(); | ||
469 | |||
470 | if (level == PRCM_HALF_SPEED) { | ||
471 | local_irq_save(flags); | ||
472 | PRCM_VOLTSETUP = 0xffff; | ||
473 | omap2_sram_reprogram_sdrc(PRCM_HALF_SPEED, | ||
474 | slow_dll_ctrl, m_type); | ||
475 | curr_perf_level = PRCM_HALF_SPEED; | ||
476 | local_irq_restore(flags); | ||
477 | } | 492 | } |
478 | if (level == PRCM_FULL_SPEED) { | 493 | |
479 | local_irq_save(flags); | 494 | if (!clkr->div) { |
480 | PRCM_VOLTSETUP = 0xffff; | 495 | printk(KERN_ERR "clock: Could not find fieldval %d for " |
481 | omap2_sram_reprogram_sdrc(PRCM_FULL_SPEED, | 496 | "clock %s parent %s\n", field_val, clk->name, |
482 | fast_dll_ctrl, m_type); | 497 | clk->parent->name); |
483 | curr_perf_level = PRCM_FULL_SPEED; | 498 | return 0; |
484 | local_irq_restore(flags); | ||
485 | } | 499 | } |
486 | 500 | ||
487 | return prev; | 501 | return clkr->div; |
488 | } | 502 | } |
489 | 503 | ||
490 | static int omap2_reprogram_dpll(struct clk * clk, unsigned long rate) | 504 | /** |
505 | * omap2_divisor_to_clksel() - turn clksel integer divisor into a field value | ||
506 | * @clk: OMAP struct clk to use | ||
507 | * @div: integer divisor to search for | ||
508 | * | ||
509 | * Given a struct clk of a rate-selectable clksel clock, and a clock divisor, | ||
510 | * find the corresponding register field value. The return register value is | ||
511 | * the value before left-shifting. Returns 0xffffffff on error | ||
512 | */ | ||
513 | u32 omap2_divisor_to_clksel(struct clk *clk, u32 div) | ||
491 | { | 514 | { |
492 | u32 flags, cur_rate, low, mult, div, valid_rate, done_rate; | 515 | const struct clksel *clks; |
493 | u32 bypass = 0; | 516 | const struct clksel_rate *clkr; |
494 | struct prcm_config tmpset; | ||
495 | int ret = -EINVAL; | ||
496 | 517 | ||
497 | local_irq_save(flags); | 518 | /* should never happen */ |
498 | cur_rate = omap2_get_dpll_rate(&dpll_ck); | 519 | WARN_ON(div == 0); |
499 | mult = CM_CLKSEL2_PLL & 0x3; | ||
500 | |||
501 | if ((rate == (cur_rate / 2)) && (mult == 2)) { | ||
502 | omap2_reprogram_sdrc(PRCM_HALF_SPEED, 1); | ||
503 | } else if ((rate == (cur_rate * 2)) && (mult == 1)) { | ||
504 | omap2_reprogram_sdrc(PRCM_FULL_SPEED, 1); | ||
505 | } else if (rate != cur_rate) { | ||
506 | valid_rate = omap2_dpll_round_rate(rate); | ||
507 | if (valid_rate != rate) | ||
508 | goto dpll_exit; | ||
509 | |||
510 | if ((CM_CLKSEL2_PLL & 0x3) == 1) | ||
511 | low = curr_prcm_set->dpll_speed; | ||
512 | else | ||
513 | low = curr_prcm_set->dpll_speed / 2; | ||
514 | |||
515 | tmpset.cm_clksel1_pll = CM_CLKSEL1_PLL; | ||
516 | tmpset.cm_clksel1_pll &= ~(0x3FFF << 8); | ||
517 | div = ((curr_prcm_set->xtal_speed / 1000000) - 1); | ||
518 | tmpset.cm_clksel2_pll = CM_CLKSEL2_PLL; | ||
519 | tmpset.cm_clksel2_pll &= ~0x3; | ||
520 | if (rate > low) { | ||
521 | tmpset.cm_clksel2_pll |= 0x2; | ||
522 | mult = ((rate / 2) / 1000000); | ||
523 | done_rate = PRCM_FULL_SPEED; | ||
524 | } else { | ||
525 | tmpset.cm_clksel2_pll |= 0x1; | ||
526 | mult = (rate / 1000000); | ||
527 | done_rate = PRCM_HALF_SPEED; | ||
528 | } | ||
529 | tmpset.cm_clksel1_pll |= ((div << 8) | (mult << 12)); | ||
530 | |||
531 | /* Worst case */ | ||
532 | tmpset.base_sdrc_rfr = V24XX_SDRC_RFR_CTRL_BYPASS; | ||
533 | |||
534 | if (rate == curr_prcm_set->xtal_speed) /* If asking for 1-1 */ | ||
535 | bypass = 1; | ||
536 | 520 | ||
537 | omap2_reprogram_sdrc(PRCM_FULL_SPEED, 1); /* For init_mem */ | 521 | clks = omap2_get_clksel_by_parent(clk, clk->parent); |
538 | 522 | if (clks == NULL) | |
539 | /* Force dll lock mode */ | 523 | return 0; |
540 | omap2_set_prcm(tmpset.cm_clksel1_pll, tmpset.base_sdrc_rfr, | ||
541 | bypass); | ||
542 | 524 | ||
543 | /* Errata: ret dll entry state */ | 525 | for (clkr = clks->rates; clkr->div; clkr++) { |
544 | omap2_init_memory_params(omap2_dll_force_needed()); | 526 | if ((clkr->flags & cpu_mask) && (clkr->div == div)) |
545 | omap2_reprogram_sdrc(done_rate, 0); | 527 | break; |
546 | } | 528 | } |
547 | omap2_clksel_recalc(&dpll_ck); | ||
548 | ret = 0; | ||
549 | 529 | ||
550 | dpll_exit: | 530 | if (!clkr->div) { |
551 | local_irq_restore(flags); | 531 | printk(KERN_ERR "clock: Could not find divisor %d for " |
552 | return(ret); | 532 | "clock %s parent %s\n", div, clk->name, |
553 | } | 533 | clk->parent->name); |
534 | return 0; | ||
535 | } | ||
554 | 536 | ||
555 | /* Just return the MPU speed */ | 537 | return clkr->val; |
556 | static void omap2_mpu_recalc(struct clk * clk) | ||
557 | { | ||
558 | clk->rate = curr_prcm_set->mpu_speed; | ||
559 | } | 538 | } |
560 | 539 | ||
561 | /* | 540 | /** |
562 | * Look for a rate equal or less than the target rate given a configuration set. | 541 | * omap2_get_clksel - find clksel register addr & field mask for a clk |
542 | * @clk: struct clk to use | ||
543 | * @field_mask: ptr to u32 to store the register field mask | ||
563 | * | 544 | * |
564 | * What's not entirely clear is "which" field represents the key field. | 545 | * Returns the address of the clksel register upon success or NULL on error. |
565 | * Some might argue L3-DDR, others ARM, others IVA. This code is simple and | ||
566 | * just uses the ARM rates. | ||
567 | */ | 546 | */ |
568 | static long omap2_round_to_table_rate(struct clk * clk, unsigned long rate) | 547 | void __iomem *omap2_get_clksel(struct clk *clk, u32 *field_mask) |
569 | { | 548 | { |
570 | struct prcm_config * ptr; | 549 | if (unlikely((clk->clksel_reg == 0) || (clk->clksel_mask == 0))) |
571 | long highest_rate; | 550 | return NULL; |
572 | |||
573 | if (clk != &virt_prcm_set) | ||
574 | return -EINVAL; | ||
575 | |||
576 | highest_rate = -EINVAL; | ||
577 | |||
578 | for (ptr = rate_table; ptr->mpu_speed; ptr++) { | ||
579 | if (ptr->xtal_speed != sys_ck.rate) | ||
580 | continue; | ||
581 | 551 | ||
582 | highest_rate = ptr->mpu_speed; | 552 | *field_mask = clk->clksel_mask; |
583 | 553 | ||
584 | /* Can check only after xtal frequency check */ | 554 | return clk->clksel_reg; |
585 | if (ptr->mpu_speed <= rate) | ||
586 | break; | ||
587 | } | ||
588 | return highest_rate; | ||
589 | } | 555 | } |
590 | 556 | ||
591 | /* | 557 | /** |
592 | * omap2_convert_field_to_div() - turn field value into integer divider | 558 | * omap2_clksel_get_divisor - get current divider applied to parent clock. |
559 | * @clk: OMAP struct clk to use. | ||
560 | * | ||
561 | * Returns the integer divisor upon success or 0 on error. | ||
593 | */ | 562 | */ |
594 | static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val) | 563 | u32 omap2_clksel_get_divisor(struct clk *clk) |
595 | { | 564 | { |
596 | u32 i; | 565 | u32 field_mask, field_val; |
597 | u32 clkout_array[] = {1, 2, 4, 8, 16}; | 566 | void __iomem *div_addr; |
598 | 567 | ||
599 | if ((div_sel & SRC_RATE_SEL_MASK) == CM_SYSCLKOUT_SEL1) { | 568 | div_addr = omap2_get_clksel(clk, &field_mask); |
600 | for (i = 0; i < 5; i++) { | 569 | if (div_addr == 0) |
601 | if (field_val == i) | 570 | return 0; |
602 | return clkout_array[i]; | 571 | |
603 | } | 572 | field_val = __raw_readl(div_addr) & field_mask; |
604 | return ~0; | 573 | field_val >>= __ffs(field_mask); |
605 | } else | 574 | |
606 | return field_val; | 575 | return omap2_clksel_to_divisor(clk, field_val); |
607 | } | 576 | } |
608 | 577 | ||
609 | /* | 578 | int omap2_clksel_set_rate(struct clk *clk, unsigned long rate) |
610 | * Returns the CLKSEL divider register value | ||
611 | * REVISIT: This should be cleaned up to work nicely with void __iomem * | ||
612 | */ | ||
613 | static u32 omap2_get_clksel(u32 *div_sel, u32 *field_mask, | ||
614 | struct clk *clk) | ||
615 | { | 579 | { |
616 | int ret = ~0; | 580 | u32 field_mask, field_val, reg_val, validrate, new_div = 0; |
617 | u32 reg_val, div_off; | 581 | void __iomem *div_addr; |
618 | u32 div_addr = 0; | ||
619 | u32 mask = ~0; | ||
620 | |||
621 | div_off = clk->rate_offset; | ||
622 | |||
623 | switch ((*div_sel & SRC_RATE_SEL_MASK)) { | ||
624 | case CM_MPU_SEL1: | ||
625 | div_addr = (u32)&CM_CLKSEL_MPU; | ||
626 | mask = 0x1f; | ||
627 | break; | ||
628 | case CM_DSP_SEL1: | ||
629 | div_addr = (u32)&CM_CLKSEL_DSP; | ||
630 | if (cpu_is_omap2420()) { | ||
631 | if ((div_off == 0) || (div_off == 8)) | ||
632 | mask = 0x1f; | ||
633 | else if (div_off == 5) | ||
634 | mask = 0x3; | ||
635 | } else if (cpu_is_omap2430()) { | ||
636 | if (div_off == 0) | ||
637 | mask = 0x1f; | ||
638 | else if (div_off == 5) | ||
639 | mask = 0x3; | ||
640 | } | ||
641 | break; | ||
642 | case CM_GFX_SEL1: | ||
643 | div_addr = (u32)&CM_CLKSEL_GFX; | ||
644 | if (div_off == 0) | ||
645 | mask = 0x7; | ||
646 | break; | ||
647 | case CM_MODEM_SEL1: | ||
648 | div_addr = (u32)&CM_CLKSEL_MDM; | ||
649 | if (div_off == 0) | ||
650 | mask = 0xf; | ||
651 | break; | ||
652 | case CM_SYSCLKOUT_SEL1: | ||
653 | div_addr = (u32)&PRCM_CLKOUT_CTRL; | ||
654 | if ((div_off == 3) || (div_off == 11)) | ||
655 | mask= 0x3; | ||
656 | break; | ||
657 | case CM_CORE_SEL1: | ||
658 | div_addr = (u32)&CM_CLKSEL1_CORE; | ||
659 | switch (div_off) { | ||
660 | case 0: /* l3 */ | ||
661 | case 8: /* dss1 */ | ||
662 | case 15: /* vylnc-2420 */ | ||
663 | case 20: /* ssi */ | ||
664 | mask = 0x1f; break; | ||
665 | case 5: /* l4 */ | ||
666 | mask = 0x3; break; | ||
667 | case 13: /* dss2 */ | ||
668 | mask = 0x1; break; | ||
669 | case 25: /* usb */ | ||
670 | mask = 0x7; break; | ||
671 | } | ||
672 | } | ||
673 | 582 | ||
674 | *field_mask = mask; | 583 | validrate = omap2_clksel_round_rate_div(clk, rate, &new_div); |
584 | if (validrate != rate) | ||
585 | return -EINVAL; | ||
675 | 586 | ||
676 | if (unlikely(mask == ~0)) | 587 | div_addr = omap2_get_clksel(clk, &field_mask); |
677 | div_addr = 0; | 588 | if (div_addr == 0) |
589 | return -EINVAL; | ||
678 | 590 | ||
679 | *div_sel = div_addr; | 591 | field_val = omap2_divisor_to_clksel(clk, new_div); |
592 | if (field_val == ~0) | ||
593 | return -EINVAL; | ||
680 | 594 | ||
681 | if (unlikely(div_addr == 0)) | 595 | reg_val = __raw_readl(div_addr); |
682 | return ret; | 596 | reg_val &= ~field_mask; |
597 | reg_val |= (field_val << __ffs(field_mask)); | ||
598 | __raw_writel(reg_val, div_addr); | ||
599 | wmb(); | ||
683 | 600 | ||
684 | /* Isolate field */ | 601 | clk->rate = clk->parent->rate / new_div; |
685 | reg_val = __raw_readl((void __iomem *)div_addr) & (mask << div_off); | ||
686 | 602 | ||
687 | /* Normalize back to divider value */ | 603 | if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) { |
688 | reg_val >>= div_off; | 604 | __raw_writel(OMAP24XX_VALID_CONFIG, OMAP24XX_PRCM_CLKCFG_CTRL); |
605 | wmb(); | ||
606 | } | ||
689 | 607 | ||
690 | return reg_val; | 608 | return 0; |
691 | } | 609 | } |
692 | 610 | ||
693 | /* | ||
694 | * Return divider to be applied to parent clock. | ||
695 | * Return 0 on error. | ||
696 | */ | ||
697 | static u32 omap2_clksel_get_divisor(struct clk *clk) | ||
698 | { | ||
699 | int ret = 0; | ||
700 | u32 div, div_sel, div_off, field_mask, field_val; | ||
701 | |||
702 | /* isolate control register */ | ||
703 | div_sel = (SRC_RATE_SEL_MASK & clk->flags); | ||
704 | |||
705 | div_off = clk->rate_offset; | ||
706 | field_val = omap2_get_clksel(&div_sel, &field_mask, clk); | ||
707 | if (div_sel == 0) | ||
708 | return ret; | ||
709 | |||
710 | div_sel = (SRC_RATE_SEL_MASK & clk->flags); | ||
711 | div = omap2_clksel_to_divisor(div_sel, field_val); | ||
712 | |||
713 | return div; | ||
714 | } | ||
715 | 611 | ||
716 | /* Set the clock rate for a clock source */ | 612 | /* Set the clock rate for a clock source */ |
717 | static int omap2_clk_set_rate(struct clk *clk, unsigned long rate) | 613 | int omap2_clk_set_rate(struct clk *clk, unsigned long rate) |
718 | |||
719 | { | 614 | { |
720 | int ret = -EINVAL; | 615 | int ret = -EINVAL; |
721 | void __iomem * reg; | ||
722 | u32 div_sel, div_off, field_mask, field_val, reg_val, validrate; | ||
723 | u32 new_div = 0; | ||
724 | |||
725 | if (!(clk->flags & CONFIG_PARTICIPANT) && (clk->flags & RATE_CKCTL)) { | ||
726 | if (clk == &dpll_ck) | ||
727 | return omap2_reprogram_dpll(clk, rate); | ||
728 | |||
729 | /* Isolate control register */ | ||
730 | div_sel = (SRC_RATE_SEL_MASK & clk->flags); | ||
731 | div_off = clk->rate_offset; | ||
732 | |||
733 | validrate = omap2_clksel_round_rate(clk, rate, &new_div); | ||
734 | if (validrate != rate) | ||
735 | return(ret); | ||
736 | 616 | ||
737 | field_val = omap2_get_clksel(&div_sel, &field_mask, clk); | 617 | pr_debug("clock: set_rate for clock %s to rate %ld\n", clk->name, rate); |
738 | if (div_sel == 0) | ||
739 | return ret; | ||
740 | |||
741 | if (clk->flags & CM_SYSCLKOUT_SEL1) { | ||
742 | switch (new_div) { | ||
743 | case 16: | ||
744 | field_val = 4; | ||
745 | break; | ||
746 | case 8: | ||
747 | field_val = 3; | ||
748 | break; | ||
749 | case 4: | ||
750 | field_val = 2; | ||
751 | break; | ||
752 | case 2: | ||
753 | field_val = 1; | ||
754 | break; | ||
755 | case 1: | ||
756 | field_val = 0; | ||
757 | break; | ||
758 | } | ||
759 | } else | ||
760 | field_val = new_div; | ||
761 | 618 | ||
762 | reg = (void __iomem *)div_sel; | 619 | /* CONFIG_PARTICIPANT clocks are changed only in sets via the |
763 | 620 | rate table mechanism, driven by mpu_speed */ | |
764 | reg_val = __raw_readl(reg); | 621 | if (clk->flags & CONFIG_PARTICIPANT) |
765 | reg_val &= ~(field_mask << div_off); | 622 | return -EINVAL; |
766 | reg_val |= (field_val << div_off); | ||
767 | __raw_writel(reg_val, reg); | ||
768 | wmb(); | ||
769 | clk->rate = clk->parent->rate / field_val; | ||
770 | 623 | ||
771 | if (clk->flags & DELAYED_APP) { | 624 | /* dpll_ck, core_ck, virt_prcm_set; plus all clksel clocks */ |
772 | __raw_writel(0x1, (void __iomem *)&PRCM_CLKCFG_CTRL); | 625 | if (clk->set_rate != 0) |
773 | wmb(); | ||
774 | } | ||
775 | ret = 0; | ||
776 | } else if (clk->set_rate != 0) | ||
777 | ret = clk->set_rate(clk, rate); | 626 | ret = clk->set_rate(clk, rate); |
778 | 627 | ||
779 | if (unlikely(ret == 0 && (clk->flags & RATE_PROPAGATES))) | 628 | if (unlikely(ret == 0 && (clk->flags & RATE_PROPAGATES))) |
@@ -782,242 +631,92 @@ static int omap2_clk_set_rate(struct clk *clk, unsigned long rate) | |||
782 | return ret; | 631 | return ret; |
783 | } | 632 | } |
784 | 633 | ||
785 | /* Converts encoded control register address into a full address */ | 634 | /* |
786 | static u32 omap2_get_src_field(u32 *type_to_addr, u32 reg_offset, | 635 | * Converts encoded control register address into a full address |
787 | struct clk *src_clk, u32 *field_mask) | 636 | * On error, *src_addr will be returned as 0. |
788 | { | 637 | */ |
789 | u32 val = ~0, src_reg_addr = 0, mask = 0; | 638 | static u32 omap2_clksel_get_src_field(void __iomem **src_addr, |
790 | 639 | struct clk *src_clk, u32 *field_mask, | |
791 | /* Find target control register.*/ | 640 | struct clk *clk, u32 *parent_div) |
792 | switch ((*type_to_addr & SRC_RATE_SEL_MASK)) { | ||
793 | case CM_CORE_SEL1: | ||
794 | src_reg_addr = (u32)&CM_CLKSEL1_CORE; | ||
795 | if (reg_offset == 13) { /* DSS2_fclk */ | ||
796 | mask = 0x1; | ||
797 | if (src_clk == &sys_ck) | ||
798 | val = 0; | ||
799 | if (src_clk == &func_48m_ck) | ||
800 | val = 1; | ||
801 | } else if (reg_offset == 8) { /* DSS1_fclk */ | ||
802 | mask = 0x1f; | ||
803 | if (src_clk == &sys_ck) | ||
804 | val = 0; | ||
805 | else if (src_clk == &core_ck) /* divided clock */ | ||
806 | val = 0x10; /* rate needs fixing */ | ||
807 | } else if ((reg_offset == 15) && cpu_is_omap2420()){ /*vlnyq*/ | ||
808 | mask = 0x1F; | ||
809 | if(src_clk == &func_96m_ck) | ||
810 | val = 0; | ||
811 | else if (src_clk == &core_ck) | ||
812 | val = 0x10; | ||
813 | } | ||
814 | break; | ||
815 | case CM_CORE_SEL2: | ||
816 | src_reg_addr = (u32)&CM_CLKSEL2_CORE; | ||
817 | mask = 0x3; | ||
818 | if (src_clk == &func_32k_ck) | ||
819 | val = 0x0; | ||
820 | if (src_clk == &sys_ck) | ||
821 | val = 0x1; | ||
822 | if (src_clk == &alt_ck) | ||
823 | val = 0x2; | ||
824 | break; | ||
825 | case CM_WKUP_SEL1: | ||
826 | src_reg_addr = (u32)&CM_CLKSEL_WKUP; | ||
827 | mask = 0x3; | ||
828 | if (src_clk == &func_32k_ck) | ||
829 | val = 0x0; | ||
830 | if (src_clk == &sys_ck) | ||
831 | val = 0x1; | ||
832 | if (src_clk == &alt_ck) | ||
833 | val = 0x2; | ||
834 | break; | ||
835 | case CM_PLL_SEL1: | ||
836 | src_reg_addr = (u32)&CM_CLKSEL1_PLL; | ||
837 | mask = 0x1; | ||
838 | if (reg_offset == 0x3) { | ||
839 | if (src_clk == &apll96_ck) | ||
840 | val = 0; | ||
841 | if (src_clk == &alt_ck) | ||
842 | val = 1; | ||
843 | } | ||
844 | else if (reg_offset == 0x5) { | ||
845 | if (src_clk == &apll54_ck) | ||
846 | val = 0; | ||
847 | if (src_clk == &alt_ck) | ||
848 | val = 1; | ||
849 | } | ||
850 | break; | ||
851 | case CM_PLL_SEL2: | ||
852 | src_reg_addr = (u32)&CM_CLKSEL2_PLL; | ||
853 | mask = 0x3; | ||
854 | if (src_clk == &func_32k_ck) | ||
855 | val = 0x0; | ||
856 | if (src_clk == &dpll_ck) | ||
857 | val = 0x2; | ||
858 | break; | ||
859 | case CM_SYSCLKOUT_SEL1: | ||
860 | src_reg_addr = (u32)&PRCM_CLKOUT_CTRL; | ||
861 | mask = 0x3; | ||
862 | if (src_clk == &dpll_ck) | ||
863 | val = 0; | ||
864 | if (src_clk == &sys_ck) | ||
865 | val = 1; | ||
866 | if (src_clk == &func_96m_ck) | ||
867 | val = 2; | ||
868 | if (src_clk == &func_54m_ck) | ||
869 | val = 3; | ||
870 | break; | ||
871 | } | ||
872 | |||
873 | if (val == ~0) /* Catch errors in offset */ | ||
874 | *type_to_addr = 0; | ||
875 | else | ||
876 | *type_to_addr = src_reg_addr; | ||
877 | *field_mask = mask; | ||
878 | |||
879 | return val; | ||
880 | } | ||
881 | |||
882 | static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) | ||
883 | { | 641 | { |
884 | void __iomem * reg; | 642 | const struct clksel *clks; |
885 | u32 src_sel, src_off, field_val, field_mask, reg_val, rate; | 643 | const struct clksel_rate *clkr; |
886 | int ret = -EINVAL; | ||
887 | |||
888 | if (unlikely(clk->flags & CONFIG_PARTICIPANT)) | ||
889 | return ret; | ||
890 | |||
891 | if (clk->flags & SRC_SEL_MASK) { /* On-chip SEL collection */ | ||
892 | src_sel = (SRC_RATE_SEL_MASK & clk->flags); | ||
893 | src_off = clk->src_offset; | ||
894 | |||
895 | if (src_sel == 0) | ||
896 | goto set_parent_error; | ||
897 | |||
898 | field_val = omap2_get_src_field(&src_sel, src_off, new_parent, | ||
899 | &field_mask); | ||
900 | |||
901 | reg = (void __iomem *)src_sel; | ||
902 | |||
903 | if (clk->usecount > 0) | ||
904 | _omap2_clk_disable(clk); | ||
905 | |||
906 | /* Set new source value (previous dividers if any in effect) */ | ||
907 | reg_val = __raw_readl(reg) & ~(field_mask << src_off); | ||
908 | reg_val |= (field_val << src_off); | ||
909 | __raw_writel(reg_val, reg); | ||
910 | wmb(); | ||
911 | 644 | ||
912 | if (clk->flags & DELAYED_APP) { | 645 | *parent_div = 0; |
913 | __raw_writel(0x1, (void __iomem *)&PRCM_CLKCFG_CTRL); | 646 | *src_addr = 0; |
914 | wmb(); | ||
915 | } | ||
916 | if (clk->usecount > 0) | ||
917 | _omap2_clk_enable(clk); | ||
918 | |||
919 | clk->parent = new_parent; | ||
920 | 647 | ||
921 | /* SRC_RATE_SEL_MASK clocks follow their parents rates.*/ | 648 | clks = omap2_get_clksel_by_parent(clk, src_clk); |
922 | if ((new_parent == &core_ck) && (clk == &dss1_fck)) | 649 | if (clks == NULL) |
923 | clk->rate = new_parent->rate / 0x10; | 650 | return 0; |
924 | else | ||
925 | clk->rate = new_parent->rate; | ||
926 | 651 | ||
927 | if (unlikely(clk->flags & RATE_PROPAGATES)) | 652 | for (clkr = clks->rates; clkr->div; clkr++) { |
928 | propagate_rate(clk); | 653 | if (clkr->flags & (cpu_mask | DEFAULT_RATE)) |
654 | break; /* Found the default rate for this platform */ | ||
655 | } | ||
929 | 656 | ||
657 | if (!clkr->div) { | ||
658 | printk(KERN_ERR "clock: Could not find default rate for " | ||
659 | "clock %s parent %s\n", clk->name, | ||
660 | src_clk->parent->name); | ||
930 | return 0; | 661 | return 0; |
931 | } else { | ||
932 | clk->parent = new_parent; | ||
933 | rate = new_parent->rate; | ||
934 | omap2_clk_set_rate(clk, rate); | ||
935 | ret = 0; | ||
936 | } | 662 | } |
937 | 663 | ||
938 | set_parent_error: | 664 | /* Should never happen. Add a clksel mask to the struct clk. */ |
939 | return ret; | 665 | WARN_ON(clk->clksel_mask == 0); |
666 | |||
667 | *field_mask = clk->clksel_mask; | ||
668 | *src_addr = clk->clksel_reg; | ||
669 | *parent_div = clkr->div; | ||
670 | |||
671 | return clkr->val; | ||
940 | } | 672 | } |
941 | 673 | ||
942 | /* Sets basic clocks based on the specified rate */ | 674 | int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) |
943 | static int omap2_select_table_rate(struct clk * clk, unsigned long rate) | ||
944 | { | 675 | { |
945 | u32 flags, cur_rate, done_rate, bypass = 0; | 676 | void __iomem *src_addr; |
946 | u8 cpu_mask = 0; | 677 | u32 field_val, field_mask, reg_val, parent_div; |
947 | struct prcm_config *prcm; | ||
948 | unsigned long found_speed = 0; | ||
949 | 678 | ||
950 | if (clk != &virt_prcm_set) | 679 | if (unlikely(clk->flags & CONFIG_PARTICIPANT)) |
951 | return -EINVAL; | 680 | return -EINVAL; |
952 | 681 | ||
953 | /* FIXME: Change cpu_is_omap2420() to cpu_is_omap242x() */ | 682 | if (!clk->clksel) |
954 | if (cpu_is_omap2420()) | ||
955 | cpu_mask = RATE_IN_242X; | ||
956 | else if (cpu_is_omap2430()) | ||
957 | cpu_mask = RATE_IN_243X; | ||
958 | |||
959 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { | ||
960 | if (!(prcm->flags & cpu_mask)) | ||
961 | continue; | ||
962 | |||
963 | if (prcm->xtal_speed != sys_ck.rate) | ||
964 | continue; | ||
965 | |||
966 | if (prcm->mpu_speed <= rate) { | ||
967 | found_speed = prcm->mpu_speed; | ||
968 | break; | ||
969 | } | ||
970 | } | ||
971 | |||
972 | if (!found_speed) { | ||
973 | printk(KERN_INFO "Could not set MPU rate to %luMHz\n", | ||
974 | rate / 1000000); | ||
975 | return -EINVAL; | 683 | return -EINVAL; |
976 | } | ||
977 | |||
978 | curr_prcm_set = prcm; | ||
979 | cur_rate = omap2_get_dpll_rate(&dpll_ck); | ||
980 | |||
981 | if (prcm->dpll_speed == cur_rate / 2) { | ||
982 | omap2_reprogram_sdrc(PRCM_HALF_SPEED, 1); | ||
983 | } else if (prcm->dpll_speed == cur_rate * 2) { | ||
984 | omap2_reprogram_sdrc(PRCM_FULL_SPEED, 1); | ||
985 | } else if (prcm->dpll_speed != cur_rate) { | ||
986 | local_irq_save(flags); | ||
987 | 684 | ||
988 | if (prcm->dpll_speed == prcm->xtal_speed) | 685 | field_val = omap2_clksel_get_src_field(&src_addr, new_parent, |
989 | bypass = 1; | 686 | &field_mask, clk, &parent_div); |
687 | if (src_addr == 0) | ||
688 | return -EINVAL; | ||
990 | 689 | ||
991 | if ((prcm->cm_clksel2_pll & 0x3) == 2) | 690 | if (clk->usecount > 0) |
992 | done_rate = PRCM_FULL_SPEED; | 691 | _omap2_clk_disable(clk); |
993 | else | ||
994 | done_rate = PRCM_HALF_SPEED; | ||
995 | 692 | ||
996 | /* MPU divider */ | 693 | /* Set new source value (previous dividers if any in effect) */ |
997 | CM_CLKSEL_MPU = prcm->cm_clksel_mpu; | 694 | reg_val = __raw_readl(src_addr) & ~field_mask; |
695 | reg_val |= (field_val << __ffs(field_mask)); | ||
696 | __raw_writel(reg_val, src_addr); | ||
697 | wmb(); | ||
998 | 698 | ||
999 | /* dsp + iva1 div(2420), iva2.1(2430) */ | 699 | if (clk->flags & DELAYED_APP && cpu_is_omap24xx()) { |
1000 | CM_CLKSEL_DSP = prcm->cm_clksel_dsp; | 700 | __raw_writel(OMAP24XX_VALID_CONFIG, OMAP24XX_PRCM_CLKCFG_CTRL); |
701 | wmb(); | ||
702 | } | ||
1001 | 703 | ||
1002 | CM_CLKSEL_GFX = prcm->cm_clksel_gfx; | 704 | if (clk->usecount > 0) |
705 | _omap2_clk_enable(clk); | ||
1003 | 706 | ||
1004 | /* Major subsystem dividers */ | 707 | clk->parent = new_parent; |
1005 | CM_CLKSEL1_CORE = prcm->cm_clksel1_core; | ||
1006 | if (cpu_is_omap2430()) | ||
1007 | CM_CLKSEL_MDM = prcm->cm_clksel_mdm; | ||
1008 | 708 | ||
1009 | /* x2 to enter init_mem */ | 709 | /* CLKSEL clocks follow their parents' rates, divided by a divisor */ |
1010 | omap2_reprogram_sdrc(PRCM_FULL_SPEED, 1); | 710 | clk->rate = new_parent->rate; |
1011 | 711 | ||
1012 | omap2_set_prcm(prcm->cm_clksel1_pll, prcm->base_sdrc_rfr, | 712 | if (parent_div > 0) |
1013 | bypass); | 713 | clk->rate /= parent_div; |
1014 | 714 | ||
1015 | omap2_init_memory_params(omap2_dll_force_needed()); | 715 | pr_debug("clock: set parent of %s to %s (new rate %ld)\n", |
1016 | omap2_reprogram_sdrc(done_rate, 0); | 716 | clk->name, clk->parent->name, clk->rate); |
1017 | 717 | ||
1018 | local_irq_restore(flags); | 718 | if (unlikely(clk->flags & RATE_PROPAGATES)) |
1019 | } | 719 | propagate_rate(clk); |
1020 | omap2_clksel_recalc(&dpll_ck); | ||
1021 | 720 | ||
1022 | return 0; | 721 | return 0; |
1023 | } | 722 | } |
@@ -1027,150 +726,17 @@ static int omap2_select_table_rate(struct clk * clk, unsigned long rate) | |||
1027 | *-------------------------------------------------------------------------*/ | 726 | *-------------------------------------------------------------------------*/ |
1028 | 727 | ||
1029 | #ifdef CONFIG_OMAP_RESET_CLOCKS | 728 | #ifdef CONFIG_OMAP_RESET_CLOCKS |
1030 | static void __init omap2_clk_disable_unused(struct clk *clk) | 729 | void omap2_clk_disable_unused(struct clk *clk) |
1031 | { | 730 | { |
1032 | u32 regval32; | 731 | u32 regval32, v; |
732 | |||
733 | v = (clk->flags & INVERT_ENABLE) ? (1 << clk->enable_bit) : 0; | ||
1033 | 734 | ||
1034 | regval32 = __raw_readl(clk->enable_reg); | 735 | regval32 = __raw_readl(clk->enable_reg); |
1035 | if ((regval32 & (1 << clk->enable_bit)) == 0) | 736 | if ((regval32 & (1 << clk->enable_bit)) == v) |
1036 | return; | 737 | return; |
1037 | 738 | ||
1038 | printk(KERN_INFO "Disabling unused clock \"%s\"\n", clk->name); | 739 | printk(KERN_INFO "Disabling unused clock \"%s\"\n", clk->name); |
1039 | _omap2_clk_disable(clk); | 740 | _omap2_clk_disable(clk); |
1040 | } | 741 | } |
1041 | #else | ||
1042 | #define omap2_clk_disable_unused NULL | ||
1043 | #endif | 742 | #endif |
1044 | |||
1045 | static struct clk_functions omap2_clk_functions = { | ||
1046 | .clk_enable = omap2_clk_enable, | ||
1047 | .clk_disable = omap2_clk_disable, | ||
1048 | .clk_round_rate = omap2_clk_round_rate, | ||
1049 | .clk_set_rate = omap2_clk_set_rate, | ||
1050 | .clk_set_parent = omap2_clk_set_parent, | ||
1051 | .clk_disable_unused = omap2_clk_disable_unused, | ||
1052 | }; | ||
1053 | |||
1054 | static void __init omap2_get_crystal_rate(struct clk *osc, struct clk *sys) | ||
1055 | { | ||
1056 | u32 div, aplls, sclk = 13000000; | ||
1057 | |||
1058 | aplls = CM_CLKSEL1_PLL; | ||
1059 | aplls &= ((1 << 23) | (1 << 24) | (1 << 25)); | ||
1060 | aplls >>= 23; /* Isolate field, 0,2,3 */ | ||
1061 | |||
1062 | if (aplls == 0) | ||
1063 | sclk = 19200000; | ||
1064 | else if (aplls == 2) | ||
1065 | sclk = 13000000; | ||
1066 | else if (aplls == 3) | ||
1067 | sclk = 12000000; | ||
1068 | |||
1069 | div = PRCM_CLKSRC_CTRL; | ||
1070 | div &= ((1 << 7) | (1 << 6)); | ||
1071 | div >>= sys->rate_offset; | ||
1072 | |||
1073 | osc->rate = sclk * div; | ||
1074 | sys->rate = sclk; | ||
1075 | } | ||
1076 | |||
1077 | /* | ||
1078 | * Set clocks for bypass mode for reboot to work. | ||
1079 | */ | ||
1080 | void omap2_clk_prepare_for_reboot(void) | ||
1081 | { | ||
1082 | u32 rate; | ||
1083 | |||
1084 | if (vclk == NULL || sclk == NULL) | ||
1085 | return; | ||
1086 | |||
1087 | rate = clk_get_rate(sclk); | ||
1088 | clk_set_rate(vclk, rate); | ||
1089 | } | ||
1090 | |||
1091 | /* | ||
1092 | * Switch the MPU rate if specified on cmdline. | ||
1093 | * We cannot do this early until cmdline is parsed. | ||
1094 | */ | ||
1095 | static int __init omap2_clk_arch_init(void) | ||
1096 | { | ||
1097 | if (!mpurate) | ||
1098 | return -EINVAL; | ||
1099 | |||
1100 | if (omap2_select_table_rate(&virt_prcm_set, mpurate)) | ||
1101 | printk(KERN_ERR "Could not find matching MPU rate\n"); | ||
1102 | |||
1103 | propagate_rate(&osc_ck); /* update main root fast */ | ||
1104 | propagate_rate(&func_32k_ck); /* update main root slow */ | ||
1105 | |||
1106 | printk(KERN_INFO "Switched to new clocking rate (Crystal/DPLL/MPU): " | ||
1107 | "%ld.%01ld/%ld/%ld MHz\n", | ||
1108 | (sys_ck.rate / 1000000), (sys_ck.rate / 100000) % 10, | ||
1109 | (dpll_ck.rate / 1000000), (mpu_ck.rate / 1000000)) ; | ||
1110 | |||
1111 | return 0; | ||
1112 | } | ||
1113 | arch_initcall(omap2_clk_arch_init); | ||
1114 | |||
1115 | int __init omap2_clk_init(void) | ||
1116 | { | ||
1117 | struct prcm_config *prcm; | ||
1118 | struct clk ** clkp; | ||
1119 | u32 clkrate; | ||
1120 | |||
1121 | clk_init(&omap2_clk_functions); | ||
1122 | omap2_get_crystal_rate(&osc_ck, &sys_ck); | ||
1123 | |||
1124 | for (clkp = onchip_clks; clkp < onchip_clks + ARRAY_SIZE(onchip_clks); | ||
1125 | clkp++) { | ||
1126 | |||
1127 | if ((*clkp)->flags & CLOCK_IN_OMAP242X && cpu_is_omap2420()) { | ||
1128 | clk_register(*clkp); | ||
1129 | continue; | ||
1130 | } | ||
1131 | |||
1132 | if ((*clkp)->flags & CLOCK_IN_OMAP243X && cpu_is_omap2430()) { | ||
1133 | clk_register(*clkp); | ||
1134 | continue; | ||
1135 | } | ||
1136 | } | ||
1137 | |||
1138 | /* Check the MPU rate set by bootloader */ | ||
1139 | clkrate = omap2_get_dpll_rate(&dpll_ck); | ||
1140 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { | ||
1141 | if (prcm->xtal_speed != sys_ck.rate) | ||
1142 | continue; | ||
1143 | if (prcm->dpll_speed <= clkrate) | ||
1144 | break; | ||
1145 | } | ||
1146 | curr_prcm_set = prcm; | ||
1147 | |||
1148 | propagate_rate(&osc_ck); /* update main root fast */ | ||
1149 | propagate_rate(&func_32k_ck); /* update main root slow */ | ||
1150 | |||
1151 | printk(KERN_INFO "Clocking rate (Crystal/DPLL/MPU): " | ||
1152 | "%ld.%01ld/%ld/%ld MHz\n", | ||
1153 | (sys_ck.rate / 1000000), (sys_ck.rate / 100000) % 10, | ||
1154 | (dpll_ck.rate / 1000000), (mpu_ck.rate / 1000000)) ; | ||
1155 | |||
1156 | /* | ||
1157 | * Only enable those clocks we will need, let the drivers | ||
1158 | * enable other clocks as necessary | ||
1159 | */ | ||
1160 | clk_enable(&sync_32k_ick); | ||
1161 | clk_enable(&omapctrl_ick); | ||
1162 | |||
1163 | /* Force the APLLs always active. The clocks are idled | ||
1164 | * automatically by hardware. */ | ||
1165 | clk_enable(&apll96_ck); | ||
1166 | clk_enable(&apll54_ck); | ||
1167 | |||
1168 | if (cpu_is_omap2430()) | ||
1169 | clk_enable(&sdrc_ick); | ||
1170 | |||
1171 | /* Avoid sleeping sleeping during omap2_clk_prepare_for_reboot() */ | ||
1172 | vclk = clk_get(NULL, "virt_prcm_set"); | ||
1173 | sclk = clk_get(NULL, "sys_ck"); | ||
1174 | |||
1175 | return 0; | ||
1176 | } | ||
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h index 4f791866b910..d5980a9e09a4 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h | |||
@@ -1,13 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-omap24xx/clock.h | 2 | * linux/arch/arm/mach-omap2/clock.h |
3 | * | 3 | * |
4 | * Copyright (C) 2005 Texas Instruments Inc. | 4 | * Copyright (C) 2005-2008 Texas Instruments, Inc. |
5 | * Richard Woodruff <r-woodruff2@ti.com> | 5 | * Copyright (C) 2004-2008 Nokia Corporation |
6 | * Created for OMAP2. | ||
7 | * | 6 | * |
8 | * Copyright (C) 2004 Nokia corporation | 7 | * Contacts: |
9 | * Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com> | 8 | * Richard Woodruff <r-woodruff2@ti.com> |
10 | * Based on clocks.h by Tony Lindgren, Gordon McNutt and RidgeRun, Inc | 9 | * Paul Walmsley |
11 | * | 10 | * |
12 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
13 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
@@ -17,2095 +16,53 @@ | |||
17 | #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_H | 16 | #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_H |
18 | #define __ARCH_ARM_MACH_OMAP2_CLOCK_H | 17 | #define __ARCH_ARM_MACH_OMAP2_CLOCK_H |
19 | 18 | ||
20 | static void omap2_sys_clk_recalc(struct clk * clk); | 19 | #include <asm/arch/clock.h> |
21 | static void omap2_clksel_recalc(struct clk * clk); | ||
22 | static void omap2_followparent_recalc(struct clk * clk); | ||
23 | static void omap2_propagate_rate(struct clk * clk); | ||
24 | static void omap2_mpu_recalc(struct clk * clk); | ||
25 | static int omap2_select_table_rate(struct clk * clk, unsigned long rate); | ||
26 | static long omap2_round_to_table_rate(struct clk * clk, unsigned long rate); | ||
27 | static void omap2_clk_disable(struct clk *clk); | ||
28 | static void omap2_sys_clk_recalc(struct clk * clk); | ||
29 | static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val); | ||
30 | static u32 omap2_clksel_get_divisor(struct clk *clk); | ||
31 | |||
32 | |||
33 | #define RATE_IN_242X (1 << 0) | ||
34 | #define RATE_IN_243X (1 << 1) | ||
35 | |||
36 | /* Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. | ||
37 | * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,CM_CLKSEL_DSP | ||
38 | * CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL CM_CLKSEL2_PLL, CM_CLKSEL_MDM | ||
39 | */ | ||
40 | struct prcm_config { | ||
41 | unsigned long xtal_speed; /* crystal rate */ | ||
42 | unsigned long dpll_speed; /* dpll: out*xtal*M/(N-1)table_recalc */ | ||
43 | unsigned long mpu_speed; /* speed of MPU */ | ||
44 | unsigned long cm_clksel_mpu; /* mpu divider */ | ||
45 | unsigned long cm_clksel_dsp; /* dsp+iva1 div(2420), iva2.1(2430) */ | ||
46 | unsigned long cm_clksel_gfx; /* gfx dividers */ | ||
47 | unsigned long cm_clksel1_core; /* major subsystem dividers */ | ||
48 | unsigned long cm_clksel1_pll; /* m,n */ | ||
49 | unsigned long cm_clksel2_pll; /* dpllx1 or x2 out */ | ||
50 | unsigned long cm_clksel_mdm; /* modem dividers 2430 only */ | ||
51 | unsigned long base_sdrc_rfr; /* base refresh timing for a set */ | ||
52 | unsigned char flags; | ||
53 | }; | ||
54 | |||
55 | /* Mask for clksel which support parent settign in set_rate */ | ||
56 | #define SRC_SEL_MASK (CM_CORE_SEL1 | CM_CORE_SEL2 | CM_WKUP_SEL1 | \ | ||
57 | CM_PLL_SEL1 | CM_PLL_SEL2 | CM_SYSCLKOUT_SEL1) | ||
58 | |||
59 | /* Mask for clksel regs which support rate operations */ | ||
60 | #define SRC_RATE_SEL_MASK (CM_MPU_SEL1 | CM_DSP_SEL1 | CM_GFX_SEL1 | \ | ||
61 | CM_MODEM_SEL1 | CM_CORE_SEL1 | CM_CORE_SEL2 | \ | ||
62 | CM_WKUP_SEL1 | CM_PLL_SEL1 | CM_PLL_SEL2 | \ | ||
63 | CM_SYSCLKOUT_SEL1) | ||
64 | |||
65 | /* | ||
66 | * The OMAP2 processor can be run at several discrete 'PRCM configurations'. | ||
67 | * These configurations are characterized by voltage and speed for clocks. | ||
68 | * The device is only validated for certain combinations. One way to express | ||
69 | * these combinations is via the 'ratio's' which the clocks operate with | ||
70 | * respect to each other. These ratio sets are for a given voltage/DPLL | ||
71 | * setting. All configurations can be described by a DPLL setting and a ratio | ||
72 | * There are 3 ratio sets for the 2430 and X ratio sets for 2420. | ||
73 | * | ||
74 | * 2430 differs from 2420 in that there are no more phase synchronizers used. | ||
75 | * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs | ||
76 | * 2430 (iva2.1, NOdsp, mdm) | ||
77 | */ | ||
78 | |||
79 | /* Core fields for cm_clksel, not ratio governed */ | ||
80 | #define RX_CLKSEL_DSS1 (0x10 << 8) | ||
81 | #define RX_CLKSEL_DSS2 (0x0 << 13) | ||
82 | #define RX_CLKSEL_SSI (0x5 << 20) | ||
83 | |||
84 | /*------------------------------------------------------------------------- | ||
85 | * Voltage/DPLL ratios | ||
86 | *-------------------------------------------------------------------------*/ | ||
87 | |||
88 | /* 2430 Ratio's, 2430-Ratio Config 1 */ | ||
89 | #define R1_CLKSEL_L3 (4 << 0) | ||
90 | #define R1_CLKSEL_L4 (2 << 5) | ||
91 | #define R1_CLKSEL_USB (4 << 25) | ||
92 | #define R1_CM_CLKSEL1_CORE_VAL R1_CLKSEL_USB | RX_CLKSEL_SSI | \ | ||
93 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
94 | R1_CLKSEL_L4 | R1_CLKSEL_L3 | ||
95 | #define R1_CLKSEL_MPU (2 << 0) | ||
96 | #define R1_CM_CLKSEL_MPU_VAL R1_CLKSEL_MPU | ||
97 | #define R1_CLKSEL_DSP (2 << 0) | ||
98 | #define R1_CLKSEL_DSP_IF (2 << 5) | ||
99 | #define R1_CM_CLKSEL_DSP_VAL R1_CLKSEL_DSP | R1_CLKSEL_DSP_IF | ||
100 | #define R1_CLKSEL_GFX (2 << 0) | ||
101 | #define R1_CM_CLKSEL_GFX_VAL R1_CLKSEL_GFX | ||
102 | #define R1_CLKSEL_MDM (4 << 0) | ||
103 | #define R1_CM_CLKSEL_MDM_VAL R1_CLKSEL_MDM | ||
104 | |||
105 | /* 2430-Ratio Config 2 */ | ||
106 | #define R2_CLKSEL_L3 (6 << 0) | ||
107 | #define R2_CLKSEL_L4 (2 << 5) | ||
108 | #define R2_CLKSEL_USB (2 << 25) | ||
109 | #define R2_CM_CLKSEL1_CORE_VAL R2_CLKSEL_USB | RX_CLKSEL_SSI | \ | ||
110 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
111 | R2_CLKSEL_L4 | R2_CLKSEL_L3 | ||
112 | #define R2_CLKSEL_MPU (2 << 0) | ||
113 | #define R2_CM_CLKSEL_MPU_VAL R2_CLKSEL_MPU | ||
114 | #define R2_CLKSEL_DSP (2 << 0) | ||
115 | #define R2_CLKSEL_DSP_IF (3 << 5) | ||
116 | #define R2_CM_CLKSEL_DSP_VAL R2_CLKSEL_DSP | R2_CLKSEL_DSP_IF | ||
117 | #define R2_CLKSEL_GFX (2 << 0) | ||
118 | #define R2_CM_CLKSEL_GFX_VAL R2_CLKSEL_GFX | ||
119 | #define R2_CLKSEL_MDM (6 << 0) | ||
120 | #define R2_CM_CLKSEL_MDM_VAL R2_CLKSEL_MDM | ||
121 | |||
122 | /* 2430-Ratio Bootm (BYPASS) */ | ||
123 | #define RB_CLKSEL_L3 (1 << 0) | ||
124 | #define RB_CLKSEL_L4 (1 << 5) | ||
125 | #define RB_CLKSEL_USB (1 << 25) | ||
126 | #define RB_CM_CLKSEL1_CORE_VAL RB_CLKSEL_USB | RX_CLKSEL_SSI | \ | ||
127 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
128 | RB_CLKSEL_L4 | RB_CLKSEL_L3 | ||
129 | #define RB_CLKSEL_MPU (1 << 0) | ||
130 | #define RB_CM_CLKSEL_MPU_VAL RB_CLKSEL_MPU | ||
131 | #define RB_CLKSEL_DSP (1 << 0) | ||
132 | #define RB_CLKSEL_DSP_IF (1 << 5) | ||
133 | #define RB_CM_CLKSEL_DSP_VAL RB_CLKSEL_DSP | RB_CLKSEL_DSP_IF | ||
134 | #define RB_CLKSEL_GFX (1 << 0) | ||
135 | #define RB_CM_CLKSEL_GFX_VAL RB_CLKSEL_GFX | ||
136 | #define RB_CLKSEL_MDM (1 << 0) | ||
137 | #define RB_CM_CLKSEL_MDM_VAL RB_CLKSEL_MDM | ||
138 | |||
139 | /* 2420 Ratio Equivalents */ | ||
140 | #define RXX_CLKSEL_VLYNQ (0x12 << 15) | ||
141 | #define RXX_CLKSEL_SSI (0x8 << 20) | ||
142 | |||
143 | /* 2420-PRCM III 532MHz core */ | ||
144 | #define RIII_CLKSEL_L3 (4 << 0) /* 133MHz */ | ||
145 | #define RIII_CLKSEL_L4 (2 << 5) /* 66.5MHz */ | ||
146 | #define RIII_CLKSEL_USB (4 << 25) /* 33.25MHz */ | ||
147 | #define RIII_CM_CLKSEL1_CORE_VAL RIII_CLKSEL_USB | RXX_CLKSEL_SSI | \ | ||
148 | RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \ | ||
149 | RX_CLKSEL_DSS1 | RIII_CLKSEL_L4 | \ | ||
150 | RIII_CLKSEL_L3 | ||
151 | #define RIII_CLKSEL_MPU (2 << 0) /* 266MHz */ | ||
152 | #define RIII_CM_CLKSEL_MPU_VAL RIII_CLKSEL_MPU | ||
153 | #define RIII_CLKSEL_DSP (3 << 0) /* c5x - 177.3MHz */ | ||
154 | #define RIII_CLKSEL_DSP_IF (2 << 5) /* c5x - 88.67MHz */ | ||
155 | #define RIII_SYNC_DSP (1 << 7) /* Enable sync */ | ||
156 | #define RIII_CLKSEL_IVA (6 << 8) /* iva1 - 88.67MHz */ | ||
157 | #define RIII_SYNC_IVA (1 << 13) /* Enable sync */ | ||
158 | #define RIII_CM_CLKSEL_DSP_VAL RIII_SYNC_IVA | RIII_CLKSEL_IVA | \ | ||
159 | RIII_SYNC_DSP | RIII_CLKSEL_DSP_IF | \ | ||
160 | RIII_CLKSEL_DSP | ||
161 | #define RIII_CLKSEL_GFX (2 << 0) /* 66.5MHz */ | ||
162 | #define RIII_CM_CLKSEL_GFX_VAL RIII_CLKSEL_GFX | ||
163 | |||
164 | /* 2420-PRCM II 600MHz core */ | ||
165 | #define RII_CLKSEL_L3 (6 << 0) /* 100MHz */ | ||
166 | #define RII_CLKSEL_L4 (2 << 5) /* 50MHz */ | ||
167 | #define RII_CLKSEL_USB (2 << 25) /* 50MHz */ | ||
168 | #define RII_CM_CLKSEL1_CORE_VAL RII_CLKSEL_USB | \ | ||
169 | RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \ | ||
170 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
171 | RII_CLKSEL_L4 | RII_CLKSEL_L3 | ||
172 | #define RII_CLKSEL_MPU (2 << 0) /* 300MHz */ | ||
173 | #define RII_CM_CLKSEL_MPU_VAL RII_CLKSEL_MPU | ||
174 | #define RII_CLKSEL_DSP (3 << 0) /* c5x - 200MHz */ | ||
175 | #define RII_CLKSEL_DSP_IF (2 << 5) /* c5x - 100MHz */ | ||
176 | #define RII_SYNC_DSP (0 << 7) /* Bypass sync */ | ||
177 | #define RII_CLKSEL_IVA (6 << 8) /* iva1 - 200MHz */ | ||
178 | #define RII_SYNC_IVA (0 << 13) /* Bypass sync */ | ||
179 | #define RII_CM_CLKSEL_DSP_VAL RII_SYNC_IVA | RII_CLKSEL_IVA | \ | ||
180 | RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \ | ||
181 | RII_CLKSEL_DSP | ||
182 | #define RII_CLKSEL_GFX (2 << 0) /* 50MHz */ | ||
183 | #define RII_CM_CLKSEL_GFX_VAL RII_CLKSEL_GFX | ||
184 | |||
185 | /* 2420-PRCM VII (boot) */ | ||
186 | #define RVII_CLKSEL_L3 (1 << 0) | ||
187 | #define RVII_CLKSEL_L4 (1 << 5) | ||
188 | #define RVII_CLKSEL_DSS1 (1 << 8) | ||
189 | #define RVII_CLKSEL_DSS2 (0 << 13) | ||
190 | #define RVII_CLKSEL_VLYNQ (1 << 15) | ||
191 | #define RVII_CLKSEL_SSI (1 << 20) | ||
192 | #define RVII_CLKSEL_USB (1 << 25) | ||
193 | |||
194 | #define RVII_CM_CLKSEL1_CORE_VAL RVII_CLKSEL_USB | RVII_CLKSEL_SSI | \ | ||
195 | RVII_CLKSEL_VLYNQ | RVII_CLKSEL_DSS2 | \ | ||
196 | RVII_CLKSEL_DSS1 | RVII_CLKSEL_L4 | RVII_CLKSEL_L3 | ||
197 | |||
198 | #define RVII_CLKSEL_MPU (1 << 0) /* all divide by 1 */ | ||
199 | #define RVII_CM_CLKSEL_MPU_VAL RVII_CLKSEL_MPU | ||
200 | 20 | ||
201 | #define RVII_CLKSEL_DSP (1 << 0) | 21 | int omap2_clk_enable(struct clk *clk); |
202 | #define RVII_CLKSEL_DSP_IF (1 << 5) | 22 | void omap2_clk_disable(struct clk *clk); |
203 | #define RVII_SYNC_DSP (0 << 7) | 23 | long omap2_clk_round_rate(struct clk *clk, unsigned long rate); |
204 | #define RVII_CLKSEL_IVA (1 << 8) | 24 | int omap2_clk_set_rate(struct clk *clk, unsigned long rate); |
205 | #define RVII_SYNC_IVA (0 << 13) | 25 | int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent); |
206 | #define RVII_CM_CLKSEL_DSP_VAL RVII_SYNC_IVA | RVII_CLKSEL_IVA | RVII_SYNC_DSP | \ | ||
207 | RVII_CLKSEL_DSP_IF | RVII_CLKSEL_DSP | ||
208 | |||
209 | #define RVII_CLKSEL_GFX (1 << 0) | ||
210 | #define RVII_CM_CLKSEL_GFX_VAL RVII_CLKSEL_GFX | ||
211 | |||
212 | /*------------------------------------------------------------------------- | ||
213 | * 2430 Target modes: Along with each configuration the CPU has several | ||
214 | * modes which goes along with them. Modes mainly are the addition of | ||
215 | * describe DPLL combinations to go along with a ratio. | ||
216 | *-------------------------------------------------------------------------*/ | ||
217 | |||
218 | /* Hardware governed */ | ||
219 | #define MX_48M_SRC (0 << 3) | ||
220 | #define MX_54M_SRC (0 << 5) | ||
221 | #define MX_APLLS_CLIKIN_12 (3 << 23) | ||
222 | #define MX_APLLS_CLIKIN_13 (2 << 23) | ||
223 | #define MX_APLLS_CLIKIN_19_2 (0 << 23) | ||
224 | |||
225 | /* | ||
226 | * 2430 - standalone, 2*ref*M/(n+1), M/N is for exactness not relock speed | ||
227 | * #2 (ratio1) baseport-target | ||
228 | * #5a (ratio1) baseport-target, target DPLL = 266*2 = 532MHz | ||
229 | */ | ||
230 | #define M5A_DPLL_MULT_12 (133 << 12) | ||
231 | #define M5A_DPLL_DIV_12 (5 << 8) | ||
232 | #define M5A_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
233 | M5A_DPLL_DIV_12 | M5A_DPLL_MULT_12 | \ | ||
234 | MX_APLLS_CLIKIN_12 | ||
235 | #define M5A_DPLL_MULT_13 (266 << 12) | ||
236 | #define M5A_DPLL_DIV_13 (12 << 8) | ||
237 | #define M5A_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
238 | M5A_DPLL_DIV_13 | M5A_DPLL_MULT_13 | \ | ||
239 | MX_APLLS_CLIKIN_13 | ||
240 | #define M5A_DPLL_MULT_19 (180 << 12) | ||
241 | #define M5A_DPLL_DIV_19 (12 << 8) | ||
242 | #define M5A_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
243 | M5A_DPLL_DIV_19 | M5A_DPLL_MULT_19 | \ | ||
244 | MX_APLLS_CLIKIN_19_2 | ||
245 | /* #5b (ratio1) target DPLL = 200*2 = 400MHz */ | ||
246 | #define M5B_DPLL_MULT_12 (50 << 12) | ||
247 | #define M5B_DPLL_DIV_12 (2 << 8) | ||
248 | #define M5B_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
249 | M5B_DPLL_DIV_12 | M5B_DPLL_MULT_12 | \ | ||
250 | MX_APLLS_CLIKIN_12 | ||
251 | #define M5B_DPLL_MULT_13 (200 << 12) | ||
252 | #define M5B_DPLL_DIV_13 (12 << 8) | ||
253 | |||
254 | #define M5B_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
255 | M5B_DPLL_DIV_13 | M5B_DPLL_MULT_13 | \ | ||
256 | MX_APLLS_CLIKIN_13 | ||
257 | #define M5B_DPLL_MULT_19 (125 << 12) | ||
258 | #define M5B_DPLL_DIV_19 (31 << 8) | ||
259 | #define M5B_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
260 | M5B_DPLL_DIV_19 | M5B_DPLL_MULT_19 | \ | ||
261 | MX_APLLS_CLIKIN_19_2 | ||
262 | /* | ||
263 | * #4 (ratio2) | ||
264 | * #3 (ratio2) baseport-target, target DPLL = 330*2 = 660MHz | ||
265 | */ | ||
266 | #define M3_DPLL_MULT_12 (55 << 12) | ||
267 | #define M3_DPLL_DIV_12 (1 << 8) | ||
268 | #define M3_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
269 | M3_DPLL_DIV_12 | M3_DPLL_MULT_12 | \ | ||
270 | MX_APLLS_CLIKIN_12 | ||
271 | #define M3_DPLL_MULT_13 (330 << 12) | ||
272 | #define M3_DPLL_DIV_13 (12 << 8) | ||
273 | #define M3_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
274 | M3_DPLL_DIV_13 | M3_DPLL_MULT_13 | \ | ||
275 | MX_APLLS_CLIKIN_13 | ||
276 | #define M3_DPLL_MULT_19 (275 << 12) | ||
277 | #define M3_DPLL_DIV_19 (15 << 8) | ||
278 | #define M3_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
279 | M3_DPLL_DIV_19 | M3_DPLL_MULT_19 | \ | ||
280 | MX_APLLS_CLIKIN_19_2 | ||
281 | /* boot (boot) */ | ||
282 | #define MB_DPLL_MULT (1 << 12) | ||
283 | #define MB_DPLL_DIV (0 << 8) | ||
284 | #define MB_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | MB_DPLL_DIV |\ | ||
285 | MB_DPLL_MULT | MX_APLLS_CLIKIN_12 | ||
286 | |||
287 | #define MB_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | MB_DPLL_DIV |\ | ||
288 | MB_DPLL_MULT | MX_APLLS_CLIKIN_13 | ||
289 | |||
290 | #define MB_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | MB_DPLL_DIV |\ | ||
291 | MB_DPLL_MULT | MX_APLLS_CLIKIN_19 | ||
292 | |||
293 | /* | ||
294 | * 2430 - chassis (sedna) | ||
295 | * 165 (ratio1) same as above #2 | ||
296 | * 150 (ratio1) | ||
297 | * 133 (ratio2) same as above #4 | ||
298 | * 110 (ratio2) same as above #3 | ||
299 | * 104 (ratio2) | ||
300 | * boot (boot) | ||
301 | */ | ||
302 | |||
303 | /* | ||
304 | * 2420 Equivalent - mode registers | ||
305 | * PRCM II , target DPLL = 2*300MHz = 600MHz | ||
306 | */ | ||
307 | #define MII_DPLL_MULT_12 (50 << 12) | ||
308 | #define MII_DPLL_DIV_12 (1 << 8) | ||
309 | #define MII_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
310 | MII_DPLL_DIV_12 | MII_DPLL_MULT_12 | \ | ||
311 | MX_APLLS_CLIKIN_12 | ||
312 | #define MII_DPLL_MULT_13 (300 << 12) | ||
313 | #define MII_DPLL_DIV_13 (12 << 8) | ||
314 | #define MII_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
315 | MII_DPLL_DIV_13 | MII_DPLL_MULT_13 | \ | ||
316 | MX_APLLS_CLIKIN_13 | ||
317 | |||
318 | /* PRCM III target DPLL = 2*266 = 532MHz*/ | ||
319 | #define MIII_DPLL_MULT_12 (133 << 12) | ||
320 | #define MIII_DPLL_DIV_12 (5 << 8) | ||
321 | #define MIII_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
322 | MIII_DPLL_DIV_12 | MIII_DPLL_MULT_12 | \ | ||
323 | MX_APLLS_CLIKIN_12 | ||
324 | #define MIII_DPLL_MULT_13 (266 << 12) | ||
325 | #define MIII_DPLL_DIV_13 (12 << 8) | ||
326 | #define MIII_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
327 | MIII_DPLL_DIV_13 | MIII_DPLL_MULT_13 | \ | ||
328 | MX_APLLS_CLIKIN_13 | ||
329 | |||
330 | /* PRCM VII (boot bypass) */ | ||
331 | #define MVII_CM_CLKSEL1_PLL_12_VAL MB_CM_CLKSEL1_PLL_12_VAL | ||
332 | #define MVII_CM_CLKSEL1_PLL_13_VAL MB_CM_CLKSEL1_PLL_13_VAL | ||
333 | |||
334 | /* High and low operation value */ | ||
335 | #define MX_CLKSEL2_PLL_2x_VAL (2 << 0) | ||
336 | #define MX_CLKSEL2_PLL_1x_VAL (1 << 0) | ||
337 | |||
338 | /* | ||
339 | * These represent optimal values for common parts, it won't work for all. | ||
340 | * As long as you scale down, most parameters are still work, they just | ||
341 | * become sub-optimal. The RFR value goes in the opposite direction. If you | ||
342 | * don't adjust it down as your clock period increases the refresh interval | ||
343 | * will not be met. Setting all parameters for complete worst case may work, | ||
344 | * but may cut memory performance by 2x. Due to errata the DLLs need to be | ||
345 | * unlocked and their value needs run time calibration. A dynamic call is | ||
346 | * need for that as no single right value exists acorss production samples. | ||
347 | * | ||
348 | * Only the FULL speed values are given. Current code is such that rate | ||
349 | * changes must be made at DPLLoutx2. The actual value adjustment for low | ||
350 | * frequency operation will be handled by omap_set_performance() | ||
351 | * | ||
352 | * By having the boot loader boot up in the fastest L4 speed available likely | ||
353 | * will result in something which you can switch between. | ||
354 | */ | ||
355 | #define V24XX_SDRC_RFR_CTRL_133MHz (0x0003de00 | 1) | ||
356 | #define V24XX_SDRC_RFR_CTRL_100MHz (0x0002da01 | 1) | ||
357 | #define V24XX_SDRC_RFR_CTRL_110MHz (0x0002da01 | 1) /* Need to calc */ | ||
358 | #define V24XX_SDRC_RFR_CTRL_BYPASS (0x00005000 | 1) /* Need to calc */ | ||
359 | |||
360 | /* MPU speed defines */ | ||
361 | #define S12M 12000000 | ||
362 | #define S13M 13000000 | ||
363 | #define S19M 19200000 | ||
364 | #define S26M 26000000 | ||
365 | #define S100M 100000000 | ||
366 | #define S133M 133000000 | ||
367 | #define S150M 150000000 | ||
368 | #define S165M 165000000 | ||
369 | #define S200M 200000000 | ||
370 | #define S266M 266000000 | ||
371 | #define S300M 300000000 | ||
372 | #define S330M 330000000 | ||
373 | #define S400M 400000000 | ||
374 | #define S532M 532000000 | ||
375 | #define S600M 600000000 | ||
376 | #define S660M 660000000 | ||
377 | |||
378 | /*------------------------------------------------------------------------- | ||
379 | * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. | ||
380 | * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU, | ||
381 | * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL, | ||
382 | * CM_CLKSEL2_PLL, CM_CLKSEL_MDM | ||
383 | * | ||
384 | * Filling in table based on H4 boards and 2430-SDPs variants available. | ||
385 | * There are quite a few more rates combinations which could be defined. | ||
386 | * | ||
387 | * When multiple values are defined the start up will try and choose the | ||
388 | * fastest one. If a 'fast' value is defined, then automatically, the /2 | ||
389 | * one should be included as it can be used. Generally having more that | ||
390 | * one fast set does not make sense, as static timings need to be changed | ||
391 | * to change the set. The exception is the bypass setting which is | ||
392 | * availble for low power bypass. | ||
393 | * | ||
394 | * Note: This table needs to be sorted, fastest to slowest. | ||
395 | *-------------------------------------------------------------------------*/ | ||
396 | static struct prcm_config rate_table[] = { | ||
397 | /* PRCM II - FAST */ | ||
398 | {S12M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL, /* 300MHz ARM */ | ||
399 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
400 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL, | ||
401 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_100MHz, | ||
402 | RATE_IN_242X}, | ||
403 | |||
404 | {S13M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL, /* 300MHz ARM */ | ||
405 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
406 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL, | ||
407 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_100MHz, | ||
408 | RATE_IN_242X}, | ||
409 | |||
410 | /* PRCM III - FAST */ | ||
411 | {S12M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ | ||
412 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
413 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL, | ||
414 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_133MHz, | ||
415 | RATE_IN_242X}, | ||
416 | |||
417 | {S13M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ | ||
418 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
419 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL, | ||
420 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_133MHz, | ||
421 | RATE_IN_242X}, | ||
422 | |||
423 | /* PRCM II - SLOW */ | ||
424 | {S12M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL, /* 150MHz ARM */ | ||
425 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
426 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL, | ||
427 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_100MHz, | ||
428 | RATE_IN_242X}, | ||
429 | |||
430 | {S13M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL, /* 150MHz ARM */ | ||
431 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
432 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL, | ||
433 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_100MHz, | ||
434 | RATE_IN_242X}, | ||
435 | |||
436 | /* PRCM III - SLOW */ | ||
437 | {S12M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ | ||
438 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
439 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL, | ||
440 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_133MHz, | ||
441 | RATE_IN_242X}, | ||
442 | |||
443 | {S13M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ | ||
444 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
445 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL, | ||
446 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_133MHz, | ||
447 | RATE_IN_242X}, | ||
448 | |||
449 | /* PRCM-VII (boot-bypass) */ | ||
450 | {S12M, S12M, S12M, RVII_CM_CLKSEL_MPU_VAL, /* 12MHz ARM*/ | ||
451 | RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL, | ||
452 | RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_12_VAL, | ||
453 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_BYPASS, | ||
454 | RATE_IN_242X}, | ||
455 | |||
456 | /* PRCM-VII (boot-bypass) */ | ||
457 | {S13M, S13M, S13M, RVII_CM_CLKSEL_MPU_VAL, /* 13MHz ARM */ | ||
458 | RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL, | ||
459 | RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_13_VAL, | ||
460 | MX_CLKSEL2_PLL_2x_VAL, 0, V24XX_SDRC_RFR_CTRL_BYPASS, | ||
461 | RATE_IN_242X}, | ||
462 | |||
463 | /* PRCM #3 - ratio2 (ES2) - FAST */ | ||
464 | {S13M, S660M, S330M, R2_CM_CLKSEL_MPU_VAL, /* 330MHz ARM */ | ||
465 | R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL, | ||
466 | R2_CM_CLKSEL1_CORE_VAL, M3_CM_CLKSEL1_PLL_13_VAL, | ||
467 | MX_CLKSEL2_PLL_2x_VAL, R2_CM_CLKSEL_MDM_VAL, | ||
468 | V24XX_SDRC_RFR_CTRL_110MHz, | ||
469 | RATE_IN_243X}, | ||
470 | |||
471 | /* PRCM #5a - ratio1 - FAST */ | ||
472 | {S13M, S532M, S266M, R1_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ | ||
473 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
474 | R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL, | ||
475 | MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
476 | V24XX_SDRC_RFR_CTRL_133MHz, | ||
477 | RATE_IN_243X}, | ||
478 | |||
479 | /* PRCM #5b - ratio1 - FAST */ | ||
480 | {S13M, S400M, S200M, R1_CM_CLKSEL_MPU_VAL, /* 200MHz ARM */ | ||
481 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
482 | R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL, | ||
483 | MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
484 | V24XX_SDRC_RFR_CTRL_100MHz, | ||
485 | RATE_IN_243X}, | ||
486 | |||
487 | /* PRCM #3 - ratio2 (ES2) - SLOW */ | ||
488 | {S13M, S330M, S165M, R2_CM_CLKSEL_MPU_VAL, /* 165MHz ARM */ | ||
489 | R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL, | ||
490 | R2_CM_CLKSEL1_CORE_VAL, M3_CM_CLKSEL1_PLL_13_VAL, | ||
491 | MX_CLKSEL2_PLL_1x_VAL, R2_CM_CLKSEL_MDM_VAL, | ||
492 | V24XX_SDRC_RFR_CTRL_110MHz, | ||
493 | RATE_IN_243X}, | ||
494 | |||
495 | /* PRCM #5a - ratio1 - SLOW */ | ||
496 | {S13M, S266M, S133M, R1_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ | ||
497 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
498 | R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL, | ||
499 | MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
500 | V24XX_SDRC_RFR_CTRL_133MHz, | ||
501 | RATE_IN_243X}, | ||
502 | |||
503 | /* PRCM #5b - ratio1 - SLOW*/ | ||
504 | {S13M, S200M, S100M, R1_CM_CLKSEL_MPU_VAL, /* 100MHz ARM */ | ||
505 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
506 | R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL, | ||
507 | MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
508 | V24XX_SDRC_RFR_CTRL_100MHz, | ||
509 | RATE_IN_243X}, | ||
510 | |||
511 | /* PRCM-boot/bypass */ | ||
512 | {S13M, S13M, S13M, RB_CM_CLKSEL_MPU_VAL, /* 13Mhz */ | ||
513 | RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL, | ||
514 | RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_13_VAL, | ||
515 | MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL, | ||
516 | V24XX_SDRC_RFR_CTRL_BYPASS, | ||
517 | RATE_IN_243X}, | ||
518 | |||
519 | /* PRCM-boot/bypass */ | ||
520 | {S12M, S12M, S12M, RB_CM_CLKSEL_MPU_VAL, /* 12Mhz */ | ||
521 | RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL, | ||
522 | RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_12_VAL, | ||
523 | MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL, | ||
524 | V24XX_SDRC_RFR_CTRL_BYPASS, | ||
525 | RATE_IN_243X}, | ||
526 | |||
527 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | ||
528 | }; | ||
529 | |||
530 | /*------------------------------------------------------------------------- | ||
531 | * 24xx clock tree. | ||
532 | * | ||
533 | * NOTE:In many cases here we are assigning a 'default' parent. In many | ||
534 | * cases the parent is selectable. The get/set parent calls will also | ||
535 | * switch sources. | ||
536 | * | ||
537 | * Many some clocks say always_enabled, but they can be auto idled for | ||
538 | * power savings. They will always be available upon clock request. | ||
539 | * | ||
540 | * Several sources are given initial rates which may be wrong, this will | ||
541 | * be fixed up in the init func. | ||
542 | * | ||
543 | * Things are broadly separated below by clock domains. It is | ||
544 | * noteworthy that most periferals have dependencies on multiple clock | ||
545 | * domains. Many get their interface clocks from the L4 domain, but get | ||
546 | * functional clocks from fixed sources or other core domain derived | ||
547 | * clocks. | ||
548 | *-------------------------------------------------------------------------*/ | ||
549 | |||
550 | /* Base external input clocks */ | ||
551 | static struct clk func_32k_ck = { | ||
552 | .name = "func_32k_ck", | ||
553 | .rate = 32000, | ||
554 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
555 | RATE_FIXED | ALWAYS_ENABLED, | ||
556 | }; | ||
557 | |||
558 | /* Typical 12/13MHz in standalone mode, will be 26Mhz in chassis mode */ | ||
559 | static struct clk osc_ck = { /* (*12, *13, 19.2, *26, 38.4)MHz */ | ||
560 | .name = "osc_ck", | ||
561 | .rate = 26000000, /* fixed up in clock init */ | ||
562 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
563 | RATE_FIXED | RATE_PROPAGATES, | ||
564 | }; | ||
565 | |||
566 | /* With out modem likely 12MHz, with modem likely 13MHz */ | ||
567 | static struct clk sys_ck = { /* (*12, *13, 19.2, 26, 38.4)MHz */ | ||
568 | .name = "sys_ck", /* ~ ref_clk also */ | ||
569 | .parent = &osc_ck, | ||
570 | .rate = 13000000, | ||
571 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
572 | RATE_FIXED | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
573 | .rate_offset = 6, /* sysclkdiv 1 or 2, already handled or no boot */ | ||
574 | .recalc = &omap2_sys_clk_recalc, | ||
575 | }; | ||
576 | |||
577 | static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */ | ||
578 | .name = "alt_ck", | ||
579 | .rate = 54000000, | ||
580 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
581 | RATE_FIXED | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
582 | .recalc = &omap2_propagate_rate, | ||
583 | }; | ||
584 | |||
585 | /* | ||
586 | * Analog domain root source clocks | ||
587 | */ | ||
588 | |||
589 | /* dpll_ck, is broken out in to special cases through clksel */ | ||
590 | static struct clk dpll_ck = { | ||
591 | .name = "dpll_ck", | ||
592 | .parent = &sys_ck, /* Can be func_32k also */ | ||
593 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
594 | RATE_PROPAGATES | RATE_CKCTL | CM_PLL_SEL1, | ||
595 | .recalc = &omap2_clksel_recalc, | ||
596 | }; | ||
597 | |||
598 | static struct clk apll96_ck = { | ||
599 | .name = "apll96_ck", | ||
600 | .parent = &sys_ck, | ||
601 | .rate = 96000000, | ||
602 | .flags = CLOCK_IN_OMAP242X |CLOCK_IN_OMAP243X | | ||
603 | RATE_FIXED | RATE_PROPAGATES, | ||
604 | .enable_reg = (void __iomem *)&CM_CLKEN_PLL, | ||
605 | .enable_bit = 0x2, | ||
606 | .recalc = &omap2_propagate_rate, | ||
607 | }; | ||
608 | |||
609 | static struct clk apll54_ck = { | ||
610 | .name = "apll54_ck", | ||
611 | .parent = &sys_ck, | ||
612 | .rate = 54000000, | ||
613 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
614 | RATE_FIXED | RATE_PROPAGATES, | ||
615 | .enable_reg = (void __iomem *)&CM_CLKEN_PLL, | ||
616 | .enable_bit = 0x6, | ||
617 | .recalc = &omap2_propagate_rate, | ||
618 | }; | ||
619 | 26 | ||
620 | /* | 27 | #ifdef CONFIG_OMAP_RESET_CLOCKS |
621 | * PRCM digital base sources | 28 | void omap2_clk_disable_unused(struct clk *clk); |
622 | */ | 29 | #else |
623 | static struct clk func_54m_ck = { | 30 | #define omap2_clk_disable_unused NULL |
624 | .name = "func_54m_ck", | 31 | #endif |
625 | .parent = &apll54_ck, /* can also be alt_clk */ | ||
626 | .rate = 54000000, | ||
627 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
628 | RATE_FIXED | CM_PLL_SEL1 | RATE_PROPAGATES, | ||
629 | .src_offset = 5, | ||
630 | .enable_reg = (void __iomem *)&CM_CLKEN_PLL, | ||
631 | .enable_bit = 0xff, | ||
632 | .recalc = &omap2_propagate_rate, | ||
633 | }; | ||
634 | |||
635 | static struct clk core_ck = { | ||
636 | .name = "core_ck", | ||
637 | .parent = &dpll_ck, /* can also be 32k */ | ||
638 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
639 | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
640 | .recalc = &omap2_propagate_rate, | ||
641 | }; | ||
642 | |||
643 | static struct clk sleep_ck = { /* sys_clk or 32k */ | ||
644 | .name = "sleep_ck", | ||
645 | .parent = &func_32k_ck, | ||
646 | .rate = 32000, | ||
647 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
648 | .recalc = &omap2_propagate_rate, | ||
649 | }; | ||
650 | |||
651 | static struct clk func_96m_ck = { | ||
652 | .name = "func_96m_ck", | ||
653 | .parent = &apll96_ck, | ||
654 | .rate = 96000000, | ||
655 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
656 | RATE_FIXED | RATE_PROPAGATES, | ||
657 | .enable_reg = (void __iomem *)&CM_CLKEN_PLL, | ||
658 | .enable_bit = 0xff, | ||
659 | .recalc = &omap2_propagate_rate, | ||
660 | }; | ||
661 | |||
662 | static struct clk func_48m_ck = { | ||
663 | .name = "func_48m_ck", | ||
664 | .parent = &apll96_ck, /* 96M or Alt */ | ||
665 | .rate = 48000000, | ||
666 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
667 | RATE_FIXED | CM_PLL_SEL1 | RATE_PROPAGATES, | ||
668 | .src_offset = 3, | ||
669 | .enable_reg = (void __iomem *)&CM_CLKEN_PLL, | ||
670 | .enable_bit = 0xff, | ||
671 | .recalc = &omap2_propagate_rate, | ||
672 | }; | ||
673 | |||
674 | static struct clk func_12m_ck = { | ||
675 | .name = "func_12m_ck", | ||
676 | .parent = &func_48m_ck, | ||
677 | .rate = 12000000, | ||
678 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
679 | RATE_FIXED | RATE_PROPAGATES, | ||
680 | .recalc = &omap2_propagate_rate, | ||
681 | .enable_reg = (void __iomem *)&CM_CLKEN_PLL, | ||
682 | .enable_bit = 0xff, | ||
683 | }; | ||
684 | |||
685 | /* Secure timer, only available in secure mode */ | ||
686 | static struct clk wdt1_osc_ck = { | ||
687 | .name = "ck_wdt1_osc", | ||
688 | .parent = &osc_ck, | ||
689 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
690 | .recalc = &omap2_followparent_recalc, | ||
691 | }; | ||
692 | |||
693 | static struct clk sys_clkout = { | ||
694 | .name = "sys_clkout", | ||
695 | .parent = &func_54m_ck, | ||
696 | .rate = 54000000, | ||
697 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
698 | CM_SYSCLKOUT_SEL1 | RATE_CKCTL, | ||
699 | .src_offset = 0, | ||
700 | .enable_reg = (void __iomem *)&PRCM_CLKOUT_CTRL, | ||
701 | .enable_bit = 7, | ||
702 | .rate_offset = 3, | ||
703 | .recalc = &omap2_clksel_recalc, | ||
704 | }; | ||
705 | |||
706 | /* In 2430, new in 2420 ES2 */ | ||
707 | static struct clk sys_clkout2 = { | ||
708 | .name = "sys_clkout2", | ||
709 | .parent = &func_54m_ck, | ||
710 | .rate = 54000000, | ||
711 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
712 | CM_SYSCLKOUT_SEL1 | RATE_CKCTL, | ||
713 | .src_offset = 8, | ||
714 | .enable_reg = (void __iomem *)&PRCM_CLKOUT_CTRL, | ||
715 | .enable_bit = 15, | ||
716 | .rate_offset = 11, | ||
717 | .recalc = &omap2_clksel_recalc, | ||
718 | }; | ||
719 | |||
720 | static struct clk emul_ck = { | ||
721 | .name = "emul_ck", | ||
722 | .parent = &func_54m_ck, | ||
723 | .flags = CLOCK_IN_OMAP242X, | ||
724 | .enable_reg = (void __iomem *)&PRCM_CLKEMUL_CTRL, | ||
725 | .enable_bit = 0, | ||
726 | .recalc = &omap2_propagate_rate, | ||
727 | |||
728 | }; | ||
729 | |||
730 | /* | ||
731 | * MPU clock domain | ||
732 | * Clocks: | ||
733 | * MPU_FCLK, MPU_ICLK | ||
734 | * INT_M_FCLK, INT_M_I_CLK | ||
735 | * | ||
736 | * - Individual clocks are hardware managed. | ||
737 | * - Base divider comes from: CM_CLKSEL_MPU | ||
738 | * | ||
739 | */ | ||
740 | static struct clk mpu_ck = { /* Control cpu */ | ||
741 | .name = "mpu_ck", | ||
742 | .parent = &core_ck, | ||
743 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | RATE_CKCTL | | ||
744 | ALWAYS_ENABLED | CM_MPU_SEL1 | DELAYED_APP | | ||
745 | CONFIG_PARTICIPANT | RATE_PROPAGATES, | ||
746 | .rate_offset = 0, /* bits 0-4 */ | ||
747 | .recalc = &omap2_clksel_recalc, | ||
748 | }; | ||
749 | |||
750 | /* | ||
751 | * DSP (2430-IVA2.1) (2420-UMA+IVA1) clock domain | ||
752 | * Clocks: | ||
753 | * 2430: IVA2.1_FCLK, IVA2.1_ICLK | ||
754 | * 2420: UMA_FCLK, UMA_ICLK, IVA_MPU, IVA_COP | ||
755 | */ | ||
756 | static struct clk iva2_1_fck = { | ||
757 | .name = "iva2_1_fck", | ||
758 | .parent = &core_ck, | ||
759 | .flags = CLOCK_IN_OMAP243X | RATE_CKCTL | CM_DSP_SEL1 | | ||
760 | DELAYED_APP | RATE_PROPAGATES | | ||
761 | CONFIG_PARTICIPANT, | ||
762 | .rate_offset = 0, | ||
763 | .enable_reg = (void __iomem *)&CM_FCLKEN_DSP, | ||
764 | .enable_bit = 0, | ||
765 | .recalc = &omap2_clksel_recalc, | ||
766 | }; | ||
767 | |||
768 | static struct clk iva2_1_ick = { | ||
769 | .name = "iva2_1_ick", | ||
770 | .parent = &iva2_1_fck, | ||
771 | .flags = CLOCK_IN_OMAP243X | RATE_CKCTL | CM_DSP_SEL1 | | ||
772 | DELAYED_APP | CONFIG_PARTICIPANT, | ||
773 | .rate_offset = 5, | ||
774 | .recalc = &omap2_clksel_recalc, | ||
775 | }; | ||
776 | |||
777 | /* | ||
778 | * Won't be too specific here. The core clock comes into this block | ||
779 | * it is divided then tee'ed. One branch goes directly to xyz enable | ||
780 | * controls. The other branch gets further divided by 2 then possibly | ||
781 | * routed into a synchronizer and out of clocks abc. | ||
782 | */ | ||
783 | static struct clk dsp_fck = { | ||
784 | .name = "dsp_fck", | ||
785 | .parent = &core_ck, | ||
786 | .flags = CLOCK_IN_OMAP242X | RATE_CKCTL | CM_DSP_SEL1 | | ||
787 | DELAYED_APP | CONFIG_PARTICIPANT | RATE_PROPAGATES, | ||
788 | .rate_offset = 0, | ||
789 | .enable_reg = (void __iomem *)&CM_FCLKEN_DSP, | ||
790 | .enable_bit = 0, | ||
791 | .recalc = &omap2_clksel_recalc, | ||
792 | }; | ||
793 | |||
794 | static struct clk dsp_ick = { | ||
795 | .name = "dsp_ick", /* apparently ipi and isp */ | ||
796 | .parent = &dsp_fck, | ||
797 | .flags = CLOCK_IN_OMAP242X | RATE_CKCTL | CM_DSP_SEL1 | | ||
798 | DELAYED_APP | CONFIG_PARTICIPANT, | ||
799 | .rate_offset = 5, | ||
800 | .enable_reg = (void __iomem *)&CM_ICLKEN_DSP, | ||
801 | .enable_bit = 1, /* for ipi */ | ||
802 | .recalc = &omap2_clksel_recalc, | ||
803 | }; | ||
804 | |||
805 | static struct clk iva1_ifck = { | ||
806 | .name = "iva1_ifck", | ||
807 | .parent = &core_ck, | ||
808 | .flags = CLOCK_IN_OMAP242X | CM_DSP_SEL1 | RATE_CKCTL | | ||
809 | CONFIG_PARTICIPANT | RATE_PROPAGATES | DELAYED_APP, | ||
810 | .rate_offset= 8, | ||
811 | .enable_reg = (void __iomem *)&CM_FCLKEN_DSP, | ||
812 | .enable_bit = 10, | ||
813 | .recalc = &omap2_clksel_recalc, | ||
814 | }; | ||
815 | |||
816 | /* IVA1 mpu/int/i/f clocks are /2 of parent */ | ||
817 | static struct clk iva1_mpu_int_ifck = { | ||
818 | .name = "iva1_mpu_int_ifck", | ||
819 | .parent = &iva1_ifck, | ||
820 | .flags = CLOCK_IN_OMAP242X | RATE_CKCTL | CM_DSP_SEL1, | ||
821 | .enable_reg = (void __iomem *)&CM_FCLKEN_DSP, | ||
822 | .enable_bit = 8, | ||
823 | .recalc = &omap2_clksel_recalc, | ||
824 | }; | ||
825 | |||
826 | /* | ||
827 | * L3 clock domain | ||
828 | * L3 clocks are used for both interface and functional clocks to | ||
829 | * multiple entities. Some of these clocks are completely managed | ||
830 | * by hardware, and some others allow software control. Hardware | ||
831 | * managed ones general are based on directly CLK_REQ signals and | ||
832 | * various auto idle settings. The functional spec sets many of these | ||
833 | * as 'tie-high' for their enables. | ||
834 | * | ||
835 | * I-CLOCKS: | ||
836 | * L3-Interconnect, SMS, GPMC, SDRC, OCM_RAM, OCM_ROM, SDMA | ||
837 | * CAM, HS-USB. | ||
838 | * F-CLOCK | ||
839 | * SSI. | ||
840 | * | ||
841 | * GPMC memories and SDRC have timing and clock sensitive registers which | ||
842 | * may very well need notification when the clock changes. Currently for low | ||
843 | * operating points, these are taken care of in sleep.S. | ||
844 | */ | ||
845 | static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */ | ||
846 | .name = "core_l3_ck", | ||
847 | .parent = &core_ck, | ||
848 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
849 | RATE_CKCTL | ALWAYS_ENABLED | CM_CORE_SEL1 | | ||
850 | DELAYED_APP | CONFIG_PARTICIPANT | | ||
851 | RATE_PROPAGATES, | ||
852 | .rate_offset = 0, | ||
853 | .recalc = &omap2_clksel_recalc, | ||
854 | }; | ||
855 | |||
856 | static struct clk usb_l4_ick = { /* FS-USB interface clock */ | ||
857 | .name = "usb_l4_ick", | ||
858 | .parent = &core_l3_ck, | ||
859 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
860 | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP | | ||
861 | CONFIG_PARTICIPANT, | ||
862 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
863 | .enable_bit = 0, | ||
864 | .rate_offset = 25, | ||
865 | .recalc = &omap2_clksel_recalc, | ||
866 | }; | ||
867 | |||
868 | /* | ||
869 | * SSI is in L3 management domain, its direct parent is core not l3, | ||
870 | * many core power domain entities are grouped into the L3 clock | ||
871 | * domain. | ||
872 | * SSI_SSR_FCLK, SSI_SST_FCLK, SSI_L4_CLIK | ||
873 | * | ||
874 | * ssr = core/1/2/3/4/5, sst = 1/2 ssr. | ||
875 | */ | ||
876 | static struct clk ssi_ssr_sst_fck = { | ||
877 | .name = "ssi_fck", | ||
878 | .parent = &core_ck, | ||
879 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
880 | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP, | ||
881 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, /* bit 1 */ | ||
882 | .enable_bit = 1, | ||
883 | .rate_offset = 20, | ||
884 | .recalc = &omap2_clksel_recalc, | ||
885 | }; | ||
886 | |||
887 | /* | ||
888 | * GFX clock domain | ||
889 | * Clocks: | ||
890 | * GFX_FCLK, GFX_ICLK | ||
891 | * GFX_CG1(2d), GFX_CG2(3d) | ||
892 | * | ||
893 | * GFX_FCLK runs from L3, and is divided by (1,2,3,4) | ||
894 | * The 2d and 3d clocks run at a hardware determined | ||
895 | * divided value of fclk. | ||
896 | * | ||
897 | */ | ||
898 | static struct clk gfx_3d_fck = { | ||
899 | .name = "gfx_3d_fck", | ||
900 | .parent = &core_l3_ck, | ||
901 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
902 | RATE_CKCTL | CM_GFX_SEL1, | ||
903 | .enable_reg = (void __iomem *)&CM_FCLKEN_GFX, | ||
904 | .enable_bit = 2, | ||
905 | .rate_offset= 0, | ||
906 | .recalc = &omap2_clksel_recalc, | ||
907 | }; | ||
908 | |||
909 | static struct clk gfx_2d_fck = { | ||
910 | .name = "gfx_2d_fck", | ||
911 | .parent = &core_l3_ck, | ||
912 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
913 | RATE_CKCTL | CM_GFX_SEL1, | ||
914 | .enable_reg = (void __iomem *)&CM_FCLKEN_GFX, | ||
915 | .enable_bit = 1, | ||
916 | .rate_offset= 0, | ||
917 | .recalc = &omap2_clksel_recalc, | ||
918 | }; | ||
919 | |||
920 | static struct clk gfx_ick = { | ||
921 | .name = "gfx_ick", /* From l3 */ | ||
922 | .parent = &core_l3_ck, | ||
923 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
924 | RATE_CKCTL, | ||
925 | .enable_reg = (void __iomem *)&CM_ICLKEN_GFX, /* bit 0 */ | ||
926 | .enable_bit = 0, | ||
927 | .recalc = &omap2_followparent_recalc, | ||
928 | }; | ||
929 | |||
930 | /* | ||
931 | * Modem clock domain (2430) | ||
932 | * CLOCKS: | ||
933 | * MDM_OSC_CLK | ||
934 | * MDM_ICLK | ||
935 | */ | ||
936 | static struct clk mdm_ick = { /* used both as a ick and fck */ | ||
937 | .name = "mdm_ick", | ||
938 | .parent = &core_ck, | ||
939 | .flags = CLOCK_IN_OMAP243X | RATE_CKCTL | CM_MODEM_SEL1 | | ||
940 | DELAYED_APP | CONFIG_PARTICIPANT, | ||
941 | .rate_offset = 0, | ||
942 | .enable_reg = (void __iomem *)&CM_ICLKEN_MDM, | ||
943 | .enable_bit = 0, | ||
944 | .recalc = &omap2_clksel_recalc, | ||
945 | }; | ||
946 | |||
947 | static struct clk mdm_osc_ck = { | ||
948 | .name = "mdm_osc_ck", | ||
949 | .rate = 26000000, | ||
950 | .parent = &osc_ck, | ||
951 | .flags = CLOCK_IN_OMAP243X | RATE_FIXED, | ||
952 | .enable_reg = (void __iomem *)&CM_FCLKEN_MDM, | ||
953 | .enable_bit = 1, | ||
954 | .recalc = &omap2_followparent_recalc, | ||
955 | }; | ||
956 | |||
957 | /* | ||
958 | * L4 clock management domain | ||
959 | * | ||
960 | * This domain contains lots of interface clocks from the L4 interface, some | ||
961 | * functional clocks. Fixed APLL functional source clocks are managed in | ||
962 | * this domain. | ||
963 | */ | ||
964 | static struct clk l4_ck = { /* used both as an ick and fck */ | ||
965 | .name = "l4_ck", | ||
966 | .parent = &core_l3_ck, | ||
967 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
968 | RATE_CKCTL | ALWAYS_ENABLED | CM_CORE_SEL1 | | ||
969 | DELAYED_APP | RATE_PROPAGATES, | ||
970 | .rate_offset = 5, | ||
971 | .recalc = &omap2_clksel_recalc, | ||
972 | }; | ||
973 | |||
974 | static struct clk ssi_l4_ick = { | ||
975 | .name = "ssi_l4_ick", | ||
976 | .parent = &l4_ck, | ||
977 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | RATE_CKCTL, | ||
978 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, /* bit 1 */ | ||
979 | .enable_bit = 1, | ||
980 | .recalc = &omap2_followparent_recalc, | ||
981 | }; | ||
982 | |||
983 | /* | ||
984 | * DSS clock domain | ||
985 | * CLOCKs: | ||
986 | * DSS_L4_ICLK, DSS_L3_ICLK, | ||
987 | * DSS_CLK1, DSS_CLK2, DSS_54MHz_CLK | ||
988 | * | ||
989 | * DSS is both initiator and target. | ||
990 | */ | ||
991 | static struct clk dss_ick = { /* Enables both L3,L4 ICLK's */ | ||
992 | .name = "dss_ick", | ||
993 | .parent = &l4_ck, /* really both l3 and l4 */ | ||
994 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | RATE_CKCTL, | ||
995 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
996 | .enable_bit = 0, | ||
997 | .recalc = &omap2_followparent_recalc, | ||
998 | }; | ||
999 | |||
1000 | static struct clk dss1_fck = { | ||
1001 | .name = "dss1_fck", | ||
1002 | .parent = &core_ck, /* Core or sys */ | ||
1003 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1004 | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP, | ||
1005 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1006 | .enable_bit = 0, | ||
1007 | .rate_offset = 8, | ||
1008 | .src_offset = 8, | ||
1009 | .recalc = &omap2_clksel_recalc, | ||
1010 | }; | ||
1011 | |||
1012 | static struct clk dss2_fck = { /* Alt clk used in power management */ | ||
1013 | .name = "dss2_fck", | ||
1014 | .parent = &sys_ck, /* fixed at sys_ck or 48MHz */ | ||
1015 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1016 | RATE_CKCTL | CM_CORE_SEL1 | RATE_FIXED | | ||
1017 | DELAYED_APP, | ||
1018 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1019 | .enable_bit = 1, | ||
1020 | .src_offset = 13, | ||
1021 | .recalc = &omap2_followparent_recalc, | ||
1022 | }; | ||
1023 | |||
1024 | static struct clk dss_54m_fck = { /* Alt clk used in power management */ | ||
1025 | .name = "dss_54m_fck", /* 54m tv clk */ | ||
1026 | .parent = &func_54m_ck, | ||
1027 | .rate = 54000000, | ||
1028 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1029 | RATE_FIXED | RATE_PROPAGATES, | ||
1030 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1031 | .enable_bit = 2, | ||
1032 | .recalc = &omap2_propagate_rate, | ||
1033 | }; | ||
1034 | |||
1035 | /* | ||
1036 | * CORE power domain ICLK & FCLK defines. | ||
1037 | * Many of the these can have more than one possible parent. Entries | ||
1038 | * here will likely have an L4 interface parent, and may have multiple | ||
1039 | * functional clock parents. | ||
1040 | */ | ||
1041 | static struct clk gpt1_ick = { | ||
1042 | .name = "gpt1_ick", | ||
1043 | .parent = &l4_ck, | ||
1044 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1045 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, /* Bit0 */ | ||
1046 | .enable_bit = 0, | ||
1047 | .recalc = &omap2_followparent_recalc, | ||
1048 | }; | ||
1049 | |||
1050 | static struct clk gpt1_fck = { | ||
1051 | .name = "gpt1_fck", | ||
1052 | .parent = &func_32k_ck, | ||
1053 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1054 | CM_WKUP_SEL1, | ||
1055 | .enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, /* Bit0 */ | ||
1056 | .enable_bit = 0, | ||
1057 | .src_offset = 0, | ||
1058 | .recalc = &omap2_followparent_recalc, | ||
1059 | }; | ||
1060 | |||
1061 | static struct clk gpt2_ick = { | ||
1062 | .name = "gpt2_ick", | ||
1063 | .parent = &l4_ck, | ||
1064 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1065 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* Bit4 */ | ||
1066 | .enable_bit = 4, | ||
1067 | .recalc = &omap2_followparent_recalc, | ||
1068 | }; | ||
1069 | |||
1070 | static struct clk gpt2_fck = { | ||
1071 | .name = "gpt2_fck", | ||
1072 | .parent = &func_32k_ck, | ||
1073 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1074 | CM_CORE_SEL2, | ||
1075 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1076 | .enable_bit = 4, | ||
1077 | .src_offset = 2, | ||
1078 | .recalc = &omap2_followparent_recalc, | ||
1079 | }; | ||
1080 | |||
1081 | static struct clk gpt3_ick = { | ||
1082 | .name = "gpt3_ick", | ||
1083 | .parent = &l4_ck, | ||
1084 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1085 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* Bit5 */ | ||
1086 | .enable_bit = 5, | ||
1087 | .recalc = &omap2_followparent_recalc, | ||
1088 | }; | ||
1089 | |||
1090 | static struct clk gpt3_fck = { | ||
1091 | .name = "gpt3_fck", | ||
1092 | .parent = &func_32k_ck, | ||
1093 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1094 | CM_CORE_SEL2, | ||
1095 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1096 | .enable_bit = 5, | ||
1097 | .src_offset = 4, | ||
1098 | .recalc = &omap2_followparent_recalc, | ||
1099 | }; | ||
1100 | |||
1101 | static struct clk gpt4_ick = { | ||
1102 | .name = "gpt4_ick", | ||
1103 | .parent = &l4_ck, | ||
1104 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1105 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* Bit6 */ | ||
1106 | .enable_bit = 6, | ||
1107 | .recalc = &omap2_followparent_recalc, | ||
1108 | }; | ||
1109 | |||
1110 | static struct clk gpt4_fck = { | ||
1111 | .name = "gpt4_fck", | ||
1112 | .parent = &func_32k_ck, | ||
1113 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1114 | CM_CORE_SEL2, | ||
1115 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1116 | .enable_bit = 6, | ||
1117 | .src_offset = 6, | ||
1118 | .recalc = &omap2_followparent_recalc, | ||
1119 | }; | ||
1120 | |||
1121 | static struct clk gpt5_ick = { | ||
1122 | .name = "gpt5_ick", | ||
1123 | .parent = &l4_ck, | ||
1124 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1125 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* Bit7 */ | ||
1126 | .enable_bit = 7, | ||
1127 | .recalc = &omap2_followparent_recalc, | ||
1128 | }; | ||
1129 | |||
1130 | static struct clk gpt5_fck = { | ||
1131 | .name = "gpt5_fck", | ||
1132 | .parent = &func_32k_ck, | ||
1133 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1134 | CM_CORE_SEL2, | ||
1135 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1136 | .enable_bit = 7, | ||
1137 | .src_offset = 8, | ||
1138 | .recalc = &omap2_followparent_recalc, | ||
1139 | }; | ||
1140 | |||
1141 | static struct clk gpt6_ick = { | ||
1142 | .name = "gpt6_ick", | ||
1143 | .parent = &l4_ck, | ||
1144 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1145 | .enable_bit = 8, | ||
1146 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit8 */ | ||
1147 | .recalc = &omap2_followparent_recalc, | ||
1148 | }; | ||
1149 | |||
1150 | static struct clk gpt6_fck = { | ||
1151 | .name = "gpt6_fck", | ||
1152 | .parent = &func_32k_ck, | ||
1153 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1154 | CM_CORE_SEL2, | ||
1155 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1156 | .enable_bit = 8, | ||
1157 | .src_offset = 10, | ||
1158 | .recalc = &omap2_followparent_recalc, | ||
1159 | }; | ||
1160 | |||
1161 | static struct clk gpt7_ick = { | ||
1162 | .name = "gpt7_ick", | ||
1163 | .parent = &l4_ck, | ||
1164 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1165 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit9 */ | ||
1166 | .enable_bit = 9, | ||
1167 | .recalc = &omap2_followparent_recalc, | ||
1168 | }; | ||
1169 | |||
1170 | static struct clk gpt7_fck = { | ||
1171 | .name = "gpt7_fck", | ||
1172 | .parent = &func_32k_ck, | ||
1173 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1174 | CM_CORE_SEL2, | ||
1175 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1176 | .enable_bit = 9, | ||
1177 | .src_offset = 12, | ||
1178 | .recalc = &omap2_followparent_recalc, | ||
1179 | }; | ||
1180 | |||
1181 | static struct clk gpt8_ick = { | ||
1182 | .name = "gpt8_ick", | ||
1183 | .parent = &l4_ck, | ||
1184 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1185 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit10 */ | ||
1186 | .enable_bit = 10, | ||
1187 | .recalc = &omap2_followparent_recalc, | ||
1188 | }; | ||
1189 | |||
1190 | static struct clk gpt8_fck = { | ||
1191 | .name = "gpt8_fck", | ||
1192 | .parent = &func_32k_ck, | ||
1193 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1194 | CM_CORE_SEL2, | ||
1195 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1196 | .enable_bit = 10, | ||
1197 | .src_offset = 14, | ||
1198 | .recalc = &omap2_followparent_recalc, | ||
1199 | }; | ||
1200 | |||
1201 | static struct clk gpt9_ick = { | ||
1202 | .name = "gpt9_ick", | ||
1203 | .parent = &l4_ck, | ||
1204 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1205 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1206 | .enable_bit = 11, | ||
1207 | .recalc = &omap2_followparent_recalc, | ||
1208 | }; | ||
1209 | |||
1210 | static struct clk gpt9_fck = { | ||
1211 | .name = "gpt9_fck", | ||
1212 | .parent = &func_32k_ck, | ||
1213 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1214 | CM_CORE_SEL2, | ||
1215 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1216 | .enable_bit = 11, | ||
1217 | .src_offset = 16, | ||
1218 | .recalc = &omap2_followparent_recalc, | ||
1219 | }; | ||
1220 | |||
1221 | static struct clk gpt10_ick = { | ||
1222 | .name = "gpt10_ick", | ||
1223 | .parent = &l4_ck, | ||
1224 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1225 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1226 | .enable_bit = 12, | ||
1227 | .recalc = &omap2_followparent_recalc, | ||
1228 | }; | ||
1229 | |||
1230 | static struct clk gpt10_fck = { | ||
1231 | .name = "gpt10_fck", | ||
1232 | .parent = &func_32k_ck, | ||
1233 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1234 | CM_CORE_SEL2, | ||
1235 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1236 | .enable_bit = 12, | ||
1237 | .src_offset = 18, | ||
1238 | .recalc = &omap2_followparent_recalc, | ||
1239 | }; | ||
1240 | |||
1241 | static struct clk gpt11_ick = { | ||
1242 | .name = "gpt11_ick", | ||
1243 | .parent = &l4_ck, | ||
1244 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1245 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1246 | .enable_bit = 13, | ||
1247 | .recalc = &omap2_followparent_recalc, | ||
1248 | }; | ||
1249 | |||
1250 | static struct clk gpt11_fck = { | ||
1251 | .name = "gpt11_fck", | ||
1252 | .parent = &func_32k_ck, | ||
1253 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1254 | CM_CORE_SEL2, | ||
1255 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1256 | .enable_bit = 13, | ||
1257 | .src_offset = 20, | ||
1258 | .recalc = &omap2_followparent_recalc, | ||
1259 | }; | ||
1260 | |||
1261 | static struct clk gpt12_ick = { | ||
1262 | .name = "gpt12_ick", | ||
1263 | .parent = &l4_ck, | ||
1264 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1265 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit14 */ | ||
1266 | .enable_bit = 14, | ||
1267 | .recalc = &omap2_followparent_recalc, | ||
1268 | }; | ||
1269 | |||
1270 | static struct clk gpt12_fck = { | ||
1271 | .name = "gpt12_fck", | ||
1272 | .parent = &func_32k_ck, | ||
1273 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1274 | CM_CORE_SEL2, | ||
1275 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1276 | .enable_bit = 14, | ||
1277 | .src_offset = 22, | ||
1278 | .recalc = &omap2_followparent_recalc, | ||
1279 | }; | ||
1280 | |||
1281 | static struct clk mcbsp1_ick = { | ||
1282 | .name = "mcbsp1_ick", | ||
1283 | .parent = &l4_ck, | ||
1284 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1285 | .enable_bit = 15, | ||
1286 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit16 */ | ||
1287 | .recalc = &omap2_followparent_recalc, | ||
1288 | }; | ||
1289 | |||
1290 | static struct clk mcbsp1_fck = { | ||
1291 | .name = "mcbsp1_fck", | ||
1292 | .parent = &func_96m_ck, | ||
1293 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1294 | .enable_bit = 15, | ||
1295 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1296 | .recalc = &omap2_followparent_recalc, | ||
1297 | }; | ||
1298 | |||
1299 | static struct clk mcbsp2_ick = { | ||
1300 | .name = "mcbsp2_ick", | ||
1301 | .parent = &l4_ck, | ||
1302 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1303 | .enable_bit = 16, | ||
1304 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1305 | .recalc = &omap2_followparent_recalc, | ||
1306 | }; | ||
1307 | |||
1308 | static struct clk mcbsp2_fck = { | ||
1309 | .name = "mcbsp2_fck", | ||
1310 | .parent = &func_96m_ck, | ||
1311 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1312 | .enable_bit = 16, | ||
1313 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1314 | .recalc = &omap2_followparent_recalc, | ||
1315 | }; | ||
1316 | |||
1317 | static struct clk mcbsp3_ick = { | ||
1318 | .name = "mcbsp3_ick", | ||
1319 | .parent = &l4_ck, | ||
1320 | .flags = CLOCK_IN_OMAP243X, | ||
1321 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1322 | .enable_bit = 3, | ||
1323 | .recalc = &omap2_followparent_recalc, | ||
1324 | }; | ||
1325 | |||
1326 | static struct clk mcbsp3_fck = { | ||
1327 | .name = "mcbsp3_fck", | ||
1328 | .parent = &func_96m_ck, | ||
1329 | .flags = CLOCK_IN_OMAP243X, | ||
1330 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1331 | .enable_bit = 3, | ||
1332 | .recalc = &omap2_followparent_recalc, | ||
1333 | }; | ||
1334 | |||
1335 | static struct clk mcbsp4_ick = { | ||
1336 | .name = "mcbsp4_ick", | ||
1337 | .parent = &l4_ck, | ||
1338 | .flags = CLOCK_IN_OMAP243X, | ||
1339 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1340 | .enable_bit = 4, | ||
1341 | .recalc = &omap2_followparent_recalc, | ||
1342 | }; | ||
1343 | |||
1344 | static struct clk mcbsp4_fck = { | ||
1345 | .name = "mcbsp4_fck", | ||
1346 | .parent = &func_96m_ck, | ||
1347 | .flags = CLOCK_IN_OMAP243X, | ||
1348 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1349 | .enable_bit = 4, | ||
1350 | .recalc = &omap2_followparent_recalc, | ||
1351 | }; | ||
1352 | |||
1353 | static struct clk mcbsp5_ick = { | ||
1354 | .name = "mcbsp5_ick", | ||
1355 | .parent = &l4_ck, | ||
1356 | .flags = CLOCK_IN_OMAP243X, | ||
1357 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1358 | .enable_bit = 5, | ||
1359 | .recalc = &omap2_followparent_recalc, | ||
1360 | }; | ||
1361 | |||
1362 | static struct clk mcbsp5_fck = { | ||
1363 | .name = "mcbsp5_fck", | ||
1364 | .parent = &func_96m_ck, | ||
1365 | .flags = CLOCK_IN_OMAP243X, | ||
1366 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1367 | .enable_bit = 5, | ||
1368 | .recalc = &omap2_followparent_recalc, | ||
1369 | }; | ||
1370 | |||
1371 | static struct clk mcspi1_ick = { | ||
1372 | .name = "mcspi_ick", | ||
1373 | .id = 1, | ||
1374 | .parent = &l4_ck, | ||
1375 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1376 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1377 | .enable_bit = 17, | ||
1378 | .recalc = &omap2_followparent_recalc, | ||
1379 | }; | ||
1380 | |||
1381 | static struct clk mcspi1_fck = { | ||
1382 | .name = "mcspi_fck", | ||
1383 | .id = 1, | ||
1384 | .parent = &func_48m_ck, | ||
1385 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1386 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1387 | .enable_bit = 17, | ||
1388 | .recalc = &omap2_followparent_recalc, | ||
1389 | }; | ||
1390 | |||
1391 | static struct clk mcspi2_ick = { | ||
1392 | .name = "mcspi_ick", | ||
1393 | .id = 2, | ||
1394 | .parent = &l4_ck, | ||
1395 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1396 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1397 | .enable_bit = 18, | ||
1398 | .recalc = &omap2_followparent_recalc, | ||
1399 | }; | ||
1400 | |||
1401 | static struct clk mcspi2_fck = { | ||
1402 | .name = "mcspi_fck", | ||
1403 | .id = 2, | ||
1404 | .parent = &func_48m_ck, | ||
1405 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1406 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1407 | .enable_bit = 18, | ||
1408 | .recalc = &omap2_followparent_recalc, | ||
1409 | }; | ||
1410 | |||
1411 | static struct clk mcspi3_ick = { | ||
1412 | .name = "mcspi_ick", | ||
1413 | .id = 3, | ||
1414 | .parent = &l4_ck, | ||
1415 | .flags = CLOCK_IN_OMAP243X, | ||
1416 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1417 | .enable_bit = 9, | ||
1418 | .recalc = &omap2_followparent_recalc, | ||
1419 | }; | ||
1420 | |||
1421 | static struct clk mcspi3_fck = { | ||
1422 | .name = "mcspi_fck", | ||
1423 | .id = 3, | ||
1424 | .parent = &func_48m_ck, | ||
1425 | .flags = CLOCK_IN_OMAP243X, | ||
1426 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1427 | .enable_bit = 9, | ||
1428 | .recalc = &omap2_followparent_recalc, | ||
1429 | }; | ||
1430 | |||
1431 | static struct clk uart1_ick = { | ||
1432 | .name = "uart1_ick", | ||
1433 | .parent = &l4_ck, | ||
1434 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1435 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1436 | .enable_bit = 21, | ||
1437 | .recalc = &omap2_followparent_recalc, | ||
1438 | }; | ||
1439 | |||
1440 | static struct clk uart1_fck = { | ||
1441 | .name = "uart1_fck", | ||
1442 | .parent = &func_48m_ck, | ||
1443 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1444 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1445 | .enable_bit = 21, | ||
1446 | .recalc = &omap2_followparent_recalc, | ||
1447 | }; | ||
1448 | |||
1449 | static struct clk uart2_ick = { | ||
1450 | .name = "uart2_ick", | ||
1451 | .parent = &l4_ck, | ||
1452 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1453 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1454 | .enable_bit = 22, | ||
1455 | .recalc = &omap2_followparent_recalc, | ||
1456 | }; | ||
1457 | |||
1458 | static struct clk uart2_fck = { | ||
1459 | .name = "uart2_fck", | ||
1460 | .parent = &func_48m_ck, | ||
1461 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1462 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1463 | .enable_bit = 22, | ||
1464 | .recalc = &omap2_followparent_recalc, | ||
1465 | }; | ||
1466 | |||
1467 | static struct clk uart3_ick = { | ||
1468 | .name = "uart3_ick", | ||
1469 | .parent = &l4_ck, | ||
1470 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1471 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1472 | .enable_bit = 2, | ||
1473 | .recalc = &omap2_followparent_recalc, | ||
1474 | }; | ||
1475 | |||
1476 | static struct clk uart3_fck = { | ||
1477 | .name = "uart3_fck", | ||
1478 | .parent = &func_48m_ck, | ||
1479 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1480 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1481 | .enable_bit = 2, | ||
1482 | .recalc = &omap2_followparent_recalc, | ||
1483 | }; | ||
1484 | |||
1485 | static struct clk gpios_ick = { | ||
1486 | .name = "gpios_ick", | ||
1487 | .parent = &l4_ck, | ||
1488 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1489 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, | ||
1490 | .enable_bit = 2, | ||
1491 | .recalc = &omap2_followparent_recalc, | ||
1492 | }; | ||
1493 | |||
1494 | static struct clk gpios_fck = { | ||
1495 | .name = "gpios_fck", | ||
1496 | .parent = &func_32k_ck, | ||
1497 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1498 | .enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, | ||
1499 | .enable_bit = 2, | ||
1500 | .recalc = &omap2_followparent_recalc, | ||
1501 | }; | ||
1502 | |||
1503 | static struct clk mpu_wdt_ick = { | ||
1504 | .name = "mpu_wdt_ick", | ||
1505 | .parent = &l4_ck, | ||
1506 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1507 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, | ||
1508 | .enable_bit = 3, | ||
1509 | .recalc = &omap2_followparent_recalc, | ||
1510 | }; | ||
1511 | |||
1512 | static struct clk mpu_wdt_fck = { | ||
1513 | .name = "mpu_wdt_fck", | ||
1514 | .parent = &func_32k_ck, | ||
1515 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1516 | .enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, | ||
1517 | .enable_bit = 3, | ||
1518 | .recalc = &omap2_followparent_recalc, | ||
1519 | }; | ||
1520 | |||
1521 | static struct clk sync_32k_ick = { | ||
1522 | .name = "sync_32k_ick", | ||
1523 | .parent = &l4_ck, | ||
1524 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1525 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, | ||
1526 | .enable_bit = 1, | ||
1527 | .recalc = &omap2_followparent_recalc, | ||
1528 | }; | ||
1529 | static struct clk wdt1_ick = { | ||
1530 | .name = "wdt1_ick", | ||
1531 | .parent = &l4_ck, | ||
1532 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1533 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, | ||
1534 | .enable_bit = 4, | ||
1535 | .recalc = &omap2_followparent_recalc, | ||
1536 | }; | ||
1537 | static struct clk omapctrl_ick = { | ||
1538 | .name = "omapctrl_ick", | ||
1539 | .parent = &l4_ck, | ||
1540 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1541 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, | ||
1542 | .enable_bit = 5, | ||
1543 | .recalc = &omap2_followparent_recalc, | ||
1544 | }; | ||
1545 | static struct clk icr_ick = { | ||
1546 | .name = "icr_ick", | ||
1547 | .parent = &l4_ck, | ||
1548 | .flags = CLOCK_IN_OMAP243X, | ||
1549 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, | ||
1550 | .enable_bit = 6, | ||
1551 | .recalc = &omap2_followparent_recalc, | ||
1552 | }; | ||
1553 | |||
1554 | static struct clk cam_ick = { | ||
1555 | .name = "cam_ick", | ||
1556 | .parent = &l4_ck, | ||
1557 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1558 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1559 | .enable_bit = 31, | ||
1560 | .recalc = &omap2_followparent_recalc, | ||
1561 | }; | ||
1562 | |||
1563 | static struct clk cam_fck = { | ||
1564 | .name = "cam_fck", | ||
1565 | .parent = &func_96m_ck, | ||
1566 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1567 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1568 | .enable_bit = 31, | ||
1569 | .recalc = &omap2_followparent_recalc, | ||
1570 | }; | ||
1571 | |||
1572 | static struct clk mailboxes_ick = { | ||
1573 | .name = "mailboxes_ick", | ||
1574 | .parent = &l4_ck, | ||
1575 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1576 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1577 | .enable_bit = 30, | ||
1578 | .recalc = &omap2_followparent_recalc, | ||
1579 | }; | ||
1580 | |||
1581 | static struct clk wdt4_ick = { | ||
1582 | .name = "wdt4_ick", | ||
1583 | .parent = &l4_ck, | ||
1584 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1585 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1586 | .enable_bit = 29, | ||
1587 | .recalc = &omap2_followparent_recalc, | ||
1588 | }; | ||
1589 | |||
1590 | static struct clk wdt4_fck = { | ||
1591 | .name = "wdt4_fck", | ||
1592 | .parent = &func_32k_ck, | ||
1593 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1594 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1595 | .enable_bit = 29, | ||
1596 | .recalc = &omap2_followparent_recalc, | ||
1597 | }; | ||
1598 | |||
1599 | static struct clk wdt3_ick = { | ||
1600 | .name = "wdt3_ick", | ||
1601 | .parent = &l4_ck, | ||
1602 | .flags = CLOCK_IN_OMAP242X, | ||
1603 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1604 | .enable_bit = 28, | ||
1605 | .recalc = &omap2_followparent_recalc, | ||
1606 | }; | ||
1607 | |||
1608 | static struct clk wdt3_fck = { | ||
1609 | .name = "wdt3_fck", | ||
1610 | .parent = &func_32k_ck, | ||
1611 | .flags = CLOCK_IN_OMAP242X, | ||
1612 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1613 | .enable_bit = 28, | ||
1614 | .recalc = &omap2_followparent_recalc, | ||
1615 | }; | ||
1616 | |||
1617 | static struct clk mspro_ick = { | ||
1618 | .name = "mspro_ick", | ||
1619 | .parent = &l4_ck, | ||
1620 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1621 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1622 | .enable_bit = 27, | ||
1623 | .recalc = &omap2_followparent_recalc, | ||
1624 | }; | ||
1625 | |||
1626 | static struct clk mspro_fck = { | ||
1627 | .name = "mspro_fck", | ||
1628 | .parent = &func_96m_ck, | ||
1629 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1630 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1631 | .enable_bit = 27, | ||
1632 | .recalc = &omap2_followparent_recalc, | ||
1633 | }; | ||
1634 | |||
1635 | static struct clk mmc_ick = { | ||
1636 | .name = "mmc_ick", | ||
1637 | .parent = &l4_ck, | ||
1638 | .flags = CLOCK_IN_OMAP242X, | ||
1639 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1640 | .enable_bit = 26, | ||
1641 | .recalc = &omap2_followparent_recalc, | ||
1642 | }; | ||
1643 | |||
1644 | static struct clk mmc_fck = { | ||
1645 | .name = "mmc_fck", | ||
1646 | .parent = &func_96m_ck, | ||
1647 | .flags = CLOCK_IN_OMAP242X, | ||
1648 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1649 | .enable_bit = 26, | ||
1650 | .recalc = &omap2_followparent_recalc, | ||
1651 | }; | ||
1652 | |||
1653 | static struct clk fac_ick = { | ||
1654 | .name = "fac_ick", | ||
1655 | .parent = &l4_ck, | ||
1656 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1657 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1658 | .enable_bit = 25, | ||
1659 | .recalc = &omap2_followparent_recalc, | ||
1660 | }; | ||
1661 | |||
1662 | static struct clk fac_fck = { | ||
1663 | .name = "fac_fck", | ||
1664 | .parent = &func_12m_ck, | ||
1665 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1666 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1667 | .enable_bit = 25, | ||
1668 | .recalc = &omap2_followparent_recalc, | ||
1669 | }; | ||
1670 | |||
1671 | static struct clk eac_ick = { | ||
1672 | .name = "eac_ick", | ||
1673 | .parent = &l4_ck, | ||
1674 | .flags = CLOCK_IN_OMAP242X, | ||
1675 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1676 | .enable_bit = 24, | ||
1677 | .recalc = &omap2_followparent_recalc, | ||
1678 | }; | ||
1679 | |||
1680 | static struct clk eac_fck = { | ||
1681 | .name = "eac_fck", | ||
1682 | .parent = &func_96m_ck, | ||
1683 | .flags = CLOCK_IN_OMAP242X, | ||
1684 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1685 | .enable_bit = 24, | ||
1686 | .recalc = &omap2_followparent_recalc, | ||
1687 | }; | ||
1688 | |||
1689 | static struct clk hdq_ick = { | ||
1690 | .name = "hdq_ick", | ||
1691 | .parent = &l4_ck, | ||
1692 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1693 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1694 | .enable_bit = 23, | ||
1695 | .recalc = &omap2_followparent_recalc, | ||
1696 | }; | ||
1697 | |||
1698 | static struct clk hdq_fck = { | ||
1699 | .name = "hdq_fck", | ||
1700 | .parent = &func_12m_ck, | ||
1701 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1702 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1703 | .enable_bit = 23, | ||
1704 | .recalc = &omap2_followparent_recalc, | ||
1705 | }; | ||
1706 | |||
1707 | static struct clk i2c2_ick = { | ||
1708 | .name = "i2c_ick", | ||
1709 | .id = 2, | ||
1710 | .parent = &l4_ck, | ||
1711 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1712 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1713 | .enable_bit = 20, | ||
1714 | .recalc = &omap2_followparent_recalc, | ||
1715 | }; | ||
1716 | |||
1717 | static struct clk i2c2_fck = { | ||
1718 | .name = "i2c_fck", | ||
1719 | .id = 2, | ||
1720 | .parent = &func_12m_ck, | ||
1721 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1722 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1723 | .enable_bit = 20, | ||
1724 | .recalc = &omap2_followparent_recalc, | ||
1725 | }; | ||
1726 | |||
1727 | static struct clk i2chs2_fck = { | ||
1728 | .name = "i2chs2_fck", | ||
1729 | .parent = &func_96m_ck, | ||
1730 | .flags = CLOCK_IN_OMAP243X, | ||
1731 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1732 | .enable_bit = 20, | ||
1733 | .recalc = &omap2_followparent_recalc, | ||
1734 | }; | ||
1735 | |||
1736 | static struct clk i2c1_ick = { | ||
1737 | .name = "i2c_ick", | ||
1738 | .id = 1, | ||
1739 | .parent = &l4_ck, | ||
1740 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1741 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1742 | .enable_bit = 19, | ||
1743 | .recalc = &omap2_followparent_recalc, | ||
1744 | }; | ||
1745 | |||
1746 | static struct clk i2c1_fck = { | ||
1747 | .name = "i2c_fck", | ||
1748 | .id = 1, | ||
1749 | .parent = &func_12m_ck, | ||
1750 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1751 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1752 | .enable_bit = 19, | ||
1753 | .recalc = &omap2_followparent_recalc, | ||
1754 | }; | ||
1755 | |||
1756 | static struct clk i2chs1_fck = { | ||
1757 | .name = "i2chs1_fck", | ||
1758 | .parent = &func_96m_ck, | ||
1759 | .flags = CLOCK_IN_OMAP243X, | ||
1760 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1761 | .enable_bit = 19, | ||
1762 | .recalc = &omap2_followparent_recalc, | ||
1763 | }; | ||
1764 | |||
1765 | static struct clk vlynq_ick = { | ||
1766 | .name = "vlynq_ick", | ||
1767 | .parent = &core_l3_ck, | ||
1768 | .flags = CLOCK_IN_OMAP242X, | ||
1769 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, | ||
1770 | .enable_bit = 3, | ||
1771 | .recalc = &omap2_followparent_recalc, | ||
1772 | }; | ||
1773 | |||
1774 | static struct clk vlynq_fck = { | ||
1775 | .name = "vlynq_fck", | ||
1776 | .parent = &func_96m_ck, | ||
1777 | .flags = CLOCK_IN_OMAP242X | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP, | ||
1778 | .enable_reg = (void __iomem *)&CM_FCLKEN1_CORE, | ||
1779 | .enable_bit = 3, | ||
1780 | .src_offset = 15, | ||
1781 | .recalc = &omap2_followparent_recalc, | ||
1782 | }; | ||
1783 | |||
1784 | static struct clk sdrc_ick = { | ||
1785 | .name = "sdrc_ick", | ||
1786 | .parent = &l4_ck, | ||
1787 | .flags = CLOCK_IN_OMAP243X, | ||
1788 | .enable_reg = (void __iomem *)&CM_ICLKEN3_CORE, | ||
1789 | .enable_bit = 2, | ||
1790 | .recalc = &omap2_followparent_recalc, | ||
1791 | }; | ||
1792 | |||
1793 | static struct clk des_ick = { | ||
1794 | .name = "des_ick", | ||
1795 | .parent = &l4_ck, | ||
1796 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
1797 | .enable_reg = (void __iomem *)&CM_ICLKEN4_CORE, | ||
1798 | .enable_bit = 0, | ||
1799 | .recalc = &omap2_followparent_recalc, | ||
1800 | }; | ||
1801 | |||
1802 | static struct clk sha_ick = { | ||
1803 | .name = "sha_ick", | ||
1804 | .parent = &l4_ck, | ||
1805 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
1806 | .enable_reg = (void __iomem *)&CM_ICLKEN4_CORE, | ||
1807 | .enable_bit = 1, | ||
1808 | .recalc = &omap2_followparent_recalc, | ||
1809 | }; | ||
1810 | |||
1811 | static struct clk rng_ick = { | ||
1812 | .name = "rng_ick", | ||
1813 | .parent = &l4_ck, | ||
1814 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
1815 | .enable_reg = (void __iomem *)&CM_ICLKEN4_CORE, | ||
1816 | .enable_bit = 2, | ||
1817 | .recalc = &omap2_followparent_recalc, | ||
1818 | }; | ||
1819 | |||
1820 | static struct clk aes_ick = { | ||
1821 | .name = "aes_ick", | ||
1822 | .parent = &l4_ck, | ||
1823 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
1824 | .enable_reg = (void __iomem *)&CM_ICLKEN4_CORE, | ||
1825 | .enable_bit = 3, | ||
1826 | .recalc = &omap2_followparent_recalc, | ||
1827 | }; | ||
1828 | |||
1829 | static struct clk pka_ick = { | ||
1830 | .name = "pka_ick", | ||
1831 | .parent = &l4_ck, | ||
1832 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
1833 | .enable_reg = (void __iomem *)&CM_ICLKEN4_CORE, | ||
1834 | .enable_bit = 4, | ||
1835 | .recalc = &omap2_followparent_recalc, | ||
1836 | }; | ||
1837 | |||
1838 | static struct clk usb_fck = { | ||
1839 | .name = "usb_fck", | ||
1840 | .parent = &func_48m_ck, | ||
1841 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
1842 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1843 | .enable_bit = 0, | ||
1844 | .recalc = &omap2_followparent_recalc, | ||
1845 | }; | ||
1846 | |||
1847 | static struct clk usbhs_ick = { | ||
1848 | .name = "usbhs_ick", | ||
1849 | .parent = &core_l3_ck, | ||
1850 | .flags = CLOCK_IN_OMAP243X, | ||
1851 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1852 | .enable_bit = 6, | ||
1853 | .recalc = &omap2_followparent_recalc, | ||
1854 | }; | ||
1855 | |||
1856 | static struct clk mmchs1_ick = { | ||
1857 | .name = "mmchs1_ick", | ||
1858 | .parent = &l4_ck, | ||
1859 | .flags = CLOCK_IN_OMAP243X, | ||
1860 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1861 | .enable_bit = 7, | ||
1862 | .recalc = &omap2_followparent_recalc, | ||
1863 | }; | ||
1864 | |||
1865 | static struct clk mmchs1_fck = { | ||
1866 | .name = "mmchs1_fck", | ||
1867 | .parent = &func_96m_ck, | ||
1868 | .flags = CLOCK_IN_OMAP243X, | ||
1869 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1870 | .enable_bit = 7, | ||
1871 | .recalc = &omap2_followparent_recalc, | ||
1872 | }; | ||
1873 | |||
1874 | static struct clk mmchs2_ick = { | ||
1875 | .name = "mmchs2_ick", | ||
1876 | .parent = &l4_ck, | ||
1877 | .flags = CLOCK_IN_OMAP243X, | ||
1878 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1879 | .enable_bit = 8, | ||
1880 | .recalc = &omap2_followparent_recalc, | ||
1881 | }; | ||
1882 | |||
1883 | static struct clk mmchs2_fck = { | ||
1884 | .name = "mmchs2_fck", | ||
1885 | .parent = &func_96m_ck, | ||
1886 | .flags = CLOCK_IN_OMAP243X, | ||
1887 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1888 | .enable_bit = 8, | ||
1889 | .recalc = &omap2_followparent_recalc, | ||
1890 | }; | ||
1891 | 32 | ||
1892 | static struct clk gpio5_ick = { | 33 | void omap2_clksel_recalc(struct clk *clk); |
1893 | .name = "gpio5_ick", | 34 | void omap2_init_clksel_parent(struct clk *clk); |
1894 | .parent = &l4_ck, | 35 | u32 omap2_clksel_get_divisor(struct clk *clk); |
1895 | .flags = CLOCK_IN_OMAP243X, | 36 | u32 omap2_clksel_round_rate_div(struct clk *clk, unsigned long target_rate, |
1896 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | 37 | u32 *new_div); |
1897 | .enable_bit = 10, | 38 | u32 omap2_clksel_to_divisor(struct clk *clk, u32 field_val); |
1898 | .recalc = &omap2_followparent_recalc, | 39 | u32 omap2_divisor_to_clksel(struct clk *clk, u32 div); |
1899 | }; | 40 | void omap2_fixed_divisor_recalc(struct clk *clk); |
41 | long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate); | ||
42 | int omap2_clksel_set_rate(struct clk *clk, unsigned long rate); | ||
43 | u32 omap2_get_dpll_rate(struct clk *clk); | ||
44 | int omap2_wait_clock_ready(void __iomem *reg, u32 cval, const char *name); | ||
1900 | 45 | ||
1901 | static struct clk gpio5_fck = { | 46 | extern u8 cpu_mask; |
1902 | .name = "gpio5_fck", | ||
1903 | .parent = &func_32k_ck, | ||
1904 | .flags = CLOCK_IN_OMAP243X, | ||
1905 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1906 | .enable_bit = 10, | ||
1907 | .recalc = &omap2_followparent_recalc, | ||
1908 | }; | ||
1909 | 47 | ||
1910 | static struct clk mdm_intc_ick = { | 48 | /* clksel_rate data common to 24xx/343x */ |
1911 | .name = "mdm_intc_ick", | 49 | static const struct clksel_rate gpt_32k_rates[] = { |
1912 | .parent = &l4_ck, | 50 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE }, |
1913 | .flags = CLOCK_IN_OMAP243X, | 51 | { .div = 0 } |
1914 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | ||
1915 | .enable_bit = 11, | ||
1916 | .recalc = &omap2_followparent_recalc, | ||
1917 | }; | 52 | }; |
1918 | 53 | ||
1919 | static struct clk mmchsdb1_fck = { | 54 | static const struct clksel_rate gpt_sys_rates[] = { |
1920 | .name = "mmchsdb1_fck", | 55 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE }, |
1921 | .parent = &func_32k_ck, | 56 | { .div = 0 } |
1922 | .flags = CLOCK_IN_OMAP243X, | ||
1923 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | ||
1924 | .enable_bit = 16, | ||
1925 | .recalc = &omap2_followparent_recalc, | ||
1926 | }; | 57 | }; |
1927 | 58 | ||
1928 | static struct clk mmchsdb2_fck = { | 59 | static const struct clksel_rate gfx_l3_rates[] = { |
1929 | .name = "mmchsdb2_fck", | 60 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | RATE_IN_343X }, |
1930 | .parent = &func_32k_ck, | 61 | { .div = 2, .val = 2, .flags = RATE_IN_24XX | RATE_IN_343X | DEFAULT_RATE }, |
1931 | .flags = CLOCK_IN_OMAP243X, | 62 | { .div = 3, .val = 3, .flags = RATE_IN_243X | RATE_IN_343X }, |
1932 | .enable_reg = (void __iomem *)&CM_FCLKEN2_CORE, | 63 | { .div = 4, .val = 4, .flags = RATE_IN_243X | RATE_IN_343X }, |
1933 | .enable_bit = 17, | 64 | { .div = 0 } |
1934 | .recalc = &omap2_followparent_recalc, | ||
1935 | }; | 65 | }; |
1936 | 66 | ||
1937 | /* | ||
1938 | * This clock is a composite clock which does entire set changes then | ||
1939 | * forces a rebalance. It keys on the MPU speed, but it really could | ||
1940 | * be any key speed part of a set in the rate table. | ||
1941 | * | ||
1942 | * to really change a set, you need memory table sets which get changed | ||
1943 | * in sram, pre-notifiers & post notifiers, changing the top set, without | ||
1944 | * having low level display recalc's won't work... this is why dpm notifiers | ||
1945 | * work, isr's off, walk a list of clocks already _off_ and not messing with | ||
1946 | * the bus. | ||
1947 | * | ||
1948 | * This clock should have no parent. It embodies the entire upper level | ||
1949 | * active set. A parent will mess up some of the init also. | ||
1950 | */ | ||
1951 | static struct clk virt_prcm_set = { | ||
1952 | .name = "virt_prcm_set", | ||
1953 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1954 | VIRTUAL_CLOCK | ALWAYS_ENABLED | DELAYED_APP, | ||
1955 | .parent = &mpu_ck, /* Indexed by mpu speed, no parent */ | ||
1956 | .recalc = &omap2_mpu_recalc, /* sets are keyed on mpu rate */ | ||
1957 | .set_rate = &omap2_select_table_rate, | ||
1958 | .round_rate = &omap2_round_to_table_rate, | ||
1959 | }; | ||
1960 | |||
1961 | static struct clk *onchip_clks[] = { | ||
1962 | /* external root sources */ | ||
1963 | &func_32k_ck, | ||
1964 | &osc_ck, | ||
1965 | &sys_ck, | ||
1966 | &alt_ck, | ||
1967 | /* internal analog sources */ | ||
1968 | &dpll_ck, | ||
1969 | &apll96_ck, | ||
1970 | &apll54_ck, | ||
1971 | /* internal prcm root sources */ | ||
1972 | &func_54m_ck, | ||
1973 | &core_ck, | ||
1974 | &sleep_ck, | ||
1975 | &func_96m_ck, | ||
1976 | &func_48m_ck, | ||
1977 | &func_12m_ck, | ||
1978 | &wdt1_osc_ck, | ||
1979 | &sys_clkout, | ||
1980 | &sys_clkout2, | ||
1981 | &emul_ck, | ||
1982 | /* mpu domain clocks */ | ||
1983 | &mpu_ck, | ||
1984 | /* dsp domain clocks */ | ||
1985 | &iva2_1_fck, /* 2430 */ | ||
1986 | &iva2_1_ick, | ||
1987 | &dsp_ick, /* 2420 */ | ||
1988 | &dsp_fck, | ||
1989 | &iva1_ifck, | ||
1990 | &iva1_mpu_int_ifck, | ||
1991 | /* GFX domain clocks */ | ||
1992 | &gfx_3d_fck, | ||
1993 | &gfx_2d_fck, | ||
1994 | &gfx_ick, | ||
1995 | /* Modem domain clocks */ | ||
1996 | &mdm_ick, | ||
1997 | &mdm_osc_ck, | ||
1998 | /* DSS domain clocks */ | ||
1999 | &dss_ick, | ||
2000 | &dss1_fck, | ||
2001 | &dss2_fck, | ||
2002 | &dss_54m_fck, | ||
2003 | /* L3 domain clocks */ | ||
2004 | &core_l3_ck, | ||
2005 | &ssi_ssr_sst_fck, | ||
2006 | &usb_l4_ick, | ||
2007 | /* L4 domain clocks */ | ||
2008 | &l4_ck, /* used as both core_l4 and wu_l4 */ | ||
2009 | &ssi_l4_ick, | ||
2010 | /* virtual meta-group clock */ | ||
2011 | &virt_prcm_set, | ||
2012 | /* general l4 interface ck, multi-parent functional clk */ | ||
2013 | &gpt1_ick, | ||
2014 | &gpt1_fck, | ||
2015 | &gpt2_ick, | ||
2016 | &gpt2_fck, | ||
2017 | &gpt3_ick, | ||
2018 | &gpt3_fck, | ||
2019 | &gpt4_ick, | ||
2020 | &gpt4_fck, | ||
2021 | &gpt5_ick, | ||
2022 | &gpt5_fck, | ||
2023 | &gpt6_ick, | ||
2024 | &gpt6_fck, | ||
2025 | &gpt7_ick, | ||
2026 | &gpt7_fck, | ||
2027 | &gpt8_ick, | ||
2028 | &gpt8_fck, | ||
2029 | &gpt9_ick, | ||
2030 | &gpt9_fck, | ||
2031 | &gpt10_ick, | ||
2032 | &gpt10_fck, | ||
2033 | &gpt11_ick, | ||
2034 | &gpt11_fck, | ||
2035 | &gpt12_ick, | ||
2036 | &gpt12_fck, | ||
2037 | &mcbsp1_ick, | ||
2038 | &mcbsp1_fck, | ||
2039 | &mcbsp2_ick, | ||
2040 | &mcbsp2_fck, | ||
2041 | &mcbsp3_ick, | ||
2042 | &mcbsp3_fck, | ||
2043 | &mcbsp4_ick, | ||
2044 | &mcbsp4_fck, | ||
2045 | &mcbsp5_ick, | ||
2046 | &mcbsp5_fck, | ||
2047 | &mcspi1_ick, | ||
2048 | &mcspi1_fck, | ||
2049 | &mcspi2_ick, | ||
2050 | &mcspi2_fck, | ||
2051 | &mcspi3_ick, | ||
2052 | &mcspi3_fck, | ||
2053 | &uart1_ick, | ||
2054 | &uart1_fck, | ||
2055 | &uart2_ick, | ||
2056 | &uart2_fck, | ||
2057 | &uart3_ick, | ||
2058 | &uart3_fck, | ||
2059 | &gpios_ick, | ||
2060 | &gpios_fck, | ||
2061 | &mpu_wdt_ick, | ||
2062 | &mpu_wdt_fck, | ||
2063 | &sync_32k_ick, | ||
2064 | &wdt1_ick, | ||
2065 | &omapctrl_ick, | ||
2066 | &icr_ick, | ||
2067 | &cam_fck, | ||
2068 | &cam_ick, | ||
2069 | &mailboxes_ick, | ||
2070 | &wdt4_ick, | ||
2071 | &wdt4_fck, | ||
2072 | &wdt3_ick, | ||
2073 | &wdt3_fck, | ||
2074 | &mspro_ick, | ||
2075 | &mspro_fck, | ||
2076 | &mmc_ick, | ||
2077 | &mmc_fck, | ||
2078 | &fac_ick, | ||
2079 | &fac_fck, | ||
2080 | &eac_ick, | ||
2081 | &eac_fck, | ||
2082 | &hdq_ick, | ||
2083 | &hdq_fck, | ||
2084 | &i2c1_ick, | ||
2085 | &i2c1_fck, | ||
2086 | &i2chs1_fck, | ||
2087 | &i2c2_ick, | ||
2088 | &i2c2_fck, | ||
2089 | &i2chs2_fck, | ||
2090 | &vlynq_ick, | ||
2091 | &vlynq_fck, | ||
2092 | &sdrc_ick, | ||
2093 | &des_ick, | ||
2094 | &sha_ick, | ||
2095 | &rng_ick, | ||
2096 | &aes_ick, | ||
2097 | &pka_ick, | ||
2098 | &usb_fck, | ||
2099 | &usbhs_ick, | ||
2100 | &mmchs1_ick, | ||
2101 | &mmchs1_fck, | ||
2102 | &mmchs2_ick, | ||
2103 | &mmchs2_fck, | ||
2104 | &gpio5_ick, | ||
2105 | &gpio5_fck, | ||
2106 | &mdm_intc_ick, | ||
2107 | &mmchsdb1_fck, | ||
2108 | &mmchsdb2_fck, | ||
2109 | }; | ||
2110 | 67 | ||
2111 | #endif | 68 | #endif |
diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c new file mode 100644 index 000000000000..ece32d8acba4 --- /dev/null +++ b/arch/arm/mach-omap2/clock24xx.c | |||
@@ -0,0 +1,539 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-omap2/clock.c | ||
3 | * | ||
4 | * Copyright (C) 2005-2008 Texas Instruments, Inc. | ||
5 | * Copyright (C) 2004-2008 Nokia Corporation | ||
6 | * | ||
7 | * Contacts: | ||
8 | * Richard Woodruff <r-woodruff2@ti.com> | ||
9 | * Paul Walmsley | ||
10 | * | ||
11 | * Based on earlier work by Tuukka Tikkanen, Tony Lindgren, | ||
12 | * Gordon McNutt and RidgeRun, Inc. | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License version 2 as | ||
16 | * published by the Free Software Foundation. | ||
17 | */ | ||
18 | #undef DEBUG | ||
19 | |||
20 | #include <linux/module.h> | ||
21 | #include <linux/kernel.h> | ||
22 | #include <linux/device.h> | ||
23 | #include <linux/list.h> | ||
24 | #include <linux/errno.h> | ||
25 | #include <linux/delay.h> | ||
26 | #include <linux/clk.h> | ||
27 | |||
28 | #include <linux/io.h> | ||
29 | #include <linux/cpufreq.h> | ||
30 | |||
31 | #include <asm/arch/clock.h> | ||
32 | #include <asm/arch/sram.h> | ||
33 | #include <asm/div64.h> | ||
34 | #include <asm/bitops.h> | ||
35 | |||
36 | #include "memory.h" | ||
37 | #include "clock.h" | ||
38 | #include "clock24xx.h" | ||
39 | #include "prm.h" | ||
40 | #include "prm-regbits-24xx.h" | ||
41 | #include "cm.h" | ||
42 | #include "cm-regbits-24xx.h" | ||
43 | |||
44 | /* CM_CLKEN_PLL.EN_{54,96}M_PLL options (24XX) */ | ||
45 | #define EN_APLL_STOPPED 0 | ||
46 | #define EN_APLL_LOCKED 3 | ||
47 | |||
48 | /* CM_CLKSEL1_PLL.APLLS_CLKIN options (24XX) */ | ||
49 | #define APLLS_CLKIN_19_2MHZ 0 | ||
50 | #define APLLS_CLKIN_13MHZ 2 | ||
51 | #define APLLS_CLKIN_12MHZ 3 | ||
52 | |||
53 | /* #define DOWN_VARIABLE_DPLL 1 */ /* Experimental */ | ||
54 | |||
55 | static struct prcm_config *curr_prcm_set; | ||
56 | static struct clk *vclk; | ||
57 | static struct clk *sclk; | ||
58 | |||
59 | /*------------------------------------------------------------------------- | ||
60 | * Omap24xx specific clock functions | ||
61 | *-------------------------------------------------------------------------*/ | ||
62 | |||
63 | /* This actually returns the rate of core_ck, not dpll_ck. */ | ||
64 | static u32 omap2_get_dpll_rate_24xx(struct clk *tclk) | ||
65 | { | ||
66 | long long dpll_clk; | ||
67 | u8 amult; | ||
68 | |||
69 | dpll_clk = omap2_get_dpll_rate(tclk); | ||
70 | |||
71 | amult = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2); | ||
72 | amult &= OMAP24XX_CORE_CLK_SRC_MASK; | ||
73 | dpll_clk *= amult; | ||
74 | |||
75 | return dpll_clk; | ||
76 | } | ||
77 | |||
78 | static int omap2_enable_osc_ck(struct clk *clk) | ||
79 | { | ||
80 | u32 pcc; | ||
81 | |||
82 | pcc = __raw_readl(OMAP24XX_PRCM_CLKSRC_CTRL); | ||
83 | |||
84 | __raw_writel(pcc & ~OMAP_AUTOEXTCLKMODE_MASK, | ||
85 | OMAP24XX_PRCM_CLKSRC_CTRL); | ||
86 | |||
87 | return 0; | ||
88 | } | ||
89 | |||
90 | static void omap2_disable_osc_ck(struct clk *clk) | ||
91 | { | ||
92 | u32 pcc; | ||
93 | |||
94 | pcc = __raw_readl(OMAP24XX_PRCM_CLKSRC_CTRL); | ||
95 | |||
96 | __raw_writel(pcc | OMAP_AUTOEXTCLKMODE_MASK, | ||
97 | OMAP24XX_PRCM_CLKSRC_CTRL); | ||
98 | } | ||
99 | |||
100 | #ifdef OLD_CK | ||
101 | /* Recalculate SYST_CLK */ | ||
102 | static void omap2_sys_clk_recalc(struct clk * clk) | ||
103 | { | ||
104 | u32 div = PRCM_CLKSRC_CTRL; | ||
105 | div &= (1 << 7) | (1 << 6); /* Test if ext clk divided by 1 or 2 */ | ||
106 | div >>= clk->rate_offset; | ||
107 | clk->rate = (clk->parent->rate / div); | ||
108 | propagate_rate(clk); | ||
109 | } | ||
110 | #endif /* OLD_CK */ | ||
111 | |||
112 | /* Enable an APLL if off */ | ||
113 | static int omap2_clk_fixed_enable(struct clk *clk) | ||
114 | { | ||
115 | u32 cval, apll_mask; | ||
116 | |||
117 | apll_mask = EN_APLL_LOCKED << clk->enable_bit; | ||
118 | |||
119 | cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN); | ||
120 | |||
121 | if ((cval & apll_mask) == apll_mask) | ||
122 | return 0; /* apll already enabled */ | ||
123 | |||
124 | cval &= ~apll_mask; | ||
125 | cval |= apll_mask; | ||
126 | cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN); | ||
127 | |||
128 | if (clk == &apll96_ck) | ||
129 | cval = OMAP24XX_ST_96M_APLL; | ||
130 | else if (clk == &apll54_ck) | ||
131 | cval = OMAP24XX_ST_54M_APLL; | ||
132 | |||
133 | omap2_wait_clock_ready(OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), cval, | ||
134 | clk->name); | ||
135 | |||
136 | /* | ||
137 | * REVISIT: Should we return an error code if omap2_wait_clock_ready() | ||
138 | * fails? | ||
139 | */ | ||
140 | return 0; | ||
141 | } | ||
142 | |||
143 | /* Stop APLL */ | ||
144 | static void omap2_clk_fixed_disable(struct clk *clk) | ||
145 | { | ||
146 | u32 cval; | ||
147 | |||
148 | cval = cm_read_mod_reg(PLL_MOD, CM_CLKEN); | ||
149 | cval &= ~(EN_APLL_LOCKED << clk->enable_bit); | ||
150 | cm_write_mod_reg(cval, PLL_MOD, CM_CLKEN); | ||
151 | } | ||
152 | |||
153 | /* | ||
154 | * Uses the current prcm set to tell if a rate is valid. | ||
155 | * You can go slower, but not faster within a given rate set. | ||
156 | */ | ||
157 | static u32 omap2_dpll_round_rate(unsigned long target_rate) | ||
158 | { | ||
159 | u32 high, low, core_clk_src; | ||
160 | |||
161 | core_clk_src = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2); | ||
162 | core_clk_src &= OMAP24XX_CORE_CLK_SRC_MASK; | ||
163 | |||
164 | if (core_clk_src == CORE_CLK_SRC_DPLL) { /* DPLL clockout */ | ||
165 | high = curr_prcm_set->dpll_speed * 2; | ||
166 | low = curr_prcm_set->dpll_speed; | ||
167 | } else { /* DPLL clockout x 2 */ | ||
168 | high = curr_prcm_set->dpll_speed; | ||
169 | low = curr_prcm_set->dpll_speed / 2; | ||
170 | } | ||
171 | |||
172 | #ifdef DOWN_VARIABLE_DPLL | ||
173 | if (target_rate > high) | ||
174 | return high; | ||
175 | else | ||
176 | return target_rate; | ||
177 | #else | ||
178 | if (target_rate > low) | ||
179 | return high; | ||
180 | else | ||
181 | return low; | ||
182 | #endif | ||
183 | |||
184 | } | ||
185 | |||
186 | static void omap2_dpll_recalc(struct clk *clk) | ||
187 | { | ||
188 | clk->rate = omap2_get_dpll_rate_24xx(clk); | ||
189 | |||
190 | propagate_rate(clk); | ||
191 | } | ||
192 | |||
193 | static int omap2_reprogram_dpll(struct clk *clk, unsigned long rate) | ||
194 | { | ||
195 | u32 cur_rate, low, mult, div, valid_rate, done_rate; | ||
196 | u32 bypass = 0; | ||
197 | struct prcm_config tmpset; | ||
198 | const struct dpll_data *dd; | ||
199 | unsigned long flags; | ||
200 | int ret = -EINVAL; | ||
201 | |||
202 | local_irq_save(flags); | ||
203 | cur_rate = omap2_get_dpll_rate_24xx(&dpll_ck); | ||
204 | mult = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2); | ||
205 | mult &= OMAP24XX_CORE_CLK_SRC_MASK; | ||
206 | |||
207 | if ((rate == (cur_rate / 2)) && (mult == 2)) { | ||
208 | omap2_reprogram_sdrc(CORE_CLK_SRC_DPLL, 1); | ||
209 | } else if ((rate == (cur_rate * 2)) && (mult == 1)) { | ||
210 | omap2_reprogram_sdrc(CORE_CLK_SRC_DPLL_X2, 1); | ||
211 | } else if (rate != cur_rate) { | ||
212 | valid_rate = omap2_dpll_round_rate(rate); | ||
213 | if (valid_rate != rate) | ||
214 | goto dpll_exit; | ||
215 | |||
216 | if (mult == 1) | ||
217 | low = curr_prcm_set->dpll_speed; | ||
218 | else | ||
219 | low = curr_prcm_set->dpll_speed / 2; | ||
220 | |||
221 | dd = clk->dpll_data; | ||
222 | if (!dd) | ||
223 | goto dpll_exit; | ||
224 | |||
225 | tmpset.cm_clksel1_pll = __raw_readl(dd->mult_div1_reg); | ||
226 | tmpset.cm_clksel1_pll &= ~(dd->mult_mask | | ||
227 | dd->div1_mask); | ||
228 | div = ((curr_prcm_set->xtal_speed / 1000000) - 1); | ||
229 | tmpset.cm_clksel2_pll = cm_read_mod_reg(PLL_MOD, CM_CLKSEL2); | ||
230 | tmpset.cm_clksel2_pll &= ~OMAP24XX_CORE_CLK_SRC_MASK; | ||
231 | if (rate > low) { | ||
232 | tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL_X2; | ||
233 | mult = ((rate / 2) / 1000000); | ||
234 | done_rate = CORE_CLK_SRC_DPLL_X2; | ||
235 | } else { | ||
236 | tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL; | ||
237 | mult = (rate / 1000000); | ||
238 | done_rate = CORE_CLK_SRC_DPLL; | ||
239 | } | ||
240 | tmpset.cm_clksel1_pll |= (div << __ffs(dd->mult_mask)); | ||
241 | tmpset.cm_clksel1_pll |= (mult << __ffs(dd->div1_mask)); | ||
242 | |||
243 | /* Worst case */ | ||
244 | tmpset.base_sdrc_rfr = SDRC_RFR_CTRL_BYPASS; | ||
245 | |||
246 | if (rate == curr_prcm_set->xtal_speed) /* If asking for 1-1 */ | ||
247 | bypass = 1; | ||
248 | |||
249 | omap2_reprogram_sdrc(CORE_CLK_SRC_DPLL_X2, 1); /* For init_mem */ | ||
250 | |||
251 | /* Force dll lock mode */ | ||
252 | omap2_set_prcm(tmpset.cm_clksel1_pll, tmpset.base_sdrc_rfr, | ||
253 | bypass); | ||
254 | |||
255 | /* Errata: ret dll entry state */ | ||
256 | omap2_init_memory_params(omap2_dll_force_needed()); | ||
257 | omap2_reprogram_sdrc(done_rate, 0); | ||
258 | } | ||
259 | omap2_dpll_recalc(&dpll_ck); | ||
260 | ret = 0; | ||
261 | |||
262 | dpll_exit: | ||
263 | local_irq_restore(flags); | ||
264 | return(ret); | ||
265 | } | ||
266 | |||
267 | /** | ||
268 | * omap2_table_mpu_recalc - just return the MPU speed | ||
269 | * @clk: virt_prcm_set struct clk | ||
270 | * | ||
271 | * Set virt_prcm_set's rate to the mpu_speed field of the current PRCM set. | ||
272 | */ | ||
273 | static void omap2_table_mpu_recalc(struct clk *clk) | ||
274 | { | ||
275 | clk->rate = curr_prcm_set->mpu_speed; | ||
276 | } | ||
277 | |||
278 | /* | ||
279 | * Look for a rate equal or less than the target rate given a configuration set. | ||
280 | * | ||
281 | * What's not entirely clear is "which" field represents the key field. | ||
282 | * Some might argue L3-DDR, others ARM, others IVA. This code is simple and | ||
283 | * just uses the ARM rates. | ||
284 | */ | ||
285 | static long omap2_round_to_table_rate(struct clk *clk, unsigned long rate) | ||
286 | { | ||
287 | struct prcm_config *ptr; | ||
288 | long highest_rate; | ||
289 | |||
290 | if (clk != &virt_prcm_set) | ||
291 | return -EINVAL; | ||
292 | |||
293 | highest_rate = -EINVAL; | ||
294 | |||
295 | for (ptr = rate_table; ptr->mpu_speed; ptr++) { | ||
296 | if (!(ptr->flags & cpu_mask)) | ||
297 | continue; | ||
298 | if (ptr->xtal_speed != sys_ck.rate) | ||
299 | continue; | ||
300 | |||
301 | highest_rate = ptr->mpu_speed; | ||
302 | |||
303 | /* Can check only after xtal frequency check */ | ||
304 | if (ptr->mpu_speed <= rate) | ||
305 | break; | ||
306 | } | ||
307 | return highest_rate; | ||
308 | } | ||
309 | |||
310 | /* Sets basic clocks based on the specified rate */ | ||
311 | static int omap2_select_table_rate(struct clk *clk, unsigned long rate) | ||
312 | { | ||
313 | u32 cur_rate, done_rate, bypass = 0, tmp; | ||
314 | struct prcm_config *prcm; | ||
315 | unsigned long found_speed = 0; | ||
316 | unsigned long flags; | ||
317 | |||
318 | if (clk != &virt_prcm_set) | ||
319 | return -EINVAL; | ||
320 | |||
321 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { | ||
322 | if (!(prcm->flags & cpu_mask)) | ||
323 | continue; | ||
324 | |||
325 | if (prcm->xtal_speed != sys_ck.rate) | ||
326 | continue; | ||
327 | |||
328 | if (prcm->mpu_speed <= rate) { | ||
329 | found_speed = prcm->mpu_speed; | ||
330 | break; | ||
331 | } | ||
332 | } | ||
333 | |||
334 | if (!found_speed) { | ||
335 | printk(KERN_INFO "Could not set MPU rate to %luMHz\n", | ||
336 | rate / 1000000); | ||
337 | return -EINVAL; | ||
338 | } | ||
339 | |||
340 | curr_prcm_set = prcm; | ||
341 | cur_rate = omap2_get_dpll_rate_24xx(&dpll_ck); | ||
342 | |||
343 | if (prcm->dpll_speed == cur_rate / 2) { | ||
344 | omap2_reprogram_sdrc(CORE_CLK_SRC_DPLL, 1); | ||
345 | } else if (prcm->dpll_speed == cur_rate * 2) { | ||
346 | omap2_reprogram_sdrc(CORE_CLK_SRC_DPLL_X2, 1); | ||
347 | } else if (prcm->dpll_speed != cur_rate) { | ||
348 | local_irq_save(flags); | ||
349 | |||
350 | if (prcm->dpll_speed == prcm->xtal_speed) | ||
351 | bypass = 1; | ||
352 | |||
353 | if ((prcm->cm_clksel2_pll & OMAP24XX_CORE_CLK_SRC_MASK) == | ||
354 | CORE_CLK_SRC_DPLL_X2) | ||
355 | done_rate = CORE_CLK_SRC_DPLL_X2; | ||
356 | else | ||
357 | done_rate = CORE_CLK_SRC_DPLL; | ||
358 | |||
359 | /* MPU divider */ | ||
360 | cm_write_mod_reg(prcm->cm_clksel_mpu, MPU_MOD, CM_CLKSEL); | ||
361 | |||
362 | /* dsp + iva1 div(2420), iva2.1(2430) */ | ||
363 | cm_write_mod_reg(prcm->cm_clksel_dsp, | ||
364 | OMAP24XX_DSP_MOD, CM_CLKSEL); | ||
365 | |||
366 | cm_write_mod_reg(prcm->cm_clksel_gfx, GFX_MOD, CM_CLKSEL); | ||
367 | |||
368 | /* Major subsystem dividers */ | ||
369 | tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) & OMAP24XX_CLKSEL_DSS2_MASK; | ||
370 | cm_write_mod_reg(prcm->cm_clksel1_core | tmp, CORE_MOD, CM_CLKSEL1); | ||
371 | if (cpu_is_omap2430()) | ||
372 | cm_write_mod_reg(prcm->cm_clksel_mdm, | ||
373 | OMAP2430_MDM_MOD, CM_CLKSEL); | ||
374 | |||
375 | /* x2 to enter init_mem */ | ||
376 | omap2_reprogram_sdrc(CORE_CLK_SRC_DPLL_X2, 1); | ||
377 | |||
378 | omap2_set_prcm(prcm->cm_clksel1_pll, prcm->base_sdrc_rfr, | ||
379 | bypass); | ||
380 | |||
381 | omap2_init_memory_params(omap2_dll_force_needed()); | ||
382 | omap2_reprogram_sdrc(done_rate, 0); | ||
383 | |||
384 | local_irq_restore(flags); | ||
385 | } | ||
386 | omap2_dpll_recalc(&dpll_ck); | ||
387 | |||
388 | return 0; | ||
389 | } | ||
390 | |||
391 | static struct clk_functions omap2_clk_functions = { | ||
392 | .clk_enable = omap2_clk_enable, | ||
393 | .clk_disable = omap2_clk_disable, | ||
394 | .clk_round_rate = omap2_clk_round_rate, | ||
395 | .clk_set_rate = omap2_clk_set_rate, | ||
396 | .clk_set_parent = omap2_clk_set_parent, | ||
397 | .clk_disable_unused = omap2_clk_disable_unused, | ||
398 | }; | ||
399 | |||
400 | static u32 omap2_get_apll_clkin(void) | ||
401 | { | ||
402 | u32 aplls, sclk = 0; | ||
403 | |||
404 | aplls = cm_read_mod_reg(PLL_MOD, CM_CLKSEL1); | ||
405 | aplls &= OMAP24XX_APLLS_CLKIN_MASK; | ||
406 | aplls >>= OMAP24XX_APLLS_CLKIN_SHIFT; | ||
407 | |||
408 | if (aplls == APLLS_CLKIN_19_2MHZ) | ||
409 | sclk = 19200000; | ||
410 | else if (aplls == APLLS_CLKIN_13MHZ) | ||
411 | sclk = 13000000; | ||
412 | else if (aplls == APLLS_CLKIN_12MHZ) | ||
413 | sclk = 12000000; | ||
414 | |||
415 | return sclk; | ||
416 | } | ||
417 | |||
418 | static u32 omap2_get_sysclkdiv(void) | ||
419 | { | ||
420 | u32 div; | ||
421 | |||
422 | div = __raw_readl(OMAP24XX_PRCM_CLKSRC_CTRL); | ||
423 | div &= OMAP_SYSCLKDIV_MASK; | ||
424 | div >>= OMAP_SYSCLKDIV_SHIFT; | ||
425 | |||
426 | return div; | ||
427 | } | ||
428 | |||
429 | static void omap2_osc_clk_recalc(struct clk *clk) | ||
430 | { | ||
431 | clk->rate = omap2_get_apll_clkin() * omap2_get_sysclkdiv(); | ||
432 | propagate_rate(clk); | ||
433 | } | ||
434 | |||
435 | static void omap2_sys_clk_recalc(struct clk *clk) | ||
436 | { | ||
437 | clk->rate = clk->parent->rate / omap2_get_sysclkdiv(); | ||
438 | propagate_rate(clk); | ||
439 | } | ||
440 | |||
441 | /* | ||
442 | * Set clocks for bypass mode for reboot to work. | ||
443 | */ | ||
444 | void omap2_clk_prepare_for_reboot(void) | ||
445 | { | ||
446 | u32 rate; | ||
447 | |||
448 | if (vclk == NULL || sclk == NULL) | ||
449 | return; | ||
450 | |||
451 | rate = clk_get_rate(sclk); | ||
452 | clk_set_rate(vclk, rate); | ||
453 | } | ||
454 | |||
455 | /* | ||
456 | * Switch the MPU rate if specified on cmdline. | ||
457 | * We cannot do this early until cmdline is parsed. | ||
458 | */ | ||
459 | static int __init omap2_clk_arch_init(void) | ||
460 | { | ||
461 | if (!mpurate) | ||
462 | return -EINVAL; | ||
463 | |||
464 | if (omap2_select_table_rate(&virt_prcm_set, mpurate)) | ||
465 | printk(KERN_ERR "Could not find matching MPU rate\n"); | ||
466 | |||
467 | recalculate_root_clocks(); | ||
468 | |||
469 | printk(KERN_INFO "Switched to new clocking rate (Crystal/DPLL/MPU): " | ||
470 | "%ld.%01ld/%ld/%ld MHz\n", | ||
471 | (sys_ck.rate / 1000000), (sys_ck.rate / 100000) % 10, | ||
472 | (dpll_ck.rate / 1000000), (mpu_ck.rate / 1000000)) ; | ||
473 | |||
474 | return 0; | ||
475 | } | ||
476 | arch_initcall(omap2_clk_arch_init); | ||
477 | |||
478 | int __init omap2_clk_init(void) | ||
479 | { | ||
480 | struct prcm_config *prcm; | ||
481 | struct clk **clkp; | ||
482 | u32 clkrate; | ||
483 | |||
484 | if (cpu_is_omap242x()) | ||
485 | cpu_mask = RATE_IN_242X; | ||
486 | else if (cpu_is_omap2430()) | ||
487 | cpu_mask = RATE_IN_243X; | ||
488 | |||
489 | clk_init(&omap2_clk_functions); | ||
490 | |||
491 | omap2_osc_clk_recalc(&osc_ck); | ||
492 | omap2_sys_clk_recalc(&sys_ck); | ||
493 | |||
494 | for (clkp = onchip_24xx_clks; | ||
495 | clkp < onchip_24xx_clks + ARRAY_SIZE(onchip_24xx_clks); | ||
496 | clkp++) { | ||
497 | |||
498 | if ((*clkp)->flags & CLOCK_IN_OMAP242X && cpu_is_omap2420()) { | ||
499 | clk_register(*clkp); | ||
500 | continue; | ||
501 | } | ||
502 | |||
503 | if ((*clkp)->flags & CLOCK_IN_OMAP243X && cpu_is_omap2430()) { | ||
504 | clk_register(*clkp); | ||
505 | continue; | ||
506 | } | ||
507 | } | ||
508 | |||
509 | /* Check the MPU rate set by bootloader */ | ||
510 | clkrate = omap2_get_dpll_rate_24xx(&dpll_ck); | ||
511 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { | ||
512 | if (!(prcm->flags & cpu_mask)) | ||
513 | continue; | ||
514 | if (prcm->xtal_speed != sys_ck.rate) | ||
515 | continue; | ||
516 | if (prcm->dpll_speed <= clkrate) | ||
517 | break; | ||
518 | } | ||
519 | curr_prcm_set = prcm; | ||
520 | |||
521 | recalculate_root_clocks(); | ||
522 | |||
523 | printk(KERN_INFO "Clocking rate (Crystal/DPLL/MPU): " | ||
524 | "%ld.%01ld/%ld/%ld MHz\n", | ||
525 | (sys_ck.rate / 1000000), (sys_ck.rate / 100000) % 10, | ||
526 | (dpll_ck.rate / 1000000), (mpu_ck.rate / 1000000)) ; | ||
527 | |||
528 | /* | ||
529 | * Only enable those clocks we will need, let the drivers | ||
530 | * enable other clocks as necessary | ||
531 | */ | ||
532 | clk_enable_init_clocks(); | ||
533 | |||
534 | /* Avoid sleeping sleeping during omap2_clk_prepare_for_reboot() */ | ||
535 | vclk = clk_get(NULL, "virt_prcm_set"); | ||
536 | sclk = clk_get(NULL, "sys_ck"); | ||
537 | |||
538 | return 0; | ||
539 | } | ||
diff --git a/arch/arm/mach-omap2/clock24xx.h b/arch/arm/mach-omap2/clock24xx.h new file mode 100644 index 000000000000..88081ed13f96 --- /dev/null +++ b/arch/arm/mach-omap2/clock24xx.h | |||
@@ -0,0 +1,2643 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-omap2/clock24xx.h | ||
3 | * | ||
4 | * Copyright (C) 2005-2008 Texas Instruments, Inc. | ||
5 | * Copyright (C) 2004-2008 Nokia Corporation | ||
6 | * | ||
7 | * Contacts: | ||
8 | * Richard Woodruff <r-woodruff2@ti.com> | ||
9 | * Paul Walmsley | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License version 2 as | ||
13 | * published by the Free Software Foundation. | ||
14 | */ | ||
15 | |||
16 | #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK24XX_H | ||
17 | #define __ARCH_ARM_MACH_OMAP2_CLOCK24XX_H | ||
18 | |||
19 | #include "clock.h" | ||
20 | |||
21 | #include "prm.h" | ||
22 | #include "cm.h" | ||
23 | #include "prm-regbits-24xx.h" | ||
24 | #include "cm-regbits-24xx.h" | ||
25 | #include "sdrc.h" | ||
26 | |||
27 | static void omap2_table_mpu_recalc(struct clk *clk); | ||
28 | static int omap2_select_table_rate(struct clk *clk, unsigned long rate); | ||
29 | static long omap2_round_to_table_rate(struct clk *clk, unsigned long rate); | ||
30 | static void omap2_sys_clk_recalc(struct clk *clk); | ||
31 | static void omap2_osc_clk_recalc(struct clk *clk); | ||
32 | static void omap2_sys_clk_recalc(struct clk *clk); | ||
33 | static void omap2_dpll_recalc(struct clk *clk); | ||
34 | static int omap2_clk_fixed_enable(struct clk *clk); | ||
35 | static void omap2_clk_fixed_disable(struct clk *clk); | ||
36 | static int omap2_enable_osc_ck(struct clk *clk); | ||
37 | static void omap2_disable_osc_ck(struct clk *clk); | ||
38 | static int omap2_reprogram_dpll(struct clk *clk, unsigned long rate); | ||
39 | |||
40 | /* Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. | ||
41 | * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,CM_CLKSEL_DSP | ||
42 | * CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL CM_CLKSEL2_PLL, CM_CLKSEL_MDM | ||
43 | */ | ||
44 | struct prcm_config { | ||
45 | unsigned long xtal_speed; /* crystal rate */ | ||
46 | unsigned long dpll_speed; /* dpll: out*xtal*M/(N-1)table_recalc */ | ||
47 | unsigned long mpu_speed; /* speed of MPU */ | ||
48 | unsigned long cm_clksel_mpu; /* mpu divider */ | ||
49 | unsigned long cm_clksel_dsp; /* dsp+iva1 div(2420), iva2.1(2430) */ | ||
50 | unsigned long cm_clksel_gfx; /* gfx dividers */ | ||
51 | unsigned long cm_clksel1_core; /* major subsystem dividers */ | ||
52 | unsigned long cm_clksel1_pll; /* m,n */ | ||
53 | unsigned long cm_clksel2_pll; /* dpllx1 or x2 out */ | ||
54 | unsigned long cm_clksel_mdm; /* modem dividers 2430 only */ | ||
55 | unsigned long base_sdrc_rfr; /* base refresh timing for a set */ | ||
56 | unsigned char flags; | ||
57 | }; | ||
58 | |||
59 | /* | ||
60 | * The OMAP2 processor can be run at several discrete 'PRCM configurations'. | ||
61 | * These configurations are characterized by voltage and speed for clocks. | ||
62 | * The device is only validated for certain combinations. One way to express | ||
63 | * these combinations is via the 'ratio's' which the clocks operate with | ||
64 | * respect to each other. These ratio sets are for a given voltage/DPLL | ||
65 | * setting. All configurations can be described by a DPLL setting and a ratio | ||
66 | * There are 3 ratio sets for the 2430 and X ratio sets for 2420. | ||
67 | * | ||
68 | * 2430 differs from 2420 in that there are no more phase synchronizers used. | ||
69 | * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs | ||
70 | * 2430 (iva2.1, NOdsp, mdm) | ||
71 | */ | ||
72 | |||
73 | /* Core fields for cm_clksel, not ratio governed */ | ||
74 | #define RX_CLKSEL_DSS1 (0x10 << 8) | ||
75 | #define RX_CLKSEL_DSS2 (0x0 << 13) | ||
76 | #define RX_CLKSEL_SSI (0x5 << 20) | ||
77 | |||
78 | /*------------------------------------------------------------------------- | ||
79 | * Voltage/DPLL ratios | ||
80 | *-------------------------------------------------------------------------*/ | ||
81 | |||
82 | /* 2430 Ratio's, 2430-Ratio Config 1 */ | ||
83 | #define R1_CLKSEL_L3 (4 << 0) | ||
84 | #define R1_CLKSEL_L4 (2 << 5) | ||
85 | #define R1_CLKSEL_USB (4 << 25) | ||
86 | #define R1_CM_CLKSEL1_CORE_VAL R1_CLKSEL_USB | RX_CLKSEL_SSI | \ | ||
87 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
88 | R1_CLKSEL_L4 | R1_CLKSEL_L3 | ||
89 | #define R1_CLKSEL_MPU (2 << 0) | ||
90 | #define R1_CM_CLKSEL_MPU_VAL R1_CLKSEL_MPU | ||
91 | #define R1_CLKSEL_DSP (2 << 0) | ||
92 | #define R1_CLKSEL_DSP_IF (2 << 5) | ||
93 | #define R1_CM_CLKSEL_DSP_VAL R1_CLKSEL_DSP | R1_CLKSEL_DSP_IF | ||
94 | #define R1_CLKSEL_GFX (2 << 0) | ||
95 | #define R1_CM_CLKSEL_GFX_VAL R1_CLKSEL_GFX | ||
96 | #define R1_CLKSEL_MDM (4 << 0) | ||
97 | #define R1_CM_CLKSEL_MDM_VAL R1_CLKSEL_MDM | ||
98 | |||
99 | /* 2430-Ratio Config 2 */ | ||
100 | #define R2_CLKSEL_L3 (6 << 0) | ||
101 | #define R2_CLKSEL_L4 (2 << 5) | ||
102 | #define R2_CLKSEL_USB (2 << 25) | ||
103 | #define R2_CM_CLKSEL1_CORE_VAL R2_CLKSEL_USB | RX_CLKSEL_SSI | \ | ||
104 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
105 | R2_CLKSEL_L4 | R2_CLKSEL_L3 | ||
106 | #define R2_CLKSEL_MPU (2 << 0) | ||
107 | #define R2_CM_CLKSEL_MPU_VAL R2_CLKSEL_MPU | ||
108 | #define R2_CLKSEL_DSP (2 << 0) | ||
109 | #define R2_CLKSEL_DSP_IF (3 << 5) | ||
110 | #define R2_CM_CLKSEL_DSP_VAL R2_CLKSEL_DSP | R2_CLKSEL_DSP_IF | ||
111 | #define R2_CLKSEL_GFX (2 << 0) | ||
112 | #define R2_CM_CLKSEL_GFX_VAL R2_CLKSEL_GFX | ||
113 | #define R2_CLKSEL_MDM (6 << 0) | ||
114 | #define R2_CM_CLKSEL_MDM_VAL R2_CLKSEL_MDM | ||
115 | |||
116 | /* 2430-Ratio Bootm (BYPASS) */ | ||
117 | #define RB_CLKSEL_L3 (1 << 0) | ||
118 | #define RB_CLKSEL_L4 (1 << 5) | ||
119 | #define RB_CLKSEL_USB (1 << 25) | ||
120 | #define RB_CM_CLKSEL1_CORE_VAL RB_CLKSEL_USB | RX_CLKSEL_SSI | \ | ||
121 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
122 | RB_CLKSEL_L4 | RB_CLKSEL_L3 | ||
123 | #define RB_CLKSEL_MPU (1 << 0) | ||
124 | #define RB_CM_CLKSEL_MPU_VAL RB_CLKSEL_MPU | ||
125 | #define RB_CLKSEL_DSP (1 << 0) | ||
126 | #define RB_CLKSEL_DSP_IF (1 << 5) | ||
127 | #define RB_CM_CLKSEL_DSP_VAL RB_CLKSEL_DSP | RB_CLKSEL_DSP_IF | ||
128 | #define RB_CLKSEL_GFX (1 << 0) | ||
129 | #define RB_CM_CLKSEL_GFX_VAL RB_CLKSEL_GFX | ||
130 | #define RB_CLKSEL_MDM (1 << 0) | ||
131 | #define RB_CM_CLKSEL_MDM_VAL RB_CLKSEL_MDM | ||
132 | |||
133 | /* 2420 Ratio Equivalents */ | ||
134 | #define RXX_CLKSEL_VLYNQ (0x12 << 15) | ||
135 | #define RXX_CLKSEL_SSI (0x8 << 20) | ||
136 | |||
137 | /* 2420-PRCM III 532MHz core */ | ||
138 | #define RIII_CLKSEL_L3 (4 << 0) /* 133MHz */ | ||
139 | #define RIII_CLKSEL_L4 (2 << 5) /* 66.5MHz */ | ||
140 | #define RIII_CLKSEL_USB (4 << 25) /* 33.25MHz */ | ||
141 | #define RIII_CM_CLKSEL1_CORE_VAL RIII_CLKSEL_USB | RXX_CLKSEL_SSI | \ | ||
142 | RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \ | ||
143 | RX_CLKSEL_DSS1 | RIII_CLKSEL_L4 | \ | ||
144 | RIII_CLKSEL_L3 | ||
145 | #define RIII_CLKSEL_MPU (2 << 0) /* 266MHz */ | ||
146 | #define RIII_CM_CLKSEL_MPU_VAL RIII_CLKSEL_MPU | ||
147 | #define RIII_CLKSEL_DSP (3 << 0) /* c5x - 177.3MHz */ | ||
148 | #define RIII_CLKSEL_DSP_IF (2 << 5) /* c5x - 88.67MHz */ | ||
149 | #define RIII_SYNC_DSP (1 << 7) /* Enable sync */ | ||
150 | #define RIII_CLKSEL_IVA (6 << 8) /* iva1 - 88.67MHz */ | ||
151 | #define RIII_SYNC_IVA (1 << 13) /* Enable sync */ | ||
152 | #define RIII_CM_CLKSEL_DSP_VAL RIII_SYNC_IVA | RIII_CLKSEL_IVA | \ | ||
153 | RIII_SYNC_DSP | RIII_CLKSEL_DSP_IF | \ | ||
154 | RIII_CLKSEL_DSP | ||
155 | #define RIII_CLKSEL_GFX (2 << 0) /* 66.5MHz */ | ||
156 | #define RIII_CM_CLKSEL_GFX_VAL RIII_CLKSEL_GFX | ||
157 | |||
158 | /* 2420-PRCM II 600MHz core */ | ||
159 | #define RII_CLKSEL_L3 (6 << 0) /* 100MHz */ | ||
160 | #define RII_CLKSEL_L4 (2 << 5) /* 50MHz */ | ||
161 | #define RII_CLKSEL_USB (2 << 25) /* 50MHz */ | ||
162 | #define RII_CM_CLKSEL1_CORE_VAL RII_CLKSEL_USB | \ | ||
163 | RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \ | ||
164 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
165 | RII_CLKSEL_L4 | RII_CLKSEL_L3 | ||
166 | #define RII_CLKSEL_MPU (2 << 0) /* 300MHz */ | ||
167 | #define RII_CM_CLKSEL_MPU_VAL RII_CLKSEL_MPU | ||
168 | #define RII_CLKSEL_DSP (3 << 0) /* c5x - 200MHz */ | ||
169 | #define RII_CLKSEL_DSP_IF (2 << 5) /* c5x - 100MHz */ | ||
170 | #define RII_SYNC_DSP (0 << 7) /* Bypass sync */ | ||
171 | #define RII_CLKSEL_IVA (3 << 8) /* iva1 - 200MHz */ | ||
172 | #define RII_SYNC_IVA (0 << 13) /* Bypass sync */ | ||
173 | #define RII_CM_CLKSEL_DSP_VAL RII_SYNC_IVA | RII_CLKSEL_IVA | \ | ||
174 | RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \ | ||
175 | RII_CLKSEL_DSP | ||
176 | #define RII_CLKSEL_GFX (2 << 0) /* 50MHz */ | ||
177 | #define RII_CM_CLKSEL_GFX_VAL RII_CLKSEL_GFX | ||
178 | |||
179 | /* 2420-PRCM I 660MHz core */ | ||
180 | #define RI_CLKSEL_L3 (4 << 0) /* 165MHz */ | ||
181 | #define RI_CLKSEL_L4 (2 << 5) /* 82.5MHz */ | ||
182 | #define RI_CLKSEL_USB (4 << 25) /* 41.25MHz */ | ||
183 | #define RI_CM_CLKSEL1_CORE_VAL RI_CLKSEL_USB | \ | ||
184 | RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \ | ||
185 | RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \ | ||
186 | RI_CLKSEL_L4 | RI_CLKSEL_L3 | ||
187 | #define RI_CLKSEL_MPU (2 << 0) /* 330MHz */ | ||
188 | #define RI_CM_CLKSEL_MPU_VAL RI_CLKSEL_MPU | ||
189 | #define RI_CLKSEL_DSP (3 << 0) /* c5x - 220MHz */ | ||
190 | #define RI_CLKSEL_DSP_IF (2 << 5) /* c5x - 110MHz */ | ||
191 | #define RI_SYNC_DSP (1 << 7) /* Activate sync */ | ||
192 | #define RI_CLKSEL_IVA (4 << 8) /* iva1 - 165MHz */ | ||
193 | #define RI_SYNC_IVA (0 << 13) /* Bypass sync */ | ||
194 | #define RI_CM_CLKSEL_DSP_VAL RI_SYNC_IVA | RI_CLKSEL_IVA | \ | ||
195 | RI_SYNC_DSP | RI_CLKSEL_DSP_IF | \ | ||
196 | RI_CLKSEL_DSP | ||
197 | #define RI_CLKSEL_GFX (1 << 0) /* 165MHz */ | ||
198 | #define RI_CM_CLKSEL_GFX_VAL RI_CLKSEL_GFX | ||
199 | |||
200 | /* 2420-PRCM VII (boot) */ | ||
201 | #define RVII_CLKSEL_L3 (1 << 0) | ||
202 | #define RVII_CLKSEL_L4 (1 << 5) | ||
203 | #define RVII_CLKSEL_DSS1 (1 << 8) | ||
204 | #define RVII_CLKSEL_DSS2 (0 << 13) | ||
205 | #define RVII_CLKSEL_VLYNQ (1 << 15) | ||
206 | #define RVII_CLKSEL_SSI (1 << 20) | ||
207 | #define RVII_CLKSEL_USB (1 << 25) | ||
208 | |||
209 | #define RVII_CM_CLKSEL1_CORE_VAL RVII_CLKSEL_USB | RVII_CLKSEL_SSI | \ | ||
210 | RVII_CLKSEL_VLYNQ | RVII_CLKSEL_DSS2 | \ | ||
211 | RVII_CLKSEL_DSS1 | RVII_CLKSEL_L4 | RVII_CLKSEL_L3 | ||
212 | |||
213 | #define RVII_CLKSEL_MPU (1 << 0) /* all divide by 1 */ | ||
214 | #define RVII_CM_CLKSEL_MPU_VAL RVII_CLKSEL_MPU | ||
215 | |||
216 | #define RVII_CLKSEL_DSP (1 << 0) | ||
217 | #define RVII_CLKSEL_DSP_IF (1 << 5) | ||
218 | #define RVII_SYNC_DSP (0 << 7) | ||
219 | #define RVII_CLKSEL_IVA (1 << 8) | ||
220 | #define RVII_SYNC_IVA (0 << 13) | ||
221 | #define RVII_CM_CLKSEL_DSP_VAL RVII_SYNC_IVA | RVII_CLKSEL_IVA | RVII_SYNC_DSP | \ | ||
222 | RVII_CLKSEL_DSP_IF | RVII_CLKSEL_DSP | ||
223 | |||
224 | #define RVII_CLKSEL_GFX (1 << 0) | ||
225 | #define RVII_CM_CLKSEL_GFX_VAL RVII_CLKSEL_GFX | ||
226 | |||
227 | /*------------------------------------------------------------------------- | ||
228 | * 2430 Target modes: Along with each configuration the CPU has several | ||
229 | * modes which goes along with them. Modes mainly are the addition of | ||
230 | * describe DPLL combinations to go along with a ratio. | ||
231 | *-------------------------------------------------------------------------*/ | ||
232 | |||
233 | /* Hardware governed */ | ||
234 | #define MX_48M_SRC (0 << 3) | ||
235 | #define MX_54M_SRC (0 << 5) | ||
236 | #define MX_APLLS_CLIKIN_12 (3 << 23) | ||
237 | #define MX_APLLS_CLIKIN_13 (2 << 23) | ||
238 | #define MX_APLLS_CLIKIN_19_2 (0 << 23) | ||
239 | |||
240 | /* | ||
241 | * 2430 - standalone, 2*ref*M/(n+1), M/N is for exactness not relock speed | ||
242 | * #5a (ratio1) baseport-target, target DPLL = 266*2 = 532MHz | ||
243 | */ | ||
244 | #define M5A_DPLL_MULT_12 (133 << 12) | ||
245 | #define M5A_DPLL_DIV_12 (5 << 8) | ||
246 | #define M5A_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
247 | M5A_DPLL_DIV_12 | M5A_DPLL_MULT_12 | \ | ||
248 | MX_APLLS_CLIKIN_12 | ||
249 | #define M5A_DPLL_MULT_13 (61 << 12) | ||
250 | #define M5A_DPLL_DIV_13 (2 << 8) | ||
251 | #define M5A_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
252 | M5A_DPLL_DIV_13 | M5A_DPLL_MULT_13 | \ | ||
253 | MX_APLLS_CLIKIN_13 | ||
254 | #define M5A_DPLL_MULT_19 (55 << 12) | ||
255 | #define M5A_DPLL_DIV_19 (3 << 8) | ||
256 | #define M5A_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
257 | M5A_DPLL_DIV_19 | M5A_DPLL_MULT_19 | \ | ||
258 | MX_APLLS_CLIKIN_19_2 | ||
259 | /* #5b (ratio1) target DPLL = 200*2 = 400MHz */ | ||
260 | #define M5B_DPLL_MULT_12 (50 << 12) | ||
261 | #define M5B_DPLL_DIV_12 (2 << 8) | ||
262 | #define M5B_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
263 | M5B_DPLL_DIV_12 | M5B_DPLL_MULT_12 | \ | ||
264 | MX_APLLS_CLIKIN_12 | ||
265 | #define M5B_DPLL_MULT_13 (200 << 12) | ||
266 | #define M5B_DPLL_DIV_13 (12 << 8) | ||
267 | |||
268 | #define M5B_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
269 | M5B_DPLL_DIV_13 | M5B_DPLL_MULT_13 | \ | ||
270 | MX_APLLS_CLIKIN_13 | ||
271 | #define M5B_DPLL_MULT_19 (125 << 12) | ||
272 | #define M5B_DPLL_DIV_19 (31 << 8) | ||
273 | #define M5B_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
274 | M5B_DPLL_DIV_19 | M5B_DPLL_MULT_19 | \ | ||
275 | MX_APLLS_CLIKIN_19_2 | ||
276 | /* | ||
277 | * #4 (ratio2), DPLL = 399*2 = 798MHz, L3=133MHz | ||
278 | */ | ||
279 | #define M4_DPLL_MULT_12 (133 << 12) | ||
280 | #define M4_DPLL_DIV_12 (3 << 8) | ||
281 | #define M4_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
282 | M4_DPLL_DIV_12 | M4_DPLL_MULT_12 | \ | ||
283 | MX_APLLS_CLIKIN_12 | ||
284 | |||
285 | #define M4_DPLL_MULT_13 (399 << 12) | ||
286 | #define M4_DPLL_DIV_13 (12 << 8) | ||
287 | #define M4_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
288 | M4_DPLL_DIV_13 | M4_DPLL_MULT_13 | \ | ||
289 | MX_APLLS_CLIKIN_13 | ||
290 | |||
291 | #define M4_DPLL_MULT_19 (145 << 12) | ||
292 | #define M4_DPLL_DIV_19 (6 << 8) | ||
293 | #define M4_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
294 | M4_DPLL_DIV_19 | M4_DPLL_MULT_19 | \ | ||
295 | MX_APLLS_CLIKIN_19_2 | ||
296 | |||
297 | /* | ||
298 | * #3 (ratio2) baseport-target, target DPLL = 330*2 = 660MHz | ||
299 | */ | ||
300 | #define M3_DPLL_MULT_12 (55 << 12) | ||
301 | #define M3_DPLL_DIV_12 (1 << 8) | ||
302 | #define M3_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
303 | M3_DPLL_DIV_12 | M3_DPLL_MULT_12 | \ | ||
304 | MX_APLLS_CLIKIN_12 | ||
305 | #define M3_DPLL_MULT_13 (76 << 12) | ||
306 | #define M3_DPLL_DIV_13 (2 << 8) | ||
307 | #define M3_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
308 | M3_DPLL_DIV_13 | M3_DPLL_MULT_13 | \ | ||
309 | MX_APLLS_CLIKIN_13 | ||
310 | #define M3_DPLL_MULT_19 (17 << 12) | ||
311 | #define M3_DPLL_DIV_19 (0 << 8) | ||
312 | #define M3_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
313 | M3_DPLL_DIV_19 | M3_DPLL_MULT_19 | \ | ||
314 | MX_APLLS_CLIKIN_19_2 | ||
315 | |||
316 | /* | ||
317 | * #2 (ratio1) DPLL = 330*2 = 660MHz, L3=165MHz | ||
318 | */ | ||
319 | #define M2_DPLL_MULT_12 (55 << 12) | ||
320 | #define M2_DPLL_DIV_12 (1 << 8) | ||
321 | #define M2_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
322 | M2_DPLL_DIV_12 | M2_DPLL_MULT_12 | \ | ||
323 | MX_APLLS_CLIKIN_12 | ||
324 | |||
325 | /* Speed changes - Used 658.7MHz instead of 660MHz for LP-Refresh M=76 N=2, | ||
326 | * relock time issue */ | ||
327 | /* Core frequency changed from 330/165 to 329/164 MHz*/ | ||
328 | #define M2_DPLL_MULT_13 (76 << 12) | ||
329 | #define M2_DPLL_DIV_13 (2 << 8) | ||
330 | #define M2_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
331 | M2_DPLL_DIV_13 | M2_DPLL_MULT_13 | \ | ||
332 | MX_APLLS_CLIKIN_13 | ||
333 | |||
334 | #define M2_DPLL_MULT_19 (17 << 12) | ||
335 | #define M2_DPLL_DIV_19 (0 << 8) | ||
336 | #define M2_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
337 | M2_DPLL_DIV_19 | M2_DPLL_MULT_19 | \ | ||
338 | MX_APLLS_CLIKIN_19_2 | ||
339 | |||
340 | /* boot (boot) */ | ||
341 | #define MB_DPLL_MULT (1 << 12) | ||
342 | #define MB_DPLL_DIV (0 << 8) | ||
343 | #define MB_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | MB_DPLL_DIV |\ | ||
344 | MB_DPLL_MULT | MX_APLLS_CLIKIN_12 | ||
345 | |||
346 | #define MB_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | MB_DPLL_DIV |\ | ||
347 | MB_DPLL_MULT | MX_APLLS_CLIKIN_13 | ||
348 | |||
349 | #define MB_CM_CLKSEL1_PLL_19_VAL MX_48M_SRC | MX_54M_SRC | MB_DPLL_DIV |\ | ||
350 | MB_DPLL_MULT | MX_APLLS_CLIKIN_19 | ||
351 | |||
352 | /* | ||
353 | * 2430 - chassis (sedna) | ||
354 | * 165 (ratio1) same as above #2 | ||
355 | * 150 (ratio1) | ||
356 | * 133 (ratio2) same as above #4 | ||
357 | * 110 (ratio2) same as above #3 | ||
358 | * 104 (ratio2) | ||
359 | * boot (boot) | ||
360 | */ | ||
361 | |||
362 | /* PRCM I target DPLL = 2*330MHz = 660MHz */ | ||
363 | #define MI_DPLL_MULT_12 (55 << 12) | ||
364 | #define MI_DPLL_DIV_12 (1 << 8) | ||
365 | #define MI_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
366 | MI_DPLL_DIV_12 | MI_DPLL_MULT_12 | \ | ||
367 | MX_APLLS_CLIKIN_12 | ||
368 | |||
369 | /* | ||
370 | * 2420 Equivalent - mode registers | ||
371 | * PRCM II , target DPLL = 2*300MHz = 600MHz | ||
372 | */ | ||
373 | #define MII_DPLL_MULT_12 (50 << 12) | ||
374 | #define MII_DPLL_DIV_12 (1 << 8) | ||
375 | #define MII_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
376 | MII_DPLL_DIV_12 | MII_DPLL_MULT_12 | \ | ||
377 | MX_APLLS_CLIKIN_12 | ||
378 | #define MII_DPLL_MULT_13 (300 << 12) | ||
379 | #define MII_DPLL_DIV_13 (12 << 8) | ||
380 | #define MII_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
381 | MII_DPLL_DIV_13 | MII_DPLL_MULT_13 | \ | ||
382 | MX_APLLS_CLIKIN_13 | ||
383 | |||
384 | /* PRCM III target DPLL = 2*266 = 532MHz*/ | ||
385 | #define MIII_DPLL_MULT_12 (133 << 12) | ||
386 | #define MIII_DPLL_DIV_12 (5 << 8) | ||
387 | #define MIII_CM_CLKSEL1_PLL_12_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
388 | MIII_DPLL_DIV_12 | MIII_DPLL_MULT_12 | \ | ||
389 | MX_APLLS_CLIKIN_12 | ||
390 | #define MIII_DPLL_MULT_13 (266 << 12) | ||
391 | #define MIII_DPLL_DIV_13 (12 << 8) | ||
392 | #define MIII_CM_CLKSEL1_PLL_13_VAL MX_48M_SRC | MX_54M_SRC | \ | ||
393 | MIII_DPLL_DIV_13 | MIII_DPLL_MULT_13 | \ | ||
394 | MX_APLLS_CLIKIN_13 | ||
395 | |||
396 | /* PRCM VII (boot bypass) */ | ||
397 | #define MVII_CM_CLKSEL1_PLL_12_VAL MB_CM_CLKSEL1_PLL_12_VAL | ||
398 | #define MVII_CM_CLKSEL1_PLL_13_VAL MB_CM_CLKSEL1_PLL_13_VAL | ||
399 | |||
400 | /* High and low operation value */ | ||
401 | #define MX_CLKSEL2_PLL_2x_VAL (2 << 0) | ||
402 | #define MX_CLKSEL2_PLL_1x_VAL (1 << 0) | ||
403 | |||
404 | /* MPU speed defines */ | ||
405 | #define S12M 12000000 | ||
406 | #define S13M 13000000 | ||
407 | #define S19M 19200000 | ||
408 | #define S26M 26000000 | ||
409 | #define S100M 100000000 | ||
410 | #define S133M 133000000 | ||
411 | #define S150M 150000000 | ||
412 | #define S164M 164000000 | ||
413 | #define S165M 165000000 | ||
414 | #define S199M 199000000 | ||
415 | #define S200M 200000000 | ||
416 | #define S266M 266000000 | ||
417 | #define S300M 300000000 | ||
418 | #define S329M 329000000 | ||
419 | #define S330M 330000000 | ||
420 | #define S399M 399000000 | ||
421 | #define S400M 400000000 | ||
422 | #define S532M 532000000 | ||
423 | #define S600M 600000000 | ||
424 | #define S658M 658000000 | ||
425 | #define S660M 660000000 | ||
426 | #define S798M 798000000 | ||
427 | |||
428 | /*------------------------------------------------------------------------- | ||
429 | * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. | ||
430 | * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU, | ||
431 | * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL, | ||
432 | * CM_CLKSEL2_PLL, CM_CLKSEL_MDM | ||
433 | * | ||
434 | * Filling in table based on H4 boards and 2430-SDPs variants available. | ||
435 | * There are quite a few more rates combinations which could be defined. | ||
436 | * | ||
437 | * When multiple values are defined the start up will try and choose the | ||
438 | * fastest one. If a 'fast' value is defined, then automatically, the /2 | ||
439 | * one should be included as it can be used. Generally having more that | ||
440 | * one fast set does not make sense, as static timings need to be changed | ||
441 | * to change the set. The exception is the bypass setting which is | ||
442 | * availble for low power bypass. | ||
443 | * | ||
444 | * Note: This table needs to be sorted, fastest to slowest. | ||
445 | *-------------------------------------------------------------------------*/ | ||
446 | static struct prcm_config rate_table[] = { | ||
447 | /* PRCM I - FAST */ | ||
448 | {S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL, /* 330MHz ARM */ | ||
449 | RI_CM_CLKSEL_DSP_VAL, RI_CM_CLKSEL_GFX_VAL, | ||
450 | RI_CM_CLKSEL1_CORE_VAL, MI_CM_CLKSEL1_PLL_12_VAL, | ||
451 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_165MHz, | ||
452 | RATE_IN_242X}, | ||
453 | |||
454 | /* PRCM II - FAST */ | ||
455 | {S12M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL, /* 300MHz ARM */ | ||
456 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
457 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL, | ||
458 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, | ||
459 | RATE_IN_242X}, | ||
460 | |||
461 | {S13M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL, /* 300MHz ARM */ | ||
462 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
463 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL, | ||
464 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, | ||
465 | RATE_IN_242X}, | ||
466 | |||
467 | /* PRCM III - FAST */ | ||
468 | {S12M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ | ||
469 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
470 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL, | ||
471 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, | ||
472 | RATE_IN_242X}, | ||
473 | |||
474 | {S13M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ | ||
475 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
476 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL, | ||
477 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, | ||
478 | RATE_IN_242X}, | ||
479 | |||
480 | /* PRCM II - SLOW */ | ||
481 | {S12M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL, /* 150MHz ARM */ | ||
482 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
483 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL, | ||
484 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, | ||
485 | RATE_IN_242X}, | ||
486 | |||
487 | {S13M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL, /* 150MHz ARM */ | ||
488 | RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, | ||
489 | RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL, | ||
490 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, | ||
491 | RATE_IN_242X}, | ||
492 | |||
493 | /* PRCM III - SLOW */ | ||
494 | {S12M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ | ||
495 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
496 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL, | ||
497 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, | ||
498 | RATE_IN_242X}, | ||
499 | |||
500 | {S13M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ | ||
501 | RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, | ||
502 | RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL, | ||
503 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, | ||
504 | RATE_IN_242X}, | ||
505 | |||
506 | /* PRCM-VII (boot-bypass) */ | ||
507 | {S12M, S12M, S12M, RVII_CM_CLKSEL_MPU_VAL, /* 12MHz ARM*/ | ||
508 | RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL, | ||
509 | RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_12_VAL, | ||
510 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS, | ||
511 | RATE_IN_242X}, | ||
512 | |||
513 | /* PRCM-VII (boot-bypass) */ | ||
514 | {S13M, S13M, S13M, RVII_CM_CLKSEL_MPU_VAL, /* 13MHz ARM */ | ||
515 | RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL, | ||
516 | RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_13_VAL, | ||
517 | MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS, | ||
518 | RATE_IN_242X}, | ||
519 | |||
520 | /* PRCM #4 - ratio2 (ES2.1) - FAST */ | ||
521 | {S13M, S798M, S399M, R2_CM_CLKSEL_MPU_VAL, /* 399MHz ARM */ | ||
522 | R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL, | ||
523 | R2_CM_CLKSEL1_CORE_VAL, M4_CM_CLKSEL1_PLL_13_VAL, | ||
524 | MX_CLKSEL2_PLL_2x_VAL, R2_CM_CLKSEL_MDM_VAL, | ||
525 | SDRC_RFR_CTRL_133MHz, | ||
526 | RATE_IN_243X}, | ||
527 | |||
528 | /* PRCM #2 - ratio1 (ES2) - FAST */ | ||
529 | {S13M, S658M, S329M, R1_CM_CLKSEL_MPU_VAL, /* 330MHz ARM */ | ||
530 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
531 | R1_CM_CLKSEL1_CORE_VAL, M2_CM_CLKSEL1_PLL_13_VAL, | ||
532 | MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
533 | SDRC_RFR_CTRL_165MHz, | ||
534 | RATE_IN_243X}, | ||
535 | |||
536 | /* PRCM #5a - ratio1 - FAST */ | ||
537 | {S13M, S532M, S266M, R1_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ | ||
538 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
539 | R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL, | ||
540 | MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
541 | SDRC_RFR_CTRL_133MHz, | ||
542 | RATE_IN_243X}, | ||
543 | |||
544 | /* PRCM #5b - ratio1 - FAST */ | ||
545 | {S13M, S400M, S200M, R1_CM_CLKSEL_MPU_VAL, /* 200MHz ARM */ | ||
546 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
547 | R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL, | ||
548 | MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
549 | SDRC_RFR_CTRL_100MHz, | ||
550 | RATE_IN_243X}, | ||
551 | |||
552 | /* PRCM #4 - ratio1 (ES2.1) - SLOW */ | ||
553 | {S13M, S399M, S199M, R2_CM_CLKSEL_MPU_VAL, /* 200MHz ARM */ | ||
554 | R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL, | ||
555 | R2_CM_CLKSEL1_CORE_VAL, M4_CM_CLKSEL1_PLL_13_VAL, | ||
556 | MX_CLKSEL2_PLL_1x_VAL, R2_CM_CLKSEL_MDM_VAL, | ||
557 | SDRC_RFR_CTRL_133MHz, | ||
558 | RATE_IN_243X}, | ||
559 | |||
560 | /* PRCM #2 - ratio1 (ES2) - SLOW */ | ||
561 | {S13M, S329M, S164M, R1_CM_CLKSEL_MPU_VAL, /* 165MHz ARM */ | ||
562 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
563 | R1_CM_CLKSEL1_CORE_VAL, M2_CM_CLKSEL1_PLL_13_VAL, | ||
564 | MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
565 | SDRC_RFR_CTRL_165MHz, | ||
566 | RATE_IN_243X}, | ||
567 | |||
568 | /* PRCM #5a - ratio1 - SLOW */ | ||
569 | {S13M, S266M, S133M, R1_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ | ||
570 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
571 | R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL, | ||
572 | MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
573 | SDRC_RFR_CTRL_133MHz, | ||
574 | RATE_IN_243X}, | ||
575 | |||
576 | /* PRCM #5b - ratio1 - SLOW*/ | ||
577 | {S13M, S200M, S100M, R1_CM_CLKSEL_MPU_VAL, /* 100MHz ARM */ | ||
578 | R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL, | ||
579 | R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL, | ||
580 | MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL, | ||
581 | SDRC_RFR_CTRL_100MHz, | ||
582 | RATE_IN_243X}, | ||
583 | |||
584 | /* PRCM-boot/bypass */ | ||
585 | {S13M, S13M, S13M, RB_CM_CLKSEL_MPU_VAL, /* 13Mhz */ | ||
586 | RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL, | ||
587 | RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_13_VAL, | ||
588 | MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL, | ||
589 | SDRC_RFR_CTRL_BYPASS, | ||
590 | RATE_IN_243X}, | ||
591 | |||
592 | /* PRCM-boot/bypass */ | ||
593 | {S12M, S12M, S12M, RB_CM_CLKSEL_MPU_VAL, /* 12Mhz */ | ||
594 | RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL, | ||
595 | RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_12_VAL, | ||
596 | MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL, | ||
597 | SDRC_RFR_CTRL_BYPASS, | ||
598 | RATE_IN_243X}, | ||
599 | |||
600 | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, | ||
601 | }; | ||
602 | |||
603 | /*------------------------------------------------------------------------- | ||
604 | * 24xx clock tree. | ||
605 | * | ||
606 | * NOTE:In many cases here we are assigning a 'default' parent. In many | ||
607 | * cases the parent is selectable. The get/set parent calls will also | ||
608 | * switch sources. | ||
609 | * | ||
610 | * Many some clocks say always_enabled, but they can be auto idled for | ||
611 | * power savings. They will always be available upon clock request. | ||
612 | * | ||
613 | * Several sources are given initial rates which may be wrong, this will | ||
614 | * be fixed up in the init func. | ||
615 | * | ||
616 | * Things are broadly separated below by clock domains. It is | ||
617 | * noteworthy that most periferals have dependencies on multiple clock | ||
618 | * domains. Many get their interface clocks from the L4 domain, but get | ||
619 | * functional clocks from fixed sources or other core domain derived | ||
620 | * clocks. | ||
621 | *-------------------------------------------------------------------------*/ | ||
622 | |||
623 | /* Base external input clocks */ | ||
624 | static struct clk func_32k_ck = { | ||
625 | .name = "func_32k_ck", | ||
626 | .rate = 32000, | ||
627 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
628 | RATE_FIXED | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
629 | .recalc = &propagate_rate, | ||
630 | }; | ||
631 | |||
632 | /* Typical 12/13MHz in standalone mode, will be 26Mhz in chassis mode */ | ||
633 | static struct clk osc_ck = { /* (*12, *13, 19.2, *26, 38.4)MHz */ | ||
634 | .name = "osc_ck", | ||
635 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
636 | RATE_PROPAGATES, | ||
637 | .enable = &omap2_enable_osc_ck, | ||
638 | .disable = &omap2_disable_osc_ck, | ||
639 | .recalc = &omap2_osc_clk_recalc, | ||
640 | }; | ||
641 | |||
642 | /* With out modem likely 12MHz, with modem likely 13MHz */ | ||
643 | static struct clk sys_ck = { /* (*12, *13, 19.2, 26, 38.4)MHz */ | ||
644 | .name = "sys_ck", /* ~ ref_clk also */ | ||
645 | .parent = &osc_ck, | ||
646 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
647 | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
648 | .recalc = &omap2_sys_clk_recalc, | ||
649 | }; | ||
650 | |||
651 | static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */ | ||
652 | .name = "alt_ck", | ||
653 | .rate = 54000000, | ||
654 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
655 | RATE_FIXED | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
656 | .recalc = &propagate_rate, | ||
657 | }; | ||
658 | |||
659 | /* | ||
660 | * Analog domain root source clocks | ||
661 | */ | ||
662 | |||
663 | /* dpll_ck, is broken out in to special cases through clksel */ | ||
664 | /* REVISIT: Rate changes on dpll_ck trigger a full set change. ... | ||
665 | * deal with this | ||
666 | */ | ||
667 | |||
668 | static const struct dpll_data dpll_dd = { | ||
669 | .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
670 | .mult_mask = OMAP24XX_DPLL_MULT_MASK, | ||
671 | .div1_mask = OMAP24XX_DPLL_DIV_MASK, | ||
672 | }; | ||
673 | |||
674 | static struct clk dpll_ck = { | ||
675 | .name = "dpll_ck", | ||
676 | .parent = &sys_ck, /* Can be func_32k also */ | ||
677 | .dpll_data = &dpll_dd, | ||
678 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
679 | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
680 | .recalc = &omap2_dpll_recalc, | ||
681 | .set_rate = &omap2_reprogram_dpll, | ||
682 | }; | ||
683 | |||
684 | static struct clk apll96_ck = { | ||
685 | .name = "apll96_ck", | ||
686 | .parent = &sys_ck, | ||
687 | .rate = 96000000, | ||
688 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
689 | RATE_FIXED | RATE_PROPAGATES | ENABLE_ON_INIT, | ||
690 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
691 | .enable_bit = OMAP24XX_EN_96M_PLL_SHIFT, | ||
692 | .enable = &omap2_clk_fixed_enable, | ||
693 | .disable = &omap2_clk_fixed_disable, | ||
694 | .recalc = &propagate_rate, | ||
695 | }; | ||
696 | |||
697 | static struct clk apll54_ck = { | ||
698 | .name = "apll54_ck", | ||
699 | .parent = &sys_ck, | ||
700 | .rate = 54000000, | ||
701 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
702 | RATE_FIXED | RATE_PROPAGATES | ENABLE_ON_INIT, | ||
703 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
704 | .enable_bit = OMAP24XX_EN_54M_PLL_SHIFT, | ||
705 | .enable = &omap2_clk_fixed_enable, | ||
706 | .disable = &omap2_clk_fixed_disable, | ||
707 | .recalc = &propagate_rate, | ||
708 | }; | ||
709 | |||
710 | /* | ||
711 | * PRCM digital base sources | ||
712 | */ | ||
713 | |||
714 | /* func_54m_ck */ | ||
715 | |||
716 | static const struct clksel_rate func_54m_apll54_rates[] = { | ||
717 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
718 | { .div = 0 }, | ||
719 | }; | ||
720 | |||
721 | static const struct clksel_rate func_54m_alt_rates[] = { | ||
722 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
723 | { .div = 0 }, | ||
724 | }; | ||
725 | |||
726 | static const struct clksel func_54m_clksel[] = { | ||
727 | { .parent = &apll54_ck, .rates = func_54m_apll54_rates, }, | ||
728 | { .parent = &alt_ck, .rates = func_54m_alt_rates, }, | ||
729 | { .parent = NULL }, | ||
730 | }; | ||
731 | |||
732 | static struct clk func_54m_ck = { | ||
733 | .name = "func_54m_ck", | ||
734 | .parent = &apll54_ck, /* can also be alt_clk */ | ||
735 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
736 | RATE_PROPAGATES | PARENT_CONTROLS_CLOCK, | ||
737 | .init = &omap2_init_clksel_parent, | ||
738 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
739 | .clksel_mask = OMAP24XX_54M_SOURCE, | ||
740 | .clksel = func_54m_clksel, | ||
741 | .recalc = &omap2_clksel_recalc, | ||
742 | }; | ||
743 | |||
744 | static struct clk core_ck = { | ||
745 | .name = "core_ck", | ||
746 | .parent = &dpll_ck, /* can also be 32k */ | ||
747 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
748 | ALWAYS_ENABLED | RATE_PROPAGATES, | ||
749 | .recalc = &followparent_recalc, | ||
750 | }; | ||
751 | |||
752 | /* func_96m_ck */ | ||
753 | static const struct clksel_rate func_96m_apll96_rates[] = { | ||
754 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
755 | { .div = 0 }, | ||
756 | }; | ||
757 | |||
758 | static const struct clksel_rate func_96m_alt_rates[] = { | ||
759 | { .div = 1, .val = 1, .flags = RATE_IN_243X | DEFAULT_RATE }, | ||
760 | { .div = 0 }, | ||
761 | }; | ||
762 | |||
763 | static const struct clksel func_96m_clksel[] = { | ||
764 | { .parent = &apll96_ck, .rates = func_96m_apll96_rates }, | ||
765 | { .parent = &alt_ck, .rates = func_96m_alt_rates }, | ||
766 | { .parent = NULL } | ||
767 | }; | ||
768 | |||
769 | /* The parent of this clock is not selectable on 2420. */ | ||
770 | static struct clk func_96m_ck = { | ||
771 | .name = "func_96m_ck", | ||
772 | .parent = &apll96_ck, | ||
773 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
774 | RATE_PROPAGATES | PARENT_CONTROLS_CLOCK, | ||
775 | .init = &omap2_init_clksel_parent, | ||
776 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
777 | .clksel_mask = OMAP2430_96M_SOURCE, | ||
778 | .clksel = func_96m_clksel, | ||
779 | .recalc = &omap2_clksel_recalc, | ||
780 | .round_rate = &omap2_clksel_round_rate, | ||
781 | .set_rate = &omap2_clksel_set_rate | ||
782 | }; | ||
783 | |||
784 | /* func_48m_ck */ | ||
785 | |||
786 | static const struct clksel_rate func_48m_apll96_rates[] = { | ||
787 | { .div = 2, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
788 | { .div = 0 }, | ||
789 | }; | ||
790 | |||
791 | static const struct clksel_rate func_48m_alt_rates[] = { | ||
792 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
793 | { .div = 0 }, | ||
794 | }; | ||
795 | |||
796 | static const struct clksel func_48m_clksel[] = { | ||
797 | { .parent = &apll96_ck, .rates = func_48m_apll96_rates }, | ||
798 | { .parent = &alt_ck, .rates = func_48m_alt_rates }, | ||
799 | { .parent = NULL } | ||
800 | }; | ||
801 | |||
802 | static struct clk func_48m_ck = { | ||
803 | .name = "func_48m_ck", | ||
804 | .parent = &apll96_ck, /* 96M or Alt */ | ||
805 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
806 | RATE_PROPAGATES | PARENT_CONTROLS_CLOCK, | ||
807 | .init = &omap2_init_clksel_parent, | ||
808 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
809 | .clksel_mask = OMAP24XX_48M_SOURCE, | ||
810 | .clksel = func_48m_clksel, | ||
811 | .recalc = &omap2_clksel_recalc, | ||
812 | .round_rate = &omap2_clksel_round_rate, | ||
813 | .set_rate = &omap2_clksel_set_rate | ||
814 | }; | ||
815 | |||
816 | static struct clk func_12m_ck = { | ||
817 | .name = "func_12m_ck", | ||
818 | .parent = &func_48m_ck, | ||
819 | .fixed_div = 4, | ||
820 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
821 | RATE_PROPAGATES | PARENT_CONTROLS_CLOCK, | ||
822 | .recalc = &omap2_fixed_divisor_recalc, | ||
823 | }; | ||
824 | |||
825 | /* Secure timer, only available in secure mode */ | ||
826 | static struct clk wdt1_osc_ck = { | ||
827 | .name = "ck_wdt1_osc", | ||
828 | .parent = &osc_ck, | ||
829 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
830 | .recalc = &followparent_recalc, | ||
831 | }; | ||
832 | |||
833 | /* | ||
834 | * The common_clkout* clksel_rate structs are common to | ||
835 | * sys_clkout, sys_clkout_src, sys_clkout2, and sys_clkout2_src. | ||
836 | * sys_clkout2_* are 2420-only, so the | ||
837 | * clksel_rate flags fields are inaccurate for those clocks. This is | ||
838 | * harmless since access to those clocks are gated by the struct clk | ||
839 | * flags fields, which mark them as 2420-only. | ||
840 | */ | ||
841 | static const struct clksel_rate common_clkout_src_core_rates[] = { | ||
842 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
843 | { .div = 0 } | ||
844 | }; | ||
845 | |||
846 | static const struct clksel_rate common_clkout_src_sys_rates[] = { | ||
847 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
848 | { .div = 0 } | ||
849 | }; | ||
850 | |||
851 | static const struct clksel_rate common_clkout_src_96m_rates[] = { | ||
852 | { .div = 1, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
853 | { .div = 0 } | ||
854 | }; | ||
855 | |||
856 | static const struct clksel_rate common_clkout_src_54m_rates[] = { | ||
857 | { .div = 1, .val = 3, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
858 | { .div = 0 } | ||
859 | }; | ||
860 | |||
861 | static const struct clksel common_clkout_src_clksel[] = { | ||
862 | { .parent = &core_ck, .rates = common_clkout_src_core_rates }, | ||
863 | { .parent = &sys_ck, .rates = common_clkout_src_sys_rates }, | ||
864 | { .parent = &func_96m_ck, .rates = common_clkout_src_96m_rates }, | ||
865 | { .parent = &func_54m_ck, .rates = common_clkout_src_54m_rates }, | ||
866 | { .parent = NULL } | ||
867 | }; | ||
868 | |||
869 | static struct clk sys_clkout_src = { | ||
870 | .name = "sys_clkout_src", | ||
871 | .parent = &func_54m_ck, | ||
872 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
873 | RATE_PROPAGATES, | ||
874 | .enable_reg = OMAP24XX_PRCM_CLKOUT_CTRL, | ||
875 | .enable_bit = OMAP24XX_CLKOUT_EN_SHIFT, | ||
876 | .init = &omap2_init_clksel_parent, | ||
877 | .clksel_reg = OMAP24XX_PRCM_CLKOUT_CTRL, | ||
878 | .clksel_mask = OMAP24XX_CLKOUT_SOURCE_MASK, | ||
879 | .clksel = common_clkout_src_clksel, | ||
880 | .recalc = &omap2_clksel_recalc, | ||
881 | .round_rate = &omap2_clksel_round_rate, | ||
882 | .set_rate = &omap2_clksel_set_rate | ||
883 | }; | ||
884 | |||
885 | static const struct clksel_rate common_clkout_rates[] = { | ||
886 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
887 | { .div = 2, .val = 1, .flags = RATE_IN_24XX }, | ||
888 | { .div = 4, .val = 2, .flags = RATE_IN_24XX }, | ||
889 | { .div = 8, .val = 3, .flags = RATE_IN_24XX }, | ||
890 | { .div = 16, .val = 4, .flags = RATE_IN_24XX }, | ||
891 | { .div = 0 }, | ||
892 | }; | ||
893 | |||
894 | static const struct clksel sys_clkout_clksel[] = { | ||
895 | { .parent = &sys_clkout_src, .rates = common_clkout_rates }, | ||
896 | { .parent = NULL } | ||
897 | }; | ||
898 | |||
899 | static struct clk sys_clkout = { | ||
900 | .name = "sys_clkout", | ||
901 | .parent = &sys_clkout_src, | ||
902 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
903 | PARENT_CONTROLS_CLOCK, | ||
904 | .clksel_reg = OMAP24XX_PRCM_CLKOUT_CTRL, | ||
905 | .clksel_mask = OMAP24XX_CLKOUT_DIV_MASK, | ||
906 | .clksel = sys_clkout_clksel, | ||
907 | .recalc = &omap2_clksel_recalc, | ||
908 | .round_rate = &omap2_clksel_round_rate, | ||
909 | .set_rate = &omap2_clksel_set_rate | ||
910 | }; | ||
911 | |||
912 | /* In 2430, new in 2420 ES2 */ | ||
913 | static struct clk sys_clkout2_src = { | ||
914 | .name = "sys_clkout2_src", | ||
915 | .parent = &func_54m_ck, | ||
916 | .flags = CLOCK_IN_OMAP242X | RATE_PROPAGATES, | ||
917 | .enable_reg = OMAP24XX_PRCM_CLKOUT_CTRL, | ||
918 | .enable_bit = OMAP2420_CLKOUT2_EN_SHIFT, | ||
919 | .init = &omap2_init_clksel_parent, | ||
920 | .clksel_reg = OMAP24XX_PRCM_CLKOUT_CTRL, | ||
921 | .clksel_mask = OMAP2420_CLKOUT2_SOURCE_MASK, | ||
922 | .clksel = common_clkout_src_clksel, | ||
923 | .recalc = &omap2_clksel_recalc, | ||
924 | .round_rate = &omap2_clksel_round_rate, | ||
925 | .set_rate = &omap2_clksel_set_rate | ||
926 | }; | ||
927 | |||
928 | static const struct clksel sys_clkout2_clksel[] = { | ||
929 | { .parent = &sys_clkout2_src, .rates = common_clkout_rates }, | ||
930 | { .parent = NULL } | ||
931 | }; | ||
932 | |||
933 | /* In 2430, new in 2420 ES2 */ | ||
934 | static struct clk sys_clkout2 = { | ||
935 | .name = "sys_clkout2", | ||
936 | .parent = &sys_clkout2_src, | ||
937 | .flags = CLOCK_IN_OMAP242X | PARENT_CONTROLS_CLOCK, | ||
938 | .clksel_reg = OMAP24XX_PRCM_CLKOUT_CTRL, | ||
939 | .clksel_mask = OMAP2420_CLKOUT2_DIV_MASK, | ||
940 | .clksel = sys_clkout2_clksel, | ||
941 | .recalc = &omap2_clksel_recalc, | ||
942 | .round_rate = &omap2_clksel_round_rate, | ||
943 | .set_rate = &omap2_clksel_set_rate | ||
944 | }; | ||
945 | |||
946 | static struct clk emul_ck = { | ||
947 | .name = "emul_ck", | ||
948 | .parent = &func_54m_ck, | ||
949 | .flags = CLOCK_IN_OMAP242X, | ||
950 | .enable_reg = OMAP24XX_PRCM_CLKEMUL_CTRL, | ||
951 | .enable_bit = OMAP24XX_EMULATION_EN_SHIFT, | ||
952 | .recalc = &followparent_recalc, | ||
953 | |||
954 | }; | ||
955 | |||
956 | /* | ||
957 | * MPU clock domain | ||
958 | * Clocks: | ||
959 | * MPU_FCLK, MPU_ICLK | ||
960 | * INT_M_FCLK, INT_M_I_CLK | ||
961 | * | ||
962 | * - Individual clocks are hardware managed. | ||
963 | * - Base divider comes from: CM_CLKSEL_MPU | ||
964 | * | ||
965 | */ | ||
966 | static const struct clksel_rate mpu_core_rates[] = { | ||
967 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
968 | { .div = 2, .val = 2, .flags = RATE_IN_24XX }, | ||
969 | { .div = 4, .val = 4, .flags = RATE_IN_242X }, | ||
970 | { .div = 6, .val = 6, .flags = RATE_IN_242X }, | ||
971 | { .div = 8, .val = 8, .flags = RATE_IN_242X }, | ||
972 | { .div = 0 }, | ||
973 | }; | ||
974 | |||
975 | static const struct clksel mpu_clksel[] = { | ||
976 | { .parent = &core_ck, .rates = mpu_core_rates }, | ||
977 | { .parent = NULL } | ||
978 | }; | ||
979 | |||
980 | static struct clk mpu_ck = { /* Control cpu */ | ||
981 | .name = "mpu_ck", | ||
982 | .parent = &core_ck, | ||
983 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
984 | ALWAYS_ENABLED | DELAYED_APP | | ||
985 | CONFIG_PARTICIPANT | RATE_PROPAGATES, | ||
986 | .init = &omap2_init_clksel_parent, | ||
987 | .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, CM_CLKSEL), | ||
988 | .clksel_mask = OMAP24XX_CLKSEL_MPU_MASK, | ||
989 | .clksel = mpu_clksel, | ||
990 | .recalc = &omap2_clksel_recalc, | ||
991 | .round_rate = &omap2_clksel_round_rate, | ||
992 | .set_rate = &omap2_clksel_set_rate | ||
993 | }; | ||
994 | |||
995 | /* | ||
996 | * DSP (2430-IVA2.1) (2420-UMA+IVA1) clock domain | ||
997 | * Clocks: | ||
998 | * 2430: IVA2.1_FCLK (really just DSP_FCLK), IVA2.1_ICLK | ||
999 | * 2420: UMA_FCLK, UMA_ICLK, IVA_MPU, IVA_COP | ||
1000 | * | ||
1001 | * Won't be too specific here. The core clock comes into this block | ||
1002 | * it is divided then tee'ed. One branch goes directly to xyz enable | ||
1003 | * controls. The other branch gets further divided by 2 then possibly | ||
1004 | * routed into a synchronizer and out of clocks abc. | ||
1005 | */ | ||
1006 | static const struct clksel_rate dsp_fck_core_rates[] = { | ||
1007 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1008 | { .div = 2, .val = 2, .flags = RATE_IN_24XX }, | ||
1009 | { .div = 3, .val = 3, .flags = RATE_IN_24XX }, | ||
1010 | { .div = 4, .val = 4, .flags = RATE_IN_24XX }, | ||
1011 | { .div = 6, .val = 6, .flags = RATE_IN_242X }, | ||
1012 | { .div = 8, .val = 8, .flags = RATE_IN_242X }, | ||
1013 | { .div = 12, .val = 12, .flags = RATE_IN_242X }, | ||
1014 | { .div = 0 }, | ||
1015 | }; | ||
1016 | |||
1017 | static const struct clksel dsp_fck_clksel[] = { | ||
1018 | { .parent = &core_ck, .rates = dsp_fck_core_rates }, | ||
1019 | { .parent = NULL } | ||
1020 | }; | ||
1021 | |||
1022 | static struct clk dsp_fck = { | ||
1023 | .name = "dsp_fck", | ||
1024 | .parent = &core_ck, | ||
1025 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | DELAYED_APP | | ||
1026 | CONFIG_PARTICIPANT | RATE_PROPAGATES, | ||
1027 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), | ||
1028 | .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, | ||
1029 | .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), | ||
1030 | .clksel_mask = OMAP24XX_CLKSEL_DSP_MASK, | ||
1031 | .clksel = dsp_fck_clksel, | ||
1032 | .recalc = &omap2_clksel_recalc, | ||
1033 | .round_rate = &omap2_clksel_round_rate, | ||
1034 | .set_rate = &omap2_clksel_set_rate | ||
1035 | }; | ||
1036 | |||
1037 | /* DSP interface clock */ | ||
1038 | static const struct clksel_rate dsp_irate_ick_rates[] = { | ||
1039 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1040 | { .div = 2, .val = 2, .flags = RATE_IN_24XX }, | ||
1041 | { .div = 3, .val = 3, .flags = RATE_IN_243X }, | ||
1042 | { .div = 0 }, | ||
1043 | }; | ||
1044 | |||
1045 | static const struct clksel dsp_irate_ick_clksel[] = { | ||
1046 | { .parent = &dsp_fck, .rates = dsp_irate_ick_rates }, | ||
1047 | { .parent = NULL } | ||
1048 | }; | ||
1049 | |||
1050 | /* | ||
1051 | * This clock does not exist as such in the TRM, but is added to | ||
1052 | * separate source selection from XXX | ||
1053 | */ | ||
1054 | static struct clk dsp_irate_ick = { | ||
1055 | .name = "dsp_irate_ick", | ||
1056 | .parent = &dsp_fck, | ||
1057 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | DELAYED_APP | | ||
1058 | CONFIG_PARTICIPANT | PARENT_CONTROLS_CLOCK, | ||
1059 | .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), | ||
1060 | .clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK, | ||
1061 | .clksel = dsp_irate_ick_clksel, | ||
1062 | .recalc = &omap2_clksel_recalc, | ||
1063 | .round_rate = &omap2_clksel_round_rate, | ||
1064 | .set_rate = &omap2_clksel_set_rate | ||
1065 | }; | ||
1066 | |||
1067 | /* 2420 only */ | ||
1068 | static struct clk dsp_ick = { | ||
1069 | .name = "dsp_ick", /* apparently ipi and isp */ | ||
1070 | .parent = &dsp_irate_ick, | ||
1071 | .flags = CLOCK_IN_OMAP242X | DELAYED_APP | CONFIG_PARTICIPANT, | ||
1072 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_ICLKEN), | ||
1073 | .enable_bit = OMAP2420_EN_DSP_IPI_SHIFT, /* for ipi */ | ||
1074 | }; | ||
1075 | |||
1076 | /* 2430 only - EN_DSP controls both dsp fclk and iclk on 2430 */ | ||
1077 | static struct clk iva2_1_ick = { | ||
1078 | .name = "iva2_1_ick", | ||
1079 | .parent = &dsp_irate_ick, | ||
1080 | .flags = CLOCK_IN_OMAP243X | DELAYED_APP | CONFIG_PARTICIPANT, | ||
1081 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), | ||
1082 | .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, | ||
1083 | }; | ||
1084 | |||
1085 | static struct clk iva1_ifck = { | ||
1086 | .name = "iva1_ifck", | ||
1087 | .parent = &core_ck, | ||
1088 | .flags = CLOCK_IN_OMAP242X | CONFIG_PARTICIPANT | | ||
1089 | RATE_PROPAGATES | DELAYED_APP, | ||
1090 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), | ||
1091 | .enable_bit = OMAP2420_EN_IVA_COP_SHIFT, | ||
1092 | .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), | ||
1093 | .clksel_mask = OMAP2420_CLKSEL_IVA_MASK, | ||
1094 | .clksel = dsp_fck_clksel, | ||
1095 | .recalc = &omap2_clksel_recalc, | ||
1096 | .round_rate = &omap2_clksel_round_rate, | ||
1097 | .set_rate = &omap2_clksel_set_rate | ||
1098 | }; | ||
1099 | |||
1100 | /* IVA1 mpu/int/i/f clocks are /2 of parent */ | ||
1101 | static struct clk iva1_mpu_int_ifck = { | ||
1102 | .name = "iva1_mpu_int_ifck", | ||
1103 | .parent = &iva1_ifck, | ||
1104 | .flags = CLOCK_IN_OMAP242X, | ||
1105 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), | ||
1106 | .enable_bit = OMAP2420_EN_IVA_MPU_SHIFT, | ||
1107 | .fixed_div = 2, | ||
1108 | .recalc = &omap2_fixed_divisor_recalc, | ||
1109 | }; | ||
1110 | |||
1111 | /* | ||
1112 | * L3 clock domain | ||
1113 | * L3 clocks are used for both interface and functional clocks to | ||
1114 | * multiple entities. Some of these clocks are completely managed | ||
1115 | * by hardware, and some others allow software control. Hardware | ||
1116 | * managed ones general are based on directly CLK_REQ signals and | ||
1117 | * various auto idle settings. The functional spec sets many of these | ||
1118 | * as 'tie-high' for their enables. | ||
1119 | * | ||
1120 | * I-CLOCKS: | ||
1121 | * L3-Interconnect, SMS, GPMC, SDRC, OCM_RAM, OCM_ROM, SDMA | ||
1122 | * CAM, HS-USB. | ||
1123 | * F-CLOCK | ||
1124 | * SSI. | ||
1125 | * | ||
1126 | * GPMC memories and SDRC have timing and clock sensitive registers which | ||
1127 | * may very well need notification when the clock changes. Currently for low | ||
1128 | * operating points, these are taken care of in sleep.S. | ||
1129 | */ | ||
1130 | static const struct clksel_rate core_l3_core_rates[] = { | ||
1131 | { .div = 1, .val = 1, .flags = RATE_IN_24XX }, | ||
1132 | { .div = 2, .val = 2, .flags = RATE_IN_242X }, | ||
1133 | { .div = 4, .val = 4, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1134 | { .div = 6, .val = 6, .flags = RATE_IN_24XX }, | ||
1135 | { .div = 8, .val = 8, .flags = RATE_IN_242X }, | ||
1136 | { .div = 12, .val = 12, .flags = RATE_IN_242X }, | ||
1137 | { .div = 16, .val = 16, .flags = RATE_IN_242X }, | ||
1138 | { .div = 0 } | ||
1139 | }; | ||
1140 | |||
1141 | static const struct clksel core_l3_clksel[] = { | ||
1142 | { .parent = &core_ck, .rates = core_l3_core_rates }, | ||
1143 | { .parent = NULL } | ||
1144 | }; | ||
1145 | |||
1146 | static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */ | ||
1147 | .name = "core_l3_ck", | ||
1148 | .parent = &core_ck, | ||
1149 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1150 | ALWAYS_ENABLED | DELAYED_APP | | ||
1151 | CONFIG_PARTICIPANT | RATE_PROPAGATES, | ||
1152 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
1153 | .clksel_mask = OMAP24XX_CLKSEL_L3_MASK, | ||
1154 | .clksel = core_l3_clksel, | ||
1155 | .recalc = &omap2_clksel_recalc, | ||
1156 | .round_rate = &omap2_clksel_round_rate, | ||
1157 | .set_rate = &omap2_clksel_set_rate | ||
1158 | }; | ||
1159 | |||
1160 | /* usb_l4_ick */ | ||
1161 | static const struct clksel_rate usb_l4_ick_core_l3_rates[] = { | ||
1162 | { .div = 1, .val = 1, .flags = RATE_IN_24XX }, | ||
1163 | { .div = 2, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1164 | { .div = 4, .val = 4, .flags = RATE_IN_24XX }, | ||
1165 | { .div = 0 } | ||
1166 | }; | ||
1167 | |||
1168 | static const struct clksel usb_l4_ick_clksel[] = { | ||
1169 | { .parent = &core_l3_ck, .rates = usb_l4_ick_core_l3_rates }, | ||
1170 | { .parent = NULL }, | ||
1171 | }; | ||
1172 | |||
1173 | static struct clk usb_l4_ick = { /* FS-USB interface clock */ | ||
1174 | .name = "usb_l4_ick", | ||
1175 | .parent = &core_l3_ck, | ||
1176 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1177 | DELAYED_APP | CONFIG_PARTICIPANT, | ||
1178 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1179 | .enable_bit = OMAP24XX_EN_USB_SHIFT, | ||
1180 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
1181 | .clksel_mask = OMAP24XX_CLKSEL_USB_MASK, | ||
1182 | .clksel = usb_l4_ick_clksel, | ||
1183 | .recalc = &omap2_clksel_recalc, | ||
1184 | .round_rate = &omap2_clksel_round_rate, | ||
1185 | .set_rate = &omap2_clksel_set_rate | ||
1186 | }; | ||
1187 | |||
1188 | /* | ||
1189 | * SSI is in L3 management domain, its direct parent is core not l3, | ||
1190 | * many core power domain entities are grouped into the L3 clock | ||
1191 | * domain. | ||
1192 | * SSI_SSR_FCLK, SSI_SST_FCLK, SSI_L4_CLIK | ||
1193 | * | ||
1194 | * ssr = core/1/2/3/4/5, sst = 1/2 ssr. | ||
1195 | */ | ||
1196 | static const struct clksel_rate ssi_ssr_sst_fck_core_rates[] = { | ||
1197 | { .div = 1, .val = 1, .flags = RATE_IN_24XX }, | ||
1198 | { .div = 2, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1199 | { .div = 3, .val = 3, .flags = RATE_IN_24XX }, | ||
1200 | { .div = 4, .val = 4, .flags = RATE_IN_24XX }, | ||
1201 | { .div = 5, .val = 5, .flags = RATE_IN_243X }, | ||
1202 | { .div = 6, .val = 6, .flags = RATE_IN_242X }, | ||
1203 | { .div = 8, .val = 8, .flags = RATE_IN_242X }, | ||
1204 | { .div = 0 } | ||
1205 | }; | ||
1206 | |||
1207 | static const struct clksel ssi_ssr_sst_fck_clksel[] = { | ||
1208 | { .parent = &core_ck, .rates = ssi_ssr_sst_fck_core_rates }, | ||
1209 | { .parent = NULL } | ||
1210 | }; | ||
1211 | |||
1212 | static struct clk ssi_ssr_sst_fck = { | ||
1213 | .name = "ssi_fck", | ||
1214 | .parent = &core_ck, | ||
1215 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1216 | DELAYED_APP, | ||
1217 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
1218 | .enable_bit = OMAP24XX_EN_SSI_SHIFT, | ||
1219 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
1220 | .clksel_mask = OMAP24XX_CLKSEL_SSI_MASK, | ||
1221 | .clksel = ssi_ssr_sst_fck_clksel, | ||
1222 | .recalc = &omap2_clksel_recalc, | ||
1223 | .round_rate = &omap2_clksel_round_rate, | ||
1224 | .set_rate = &omap2_clksel_set_rate | ||
1225 | }; | ||
1226 | |||
1227 | /* | ||
1228 | * GFX clock domain | ||
1229 | * Clocks: | ||
1230 | * GFX_FCLK, GFX_ICLK | ||
1231 | * GFX_CG1(2d), GFX_CG2(3d) | ||
1232 | * | ||
1233 | * GFX_FCLK runs from L3, and is divided by (1,2,3,4) | ||
1234 | * The 2d and 3d clocks run at a hardware determined | ||
1235 | * divided value of fclk. | ||
1236 | * | ||
1237 | */ | ||
1238 | /* XXX REVISIT: GFX clock is part of CONFIG_PARTICIPANT, no? doublecheck. */ | ||
1239 | |||
1240 | /* This clksel struct is shared between gfx_3d_fck and gfx_2d_fck */ | ||
1241 | static const struct clksel gfx_fck_clksel[] = { | ||
1242 | { .parent = &core_l3_ck, .rates = gfx_l3_rates }, | ||
1243 | { .parent = NULL }, | ||
1244 | }; | ||
1245 | |||
1246 | static struct clk gfx_3d_fck = { | ||
1247 | .name = "gfx_3d_fck", | ||
1248 | .parent = &core_l3_ck, | ||
1249 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1250 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN), | ||
1251 | .enable_bit = OMAP24XX_EN_3D_SHIFT, | ||
1252 | .clksel_reg = OMAP_CM_REGADDR(GFX_MOD, CM_CLKSEL), | ||
1253 | .clksel_mask = OMAP_CLKSEL_GFX_MASK, | ||
1254 | .clksel = gfx_fck_clksel, | ||
1255 | .recalc = &omap2_clksel_recalc, | ||
1256 | .round_rate = &omap2_clksel_round_rate, | ||
1257 | .set_rate = &omap2_clksel_set_rate | ||
1258 | }; | ||
1259 | |||
1260 | static struct clk gfx_2d_fck = { | ||
1261 | .name = "gfx_2d_fck", | ||
1262 | .parent = &core_l3_ck, | ||
1263 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1264 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN), | ||
1265 | .enable_bit = OMAP24XX_EN_2D_SHIFT, | ||
1266 | .clksel_reg = OMAP_CM_REGADDR(GFX_MOD, CM_CLKSEL), | ||
1267 | .clksel_mask = OMAP_CLKSEL_GFX_MASK, | ||
1268 | .clksel = gfx_fck_clksel, | ||
1269 | .recalc = &omap2_clksel_recalc, | ||
1270 | .round_rate = &omap2_clksel_round_rate, | ||
1271 | .set_rate = &omap2_clksel_set_rate | ||
1272 | }; | ||
1273 | |||
1274 | static struct clk gfx_ick = { | ||
1275 | .name = "gfx_ick", /* From l3 */ | ||
1276 | .parent = &core_l3_ck, | ||
1277 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1278 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), | ||
1279 | .enable_bit = OMAP_EN_GFX_SHIFT, | ||
1280 | .recalc = &followparent_recalc, | ||
1281 | }; | ||
1282 | |||
1283 | /* | ||
1284 | * Modem clock domain (2430) | ||
1285 | * CLOCKS: | ||
1286 | * MDM_OSC_CLK | ||
1287 | * MDM_ICLK | ||
1288 | * These clocks are usable in chassis mode only. | ||
1289 | */ | ||
1290 | static const struct clksel_rate mdm_ick_core_rates[] = { | ||
1291 | { .div = 1, .val = 1, .flags = RATE_IN_243X }, | ||
1292 | { .div = 4, .val = 4, .flags = RATE_IN_243X | DEFAULT_RATE }, | ||
1293 | { .div = 6, .val = 6, .flags = RATE_IN_243X }, | ||
1294 | { .div = 9, .val = 9, .flags = RATE_IN_243X }, | ||
1295 | { .div = 0 } | ||
1296 | }; | ||
1297 | |||
1298 | static const struct clksel mdm_ick_clksel[] = { | ||
1299 | { .parent = &core_ck, .rates = mdm_ick_core_rates }, | ||
1300 | { .parent = NULL } | ||
1301 | }; | ||
1302 | |||
1303 | static struct clk mdm_ick = { /* used both as a ick and fck */ | ||
1304 | .name = "mdm_ick", | ||
1305 | .parent = &core_ck, | ||
1306 | .flags = CLOCK_IN_OMAP243X | DELAYED_APP | CONFIG_PARTICIPANT, | ||
1307 | .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN), | ||
1308 | .enable_bit = OMAP2430_CM_ICLKEN_MDM_EN_MDM_SHIFT, | ||
1309 | .clksel_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_CLKSEL), | ||
1310 | .clksel_mask = OMAP2430_CLKSEL_MDM_MASK, | ||
1311 | .clksel = mdm_ick_clksel, | ||
1312 | .recalc = &omap2_clksel_recalc, | ||
1313 | .round_rate = &omap2_clksel_round_rate, | ||
1314 | .set_rate = &omap2_clksel_set_rate | ||
1315 | }; | ||
1316 | |||
1317 | static struct clk mdm_osc_ck = { | ||
1318 | .name = "mdm_osc_ck", | ||
1319 | .parent = &osc_ck, | ||
1320 | .flags = CLOCK_IN_OMAP243X, | ||
1321 | .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_FCLKEN), | ||
1322 | .enable_bit = OMAP2430_EN_OSC_SHIFT, | ||
1323 | .recalc = &followparent_recalc, | ||
1324 | }; | ||
1325 | |||
1326 | /* | ||
1327 | * L4 clock management domain | ||
1328 | * | ||
1329 | * This domain contains lots of interface clocks from the L4 interface, some | ||
1330 | * functional clocks. Fixed APLL functional source clocks are managed in | ||
1331 | * this domain. | ||
1332 | */ | ||
1333 | static const struct clksel_rate l4_core_l3_rates[] = { | ||
1334 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1335 | { .div = 2, .val = 2, .flags = RATE_IN_24XX }, | ||
1336 | { .div = 0 } | ||
1337 | }; | ||
1338 | |||
1339 | static const struct clksel l4_clksel[] = { | ||
1340 | { .parent = &core_l3_ck, .rates = l4_core_l3_rates }, | ||
1341 | { .parent = NULL } | ||
1342 | }; | ||
1343 | |||
1344 | static struct clk l4_ck = { /* used both as an ick and fck */ | ||
1345 | .name = "l4_ck", | ||
1346 | .parent = &core_l3_ck, | ||
1347 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1348 | ALWAYS_ENABLED | DELAYED_APP | RATE_PROPAGATES, | ||
1349 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
1350 | .clksel_mask = OMAP24XX_CLKSEL_L4_MASK, | ||
1351 | .clksel = l4_clksel, | ||
1352 | .recalc = &omap2_clksel_recalc, | ||
1353 | .round_rate = &omap2_clksel_round_rate, | ||
1354 | .set_rate = &omap2_clksel_set_rate | ||
1355 | }; | ||
1356 | |||
1357 | static struct clk ssi_l4_ick = { | ||
1358 | .name = "ssi_l4_ick", | ||
1359 | .parent = &l4_ck, | ||
1360 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1361 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1362 | .enable_bit = OMAP24XX_EN_SSI_SHIFT, | ||
1363 | .recalc = &followparent_recalc, | ||
1364 | }; | ||
1365 | |||
1366 | /* | ||
1367 | * DSS clock domain | ||
1368 | * CLOCKs: | ||
1369 | * DSS_L4_ICLK, DSS_L3_ICLK, | ||
1370 | * DSS_CLK1, DSS_CLK2, DSS_54MHz_CLK | ||
1371 | * | ||
1372 | * DSS is both initiator and target. | ||
1373 | */ | ||
1374 | /* XXX Add RATE_NOT_VALIDATED */ | ||
1375 | |||
1376 | static const struct clksel_rate dss1_fck_sys_rates[] = { | ||
1377 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1378 | { .div = 0 } | ||
1379 | }; | ||
1380 | |||
1381 | static const struct clksel_rate dss1_fck_core_rates[] = { | ||
1382 | { .div = 1, .val = 1, .flags = RATE_IN_24XX }, | ||
1383 | { .div = 2, .val = 2, .flags = RATE_IN_24XX }, | ||
1384 | { .div = 3, .val = 3, .flags = RATE_IN_24XX }, | ||
1385 | { .div = 4, .val = 4, .flags = RATE_IN_24XX }, | ||
1386 | { .div = 5, .val = 5, .flags = RATE_IN_24XX }, | ||
1387 | { .div = 6, .val = 6, .flags = RATE_IN_24XX }, | ||
1388 | { .div = 8, .val = 8, .flags = RATE_IN_24XX }, | ||
1389 | { .div = 9, .val = 9, .flags = RATE_IN_24XX }, | ||
1390 | { .div = 12, .val = 12, .flags = RATE_IN_24XX }, | ||
1391 | { .div = 16, .val = 16, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1392 | { .div = 0 } | ||
1393 | }; | ||
1394 | |||
1395 | static const struct clksel dss1_fck_clksel[] = { | ||
1396 | { .parent = &sys_ck, .rates = dss1_fck_sys_rates }, | ||
1397 | { .parent = &core_ck, .rates = dss1_fck_core_rates }, | ||
1398 | { .parent = NULL }, | ||
1399 | }; | ||
1400 | |||
1401 | static struct clk dss_ick = { /* Enables both L3,L4 ICLK's */ | ||
1402 | .name = "dss_ick", | ||
1403 | .parent = &l4_ck, /* really both l3 and l4 */ | ||
1404 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1405 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1406 | .enable_bit = OMAP24XX_EN_DSS1_SHIFT, | ||
1407 | .recalc = &followparent_recalc, | ||
1408 | }; | ||
1409 | |||
1410 | static struct clk dss1_fck = { | ||
1411 | .name = "dss1_fck", | ||
1412 | .parent = &core_ck, /* Core or sys */ | ||
1413 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1414 | DELAYED_APP, | ||
1415 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1416 | .enable_bit = OMAP24XX_EN_DSS1_SHIFT, | ||
1417 | .init = &omap2_init_clksel_parent, | ||
1418 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
1419 | .clksel_mask = OMAP24XX_CLKSEL_DSS1_MASK, | ||
1420 | .clksel = dss1_fck_clksel, | ||
1421 | .recalc = &omap2_clksel_recalc, | ||
1422 | .round_rate = &omap2_clksel_round_rate, | ||
1423 | .set_rate = &omap2_clksel_set_rate | ||
1424 | }; | ||
1425 | |||
1426 | static const struct clksel_rate dss2_fck_sys_rates[] = { | ||
1427 | { .div = 1, .val = 0, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1428 | { .div = 0 } | ||
1429 | }; | ||
1430 | |||
1431 | static const struct clksel_rate dss2_fck_48m_rates[] = { | ||
1432 | { .div = 1, .val = 1, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1433 | { .div = 0 } | ||
1434 | }; | ||
1435 | |||
1436 | static const struct clksel dss2_fck_clksel[] = { | ||
1437 | { .parent = &sys_ck, .rates = dss2_fck_sys_rates }, | ||
1438 | { .parent = &func_48m_ck, .rates = dss2_fck_48m_rates }, | ||
1439 | { .parent = NULL } | ||
1440 | }; | ||
1441 | |||
1442 | static struct clk dss2_fck = { /* Alt clk used in power management */ | ||
1443 | .name = "dss2_fck", | ||
1444 | .parent = &sys_ck, /* fixed at sys_ck or 48MHz */ | ||
1445 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
1446 | DELAYED_APP, | ||
1447 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1448 | .enable_bit = OMAP24XX_EN_DSS2_SHIFT, | ||
1449 | .init = &omap2_init_clksel_parent, | ||
1450 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
1451 | .clksel_mask = OMAP24XX_CLKSEL_DSS2_MASK, | ||
1452 | .clksel = dss2_fck_clksel, | ||
1453 | .recalc = &followparent_recalc, | ||
1454 | }; | ||
1455 | |||
1456 | static struct clk dss_54m_fck = { /* Alt clk used in power management */ | ||
1457 | .name = "dss_54m_fck", /* 54m tv clk */ | ||
1458 | .parent = &func_54m_ck, | ||
1459 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1460 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1461 | .enable_bit = OMAP24XX_EN_TV_SHIFT, | ||
1462 | .recalc = &followparent_recalc, | ||
1463 | }; | ||
1464 | |||
1465 | /* | ||
1466 | * CORE power domain ICLK & FCLK defines. | ||
1467 | * Many of the these can have more than one possible parent. Entries | ||
1468 | * here will likely have an L4 interface parent, and may have multiple | ||
1469 | * functional clock parents. | ||
1470 | */ | ||
1471 | static const struct clksel_rate gpt_alt_rates[] = { | ||
1472 | { .div = 1, .val = 2, .flags = RATE_IN_24XX | DEFAULT_RATE }, | ||
1473 | { .div = 0 } | ||
1474 | }; | ||
1475 | |||
1476 | static const struct clksel omap24xx_gpt_clksel[] = { | ||
1477 | { .parent = &func_32k_ck, .rates = gpt_32k_rates }, | ||
1478 | { .parent = &sys_ck, .rates = gpt_sys_rates }, | ||
1479 | { .parent = &alt_ck, .rates = gpt_alt_rates }, | ||
1480 | { .parent = NULL }, | ||
1481 | }; | ||
1482 | |||
1483 | static struct clk gpt1_ick = { | ||
1484 | .name = "gpt1_ick", | ||
1485 | .parent = &l4_ck, | ||
1486 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1487 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
1488 | .enable_bit = OMAP24XX_EN_GPT1_SHIFT, | ||
1489 | .recalc = &followparent_recalc, | ||
1490 | }; | ||
1491 | |||
1492 | static struct clk gpt1_fck = { | ||
1493 | .name = "gpt1_fck", | ||
1494 | .parent = &func_32k_ck, | ||
1495 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1496 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
1497 | .enable_bit = OMAP24XX_EN_GPT1_SHIFT, | ||
1498 | .init = &omap2_init_clksel_parent, | ||
1499 | .clksel_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_CLKSEL1), | ||
1500 | .clksel_mask = OMAP24XX_CLKSEL_GPT1_MASK, | ||
1501 | .clksel = omap24xx_gpt_clksel, | ||
1502 | .recalc = &omap2_clksel_recalc, | ||
1503 | .round_rate = &omap2_clksel_round_rate, | ||
1504 | .set_rate = &omap2_clksel_set_rate | ||
1505 | }; | ||
1506 | |||
1507 | static struct clk gpt2_ick = { | ||
1508 | .name = "gpt2_ick", | ||
1509 | .parent = &l4_ck, | ||
1510 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1511 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1512 | .enable_bit = OMAP24XX_EN_GPT2_SHIFT, | ||
1513 | .recalc = &followparent_recalc, | ||
1514 | }; | ||
1515 | |||
1516 | static struct clk gpt2_fck = { | ||
1517 | .name = "gpt2_fck", | ||
1518 | .parent = &func_32k_ck, | ||
1519 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1520 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1521 | .enable_bit = OMAP24XX_EN_GPT2_SHIFT, | ||
1522 | .init = &omap2_init_clksel_parent, | ||
1523 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1524 | .clksel_mask = OMAP24XX_CLKSEL_GPT2_MASK, | ||
1525 | .clksel = omap24xx_gpt_clksel, | ||
1526 | .recalc = &omap2_clksel_recalc, | ||
1527 | }; | ||
1528 | |||
1529 | static struct clk gpt3_ick = { | ||
1530 | .name = "gpt3_ick", | ||
1531 | .parent = &l4_ck, | ||
1532 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1533 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1534 | .enable_bit = OMAP24XX_EN_GPT3_SHIFT, | ||
1535 | .recalc = &followparent_recalc, | ||
1536 | }; | ||
1537 | |||
1538 | static struct clk gpt3_fck = { | ||
1539 | .name = "gpt3_fck", | ||
1540 | .parent = &func_32k_ck, | ||
1541 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1542 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1543 | .enable_bit = OMAP24XX_EN_GPT3_SHIFT, | ||
1544 | .init = &omap2_init_clksel_parent, | ||
1545 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1546 | .clksel_mask = OMAP24XX_CLKSEL_GPT3_MASK, | ||
1547 | .clksel = omap24xx_gpt_clksel, | ||
1548 | .recalc = &omap2_clksel_recalc, | ||
1549 | }; | ||
1550 | |||
1551 | static struct clk gpt4_ick = { | ||
1552 | .name = "gpt4_ick", | ||
1553 | .parent = &l4_ck, | ||
1554 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1555 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1556 | .enable_bit = OMAP24XX_EN_GPT4_SHIFT, | ||
1557 | .recalc = &followparent_recalc, | ||
1558 | }; | ||
1559 | |||
1560 | static struct clk gpt4_fck = { | ||
1561 | .name = "gpt4_fck", | ||
1562 | .parent = &func_32k_ck, | ||
1563 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1564 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1565 | .enable_bit = OMAP24XX_EN_GPT4_SHIFT, | ||
1566 | .init = &omap2_init_clksel_parent, | ||
1567 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1568 | .clksel_mask = OMAP24XX_CLKSEL_GPT4_MASK, | ||
1569 | .clksel = omap24xx_gpt_clksel, | ||
1570 | .recalc = &omap2_clksel_recalc, | ||
1571 | }; | ||
1572 | |||
1573 | static struct clk gpt5_ick = { | ||
1574 | .name = "gpt5_ick", | ||
1575 | .parent = &l4_ck, | ||
1576 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1577 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1578 | .enable_bit = OMAP24XX_EN_GPT5_SHIFT, | ||
1579 | .recalc = &followparent_recalc, | ||
1580 | }; | ||
1581 | |||
1582 | static struct clk gpt5_fck = { | ||
1583 | .name = "gpt5_fck", | ||
1584 | .parent = &func_32k_ck, | ||
1585 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1586 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1587 | .enable_bit = OMAP24XX_EN_GPT5_SHIFT, | ||
1588 | .init = &omap2_init_clksel_parent, | ||
1589 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1590 | .clksel_mask = OMAP24XX_CLKSEL_GPT5_MASK, | ||
1591 | .clksel = omap24xx_gpt_clksel, | ||
1592 | .recalc = &omap2_clksel_recalc, | ||
1593 | }; | ||
1594 | |||
1595 | static struct clk gpt6_ick = { | ||
1596 | .name = "gpt6_ick", | ||
1597 | .parent = &l4_ck, | ||
1598 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1599 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1600 | .enable_bit = OMAP24XX_EN_GPT6_SHIFT, | ||
1601 | .recalc = &followparent_recalc, | ||
1602 | }; | ||
1603 | |||
1604 | static struct clk gpt6_fck = { | ||
1605 | .name = "gpt6_fck", | ||
1606 | .parent = &func_32k_ck, | ||
1607 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1608 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1609 | .enable_bit = OMAP24XX_EN_GPT6_SHIFT, | ||
1610 | .init = &omap2_init_clksel_parent, | ||
1611 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1612 | .clksel_mask = OMAP24XX_CLKSEL_GPT6_MASK, | ||
1613 | .clksel = omap24xx_gpt_clksel, | ||
1614 | .recalc = &omap2_clksel_recalc, | ||
1615 | }; | ||
1616 | |||
1617 | static struct clk gpt7_ick = { | ||
1618 | .name = "gpt7_ick", | ||
1619 | .parent = &l4_ck, | ||
1620 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1621 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1622 | .enable_bit = OMAP24XX_EN_GPT7_SHIFT, | ||
1623 | .recalc = &followparent_recalc, | ||
1624 | }; | ||
1625 | |||
1626 | static struct clk gpt7_fck = { | ||
1627 | .name = "gpt7_fck", | ||
1628 | .parent = &func_32k_ck, | ||
1629 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1630 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1631 | .enable_bit = OMAP24XX_EN_GPT7_SHIFT, | ||
1632 | .init = &omap2_init_clksel_parent, | ||
1633 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1634 | .clksel_mask = OMAP24XX_CLKSEL_GPT7_MASK, | ||
1635 | .clksel = omap24xx_gpt_clksel, | ||
1636 | .recalc = &omap2_clksel_recalc, | ||
1637 | }; | ||
1638 | |||
1639 | static struct clk gpt8_ick = { | ||
1640 | .name = "gpt8_ick", | ||
1641 | .parent = &l4_ck, | ||
1642 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1643 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1644 | .enable_bit = OMAP24XX_EN_GPT8_SHIFT, | ||
1645 | .recalc = &followparent_recalc, | ||
1646 | }; | ||
1647 | |||
1648 | static struct clk gpt8_fck = { | ||
1649 | .name = "gpt8_fck", | ||
1650 | .parent = &func_32k_ck, | ||
1651 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1652 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1653 | .enable_bit = OMAP24XX_EN_GPT8_SHIFT, | ||
1654 | .init = &omap2_init_clksel_parent, | ||
1655 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1656 | .clksel_mask = OMAP24XX_CLKSEL_GPT8_MASK, | ||
1657 | .clksel = omap24xx_gpt_clksel, | ||
1658 | .recalc = &omap2_clksel_recalc, | ||
1659 | }; | ||
1660 | |||
1661 | static struct clk gpt9_ick = { | ||
1662 | .name = "gpt9_ick", | ||
1663 | .parent = &l4_ck, | ||
1664 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1665 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1666 | .enable_bit = OMAP24XX_EN_GPT9_SHIFT, | ||
1667 | .recalc = &followparent_recalc, | ||
1668 | }; | ||
1669 | |||
1670 | static struct clk gpt9_fck = { | ||
1671 | .name = "gpt9_fck", | ||
1672 | .parent = &func_32k_ck, | ||
1673 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1674 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1675 | .enable_bit = OMAP24XX_EN_GPT9_SHIFT, | ||
1676 | .init = &omap2_init_clksel_parent, | ||
1677 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1678 | .clksel_mask = OMAP24XX_CLKSEL_GPT9_MASK, | ||
1679 | .clksel = omap24xx_gpt_clksel, | ||
1680 | .recalc = &omap2_clksel_recalc, | ||
1681 | }; | ||
1682 | |||
1683 | static struct clk gpt10_ick = { | ||
1684 | .name = "gpt10_ick", | ||
1685 | .parent = &l4_ck, | ||
1686 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1687 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1688 | .enable_bit = OMAP24XX_EN_GPT10_SHIFT, | ||
1689 | .recalc = &followparent_recalc, | ||
1690 | }; | ||
1691 | |||
1692 | static struct clk gpt10_fck = { | ||
1693 | .name = "gpt10_fck", | ||
1694 | .parent = &func_32k_ck, | ||
1695 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1696 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1697 | .enable_bit = OMAP24XX_EN_GPT10_SHIFT, | ||
1698 | .init = &omap2_init_clksel_parent, | ||
1699 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1700 | .clksel_mask = OMAP24XX_CLKSEL_GPT10_MASK, | ||
1701 | .clksel = omap24xx_gpt_clksel, | ||
1702 | .recalc = &omap2_clksel_recalc, | ||
1703 | }; | ||
1704 | |||
1705 | static struct clk gpt11_ick = { | ||
1706 | .name = "gpt11_ick", | ||
1707 | .parent = &l4_ck, | ||
1708 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1709 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1710 | .enable_bit = OMAP24XX_EN_GPT11_SHIFT, | ||
1711 | .recalc = &followparent_recalc, | ||
1712 | }; | ||
1713 | |||
1714 | static struct clk gpt11_fck = { | ||
1715 | .name = "gpt11_fck", | ||
1716 | .parent = &func_32k_ck, | ||
1717 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1718 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1719 | .enable_bit = OMAP24XX_EN_GPT11_SHIFT, | ||
1720 | .init = &omap2_init_clksel_parent, | ||
1721 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1722 | .clksel_mask = OMAP24XX_CLKSEL_GPT11_MASK, | ||
1723 | .clksel = omap24xx_gpt_clksel, | ||
1724 | .recalc = &omap2_clksel_recalc, | ||
1725 | }; | ||
1726 | |||
1727 | static struct clk gpt12_ick = { | ||
1728 | .name = "gpt12_ick", | ||
1729 | .parent = &l4_ck, | ||
1730 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1731 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1732 | .enable_bit = OMAP24XX_EN_GPT12_SHIFT, | ||
1733 | .recalc = &followparent_recalc, | ||
1734 | }; | ||
1735 | |||
1736 | static struct clk gpt12_fck = { | ||
1737 | .name = "gpt12_fck", | ||
1738 | .parent = &func_32k_ck, | ||
1739 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1740 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1741 | .enable_bit = OMAP24XX_EN_GPT12_SHIFT, | ||
1742 | .init = &omap2_init_clksel_parent, | ||
1743 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL2), | ||
1744 | .clksel_mask = OMAP24XX_CLKSEL_GPT12_MASK, | ||
1745 | .clksel = omap24xx_gpt_clksel, | ||
1746 | .recalc = &omap2_clksel_recalc, | ||
1747 | }; | ||
1748 | |||
1749 | static struct clk mcbsp1_ick = { | ||
1750 | .name = "mcbsp1_ick", | ||
1751 | .parent = &l4_ck, | ||
1752 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1753 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1754 | .enable_bit = OMAP24XX_EN_MCBSP1_SHIFT, | ||
1755 | .recalc = &followparent_recalc, | ||
1756 | }; | ||
1757 | |||
1758 | static struct clk mcbsp1_fck = { | ||
1759 | .name = "mcbsp1_fck", | ||
1760 | .parent = &func_96m_ck, | ||
1761 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1762 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1763 | .enable_bit = OMAP24XX_EN_MCBSP1_SHIFT, | ||
1764 | .recalc = &followparent_recalc, | ||
1765 | }; | ||
1766 | |||
1767 | static struct clk mcbsp2_ick = { | ||
1768 | .name = "mcbsp2_ick", | ||
1769 | .parent = &l4_ck, | ||
1770 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1771 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1772 | .enable_bit = OMAP24XX_EN_MCBSP2_SHIFT, | ||
1773 | .recalc = &followparent_recalc, | ||
1774 | }; | ||
1775 | |||
1776 | static struct clk mcbsp2_fck = { | ||
1777 | .name = "mcbsp2_fck", | ||
1778 | .parent = &func_96m_ck, | ||
1779 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1780 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1781 | .enable_bit = OMAP24XX_EN_MCBSP2_SHIFT, | ||
1782 | .recalc = &followparent_recalc, | ||
1783 | }; | ||
1784 | |||
1785 | static struct clk mcbsp3_ick = { | ||
1786 | .name = "mcbsp3_ick", | ||
1787 | .parent = &l4_ck, | ||
1788 | .flags = CLOCK_IN_OMAP243X, | ||
1789 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1790 | .enable_bit = OMAP2430_EN_MCBSP3_SHIFT, | ||
1791 | .recalc = &followparent_recalc, | ||
1792 | }; | ||
1793 | |||
1794 | static struct clk mcbsp3_fck = { | ||
1795 | .name = "mcbsp3_fck", | ||
1796 | .parent = &func_96m_ck, | ||
1797 | .flags = CLOCK_IN_OMAP243X, | ||
1798 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
1799 | .enable_bit = OMAP2430_EN_MCBSP3_SHIFT, | ||
1800 | .recalc = &followparent_recalc, | ||
1801 | }; | ||
1802 | |||
1803 | static struct clk mcbsp4_ick = { | ||
1804 | .name = "mcbsp4_ick", | ||
1805 | .parent = &l4_ck, | ||
1806 | .flags = CLOCK_IN_OMAP243X, | ||
1807 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1808 | .enable_bit = OMAP2430_EN_MCBSP4_SHIFT, | ||
1809 | .recalc = &followparent_recalc, | ||
1810 | }; | ||
1811 | |||
1812 | static struct clk mcbsp4_fck = { | ||
1813 | .name = "mcbsp4_fck", | ||
1814 | .parent = &func_96m_ck, | ||
1815 | .flags = CLOCK_IN_OMAP243X, | ||
1816 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
1817 | .enable_bit = OMAP2430_EN_MCBSP4_SHIFT, | ||
1818 | .recalc = &followparent_recalc, | ||
1819 | }; | ||
1820 | |||
1821 | static struct clk mcbsp5_ick = { | ||
1822 | .name = "mcbsp5_ick", | ||
1823 | .parent = &l4_ck, | ||
1824 | .flags = CLOCK_IN_OMAP243X, | ||
1825 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1826 | .enable_bit = OMAP2430_EN_MCBSP5_SHIFT, | ||
1827 | .recalc = &followparent_recalc, | ||
1828 | }; | ||
1829 | |||
1830 | static struct clk mcbsp5_fck = { | ||
1831 | .name = "mcbsp5_fck", | ||
1832 | .parent = &func_96m_ck, | ||
1833 | .flags = CLOCK_IN_OMAP243X, | ||
1834 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
1835 | .enable_bit = OMAP2430_EN_MCBSP5_SHIFT, | ||
1836 | .recalc = &followparent_recalc, | ||
1837 | }; | ||
1838 | |||
1839 | static struct clk mcspi1_ick = { | ||
1840 | .name = "mcspi_ick", | ||
1841 | .id = 1, | ||
1842 | .parent = &l4_ck, | ||
1843 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1844 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1845 | .enable_bit = OMAP24XX_EN_MCSPI1_SHIFT, | ||
1846 | .recalc = &followparent_recalc, | ||
1847 | }; | ||
1848 | |||
1849 | static struct clk mcspi1_fck = { | ||
1850 | .name = "mcspi_fck", | ||
1851 | .id = 1, | ||
1852 | .parent = &func_48m_ck, | ||
1853 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1854 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1855 | .enable_bit = OMAP24XX_EN_MCSPI1_SHIFT, | ||
1856 | .recalc = &followparent_recalc, | ||
1857 | }; | ||
1858 | |||
1859 | static struct clk mcspi2_ick = { | ||
1860 | .name = "mcspi_ick", | ||
1861 | .id = 2, | ||
1862 | .parent = &l4_ck, | ||
1863 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1864 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1865 | .enable_bit = OMAP24XX_EN_MCSPI2_SHIFT, | ||
1866 | .recalc = &followparent_recalc, | ||
1867 | }; | ||
1868 | |||
1869 | static struct clk mcspi2_fck = { | ||
1870 | .name = "mcspi_fck", | ||
1871 | .id = 2, | ||
1872 | .parent = &func_48m_ck, | ||
1873 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1874 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1875 | .enable_bit = OMAP24XX_EN_MCSPI2_SHIFT, | ||
1876 | .recalc = &followparent_recalc, | ||
1877 | }; | ||
1878 | |||
1879 | static struct clk mcspi3_ick = { | ||
1880 | .name = "mcspi_ick", | ||
1881 | .id = 3, | ||
1882 | .parent = &l4_ck, | ||
1883 | .flags = CLOCK_IN_OMAP243X, | ||
1884 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1885 | .enable_bit = OMAP2430_EN_MCSPI3_SHIFT, | ||
1886 | .recalc = &followparent_recalc, | ||
1887 | }; | ||
1888 | |||
1889 | static struct clk mcspi3_fck = { | ||
1890 | .name = "mcspi_fck", | ||
1891 | .id = 3, | ||
1892 | .parent = &func_48m_ck, | ||
1893 | .flags = CLOCK_IN_OMAP243X, | ||
1894 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
1895 | .enable_bit = OMAP2430_EN_MCSPI3_SHIFT, | ||
1896 | .recalc = &followparent_recalc, | ||
1897 | }; | ||
1898 | |||
1899 | static struct clk uart1_ick = { | ||
1900 | .name = "uart1_ick", | ||
1901 | .parent = &l4_ck, | ||
1902 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1903 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1904 | .enable_bit = OMAP24XX_EN_UART1_SHIFT, | ||
1905 | .recalc = &followparent_recalc, | ||
1906 | }; | ||
1907 | |||
1908 | static struct clk uart1_fck = { | ||
1909 | .name = "uart1_fck", | ||
1910 | .parent = &func_48m_ck, | ||
1911 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1912 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1913 | .enable_bit = OMAP24XX_EN_UART1_SHIFT, | ||
1914 | .recalc = &followparent_recalc, | ||
1915 | }; | ||
1916 | |||
1917 | static struct clk uart2_ick = { | ||
1918 | .name = "uart2_ick", | ||
1919 | .parent = &l4_ck, | ||
1920 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1921 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1922 | .enable_bit = OMAP24XX_EN_UART2_SHIFT, | ||
1923 | .recalc = &followparent_recalc, | ||
1924 | }; | ||
1925 | |||
1926 | static struct clk uart2_fck = { | ||
1927 | .name = "uart2_fck", | ||
1928 | .parent = &func_48m_ck, | ||
1929 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1930 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1931 | .enable_bit = OMAP24XX_EN_UART2_SHIFT, | ||
1932 | .recalc = &followparent_recalc, | ||
1933 | }; | ||
1934 | |||
1935 | static struct clk uart3_ick = { | ||
1936 | .name = "uart3_ick", | ||
1937 | .parent = &l4_ck, | ||
1938 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1939 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1940 | .enable_bit = OMAP24XX_EN_UART3_SHIFT, | ||
1941 | .recalc = &followparent_recalc, | ||
1942 | }; | ||
1943 | |||
1944 | static struct clk uart3_fck = { | ||
1945 | .name = "uart3_fck", | ||
1946 | .parent = &func_48m_ck, | ||
1947 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1948 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
1949 | .enable_bit = OMAP24XX_EN_UART3_SHIFT, | ||
1950 | .recalc = &followparent_recalc, | ||
1951 | }; | ||
1952 | |||
1953 | static struct clk gpios_ick = { | ||
1954 | .name = "gpios_ick", | ||
1955 | .parent = &l4_ck, | ||
1956 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1957 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
1958 | .enable_bit = OMAP24XX_EN_GPIOS_SHIFT, | ||
1959 | .recalc = &followparent_recalc, | ||
1960 | }; | ||
1961 | |||
1962 | static struct clk gpios_fck = { | ||
1963 | .name = "gpios_fck", | ||
1964 | .parent = &func_32k_ck, | ||
1965 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1966 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
1967 | .enable_bit = OMAP24XX_EN_GPIOS_SHIFT, | ||
1968 | .recalc = &followparent_recalc, | ||
1969 | }; | ||
1970 | |||
1971 | static struct clk mpu_wdt_ick = { | ||
1972 | .name = "mpu_wdt_ick", | ||
1973 | .parent = &l4_ck, | ||
1974 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1975 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
1976 | .enable_bit = OMAP24XX_EN_MPU_WDT_SHIFT, | ||
1977 | .recalc = &followparent_recalc, | ||
1978 | }; | ||
1979 | |||
1980 | static struct clk mpu_wdt_fck = { | ||
1981 | .name = "mpu_wdt_fck", | ||
1982 | .parent = &func_32k_ck, | ||
1983 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
1984 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
1985 | .enable_bit = OMAP24XX_EN_MPU_WDT_SHIFT, | ||
1986 | .recalc = &followparent_recalc, | ||
1987 | }; | ||
1988 | |||
1989 | static struct clk sync_32k_ick = { | ||
1990 | .name = "sync_32k_ick", | ||
1991 | .parent = &l4_ck, | ||
1992 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ENABLE_ON_INIT, | ||
1993 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
1994 | .enable_bit = OMAP24XX_EN_32KSYNC_SHIFT, | ||
1995 | .recalc = &followparent_recalc, | ||
1996 | }; | ||
1997 | static struct clk wdt1_ick = { | ||
1998 | .name = "wdt1_ick", | ||
1999 | .parent = &l4_ck, | ||
2000 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2001 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2002 | .enable_bit = OMAP24XX_EN_WDT1_SHIFT, | ||
2003 | .recalc = &followparent_recalc, | ||
2004 | }; | ||
2005 | static struct clk omapctrl_ick = { | ||
2006 | .name = "omapctrl_ick", | ||
2007 | .parent = &l4_ck, | ||
2008 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ENABLE_ON_INIT, | ||
2009 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2010 | .enable_bit = OMAP24XX_EN_OMAPCTRL_SHIFT, | ||
2011 | .recalc = &followparent_recalc, | ||
2012 | }; | ||
2013 | static struct clk icr_ick = { | ||
2014 | .name = "icr_ick", | ||
2015 | .parent = &l4_ck, | ||
2016 | .flags = CLOCK_IN_OMAP243X, | ||
2017 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2018 | .enable_bit = OMAP2430_EN_ICR_SHIFT, | ||
2019 | .recalc = &followparent_recalc, | ||
2020 | }; | ||
2021 | |||
2022 | static struct clk cam_ick = { | ||
2023 | .name = "cam_ick", | ||
2024 | .parent = &l4_ck, | ||
2025 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2026 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2027 | .enable_bit = OMAP24XX_EN_CAM_SHIFT, | ||
2028 | .recalc = &followparent_recalc, | ||
2029 | }; | ||
2030 | |||
2031 | static struct clk cam_fck = { | ||
2032 | .name = "cam_fck", | ||
2033 | .parent = &func_96m_ck, | ||
2034 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2035 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2036 | .enable_bit = OMAP24XX_EN_CAM_SHIFT, | ||
2037 | .recalc = &followparent_recalc, | ||
2038 | }; | ||
2039 | |||
2040 | static struct clk mailboxes_ick = { | ||
2041 | .name = "mailboxes_ick", | ||
2042 | .parent = &l4_ck, | ||
2043 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2044 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2045 | .enable_bit = OMAP24XX_EN_MAILBOXES_SHIFT, | ||
2046 | .recalc = &followparent_recalc, | ||
2047 | }; | ||
2048 | |||
2049 | static struct clk wdt4_ick = { | ||
2050 | .name = "wdt4_ick", | ||
2051 | .parent = &l4_ck, | ||
2052 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2053 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2054 | .enable_bit = OMAP24XX_EN_WDT4_SHIFT, | ||
2055 | .recalc = &followparent_recalc, | ||
2056 | }; | ||
2057 | |||
2058 | static struct clk wdt4_fck = { | ||
2059 | .name = "wdt4_fck", | ||
2060 | .parent = &func_32k_ck, | ||
2061 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2062 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2063 | .enable_bit = OMAP24XX_EN_WDT4_SHIFT, | ||
2064 | .recalc = &followparent_recalc, | ||
2065 | }; | ||
2066 | |||
2067 | static struct clk wdt3_ick = { | ||
2068 | .name = "wdt3_ick", | ||
2069 | .parent = &l4_ck, | ||
2070 | .flags = CLOCK_IN_OMAP242X, | ||
2071 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2072 | .enable_bit = OMAP2420_EN_WDT3_SHIFT, | ||
2073 | .recalc = &followparent_recalc, | ||
2074 | }; | ||
2075 | |||
2076 | static struct clk wdt3_fck = { | ||
2077 | .name = "wdt3_fck", | ||
2078 | .parent = &func_32k_ck, | ||
2079 | .flags = CLOCK_IN_OMAP242X, | ||
2080 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2081 | .enable_bit = OMAP2420_EN_WDT3_SHIFT, | ||
2082 | .recalc = &followparent_recalc, | ||
2083 | }; | ||
2084 | |||
2085 | static struct clk mspro_ick = { | ||
2086 | .name = "mspro_ick", | ||
2087 | .parent = &l4_ck, | ||
2088 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2089 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2090 | .enable_bit = OMAP24XX_EN_MSPRO_SHIFT, | ||
2091 | .recalc = &followparent_recalc, | ||
2092 | }; | ||
2093 | |||
2094 | static struct clk mspro_fck = { | ||
2095 | .name = "mspro_fck", | ||
2096 | .parent = &func_96m_ck, | ||
2097 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2098 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2099 | .enable_bit = OMAP24XX_EN_MSPRO_SHIFT, | ||
2100 | .recalc = &followparent_recalc, | ||
2101 | }; | ||
2102 | |||
2103 | static struct clk mmc_ick = { | ||
2104 | .name = "mmc_ick", | ||
2105 | .parent = &l4_ck, | ||
2106 | .flags = CLOCK_IN_OMAP242X, | ||
2107 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2108 | .enable_bit = OMAP2420_EN_MMC_SHIFT, | ||
2109 | .recalc = &followparent_recalc, | ||
2110 | }; | ||
2111 | |||
2112 | static struct clk mmc_fck = { | ||
2113 | .name = "mmc_fck", | ||
2114 | .parent = &func_96m_ck, | ||
2115 | .flags = CLOCK_IN_OMAP242X, | ||
2116 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2117 | .enable_bit = OMAP2420_EN_MMC_SHIFT, | ||
2118 | .recalc = &followparent_recalc, | ||
2119 | }; | ||
2120 | |||
2121 | static struct clk fac_ick = { | ||
2122 | .name = "fac_ick", | ||
2123 | .parent = &l4_ck, | ||
2124 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2125 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2126 | .enable_bit = OMAP24XX_EN_FAC_SHIFT, | ||
2127 | .recalc = &followparent_recalc, | ||
2128 | }; | ||
2129 | |||
2130 | static struct clk fac_fck = { | ||
2131 | .name = "fac_fck", | ||
2132 | .parent = &func_12m_ck, | ||
2133 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2134 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2135 | .enable_bit = OMAP24XX_EN_FAC_SHIFT, | ||
2136 | .recalc = &followparent_recalc, | ||
2137 | }; | ||
2138 | |||
2139 | static struct clk eac_ick = { | ||
2140 | .name = "eac_ick", | ||
2141 | .parent = &l4_ck, | ||
2142 | .flags = CLOCK_IN_OMAP242X, | ||
2143 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2144 | .enable_bit = OMAP2420_EN_EAC_SHIFT, | ||
2145 | .recalc = &followparent_recalc, | ||
2146 | }; | ||
2147 | |||
2148 | static struct clk eac_fck = { | ||
2149 | .name = "eac_fck", | ||
2150 | .parent = &func_96m_ck, | ||
2151 | .flags = CLOCK_IN_OMAP242X, | ||
2152 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2153 | .enable_bit = OMAP2420_EN_EAC_SHIFT, | ||
2154 | .recalc = &followparent_recalc, | ||
2155 | }; | ||
2156 | |||
2157 | static struct clk hdq_ick = { | ||
2158 | .name = "hdq_ick", | ||
2159 | .parent = &l4_ck, | ||
2160 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2161 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2162 | .enable_bit = OMAP24XX_EN_HDQ_SHIFT, | ||
2163 | .recalc = &followparent_recalc, | ||
2164 | }; | ||
2165 | |||
2166 | static struct clk hdq_fck = { | ||
2167 | .name = "hdq_fck", | ||
2168 | .parent = &func_12m_ck, | ||
2169 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2170 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2171 | .enable_bit = OMAP24XX_EN_HDQ_SHIFT, | ||
2172 | .recalc = &followparent_recalc, | ||
2173 | }; | ||
2174 | |||
2175 | static struct clk i2c2_ick = { | ||
2176 | .name = "i2c_ick", | ||
2177 | .id = 2, | ||
2178 | .parent = &l4_ck, | ||
2179 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2180 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2181 | .enable_bit = OMAP2420_EN_I2C2_SHIFT, | ||
2182 | .recalc = &followparent_recalc, | ||
2183 | }; | ||
2184 | |||
2185 | static struct clk i2c2_fck = { | ||
2186 | .name = "i2c_fck", | ||
2187 | .id = 2, | ||
2188 | .parent = &func_12m_ck, | ||
2189 | .flags = CLOCK_IN_OMAP242X, | ||
2190 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2191 | .enable_bit = OMAP2420_EN_I2C2_SHIFT, | ||
2192 | .recalc = &followparent_recalc, | ||
2193 | }; | ||
2194 | |||
2195 | static struct clk i2chs2_fck = { | ||
2196 | .name = "i2chs_fck", | ||
2197 | .id = 2, | ||
2198 | .parent = &func_96m_ck, | ||
2199 | .flags = CLOCK_IN_OMAP243X, | ||
2200 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2201 | .enable_bit = OMAP2430_EN_I2CHS2_SHIFT, | ||
2202 | .recalc = &followparent_recalc, | ||
2203 | }; | ||
2204 | |||
2205 | static struct clk i2c1_ick = { | ||
2206 | .name = "i2c_ick", | ||
2207 | .id = 1, | ||
2208 | .parent = &l4_ck, | ||
2209 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2210 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2211 | .enable_bit = OMAP2420_EN_I2C1_SHIFT, | ||
2212 | .recalc = &followparent_recalc, | ||
2213 | }; | ||
2214 | |||
2215 | static struct clk i2c1_fck = { | ||
2216 | .name = "i2c_fck", | ||
2217 | .id = 1, | ||
2218 | .parent = &func_12m_ck, | ||
2219 | .flags = CLOCK_IN_OMAP242X, | ||
2220 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2221 | .enable_bit = OMAP2420_EN_I2C1_SHIFT, | ||
2222 | .recalc = &followparent_recalc, | ||
2223 | }; | ||
2224 | |||
2225 | static struct clk i2chs1_fck = { | ||
2226 | .name = "i2chs_fck", | ||
2227 | .id = 1, | ||
2228 | .parent = &func_96m_ck, | ||
2229 | .flags = CLOCK_IN_OMAP243X, | ||
2230 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2231 | .enable_bit = OMAP2430_EN_I2CHS1_SHIFT, | ||
2232 | .recalc = &followparent_recalc, | ||
2233 | }; | ||
2234 | |||
2235 | static struct clk gpmc_fck = { | ||
2236 | .name = "gpmc_fck", | ||
2237 | .parent = &core_l3_ck, | ||
2238 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | ENABLE_ON_INIT, | ||
2239 | .recalc = &followparent_recalc, | ||
2240 | }; | ||
2241 | |||
2242 | static struct clk sdma_fck = { | ||
2243 | .name = "sdma_fck", | ||
2244 | .parent = &core_l3_ck, | ||
2245 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2246 | .recalc = &followparent_recalc, | ||
2247 | }; | ||
2248 | |||
2249 | static struct clk sdma_ick = { | ||
2250 | .name = "sdma_ick", | ||
2251 | .parent = &l4_ck, | ||
2252 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | ||
2253 | .recalc = &followparent_recalc, | ||
2254 | }; | ||
2255 | |||
2256 | static struct clk vlynq_ick = { | ||
2257 | .name = "vlynq_ick", | ||
2258 | .parent = &core_l3_ck, | ||
2259 | .flags = CLOCK_IN_OMAP242X, | ||
2260 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
2261 | .enable_bit = OMAP2420_EN_VLYNQ_SHIFT, | ||
2262 | .recalc = &followparent_recalc, | ||
2263 | }; | ||
2264 | |||
2265 | static const struct clksel_rate vlynq_fck_96m_rates[] = { | ||
2266 | { .div = 1, .val = 0, .flags = RATE_IN_242X | DEFAULT_RATE }, | ||
2267 | { .div = 0 } | ||
2268 | }; | ||
2269 | |||
2270 | static const struct clksel_rate vlynq_fck_core_rates[] = { | ||
2271 | { .div = 1, .val = 1, .flags = RATE_IN_242X }, | ||
2272 | { .div = 2, .val = 2, .flags = RATE_IN_242X }, | ||
2273 | { .div = 3, .val = 3, .flags = RATE_IN_242X }, | ||
2274 | { .div = 4, .val = 4, .flags = RATE_IN_242X }, | ||
2275 | { .div = 6, .val = 6, .flags = RATE_IN_242X }, | ||
2276 | { .div = 8, .val = 8, .flags = RATE_IN_242X }, | ||
2277 | { .div = 9, .val = 9, .flags = RATE_IN_242X }, | ||
2278 | { .div = 12, .val = 12, .flags = RATE_IN_242X }, | ||
2279 | { .div = 16, .val = 16, .flags = RATE_IN_242X | DEFAULT_RATE }, | ||
2280 | { .div = 18, .val = 18, .flags = RATE_IN_242X }, | ||
2281 | { .div = 0 } | ||
2282 | }; | ||
2283 | |||
2284 | static const struct clksel vlynq_fck_clksel[] = { | ||
2285 | { .parent = &func_96m_ck, .rates = vlynq_fck_96m_rates }, | ||
2286 | { .parent = &core_ck, .rates = vlynq_fck_core_rates }, | ||
2287 | { .parent = NULL } | ||
2288 | }; | ||
2289 | |||
2290 | static struct clk vlynq_fck = { | ||
2291 | .name = "vlynq_fck", | ||
2292 | .parent = &func_96m_ck, | ||
2293 | .flags = CLOCK_IN_OMAP242X | DELAYED_APP, | ||
2294 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
2295 | .enable_bit = OMAP2420_EN_VLYNQ_SHIFT, | ||
2296 | .init = &omap2_init_clksel_parent, | ||
2297 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), | ||
2298 | .clksel_mask = OMAP2420_CLKSEL_VLYNQ_MASK, | ||
2299 | .clksel = vlynq_fck_clksel, | ||
2300 | .recalc = &omap2_clksel_recalc, | ||
2301 | .round_rate = &omap2_clksel_round_rate, | ||
2302 | .set_rate = &omap2_clksel_set_rate | ||
2303 | }; | ||
2304 | |||
2305 | static struct clk sdrc_ick = { | ||
2306 | .name = "sdrc_ick", | ||
2307 | .parent = &l4_ck, | ||
2308 | .flags = CLOCK_IN_OMAP243X | ENABLE_ON_INIT, | ||
2309 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), | ||
2310 | .enable_bit = OMAP2430_EN_SDRC_SHIFT, | ||
2311 | .recalc = &followparent_recalc, | ||
2312 | }; | ||
2313 | |||
2314 | static struct clk des_ick = { | ||
2315 | .name = "des_ick", | ||
2316 | .parent = &l4_ck, | ||
2317 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
2318 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | ||
2319 | .enable_bit = OMAP24XX_EN_DES_SHIFT, | ||
2320 | .recalc = &followparent_recalc, | ||
2321 | }; | ||
2322 | |||
2323 | static struct clk sha_ick = { | ||
2324 | .name = "sha_ick", | ||
2325 | .parent = &l4_ck, | ||
2326 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
2327 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | ||
2328 | .enable_bit = OMAP24XX_EN_SHA_SHIFT, | ||
2329 | .recalc = &followparent_recalc, | ||
2330 | }; | ||
2331 | |||
2332 | static struct clk rng_ick = { | ||
2333 | .name = "rng_ick", | ||
2334 | .parent = &l4_ck, | ||
2335 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
2336 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | ||
2337 | .enable_bit = OMAP24XX_EN_RNG_SHIFT, | ||
2338 | .recalc = &followparent_recalc, | ||
2339 | }; | ||
2340 | |||
2341 | static struct clk aes_ick = { | ||
2342 | .name = "aes_ick", | ||
2343 | .parent = &l4_ck, | ||
2344 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
2345 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | ||
2346 | .enable_bit = OMAP24XX_EN_AES_SHIFT, | ||
2347 | .recalc = &followparent_recalc, | ||
2348 | }; | ||
2349 | |||
2350 | static struct clk pka_ick = { | ||
2351 | .name = "pka_ick", | ||
2352 | .parent = &l4_ck, | ||
2353 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
2354 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | ||
2355 | .enable_bit = OMAP24XX_EN_PKA_SHIFT, | ||
2356 | .recalc = &followparent_recalc, | ||
2357 | }; | ||
2358 | |||
2359 | static struct clk usb_fck = { | ||
2360 | .name = "usb_fck", | ||
2361 | .parent = &func_48m_ck, | ||
2362 | .flags = CLOCK_IN_OMAP243X | CLOCK_IN_OMAP242X, | ||
2363 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2364 | .enable_bit = OMAP24XX_EN_USB_SHIFT, | ||
2365 | .recalc = &followparent_recalc, | ||
2366 | }; | ||
2367 | |||
2368 | static struct clk usbhs_ick = { | ||
2369 | .name = "usbhs_ick", | ||
2370 | .parent = &core_l3_ck, | ||
2371 | .flags = CLOCK_IN_OMAP243X, | ||
2372 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
2373 | .enable_bit = OMAP2430_EN_USBHS_SHIFT, | ||
2374 | .recalc = &followparent_recalc, | ||
2375 | }; | ||
2376 | |||
2377 | static struct clk mmchs1_ick = { | ||
2378 | .name = "mmchs_ick", | ||
2379 | .id = 1, | ||
2380 | .parent = &l4_ck, | ||
2381 | .flags = CLOCK_IN_OMAP243X, | ||
2382 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
2383 | .enable_bit = OMAP2430_EN_MMCHS1_SHIFT, | ||
2384 | .recalc = &followparent_recalc, | ||
2385 | }; | ||
2386 | |||
2387 | static struct clk mmchs1_fck = { | ||
2388 | .name = "mmchs_fck", | ||
2389 | .id = 1, | ||
2390 | .parent = &func_96m_ck, | ||
2391 | .flags = CLOCK_IN_OMAP243X, | ||
2392 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2393 | .enable_bit = OMAP2430_EN_MMCHS1_SHIFT, | ||
2394 | .recalc = &followparent_recalc, | ||
2395 | }; | ||
2396 | |||
2397 | static struct clk mmchs2_ick = { | ||
2398 | .name = "mmchs_ick", | ||
2399 | .id = 2, | ||
2400 | .parent = &l4_ck, | ||
2401 | .flags = CLOCK_IN_OMAP243X, | ||
2402 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
2403 | .enable_bit = OMAP2430_EN_MMCHS2_SHIFT, | ||
2404 | .recalc = &followparent_recalc, | ||
2405 | }; | ||
2406 | |||
2407 | static struct clk mmchs2_fck = { | ||
2408 | .name = "mmchs_fck", | ||
2409 | .id = 2, | ||
2410 | .parent = &func_96m_ck, | ||
2411 | .flags = CLOCK_IN_OMAP243X, | ||
2412 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2413 | .enable_bit = OMAP2430_EN_MMCHS2_SHIFT, | ||
2414 | .recalc = &followparent_recalc, | ||
2415 | }; | ||
2416 | |||
2417 | static struct clk gpio5_ick = { | ||
2418 | .name = "gpio5_ick", | ||
2419 | .parent = &l4_ck, | ||
2420 | .flags = CLOCK_IN_OMAP243X, | ||
2421 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
2422 | .enable_bit = OMAP2430_EN_GPIO5_SHIFT, | ||
2423 | .recalc = &followparent_recalc, | ||
2424 | }; | ||
2425 | |||
2426 | static struct clk gpio5_fck = { | ||
2427 | .name = "gpio5_fck", | ||
2428 | .parent = &func_32k_ck, | ||
2429 | .flags = CLOCK_IN_OMAP243X, | ||
2430 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2431 | .enable_bit = OMAP2430_EN_GPIO5_SHIFT, | ||
2432 | .recalc = &followparent_recalc, | ||
2433 | }; | ||
2434 | |||
2435 | static struct clk mdm_intc_ick = { | ||
2436 | .name = "mdm_intc_ick", | ||
2437 | .parent = &l4_ck, | ||
2438 | .flags = CLOCK_IN_OMAP243X, | ||
2439 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
2440 | .enable_bit = OMAP2430_EN_MDM_INTC_SHIFT, | ||
2441 | .recalc = &followparent_recalc, | ||
2442 | }; | ||
2443 | |||
2444 | static struct clk mmchsdb1_fck = { | ||
2445 | .name = "mmchsdb_fck", | ||
2446 | .id = 1, | ||
2447 | .parent = &func_32k_ck, | ||
2448 | .flags = CLOCK_IN_OMAP243X, | ||
2449 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2450 | .enable_bit = OMAP2430_EN_MMCHSDB1_SHIFT, | ||
2451 | .recalc = &followparent_recalc, | ||
2452 | }; | ||
2453 | |||
2454 | static struct clk mmchsdb2_fck = { | ||
2455 | .name = "mmchsdb_fck", | ||
2456 | .id = 2, | ||
2457 | .parent = &func_32k_ck, | ||
2458 | .flags = CLOCK_IN_OMAP243X, | ||
2459 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | ||
2460 | .enable_bit = OMAP2430_EN_MMCHSDB2_SHIFT, | ||
2461 | .recalc = &followparent_recalc, | ||
2462 | }; | ||
2463 | |||
2464 | /* | ||
2465 | * This clock is a composite clock which does entire set changes then | ||
2466 | * forces a rebalance. It keys on the MPU speed, but it really could | ||
2467 | * be any key speed part of a set in the rate table. | ||
2468 | * | ||
2469 | * to really change a set, you need memory table sets which get changed | ||
2470 | * in sram, pre-notifiers & post notifiers, changing the top set, without | ||
2471 | * having low level display recalc's won't work... this is why dpm notifiers | ||
2472 | * work, isr's off, walk a list of clocks already _off_ and not messing with | ||
2473 | * the bus. | ||
2474 | * | ||
2475 | * This clock should have no parent. It embodies the entire upper level | ||
2476 | * active set. A parent will mess up some of the init also. | ||
2477 | */ | ||
2478 | static struct clk virt_prcm_set = { | ||
2479 | .name = "virt_prcm_set", | ||
2480 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | ||
2481 | VIRTUAL_CLOCK | ALWAYS_ENABLED | DELAYED_APP, | ||
2482 | .parent = &mpu_ck, /* Indexed by mpu speed, no parent */ | ||
2483 | .recalc = &omap2_table_mpu_recalc, /* sets are keyed on mpu rate */ | ||
2484 | .set_rate = &omap2_select_table_rate, | ||
2485 | .round_rate = &omap2_round_to_table_rate, | ||
2486 | }; | ||
2487 | |||
2488 | static struct clk *onchip_24xx_clks[] __initdata = { | ||
2489 | /* external root sources */ | ||
2490 | &func_32k_ck, | ||
2491 | &osc_ck, | ||
2492 | &sys_ck, | ||
2493 | &alt_ck, | ||
2494 | /* internal analog sources */ | ||
2495 | &dpll_ck, | ||
2496 | &apll96_ck, | ||
2497 | &apll54_ck, | ||
2498 | /* internal prcm root sources */ | ||
2499 | &func_54m_ck, | ||
2500 | &core_ck, | ||
2501 | &func_96m_ck, | ||
2502 | &func_48m_ck, | ||
2503 | &func_12m_ck, | ||
2504 | &wdt1_osc_ck, | ||
2505 | &sys_clkout_src, | ||
2506 | &sys_clkout, | ||
2507 | &sys_clkout2_src, | ||
2508 | &sys_clkout2, | ||
2509 | &emul_ck, | ||
2510 | /* mpu domain clocks */ | ||
2511 | &mpu_ck, | ||
2512 | /* dsp domain clocks */ | ||
2513 | &dsp_fck, | ||
2514 | &dsp_irate_ick, | ||
2515 | &dsp_ick, /* 242x */ | ||
2516 | &iva2_1_ick, /* 243x */ | ||
2517 | &iva1_ifck, /* 242x */ | ||
2518 | &iva1_mpu_int_ifck, /* 242x */ | ||
2519 | /* GFX domain clocks */ | ||
2520 | &gfx_3d_fck, | ||
2521 | &gfx_2d_fck, | ||
2522 | &gfx_ick, | ||
2523 | /* Modem domain clocks */ | ||
2524 | &mdm_ick, | ||
2525 | &mdm_osc_ck, | ||
2526 | /* DSS domain clocks */ | ||
2527 | &dss_ick, | ||
2528 | &dss1_fck, | ||
2529 | &dss2_fck, | ||
2530 | &dss_54m_fck, | ||
2531 | /* L3 domain clocks */ | ||
2532 | &core_l3_ck, | ||
2533 | &ssi_ssr_sst_fck, | ||
2534 | &usb_l4_ick, | ||
2535 | /* L4 domain clocks */ | ||
2536 | &l4_ck, /* used as both core_l4 and wu_l4 */ | ||
2537 | &ssi_l4_ick, | ||
2538 | /* virtual meta-group clock */ | ||
2539 | &virt_prcm_set, | ||
2540 | /* general l4 interface ck, multi-parent functional clk */ | ||
2541 | &gpt1_ick, | ||
2542 | &gpt1_fck, | ||
2543 | &gpt2_ick, | ||
2544 | &gpt2_fck, | ||
2545 | &gpt3_ick, | ||
2546 | &gpt3_fck, | ||
2547 | &gpt4_ick, | ||
2548 | &gpt4_fck, | ||
2549 | &gpt5_ick, | ||
2550 | &gpt5_fck, | ||
2551 | &gpt6_ick, | ||
2552 | &gpt6_fck, | ||
2553 | &gpt7_ick, | ||
2554 | &gpt7_fck, | ||
2555 | &gpt8_ick, | ||
2556 | &gpt8_fck, | ||
2557 | &gpt9_ick, | ||
2558 | &gpt9_fck, | ||
2559 | &gpt10_ick, | ||
2560 | &gpt10_fck, | ||
2561 | &gpt11_ick, | ||
2562 | &gpt11_fck, | ||
2563 | &gpt12_ick, | ||
2564 | &gpt12_fck, | ||
2565 | &mcbsp1_ick, | ||
2566 | &mcbsp1_fck, | ||
2567 | &mcbsp2_ick, | ||
2568 | &mcbsp2_fck, | ||
2569 | &mcbsp3_ick, | ||
2570 | &mcbsp3_fck, | ||
2571 | &mcbsp4_ick, | ||
2572 | &mcbsp4_fck, | ||
2573 | &mcbsp5_ick, | ||
2574 | &mcbsp5_fck, | ||
2575 | &mcspi1_ick, | ||
2576 | &mcspi1_fck, | ||
2577 | &mcspi2_ick, | ||
2578 | &mcspi2_fck, | ||
2579 | &mcspi3_ick, | ||
2580 | &mcspi3_fck, | ||
2581 | &uart1_ick, | ||
2582 | &uart1_fck, | ||
2583 | &uart2_ick, | ||
2584 | &uart2_fck, | ||
2585 | &uart3_ick, | ||
2586 | &uart3_fck, | ||
2587 | &gpios_ick, | ||
2588 | &gpios_fck, | ||
2589 | &mpu_wdt_ick, | ||
2590 | &mpu_wdt_fck, | ||
2591 | &sync_32k_ick, | ||
2592 | &wdt1_ick, | ||
2593 | &omapctrl_ick, | ||
2594 | &icr_ick, | ||
2595 | &cam_fck, | ||
2596 | &cam_ick, | ||
2597 | &mailboxes_ick, | ||
2598 | &wdt4_ick, | ||
2599 | &wdt4_fck, | ||
2600 | &wdt3_ick, | ||
2601 | &wdt3_fck, | ||
2602 | &mspro_ick, | ||
2603 | &mspro_fck, | ||
2604 | &mmc_ick, | ||
2605 | &mmc_fck, | ||
2606 | &fac_ick, | ||
2607 | &fac_fck, | ||
2608 | &eac_ick, | ||
2609 | &eac_fck, | ||
2610 | &hdq_ick, | ||
2611 | &hdq_fck, | ||
2612 | &i2c1_ick, | ||
2613 | &i2c1_fck, | ||
2614 | &i2chs1_fck, | ||
2615 | &i2c2_ick, | ||
2616 | &i2c2_fck, | ||
2617 | &i2chs2_fck, | ||
2618 | &gpmc_fck, | ||
2619 | &sdma_fck, | ||
2620 | &sdma_ick, | ||
2621 | &vlynq_ick, | ||
2622 | &vlynq_fck, | ||
2623 | &sdrc_ick, | ||
2624 | &des_ick, | ||
2625 | &sha_ick, | ||
2626 | &rng_ick, | ||
2627 | &aes_ick, | ||
2628 | &pka_ick, | ||
2629 | &usb_fck, | ||
2630 | &usbhs_ick, | ||
2631 | &mmchs1_ick, | ||
2632 | &mmchs1_fck, | ||
2633 | &mmchs2_ick, | ||
2634 | &mmchs2_fck, | ||
2635 | &gpio5_ick, | ||
2636 | &gpio5_fck, | ||
2637 | &mdm_intc_ick, | ||
2638 | &mmchsdb1_fck, | ||
2639 | &mmchsdb2_fck, | ||
2640 | }; | ||
2641 | |||
2642 | #endif | ||
2643 | |||
diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c new file mode 100644 index 000000000000..b42bdd6079a5 --- /dev/null +++ b/arch/arm/mach-omap2/clock34xx.c | |||
@@ -0,0 +1,235 @@ | |||
1 | /* | ||
2 | * OMAP3-specific clock framework functions | ||
3 | * | ||
4 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
5 | * Copyright (C) 2007 Nokia Corporation | ||
6 | * | ||
7 | * Written by Paul Walmsley | ||
8 | * | ||
9 | * Parts of this code are based on code written by | ||
10 | * Richard Woodruff, Tony Lindgren, Tuukka Tikkanen, Karthik Dasu | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | #undef DEBUG | ||
17 | |||
18 | #include <linux/module.h> | ||
19 | #include <linux/kernel.h> | ||
20 | #include <linux/device.h> | ||
21 | #include <linux/list.h> | ||
22 | #include <linux/errno.h> | ||
23 | #include <linux/delay.h> | ||
24 | #include <linux/clk.h> | ||
25 | #include <linux/io.h> | ||
26 | |||
27 | #include <asm/arch/clock.h> | ||
28 | #include <asm/arch/sram.h> | ||
29 | #include <asm/div64.h> | ||
30 | #include <asm/bitops.h> | ||
31 | |||
32 | #include "memory.h" | ||
33 | #include "clock.h" | ||
34 | #include "clock34xx.h" | ||
35 | #include "prm.h" | ||
36 | #include "prm-regbits-34xx.h" | ||
37 | #include "cm.h" | ||
38 | #include "cm-regbits-34xx.h" | ||
39 | |||
40 | /* CM_CLKEN_PLL*.EN* bit values */ | ||
41 | #define DPLL_LOCKED 0x7 | ||
42 | |||
43 | /** | ||
44 | * omap3_dpll_recalc - recalculate DPLL rate | ||
45 | * @clk: DPLL struct clk | ||
46 | * | ||
47 | * Recalculate and propagate the DPLL rate. | ||
48 | */ | ||
49 | static void omap3_dpll_recalc(struct clk *clk) | ||
50 | { | ||
51 | clk->rate = omap2_get_dpll_rate(clk); | ||
52 | |||
53 | propagate_rate(clk); | ||
54 | } | ||
55 | |||
56 | /** | ||
57 | * omap3_clkoutx2_recalc - recalculate DPLL X2 output virtual clock rate | ||
58 | * @clk: DPLL output struct clk | ||
59 | * | ||
60 | * Using parent clock DPLL data, look up DPLL state. If locked, set our | ||
61 | * rate to the dpll_clk * 2; otherwise, just use dpll_clk. | ||
62 | */ | ||
63 | static void omap3_clkoutx2_recalc(struct clk *clk) | ||
64 | { | ||
65 | const struct dpll_data *dd; | ||
66 | u32 v; | ||
67 | struct clk *pclk; | ||
68 | |||
69 | /* Walk up the parents of clk, looking for a DPLL */ | ||
70 | pclk = clk->parent; | ||
71 | while (pclk && !pclk->dpll_data) | ||
72 | pclk = pclk->parent; | ||
73 | |||
74 | /* clk does not have a DPLL as a parent? */ | ||
75 | WARN_ON(!pclk); | ||
76 | |||
77 | dd = pclk->dpll_data; | ||
78 | |||
79 | WARN_ON(!dd->control_reg || !dd->enable_mask); | ||
80 | |||
81 | v = __raw_readl(dd->control_reg) & dd->enable_mask; | ||
82 | v >>= __ffs(dd->enable_mask); | ||
83 | if (v != DPLL_LOCKED) | ||
84 | clk->rate = clk->parent->rate; | ||
85 | else | ||
86 | clk->rate = clk->parent->rate * 2; | ||
87 | |||
88 | if (clk->flags & RATE_PROPAGATES) | ||
89 | propagate_rate(clk); | ||
90 | } | ||
91 | |||
92 | /* | ||
93 | * As it is structured now, this will prevent an OMAP2/3 multiboot | ||
94 | * kernel from compiling. This will need further attention. | ||
95 | */ | ||
96 | #if defined(CONFIG_ARCH_OMAP3) | ||
97 | |||
98 | static struct clk_functions omap2_clk_functions = { | ||
99 | .clk_enable = omap2_clk_enable, | ||
100 | .clk_disable = omap2_clk_disable, | ||
101 | .clk_round_rate = omap2_clk_round_rate, | ||
102 | .clk_set_rate = omap2_clk_set_rate, | ||
103 | .clk_set_parent = omap2_clk_set_parent, | ||
104 | .clk_disable_unused = omap2_clk_disable_unused, | ||
105 | }; | ||
106 | |||
107 | /* | ||
108 | * Set clocks for bypass mode for reboot to work. | ||
109 | */ | ||
110 | void omap2_clk_prepare_for_reboot(void) | ||
111 | { | ||
112 | /* REVISIT: Not ready for 343x */ | ||
113 | #if 0 | ||
114 | u32 rate; | ||
115 | |||
116 | if (vclk == NULL || sclk == NULL) | ||
117 | return; | ||
118 | |||
119 | rate = clk_get_rate(sclk); | ||
120 | clk_set_rate(vclk, rate); | ||
121 | #endif | ||
122 | } | ||
123 | |||
124 | /* REVISIT: Move this init stuff out into clock.c */ | ||
125 | |||
126 | /* | ||
127 | * Switch the MPU rate if specified on cmdline. | ||
128 | * We cannot do this early until cmdline is parsed. | ||
129 | */ | ||
130 | static int __init omap2_clk_arch_init(void) | ||
131 | { | ||
132 | if (!mpurate) | ||
133 | return -EINVAL; | ||
134 | |||
135 | /* REVISIT: not yet ready for 343x */ | ||
136 | #if 0 | ||
137 | if (omap2_select_table_rate(&virt_prcm_set, mpurate)) | ||
138 | printk(KERN_ERR "Could not find matching MPU rate\n"); | ||
139 | #endif | ||
140 | |||
141 | recalculate_root_clocks(); | ||
142 | |||
143 | printk(KERN_INFO "Switched to new clocking rate (Crystal/DPLL3/MPU): " | ||
144 | "%ld.%01ld/%ld/%ld MHz\n", | ||
145 | (osc_sys_ck.rate / 1000000), (osc_sys_ck.rate / 100000) % 10, | ||
146 | (core_ck.rate / 1000000), (dpll1_fck.rate / 1000000)) ; | ||
147 | |||
148 | return 0; | ||
149 | } | ||
150 | arch_initcall(omap2_clk_arch_init); | ||
151 | |||
152 | int __init omap2_clk_init(void) | ||
153 | { | ||
154 | /* struct prcm_config *prcm; */ | ||
155 | struct clk **clkp; | ||
156 | /* u32 clkrate; */ | ||
157 | u32 cpu_clkflg; | ||
158 | |||
159 | /* REVISIT: Ultimately this will be used for multiboot */ | ||
160 | #if 0 | ||
161 | if (cpu_is_omap242x()) { | ||
162 | cpu_mask = RATE_IN_242X; | ||
163 | cpu_clkflg = CLOCK_IN_OMAP242X; | ||
164 | clkp = onchip_24xx_clks; | ||
165 | } else if (cpu_is_omap2430()) { | ||
166 | cpu_mask = RATE_IN_243X; | ||
167 | cpu_clkflg = CLOCK_IN_OMAP243X; | ||
168 | clkp = onchip_24xx_clks; | ||
169 | } | ||
170 | #endif | ||
171 | if (cpu_is_omap34xx()) { | ||
172 | cpu_mask = RATE_IN_343X; | ||
173 | cpu_clkflg = CLOCK_IN_OMAP343X; | ||
174 | clkp = onchip_34xx_clks; | ||
175 | |||
176 | /* | ||
177 | * Update this if there are further clock changes between ES2 | ||
178 | * and production parts | ||
179 | */ | ||
180 | if (is_sil_rev_equal_to(OMAP3430_REV_ES1_0)) { | ||
181 | /* No 3430ES1-only rates exist, so no RATE_IN_3430ES1 */ | ||
182 | cpu_clkflg |= CLOCK_IN_OMAP3430ES1; | ||
183 | } else { | ||
184 | cpu_mask |= RATE_IN_3430ES2; | ||
185 | cpu_clkflg |= CLOCK_IN_OMAP3430ES2; | ||
186 | } | ||
187 | } | ||
188 | |||
189 | clk_init(&omap2_clk_functions); | ||
190 | |||
191 | for (clkp = onchip_34xx_clks; | ||
192 | clkp < onchip_34xx_clks + ARRAY_SIZE(onchip_34xx_clks); | ||
193 | clkp++) { | ||
194 | if ((*clkp)->flags & cpu_clkflg) | ||
195 | clk_register(*clkp); | ||
196 | } | ||
197 | |||
198 | /* REVISIT: Not yet ready for OMAP3 */ | ||
199 | #if 0 | ||
200 | /* Check the MPU rate set by bootloader */ | ||
201 | clkrate = omap2_get_dpll_rate_24xx(&dpll_ck); | ||
202 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { | ||
203 | if (!(prcm->flags & cpu_mask)) | ||
204 | continue; | ||
205 | if (prcm->xtal_speed != sys_ck.rate) | ||
206 | continue; | ||
207 | if (prcm->dpll_speed <= clkrate) | ||
208 | break; | ||
209 | } | ||
210 | curr_prcm_set = prcm; | ||
211 | #endif | ||
212 | |||
213 | recalculate_root_clocks(); | ||
214 | |||
215 | printk(KERN_INFO "Clocking rate (Crystal/DPLL/ARM core): " | ||
216 | "%ld.%01ld/%ld/%ld MHz\n", | ||
217 | (osc_sys_ck.rate / 1000000), (osc_sys_ck.rate / 100000) % 10, | ||
218 | (core_ck.rate / 1000000), (arm_fck.rate / 1000000)); | ||
219 | |||
220 | /* | ||
221 | * Only enable those clocks we will need, let the drivers | ||
222 | * enable other clocks as necessary | ||
223 | */ | ||
224 | clk_enable_init_clocks(); | ||
225 | |||
226 | /* Avoid sleeping during omap2_clk_prepare_for_reboot() */ | ||
227 | /* REVISIT: not yet ready for 343x */ | ||
228 | #if 0 | ||
229 | vclk = clk_get(NULL, "virt_prcm_set"); | ||
230 | sclk = clk_get(NULL, "sys_ck"); | ||
231 | #endif | ||
232 | return 0; | ||
233 | } | ||
234 | |||
235 | #endif | ||
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h new file mode 100644 index 000000000000..cf4644a94b9b --- /dev/null +++ b/arch/arm/mach-omap2/clock34xx.h | |||
@@ -0,0 +1,3009 @@ | |||
1 | /* | ||
2 | * OMAP3 clock framework | ||
3 | * | ||
4 | * Virtual clocks are introduced as a convenient tools. | ||
5 | * They are sources for other clocks and not supposed | ||
6 | * to be requested from drivers directly. | ||
7 | * | ||
8 | * Copyright (C) 2007-2008 Texas Instruments, Inc. | ||
9 | * Copyright (C) 2007-2008 Nokia Corporation | ||
10 | * | ||
11 | * Written by Paul Walmsley | ||
12 | */ | ||
13 | |||
14 | #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK34XX_H | ||
15 | #define __ARCH_ARM_MACH_OMAP2_CLOCK34XX_H | ||
16 | |||
17 | #include <asm/arch/control.h> | ||
18 | |||
19 | #include "clock.h" | ||
20 | #include "cm.h" | ||
21 | #include "cm-regbits-34xx.h" | ||
22 | #include "prm.h" | ||
23 | #include "prm-regbits-34xx.h" | ||
24 | |||
25 | static void omap3_dpll_recalc(struct clk *clk); | ||
26 | static void omap3_clkoutx2_recalc(struct clk *clk); | ||
27 | |||
28 | /* | ||
29 | * DPLL1 supplies clock to the MPU. | ||
30 | * DPLL2 supplies clock to the IVA2. | ||
31 | * DPLL3 supplies CORE domain clocks. | ||
32 | * DPLL4 supplies peripheral clocks. | ||
33 | * DPLL5 supplies other peripheral clocks (USBHOST, USIM). | ||
34 | */ | ||
35 | |||
36 | /* PRM CLOCKS */ | ||
37 | |||
38 | /* According to timer32k.c, this is a 32768Hz clock, not a 32000Hz clock. */ | ||
39 | static struct clk omap_32k_fck = { | ||
40 | .name = "omap_32k_fck", | ||
41 | .rate = 32768, | ||
42 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
43 | ALWAYS_ENABLED, | ||
44 | .recalc = &propagate_rate, | ||
45 | }; | ||
46 | |||
47 | static struct clk secure_32k_fck = { | ||
48 | .name = "secure_32k_fck", | ||
49 | .rate = 32768, | ||
50 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
51 | ALWAYS_ENABLED, | ||
52 | .recalc = &propagate_rate, | ||
53 | }; | ||
54 | |||
55 | /* Virtual source clocks for osc_sys_ck */ | ||
56 | static struct clk virt_12m_ck = { | ||
57 | .name = "virt_12m_ck", | ||
58 | .rate = 12000000, | ||
59 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
60 | ALWAYS_ENABLED, | ||
61 | .recalc = &propagate_rate, | ||
62 | }; | ||
63 | |||
64 | static struct clk virt_13m_ck = { | ||
65 | .name = "virt_13m_ck", | ||
66 | .rate = 13000000, | ||
67 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
68 | ALWAYS_ENABLED, | ||
69 | .recalc = &propagate_rate, | ||
70 | }; | ||
71 | |||
72 | static struct clk virt_16_8m_ck = { | ||
73 | .name = "virt_16_8m_ck", | ||
74 | .rate = 16800000, | ||
75 | .flags = CLOCK_IN_OMAP3430ES2 | RATE_FIXED | RATE_PROPAGATES | | ||
76 | ALWAYS_ENABLED, | ||
77 | .recalc = &propagate_rate, | ||
78 | }; | ||
79 | |||
80 | static struct clk virt_19_2m_ck = { | ||
81 | .name = "virt_19_2m_ck", | ||
82 | .rate = 19200000, | ||
83 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
84 | ALWAYS_ENABLED, | ||
85 | .recalc = &propagate_rate, | ||
86 | }; | ||
87 | |||
88 | static struct clk virt_26m_ck = { | ||
89 | .name = "virt_26m_ck", | ||
90 | .rate = 26000000, | ||
91 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
92 | ALWAYS_ENABLED, | ||
93 | .recalc = &propagate_rate, | ||
94 | }; | ||
95 | |||
96 | static struct clk virt_38_4m_ck = { | ||
97 | .name = "virt_38_4m_ck", | ||
98 | .rate = 38400000, | ||
99 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
100 | ALWAYS_ENABLED, | ||
101 | .recalc = &propagate_rate, | ||
102 | }; | ||
103 | |||
104 | static const struct clksel_rate osc_sys_12m_rates[] = { | ||
105 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
106 | { .div = 0 } | ||
107 | }; | ||
108 | |||
109 | static const struct clksel_rate osc_sys_13m_rates[] = { | ||
110 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
111 | { .div = 0 } | ||
112 | }; | ||
113 | |||
114 | static const struct clksel_rate osc_sys_16_8m_rates[] = { | ||
115 | { .div = 1, .val = 5, .flags = RATE_IN_3430ES2 | DEFAULT_RATE }, | ||
116 | { .div = 0 } | ||
117 | }; | ||
118 | |||
119 | static const struct clksel_rate osc_sys_19_2m_rates[] = { | ||
120 | { .div = 1, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
121 | { .div = 0 } | ||
122 | }; | ||
123 | |||
124 | static const struct clksel_rate osc_sys_26m_rates[] = { | ||
125 | { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
126 | { .div = 0 } | ||
127 | }; | ||
128 | |||
129 | static const struct clksel_rate osc_sys_38_4m_rates[] = { | ||
130 | { .div = 1, .val = 4, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
131 | { .div = 0 } | ||
132 | }; | ||
133 | |||
134 | static const struct clksel osc_sys_clksel[] = { | ||
135 | { .parent = &virt_12m_ck, .rates = osc_sys_12m_rates }, | ||
136 | { .parent = &virt_13m_ck, .rates = osc_sys_13m_rates }, | ||
137 | { .parent = &virt_16_8m_ck, .rates = osc_sys_16_8m_rates }, | ||
138 | { .parent = &virt_19_2m_ck, .rates = osc_sys_19_2m_rates }, | ||
139 | { .parent = &virt_26m_ck, .rates = osc_sys_26m_rates }, | ||
140 | { .parent = &virt_38_4m_ck, .rates = osc_sys_38_4m_rates }, | ||
141 | { .parent = NULL }, | ||
142 | }; | ||
143 | |||
144 | /* Oscillator clock */ | ||
145 | /* 12, 13, 16.8, 19.2, 26, or 38.4 MHz */ | ||
146 | static struct clk osc_sys_ck = { | ||
147 | .name = "osc_sys_ck", | ||
148 | .init = &omap2_init_clksel_parent, | ||
149 | .clksel_reg = OMAP3430_PRM_CLKSEL, | ||
150 | .clksel_mask = OMAP3430_SYS_CLKIN_SEL_MASK, | ||
151 | .clksel = osc_sys_clksel, | ||
152 | /* REVISIT: deal with autoextclkmode? */ | ||
153 | .flags = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES | | ||
154 | ALWAYS_ENABLED, | ||
155 | .recalc = &omap2_clksel_recalc, | ||
156 | }; | ||
157 | |||
158 | static const struct clksel_rate div2_rates[] = { | ||
159 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
160 | { .div = 2, .val = 2, .flags = RATE_IN_343X }, | ||
161 | { .div = 0 } | ||
162 | }; | ||
163 | |||
164 | static const struct clksel sys_clksel[] = { | ||
165 | { .parent = &osc_sys_ck, .rates = div2_rates }, | ||
166 | { .parent = NULL } | ||
167 | }; | ||
168 | |||
169 | /* Latency: this clock is only enabled after PRM_CLKSETUP.SETUP_TIME */ | ||
170 | /* Feeds DPLLs - divided first by PRM_CLKSRC_CTRL.SYSCLKDIV? */ | ||
171 | static struct clk sys_ck = { | ||
172 | .name = "sys_ck", | ||
173 | .parent = &osc_sys_ck, | ||
174 | .init = &omap2_init_clksel_parent, | ||
175 | .clksel_reg = OMAP3430_PRM_CLKSRC_CTRL, | ||
176 | .clksel_mask = OMAP_SYSCLKDIV_MASK, | ||
177 | .clksel = sys_clksel, | ||
178 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
179 | .recalc = &omap2_clksel_recalc, | ||
180 | }; | ||
181 | |||
182 | static struct clk sys_altclk = { | ||
183 | .name = "sys_altclk", | ||
184 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
185 | .recalc = &propagate_rate, | ||
186 | }; | ||
187 | |||
188 | /* Optional external clock input for some McBSPs */ | ||
189 | static struct clk mcbsp_clks = { | ||
190 | .name = "mcbsp_clks", | ||
191 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
192 | .recalc = &propagate_rate, | ||
193 | }; | ||
194 | |||
195 | /* PRM EXTERNAL CLOCK OUTPUT */ | ||
196 | |||
197 | static struct clk sys_clkout1 = { | ||
198 | .name = "sys_clkout1", | ||
199 | .parent = &osc_sys_ck, | ||
200 | .enable_reg = OMAP3430_PRM_CLKOUT_CTRL, | ||
201 | .enable_bit = OMAP3430_CLKOUT_EN_SHIFT, | ||
202 | .flags = CLOCK_IN_OMAP343X, | ||
203 | .recalc = &followparent_recalc, | ||
204 | }; | ||
205 | |||
206 | /* DPLLS */ | ||
207 | |||
208 | /* CM CLOCKS */ | ||
209 | |||
210 | static const struct clksel_rate dpll_bypass_rates[] = { | ||
211 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
212 | { .div = 0 } | ||
213 | }; | ||
214 | |||
215 | static const struct clksel_rate dpll_locked_rates[] = { | ||
216 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
217 | { .div = 0 } | ||
218 | }; | ||
219 | |||
220 | static const struct clksel_rate div16_dpll_rates[] = { | ||
221 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
222 | { .div = 2, .val = 2, .flags = RATE_IN_343X }, | ||
223 | { .div = 3, .val = 3, .flags = RATE_IN_343X }, | ||
224 | { .div = 4, .val = 4, .flags = RATE_IN_343X }, | ||
225 | { .div = 5, .val = 5, .flags = RATE_IN_343X }, | ||
226 | { .div = 6, .val = 6, .flags = RATE_IN_343X }, | ||
227 | { .div = 7, .val = 7, .flags = RATE_IN_343X }, | ||
228 | { .div = 8, .val = 8, .flags = RATE_IN_343X }, | ||
229 | { .div = 9, .val = 9, .flags = RATE_IN_343X }, | ||
230 | { .div = 10, .val = 10, .flags = RATE_IN_343X }, | ||
231 | { .div = 11, .val = 11, .flags = RATE_IN_343X }, | ||
232 | { .div = 12, .val = 12, .flags = RATE_IN_343X }, | ||
233 | { .div = 13, .val = 13, .flags = RATE_IN_343X }, | ||
234 | { .div = 14, .val = 14, .flags = RATE_IN_343X }, | ||
235 | { .div = 15, .val = 15, .flags = RATE_IN_343X }, | ||
236 | { .div = 16, .val = 16, .flags = RATE_IN_343X }, | ||
237 | { .div = 0 } | ||
238 | }; | ||
239 | |||
240 | /* DPLL1 */ | ||
241 | /* MPU clock source */ | ||
242 | /* Type: DPLL */ | ||
243 | static const struct dpll_data dpll1_dd = { | ||
244 | .mult_div1_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL1_PLL), | ||
245 | .mult_mask = OMAP3430_MPU_DPLL_MULT_MASK, | ||
246 | .div1_mask = OMAP3430_MPU_DPLL_DIV_MASK, | ||
247 | .control_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKEN_PLL), | ||
248 | .enable_mask = OMAP3430_EN_MPU_DPLL_MASK, | ||
249 | .auto_recal_bit = OMAP3430_EN_MPU_DPLL_DRIFTGUARD_SHIFT, | ||
250 | .recal_en_bit = OMAP3430_MPU_DPLL_RECAL_EN_SHIFT, | ||
251 | .recal_st_bit = OMAP3430_MPU_DPLL_ST_SHIFT, | ||
252 | }; | ||
253 | |||
254 | static struct clk dpll1_ck = { | ||
255 | .name = "dpll1_ck", | ||
256 | .parent = &sys_ck, | ||
257 | .dpll_data = &dpll1_dd, | ||
258 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
259 | .recalc = &omap3_dpll_recalc, | ||
260 | }; | ||
261 | |||
262 | /* | ||
263 | * This virtual clock provides the CLKOUTX2 output from the DPLL if the | ||
264 | * DPLL isn't bypassed. | ||
265 | */ | ||
266 | static struct clk dpll1_x2_ck = { | ||
267 | .name = "dpll1_x2_ck", | ||
268 | .parent = &dpll1_ck, | ||
269 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
270 | PARENT_CONTROLS_CLOCK, | ||
271 | .recalc = &omap3_clkoutx2_recalc, | ||
272 | }; | ||
273 | |||
274 | /* On DPLL1, unlike other DPLLs, the divider is downstream from CLKOUTX2 */ | ||
275 | static const struct clksel div16_dpll1_x2m2_clksel[] = { | ||
276 | { .parent = &dpll1_x2_ck, .rates = div16_dpll_rates }, | ||
277 | { .parent = NULL } | ||
278 | }; | ||
279 | |||
280 | /* | ||
281 | * Does not exist in the TRM - needed to separate the M2 divider from | ||
282 | * bypass selection in mpu_ck | ||
283 | */ | ||
284 | static struct clk dpll1_x2m2_ck = { | ||
285 | .name = "dpll1_x2m2_ck", | ||
286 | .parent = &dpll1_x2_ck, | ||
287 | .init = &omap2_init_clksel_parent, | ||
288 | .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL2_PLL), | ||
289 | .clksel_mask = OMAP3430_MPU_DPLL_CLKOUT_DIV_MASK, | ||
290 | .clksel = div16_dpll1_x2m2_clksel, | ||
291 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
292 | PARENT_CONTROLS_CLOCK, | ||
293 | .recalc = &omap2_clksel_recalc, | ||
294 | }; | ||
295 | |||
296 | /* DPLL2 */ | ||
297 | /* IVA2 clock source */ | ||
298 | /* Type: DPLL */ | ||
299 | |||
300 | static const struct dpll_data dpll2_dd = { | ||
301 | .mult_div1_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKSEL1_PLL), | ||
302 | .mult_mask = OMAP3430_IVA2_DPLL_MULT_MASK, | ||
303 | .div1_mask = OMAP3430_IVA2_DPLL_DIV_MASK, | ||
304 | .control_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKEN_PLL), | ||
305 | .enable_mask = OMAP3430_EN_IVA2_DPLL_MASK, | ||
306 | .auto_recal_bit = OMAP3430_EN_IVA2_DPLL_DRIFTGUARD_SHIFT, | ||
307 | .recal_en_bit = OMAP3430_PRM_IRQENABLE_MPU_IVA2_DPLL_RECAL_EN_SHIFT, | ||
308 | .recal_st_bit = OMAP3430_PRM_IRQSTATUS_MPU_IVA2_DPLL_ST_SHIFT, | ||
309 | }; | ||
310 | |||
311 | static struct clk dpll2_ck = { | ||
312 | .name = "dpll2_ck", | ||
313 | .parent = &sys_ck, | ||
314 | .dpll_data = &dpll2_dd, | ||
315 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
316 | .recalc = &omap3_dpll_recalc, | ||
317 | }; | ||
318 | |||
319 | static const struct clksel div16_dpll2_m2x2_clksel[] = { | ||
320 | { .parent = &dpll2_ck, .rates = div16_dpll_rates }, | ||
321 | { .parent = NULL } | ||
322 | }; | ||
323 | |||
324 | /* | ||
325 | * The TRM is conflicted on whether IVA2 clock comes from DPLL2 CLKOUT | ||
326 | * or CLKOUTX2. CLKOUT seems most plausible. | ||
327 | */ | ||
328 | static struct clk dpll2_m2_ck = { | ||
329 | .name = "dpll2_m2_ck", | ||
330 | .parent = &dpll2_ck, | ||
331 | .init = &omap2_init_clksel_parent, | ||
332 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, | ||
333 | OMAP3430_CM_CLKSEL2_PLL), | ||
334 | .clksel_mask = OMAP3430_IVA2_DPLL_CLKOUT_DIV_MASK, | ||
335 | .clksel = div16_dpll2_m2x2_clksel, | ||
336 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
337 | PARENT_CONTROLS_CLOCK, | ||
338 | .recalc = &omap2_clksel_recalc, | ||
339 | }; | ||
340 | |||
341 | /* DPLL3 */ | ||
342 | /* Source clock for all interfaces and for some device fclks */ | ||
343 | /* Type: DPLL */ | ||
344 | static const struct dpll_data dpll3_dd = { | ||
345 | .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
346 | .mult_mask = OMAP3430_CORE_DPLL_MULT_MASK, | ||
347 | .div1_mask = OMAP3430_CORE_DPLL_DIV_MASK, | ||
348 | .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
349 | .enable_mask = OMAP3430_EN_CORE_DPLL_MASK, | ||
350 | .auto_recal_bit = OMAP3430_EN_CORE_DPLL_DRIFTGUARD_SHIFT, | ||
351 | .recal_en_bit = OMAP3430_CORE_DPLL_RECAL_EN_SHIFT, | ||
352 | .recal_st_bit = OMAP3430_CORE_DPLL_ST_SHIFT, | ||
353 | }; | ||
354 | |||
355 | static struct clk dpll3_ck = { | ||
356 | .name = "dpll3_ck", | ||
357 | .parent = &sys_ck, | ||
358 | .dpll_data = &dpll3_dd, | ||
359 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
360 | .recalc = &omap3_dpll_recalc, | ||
361 | }; | ||
362 | |||
363 | /* | ||
364 | * This virtual clock provides the CLKOUTX2 output from the DPLL if the | ||
365 | * DPLL isn't bypassed | ||
366 | */ | ||
367 | static struct clk dpll3_x2_ck = { | ||
368 | .name = "dpll3_x2_ck", | ||
369 | .parent = &dpll3_ck, | ||
370 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
371 | PARENT_CONTROLS_CLOCK, | ||
372 | .recalc = &omap3_clkoutx2_recalc, | ||
373 | }; | ||
374 | |||
375 | static const struct clksel_rate div31_dpll3_rates[] = { | ||
376 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
377 | { .div = 2, .val = 2, .flags = RATE_IN_343X }, | ||
378 | { .div = 3, .val = 3, .flags = RATE_IN_3430ES2 }, | ||
379 | { .div = 4, .val = 4, .flags = RATE_IN_3430ES2 }, | ||
380 | { .div = 5, .val = 5, .flags = RATE_IN_3430ES2 }, | ||
381 | { .div = 6, .val = 6, .flags = RATE_IN_3430ES2 }, | ||
382 | { .div = 7, .val = 7, .flags = RATE_IN_3430ES2 }, | ||
383 | { .div = 8, .val = 8, .flags = RATE_IN_3430ES2 }, | ||
384 | { .div = 9, .val = 9, .flags = RATE_IN_3430ES2 }, | ||
385 | { .div = 10, .val = 10, .flags = RATE_IN_3430ES2 }, | ||
386 | { .div = 11, .val = 11, .flags = RATE_IN_3430ES2 }, | ||
387 | { .div = 12, .val = 12, .flags = RATE_IN_3430ES2 }, | ||
388 | { .div = 13, .val = 13, .flags = RATE_IN_3430ES2 }, | ||
389 | { .div = 14, .val = 14, .flags = RATE_IN_3430ES2 }, | ||
390 | { .div = 15, .val = 15, .flags = RATE_IN_3430ES2 }, | ||
391 | { .div = 16, .val = 16, .flags = RATE_IN_3430ES2 }, | ||
392 | { .div = 17, .val = 17, .flags = RATE_IN_3430ES2 }, | ||
393 | { .div = 18, .val = 18, .flags = RATE_IN_3430ES2 }, | ||
394 | { .div = 19, .val = 19, .flags = RATE_IN_3430ES2 }, | ||
395 | { .div = 20, .val = 20, .flags = RATE_IN_3430ES2 }, | ||
396 | { .div = 21, .val = 21, .flags = RATE_IN_3430ES2 }, | ||
397 | { .div = 22, .val = 22, .flags = RATE_IN_3430ES2 }, | ||
398 | { .div = 23, .val = 23, .flags = RATE_IN_3430ES2 }, | ||
399 | { .div = 24, .val = 24, .flags = RATE_IN_3430ES2 }, | ||
400 | { .div = 25, .val = 25, .flags = RATE_IN_3430ES2 }, | ||
401 | { .div = 26, .val = 26, .flags = RATE_IN_3430ES2 }, | ||
402 | { .div = 27, .val = 27, .flags = RATE_IN_3430ES2 }, | ||
403 | { .div = 28, .val = 28, .flags = RATE_IN_3430ES2 }, | ||
404 | { .div = 29, .val = 29, .flags = RATE_IN_3430ES2 }, | ||
405 | { .div = 30, .val = 30, .flags = RATE_IN_3430ES2 }, | ||
406 | { .div = 31, .val = 31, .flags = RATE_IN_3430ES2 }, | ||
407 | { .div = 0 }, | ||
408 | }; | ||
409 | |||
410 | static const struct clksel div31_dpll3m2_clksel[] = { | ||
411 | { .parent = &dpll3_ck, .rates = div31_dpll3_rates }, | ||
412 | { .parent = NULL } | ||
413 | }; | ||
414 | |||
415 | /* | ||
416 | * DPLL3 output M2 | ||
417 | * REVISIT: This DPLL output divider must be changed in SRAM, so until | ||
418 | * that code is ready, this should remain a 'read-only' clksel clock. | ||
419 | */ | ||
420 | static struct clk dpll3_m2_ck = { | ||
421 | .name = "dpll3_m2_ck", | ||
422 | .parent = &dpll3_ck, | ||
423 | .init = &omap2_init_clksel_parent, | ||
424 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
425 | .clksel_mask = OMAP3430_CORE_DPLL_CLKOUT_DIV_MASK, | ||
426 | .clksel = div31_dpll3m2_clksel, | ||
427 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
428 | PARENT_CONTROLS_CLOCK, | ||
429 | .recalc = &omap2_clksel_recalc, | ||
430 | }; | ||
431 | |||
432 | static const struct clksel core_ck_clksel[] = { | ||
433 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
434 | { .parent = &dpll3_m2_ck, .rates = dpll_locked_rates }, | ||
435 | { .parent = NULL } | ||
436 | }; | ||
437 | |||
438 | static struct clk core_ck = { | ||
439 | .name = "core_ck", | ||
440 | .init = &omap2_init_clksel_parent, | ||
441 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
442 | .clksel_mask = OMAP3430_ST_CORE_CLK, | ||
443 | .clksel = core_ck_clksel, | ||
444 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
445 | PARENT_CONTROLS_CLOCK, | ||
446 | .recalc = &omap2_clksel_recalc, | ||
447 | }; | ||
448 | |||
449 | static const struct clksel dpll3_m2x2_ck_clksel[] = { | ||
450 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
451 | { .parent = &dpll3_x2_ck, .rates = dpll_locked_rates }, | ||
452 | { .parent = NULL } | ||
453 | }; | ||
454 | |||
455 | static struct clk dpll3_m2x2_ck = { | ||
456 | .name = "dpll3_m2x2_ck", | ||
457 | .init = &omap2_init_clksel_parent, | ||
458 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
459 | .clksel_mask = OMAP3430_ST_CORE_CLK, | ||
460 | .clksel = dpll3_m2x2_ck_clksel, | ||
461 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
462 | PARENT_CONTROLS_CLOCK, | ||
463 | .recalc = &omap2_clksel_recalc, | ||
464 | }; | ||
465 | |||
466 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
467 | static const struct clksel div16_dpll3_clksel[] = { | ||
468 | { .parent = &dpll3_ck, .rates = div16_dpll_rates }, | ||
469 | { .parent = NULL } | ||
470 | }; | ||
471 | |||
472 | /* This virtual clock is the source for dpll3_m3x2_ck */ | ||
473 | static struct clk dpll3_m3_ck = { | ||
474 | .name = "dpll3_m3_ck", | ||
475 | .parent = &dpll3_ck, | ||
476 | .init = &omap2_init_clksel_parent, | ||
477 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
478 | .clksel_mask = OMAP3430_DIV_DPLL3_MASK, | ||
479 | .clksel = div16_dpll3_clksel, | ||
480 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
481 | PARENT_CONTROLS_CLOCK, | ||
482 | .recalc = &omap2_clksel_recalc, | ||
483 | }; | ||
484 | |||
485 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
486 | static struct clk dpll3_m3x2_ck = { | ||
487 | .name = "dpll3_m3x2_ck", | ||
488 | .parent = &dpll3_m3_ck, | ||
489 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
490 | .enable_bit = OMAP3430_PWRDN_EMU_CORE_SHIFT, | ||
491 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | INVERT_ENABLE, | ||
492 | .recalc = &omap3_clkoutx2_recalc, | ||
493 | }; | ||
494 | |||
495 | static const struct clksel emu_core_alwon_ck_clksel[] = { | ||
496 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
497 | { .parent = &dpll3_m3x2_ck, .rates = dpll_locked_rates }, | ||
498 | { .parent = NULL } | ||
499 | }; | ||
500 | |||
501 | static struct clk emu_core_alwon_ck = { | ||
502 | .name = "emu_core_alwon_ck", | ||
503 | .parent = &dpll3_m3x2_ck, | ||
504 | .init = &omap2_init_clksel_parent, | ||
505 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
506 | .clksel_mask = OMAP3430_ST_CORE_CLK, | ||
507 | .clksel = emu_core_alwon_ck_clksel, | ||
508 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
509 | PARENT_CONTROLS_CLOCK, | ||
510 | .recalc = &omap2_clksel_recalc, | ||
511 | }; | ||
512 | |||
513 | /* DPLL4 */ | ||
514 | /* Supplies 96MHz, 54Mhz TV DAC, DSS fclk, CAM sensor clock, emul trace clk */ | ||
515 | /* Type: DPLL */ | ||
516 | static const struct dpll_data dpll4_dd = { | ||
517 | .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL2), | ||
518 | .mult_mask = OMAP3430_PERIPH_DPLL_MULT_MASK, | ||
519 | .div1_mask = OMAP3430_PERIPH_DPLL_DIV_MASK, | ||
520 | .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
521 | .enable_mask = OMAP3430_EN_PERIPH_DPLL_MASK, | ||
522 | .auto_recal_bit = OMAP3430_EN_PERIPH_DPLL_DRIFTGUARD_SHIFT, | ||
523 | .recal_en_bit = OMAP3430_PERIPH_DPLL_RECAL_EN_SHIFT, | ||
524 | .recal_st_bit = OMAP3430_PERIPH_DPLL_ST_SHIFT, | ||
525 | }; | ||
526 | |||
527 | static struct clk dpll4_ck = { | ||
528 | .name = "dpll4_ck", | ||
529 | .parent = &sys_ck, | ||
530 | .dpll_data = &dpll4_dd, | ||
531 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
532 | .recalc = &omap3_dpll_recalc, | ||
533 | }; | ||
534 | |||
535 | /* | ||
536 | * This virtual clock provides the CLKOUTX2 output from the DPLL if the | ||
537 | * DPLL isn't bypassed -- | ||
538 | * XXX does this serve any downstream clocks? | ||
539 | */ | ||
540 | static struct clk dpll4_x2_ck = { | ||
541 | .name = "dpll4_x2_ck", | ||
542 | .parent = &dpll4_ck, | ||
543 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
544 | PARENT_CONTROLS_CLOCK, | ||
545 | .recalc = &omap3_clkoutx2_recalc, | ||
546 | }; | ||
547 | |||
548 | static const struct clksel div16_dpll4_clksel[] = { | ||
549 | { .parent = &dpll4_ck, .rates = div16_dpll_rates }, | ||
550 | { .parent = NULL } | ||
551 | }; | ||
552 | |||
553 | /* This virtual clock is the source for dpll4_m2x2_ck */ | ||
554 | static struct clk dpll4_m2_ck = { | ||
555 | .name = "dpll4_m2_ck", | ||
556 | .parent = &dpll4_ck, | ||
557 | .init = &omap2_init_clksel_parent, | ||
558 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430_CM_CLKSEL3), | ||
559 | .clksel_mask = OMAP3430_DIV_96M_MASK, | ||
560 | .clksel = div16_dpll4_clksel, | ||
561 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
562 | PARENT_CONTROLS_CLOCK, | ||
563 | .recalc = &omap2_clksel_recalc, | ||
564 | }; | ||
565 | |||
566 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
567 | static struct clk dpll4_m2x2_ck = { | ||
568 | .name = "dpll4_m2x2_ck", | ||
569 | .parent = &dpll4_m2_ck, | ||
570 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
571 | .enable_bit = OMAP3430_PWRDN_96M_SHIFT, | ||
572 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | INVERT_ENABLE, | ||
573 | .recalc = &omap3_clkoutx2_recalc, | ||
574 | }; | ||
575 | |||
576 | static const struct clksel omap_96m_alwon_fck_clksel[] = { | ||
577 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
578 | { .parent = &dpll4_m2x2_ck, .rates = dpll_locked_rates }, | ||
579 | { .parent = NULL } | ||
580 | }; | ||
581 | |||
582 | static struct clk omap_96m_alwon_fck = { | ||
583 | .name = "omap_96m_alwon_fck", | ||
584 | .parent = &dpll4_m2x2_ck, | ||
585 | .init = &omap2_init_clksel_parent, | ||
586 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
587 | .clksel_mask = OMAP3430_ST_PERIPH_CLK, | ||
588 | .clksel = omap_96m_alwon_fck_clksel, | ||
589 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
590 | PARENT_CONTROLS_CLOCK, | ||
591 | .recalc = &omap2_clksel_recalc, | ||
592 | }; | ||
593 | |||
594 | static struct clk omap_96m_fck = { | ||
595 | .name = "omap_96m_fck", | ||
596 | .parent = &omap_96m_alwon_fck, | ||
597 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
598 | PARENT_CONTROLS_CLOCK, | ||
599 | .recalc = &followparent_recalc, | ||
600 | }; | ||
601 | |||
602 | static const struct clksel cm_96m_fck_clksel[] = { | ||
603 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
604 | { .parent = &dpll4_m2x2_ck, .rates = dpll_locked_rates }, | ||
605 | { .parent = NULL } | ||
606 | }; | ||
607 | |||
608 | static struct clk cm_96m_fck = { | ||
609 | .name = "cm_96m_fck", | ||
610 | .parent = &dpll4_m2x2_ck, | ||
611 | .init = &omap2_init_clksel_parent, | ||
612 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
613 | .clksel_mask = OMAP3430_ST_PERIPH_CLK, | ||
614 | .clksel = cm_96m_fck_clksel, | ||
615 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
616 | PARENT_CONTROLS_CLOCK, | ||
617 | .recalc = &omap2_clksel_recalc, | ||
618 | }; | ||
619 | |||
620 | /* This virtual clock is the source for dpll4_m3x2_ck */ | ||
621 | static struct clk dpll4_m3_ck = { | ||
622 | .name = "dpll4_m3_ck", | ||
623 | .parent = &dpll4_ck, | ||
624 | .init = &omap2_init_clksel_parent, | ||
625 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL), | ||
626 | .clksel_mask = OMAP3430_CLKSEL_TV_MASK, | ||
627 | .clksel = div16_dpll4_clksel, | ||
628 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
629 | PARENT_CONTROLS_CLOCK, | ||
630 | .recalc = &omap2_clksel_recalc, | ||
631 | }; | ||
632 | |||
633 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
634 | static struct clk dpll4_m3x2_ck = { | ||
635 | .name = "dpll4_m3x2_ck", | ||
636 | .parent = &dpll4_m3_ck, | ||
637 | .init = &omap2_init_clksel_parent, | ||
638 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
639 | .enable_bit = OMAP3430_PWRDN_TV_SHIFT, | ||
640 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | INVERT_ENABLE, | ||
641 | .recalc = &omap3_clkoutx2_recalc, | ||
642 | }; | ||
643 | |||
644 | static const struct clksel virt_omap_54m_fck_clksel[] = { | ||
645 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
646 | { .parent = &dpll4_m3x2_ck, .rates = dpll_locked_rates }, | ||
647 | { .parent = NULL } | ||
648 | }; | ||
649 | |||
650 | static struct clk virt_omap_54m_fck = { | ||
651 | .name = "virt_omap_54m_fck", | ||
652 | .parent = &dpll4_m3x2_ck, | ||
653 | .init = &omap2_init_clksel_parent, | ||
654 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
655 | .clksel_mask = OMAP3430_ST_PERIPH_CLK, | ||
656 | .clksel = virt_omap_54m_fck_clksel, | ||
657 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
658 | PARENT_CONTROLS_CLOCK, | ||
659 | .recalc = &omap2_clksel_recalc, | ||
660 | }; | ||
661 | |||
662 | static const struct clksel_rate omap_54m_d4m3x2_rates[] = { | ||
663 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
664 | { .div = 0 } | ||
665 | }; | ||
666 | |||
667 | static const struct clksel_rate omap_54m_alt_rates[] = { | ||
668 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
669 | { .div = 0 } | ||
670 | }; | ||
671 | |||
672 | static const struct clksel omap_54m_clksel[] = { | ||
673 | { .parent = &virt_omap_54m_fck, .rates = omap_54m_d4m3x2_rates }, | ||
674 | { .parent = &sys_altclk, .rates = omap_54m_alt_rates }, | ||
675 | { .parent = NULL } | ||
676 | }; | ||
677 | |||
678 | static struct clk omap_54m_fck = { | ||
679 | .name = "omap_54m_fck", | ||
680 | .init = &omap2_init_clksel_parent, | ||
681 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
682 | .clksel_mask = OMAP3430_SOURCE_54M, | ||
683 | .clksel = omap_54m_clksel, | ||
684 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
685 | PARENT_CONTROLS_CLOCK, | ||
686 | .recalc = &omap2_clksel_recalc, | ||
687 | }; | ||
688 | |||
689 | static const struct clksel_rate omap_48m_96md2_rates[] = { | ||
690 | { .div = 2, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
691 | { .div = 0 } | ||
692 | }; | ||
693 | |||
694 | static const struct clksel_rate omap_48m_alt_rates[] = { | ||
695 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
696 | { .div = 0 } | ||
697 | }; | ||
698 | |||
699 | static const struct clksel omap_48m_clksel[] = { | ||
700 | { .parent = &cm_96m_fck, .rates = omap_48m_96md2_rates }, | ||
701 | { .parent = &sys_altclk, .rates = omap_48m_alt_rates }, | ||
702 | { .parent = NULL } | ||
703 | }; | ||
704 | |||
705 | static struct clk omap_48m_fck = { | ||
706 | .name = "omap_48m_fck", | ||
707 | .init = &omap2_init_clksel_parent, | ||
708 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), | ||
709 | .clksel_mask = OMAP3430_SOURCE_48M, | ||
710 | .clksel = omap_48m_clksel, | ||
711 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
712 | PARENT_CONTROLS_CLOCK, | ||
713 | .recalc = &omap2_clksel_recalc, | ||
714 | }; | ||
715 | |||
716 | static struct clk omap_12m_fck = { | ||
717 | .name = "omap_12m_fck", | ||
718 | .parent = &omap_48m_fck, | ||
719 | .fixed_div = 4, | ||
720 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
721 | PARENT_CONTROLS_CLOCK, | ||
722 | .recalc = &omap2_fixed_divisor_recalc, | ||
723 | }; | ||
724 | |||
725 | /* This virstual clock is the source for dpll4_m4x2_ck */ | ||
726 | static struct clk dpll4_m4_ck = { | ||
727 | .name = "dpll4_m4_ck", | ||
728 | .parent = &dpll4_ck, | ||
729 | .init = &omap2_init_clksel_parent, | ||
730 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL), | ||
731 | .clksel_mask = OMAP3430_CLKSEL_DSS1_MASK, | ||
732 | .clksel = div16_dpll4_clksel, | ||
733 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
734 | PARENT_CONTROLS_CLOCK, | ||
735 | .recalc = &omap2_clksel_recalc, | ||
736 | }; | ||
737 | |||
738 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
739 | static struct clk dpll4_m4x2_ck = { | ||
740 | .name = "dpll4_m4x2_ck", | ||
741 | .parent = &dpll4_m4_ck, | ||
742 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
743 | .enable_bit = OMAP3430_PWRDN_CAM_SHIFT, | ||
744 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | INVERT_ENABLE, | ||
745 | .recalc = &omap3_clkoutx2_recalc, | ||
746 | }; | ||
747 | |||
748 | /* This virtual clock is the source for dpll4_m5x2_ck */ | ||
749 | static struct clk dpll4_m5_ck = { | ||
750 | .name = "dpll4_m5_ck", | ||
751 | .parent = &dpll4_ck, | ||
752 | .init = &omap2_init_clksel_parent, | ||
753 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_CLKSEL), | ||
754 | .clksel_mask = OMAP3430_CLKSEL_CAM_MASK, | ||
755 | .clksel = div16_dpll4_clksel, | ||
756 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
757 | PARENT_CONTROLS_CLOCK, | ||
758 | .recalc = &omap2_clksel_recalc, | ||
759 | }; | ||
760 | |||
761 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
762 | static struct clk dpll4_m5x2_ck = { | ||
763 | .name = "dpll4_m5x2_ck", | ||
764 | .parent = &dpll4_m5_ck, | ||
765 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
766 | .enable_bit = OMAP3430_PWRDN_CAM_SHIFT, | ||
767 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | INVERT_ENABLE, | ||
768 | .recalc = &omap3_clkoutx2_recalc, | ||
769 | }; | ||
770 | |||
771 | /* This virtual clock is the source for dpll4_m6x2_ck */ | ||
772 | static struct clk dpll4_m6_ck = { | ||
773 | .name = "dpll4_m6_ck", | ||
774 | .parent = &dpll4_ck, | ||
775 | .init = &omap2_init_clksel_parent, | ||
776 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
777 | .clksel_mask = OMAP3430_DIV_DPLL4_MASK, | ||
778 | .clksel = div16_dpll4_clksel, | ||
779 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
780 | PARENT_CONTROLS_CLOCK, | ||
781 | .recalc = &omap2_clksel_recalc, | ||
782 | }; | ||
783 | |||
784 | /* The PWRDN bit is apparently only available on 3430ES2 and above */ | ||
785 | static struct clk dpll4_m6x2_ck = { | ||
786 | .name = "dpll4_m6x2_ck", | ||
787 | .parent = &dpll4_m6_ck, | ||
788 | .init = &omap2_init_clksel_parent, | ||
789 | .enable_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | ||
790 | .enable_bit = OMAP3430_PWRDN_EMU_PERIPH_SHIFT, | ||
791 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | INVERT_ENABLE, | ||
792 | .recalc = &omap3_clkoutx2_recalc, | ||
793 | }; | ||
794 | |||
795 | static struct clk emu_per_alwon_ck = { | ||
796 | .name = "emu_per_alwon_ck", | ||
797 | .parent = &dpll4_m6x2_ck, | ||
798 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
799 | PARENT_CONTROLS_CLOCK, | ||
800 | .recalc = &followparent_recalc, | ||
801 | }; | ||
802 | |||
803 | /* DPLL5 */ | ||
804 | /* Supplies 120MHz clock, USIM source clock */ | ||
805 | /* Type: DPLL */ | ||
806 | /* 3430ES2 only */ | ||
807 | static const struct dpll_data dpll5_dd = { | ||
808 | .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL4), | ||
809 | .mult_mask = OMAP3430ES2_PERIPH2_DPLL_MULT_MASK, | ||
810 | .div1_mask = OMAP3430ES2_PERIPH2_DPLL_DIV_MASK, | ||
811 | .control_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKEN2), | ||
812 | .enable_mask = OMAP3430ES2_EN_PERIPH2_DPLL_MASK, | ||
813 | .auto_recal_bit = OMAP3430ES2_EN_PERIPH2_DPLL_DRIFTGUARD_SHIFT, | ||
814 | .recal_en_bit = OMAP3430ES2_SND_PERIPH_DPLL_RECAL_EN_SHIFT, | ||
815 | .recal_st_bit = OMAP3430ES2_SND_PERIPH_DPLL_ST_SHIFT, | ||
816 | }; | ||
817 | |||
818 | static struct clk dpll5_ck = { | ||
819 | .name = "dpll5_ck", | ||
820 | .parent = &sys_ck, | ||
821 | .dpll_data = &dpll5_dd, | ||
822 | .flags = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES | | ||
823 | ALWAYS_ENABLED, | ||
824 | .recalc = &omap3_dpll_recalc, | ||
825 | }; | ||
826 | |||
827 | static const struct clksel div16_dpll5_clksel[] = { | ||
828 | { .parent = &dpll5_ck, .rates = div16_dpll_rates }, | ||
829 | { .parent = NULL } | ||
830 | }; | ||
831 | |||
832 | static struct clk dpll5_m2_ck = { | ||
833 | .name = "dpll5_m2_ck", | ||
834 | .parent = &dpll5_ck, | ||
835 | .init = &omap2_init_clksel_parent, | ||
836 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL5), | ||
837 | .clksel_mask = OMAP3430ES2_DIV_120M_MASK, | ||
838 | .clksel = div16_dpll5_clksel, | ||
839 | .flags = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES, | ||
840 | .recalc = &omap2_clksel_recalc, | ||
841 | }; | ||
842 | |||
843 | static const struct clksel omap_120m_fck_clksel[] = { | ||
844 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
845 | { .parent = &dpll5_m2_ck, .rates = dpll_locked_rates }, | ||
846 | { .parent = NULL } | ||
847 | }; | ||
848 | |||
849 | static struct clk omap_120m_fck = { | ||
850 | .name = "omap_120m_fck", | ||
851 | .parent = &dpll5_m2_ck, | ||
852 | .init = &omap2_init_clksel_parent, | ||
853 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST2), | ||
854 | .clksel_mask = OMAP3430ES2_ST_PERIPH2_CLK_MASK, | ||
855 | .clksel = omap_120m_fck_clksel, | ||
856 | .flags = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES | | ||
857 | PARENT_CONTROLS_CLOCK, | ||
858 | .recalc = &omap2_clksel_recalc, | ||
859 | }; | ||
860 | |||
861 | /* CM EXTERNAL CLOCK OUTPUTS */ | ||
862 | |||
863 | static const struct clksel_rate clkout2_src_core_rates[] = { | ||
864 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
865 | { .div = 0 } | ||
866 | }; | ||
867 | |||
868 | static const struct clksel_rate clkout2_src_sys_rates[] = { | ||
869 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
870 | { .div = 0 } | ||
871 | }; | ||
872 | |||
873 | static const struct clksel_rate clkout2_src_96m_rates[] = { | ||
874 | { .div = 1, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
875 | { .div = 0 } | ||
876 | }; | ||
877 | |||
878 | static const struct clksel_rate clkout2_src_54m_rates[] = { | ||
879 | { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
880 | { .div = 0 } | ||
881 | }; | ||
882 | |||
883 | static const struct clksel clkout2_src_clksel[] = { | ||
884 | { .parent = &core_ck, .rates = clkout2_src_core_rates }, | ||
885 | { .parent = &sys_ck, .rates = clkout2_src_sys_rates }, | ||
886 | { .parent = &omap_96m_alwon_fck, .rates = clkout2_src_96m_rates }, | ||
887 | { .parent = &omap_54m_fck, .rates = clkout2_src_54m_rates }, | ||
888 | { .parent = NULL } | ||
889 | }; | ||
890 | |||
891 | static struct clk clkout2_src_ck = { | ||
892 | .name = "clkout2_src_ck", | ||
893 | .init = &omap2_init_clksel_parent, | ||
894 | .enable_reg = OMAP3430_CM_CLKOUT_CTRL, | ||
895 | .enable_bit = OMAP3430_CLKOUT2_EN_SHIFT, | ||
896 | .clksel_reg = OMAP3430_CM_CLKOUT_CTRL, | ||
897 | .clksel_mask = OMAP3430_CLKOUT2SOURCE_MASK, | ||
898 | .clksel = clkout2_src_clksel, | ||
899 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, | ||
900 | .recalc = &omap2_clksel_recalc, | ||
901 | }; | ||
902 | |||
903 | static const struct clksel_rate sys_clkout2_rates[] = { | ||
904 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
905 | { .div = 2, .val = 1, .flags = RATE_IN_343X }, | ||
906 | { .div = 4, .val = 2, .flags = RATE_IN_343X }, | ||
907 | { .div = 8, .val = 3, .flags = RATE_IN_343X }, | ||
908 | { .div = 16, .val = 4, .flags = RATE_IN_343X }, | ||
909 | { .div = 0 }, | ||
910 | }; | ||
911 | |||
912 | static const struct clksel sys_clkout2_clksel[] = { | ||
913 | { .parent = &clkout2_src_ck, .rates = sys_clkout2_rates }, | ||
914 | { .parent = NULL }, | ||
915 | }; | ||
916 | |||
917 | static struct clk sys_clkout2 = { | ||
918 | .name = "sys_clkout2", | ||
919 | .init = &omap2_init_clksel_parent, | ||
920 | .clksel_reg = OMAP3430_CM_CLKOUT_CTRL, | ||
921 | .clksel_mask = OMAP3430_CLKOUT2_DIV_MASK, | ||
922 | .clksel = sys_clkout2_clksel, | ||
923 | .flags = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK, | ||
924 | .recalc = &omap2_clksel_recalc, | ||
925 | }; | ||
926 | |||
927 | /* CM OUTPUT CLOCKS */ | ||
928 | |||
929 | static struct clk corex2_fck = { | ||
930 | .name = "corex2_fck", | ||
931 | .parent = &dpll3_m2x2_ck, | ||
932 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
933 | PARENT_CONTROLS_CLOCK, | ||
934 | .recalc = &followparent_recalc, | ||
935 | }; | ||
936 | |||
937 | /* DPLL power domain clock controls */ | ||
938 | |||
939 | static const struct clksel div2_core_clksel[] = { | ||
940 | { .parent = &core_ck, .rates = div2_rates }, | ||
941 | { .parent = NULL } | ||
942 | }; | ||
943 | |||
944 | /* | ||
945 | * REVISIT: Are these in DPLL power domain or CM power domain? docs | ||
946 | * may be inconsistent here? | ||
947 | */ | ||
948 | static struct clk dpll1_fck = { | ||
949 | .name = "dpll1_fck", | ||
950 | .parent = &core_ck, | ||
951 | .init = &omap2_init_clksel_parent, | ||
952 | .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL1_PLL), | ||
953 | .clksel_mask = OMAP3430_MPU_CLK_SRC_MASK, | ||
954 | .clksel = div2_core_clksel, | ||
955 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
956 | PARENT_CONTROLS_CLOCK, | ||
957 | .recalc = &omap2_clksel_recalc, | ||
958 | }; | ||
959 | |||
960 | /* | ||
961 | * MPU clksel: | ||
962 | * If DPLL1 is locked, mpu_ck derives from DPLL1; otherwise, mpu_ck | ||
963 | * derives from the high-frequency bypass clock originating from DPLL3, | ||
964 | * called 'dpll1_fck' | ||
965 | */ | ||
966 | static const struct clksel mpu_clksel[] = { | ||
967 | { .parent = &dpll1_fck, .rates = dpll_bypass_rates }, | ||
968 | { .parent = &dpll1_x2m2_ck, .rates = dpll_locked_rates }, | ||
969 | { .parent = NULL } | ||
970 | }; | ||
971 | |||
972 | static struct clk mpu_ck = { | ||
973 | .name = "mpu_ck", | ||
974 | .parent = &dpll1_x2m2_ck, | ||
975 | .init = &omap2_init_clksel_parent, | ||
976 | .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL), | ||
977 | .clksel_mask = OMAP3430_ST_MPU_CLK_MASK, | ||
978 | .clksel = mpu_clksel, | ||
979 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
980 | PARENT_CONTROLS_CLOCK, | ||
981 | .recalc = &omap2_clksel_recalc, | ||
982 | }; | ||
983 | |||
984 | /* arm_fck is divided by two when DPLL1 locked; otherwise, passthrough mpu_ck */ | ||
985 | static const struct clksel_rate arm_fck_rates[] = { | ||
986 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
987 | { .div = 2, .val = 1, .flags = RATE_IN_343X }, | ||
988 | { .div = 0 }, | ||
989 | }; | ||
990 | |||
991 | static const struct clksel arm_fck_clksel[] = { | ||
992 | { .parent = &mpu_ck, .rates = arm_fck_rates }, | ||
993 | { .parent = NULL } | ||
994 | }; | ||
995 | |||
996 | static struct clk arm_fck = { | ||
997 | .name = "arm_fck", | ||
998 | .parent = &mpu_ck, | ||
999 | .init = &omap2_init_clksel_parent, | ||
1000 | .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL), | ||
1001 | .clksel_mask = OMAP3430_ST_MPU_CLK_MASK, | ||
1002 | .clksel = arm_fck_clksel, | ||
1003 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1004 | PARENT_CONTROLS_CLOCK, | ||
1005 | .recalc = &omap2_clksel_recalc, | ||
1006 | }; | ||
1007 | |||
1008 | /* | ||
1009 | * REVISIT: This clock is never specifically defined in the 3430 TRM, | ||
1010 | * although it is referenced - so this is a guess | ||
1011 | */ | ||
1012 | static struct clk emu_mpu_alwon_ck = { | ||
1013 | .name = "emu_mpu_alwon_ck", | ||
1014 | .parent = &mpu_ck, | ||
1015 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1016 | PARENT_CONTROLS_CLOCK, | ||
1017 | .recalc = &followparent_recalc, | ||
1018 | }; | ||
1019 | |||
1020 | static struct clk dpll2_fck = { | ||
1021 | .name = "dpll2_fck", | ||
1022 | .parent = &core_ck, | ||
1023 | .init = &omap2_init_clksel_parent, | ||
1024 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKSEL1_PLL), | ||
1025 | .clksel_mask = OMAP3430_IVA2_CLK_SRC_MASK, | ||
1026 | .clksel = div2_core_clksel, | ||
1027 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1028 | PARENT_CONTROLS_CLOCK, | ||
1029 | .recalc = &omap2_clksel_recalc, | ||
1030 | }; | ||
1031 | |||
1032 | /* | ||
1033 | * IVA2 clksel: | ||
1034 | * If DPLL2 is locked, iva2_ck derives from DPLL2; otherwise, iva2_ck | ||
1035 | * derives from the high-frequency bypass clock originating from DPLL3, | ||
1036 | * called 'dpll2_fck' | ||
1037 | */ | ||
1038 | |||
1039 | static const struct clksel iva2_clksel[] = { | ||
1040 | { .parent = &dpll2_fck, .rates = dpll_bypass_rates }, | ||
1041 | { .parent = &dpll2_m2_ck, .rates = dpll_locked_rates }, | ||
1042 | { .parent = NULL } | ||
1043 | }; | ||
1044 | |||
1045 | static struct clk iva2_ck = { | ||
1046 | .name = "iva2_ck", | ||
1047 | .parent = &dpll2_m2_ck, | ||
1048 | .init = &omap2_init_clksel_parent, | ||
1049 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, | ||
1050 | OMAP3430_CM_IDLEST_PLL), | ||
1051 | .clksel_mask = OMAP3430_ST_IVA2_CLK_MASK, | ||
1052 | .clksel = iva2_clksel, | ||
1053 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1054 | PARENT_CONTROLS_CLOCK, | ||
1055 | .recalc = &omap2_clksel_recalc, | ||
1056 | }; | ||
1057 | |||
1058 | /* Common interface clocks */ | ||
1059 | |||
1060 | static struct clk l3_ick = { | ||
1061 | .name = "l3_ick", | ||
1062 | .parent = &core_ck, | ||
1063 | .init = &omap2_init_clksel_parent, | ||
1064 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1065 | .clksel_mask = OMAP3430_CLKSEL_L3_MASK, | ||
1066 | .clksel = div2_core_clksel, | ||
1067 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1068 | PARENT_CONTROLS_CLOCK, | ||
1069 | .recalc = &omap2_clksel_recalc, | ||
1070 | }; | ||
1071 | |||
1072 | static const struct clksel div2_l3_clksel[] = { | ||
1073 | { .parent = &l3_ick, .rates = div2_rates }, | ||
1074 | { .parent = NULL } | ||
1075 | }; | ||
1076 | |||
1077 | static struct clk l4_ick = { | ||
1078 | .name = "l4_ick", | ||
1079 | .parent = &l3_ick, | ||
1080 | .init = &omap2_init_clksel_parent, | ||
1081 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1082 | .clksel_mask = OMAP3430_CLKSEL_L4_MASK, | ||
1083 | .clksel = div2_l3_clksel, | ||
1084 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1085 | PARENT_CONTROLS_CLOCK, | ||
1086 | .recalc = &omap2_clksel_recalc, | ||
1087 | |||
1088 | }; | ||
1089 | |||
1090 | static const struct clksel div2_l4_clksel[] = { | ||
1091 | { .parent = &l4_ick, .rates = div2_rates }, | ||
1092 | { .parent = NULL } | ||
1093 | }; | ||
1094 | |||
1095 | static struct clk rm_ick = { | ||
1096 | .name = "rm_ick", | ||
1097 | .parent = &l4_ick, | ||
1098 | .init = &omap2_init_clksel_parent, | ||
1099 | .clksel_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_CLKSEL), | ||
1100 | .clksel_mask = OMAP3430_CLKSEL_RM_MASK, | ||
1101 | .clksel = div2_l4_clksel, | ||
1102 | .flags = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK, | ||
1103 | .recalc = &omap2_clksel_recalc, | ||
1104 | }; | ||
1105 | |||
1106 | /* GFX power domain */ | ||
1107 | |||
1108 | /* GFX clocks are in 3430ES1 only. 3430ES2 and later uses the SGX instead */ | ||
1109 | |||
1110 | static const struct clksel gfx_l3_clksel[] = { | ||
1111 | { .parent = &l3_ick, .rates = gfx_l3_rates }, | ||
1112 | { .parent = NULL } | ||
1113 | }; | ||
1114 | |||
1115 | static struct clk gfx_l3_fck = { | ||
1116 | .name = "gfx_l3_fck", | ||
1117 | .parent = &l3_ick, | ||
1118 | .init = &omap2_init_clksel_parent, | ||
1119 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), | ||
1120 | .enable_bit = OMAP_EN_GFX_SHIFT, | ||
1121 | .clksel_reg = OMAP_CM_REGADDR(GFX_MOD, CM_CLKSEL), | ||
1122 | .clksel_mask = OMAP_CLKSEL_GFX_MASK, | ||
1123 | .clksel = gfx_l3_clksel, | ||
1124 | .flags = CLOCK_IN_OMAP3430ES1 | RATE_PROPAGATES, | ||
1125 | .recalc = &omap2_clksel_recalc, | ||
1126 | }; | ||
1127 | |||
1128 | static struct clk gfx_l3_ick = { | ||
1129 | .name = "gfx_l3_ick", | ||
1130 | .parent = &l3_ick, | ||
1131 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN), | ||
1132 | .enable_bit = OMAP_EN_GFX_SHIFT, | ||
1133 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1134 | .recalc = &followparent_recalc, | ||
1135 | }; | ||
1136 | |||
1137 | static struct clk gfx_cg1_ck = { | ||
1138 | .name = "gfx_cg1_ck", | ||
1139 | .parent = &gfx_l3_fck, /* REVISIT: correct? */ | ||
1140 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN), | ||
1141 | .enable_bit = OMAP3430ES1_EN_2D_SHIFT, | ||
1142 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1143 | .recalc = &followparent_recalc, | ||
1144 | }; | ||
1145 | |||
1146 | static struct clk gfx_cg2_ck = { | ||
1147 | .name = "gfx_cg2_ck", | ||
1148 | .parent = &gfx_l3_fck, /* REVISIT: correct? */ | ||
1149 | .enable_reg = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN), | ||
1150 | .enable_bit = OMAP3430ES1_EN_3D_SHIFT, | ||
1151 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1152 | .recalc = &followparent_recalc, | ||
1153 | }; | ||
1154 | |||
1155 | /* SGX power domain - 3430ES2 only */ | ||
1156 | |||
1157 | static const struct clksel_rate sgx_core_rates[] = { | ||
1158 | { .div = 3, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
1159 | { .div = 4, .val = 1, .flags = RATE_IN_343X }, | ||
1160 | { .div = 6, .val = 2, .flags = RATE_IN_343X }, | ||
1161 | { .div = 0 }, | ||
1162 | }; | ||
1163 | |||
1164 | static const struct clksel_rate sgx_96m_rates[] = { | ||
1165 | { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
1166 | { .div = 0 }, | ||
1167 | }; | ||
1168 | |||
1169 | static const struct clksel sgx_clksel[] = { | ||
1170 | { .parent = &core_ck, .rates = sgx_core_rates }, | ||
1171 | { .parent = &cm_96m_fck, .rates = sgx_96m_rates }, | ||
1172 | { .parent = NULL }, | ||
1173 | }; | ||
1174 | |||
1175 | static struct clk sgx_fck = { | ||
1176 | .name = "sgx_fck", | ||
1177 | .init = &omap2_init_clksel_parent, | ||
1178 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_FCLKEN), | ||
1179 | .enable_bit = OMAP3430ES2_EN_SGX_SHIFT, | ||
1180 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_CLKSEL), | ||
1181 | .clksel_mask = OMAP3430ES2_CLKSEL_SGX_MASK, | ||
1182 | .clksel = sgx_clksel, | ||
1183 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1184 | .recalc = &omap2_clksel_recalc, | ||
1185 | }; | ||
1186 | |||
1187 | static struct clk sgx_ick = { | ||
1188 | .name = "sgx_ick", | ||
1189 | .parent = &l3_ick, | ||
1190 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_ICLKEN), | ||
1191 | .enable_bit = OMAP3430ES2_EN_SGX_SHIFT, | ||
1192 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1193 | .recalc = &followparent_recalc, | ||
1194 | }; | ||
1195 | |||
1196 | /* CORE power domain */ | ||
1197 | |||
1198 | static struct clk d2d_26m_fck = { | ||
1199 | .name = "d2d_26m_fck", | ||
1200 | .parent = &sys_ck, | ||
1201 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1202 | .enable_bit = OMAP3430ES1_EN_D2D_SHIFT, | ||
1203 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1204 | .recalc = &followparent_recalc, | ||
1205 | }; | ||
1206 | |||
1207 | static const struct clksel omap343x_gpt_clksel[] = { | ||
1208 | { .parent = &omap_32k_fck, .rates = gpt_32k_rates }, | ||
1209 | { .parent = &sys_ck, .rates = gpt_sys_rates }, | ||
1210 | { .parent = NULL} | ||
1211 | }; | ||
1212 | |||
1213 | static struct clk gpt10_fck = { | ||
1214 | .name = "gpt10_fck", | ||
1215 | .parent = &sys_ck, | ||
1216 | .init = &omap2_init_clksel_parent, | ||
1217 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1218 | .enable_bit = OMAP3430_EN_GPT10_SHIFT, | ||
1219 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1220 | .clksel_mask = OMAP3430_CLKSEL_GPT10_MASK, | ||
1221 | .clksel = omap343x_gpt_clksel, | ||
1222 | .flags = CLOCK_IN_OMAP343X, | ||
1223 | .recalc = &omap2_clksel_recalc, | ||
1224 | }; | ||
1225 | |||
1226 | static struct clk gpt11_fck = { | ||
1227 | .name = "gpt11_fck", | ||
1228 | .parent = &sys_ck, | ||
1229 | .init = &omap2_init_clksel_parent, | ||
1230 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1231 | .enable_bit = OMAP3430_EN_GPT11_SHIFT, | ||
1232 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1233 | .clksel_mask = OMAP3430_CLKSEL_GPT11_MASK, | ||
1234 | .clksel = omap343x_gpt_clksel, | ||
1235 | .flags = CLOCK_IN_OMAP343X, | ||
1236 | .recalc = &omap2_clksel_recalc, | ||
1237 | }; | ||
1238 | |||
1239 | static struct clk cpefuse_fck = { | ||
1240 | .name = "cpefuse_fck", | ||
1241 | .parent = &sys_ck, | ||
1242 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3), | ||
1243 | .enable_bit = OMAP3430ES2_EN_CPEFUSE_SHIFT, | ||
1244 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1245 | .recalc = &followparent_recalc, | ||
1246 | }; | ||
1247 | |||
1248 | static struct clk ts_fck = { | ||
1249 | .name = "ts_fck", | ||
1250 | .parent = &omap_32k_fck, | ||
1251 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3), | ||
1252 | .enable_bit = OMAP3430ES2_EN_TS_SHIFT, | ||
1253 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1254 | .recalc = &followparent_recalc, | ||
1255 | }; | ||
1256 | |||
1257 | static struct clk usbtll_fck = { | ||
1258 | .name = "usbtll_fck", | ||
1259 | .parent = &omap_120m_fck, | ||
1260 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3), | ||
1261 | .enable_bit = OMAP3430ES2_EN_USBTLL_SHIFT, | ||
1262 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1263 | .recalc = &followparent_recalc, | ||
1264 | }; | ||
1265 | |||
1266 | /* CORE 96M FCLK-derived clocks */ | ||
1267 | |||
1268 | static struct clk core_96m_fck = { | ||
1269 | .name = "core_96m_fck", | ||
1270 | .parent = &omap_96m_fck, | ||
1271 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1272 | PARENT_CONTROLS_CLOCK, | ||
1273 | .recalc = &followparent_recalc, | ||
1274 | }; | ||
1275 | |||
1276 | static struct clk mmchs3_fck = { | ||
1277 | .name = "mmchs_fck", | ||
1278 | .id = 3, | ||
1279 | .parent = &core_96m_fck, | ||
1280 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1281 | .enable_bit = OMAP3430ES2_EN_MMC3_SHIFT, | ||
1282 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1283 | .recalc = &followparent_recalc, | ||
1284 | }; | ||
1285 | |||
1286 | static struct clk mmchs2_fck = { | ||
1287 | .name = "mmchs_fck", | ||
1288 | .id = 2, | ||
1289 | .parent = &core_96m_fck, | ||
1290 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1291 | .enable_bit = OMAP3430_EN_MMC2_SHIFT, | ||
1292 | .flags = CLOCK_IN_OMAP343X, | ||
1293 | .recalc = &followparent_recalc, | ||
1294 | }; | ||
1295 | |||
1296 | static struct clk mspro_fck = { | ||
1297 | .name = "mspro_fck", | ||
1298 | .parent = &core_96m_fck, | ||
1299 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1300 | .enable_bit = OMAP3430_EN_MSPRO_SHIFT, | ||
1301 | .flags = CLOCK_IN_OMAP343X, | ||
1302 | .recalc = &followparent_recalc, | ||
1303 | }; | ||
1304 | |||
1305 | static struct clk mmchs1_fck = { | ||
1306 | .name = "mmchs_fck", | ||
1307 | .id = 1, | ||
1308 | .parent = &core_96m_fck, | ||
1309 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1310 | .enable_bit = OMAP3430_EN_MMC1_SHIFT, | ||
1311 | .flags = CLOCK_IN_OMAP343X, | ||
1312 | .recalc = &followparent_recalc, | ||
1313 | }; | ||
1314 | |||
1315 | static struct clk i2c3_fck = { | ||
1316 | .name = "i2c_fck", | ||
1317 | .id = 3, | ||
1318 | .parent = &core_96m_fck, | ||
1319 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1320 | .enable_bit = OMAP3430_EN_I2C3_SHIFT, | ||
1321 | .flags = CLOCK_IN_OMAP343X, | ||
1322 | .recalc = &followparent_recalc, | ||
1323 | }; | ||
1324 | |||
1325 | static struct clk i2c2_fck = { | ||
1326 | .name = "i2c_fck", | ||
1327 | .id = 2, | ||
1328 | .parent = &core_96m_fck, | ||
1329 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1330 | .enable_bit = OMAP3430_EN_I2C2_SHIFT, | ||
1331 | .flags = CLOCK_IN_OMAP343X, | ||
1332 | .recalc = &followparent_recalc, | ||
1333 | }; | ||
1334 | |||
1335 | static struct clk i2c1_fck = { | ||
1336 | .name = "i2c_fck", | ||
1337 | .id = 1, | ||
1338 | .parent = &core_96m_fck, | ||
1339 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1340 | .enable_bit = OMAP3430_EN_I2C1_SHIFT, | ||
1341 | .flags = CLOCK_IN_OMAP343X, | ||
1342 | .recalc = &followparent_recalc, | ||
1343 | }; | ||
1344 | |||
1345 | /* | ||
1346 | * MCBSP 1 & 5 get their 96MHz clock from core_96m_fck; | ||
1347 | * MCBSP 2, 3, 4 get their 96MHz clock from per_96m_fck. | ||
1348 | */ | ||
1349 | static const struct clksel_rate common_mcbsp_96m_rates[] = { | ||
1350 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
1351 | { .div = 0 } | ||
1352 | }; | ||
1353 | |||
1354 | static const struct clksel_rate common_mcbsp_mcbsp_rates[] = { | ||
1355 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
1356 | { .div = 0 } | ||
1357 | }; | ||
1358 | |||
1359 | static const struct clksel mcbsp_15_clksel[] = { | ||
1360 | { .parent = &core_96m_fck, .rates = common_mcbsp_96m_rates }, | ||
1361 | { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, | ||
1362 | { .parent = NULL } | ||
1363 | }; | ||
1364 | |||
1365 | static struct clk mcbsp5_fck = { | ||
1366 | .name = "mcbsp5_fck", | ||
1367 | .init = &omap2_init_clksel_parent, | ||
1368 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1369 | .enable_bit = OMAP3430_EN_MCBSP5_SHIFT, | ||
1370 | .clksel_reg = OMAP343X_CTRL_REGADDR(OMAP343X_CONTROL_DEVCONF1), | ||
1371 | .clksel_mask = OMAP2_MCBSP5_CLKS_MASK, | ||
1372 | .clksel = mcbsp_15_clksel, | ||
1373 | .flags = CLOCK_IN_OMAP343X, | ||
1374 | .recalc = &omap2_clksel_recalc, | ||
1375 | }; | ||
1376 | |||
1377 | static struct clk mcbsp1_fck = { | ||
1378 | .name = "mcbsp1_fck", | ||
1379 | .init = &omap2_init_clksel_parent, | ||
1380 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1381 | .enable_bit = OMAP3430_EN_MCBSP1_SHIFT, | ||
1382 | .clksel_reg = OMAP343X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0), | ||
1383 | .clksel_mask = OMAP2_MCBSP1_CLKS_MASK, | ||
1384 | .clksel = mcbsp_15_clksel, | ||
1385 | .flags = CLOCK_IN_OMAP343X, | ||
1386 | .recalc = &omap2_clksel_recalc, | ||
1387 | }; | ||
1388 | |||
1389 | /* CORE_48M_FCK-derived clocks */ | ||
1390 | |||
1391 | static struct clk core_48m_fck = { | ||
1392 | .name = "core_48m_fck", | ||
1393 | .parent = &omap_48m_fck, | ||
1394 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1395 | PARENT_CONTROLS_CLOCK, | ||
1396 | .recalc = &followparent_recalc, | ||
1397 | }; | ||
1398 | |||
1399 | static struct clk mcspi4_fck = { | ||
1400 | .name = "mcspi_fck", | ||
1401 | .id = 4, | ||
1402 | .parent = &core_48m_fck, | ||
1403 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1404 | .enable_bit = OMAP3430_EN_MCSPI4_SHIFT, | ||
1405 | .flags = CLOCK_IN_OMAP343X, | ||
1406 | .recalc = &followparent_recalc, | ||
1407 | }; | ||
1408 | |||
1409 | static struct clk mcspi3_fck = { | ||
1410 | .name = "mcspi_fck", | ||
1411 | .id = 3, | ||
1412 | .parent = &core_48m_fck, | ||
1413 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1414 | .enable_bit = OMAP3430_EN_MCSPI3_SHIFT, | ||
1415 | .flags = CLOCK_IN_OMAP343X, | ||
1416 | .recalc = &followparent_recalc, | ||
1417 | }; | ||
1418 | |||
1419 | static struct clk mcspi2_fck = { | ||
1420 | .name = "mcspi_fck", | ||
1421 | .id = 2, | ||
1422 | .parent = &core_48m_fck, | ||
1423 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1424 | .enable_bit = OMAP3430_EN_MCSPI2_SHIFT, | ||
1425 | .flags = CLOCK_IN_OMAP343X, | ||
1426 | .recalc = &followparent_recalc, | ||
1427 | }; | ||
1428 | |||
1429 | static struct clk mcspi1_fck = { | ||
1430 | .name = "mcspi_fck", | ||
1431 | .id = 1, | ||
1432 | .parent = &core_48m_fck, | ||
1433 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1434 | .enable_bit = OMAP3430_EN_MCSPI1_SHIFT, | ||
1435 | .flags = CLOCK_IN_OMAP343X, | ||
1436 | .recalc = &followparent_recalc, | ||
1437 | }; | ||
1438 | |||
1439 | static struct clk uart2_fck = { | ||
1440 | .name = "uart2_fck", | ||
1441 | .parent = &core_48m_fck, | ||
1442 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1443 | .enable_bit = OMAP3430_EN_UART2_SHIFT, | ||
1444 | .flags = CLOCK_IN_OMAP343X, | ||
1445 | .recalc = &followparent_recalc, | ||
1446 | }; | ||
1447 | |||
1448 | static struct clk uart1_fck = { | ||
1449 | .name = "uart1_fck", | ||
1450 | .parent = &core_48m_fck, | ||
1451 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1452 | .enable_bit = OMAP3430_EN_UART1_SHIFT, | ||
1453 | .flags = CLOCK_IN_OMAP343X, | ||
1454 | .recalc = &followparent_recalc, | ||
1455 | }; | ||
1456 | |||
1457 | static struct clk fshostusb_fck = { | ||
1458 | .name = "fshostusb_fck", | ||
1459 | .parent = &core_48m_fck, | ||
1460 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1461 | .enable_bit = OMAP3430ES1_EN_FSHOSTUSB_SHIFT, | ||
1462 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1463 | .recalc = &followparent_recalc, | ||
1464 | }; | ||
1465 | |||
1466 | /* CORE_12M_FCK based clocks */ | ||
1467 | |||
1468 | static struct clk core_12m_fck = { | ||
1469 | .name = "core_12m_fck", | ||
1470 | .parent = &omap_12m_fck, | ||
1471 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1472 | PARENT_CONTROLS_CLOCK, | ||
1473 | .recalc = &followparent_recalc, | ||
1474 | }; | ||
1475 | |||
1476 | static struct clk hdq_fck = { | ||
1477 | .name = "hdq_fck", | ||
1478 | .parent = &core_12m_fck, | ||
1479 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1480 | .enable_bit = OMAP3430_EN_HDQ_SHIFT, | ||
1481 | .flags = CLOCK_IN_OMAP343X, | ||
1482 | .recalc = &followparent_recalc, | ||
1483 | }; | ||
1484 | |||
1485 | /* DPLL3-derived clock */ | ||
1486 | |||
1487 | static const struct clksel_rate ssi_ssr_corex2_rates[] = { | ||
1488 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
1489 | { .div = 2, .val = 2, .flags = RATE_IN_343X }, | ||
1490 | { .div = 3, .val = 3, .flags = RATE_IN_343X }, | ||
1491 | { .div = 4, .val = 4, .flags = RATE_IN_343X }, | ||
1492 | { .div = 6, .val = 6, .flags = RATE_IN_343X }, | ||
1493 | { .div = 8, .val = 8, .flags = RATE_IN_343X }, | ||
1494 | { .div = 0 } | ||
1495 | }; | ||
1496 | |||
1497 | static const struct clksel ssi_ssr_clksel[] = { | ||
1498 | { .parent = &corex2_fck, .rates = ssi_ssr_corex2_rates }, | ||
1499 | { .parent = NULL } | ||
1500 | }; | ||
1501 | |||
1502 | static struct clk ssi_ssr_fck = { | ||
1503 | .name = "ssi_ssr_fck", | ||
1504 | .init = &omap2_init_clksel_parent, | ||
1505 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), | ||
1506 | .enable_bit = OMAP3430_EN_SSI_SHIFT, | ||
1507 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1508 | .clksel_mask = OMAP3430_CLKSEL_SSI_MASK, | ||
1509 | .clksel = ssi_ssr_clksel, | ||
1510 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, | ||
1511 | .recalc = &omap2_clksel_recalc, | ||
1512 | }; | ||
1513 | |||
1514 | static struct clk ssi_sst_fck = { | ||
1515 | .name = "ssi_sst_fck", | ||
1516 | .parent = &ssi_ssr_fck, | ||
1517 | .fixed_div = 2, | ||
1518 | .flags = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK, | ||
1519 | .recalc = &omap2_fixed_divisor_recalc, | ||
1520 | }; | ||
1521 | |||
1522 | |||
1523 | |||
1524 | /* CORE_L3_ICK based clocks */ | ||
1525 | |||
1526 | static struct clk core_l3_ick = { | ||
1527 | .name = "core_l3_ick", | ||
1528 | .parent = &l3_ick, | ||
1529 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1530 | PARENT_CONTROLS_CLOCK, | ||
1531 | .recalc = &followparent_recalc, | ||
1532 | }; | ||
1533 | |||
1534 | static struct clk hsotgusb_ick = { | ||
1535 | .name = "hsotgusb_ick", | ||
1536 | .parent = &core_l3_ick, | ||
1537 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1538 | .enable_bit = OMAP3430_EN_HSOTGUSB_SHIFT, | ||
1539 | .flags = CLOCK_IN_OMAP343X, | ||
1540 | .recalc = &followparent_recalc, | ||
1541 | }; | ||
1542 | |||
1543 | static struct clk sdrc_ick = { | ||
1544 | .name = "sdrc_ick", | ||
1545 | .parent = &core_l3_ick, | ||
1546 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1547 | .enable_bit = OMAP3430_EN_SDRC_SHIFT, | ||
1548 | .flags = CLOCK_IN_OMAP343X | ENABLE_ON_INIT, | ||
1549 | .recalc = &followparent_recalc, | ||
1550 | }; | ||
1551 | |||
1552 | static struct clk gpmc_fck = { | ||
1553 | .name = "gpmc_fck", | ||
1554 | .parent = &core_l3_ick, | ||
1555 | .flags = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK | | ||
1556 | ENABLE_ON_INIT, | ||
1557 | .recalc = &followparent_recalc, | ||
1558 | }; | ||
1559 | |||
1560 | /* SECURITY_L3_ICK based clocks */ | ||
1561 | |||
1562 | static struct clk security_l3_ick = { | ||
1563 | .name = "security_l3_ick", | ||
1564 | .parent = &l3_ick, | ||
1565 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1566 | PARENT_CONTROLS_CLOCK, | ||
1567 | .recalc = &followparent_recalc, | ||
1568 | }; | ||
1569 | |||
1570 | static struct clk pka_ick = { | ||
1571 | .name = "pka_ick", | ||
1572 | .parent = &security_l3_ick, | ||
1573 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1574 | .enable_bit = OMAP3430_EN_PKA_SHIFT, | ||
1575 | .flags = CLOCK_IN_OMAP343X, | ||
1576 | .recalc = &followparent_recalc, | ||
1577 | }; | ||
1578 | |||
1579 | /* CORE_L4_ICK based clocks */ | ||
1580 | |||
1581 | static struct clk core_l4_ick = { | ||
1582 | .name = "core_l4_ick", | ||
1583 | .parent = &l4_ick, | ||
1584 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1585 | PARENT_CONTROLS_CLOCK, | ||
1586 | .recalc = &followparent_recalc, | ||
1587 | }; | ||
1588 | |||
1589 | static struct clk usbtll_ick = { | ||
1590 | .name = "usbtll_ick", | ||
1591 | .parent = &core_l4_ick, | ||
1592 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), | ||
1593 | .enable_bit = OMAP3430ES2_EN_USBTLL_SHIFT, | ||
1594 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1595 | .recalc = &followparent_recalc, | ||
1596 | }; | ||
1597 | |||
1598 | static struct clk mmchs3_ick = { | ||
1599 | .name = "mmchs_ick", | ||
1600 | .id = 3, | ||
1601 | .parent = &core_l4_ick, | ||
1602 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1603 | .enable_bit = OMAP3430ES2_EN_MMC3_SHIFT, | ||
1604 | .flags = CLOCK_IN_OMAP3430ES2, | ||
1605 | .recalc = &followparent_recalc, | ||
1606 | }; | ||
1607 | |||
1608 | /* Intersystem Communication Registers - chassis mode only */ | ||
1609 | static struct clk icr_ick = { | ||
1610 | .name = "icr_ick", | ||
1611 | .parent = &core_l4_ick, | ||
1612 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1613 | .enable_bit = OMAP3430_EN_ICR_SHIFT, | ||
1614 | .flags = CLOCK_IN_OMAP343X, | ||
1615 | .recalc = &followparent_recalc, | ||
1616 | }; | ||
1617 | |||
1618 | static struct clk aes2_ick = { | ||
1619 | .name = "aes2_ick", | ||
1620 | .parent = &core_l4_ick, | ||
1621 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1622 | .enable_bit = OMAP3430_EN_AES2_SHIFT, | ||
1623 | .flags = CLOCK_IN_OMAP343X, | ||
1624 | .recalc = &followparent_recalc, | ||
1625 | }; | ||
1626 | |||
1627 | static struct clk sha12_ick = { | ||
1628 | .name = "sha12_ick", | ||
1629 | .parent = &core_l4_ick, | ||
1630 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1631 | .enable_bit = OMAP3430_EN_SHA12_SHIFT, | ||
1632 | .flags = CLOCK_IN_OMAP343X, | ||
1633 | .recalc = &followparent_recalc, | ||
1634 | }; | ||
1635 | |||
1636 | static struct clk des2_ick = { | ||
1637 | .name = "des2_ick", | ||
1638 | .parent = &core_l4_ick, | ||
1639 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1640 | .enable_bit = OMAP3430_EN_DES2_SHIFT, | ||
1641 | .flags = CLOCK_IN_OMAP343X, | ||
1642 | .recalc = &followparent_recalc, | ||
1643 | }; | ||
1644 | |||
1645 | static struct clk mmchs2_ick = { | ||
1646 | .name = "mmchs_ick", | ||
1647 | .id = 2, | ||
1648 | .parent = &core_l4_ick, | ||
1649 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1650 | .enable_bit = OMAP3430_EN_MMC2_SHIFT, | ||
1651 | .flags = CLOCK_IN_OMAP343X, | ||
1652 | .recalc = &followparent_recalc, | ||
1653 | }; | ||
1654 | |||
1655 | static struct clk mmchs1_ick = { | ||
1656 | .name = "mmchs_ick", | ||
1657 | .id = 1, | ||
1658 | .parent = &core_l4_ick, | ||
1659 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1660 | .enable_bit = OMAP3430_EN_MMC1_SHIFT, | ||
1661 | .flags = CLOCK_IN_OMAP343X, | ||
1662 | .recalc = &followparent_recalc, | ||
1663 | }; | ||
1664 | |||
1665 | static struct clk mspro_ick = { | ||
1666 | .name = "mspro_ick", | ||
1667 | .parent = &core_l4_ick, | ||
1668 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1669 | .enable_bit = OMAP3430_EN_MSPRO_SHIFT, | ||
1670 | .flags = CLOCK_IN_OMAP343X, | ||
1671 | .recalc = &followparent_recalc, | ||
1672 | }; | ||
1673 | |||
1674 | static struct clk hdq_ick = { | ||
1675 | .name = "hdq_ick", | ||
1676 | .parent = &core_l4_ick, | ||
1677 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1678 | .enable_bit = OMAP3430_EN_HDQ_SHIFT, | ||
1679 | .flags = CLOCK_IN_OMAP343X, | ||
1680 | .recalc = &followparent_recalc, | ||
1681 | }; | ||
1682 | |||
1683 | static struct clk mcspi4_ick = { | ||
1684 | .name = "mcspi_ick", | ||
1685 | .id = 4, | ||
1686 | .parent = &core_l4_ick, | ||
1687 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1688 | .enable_bit = OMAP3430_EN_MCSPI4_SHIFT, | ||
1689 | .flags = CLOCK_IN_OMAP343X, | ||
1690 | .recalc = &followparent_recalc, | ||
1691 | }; | ||
1692 | |||
1693 | static struct clk mcspi3_ick = { | ||
1694 | .name = "mcspi_ick", | ||
1695 | .id = 3, | ||
1696 | .parent = &core_l4_ick, | ||
1697 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1698 | .enable_bit = OMAP3430_EN_MCSPI3_SHIFT, | ||
1699 | .flags = CLOCK_IN_OMAP343X, | ||
1700 | .recalc = &followparent_recalc, | ||
1701 | }; | ||
1702 | |||
1703 | static struct clk mcspi2_ick = { | ||
1704 | .name = "mcspi_ick", | ||
1705 | .id = 2, | ||
1706 | .parent = &core_l4_ick, | ||
1707 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1708 | .enable_bit = OMAP3430_EN_MCSPI2_SHIFT, | ||
1709 | .flags = CLOCK_IN_OMAP343X, | ||
1710 | .recalc = &followparent_recalc, | ||
1711 | }; | ||
1712 | |||
1713 | static struct clk mcspi1_ick = { | ||
1714 | .name = "mcspi_ick", | ||
1715 | .id = 1, | ||
1716 | .parent = &core_l4_ick, | ||
1717 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1718 | .enable_bit = OMAP3430_EN_MCSPI1_SHIFT, | ||
1719 | .flags = CLOCK_IN_OMAP343X, | ||
1720 | .recalc = &followparent_recalc, | ||
1721 | }; | ||
1722 | |||
1723 | static struct clk i2c3_ick = { | ||
1724 | .name = "i2c_ick", | ||
1725 | .id = 3, | ||
1726 | .parent = &core_l4_ick, | ||
1727 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1728 | .enable_bit = OMAP3430_EN_I2C3_SHIFT, | ||
1729 | .flags = CLOCK_IN_OMAP343X, | ||
1730 | .recalc = &followparent_recalc, | ||
1731 | }; | ||
1732 | |||
1733 | static struct clk i2c2_ick = { | ||
1734 | .name = "i2c_ick", | ||
1735 | .id = 2, | ||
1736 | .parent = &core_l4_ick, | ||
1737 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1738 | .enable_bit = OMAP3430_EN_I2C2_SHIFT, | ||
1739 | .flags = CLOCK_IN_OMAP343X, | ||
1740 | .recalc = &followparent_recalc, | ||
1741 | }; | ||
1742 | |||
1743 | static struct clk i2c1_ick = { | ||
1744 | .name = "i2c_ick", | ||
1745 | .id = 1, | ||
1746 | .parent = &core_l4_ick, | ||
1747 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1748 | .enable_bit = OMAP3430_EN_I2C1_SHIFT, | ||
1749 | .flags = CLOCK_IN_OMAP343X, | ||
1750 | .recalc = &followparent_recalc, | ||
1751 | }; | ||
1752 | |||
1753 | static struct clk uart2_ick = { | ||
1754 | .name = "uart2_ick", | ||
1755 | .parent = &core_l4_ick, | ||
1756 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1757 | .enable_bit = OMAP3430_EN_UART2_SHIFT, | ||
1758 | .flags = CLOCK_IN_OMAP343X, | ||
1759 | .recalc = &followparent_recalc, | ||
1760 | }; | ||
1761 | |||
1762 | static struct clk uart1_ick = { | ||
1763 | .name = "uart1_ick", | ||
1764 | .parent = &core_l4_ick, | ||
1765 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1766 | .enable_bit = OMAP3430_EN_UART1_SHIFT, | ||
1767 | .flags = CLOCK_IN_OMAP343X, | ||
1768 | .recalc = &followparent_recalc, | ||
1769 | }; | ||
1770 | |||
1771 | static struct clk gpt11_ick = { | ||
1772 | .name = "gpt11_ick", | ||
1773 | .parent = &core_l4_ick, | ||
1774 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1775 | .enable_bit = OMAP3430_EN_GPT11_SHIFT, | ||
1776 | .flags = CLOCK_IN_OMAP343X, | ||
1777 | .recalc = &followparent_recalc, | ||
1778 | }; | ||
1779 | |||
1780 | static struct clk gpt10_ick = { | ||
1781 | .name = "gpt10_ick", | ||
1782 | .parent = &core_l4_ick, | ||
1783 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1784 | .enable_bit = OMAP3430_EN_GPT10_SHIFT, | ||
1785 | .flags = CLOCK_IN_OMAP343X, | ||
1786 | .recalc = &followparent_recalc, | ||
1787 | }; | ||
1788 | |||
1789 | static struct clk mcbsp5_ick = { | ||
1790 | .name = "mcbsp5_ick", | ||
1791 | .parent = &core_l4_ick, | ||
1792 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1793 | .enable_bit = OMAP3430_EN_MCBSP5_SHIFT, | ||
1794 | .flags = CLOCK_IN_OMAP343X, | ||
1795 | .recalc = &followparent_recalc, | ||
1796 | }; | ||
1797 | |||
1798 | static struct clk mcbsp1_ick = { | ||
1799 | .name = "mcbsp1_ick", | ||
1800 | .parent = &core_l4_ick, | ||
1801 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1802 | .enable_bit = OMAP3430_EN_MCBSP1_SHIFT, | ||
1803 | .flags = CLOCK_IN_OMAP343X, | ||
1804 | .recalc = &followparent_recalc, | ||
1805 | }; | ||
1806 | |||
1807 | static struct clk fac_ick = { | ||
1808 | .name = "fac_ick", | ||
1809 | .parent = &core_l4_ick, | ||
1810 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1811 | .enable_bit = OMAP3430ES1_EN_FAC_SHIFT, | ||
1812 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1813 | .recalc = &followparent_recalc, | ||
1814 | }; | ||
1815 | |||
1816 | static struct clk mailboxes_ick = { | ||
1817 | .name = "mailboxes_ick", | ||
1818 | .parent = &core_l4_ick, | ||
1819 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1820 | .enable_bit = OMAP3430_EN_MAILBOXES_SHIFT, | ||
1821 | .flags = CLOCK_IN_OMAP343X, | ||
1822 | .recalc = &followparent_recalc, | ||
1823 | }; | ||
1824 | |||
1825 | static struct clk omapctrl_ick = { | ||
1826 | .name = "omapctrl_ick", | ||
1827 | .parent = &core_l4_ick, | ||
1828 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1829 | .enable_bit = OMAP3430_EN_OMAPCTRL_SHIFT, | ||
1830 | .flags = CLOCK_IN_OMAP343X | ENABLE_ON_INIT, | ||
1831 | .recalc = &followparent_recalc, | ||
1832 | }; | ||
1833 | |||
1834 | /* SSI_L4_ICK based clocks */ | ||
1835 | |||
1836 | static struct clk ssi_l4_ick = { | ||
1837 | .name = "ssi_l4_ick", | ||
1838 | .parent = &l4_ick, | ||
1839 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, | ||
1840 | .recalc = &followparent_recalc, | ||
1841 | }; | ||
1842 | |||
1843 | static struct clk ssi_ick = { | ||
1844 | .name = "ssi_ick", | ||
1845 | .parent = &ssi_l4_ick, | ||
1846 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1847 | .enable_bit = OMAP3430_EN_SSI_SHIFT, | ||
1848 | .flags = CLOCK_IN_OMAP343X, | ||
1849 | .recalc = &followparent_recalc, | ||
1850 | }; | ||
1851 | |||
1852 | /* REVISIT: Technically the TRM claims that this is CORE_CLK based, | ||
1853 | * but l4_ick makes more sense to me */ | ||
1854 | |||
1855 | static const struct clksel usb_l4_clksel[] = { | ||
1856 | { .parent = &l4_ick, .rates = div2_rates }, | ||
1857 | { .parent = NULL }, | ||
1858 | }; | ||
1859 | |||
1860 | static struct clk usb_l4_ick = { | ||
1861 | .name = "usb_l4_ick", | ||
1862 | .parent = &l4_ick, | ||
1863 | .init = &omap2_init_clksel_parent, | ||
1864 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | ||
1865 | .enable_bit = OMAP3430ES1_EN_FSHOSTUSB_SHIFT, | ||
1866 | .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL), | ||
1867 | .clksel_mask = OMAP3430ES1_CLKSEL_FSHOSTUSB_MASK, | ||
1868 | .clksel = usb_l4_clksel, | ||
1869 | .flags = CLOCK_IN_OMAP3430ES1, | ||
1870 | .recalc = &omap2_clksel_recalc, | ||
1871 | }; | ||
1872 | |||
1873 | /* XXX MDM_INTC_ICK, SAD2D_ICK ?? */ | ||
1874 | |||
1875 | /* SECURITY_L4_ICK2 based clocks */ | ||
1876 | |||
1877 | static struct clk security_l4_ick2 = { | ||
1878 | .name = "security_l4_ick2", | ||
1879 | .parent = &l4_ick, | ||
1880 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
1881 | PARENT_CONTROLS_CLOCK, | ||
1882 | .recalc = &followparent_recalc, | ||
1883 | }; | ||
1884 | |||
1885 | static struct clk aes1_ick = { | ||
1886 | .name = "aes1_ick", | ||
1887 | .parent = &security_l4_ick2, | ||
1888 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1889 | .enable_bit = OMAP3430_EN_AES1_SHIFT, | ||
1890 | .flags = CLOCK_IN_OMAP343X, | ||
1891 | .recalc = &followparent_recalc, | ||
1892 | }; | ||
1893 | |||
1894 | static struct clk rng_ick = { | ||
1895 | .name = "rng_ick", | ||
1896 | .parent = &security_l4_ick2, | ||
1897 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1898 | .enable_bit = OMAP3430_EN_RNG_SHIFT, | ||
1899 | .flags = CLOCK_IN_OMAP343X, | ||
1900 | .recalc = &followparent_recalc, | ||
1901 | }; | ||
1902 | |||
1903 | static struct clk sha11_ick = { | ||
1904 | .name = "sha11_ick", | ||
1905 | .parent = &security_l4_ick2, | ||
1906 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1907 | .enable_bit = OMAP3430_EN_SHA11_SHIFT, | ||
1908 | .flags = CLOCK_IN_OMAP343X, | ||
1909 | .recalc = &followparent_recalc, | ||
1910 | }; | ||
1911 | |||
1912 | static struct clk des1_ick = { | ||
1913 | .name = "des1_ick", | ||
1914 | .parent = &security_l4_ick2, | ||
1915 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | ||
1916 | .enable_bit = OMAP3430_EN_DES1_SHIFT, | ||
1917 | .flags = CLOCK_IN_OMAP343X, | ||
1918 | .recalc = &followparent_recalc, | ||
1919 | }; | ||
1920 | |||
1921 | /* DSS */ | ||
1922 | static const struct clksel dss1_alwon_fck_clksel[] = { | ||
1923 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
1924 | { .parent = &dpll4_m4x2_ck, .rates = dpll_locked_rates }, | ||
1925 | { .parent = NULL } | ||
1926 | }; | ||
1927 | |||
1928 | static struct clk dss1_alwon_fck = { | ||
1929 | .name = "dss1_alwon_fck", | ||
1930 | .parent = &dpll4_m4x2_ck, | ||
1931 | .init = &omap2_init_clksel_parent, | ||
1932 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN), | ||
1933 | .enable_bit = OMAP3430_EN_DSS1_SHIFT, | ||
1934 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
1935 | .clksel_mask = OMAP3430_ST_PERIPH_CLK, | ||
1936 | .clksel = dss1_alwon_fck_clksel, | ||
1937 | .flags = CLOCK_IN_OMAP343X, | ||
1938 | .recalc = &omap2_clksel_recalc, | ||
1939 | }; | ||
1940 | |||
1941 | static struct clk dss_tv_fck = { | ||
1942 | .name = "dss_tv_fck", | ||
1943 | .parent = &omap_54m_fck, | ||
1944 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN), | ||
1945 | .enable_bit = OMAP3430_EN_TV_SHIFT, | ||
1946 | .flags = CLOCK_IN_OMAP343X, | ||
1947 | .recalc = &followparent_recalc, | ||
1948 | }; | ||
1949 | |||
1950 | static struct clk dss_96m_fck = { | ||
1951 | .name = "dss_96m_fck", | ||
1952 | .parent = &omap_96m_fck, | ||
1953 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN), | ||
1954 | .enable_bit = OMAP3430_EN_TV_SHIFT, | ||
1955 | .flags = CLOCK_IN_OMAP343X, | ||
1956 | .recalc = &followparent_recalc, | ||
1957 | }; | ||
1958 | |||
1959 | static struct clk dss2_alwon_fck = { | ||
1960 | .name = "dss2_alwon_fck", | ||
1961 | .parent = &sys_ck, | ||
1962 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN), | ||
1963 | .enable_bit = OMAP3430_EN_DSS2_SHIFT, | ||
1964 | .flags = CLOCK_IN_OMAP343X, | ||
1965 | .recalc = &followparent_recalc, | ||
1966 | }; | ||
1967 | |||
1968 | static struct clk dss_ick = { | ||
1969 | /* Handles both L3 and L4 clocks */ | ||
1970 | .name = "dss_ick", | ||
1971 | .parent = &l4_ick, | ||
1972 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_ICLKEN), | ||
1973 | .enable_bit = OMAP3430_CM_ICLKEN_DSS_EN_DSS_SHIFT, | ||
1974 | .flags = CLOCK_IN_OMAP343X, | ||
1975 | .recalc = &followparent_recalc, | ||
1976 | }; | ||
1977 | |||
1978 | /* CAM */ | ||
1979 | |||
1980 | static const struct clksel cam_mclk_clksel[] = { | ||
1981 | { .parent = &sys_ck, .rates = dpll_bypass_rates }, | ||
1982 | { .parent = &dpll4_m5x2_ck, .rates = dpll_locked_rates }, | ||
1983 | { .parent = NULL } | ||
1984 | }; | ||
1985 | |||
1986 | static struct clk cam_mclk = { | ||
1987 | .name = "cam_mclk", | ||
1988 | .parent = &dpll4_m5x2_ck, | ||
1989 | .init = &omap2_init_clksel_parent, | ||
1990 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), | ||
1991 | .clksel_mask = OMAP3430_ST_PERIPH_CLK, | ||
1992 | .clksel = cam_mclk_clksel, | ||
1993 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_FCLKEN), | ||
1994 | .enable_bit = OMAP3430_EN_CAM_SHIFT, | ||
1995 | .flags = CLOCK_IN_OMAP343X, | ||
1996 | .recalc = &omap2_clksel_recalc, | ||
1997 | }; | ||
1998 | |||
1999 | static struct clk cam_l3_ick = { | ||
2000 | .name = "cam_l3_ick", | ||
2001 | .parent = &l3_ick, | ||
2002 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_ICLKEN), | ||
2003 | .enable_bit = OMAP3430_EN_CAM_SHIFT, | ||
2004 | .flags = CLOCK_IN_OMAP343X, | ||
2005 | .recalc = &followparent_recalc, | ||
2006 | }; | ||
2007 | |||
2008 | static struct clk cam_l4_ick = { | ||
2009 | .name = "cam_l4_ick", | ||
2010 | .parent = &l4_ick, | ||
2011 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_ICLKEN), | ||
2012 | .enable_bit = OMAP3430_EN_CAM_SHIFT, | ||
2013 | .flags = CLOCK_IN_OMAP343X, | ||
2014 | .recalc = &followparent_recalc, | ||
2015 | }; | ||
2016 | |||
2017 | /* USBHOST - 3430ES2 only */ | ||
2018 | |||
2019 | static struct clk usbhost_120m_fck = { | ||
2020 | .name = "usbhost_120m_fck", | ||
2021 | .parent = &omap_120m_fck, | ||
2022 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), | ||
2023 | .enable_bit = OMAP3430ES2_EN_USBHOST2_SHIFT, | ||
2024 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2025 | .recalc = &followparent_recalc, | ||
2026 | }; | ||
2027 | |||
2028 | static struct clk usbhost_48m_fck = { | ||
2029 | .name = "usbhost_48m_fck", | ||
2030 | .parent = &omap_48m_fck, | ||
2031 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), | ||
2032 | .enable_bit = OMAP3430ES2_EN_USBHOST1_SHIFT, | ||
2033 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2034 | .recalc = &followparent_recalc, | ||
2035 | }; | ||
2036 | |||
2037 | static struct clk usbhost_l3_ick = { | ||
2038 | .name = "usbhost_l3_ick", | ||
2039 | .parent = &l3_ick, | ||
2040 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN), | ||
2041 | .enable_bit = OMAP3430ES2_EN_USBHOST_SHIFT, | ||
2042 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2043 | .recalc = &followparent_recalc, | ||
2044 | }; | ||
2045 | |||
2046 | static struct clk usbhost_l4_ick = { | ||
2047 | .name = "usbhost_l4_ick", | ||
2048 | .parent = &l4_ick, | ||
2049 | .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN), | ||
2050 | .enable_bit = OMAP3430ES2_EN_USBHOST_SHIFT, | ||
2051 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2052 | .recalc = &followparent_recalc, | ||
2053 | }; | ||
2054 | |||
2055 | static struct clk usbhost_sar_fck = { | ||
2056 | .name = "usbhost_sar_fck", | ||
2057 | .parent = &osc_sys_ck, | ||
2058 | .enable_reg = OMAP_PRM_REGADDR(OMAP3430ES2_USBHOST_MOD, PM_PWSTCTRL), | ||
2059 | .enable_bit = OMAP3430ES2_SAVEANDRESTORE_SHIFT, | ||
2060 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2061 | .recalc = &followparent_recalc, | ||
2062 | }; | ||
2063 | |||
2064 | /* WKUP */ | ||
2065 | |||
2066 | static const struct clksel_rate usim_96m_rates[] = { | ||
2067 | { .div = 2, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2068 | { .div = 4, .val = 4, .flags = RATE_IN_343X }, | ||
2069 | { .div = 8, .val = 5, .flags = RATE_IN_343X }, | ||
2070 | { .div = 10, .val = 6, .flags = RATE_IN_343X }, | ||
2071 | { .div = 0 }, | ||
2072 | }; | ||
2073 | |||
2074 | static const struct clksel_rate usim_120m_rates[] = { | ||
2075 | { .div = 4, .val = 7, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2076 | { .div = 8, .val = 8, .flags = RATE_IN_343X }, | ||
2077 | { .div = 16, .val = 9, .flags = RATE_IN_343X }, | ||
2078 | { .div = 20, .val = 10, .flags = RATE_IN_343X }, | ||
2079 | { .div = 0 }, | ||
2080 | }; | ||
2081 | |||
2082 | static const struct clksel usim_clksel[] = { | ||
2083 | { .parent = &omap_96m_fck, .rates = usim_96m_rates }, | ||
2084 | { .parent = &omap_120m_fck, .rates = usim_120m_rates }, | ||
2085 | { .parent = &sys_ck, .rates = div2_rates }, | ||
2086 | { .parent = NULL }, | ||
2087 | }; | ||
2088 | |||
2089 | /* 3430ES2 only */ | ||
2090 | static struct clk usim_fck = { | ||
2091 | .name = "usim_fck", | ||
2092 | .init = &omap2_init_clksel_parent, | ||
2093 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
2094 | .enable_bit = OMAP3430ES2_EN_USIMOCP_SHIFT, | ||
2095 | .clksel_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_CLKSEL), | ||
2096 | .clksel_mask = OMAP3430ES2_CLKSEL_USIMOCP_MASK, | ||
2097 | .clksel = usim_clksel, | ||
2098 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2099 | .recalc = &omap2_clksel_recalc, | ||
2100 | }; | ||
2101 | |||
2102 | static struct clk gpt1_fck = { | ||
2103 | .name = "gpt1_fck", | ||
2104 | .init = &omap2_init_clksel_parent, | ||
2105 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
2106 | .enable_bit = OMAP3430_EN_GPT1_SHIFT, | ||
2107 | .clksel_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_CLKSEL), | ||
2108 | .clksel_mask = OMAP3430_CLKSEL_GPT1_MASK, | ||
2109 | .clksel = omap343x_gpt_clksel, | ||
2110 | .flags = CLOCK_IN_OMAP343X, | ||
2111 | .recalc = &omap2_clksel_recalc, | ||
2112 | }; | ||
2113 | |||
2114 | static struct clk wkup_32k_fck = { | ||
2115 | .name = "wkup_32k_fck", | ||
2116 | .parent = &omap_32k_fck, | ||
2117 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2118 | .recalc = &followparent_recalc, | ||
2119 | }; | ||
2120 | |||
2121 | static struct clk gpio1_fck = { | ||
2122 | .name = "gpio1_fck", | ||
2123 | .parent = &wkup_32k_fck, | ||
2124 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
2125 | .enable_bit = OMAP3430_EN_GPIO1_SHIFT, | ||
2126 | .flags = CLOCK_IN_OMAP343X, | ||
2127 | .recalc = &followparent_recalc, | ||
2128 | }; | ||
2129 | |||
2130 | static struct clk wdt2_fck = { | ||
2131 | .name = "wdt2_fck", | ||
2132 | .parent = &wkup_32k_fck, | ||
2133 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
2134 | .enable_bit = OMAP3430_EN_WDT2_SHIFT, | ||
2135 | .flags = CLOCK_IN_OMAP343X, | ||
2136 | .recalc = &followparent_recalc, | ||
2137 | }; | ||
2138 | |||
2139 | static struct clk wkup_l4_ick = { | ||
2140 | .name = "wkup_l4_ick", | ||
2141 | .parent = &sys_ck, | ||
2142 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2143 | .recalc = &followparent_recalc, | ||
2144 | }; | ||
2145 | |||
2146 | /* 3430ES2 only */ | ||
2147 | /* Never specifically named in the TRM, so we have to infer a likely name */ | ||
2148 | static struct clk usim_ick = { | ||
2149 | .name = "usim_ick", | ||
2150 | .parent = &wkup_l4_ick, | ||
2151 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2152 | .enable_bit = OMAP3430ES2_EN_USIMOCP_SHIFT, | ||
2153 | .flags = CLOCK_IN_OMAP3430ES2, | ||
2154 | .recalc = &followparent_recalc, | ||
2155 | }; | ||
2156 | |||
2157 | static struct clk wdt2_ick = { | ||
2158 | .name = "wdt2_ick", | ||
2159 | .parent = &wkup_l4_ick, | ||
2160 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2161 | .enable_bit = OMAP3430_EN_WDT2_SHIFT, | ||
2162 | .flags = CLOCK_IN_OMAP343X, | ||
2163 | .recalc = &followparent_recalc, | ||
2164 | }; | ||
2165 | |||
2166 | static struct clk wdt1_ick = { | ||
2167 | .name = "wdt1_ick", | ||
2168 | .parent = &wkup_l4_ick, | ||
2169 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2170 | .enable_bit = OMAP3430_EN_WDT1_SHIFT, | ||
2171 | .flags = CLOCK_IN_OMAP343X, | ||
2172 | .recalc = &followparent_recalc, | ||
2173 | }; | ||
2174 | |||
2175 | static struct clk gpio1_ick = { | ||
2176 | .name = "gpio1_ick", | ||
2177 | .parent = &wkup_l4_ick, | ||
2178 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2179 | .enable_bit = OMAP3430_EN_GPIO1_SHIFT, | ||
2180 | .flags = CLOCK_IN_OMAP343X, | ||
2181 | .recalc = &followparent_recalc, | ||
2182 | }; | ||
2183 | |||
2184 | static struct clk omap_32ksync_ick = { | ||
2185 | .name = "omap_32ksync_ick", | ||
2186 | .parent = &wkup_l4_ick, | ||
2187 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2188 | .enable_bit = OMAP3430_EN_32KSYNC_SHIFT, | ||
2189 | .flags = CLOCK_IN_OMAP343X, | ||
2190 | .recalc = &followparent_recalc, | ||
2191 | }; | ||
2192 | |||
2193 | static struct clk gpt12_ick = { | ||
2194 | .name = "gpt12_ick", | ||
2195 | .parent = &wkup_l4_ick, | ||
2196 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2197 | .enable_bit = OMAP3430_EN_GPT12_SHIFT, | ||
2198 | .flags = CLOCK_IN_OMAP343X, | ||
2199 | .recalc = &followparent_recalc, | ||
2200 | }; | ||
2201 | |||
2202 | static struct clk gpt1_ick = { | ||
2203 | .name = "gpt1_ick", | ||
2204 | .parent = &wkup_l4_ick, | ||
2205 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | ||
2206 | .enable_bit = OMAP3430_EN_GPT1_SHIFT, | ||
2207 | .flags = CLOCK_IN_OMAP343X, | ||
2208 | .recalc = &followparent_recalc, | ||
2209 | }; | ||
2210 | |||
2211 | |||
2212 | |||
2213 | /* PER clock domain */ | ||
2214 | |||
2215 | static struct clk per_96m_fck = { | ||
2216 | .name = "per_96m_fck", | ||
2217 | .parent = &omap_96m_alwon_fck, | ||
2218 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
2219 | PARENT_CONTROLS_CLOCK, | ||
2220 | .recalc = &followparent_recalc, | ||
2221 | }; | ||
2222 | |||
2223 | static struct clk per_48m_fck = { | ||
2224 | .name = "per_48m_fck", | ||
2225 | .parent = &omap_48m_fck, | ||
2226 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
2227 | PARENT_CONTROLS_CLOCK, | ||
2228 | .recalc = &followparent_recalc, | ||
2229 | }; | ||
2230 | |||
2231 | static struct clk uart3_fck = { | ||
2232 | .name = "uart3_fck", | ||
2233 | .parent = &per_48m_fck, | ||
2234 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2235 | .enable_bit = OMAP3430_EN_UART3_SHIFT, | ||
2236 | .flags = CLOCK_IN_OMAP343X, | ||
2237 | .recalc = &followparent_recalc, | ||
2238 | }; | ||
2239 | |||
2240 | static struct clk gpt2_fck = { | ||
2241 | .name = "gpt2_fck", | ||
2242 | .init = &omap2_init_clksel_parent, | ||
2243 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2244 | .enable_bit = OMAP3430_EN_GPT2_SHIFT, | ||
2245 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2246 | .clksel_mask = OMAP3430_CLKSEL_GPT2_MASK, | ||
2247 | .clksel = omap343x_gpt_clksel, | ||
2248 | .flags = CLOCK_IN_OMAP343X, | ||
2249 | .recalc = &omap2_clksel_recalc, | ||
2250 | }; | ||
2251 | |||
2252 | static struct clk gpt3_fck = { | ||
2253 | .name = "gpt3_fck", | ||
2254 | .init = &omap2_init_clksel_parent, | ||
2255 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2256 | .enable_bit = OMAP3430_EN_GPT3_SHIFT, | ||
2257 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2258 | .clksel_mask = OMAP3430_CLKSEL_GPT3_MASK, | ||
2259 | .clksel = omap343x_gpt_clksel, | ||
2260 | .flags = CLOCK_IN_OMAP343X, | ||
2261 | .recalc = &omap2_clksel_recalc, | ||
2262 | }; | ||
2263 | |||
2264 | static struct clk gpt4_fck = { | ||
2265 | .name = "gpt4_fck", | ||
2266 | .init = &omap2_init_clksel_parent, | ||
2267 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2268 | .enable_bit = OMAP3430_EN_GPT4_SHIFT, | ||
2269 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2270 | .clksel_mask = OMAP3430_CLKSEL_GPT4_MASK, | ||
2271 | .clksel = omap343x_gpt_clksel, | ||
2272 | .flags = CLOCK_IN_OMAP343X, | ||
2273 | .recalc = &omap2_clksel_recalc, | ||
2274 | }; | ||
2275 | |||
2276 | static struct clk gpt5_fck = { | ||
2277 | .name = "gpt5_fck", | ||
2278 | .init = &omap2_init_clksel_parent, | ||
2279 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2280 | .enable_bit = OMAP3430_EN_GPT5_SHIFT, | ||
2281 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2282 | .clksel_mask = OMAP3430_CLKSEL_GPT5_MASK, | ||
2283 | .clksel = omap343x_gpt_clksel, | ||
2284 | .flags = CLOCK_IN_OMAP343X, | ||
2285 | .recalc = &omap2_clksel_recalc, | ||
2286 | }; | ||
2287 | |||
2288 | static struct clk gpt6_fck = { | ||
2289 | .name = "gpt6_fck", | ||
2290 | .init = &omap2_init_clksel_parent, | ||
2291 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2292 | .enable_bit = OMAP3430_EN_GPT6_SHIFT, | ||
2293 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2294 | .clksel_mask = OMAP3430_CLKSEL_GPT6_MASK, | ||
2295 | .clksel = omap343x_gpt_clksel, | ||
2296 | .flags = CLOCK_IN_OMAP343X, | ||
2297 | .recalc = &omap2_clksel_recalc, | ||
2298 | }; | ||
2299 | |||
2300 | static struct clk gpt7_fck = { | ||
2301 | .name = "gpt7_fck", | ||
2302 | .init = &omap2_init_clksel_parent, | ||
2303 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2304 | .enable_bit = OMAP3430_EN_GPT7_SHIFT, | ||
2305 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2306 | .clksel_mask = OMAP3430_CLKSEL_GPT7_MASK, | ||
2307 | .clksel = omap343x_gpt_clksel, | ||
2308 | .flags = CLOCK_IN_OMAP343X, | ||
2309 | .recalc = &omap2_clksel_recalc, | ||
2310 | }; | ||
2311 | |||
2312 | static struct clk gpt8_fck = { | ||
2313 | .name = "gpt8_fck", | ||
2314 | .init = &omap2_init_clksel_parent, | ||
2315 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2316 | .enable_bit = OMAP3430_EN_GPT8_SHIFT, | ||
2317 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2318 | .clksel_mask = OMAP3430_CLKSEL_GPT8_MASK, | ||
2319 | .clksel = omap343x_gpt_clksel, | ||
2320 | .flags = CLOCK_IN_OMAP343X, | ||
2321 | .recalc = &omap2_clksel_recalc, | ||
2322 | }; | ||
2323 | |||
2324 | static struct clk gpt9_fck = { | ||
2325 | .name = "gpt9_fck", | ||
2326 | .init = &omap2_init_clksel_parent, | ||
2327 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2328 | .enable_bit = OMAP3430_EN_GPT9_SHIFT, | ||
2329 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_CLKSEL), | ||
2330 | .clksel_mask = OMAP3430_CLKSEL_GPT9_MASK, | ||
2331 | .clksel = omap343x_gpt_clksel, | ||
2332 | .flags = CLOCK_IN_OMAP343X, | ||
2333 | .recalc = &omap2_clksel_recalc, | ||
2334 | }; | ||
2335 | |||
2336 | static struct clk per_32k_alwon_fck = { | ||
2337 | .name = "per_32k_alwon_fck", | ||
2338 | .parent = &omap_32k_fck, | ||
2339 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2340 | .recalc = &followparent_recalc, | ||
2341 | }; | ||
2342 | |||
2343 | static struct clk gpio6_fck = { | ||
2344 | .name = "gpio6_fck", | ||
2345 | .parent = &per_32k_alwon_fck, | ||
2346 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2347 | .enable_bit = OMAP3430_EN_GPT6_SHIFT, | ||
2348 | .flags = CLOCK_IN_OMAP343X, | ||
2349 | .recalc = &followparent_recalc, | ||
2350 | }; | ||
2351 | |||
2352 | static struct clk gpio5_fck = { | ||
2353 | .name = "gpio5_fck", | ||
2354 | .parent = &per_32k_alwon_fck, | ||
2355 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2356 | .enable_bit = OMAP3430_EN_GPT5_SHIFT, | ||
2357 | .flags = CLOCK_IN_OMAP343X, | ||
2358 | .recalc = &followparent_recalc, | ||
2359 | }; | ||
2360 | |||
2361 | static struct clk gpio4_fck = { | ||
2362 | .name = "gpio4_fck", | ||
2363 | .parent = &per_32k_alwon_fck, | ||
2364 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2365 | .enable_bit = OMAP3430_EN_GPT4_SHIFT, | ||
2366 | .flags = CLOCK_IN_OMAP343X, | ||
2367 | .recalc = &followparent_recalc, | ||
2368 | }; | ||
2369 | |||
2370 | static struct clk gpio3_fck = { | ||
2371 | .name = "gpio3_fck", | ||
2372 | .parent = &per_32k_alwon_fck, | ||
2373 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2374 | .enable_bit = OMAP3430_EN_GPT3_SHIFT, | ||
2375 | .flags = CLOCK_IN_OMAP343X, | ||
2376 | .recalc = &followparent_recalc, | ||
2377 | }; | ||
2378 | |||
2379 | static struct clk gpio2_fck = { | ||
2380 | .name = "gpio2_fck", | ||
2381 | .parent = &per_32k_alwon_fck, | ||
2382 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2383 | .enable_bit = OMAP3430_EN_GPT2_SHIFT, | ||
2384 | .flags = CLOCK_IN_OMAP343X, | ||
2385 | .recalc = &followparent_recalc, | ||
2386 | }; | ||
2387 | |||
2388 | static struct clk wdt3_fck = { | ||
2389 | .name = "wdt3_fck", | ||
2390 | .parent = &per_32k_alwon_fck, | ||
2391 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2392 | .enable_bit = OMAP3430_EN_WDT3_SHIFT, | ||
2393 | .flags = CLOCK_IN_OMAP343X, | ||
2394 | .recalc = &followparent_recalc, | ||
2395 | }; | ||
2396 | |||
2397 | static struct clk per_l4_ick = { | ||
2398 | .name = "per_l4_ick", | ||
2399 | .parent = &l4_ick, | ||
2400 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | ||
2401 | PARENT_CONTROLS_CLOCK, | ||
2402 | .recalc = &followparent_recalc, | ||
2403 | }; | ||
2404 | |||
2405 | static struct clk gpio6_ick = { | ||
2406 | .name = "gpio6_ick", | ||
2407 | .parent = &per_l4_ick, | ||
2408 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2409 | .enable_bit = OMAP3430_EN_GPIO6_SHIFT, | ||
2410 | .flags = CLOCK_IN_OMAP343X, | ||
2411 | .recalc = &followparent_recalc, | ||
2412 | }; | ||
2413 | |||
2414 | static struct clk gpio5_ick = { | ||
2415 | .name = "gpio5_ick", | ||
2416 | .parent = &per_l4_ick, | ||
2417 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2418 | .enable_bit = OMAP3430_EN_GPIO5_SHIFT, | ||
2419 | .flags = CLOCK_IN_OMAP343X, | ||
2420 | .recalc = &followparent_recalc, | ||
2421 | }; | ||
2422 | |||
2423 | static struct clk gpio4_ick = { | ||
2424 | .name = "gpio4_ick", | ||
2425 | .parent = &per_l4_ick, | ||
2426 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2427 | .enable_bit = OMAP3430_EN_GPIO4_SHIFT, | ||
2428 | .flags = CLOCK_IN_OMAP343X, | ||
2429 | .recalc = &followparent_recalc, | ||
2430 | }; | ||
2431 | |||
2432 | static struct clk gpio3_ick = { | ||
2433 | .name = "gpio3_ick", | ||
2434 | .parent = &per_l4_ick, | ||
2435 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2436 | .enable_bit = OMAP3430_EN_GPIO3_SHIFT, | ||
2437 | .flags = CLOCK_IN_OMAP343X, | ||
2438 | .recalc = &followparent_recalc, | ||
2439 | }; | ||
2440 | |||
2441 | static struct clk gpio2_ick = { | ||
2442 | .name = "gpio2_ick", | ||
2443 | .parent = &per_l4_ick, | ||
2444 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2445 | .enable_bit = OMAP3430_EN_GPIO2_SHIFT, | ||
2446 | .flags = CLOCK_IN_OMAP343X, | ||
2447 | .recalc = &followparent_recalc, | ||
2448 | }; | ||
2449 | |||
2450 | static struct clk wdt3_ick = { | ||
2451 | .name = "wdt3_ick", | ||
2452 | .parent = &per_l4_ick, | ||
2453 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2454 | .enable_bit = OMAP3430_EN_WDT3_SHIFT, | ||
2455 | .flags = CLOCK_IN_OMAP343X, | ||
2456 | .recalc = &followparent_recalc, | ||
2457 | }; | ||
2458 | |||
2459 | static struct clk uart3_ick = { | ||
2460 | .name = "uart3_ick", | ||
2461 | .parent = &per_l4_ick, | ||
2462 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2463 | .enable_bit = OMAP3430_EN_UART3_SHIFT, | ||
2464 | .flags = CLOCK_IN_OMAP343X, | ||
2465 | .recalc = &followparent_recalc, | ||
2466 | }; | ||
2467 | |||
2468 | static struct clk gpt9_ick = { | ||
2469 | .name = "gpt9_ick", | ||
2470 | .parent = &per_l4_ick, | ||
2471 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2472 | .enable_bit = OMAP3430_EN_GPT9_SHIFT, | ||
2473 | .flags = CLOCK_IN_OMAP343X, | ||
2474 | .recalc = &followparent_recalc, | ||
2475 | }; | ||
2476 | |||
2477 | static struct clk gpt8_ick = { | ||
2478 | .name = "gpt8_ick", | ||
2479 | .parent = &per_l4_ick, | ||
2480 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2481 | .enable_bit = OMAP3430_EN_GPT8_SHIFT, | ||
2482 | .flags = CLOCK_IN_OMAP343X, | ||
2483 | .recalc = &followparent_recalc, | ||
2484 | }; | ||
2485 | |||
2486 | static struct clk gpt7_ick = { | ||
2487 | .name = "gpt7_ick", | ||
2488 | .parent = &per_l4_ick, | ||
2489 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2490 | .enable_bit = OMAP3430_EN_GPT7_SHIFT, | ||
2491 | .flags = CLOCK_IN_OMAP343X, | ||
2492 | .recalc = &followparent_recalc, | ||
2493 | }; | ||
2494 | |||
2495 | static struct clk gpt6_ick = { | ||
2496 | .name = "gpt6_ick", | ||
2497 | .parent = &per_l4_ick, | ||
2498 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2499 | .enable_bit = OMAP3430_EN_GPT6_SHIFT, | ||
2500 | .flags = CLOCK_IN_OMAP343X, | ||
2501 | .recalc = &followparent_recalc, | ||
2502 | }; | ||
2503 | |||
2504 | static struct clk gpt5_ick = { | ||
2505 | .name = "gpt5_ick", | ||
2506 | .parent = &per_l4_ick, | ||
2507 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2508 | .enable_bit = OMAP3430_EN_GPT5_SHIFT, | ||
2509 | .flags = CLOCK_IN_OMAP343X, | ||
2510 | .recalc = &followparent_recalc, | ||
2511 | }; | ||
2512 | |||
2513 | static struct clk gpt4_ick = { | ||
2514 | .name = "gpt4_ick", | ||
2515 | .parent = &per_l4_ick, | ||
2516 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2517 | .enable_bit = OMAP3430_EN_GPT4_SHIFT, | ||
2518 | .flags = CLOCK_IN_OMAP343X, | ||
2519 | .recalc = &followparent_recalc, | ||
2520 | }; | ||
2521 | |||
2522 | static struct clk gpt3_ick = { | ||
2523 | .name = "gpt3_ick", | ||
2524 | .parent = &per_l4_ick, | ||
2525 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2526 | .enable_bit = OMAP3430_EN_GPT3_SHIFT, | ||
2527 | .flags = CLOCK_IN_OMAP343X, | ||
2528 | .recalc = &followparent_recalc, | ||
2529 | }; | ||
2530 | |||
2531 | static struct clk gpt2_ick = { | ||
2532 | .name = "gpt2_ick", | ||
2533 | .parent = &per_l4_ick, | ||
2534 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2535 | .enable_bit = OMAP3430_EN_GPT2_SHIFT, | ||
2536 | .flags = CLOCK_IN_OMAP343X, | ||
2537 | .recalc = &followparent_recalc, | ||
2538 | }; | ||
2539 | |||
2540 | static struct clk mcbsp2_ick = { | ||
2541 | .name = "mcbsp2_ick", | ||
2542 | .parent = &per_l4_ick, | ||
2543 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2544 | .enable_bit = OMAP3430_EN_MCBSP2_SHIFT, | ||
2545 | .flags = CLOCK_IN_OMAP343X, | ||
2546 | .recalc = &followparent_recalc, | ||
2547 | }; | ||
2548 | |||
2549 | static struct clk mcbsp3_ick = { | ||
2550 | .name = "mcbsp3_ick", | ||
2551 | .parent = &per_l4_ick, | ||
2552 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2553 | .enable_bit = OMAP3430_EN_MCBSP3_SHIFT, | ||
2554 | .flags = CLOCK_IN_OMAP343X, | ||
2555 | .recalc = &followparent_recalc, | ||
2556 | }; | ||
2557 | |||
2558 | static struct clk mcbsp4_ick = { | ||
2559 | .name = "mcbsp4_ick", | ||
2560 | .parent = &per_l4_ick, | ||
2561 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN), | ||
2562 | .enable_bit = OMAP3430_EN_MCBSP4_SHIFT, | ||
2563 | .flags = CLOCK_IN_OMAP343X, | ||
2564 | .recalc = &followparent_recalc, | ||
2565 | }; | ||
2566 | |||
2567 | static const struct clksel mcbsp_234_clksel[] = { | ||
2568 | { .parent = &per_96m_fck, .rates = common_mcbsp_96m_rates }, | ||
2569 | { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, | ||
2570 | { .parent = NULL } | ||
2571 | }; | ||
2572 | |||
2573 | static struct clk mcbsp2_fck = { | ||
2574 | .name = "mcbsp2_fck", | ||
2575 | .init = &omap2_init_clksel_parent, | ||
2576 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2577 | .enable_bit = OMAP3430_EN_MCBSP2_SHIFT, | ||
2578 | .clksel_reg = OMAP343X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0), | ||
2579 | .clksel_mask = OMAP2_MCBSP2_CLKS_MASK, | ||
2580 | .clksel = mcbsp_234_clksel, | ||
2581 | .flags = CLOCK_IN_OMAP343X, | ||
2582 | .recalc = &omap2_clksel_recalc, | ||
2583 | }; | ||
2584 | |||
2585 | static struct clk mcbsp3_fck = { | ||
2586 | .name = "mcbsp3_fck", | ||
2587 | .init = &omap2_init_clksel_parent, | ||
2588 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2589 | .enable_bit = OMAP3430_EN_MCBSP3_SHIFT, | ||
2590 | .clksel_reg = OMAP343X_CTRL_REGADDR(OMAP343X_CONTROL_DEVCONF1), | ||
2591 | .clksel_mask = OMAP2_MCBSP3_CLKS_MASK, | ||
2592 | .clksel = mcbsp_234_clksel, | ||
2593 | .flags = CLOCK_IN_OMAP343X, | ||
2594 | .recalc = &omap2_clksel_recalc, | ||
2595 | }; | ||
2596 | |||
2597 | static struct clk mcbsp4_fck = { | ||
2598 | .name = "mcbsp4_fck", | ||
2599 | .init = &omap2_init_clksel_parent, | ||
2600 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | ||
2601 | .enable_bit = OMAP3430_EN_MCBSP4_SHIFT, | ||
2602 | .clksel_reg = OMAP343X_CTRL_REGADDR(OMAP343X_CONTROL_DEVCONF1), | ||
2603 | .clksel_mask = OMAP2_MCBSP4_CLKS_MASK, | ||
2604 | .clksel = mcbsp_234_clksel, | ||
2605 | .flags = CLOCK_IN_OMAP343X, | ||
2606 | .recalc = &omap2_clksel_recalc, | ||
2607 | }; | ||
2608 | |||
2609 | /* EMU clocks */ | ||
2610 | |||
2611 | /* More information: ARM Cortex-A8 Technical Reference Manual, sect 10.1 */ | ||
2612 | |||
2613 | static const struct clksel_rate emu_src_sys_rates[] = { | ||
2614 | { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2615 | { .div = 0 }, | ||
2616 | }; | ||
2617 | |||
2618 | static const struct clksel_rate emu_src_core_rates[] = { | ||
2619 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2620 | { .div = 0 }, | ||
2621 | }; | ||
2622 | |||
2623 | static const struct clksel_rate emu_src_per_rates[] = { | ||
2624 | { .div = 1, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2625 | { .div = 0 }, | ||
2626 | }; | ||
2627 | |||
2628 | static const struct clksel_rate emu_src_mpu_rates[] = { | ||
2629 | { .div = 1, .val = 3, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2630 | { .div = 0 }, | ||
2631 | }; | ||
2632 | |||
2633 | static const struct clksel emu_src_clksel[] = { | ||
2634 | { .parent = &sys_ck, .rates = emu_src_sys_rates }, | ||
2635 | { .parent = &emu_core_alwon_ck, .rates = emu_src_core_rates }, | ||
2636 | { .parent = &emu_per_alwon_ck, .rates = emu_src_per_rates }, | ||
2637 | { .parent = &emu_mpu_alwon_ck, .rates = emu_src_mpu_rates }, | ||
2638 | { .parent = NULL }, | ||
2639 | }; | ||
2640 | |||
2641 | /* | ||
2642 | * Like the clkout_src clocks, emu_src_clk is a virtual clock, existing only | ||
2643 | * to switch the source of some of the EMU clocks. | ||
2644 | * XXX Are there CLKEN bits for these EMU clks? | ||
2645 | */ | ||
2646 | static struct clk emu_src_ck = { | ||
2647 | .name = "emu_src_ck", | ||
2648 | .init = &omap2_init_clksel_parent, | ||
2649 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
2650 | .clksel_mask = OMAP3430_MUX_CTRL_MASK, | ||
2651 | .clksel = emu_src_clksel, | ||
2652 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2653 | .recalc = &omap2_clksel_recalc, | ||
2654 | }; | ||
2655 | |||
2656 | static const struct clksel_rate pclk_emu_rates[] = { | ||
2657 | { .div = 2, .val = 2, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2658 | { .div = 3, .val = 3, .flags = RATE_IN_343X }, | ||
2659 | { .div = 4, .val = 4, .flags = RATE_IN_343X }, | ||
2660 | { .div = 6, .val = 6, .flags = RATE_IN_343X }, | ||
2661 | { .div = 0 }, | ||
2662 | }; | ||
2663 | |||
2664 | static const struct clksel pclk_emu_clksel[] = { | ||
2665 | { .parent = &emu_src_ck, .rates = pclk_emu_rates }, | ||
2666 | { .parent = NULL }, | ||
2667 | }; | ||
2668 | |||
2669 | static struct clk pclk_fck = { | ||
2670 | .name = "pclk_fck", | ||
2671 | .init = &omap2_init_clksel_parent, | ||
2672 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
2673 | .clksel_mask = OMAP3430_CLKSEL_PCLK_MASK, | ||
2674 | .clksel = pclk_emu_clksel, | ||
2675 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2676 | .recalc = &omap2_clksel_recalc, | ||
2677 | }; | ||
2678 | |||
2679 | static const struct clksel_rate pclkx2_emu_rates[] = { | ||
2680 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2681 | { .div = 2, .val = 2, .flags = RATE_IN_343X }, | ||
2682 | { .div = 3, .val = 3, .flags = RATE_IN_343X }, | ||
2683 | { .div = 0 }, | ||
2684 | }; | ||
2685 | |||
2686 | static const struct clksel pclkx2_emu_clksel[] = { | ||
2687 | { .parent = &emu_src_ck, .rates = pclkx2_emu_rates }, | ||
2688 | { .parent = NULL }, | ||
2689 | }; | ||
2690 | |||
2691 | static struct clk pclkx2_fck = { | ||
2692 | .name = "pclkx2_fck", | ||
2693 | .init = &omap2_init_clksel_parent, | ||
2694 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
2695 | .clksel_mask = OMAP3430_CLKSEL_PCLKX2_MASK, | ||
2696 | .clksel = pclkx2_emu_clksel, | ||
2697 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2698 | .recalc = &omap2_clksel_recalc, | ||
2699 | }; | ||
2700 | |||
2701 | static const struct clksel atclk_emu_clksel[] = { | ||
2702 | { .parent = &emu_src_ck, .rates = div2_rates }, | ||
2703 | { .parent = NULL }, | ||
2704 | }; | ||
2705 | |||
2706 | static struct clk atclk_fck = { | ||
2707 | .name = "atclk_fck", | ||
2708 | .init = &omap2_init_clksel_parent, | ||
2709 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
2710 | .clksel_mask = OMAP3430_CLKSEL_ATCLK_MASK, | ||
2711 | .clksel = atclk_emu_clksel, | ||
2712 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2713 | .recalc = &omap2_clksel_recalc, | ||
2714 | }; | ||
2715 | |||
2716 | static struct clk traceclk_src_fck = { | ||
2717 | .name = "traceclk_src_fck", | ||
2718 | .init = &omap2_init_clksel_parent, | ||
2719 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
2720 | .clksel_mask = OMAP3430_TRACE_MUX_CTRL_MASK, | ||
2721 | .clksel = emu_src_clksel, | ||
2722 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED, | ||
2723 | .recalc = &omap2_clksel_recalc, | ||
2724 | }; | ||
2725 | |||
2726 | static const struct clksel_rate traceclk_rates[] = { | ||
2727 | { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, | ||
2728 | { .div = 2, .val = 2, .flags = RATE_IN_343X }, | ||
2729 | { .div = 4, .val = 4, .flags = RATE_IN_343X }, | ||
2730 | { .div = 0 }, | ||
2731 | }; | ||
2732 | |||
2733 | static const struct clksel traceclk_clksel[] = { | ||
2734 | { .parent = &traceclk_src_fck, .rates = traceclk_rates }, | ||
2735 | { .parent = NULL }, | ||
2736 | }; | ||
2737 | |||
2738 | static struct clk traceclk_fck = { | ||
2739 | .name = "traceclk_fck", | ||
2740 | .init = &omap2_init_clksel_parent, | ||
2741 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1), | ||
2742 | .clksel_mask = OMAP3430_CLKSEL_TRACECLK_MASK, | ||
2743 | .clksel = traceclk_clksel, | ||
2744 | .flags = CLOCK_IN_OMAP343X | ALWAYS_ENABLED, | ||
2745 | .recalc = &omap2_clksel_recalc, | ||
2746 | }; | ||
2747 | |||
2748 | /* SR clocks */ | ||
2749 | |||
2750 | /* SmartReflex fclk (VDD1) */ | ||
2751 | static struct clk sr1_fck = { | ||
2752 | .name = "sr1_fck", | ||
2753 | .parent = &sys_ck, | ||
2754 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
2755 | .enable_bit = OMAP3430_EN_SR1_SHIFT, | ||
2756 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, | ||
2757 | .recalc = &followparent_recalc, | ||
2758 | }; | ||
2759 | |||
2760 | /* SmartReflex fclk (VDD2) */ | ||
2761 | static struct clk sr2_fck = { | ||
2762 | .name = "sr2_fck", | ||
2763 | .parent = &sys_ck, | ||
2764 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN), | ||
2765 | .enable_bit = OMAP3430_EN_SR2_SHIFT, | ||
2766 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, | ||
2767 | .recalc = &followparent_recalc, | ||
2768 | }; | ||
2769 | |||
2770 | static struct clk sr_l4_ick = { | ||
2771 | .name = "sr_l4_ick", | ||
2772 | .parent = &l4_ick, | ||
2773 | .flags = CLOCK_IN_OMAP343X, | ||
2774 | .recalc = &followparent_recalc, | ||
2775 | }; | ||
2776 | |||
2777 | /* SECURE_32K_FCK clocks */ | ||
2778 | |||
2779 | static struct clk gpt12_fck = { | ||
2780 | .name = "gpt12_fck", | ||
2781 | .parent = &secure_32k_fck, | ||
2782 | .flags = CLOCK_IN_OMAP343X | ALWAYS_ENABLED, | ||
2783 | .recalc = &followparent_recalc, | ||
2784 | }; | ||
2785 | |||
2786 | static struct clk wdt1_fck = { | ||
2787 | .name = "wdt1_fck", | ||
2788 | .parent = &secure_32k_fck, | ||
2789 | .flags = CLOCK_IN_OMAP343X | ALWAYS_ENABLED, | ||
2790 | .recalc = &followparent_recalc, | ||
2791 | }; | ||
2792 | |||
2793 | static struct clk *onchip_34xx_clks[] __initdata = { | ||
2794 | &omap_32k_fck, | ||
2795 | &virt_12m_ck, | ||
2796 | &virt_13m_ck, | ||
2797 | &virt_16_8m_ck, | ||
2798 | &virt_19_2m_ck, | ||
2799 | &virt_26m_ck, | ||
2800 | &virt_38_4m_ck, | ||
2801 | &osc_sys_ck, | ||
2802 | &sys_ck, | ||
2803 | &sys_altclk, | ||
2804 | &mcbsp_clks, | ||
2805 | &sys_clkout1, | ||
2806 | &dpll1_ck, | ||
2807 | &dpll1_x2_ck, | ||
2808 | &dpll1_x2m2_ck, | ||
2809 | &dpll2_ck, | ||
2810 | &dpll2_m2_ck, | ||
2811 | &dpll3_ck, | ||
2812 | &core_ck, | ||
2813 | &dpll3_x2_ck, | ||
2814 | &dpll3_m2_ck, | ||
2815 | &dpll3_m2x2_ck, | ||
2816 | &dpll3_m3_ck, | ||
2817 | &dpll3_m3x2_ck, | ||
2818 | &emu_core_alwon_ck, | ||
2819 | &dpll4_ck, | ||
2820 | &dpll4_x2_ck, | ||
2821 | &omap_96m_alwon_fck, | ||
2822 | &omap_96m_fck, | ||
2823 | &cm_96m_fck, | ||
2824 | &virt_omap_54m_fck, | ||
2825 | &omap_54m_fck, | ||
2826 | &omap_48m_fck, | ||
2827 | &omap_12m_fck, | ||
2828 | &dpll4_m2_ck, | ||
2829 | &dpll4_m2x2_ck, | ||
2830 | &dpll4_m3_ck, | ||
2831 | &dpll4_m3x2_ck, | ||
2832 | &dpll4_m4_ck, | ||
2833 | &dpll4_m4x2_ck, | ||
2834 | &dpll4_m5_ck, | ||
2835 | &dpll4_m5x2_ck, | ||
2836 | &dpll4_m6_ck, | ||
2837 | &dpll4_m6x2_ck, | ||
2838 | &emu_per_alwon_ck, | ||
2839 | &dpll5_ck, | ||
2840 | &dpll5_m2_ck, | ||
2841 | &omap_120m_fck, | ||
2842 | &clkout2_src_ck, | ||
2843 | &sys_clkout2, | ||
2844 | &corex2_fck, | ||
2845 | &dpll1_fck, | ||
2846 | &mpu_ck, | ||
2847 | &arm_fck, | ||
2848 | &emu_mpu_alwon_ck, | ||
2849 | &dpll2_fck, | ||
2850 | &iva2_ck, | ||
2851 | &l3_ick, | ||
2852 | &l4_ick, | ||
2853 | &rm_ick, | ||
2854 | &gfx_l3_fck, | ||
2855 | &gfx_l3_ick, | ||
2856 | &gfx_cg1_ck, | ||
2857 | &gfx_cg2_ck, | ||
2858 | &sgx_fck, | ||
2859 | &sgx_ick, | ||
2860 | &d2d_26m_fck, | ||
2861 | &gpt10_fck, | ||
2862 | &gpt11_fck, | ||
2863 | &cpefuse_fck, | ||
2864 | &ts_fck, | ||
2865 | &usbtll_fck, | ||
2866 | &core_96m_fck, | ||
2867 | &mmchs3_fck, | ||
2868 | &mmchs2_fck, | ||
2869 | &mspro_fck, | ||
2870 | &mmchs1_fck, | ||
2871 | &i2c3_fck, | ||
2872 | &i2c2_fck, | ||
2873 | &i2c1_fck, | ||
2874 | &mcbsp5_fck, | ||
2875 | &mcbsp1_fck, | ||
2876 | &core_48m_fck, | ||
2877 | &mcspi4_fck, | ||
2878 | &mcspi3_fck, | ||
2879 | &mcspi2_fck, | ||
2880 | &mcspi1_fck, | ||
2881 | &uart2_fck, | ||
2882 | &uart1_fck, | ||
2883 | &fshostusb_fck, | ||
2884 | &core_12m_fck, | ||
2885 | &hdq_fck, | ||
2886 | &ssi_ssr_fck, | ||
2887 | &ssi_sst_fck, | ||
2888 | &core_l3_ick, | ||
2889 | &hsotgusb_ick, | ||
2890 | &sdrc_ick, | ||
2891 | &gpmc_fck, | ||
2892 | &security_l3_ick, | ||
2893 | &pka_ick, | ||
2894 | &core_l4_ick, | ||
2895 | &usbtll_ick, | ||
2896 | &mmchs3_ick, | ||
2897 | &icr_ick, | ||
2898 | &aes2_ick, | ||
2899 | &sha12_ick, | ||
2900 | &des2_ick, | ||
2901 | &mmchs2_ick, | ||
2902 | &mmchs1_ick, | ||
2903 | &mspro_ick, | ||
2904 | &hdq_ick, | ||
2905 | &mcspi4_ick, | ||
2906 | &mcspi3_ick, | ||
2907 | &mcspi2_ick, | ||
2908 | &mcspi1_ick, | ||
2909 | &i2c3_ick, | ||
2910 | &i2c2_ick, | ||
2911 | &i2c1_ick, | ||
2912 | &uart2_ick, | ||
2913 | &uart1_ick, | ||
2914 | &gpt11_ick, | ||
2915 | &gpt10_ick, | ||
2916 | &mcbsp5_ick, | ||
2917 | &mcbsp1_ick, | ||
2918 | &fac_ick, | ||
2919 | &mailboxes_ick, | ||
2920 | &omapctrl_ick, | ||
2921 | &ssi_l4_ick, | ||
2922 | &ssi_ick, | ||
2923 | &usb_l4_ick, | ||
2924 | &security_l4_ick2, | ||
2925 | &aes1_ick, | ||
2926 | &rng_ick, | ||
2927 | &sha11_ick, | ||
2928 | &des1_ick, | ||
2929 | &dss1_alwon_fck, | ||
2930 | &dss_tv_fck, | ||
2931 | &dss_96m_fck, | ||
2932 | &dss2_alwon_fck, | ||
2933 | &dss_ick, | ||
2934 | &cam_mclk, | ||
2935 | &cam_l3_ick, | ||
2936 | &cam_l4_ick, | ||
2937 | &usbhost_120m_fck, | ||
2938 | &usbhost_48m_fck, | ||
2939 | &usbhost_l3_ick, | ||
2940 | &usbhost_l4_ick, | ||
2941 | &usbhost_sar_fck, | ||
2942 | &usim_fck, | ||
2943 | &gpt1_fck, | ||
2944 | &wkup_32k_fck, | ||
2945 | &gpio1_fck, | ||
2946 | &wdt2_fck, | ||
2947 | &wkup_l4_ick, | ||
2948 | &usim_ick, | ||
2949 | &wdt2_ick, | ||
2950 | &wdt1_ick, | ||
2951 | &gpio1_ick, | ||
2952 | &omap_32ksync_ick, | ||
2953 | &gpt12_ick, | ||
2954 | &gpt1_ick, | ||
2955 | &per_96m_fck, | ||
2956 | &per_48m_fck, | ||
2957 | &uart3_fck, | ||
2958 | &gpt2_fck, | ||
2959 | &gpt3_fck, | ||
2960 | &gpt4_fck, | ||
2961 | &gpt5_fck, | ||
2962 | &gpt6_fck, | ||
2963 | &gpt7_fck, | ||
2964 | &gpt8_fck, | ||
2965 | &gpt9_fck, | ||
2966 | &per_32k_alwon_fck, | ||
2967 | &gpio6_fck, | ||
2968 | &gpio5_fck, | ||
2969 | &gpio4_fck, | ||
2970 | &gpio3_fck, | ||
2971 | &gpio2_fck, | ||
2972 | &wdt3_fck, | ||
2973 | &per_l4_ick, | ||
2974 | &gpio6_ick, | ||
2975 | &gpio5_ick, | ||
2976 | &gpio4_ick, | ||
2977 | &gpio3_ick, | ||
2978 | &gpio2_ick, | ||
2979 | &wdt3_ick, | ||
2980 | &uart3_ick, | ||
2981 | &gpt9_ick, | ||
2982 | &gpt8_ick, | ||
2983 | &gpt7_ick, | ||
2984 | &gpt6_ick, | ||
2985 | &gpt5_ick, | ||
2986 | &gpt4_ick, | ||
2987 | &gpt3_ick, | ||
2988 | &gpt2_ick, | ||
2989 | &mcbsp2_ick, | ||
2990 | &mcbsp3_ick, | ||
2991 | &mcbsp4_ick, | ||
2992 | &mcbsp2_fck, | ||
2993 | &mcbsp3_fck, | ||
2994 | &mcbsp4_fck, | ||
2995 | &emu_src_ck, | ||
2996 | &pclk_fck, | ||
2997 | &pclkx2_fck, | ||
2998 | &atclk_fck, | ||
2999 | &traceclk_src_fck, | ||
3000 | &traceclk_fck, | ||
3001 | &sr1_fck, | ||
3002 | &sr2_fck, | ||
3003 | &sr_l4_ick, | ||
3004 | &secure_32k_fck, | ||
3005 | &gpt12_fck, | ||
3006 | &wdt1_fck, | ||
3007 | }; | ||
3008 | |||
3009 | #endif | ||
diff --git a/arch/arm/mach-omap2/cm-regbits-24xx.h b/arch/arm/mach-omap2/cm-regbits-24xx.h new file mode 100644 index 000000000000..20ac38100678 --- /dev/null +++ b/arch/arm/mach-omap2/cm-regbits-24xx.h | |||
@@ -0,0 +1,401 @@ | |||
1 | #ifndef __ARCH_ARM_MACH_OMAP2_CM_REGBITS_24XX_H | ||
2 | #define __ARCH_ARM_MACH_OMAP2_CM_REGBITS_24XX_H | ||
3 | |||
4 | /* | ||
5 | * OMAP24XX Clock Management register bits | ||
6 | * | ||
7 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include "cm.h" | ||
18 | |||
19 | /* Bits shared between registers */ | ||
20 | |||
21 | /* CM_FCLKEN1_CORE and CM_ICLKEN1_CORE shared bits */ | ||
22 | #define OMAP24XX_EN_CAM_SHIFT 31 | ||
23 | #define OMAP24XX_EN_CAM (1 << 31) | ||
24 | #define OMAP24XX_EN_WDT4_SHIFT 29 | ||
25 | #define OMAP24XX_EN_WDT4 (1 << 29) | ||
26 | #define OMAP2420_EN_WDT3_SHIFT 28 | ||
27 | #define OMAP2420_EN_WDT3 (1 << 28) | ||
28 | #define OMAP24XX_EN_MSPRO_SHIFT 27 | ||
29 | #define OMAP24XX_EN_MSPRO (1 << 27) | ||
30 | #define OMAP24XX_EN_FAC_SHIFT 25 | ||
31 | #define OMAP24XX_EN_FAC (1 << 25) | ||
32 | #define OMAP2420_EN_EAC_SHIFT 24 | ||
33 | #define OMAP2420_EN_EAC (1 << 24) | ||
34 | #define OMAP24XX_EN_HDQ_SHIFT 23 | ||
35 | #define OMAP24XX_EN_HDQ (1 << 23) | ||
36 | #define OMAP2420_EN_I2C2_SHIFT 20 | ||
37 | #define OMAP2420_EN_I2C2 (1 << 20) | ||
38 | #define OMAP2420_EN_I2C1_SHIFT 19 | ||
39 | #define OMAP2420_EN_I2C1 (1 << 19) | ||
40 | |||
41 | /* CM_FCLKEN2_CORE and CM_ICLKEN2_CORE shared bits */ | ||
42 | #define OMAP2430_EN_MCBSP5_SHIFT 5 | ||
43 | #define OMAP2430_EN_MCBSP5 (1 << 5) | ||
44 | #define OMAP2430_EN_MCBSP4_SHIFT 4 | ||
45 | #define OMAP2430_EN_MCBSP4 (1 << 4) | ||
46 | #define OMAP2430_EN_MCBSP3_SHIFT 3 | ||
47 | #define OMAP2430_EN_MCBSP3 (1 << 3) | ||
48 | #define OMAP24XX_EN_SSI_SHIFT 1 | ||
49 | #define OMAP24XX_EN_SSI (1 << 1) | ||
50 | |||
51 | /* CM_FCLKEN_WKUP and CM_ICLKEN_WKUP shared bits */ | ||
52 | #define OMAP24XX_EN_MPU_WDT_SHIFT 3 | ||
53 | #define OMAP24XX_EN_MPU_WDT (1 << 3) | ||
54 | |||
55 | /* Bits specific to each register */ | ||
56 | |||
57 | /* CM_IDLEST_MPU */ | ||
58 | /* 2430 only */ | ||
59 | #define OMAP2430_ST_MPU (1 << 0) | ||
60 | |||
61 | /* CM_CLKSEL_MPU */ | ||
62 | #define OMAP24XX_CLKSEL_MPU_SHIFT 0 | ||
63 | #define OMAP24XX_CLKSEL_MPU_MASK (0x1f << 0) | ||
64 | |||
65 | /* CM_CLKSTCTRL_MPU */ | ||
66 | #define OMAP24XX_AUTOSTATE_MPU (1 << 0) | ||
67 | |||
68 | /* CM_FCLKEN1_CORE specific bits*/ | ||
69 | #define OMAP24XX_EN_TV_SHIFT 2 | ||
70 | #define OMAP24XX_EN_TV (1 << 2) | ||
71 | #define OMAP24XX_EN_DSS2_SHIFT 1 | ||
72 | #define OMAP24XX_EN_DSS2 (1 << 1) | ||
73 | #define OMAP24XX_EN_DSS1_SHIFT 0 | ||
74 | #define OMAP24XX_EN_DSS1 (1 << 0) | ||
75 | |||
76 | /* CM_FCLKEN2_CORE specific bits */ | ||
77 | #define OMAP2430_EN_I2CHS2_SHIFT 20 | ||
78 | #define OMAP2430_EN_I2CHS2 (1 << 20) | ||
79 | #define OMAP2430_EN_I2CHS1_SHIFT 19 | ||
80 | #define OMAP2430_EN_I2CHS1 (1 << 19) | ||
81 | #define OMAP2430_EN_MMCHSDB2_SHIFT 17 | ||
82 | #define OMAP2430_EN_MMCHSDB2 (1 << 17) | ||
83 | #define OMAP2430_EN_MMCHSDB1_SHIFT 16 | ||
84 | #define OMAP2430_EN_MMCHSDB1 (1 << 16) | ||
85 | |||
86 | /* CM_ICLKEN1_CORE specific bits */ | ||
87 | #define OMAP24XX_EN_MAILBOXES_SHIFT 30 | ||
88 | #define OMAP24XX_EN_MAILBOXES (1 << 30) | ||
89 | #define OMAP24XX_EN_DSS_SHIFT 0 | ||
90 | #define OMAP24XX_EN_DSS (1 << 0) | ||
91 | |||
92 | /* CM_ICLKEN2_CORE specific bits */ | ||
93 | |||
94 | /* CM_ICLKEN3_CORE */ | ||
95 | /* 2430 only */ | ||
96 | #define OMAP2430_EN_SDRC_SHIFT 2 | ||
97 | #define OMAP2430_EN_SDRC (1 << 2) | ||
98 | |||
99 | /* CM_ICLKEN4_CORE */ | ||
100 | #define OMAP24XX_EN_PKA_SHIFT 4 | ||
101 | #define OMAP24XX_EN_PKA (1 << 4) | ||
102 | #define OMAP24XX_EN_AES_SHIFT 3 | ||
103 | #define OMAP24XX_EN_AES (1 << 3) | ||
104 | #define OMAP24XX_EN_RNG_SHIFT 2 | ||
105 | #define OMAP24XX_EN_RNG (1 << 2) | ||
106 | #define OMAP24XX_EN_SHA_SHIFT 1 | ||
107 | #define OMAP24XX_EN_SHA (1 << 1) | ||
108 | #define OMAP24XX_EN_DES_SHIFT 0 | ||
109 | #define OMAP24XX_EN_DES (1 << 0) | ||
110 | |||
111 | /* CM_IDLEST1_CORE specific bits */ | ||
112 | #define OMAP24XX_ST_MAILBOXES (1 << 30) | ||
113 | #define OMAP24XX_ST_WDT4 (1 << 29) | ||
114 | #define OMAP2420_ST_WDT3 (1 << 28) | ||
115 | #define OMAP24XX_ST_MSPRO (1 << 27) | ||
116 | #define OMAP24XX_ST_FAC (1 << 25) | ||
117 | #define OMAP2420_ST_EAC (1 << 24) | ||
118 | #define OMAP24XX_ST_HDQ (1 << 23) | ||
119 | #define OMAP24XX_ST_I2C2 (1 << 20) | ||
120 | #define OMAP24XX_ST_I2C1 (1 << 19) | ||
121 | #define OMAP24XX_ST_MCBSP2 (1 << 16) | ||
122 | #define OMAP24XX_ST_MCBSP1 (1 << 15) | ||
123 | #define OMAP24XX_ST_DSS (1 << 0) | ||
124 | |||
125 | /* CM_IDLEST2_CORE */ | ||
126 | #define OMAP2430_ST_MCBSP5 (1 << 5) | ||
127 | #define OMAP2430_ST_MCBSP4 (1 << 4) | ||
128 | #define OMAP2430_ST_MCBSP3 (1 << 3) | ||
129 | #define OMAP24XX_ST_SSI (1 << 1) | ||
130 | |||
131 | /* CM_IDLEST3_CORE */ | ||
132 | /* 2430 only */ | ||
133 | #define OMAP2430_ST_SDRC (1 << 2) | ||
134 | |||
135 | /* CM_IDLEST4_CORE */ | ||
136 | #define OMAP24XX_ST_PKA (1 << 4) | ||
137 | #define OMAP24XX_ST_AES (1 << 3) | ||
138 | #define OMAP24XX_ST_RNG (1 << 2) | ||
139 | #define OMAP24XX_ST_SHA (1 << 1) | ||
140 | #define OMAP24XX_ST_DES (1 << 0) | ||
141 | |||
142 | /* CM_AUTOIDLE1_CORE */ | ||
143 | #define OMAP24XX_AUTO_CAM (1 << 31) | ||
144 | #define OMAP24XX_AUTO_MAILBOXES (1 << 30) | ||
145 | #define OMAP24XX_AUTO_WDT4 (1 << 29) | ||
146 | #define OMAP2420_AUTO_WDT3 (1 << 28) | ||
147 | #define OMAP24XX_AUTO_MSPRO (1 << 27) | ||
148 | #define OMAP2420_AUTO_MMC (1 << 26) | ||
149 | #define OMAP24XX_AUTO_FAC (1 << 25) | ||
150 | #define OMAP2420_AUTO_EAC (1 << 24) | ||
151 | #define OMAP24XX_AUTO_HDQ (1 << 23) | ||
152 | #define OMAP24XX_AUTO_UART2 (1 << 22) | ||
153 | #define OMAP24XX_AUTO_UART1 (1 << 21) | ||
154 | #define OMAP24XX_AUTO_I2C2 (1 << 20) | ||
155 | #define OMAP24XX_AUTO_I2C1 (1 << 19) | ||
156 | #define OMAP24XX_AUTO_MCSPI2 (1 << 18) | ||
157 | #define OMAP24XX_AUTO_MCSPI1 (1 << 17) | ||
158 | #define OMAP24XX_AUTO_MCBSP2 (1 << 16) | ||
159 | #define OMAP24XX_AUTO_MCBSP1 (1 << 15) | ||
160 | #define OMAP24XX_AUTO_GPT12 (1 << 14) | ||
161 | #define OMAP24XX_AUTO_GPT11 (1 << 13) | ||
162 | #define OMAP24XX_AUTO_GPT10 (1 << 12) | ||
163 | #define OMAP24XX_AUTO_GPT9 (1 << 11) | ||
164 | #define OMAP24XX_AUTO_GPT8 (1 << 10) | ||
165 | #define OMAP24XX_AUTO_GPT7 (1 << 9) | ||
166 | #define OMAP24XX_AUTO_GPT6 (1 << 8) | ||
167 | #define OMAP24XX_AUTO_GPT5 (1 << 7) | ||
168 | #define OMAP24XX_AUTO_GPT4 (1 << 6) | ||
169 | #define OMAP24XX_AUTO_GPT3 (1 << 5) | ||
170 | #define OMAP24XX_AUTO_GPT2 (1 << 4) | ||
171 | #define OMAP2420_AUTO_VLYNQ (1 << 3) | ||
172 | #define OMAP24XX_AUTO_DSS (1 << 0) | ||
173 | |||
174 | /* CM_AUTOIDLE2_CORE */ | ||
175 | #define OMAP2430_AUTO_MDM_INTC (1 << 11) | ||
176 | #define OMAP2430_AUTO_GPIO5 (1 << 10) | ||
177 | #define OMAP2430_AUTO_MCSPI3 (1 << 9) | ||
178 | #define OMAP2430_AUTO_MMCHS2 (1 << 8) | ||
179 | #define OMAP2430_AUTO_MMCHS1 (1 << 7) | ||
180 | #define OMAP2430_AUTO_USBHS (1 << 6) | ||
181 | #define OMAP2430_AUTO_MCBSP5 (1 << 5) | ||
182 | #define OMAP2430_AUTO_MCBSP4 (1 << 4) | ||
183 | #define OMAP2430_AUTO_MCBSP3 (1 << 3) | ||
184 | #define OMAP24XX_AUTO_UART3 (1 << 2) | ||
185 | #define OMAP24XX_AUTO_SSI (1 << 1) | ||
186 | #define OMAP24XX_AUTO_USB (1 << 0) | ||
187 | |||
188 | /* CM_AUTOIDLE3_CORE */ | ||
189 | #define OMAP24XX_AUTO_SDRC (1 << 2) | ||
190 | #define OMAP24XX_AUTO_GPMC (1 << 1) | ||
191 | #define OMAP24XX_AUTO_SDMA (1 << 0) | ||
192 | |||
193 | /* CM_AUTOIDLE4_CORE */ | ||
194 | #define OMAP24XX_AUTO_PKA (1 << 4) | ||
195 | #define OMAP24XX_AUTO_AES (1 << 3) | ||
196 | #define OMAP24XX_AUTO_RNG (1 << 2) | ||
197 | #define OMAP24XX_AUTO_SHA (1 << 1) | ||
198 | #define OMAP24XX_AUTO_DES (1 << 0) | ||
199 | |||
200 | /* CM_CLKSEL1_CORE */ | ||
201 | #define OMAP24XX_CLKSEL_USB_SHIFT 25 | ||
202 | #define OMAP24XX_CLKSEL_USB_MASK (0x7 << 25) | ||
203 | #define OMAP24XX_CLKSEL_SSI_SHIFT 20 | ||
204 | #define OMAP24XX_CLKSEL_SSI_MASK (0x1f << 20) | ||
205 | #define OMAP2420_CLKSEL_VLYNQ_SHIFT 15 | ||
206 | #define OMAP2420_CLKSEL_VLYNQ_MASK (0x1f << 15) | ||
207 | #define OMAP24XX_CLKSEL_DSS2_SHIFT 13 | ||
208 | #define OMAP24XX_CLKSEL_DSS2_MASK (0x1 << 13) | ||
209 | #define OMAP24XX_CLKSEL_DSS1_SHIFT 8 | ||
210 | #define OMAP24XX_CLKSEL_DSS1_MASK (0x1f << 8) | ||
211 | #define OMAP24XX_CLKSEL_L4_SHIFT 5 | ||
212 | #define OMAP24XX_CLKSEL_L4_MASK (0x3 << 5) | ||
213 | #define OMAP24XX_CLKSEL_L3_SHIFT 0 | ||
214 | #define OMAP24XX_CLKSEL_L3_MASK (0x1f << 0) | ||
215 | |||
216 | /* CM_CLKSEL2_CORE */ | ||
217 | #define OMAP24XX_CLKSEL_GPT12_SHIFT 22 | ||
218 | #define OMAP24XX_CLKSEL_GPT12_MASK (0x3 << 22) | ||
219 | #define OMAP24XX_CLKSEL_GPT11_SHIFT 20 | ||
220 | #define OMAP24XX_CLKSEL_GPT11_MASK (0x3 << 20) | ||
221 | #define OMAP24XX_CLKSEL_GPT10_SHIFT 18 | ||
222 | #define OMAP24XX_CLKSEL_GPT10_MASK (0x3 << 18) | ||
223 | #define OMAP24XX_CLKSEL_GPT9_SHIFT 16 | ||
224 | #define OMAP24XX_CLKSEL_GPT9_MASK (0x3 << 16) | ||
225 | #define OMAP24XX_CLKSEL_GPT8_SHIFT 14 | ||
226 | #define OMAP24XX_CLKSEL_GPT8_MASK (0x3 << 14) | ||
227 | #define OMAP24XX_CLKSEL_GPT7_SHIFT 12 | ||
228 | #define OMAP24XX_CLKSEL_GPT7_MASK (0x3 << 12) | ||
229 | #define OMAP24XX_CLKSEL_GPT6_SHIFT 10 | ||
230 | #define OMAP24XX_CLKSEL_GPT6_MASK (0x3 << 10) | ||
231 | #define OMAP24XX_CLKSEL_GPT5_SHIFT 8 | ||
232 | #define OMAP24XX_CLKSEL_GPT5_MASK (0x3 << 8) | ||
233 | #define OMAP24XX_CLKSEL_GPT4_SHIFT 6 | ||
234 | #define OMAP24XX_CLKSEL_GPT4_MASK (0x3 << 6) | ||
235 | #define OMAP24XX_CLKSEL_GPT3_SHIFT 4 | ||
236 | #define OMAP24XX_CLKSEL_GPT3_MASK (0x3 << 4) | ||
237 | #define OMAP24XX_CLKSEL_GPT2_SHIFT 2 | ||
238 | #define OMAP24XX_CLKSEL_GPT2_MASK (0x3 << 2) | ||
239 | |||
240 | /* CM_CLKSTCTRL_CORE */ | ||
241 | #define OMAP24XX_AUTOSTATE_DSS (1 << 2) | ||
242 | #define OMAP24XX_AUTOSTATE_L4 (1 << 1) | ||
243 | #define OMAP24XX_AUTOSTATE_L3 (1 << 0) | ||
244 | |||
245 | /* CM_FCLKEN_GFX */ | ||
246 | #define OMAP24XX_EN_3D_SHIFT 2 | ||
247 | #define OMAP24XX_EN_3D (1 << 2) | ||
248 | #define OMAP24XX_EN_2D_SHIFT 1 | ||
249 | #define OMAP24XX_EN_2D (1 << 1) | ||
250 | |||
251 | /* CM_ICLKEN_GFX specific bits */ | ||
252 | |||
253 | /* CM_IDLEST_GFX specific bits */ | ||
254 | |||
255 | /* CM_CLKSEL_GFX specific bits */ | ||
256 | |||
257 | /* CM_CLKSTCTRL_GFX */ | ||
258 | #define OMAP24XX_AUTOSTATE_GFX (1 << 0) | ||
259 | |||
260 | /* CM_FCLKEN_WKUP specific bits */ | ||
261 | |||
262 | /* CM_ICLKEN_WKUP specific bits */ | ||
263 | #define OMAP2430_EN_ICR_SHIFT 6 | ||
264 | #define OMAP2430_EN_ICR (1 << 6) | ||
265 | #define OMAP24XX_EN_OMAPCTRL_SHIFT 5 | ||
266 | #define OMAP24XX_EN_OMAPCTRL (1 << 5) | ||
267 | #define OMAP24XX_EN_WDT1_SHIFT 4 | ||
268 | #define OMAP24XX_EN_WDT1 (1 << 4) | ||
269 | #define OMAP24XX_EN_32KSYNC_SHIFT 1 | ||
270 | #define OMAP24XX_EN_32KSYNC (1 << 1) | ||
271 | |||
272 | /* CM_IDLEST_WKUP specific bits */ | ||
273 | #define OMAP2430_ST_ICR (1 << 6) | ||
274 | #define OMAP24XX_ST_OMAPCTRL (1 << 5) | ||
275 | #define OMAP24XX_ST_WDT1 (1 << 4) | ||
276 | #define OMAP24XX_ST_MPU_WDT (1 << 3) | ||
277 | #define OMAP24XX_ST_32KSYNC (1 << 1) | ||
278 | |||
279 | /* CM_AUTOIDLE_WKUP */ | ||
280 | #define OMAP24XX_AUTO_OMAPCTRL (1 << 5) | ||
281 | #define OMAP24XX_AUTO_WDT1 (1 << 4) | ||
282 | #define OMAP24XX_AUTO_MPU_WDT (1 << 3) | ||
283 | #define OMAP24XX_AUTO_GPIOS (1 << 2) | ||
284 | #define OMAP24XX_AUTO_32KSYNC (1 << 1) | ||
285 | #define OMAP24XX_AUTO_GPT1 (1 << 0) | ||
286 | |||
287 | /* CM_CLKSEL_WKUP */ | ||
288 | #define OMAP24XX_CLKSEL_GPT1_SHIFT 0 | ||
289 | #define OMAP24XX_CLKSEL_GPT1_MASK (0x3 << 0) | ||
290 | |||
291 | /* CM_CLKEN_PLL */ | ||
292 | #define OMAP24XX_EN_54M_PLL_SHIFT 6 | ||
293 | #define OMAP24XX_EN_54M_PLL_MASK (0x3 << 6) | ||
294 | #define OMAP24XX_EN_96M_PLL_SHIFT 2 | ||
295 | #define OMAP24XX_EN_96M_PLL_MASK (0x3 << 2) | ||
296 | #define OMAP24XX_EN_DPLL_SHIFT 0 | ||
297 | #define OMAP24XX_EN_DPLL_MASK (0x3 << 0) | ||
298 | |||
299 | /* CM_IDLEST_CKGEN */ | ||
300 | #define OMAP24XX_ST_54M_APLL (1 << 9) | ||
301 | #define OMAP24XX_ST_96M_APLL (1 << 8) | ||
302 | #define OMAP24XX_ST_54M_CLK (1 << 6) | ||
303 | #define OMAP24XX_ST_12M_CLK (1 << 5) | ||
304 | #define OMAP24XX_ST_48M_CLK (1 << 4) | ||
305 | #define OMAP24XX_ST_96M_CLK (1 << 2) | ||
306 | #define OMAP24XX_ST_CORE_CLK_SHIFT 0 | ||
307 | #define OMAP24XX_ST_CORE_CLK_MASK (0x3 << 0) | ||
308 | |||
309 | /* CM_AUTOIDLE_PLL */ | ||
310 | #define OMAP24XX_AUTO_54M_SHIFT 6 | ||
311 | #define OMAP24XX_AUTO_54M_MASK (0x3 << 6) | ||
312 | #define OMAP24XX_AUTO_96M_SHIFT 2 | ||
313 | #define OMAP24XX_AUTO_96M_MASK (0x3 << 2) | ||
314 | #define OMAP24XX_AUTO_DPLL_SHIFT 0 | ||
315 | #define OMAP24XX_AUTO_DPLL_MASK (0x3 << 0) | ||
316 | |||
317 | /* CM_CLKSEL1_PLL */ | ||
318 | #define OMAP2430_MAXDPLLFASTLOCK_SHIFT 28 | ||
319 | #define OMAP2430_MAXDPLLFASTLOCK_MASK (0x7 << 28) | ||
320 | #define OMAP24XX_APLLS_CLKIN_SHIFT 23 | ||
321 | #define OMAP24XX_APLLS_CLKIN_MASK (0x7 << 23) | ||
322 | #define OMAP24XX_DPLL_MULT_SHIFT 12 | ||
323 | #define OMAP24XX_DPLL_MULT_MASK (0x3ff << 12) | ||
324 | #define OMAP24XX_DPLL_DIV_SHIFT 8 | ||
325 | #define OMAP24XX_DPLL_DIV_MASK (0xf << 8) | ||
326 | #define OMAP24XX_54M_SOURCE_SHIFT 5 | ||
327 | #define OMAP24XX_54M_SOURCE (1 << 5) | ||
328 | #define OMAP2430_96M_SOURCE_SHIFT 4 | ||
329 | #define OMAP2430_96M_SOURCE (1 << 4) | ||
330 | #define OMAP24XX_48M_SOURCE_SHIFT 3 | ||
331 | #define OMAP24XX_48M_SOURCE (1 << 3) | ||
332 | #define OMAP2430_ALTCLK_SOURCE_SHIFT 0 | ||
333 | #define OMAP2430_ALTCLK_SOURCE_MASK (0x7 << 0) | ||
334 | |||
335 | /* CM_CLKSEL2_PLL */ | ||
336 | #define OMAP24XX_CORE_CLK_SRC_SHIFT 0 | ||
337 | #define OMAP24XX_CORE_CLK_SRC_MASK (0x3 << 0) | ||
338 | |||
339 | /* CM_FCLKEN_DSP */ | ||
340 | #define OMAP2420_EN_IVA_COP_SHIFT 10 | ||
341 | #define OMAP2420_EN_IVA_COP (1 << 10) | ||
342 | #define OMAP2420_EN_IVA_MPU_SHIFT 8 | ||
343 | #define OMAP2420_EN_IVA_MPU (1 << 8) | ||
344 | #define OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT 0 | ||
345 | #define OMAP24XX_CM_FCLKEN_DSP_EN_DSP (1 << 0) | ||
346 | |||
347 | /* CM_ICLKEN_DSP */ | ||
348 | #define OMAP2420_EN_DSP_IPI_SHIFT 1 | ||
349 | #define OMAP2420_EN_DSP_IPI (1 << 1) | ||
350 | |||
351 | /* CM_IDLEST_DSP */ | ||
352 | #define OMAP2420_ST_IVA (1 << 8) | ||
353 | #define OMAP2420_ST_IPI (1 << 1) | ||
354 | #define OMAP24XX_ST_DSP (1 << 0) | ||
355 | |||
356 | /* CM_AUTOIDLE_DSP */ | ||
357 | #define OMAP2420_AUTO_DSP_IPI (1 << 1) | ||
358 | |||
359 | /* CM_CLKSEL_DSP */ | ||
360 | #define OMAP2420_SYNC_IVA (1 << 13) | ||
361 | #define OMAP2420_CLKSEL_IVA_SHIFT 8 | ||
362 | #define OMAP2420_CLKSEL_IVA_MASK (0x1f << 8) | ||
363 | #define OMAP24XX_SYNC_DSP (1 << 7) | ||
364 | #define OMAP24XX_CLKSEL_DSP_IF_SHIFT 5 | ||
365 | #define OMAP24XX_CLKSEL_DSP_IF_MASK (0x3 << 5) | ||
366 | #define OMAP24XX_CLKSEL_DSP_SHIFT 0 | ||
367 | #define OMAP24XX_CLKSEL_DSP_MASK (0x1f << 0) | ||
368 | |||
369 | /* CM_CLKSTCTRL_DSP */ | ||
370 | #define OMAP2420_AUTOSTATE_IVA (1 << 8) | ||
371 | #define OMAP24XX_AUTOSTATE_DSP (1 << 0) | ||
372 | |||
373 | /* CM_FCLKEN_MDM */ | ||
374 | /* 2430 only */ | ||
375 | #define OMAP2430_EN_OSC_SHIFT 1 | ||
376 | #define OMAP2430_EN_OSC (1 << 1) | ||
377 | |||
378 | /* CM_ICLKEN_MDM */ | ||
379 | /* 2430 only */ | ||
380 | #define OMAP2430_CM_ICLKEN_MDM_EN_MDM_SHIFT 0 | ||
381 | #define OMAP2430_CM_ICLKEN_MDM_EN_MDM (1 << 0) | ||
382 | |||
383 | /* CM_IDLEST_MDM specific bits */ | ||
384 | /* 2430 only */ | ||
385 | |||
386 | /* CM_AUTOIDLE_MDM */ | ||
387 | /* 2430 only */ | ||
388 | #define OMAP2430_AUTO_OSC (1 << 1) | ||
389 | #define OMAP2430_AUTO_MDM (1 << 0) | ||
390 | |||
391 | /* CM_CLKSEL_MDM */ | ||
392 | /* 2430 only */ | ||
393 | #define OMAP2430_SYNC_MDM (1 << 4) | ||
394 | #define OMAP2430_CLKSEL_MDM_SHIFT 0 | ||
395 | #define OMAP2430_CLKSEL_MDM_MASK (0xf << 0) | ||
396 | |||
397 | /* CM_CLKSTCTRL_MDM */ | ||
398 | /* 2430 only */ | ||
399 | #define OMAP2430_AUTOSTATE_MDM (1 << 0) | ||
400 | |||
401 | #endif | ||
diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-regbits-34xx.h new file mode 100644 index 000000000000..9249129a5f46 --- /dev/null +++ b/arch/arm/mach-omap2/cm-regbits-34xx.h | |||
@@ -0,0 +1,673 @@ | |||
1 | #ifndef __ARCH_ARM_MACH_OMAP2_CM_REGBITS_34XX_H | ||
2 | #define __ARCH_ARM_MACH_OMAP2_CM_REGBITS_34XX_H | ||
3 | |||
4 | /* | ||
5 | * OMAP3430 Clock Management register bits | ||
6 | * | ||
7 | * Copyright (C) 2007-2008 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007-2008 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include "cm.h" | ||
18 | |||
19 | /* Bits shared between registers */ | ||
20 | |||
21 | /* CM_FCLKEN1_CORE and CM_ICLKEN1_CORE shared bits */ | ||
22 | #define OMAP3430ES2_EN_MMC3_MASK (1 << 30) | ||
23 | #define OMAP3430ES2_EN_MMC3_SHIFT 30 | ||
24 | #define OMAP3430_EN_MSPRO (1 << 23) | ||
25 | #define OMAP3430_EN_MSPRO_SHIFT 23 | ||
26 | #define OMAP3430_EN_HDQ (1 << 22) | ||
27 | #define OMAP3430_EN_HDQ_SHIFT 22 | ||
28 | #define OMAP3430ES1_EN_FSHOSTUSB (1 << 5) | ||
29 | #define OMAP3430ES1_EN_FSHOSTUSB_SHIFT 5 | ||
30 | #define OMAP3430ES1_EN_D2D (1 << 3) | ||
31 | #define OMAP3430ES1_EN_D2D_SHIFT 3 | ||
32 | #define OMAP3430_EN_SSI (1 << 0) | ||
33 | #define OMAP3430_EN_SSI_SHIFT 0 | ||
34 | |||
35 | /* CM_FCLKEN3_CORE and CM_ICLKEN3_CORE shared bits */ | ||
36 | #define OMAP3430ES2_EN_USBTLL_SHIFT 2 | ||
37 | #define OMAP3430ES2_EN_USBTLL_MASK (1 << 2) | ||
38 | |||
39 | /* CM_FCLKEN_WKUP and CM_ICLKEN_WKUP shared bits */ | ||
40 | #define OMAP3430_EN_WDT2 (1 << 5) | ||
41 | #define OMAP3430_EN_WDT2_SHIFT 5 | ||
42 | |||
43 | /* CM_ICLKEN_CAM, CM_FCLKEN_CAM shared bits */ | ||
44 | #define OMAP3430_EN_CAM (1 << 0) | ||
45 | #define OMAP3430_EN_CAM_SHIFT 0 | ||
46 | |||
47 | /* CM_FCLKEN_PER, CM_ICLKEN_PER shared bits */ | ||
48 | #define OMAP3430_EN_WDT3 (1 << 12) | ||
49 | #define OMAP3430_EN_WDT3_SHIFT 12 | ||
50 | |||
51 | /* CM_CLKSEL2_EMU, CM_CLKSEL3_EMU shared bits */ | ||
52 | #define OMAP3430_OVERRIDE_ENABLE (1 << 19) | ||
53 | |||
54 | |||
55 | /* Bits specific to each register */ | ||
56 | |||
57 | /* CM_FCLKEN_IVA2 */ | ||
58 | #define OMAP3430_CM_FCLKEN_IVA2_EN_IVA2 (1 << 0) | ||
59 | |||
60 | /* CM_CLKEN_PLL_IVA2 */ | ||
61 | #define OMAP3430_IVA2_DPLL_RAMPTIME_SHIFT 8 | ||
62 | #define OMAP3430_IVA2_DPLL_RAMPTIME_MASK (0x3 << 8) | ||
63 | #define OMAP3430_IVA2_DPLL_FREQSEL_SHIFT 4 | ||
64 | #define OMAP3430_IVA2_DPLL_FREQSEL_MASK (0xf << 4) | ||
65 | #define OMAP3430_EN_IVA2_DPLL_DRIFTGUARD_SHIFT 3 | ||
66 | #define OMAP3430_EN_IVA2_DPLL_DRIFTGUARD_MASK (1 << 3) | ||
67 | #define OMAP3430_EN_IVA2_DPLL_SHIFT 0 | ||
68 | #define OMAP3430_EN_IVA2_DPLL_MASK (0x7 << 0) | ||
69 | |||
70 | /* CM_IDLEST_IVA2 */ | ||
71 | #define OMAP3430_ST_IVA2 (1 << 0) | ||
72 | |||
73 | /* CM_IDLEST_PLL_IVA2 */ | ||
74 | #define OMAP3430_ST_IVA2_CLK (1 << 0) | ||
75 | |||
76 | /* CM_AUTOIDLE_PLL_IVA2 */ | ||
77 | #define OMAP3430_AUTO_IVA2_DPLL_SHIFT 0 | ||
78 | #define OMAP3430_AUTO_IVA2_DPLL_MASK (0x7 << 0) | ||
79 | |||
80 | /* CM_CLKSEL1_PLL_IVA2 */ | ||
81 | #define OMAP3430_IVA2_CLK_SRC_SHIFT 19 | ||
82 | #define OMAP3430_IVA2_CLK_SRC_MASK (0x3 << 19) | ||
83 | #define OMAP3430_IVA2_DPLL_MULT_SHIFT 8 | ||
84 | #define OMAP3430_IVA2_DPLL_MULT_MASK (0x7ff << 8) | ||
85 | #define OMAP3430_IVA2_DPLL_DIV_SHIFT 0 | ||
86 | #define OMAP3430_IVA2_DPLL_DIV_MASK (0x7f << 0) | ||
87 | |||
88 | /* CM_CLKSEL2_PLL_IVA2 */ | ||
89 | #define OMAP3430_IVA2_DPLL_CLKOUT_DIV_SHIFT 0 | ||
90 | #define OMAP3430_IVA2_DPLL_CLKOUT_DIV_MASK (0x1f << 0) | ||
91 | |||
92 | /* CM_CLKSTCTRL_IVA2 */ | ||
93 | #define OMAP3430_CLKTRCTRL_IVA2_SHIFT 0 | ||
94 | #define OMAP3430_CLKTRCTRL_IVA2_MASK (0x3 << 0) | ||
95 | |||
96 | /* CM_CLKSTST_IVA2 */ | ||
97 | #define OMAP3430_CLKACTIVITY_IVA2 (1 << 0) | ||
98 | |||
99 | /* CM_REVISION specific bits */ | ||
100 | |||
101 | /* CM_SYSCONFIG specific bits */ | ||
102 | |||
103 | /* CM_CLKEN_PLL_MPU */ | ||
104 | #define OMAP3430_MPU_DPLL_RAMPTIME_SHIFT 8 | ||
105 | #define OMAP3430_MPU_DPLL_RAMPTIME_MASK (0x3 << 8) | ||
106 | #define OMAP3430_MPU_DPLL_FREQSEL_SHIFT 4 | ||
107 | #define OMAP3430_MPU_DPLL_FREQSEL_MASK (0xf << 4) | ||
108 | #define OMAP3430_EN_MPU_DPLL_DRIFTGUARD_SHIFT 3 | ||
109 | #define OMAP3430_EN_MPU_DPLL_DRIFTGUARD_MASK (1 << 3) | ||
110 | #define OMAP3430_EN_MPU_DPLL_SHIFT 0 | ||
111 | #define OMAP3430_EN_MPU_DPLL_MASK (0x7 << 0) | ||
112 | |||
113 | /* CM_IDLEST_MPU */ | ||
114 | #define OMAP3430_ST_MPU (1 << 0) | ||
115 | |||
116 | /* CM_IDLEST_PLL_MPU */ | ||
117 | #define OMAP3430_ST_MPU_CLK (1 << 0) | ||
118 | #define OMAP3430_ST_IVA2_CLK_MASK (1 << 0) | ||
119 | |||
120 | /* CM_IDLEST_PLL_MPU */ | ||
121 | #define OMAP3430_ST_MPU_CLK_MASK (1 << 0) | ||
122 | |||
123 | /* CM_AUTOIDLE_PLL_MPU */ | ||
124 | #define OMAP3430_AUTO_MPU_DPLL_SHIFT 0 | ||
125 | #define OMAP3430_AUTO_MPU_DPLL_MASK (0x7 << 0) | ||
126 | |||
127 | /* CM_CLKSEL1_PLL_MPU */ | ||
128 | #define OMAP3430_MPU_CLK_SRC_SHIFT 19 | ||
129 | #define OMAP3430_MPU_CLK_SRC_MASK (0x3 << 19) | ||
130 | #define OMAP3430_MPU_DPLL_MULT_SHIFT 8 | ||
131 | #define OMAP3430_MPU_DPLL_MULT_MASK (0x7ff << 8) | ||
132 | #define OMAP3430_MPU_DPLL_DIV_SHIFT 0 | ||
133 | #define OMAP3430_MPU_DPLL_DIV_MASK (0x7f << 0) | ||
134 | |||
135 | /* CM_CLKSEL2_PLL_MPU */ | ||
136 | #define OMAP3430_MPU_DPLL_CLKOUT_DIV_SHIFT 0 | ||
137 | #define OMAP3430_MPU_DPLL_CLKOUT_DIV_MASK (0x1f << 0) | ||
138 | |||
139 | /* CM_CLKSTCTRL_MPU */ | ||
140 | #define OMAP3430_CLKTRCTRL_MPU_SHIFT 0 | ||
141 | #define OMAP3430_CLKTRCTRL_MPU_MASK (0x3 << 0) | ||
142 | |||
143 | /* CM_CLKSTST_MPU */ | ||
144 | #define OMAP3430_CLKACTIVITY_MPU (1 << 0) | ||
145 | |||
146 | /* CM_FCLKEN1_CORE specific bits */ | ||
147 | |||
148 | /* CM_ICLKEN1_CORE specific bits */ | ||
149 | #define OMAP3430_EN_ICR (1 << 29) | ||
150 | #define OMAP3430_EN_ICR_SHIFT 29 | ||
151 | #define OMAP3430_EN_AES2 (1 << 28) | ||
152 | #define OMAP3430_EN_AES2_SHIFT 28 | ||
153 | #define OMAP3430_EN_SHA12 (1 << 27) | ||
154 | #define OMAP3430_EN_SHA12_SHIFT 27 | ||
155 | #define OMAP3430_EN_DES2 (1 << 26) | ||
156 | #define OMAP3430_EN_DES2_SHIFT 26 | ||
157 | #define OMAP3430ES1_EN_FAC (1 << 8) | ||
158 | #define OMAP3430ES1_EN_FAC_SHIFT 8 | ||
159 | #define OMAP3430_EN_MAILBOXES (1 << 7) | ||
160 | #define OMAP3430_EN_MAILBOXES_SHIFT 7 | ||
161 | #define OMAP3430_EN_OMAPCTRL (1 << 6) | ||
162 | #define OMAP3430_EN_OMAPCTRL_SHIFT 6 | ||
163 | #define OMAP3430_EN_SDRC (1 << 1) | ||
164 | #define OMAP3430_EN_SDRC_SHIFT 1 | ||
165 | |||
166 | /* CM_ICLKEN2_CORE */ | ||
167 | #define OMAP3430_EN_PKA (1 << 4) | ||
168 | #define OMAP3430_EN_PKA_SHIFT 4 | ||
169 | #define OMAP3430_EN_AES1 (1 << 3) | ||
170 | #define OMAP3430_EN_AES1_SHIFT 3 | ||
171 | #define OMAP3430_EN_RNG (1 << 2) | ||
172 | #define OMAP3430_EN_RNG_SHIFT 2 | ||
173 | #define OMAP3430_EN_SHA11 (1 << 1) | ||
174 | #define OMAP3430_EN_SHA11_SHIFT 1 | ||
175 | #define OMAP3430_EN_DES1 (1 << 0) | ||
176 | #define OMAP3430_EN_DES1_SHIFT 0 | ||
177 | |||
178 | /* CM_FCLKEN3_CORE specific bits */ | ||
179 | #define OMAP3430ES2_EN_TS_SHIFT 1 | ||
180 | #define OMAP3430ES2_EN_TS_MASK (1 << 1) | ||
181 | #define OMAP3430ES2_EN_CPEFUSE_SHIFT 0 | ||
182 | #define OMAP3430ES2_EN_CPEFUSE_MASK (1 << 0) | ||
183 | |||
184 | /* CM_IDLEST1_CORE specific bits */ | ||
185 | #define OMAP3430_ST_ICR (1 << 29) | ||
186 | #define OMAP3430_ST_AES2 (1 << 28) | ||
187 | #define OMAP3430_ST_SHA12 (1 << 27) | ||
188 | #define OMAP3430_ST_DES2 (1 << 26) | ||
189 | #define OMAP3430_ST_MSPRO (1 << 23) | ||
190 | #define OMAP3430_ST_HDQ (1 << 22) | ||
191 | #define OMAP3430ES1_ST_FAC (1 << 8) | ||
192 | #define OMAP3430ES1_ST_MAILBOXES (1 << 7) | ||
193 | #define OMAP3430_ST_OMAPCTRL (1 << 6) | ||
194 | #define OMAP3430_ST_SDMA (1 << 2) | ||
195 | #define OMAP3430_ST_SDRC (1 << 1) | ||
196 | #define OMAP3430_ST_SSI (1 << 0) | ||
197 | |||
198 | /* CM_IDLEST2_CORE */ | ||
199 | #define OMAP3430_ST_PKA (1 << 4) | ||
200 | #define OMAP3430_ST_AES1 (1 << 3) | ||
201 | #define OMAP3430_ST_RNG (1 << 2) | ||
202 | #define OMAP3430_ST_SHA11 (1 << 1) | ||
203 | #define OMAP3430_ST_DES1 (1 << 0) | ||
204 | |||
205 | /* CM_IDLEST3_CORE */ | ||
206 | #define OMAP3430ES2_ST_USBTLL_SHIFT 2 | ||
207 | #define OMAP3430ES2_ST_USBTLL_MASK (1 << 2) | ||
208 | |||
209 | /* CM_AUTOIDLE1_CORE */ | ||
210 | #define OMAP3430_AUTO_AES2 (1 << 28) | ||
211 | #define OMAP3430_AUTO_AES2_SHIFT 28 | ||
212 | #define OMAP3430_AUTO_SHA12 (1 << 27) | ||
213 | #define OMAP3430_AUTO_SHA12_SHIFT 27 | ||
214 | #define OMAP3430_AUTO_DES2 (1 << 26) | ||
215 | #define OMAP3430_AUTO_DES2_SHIFT 26 | ||
216 | #define OMAP3430_AUTO_MMC2 (1 << 25) | ||
217 | #define OMAP3430_AUTO_MMC2_SHIFT 25 | ||
218 | #define OMAP3430_AUTO_MMC1 (1 << 24) | ||
219 | #define OMAP3430_AUTO_MMC1_SHIFT 24 | ||
220 | #define OMAP3430_AUTO_MSPRO (1 << 23) | ||
221 | #define OMAP3430_AUTO_MSPRO_SHIFT 23 | ||
222 | #define OMAP3430_AUTO_HDQ (1 << 22) | ||
223 | #define OMAP3430_AUTO_HDQ_SHIFT 22 | ||
224 | #define OMAP3430_AUTO_MCSPI4 (1 << 21) | ||
225 | #define OMAP3430_AUTO_MCSPI4_SHIFT 21 | ||
226 | #define OMAP3430_AUTO_MCSPI3 (1 << 20) | ||
227 | #define OMAP3430_AUTO_MCSPI3_SHIFT 20 | ||
228 | #define OMAP3430_AUTO_MCSPI2 (1 << 19) | ||
229 | #define OMAP3430_AUTO_MCSPI2_SHIFT 19 | ||
230 | #define OMAP3430_AUTO_MCSPI1 (1 << 18) | ||
231 | #define OMAP3430_AUTO_MCSPI1_SHIFT 18 | ||
232 | #define OMAP3430_AUTO_I2C3 (1 << 17) | ||
233 | #define OMAP3430_AUTO_I2C3_SHIFT 17 | ||
234 | #define OMAP3430_AUTO_I2C2 (1 << 16) | ||
235 | #define OMAP3430_AUTO_I2C2_SHIFT 16 | ||
236 | #define OMAP3430_AUTO_I2C1 (1 << 15) | ||
237 | #define OMAP3430_AUTO_I2C1_SHIFT 15 | ||
238 | #define OMAP3430_AUTO_UART2 (1 << 14) | ||
239 | #define OMAP3430_AUTO_UART2_SHIFT 14 | ||
240 | #define OMAP3430_AUTO_UART1 (1 << 13) | ||
241 | #define OMAP3430_AUTO_UART1_SHIFT 13 | ||
242 | #define OMAP3430_AUTO_GPT11 (1 << 12) | ||
243 | #define OMAP3430_AUTO_GPT11_SHIFT 12 | ||
244 | #define OMAP3430_AUTO_GPT10 (1 << 11) | ||
245 | #define OMAP3430_AUTO_GPT10_SHIFT 11 | ||
246 | #define OMAP3430_AUTO_MCBSP5 (1 << 10) | ||
247 | #define OMAP3430_AUTO_MCBSP5_SHIFT 10 | ||
248 | #define OMAP3430_AUTO_MCBSP1 (1 << 9) | ||
249 | #define OMAP3430_AUTO_MCBSP1_SHIFT 9 | ||
250 | #define OMAP3430ES1_AUTO_FAC (1 << 8) | ||
251 | #define OMAP3430ES1_AUTO_FAC_SHIFT 8 | ||
252 | #define OMAP3430_AUTO_MAILBOXES (1 << 7) | ||
253 | #define OMAP3430_AUTO_MAILBOXES_SHIFT 7 | ||
254 | #define OMAP3430_AUTO_OMAPCTRL (1 << 6) | ||
255 | #define OMAP3430_AUTO_OMAPCTRL_SHIFT 6 | ||
256 | #define OMAP3430ES1_AUTO_FSHOSTUSB (1 << 5) | ||
257 | #define OMAP3430ES1_AUTO_FSHOSTUSB_SHIFT 5 | ||
258 | #define OMAP3430_AUTO_HSOTGUSB (1 << 4) | ||
259 | #define OMAP3430_AUTO_HSOTGUSB_SHIFT 4 | ||
260 | #define OMAP3430ES1_AUTO_D2D (1 << 3) | ||
261 | #define OMAP3430ES1_AUTO_D2D_SHIFT 3 | ||
262 | #define OMAP3430_AUTO_SSI (1 << 0) | ||
263 | #define OMAP3430_AUTO_SSI_SHIFT 0 | ||
264 | |||
265 | /* CM_AUTOIDLE2_CORE */ | ||
266 | #define OMAP3430_AUTO_PKA (1 << 4) | ||
267 | #define OMAP3430_AUTO_PKA_SHIFT 4 | ||
268 | #define OMAP3430_AUTO_AES1 (1 << 3) | ||
269 | #define OMAP3430_AUTO_AES1_SHIFT 3 | ||
270 | #define OMAP3430_AUTO_RNG (1 << 2) | ||
271 | #define OMAP3430_AUTO_RNG_SHIFT 2 | ||
272 | #define OMAP3430_AUTO_SHA11 (1 << 1) | ||
273 | #define OMAP3430_AUTO_SHA11_SHIFT 1 | ||
274 | #define OMAP3430_AUTO_DES1 (1 << 0) | ||
275 | #define OMAP3430_AUTO_DES1_SHIFT 0 | ||
276 | |||
277 | /* CM_AUTOIDLE3_CORE */ | ||
278 | #define OMAP3430ES2_AUTO_USBTLL_SHIFT 2 | ||
279 | #define OMAP3430ES2_AUTO_USBTLL_MASK (1 << 2) | ||
280 | |||
281 | /* CM_CLKSEL_CORE */ | ||
282 | #define OMAP3430_CLKSEL_SSI_SHIFT 8 | ||
283 | #define OMAP3430_CLKSEL_SSI_MASK (0xf << 8) | ||
284 | #define OMAP3430_CLKSEL_GPT11_MASK (1 << 7) | ||
285 | #define OMAP3430_CLKSEL_GPT11_SHIFT 7 | ||
286 | #define OMAP3430_CLKSEL_GPT10_MASK (1 << 6) | ||
287 | #define OMAP3430_CLKSEL_GPT10_SHIFT 6 | ||
288 | #define OMAP3430ES1_CLKSEL_FSHOSTUSB_SHIFT 4 | ||
289 | #define OMAP3430ES1_CLKSEL_FSHOSTUSB_MASK (0x3 << 4) | ||
290 | #define OMAP3430_CLKSEL_L4_SHIFT 2 | ||
291 | #define OMAP3430_CLKSEL_L4_MASK (0x3 << 2) | ||
292 | #define OMAP3430_CLKSEL_L3_SHIFT 0 | ||
293 | #define OMAP3430_CLKSEL_L3_MASK (0x3 << 0) | ||
294 | |||
295 | /* CM_CLKSTCTRL_CORE */ | ||
296 | #define OMAP3430ES1_CLKTRCTRL_D2D_SHIFT 4 | ||
297 | #define OMAP3430ES1_CLKTRCTRL_D2D_MASK (0x3 << 4) | ||
298 | #define OMAP3430_CLKTRCTRL_L4_SHIFT 2 | ||
299 | #define OMAP3430_CLKTRCTRL_L4_MASK (0x3 << 2) | ||
300 | #define OMAP3430_CLKTRCTRL_L3_SHIFT 0 | ||
301 | #define OMAP3430_CLKTRCTRL_L3_MASK (0x3 << 0) | ||
302 | |||
303 | /* CM_CLKSTST_CORE */ | ||
304 | #define OMAP3430ES1_CLKACTIVITY_D2D (1 << 2) | ||
305 | #define OMAP3430_CLKACTIVITY_L4 (1 << 1) | ||
306 | #define OMAP3430_CLKACTIVITY_L3 (1 << 0) | ||
307 | |||
308 | /* CM_FCLKEN_GFX */ | ||
309 | #define OMAP3430ES1_EN_3D (1 << 2) | ||
310 | #define OMAP3430ES1_EN_3D_SHIFT 2 | ||
311 | #define OMAP3430ES1_EN_2D (1 << 1) | ||
312 | #define OMAP3430ES1_EN_2D_SHIFT 1 | ||
313 | |||
314 | /* CM_ICLKEN_GFX specific bits */ | ||
315 | |||
316 | /* CM_IDLEST_GFX specific bits */ | ||
317 | |||
318 | /* CM_CLKSEL_GFX specific bits */ | ||
319 | |||
320 | /* CM_SLEEPDEP_GFX specific bits */ | ||
321 | |||
322 | /* CM_CLKSTCTRL_GFX */ | ||
323 | #define OMAP3430ES1_CLKTRCTRL_GFX_SHIFT 0 | ||
324 | #define OMAP3430ES1_CLKTRCTRL_GFX_MASK (0x3 << 0) | ||
325 | |||
326 | /* CM_CLKSTST_GFX */ | ||
327 | #define OMAP3430ES1_CLKACTIVITY_GFX (1 << 0) | ||
328 | |||
329 | /* CM_FCLKEN_SGX */ | ||
330 | #define OMAP3430ES2_EN_SGX_SHIFT 1 | ||
331 | #define OMAP3430ES2_EN_SGX_MASK (1 << 1) | ||
332 | |||
333 | /* CM_CLKSEL_SGX */ | ||
334 | #define OMAP3430ES2_CLKSEL_SGX_SHIFT 0 | ||
335 | #define OMAP3430ES2_CLKSEL_SGX_MASK (0x7 << 0) | ||
336 | |||
337 | /* CM_FCLKEN_WKUP specific bits */ | ||
338 | #define OMAP3430ES2_EN_USIMOCP_SHIFT 9 | ||
339 | |||
340 | /* CM_ICLKEN_WKUP specific bits */ | ||
341 | #define OMAP3430_EN_WDT1 (1 << 4) | ||
342 | #define OMAP3430_EN_WDT1_SHIFT 4 | ||
343 | #define OMAP3430_EN_32KSYNC (1 << 2) | ||
344 | #define OMAP3430_EN_32KSYNC_SHIFT 2 | ||
345 | |||
346 | /* CM_IDLEST_WKUP specific bits */ | ||
347 | #define OMAP3430_ST_WDT2 (1 << 5) | ||
348 | #define OMAP3430_ST_WDT1 (1 << 4) | ||
349 | #define OMAP3430_ST_32KSYNC (1 << 2) | ||
350 | |||
351 | /* CM_AUTOIDLE_WKUP */ | ||
352 | #define OMAP3430_AUTO_WDT2 (1 << 5) | ||
353 | #define OMAP3430_AUTO_WDT2_SHIFT 5 | ||
354 | #define OMAP3430_AUTO_WDT1 (1 << 4) | ||
355 | #define OMAP3430_AUTO_WDT1_SHIFT 4 | ||
356 | #define OMAP3430_AUTO_GPIO1 (1 << 3) | ||
357 | #define OMAP3430_AUTO_GPIO1_SHIFT 3 | ||
358 | #define OMAP3430_AUTO_32KSYNC (1 << 2) | ||
359 | #define OMAP3430_AUTO_32KSYNC_SHIFT 2 | ||
360 | #define OMAP3430_AUTO_GPT12 (1 << 1) | ||
361 | #define OMAP3430_AUTO_GPT12_SHIFT 1 | ||
362 | #define OMAP3430_AUTO_GPT1 (1 << 0) | ||
363 | #define OMAP3430_AUTO_GPT1_SHIFT 0 | ||
364 | |||
365 | /* CM_CLKSEL_WKUP */ | ||
366 | #define OMAP3430ES2_CLKSEL_USIMOCP_MASK (0xf << 3) | ||
367 | #define OMAP3430_CLKSEL_RM_SHIFT 1 | ||
368 | #define OMAP3430_CLKSEL_RM_MASK (0x3 << 1) | ||
369 | #define OMAP3430_CLKSEL_GPT1_SHIFT 0 | ||
370 | #define OMAP3430_CLKSEL_GPT1_MASK (1 << 0) | ||
371 | |||
372 | /* CM_CLKEN_PLL */ | ||
373 | #define OMAP3430_PWRDN_EMU_PERIPH_SHIFT 31 | ||
374 | #define OMAP3430_PWRDN_CAM_SHIFT 30 | ||
375 | #define OMAP3430_PWRDN_DSS1_SHIFT 29 | ||
376 | #define OMAP3430_PWRDN_TV_SHIFT 28 | ||
377 | #define OMAP3430_PWRDN_96M_SHIFT 27 | ||
378 | #define OMAP3430_PERIPH_DPLL_RAMPTIME_SHIFT 24 | ||
379 | #define OMAP3430_PERIPH_DPLL_RAMPTIME_MASK (0x3 << 24) | ||
380 | #define OMAP3430_PERIPH_DPLL_FREQSEL_SHIFT 20 | ||
381 | #define OMAP3430_PERIPH_DPLL_FREQSEL_MASK (0xf << 20) | ||
382 | #define OMAP3430_EN_PERIPH_DPLL_DRIFTGUARD_SHIFT 19 | ||
383 | #define OMAP3430_EN_PERIPH_DPLL_DRIFTGUARD_MASK (1 << 19) | ||
384 | #define OMAP3430_EN_PERIPH_DPLL_SHIFT 16 | ||
385 | #define OMAP3430_EN_PERIPH_DPLL_MASK (0x7 << 16) | ||
386 | #define OMAP3430_PWRDN_EMU_CORE_SHIFT 12 | ||
387 | #define OMAP3430_CORE_DPLL_RAMPTIME_SHIFT 8 | ||
388 | #define OMAP3430_CORE_DPLL_RAMPTIME_MASK (0x3 << 8) | ||
389 | #define OMAP3430_CORE_DPLL_FREQSEL_SHIFT 4 | ||
390 | #define OMAP3430_CORE_DPLL_FREQSEL_MASK (0xf << 4) | ||
391 | #define OMAP3430_EN_CORE_DPLL_DRIFTGUARD_SHIFT 3 | ||
392 | #define OMAP3430_EN_CORE_DPLL_DRIFTGUARD_MASK (1 << 3) | ||
393 | #define OMAP3430_EN_CORE_DPLL_SHIFT 0 | ||
394 | #define OMAP3430_EN_CORE_DPLL_MASK (0x7 << 0) | ||
395 | |||
396 | /* CM_CLKEN2_PLL */ | ||
397 | #define OMAP3430ES2_EN_PERIPH2_DPLL_LPMODE_SHIFT 10 | ||
398 | #define OMAP3430ES2_PERIPH2_DPLL_RAMPTIME_MASK (0x3 << 8) | ||
399 | #define OMAP3430ES2_PERIPH2_DPLL_FREQSEL_SHIFT 4 | ||
400 | #define OMAP3430ES2_PERIPH2_DPLL_FREQSEL_MASK (0xf << 4) | ||
401 | #define OMAP3430ES2_EN_PERIPH2_DPLL_DRIFTGUARD_SHIFT 3 | ||
402 | #define OMAP3430ES2_EN_PERIPH2_DPLL_SHIFT 0 | ||
403 | #define OMAP3430ES2_EN_PERIPH2_DPLL_MASK (0x7 << 0) | ||
404 | |||
405 | /* CM_IDLEST_CKGEN */ | ||
406 | #define OMAP3430_ST_54M_CLK (1 << 5) | ||
407 | #define OMAP3430_ST_12M_CLK (1 << 4) | ||
408 | #define OMAP3430_ST_48M_CLK (1 << 3) | ||
409 | #define OMAP3430_ST_96M_CLK (1 << 2) | ||
410 | #define OMAP3430_ST_PERIPH_CLK (1 << 1) | ||
411 | #define OMAP3430_ST_CORE_CLK (1 << 0) | ||
412 | |||
413 | /* CM_IDLEST2_CKGEN */ | ||
414 | #define OMAP3430ES2_ST_120M_CLK_SHIFT 1 | ||
415 | #define OMAP3430ES2_ST_120M_CLK_MASK (1 << 1) | ||
416 | #define OMAP3430ES2_ST_PERIPH2_CLK_SHIFT 0 | ||
417 | #define OMAP3430ES2_ST_PERIPH2_CLK_MASK (1 << 0) | ||
418 | |||
419 | /* CM_AUTOIDLE_PLL */ | ||
420 | #define OMAP3430_AUTO_PERIPH_DPLL_SHIFT 3 | ||
421 | #define OMAP3430_AUTO_PERIPH_DPLL_MASK (0x7 << 3) | ||
422 | #define OMAP3430_AUTO_CORE_DPLL_SHIFT 0 | ||
423 | #define OMAP3430_AUTO_CORE_DPLL_MASK (0x7 << 0) | ||
424 | |||
425 | /* CM_CLKSEL1_PLL */ | ||
426 | /* Note that OMAP3430_CORE_DPLL_CLKOUT_DIV_MASK was (0x3 << 27) on 3430ES1 */ | ||
427 | #define OMAP3430_CORE_DPLL_CLKOUT_DIV_SHIFT 27 | ||
428 | #define OMAP3430_CORE_DPLL_CLKOUT_DIV_MASK (0x1f << 27) | ||
429 | #define OMAP3430_CORE_DPLL_MULT_SHIFT 16 | ||
430 | #define OMAP3430_CORE_DPLL_MULT_MASK (0x7ff << 16) | ||
431 | #define OMAP3430_CORE_DPLL_DIV_SHIFT 8 | ||
432 | #define OMAP3430_CORE_DPLL_DIV_MASK (0x7f << 8) | ||
433 | #define OMAP3430_SOURCE_54M (1 << 5) | ||
434 | #define OMAP3430_SOURCE_48M (1 << 3) | ||
435 | |||
436 | /* CM_CLKSEL2_PLL */ | ||
437 | #define OMAP3430_PERIPH_DPLL_MULT_SHIFT 8 | ||
438 | #define OMAP3430_PERIPH_DPLL_MULT_MASK (0x7ff << 8) | ||
439 | #define OMAP3430_PERIPH_DPLL_DIV_SHIFT 0 | ||
440 | #define OMAP3430_PERIPH_DPLL_DIV_MASK (0x7f << 0) | ||
441 | |||
442 | /* CM_CLKSEL3_PLL */ | ||
443 | #define OMAP3430_DIV_96M_SHIFT 0 | ||
444 | #define OMAP3430_DIV_96M_MASK (0x1f << 0) | ||
445 | |||
446 | /* CM_CLKSEL4_PLL */ | ||
447 | #define OMAP3430ES2_PERIPH2_DPLL_MULT_SHIFT 8 | ||
448 | #define OMAP3430ES2_PERIPH2_DPLL_MULT_MASK (0x7ff << 8) | ||
449 | #define OMAP3430ES2_PERIPH2_DPLL_DIV_SHIFT 0 | ||
450 | #define OMAP3430ES2_PERIPH2_DPLL_DIV_MASK (0x7f << 0) | ||
451 | |||
452 | /* CM_CLKSEL5_PLL */ | ||
453 | #define OMAP3430ES2_DIV_120M_SHIFT 0 | ||
454 | #define OMAP3430ES2_DIV_120M_MASK (0x1f << 0) | ||
455 | |||
456 | /* CM_CLKOUT_CTRL */ | ||
457 | #define OMAP3430_CLKOUT2_EN_SHIFT 7 | ||
458 | #define OMAP3430_CLKOUT2_EN (1 << 7) | ||
459 | #define OMAP3430_CLKOUT2_DIV_SHIFT 3 | ||
460 | #define OMAP3430_CLKOUT2_DIV_MASK (0x7 << 3) | ||
461 | #define OMAP3430_CLKOUT2SOURCE_SHIFT 0 | ||
462 | #define OMAP3430_CLKOUT2SOURCE_MASK (0x3 << 0) | ||
463 | |||
464 | /* CM_FCLKEN_DSS */ | ||
465 | #define OMAP3430_EN_TV (1 << 2) | ||
466 | #define OMAP3430_EN_TV_SHIFT 2 | ||
467 | #define OMAP3430_EN_DSS2 (1 << 1) | ||
468 | #define OMAP3430_EN_DSS2_SHIFT 1 | ||
469 | #define OMAP3430_EN_DSS1 (1 << 0) | ||
470 | #define OMAP3430_EN_DSS1_SHIFT 0 | ||
471 | |||
472 | /* CM_ICLKEN_DSS */ | ||
473 | #define OMAP3430_CM_ICLKEN_DSS_EN_DSS (1 << 0) | ||
474 | #define OMAP3430_CM_ICLKEN_DSS_EN_DSS_SHIFT 0 | ||
475 | |||
476 | /* CM_IDLEST_DSS */ | ||
477 | #define OMAP3430_ST_DSS (1 << 0) | ||
478 | |||
479 | /* CM_AUTOIDLE_DSS */ | ||
480 | #define OMAP3430_AUTO_DSS (1 << 0) | ||
481 | #define OMAP3430_AUTO_DSS_SHIFT 0 | ||
482 | |||
483 | /* CM_CLKSEL_DSS */ | ||
484 | #define OMAP3430_CLKSEL_TV_SHIFT 8 | ||
485 | #define OMAP3430_CLKSEL_TV_MASK (0x1f << 8) | ||
486 | #define OMAP3430_CLKSEL_DSS1_SHIFT 0 | ||
487 | #define OMAP3430_CLKSEL_DSS1_MASK (0x1f << 0) | ||
488 | |||
489 | /* CM_SLEEPDEP_DSS specific bits */ | ||
490 | |||
491 | /* CM_CLKSTCTRL_DSS */ | ||
492 | #define OMAP3430_CLKTRCTRL_DSS_SHIFT 0 | ||
493 | #define OMAP3430_CLKTRCTRL_DSS_MASK (0x3 << 0) | ||
494 | |||
495 | /* CM_CLKSTST_DSS */ | ||
496 | #define OMAP3430_CLKACTIVITY_DSS (1 << 0) | ||
497 | |||
498 | /* CM_FCLKEN_CAM specific bits */ | ||
499 | |||
500 | /* CM_ICLKEN_CAM specific bits */ | ||
501 | |||
502 | /* CM_IDLEST_CAM */ | ||
503 | #define OMAP3430_ST_CAM (1 << 0) | ||
504 | |||
505 | /* CM_AUTOIDLE_CAM */ | ||
506 | #define OMAP3430_AUTO_CAM (1 << 0) | ||
507 | #define OMAP3430_AUTO_CAM_SHIFT 0 | ||
508 | |||
509 | /* CM_CLKSEL_CAM */ | ||
510 | #define OMAP3430_CLKSEL_CAM_SHIFT 0 | ||
511 | #define OMAP3430_CLKSEL_CAM_MASK (0x1f << 0) | ||
512 | |||
513 | /* CM_SLEEPDEP_CAM specific bits */ | ||
514 | |||
515 | /* CM_CLKSTCTRL_CAM */ | ||
516 | #define OMAP3430_CLKTRCTRL_CAM_SHIFT 0 | ||
517 | #define OMAP3430_CLKTRCTRL_CAM_MASK (0x3 << 0) | ||
518 | |||
519 | /* CM_CLKSTST_CAM */ | ||
520 | #define OMAP3430_CLKACTIVITY_CAM (1 << 0) | ||
521 | |||
522 | /* CM_FCLKEN_PER specific bits */ | ||
523 | |||
524 | /* CM_ICLKEN_PER specific bits */ | ||
525 | |||
526 | /* CM_IDLEST_PER */ | ||
527 | #define OMAP3430_ST_WDT3 (1 << 12) | ||
528 | #define OMAP3430_ST_MCBSP4 (1 << 2) | ||
529 | #define OMAP3430_ST_MCBSP3 (1 << 1) | ||
530 | #define OMAP3430_ST_MCBSP2 (1 << 0) | ||
531 | |||
532 | /* CM_AUTOIDLE_PER */ | ||
533 | #define OMAP3430_AUTO_GPIO6 (1 << 17) | ||
534 | #define OMAP3430_AUTO_GPIO6_SHIFT 17 | ||
535 | #define OMAP3430_AUTO_GPIO5 (1 << 16) | ||
536 | #define OMAP3430_AUTO_GPIO5_SHIFT 16 | ||
537 | #define OMAP3430_AUTO_GPIO4 (1 << 15) | ||
538 | #define OMAP3430_AUTO_GPIO4_SHIFT 15 | ||
539 | #define OMAP3430_AUTO_GPIO3 (1 << 14) | ||
540 | #define OMAP3430_AUTO_GPIO3_SHIFT 14 | ||
541 | #define OMAP3430_AUTO_GPIO2 (1 << 13) | ||
542 | #define OMAP3430_AUTO_GPIO2_SHIFT 13 | ||
543 | #define OMAP3430_AUTO_WDT3 (1 << 12) | ||
544 | #define OMAP3430_AUTO_WDT3_SHIFT 12 | ||
545 | #define OMAP3430_AUTO_UART3 (1 << 11) | ||
546 | #define OMAP3430_AUTO_UART3_SHIFT 11 | ||
547 | #define OMAP3430_AUTO_GPT9 (1 << 10) | ||
548 | #define OMAP3430_AUTO_GPT9_SHIFT 10 | ||
549 | #define OMAP3430_AUTO_GPT8 (1 << 9) | ||
550 | #define OMAP3430_AUTO_GPT8_SHIFT 9 | ||
551 | #define OMAP3430_AUTO_GPT7 (1 << 8) | ||
552 | #define OMAP3430_AUTO_GPT7_SHIFT 8 | ||
553 | #define OMAP3430_AUTO_GPT6 (1 << 7) | ||
554 | #define OMAP3430_AUTO_GPT6_SHIFT 7 | ||
555 | #define OMAP3430_AUTO_GPT5 (1 << 6) | ||
556 | #define OMAP3430_AUTO_GPT5_SHIFT 6 | ||
557 | #define OMAP3430_AUTO_GPT4 (1 << 5) | ||
558 | #define OMAP3430_AUTO_GPT4_SHIFT 5 | ||
559 | #define OMAP3430_AUTO_GPT3 (1 << 4) | ||
560 | #define OMAP3430_AUTO_GPT3_SHIFT 4 | ||
561 | #define OMAP3430_AUTO_GPT2 (1 << 3) | ||
562 | #define OMAP3430_AUTO_GPT2_SHIFT 3 | ||
563 | #define OMAP3430_AUTO_MCBSP4 (1 << 2) | ||
564 | #define OMAP3430_AUTO_MCBSP4_SHIFT 2 | ||
565 | #define OMAP3430_AUTO_MCBSP3 (1 << 1) | ||
566 | #define OMAP3430_AUTO_MCBSP3_SHIFT 1 | ||
567 | #define OMAP3430_AUTO_MCBSP2 (1 << 0) | ||
568 | #define OMAP3430_AUTO_MCBSP2_SHIFT 0 | ||
569 | |||
570 | /* CM_CLKSEL_PER */ | ||
571 | #define OMAP3430_CLKSEL_GPT9_MASK (1 << 7) | ||
572 | #define OMAP3430_CLKSEL_GPT9_SHIFT 7 | ||
573 | #define OMAP3430_CLKSEL_GPT8_MASK (1 << 6) | ||
574 | #define OMAP3430_CLKSEL_GPT8_SHIFT 6 | ||
575 | #define OMAP3430_CLKSEL_GPT7_MASK (1 << 5) | ||
576 | #define OMAP3430_CLKSEL_GPT7_SHIFT 5 | ||
577 | #define OMAP3430_CLKSEL_GPT6_MASK (1 << 4) | ||
578 | #define OMAP3430_CLKSEL_GPT6_SHIFT 4 | ||
579 | #define OMAP3430_CLKSEL_GPT5_MASK (1 << 3) | ||
580 | #define OMAP3430_CLKSEL_GPT5_SHIFT 3 | ||
581 | #define OMAP3430_CLKSEL_GPT4_MASK (1 << 2) | ||
582 | #define OMAP3430_CLKSEL_GPT4_SHIFT 2 | ||
583 | #define OMAP3430_CLKSEL_GPT3_MASK (1 << 1) | ||
584 | #define OMAP3430_CLKSEL_GPT3_SHIFT 1 | ||
585 | #define OMAP3430_CLKSEL_GPT2_MASK (1 << 0) | ||
586 | #define OMAP3430_CLKSEL_GPT2_SHIFT 0 | ||
587 | |||
588 | /* CM_SLEEPDEP_PER specific bits */ | ||
589 | #define OMAP3430_CM_SLEEPDEP_PER_EN_IVA2 (1 << 2) | ||
590 | |||
591 | /* CM_CLKSTCTRL_PER */ | ||
592 | #define OMAP3430_CLKTRCTRL_PER_SHIFT 0 | ||
593 | #define OMAP3430_CLKTRCTRL_PER_MASK (0x3 << 0) | ||
594 | |||
595 | /* CM_CLKSTST_PER */ | ||
596 | #define OMAP3430_CLKACTIVITY_PER (1 << 0) | ||
597 | |||
598 | /* CM_CLKSEL1_EMU */ | ||
599 | #define OMAP3430_DIV_DPLL4_SHIFT 24 | ||
600 | #define OMAP3430_DIV_DPLL4_MASK (0x1f << 24) | ||
601 | #define OMAP3430_DIV_DPLL3_SHIFT 16 | ||
602 | #define OMAP3430_DIV_DPLL3_MASK (0x1f << 16) | ||
603 | #define OMAP3430_CLKSEL_TRACECLK_SHIFT 11 | ||
604 | #define OMAP3430_CLKSEL_TRACECLK_MASK (0x7 << 11) | ||
605 | #define OMAP3430_CLKSEL_PCLK_SHIFT 8 | ||
606 | #define OMAP3430_CLKSEL_PCLK_MASK (0x7 << 8) | ||
607 | #define OMAP3430_CLKSEL_PCLKX2_SHIFT 6 | ||
608 | #define OMAP3430_CLKSEL_PCLKX2_MASK (0x3 << 6) | ||
609 | #define OMAP3430_CLKSEL_ATCLK_SHIFT 4 | ||
610 | #define OMAP3430_CLKSEL_ATCLK_MASK (0x3 << 4) | ||
611 | #define OMAP3430_TRACE_MUX_CTRL_SHIFT 2 | ||
612 | #define OMAP3430_TRACE_MUX_CTRL_MASK (0x3 << 2) | ||
613 | #define OMAP3430_MUX_CTRL_SHIFT 0 | ||
614 | #define OMAP3430_MUX_CTRL_MASK (0x3 << 0) | ||
615 | |||
616 | /* CM_CLKSTCTRL_EMU */ | ||
617 | #define OMAP3430_CLKTRCTRL_EMU_SHIFT 0 | ||
618 | #define OMAP3430_CLKTRCTRL_EMU_MASK (0x3 << 0) | ||
619 | |||
620 | /* CM_CLKSTST_EMU */ | ||
621 | #define OMAP3430_CLKACTIVITY_EMU (1 << 0) | ||
622 | |||
623 | /* CM_CLKSEL2_EMU specific bits */ | ||
624 | #define OMAP3430_CORE_DPLL_EMU_MULT_SHIFT 8 | ||
625 | #define OMAP3430_CORE_DPLL_EMU_MULT_MASK (0x7ff << 8) | ||
626 | #define OMAP3430_CORE_DPLL_EMU_DIV_SHIFT 0 | ||
627 | #define OMAP3430_CORE_DPLL_EMU_DIV_MASK (0x7f << 0) | ||
628 | |||
629 | /* CM_CLKSEL3_EMU specific bits */ | ||
630 | #define OMAP3430_PERIPH_DPLL_EMU_MULT_SHIFT 8 | ||
631 | #define OMAP3430_PERIPH_DPLL_EMU_MULT_MASK (0x7ff << 8) | ||
632 | #define OMAP3430_PERIPH_DPLL_EMU_DIV_SHIFT 0 | ||
633 | #define OMAP3430_PERIPH_DPLL_EMU_DIV_MASK (0x7f << 0) | ||
634 | |||
635 | /* CM_POLCTRL */ | ||
636 | #define OMAP3430_CLKOUT2_POL (1 << 0) | ||
637 | |||
638 | /* CM_IDLEST_NEON */ | ||
639 | #define OMAP3430_ST_NEON (1 << 0) | ||
640 | |||
641 | /* CM_CLKSTCTRL_NEON */ | ||
642 | #define OMAP3430_CLKTRCTRL_NEON_SHIFT 0 | ||
643 | #define OMAP3430_CLKTRCTRL_NEON_MASK (0x3 << 0) | ||
644 | |||
645 | /* CM_FCLKEN_USBHOST */ | ||
646 | #define OMAP3430ES2_EN_USBHOST2_SHIFT 1 | ||
647 | #define OMAP3430ES2_EN_USBHOST2_MASK (1 << 1) | ||
648 | #define OMAP3430ES2_EN_USBHOST1_SHIFT 0 | ||
649 | #define OMAP3430ES2_EN_USBHOST1_MASK (1 << 0) | ||
650 | |||
651 | /* CM_ICLKEN_USBHOST */ | ||
652 | #define OMAP3430ES2_EN_USBHOST_SHIFT 0 | ||
653 | #define OMAP3430ES2_EN_USBHOST_MASK (1 << 0) | ||
654 | |||
655 | /* CM_IDLEST_USBHOST */ | ||
656 | |||
657 | /* CM_AUTOIDLE_USBHOST */ | ||
658 | #define OMAP3430ES2_AUTO_USBHOST_SHIFT 0 | ||
659 | #define OMAP3430ES2_AUTO_USBHOST_MASK (1 << 0) | ||
660 | |||
661 | /* CM_SLEEPDEP_USBHOST */ | ||
662 | #define OMAP3430ES2_EN_MPU_SHIFT 1 | ||
663 | #define OMAP3430ES2_EN_MPU_MASK (1 << 1) | ||
664 | #define OMAP3430ES2_EN_IVA2_SHIFT 2 | ||
665 | #define OMAP3430ES2_EN_IVA2_MASK (1 << 2) | ||
666 | |||
667 | /* CM_CLKSTCTRL_USBHOST */ | ||
668 | #define OMAP3430ES2_CLKTRCTRL_USBHOST_SHIFT 0 | ||
669 | #define OMAP3430ES2_CLKTRCTRL_USBHOST_MASK (3 << 0) | ||
670 | |||
671 | |||
672 | |||
673 | #endif | ||
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h new file mode 100644 index 000000000000..8489f3029fed --- /dev/null +++ b/arch/arm/mach-omap2/cm.h | |||
@@ -0,0 +1,124 @@ | |||
1 | #ifndef __ARCH_ASM_MACH_OMAP2_CM_H | ||
2 | #define __ARCH_ASM_MACH_OMAP2_CM_H | ||
3 | |||
4 | /* | ||
5 | * OMAP2/3 Clock Management (CM) register definitions | ||
6 | * | ||
7 | * Copyright (C) 2007-2008 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007-2008 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include "prcm-common.h" | ||
18 | |||
19 | #ifndef __ASSEMBLER__ | ||
20 | #define OMAP_CM_REGADDR(module, reg) \ | ||
21 | (void __iomem *)IO_ADDRESS(OMAP2_CM_BASE + (module) + (reg)) | ||
22 | #else | ||
23 | #define OMAP2420_CM_REGADDR(module, reg) \ | ||
24 | IO_ADDRESS(OMAP2420_CM_BASE + (module) + (reg)) | ||
25 | #define OMAP2430_CM_REGADDR(module, reg) \ | ||
26 | IO_ADDRESS(OMAP2430_CM_BASE + (module) + (reg)) | ||
27 | #define OMAP34XX_CM_REGADDR(module, reg) \ | ||
28 | IO_ADDRESS(OMAP3430_CM_BASE + (module) + (reg)) | ||
29 | #endif | ||
30 | |||
31 | /* | ||
32 | * Architecture-specific global CM registers | ||
33 | * Use cm_{read,write}_reg() with these registers. | ||
34 | * These registers appear once per CM module. | ||
35 | */ | ||
36 | |||
37 | #define OMAP3430_CM_REVISION OMAP_CM_REGADDR(OCP_MOD, 0x0000) | ||
38 | #define OMAP3430_CM_SYSCONFIG OMAP_CM_REGADDR(OCP_MOD, 0x0010) | ||
39 | #define OMAP3430_CM_POLCTRL OMAP_CM_REGADDR(OCP_MOD, 0x009c) | ||
40 | |||
41 | #define OMAP3430_CM_CLKOUT_CTRL OMAP_CM_REGADDR(OMAP3430_CCR_MOD, 0x0070) | ||
42 | |||
43 | /* | ||
44 | * Module specific CM registers from CM_BASE + domain offset | ||
45 | * Use cm_{read,write}_mod_reg() with these registers. | ||
46 | * These register offsets generally appear in more than one PRCM submodule. | ||
47 | */ | ||
48 | |||
49 | /* Common between 24xx and 34xx */ | ||
50 | |||
51 | #define CM_FCLKEN 0x0000 | ||
52 | #define CM_FCLKEN1 CM_FCLKEN | ||
53 | #define CM_CLKEN CM_FCLKEN | ||
54 | #define CM_ICLKEN 0x0010 | ||
55 | #define CM_ICLKEN1 CM_ICLKEN | ||
56 | #define CM_ICLKEN2 0x0014 | ||
57 | #define CM_ICLKEN3 0x0018 | ||
58 | #define CM_IDLEST 0x0020 | ||
59 | #define CM_IDLEST1 CM_IDLEST | ||
60 | #define CM_IDLEST2 0x0024 | ||
61 | #define CM_AUTOIDLE 0x0030 | ||
62 | #define CM_AUTOIDLE1 CM_AUTOIDLE | ||
63 | #define CM_AUTOIDLE2 0x0034 | ||
64 | #define CM_AUTOIDLE3 0x0038 | ||
65 | #define CM_CLKSEL 0x0040 | ||
66 | #define CM_CLKSEL1 CM_CLKSEL | ||
67 | #define CM_CLKSEL2 0x0044 | ||
68 | #define CM_CLKSTCTRL 0x0048 | ||
69 | |||
70 | |||
71 | /* Architecture-specific registers */ | ||
72 | |||
73 | #define OMAP24XX_CM_FCLKEN2 0x0004 | ||
74 | #define OMAP24XX_CM_ICLKEN4 0x001c | ||
75 | #define OMAP24XX_CM_AUTOIDLE4 0x003c | ||
76 | |||
77 | #define OMAP2430_CM_IDLEST3 0x0028 | ||
78 | |||
79 | #define OMAP3430_CM_CLKEN_PLL 0x0004 | ||
80 | #define OMAP3430ES2_CM_CLKEN2 0x0004 | ||
81 | #define OMAP3430ES2_CM_FCLKEN3 0x0008 | ||
82 | #define OMAP3430_CM_IDLEST_PLL CM_IDLEST2 | ||
83 | #define OMAP3430_CM_AUTOIDLE_PLL CM_AUTOIDLE2 | ||
84 | #define OMAP3430_CM_CLKSEL1 CM_CLKSEL | ||
85 | #define OMAP3430_CM_CLKSEL1_PLL CM_CLKSEL | ||
86 | #define OMAP3430_CM_CLKSEL2_PLL CM_CLKSEL2 | ||
87 | #define OMAP3430_CM_SLEEPDEP CM_CLKSEL2 | ||
88 | #define OMAP3430_CM_CLKSEL3 CM_CLKSTCTRL | ||
89 | #define OMAP3430_CM_CLKSTST 0x004c | ||
90 | #define OMAP3430ES2_CM_CLKSEL4 0x004c | ||
91 | #define OMAP3430ES2_CM_CLKSEL5 0x0050 | ||
92 | #define OMAP3430_CM_CLKSEL2_EMU 0x0050 | ||
93 | #define OMAP3430_CM_CLKSEL3_EMU 0x0054 | ||
94 | |||
95 | |||
96 | /* Clock management domain register get/set */ | ||
97 | |||
98 | #ifndef __ASSEMBLER__ | ||
99 | static inline void cm_write_mod_reg(u32 val, s16 module, s16 idx) | ||
100 | { | ||
101 | __raw_writel(val, OMAP_CM_REGADDR(module, idx)); | ||
102 | } | ||
103 | |||
104 | static inline u32 cm_read_mod_reg(s16 module, s16 idx) | ||
105 | { | ||
106 | return __raw_readl(OMAP_CM_REGADDR(module, idx)); | ||
107 | } | ||
108 | #endif | ||
109 | |||
110 | /* CM register bits shared between 24XX and 3430 */ | ||
111 | |||
112 | /* CM_CLKSEL_GFX */ | ||
113 | #define OMAP_CLKSEL_GFX_SHIFT 0 | ||
114 | #define OMAP_CLKSEL_GFX_MASK (0x7 << 0) | ||
115 | |||
116 | /* CM_ICLKEN_GFX */ | ||
117 | #define OMAP_EN_GFX_SHIFT 0 | ||
118 | #define OMAP_EN_GFX (1 << 0) | ||
119 | |||
120 | /* CM_IDLEST_GFX */ | ||
121 | #define OMAP_ST_GFX (1 << 0) | ||
122 | |||
123 | |||
124 | #endif | ||
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c new file mode 100644 index 000000000000..a5d86a49c213 --- /dev/null +++ b/arch/arm/mach-omap2/control.c | |||
@@ -0,0 +1,74 @@ | |||
1 | /* | ||
2 | * OMAP2/3 System Control Module register access | ||
3 | * | ||
4 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
5 | * Copyright (C) 2007 Nokia Corporation | ||
6 | * | ||
7 | * Written by Paul Walmsley | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | */ | ||
13 | #undef DEBUG | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | |||
17 | #include <asm/io.h> | ||
18 | |||
19 | #include <asm/arch/control.h> | ||
20 | |||
21 | static u32 omap2_ctrl_base; | ||
22 | |||
23 | #define OMAP_CTRL_REGADDR(reg) (void __iomem *)IO_ADDRESS(omap2_ctrl_base \ | ||
24 | + (reg)) | ||
25 | |||
26 | void omap_ctrl_base_set(u32 base) | ||
27 | { | ||
28 | omap2_ctrl_base = base; | ||
29 | } | ||
30 | |||
31 | u32 omap_ctrl_base_get(void) | ||
32 | { | ||
33 | return omap2_ctrl_base; | ||
34 | } | ||
35 | |||
36 | u8 omap_ctrl_readb(u16 offset) | ||
37 | { | ||
38 | return __raw_readb(OMAP_CTRL_REGADDR(offset)); | ||
39 | } | ||
40 | |||
41 | u16 omap_ctrl_readw(u16 offset) | ||
42 | { | ||
43 | return __raw_readw(OMAP_CTRL_REGADDR(offset)); | ||
44 | } | ||
45 | |||
46 | u32 omap_ctrl_readl(u16 offset) | ||
47 | { | ||
48 | return __raw_readl(OMAP_CTRL_REGADDR(offset)); | ||
49 | } | ||
50 | |||
51 | void omap_ctrl_writeb(u8 val, u16 offset) | ||
52 | { | ||
53 | pr_debug("omap_ctrl_writeb: writing 0x%0x to 0x%0x\n", val, | ||
54 | (u32)OMAP_CTRL_REGADDR(offset)); | ||
55 | |||
56 | __raw_writeb(val, OMAP_CTRL_REGADDR(offset)); | ||
57 | } | ||
58 | |||
59 | void omap_ctrl_writew(u16 val, u16 offset) | ||
60 | { | ||
61 | pr_debug("omap_ctrl_writew: writing 0x%0x to 0x%0x\n", val, | ||
62 | (u32)OMAP_CTRL_REGADDR(offset)); | ||
63 | |||
64 | __raw_writew(val, OMAP_CTRL_REGADDR(offset)); | ||
65 | } | ||
66 | |||
67 | void omap_ctrl_writel(u32 val, u16 offset) | ||
68 | { | ||
69 | pr_debug("omap_ctrl_writel: writing 0x%0x to 0x%0x\n", val, | ||
70 | (u32)OMAP_CTRL_REGADDR(offset)); | ||
71 | |||
72 | __raw_writel(val, OMAP_CTRL_REGADDR(offset)); | ||
73 | } | ||
74 | |||
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 5a4cc2076a7d..02cede295e89 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
@@ -69,7 +69,7 @@ static void __iomem *gpmc_base = | |||
69 | static void __iomem *gpmc_cs_base = | 69 | static void __iomem *gpmc_cs_base = |
70 | (void __iomem *) IO_ADDRESS(GPMC_BASE) + GPMC_CS0; | 70 | (void __iomem *) IO_ADDRESS(GPMC_BASE) + GPMC_CS0; |
71 | 71 | ||
72 | static struct clk *gpmc_l3_clk; | 72 | static struct clk *gpmc_fck; |
73 | 73 | ||
74 | static void gpmc_write_reg(int idx, u32 val) | 74 | static void gpmc_write_reg(int idx, u32 val) |
75 | { | 75 | { |
@@ -94,11 +94,10 @@ u32 gpmc_cs_read_reg(int cs, int idx) | |||
94 | return __raw_readl(gpmc_cs_base + (cs * GPMC_CS_SIZE) + idx); | 94 | return __raw_readl(gpmc_cs_base + (cs * GPMC_CS_SIZE) + idx); |
95 | } | 95 | } |
96 | 96 | ||
97 | /* TODO: Add support for gpmc_fck to clock framework and use it */ | ||
98 | unsigned long gpmc_get_fclk_period(void) | 97 | unsigned long gpmc_get_fclk_period(void) |
99 | { | 98 | { |
100 | /* In picoseconds */ | 99 | /* In picoseconds */ |
101 | return 1000000000 / ((clk_get_rate(gpmc_l3_clk)) / 1000); | 100 | return 1000000000 / ((clk_get_rate(gpmc_fck)) / 1000); |
102 | } | 101 | } |
103 | 102 | ||
104 | unsigned int gpmc_ns_to_ticks(unsigned int time_ns) | 103 | unsigned int gpmc_ns_to_ticks(unsigned int time_ns) |
@@ -398,8 +397,11 @@ void __init gpmc_init(void) | |||
398 | { | 397 | { |
399 | u32 l; | 398 | u32 l; |
400 | 399 | ||
401 | gpmc_l3_clk = clk_get(NULL, "core_l3_ck"); | 400 | gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */ |
402 | BUG_ON(IS_ERR(gpmc_l3_clk)); | 401 | if (IS_ERR(gpmc_fck)) |
402 | WARN_ON(1); | ||
403 | else | ||
404 | clk_enable(gpmc_fck); | ||
403 | 405 | ||
404 | l = gpmc_read_reg(GPMC_REVISION); | 406 | l = gpmc_read_reg(GPMC_REVISION); |
405 | printk(KERN_INFO "GPMC revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); | 407 | printk(KERN_INFO "GPMC revision %d.%d\n", (l >> 4) & 0x0f, l & 0x0f); |
diff --git a/arch/arm/mach-omap2/memory.c b/arch/arm/mach-omap2/memory.c index 3e5d8cd4ea4f..12479081881a 100644 --- a/arch/arm/mach-omap2/memory.c +++ b/arch/arm/mach-omap2/memory.c | |||
@@ -27,11 +27,16 @@ | |||
27 | #include <asm/arch/clock.h> | 27 | #include <asm/arch/clock.h> |
28 | #include <asm/arch/sram.h> | 28 | #include <asm/arch/sram.h> |
29 | 29 | ||
30 | #include "prcm-regs.h" | 30 | #include "prm.h" |
31 | |||
31 | #include "memory.h" | 32 | #include "memory.h" |
33 | #include "sdrc.h" | ||
32 | 34 | ||
35 | unsigned long omap2_sdrc_base; | ||
36 | unsigned long omap2_sms_base; | ||
33 | 37 | ||
34 | static struct memory_timings mem_timings; | 38 | static struct memory_timings mem_timings; |
39 | static u32 curr_perf_level = CORE_CLK_SRC_DPLL_X2; | ||
35 | 40 | ||
36 | u32 omap2_memory_get_slow_dll_ctrl(void) | 41 | u32 omap2_memory_get_slow_dll_ctrl(void) |
37 | { | 42 | { |
@@ -48,12 +53,60 @@ u32 omap2_memory_get_type(void) | |||
48 | return mem_timings.m_type; | 53 | return mem_timings.m_type; |
49 | } | 54 | } |
50 | 55 | ||
56 | /* | ||
57 | * Check the DLL lock state, and return tue if running in unlock mode. | ||
58 | * This is needed to compensate for the shifted DLL value in unlock mode. | ||
59 | */ | ||
60 | u32 omap2_dll_force_needed(void) | ||
61 | { | ||
62 | /* dlla and dllb are a set */ | ||
63 | u32 dll_state = sdrc_read_reg(SDRC_DLLA_CTRL); | ||
64 | |||
65 | if ((dll_state & (1 << 2)) == (1 << 2)) | ||
66 | return 1; | ||
67 | else | ||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | /* | ||
72 | * 'level' is the value to store to CM_CLKSEL2_PLL.CORE_CLK_SRC. | ||
73 | * Practical values are CORE_CLK_SRC_DPLL (for CORE_CLK = DPLL_CLK) or | ||
74 | * CORE_CLK_SRC_DPLL_X2 (for CORE_CLK = * DPLL_CLK * 2) | ||
75 | */ | ||
76 | u32 omap2_reprogram_sdrc(u32 level, u32 force) | ||
77 | { | ||
78 | u32 dll_ctrl, m_type; | ||
79 | u32 prev = curr_perf_level; | ||
80 | unsigned long flags; | ||
81 | |||
82 | if ((curr_perf_level == level) && !force) | ||
83 | return prev; | ||
84 | |||
85 | if (level == CORE_CLK_SRC_DPLL) { | ||
86 | dll_ctrl = omap2_memory_get_slow_dll_ctrl(); | ||
87 | } else if (level == CORE_CLK_SRC_DPLL_X2) { | ||
88 | dll_ctrl = omap2_memory_get_fast_dll_ctrl(); | ||
89 | } else { | ||
90 | return prev; | ||
91 | } | ||
92 | |||
93 | m_type = omap2_memory_get_type(); | ||
94 | |||
95 | local_irq_save(flags); | ||
96 | __raw_writel(0xffff, OMAP24XX_PRCM_VOLTSETUP); | ||
97 | omap2_sram_reprogram_sdrc(level, dll_ctrl, m_type); | ||
98 | curr_perf_level = level; | ||
99 | local_irq_restore(flags); | ||
100 | |||
101 | return prev; | ||
102 | } | ||
103 | |||
51 | void omap2_init_memory_params(u32 force_lock_to_unlock_mode) | 104 | void omap2_init_memory_params(u32 force_lock_to_unlock_mode) |
52 | { | 105 | { |
53 | unsigned long dll_cnt; | 106 | unsigned long dll_cnt; |
54 | u32 fast_dll = 0; | 107 | u32 fast_dll = 0; |
55 | 108 | ||
56 | mem_timings.m_type = !((SDRC_MR_0 & 0x3) == 0x1); /* DDR = 1, SDR = 0 */ | 109 | mem_timings.m_type = !((sdrc_read_reg(SDRC_MR_0) & 0x3) == 0x1); /* DDR = 1, SDR = 0 */ |
57 | 110 | ||
58 | /* 2422 es2.05 and beyond has a single SIP DDR instead of 2 like others. | 111 | /* 2422 es2.05 and beyond has a single SIP DDR instead of 2 like others. |
59 | * In the case of 2422, its ok to use CS1 instead of CS0. | 112 | * In the case of 2422, its ok to use CS1 instead of CS0. |
@@ -73,11 +126,11 @@ void omap2_init_memory_params(u32 force_lock_to_unlock_mode) | |||
73 | mem_timings.dll_mode = M_LOCK; | 126 | mem_timings.dll_mode = M_LOCK; |
74 | 127 | ||
75 | if (mem_timings.base_cs == 0) { | 128 | if (mem_timings.base_cs == 0) { |
76 | fast_dll = SDRC_DLLA_CTRL; | 129 | fast_dll = sdrc_read_reg(SDRC_DLLA_CTRL); |
77 | dll_cnt = SDRC_DLLA_STATUS & 0xff00; | 130 | dll_cnt = sdrc_read_reg(SDRC_DLLA_STATUS) & 0xff00; |
78 | } else { | 131 | } else { |
79 | fast_dll = SDRC_DLLB_CTRL; | 132 | fast_dll = sdrc_read_reg(SDRC_DLLB_CTRL); |
80 | dll_cnt = SDRC_DLLB_STATUS & 0xff00; | 133 | dll_cnt = sdrc_read_reg(SDRC_DLLB_STATUS) & 0xff00; |
81 | } | 134 | } |
82 | if (force_lock_to_unlock_mode) { | 135 | if (force_lock_to_unlock_mode) { |
83 | fast_dll &= ~0xff00; | 136 | fast_dll &= ~0xff00; |
@@ -106,14 +159,13 @@ void __init omap2_init_memory(void) | |||
106 | { | 159 | { |
107 | u32 l; | 160 | u32 l; |
108 | 161 | ||
109 | l = SMS_SYSCONFIG; | 162 | l = sms_read_reg(SMS_SYSCONFIG); |
110 | l &= ~(0x3 << 3); | 163 | l &= ~(0x3 << 3); |
111 | l |= (0x2 << 3); | 164 | l |= (0x2 << 3); |
112 | SMS_SYSCONFIG = l; | 165 | sms_write_reg(l, SMS_SYSCONFIG); |
113 | 166 | ||
114 | l = SDRC_SYSCONFIG; | 167 | l = sdrc_read_reg(SDRC_SYSCONFIG); |
115 | l &= ~(0x3 << 3); | 168 | l &= ~(0x3 << 3); |
116 | l |= (0x2 << 3); | 169 | l |= (0x2 << 3); |
117 | SDRC_SYSCONFIG = l; | 170 | sdrc_write_reg(l, SDRC_SYSCONFIG); |
118 | |||
119 | } | 171 | } |
diff --git a/arch/arm/mach-omap2/memory.h b/arch/arm/mach-omap2/memory.h index d212eea83a05..9a280b50a893 100644 --- a/arch/arm/mach-omap2/memory.h +++ b/arch/arm/mach-omap2/memory.h | |||
@@ -32,3 +32,5 @@ extern void omap2_init_memory_params(u32 force_lock_to_unlock_mode); | |||
32 | extern u32 omap2_memory_get_slow_dll_ctrl(void); | 32 | extern u32 omap2_memory_get_slow_dll_ctrl(void); |
33 | extern u32 omap2_memory_get_fast_dll_ctrl(void); | 33 | extern u32 omap2_memory_get_fast_dll_ctrl(void); |
34 | extern u32 omap2_memory_get_type(void); | 34 | extern u32 omap2_memory_get_type(void); |
35 | u32 omap2_dll_force_needed(void); | ||
36 | u32 omap2_reprogram_sdrc(u32 level, u32 force); | ||
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 05750975d746..930770012a75 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -1,11 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-omap2/mux.c | 2 | * linux/arch/arm/mach-omap2/mux.c |
3 | * | 3 | * |
4 | * OMAP1 pin multiplexing configurations | 4 | * OMAP2 pin multiplexing configurations |
5 | * | 5 | * |
6 | * Copyright (C) 2003 - 2005 Nokia Corporation | 6 | * Copyright (C) 2004 - 2008 Texas Instruments Inc. |
7 | * Copyright (C) 2003 - 2008 Nokia Corporation | ||
7 | * | 8 | * |
8 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | 9 | * Written by Tony Lindgren |
9 | * | 10 | * |
10 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
11 | * it under the terms of the GNU General Public License as published by | 12 | * it under the terms of the GNU General Public License as published by |
@@ -28,13 +29,17 @@ | |||
28 | #include <asm/io.h> | 29 | #include <asm/io.h> |
29 | #include <linux/spinlock.h> | 30 | #include <linux/spinlock.h> |
30 | 31 | ||
32 | #include <asm/arch/control.h> | ||
31 | #include <asm/arch/mux.h> | 33 | #include <asm/arch/mux.h> |
32 | 34 | ||
33 | #ifdef CONFIG_OMAP_MUX | 35 | #ifdef CONFIG_OMAP_MUX |
34 | 36 | ||
37 | static struct omap_mux_cfg arch_mux_cfg; | ||
38 | |||
35 | /* NOTE: See mux.h for the enumeration */ | 39 | /* NOTE: See mux.h for the enumeration */ |
36 | 40 | ||
37 | struct pin_config __initdata_or_module omap24xx_pins[] = { | 41 | #ifdef CONFIG_ARCH_OMAP24XX |
42 | static struct pin_config __initdata_or_module omap24xx_pins[] = { | ||
38 | /* | 43 | /* |
39 | * description mux mux pull pull debug | 44 | * description mux mux pull pull debug |
40 | * offset mode ena type | 45 | * offset mode ena type |
@@ -77,7 +82,12 @@ MUX_CFG_24XX("AA12_242X_GPIO17", 0x0e9, 3, 0, 0, 1) | |||
77 | MUX_CFG_24XX("AA8_242X_GPIO58", 0x0ea, 3, 0, 0, 1) | 82 | MUX_CFG_24XX("AA8_242X_GPIO58", 0x0ea, 3, 0, 0, 1) |
78 | MUX_CFG_24XX("Y20_24XX_GPIO60", 0x12c, 3, 0, 0, 1) | 83 | MUX_CFG_24XX("Y20_24XX_GPIO60", 0x12c, 3, 0, 0, 1) |
79 | MUX_CFG_24XX("W4__24XX_GPIO74", 0x0f2, 3, 0, 0, 1) | 84 | MUX_CFG_24XX("W4__24XX_GPIO74", 0x0f2, 3, 0, 0, 1) |
85 | MUX_CFG_24XX("N15_24XX_GPIO85", 0x103, 3, 0, 0, 1) | ||
80 | MUX_CFG_24XX("M15_24XX_GPIO92", 0x10a, 3, 0, 0, 1) | 86 | MUX_CFG_24XX("M15_24XX_GPIO92", 0x10a, 3, 0, 0, 1) |
87 | MUX_CFG_24XX("P20_24XX_GPIO93", 0x10b, 3, 0, 0, 1) | ||
88 | MUX_CFG_24XX("P18_24XX_GPIO95", 0x10d, 3, 0, 0, 1) | ||
89 | MUX_CFG_24XX("M18_24XX_GPIO96", 0x10e, 3, 0, 0, 1) | ||
90 | MUX_CFG_24XX("L14_24XX_GPIO97", 0x10f, 3, 0, 0, 1) | ||
81 | MUX_CFG_24XX("J15_24XX_GPIO99", 0x113, 3, 1, 1, 1) | 91 | MUX_CFG_24XX("J15_24XX_GPIO99", 0x113, 3, 1, 1, 1) |
82 | MUX_CFG_24XX("V14_24XX_GPIO117", 0x128, 3, 1, 0, 1) | 92 | MUX_CFG_24XX("V14_24XX_GPIO117", 0x128, 3, 1, 0, 1) |
83 | MUX_CFG_24XX("P14_24XX_GPIO125", 0x140, 3, 1, 1, 1) | 93 | MUX_CFG_24XX("P14_24XX_GPIO125", 0x140, 3, 1, 1, 1) |
@@ -102,9 +112,6 @@ MUX_CFG_24XX("G4_242X_DMAREQ3", 0x073, 2, 0, 0, 1) | |||
102 | MUX_CFG_24XX("D3_242X_DMAREQ4", 0x072, 2, 0, 0, 1) | 112 | MUX_CFG_24XX("D3_242X_DMAREQ4", 0x072, 2, 0, 0, 1) |
103 | MUX_CFG_24XX("E3_242X_DMAREQ5", 0x071, 2, 0, 0, 1) | 113 | MUX_CFG_24XX("E3_242X_DMAREQ5", 0x071, 2, 0, 0, 1) |
104 | 114 | ||
105 | /* TSC IRQ */ | ||
106 | MUX_CFG_24XX("P20_24XX_TSC_IRQ", 0x108, 0, 0, 0, 1) | ||
107 | |||
108 | /* UART3 */ | 115 | /* UART3 */ |
109 | MUX_CFG_24XX("K15_24XX_UART3_TX", 0x118, 0, 0, 0, 1) | 116 | MUX_CFG_24XX("K15_24XX_UART3_TX", 0x118, 0, 0, 0, 1) |
110 | MUX_CFG_24XX("K14_24XX_UART3_RX", 0x119, 0, 0, 0, 1) | 117 | MUX_CFG_24XX("K14_24XX_UART3_RX", 0x119, 0, 0, 0, 1) |
@@ -167,12 +174,108 @@ MUX_CFG_24XX("B3__24XX_KBR5", 0x30, 3, 1, 1, 1) | |||
167 | MUX_CFG_24XX("AA4_24XX_KBC2", 0xe7, 3, 0, 0, 1) | 174 | MUX_CFG_24XX("AA4_24XX_KBC2", 0xe7, 3, 0, 0, 1) |
168 | MUX_CFG_24XX("B13_24XX_KBC6", 0x110, 3, 0, 0, 1) | 175 | MUX_CFG_24XX("B13_24XX_KBC6", 0x110, 3, 0, 0, 1) |
169 | 176 | ||
177 | /* 2430 USB */ | ||
178 | MUX_CFG_24XX("AD9_2430_USB0_PUEN", 0x133, 4, 0, 0, 1) | ||
179 | MUX_CFG_24XX("Y11_2430_USB0_VP", 0x134, 4, 0, 0, 1) | ||
180 | MUX_CFG_24XX("AD7_2430_USB0_VM", 0x135, 4, 0, 0, 1) | ||
181 | MUX_CFG_24XX("AE7_2430_USB0_RCV", 0x136, 4, 0, 0, 1) | ||
182 | MUX_CFG_24XX("AD4_2430_USB0_TXEN", 0x137, 4, 0, 0, 1) | ||
183 | MUX_CFG_24XX("AF9_2430_USB0_SE0", 0x138, 4, 0, 0, 1) | ||
184 | MUX_CFG_24XX("AE6_2430_USB0_DAT", 0x139, 4, 0, 0, 1) | ||
185 | MUX_CFG_24XX("AD24_2430_USB1_SE0", 0x107, 2, 0, 0, 1) | ||
186 | MUX_CFG_24XX("AB24_2430_USB1_RCV", 0x108, 2, 0, 0, 1) | ||
187 | MUX_CFG_24XX("Y25_2430_USB1_TXEN", 0x109, 2, 0, 0, 1) | ||
188 | MUX_CFG_24XX("AA26_2430_USB1_DAT", 0x10A, 2, 0, 0, 1) | ||
189 | |||
190 | /* 2430 HS-USB */ | ||
191 | MUX_CFG_24XX("AD9_2430_USB0HS_DATA3", 0x133, 0, 0, 0, 1) | ||
192 | MUX_CFG_24XX("Y11_2430_USB0HS_DATA4", 0x134, 0, 0, 0, 1) | ||
193 | MUX_CFG_24XX("AD7_2430_USB0HS_DATA5", 0x135, 0, 0, 0, 1) | ||
194 | MUX_CFG_24XX("AE7_2430_USB0HS_DATA6", 0x136, 0, 0, 0, 1) | ||
195 | MUX_CFG_24XX("AD4_2430_USB0HS_DATA2", 0x137, 0, 0, 0, 1) | ||
196 | MUX_CFG_24XX("AF9_2430_USB0HS_DATA0", 0x138, 0, 0, 0, 1) | ||
197 | MUX_CFG_24XX("AE6_2430_USB0HS_DATA1", 0x139, 0, 0, 0, 1) | ||
198 | MUX_CFG_24XX("AE8_2430_USB0HS_CLK", 0x13A, 0, 0, 0, 1) | ||
199 | MUX_CFG_24XX("AD8_2430_USB0HS_DIR", 0x13B, 0, 0, 0, 1) | ||
200 | MUX_CFG_24XX("AE5_2430_USB0HS_STP", 0x13c, 0, 1, 1, 1) | ||
201 | MUX_CFG_24XX("AE9_2430_USB0HS_NXT", 0x13D, 0, 0, 0, 1) | ||
202 | MUX_CFG_24XX("AC7_2430_USB0HS_DATA7", 0x13E, 0, 0, 0, 1) | ||
203 | |||
204 | /* 2430 McBSP */ | ||
205 | MUX_CFG_24XX("AC10_2430_MCBSP2_FSX", 0x012E, 1, 0, 0, 1) | ||
206 | MUX_CFG_24XX("AD16_2430_MCBSP2_CLX", 0x012F, 1, 0, 0, 1) | ||
207 | MUX_CFG_24XX("AE13_2430_MCBSP2_DX", 0x0130, 1, 0, 0, 1) | ||
208 | MUX_CFG_24XX("AD13_2430_MCBSP2_DR", 0x0131, 1, 0, 0, 1) | ||
209 | MUX_CFG_24XX("AC10_2430_MCBSP2_FSX_OFF",0x012E, 0, 0, 0, 1) | ||
210 | MUX_CFG_24XX("AD16_2430_MCBSP2_CLX_OFF",0x012F, 0, 0, 0, 1) | ||
211 | MUX_CFG_24XX("AE13_2430_MCBSP2_DX_OFF", 0x0130, 0, 0, 0, 1) | ||
212 | MUX_CFG_24XX("AD13_2430_MCBSP2_DR_OFF", 0x0131, 0, 0, 0, 1) | ||
170 | }; | 213 | }; |
171 | 214 | ||
172 | int __init omap2_mux_init(void) | 215 | #define OMAP24XX_PINS_SZ ARRAY_SIZE(omap24xx_pins) |
216 | |||
217 | #else | ||
218 | #define omap24xx_pins NULL | ||
219 | #define OMAP24XX_PINS_SZ 0 | ||
220 | #endif /* CONFIG_ARCH_OMAP24XX */ | ||
221 | |||
222 | #define OMAP24XX_PULL_ENA (1 << 3) | ||
223 | #define OMAP24XX_PULL_UP (1 << 4) | ||
224 | |||
225 | #if defined(CONFIG_OMAP_MUX_DEBUG) || defined(CONFIG_OMAP_MUX_WARNINGS) | ||
226 | void __init_or_module omap2_cfg_debug(const struct pin_config *cfg, u8 reg) | ||
173 | { | 227 | { |
174 | omap_mux_register(omap24xx_pins, ARRAY_SIZE(omap24xx_pins)); | 228 | u16 orig; |
229 | u8 warn = 0, debug = 0; | ||
230 | |||
231 | orig = omap_ctrl_readb(cfg->mux_reg); | ||
232 | |||
233 | #ifdef CONFIG_OMAP_MUX_DEBUG | ||
234 | debug = cfg->debug; | ||
235 | #endif | ||
236 | warn = (orig != reg); | ||
237 | if (debug || warn) | ||
238 | printk(KERN_WARNING | ||
239 | "MUX: setup %s (0x%08x): 0x%02x -> 0x%02x\n", | ||
240 | cfg->name, omap_ctrl_base_get() + cfg->mux_reg, | ||
241 | orig, reg); | ||
242 | } | ||
243 | #else | ||
244 | #define omap2_cfg_debug(x, y) do {} while (0) | ||
245 | #endif | ||
246 | |||
247 | #ifdef CONFIG_ARCH_OMAP24XX | ||
248 | int __init_or_module omap24xx_cfg_reg(const struct pin_config *cfg) | ||
249 | { | ||
250 | static DEFINE_SPINLOCK(mux_spin_lock); | ||
251 | unsigned long flags; | ||
252 | u8 reg = 0; | ||
253 | |||
254 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
255 | reg |= cfg->mask & 0x7; | ||
256 | if (cfg->pull_val) | ||
257 | reg |= OMAP24XX_PULL_ENA; | ||
258 | if (cfg->pu_pd_val) | ||
259 | reg |= OMAP24XX_PULL_UP; | ||
260 | omap2_cfg_debug(cfg, reg); | ||
261 | omap_ctrl_writeb(reg, cfg->mux_reg); | ||
262 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
263 | |||
175 | return 0; | 264 | return 0; |
176 | } | 265 | } |
266 | #else | ||
267 | #define omap24xx_cfg_reg 0 | ||
268 | #endif | ||
269 | |||
270 | int __init omap2_mux_init(void) | ||
271 | { | ||
272 | if (cpu_is_omap24xx()) { | ||
273 | arch_mux_cfg.pins = omap24xx_pins; | ||
274 | arch_mux_cfg.size = OMAP24XX_PINS_SZ; | ||
275 | arch_mux_cfg.cfg_reg = omap24xx_cfg_reg; | ||
276 | } | ||
277 | |||
278 | return omap_mux_register(&arch_mux_cfg); | ||
279 | } | ||
177 | 280 | ||
178 | #endif | 281 | #endif |
diff --git a/arch/arm/mach-omap2/pm-domain.c b/arch/arm/mach-omap2/pm-domain.c deleted file mode 100644 index 2494091a078b..000000000000 --- a/arch/arm/mach-omap2/pm-domain.c +++ /dev/null | |||
@@ -1,299 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-omap2/pm-domain.c | ||
3 | * | ||
4 | * Power domain functions for OMAP2 | ||
5 | * | ||
6 | * Copyright (C) 2006 Nokia Corporation | ||
7 | * Tony Lindgren <tony@atomide.com> | ||
8 | * | ||
9 | * Some code based on earlier OMAP2 sample PM code | ||
10 | * Copyright (C) 2005 Texas Instruments, Inc. | ||
11 | * Richard Woodruff <r-woodruff2@ti.com> | ||
12 | * | ||
13 | * This program is free software; you can redistribute it and/or modify | ||
14 | * it under the terms of the GNU General Public License version 2 as | ||
15 | * published by the Free Software Foundation. | ||
16 | */ | ||
17 | |||
18 | #include <linux/module.h> | ||
19 | #include <linux/init.h> | ||
20 | #include <linux/clk.h> | ||
21 | |||
22 | #include <asm/io.h> | ||
23 | |||
24 | #include "prcm-regs.h" | ||
25 | |||
26 | /* Power domain offsets */ | ||
27 | #define PM_MPU_OFFSET 0x100 | ||
28 | #define PM_CORE_OFFSET 0x200 | ||
29 | #define PM_GFX_OFFSET 0x300 | ||
30 | #define PM_WKUP_OFFSET 0x400 /* Autoidle only */ | ||
31 | #define PM_PLL_OFFSET 0x500 /* Autoidle only */ | ||
32 | #define PM_DSP_OFFSET 0x800 | ||
33 | #define PM_MDM_OFFSET 0xc00 | ||
34 | |||
35 | /* Power domain wake-up dependency control register */ | ||
36 | #define PM_WKDEP_OFFSET 0xc8 | ||
37 | #define EN_MDM (1 << 5) | ||
38 | #define EN_WKUP (1 << 4) | ||
39 | #define EN_GFX (1 << 3) | ||
40 | #define EN_DSP (1 << 2) | ||
41 | #define EN_MPU (1 << 1) | ||
42 | #define EN_CORE (1 << 0) | ||
43 | |||
44 | /* Core power domain state transition control register */ | ||
45 | #define PM_PWSTCTRL_OFFSET 0xe0 | ||
46 | #define FORCESTATE (1 << 18) /* Only for DSP & GFX */ | ||
47 | #define MEM4RETSTATE (1 << 6) | ||
48 | #define MEM3RETSTATE (1 << 5) | ||
49 | #define MEM2RETSTATE (1 << 4) | ||
50 | #define MEM1RETSTATE (1 << 3) | ||
51 | #define LOGICRETSTATE (1 << 2) /* Logic is retained */ | ||
52 | #define POWERSTATE_OFF 0x3 | ||
53 | #define POWERSTATE_RETENTION 0x1 | ||
54 | #define POWERSTATE_ON 0x0 | ||
55 | |||
56 | /* Power domain state register */ | ||
57 | #define PM_PWSTST_OFFSET 0xe4 | ||
58 | |||
59 | /* Hardware supervised state transition control register */ | ||
60 | #define CM_CLKSTCTRL_OFFSET 0x48 | ||
61 | #define AUTOSTAT_MPU (1 << 0) /* MPU */ | ||
62 | #define AUTOSTAT_DSS (1 << 2) /* Core */ | ||
63 | #define AUTOSTAT_L4 (1 << 1) /* Core */ | ||
64 | #define AUTOSTAT_L3 (1 << 0) /* Core */ | ||
65 | #define AUTOSTAT_GFX (1 << 0) /* GFX */ | ||
66 | #define AUTOSTAT_IVA (1 << 8) /* 2420 IVA in DSP domain */ | ||
67 | #define AUTOSTAT_DSP (1 << 0) /* DSP */ | ||
68 | #define AUTOSTAT_MDM (1 << 0) /* MDM */ | ||
69 | |||
70 | /* Automatic control of interface clock idling */ | ||
71 | #define CM_AUTOIDLE1_OFFSET 0x30 | ||
72 | #define CM_AUTOIDLE2_OFFSET 0x34 /* Core only */ | ||
73 | #define CM_AUTOIDLE3_OFFSET 0x38 /* Core only */ | ||
74 | #define CM_AUTOIDLE4_OFFSET 0x3c /* Core only */ | ||
75 | #define AUTO_54M(x) (((x) & 0x3) << 6) | ||
76 | #define AUTO_96M(x) (((x) & 0x3) << 2) | ||
77 | #define AUTO_DPLL(x) (((x) & 0x3) << 0) | ||
78 | #define AUTO_STOPPED 0x3 | ||
79 | #define AUTO_BYPASS_FAST 0x2 /* DPLL only */ | ||
80 | #define AUTO_BYPASS_LOW_POWER 0x1 /* DPLL only */ | ||
81 | #define AUTO_DISABLED 0x0 | ||
82 | |||
83 | /* Voltage control PRCM_VOLTCTRL bits */ | ||
84 | #define AUTO_EXTVOLT (1 << 15) | ||
85 | #define FORCE_EXTVOLT (1 << 14) | ||
86 | #define SETOFF_LEVEL(x) (((x) & 0x3) << 12) | ||
87 | #define MEMRETCTRL (1 << 8) | ||
88 | #define SETRET_LEVEL(x) (((x) & 0x3) << 6) | ||
89 | #define VOLT_LEVEL(x) (((x) & 0x3) << 0) | ||
90 | |||
91 | #define OMAP24XX_PRCM_VBASE IO_ADDRESS(OMAP24XX_PRCM_BASE) | ||
92 | #define prcm_readl(r) __raw_readl(OMAP24XX_PRCM_VBASE + (r)) | ||
93 | #define prcm_writel(v, r) __raw_writel((v), OMAP24XX_PRCM_VBASE + (r)) | ||
94 | |||
95 | static u32 pmdomain_get_wakeup_dependencies(int domain_offset) | ||
96 | { | ||
97 | return prcm_readl(domain_offset + PM_WKDEP_OFFSET); | ||
98 | } | ||
99 | |||
100 | static void pmdomain_set_wakeup_dependencies(u32 state, int domain_offset) | ||
101 | { | ||
102 | prcm_writel(state, domain_offset + PM_WKDEP_OFFSET); | ||
103 | } | ||
104 | |||
105 | static u32 pmdomain_get_powerstate(int domain_offset) | ||
106 | { | ||
107 | return prcm_readl(domain_offset + PM_PWSTCTRL_OFFSET); | ||
108 | } | ||
109 | |||
110 | static void pmdomain_set_powerstate(u32 state, int domain_offset) | ||
111 | { | ||
112 | prcm_writel(state, domain_offset + PM_PWSTCTRL_OFFSET); | ||
113 | } | ||
114 | |||
115 | static u32 pmdomain_get_clock_autocontrol(int domain_offset) | ||
116 | { | ||
117 | return prcm_readl(domain_offset + CM_CLKSTCTRL_OFFSET); | ||
118 | } | ||
119 | |||
120 | static void pmdomain_set_clock_autocontrol(u32 state, int domain_offset) | ||
121 | { | ||
122 | prcm_writel(state, domain_offset + CM_CLKSTCTRL_OFFSET); | ||
123 | } | ||
124 | |||
125 | static u32 pmdomain_get_clock_autoidle1(int domain_offset) | ||
126 | { | ||
127 | return prcm_readl(domain_offset + CM_AUTOIDLE1_OFFSET); | ||
128 | } | ||
129 | |||
130 | /* Core domain only */ | ||
131 | static u32 pmdomain_get_clock_autoidle2(int domain_offset) | ||
132 | { | ||
133 | return prcm_readl(domain_offset + CM_AUTOIDLE2_OFFSET); | ||
134 | } | ||
135 | |||
136 | /* Core domain only */ | ||
137 | static u32 pmdomain_get_clock_autoidle3(int domain_offset) | ||
138 | { | ||
139 | return prcm_readl(domain_offset + CM_AUTOIDLE3_OFFSET); | ||
140 | } | ||
141 | |||
142 | /* Core domain only */ | ||
143 | static u32 pmdomain_get_clock_autoidle4(int domain_offset) | ||
144 | { | ||
145 | return prcm_readl(domain_offset + CM_AUTOIDLE4_OFFSET); | ||
146 | } | ||
147 | |||
148 | static void pmdomain_set_clock_autoidle1(u32 state, int domain_offset) | ||
149 | { | ||
150 | prcm_writel(state, CM_AUTOIDLE1_OFFSET + domain_offset); | ||
151 | } | ||
152 | |||
153 | /* Core domain only */ | ||
154 | static void pmdomain_set_clock_autoidle2(u32 state, int domain_offset) | ||
155 | { | ||
156 | prcm_writel(state, CM_AUTOIDLE2_OFFSET + domain_offset); | ||
157 | } | ||
158 | |||
159 | /* Core domain only */ | ||
160 | static void pmdomain_set_clock_autoidle3(u32 state, int domain_offset) | ||
161 | { | ||
162 | prcm_writel(state, CM_AUTOIDLE3_OFFSET + domain_offset); | ||
163 | } | ||
164 | |||
165 | /* Core domain only */ | ||
166 | static void pmdomain_set_clock_autoidle4(u32 state, int domain_offset) | ||
167 | { | ||
168 | prcm_writel(state, CM_AUTOIDLE4_OFFSET + domain_offset); | ||
169 | } | ||
170 | |||
171 | /* | ||
172 | * Configures power management domains to idle clocks automatically. | ||
173 | */ | ||
174 | void pmdomain_set_autoidle(void) | ||
175 | { | ||
176 | u32 val; | ||
177 | |||
178 | /* Set PLL auto stop for 54M, 96M & DPLL */ | ||
179 | pmdomain_set_clock_autoidle1(AUTO_54M(AUTO_STOPPED) | | ||
180 | AUTO_96M(AUTO_STOPPED) | | ||
181 | AUTO_DPLL(AUTO_STOPPED), PM_PLL_OFFSET); | ||
182 | |||
183 | /* External clock input control | ||
184 | * REVISIT: Should this be in clock framework? | ||
185 | */ | ||
186 | PRCM_CLKSRC_CTRL |= (0x3 << 3); | ||
187 | |||
188 | /* Configure number of 32KHz clock cycles for sys_clk */ | ||
189 | PRCM_CLKSSETUP = 0x00ff; | ||
190 | |||
191 | /* Configure automatic voltage transition */ | ||
192 | PRCM_VOLTSETUP = 0; | ||
193 | val = PRCM_VOLTCTRL; | ||
194 | val &= ~(SETOFF_LEVEL(0x3) | VOLT_LEVEL(0x3)); | ||
195 | val |= SETOFF_LEVEL(1) | VOLT_LEVEL(1) | AUTO_EXTVOLT; | ||
196 | PRCM_VOLTCTRL = val; | ||
197 | |||
198 | /* Disable emulation tools functional clock */ | ||
199 | PRCM_CLKEMUL_CTRL = 0x0; | ||
200 | |||
201 | /* Set core memory retention state */ | ||
202 | val = pmdomain_get_powerstate(PM_CORE_OFFSET); | ||
203 | if (cpu_is_omap2420()) { | ||
204 | val &= ~(0x7 << 3); | ||
205 | val |= (MEM3RETSTATE | MEM2RETSTATE | MEM1RETSTATE); | ||
206 | } else { | ||
207 | val &= ~(0xf << 3); | ||
208 | val |= (MEM4RETSTATE | MEM3RETSTATE | MEM2RETSTATE | | ||
209 | MEM1RETSTATE); | ||
210 | } | ||
211 | pmdomain_set_powerstate(val, PM_CORE_OFFSET); | ||
212 | |||
213 | /* OCP interface smart idle. REVISIT: Enable autoidle bit0 ? */ | ||
214 | val = SMS_SYSCONFIG; | ||
215 | val &= ~(0x3 << 3); | ||
216 | val |= (0x2 << 3) | (1 << 0); | ||
217 | SMS_SYSCONFIG |= val; | ||
218 | |||
219 | val = SDRC_SYSCONFIG; | ||
220 | val &= ~(0x3 << 3); | ||
221 | val |= (0x2 << 3); | ||
222 | SDRC_SYSCONFIG = val; | ||
223 | |||
224 | /* Configure L3 interface for smart idle. | ||
225 | * REVISIT: Enable autoidle bit0 ? | ||
226 | */ | ||
227 | val = GPMC_SYSCONFIG; | ||
228 | val &= ~(0x3 << 3); | ||
229 | val |= (0x2 << 3) | (1 << 0); | ||
230 | GPMC_SYSCONFIG = val; | ||
231 | |||
232 | pmdomain_set_powerstate(LOGICRETSTATE | POWERSTATE_RETENTION, | ||
233 | PM_MPU_OFFSET); | ||
234 | pmdomain_set_powerstate(POWERSTATE_RETENTION, PM_CORE_OFFSET); | ||
235 | if (!cpu_is_omap2420()) | ||
236 | pmdomain_set_powerstate(POWERSTATE_RETENTION, PM_MDM_OFFSET); | ||
237 | |||
238 | /* Assume suspend function has saved the state for DSP and GFX */ | ||
239 | pmdomain_set_powerstate(FORCESTATE | POWERSTATE_OFF, PM_DSP_OFFSET); | ||
240 | pmdomain_set_powerstate(FORCESTATE | POWERSTATE_OFF, PM_GFX_OFFSET); | ||
241 | |||
242 | #if 0 | ||
243 | /* REVISIT: Internal USB needs special handling */ | ||
244 | force_standby_usb(); | ||
245 | if (cpu_is_omap2430()) | ||
246 | force_hsmmc(); | ||
247 | sdram_self_refresh_on_idle_req(1); | ||
248 | #endif | ||
249 | |||
250 | /* Enable clock auto control for all domains. | ||
251 | * Note that CORE domain includes also DSS, L4 & L3. | ||
252 | */ | ||
253 | pmdomain_set_clock_autocontrol(AUTOSTAT_MPU, PM_MPU_OFFSET); | ||
254 | pmdomain_set_clock_autocontrol(AUTOSTAT_GFX, PM_GFX_OFFSET); | ||
255 | pmdomain_set_clock_autocontrol(AUTOSTAT_DSS | AUTOSTAT_L4 | AUTOSTAT_L3, | ||
256 | PM_CORE_OFFSET); | ||
257 | if (cpu_is_omap2420()) | ||
258 | pmdomain_set_clock_autocontrol(AUTOSTAT_IVA | AUTOSTAT_DSP, | ||
259 | PM_DSP_OFFSET); | ||
260 | else { | ||
261 | pmdomain_set_clock_autocontrol(AUTOSTAT_DSP, PM_DSP_OFFSET); | ||
262 | pmdomain_set_clock_autocontrol(AUTOSTAT_MDM, PM_MDM_OFFSET); | ||
263 | } | ||
264 | |||
265 | /* Enable clock autoidle for all domains */ | ||
266 | pmdomain_set_clock_autoidle1(0x2, PM_DSP_OFFSET); | ||
267 | if (cpu_is_omap2420()) { | ||
268 | pmdomain_set_clock_autoidle1(0xfffffff9, PM_CORE_OFFSET); | ||
269 | pmdomain_set_clock_autoidle2(0x7, PM_CORE_OFFSET); | ||
270 | pmdomain_set_clock_autoidle1(0x3f, PM_WKUP_OFFSET); | ||
271 | } else { | ||
272 | pmdomain_set_clock_autoidle1(0xeafffff1, PM_CORE_OFFSET); | ||
273 | pmdomain_set_clock_autoidle2(0xfff, PM_CORE_OFFSET); | ||
274 | pmdomain_set_clock_autoidle1(0x7f, PM_WKUP_OFFSET); | ||
275 | pmdomain_set_clock_autoidle1(0x3, PM_MDM_OFFSET); | ||
276 | } | ||
277 | pmdomain_set_clock_autoidle3(0x7, PM_CORE_OFFSET); | ||
278 | pmdomain_set_clock_autoidle4(0x1f, PM_CORE_OFFSET); | ||
279 | } | ||
280 | |||
281 | /* | ||
282 | * Initializes power domains by removing wake-up dependencies and powering | ||
283 | * down DSP and GFX. Gets called from PM init. Note that DSP and IVA code | ||
284 | * must re-enable DSP and GFX when used. | ||
285 | */ | ||
286 | void __init pmdomain_init(void) | ||
287 | { | ||
288 | /* Remove all domain wakeup dependencies */ | ||
289 | pmdomain_set_wakeup_dependencies(EN_WKUP | EN_CORE, PM_MPU_OFFSET); | ||
290 | pmdomain_set_wakeup_dependencies(0, PM_DSP_OFFSET); | ||
291 | pmdomain_set_wakeup_dependencies(0, PM_GFX_OFFSET); | ||
292 | pmdomain_set_wakeup_dependencies(EN_WKUP | EN_MPU, PM_CORE_OFFSET); | ||
293 | if (cpu_is_omap2430()) | ||
294 | pmdomain_set_wakeup_dependencies(0, PM_MDM_OFFSET); | ||
295 | |||
296 | /* Power down DSP and GFX */ | ||
297 | pmdomain_set_powerstate(POWERSTATE_OFF | FORCESTATE, PM_DSP_OFFSET); | ||
298 | pmdomain_set_powerstate(POWERSTATE_OFF | FORCESTATE, PM_GFX_OFFSET); | ||
299 | } | ||
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index baf7d82b458b..aad781dcf1b1 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/sysfs.h> | 23 | #include <linux/sysfs.h> |
24 | #include <linux/module.h> | 24 | #include <linux/module.h> |
25 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
26 | #include <linux/clk.h> | ||
26 | 27 | ||
27 | #include <asm/io.h> | 28 | #include <asm/io.h> |
28 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
@@ -36,8 +37,6 @@ | |||
36 | #include <asm/arch/sram.h> | 37 | #include <asm/arch/sram.h> |
37 | #include <asm/arch/pm.h> | 38 | #include <asm/arch/pm.h> |
38 | 39 | ||
39 | #include "prcm-regs.h" | ||
40 | |||
41 | static struct clk *vclk; | 40 | static struct clk *vclk; |
42 | static void (*omap2_sram_idle)(void); | 41 | static void (*omap2_sram_idle)(void); |
43 | static void (*omap2_sram_suspend)(int dllctrl, int cpu_rev); | 42 | static void (*omap2_sram_suspend)(int dllctrl, int cpu_rev); |
@@ -78,251 +77,8 @@ static int omap2_pm_prepare(void) | |||
78 | return 0; | 77 | return 0; |
79 | } | 78 | } |
80 | 79 | ||
81 | #define INT0_WAKE_MASK (OMAP_IRQ_BIT(INT_24XX_GPIO_BANK1) | \ | ||
82 | OMAP_IRQ_BIT(INT_24XX_GPIO_BANK2) | \ | ||
83 | OMAP_IRQ_BIT(INT_24XX_GPIO_BANK3)) | ||
84 | |||
85 | #define INT1_WAKE_MASK (OMAP_IRQ_BIT(INT_24XX_GPIO_BANK4)) | ||
86 | |||
87 | #define INT2_WAKE_MASK (OMAP_IRQ_BIT(INT_24XX_UART1_IRQ) | \ | ||
88 | OMAP_IRQ_BIT(INT_24XX_UART2_IRQ) | \ | ||
89 | OMAP_IRQ_BIT(INT_24XX_UART3_IRQ)) | ||
90 | |||
91 | #define preg(reg) printk("%s\t(0x%p):\t0x%08x\n", #reg, ®, reg); | ||
92 | |||
93 | static void omap2_pm_debug(char * desc) | ||
94 | { | ||
95 | printk("%s:\n", desc); | ||
96 | |||
97 | preg(CM_CLKSTCTRL_MPU); | ||
98 | preg(CM_CLKSTCTRL_CORE); | ||
99 | preg(CM_CLKSTCTRL_GFX); | ||
100 | preg(CM_CLKSTCTRL_DSP); | ||
101 | preg(CM_CLKSTCTRL_MDM); | ||
102 | |||
103 | preg(PM_PWSTCTRL_MPU); | ||
104 | preg(PM_PWSTCTRL_CORE); | ||
105 | preg(PM_PWSTCTRL_GFX); | ||
106 | preg(PM_PWSTCTRL_DSP); | ||
107 | preg(PM_PWSTCTRL_MDM); | ||
108 | |||
109 | preg(PM_PWSTST_MPU); | ||
110 | preg(PM_PWSTST_CORE); | ||
111 | preg(PM_PWSTST_GFX); | ||
112 | preg(PM_PWSTST_DSP); | ||
113 | preg(PM_PWSTST_MDM); | ||
114 | |||
115 | preg(CM_AUTOIDLE1_CORE); | ||
116 | preg(CM_AUTOIDLE2_CORE); | ||
117 | preg(CM_AUTOIDLE3_CORE); | ||
118 | preg(CM_AUTOIDLE4_CORE); | ||
119 | preg(CM_AUTOIDLE_WKUP); | ||
120 | preg(CM_AUTOIDLE_PLL); | ||
121 | preg(CM_AUTOIDLE_DSP); | ||
122 | preg(CM_AUTOIDLE_MDM); | ||
123 | |||
124 | preg(CM_ICLKEN1_CORE); | ||
125 | preg(CM_ICLKEN2_CORE); | ||
126 | preg(CM_ICLKEN3_CORE); | ||
127 | preg(CM_ICLKEN4_CORE); | ||
128 | preg(CM_ICLKEN_GFX); | ||
129 | preg(CM_ICLKEN_WKUP); | ||
130 | preg(CM_ICLKEN_DSP); | ||
131 | preg(CM_ICLKEN_MDM); | ||
132 | |||
133 | preg(CM_IDLEST1_CORE); | ||
134 | preg(CM_IDLEST2_CORE); | ||
135 | preg(CM_IDLEST3_CORE); | ||
136 | preg(CM_IDLEST4_CORE); | ||
137 | preg(CM_IDLEST_GFX); | ||
138 | preg(CM_IDLEST_WKUP); | ||
139 | preg(CM_IDLEST_CKGEN); | ||
140 | preg(CM_IDLEST_DSP); | ||
141 | preg(CM_IDLEST_MDM); | ||
142 | |||
143 | preg(RM_RSTST_MPU); | ||
144 | preg(RM_RSTST_GFX); | ||
145 | preg(RM_RSTST_WKUP); | ||
146 | preg(RM_RSTST_DSP); | ||
147 | preg(RM_RSTST_MDM); | ||
148 | |||
149 | preg(PM_WKDEP_MPU); | ||
150 | preg(PM_WKDEP_CORE); | ||
151 | preg(PM_WKDEP_GFX); | ||
152 | preg(PM_WKDEP_DSP); | ||
153 | preg(PM_WKDEP_MDM); | ||
154 | |||
155 | preg(CM_FCLKEN_WKUP); | ||
156 | preg(CM_ICLKEN_WKUP); | ||
157 | preg(CM_IDLEST_WKUP); | ||
158 | preg(CM_AUTOIDLE_WKUP); | ||
159 | preg(CM_CLKSEL_WKUP); | ||
160 | |||
161 | preg(PM_WKEN_WKUP); | ||
162 | preg(PM_WKST_WKUP); | ||
163 | } | ||
164 | |||
165 | static inline void omap2_pm_save_registers(void) | ||
166 | { | ||
167 | /* Save interrupt registers */ | ||
168 | OMAP24XX_SAVE(INTC_MIR0); | ||
169 | OMAP24XX_SAVE(INTC_MIR1); | ||
170 | OMAP24XX_SAVE(INTC_MIR2); | ||
171 | |||
172 | /* Save power control registers */ | ||
173 | OMAP24XX_SAVE(CM_CLKSTCTRL_MPU); | ||
174 | OMAP24XX_SAVE(CM_CLKSTCTRL_CORE); | ||
175 | OMAP24XX_SAVE(CM_CLKSTCTRL_GFX); | ||
176 | OMAP24XX_SAVE(CM_CLKSTCTRL_DSP); | ||
177 | OMAP24XX_SAVE(CM_CLKSTCTRL_MDM); | ||
178 | |||
179 | /* Save power state registers */ | ||
180 | OMAP24XX_SAVE(PM_PWSTCTRL_MPU); | ||
181 | OMAP24XX_SAVE(PM_PWSTCTRL_CORE); | ||
182 | OMAP24XX_SAVE(PM_PWSTCTRL_GFX); | ||
183 | OMAP24XX_SAVE(PM_PWSTCTRL_DSP); | ||
184 | OMAP24XX_SAVE(PM_PWSTCTRL_MDM); | ||
185 | |||
186 | /* Save autoidle registers */ | ||
187 | OMAP24XX_SAVE(CM_AUTOIDLE1_CORE); | ||
188 | OMAP24XX_SAVE(CM_AUTOIDLE2_CORE); | ||
189 | OMAP24XX_SAVE(CM_AUTOIDLE3_CORE); | ||
190 | OMAP24XX_SAVE(CM_AUTOIDLE4_CORE); | ||
191 | OMAP24XX_SAVE(CM_AUTOIDLE_WKUP); | ||
192 | OMAP24XX_SAVE(CM_AUTOIDLE_PLL); | ||
193 | OMAP24XX_SAVE(CM_AUTOIDLE_DSP); | ||
194 | OMAP24XX_SAVE(CM_AUTOIDLE_MDM); | ||
195 | |||
196 | /* Save idle state registers */ | ||
197 | OMAP24XX_SAVE(CM_IDLEST1_CORE); | ||
198 | OMAP24XX_SAVE(CM_IDLEST2_CORE); | ||
199 | OMAP24XX_SAVE(CM_IDLEST3_CORE); | ||
200 | OMAP24XX_SAVE(CM_IDLEST4_CORE); | ||
201 | OMAP24XX_SAVE(CM_IDLEST_GFX); | ||
202 | OMAP24XX_SAVE(CM_IDLEST_WKUP); | ||
203 | OMAP24XX_SAVE(CM_IDLEST_CKGEN); | ||
204 | OMAP24XX_SAVE(CM_IDLEST_DSP); | ||
205 | OMAP24XX_SAVE(CM_IDLEST_MDM); | ||
206 | |||
207 | /* Save clock registers */ | ||
208 | OMAP24XX_SAVE(CM_FCLKEN1_CORE); | ||
209 | OMAP24XX_SAVE(CM_FCLKEN2_CORE); | ||
210 | OMAP24XX_SAVE(CM_ICLKEN1_CORE); | ||
211 | OMAP24XX_SAVE(CM_ICLKEN2_CORE); | ||
212 | OMAP24XX_SAVE(CM_ICLKEN3_CORE); | ||
213 | OMAP24XX_SAVE(CM_ICLKEN4_CORE); | ||
214 | } | ||
215 | |||
216 | static inline void omap2_pm_restore_registers(void) | ||
217 | { | ||
218 | /* Restore clock state registers */ | ||
219 | OMAP24XX_RESTORE(CM_CLKSTCTRL_MPU); | ||
220 | OMAP24XX_RESTORE(CM_CLKSTCTRL_CORE); | ||
221 | OMAP24XX_RESTORE(CM_CLKSTCTRL_GFX); | ||
222 | OMAP24XX_RESTORE(CM_CLKSTCTRL_DSP); | ||
223 | OMAP24XX_RESTORE(CM_CLKSTCTRL_MDM); | ||
224 | |||
225 | /* Restore power state registers */ | ||
226 | OMAP24XX_RESTORE(PM_PWSTCTRL_MPU); | ||
227 | OMAP24XX_RESTORE(PM_PWSTCTRL_CORE); | ||
228 | OMAP24XX_RESTORE(PM_PWSTCTRL_GFX); | ||
229 | OMAP24XX_RESTORE(PM_PWSTCTRL_DSP); | ||
230 | OMAP24XX_RESTORE(PM_PWSTCTRL_MDM); | ||
231 | |||
232 | /* Restore idle state registers */ | ||
233 | OMAP24XX_RESTORE(CM_IDLEST1_CORE); | ||
234 | OMAP24XX_RESTORE(CM_IDLEST2_CORE); | ||
235 | OMAP24XX_RESTORE(CM_IDLEST3_CORE); | ||
236 | OMAP24XX_RESTORE(CM_IDLEST4_CORE); | ||
237 | OMAP24XX_RESTORE(CM_IDLEST_GFX); | ||
238 | OMAP24XX_RESTORE(CM_IDLEST_WKUP); | ||
239 | OMAP24XX_RESTORE(CM_IDLEST_CKGEN); | ||
240 | OMAP24XX_RESTORE(CM_IDLEST_DSP); | ||
241 | OMAP24XX_RESTORE(CM_IDLEST_MDM); | ||
242 | |||
243 | /* Restore autoidle registers */ | ||
244 | OMAP24XX_RESTORE(CM_AUTOIDLE1_CORE); | ||
245 | OMAP24XX_RESTORE(CM_AUTOIDLE2_CORE); | ||
246 | OMAP24XX_RESTORE(CM_AUTOIDLE3_CORE); | ||
247 | OMAP24XX_RESTORE(CM_AUTOIDLE4_CORE); | ||
248 | OMAP24XX_RESTORE(CM_AUTOIDLE_WKUP); | ||
249 | OMAP24XX_RESTORE(CM_AUTOIDLE_PLL); | ||
250 | OMAP24XX_RESTORE(CM_AUTOIDLE_DSP); | ||
251 | OMAP24XX_RESTORE(CM_AUTOIDLE_MDM); | ||
252 | |||
253 | /* Restore clock registers */ | ||
254 | OMAP24XX_RESTORE(CM_FCLKEN1_CORE); | ||
255 | OMAP24XX_RESTORE(CM_FCLKEN2_CORE); | ||
256 | OMAP24XX_RESTORE(CM_ICLKEN1_CORE); | ||
257 | OMAP24XX_RESTORE(CM_ICLKEN2_CORE); | ||
258 | OMAP24XX_RESTORE(CM_ICLKEN3_CORE); | ||
259 | OMAP24XX_RESTORE(CM_ICLKEN4_CORE); | ||
260 | |||
261 | /* REVISIT: Clear interrupts here */ | ||
262 | |||
263 | /* Restore interrupt registers */ | ||
264 | OMAP24XX_RESTORE(INTC_MIR0); | ||
265 | OMAP24XX_RESTORE(INTC_MIR1); | ||
266 | OMAP24XX_RESTORE(INTC_MIR2); | ||
267 | } | ||
268 | |||
269 | static int omap2_pm_suspend(void) | 80 | static int omap2_pm_suspend(void) |
270 | { | 81 | { |
271 | int processor_type = 0; | ||
272 | |||
273 | /* REVISIT: 0x21 or 0x26? */ | ||
274 | if (cpu_is_omap2420()) | ||
275 | processor_type = 0x21; | ||
276 | |||
277 | if (!processor_type) | ||
278 | return -ENOTSUPP; | ||
279 | |||
280 | local_irq_disable(); | ||
281 | local_fiq_disable(); | ||
282 | |||
283 | omap2_pm_save_registers(); | ||
284 | |||
285 | /* Disable interrupts except for the wake events */ | ||
286 | INTC_MIR_SET0 = 0xffffffff & ~INT0_WAKE_MASK; | ||
287 | INTC_MIR_SET1 = 0xffffffff & ~INT1_WAKE_MASK; | ||
288 | INTC_MIR_SET2 = 0xffffffff & ~INT2_WAKE_MASK; | ||
289 | |||
290 | pmdomain_set_autoidle(); | ||
291 | |||
292 | /* Clear old wake-up events */ | ||
293 | PM_WKST1_CORE = 0; | ||
294 | PM_WKST2_CORE = 0; | ||
295 | PM_WKST_WKUP = 0; | ||
296 | |||
297 | /* Enable wake-up events */ | ||
298 | PM_WKEN1_CORE = (1 << 22) | (1 << 21); /* UART1 & 2 */ | ||
299 | PM_WKEN2_CORE = (1 << 2); /* UART3 */ | ||
300 | PM_WKEN_WKUP = (1 << 2) | (1 << 0); /* GPIO & GPT1 */ | ||
301 | |||
302 | /* Disable clocks except for CM_ICLKEN2_CORE. It gets disabled | ||
303 | * in the SRAM suspend code */ | ||
304 | CM_FCLKEN1_CORE = 0; | ||
305 | CM_FCLKEN2_CORE = 0; | ||
306 | CM_ICLKEN1_CORE = 0; | ||
307 | CM_ICLKEN3_CORE = 0; | ||
308 | CM_ICLKEN4_CORE = 0; | ||
309 | |||
310 | omap2_pm_debug("Status before suspend"); | ||
311 | |||
312 | /* Must wait for serial buffers to clear */ | ||
313 | mdelay(200); | ||
314 | |||
315 | /* Jump to SRAM suspend code | ||
316 | * REVISIT: When is this SDRC_DLLB_CTRL? | ||
317 | */ | ||
318 | omap2_sram_suspend(SDRC_DLLA_CTRL, processor_type); | ||
319 | |||
320 | /* Back from sleep */ | ||
321 | omap2_pm_restore_registers(); | ||
322 | |||
323 | local_fiq_enable(); | ||
324 | local_irq_enable(); | ||
325 | |||
326 | return 0; | 82 | return 0; |
327 | } | 83 | } |
328 | 84 | ||
@@ -357,30 +113,6 @@ static struct platform_suspend_ops omap_pm_ops = { | |||
357 | 113 | ||
358 | int __init omap2_pm_init(void) | 114 | int __init omap2_pm_init(void) |
359 | { | 115 | { |
360 | printk("Power Management for TI OMAP.\n"); | ||
361 | |||
362 | vclk = clk_get(NULL, "virt_prcm_set"); | ||
363 | if (IS_ERR(vclk)) { | ||
364 | printk(KERN_ERR "Could not get PM vclk\n"); | ||
365 | return -ENODEV; | ||
366 | } | ||
367 | |||
368 | /* | ||
369 | * We copy the assembler sleep/wakeup routines to SRAM. | ||
370 | * These routines need to be in SRAM as that's the only | ||
371 | * memory the MPU can see when it wakes up. | ||
372 | */ | ||
373 | omap2_sram_idle = omap_sram_push(omap24xx_idle_loop_suspend, | ||
374 | omap24xx_idle_loop_suspend_sz); | ||
375 | |||
376 | omap2_sram_suspend = omap_sram_push(omap24xx_cpu_suspend, | ||
377 | omap24xx_cpu_suspend_sz); | ||
378 | |||
379 | suspend_set_ops(&omap_pm_ops); | ||
380 | pm_idle = omap2_pm_idle; | ||
381 | |||
382 | pmdomain_init(); | ||
383 | |||
384 | return 0; | 116 | return 0; |
385 | } | 117 | } |
386 | 118 | ||
diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h new file mode 100644 index 000000000000..cacb34086e35 --- /dev/null +++ b/arch/arm/mach-omap2/prcm-common.h | |||
@@ -0,0 +1,317 @@ | |||
1 | #ifndef __ARCH_ASM_MACH_OMAP2_PRCM_COMMON_H | ||
2 | #define __ARCH_ASM_MACH_OMAP2_PRCM_COMMON_H | ||
3 | |||
4 | /* | ||
5 | * OMAP2/3 PRCM base and module definitions | ||
6 | * | ||
7 | * Copyright (C) 2007-2008 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007-2008 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | |||
18 | /* Module offsets from both CM_BASE & PRM_BASE */ | ||
19 | |||
20 | /* | ||
21 | * Offsets that are the same on 24xx and 34xx | ||
22 | * | ||
23 | * Technically, in terms of the TRM, OCP_MOD is 34xx only; PLL_MOD is | ||
24 | * CCR_MOD on 3430; and GFX_MOD only exists < 3430ES2. | ||
25 | */ | ||
26 | #define OCP_MOD 0x000 | ||
27 | #define MPU_MOD 0x100 | ||
28 | #define CORE_MOD 0x200 | ||
29 | #define GFX_MOD 0x300 | ||
30 | #define WKUP_MOD 0x400 | ||
31 | #define PLL_MOD 0x500 | ||
32 | |||
33 | |||
34 | /* Chip-specific module offsets */ | ||
35 | #define OMAP24XX_DSP_MOD 0x800 | ||
36 | |||
37 | #define OMAP2430_MDM_MOD 0xc00 | ||
38 | |||
39 | /* IVA2 module is < base on 3430 */ | ||
40 | #define OMAP3430_IVA2_MOD -0x800 | ||
41 | #define OMAP3430ES2_SGX_MOD GFX_MOD | ||
42 | #define OMAP3430_CCR_MOD PLL_MOD | ||
43 | #define OMAP3430_DSS_MOD 0x600 | ||
44 | #define OMAP3430_CAM_MOD 0x700 | ||
45 | #define OMAP3430_PER_MOD 0x800 | ||
46 | #define OMAP3430_EMU_MOD 0x900 | ||
47 | #define OMAP3430_GR_MOD 0xa00 | ||
48 | #define OMAP3430_NEON_MOD 0xb00 | ||
49 | #define OMAP3430ES2_USBHOST_MOD 0xc00 | ||
50 | |||
51 | |||
52 | /* 24XX register bits shared between CM & PRM registers */ | ||
53 | |||
54 | /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */ | ||
55 | #define OMAP2420_EN_MMC_SHIFT 26 | ||
56 | #define OMAP2420_EN_MMC (1 << 26) | ||
57 | #define OMAP24XX_EN_UART2_SHIFT 22 | ||
58 | #define OMAP24XX_EN_UART2 (1 << 22) | ||
59 | #define OMAP24XX_EN_UART1_SHIFT 21 | ||
60 | #define OMAP24XX_EN_UART1 (1 << 21) | ||
61 | #define OMAP24XX_EN_MCSPI2_SHIFT 18 | ||
62 | #define OMAP24XX_EN_MCSPI2 (1 << 18) | ||
63 | #define OMAP24XX_EN_MCSPI1_SHIFT 17 | ||
64 | #define OMAP24XX_EN_MCSPI1 (1 << 17) | ||
65 | #define OMAP24XX_EN_MCBSP2_SHIFT 16 | ||
66 | #define OMAP24XX_EN_MCBSP2 (1 << 16) | ||
67 | #define OMAP24XX_EN_MCBSP1_SHIFT 15 | ||
68 | #define OMAP24XX_EN_MCBSP1 (1 << 15) | ||
69 | #define OMAP24XX_EN_GPT12_SHIFT 14 | ||
70 | #define OMAP24XX_EN_GPT12 (1 << 14) | ||
71 | #define OMAP24XX_EN_GPT11_SHIFT 13 | ||
72 | #define OMAP24XX_EN_GPT11 (1 << 13) | ||
73 | #define OMAP24XX_EN_GPT10_SHIFT 12 | ||
74 | #define OMAP24XX_EN_GPT10 (1 << 12) | ||
75 | #define OMAP24XX_EN_GPT9_SHIFT 11 | ||
76 | #define OMAP24XX_EN_GPT9 (1 << 11) | ||
77 | #define OMAP24XX_EN_GPT8_SHIFT 10 | ||
78 | #define OMAP24XX_EN_GPT8 (1 << 10) | ||
79 | #define OMAP24XX_EN_GPT7_SHIFT 9 | ||
80 | #define OMAP24XX_EN_GPT7 (1 << 9) | ||
81 | #define OMAP24XX_EN_GPT6_SHIFT 8 | ||
82 | #define OMAP24XX_EN_GPT6 (1 << 8) | ||
83 | #define OMAP24XX_EN_GPT5_SHIFT 7 | ||
84 | #define OMAP24XX_EN_GPT5 (1 << 7) | ||
85 | #define OMAP24XX_EN_GPT4_SHIFT 6 | ||
86 | #define OMAP24XX_EN_GPT4 (1 << 6) | ||
87 | #define OMAP24XX_EN_GPT3_SHIFT 5 | ||
88 | #define OMAP24XX_EN_GPT3 (1 << 5) | ||
89 | #define OMAP24XX_EN_GPT2_SHIFT 4 | ||
90 | #define OMAP24XX_EN_GPT2 (1 << 4) | ||
91 | #define OMAP2420_EN_VLYNQ_SHIFT 3 | ||
92 | #define OMAP2420_EN_VLYNQ (1 << 3) | ||
93 | |||
94 | /* CM_FCLKEN2_CORE, CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */ | ||
95 | #define OMAP2430_EN_GPIO5_SHIFT 10 | ||
96 | #define OMAP2430_EN_GPIO5 (1 << 10) | ||
97 | #define OMAP2430_EN_MCSPI3_SHIFT 9 | ||
98 | #define OMAP2430_EN_MCSPI3 (1 << 9) | ||
99 | #define OMAP2430_EN_MMCHS2_SHIFT 8 | ||
100 | #define OMAP2430_EN_MMCHS2 (1 << 8) | ||
101 | #define OMAP2430_EN_MMCHS1_SHIFT 7 | ||
102 | #define OMAP2430_EN_MMCHS1 (1 << 7) | ||
103 | #define OMAP24XX_EN_UART3_SHIFT 2 | ||
104 | #define OMAP24XX_EN_UART3 (1 << 2) | ||
105 | #define OMAP24XX_EN_USB_SHIFT 0 | ||
106 | #define OMAP24XX_EN_USB (1 << 0) | ||
107 | |||
108 | /* CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */ | ||
109 | #define OMAP2430_EN_MDM_INTC_SHIFT 11 | ||
110 | #define OMAP2430_EN_MDM_INTC (1 << 11) | ||
111 | #define OMAP2430_EN_USBHS_SHIFT 6 | ||
112 | #define OMAP2430_EN_USBHS (1 << 6) | ||
113 | |||
114 | /* CM_IDLEST1_CORE, PM_WKST1_CORE shared bits */ | ||
115 | #define OMAP2420_ST_MMC (1 << 26) | ||
116 | #define OMAP24XX_ST_UART2 (1 << 22) | ||
117 | #define OMAP24XX_ST_UART1 (1 << 21) | ||
118 | #define OMAP24XX_ST_MCSPI2 (1 << 18) | ||
119 | #define OMAP24XX_ST_MCSPI1 (1 << 17) | ||
120 | #define OMAP24XX_ST_GPT12 (1 << 14) | ||
121 | #define OMAP24XX_ST_GPT11 (1 << 13) | ||
122 | #define OMAP24XX_ST_GPT10 (1 << 12) | ||
123 | #define OMAP24XX_ST_GPT9 (1 << 11) | ||
124 | #define OMAP24XX_ST_GPT8 (1 << 10) | ||
125 | #define OMAP24XX_ST_GPT7 (1 << 9) | ||
126 | #define OMAP24XX_ST_GPT6 (1 << 8) | ||
127 | #define OMAP24XX_ST_GPT5 (1 << 7) | ||
128 | #define OMAP24XX_ST_GPT4 (1 << 6) | ||
129 | #define OMAP24XX_ST_GPT3 (1 << 5) | ||
130 | #define OMAP24XX_ST_GPT2 (1 << 4) | ||
131 | #define OMAP2420_ST_VLYNQ (1 << 3) | ||
132 | |||
133 | /* CM_IDLEST2_CORE, PM_WKST2_CORE shared bits */ | ||
134 | #define OMAP2430_ST_MDM_INTC (1 << 11) | ||
135 | #define OMAP2430_ST_GPIO5 (1 << 10) | ||
136 | #define OMAP2430_ST_MCSPI3 (1 << 9) | ||
137 | #define OMAP2430_ST_MMCHS2 (1 << 8) | ||
138 | #define OMAP2430_ST_MMCHS1 (1 << 7) | ||
139 | #define OMAP2430_ST_USBHS (1 << 6) | ||
140 | #define OMAP24XX_ST_UART3 (1 << 2) | ||
141 | #define OMAP24XX_ST_USB (1 << 0) | ||
142 | |||
143 | /* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */ | ||
144 | #define OMAP24XX_EN_GPIOS_SHIFT 2 | ||
145 | #define OMAP24XX_EN_GPIOS (1 << 2) | ||
146 | #define OMAP24XX_EN_GPT1_SHIFT 0 | ||
147 | #define OMAP24XX_EN_GPT1 (1 << 0) | ||
148 | |||
149 | /* PM_WKST_WKUP, CM_IDLEST_WKUP shared bits */ | ||
150 | #define OMAP24XX_ST_GPIOS (1 << 2) | ||
151 | #define OMAP24XX_ST_GPT1 (1 << 0) | ||
152 | |||
153 | /* CM_IDLEST_MDM and PM_WKST_MDM shared bits */ | ||
154 | #define OMAP2430_ST_MDM (1 << 0) | ||
155 | |||
156 | |||
157 | /* 3430 register bits shared between CM & PRM registers */ | ||
158 | |||
159 | /* CM_REVISION, PRM_REVISION shared bits */ | ||
160 | #define OMAP3430_REV_SHIFT 0 | ||
161 | #define OMAP3430_REV_MASK (0xff << 0) | ||
162 | |||
163 | /* CM_SYSCONFIG, PRM_SYSCONFIG shared bits */ | ||
164 | #define OMAP3430_AUTOIDLE (1 << 0) | ||
165 | |||
166 | /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */ | ||
167 | #define OMAP3430_EN_MMC2 (1 << 25) | ||
168 | #define OMAP3430_EN_MMC2_SHIFT 25 | ||
169 | #define OMAP3430_EN_MMC1 (1 << 24) | ||
170 | #define OMAP3430_EN_MMC1_SHIFT 24 | ||
171 | #define OMAP3430_EN_MCSPI4 (1 << 21) | ||
172 | #define OMAP3430_EN_MCSPI4_SHIFT 21 | ||
173 | #define OMAP3430_EN_MCSPI3 (1 << 20) | ||
174 | #define OMAP3430_EN_MCSPI3_SHIFT 20 | ||
175 | #define OMAP3430_EN_MCSPI2 (1 << 19) | ||
176 | #define OMAP3430_EN_MCSPI2_SHIFT 19 | ||
177 | #define OMAP3430_EN_MCSPI1 (1 << 18) | ||
178 | #define OMAP3430_EN_MCSPI1_SHIFT 18 | ||
179 | #define OMAP3430_EN_I2C3 (1 << 17) | ||
180 | #define OMAP3430_EN_I2C3_SHIFT 17 | ||
181 | #define OMAP3430_EN_I2C2 (1 << 16) | ||
182 | #define OMAP3430_EN_I2C2_SHIFT 16 | ||
183 | #define OMAP3430_EN_I2C1 (1 << 15) | ||
184 | #define OMAP3430_EN_I2C1_SHIFT 15 | ||
185 | #define OMAP3430_EN_UART2 (1 << 14) | ||
186 | #define OMAP3430_EN_UART2_SHIFT 14 | ||
187 | #define OMAP3430_EN_UART1 (1 << 13) | ||
188 | #define OMAP3430_EN_UART1_SHIFT 13 | ||
189 | #define OMAP3430_EN_GPT11 (1 << 12) | ||
190 | #define OMAP3430_EN_GPT11_SHIFT 12 | ||
191 | #define OMAP3430_EN_GPT10 (1 << 11) | ||
192 | #define OMAP3430_EN_GPT10_SHIFT 11 | ||
193 | #define OMAP3430_EN_MCBSP5 (1 << 10) | ||
194 | #define OMAP3430_EN_MCBSP5_SHIFT 10 | ||
195 | #define OMAP3430_EN_MCBSP1 (1 << 9) | ||
196 | #define OMAP3430_EN_MCBSP1_SHIFT 9 | ||
197 | #define OMAP3430_EN_FSHOSTUSB (1 << 5) | ||
198 | #define OMAP3430_EN_FSHOSTUSB_SHIFT 5 | ||
199 | #define OMAP3430_EN_D2D (1 << 3) | ||
200 | #define OMAP3430_EN_D2D_SHIFT 3 | ||
201 | |||
202 | /* CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */ | ||
203 | #define OMAP3430_EN_HSOTGUSB (1 << 4) | ||
204 | #define OMAP3430_EN_HSOTGUSB_SHIFT 4 | ||
205 | |||
206 | /* PM_WKST1_CORE, CM_IDLEST1_CORE shared bits */ | ||
207 | #define OMAP3430_ST_MMC2 (1 << 25) | ||
208 | #define OMAP3430_ST_MMC1 (1 << 24) | ||
209 | #define OMAP3430_ST_MCSPI4 (1 << 21) | ||
210 | #define OMAP3430_ST_MCSPI3 (1 << 20) | ||
211 | #define OMAP3430_ST_MCSPI2 (1 << 19) | ||
212 | #define OMAP3430_ST_MCSPI1 (1 << 18) | ||
213 | #define OMAP3430_ST_I2C3 (1 << 17) | ||
214 | #define OMAP3430_ST_I2C2 (1 << 16) | ||
215 | #define OMAP3430_ST_I2C1 (1 << 15) | ||
216 | #define OMAP3430_ST_UART2 (1 << 14) | ||
217 | #define OMAP3430_ST_UART1 (1 << 13) | ||
218 | #define OMAP3430_ST_GPT11 (1 << 12) | ||
219 | #define OMAP3430_ST_GPT10 (1 << 11) | ||
220 | #define OMAP3430_ST_MCBSP5 (1 << 10) | ||
221 | #define OMAP3430_ST_MCBSP1 (1 << 9) | ||
222 | #define OMAP3430_ST_FSHOSTUSB (1 << 5) | ||
223 | #define OMAP3430_ST_HSOTGUSB (1 << 4) | ||
224 | #define OMAP3430_ST_D2D (1 << 3) | ||
225 | |||
226 | /* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */ | ||
227 | #define OMAP3430_EN_GPIO1 (1 << 3) | ||
228 | #define OMAP3430_EN_GPIO1_SHIFT 3 | ||
229 | #define OMAP3430_EN_GPT1 (1 << 0) | ||
230 | #define OMAP3430_EN_GPT1_SHIFT 0 | ||
231 | |||
232 | /* CM_FCLKEN_WKUP, PM_WKEN_WKUP shared bits */ | ||
233 | #define OMAP3430_EN_SR2 (1 << 7) | ||
234 | #define OMAP3430_EN_SR2_SHIFT 7 | ||
235 | #define OMAP3430_EN_SR1 (1 << 6) | ||
236 | #define OMAP3430_EN_SR1_SHIFT 6 | ||
237 | |||
238 | /* CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */ | ||
239 | #define OMAP3430_EN_GPT12 (1 << 1) | ||
240 | #define OMAP3430_EN_GPT12_SHIFT 1 | ||
241 | |||
242 | /* CM_IDLEST_WKUP, PM_WKST_WKUP shared bits */ | ||
243 | #define OMAP3430_ST_SR2 (1 << 7) | ||
244 | #define OMAP3430_ST_SR1 (1 << 6) | ||
245 | #define OMAP3430_ST_GPIO1 (1 << 3) | ||
246 | #define OMAP3430_ST_GPT12 (1 << 1) | ||
247 | #define OMAP3430_ST_GPT1 (1 << 0) | ||
248 | |||
249 | /* | ||
250 | * CM_SLEEPDEP_GFX, CM_SLEEPDEP_DSS, CM_SLEEPDEP_CAM, | ||
251 | * CM_SLEEPDEP_PER, PM_WKDEP_IVA2, PM_WKDEP_GFX, | ||
252 | * PM_WKDEP_DSS, PM_WKDEP_CAM, PM_WKDEP_PER, PM_WKDEP_NEON shared bits | ||
253 | */ | ||
254 | #define OMAP3430_EN_MPU (1 << 1) | ||
255 | #define OMAP3430_EN_MPU_SHIFT 1 | ||
256 | |||
257 | /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER shared bits */ | ||
258 | #define OMAP3430_EN_GPIO6 (1 << 17) | ||
259 | #define OMAP3430_EN_GPIO6_SHIFT 17 | ||
260 | #define OMAP3430_EN_GPIO5 (1 << 16) | ||
261 | #define OMAP3430_EN_GPIO5_SHIFT 16 | ||
262 | #define OMAP3430_EN_GPIO4 (1 << 15) | ||
263 | #define OMAP3430_EN_GPIO4_SHIFT 15 | ||
264 | #define OMAP3430_EN_GPIO3 (1 << 14) | ||
265 | #define OMAP3430_EN_GPIO3_SHIFT 14 | ||
266 | #define OMAP3430_EN_GPIO2 (1 << 13) | ||
267 | #define OMAP3430_EN_GPIO2_SHIFT 13 | ||
268 | #define OMAP3430_EN_UART3 (1 << 11) | ||
269 | #define OMAP3430_EN_UART3_SHIFT 11 | ||
270 | #define OMAP3430_EN_GPT9 (1 << 10) | ||
271 | #define OMAP3430_EN_GPT9_SHIFT 10 | ||
272 | #define OMAP3430_EN_GPT8 (1 << 9) | ||
273 | #define OMAP3430_EN_GPT8_SHIFT 9 | ||
274 | #define OMAP3430_EN_GPT7 (1 << 8) | ||
275 | #define OMAP3430_EN_GPT7_SHIFT 8 | ||
276 | #define OMAP3430_EN_GPT6 (1 << 7) | ||
277 | #define OMAP3430_EN_GPT6_SHIFT 7 | ||
278 | #define OMAP3430_EN_GPT5 (1 << 6) | ||
279 | #define OMAP3430_EN_GPT5_SHIFT 6 | ||
280 | #define OMAP3430_EN_GPT4 (1 << 5) | ||
281 | #define OMAP3430_EN_GPT4_SHIFT 5 | ||
282 | #define OMAP3430_EN_GPT3 (1 << 4) | ||
283 | #define OMAP3430_EN_GPT3_SHIFT 4 | ||
284 | #define OMAP3430_EN_GPT2 (1 << 3) | ||
285 | #define OMAP3430_EN_GPT2_SHIFT 3 | ||
286 | |||
287 | /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER, PM_WKST_PER shared bits */ | ||
288 | /* XXX Possible TI documentation bug: should the PM_WKST_PER EN_* bits | ||
289 | * be ST_* bits instead? */ | ||
290 | #define OMAP3430_EN_MCBSP4 (1 << 2) | ||
291 | #define OMAP3430_EN_MCBSP4_SHIFT 2 | ||
292 | #define OMAP3430_EN_MCBSP3 (1 << 1) | ||
293 | #define OMAP3430_EN_MCBSP3_SHIFT 1 | ||
294 | #define OMAP3430_EN_MCBSP2 (1 << 0) | ||
295 | #define OMAP3430_EN_MCBSP2_SHIFT 0 | ||
296 | |||
297 | /* CM_IDLEST_PER, PM_WKST_PER shared bits */ | ||
298 | #define OMAP3430_ST_GPIO6 (1 << 17) | ||
299 | #define OMAP3430_ST_GPIO5 (1 << 16) | ||
300 | #define OMAP3430_ST_GPIO4 (1 << 15) | ||
301 | #define OMAP3430_ST_GPIO3 (1 << 14) | ||
302 | #define OMAP3430_ST_GPIO2 (1 << 13) | ||
303 | #define OMAP3430_ST_UART3 (1 << 11) | ||
304 | #define OMAP3430_ST_GPT9 (1 << 10) | ||
305 | #define OMAP3430_ST_GPT8 (1 << 9) | ||
306 | #define OMAP3430_ST_GPT7 (1 << 8) | ||
307 | #define OMAP3430_ST_GPT6 (1 << 7) | ||
308 | #define OMAP3430_ST_GPT5 (1 << 6) | ||
309 | #define OMAP3430_ST_GPT4 (1 << 5) | ||
310 | #define OMAP3430_ST_GPT3 (1 << 4) | ||
311 | #define OMAP3430_ST_GPT2 (1 << 3) | ||
312 | |||
313 | /* CM_SLEEPDEP_PER, PM_WKDEP_IVA2, PM_WKDEP_MPU, PM_WKDEP_PER shared bits */ | ||
314 | #define OMAP3430_EN_CORE (1 << 0) | ||
315 | |||
316 | #endif | ||
317 | |||
diff --git a/arch/arm/mach-omap2/prcm-regs.h b/arch/arm/mach-omap2/prcm-regs.h deleted file mode 100644 index 5e1c4b53ee9d..000000000000 --- a/arch/arm/mach-omap2/prcm-regs.h +++ /dev/null | |||
@@ -1,483 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-omap2/prcm-regs.h | ||
3 | * | ||
4 | * OMAP24XX Power Reset and Clock Management (PRCM) registers | ||
5 | * | ||
6 | * Copyright (C) 2005 Texas Instruments, Inc. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #ifndef __ARCH_ARM_MACH_OMAP2_PRCM_H | ||
24 | #define __ARCH_ARM_MACH_OMAP2_PRCM_H | ||
25 | |||
26 | /* SET_PERFORMANCE_LEVEL PARAMETERS */ | ||
27 | #define PRCM_HALF_SPEED 1 | ||
28 | #define PRCM_FULL_SPEED 2 | ||
29 | |||
30 | #ifndef __ASSEMBLER__ | ||
31 | |||
32 | #define PRCM_REG32(offset) __REG32(OMAP24XX_PRCM_BASE + (offset)) | ||
33 | |||
34 | #define PRCM_REVISION PRCM_REG32(0x000) | ||
35 | #define PRCM_SYSCONFIG PRCM_REG32(0x010) | ||
36 | #define PRCM_IRQSTATUS_MPU PRCM_REG32(0x018) | ||
37 | #define PRCM_IRQENABLE_MPU PRCM_REG32(0x01C) | ||
38 | #define PRCM_VOLTCTRL PRCM_REG32(0x050) | ||
39 | #define PRCM_VOLTST PRCM_REG32(0x054) | ||
40 | #define PRCM_CLKSRC_CTRL PRCM_REG32(0x060) | ||
41 | #define PRCM_CLKOUT_CTRL PRCM_REG32(0x070) | ||
42 | #define PRCM_CLKEMUL_CTRL PRCM_REG32(0x078) | ||
43 | #define PRCM_CLKCFG_CTRL PRCM_REG32(0x080) | ||
44 | #define PRCM_CLKCFG_STATUS PRCM_REG32(0x084) | ||
45 | #define PRCM_VOLTSETUP PRCM_REG32(0x090) | ||
46 | #define PRCM_CLKSSETUP PRCM_REG32(0x094) | ||
47 | #define PRCM_POLCTRL PRCM_REG32(0x098) | ||
48 | |||
49 | /* GENERAL PURPOSE */ | ||
50 | #define GENERAL_PURPOSE1 PRCM_REG32(0x0B0) | ||
51 | #define GENERAL_PURPOSE2 PRCM_REG32(0x0B4) | ||
52 | #define GENERAL_PURPOSE3 PRCM_REG32(0x0B8) | ||
53 | #define GENERAL_PURPOSE4 PRCM_REG32(0x0BC) | ||
54 | #define GENERAL_PURPOSE5 PRCM_REG32(0x0C0) | ||
55 | #define GENERAL_PURPOSE6 PRCM_REG32(0x0C4) | ||
56 | #define GENERAL_PURPOSE7 PRCM_REG32(0x0C8) | ||
57 | #define GENERAL_PURPOSE8 PRCM_REG32(0x0CC) | ||
58 | #define GENERAL_PURPOSE9 PRCM_REG32(0x0D0) | ||
59 | #define GENERAL_PURPOSE10 PRCM_REG32(0x0D4) | ||
60 | #define GENERAL_PURPOSE11 PRCM_REG32(0x0D8) | ||
61 | #define GENERAL_PURPOSE12 PRCM_REG32(0x0DC) | ||
62 | #define GENERAL_PURPOSE13 PRCM_REG32(0x0E0) | ||
63 | #define GENERAL_PURPOSE14 PRCM_REG32(0x0E4) | ||
64 | #define GENERAL_PURPOSE15 PRCM_REG32(0x0E8) | ||
65 | #define GENERAL_PURPOSE16 PRCM_REG32(0x0EC) | ||
66 | #define GENERAL_PURPOSE17 PRCM_REG32(0x0F0) | ||
67 | #define GENERAL_PURPOSE18 PRCM_REG32(0x0F4) | ||
68 | #define GENERAL_PURPOSE19 PRCM_REG32(0x0F8) | ||
69 | #define GENERAL_PURPOSE20 PRCM_REG32(0x0FC) | ||
70 | |||
71 | /* MPU */ | ||
72 | #define CM_CLKSEL_MPU PRCM_REG32(0x140) | ||
73 | #define CM_CLKSTCTRL_MPU PRCM_REG32(0x148) | ||
74 | #define RM_RSTST_MPU PRCM_REG32(0x158) | ||
75 | #define PM_WKDEP_MPU PRCM_REG32(0x1C8) | ||
76 | #define PM_EVGENCTRL_MPU PRCM_REG32(0x1D4) | ||
77 | #define PM_EVEGENONTIM_MPU PRCM_REG32(0x1D8) | ||
78 | #define PM_EVEGENOFFTIM_MPU PRCM_REG32(0x1DC) | ||
79 | #define PM_PWSTCTRL_MPU PRCM_REG32(0x1E0) | ||
80 | #define PM_PWSTST_MPU PRCM_REG32(0x1E4) | ||
81 | |||
82 | /* CORE */ | ||
83 | #define CM_FCLKEN1_CORE PRCM_REG32(0x200) | ||
84 | #define CM_FCLKEN2_CORE PRCM_REG32(0x204) | ||
85 | #define CM_FCLKEN3_CORE PRCM_REG32(0x208) | ||
86 | #define CM_ICLKEN1_CORE PRCM_REG32(0x210) | ||
87 | #define CM_ICLKEN2_CORE PRCM_REG32(0x214) | ||
88 | #define CM_ICLKEN3_CORE PRCM_REG32(0x218) | ||
89 | #define CM_ICLKEN4_CORE PRCM_REG32(0x21C) | ||
90 | #define CM_IDLEST1_CORE PRCM_REG32(0x220) | ||
91 | #define CM_IDLEST2_CORE PRCM_REG32(0x224) | ||
92 | #define CM_IDLEST3_CORE PRCM_REG32(0x228) | ||
93 | #define CM_IDLEST4_CORE PRCM_REG32(0x22C) | ||
94 | #define CM_AUTOIDLE1_CORE PRCM_REG32(0x230) | ||
95 | #define CM_AUTOIDLE2_CORE PRCM_REG32(0x234) | ||
96 | #define CM_AUTOIDLE3_CORE PRCM_REG32(0x238) | ||
97 | #define CM_AUTOIDLE4_CORE PRCM_REG32(0x23C) | ||
98 | #define CM_CLKSEL1_CORE PRCM_REG32(0x240) | ||
99 | #define CM_CLKSEL2_CORE PRCM_REG32(0x244) | ||
100 | #define CM_CLKSTCTRL_CORE PRCM_REG32(0x248) | ||
101 | #define PM_WKEN1_CORE PRCM_REG32(0x2A0) | ||
102 | #define PM_WKEN2_CORE PRCM_REG32(0x2A4) | ||
103 | #define PM_WKST1_CORE PRCM_REG32(0x2B0) | ||
104 | #define PM_WKST2_CORE PRCM_REG32(0x2B4) | ||
105 | #define PM_WKDEP_CORE PRCM_REG32(0x2C8) | ||
106 | #define PM_PWSTCTRL_CORE PRCM_REG32(0x2E0) | ||
107 | #define PM_PWSTST_CORE PRCM_REG32(0x2E4) | ||
108 | |||
109 | /* GFX */ | ||
110 | #define CM_FCLKEN_GFX PRCM_REG32(0x300) | ||
111 | #define CM_ICLKEN_GFX PRCM_REG32(0x310) | ||
112 | #define CM_IDLEST_GFX PRCM_REG32(0x320) | ||
113 | #define CM_CLKSEL_GFX PRCM_REG32(0x340) | ||
114 | #define CM_CLKSTCTRL_GFX PRCM_REG32(0x348) | ||
115 | #define RM_RSTCTRL_GFX PRCM_REG32(0x350) | ||
116 | #define RM_RSTST_GFX PRCM_REG32(0x358) | ||
117 | #define PM_WKDEP_GFX PRCM_REG32(0x3C8) | ||
118 | #define PM_PWSTCTRL_GFX PRCM_REG32(0x3E0) | ||
119 | #define PM_PWSTST_GFX PRCM_REG32(0x3E4) | ||
120 | |||
121 | /* WAKE-UP */ | ||
122 | #define CM_FCLKEN_WKUP PRCM_REG32(0x400) | ||
123 | #define CM_ICLKEN_WKUP PRCM_REG32(0x410) | ||
124 | #define CM_IDLEST_WKUP PRCM_REG32(0x420) | ||
125 | #define CM_AUTOIDLE_WKUP PRCM_REG32(0x430) | ||
126 | #define CM_CLKSEL_WKUP PRCM_REG32(0x440) | ||
127 | #define RM_RSTCTRL_WKUP PRCM_REG32(0x450) | ||
128 | #define RM_RSTTIME_WKUP PRCM_REG32(0x454) | ||
129 | #define RM_RSTST_WKUP PRCM_REG32(0x458) | ||
130 | #define PM_WKEN_WKUP PRCM_REG32(0x4A0) | ||
131 | #define PM_WKST_WKUP PRCM_REG32(0x4B0) | ||
132 | |||
133 | /* CLOCKS */ | ||
134 | #define CM_CLKEN_PLL PRCM_REG32(0x500) | ||
135 | #define CM_IDLEST_CKGEN PRCM_REG32(0x520) | ||
136 | #define CM_AUTOIDLE_PLL PRCM_REG32(0x530) | ||
137 | #define CM_CLKSEL1_PLL PRCM_REG32(0x540) | ||
138 | #define CM_CLKSEL2_PLL PRCM_REG32(0x544) | ||
139 | |||
140 | /* DSP */ | ||
141 | #define CM_FCLKEN_DSP PRCM_REG32(0x800) | ||
142 | #define CM_ICLKEN_DSP PRCM_REG32(0x810) | ||
143 | #define CM_IDLEST_DSP PRCM_REG32(0x820) | ||
144 | #define CM_AUTOIDLE_DSP PRCM_REG32(0x830) | ||
145 | #define CM_CLKSEL_DSP PRCM_REG32(0x840) | ||
146 | #define CM_CLKSTCTRL_DSP PRCM_REG32(0x848) | ||
147 | #define RM_RSTCTRL_DSP PRCM_REG32(0x850) | ||
148 | #define RM_RSTST_DSP PRCM_REG32(0x858) | ||
149 | #define PM_WKEN_DSP PRCM_REG32(0x8A0) | ||
150 | #define PM_WKDEP_DSP PRCM_REG32(0x8C8) | ||
151 | #define PM_PWSTCTRL_DSP PRCM_REG32(0x8E0) | ||
152 | #define PM_PWSTST_DSP PRCM_REG32(0x8E4) | ||
153 | #define PRCM_IRQSTATUS_DSP PRCM_REG32(0x8F0) | ||
154 | #define PRCM_IRQENABLE_DSP PRCM_REG32(0x8F4) | ||
155 | |||
156 | /* IVA */ | ||
157 | #define PRCM_IRQSTATUS_IVA PRCM_REG32(0x8F8) | ||
158 | #define PRCM_IRQENABLE_IVA PRCM_REG32(0x8FC) | ||
159 | |||
160 | /* Modem on 2430 */ | ||
161 | #define CM_FCLKEN_MDM PRCM_REG32(0xC00) | ||
162 | #define CM_ICLKEN_MDM PRCM_REG32(0xC10) | ||
163 | #define CM_IDLEST_MDM PRCM_REG32(0xC20) | ||
164 | #define CM_AUTOIDLE_MDM PRCM_REG32(0xC30) | ||
165 | #define CM_CLKSEL_MDM PRCM_REG32(0xC40) | ||
166 | #define CM_CLKSTCTRL_MDM PRCM_REG32(0xC48) | ||
167 | #define RM_RSTCTRL_MDM PRCM_REG32(0xC50) | ||
168 | #define RM_RSTST_MDM PRCM_REG32(0xC58) | ||
169 | #define PM_WKEN_MDM PRCM_REG32(0xCA0) | ||
170 | #define PM_WKST_MDM PRCM_REG32(0xCB0) | ||
171 | #define PM_WKDEP_MDM PRCM_REG32(0xCC8) | ||
172 | #define PM_PWSTCTRL_MDM PRCM_REG32(0xCE0) | ||
173 | #define PM_PWSTST_MDM PRCM_REG32(0xCE4) | ||
174 | |||
175 | #define OMAP24XX_L4_IO_BASE 0x48000000 | ||
176 | |||
177 | #define DISP_BASE (OMAP24XX_L4_IO_BASE + 0x50000) | ||
178 | #define DISP_REG32(offset) __REG32(DISP_BASE + (offset)) | ||
179 | |||
180 | #define OMAP24XX_GPMC_BASE (L3_24XX_BASE + 0xa000) | ||
181 | #define GPMC_REG32(offset) __REG32(OMAP24XX_GPMC_BASE + (offset)) | ||
182 | |||
183 | /* FIXME: Move these to timer code */ | ||
184 | #define GPT1_BASE (0x48028000) | ||
185 | #define GPT1_REG32(offset) __REG32(GPT1_BASE + (offset)) | ||
186 | |||
187 | /* Misc sysconfig */ | ||
188 | #define DISPC_SYSCONFIG DISP_REG32(0x410) | ||
189 | #define SPI_BASE (OMAP24XX_L4_IO_BASE + 0x98000) | ||
190 | #define MCSPI1_SYSCONFIG __REG32(SPI_BASE + 0x10) | ||
191 | #define MCSPI2_SYSCONFIG __REG32(SPI_BASE + 0x2000 + 0x10) | ||
192 | #define MCSPI3_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE + 0xb8010) | ||
193 | |||
194 | #define CAMERA_MMU_SYSCONFIG __REG32(DISP_BASE + 0x2C10) | ||
195 | #define CAMERA_DMA_SYSCONFIG __REG32(DISP_BASE + 0x282C) | ||
196 | #define SYSTEM_DMA_SYSCONFIG __REG32(DISP_BASE + 0x602C) | ||
197 | #define GPMC_SYSCONFIG GPMC_REG32(0x010) | ||
198 | #define MAILBOXES_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE + 0x94010) | ||
199 | #define UART1_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE + 0x6A054) | ||
200 | #define UART2_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE + 0x6C054) | ||
201 | #define UART3_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE + 0x6E054) | ||
202 | #define SDRC_SYSCONFIG __REG32(OMAP24XX_SDRC_BASE + 0x10) | ||
203 | #define OMAP24XX_SMS_BASE (L3_24XX_BASE + 0x8000) | ||
204 | #define SMS_SYSCONFIG __REG32(OMAP24XX_SMS_BASE + 0x10) | ||
205 | #define SSI_SYSCONFIG __REG32(DISP_BASE + 0x8010) | ||
206 | |||
207 | /* rkw - good cannidates for PM_ to start what nm was trying */ | ||
208 | #define OMAP24XX_GPT2 (OMAP24XX_L4_IO_BASE + 0x2A000) | ||
209 | #define OMAP24XX_GPT3 (OMAP24XX_L4_IO_BASE + 0x78000) | ||
210 | #define OMAP24XX_GPT4 (OMAP24XX_L4_IO_BASE + 0x7A000) | ||
211 | #define OMAP24XX_GPT5 (OMAP24XX_L4_IO_BASE + 0x7C000) | ||
212 | #define OMAP24XX_GPT6 (OMAP24XX_L4_IO_BASE + 0x7E000) | ||
213 | #define OMAP24XX_GPT7 (OMAP24XX_L4_IO_BASE + 0x80000) | ||
214 | #define OMAP24XX_GPT8 (OMAP24XX_L4_IO_BASE + 0x82000) | ||
215 | #define OMAP24XX_GPT9 (OMAP24XX_L4_IO_BASE + 0x84000) | ||
216 | #define OMAP24XX_GPT10 (OMAP24XX_L4_IO_BASE + 0x86000) | ||
217 | #define OMAP24XX_GPT11 (OMAP24XX_L4_IO_BASE + 0x88000) | ||
218 | #define OMAP24XX_GPT12 (OMAP24XX_L4_IO_BASE + 0x8A000) | ||
219 | |||
220 | /* FIXME: Move these to timer code */ | ||
221 | #define GPTIMER1_SYSCONFIG GPT1_REG32(0x010) | ||
222 | #define GPTIMER2_SYSCONFIG __REG32(OMAP24XX_GPT2 + 0x10) | ||
223 | #define GPTIMER3_SYSCONFIG __REG32(OMAP24XX_GPT3 + 0x10) | ||
224 | #define GPTIMER4_SYSCONFIG __REG32(OMAP24XX_GPT4 + 0x10) | ||
225 | #define GPTIMER5_SYSCONFIG __REG32(OMAP24XX_GPT5 + 0x10) | ||
226 | #define GPTIMER6_SYSCONFIG __REG32(OMAP24XX_GPT6 + 0x10) | ||
227 | #define GPTIMER7_SYSCONFIG __REG32(OMAP24XX_GPT7 + 0x10) | ||
228 | #define GPTIMER8_SYSCONFIG __REG32(OMAP24XX_GPT8 + 0x10) | ||
229 | #define GPTIMER9_SYSCONFIG __REG32(OMAP24XX_GPT9 + 0x10) | ||
230 | #define GPTIMER10_SYSCONFIG __REG32(OMAP24XX_GPT10 + 0x10) | ||
231 | #define GPTIMER11_SYSCONFIG __REG32(OMAP24XX_GPT11 + 0x10) | ||
232 | #define GPTIMER12_SYSCONFIG __REG32(OMAP24XX_GPT12 + 0x10) | ||
233 | |||
234 | /* FIXME: Move these to gpio code */ | ||
235 | #define OMAP24XX_GPIO_BASE 0x48018000 | ||
236 | #define GPIOX_BASE(X) (OMAP24XX_GPIO_BASE + (0x2000 * ((X) - 1))) | ||
237 | |||
238 | #define GPIO1_SYSCONFIG __REG32((GPIOX_BASE(1) + 0x10)) | ||
239 | #define GPIO2_SYSCONFIG __REG32((GPIOX_BASE(2) + 0x10)) | ||
240 | #define GPIO3_SYSCONFIG __REG32((GPIOX_BASE(3) + 0x10)) | ||
241 | #define GPIO4_SYSCONFIG __REG32((GPIOX_BASE(4) + 0x10)) | ||
242 | |||
243 | #if defined(CONFIG_ARCH_OMAP243X) | ||
244 | #define GPIO5_SYSCONFIG __REG32((OMAP24XX_GPIO5_BASE + 0x10)) | ||
245 | #endif | ||
246 | |||
247 | /* GP TIMER 1 */ | ||
248 | #define GPTIMER1_TISTAT GPT1_REG32(0x014) | ||
249 | #define GPTIMER1_TISR GPT1_REG32(0x018) | ||
250 | #define GPTIMER1_TIER GPT1_REG32(0x01C) | ||
251 | #define GPTIMER1_TWER GPT1_REG32(0x020) | ||
252 | #define GPTIMER1_TCLR GPT1_REG32(0x024) | ||
253 | #define GPTIMER1_TCRR GPT1_REG32(0x028) | ||
254 | #define GPTIMER1_TLDR GPT1_REG32(0x02C) | ||
255 | #define GPTIMER1_TTGR GPT1_REG32(0x030) | ||
256 | #define GPTIMER1_TWPS GPT1_REG32(0x034) | ||
257 | #define GPTIMER1_TMAR GPT1_REG32(0x038) | ||
258 | #define GPTIMER1_TCAR1 GPT1_REG32(0x03C) | ||
259 | #define GPTIMER1_TSICR GPT1_REG32(0x040) | ||
260 | #define GPTIMER1_TCAR2 GPT1_REG32(0x044) | ||
261 | |||
262 | /* rkw -- base fix up please... */ | ||
263 | #define GPTIMER3_TISR __REG32(OMAP24XX_L4_IO_BASE + 0x78018) | ||
264 | |||
265 | /* SDRC */ | ||
266 | #define SDRC_DLLA_CTRL __REG32(OMAP24XX_SDRC_BASE + 0x060) | ||
267 | #define SDRC_DLLA_STATUS __REG32(OMAP24XX_SDRC_BASE + 0x064) | ||
268 | #define SDRC_DLLB_CTRL __REG32(OMAP24XX_SDRC_BASE + 0x068) | ||
269 | #define SDRC_DLLB_STATUS __REG32(OMAP24XX_SDRC_BASE + 0x06C) | ||
270 | #define SDRC_POWER __REG32(OMAP24XX_SDRC_BASE + 0x070) | ||
271 | #define SDRC_MR_0 __REG32(OMAP24XX_SDRC_BASE + 0x084) | ||
272 | |||
273 | /* GPIO 1 */ | ||
274 | #define GPIO1_BASE GPIOX_BASE(1) | ||
275 | #define GPIO1_REG32(offset) __REG32(GPIO1_BASE + (offset)) | ||
276 | #define GPIO1_IRQENABLE1 GPIO1_REG32(0x01C) | ||
277 | #define GPIO1_IRQSTATUS1 GPIO1_REG32(0x018) | ||
278 | #define GPIO1_IRQENABLE2 GPIO1_REG32(0x02C) | ||
279 | #define GPIO1_IRQSTATUS2 GPIO1_REG32(0x028) | ||
280 | #define GPIO1_WAKEUPENABLE GPIO1_REG32(0x020) | ||
281 | #define GPIO1_RISINGDETECT GPIO1_REG32(0x048) | ||
282 | #define GPIO1_DATAIN GPIO1_REG32(0x038) | ||
283 | #define GPIO1_OE GPIO1_REG32(0x034) | ||
284 | #define GPIO1_DATAOUT GPIO1_REG32(0x03C) | ||
285 | |||
286 | /* GPIO2 */ | ||
287 | #define GPIO2_BASE GPIOX_BASE(2) | ||
288 | #define GPIO2_REG32(offset) __REG32(GPIO2_BASE + (offset)) | ||
289 | #define GPIO2_IRQENABLE1 GPIO2_REG32(0x01C) | ||
290 | #define GPIO2_IRQSTATUS1 GPIO2_REG32(0x018) | ||
291 | #define GPIO2_IRQENABLE2 GPIO2_REG32(0x02C) | ||
292 | #define GPIO2_IRQSTATUS2 GPIO2_REG32(0x028) | ||
293 | #define GPIO2_WAKEUPENABLE GPIO2_REG32(0x020) | ||
294 | #define GPIO2_RISINGDETECT GPIO2_REG32(0x048) | ||
295 | #define GPIO2_DATAIN GPIO2_REG32(0x038) | ||
296 | #define GPIO2_OE GPIO2_REG32(0x034) | ||
297 | #define GPIO2_DATAOUT GPIO2_REG32(0x03C) | ||
298 | #define GPIO2_DEBOUNCENABLE GPIO2_REG32(0x050) | ||
299 | #define GPIO2_DEBOUNCINGTIME GPIO2_REG32(0x054) | ||
300 | |||
301 | /* GPIO 3 */ | ||
302 | #define GPIO3_BASE GPIOX_BASE(3) | ||
303 | #define GPIO3_REG32(offset) __REG32(GPIO3_BASE + (offset)) | ||
304 | #define GPIO3_IRQENABLE1 GPIO3_REG32(0x01C) | ||
305 | #define GPIO3_IRQSTATUS1 GPIO3_REG32(0x018) | ||
306 | #define GPIO3_IRQENABLE2 GPIO3_REG32(0x02C) | ||
307 | #define GPIO3_IRQSTATUS2 GPIO3_REG32(0x028) | ||
308 | #define GPIO3_WAKEUPENABLE GPIO3_REG32(0x020) | ||
309 | #define GPIO3_RISINGDETECT GPIO3_REG32(0x048) | ||
310 | #define GPIO3_FALLINGDETECT GPIO3_REG32(0x04C) | ||
311 | #define GPIO3_DATAIN GPIO3_REG32(0x038) | ||
312 | #define GPIO3_OE GPIO3_REG32(0x034) | ||
313 | #define GPIO3_DATAOUT GPIO3_REG32(0x03C) | ||
314 | #define GPIO3_DEBOUNCENABLE GPIO3_REG32(0x050) | ||
315 | #define GPIO3_DEBOUNCINGTIME GPIO3_REG32(0x054) | ||
316 | #define GPIO3_DEBOUNCENABLE GPIO3_REG32(0x050) | ||
317 | #define GPIO3_DEBOUNCINGTIME GPIO3_REG32(0x054) | ||
318 | |||
319 | /* GPIO 4 */ | ||
320 | #define GPIO4_BASE GPIOX_BASE(4) | ||
321 | #define GPIO4_REG32(offset) __REG32(GPIO4_BASE + (offset)) | ||
322 | #define GPIO4_IRQENABLE1 GPIO4_REG32(0x01C) | ||
323 | #define GPIO4_IRQSTATUS1 GPIO4_REG32(0x018) | ||
324 | #define GPIO4_IRQENABLE2 GPIO4_REG32(0x02C) | ||
325 | #define GPIO4_IRQSTATUS2 GPIO4_REG32(0x028) | ||
326 | #define GPIO4_WAKEUPENABLE GPIO4_REG32(0x020) | ||
327 | #define GPIO4_RISINGDETECT GPIO4_REG32(0x048) | ||
328 | #define GPIO4_FALLINGDETECT GPIO4_REG32(0x04C) | ||
329 | #define GPIO4_DATAIN GPIO4_REG32(0x038) | ||
330 | #define GPIO4_OE GPIO4_REG32(0x034) | ||
331 | #define GPIO4_DATAOUT GPIO4_REG32(0x03C) | ||
332 | #define GPIO4_DEBOUNCENABLE GPIO4_REG32(0x050) | ||
333 | #define GPIO4_DEBOUNCINGTIME GPIO4_REG32(0x054) | ||
334 | |||
335 | #if defined(CONFIG_ARCH_OMAP243X) | ||
336 | /* GPIO 5 */ | ||
337 | #define GPIO5_REG32(offset) __REG32((OMAP24XX_GPIO5_BASE + (offset))) | ||
338 | #define GPIO5_IRQENABLE1 GPIO5_REG32(0x01C) | ||
339 | #define GPIO5_IRQSTATUS1 GPIO5_REG32(0x018) | ||
340 | #define GPIO5_IRQENABLE2 GPIO5_REG32(0x02C) | ||
341 | #define GPIO5_IRQSTATUS2 GPIO5_REG32(0x028) | ||
342 | #define GPIO5_WAKEUPENABLE GPIO5_REG32(0x020) | ||
343 | #define GPIO5_RISINGDETECT GPIO5_REG32(0x048) | ||
344 | #define GPIO5_FALLINGDETECT GPIO5_REG32(0x04C) | ||
345 | #define GPIO5_DATAIN GPIO5_REG32(0x038) | ||
346 | #define GPIO5_OE GPIO5_REG32(0x034) | ||
347 | #define GPIO5_DATAOUT GPIO5_REG32(0x03C) | ||
348 | #define GPIO5_DEBOUNCENABLE GPIO5_REG32(0x050) | ||
349 | #define GPIO5_DEBOUNCINGTIME GPIO5_REG32(0x054) | ||
350 | #endif | ||
351 | |||
352 | /* IO CONFIG */ | ||
353 | #define OMAP24XX_CTRL_BASE (L4_24XX_BASE) | ||
354 | #define CONTROL_REG32(offset) __REG32(OMAP24XX_CTRL_BASE + (offset)) | ||
355 | |||
356 | #define CONTROL_PADCONF_SPI1_NCS2 CONTROL_REG32(0x104) | ||
357 | #define CONTROL_PADCONF_SYS_XTALOUT CONTROL_REG32(0x134) | ||
358 | #define CONTROL_PADCONF_UART1_RX CONTROL_REG32(0x0C8) | ||
359 | #define CONTROL_PADCONF_MCBSP1_DX CONTROL_REG32(0x10C) | ||
360 | #define CONTROL_PADCONF_GPMC_NCS4 CONTROL_REG32(0x090) | ||
361 | #define CONTROL_PADCONF_DSS_D5 CONTROL_REG32(0x0B8) | ||
362 | #define CONTROL_PADCONF_DSS_D9 CONTROL_REG32(0x0BC) /* 2420 */ | ||
363 | #define CONTROL_PADCONF_DSS_D13 CONTROL_REG32(0x0C0) | ||
364 | #define CONTROL_PADCONF_DSS_VSYNC CONTROL_REG32(0x0CC) | ||
365 | #define CONTROL_PADCONF_SYS_NIRQW0 CONTROL_REG32(0x0BC) /* 2430 */ | ||
366 | #define CONTROL_PADCONF_SSI1_FLAG_TX CONTROL_REG32(0x108) /* 2430 */ | ||
367 | |||
368 | /* CONTROL */ | ||
369 | #define CONTROL_DEVCONF CONTROL_REG32(0x274) | ||
370 | #define CONTROL_DEVCONF1 CONTROL_REG32(0x2E8) | ||
371 | |||
372 | /* INTERRUPT CONTROLLER */ | ||
373 | #define INTC_BASE ((L4_24XX_BASE) + 0xfe000) | ||
374 | #define INTC_REG32(offset) __REG32(INTC_BASE + (offset)) | ||
375 | |||
376 | #define INTC1_U_BASE INTC_REG32(0x000) | ||
377 | #define INTC_MIR0 INTC_REG32(0x084) | ||
378 | #define INTC_MIR_SET0 INTC_REG32(0x08C) | ||
379 | #define INTC_MIR_CLEAR0 INTC_REG32(0x088) | ||
380 | #define INTC_ISR_CLEAR0 INTC_REG32(0x094) | ||
381 | #define INTC_MIR1 INTC_REG32(0x0A4) | ||
382 | #define INTC_MIR_SET1 INTC_REG32(0x0AC) | ||
383 | #define INTC_MIR_CLEAR1 INTC_REG32(0x0A8) | ||
384 | #define INTC_ISR_CLEAR1 INTC_REG32(0x0B4) | ||
385 | #define INTC_MIR2 INTC_REG32(0x0C4) | ||
386 | #define INTC_MIR_SET2 INTC_REG32(0x0CC) | ||
387 | #define INTC_MIR_CLEAR2 INTC_REG32(0x0C8) | ||
388 | #define INTC_ISR_CLEAR2 INTC_REG32(0x0D4) | ||
389 | #define INTC_SIR_IRQ INTC_REG32(0x040) | ||
390 | #define INTC_CONTROL INTC_REG32(0x048) | ||
391 | #define INTC_ILR11 INTC_REG32(0x12C) /* PRCM on MPU PIC */ | ||
392 | #define INTC_ILR30 INTC_REG32(0x178) | ||
393 | #define INTC_ILR31 INTC_REG32(0x17C) | ||
394 | #define INTC_ILR32 INTC_REG32(0x180) | ||
395 | #define INTC_ILR37 INTC_REG32(0x194) /* GPIO4 on MPU PIC */ | ||
396 | #define INTC_SYSCONFIG INTC_REG32(0x010) /* GPT1 on MPU PIC */ | ||
397 | |||
398 | /* RAM FIREWALL */ | ||
399 | #define RAMFW_BASE (0x68005000) | ||
400 | #define RAMFW_REG32(offset) __REG32(RAMFW_BASE + (offset)) | ||
401 | |||
402 | #define RAMFW_REQINFOPERM0 RAMFW_REG32(0x048) | ||
403 | #define RAMFW_READPERM0 RAMFW_REG32(0x050) | ||
404 | #define RAMFW_WRITEPERM0 RAMFW_REG32(0x058) | ||
405 | |||
406 | /* GPMC CS1 FPGA ON USER INTERFACE MODULE */ | ||
407 | //#define DEBUG_BOARD_LED_REGISTER 0x04000014 | ||
408 | |||
409 | /* GPMC CS0 */ | ||
410 | #define GPMC_CONFIG1_0 GPMC_REG32(0x060) | ||
411 | #define GPMC_CONFIG2_0 GPMC_REG32(0x064) | ||
412 | #define GPMC_CONFIG3_0 GPMC_REG32(0x068) | ||
413 | #define GPMC_CONFIG4_0 GPMC_REG32(0x06C) | ||
414 | #define GPMC_CONFIG5_0 GPMC_REG32(0x070) | ||
415 | #define GPMC_CONFIG6_0 GPMC_REG32(0x074) | ||
416 | #define GPMC_CONFIG7_0 GPMC_REG32(0x078) | ||
417 | |||
418 | /* GPMC CS1 */ | ||
419 | #define GPMC_CONFIG1_1 GPMC_REG32(0x090) | ||
420 | #define GPMC_CONFIG2_1 GPMC_REG32(0x094) | ||
421 | #define GPMC_CONFIG3_1 GPMC_REG32(0x098) | ||
422 | #define GPMC_CONFIG4_1 GPMC_REG32(0x09C) | ||
423 | #define GPMC_CONFIG5_1 GPMC_REG32(0x0a0) | ||
424 | #define GPMC_CONFIG6_1 GPMC_REG32(0x0a4) | ||
425 | #define GPMC_CONFIG7_1 GPMC_REG32(0x0a8) | ||
426 | |||
427 | /* GPMC CS3 */ | ||
428 | #define GPMC_CONFIG1_3 GPMC_REG32(0x0F0) | ||
429 | #define GPMC_CONFIG2_3 GPMC_REG32(0x0F4) | ||
430 | #define GPMC_CONFIG3_3 GPMC_REG32(0x0F8) | ||
431 | #define GPMC_CONFIG4_3 GPMC_REG32(0x0FC) | ||
432 | #define GPMC_CONFIG5_3 GPMC_REG32(0x100) | ||
433 | #define GPMC_CONFIG6_3 GPMC_REG32(0x104) | ||
434 | #define GPMC_CONFIG7_3 GPMC_REG32(0x108) | ||
435 | |||
436 | /* DSS */ | ||
437 | #define DSS_CONTROL DISP_REG32(0x040) | ||
438 | #define DISPC_CONTROL DISP_REG32(0x440) | ||
439 | #define DISPC_SYSSTATUS DISP_REG32(0x414) | ||
440 | #define DISPC_IRQSTATUS DISP_REG32(0x418) | ||
441 | #define DISPC_IRQENABLE DISP_REG32(0x41C) | ||
442 | #define DISPC_CONFIG DISP_REG32(0x444) | ||
443 | #define DISPC_DEFAULT_COLOR0 DISP_REG32(0x44C) | ||
444 | #define DISPC_DEFAULT_COLOR1 DISP_REG32(0x450) | ||
445 | #define DISPC_TRANS_COLOR0 DISP_REG32(0x454) | ||
446 | #define DISPC_TRANS_COLOR1 DISP_REG32(0x458) | ||
447 | #define DISPC_LINE_NUMBER DISP_REG32(0x460) | ||
448 | #define DISPC_TIMING_H DISP_REG32(0x464) | ||
449 | #define DISPC_TIMING_V DISP_REG32(0x468) | ||
450 | #define DISPC_POL_FREQ DISP_REG32(0x46C) | ||
451 | #define DISPC_DIVISOR DISP_REG32(0x470) | ||
452 | #define DISPC_SIZE_DIG DISP_REG32(0x478) | ||
453 | #define DISPC_SIZE_LCD DISP_REG32(0x47C) | ||
454 | #define DISPC_GFX_BA0 DISP_REG32(0x480) | ||
455 | #define DISPC_GFX_BA1 DISP_REG32(0x484) | ||
456 | #define DISPC_GFX_POSITION DISP_REG32(0x488) | ||
457 | #define DISPC_GFX_SIZE DISP_REG32(0x48C) | ||
458 | #define DISPC_GFX_ATTRIBUTES DISP_REG32(0x4A0) | ||
459 | #define DISPC_GFX_FIFO_THRESHOLD DISP_REG32(0x4A4) | ||
460 | #define DISPC_GFX_ROW_INC DISP_REG32(0x4AC) | ||
461 | #define DISPC_GFX_PIXEL_INC DISP_REG32(0x4B0) | ||
462 | #define DISPC_GFX_WINDOW_SKIP DISP_REG32(0x4B4) | ||
463 | #define DISPC_GFX_TABLE_BA DISP_REG32(0x4B8) | ||
464 | #define DISPC_DATA_CYCLE1 DISP_REG32(0x5D4) | ||
465 | #define DISPC_DATA_CYCLE2 DISP_REG32(0x5D8) | ||
466 | #define DISPC_DATA_CYCLE3 DISP_REG32(0x5DC) | ||
467 | |||
468 | /* HSUSB Suspend */ | ||
469 | #define HSUSB_CTRL __REG8(0x480AC001) | ||
470 | #define USBOTG_POWER __REG32(0x480AC000) | ||
471 | |||
472 | /* HS MMC */ | ||
473 | #define MMCHS1_SYSCONFIG __REG32(0x4809C010) | ||
474 | #define MMCHS2_SYSCONFIG __REG32(0x480b4010) | ||
475 | |||
476 | #endif /* __ASSEMBLER__ */ | ||
477 | |||
478 | #endif | ||
479 | |||
480 | |||
481 | |||
482 | |||
483 | |||
diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c index 90f530540c65..b12f423b8595 100644 --- a/arch/arm/mach-omap2/prcm.c +++ b/arch/arm/mach-omap2/prcm.c | |||
@@ -17,19 +17,27 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
19 | 19 | ||
20 | #include "prcm-regs.h" | 20 | #include <asm/io.h> |
21 | |||
22 | #include "prm.h" | ||
23 | #include "prm-regbits-24xx.h" | ||
21 | 24 | ||
22 | extern void omap2_clk_prepare_for_reboot(void); | 25 | extern void omap2_clk_prepare_for_reboot(void); |
23 | 26 | ||
24 | u32 omap_prcm_get_reset_sources(void) | 27 | u32 omap_prcm_get_reset_sources(void) |
25 | { | 28 | { |
26 | return RM_RSTST_WKUP & 0x7f; | 29 | return prm_read_mod_reg(WKUP_MOD, RM_RSTST) & 0x7f; |
27 | } | 30 | } |
28 | EXPORT_SYMBOL(omap_prcm_get_reset_sources); | 31 | EXPORT_SYMBOL(omap_prcm_get_reset_sources); |
29 | 32 | ||
30 | /* Resets clock rates and reboots the system. Only called from system.h */ | 33 | /* Resets clock rates and reboots the system. Only called from system.h */ |
31 | void omap_prcm_arch_reset(char mode) | 34 | void omap_prcm_arch_reset(char mode) |
32 | { | 35 | { |
36 | u32 wkup; | ||
33 | omap2_clk_prepare_for_reboot(); | 37 | omap2_clk_prepare_for_reboot(); |
34 | RM_RSTCTRL_WKUP |= 2; | 38 | |
39 | if (cpu_is_omap24xx()) { | ||
40 | wkup = prm_read_mod_reg(WKUP_MOD, RM_RSTCTRL) | OMAP_RST_DPLL3; | ||
41 | prm_write_mod_reg(wkup, WKUP_MOD, RM_RSTCTRL); | ||
42 | } | ||
35 | } | 43 | } |
diff --git a/arch/arm/mach-omap2/prm-regbits-24xx.h b/arch/arm/mach-omap2/prm-regbits-24xx.h new file mode 100644 index 000000000000..c6d17a3378ec --- /dev/null +++ b/arch/arm/mach-omap2/prm-regbits-24xx.h | |||
@@ -0,0 +1,279 @@ | |||
1 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_24XX_H | ||
2 | #define __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_24XX_H | ||
3 | |||
4 | /* | ||
5 | * OMAP24XX Power/Reset Management register bits | ||
6 | * | ||
7 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include "prm.h" | ||
18 | |||
19 | /* Bits shared between registers */ | ||
20 | |||
21 | /* PRCM_IRQSTATUS_MPU, PM_IRQSTATUS_DSP, PRCM_IRQSTATUS_IVA shared bits */ | ||
22 | #define OMAP24XX_VOLTTRANS_ST (1 << 2) | ||
23 | #define OMAP24XX_WKUP2_ST (1 << 1) | ||
24 | #define OMAP24XX_WKUP1_ST (1 << 0) | ||
25 | |||
26 | /* PRCM_IRQENABLE_MPU, PM_IRQENABLE_DSP, PRCM_IRQENABLE_IVA shared bits */ | ||
27 | #define OMAP24XX_VOLTTRANS_EN (1 << 2) | ||
28 | #define OMAP24XX_WKUP2_EN (1 << 1) | ||
29 | #define OMAP24XX_WKUP1_EN (1 << 0) | ||
30 | |||
31 | /* PM_WKDEP_GFX, PM_WKDEP_MPU, PM_WKDEP_DSP, PM_WKDEP_MDM shared bits */ | ||
32 | #define OMAP24XX_EN_MPU (1 << 1) | ||
33 | #define OMAP24XX_EN_CORE (1 << 0) | ||
34 | |||
35 | /* | ||
36 | * PM_PWSTCTRL_MPU, PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSP, PM_PWSTCTRL_MDM | ||
37 | * shared bits | ||
38 | */ | ||
39 | #define OMAP24XX_MEMONSTATE_SHIFT 10 | ||
40 | #define OMAP24XX_MEMONSTATE_MASK (0x3 << 10) | ||
41 | #define OMAP24XX_MEMRETSTATE (1 << 3) | ||
42 | |||
43 | /* PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSP, PM_PWSTCTRL_MDM shared bits */ | ||
44 | #define OMAP24XX_FORCESTATE (1 << 18) | ||
45 | |||
46 | /* | ||
47 | * PM_PWSTST_CORE, PM_PWSTST_GFX, PM_PWSTST_MPU, PM_PWSTST_DSP, | ||
48 | * PM_PWSTST_MDM shared bits | ||
49 | */ | ||
50 | #define OMAP24XX_CLKACTIVITY (1 << 19) | ||
51 | |||
52 | /* PM_PWSTST_MPU, PM_PWSTST_CORE, PM_PWSTST_DSP shared bits */ | ||
53 | #define OMAP24XX_LASTSTATEENTERED_SHIFT 4 | ||
54 | #define OMAP24XX_LASTSTATEENTERED_MASK (0x3 << 4) | ||
55 | |||
56 | /* PM_PWSTST_MPU and PM_PWSTST_DSP shared bits */ | ||
57 | #define OMAP2430_MEMSTATEST_SHIFT 10 | ||
58 | #define OMAP2430_MEMSTATEST_MASK (0x3 << 10) | ||
59 | |||
60 | /* PM_PWSTST_GFX, PM_PWSTST_DSP, PM_PWSTST_MDM shared bits */ | ||
61 | #define OMAP24XX_POWERSTATEST_SHIFT 0 | ||
62 | #define OMAP24XX_POWERSTATEST_MASK (0x3 << 0) | ||
63 | |||
64 | |||
65 | /* Bits specific to each register */ | ||
66 | |||
67 | /* PRCM_REVISION */ | ||
68 | #define OMAP24XX_REV_SHIFT 0 | ||
69 | #define OMAP24XX_REV_MASK (0xff << 0) | ||
70 | |||
71 | /* PRCM_SYSCONFIG */ | ||
72 | #define OMAP24XX_AUTOIDLE (1 << 0) | ||
73 | |||
74 | /* PRCM_IRQSTATUS_MPU specific bits */ | ||
75 | #define OMAP2430_DPLL_RECAL_ST (1 << 6) | ||
76 | #define OMAP24XX_TRANSITION_ST (1 << 5) | ||
77 | #define OMAP24XX_EVGENOFF_ST (1 << 4) | ||
78 | #define OMAP24XX_EVGENON_ST (1 << 3) | ||
79 | |||
80 | /* PRCM_IRQENABLE_MPU specific bits */ | ||
81 | #define OMAP2430_DPLL_RECAL_EN (1 << 6) | ||
82 | #define OMAP24XX_TRANSITION_EN (1 << 5) | ||
83 | #define OMAP24XX_EVGENOFF_EN (1 << 4) | ||
84 | #define OMAP24XX_EVGENON_EN (1 << 3) | ||
85 | |||
86 | /* PRCM_VOLTCTRL */ | ||
87 | #define OMAP24XX_AUTO_EXTVOLT (1 << 15) | ||
88 | #define OMAP24XX_FORCE_EXTVOLT (1 << 14) | ||
89 | #define OMAP24XX_SETOFF_LEVEL_SHIFT 12 | ||
90 | #define OMAP24XX_SETOFF_LEVEL_MASK (0x3 << 12) | ||
91 | #define OMAP24XX_MEMRETCTRL (1 << 8) | ||
92 | #define OMAP24XX_SETRET_LEVEL_SHIFT 6 | ||
93 | #define OMAP24XX_SETRET_LEVEL_MASK (0x3 << 6) | ||
94 | #define OMAP24XX_VOLT_LEVEL_SHIFT 0 | ||
95 | #define OMAP24XX_VOLT_LEVEL_MASK (0x3 << 0) | ||
96 | |||
97 | /* PRCM_VOLTST */ | ||
98 | #define OMAP24XX_ST_VOLTLEVEL_SHIFT 0 | ||
99 | #define OMAP24XX_ST_VOLTLEVEL_MASK (0x3 << 0) | ||
100 | |||
101 | /* PRCM_CLKSRC_CTRL specific bits */ | ||
102 | |||
103 | /* PRCM_CLKOUT_CTRL */ | ||
104 | #define OMAP2420_CLKOUT2_EN_SHIFT 15 | ||
105 | #define OMAP2420_CLKOUT2_EN (1 << 15) | ||
106 | #define OMAP2420_CLKOUT2_DIV_SHIFT 11 | ||
107 | #define OMAP2420_CLKOUT2_DIV_MASK (0x7 << 11) | ||
108 | #define OMAP2420_CLKOUT2_SOURCE_SHIFT 8 | ||
109 | #define OMAP2420_CLKOUT2_SOURCE_MASK (0x3 << 8) | ||
110 | #define OMAP24XX_CLKOUT_EN_SHIFT 7 | ||
111 | #define OMAP24XX_CLKOUT_EN (1 << 7) | ||
112 | #define OMAP24XX_CLKOUT_DIV_SHIFT 3 | ||
113 | #define OMAP24XX_CLKOUT_DIV_MASK (0x7 << 3) | ||
114 | #define OMAP24XX_CLKOUT_SOURCE_SHIFT 0 | ||
115 | #define OMAP24XX_CLKOUT_SOURCE_MASK (0x3 << 0) | ||
116 | |||
117 | /* PRCM_CLKEMUL_CTRL */ | ||
118 | #define OMAP24XX_EMULATION_EN_SHIFT 0 | ||
119 | #define OMAP24XX_EMULATION_EN (1 << 0) | ||
120 | |||
121 | /* PRCM_CLKCFG_CTRL */ | ||
122 | #define OMAP24XX_VALID_CONFIG (1 << 0) | ||
123 | |||
124 | /* PRCM_CLKCFG_STATUS */ | ||
125 | #define OMAP24XX_CONFIG_STATUS (1 << 0) | ||
126 | |||
127 | /* PRCM_VOLTSETUP specific bits */ | ||
128 | |||
129 | /* PRCM_CLKSSETUP specific bits */ | ||
130 | |||
131 | /* PRCM_POLCTRL */ | ||
132 | #define OMAP2420_CLKOUT2_POL (1 << 10) | ||
133 | #define OMAP24XX_CLKOUT_POL (1 << 9) | ||
134 | #define OMAP24XX_CLKREQ_POL (1 << 8) | ||
135 | #define OMAP2430_USE_POWEROK (1 << 2) | ||
136 | #define OMAP2430_POWEROK_POL (1 << 1) | ||
137 | #define OMAP24XX_EXTVOL_POL (1 << 0) | ||
138 | |||
139 | /* RM_RSTST_MPU specific bits */ | ||
140 | /* 2430 calls GLOBALWMPU_RST "GLOBALWARM_RST" instead */ | ||
141 | |||
142 | /* PM_WKDEP_MPU specific bits */ | ||
143 | #define OMAP2430_PM_WKDEP_MPU_EN_MDM (1 << 5) | ||
144 | #define OMAP24XX_PM_WKDEP_MPU_EN_DSP (1 << 2) | ||
145 | |||
146 | /* PM_EVGENCTRL_MPU specific bits */ | ||
147 | |||
148 | /* PM_EVEGENONTIM_MPU specific bits */ | ||
149 | |||
150 | /* PM_EVEGENOFFTIM_MPU specific bits */ | ||
151 | |||
152 | /* PM_PWSTCTRL_MPU specific bits */ | ||
153 | #define OMAP2430_FORCESTATE (1 << 18) | ||
154 | |||
155 | /* PM_PWSTST_MPU specific bits */ | ||
156 | /* INTRANSITION, CLKACTIVITY, POWERSTATE, MEMSTATEST are 2430 only */ | ||
157 | |||
158 | /* PM_WKEN1_CORE specific bits */ | ||
159 | |||
160 | /* PM_WKEN2_CORE specific bits */ | ||
161 | |||
162 | /* PM_WKST1_CORE specific bits*/ | ||
163 | |||
164 | /* PM_WKST2_CORE specific bits */ | ||
165 | |||
166 | /* PM_WKDEP_CORE specific bits*/ | ||
167 | #define OMAP2430_PM_WKDEP_CORE_EN_MDM (1 << 5) | ||
168 | #define OMAP24XX_PM_WKDEP_CORE_EN_GFX (1 << 3) | ||
169 | #define OMAP24XX_PM_WKDEP_CORE_EN_DSP (1 << 2) | ||
170 | |||
171 | /* PM_PWSTCTRL_CORE specific bits */ | ||
172 | #define OMAP24XX_MEMORYCHANGE (1 << 20) | ||
173 | #define OMAP24XX_MEM3ONSTATE_SHIFT 14 | ||
174 | #define OMAP24XX_MEM3ONSTATE_MASK (0x3 << 14) | ||
175 | #define OMAP24XX_MEM2ONSTATE_SHIFT 12 | ||
176 | #define OMAP24XX_MEM2ONSTATE_MASK (0x3 << 12) | ||
177 | #define OMAP24XX_MEM1ONSTATE_SHIFT 10 | ||
178 | #define OMAP24XX_MEM1ONSTATE_MASK (0x3 << 10) | ||
179 | #define OMAP24XX_MEM3RETSTATE (1 << 5) | ||
180 | #define OMAP24XX_MEM2RETSTATE (1 << 4) | ||
181 | #define OMAP24XX_MEM1RETSTATE (1 << 3) | ||
182 | |||
183 | /* PM_PWSTST_CORE specific bits */ | ||
184 | #define OMAP24XX_MEM3STATEST_SHIFT 14 | ||
185 | #define OMAP24XX_MEM3STATEST_MASK (0x3 << 14) | ||
186 | #define OMAP24XX_MEM2STATEST_SHIFT 12 | ||
187 | #define OMAP24XX_MEM2STATEST_MASK (0x3 << 12) | ||
188 | #define OMAP24XX_MEM1STATEST_SHIFT 10 | ||
189 | #define OMAP24XX_MEM1STATEST_MASK (0x3 << 10) | ||
190 | |||
191 | /* RM_RSTCTRL_GFX */ | ||
192 | #define OMAP24XX_GFX_RST (1 << 0) | ||
193 | |||
194 | /* RM_RSTST_GFX specific bits */ | ||
195 | #define OMAP24XX_GFX_SW_RST (1 << 4) | ||
196 | |||
197 | /* PM_PWSTCTRL_GFX specific bits */ | ||
198 | |||
199 | /* PM_WKDEP_GFX specific bits */ | ||
200 | /* 2430 often calls EN_WAKEUP "EN_WKUP" */ | ||
201 | |||
202 | /* RM_RSTCTRL_WKUP specific bits */ | ||
203 | |||
204 | /* RM_RSTTIME_WKUP specific bits */ | ||
205 | |||
206 | /* RM_RSTST_WKUP specific bits */ | ||
207 | /* 2430 calls EXTWMPU_RST "EXTWARM_RST" and GLOBALWMPU_RST "GLOBALWARM_RST" */ | ||
208 | #define OMAP24XX_EXTWMPU_RST (1 << 6) | ||
209 | #define OMAP24XX_SECU_WD_RST (1 << 5) | ||
210 | #define OMAP24XX_MPU_WD_RST (1 << 4) | ||
211 | #define OMAP24XX_SECU_VIOL_RST (1 << 3) | ||
212 | |||
213 | /* PM_WKEN_WKUP specific bits */ | ||
214 | |||
215 | /* PM_WKST_WKUP specific bits */ | ||
216 | |||
217 | /* RM_RSTCTRL_DSP */ | ||
218 | #define OMAP2420_RST_IVA (1 << 8) | ||
219 | #define OMAP24XX_RST2_DSP (1 << 1) | ||
220 | #define OMAP24XX_RST1_DSP (1 << 0) | ||
221 | |||
222 | /* RM_RSTST_DSP specific bits */ | ||
223 | /* 2430 calls GLOBALWMPU_RST "GLOBALWARM_RST" */ | ||
224 | #define OMAP2420_IVA_SW_RST (1 << 8) | ||
225 | #define OMAP24XX_DSP_SW_RST2 (1 << 5) | ||
226 | #define OMAP24XX_DSP_SW_RST1 (1 << 4) | ||
227 | |||
228 | /* PM_WKDEP_DSP specific bits */ | ||
229 | |||
230 | /* PM_PWSTCTRL_DSP specific bits */ | ||
231 | /* 2430 only: MEMONSTATE, MEMRETSTATE */ | ||
232 | #define OMAP2420_MEMIONSTATE_SHIFT 12 | ||
233 | #define OMAP2420_MEMIONSTATE_MASK (0x3 << 12) | ||
234 | #define OMAP2420_MEMIRETSTATE (1 << 4) | ||
235 | |||
236 | /* PM_PWSTST_DSP specific bits */ | ||
237 | /* MEMSTATEST is 2430 only */ | ||
238 | #define OMAP2420_MEMISTATEST_SHIFT 12 | ||
239 | #define OMAP2420_MEMISTATEST_MASK (0x3 << 12) | ||
240 | |||
241 | /* PRCM_IRQSTATUS_DSP specific bits */ | ||
242 | |||
243 | /* PRCM_IRQENABLE_DSP specific bits */ | ||
244 | |||
245 | /* RM_RSTCTRL_MDM */ | ||
246 | /* 2430 only */ | ||
247 | #define OMAP2430_PWRON1_MDM (1 << 1) | ||
248 | #define OMAP2430_RST1_MDM (1 << 0) | ||
249 | |||
250 | /* RM_RSTST_MDM specific bits */ | ||
251 | /* 2430 only */ | ||
252 | #define OMAP2430_MDM_SECU_VIOL (1 << 6) | ||
253 | #define OMAP2430_MDM_SW_PWRON1 (1 << 5) | ||
254 | #define OMAP2430_MDM_SW_RST1 (1 << 4) | ||
255 | |||
256 | /* PM_WKEN_MDM */ | ||
257 | /* 2430 only */ | ||
258 | #define OMAP2430_PM_WKEN_MDM_EN_MDM (1 << 0) | ||
259 | |||
260 | /* PM_WKST_MDM specific bits */ | ||
261 | /* 2430 only */ | ||
262 | |||
263 | /* PM_WKDEP_MDM specific bits */ | ||
264 | /* 2430 only */ | ||
265 | |||
266 | /* PM_PWSTCTRL_MDM specific bits */ | ||
267 | /* 2430 only */ | ||
268 | #define OMAP2430_KILLDOMAINWKUP (1 << 19) | ||
269 | |||
270 | /* PM_PWSTST_MDM specific bits */ | ||
271 | /* 2430 only */ | ||
272 | |||
273 | /* PRCM_IRQSTATUS_IVA */ | ||
274 | /* 2420 only */ | ||
275 | |||
276 | /* PRCM_IRQENABLE_IVA */ | ||
277 | /* 2420 only */ | ||
278 | |||
279 | #endif | ||
diff --git a/arch/arm/mach-omap2/prm-regbits-34xx.h b/arch/arm/mach-omap2/prm-regbits-34xx.h new file mode 100644 index 000000000000..b4686bc345ca --- /dev/null +++ b/arch/arm/mach-omap2/prm-regbits-34xx.h | |||
@@ -0,0 +1,582 @@ | |||
1 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_34XX_H | ||
2 | #define __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_34XX_H | ||
3 | |||
4 | /* | ||
5 | * OMAP3430 Power/Reset Management register bits | ||
6 | * | ||
7 | * Copyright (C) 2007-2008 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007-2008 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include "prm.h" | ||
18 | |||
19 | /* Shared register bits */ | ||
20 | |||
21 | /* PRM_VC_CMD_VAL_0, PRM_VC_CMD_VAL_1 shared bits */ | ||
22 | #define OMAP3430_ON_SHIFT 24 | ||
23 | #define OMAP3430_ON_MASK (0xff << 24) | ||
24 | #define OMAP3430_ONLP_SHIFT 16 | ||
25 | #define OMAP3430_ONLP_MASK (0xff << 16) | ||
26 | #define OMAP3430_RET_SHIFT 8 | ||
27 | #define OMAP3430_RET_MASK (0xff << 8) | ||
28 | #define OMAP3430_OFF_SHIFT 0 | ||
29 | #define OMAP3430_OFF_MASK (0xff << 0) | ||
30 | |||
31 | /* PRM_VP1_CONFIG, PRM_VP2_CONFIG shared bits */ | ||
32 | #define OMAP3430_ERROROFFSET_SHIFT 24 | ||
33 | #define OMAP3430_ERROROFFSET_MASK (0xff << 24) | ||
34 | #define OMAP3430_ERRORGAIN_SHIFT 16 | ||
35 | #define OMAP3430_ERRORGAIN_MASK (0xff << 16) | ||
36 | #define OMAP3430_INITVOLTAGE_SHIFT 8 | ||
37 | #define OMAP3430_INITVOLTAGE_MASK (0xff << 8) | ||
38 | #define OMAP3430_TIMEOUTEN (1 << 3) | ||
39 | #define OMAP3430_INITVDD (1 << 2) | ||
40 | #define OMAP3430_FORCEUPDATE (1 << 1) | ||
41 | #define OMAP3430_VPENABLE (1 << 0) | ||
42 | |||
43 | /* PRM_VP1_VSTEPMIN, PRM_VP2_VSTEPMIN shared bits */ | ||
44 | #define OMAP3430_SMPSWAITTIMEMIN_SHIFT 8 | ||
45 | #define OMAP3430_SMPSWAITTIMEMIN_MASK (0xffff << 8) | ||
46 | #define OMAP3430_VSTEPMIN_SHIFT 0 | ||
47 | #define OMAP3430_VSTEPMIN_MASK (0xff << 0) | ||
48 | |||
49 | /* PRM_VP1_VSTEPMAX, PRM_VP2_VSTEPMAX shared bits */ | ||
50 | #define OMAP3430_SMPSWAITTIMEMAX_SHIFT 8 | ||
51 | #define OMAP3430_SMPSWAITTIMEMAX_MASK (0xffff << 8) | ||
52 | #define OMAP3430_VSTEPMAX_SHIFT 0 | ||
53 | #define OMAP3430_VSTEPMAX_MASK (0xff << 0) | ||
54 | |||
55 | /* PRM_VP1_VLIMITTO, PRM_VP2_VLIMITTO shared bits */ | ||
56 | #define OMAP3430_VDDMAX_SHIFT 24 | ||
57 | #define OMAP3430_VDDMAX_MASK (0xff << 24) | ||
58 | #define OMAP3430_VDDMIN_SHIFT 16 | ||
59 | #define OMAP3430_VDDMIN_MASK (0xff << 16) | ||
60 | #define OMAP3430_TIMEOUT_SHIFT 0 | ||
61 | #define OMAP3430_TIMEOUT_MASK (0xffff << 0) | ||
62 | |||
63 | /* PRM_VP1_VOLTAGE, PRM_VP2_VOLTAGE shared bits */ | ||
64 | #define OMAP3430_VPVOLTAGE_SHIFT 0 | ||
65 | #define OMAP3430_VPVOLTAGE_MASK (0xff << 0) | ||
66 | |||
67 | /* PRM_VP1_STATUS, PRM_VP2_STATUS shared bits */ | ||
68 | #define OMAP3430_VPINIDLE (1 << 0) | ||
69 | |||
70 | /* PM_WKDEP_IVA2, PM_WKDEP_MPU shared bits */ | ||
71 | #define OMAP3430_EN_PER (1 << 7) | ||
72 | |||
73 | /* PM_PWSTCTRL_IVA2, PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE shared bits */ | ||
74 | #define OMAP3430_MEMORYCHANGE (1 << 3) | ||
75 | |||
76 | /* PM_PWSTST_IVA2, PM_PWSTST_CORE shared bits */ | ||
77 | #define OMAP3430_LOGICSTATEST (1 << 2) | ||
78 | |||
79 | /* PM_PREPWSTST_IVA2, PM_PREPWSTST_CORE shared bits */ | ||
80 | #define OMAP3430_LASTLOGICSTATEENTERED (1 << 2) | ||
81 | |||
82 | /* | ||
83 | * PM_PREPWSTST_IVA2, PM_PREPWSTST_MPU, PM_PREPWSTST_CORE, | ||
84 | * PM_PREPWSTST_GFX, PM_PREPWSTST_DSS, PM_PREPWSTST_CAM, | ||
85 | * PM_PREPWSTST_PER, PM_PREPWSTST_NEON shared bits | ||
86 | */ | ||
87 | #define OMAP3430_LASTPOWERSTATEENTERED_SHIFT 0 | ||
88 | #define OMAP3430_LASTPOWERSTATEENTERED_MASK (0x3 << 0) | ||
89 | |||
90 | /* PRM_IRQSTATUS_IVA2, PRM_IRQSTATUS_MPU shared bits */ | ||
91 | #define OMAP3430_WKUP_ST (1 << 0) | ||
92 | |||
93 | /* PRM_IRQENABLE_IVA2, PRM_IRQENABLE_MPU shared bits */ | ||
94 | #define OMAP3430_WKUP_EN (1 << 0) | ||
95 | |||
96 | /* PM_MPUGRPSEL1_CORE, PM_IVA2GRPSEL1_CORE shared bits */ | ||
97 | #define OMAP3430_GRPSEL_MMC2 (1 << 25) | ||
98 | #define OMAP3430_GRPSEL_MMC1 (1 << 24) | ||
99 | #define OMAP3430_GRPSEL_MCSPI4 (1 << 21) | ||
100 | #define OMAP3430_GRPSEL_MCSPI3 (1 << 20) | ||
101 | #define OMAP3430_GRPSEL_MCSPI2 (1 << 19) | ||
102 | #define OMAP3430_GRPSEL_MCSPI1 (1 << 18) | ||
103 | #define OMAP3430_GRPSEL_I2C3 (1 << 17) | ||
104 | #define OMAP3430_GRPSEL_I2C2 (1 << 16) | ||
105 | #define OMAP3430_GRPSEL_I2C1 (1 << 15) | ||
106 | #define OMAP3430_GRPSEL_UART2 (1 << 14) | ||
107 | #define OMAP3430_GRPSEL_UART1 (1 << 13) | ||
108 | #define OMAP3430_GRPSEL_GPT11 (1 << 12) | ||
109 | #define OMAP3430_GRPSEL_GPT10 (1 << 11) | ||
110 | #define OMAP3430_GRPSEL_MCBSP5 (1 << 10) | ||
111 | #define OMAP3430_GRPSEL_MCBSP1 (1 << 9) | ||
112 | #define OMAP3430_GRPSEL_HSOTGUSB (1 << 4) | ||
113 | #define OMAP3430_GRPSEL_D2D (1 << 3) | ||
114 | |||
115 | /* | ||
116 | * PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSS, PM_PWSTCTRL_CAM, | ||
117 | * PM_PWSTCTRL_PER shared bits | ||
118 | */ | ||
119 | #define OMAP3430_MEMONSTATE_SHIFT 16 | ||
120 | #define OMAP3430_MEMONSTATE_MASK (0x3 << 16) | ||
121 | #define OMAP3430_MEMRETSTATE (1 << 8) | ||
122 | |||
123 | /* PM_MPUGRPSEL_PER, PM_IVA2GRPSEL_PER shared bits */ | ||
124 | #define OMAP3430_GRPSEL_GPIO6 (1 << 17) | ||
125 | #define OMAP3430_GRPSEL_GPIO5 (1 << 16) | ||
126 | #define OMAP3430_GRPSEL_GPIO4 (1 << 15) | ||
127 | #define OMAP3430_GRPSEL_GPIO3 (1 << 14) | ||
128 | #define OMAP3430_GRPSEL_GPIO2 (1 << 13) | ||
129 | #define OMAP3430_GRPSEL_UART3 (1 << 11) | ||
130 | #define OMAP3430_GRPSEL_GPT9 (1 << 10) | ||
131 | #define OMAP3430_GRPSEL_GPT8 (1 << 9) | ||
132 | #define OMAP3430_GRPSEL_GPT7 (1 << 8) | ||
133 | #define OMAP3430_GRPSEL_GPT6 (1 << 7) | ||
134 | #define OMAP3430_GRPSEL_GPT5 (1 << 6) | ||
135 | #define OMAP3430_GRPSEL_GPT4 (1 << 5) | ||
136 | #define OMAP3430_GRPSEL_GPT3 (1 << 4) | ||
137 | #define OMAP3430_GRPSEL_GPT2 (1 << 3) | ||
138 | #define OMAP3430_GRPSEL_MCBSP4 (1 << 2) | ||
139 | #define OMAP3430_GRPSEL_MCBSP3 (1 << 1) | ||
140 | #define OMAP3430_GRPSEL_MCBSP2 (1 << 0) | ||
141 | |||
142 | /* PM_MPUGRPSEL_WKUP, PM_IVA2GRPSEL_WKUP shared bits */ | ||
143 | #define OMAP3430_GRPSEL_IO (1 << 8) | ||
144 | #define OMAP3430_GRPSEL_SR2 (1 << 7) | ||
145 | #define OMAP3430_GRPSEL_SR1 (1 << 6) | ||
146 | #define OMAP3430_GRPSEL_GPIO1 (1 << 3) | ||
147 | #define OMAP3430_GRPSEL_GPT12 (1 << 1) | ||
148 | #define OMAP3430_GRPSEL_GPT1 (1 << 0) | ||
149 | |||
150 | /* Bits specific to each register */ | ||
151 | |||
152 | /* RM_RSTCTRL_IVA2 */ | ||
153 | #define OMAP3430_RST3_IVA2 (1 << 2) | ||
154 | #define OMAP3430_RST2_IVA2 (1 << 1) | ||
155 | #define OMAP3430_RST1_IVA2 (1 << 0) | ||
156 | |||
157 | /* RM_RSTST_IVA2 specific bits */ | ||
158 | #define OMAP3430_EMULATION_VSEQ_RST (1 << 13) | ||
159 | #define OMAP3430_EMULATION_VHWA_RST (1 << 12) | ||
160 | #define OMAP3430_EMULATION_IVA2_RST (1 << 11) | ||
161 | #define OMAP3430_IVA2_SW_RST3 (1 << 10) | ||
162 | #define OMAP3430_IVA2_SW_RST2 (1 << 9) | ||
163 | #define OMAP3430_IVA2_SW_RST1 (1 << 8) | ||
164 | |||
165 | /* PM_WKDEP_IVA2 specific bits */ | ||
166 | |||
167 | /* PM_PWSTCTRL_IVA2 specific bits */ | ||
168 | #define OMAP3430_L2FLATMEMONSTATE_SHIFT 22 | ||
169 | #define OMAP3430_L2FLATMEMONSTATE_MASK (0x3 << 22) | ||
170 | #define OMAP3430_SHAREDL2CACHEFLATONSTATE_SHIFT 20 | ||
171 | #define OMAP3430_SHAREDL2CACHEFLATONSTATE_MASK (0x3 << 20) | ||
172 | #define OMAP3430_L1FLATMEMONSTATE_SHIFT 18 | ||
173 | #define OMAP3430_L1FLATMEMONSTATE_MASK (0x3 << 18) | ||
174 | #define OMAP3430_SHAREDL1CACHEFLATONSTATE_SHIFT 16 | ||
175 | #define OMAP3430_SHAREDL1CACHEFLATONSTATE_MASK (0x3 << 16) | ||
176 | #define OMAP3430_L2FLATMEMRETSTATE (1 << 11) | ||
177 | #define OMAP3430_SHAREDL2CACHEFLATRETSTATE (1 << 10) | ||
178 | #define OMAP3430_L1FLATMEMRETSTATE (1 << 9) | ||
179 | #define OMAP3430_SHAREDL1CACHEFLATRETSTATE (1 << 8) | ||
180 | |||
181 | /* PM_PWSTST_IVA2 specific bits */ | ||
182 | #define OMAP3430_L2FLATMEMSTATEST_SHIFT 10 | ||
183 | #define OMAP3430_L2FLATMEMSTATEST_MASK (0x3 << 10) | ||
184 | #define OMAP3430_SHAREDL2CACHEFLATSTATEST_SHIFT 8 | ||
185 | #define OMAP3430_SHAREDL2CACHEFLATSTATEST_MASK (0x3 << 8) | ||
186 | #define OMAP3430_L1FLATMEMSTATEST_SHIFT 6 | ||
187 | #define OMAP3430_L1FLATMEMSTATEST_MASK (0x3 << 6) | ||
188 | #define OMAP3430_SHAREDL1CACHEFLATSTATEST_SHIFT 4 | ||
189 | #define OMAP3430_SHAREDL1CACHEFLATSTATEST_MASK (0x3 << 4) | ||
190 | |||
191 | /* PM_PREPWSTST_IVA2 specific bits */ | ||
192 | #define OMAP3430_LASTL2FLATMEMSTATEENTERED_SHIFT 10 | ||
193 | #define OMAP3430_LASTL2FLATMEMSTATEENTERED_MASK (0x3 << 10) | ||
194 | #define OMAP3430_LASTSHAREDL2CACHEFLATSTATEENTERED_SHIFT 8 | ||
195 | #define OMAP3430_LASTSHAREDL2CACHEFLATSTATEENTERED_MASK (0x3 << 8) | ||
196 | #define OMAP3430_LASTL1FLATMEMSTATEENTERED_SHIFT 6 | ||
197 | #define OMAP3430_LASTL1FLATMEMSTATEENTERED_MASK (0x3 << 6) | ||
198 | #define OMAP3430_LASTSHAREDL1CACHEFLATSTATEENTERED_SHIFT 4 | ||
199 | #define OMAP3430_LASTSHAREDL1CACHEFLATSTATEENTERED_MASK (0x3 << 4) | ||
200 | |||
201 | /* PRM_IRQSTATUS_IVA2 specific bits */ | ||
202 | #define OMAP3430_PRM_IRQSTATUS_IVA2_IVA2_DPLL_ST (1 << 2) | ||
203 | #define OMAP3430_FORCEWKUP_ST (1 << 1) | ||
204 | |||
205 | /* PRM_IRQENABLE_IVA2 specific bits */ | ||
206 | #define OMAP3430_PRM_IRQENABLE_IVA2_IVA2_DPLL_RECAL_EN (1 << 2) | ||
207 | #define OMAP3430_FORCEWKUP_EN (1 << 1) | ||
208 | |||
209 | /* PRM_REVISION specific bits */ | ||
210 | |||
211 | /* PRM_SYSCONFIG specific bits */ | ||
212 | |||
213 | /* PRM_IRQSTATUS_MPU specific bits */ | ||
214 | #define OMAP3430ES2_SND_PERIPH_DPLL_ST_SHIFT 25 | ||
215 | #define OMAP3430ES2_SND_PERIPH_DPLL_ST (1 << 25) | ||
216 | #define OMAP3430_VC_TIMEOUTERR_ST (1 << 24) | ||
217 | #define OMAP3430_VC_RAERR_ST (1 << 23) | ||
218 | #define OMAP3430_VC_SAERR_ST (1 << 22) | ||
219 | #define OMAP3430_VP2_TRANXDONE_ST (1 << 21) | ||
220 | #define OMAP3430_VP2_EQVALUE_ST (1 << 20) | ||
221 | #define OMAP3430_VP2_NOSMPSACK_ST (1 << 19) | ||
222 | #define OMAP3430_VP2_MAXVDD_ST (1 << 18) | ||
223 | #define OMAP3430_VP2_MINVDD_ST (1 << 17) | ||
224 | #define OMAP3430_VP2_OPPCHANGEDONE_ST (1 << 16) | ||
225 | #define OMAP3430_VP1_TRANXDONE_ST (1 << 15) | ||
226 | #define OMAP3430_VP1_EQVALUE_ST (1 << 14) | ||
227 | #define OMAP3430_VP1_NOSMPSACK_ST (1 << 13) | ||
228 | #define OMAP3430_VP1_MAXVDD_ST (1 << 12) | ||
229 | #define OMAP3430_VP1_MINVDD_ST (1 << 11) | ||
230 | #define OMAP3430_VP1_OPPCHANGEDONE_ST (1 << 10) | ||
231 | #define OMAP3430_IO_ST (1 << 9) | ||
232 | #define OMAP3430_PRM_IRQSTATUS_MPU_IVA2_DPLL_ST (1 << 8) | ||
233 | #define OMAP3430_PRM_IRQSTATUS_MPU_IVA2_DPLL_ST_SHIFT 8 | ||
234 | #define OMAP3430_MPU_DPLL_ST (1 << 7) | ||
235 | #define OMAP3430_MPU_DPLL_ST_SHIFT 7 | ||
236 | #define OMAP3430_PERIPH_DPLL_ST (1 << 6) | ||
237 | #define OMAP3430_PERIPH_DPLL_ST_SHIFT 6 | ||
238 | #define OMAP3430_CORE_DPLL_ST (1 << 5) | ||
239 | #define OMAP3430_CORE_DPLL_ST_SHIFT 5 | ||
240 | #define OMAP3430_TRANSITION_ST (1 << 4) | ||
241 | #define OMAP3430_EVGENOFF_ST (1 << 3) | ||
242 | #define OMAP3430_EVGENON_ST (1 << 2) | ||
243 | #define OMAP3430_FS_USB_WKUP_ST (1 << 1) | ||
244 | |||
245 | /* PRM_IRQENABLE_MPU specific bits */ | ||
246 | #define OMAP3430ES2_SND_PERIPH_DPLL_RECAL_EN_SHIFT 25 | ||
247 | #define OMAP3430ES2_SND_PERIPH_DPLL_RECAL_EN (1 << 25) | ||
248 | #define OMAP3430_VC_TIMEOUTERR_EN (1 << 24) | ||
249 | #define OMAP3430_VC_RAERR_EN (1 << 23) | ||
250 | #define OMAP3430_VC_SAERR_EN (1 << 22) | ||
251 | #define OMAP3430_VP2_TRANXDONE_EN (1 << 21) | ||
252 | #define OMAP3430_VP2_EQVALUE_EN (1 << 20) | ||
253 | #define OMAP3430_VP2_NOSMPSACK_EN (1 << 19) | ||
254 | #define OMAP3430_VP2_MAXVDD_EN (1 << 18) | ||
255 | #define OMAP3430_VP2_MINVDD_EN (1 << 17) | ||
256 | #define OMAP3430_VP2_OPPCHANGEDONE_EN (1 << 16) | ||
257 | #define OMAP3430_VP1_TRANXDONE_EN (1 << 15) | ||
258 | #define OMAP3430_VP1_EQVALUE_EN (1 << 14) | ||
259 | #define OMAP3430_VP1_NOSMPSACK_EN (1 << 13) | ||
260 | #define OMAP3430_VP1_MAXVDD_EN (1 << 12) | ||
261 | #define OMAP3430_VP1_MINVDD_EN (1 << 11) | ||
262 | #define OMAP3430_VP1_OPPCHANGEDONE_EN (1 << 10) | ||
263 | #define OMAP3430_IO_EN (1 << 9) | ||
264 | #define OMAP3430_PRM_IRQENABLE_MPU_IVA2_DPLL_RECAL_EN (1 << 8) | ||
265 | #define OMAP3430_PRM_IRQENABLE_MPU_IVA2_DPLL_RECAL_EN_SHIFT 8 | ||
266 | #define OMAP3430_MPU_DPLL_RECAL_EN (1 << 7) | ||
267 | #define OMAP3430_MPU_DPLL_RECAL_EN_SHIFT 7 | ||
268 | #define OMAP3430_PERIPH_DPLL_RECAL_EN (1 << 6) | ||
269 | #define OMAP3430_PERIPH_DPLL_RECAL_EN_SHIFT 6 | ||
270 | #define OMAP3430_CORE_DPLL_RECAL_EN (1 << 5) | ||
271 | #define OMAP3430_CORE_DPLL_RECAL_EN_SHIFT 5 | ||
272 | #define OMAP3430_TRANSITION_EN (1 << 4) | ||
273 | #define OMAP3430_EVGENOFF_EN (1 << 3) | ||
274 | #define OMAP3430_EVGENON_EN (1 << 2) | ||
275 | #define OMAP3430_FS_USB_WKUP_EN (1 << 1) | ||
276 | |||
277 | /* RM_RSTST_MPU specific bits */ | ||
278 | #define OMAP3430_EMULATION_MPU_RST (1 << 11) | ||
279 | |||
280 | /* PM_WKDEP_MPU specific bits */ | ||
281 | #define OMAP3430_PM_WKDEP_MPU_EN_DSS (1 << 5) | ||
282 | #define OMAP3430_PM_WKDEP_MPU_EN_IVA2 (1 << 2) | ||
283 | |||
284 | /* PM_EVGENCTRL_MPU */ | ||
285 | #define OMAP3430_OFFLOADMODE_SHIFT 3 | ||
286 | #define OMAP3430_OFFLOADMODE_MASK (0x3 << 3) | ||
287 | #define OMAP3430_ONLOADMODE_SHIFT 1 | ||
288 | #define OMAP3430_ONLOADMODE_MASK (0x3 << 1) | ||
289 | #define OMAP3430_ENABLE (1 << 0) | ||
290 | |||
291 | /* PM_EVGENONTIM_MPU */ | ||
292 | #define OMAP3430_ONTIMEVAL_SHIFT 0 | ||
293 | #define OMAP3430_ONTIMEVAL_MASK (0xffffffff << 0) | ||
294 | |||
295 | /* PM_EVGENOFFTIM_MPU */ | ||
296 | #define OMAP3430_OFFTIMEVAL_SHIFT 0 | ||
297 | #define OMAP3430_OFFTIMEVAL_MASK (0xffffffff << 0) | ||
298 | |||
299 | /* PM_PWSTCTRL_MPU specific bits */ | ||
300 | #define OMAP3430_L2CACHEONSTATE_SHIFT 16 | ||
301 | #define OMAP3430_L2CACHEONSTATE_MASK (0x3 << 16) | ||
302 | #define OMAP3430_L2CACHERETSTATE (1 << 8) | ||
303 | #define OMAP3430_LOGICL1CACHERETSTATE (1 << 2) | ||
304 | |||
305 | /* PM_PWSTST_MPU specific bits */ | ||
306 | #define OMAP3430_L2CACHESTATEST_SHIFT 6 | ||
307 | #define OMAP3430_L2CACHESTATEST_MASK (0x3 << 6) | ||
308 | #define OMAP3430_LOGICL1CACHESTATEST (1 << 2) | ||
309 | |||
310 | /* PM_PREPWSTST_MPU specific bits */ | ||
311 | #define OMAP3430_LASTL2CACHESTATEENTERED_SHIFT 6 | ||
312 | #define OMAP3430_LASTL2CACHESTATEENTERED_MASK (0x3 << 6) | ||
313 | #define OMAP3430_LASTLOGICL1CACHESTATEENTERED (1 << 2) | ||
314 | |||
315 | /* RM_RSTCTRL_CORE */ | ||
316 | #define OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RSTPWRON (1 << 1) | ||
317 | #define OMAP3430_RM_RSTCTRL_CORE_MODEM_SW_RST (1 << 0) | ||
318 | |||
319 | /* RM_RSTST_CORE specific bits */ | ||
320 | #define OMAP3430_MODEM_SECURITY_VIOL_RST (1 << 10) | ||
321 | #define OMAP3430_RM_RSTST_CORE_MODEM_SW_RSTPWRON (1 << 9) | ||
322 | #define OMAP3430_RM_RSTST_CORE_MODEM_SW_RST (1 << 8) | ||
323 | |||
324 | /* PM_WKEN1_CORE specific bits */ | ||
325 | |||
326 | /* PM_MPUGRPSEL1_CORE specific bits */ | ||
327 | #define OMAP3430_GRPSEL_FSHOSTUSB (1 << 5) | ||
328 | |||
329 | /* PM_IVA2GRPSEL1_CORE specific bits */ | ||
330 | |||
331 | /* PM_WKST1_CORE specific bits */ | ||
332 | |||
333 | /* PM_PWSTCTRL_CORE specific bits */ | ||
334 | #define OMAP3430_MEM2ONSTATE_SHIFT 18 | ||
335 | #define OMAP3430_MEM2ONSTATE_MASK (0x3 << 18) | ||
336 | #define OMAP3430_MEM1ONSTATE_SHIFT 16 | ||
337 | #define OMAP3430_MEM1ONSTATE_MASK (0x3 << 16) | ||
338 | #define OMAP3430_MEM2RETSTATE (1 << 9) | ||
339 | #define OMAP3430_MEM1RETSTATE (1 << 8) | ||
340 | |||
341 | /* PM_PWSTST_CORE specific bits */ | ||
342 | #define OMAP3430_MEM2STATEST_SHIFT 6 | ||
343 | #define OMAP3430_MEM2STATEST_MASK (0x3 << 6) | ||
344 | #define OMAP3430_MEM1STATEST_SHIFT 4 | ||
345 | #define OMAP3430_MEM1STATEST_MASK (0x3 << 4) | ||
346 | |||
347 | /* PM_PREPWSTST_CORE specific bits */ | ||
348 | #define OMAP3430_LASTMEM2STATEENTERED_SHIFT 6 | ||
349 | #define OMAP3430_LASTMEM2STATEENTERED_MASK (0x3 << 6) | ||
350 | #define OMAP3430_LASTMEM1STATEENTERED_SHIFT 4 | ||
351 | #define OMAP3430_LASTMEM1STATEENTERED_MASK (0x3 << 4) | ||
352 | |||
353 | /* RM_RSTST_GFX specific bits */ | ||
354 | |||
355 | /* PM_WKDEP_GFX specific bits */ | ||
356 | #define OMAP3430_PM_WKDEP_GFX_EN_IVA2 (1 << 2) | ||
357 | |||
358 | /* PM_PWSTCTRL_GFX specific bits */ | ||
359 | |||
360 | /* PM_PWSTST_GFX specific bits */ | ||
361 | |||
362 | /* PM_PREPWSTST_GFX specific bits */ | ||
363 | |||
364 | /* PM_WKEN_WKUP specific bits */ | ||
365 | #define OMAP3430_EN_IO (1 << 8) | ||
366 | |||
367 | /* PM_MPUGRPSEL_WKUP specific bits */ | ||
368 | |||
369 | /* PM_IVA2GRPSEL_WKUP specific bits */ | ||
370 | |||
371 | /* PM_WKST_WKUP specific bits */ | ||
372 | #define OMAP3430_ST_IO (1 << 8) | ||
373 | |||
374 | /* PRM_CLKSEL */ | ||
375 | #define OMAP3430_SYS_CLKIN_SEL_SHIFT 0 | ||
376 | #define OMAP3430_SYS_CLKIN_SEL_MASK (0x7 << 0) | ||
377 | |||
378 | /* PRM_CLKOUT_CTRL */ | ||
379 | #define OMAP3430_CLKOUT_EN (1 << 7) | ||
380 | #define OMAP3430_CLKOUT_EN_SHIFT 7 | ||
381 | |||
382 | /* RM_RSTST_DSS specific bits */ | ||
383 | |||
384 | /* PM_WKEN_DSS */ | ||
385 | #define OMAP3430_PM_WKEN_DSS_EN_DSS (1 << 0) | ||
386 | |||
387 | /* PM_WKDEP_DSS specific bits */ | ||
388 | #define OMAP3430_PM_WKDEP_DSS_EN_IVA2 (1 << 2) | ||
389 | |||
390 | /* PM_PWSTCTRL_DSS specific bits */ | ||
391 | |||
392 | /* PM_PWSTST_DSS specific bits */ | ||
393 | |||
394 | /* PM_PREPWSTST_DSS specific bits */ | ||
395 | |||
396 | /* RM_RSTST_CAM specific bits */ | ||
397 | |||
398 | /* PM_WKDEP_CAM specific bits */ | ||
399 | #define OMAP3430_PM_WKDEP_CAM_EN_IVA2 (1 << 2) | ||
400 | |||
401 | /* PM_PWSTCTRL_CAM specific bits */ | ||
402 | |||
403 | /* PM_PWSTST_CAM specific bits */ | ||
404 | |||
405 | /* PM_PREPWSTST_CAM specific bits */ | ||
406 | |||
407 | /* PM_PWSTCTRL_USBHOST specific bits */ | ||
408 | #define OMAP3430ES2_SAVEANDRESTORE_SHIFT (1 << 4) | ||
409 | |||
410 | /* RM_RSTST_PER specific bits */ | ||
411 | |||
412 | /* PM_WKEN_PER specific bits */ | ||
413 | |||
414 | /* PM_MPUGRPSEL_PER specific bits */ | ||
415 | |||
416 | /* PM_IVA2GRPSEL_PER specific bits */ | ||
417 | |||
418 | /* PM_WKST_PER specific bits */ | ||
419 | |||
420 | /* PM_WKDEP_PER specific bits */ | ||
421 | #define OMAP3430_PM_WKDEP_PER_EN_IVA2 (1 << 2) | ||
422 | |||
423 | /* PM_PWSTCTRL_PER specific bits */ | ||
424 | |||
425 | /* PM_PWSTST_PER specific bits */ | ||
426 | |||
427 | /* PM_PREPWSTST_PER specific bits */ | ||
428 | |||
429 | /* RM_RSTST_EMU specific bits */ | ||
430 | |||
431 | /* PM_PWSTST_EMU specific bits */ | ||
432 | |||
433 | /* PRM_VC_SMPS_SA */ | ||
434 | #define OMAP3430_PRM_VC_SMPS_SA_SA1_SHIFT 16 | ||
435 | #define OMAP3430_PRM_VC_SMPS_SA_SA1_MASK (0x7f << 16) | ||
436 | #define OMAP3430_PRM_VC_SMPS_SA_SA0_SHIFT 0 | ||
437 | #define OMAP3430_PRM_VC_SMPS_SA_SA0_MASK (0x7f << 0) | ||
438 | |||
439 | /* PRM_VC_SMPS_VOL_RA */ | ||
440 | #define OMAP3430_VOLRA1_SHIFT 16 | ||
441 | #define OMAP3430_VOLRA1_MASK (0xff << 16) | ||
442 | #define OMAP3430_VOLRA0_SHIFT 0 | ||
443 | #define OMAP3430_VOLRA0_MASK (0xff << 0) | ||
444 | |||
445 | /* PRM_VC_SMPS_CMD_RA */ | ||
446 | #define OMAP3430_CMDRA1_SHIFT 16 | ||
447 | #define OMAP3430_CMDRA1_MASK (0xff << 16) | ||
448 | #define OMAP3430_CMDRA0_SHIFT 0 | ||
449 | #define OMAP3430_CMDRA0_MASK (0xff << 0) | ||
450 | |||
451 | /* PRM_VC_CMD_VAL_0 specific bits */ | ||
452 | |||
453 | /* PRM_VC_CMD_VAL_1 specific bits */ | ||
454 | |||
455 | /* PRM_VC_CH_CONF */ | ||
456 | #define OMAP3430_CMD1 (1 << 20) | ||
457 | #define OMAP3430_RACEN1 (1 << 19) | ||
458 | #define OMAP3430_RAC1 (1 << 18) | ||
459 | #define OMAP3430_RAV1 (1 << 17) | ||
460 | #define OMAP3430_PRM_VC_CH_CONF_SA1 (1 << 16) | ||
461 | #define OMAP3430_CMD0 (1 << 4) | ||
462 | #define OMAP3430_RACEN0 (1 << 3) | ||
463 | #define OMAP3430_RAC0 (1 << 2) | ||
464 | #define OMAP3430_RAV0 (1 << 1) | ||
465 | #define OMAP3430_PRM_VC_CH_CONF_SA0 (1 << 0) | ||
466 | |||
467 | /* PRM_VC_I2C_CFG */ | ||
468 | #define OMAP3430_HSMASTER (1 << 5) | ||
469 | #define OMAP3430_SREN (1 << 4) | ||
470 | #define OMAP3430_HSEN (1 << 3) | ||
471 | #define OMAP3430_MCODE_SHIFT 0 | ||
472 | #define OMAP3430_MCODE_MASK (0x7 << 0) | ||
473 | |||
474 | /* PRM_VC_BYPASS_VAL */ | ||
475 | #define OMAP3430_VALID (1 << 24) | ||
476 | #define OMAP3430_DATA_SHIFT 16 | ||
477 | #define OMAP3430_DATA_MASK (0xff << 16) | ||
478 | #define OMAP3430_REGADDR_SHIFT 8 | ||
479 | #define OMAP3430_REGADDR_MASK (0xff << 8) | ||
480 | #define OMAP3430_SLAVEADDR_SHIFT 0 | ||
481 | #define OMAP3430_SLAVEADDR_MASK (0x7f << 0) | ||
482 | |||
483 | /* PRM_RSTCTRL */ | ||
484 | #define OMAP3430_RST_DPLL3 (1 << 2) | ||
485 | #define OMAP3430_RST_GS (1 << 1) | ||
486 | |||
487 | /* PRM_RSTTIME */ | ||
488 | #define OMAP3430_RSTTIME2_SHIFT 8 | ||
489 | #define OMAP3430_RSTTIME2_MASK (0x1f << 8) | ||
490 | #define OMAP3430_RSTTIME1_SHIFT 0 | ||
491 | #define OMAP3430_RSTTIME1_MASK (0xff << 0) | ||
492 | |||
493 | /* PRM_RSTST */ | ||
494 | #define OMAP3430_ICECRUSHER_RST (1 << 10) | ||
495 | #define OMAP3430_ICEPICK_RST (1 << 9) | ||
496 | #define OMAP3430_VDD2_VOLTAGE_MANAGER_RST (1 << 8) | ||
497 | #define OMAP3430_VDD1_VOLTAGE_MANAGER_RST (1 << 7) | ||
498 | #define OMAP3430_EXTERNAL_WARM_RST (1 << 6) | ||
499 | #define OMAP3430_SECURE_WD_RST (1 << 5) | ||
500 | #define OMAP3430_MPU_WD_RST (1 << 4) | ||
501 | #define OMAP3430_SECURITY_VIOL_RST (1 << 3) | ||
502 | #define OMAP3430_GLOBAL_SW_RST (1 << 1) | ||
503 | #define OMAP3430_GLOBAL_COLD_RST (1 << 0) | ||
504 | |||
505 | /* PRM_VOLTCTRL */ | ||
506 | #define OMAP3430_SEL_VMODE (1 << 4) | ||
507 | #define OMAP3430_SEL_OFF (1 << 3) | ||
508 | #define OMAP3430_AUTO_OFF (1 << 2) | ||
509 | #define OMAP3430_AUTO_RET (1 << 1) | ||
510 | #define OMAP3430_AUTO_SLEEP (1 << 0) | ||
511 | |||
512 | /* PRM_SRAM_PCHARGE */ | ||
513 | #define OMAP3430_PCHARGE_TIME_SHIFT 0 | ||
514 | #define OMAP3430_PCHARGE_TIME_MASK (0xff << 0) | ||
515 | |||
516 | /* PRM_CLKSRC_CTRL */ | ||
517 | #define OMAP3430_SYSCLKDIV_SHIFT 6 | ||
518 | #define OMAP3430_SYSCLKDIV_MASK (0x3 << 6) | ||
519 | #define OMAP3430_AUTOEXTCLKMODE_SHIFT 3 | ||
520 | #define OMAP3430_AUTOEXTCLKMODE_MASK (0x3 << 3) | ||
521 | #define OMAP3430_SYSCLKSEL_SHIFT 0 | ||
522 | #define OMAP3430_SYSCLKSEL_MASK (0x3 << 0) | ||
523 | |||
524 | /* PRM_VOLTSETUP1 */ | ||
525 | #define OMAP3430_SETUP_TIME2_SHIFT 16 | ||
526 | #define OMAP3430_SETUP_TIME2_MASK (0xffff << 16) | ||
527 | #define OMAP3430_SETUP_TIME1_SHIFT 0 | ||
528 | #define OMAP3430_SETUP_TIME1_MASK (0xffff << 0) | ||
529 | |||
530 | /* PRM_VOLTOFFSET */ | ||
531 | #define OMAP3430_OFFSET_TIME_SHIFT 0 | ||
532 | #define OMAP3430_OFFSET_TIME_MASK (0xffff << 0) | ||
533 | |||
534 | /* PRM_CLKSETUP */ | ||
535 | #define OMAP3430_SETUP_TIME_SHIFT 0 | ||
536 | #define OMAP3430_SETUP_TIME_MASK (0xffff << 0) | ||
537 | |||
538 | /* PRM_POLCTRL */ | ||
539 | #define OMAP3430_OFFMODE_POL (1 << 3) | ||
540 | #define OMAP3430_CLKOUT_POL (1 << 2) | ||
541 | #define OMAP3430_CLKREQ_POL (1 << 1) | ||
542 | #define OMAP3430_EXTVOL_POL (1 << 0) | ||
543 | |||
544 | /* PRM_VOLTSETUP2 */ | ||
545 | #define OMAP3430_OFFMODESETUPTIME_SHIFT 0 | ||
546 | #define OMAP3430_OFFMODESETUPTIME_MASK (0xffff << 0) | ||
547 | |||
548 | /* PRM_VP1_CONFIG specific bits */ | ||
549 | |||
550 | /* PRM_VP1_VSTEPMIN specific bits */ | ||
551 | |||
552 | /* PRM_VP1_VSTEPMAX specific bits */ | ||
553 | |||
554 | /* PRM_VP1_VLIMITTO specific bits */ | ||
555 | |||
556 | /* PRM_VP1_VOLTAGE specific bits */ | ||
557 | |||
558 | /* PRM_VP1_STATUS specific bits */ | ||
559 | |||
560 | /* PRM_VP2_CONFIG specific bits */ | ||
561 | |||
562 | /* PRM_VP2_VSTEPMIN specific bits */ | ||
563 | |||
564 | /* PRM_VP2_VSTEPMAX specific bits */ | ||
565 | |||
566 | /* PRM_VP2_VLIMITTO specific bits */ | ||
567 | |||
568 | /* PRM_VP2_VOLTAGE specific bits */ | ||
569 | |||
570 | /* PRM_VP2_STATUS specific bits */ | ||
571 | |||
572 | /* RM_RSTST_NEON specific bits */ | ||
573 | |||
574 | /* PM_WKDEP_NEON specific bits */ | ||
575 | |||
576 | /* PM_PWSTCTRL_NEON specific bits */ | ||
577 | |||
578 | /* PM_PWSTST_NEON specific bits */ | ||
579 | |||
580 | /* PM_PREPWSTST_NEON specific bits */ | ||
581 | |||
582 | #endif | ||
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h new file mode 100644 index 000000000000..ab7649afd891 --- /dev/null +++ b/arch/arm/mach-omap2/prm.h | |||
@@ -0,0 +1,316 @@ | |||
1 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM_H | ||
2 | #define __ARCH_ARM_MACH_OMAP2_PRM_H | ||
3 | |||
4 | /* | ||
5 | * OMAP2/3 Power/Reset Management (PRM) register definitions | ||
6 | * | ||
7 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include "prcm-common.h" | ||
18 | |||
19 | #ifndef __ASSEMBLER__ | ||
20 | #define OMAP_PRM_REGADDR(module, reg) \ | ||
21 | (void __iomem *)IO_ADDRESS(OMAP2_PRM_BASE + (module) + (reg)) | ||
22 | #else | ||
23 | #define OMAP2420_PRM_REGADDR(module, reg) \ | ||
24 | IO_ADDRESS(OMAP2420_PRM_BASE + (module) + (reg)) | ||
25 | #define OMAP2430_PRM_REGADDR(module, reg) \ | ||
26 | IO_ADDRESS(OMAP2430_PRM_BASE + (module) + (reg)) | ||
27 | #define OMAP34XX_PRM_REGADDR(module, reg) \ | ||
28 | IO_ADDRESS(OMAP3430_PRM_BASE + (module) + (reg)) | ||
29 | #endif | ||
30 | |||
31 | /* | ||
32 | * Architecture-specific global PRM registers | ||
33 | * Use prm_{read,write}_reg() with these registers. | ||
34 | * | ||
35 | * With a few exceptions, these are the register names beginning with | ||
36 | * PRCM_* on 24xx, and PRM_* on 34xx. (The exceptions are the | ||
37 | * IRQSTATUS and IRQENABLE bits.) | ||
38 | * | ||
39 | */ | ||
40 | |||
41 | #define OMAP24XX_PRCM_REVISION OMAP_PRM_REGADDR(OCP_MOD, 0x0000) | ||
42 | #define OMAP24XX_PRCM_SYSCONFIG OMAP_PRM_REGADDR(OCP_MOD, 0x0010) | ||
43 | |||
44 | #define OMAP24XX_PRCM_IRQSTATUS_MPU OMAP_PRM_REGADDR(OCP_MOD, 0x0018) | ||
45 | #define OMAP24XX_PRCM_IRQENABLE_MPU OMAP_PRM_REGADDR(OCP_MOD, 0x001c) | ||
46 | |||
47 | #define OMAP24XX_PRCM_VOLTCTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0050) | ||
48 | #define OMAP24XX_PRCM_VOLTST OMAP_PRM_REGADDR(OCP_MOD, 0x0054) | ||
49 | #define OMAP24XX_PRCM_CLKSRC_CTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0060) | ||
50 | #define OMAP24XX_PRCM_CLKOUT_CTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0070) | ||
51 | #define OMAP24XX_PRCM_CLKEMUL_CTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0078) | ||
52 | #define OMAP24XX_PRCM_CLKCFG_CTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0080) | ||
53 | #define OMAP24XX_PRCM_CLKCFG_STATUS OMAP_PRM_REGADDR(OCP_MOD, 0x0084) | ||
54 | #define OMAP24XX_PRCM_VOLTSETUP OMAP_PRM_REGADDR(OCP_MOD, 0x0090) | ||
55 | #define OMAP24XX_PRCM_CLKSSETUP OMAP_PRM_REGADDR(OCP_MOD, 0x0094) | ||
56 | #define OMAP24XX_PRCM_POLCTRL OMAP_PRM_REGADDR(OCP_MOD, 0x0098) | ||
57 | |||
58 | #define OMAP3430_PRM_REVISION OMAP_PRM_REGADDR(OCP_MOD, 0x0004) | ||
59 | #define OMAP3430_PRM_SYSCONFIG OMAP_PRM_REGADDR(OCP_MOD, 0x0014) | ||
60 | |||
61 | #define OMAP3430_PRM_IRQSTATUS_MPU OMAP_PRM_REGADDR(OCP_MOD, 0x0018) | ||
62 | #define OMAP3430_PRM_IRQENABLE_MPU OMAP_PRM_REGADDR(OCP_MOD, 0x001c) | ||
63 | |||
64 | |||
65 | #define OMAP3430_PRM_VC_SMPS_SA OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0020) | ||
66 | #define OMAP3430_PRM_VC_SMPS_VOL_RA OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0024) | ||
67 | #define OMAP3430_PRM_VC_SMPS_CMD_RA OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0028) | ||
68 | #define OMAP3430_PRM_VC_CMD_VAL_0 OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x002c) | ||
69 | #define OMAP3430_PRM_VC_CMD_VAL_1 OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0030) | ||
70 | #define OMAP3430_PRM_VC_CH_CONF OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0034) | ||
71 | #define OMAP3430_PRM_VC_I2C_CFG OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0038) | ||
72 | #define OMAP3430_PRM_VC_BYPASS_VAL OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x003c) | ||
73 | #define OMAP3430_PRM_RSTCTRL OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0050) | ||
74 | #define OMAP3430_PRM_RSTTIME OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0054) | ||
75 | #define OMAP3430_PRM_RSTST OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0058) | ||
76 | #define OMAP3430_PRM_VOLTCTRL OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0060) | ||
77 | #define OMAP3430_PRM_SRAM_PCHARGE OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0064) | ||
78 | #define OMAP3430_PRM_CLKSRC_CTRL OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0070) | ||
79 | #define OMAP3430_PRM_VOLTSETUP1 OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0090) | ||
80 | #define OMAP3430_PRM_VOLTOFFSET OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0094) | ||
81 | #define OMAP3430_PRM_CLKSETUP OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x0098) | ||
82 | #define OMAP3430_PRM_POLCTRL OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x009c) | ||
83 | #define OMAP3430_PRM_VOLTSETUP2 OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00a0) | ||
84 | #define OMAP3430_PRM_VP1_CONFIG OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00b0) | ||
85 | #define OMAP3430_PRM_VP1_VSTEPMIN OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00b4) | ||
86 | #define OMAP3430_PRM_VP1_VSTEPMAX OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00b8) | ||
87 | #define OMAP3430_PRM_VP1_VLIMITTO OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00bc) | ||
88 | #define OMAP3430_PRM_VP1_VOLTAGE OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00c0) | ||
89 | #define OMAP3430_PRM_VP1_STATUS OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00c4) | ||
90 | #define OMAP3430_PRM_VP2_CONFIG OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00d0) | ||
91 | #define OMAP3430_PRM_VP2_VSTEPMIN OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00d4) | ||
92 | #define OMAP3430_PRM_VP2_VSTEPMAX OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00d8) | ||
93 | #define OMAP3430_PRM_VP2_VLIMITTO OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00dc) | ||
94 | #define OMAP3430_PRM_VP2_VOLTAGE OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00e0) | ||
95 | #define OMAP3430_PRM_VP2_STATUS OMAP_PRM_REGADDR(OMAP3430_GR_MOD, 0x00e4) | ||
96 | |||
97 | #define OMAP3430_PRM_CLKSEL OMAP_PRM_REGADDR(OMAP3430_CCR_MOD, 0x0040) | ||
98 | #define OMAP3430_PRM_CLKOUT_CTRL OMAP_PRM_REGADDR(OMAP3430_CCR_MOD, 0x0070) | ||
99 | |||
100 | /* | ||
101 | * Module specific PRM registers from PRM_BASE + domain offset | ||
102 | * | ||
103 | * Use prm_{read,write}_mod_reg() with these registers. | ||
104 | * | ||
105 | * With a few exceptions, these are the register names beginning with | ||
106 | * {PM,RM}_* on both architectures. (The exceptions are the IRQSTATUS | ||
107 | * and IRQENABLE bits.) | ||
108 | * | ||
109 | */ | ||
110 | |||
111 | /* Registers appearing on both 24xx and 34xx */ | ||
112 | |||
113 | #define RM_RSTCTRL 0x0050 | ||
114 | #define RM_RSTTIME 0x0054 | ||
115 | #define RM_RSTST 0x0058 | ||
116 | |||
117 | #define PM_WKEN 0x00a0 | ||
118 | #define PM_WKEN1 PM_WKEN | ||
119 | #define PM_WKST 0x00b0 | ||
120 | #define PM_WKST1 PM_WKST | ||
121 | #define PM_WKDEP 0x00c8 | ||
122 | #define PM_EVGENCTRL 0x00d4 | ||
123 | #define PM_EVGENONTIM 0x00d8 | ||
124 | #define PM_EVGENOFFTIM 0x00dc | ||
125 | #define PM_PWSTCTRL 0x00e0 | ||
126 | #define PM_PWSTST 0x00e4 | ||
127 | |||
128 | #define OMAP3430_PM_MPUGRPSEL 0x00a4 | ||
129 | #define OMAP3430_PM_MPUGRPSEL1 OMAP3430_PM_MPUGRPSEL | ||
130 | |||
131 | #define OMAP3430_PM_IVAGRPSEL 0x00a8 | ||
132 | #define OMAP3430_PM_IVAGRPSEL1 OMAP3430_PM_IVAGRPSEL | ||
133 | |||
134 | #define OMAP3430_PM_PREPWSTST 0x00e8 | ||
135 | |||
136 | #define OMAP3430_PRM_IRQSTATUS_IVA2 0x00f8 | ||
137 | #define OMAP3430_PRM_IRQENABLE_IVA2 0x00fc | ||
138 | |||
139 | |||
140 | /* Architecture-specific registers */ | ||
141 | |||
142 | #define OMAP24XX_PM_WKEN2 0x00a4 | ||
143 | #define OMAP24XX_PM_WKST2 0x00b4 | ||
144 | |||
145 | #define OMAP24XX_PRCM_IRQSTATUS_DSP 0x00f0 /* IVA mod */ | ||
146 | #define OMAP24XX_PRCM_IRQENABLE_DSP 0x00f4 /* IVA mod */ | ||
147 | #define OMAP24XX_PRCM_IRQSTATUS_IVA 0x00f8 | ||
148 | #define OMAP24XX_PRCM_IRQENABLE_IVA 0x00fc | ||
149 | |||
150 | #ifndef __ASSEMBLER__ | ||
151 | |||
152 | /* Power/reset management domain register get/set */ | ||
153 | |||
154 | static inline void prm_write_mod_reg(u32 val, s16 module, s16 idx) | ||
155 | { | ||
156 | __raw_writel(val, OMAP_PRM_REGADDR(module, idx)); | ||
157 | } | ||
158 | |||
159 | static inline u32 prm_read_mod_reg(s16 module, s16 idx) | ||
160 | { | ||
161 | return __raw_readl(OMAP_PRM_REGADDR(module, idx)); | ||
162 | } | ||
163 | |||
164 | #endif | ||
165 | |||
166 | /* | ||
167 | * Bits common to specific registers | ||
168 | * | ||
169 | * The 3430 register and bit names are generally used, | ||
170 | * since they tend to make more sense | ||
171 | */ | ||
172 | |||
173 | /* PM_EVGENONTIM_MPU */ | ||
174 | /* Named PM_EVEGENONTIM_MPU on the 24XX */ | ||
175 | #define OMAP_ONTIMEVAL_SHIFT 0 | ||
176 | #define OMAP_ONTIMEVAL_MASK (0xffffffff << 0) | ||
177 | |||
178 | /* PM_EVGENOFFTIM_MPU */ | ||
179 | /* Named PM_EVEGENOFFTIM_MPU on the 24XX */ | ||
180 | #define OMAP_OFFTIMEVAL_SHIFT 0 | ||
181 | #define OMAP_OFFTIMEVAL_MASK (0xffffffff << 0) | ||
182 | |||
183 | /* PRM_CLKSETUP and PRCM_VOLTSETUP */ | ||
184 | /* Named PRCM_CLKSSETUP on the 24XX */ | ||
185 | #define OMAP_SETUP_TIME_SHIFT 0 | ||
186 | #define OMAP_SETUP_TIME_MASK (0xffff << 0) | ||
187 | |||
188 | /* PRM_CLKSRC_CTRL */ | ||
189 | /* Named PRCM_CLKSRC_CTRL on the 24XX */ | ||
190 | #define OMAP_SYSCLKDIV_SHIFT 6 | ||
191 | #define OMAP_SYSCLKDIV_MASK (0x3 << 6) | ||
192 | #define OMAP_AUTOEXTCLKMODE_SHIFT 3 | ||
193 | #define OMAP_AUTOEXTCLKMODE_MASK (0x3 << 3) | ||
194 | #define OMAP_SYSCLKSEL_SHIFT 0 | ||
195 | #define OMAP_SYSCLKSEL_MASK (0x3 << 0) | ||
196 | |||
197 | /* PM_EVGENCTRL_MPU */ | ||
198 | #define OMAP_OFFLOADMODE_SHIFT 3 | ||
199 | #define OMAP_OFFLOADMODE_MASK (0x3 << 3) | ||
200 | #define OMAP_ONLOADMODE_SHIFT 1 | ||
201 | #define OMAP_ONLOADMODE_MASK (0x3 << 1) | ||
202 | #define OMAP_ENABLE (1 << 0) | ||
203 | |||
204 | /* PRM_RSTTIME */ | ||
205 | /* Named RM_RSTTIME_WKUP on the 24xx */ | ||
206 | #define OMAP_RSTTIME2_SHIFT 8 | ||
207 | #define OMAP_RSTTIME2_MASK (0x1f << 8) | ||
208 | #define OMAP_RSTTIME1_SHIFT 0 | ||
209 | #define OMAP_RSTTIME1_MASK (0xff << 0) | ||
210 | |||
211 | |||
212 | /* PRM_RSTCTRL */ | ||
213 | /* Named RM_RSTCTRL_WKUP on the 24xx */ | ||
214 | /* 2420 calls RST_DPLL3 'RST_DPLL' */ | ||
215 | #define OMAP_RST_DPLL3 (1 << 2) | ||
216 | #define OMAP_RST_GS (1 << 1) | ||
217 | |||
218 | |||
219 | /* | ||
220 | * Bits common to module-shared registers | ||
221 | * | ||
222 | * Not all registers of a particular type support all of these bits - | ||
223 | * check TRM if you are unsure | ||
224 | */ | ||
225 | |||
226 | /* | ||
227 | * 24XX: PM_PWSTST_CORE, PM_PWSTST_GFX, PM_PWSTST_MPU, PM_PWSTST_DSP | ||
228 | * | ||
229 | * 2430: PM_PWSTST_MDM | ||
230 | * | ||
231 | * 3430: PM_PWSTST_IVA2, PM_PWSTST_MPU, PM_PWSTST_CORE, PM_PWSTST_GFX, | ||
232 | * PM_PWSTST_DSS, PM_PWSTST_CAM, PM_PWSTST_PER, PM_PWSTST_EMU, | ||
233 | * PM_PWSTST_NEON | ||
234 | */ | ||
235 | #define OMAP_INTRANSITION (1 << 20) | ||
236 | |||
237 | |||
238 | /* | ||
239 | * 24XX: PM_PWSTST_GFX, PM_PWSTST_DSP | ||
240 | * | ||
241 | * 2430: PM_PWSTST_MDM | ||
242 | * | ||
243 | * 3430: PM_PWSTST_IVA2, PM_PWSTST_MPU, PM_PWSTST_CORE, PM_PWSTST_GFX, | ||
244 | * PM_PWSTST_DSS, PM_PWSTST_CAM, PM_PWSTST_PER, PM_PWSTST_EMU, | ||
245 | * PM_PWSTST_NEON | ||
246 | */ | ||
247 | #define OMAP_POWERSTATEST_SHIFT 0 | ||
248 | #define OMAP_POWERSTATEST_MASK (0x3 << 0) | ||
249 | |||
250 | /* | ||
251 | * 24XX: RM_RSTST_MPU and RM_RSTST_DSP - on 24XX, 'COREDOMAINWKUP_RST' is | ||
252 | * called 'COREWKUP_RST' | ||
253 | * | ||
254 | * 3430: RM_RSTST_IVA2, RM_RSTST_MPU, RM_RSTST_GFX, RM_RSTST_DSS, | ||
255 | * RM_RSTST_CAM, RM_RSTST_PER, RM_RSTST_NEON | ||
256 | */ | ||
257 | #define OMAP_COREDOMAINWKUP_RST (1 << 3) | ||
258 | |||
259 | /* | ||
260 | * 24XX: RM_RSTST_MPU, RM_RSTST_GFX, RM_RSTST_DSP | ||
261 | * | ||
262 | * 2430: RM_RSTST_MDM | ||
263 | * | ||
264 | * 3430: RM_RSTST_CORE, RM_RSTST_EMU | ||
265 | */ | ||
266 | #define OMAP_DOMAINWKUP_RST (1 << 2) | ||
267 | |||
268 | /* | ||
269 | * 24XX: RM_RSTST_MPU, RM_RSTST_WKUP, RM_RSTST_DSP | ||
270 | * On 24XX, 'GLOBALWARM_RST' is called 'GLOBALWMPU_RST'. | ||
271 | * | ||
272 | * 2430: RM_RSTST_MDM | ||
273 | * | ||
274 | * 3430: RM_RSTST_CORE, RM_RSTST_EMU | ||
275 | */ | ||
276 | #define OMAP_GLOBALWARM_RST (1 << 1) | ||
277 | #define OMAP_GLOBALCOLD_RST (1 << 0) | ||
278 | |||
279 | /* | ||
280 | * 24XX: PM_WKDEP_GFX, PM_WKDEP_MPU, PM_WKDEP_CORE, PM_WKDEP_DSP | ||
281 | * 2420 TRM sometimes uses "EN_WAKEUP" instead of "EN_WKUP" | ||
282 | * | ||
283 | * 2430: PM_WKDEP_MDM | ||
284 | * | ||
285 | * 3430: PM_WKDEP_IVA2, PM_WKDEP_GFX, PM_WKDEP_DSS, PM_WKDEP_CAM, | ||
286 | * PM_WKDEP_PER | ||
287 | */ | ||
288 | #define OMAP_EN_WKUP (1 << 4) | ||
289 | |||
290 | /* | ||
291 | * 24XX: PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE, PM_PWSTCTRL_GFX, | ||
292 | * PM_PWSTCTRL_DSP | ||
293 | * | ||
294 | * 2430: PM_PWSTCTRL_MDM | ||
295 | * | ||
296 | * 3430: PM_PWSTCTRL_IVA2, PM_PWSTCTRL_CORE, PM_PWSTCTRL_GFX, | ||
297 | * PM_PWSTCTRL_DSS, PM_PWSTCTRL_CAM, PM_PWSTCTRL_PER, | ||
298 | * PM_PWSTCTRL_NEON | ||
299 | */ | ||
300 | #define OMAP_LOGICRETSTATE (1 << 2) | ||
301 | |||
302 | /* | ||
303 | * 24XX: PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE, PM_PWSTCTRL_GFX, | ||
304 | * PM_PWSTCTRL_DSP, PM_PWSTST_MPU | ||
305 | * | ||
306 | * 2430: PM_PWSTCTRL_MDM shared bits | ||
307 | * | ||
308 | * 3430: PM_PWSTCTRL_IVA2, PM_PWSTCTRL_MPU, PM_PWSTCTRL_CORE, | ||
309 | * PM_PWSTCTRL_GFX, PM_PWSTCTRL_DSS, PM_PWSTCTRL_CAM, PM_PWSTCTRL_PER, | ||
310 | * PM_PWSTCTRL_NEON shared bits | ||
311 | */ | ||
312 | #define OMAP_POWERSTATE_SHIFT 0 | ||
313 | #define OMAP_POWERSTATE_MASK (0x3 << 0) | ||
314 | |||
315 | |||
316 | #endif | ||
diff --git a/arch/arm/mach-omap2/sdrc.h b/arch/arm/mach-omap2/sdrc.h new file mode 100644 index 000000000000..d7f23bc9550a --- /dev/null +++ b/arch/arm/mach-omap2/sdrc.h | |||
@@ -0,0 +1,58 @@ | |||
1 | #ifndef __ARCH_ARM_MACH_OMAP2_SDRC_H | ||
2 | #define __ARCH_ARM_MACH_OMAP2_SDRC_H | ||
3 | |||
4 | /* | ||
5 | * OMAP2 SDRC register definitions | ||
6 | * | ||
7 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | #undef DEBUG | ||
17 | |||
18 | #include <asm/arch/sdrc.h> | ||
19 | |||
20 | #ifndef __ASSEMBLER__ | ||
21 | extern unsigned long omap2_sdrc_base; | ||
22 | extern unsigned long omap2_sms_base; | ||
23 | |||
24 | #define OMAP_SDRC_REGADDR(reg) \ | ||
25 | (void __iomem *)IO_ADDRESS(omap2_sdrc_base + (reg)) | ||
26 | #define OMAP_SMS_REGADDR(reg) \ | ||
27 | (void __iomem *)IO_ADDRESS(omap2_sms_base + (reg)) | ||
28 | |||
29 | /* SDRC global register get/set */ | ||
30 | |||
31 | static inline void sdrc_write_reg(u32 val, u16 reg) | ||
32 | { | ||
33 | __raw_writel(val, OMAP_SDRC_REGADDR(reg)); | ||
34 | } | ||
35 | |||
36 | static inline u32 sdrc_read_reg(u16 reg) | ||
37 | { | ||
38 | return __raw_readl(OMAP_SDRC_REGADDR(reg)); | ||
39 | } | ||
40 | |||
41 | /* SMS global register get/set */ | ||
42 | |||
43 | static inline void sms_write_reg(u32 val, u16 reg) | ||
44 | { | ||
45 | __raw_writel(val, OMAP_SMS_REGADDR(reg)); | ||
46 | } | ||
47 | |||
48 | static inline u32 sms_read_reg(u16 reg) | ||
49 | { | ||
50 | return __raw_readl(OMAP_SMS_REGADDR(reg)); | ||
51 | } | ||
52 | #else | ||
53 | #define OMAP242X_SDRC_REGADDR(reg) IO_ADDRESS(OMAP2420_SDRC_BASE + (reg)) | ||
54 | #define OMAP243X_SDRC_REGADDR(reg) IO_ADDRESS(OMAP243X_SDRC_BASE + (reg)) | ||
55 | #define OMAP34XX_SDRC_REGADDR(reg) IO_ADDRESS(OMAP343X_SDRC_BASE + (reg)) | ||
56 | #endif /* __ASSEMBLER__ */ | ||
57 | |||
58 | #endif | ||
diff --git a/arch/arm/mach-omap2/sleep.S b/arch/arm/mach-omap2/sleep.S index 16247d557853..46ccb9b8b583 100644 --- a/arch/arm/mach-omap2/sleep.S +++ b/arch/arm/mach-omap2/sleep.S | |||
@@ -26,19 +26,10 @@ | |||
26 | #include <asm/arch/io.h> | 26 | #include <asm/arch/io.h> |
27 | #include <asm/arch/pm.h> | 27 | #include <asm/arch/pm.h> |
28 | 28 | ||
29 | #define A_32KSYNC_CR_V IO_ADDRESS(OMAP_TIMER32K_BASE+0x10) | 29 | #include "sdrc.h" |
30 | #define A_PRCM_VOLTCTRL_V IO_ADDRESS(OMAP24XX_PRCM_BASE+0x50) | ||
31 | #define A_PRCM_CLKCFG_CTRL_V IO_ADDRESS(OMAP24XX_PRCM_BASE+0x80) | ||
32 | #define A_CM_CLKEN_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE+0x500) | ||
33 | #define A_CM_IDLEST_CKGEN_V IO_ADDRESS(OMAP24XX_PRCM_BASE+0x520) | ||
34 | #define A_CM_CLKSEL1_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE+0x540) | ||
35 | #define A_CM_CLKSEL2_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE+0x544) | ||
36 | 30 | ||
37 | #define A_SDRC_DLLA_CTRL_V IO_ADDRESS(OMAP24XX_SDRC_BASE+0x60) | 31 | /* First address of reserved address space? apparently valid for OMAP2 & 3 */ |
38 | #define A_SDRC_POWER_V IO_ADDRESS(OMAP24XX_SDRC_BASE+0x70) | ||
39 | #define A_SDRC_RFR_CTRL_V IO_ADDRESS(OMAP24XX_SDRC_BASE+0xA4) | ||
40 | #define A_SDRC0_V (0xC0000000) | 32 | #define A_SDRC0_V (0xC0000000) |
41 | #define A_SDRC_MANUAL_V IO_ADDRESS(OMAP24XX_SDRC_BASE+0xA8) | ||
42 | 33 | ||
43 | .text | 34 | .text |
44 | 35 | ||
@@ -126,17 +117,11 @@ loop2: | |||
126 | ldmfd sp!, {r0 - r12, pc} @ restore regs and return | 117 | ldmfd sp!, {r0 - r12, pc} @ restore regs and return |
127 | 118 | ||
128 | A_SDRC_POWER: | 119 | A_SDRC_POWER: |
129 | .word A_SDRC_POWER_V | 120 | .word OMAP242X_SDRC_REGADDR(SDRC_POWER) |
130 | A_SDRC0: | 121 | A_SDRC0: |
131 | .word A_SDRC0_V | 122 | .word A_SDRC0_V |
132 | A_CM_CLKSEL2_PLL_S: | ||
133 | .word A_CM_CLKSEL2_PLL_V | ||
134 | A_CM_CLKEN_PLL: | ||
135 | .word A_CM_CLKEN_PLL_V | ||
136 | A_SDRC_DLLA_CTRL_S: | 123 | A_SDRC_DLLA_CTRL_S: |
137 | .word A_SDRC_DLLA_CTRL_V | 124 | .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) |
138 | A_SDRC_MANUAL_S: | ||
139 | .word A_SDRC_MANUAL_V | ||
140 | 125 | ||
141 | ENTRY(omap24xx_cpu_suspend_sz) | 126 | ENTRY(omap24xx_cpu_suspend_sz) |
142 | .word . - omap24xx_cpu_suspend | 127 | .word . - omap24xx_cpu_suspend |
diff --git a/arch/arm/mach-omap2/sram-fn.S b/arch/arm/mach-omap2/sram-fn.S index b27576690f8d..4a9e49140716 100644 --- a/arch/arm/mach-omap2/sram-fn.S +++ b/arch/arm/mach-omap2/sram-fn.S | |||
@@ -27,19 +27,11 @@ | |||
27 | #include <asm/arch/io.h> | 27 | #include <asm/arch/io.h> |
28 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
29 | 29 | ||
30 | #include "prcm-regs.h" | 30 | #include "sdrc.h" |
31 | #include "prm.h" | ||
32 | #include "cm.h" | ||
31 | 33 | ||
32 | #define TIMER_32KSYNCT_CR_V IO_ADDRESS(OMAP24XX_32KSYNCT_BASE + 0x010) | 34 | #define TIMER_32KSYNCT_CR_V IO_ADDRESS(OMAP2420_32KSYNCT_BASE + 0x010) |
33 | |||
34 | #define CM_CLKSEL2_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x544) | ||
35 | #define PRCM_VOLTCTRL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x050) | ||
36 | #define PRCM_CLKCFG_CTRL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x080) | ||
37 | #define CM_CLKEN_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x500) | ||
38 | #define CM_IDLEST_CKGEN_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x520) | ||
39 | #define CM_CLKSEL1_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x540) | ||
40 | |||
41 | #define SDRC_DLLA_CTRL_V IO_ADDRESS(OMAP24XX_SDRC_BASE + 0x060) | ||
42 | #define SDRC_RFR_CTRL_V IO_ADDRESS(OMAP24XX_SDRC_BASE + 0x0a4) | ||
43 | 35 | ||
44 | .text | 36 | .text |
45 | 37 | ||
@@ -131,11 +123,11 @@ volt_delay: | |||
131 | 123 | ||
132 | /* relative load constants */ | 124 | /* relative load constants */ |
133 | cm_clksel2_pll: | 125 | cm_clksel2_pll: |
134 | .word CM_CLKSEL2_PLL_V | 126 | .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2) |
135 | sdrc_dlla_ctrl: | 127 | sdrc_dlla_ctrl: |
136 | .word SDRC_DLLA_CTRL_V | 128 | .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) |
137 | prcm_voltctrl: | 129 | prcm_voltctrl: |
138 | .word PRCM_VOLTCTRL_V | 130 | .word OMAP2420_PRM_REGADDR(OCP_MOD, 0x50) |
139 | prcm_mask_val: | 131 | prcm_mask_val: |
140 | .word 0xFFFF3FFC | 132 | .word 0xFFFF3FFC |
141 | timer_32ksynct_cr: | 133 | timer_32ksynct_cr: |
@@ -225,13 +217,13 @@ volt_delay_c: | |||
225 | mov pc, lr @ back to caller | 217 | mov pc, lr @ back to caller |
226 | 218 | ||
227 | ddr_cm_clksel2_pll: | 219 | ddr_cm_clksel2_pll: |
228 | .word CM_CLKSEL2_PLL_V | 220 | .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2) |
229 | ddr_sdrc_dlla_ctrl: | 221 | ddr_sdrc_dlla_ctrl: |
230 | .word SDRC_DLLA_CTRL_V | 222 | .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) |
231 | ddr_sdrc_rfr_ctrl: | 223 | ddr_sdrc_rfr_ctrl: |
232 | .word SDRC_RFR_CTRL_V | 224 | .word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0) |
233 | ddr_prcm_voltctrl: | 225 | ddr_prcm_voltctrl: |
234 | .word PRCM_VOLTCTRL_V | 226 | .word OMAP2420_PRM_REGADDR(OCP_MOD, 0x50) |
235 | ddr_prcm_mask_val: | 227 | ddr_prcm_mask_val: |
236 | .word 0xFFFF3FFC | 228 | .word 0xFFFF3FFC |
237 | ddr_timer_32ksynct: | 229 | ddr_timer_32ksynct: |
@@ -316,17 +308,17 @@ wait_dll_lock: | |||
316 | ldmfd sp!, {r0-r12, pc} @ restore regs and return | 308 | ldmfd sp!, {r0-r12, pc} @ restore regs and return |
317 | 309 | ||
318 | set_config: | 310 | set_config: |
319 | .word PRCM_CLKCFG_CTRL_V | 311 | .word OMAP2420_PRM_REGADDR(OCP_MOD, 0x80) |
320 | pll_ctl: | 312 | pll_ctl: |
321 | .word CM_CLKEN_PLL_V | 313 | .word OMAP2420_CM_REGADDR(PLL_MOD, CM_FCLKEN1) |
322 | pll_stat: | 314 | pll_stat: |
323 | .word CM_IDLEST_CKGEN_V | 315 | .word OMAP2420_CM_REGADDR(PLL_MOD, CM_IDLEST1) |
324 | pll_div: | 316 | pll_div: |
325 | .word CM_CLKSEL1_PLL_V | 317 | .word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL) |
326 | sdrc_rfr: | 318 | sdrc_rfr: |
327 | .word SDRC_RFR_CTRL_V | 319 | .word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0) |
328 | dlla_ctrl: | 320 | dlla_ctrl: |
329 | .word SDRC_DLLA_CTRL_V | 321 | .word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL) |
330 | 322 | ||
331 | ENTRY(sram_set_prcm_sz) | 323 | ENTRY(sram_set_prcm_sz) |
332 | .word . - sram_set_prcm | 324 | .word . - sram_set_prcm |
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c index 3234deedb946..78d05f203fff 100644 --- a/arch/arm/mach-omap2/timer-gp.c +++ b/arch/arm/mach-omap2/timer-gp.c | |||
@@ -3,6 +3,11 @@ | |||
3 | * | 3 | * |
4 | * OMAP2 GP timer support. | 4 | * OMAP2 GP timer support. |
5 | * | 5 | * |
6 | * Update to use new clocksource/clockevent layers | ||
7 | * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> | ||
8 | * Copyright (C) 2007 MontaVista Software, Inc. | ||
9 | * | ||
10 | * Original driver: | ||
6 | * Copyright (C) 2005 Nokia Corporation | 11 | * Copyright (C) 2005 Nokia Corporation |
7 | * Author: Paul Mundt <paul.mundt@nokia.com> | 12 | * Author: Paul Mundt <paul.mundt@nokia.com> |
8 | * Juha Yrjölä <juha.yrjola@nokia.com> | 13 | * Juha Yrjölä <juha.yrjola@nokia.com> |
@@ -25,24 +30,23 @@ | |||
25 | #include <linux/clk.h> | 30 | #include <linux/clk.h> |
26 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
27 | #include <linux/irq.h> | 32 | #include <linux/irq.h> |
33 | #include <linux/clocksource.h> | ||
34 | #include <linux/clockchips.h> | ||
28 | 35 | ||
29 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
30 | #include <asm/arch/dmtimer.h> | 37 | #include <asm/arch/dmtimer.h> |
31 | 38 | ||
32 | static struct omap_dm_timer *gptimer; | 39 | static struct omap_dm_timer *gptimer; |
33 | 40 | static struct clock_event_device clockevent_gpt; | |
34 | static inline void omap2_gp_timer_start(unsigned long load_val) | ||
35 | { | ||
36 | omap_dm_timer_set_load(gptimer, 1, 0xffffffff - load_val); | ||
37 | omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_OVERFLOW); | ||
38 | omap_dm_timer_start(gptimer); | ||
39 | } | ||
40 | 41 | ||
41 | static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id) | 42 | static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id) |
42 | { | 43 | { |
43 | omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW); | 44 | struct omap_dm_timer *gpt = (struct omap_dm_timer *)dev_id; |
44 | timer_tick(); | 45 | struct clock_event_device *evt = &clockevent_gpt; |
46 | |||
47 | omap_dm_timer_write_status(gpt, OMAP_TIMER_INT_OVERFLOW); | ||
45 | 48 | ||
49 | evt->event_handler(evt); | ||
46 | return IRQ_HANDLED; | 50 | return IRQ_HANDLED; |
47 | } | 51 | } |
48 | 52 | ||
@@ -52,20 +56,138 @@ static struct irqaction omap2_gp_timer_irq = { | |||
52 | .handler = omap2_gp_timer_interrupt, | 56 | .handler = omap2_gp_timer_interrupt, |
53 | }; | 57 | }; |
54 | 58 | ||
55 | static void __init omap2_gp_timer_init(void) | 59 | static int omap2_gp_timer_set_next_event(unsigned long cycles, |
60 | struct clock_event_device *evt) | ||
56 | { | 61 | { |
57 | u32 tick_period; | 62 | omap_dm_timer_set_load(gptimer, 0, 0xffffffff - cycles); |
63 | omap_dm_timer_start(gptimer); | ||
64 | |||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | static void omap2_gp_timer_set_mode(enum clock_event_mode mode, | ||
69 | struct clock_event_device *evt) | ||
70 | { | ||
71 | u32 period; | ||
72 | |||
73 | omap_dm_timer_stop(gptimer); | ||
74 | |||
75 | switch (mode) { | ||
76 | case CLOCK_EVT_MODE_PERIODIC: | ||
77 | period = clk_get_rate(omap_dm_timer_get_fclk(gptimer)) / HZ; | ||
78 | period -= 1; | ||
79 | |||
80 | omap_dm_timer_set_load(gptimer, 1, 0xffffffff - period); | ||
81 | omap_dm_timer_start(gptimer); | ||
82 | break; | ||
83 | case CLOCK_EVT_MODE_ONESHOT: | ||
84 | break; | ||
85 | case CLOCK_EVT_MODE_UNUSED: | ||
86 | case CLOCK_EVT_MODE_SHUTDOWN: | ||
87 | case CLOCK_EVT_MODE_RESUME: | ||
88 | break; | ||
89 | } | ||
90 | } | ||
91 | |||
92 | static struct clock_event_device clockevent_gpt = { | ||
93 | .name = "gp timer", | ||
94 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | ||
95 | .shift = 32, | ||
96 | .set_next_event = omap2_gp_timer_set_next_event, | ||
97 | .set_mode = omap2_gp_timer_set_mode, | ||
98 | }; | ||
99 | |||
100 | static void __init omap2_gp_clockevent_init(void) | ||
101 | { | ||
102 | u32 tick_rate; | ||
58 | 103 | ||
59 | omap_dm_timer_init(); | ||
60 | gptimer = omap_dm_timer_request_specific(1); | 104 | gptimer = omap_dm_timer_request_specific(1); |
61 | BUG_ON(gptimer == NULL); | 105 | BUG_ON(gptimer == NULL); |
62 | 106 | ||
107 | #if defined(CONFIG_OMAP_32K_TIMER) | ||
108 | omap_dm_timer_set_source(gptimer, OMAP_TIMER_SRC_32_KHZ); | ||
109 | #else | ||
63 | omap_dm_timer_set_source(gptimer, OMAP_TIMER_SRC_SYS_CLK); | 110 | omap_dm_timer_set_source(gptimer, OMAP_TIMER_SRC_SYS_CLK); |
64 | tick_period = clk_get_rate(omap_dm_timer_get_fclk(gptimer)) / HZ; | 111 | #endif |
65 | tick_period -= 1; | 112 | tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gptimer)); |
66 | 113 | ||
114 | omap2_gp_timer_irq.dev_id = (void *)gptimer; | ||
67 | setup_irq(omap_dm_timer_get_irq(gptimer), &omap2_gp_timer_irq); | 115 | setup_irq(omap_dm_timer_get_irq(gptimer), &omap2_gp_timer_irq); |
68 | omap2_gp_timer_start(tick_period); | 116 | omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_OVERFLOW); |
117 | |||
118 | clockevent_gpt.mult = div_sc(tick_rate, NSEC_PER_SEC, | ||
119 | clockevent_gpt.shift); | ||
120 | clockevent_gpt.max_delta_ns = | ||
121 | clockevent_delta2ns(0xffffffff, &clockevent_gpt); | ||
122 | clockevent_gpt.min_delta_ns = | ||
123 | clockevent_delta2ns(1, &clockevent_gpt); | ||
124 | |||
125 | clockevent_gpt.cpumask = cpumask_of_cpu(0); | ||
126 | clockevents_register_device(&clockevent_gpt); | ||
127 | } | ||
128 | |||
129 | #ifdef CONFIG_OMAP_32K_TIMER | ||
130 | /* | ||
131 | * When 32k-timer is enabled, don't use GPTimer for clocksource | ||
132 | * instead, just leave default clocksource which uses the 32k | ||
133 | * sync counter. See clocksource setup in see plat-omap/common.c. | ||
134 | */ | ||
135 | |||
136 | static inline void __init omap2_gp_clocksource_init(void) {} | ||
137 | #else | ||
138 | /* | ||
139 | * clocksource | ||
140 | */ | ||
141 | static struct omap_dm_timer *gpt_clocksource; | ||
142 | static cycle_t clocksource_read_cycles(void) | ||
143 | { | ||
144 | return (cycle_t)omap_dm_timer_read_counter(gpt_clocksource); | ||
145 | } | ||
146 | |||
147 | static struct clocksource clocksource_gpt = { | ||
148 | .name = "gp timer", | ||
149 | .rating = 300, | ||
150 | .read = clocksource_read_cycles, | ||
151 | .mask = CLOCKSOURCE_MASK(32), | ||
152 | .shift = 24, | ||
153 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | ||
154 | }; | ||
155 | |||
156 | /* Setup free-running counter for clocksource */ | ||
157 | static void __init omap2_gp_clocksource_init(void) | ||
158 | { | ||
159 | static struct omap_dm_timer *gpt; | ||
160 | u32 tick_rate, tick_period; | ||
161 | static char err1[] __initdata = KERN_ERR | ||
162 | "%s: failed to request dm-timer\n"; | ||
163 | static char err2[] __initdata = KERN_ERR | ||
164 | "%s: can't register clocksource!\n"; | ||
165 | |||
166 | gpt = omap_dm_timer_request(); | ||
167 | if (!gpt) | ||
168 | printk(err1, clocksource_gpt.name); | ||
169 | gpt_clocksource = gpt; | ||
170 | |||
171 | omap_dm_timer_set_source(gpt, OMAP_TIMER_SRC_SYS_CLK); | ||
172 | tick_rate = clk_get_rate(omap_dm_timer_get_fclk(gpt)); | ||
173 | tick_period = (tick_rate / HZ) - 1; | ||
174 | |||
175 | omap_dm_timer_set_load(gpt, 1, 0); | ||
176 | omap_dm_timer_start(gpt); | ||
177 | |||
178 | clocksource_gpt.mult = | ||
179 | clocksource_khz2mult(tick_rate/1000, clocksource_gpt.shift); | ||
180 | if (clocksource_register(&clocksource_gpt)) | ||
181 | printk(err2, clocksource_gpt.name); | ||
182 | } | ||
183 | #endif | ||
184 | |||
185 | static void __init omap2_gp_timer_init(void) | ||
186 | { | ||
187 | omap_dm_timer_init(); | ||
188 | |||
189 | omap2_gp_clockevent_init(); | ||
190 | omap2_gp_clocksource_init(); | ||
69 | } | 191 | } |
70 | 192 | ||
71 | struct sys_timer omap_timer = { | 193 | struct sys_timer omap_timer = { |
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile index 8f56c255d1ee..bc639a30d6d1 100644 --- a/arch/arm/plat-omap/Makefile +++ b/arch/arm/plat-omap/Makefile | |||
@@ -9,8 +9,6 @@ obj-m := | |||
9 | obj-n := | 9 | obj-n := |
10 | obj- := | 10 | obj- := |
11 | 11 | ||
12 | obj-$(CONFIG_OMAP_32K_TIMER) += timer32k.o | ||
13 | |||
14 | # OCPI interconnect support for 1710, 1610 and 5912 | 12 | # OCPI interconnect support for 1710, 1610 and 5912 |
15 | obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o | 13 | obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o |
16 | 14 | ||
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 0a603242f367..32a533ba9ada 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c | |||
@@ -304,6 +304,23 @@ void propagate_rate(struct clk * tclk) | |||
304 | } | 304 | } |
305 | } | 305 | } |
306 | 306 | ||
307 | /** | ||
308 | * recalculate_root_clocks - recalculate and propagate all root clocks | ||
309 | * | ||
310 | * Recalculates all root clocks (clocks with no parent), which if the | ||
311 | * clock's .recalc is set correctly, should also propagate their rates. | ||
312 | * Called at init. | ||
313 | */ | ||
314 | void recalculate_root_clocks(void) | ||
315 | { | ||
316 | struct clk *clkp; | ||
317 | |||
318 | list_for_each_entry(clkp, &clocks, node) { | ||
319 | if (unlikely(!clkp->parent) && likely((u32)clkp->recalc)) | ||
320 | clkp->recalc(clkp); | ||
321 | } | ||
322 | } | ||
323 | |||
307 | int clk_register(struct clk *clk) | 324 | int clk_register(struct clk *clk) |
308 | { | 325 | { |
309 | if (clk == NULL || IS_ERR(clk)) | 326 | if (clk == NULL || IS_ERR(clk)) |
@@ -358,6 +375,30 @@ void clk_allow_idle(struct clk *clk) | |||
358 | } | 375 | } |
359 | EXPORT_SYMBOL(clk_allow_idle); | 376 | EXPORT_SYMBOL(clk_allow_idle); |
360 | 377 | ||
378 | void clk_enable_init_clocks(void) | ||
379 | { | ||
380 | struct clk *clkp; | ||
381 | |||
382 | list_for_each_entry(clkp, &clocks, node) { | ||
383 | if (clkp->flags & ENABLE_ON_INIT) | ||
384 | clk_enable(clkp); | ||
385 | } | ||
386 | } | ||
387 | EXPORT_SYMBOL(clk_enable_init_clocks); | ||
388 | |||
389 | #ifdef CONFIG_CPU_FREQ | ||
390 | void clk_init_cpufreq_table(struct cpufreq_frequency_table **table) | ||
391 | { | ||
392 | unsigned long flags; | ||
393 | |||
394 | spin_lock_irqsave(&clockfw_lock, flags); | ||
395 | if (arch_clock->clk_init_cpufreq_table) | ||
396 | arch_clock->clk_init_cpufreq_table(table); | ||
397 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
398 | } | ||
399 | EXPORT_SYMBOL(clk_init_cpufreq_table); | ||
400 | #endif | ||
401 | |||
361 | /*-------------------------------------------------------------------------*/ | 402 | /*-------------------------------------------------------------------------*/ |
362 | 403 | ||
363 | #ifdef CONFIG_OMAP_RESET_CLOCKS | 404 | #ifdef CONFIG_OMAP_RESET_CLOCKS |
@@ -396,3 +437,4 @@ int __init clk_init(struct clk_functions * custom_clocks) | |||
396 | 437 | ||
397 | return 0; | 438 | return 0; |
398 | } | 439 | } |
440 | |||
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index 4f0f9c4e938e..bd1cef2c3c14 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c | |||
@@ -27,11 +27,16 @@ | |||
27 | #include <asm/setup.h> | 27 | #include <asm/setup.h> |
28 | 28 | ||
29 | #include <asm/arch/board.h> | 29 | #include <asm/arch/board.h> |
30 | #include <asm/arch/control.h> | ||
30 | #include <asm/arch/mux.h> | 31 | #include <asm/arch/mux.h> |
31 | #include <asm/arch/fpga.h> | 32 | #include <asm/arch/fpga.h> |
32 | 33 | ||
33 | #include <asm/arch/clock.h> | 34 | #include <asm/arch/clock.h> |
34 | 35 | ||
36 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
37 | # include "../mach-omap2/sdrc.h" | ||
38 | #endif | ||
39 | |||
35 | #define NO_LENGTH_CHECK 0xffffffff | 40 | #define NO_LENGTH_CHECK 0xffffffff |
36 | 41 | ||
37 | unsigned char omap_bootloader_tag[512]; | 42 | unsigned char omap_bootloader_tag[512]; |
@@ -171,8 +176,8 @@ console_initcall(omap_add_serial_console); | |||
171 | 176 | ||
172 | #if defined(CONFIG_ARCH_OMAP16XX) | 177 | #if defined(CONFIG_ARCH_OMAP16XX) |
173 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 | 178 | #define TIMER_32K_SYNCHRONIZED 0xfffbc410 |
174 | #elif defined(CONFIG_ARCH_OMAP24XX) | 179 | #elif defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) |
175 | #define TIMER_32K_SYNCHRONIZED (OMAP24XX_32KSYNCT_BASE + 0x10) | 180 | #define TIMER_32K_SYNCHRONIZED (OMAP2_32KSYNCT_BASE + 0x10) |
176 | #endif | 181 | #endif |
177 | 182 | ||
178 | #ifdef TIMER_32K_SYNCHRONIZED | 183 | #ifdef TIMER_32K_SYNCHRONIZED |
@@ -193,12 +198,35 @@ static struct clocksource clocksource_32k = { | |||
193 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 198 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
194 | }; | 199 | }; |
195 | 200 | ||
201 | /* | ||
202 | * Rounds down to nearest nsec. | ||
203 | */ | ||
204 | unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k) | ||
205 | { | ||
206 | return cyc2ns(&clocksource_32k, ticks_32k); | ||
207 | } | ||
208 | |||
209 | /* | ||
210 | * Returns current time from boot in nsecs. It's OK for this to wrap | ||
211 | * around for now, as it's just a relative time stamp. | ||
212 | */ | ||
213 | unsigned long long sched_clock(void) | ||
214 | { | ||
215 | return omap_32k_ticks_to_nsecs(omap_32k_read()); | ||
216 | } | ||
217 | |||
196 | static int __init omap_init_clocksource_32k(void) | 218 | static int __init omap_init_clocksource_32k(void) |
197 | { | 219 | { |
198 | static char err[] __initdata = KERN_ERR | 220 | static char err[] __initdata = KERN_ERR |
199 | "%s: can't register clocksource!\n"; | 221 | "%s: can't register clocksource!\n"; |
200 | 222 | ||
201 | if (cpu_is_omap16xx() || cpu_is_omap24xx()) { | 223 | if (cpu_is_omap16xx() || cpu_class_is_omap2()) { |
224 | struct clk *sync_32k_ick; | ||
225 | |||
226 | sync_32k_ick = clk_get(NULL, "omap_32ksync_ick"); | ||
227 | if (sync_32k_ick) | ||
228 | clk_enable(sync_32k_ick); | ||
229 | |||
202 | clocksource_32k.mult = clocksource_hz2mult(32768, | 230 | clocksource_32k.mult = clocksource_hz2mult(32768, |
203 | clocksource_32k.shift); | 231 | clocksource_32k.shift); |
204 | 232 | ||
@@ -210,3 +238,33 @@ static int __init omap_init_clocksource_32k(void) | |||
210 | arch_initcall(omap_init_clocksource_32k); | 238 | arch_initcall(omap_init_clocksource_32k); |
211 | 239 | ||
212 | #endif /* TIMER_32K_SYNCHRONIZED */ | 240 | #endif /* TIMER_32K_SYNCHRONIZED */ |
241 | |||
242 | /* Global address base setup code */ | ||
243 | |||
244 | #if defined(CONFIG_ARCH_OMAP2420) | ||
245 | void __init omap2_set_globals_242x(void) | ||
246 | { | ||
247 | omap2_sdrc_base = OMAP2420_SDRC_BASE; | ||
248 | omap2_sms_base = OMAP2420_SMS_BASE; | ||
249 | omap_ctrl_base_set(OMAP2420_CTRL_BASE); | ||
250 | } | ||
251 | #endif | ||
252 | |||
253 | #if defined(CONFIG_ARCH_OMAP2430) | ||
254 | void __init omap2_set_globals_243x(void) | ||
255 | { | ||
256 | omap2_sdrc_base = OMAP243X_SDRC_BASE; | ||
257 | omap2_sms_base = OMAP243X_SMS_BASE; | ||
258 | omap_ctrl_base_set(OMAP243X_CTRL_BASE); | ||
259 | } | ||
260 | #endif | ||
261 | |||
262 | #if defined(CONFIG_ARCH_OMAP3430) | ||
263 | void __init omap2_set_globals_343x(void) | ||
264 | { | ||
265 | omap2_sdrc_base = OMAP343X_SDRC_BASE; | ||
266 | omap2_sms_base = OMAP343X_SMS_BASE; | ||
267 | omap_ctrl_base_set(OMAP343X_CTRL_BASE); | ||
268 | } | ||
269 | #endif | ||
270 | |||
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 8c78e4e57b5c..1903a3491ee9 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -136,7 +136,6 @@ struct gpio_bank { | |||
136 | u16 irq; | 136 | u16 irq; |
137 | u16 virtual_irq_start; | 137 | u16 virtual_irq_start; |
138 | int method; | 138 | int method; |
139 | u32 reserved_map; | ||
140 | #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) | 139 | #if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) |
141 | u32 suspend_wakeup; | 140 | u32 suspend_wakeup; |
142 | u32 saved_wakeup; | 141 | u32 saved_wakeup; |
@@ -149,7 +148,9 @@ struct gpio_bank { | |||
149 | u32 saved_fallingdetect; | 148 | u32 saved_fallingdetect; |
150 | u32 saved_risingdetect; | 149 | u32 saved_risingdetect; |
151 | #endif | 150 | #endif |
151 | u32 level_mask; | ||
152 | spinlock_t lock; | 152 | spinlock_t lock; |
153 | struct gpio_chip chip; | ||
153 | }; | 154 | }; |
154 | 155 | ||
155 | #define METHOD_MPUIO 0 | 156 | #define METHOD_MPUIO 0 |
@@ -538,10 +539,9 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio, | |||
538 | bank->enabled_non_wakeup_gpios &= ~gpio_bit; | 539 | bank->enabled_non_wakeup_gpios &= ~gpio_bit; |
539 | } | 540 | } |
540 | 541 | ||
541 | /* | 542 | bank->level_mask = |
542 | * FIXME: Possibly do 'set_irq_handler(j, handle_level_irq)' if only | 543 | __raw_readl(bank->base + OMAP24XX_GPIO_LEVELDETECT0) | |
543 | * level triggering requested. | 544 | __raw_readl(bank->base + OMAP24XX_GPIO_LEVELDETECT1); |
544 | */ | ||
545 | } | 545 | } |
546 | #endif | 546 | #endif |
547 | 547 | ||
@@ -652,6 +652,12 @@ static int gpio_irq_type(unsigned irq, unsigned type) | |||
652 | irq_desc[irq].status |= type; | 652 | irq_desc[irq].status |= type; |
653 | } | 653 | } |
654 | spin_unlock_irqrestore(&bank->lock, flags); | 654 | spin_unlock_irqrestore(&bank->lock, flags); |
655 | |||
656 | if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) | ||
657 | __set_irq_handler_unlocked(irq, handle_level_irq); | ||
658 | else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)) | ||
659 | __set_irq_handler_unlocked(irq, handle_edge_irq); | ||
660 | |||
655 | return retval; | 661 | return retval; |
656 | } | 662 | } |
657 | 663 | ||
@@ -903,19 +909,17 @@ int omap_request_gpio(int gpio) | |||
903 | { | 909 | { |
904 | struct gpio_bank *bank; | 910 | struct gpio_bank *bank; |
905 | unsigned long flags; | 911 | unsigned long flags; |
912 | int status; | ||
906 | 913 | ||
907 | if (check_gpio(gpio) < 0) | 914 | if (check_gpio(gpio) < 0) |
908 | return -EINVAL; | 915 | return -EINVAL; |
909 | 916 | ||
917 | status = gpio_request(gpio, NULL); | ||
918 | if (status < 0) | ||
919 | return status; | ||
920 | |||
910 | bank = get_gpio_bank(gpio); | 921 | bank = get_gpio_bank(gpio); |
911 | spin_lock_irqsave(&bank->lock, flags); | 922 | spin_lock_irqsave(&bank->lock, flags); |
912 | if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) { | ||
913 | printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio); | ||
914 | dump_stack(); | ||
915 | spin_unlock_irqrestore(&bank->lock, flags); | ||
916 | return -1; | ||
917 | } | ||
918 | bank->reserved_map |= (1 << get_gpio_index(gpio)); | ||
919 | 923 | ||
920 | /* Set trigger to none. You need to enable the desired trigger with | 924 | /* Set trigger to none. You need to enable the desired trigger with |
921 | * request_irq() or set_irq_type(). | 925 | * request_irq() or set_irq_type(). |
@@ -945,10 +949,11 @@ void omap_free_gpio(int gpio) | |||
945 | return; | 949 | return; |
946 | bank = get_gpio_bank(gpio); | 950 | bank = get_gpio_bank(gpio); |
947 | spin_lock_irqsave(&bank->lock, flags); | 951 | spin_lock_irqsave(&bank->lock, flags); |
948 | if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) { | 952 | if (unlikely(!gpiochip_is_requested(&bank->chip, |
953 | get_gpio_index(gpio)))) { | ||
954 | spin_unlock_irqrestore(&bank->lock, flags); | ||
949 | printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio); | 955 | printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio); |
950 | dump_stack(); | 956 | dump_stack(); |
951 | spin_unlock_irqrestore(&bank->lock, flags); | ||
952 | return; | 957 | return; |
953 | } | 958 | } |
954 | #ifdef CONFIG_ARCH_OMAP16XX | 959 | #ifdef CONFIG_ARCH_OMAP16XX |
@@ -965,9 +970,9 @@ void omap_free_gpio(int gpio) | |||
965 | __raw_writel(1 << get_gpio_index(gpio), reg); | 970 | __raw_writel(1 << get_gpio_index(gpio), reg); |
966 | } | 971 | } |
967 | #endif | 972 | #endif |
968 | bank->reserved_map &= ~(1 << get_gpio_index(gpio)); | ||
969 | _reset_gpio(bank, gpio); | 973 | _reset_gpio(bank, gpio); |
970 | spin_unlock_irqrestore(&bank->lock, flags); | 974 | spin_unlock_irqrestore(&bank->lock, flags); |
975 | gpio_free(gpio); | ||
971 | } | 976 | } |
972 | 977 | ||
973 | /* | 978 | /* |
@@ -1022,12 +1027,7 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
1022 | isr &= 0x0000ffff; | 1027 | isr &= 0x0000ffff; |
1023 | 1028 | ||
1024 | if (cpu_class_is_omap2()) { | 1029 | if (cpu_class_is_omap2()) { |
1025 | level_mask = | 1030 | level_mask = bank->level_mask & enabled; |
1026 | __raw_readl(bank->base + | ||
1027 | OMAP24XX_GPIO_LEVELDETECT0) | | ||
1028 | __raw_readl(bank->base + | ||
1029 | OMAP24XX_GPIO_LEVELDETECT1); | ||
1030 | level_mask &= enabled; | ||
1031 | } | 1031 | } |
1032 | 1032 | ||
1033 | /* clear edge sensitive interrupts before handler(s) are | 1033 | /* clear edge sensitive interrupts before handler(s) are |
@@ -1052,51 +1052,13 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc) | |||
1052 | gpio_irq = bank->virtual_irq_start; | 1052 | gpio_irq = bank->virtual_irq_start; |
1053 | for (; isr != 0; isr >>= 1, gpio_irq++) { | 1053 | for (; isr != 0; isr >>= 1, gpio_irq++) { |
1054 | struct irq_desc *d; | 1054 | struct irq_desc *d; |
1055 | int irq_mask; | 1055 | |
1056 | if (!(isr & 1)) | 1056 | if (!(isr & 1)) |
1057 | continue; | 1057 | continue; |
1058 | d = irq_desc + gpio_irq; | 1058 | d = irq_desc + gpio_irq; |
1059 | /* Don't run the handler if it's already running | ||
1060 | * or was disabled lazely. | ||
1061 | */ | ||
1062 | if (unlikely((d->depth || | ||
1063 | (d->status & IRQ_INPROGRESS)))) { | ||
1064 | irq_mask = 1 << | ||
1065 | (gpio_irq - bank->virtual_irq_start); | ||
1066 | /* The unmasking will be done by | ||
1067 | * enable_irq in case it is disabled or | ||
1068 | * after returning from the handler if | ||
1069 | * it's already running. | ||
1070 | */ | ||
1071 | _enable_gpio_irqbank(bank, irq_mask, 0); | ||
1072 | if (!d->depth) { | ||
1073 | /* Level triggered interrupts | ||
1074 | * won't ever be reentered | ||
1075 | */ | ||
1076 | BUG_ON(level_mask & irq_mask); | ||
1077 | d->status |= IRQ_PENDING; | ||
1078 | } | ||
1079 | continue; | ||
1080 | } | ||
1081 | 1059 | ||
1082 | desc_handle_irq(gpio_irq, d); | 1060 | desc_handle_irq(gpio_irq, d); |
1083 | |||
1084 | if (unlikely((d->status & IRQ_PENDING) && !d->depth)) { | ||
1085 | irq_mask = 1 << | ||
1086 | (gpio_irq - bank->virtual_irq_start); | ||
1087 | d->status &= ~IRQ_PENDING; | ||
1088 | _enable_gpio_irqbank(bank, irq_mask, 1); | ||
1089 | retrigger |= irq_mask; | ||
1090 | } | ||
1091 | } | 1061 | } |
1092 | |||
1093 | if (cpu_class_is_omap2()) { | ||
1094 | /* clear level sensitive interrupts after handler(s) */ | ||
1095 | _enable_gpio_irqbank(bank, isr_saved & level_mask, 0); | ||
1096 | _clear_gpio_irqbank(bank, isr_saved & level_mask); | ||
1097 | _enable_gpio_irqbank(bank, isr_saved & level_mask, 1); | ||
1098 | } | ||
1099 | |||
1100 | } | 1062 | } |
1101 | /* if bank has any level sensitive GPIO pin interrupt | 1063 | /* if bank has any level sensitive GPIO pin interrupt |
1102 | configured, we must unmask the bank interrupt only after | 1064 | configured, we must unmask the bank interrupt only after |
@@ -1135,6 +1097,14 @@ static void gpio_unmask_irq(unsigned int irq) | |||
1135 | { | 1097 | { |
1136 | unsigned int gpio = irq - IH_GPIO_BASE; | 1098 | unsigned int gpio = irq - IH_GPIO_BASE; |
1137 | struct gpio_bank *bank = get_irq_chip_data(irq); | 1099 | struct gpio_bank *bank = get_irq_chip_data(irq); |
1100 | unsigned int irq_mask = 1 << get_gpio_index(gpio); | ||
1101 | |||
1102 | /* For level-triggered GPIOs, the clearing must be done after | ||
1103 | * the HW source is cleared, thus after the handler has run */ | ||
1104 | if (bank->level_mask & irq_mask) { | ||
1105 | _set_gpio_irqenable(bank, gpio, 0); | ||
1106 | _clear_gpio_irqstatus(bank, gpio); | ||
1107 | } | ||
1138 | 1108 | ||
1139 | _set_gpio_irqenable(bank, gpio, 1); | 1109 | _set_gpio_irqenable(bank, gpio, 1); |
1140 | } | 1110 | } |
@@ -1266,6 +1236,53 @@ static inline void mpuio_init(void) {} | |||
1266 | 1236 | ||
1267 | /*---------------------------------------------------------------------*/ | 1237 | /*---------------------------------------------------------------------*/ |
1268 | 1238 | ||
1239 | /* REVISIT these are stupid implementations! replace by ones that | ||
1240 | * don't switch on METHOD_* and which mostly avoid spinlocks | ||
1241 | */ | ||
1242 | |||
1243 | static int gpio_input(struct gpio_chip *chip, unsigned offset) | ||
1244 | { | ||
1245 | struct gpio_bank *bank; | ||
1246 | unsigned long flags; | ||
1247 | |||
1248 | bank = container_of(chip, struct gpio_bank, chip); | ||
1249 | spin_lock_irqsave(&bank->lock, flags); | ||
1250 | _set_gpio_direction(bank, offset, 1); | ||
1251 | spin_unlock_irqrestore(&bank->lock, flags); | ||
1252 | return 0; | ||
1253 | } | ||
1254 | |||
1255 | static int gpio_get(struct gpio_chip *chip, unsigned offset) | ||
1256 | { | ||
1257 | return omap_get_gpio_datain(chip->base + offset); | ||
1258 | } | ||
1259 | |||
1260 | static int gpio_output(struct gpio_chip *chip, unsigned offset, int value) | ||
1261 | { | ||
1262 | struct gpio_bank *bank; | ||
1263 | unsigned long flags; | ||
1264 | |||
1265 | bank = container_of(chip, struct gpio_bank, chip); | ||
1266 | spin_lock_irqsave(&bank->lock, flags); | ||
1267 | _set_gpio_dataout(bank, offset, value); | ||
1268 | _set_gpio_direction(bank, offset, 0); | ||
1269 | spin_unlock_irqrestore(&bank->lock, flags); | ||
1270 | return 0; | ||
1271 | } | ||
1272 | |||
1273 | static void gpio_set(struct gpio_chip *chip, unsigned offset, int value) | ||
1274 | { | ||
1275 | struct gpio_bank *bank; | ||
1276 | unsigned long flags; | ||
1277 | |||
1278 | bank = container_of(chip, struct gpio_bank, chip); | ||
1279 | spin_lock_irqsave(&bank->lock, flags); | ||
1280 | _set_gpio_dataout(bank, offset, value); | ||
1281 | spin_unlock_irqrestore(&bank->lock, flags); | ||
1282 | } | ||
1283 | |||
1284 | /*---------------------------------------------------------------------*/ | ||
1285 | |||
1269 | static int initialized; | 1286 | static int initialized; |
1270 | #if !defined(CONFIG_ARCH_OMAP3) | 1287 | #if !defined(CONFIG_ARCH_OMAP3) |
1271 | static struct clk * gpio_ick; | 1288 | static struct clk * gpio_ick; |
@@ -1293,6 +1310,7 @@ static struct lock_class_key gpio_lock_class; | |||
1293 | static int __init _omap_gpio_init(void) | 1310 | static int __init _omap_gpio_init(void) |
1294 | { | 1311 | { |
1295 | int i; | 1312 | int i; |
1313 | int gpio = 0; | ||
1296 | struct gpio_bank *bank; | 1314 | struct gpio_bank *bank; |
1297 | #if defined(CONFIG_ARCH_OMAP3) | 1315 | #if defined(CONFIG_ARCH_OMAP3) |
1298 | char clk_name[11]; | 1316 | char clk_name[11]; |
@@ -1423,7 +1441,6 @@ static int __init _omap_gpio_init(void) | |||
1423 | int j, gpio_count = 16; | 1441 | int j, gpio_count = 16; |
1424 | 1442 | ||
1425 | bank = &gpio_bank[i]; | 1443 | bank = &gpio_bank[i]; |
1426 | bank->reserved_map = 0; | ||
1427 | bank->base = IO_ADDRESS(bank->base); | 1444 | bank->base = IO_ADDRESS(bank->base); |
1428 | spin_lock_init(&bank->lock); | 1445 | spin_lock_init(&bank->lock); |
1429 | if (bank_is_mpuio(bank)) | 1446 | if (bank_is_mpuio(bank)) |
@@ -1461,6 +1478,26 @@ static int __init _omap_gpio_init(void) | |||
1461 | gpio_count = 32; | 1478 | gpio_count = 32; |
1462 | } | 1479 | } |
1463 | #endif | 1480 | #endif |
1481 | |||
1482 | /* REVISIT eventually switch from OMAP-specific gpio structs | ||
1483 | * over to the generic ones | ||
1484 | */ | ||
1485 | bank->chip.direction_input = gpio_input; | ||
1486 | bank->chip.get = gpio_get; | ||
1487 | bank->chip.direction_output = gpio_output; | ||
1488 | bank->chip.set = gpio_set; | ||
1489 | if (bank_is_mpuio(bank)) { | ||
1490 | bank->chip.label = "mpuio"; | ||
1491 | bank->chip.base = OMAP_MPUIO(0); | ||
1492 | } else { | ||
1493 | bank->chip.label = "gpio"; | ||
1494 | bank->chip.base = gpio; | ||
1495 | gpio += gpio_count; | ||
1496 | } | ||
1497 | bank->chip.ngpio = gpio_count; | ||
1498 | |||
1499 | gpiochip_add(&bank->chip); | ||
1500 | |||
1464 | for (j = bank->virtual_irq_start; | 1501 | for (j = bank->virtual_irq_start; |
1465 | j < bank->virtual_irq_start + gpio_count; j++) { | 1502 | j < bank->virtual_irq_start + gpio_count; j++) { |
1466 | lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class); | 1503 | lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class); |
@@ -1757,8 +1794,10 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1757 | 1794 | ||
1758 | for (j = 0; j < bankwidth; j++, gpio++, mask <<= 1) { | 1795 | for (j = 0; j < bankwidth; j++, gpio++, mask <<= 1) { |
1759 | unsigned irq, value, is_in, irqstat; | 1796 | unsigned irq, value, is_in, irqstat; |
1797 | const char *label; | ||
1760 | 1798 | ||
1761 | if (!(bank->reserved_map & mask)) | 1799 | label = gpiochip_is_requested(&bank->chip, j); |
1800 | if (!label) | ||
1762 | continue; | 1801 | continue; |
1763 | 1802 | ||
1764 | irq = bank->virtual_irq_start + j; | 1803 | irq = bank->virtual_irq_start + j; |
@@ -1766,13 +1805,16 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1766 | is_in = gpio_is_input(bank, mask); | 1805 | is_in = gpio_is_input(bank, mask); |
1767 | 1806 | ||
1768 | if (bank_is_mpuio(bank)) | 1807 | if (bank_is_mpuio(bank)) |
1769 | seq_printf(s, "MPUIO %2d: ", j); | 1808 | seq_printf(s, "MPUIO %2d ", j); |
1770 | else | 1809 | else |
1771 | seq_printf(s, "GPIO %3d: ", gpio); | 1810 | seq_printf(s, "GPIO %3d ", gpio); |
1772 | seq_printf(s, "%s %s", | 1811 | seq_printf(s, "(%10s): %s %s", |
1812 | label, | ||
1773 | is_in ? "in " : "out", | 1813 | is_in ? "in " : "out", |
1774 | value ? "hi" : "lo"); | 1814 | value ? "hi" : "lo"); |
1775 | 1815 | ||
1816 | /* FIXME for at least omap2, show pullup/pulldown state */ | ||
1817 | |||
1776 | irqstat = irq_desc[irq].status; | 1818 | irqstat = irq_desc[irq].status; |
1777 | if (is_in && ((bank->suspend_wakeup & mask) | 1819 | if (is_in && ((bank->suspend_wakeup & mask) |
1778 | || irqstat & IRQ_TYPE_SENSE_MASK)) { | 1820 | || irqstat & IRQ_TYPE_SENSE_MASK)) { |
@@ -1795,10 +1837,10 @@ static int dbg_gpio_show(struct seq_file *s, void *unused) | |||
1795 | trigger = "high"; | 1837 | trigger = "high"; |
1796 | break; | 1838 | break; |
1797 | case IRQ_TYPE_NONE: | 1839 | case IRQ_TYPE_NONE: |
1798 | trigger = "(unspecified)"; | 1840 | trigger = "(?)"; |
1799 | break; | 1841 | break; |
1800 | } | 1842 | } |
1801 | seq_printf(s, ", irq-%d %s%s", | 1843 | seq_printf(s, ", irq-%d %-8s%s", |
1802 | irq, trigger, | 1844 | irq, trigger, |
1803 | (bank->suspend_wakeup & mask) | 1845 | (bank->suspend_wakeup & mask) |
1804 | ? " wakeup" : ""); | 1846 | ? " wakeup" : ""); |
diff --git a/arch/arm/plat-omap/mux.c b/arch/arm/plat-omap/mux.c index 75211f20ccb3..6f3f459731c8 100644 --- a/arch/arm/plat-omap/mux.c +++ b/arch/arm/plat-omap/mux.c | |||
@@ -3,9 +3,9 @@ | |||
3 | * | 3 | * |
4 | * Utility to set the Omap MUX and PULL_DWN registers from a table in mux.h | 4 | * Utility to set the Omap MUX and PULL_DWN registers from a table in mux.h |
5 | * | 5 | * |
6 | * Copyright (C) 2003 - 2005 Nokia Corporation | 6 | * Copyright (C) 2003 - 2008 Nokia Corporation |
7 | * | 7 | * |
8 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | 8 | * Written by Tony Lindgren |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
11 | * it under the terms of the GNU General Public License as published by | 11 | * it under the terms of the GNU General Public License as published by |
@@ -32,21 +32,17 @@ | |||
32 | 32 | ||
33 | #ifdef CONFIG_OMAP_MUX | 33 | #ifdef CONFIG_OMAP_MUX |
34 | 34 | ||
35 | #define OMAP24XX_L4_BASE 0x48000000 | 35 | static struct omap_mux_cfg *mux_cfg; |
36 | #define OMAP24XX_PULL_ENA (1 << 3) | ||
37 | #define OMAP24XX_PULL_UP (1 << 4) | ||
38 | 36 | ||
39 | static struct pin_config * pin_table; | 37 | int __init omap_mux_register(struct omap_mux_cfg *arch_mux_cfg) |
40 | static unsigned long pin_table_sz; | ||
41 | |||
42 | extern struct pin_config * omap730_pins; | ||
43 | extern struct pin_config * omap1xxx_pins; | ||
44 | extern struct pin_config * omap24xx_pins; | ||
45 | |||
46 | int __init omap_mux_register(struct pin_config * pins, unsigned long size) | ||
47 | { | 38 | { |
48 | pin_table = pins; | 39 | if (!arch_mux_cfg || !arch_mux_cfg->pins || arch_mux_cfg->size == 0 |
49 | pin_table_sz = size; | 40 | || !arch_mux_cfg->cfg_reg) { |
41 | printk(KERN_ERR "Invalid pin table\n"); | ||
42 | return -EINVAL; | ||
43 | } | ||
44 | |||
45 | mux_cfg = arch_mux_cfg; | ||
50 | 46 | ||
51 | return 0; | 47 | return 0; |
52 | } | 48 | } |
@@ -56,152 +52,26 @@ int __init omap_mux_register(struct pin_config * pins, unsigned long size) | |||
56 | */ | 52 | */ |
57 | int __init_or_module omap_cfg_reg(const unsigned long index) | 53 | int __init_or_module omap_cfg_reg(const unsigned long index) |
58 | { | 54 | { |
59 | static DEFINE_SPINLOCK(mux_spin_lock); | 55 | struct pin_config *reg; |
60 | |||
61 | unsigned long flags; | ||
62 | struct pin_config *cfg; | ||
63 | unsigned int reg_orig = 0, reg = 0, pu_pd_orig = 0, pu_pd = 0, | ||
64 | pull_orig = 0, pull = 0; | ||
65 | unsigned int mask, warn = 0; | ||
66 | 56 | ||
67 | if (!pin_table) | 57 | if (mux_cfg == NULL) { |
68 | BUG(); | 58 | printk(KERN_ERR "Pin mux table not initialized\n"); |
59 | return -ENODEV; | ||
60 | } | ||
69 | 61 | ||
70 | if (index >= pin_table_sz) { | 62 | if (index >= mux_cfg->size) { |
71 | printk(KERN_ERR "Invalid pin mux index: %lu (%lu)\n", | 63 | printk(KERN_ERR "Invalid pin mux index: %lu (%lu)\n", |
72 | index, pin_table_sz); | 64 | index, mux_cfg->size); |
73 | dump_stack(); | 65 | dump_stack(); |
74 | return -ENODEV; | 66 | return -ENODEV; |
75 | } | 67 | } |
76 | 68 | ||
77 | cfg = (struct pin_config *)&pin_table[index]; | 69 | reg = (struct pin_config *)&mux_cfg->pins[index]; |
78 | if (cpu_is_omap24xx()) { | ||
79 | u8 reg = 0; | ||
80 | |||
81 | reg |= cfg->mask & 0x7; | ||
82 | if (cfg->pull_val) | ||
83 | reg |= OMAP24XX_PULL_ENA; | ||
84 | if(cfg->pu_pd_val) | ||
85 | reg |= OMAP24XX_PULL_UP; | ||
86 | #if defined(CONFIG_OMAP_MUX_DEBUG) || defined(CONFIG_OMAP_MUX_WARNINGS) | ||
87 | { | ||
88 | u8 orig = omap_readb(OMAP24XX_L4_BASE + cfg->mux_reg); | ||
89 | u8 debug = 0; | ||
90 | |||
91 | #ifdef CONFIG_OMAP_MUX_DEBUG | ||
92 | debug = cfg->debug; | ||
93 | #endif | ||
94 | warn = (orig != reg); | ||
95 | if (debug || warn) | ||
96 | printk("MUX: setup %s (0x%08x): 0x%02x -> 0x%02x\n", | ||
97 | cfg->name, | ||
98 | OMAP24XX_L4_BASE + cfg->mux_reg, | ||
99 | orig, reg); | ||
100 | } | ||
101 | #endif | ||
102 | omap_writeb(reg, OMAP24XX_L4_BASE + cfg->mux_reg); | ||
103 | 70 | ||
104 | return 0; | 71 | if (!mux_cfg->cfg_reg) |
105 | } | 72 | return -ENODEV; |
106 | |||
107 | /* Check the mux register in question */ | ||
108 | if (cfg->mux_reg) { | ||
109 | unsigned tmp1, tmp2; | ||
110 | |||
111 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
112 | reg_orig = omap_readl(cfg->mux_reg); | ||
113 | |||
114 | /* The mux registers always seem to be 3 bits long */ | ||
115 | mask = (0x7 << cfg->mask_offset); | ||
116 | tmp1 = reg_orig & mask; | ||
117 | reg = reg_orig & ~mask; | ||
118 | |||
119 | tmp2 = (cfg->mask << cfg->mask_offset); | ||
120 | reg |= tmp2; | ||
121 | |||
122 | if (tmp1 != tmp2) | ||
123 | warn = 1; | ||
124 | |||
125 | omap_writel(reg, cfg->mux_reg); | ||
126 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
127 | } | ||
128 | |||
129 | /* Check for pull up or pull down selection on 1610 */ | ||
130 | if (!cpu_is_omap15xx()) { | ||
131 | if (cfg->pu_pd_reg && cfg->pull_val) { | ||
132 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
133 | pu_pd_orig = omap_readl(cfg->pu_pd_reg); | ||
134 | mask = 1 << cfg->pull_bit; | ||
135 | |||
136 | if (cfg->pu_pd_val) { | ||
137 | if (!(pu_pd_orig & mask)) | ||
138 | warn = 1; | ||
139 | /* Use pull up */ | ||
140 | pu_pd = pu_pd_orig | mask; | ||
141 | } else { | ||
142 | if (pu_pd_orig & mask) | ||
143 | warn = 1; | ||
144 | /* Use pull down */ | ||
145 | pu_pd = pu_pd_orig & ~mask; | ||
146 | } | ||
147 | omap_writel(pu_pd, cfg->pu_pd_reg); | ||
148 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
149 | } | ||
150 | } | ||
151 | |||
152 | /* Check for an associated pull down register */ | ||
153 | if (cfg->pull_reg) { | ||
154 | spin_lock_irqsave(&mux_spin_lock, flags); | ||
155 | pull_orig = omap_readl(cfg->pull_reg); | ||
156 | mask = 1 << cfg->pull_bit; | ||
157 | |||
158 | if (cfg->pull_val) { | ||
159 | if (pull_orig & mask) | ||
160 | warn = 1; | ||
161 | /* Low bit = pull enabled */ | ||
162 | pull = pull_orig & ~mask; | ||
163 | } else { | ||
164 | if (!(pull_orig & mask)) | ||
165 | warn = 1; | ||
166 | /* High bit = pull disabled */ | ||
167 | pull = pull_orig | mask; | ||
168 | } | ||
169 | |||
170 | omap_writel(pull, cfg->pull_reg); | ||
171 | spin_unlock_irqrestore(&mux_spin_lock, flags); | ||
172 | } | ||
173 | |||
174 | if (warn) { | ||
175 | #ifdef CONFIG_OMAP_MUX_WARNINGS | ||
176 | printk(KERN_WARNING "MUX: initialized %s\n", cfg->name); | ||
177 | #endif | ||
178 | } | ||
179 | |||
180 | #ifdef CONFIG_OMAP_MUX_DEBUG | ||
181 | if (cfg->debug || warn) { | ||
182 | printk("MUX: Setting register %s\n", cfg->name); | ||
183 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | ||
184 | cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg); | ||
185 | |||
186 | if (!cpu_is_omap15xx()) { | ||
187 | if (cfg->pu_pd_reg && cfg->pull_val) { | ||
188 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | ||
189 | cfg->pu_pd_name, cfg->pu_pd_reg, | ||
190 | pu_pd_orig, pu_pd); | ||
191 | } | ||
192 | } | ||
193 | |||
194 | if (cfg->pull_reg) | ||
195 | printk(" %s (0x%08x) = 0x%08x -> 0x%08x\n", | ||
196 | cfg->pull_name, cfg->pull_reg, pull_orig, pull); | ||
197 | } | ||
198 | #endif | ||
199 | 73 | ||
200 | #ifdef CONFIG_OMAP_MUX_ERRORS | 74 | return mux_cfg->cfg_reg(reg); |
201 | return warn ? -ETXTBSY : 0; | ||
202 | #else | ||
203 | return 0; | ||
204 | #endif | ||
205 | } | 75 | } |
206 | EXPORT_SYMBOL(omap_cfg_reg); | 76 | EXPORT_SYMBOL(omap_cfg_reg); |
207 | #else | 77 | #else |
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index a5aedf964b88..a619475c4b76 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/system.h> | 33 | #include <asm/system.h> |
34 | #include <asm/hardware.h> | 34 | #include <asm/hardware.h> |
35 | 35 | ||
36 | #include <asm/arch/control.h> | ||
36 | #include <asm/arch/mux.h> | 37 | #include <asm/arch/mux.h> |
37 | #include <asm/arch/usb.h> | 38 | #include <asm/arch/usb.h> |
38 | #include <asm/arch/board.h> | 39 | #include <asm/arch/board.h> |
@@ -76,7 +77,7 @@ | |||
76 | 77 | ||
77 | /*-------------------------------------------------------------------------*/ | 78 | /*-------------------------------------------------------------------------*/ |
78 | 79 | ||
79 | #ifdef CONFIG_ARCH_OMAP_OTG | 80 | #if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_USB_MUSB_OTG) |
80 | 81 | ||
81 | static struct otg_transceiver *xceiv; | 82 | static struct otg_transceiver *xceiv; |
82 | 83 | ||
@@ -110,12 +111,48 @@ EXPORT_SYMBOL(otg_set_transceiver); | |||
110 | 111 | ||
111 | #if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_ARCH_OMAP15XX) | 112 | #if defined(CONFIG_ARCH_OMAP_OTG) || defined(CONFIG_ARCH_OMAP15XX) |
112 | 113 | ||
114 | static void omap2_usb_devconf_clear(u8 port, u32 mask) | ||
115 | { | ||
116 | u32 r; | ||
117 | |||
118 | r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); | ||
119 | r &= ~USBTXWRMODEI(port, mask); | ||
120 | omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0); | ||
121 | } | ||
122 | |||
123 | static void omap2_usb_devconf_set(u8 port, u32 mask) | ||
124 | { | ||
125 | u32 r; | ||
126 | |||
127 | r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); | ||
128 | r |= USBTXWRMODEI(port, mask); | ||
129 | omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0); | ||
130 | } | ||
131 | |||
132 | static void omap2_usb2_disable_5pinbitll(void) | ||
133 | { | ||
134 | u32 r; | ||
135 | |||
136 | r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); | ||
137 | r &= ~(USBTXWRMODEI(2, USB_BIDIR_TLL) | USBT2TLL5PI); | ||
138 | omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0); | ||
139 | } | ||
140 | |||
141 | static void omap2_usb2_enable_5pinunitll(void) | ||
142 | { | ||
143 | u32 r; | ||
144 | |||
145 | r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); | ||
146 | r |= USBTXWRMODEI(2, USB_UNIDIR_TLL) | USBT2TLL5PI; | ||
147 | omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0); | ||
148 | } | ||
149 | |||
113 | static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device) | 150 | static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device) |
114 | { | 151 | { |
115 | u32 syscon1 = 0; | 152 | u32 syscon1 = 0; |
116 | 153 | ||
117 | if (cpu_is_omap24xx()) | 154 | if (cpu_is_omap24xx()) |
118 | CONTROL_DEVCONF_REG &= ~USBT0WRMODEI(USB_BIDIR_TLL); | 155 | omap2_usb_devconf_clear(0, USB_BIDIR_TLL); |
119 | 156 | ||
120 | if (nwires == 0) { | 157 | if (nwires == 0) { |
121 | if (cpu_class_is_omap1() && !cpu_is_omap15xx()) { | 158 | if (cpu_class_is_omap1() && !cpu_is_omap15xx()) { |
@@ -187,19 +224,19 @@ static u32 __init omap_usb0_init(unsigned nwires, unsigned is_device) | |||
187 | case 3: | 224 | case 3: |
188 | syscon1 = 2; | 225 | syscon1 = 2; |
189 | if (cpu_is_omap24xx()) | 226 | if (cpu_is_omap24xx()) |
190 | CONTROL_DEVCONF_REG |= USBT0WRMODEI(USB_BIDIR); | 227 | omap2_usb_devconf_set(0, USB_BIDIR); |
191 | break; | 228 | break; |
192 | case 4: | 229 | case 4: |
193 | syscon1 = 1; | 230 | syscon1 = 1; |
194 | if (cpu_is_omap24xx()) | 231 | if (cpu_is_omap24xx()) |
195 | CONTROL_DEVCONF_REG |= USBT0WRMODEI(USB_BIDIR); | 232 | omap2_usb_devconf_set(0, USB_BIDIR); |
196 | break; | 233 | break; |
197 | case 6: | 234 | case 6: |
198 | syscon1 = 3; | 235 | syscon1 = 3; |
199 | if (cpu_is_omap24xx()) { | 236 | if (cpu_is_omap24xx()) { |
200 | omap_cfg_reg(J19_24XX_USB0_VP); | 237 | omap_cfg_reg(J19_24XX_USB0_VP); |
201 | omap_cfg_reg(K20_24XX_USB0_VM); | 238 | omap_cfg_reg(K20_24XX_USB0_VM); |
202 | CONTROL_DEVCONF_REG |= USBT0WRMODEI(USB_UNIDIR); | 239 | omap2_usb_devconf_set(0, USB_UNIDIR); |
203 | } else { | 240 | } else { |
204 | omap_cfg_reg(AA9_USB0_VP); | 241 | omap_cfg_reg(AA9_USB0_VP); |
205 | omap_cfg_reg(R9_USB0_VM); | 242 | omap_cfg_reg(R9_USB0_VM); |
@@ -220,7 +257,7 @@ static u32 __init omap_usb1_init(unsigned nwires) | |||
220 | if (cpu_class_is_omap1() && !cpu_is_omap15xx() && nwires != 6) | 257 | if (cpu_class_is_omap1() && !cpu_is_omap15xx() && nwires != 6) |
221 | USB_TRANSCEIVER_CTRL_REG &= ~CONF_USB1_UNI_R; | 258 | USB_TRANSCEIVER_CTRL_REG &= ~CONF_USB1_UNI_R; |
222 | if (cpu_is_omap24xx()) | 259 | if (cpu_is_omap24xx()) |
223 | CONTROL_DEVCONF_REG &= ~USBT1WRMODEI(USB_BIDIR_TLL); | 260 | omap2_usb_devconf_clear(1, USB_BIDIR_TLL); |
224 | 261 | ||
225 | if (nwires == 0) | 262 | if (nwires == 0) |
226 | return 0; | 263 | return 0; |
@@ -261,17 +298,17 @@ static u32 __init omap_usb1_init(unsigned nwires) | |||
261 | * this TLL link is not using DP/DM | 298 | * this TLL link is not using DP/DM |
262 | */ | 299 | */ |
263 | syscon1 = 1; | 300 | syscon1 = 1; |
264 | CONTROL_DEVCONF_REG |= USBT1WRMODEI(USB_BIDIR_TLL); | 301 | omap2_usb_devconf_set(1, USB_BIDIR_TLL); |
265 | break; | 302 | break; |
266 | case 3: | 303 | case 3: |
267 | syscon1 = 2; | 304 | syscon1 = 2; |
268 | if (cpu_is_omap24xx()) | 305 | if (cpu_is_omap24xx()) |
269 | CONTROL_DEVCONF_REG |= USBT1WRMODEI(USB_BIDIR); | 306 | omap2_usb_devconf_set(1, USB_BIDIR); |
270 | break; | 307 | break; |
271 | case 4: | 308 | case 4: |
272 | syscon1 = 1; | 309 | syscon1 = 1; |
273 | if (cpu_is_omap24xx()) | 310 | if (cpu_is_omap24xx()) |
274 | CONTROL_DEVCONF_REG |= USBT1WRMODEI(USB_BIDIR); | 311 | omap2_usb_devconf_set(1, USB_BIDIR); |
275 | break; | 312 | break; |
276 | case 6: | 313 | case 6: |
277 | if (cpu_is_omap24xx()) | 314 | if (cpu_is_omap24xx()) |
@@ -295,8 +332,7 @@ static u32 __init omap_usb2_init(unsigned nwires, unsigned alt_pingroup) | |||
295 | u32 syscon1 = 0; | 332 | u32 syscon1 = 0; |
296 | 333 | ||
297 | if (cpu_is_omap24xx()) { | 334 | if (cpu_is_omap24xx()) { |
298 | CONTROL_DEVCONF_REG &= ~(USBT2WRMODEI(USB_BIDIR_TLL) | 335 | omap2_usb2_disable_5pinbitll(); |
299 | | USBT2TLL5PI); | ||
300 | alt_pingroup = 0; | 336 | alt_pingroup = 0; |
301 | } | 337 | } |
302 | 338 | ||
@@ -343,17 +379,17 @@ static u32 __init omap_usb2_init(unsigned nwires, unsigned alt_pingroup) | |||
343 | * this TLL link is not using DP/DM | 379 | * this TLL link is not using DP/DM |
344 | */ | 380 | */ |
345 | syscon1 = 1; | 381 | syscon1 = 1; |
346 | CONTROL_DEVCONF_REG |= USBT2WRMODEI(USB_BIDIR_TLL); | 382 | omap2_usb_devconf_set(2, USB_BIDIR_TLL); |
347 | break; | 383 | break; |
348 | case 3: | 384 | case 3: |
349 | syscon1 = 2; | 385 | syscon1 = 2; |
350 | if (cpu_is_omap24xx()) | 386 | if (cpu_is_omap24xx()) |
351 | CONTROL_DEVCONF_REG |= USBT2WRMODEI(USB_BIDIR); | 387 | omap2_usb_devconf_set(2, USB_BIDIR); |
352 | break; | 388 | break; |
353 | case 4: | 389 | case 4: |
354 | syscon1 = 1; | 390 | syscon1 = 1; |
355 | if (cpu_is_omap24xx()) | 391 | if (cpu_is_omap24xx()) |
356 | CONTROL_DEVCONF_REG |= USBT2WRMODEI(USB_BIDIR); | 392 | omap2_usb_devconf_set(2, USB_BIDIR); |
357 | break; | 393 | break; |
358 | case 5: | 394 | case 5: |
359 | if (!cpu_is_omap24xx()) | 395 | if (!cpu_is_omap24xx()) |
@@ -364,8 +400,7 @@ static u32 __init omap_usb2_init(unsigned nwires, unsigned alt_pingroup) | |||
364 | * set up OTG_SYSCON2.HMC_TLL{ATTACH,SPEED} | 400 | * set up OTG_SYSCON2.HMC_TLL{ATTACH,SPEED} |
365 | */ | 401 | */ |
366 | syscon1 = 3; | 402 | syscon1 = 3; |
367 | CONTROL_DEVCONF_REG |= USBT2WRMODEI(USB_UNIDIR_TLL) | 403 | omap2_usb2_enable_5pinunitll(); |
368 | | USBT2TLL5PI; | ||
369 | break; | 404 | break; |
370 | case 6: | 405 | case 6: |
371 | if (cpu_is_omap24xx()) | 406 | if (cpu_is_omap24xx()) |
diff --git a/arch/avr32/kernel/setup.c b/arch/avr32/kernel/setup.c index e66a07a928cd..2687b730e2d0 100644 --- a/arch/avr32/kernel/setup.c +++ b/arch/avr32/kernel/setup.c | |||
@@ -163,6 +163,7 @@ add_reserved_region(resource_size_t start, resource_size_t end, | |||
163 | new->start = start; | 163 | new->start = start; |
164 | new->end = end; | 164 | new->end = end; |
165 | new->name = name; | 165 | new->name = name; |
166 | new->sibling = next; | ||
166 | new->flags = IORESOURCE_MEM; | 167 | new->flags = IORESOURCE_MEM; |
167 | 168 | ||
168 | *pprev = new; | 169 | *pprev = new; |
diff --git a/arch/avr32/kernel/traps.c b/arch/avr32/kernel/traps.c index cf6f686d9b0b..b835c4c01368 100644 --- a/arch/avr32/kernel/traps.c +++ b/arch/avr32/kernel/traps.c | |||
@@ -178,6 +178,7 @@ static int do_cop_absent(u32 insn) | |||
178 | return 0; | 178 | return 0; |
179 | } | 179 | } |
180 | 180 | ||
181 | #ifdef CONFIG_BUG | ||
181 | int is_valid_bugaddr(unsigned long pc) | 182 | int is_valid_bugaddr(unsigned long pc) |
182 | { | 183 | { |
183 | unsigned short opcode; | 184 | unsigned short opcode; |
@@ -189,6 +190,7 @@ int is_valid_bugaddr(unsigned long pc) | |||
189 | 190 | ||
190 | return opcode == AVR32_BUG_OPCODE; | 191 | return opcode == AVR32_BUG_OPCODE; |
191 | } | 192 | } |
193 | #endif | ||
192 | 194 | ||
193 | asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) | 195 | asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) |
194 | { | 196 | { |
@@ -197,6 +199,7 @@ asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) | |||
197 | void __user *pc; | 199 | void __user *pc; |
198 | long code; | 200 | long code; |
199 | 201 | ||
202 | #ifdef CONFIG_BUG | ||
200 | if (!user_mode(regs) && (ecr == ECR_ILLEGAL_OPCODE)) { | 203 | if (!user_mode(regs) && (ecr == ECR_ILLEGAL_OPCODE)) { |
201 | enum bug_trap_type type; | 204 | enum bug_trap_type type; |
202 | 205 | ||
@@ -211,6 +214,7 @@ asmlinkage void do_illegal_opcode(unsigned long ecr, struct pt_regs *regs) | |||
211 | die("Kernel BUG", regs, SIGKILL); | 214 | die("Kernel BUG", regs, SIGKILL); |
212 | } | 215 | } |
213 | } | 216 | } |
217 | #endif | ||
214 | 218 | ||
215 | local_irq_enable(); | 219 | local_irq_enable(); |
216 | 220 | ||
diff --git a/arch/frv/kernel/entry-table.S b/arch/frv/kernel/entry-table.S index d3b9253d862a..bf35f33e48c9 100644 --- a/arch/frv/kernel/entry-table.S +++ b/arch/frv/kernel/entry-table.S | |||
@@ -316,8 +316,14 @@ __trap_fixup_kernel_data_tlb_miss: | |||
316 | .section .trap.vector | 316 | .section .trap.vector |
317 | .org TBR_TT_TRAP0 >> 2 | 317 | .org TBR_TT_TRAP0 >> 2 |
318 | .long system_call | 318 | .long system_call |
319 | .rept 126 | 319 | .rept 119 |
320 | .long __entry_unsupported_trap | 320 | .long __entry_unsupported_trap |
321 | .endr | 321 | .endr |
322 | |||
323 | # userspace atomic op emulation, traps 120-126 | ||
324 | .rept 7 | ||
325 | .long __entry_atomic_op | ||
326 | .endr | ||
327 | |||
322 | .org TBR_TT_BREAK >> 2 | 328 | .org TBR_TT_BREAK >> 2 |
323 | .long __entry_debug_exception | 329 | .long __entry_debug_exception |
diff --git a/arch/frv/kernel/entry.S b/arch/frv/kernel/entry.S index f36d7f4a7c25..b8a4b94779b1 100644 --- a/arch/frv/kernel/entry.S +++ b/arch/frv/kernel/entry.S | |||
@@ -656,6 +656,26 @@ __entry_debug_exception: | |||
656 | 656 | ||
657 | ############################################################################### | 657 | ############################################################################### |
658 | # | 658 | # |
659 | # handle atomic operation emulation for userspace | ||
660 | # | ||
661 | ############################################################################### | ||
662 | .globl __entry_atomic_op | ||
663 | __entry_atomic_op: | ||
664 | LEDS 0x6012 | ||
665 | sethi.p %hi(atomic_operation),gr5 | ||
666 | setlo %lo(atomic_operation),gr5 | ||
667 | movsg esfr1,gr8 | ||
668 | movsg epcr0,gr9 | ||
669 | movsg esr0,gr10 | ||
670 | |||
671 | # now that we've accessed the exception regs, we can enable exceptions | ||
672 | movsg psr,gr4 | ||
673 | ori gr4,#PSR_ET,gr4 | ||
674 | movgs gr4,psr | ||
675 | jmpl @(gr5,gr0) ; call atomic_operation(esfr1,epcr0,esr0) | ||
676 | |||
677 | ############################################################################### | ||
678 | # | ||
659 | # handle media exception | 679 | # handle media exception |
660 | # | 680 | # |
661 | ############################################################################### | 681 | ############################################################################### |
diff --git a/arch/frv/kernel/head.inc b/arch/frv/kernel/head.inc index d424cd2eb213..bff66628b99a 100644 --- a/arch/frv/kernel/head.inc +++ b/arch/frv/kernel/head.inc | |||
@@ -46,5 +46,5 @@ | |||
46 | #ifdef CONFIG_MMU | 46 | #ifdef CONFIG_MMU |
47 | __sdram_base = 0x00000000 /* base address to which SDRAM relocated */ | 47 | __sdram_base = 0x00000000 /* base address to which SDRAM relocated */ |
48 | #else | 48 | #else |
49 | __sdram_base = 0xc0000000 /* base address to which SDRAM relocated */ | 49 | __sdram_base = __page_offset /* base address to which SDRAM relocated */ |
50 | #endif | 50 | #endif |
diff --git a/arch/frv/kernel/switch_to.S b/arch/frv/kernel/switch_to.S index b5275fa9cd0d..b06668670fcc 100644 --- a/arch/frv/kernel/switch_to.S +++ b/arch/frv/kernel/switch_to.S | |||
@@ -102,13 +102,6 @@ __switch_to: | |||
102 | movgs gr14,lr | 102 | movgs gr14,lr |
103 | bar | 103 | bar |
104 | 104 | ||
105 | srli gr15,#28,gr5 | ||
106 | subicc gr5,#0xc,gr0,icc0 | ||
107 | beq icc0,#0,111f | ||
108 | break | ||
109 | nop | ||
110 | 111: | ||
111 | |||
112 | # jump to __switch_back or ret_from_fork as appropriate | 105 | # jump to __switch_back or ret_from_fork as appropriate |
113 | # - move prev to GR8 | 106 | # - move prev to GR8 |
114 | movgs gr4,psr | 107 | movgs gr4,psr |
diff --git a/arch/frv/kernel/traps.c b/arch/frv/kernel/traps.c index 2e6098c85578..2f7e66877f3b 100644 --- a/arch/frv/kernel/traps.c +++ b/arch/frv/kernel/traps.c | |||
@@ -102,6 +102,233 @@ asmlinkage void illegal_instruction(unsigned long esfr1, unsigned long epcr0, un | |||
102 | 102 | ||
103 | /*****************************************************************************/ | 103 | /*****************************************************************************/ |
104 | /* | 104 | /* |
105 | * handle atomic operations with errors | ||
106 | * - arguments in gr8, gr9, gr10 | ||
107 | * - original memory value placed in gr5 | ||
108 | * - replacement memory value placed in gr9 | ||
109 | */ | ||
110 | asmlinkage void atomic_operation(unsigned long esfr1, unsigned long epcr0, | ||
111 | unsigned long esr0) | ||
112 | { | ||
113 | static DEFINE_SPINLOCK(atomic_op_lock); | ||
114 | unsigned long x, y, z, *p; | ||
115 | mm_segment_t oldfs; | ||
116 | siginfo_t info; | ||
117 | int ret; | ||
118 | |||
119 | y = 0; | ||
120 | z = 0; | ||
121 | |||
122 | oldfs = get_fs(); | ||
123 | if (!user_mode(__frame)) | ||
124 | set_fs(KERNEL_DS); | ||
125 | |||
126 | switch (__frame->tbr & TBR_TT) { | ||
127 | /* TIRA gr0,#120 | ||
128 | * u32 __atomic_user_cmpxchg32(u32 *ptr, u32 test, u32 new) | ||
129 | */ | ||
130 | case TBR_TT_ATOMIC_CMPXCHG32: | ||
131 | p = (unsigned long *) __frame->gr8; | ||
132 | x = __frame->gr9; | ||
133 | y = __frame->gr10; | ||
134 | |||
135 | for (;;) { | ||
136 | ret = get_user(z, p); | ||
137 | if (ret < 0) | ||
138 | goto error; | ||
139 | |||
140 | if (z != x) | ||
141 | goto done; | ||
142 | |||
143 | spin_lock_irq(&atomic_op_lock); | ||
144 | |||
145 | if (__get_user(z, p) == 0) { | ||
146 | if (z != x) | ||
147 | goto done2; | ||
148 | |||
149 | if (__put_user(y, p) == 0) | ||
150 | goto done2; | ||
151 | goto error2; | ||
152 | } | ||
153 | |||
154 | spin_unlock_irq(&atomic_op_lock); | ||
155 | } | ||
156 | |||
157 | /* TIRA gr0,#121 | ||
158 | * u32 __atomic_kernel_xchg32(void *v, u32 new) | ||
159 | */ | ||
160 | case TBR_TT_ATOMIC_XCHG32: | ||
161 | p = (unsigned long *) __frame->gr8; | ||
162 | y = __frame->gr9; | ||
163 | |||
164 | for (;;) { | ||
165 | ret = get_user(z, p); | ||
166 | if (ret < 0) | ||
167 | goto error; | ||
168 | |||
169 | spin_lock_irq(&atomic_op_lock); | ||
170 | |||
171 | if (__get_user(z, p) == 0) { | ||
172 | if (__put_user(y, p) == 0) | ||
173 | goto done2; | ||
174 | goto error2; | ||
175 | } | ||
176 | |||
177 | spin_unlock_irq(&atomic_op_lock); | ||
178 | } | ||
179 | |||
180 | /* TIRA gr0,#122 | ||
181 | * ulong __atomic_kernel_XOR_return(ulong i, ulong *v) | ||
182 | */ | ||
183 | case TBR_TT_ATOMIC_XOR: | ||
184 | p = (unsigned long *) __frame->gr8; | ||
185 | x = __frame->gr9; | ||
186 | |||
187 | for (;;) { | ||
188 | ret = get_user(z, p); | ||
189 | if (ret < 0) | ||
190 | goto error; | ||
191 | |||
192 | spin_lock_irq(&atomic_op_lock); | ||
193 | |||
194 | if (__get_user(z, p) == 0) { | ||
195 | y = x ^ z; | ||
196 | if (__put_user(y, p) == 0) | ||
197 | goto done2; | ||
198 | goto error2; | ||
199 | } | ||
200 | |||
201 | spin_unlock_irq(&atomic_op_lock); | ||
202 | } | ||
203 | |||
204 | /* TIRA gr0,#123 | ||
205 | * ulong __atomic_kernel_OR_return(ulong i, ulong *v) | ||
206 | */ | ||
207 | case TBR_TT_ATOMIC_OR: | ||
208 | p = (unsigned long *) __frame->gr8; | ||
209 | x = __frame->gr9; | ||
210 | |||
211 | for (;;) { | ||
212 | ret = get_user(z, p); | ||
213 | if (ret < 0) | ||
214 | goto error; | ||
215 | |||
216 | spin_lock_irq(&atomic_op_lock); | ||
217 | |||
218 | if (__get_user(z, p) == 0) { | ||
219 | y = x ^ z; | ||
220 | if (__put_user(y, p) == 0) | ||
221 | goto done2; | ||
222 | goto error2; | ||
223 | } | ||
224 | |||
225 | spin_unlock_irq(&atomic_op_lock); | ||
226 | } | ||
227 | |||
228 | /* TIRA gr0,#124 | ||
229 | * ulong __atomic_kernel_AND_return(ulong i, ulong *v) | ||
230 | */ | ||
231 | case TBR_TT_ATOMIC_AND: | ||
232 | p = (unsigned long *) __frame->gr8; | ||
233 | x = __frame->gr9; | ||
234 | |||
235 | for (;;) { | ||
236 | ret = get_user(z, p); | ||
237 | if (ret < 0) | ||
238 | goto error; | ||
239 | |||
240 | spin_lock_irq(&atomic_op_lock); | ||
241 | |||
242 | if (__get_user(z, p) == 0) { | ||
243 | y = x & z; | ||
244 | if (__put_user(y, p) == 0) | ||
245 | goto done2; | ||
246 | goto error2; | ||
247 | } | ||
248 | |||
249 | spin_unlock_irq(&atomic_op_lock); | ||
250 | } | ||
251 | |||
252 | /* TIRA gr0,#125 | ||
253 | * int __atomic_user_sub_return(atomic_t *v, int i) | ||
254 | */ | ||
255 | case TBR_TT_ATOMIC_SUB: | ||
256 | p = (unsigned long *) __frame->gr8; | ||
257 | x = __frame->gr9; | ||
258 | |||
259 | for (;;) { | ||
260 | ret = get_user(z, p); | ||
261 | if (ret < 0) | ||
262 | goto error; | ||
263 | |||
264 | spin_lock_irq(&atomic_op_lock); | ||
265 | |||
266 | if (__get_user(z, p) == 0) { | ||
267 | y = z - x; | ||
268 | if (__put_user(y, p) == 0) | ||
269 | goto done2; | ||
270 | goto error2; | ||
271 | } | ||
272 | |||
273 | spin_unlock_irq(&atomic_op_lock); | ||
274 | } | ||
275 | |||
276 | /* TIRA gr0,#126 | ||
277 | * int __atomic_user_add_return(atomic_t *v, int i) | ||
278 | */ | ||
279 | case TBR_TT_ATOMIC_ADD: | ||
280 | p = (unsigned long *) __frame->gr8; | ||
281 | x = __frame->gr9; | ||
282 | |||
283 | for (;;) { | ||
284 | ret = get_user(z, p); | ||
285 | if (ret < 0) | ||
286 | goto error; | ||
287 | |||
288 | spin_lock_irq(&atomic_op_lock); | ||
289 | |||
290 | if (__get_user(z, p) == 0) { | ||
291 | y = z + x; | ||
292 | if (__put_user(y, p) == 0) | ||
293 | goto done2; | ||
294 | goto error2; | ||
295 | } | ||
296 | |||
297 | spin_unlock_irq(&atomic_op_lock); | ||
298 | } | ||
299 | |||
300 | default: | ||
301 | BUG(); | ||
302 | } | ||
303 | |||
304 | done2: | ||
305 | spin_unlock_irq(&atomic_op_lock); | ||
306 | done: | ||
307 | if (!user_mode(__frame)) | ||
308 | set_fs(oldfs); | ||
309 | __frame->gr5 = z; | ||
310 | __frame->gr9 = y; | ||
311 | return; | ||
312 | |||
313 | error2: | ||
314 | spin_unlock_irq(&atomic_op_lock); | ||
315 | error: | ||
316 | if (!user_mode(__frame)) | ||
317 | set_fs(oldfs); | ||
318 | __frame->pc -= 4; | ||
319 | |||
320 | die_if_kernel("-- Atomic Op Error --\n"); | ||
321 | |||
322 | info.si_signo = SIGSEGV; | ||
323 | info.si_code = SEGV_ACCERR; | ||
324 | info.si_errno = 0; | ||
325 | info.si_addr = (void *) __frame->pc; | ||
326 | |||
327 | force_sig_info(info.si_signo, &info, current); | ||
328 | } | ||
329 | |||
330 | /*****************************************************************************/ | ||
331 | /* | ||
105 | * | 332 | * |
106 | */ | 333 | */ |
107 | asmlinkage void media_exception(unsigned long msr0, unsigned long msr1) | 334 | asmlinkage void media_exception(unsigned long msr0, unsigned long msr1) |
diff --git a/arch/m68k/Makefile b/arch/m68k/Makefile index 2cba605cb59d..b15173f28a23 100644 --- a/arch/m68k/Makefile +++ b/arch/m68k/Makefile | |||
@@ -13,6 +13,8 @@ | |||
13 | # Copyright (C) 1994 by Hamish Macdonald | 13 | # Copyright (C) 1994 by Hamish Macdonald |
14 | # | 14 | # |
15 | 15 | ||
16 | KBUILD_DEFCONFIG := amiga_defconfig | ||
17 | |||
16 | # override top level makefile | 18 | # override top level makefile |
17 | AS += -m68020 | 19 | AS += -m68020 |
18 | LDFLAGS := -m m68kelf | 20 | LDFLAGS := -m m68kelf |
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig index 5649fbae430e..e41958371367 100644 --- a/arch/m68k/configs/amiga_defconfig +++ b/arch/m68k/configs/amiga_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:23 2005 | 4 | # Wed Apr 2 20:46:06 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-amiga" | 27 | CONFIG_LOCALVERSION="-amiga" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -80,10 +128,24 @@ CONFIG_M68030=y | |||
80 | CONFIG_M68040=y | 128 | CONFIG_M68040=y |
81 | CONFIG_M68060=y | 129 | CONFIG_M68060=y |
82 | CONFIG_MMU_MOTOROLA=y | 130 | CONFIG_MMU_MOTOROLA=y |
83 | CONFIG_M68KFPU_EMU=y | 131 | # CONFIG_M68KFPU_EMU is not set |
84 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
85 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
86 | # CONFIG_ADVANCED is not set | 132 | # CONFIG_ADVANCED is not set |
133 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
134 | CONFIG_NODES_SHIFT=3 | ||
135 | CONFIG_SELECT_MEMORY_MODEL=y | ||
136 | # CONFIG_FLATMEM_MANUAL is not set | ||
137 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
138 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
139 | CONFIG_DISCONTIGMEM=y | ||
140 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
141 | CONFIG_NEED_MULTIPLE_NODES=y | ||
142 | # CONFIG_SPARSEMEM_STATIC is not set | ||
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
145 | # CONFIG_RESOURCES_64BIT is not set | ||
146 | CONFIG_ZONE_DMA_FLAG=1 | ||
147 | CONFIG_BOUNCE=y | ||
148 | CONFIG_VIRT_TO_BUS=y | ||
87 | 149 | ||
88 | # | 150 | # |
89 | # General setup | 151 | # General setup |
@@ -97,47 +159,288 @@ CONFIG_AMIGA_PCMCIA=y | |||
97 | CONFIG_PROC_HARDWARE=y | 159 | CONFIG_PROC_HARDWARE=y |
98 | CONFIG_ISA=y | 160 | CONFIG_ISA=y |
99 | CONFIG_GENERIC_ISA_DMA=y | 161 | CONFIG_GENERIC_ISA_DMA=y |
162 | CONFIG_ZONE_DMA=y | ||
163 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
100 | CONFIG_ZORRO_NAMES=y | 164 | CONFIG_ZORRO_NAMES=y |
101 | 165 | ||
102 | # | 166 | # |
103 | # Device Drivers | 167 | # Networking |
104 | # | 168 | # |
169 | CONFIG_NET=y | ||
105 | 170 | ||
106 | # | 171 | # |
107 | # Generic Driver Options | 172 | # Networking options |
108 | # | 173 | # |
109 | CONFIG_STANDALONE=y | 174 | CONFIG_PACKET=y |
110 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 175 | # CONFIG_PACKET_MMAP is not set |
111 | CONFIG_FW_LOADER=m | 176 | CONFIG_UNIX=y |
112 | # CONFIG_DEBUG_DRIVER is not set | 177 | CONFIG_XFRM=y |
178 | # CONFIG_XFRM_USER is not set | ||
179 | # CONFIG_XFRM_SUB_POLICY is not set | ||
180 | CONFIG_XFRM_MIGRATE=y | ||
181 | # CONFIG_XFRM_STATISTICS is not set | ||
182 | CONFIG_NET_KEY=y | ||
183 | CONFIG_NET_KEY_MIGRATE=y | ||
184 | CONFIG_INET=y | ||
185 | # CONFIG_IP_MULTICAST is not set | ||
186 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
187 | CONFIG_IP_FIB_HASH=y | ||
188 | # CONFIG_IP_PNP is not set | ||
189 | CONFIG_NET_IPIP=m | ||
190 | CONFIG_NET_IPGRE=m | ||
191 | # CONFIG_ARPD is not set | ||
192 | CONFIG_SYN_COOKIES=y | ||
193 | CONFIG_INET_AH=m | ||
194 | CONFIG_INET_ESP=m | ||
195 | CONFIG_INET_IPCOMP=m | ||
196 | CONFIG_INET_XFRM_TUNNEL=m | ||
197 | CONFIG_INET_TUNNEL=m | ||
198 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | ||
199 | CONFIG_INET_XFRM_MODE_TUNNEL=m | ||
200 | CONFIG_INET_XFRM_MODE_BEET=m | ||
201 | CONFIG_INET_LRO=m | ||
202 | CONFIG_INET_DIAG=m | ||
203 | CONFIG_INET_TCP_DIAG=m | ||
204 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
205 | CONFIG_TCP_CONG_CUBIC=y | ||
206 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
207 | # CONFIG_TCP_MD5SIG is not set | ||
208 | # CONFIG_IP_VS is not set | ||
209 | CONFIG_IPV6=m | ||
210 | CONFIG_IPV6_PRIVACY=y | ||
211 | CONFIG_IPV6_ROUTER_PREF=y | ||
212 | CONFIG_IPV6_ROUTE_INFO=y | ||
213 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
214 | CONFIG_INET6_AH=m | ||
215 | CONFIG_INET6_ESP=m | ||
216 | CONFIG_INET6_IPCOMP=m | ||
217 | # CONFIG_IPV6_MIP6 is not set | ||
218 | CONFIG_INET6_XFRM_TUNNEL=m | ||
219 | CONFIG_INET6_TUNNEL=m | ||
220 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
221 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
224 | CONFIG_IPV6_SIT=m | ||
225 | CONFIG_IPV6_TUNNEL=m | ||
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | ||
228 | CONFIG_NETFILTER=y | ||
229 | # CONFIG_NETFILTER_DEBUG is not set | ||
230 | CONFIG_NETFILTER_ADVANCED=y | ||
231 | |||
232 | # | ||
233 | # Core Netfilter Configuration | ||
234 | # | ||
235 | CONFIG_NETFILTER_NETLINK=m | ||
236 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
237 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
238 | CONFIG_NF_CONNTRACK=m | ||
239 | CONFIG_NF_CT_ACCT=y | ||
240 | CONFIG_NF_CONNTRACK_MARK=y | ||
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | ||
243 | CONFIG_NF_CT_PROTO_SCTP=m | ||
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
245 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
246 | CONFIG_NF_CONNTRACK_FTP=m | ||
247 | CONFIG_NF_CONNTRACK_H323=m | ||
248 | CONFIG_NF_CONNTRACK_IRC=m | ||
249 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
250 | CONFIG_NF_CONNTRACK_PPTP=m | ||
251 | CONFIG_NF_CONNTRACK_SANE=m | ||
252 | CONFIG_NF_CONNTRACK_SIP=m | ||
253 | CONFIG_NF_CONNTRACK_TFTP=m | ||
254 | # CONFIG_NF_CT_NETLINK is not set | ||
255 | CONFIG_NETFILTER_XTABLES=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
265 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
266 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
294 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
295 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
113 | 296 | ||
114 | # | 297 | # |
115 | # Memory Technology Devices (MTD) | 298 | # IP: Netfilter Configuration |
116 | # | 299 | # |
117 | # CONFIG_MTD is not set | 300 | CONFIG_NF_CONNTRACK_IPV4=m |
301 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
302 | CONFIG_IP_NF_QUEUE=m | ||
303 | CONFIG_IP_NF_IPTABLES=m | ||
304 | CONFIG_IP_NF_MATCH_RECENT=m | ||
305 | CONFIG_IP_NF_MATCH_ECN=m | ||
306 | CONFIG_IP_NF_MATCH_AH=m | ||
307 | CONFIG_IP_NF_MATCH_TTL=m | ||
308 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
309 | CONFIG_IP_NF_FILTER=m | ||
310 | CONFIG_IP_NF_TARGET_REJECT=m | ||
311 | CONFIG_IP_NF_TARGET_LOG=m | ||
312 | CONFIG_IP_NF_TARGET_ULOG=m | ||
313 | CONFIG_NF_NAT=m | ||
314 | CONFIG_NF_NAT_NEEDED=y | ||
315 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
316 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
317 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
318 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
319 | CONFIG_NF_NAT_PROTO_GRE=m | ||
320 | CONFIG_NF_NAT_FTP=m | ||
321 | CONFIG_NF_NAT_IRC=m | ||
322 | CONFIG_NF_NAT_TFTP=m | ||
323 | CONFIG_NF_NAT_AMANDA=m | ||
324 | CONFIG_NF_NAT_PPTP=m | ||
325 | CONFIG_NF_NAT_H323=m | ||
326 | CONFIG_NF_NAT_SIP=m | ||
327 | CONFIG_IP_NF_MANGLE=m | ||
328 | CONFIG_IP_NF_TARGET_ECN=m | ||
329 | CONFIG_IP_NF_TARGET_TTL=m | ||
330 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
331 | CONFIG_IP_NF_RAW=m | ||
332 | CONFIG_IP_NF_ARPTABLES=m | ||
333 | CONFIG_IP_NF_ARPFILTER=m | ||
334 | CONFIG_IP_NF_ARP_MANGLE=m | ||
335 | |||
336 | # | ||
337 | # IPv6: Netfilter Configuration | ||
338 | # | ||
339 | CONFIG_NF_CONNTRACK_IPV6=m | ||
340 | CONFIG_IP6_NF_QUEUE=m | ||
341 | CONFIG_IP6_NF_IPTABLES=m | ||
342 | CONFIG_IP6_NF_MATCH_RT=m | ||
343 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
344 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
345 | CONFIG_IP6_NF_MATCH_HL=m | ||
346 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
347 | CONFIG_IP6_NF_MATCH_AH=m | ||
348 | CONFIG_IP6_NF_MATCH_MH=m | ||
349 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
350 | CONFIG_IP6_NF_FILTER=m | ||
351 | CONFIG_IP6_NF_TARGET_LOG=m | ||
352 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
353 | CONFIG_IP6_NF_MANGLE=m | ||
354 | CONFIG_IP6_NF_TARGET_HL=m | ||
355 | CONFIG_IP6_NF_RAW=m | ||
356 | CONFIG_IP_DCCP=m | ||
357 | CONFIG_INET_DCCP_DIAG=m | ||
358 | CONFIG_IP_DCCP_ACKVEC=y | ||
359 | |||
360 | # | ||
361 | # DCCP CCIDs Configuration (EXPERIMENTAL) | ||
362 | # | ||
363 | CONFIG_IP_DCCP_CCID2=m | ||
364 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
365 | CONFIG_IP_DCCP_CCID3=m | ||
366 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
367 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
368 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
369 | CONFIG_IP_SCTP=m | ||
370 | # CONFIG_SCTP_DBG_MSG is not set | ||
371 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
372 | # CONFIG_SCTP_HMAC_NONE is not set | ||
373 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
374 | CONFIG_SCTP_HMAC_MD5=y | ||
375 | # CONFIG_TIPC is not set | ||
376 | # CONFIG_ATM is not set | ||
377 | # CONFIG_BRIDGE is not set | ||
378 | # CONFIG_VLAN_8021Q is not set | ||
379 | # CONFIG_DECNET is not set | ||
380 | CONFIG_LLC=m | ||
381 | # CONFIG_LLC2 is not set | ||
382 | # CONFIG_IPX is not set | ||
383 | CONFIG_ATALK=m | ||
384 | # CONFIG_DEV_APPLETALK is not set | ||
385 | # CONFIG_X25 is not set | ||
386 | # CONFIG_LAPB is not set | ||
387 | # CONFIG_ECONET is not set | ||
388 | # CONFIG_WAN_ROUTER is not set | ||
389 | # CONFIG_NET_SCHED is not set | ||
390 | CONFIG_NET_CLS_ROUTE=y | ||
118 | 391 | ||
119 | # | 392 | # |
120 | # Parallel port support | 393 | # Network testing |
121 | # | 394 | # |
395 | # CONFIG_NET_PKTGEN is not set | ||
396 | # CONFIG_HAMRADIO is not set | ||
397 | # CONFIG_CAN is not set | ||
398 | # CONFIG_IRDA is not set | ||
399 | # CONFIG_BT is not set | ||
400 | # CONFIG_AF_RXRPC is not set | ||
401 | |||
402 | # | ||
403 | # Wireless | ||
404 | # | ||
405 | # CONFIG_CFG80211 is not set | ||
406 | CONFIG_WIRELESS_EXT=y | ||
407 | # CONFIG_MAC80211 is not set | ||
408 | CONFIG_IEEE80211=m | ||
409 | # CONFIG_IEEE80211_DEBUG is not set | ||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | ||
416 | # CONFIG_NET_9P is not set | ||
417 | |||
418 | # | ||
419 | # Device Drivers | ||
420 | # | ||
421 | |||
422 | # | ||
423 | # Generic Driver Options | ||
424 | # | ||
425 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
426 | CONFIG_STANDALONE=y | ||
427 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
428 | CONFIG_FW_LOADER=m | ||
429 | # CONFIG_SYS_HYPERVISOR is not set | ||
430 | CONFIG_CONNECTOR=m | ||
431 | # CONFIG_MTD is not set | ||
122 | CONFIG_PARPORT=m | 432 | CONFIG_PARPORT=m |
123 | # CONFIG_PARPORT_PC is not set | 433 | # CONFIG_PARPORT_PC is not set |
124 | CONFIG_PARPORT_NOT_PC=y | ||
125 | CONFIG_PARPORT_AMIGA=m | 434 | CONFIG_PARPORT_AMIGA=m |
126 | CONFIG_PARPORT_MFC3=m | 435 | CONFIG_PARPORT_MFC3=m |
127 | # CONFIG_PARPORT_GSC is not set | 436 | # CONFIG_PARPORT_GSC is not set |
437 | # CONFIG_PARPORT_AX88796 is not set | ||
128 | CONFIG_PARPORT_1284=y | 438 | CONFIG_PARPORT_1284=y |
129 | 439 | CONFIG_PARPORT_NOT_PC=y | |
130 | # | ||
131 | # Plug and Play support | ||
132 | # | ||
133 | # CONFIG_PNP is not set | 440 | # CONFIG_PNP is not set |
134 | 441 | CONFIG_BLK_DEV=y | |
135 | # | ||
136 | # Block devices | ||
137 | # | ||
138 | CONFIG_AMIGA_FLOPPY=y | 442 | CONFIG_AMIGA_FLOPPY=y |
139 | CONFIG_AMIGA_Z2RAM=y | 443 | CONFIG_AMIGA_Z2RAM=y |
140 | # CONFIG_PARIDE is not set | ||
141 | # CONFIG_BLK_DEV_COW_COMMON is not set | 444 | # CONFIG_BLK_DEV_COW_COMMON is not set |
142 | CONFIG_BLK_DEV_LOOP=y | 445 | CONFIG_BLK_DEV_LOOP=y |
143 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 446 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
@@ -145,56 +448,66 @@ CONFIG_BLK_DEV_NBD=m | |||
145 | CONFIG_BLK_DEV_RAM=y | 448 | CONFIG_BLK_DEV_RAM=y |
146 | CONFIG_BLK_DEV_RAM_COUNT=16 | 449 | CONFIG_BLK_DEV_RAM_COUNT=16 |
147 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 450 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
148 | CONFIG_BLK_DEV_INITRD=y | 451 | # CONFIG_BLK_DEV_XIP is not set |
149 | CONFIG_INITRAMFS_SOURCE="" | ||
150 | CONFIG_CDROM_PKTCDVD=m | 452 | CONFIG_CDROM_PKTCDVD=m |
151 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 453 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
152 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | 454 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set |
153 | |||
154 | # | ||
155 | # IO Schedulers | ||
156 | # | ||
157 | CONFIG_IOSCHED_NOOP=y | ||
158 | CONFIG_IOSCHED_AS=y | ||
159 | CONFIG_IOSCHED_DEADLINE=y | ||
160 | CONFIG_IOSCHED_CFQ=y | ||
161 | CONFIG_ATA_OVER_ETH=m | 455 | CONFIG_ATA_OVER_ETH=m |
162 | 456 | CONFIG_MISC_DEVICES=y | |
163 | # | 457 | # CONFIG_EEPROM_93CX6 is not set |
164 | # ATA/ATAPI/MFM/RLL support | 458 | # CONFIG_ENCLOSURE_SERVICES is not set |
165 | # | 459 | CONFIG_HAVE_IDE=y |
166 | CONFIG_IDE=y | 460 | CONFIG_IDE=y |
167 | CONFIG_BLK_DEV_IDE=y | 461 | CONFIG_BLK_DEV_IDE=y |
168 | 462 | ||
169 | # | 463 | # |
170 | # Please see Documentation/ide.txt for help/info on IDE drives | 464 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
171 | # | 465 | # |
172 | # CONFIG_BLK_DEV_IDE_SATA is not set | 466 | # CONFIG_BLK_DEV_IDE_SATA is not set |
173 | CONFIG_BLK_DEV_IDEDISK=y | 467 | CONFIG_BLK_DEV_IDEDISK=y |
174 | # CONFIG_IDEDISK_MULTI_MODE is not set | 468 | # CONFIG_IDEDISK_MULTI_MODE is not set |
175 | CONFIG_BLK_DEV_IDECD=y | 469 | CONFIG_BLK_DEV_IDECD=y |
176 | CONFIG_BLK_DEV_IDETAPE=m | 470 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y |
471 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
177 | CONFIG_BLK_DEV_IDEFLOPPY=m | 472 | CONFIG_BLK_DEV_IDEFLOPPY=m |
178 | # CONFIG_BLK_DEV_IDESCSI is not set | 473 | # CONFIG_BLK_DEV_IDESCSI is not set |
179 | # CONFIG_IDE_TASK_IOCTL is not set | 474 | # CONFIG_IDE_TASK_IOCTL is not set |
475 | CONFIG_IDE_PROC_FS=y | ||
180 | 476 | ||
181 | # | 477 | # |
182 | # IDE chipset support/bugfixes | 478 | # IDE chipset support/bugfixes |
183 | # | 479 | # |
184 | CONFIG_IDE_GENERIC=y | 480 | # CONFIG_IDE_GENERIC is not set |
185 | # CONFIG_IDE_ARM is not set | 481 | # CONFIG_BLK_DEV_PLATFORM is not set |
186 | CONFIG_BLK_DEV_GAYLE=y | 482 | CONFIG_BLK_DEV_GAYLE=y |
187 | CONFIG_BLK_DEV_IDEDOUBLER=y | 483 | CONFIG_BLK_DEV_IDEDOUBLER=y |
188 | CONFIG_BLK_DEV_BUDDHA=y | 484 | CONFIG_BLK_DEV_BUDDHA=y |
189 | # CONFIG_IDE_CHIPSETS is not set | 485 | |
486 | # | ||
487 | # Other IDE chipsets support | ||
488 | # | ||
489 | |||
490 | # | ||
491 | # Note: most of these also require special kernel boot parameters | ||
492 | # | ||
493 | # CONFIG_BLK_DEV_4DRIVES is not set | ||
494 | # CONFIG_BLK_DEV_ALI14XX is not set | ||
495 | # CONFIG_BLK_DEV_DTC2278 is not set | ||
496 | # CONFIG_BLK_DEV_HT6560B is not set | ||
497 | # CONFIG_BLK_DEV_QD65XX is not set | ||
498 | # CONFIG_BLK_DEV_UMC8672 is not set | ||
190 | # CONFIG_BLK_DEV_IDEDMA is not set | 499 | # CONFIG_BLK_DEV_IDEDMA is not set |
191 | # CONFIG_IDEDMA_AUTO is not set | 500 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set |
192 | # CONFIG_BLK_DEV_HD is not set | 501 | # CONFIG_BLK_DEV_HD is not set |
193 | 502 | ||
194 | # | 503 | # |
195 | # SCSI device support | 504 | # SCSI device support |
196 | # | 505 | # |
506 | CONFIG_RAID_ATTRS=m | ||
197 | CONFIG_SCSI=y | 507 | CONFIG_SCSI=y |
508 | CONFIG_SCSI_DMA=y | ||
509 | CONFIG_SCSI_TGT=m | ||
510 | # CONFIG_SCSI_NETLINK is not set | ||
198 | CONFIG_SCSI_PROC_FS=y | 511 | CONFIG_SCSI_PROC_FS=y |
199 | 512 | ||
200 | # | 513 | # |
@@ -206,6 +519,7 @@ CONFIG_CHR_DEV_OSST=m | |||
206 | CONFIG_BLK_DEV_SR=y | 519 | CONFIG_BLK_DEV_SR=y |
207 | CONFIG_BLK_DEV_SR_VENDOR=y | 520 | CONFIG_BLK_DEV_SR_VENDOR=y |
208 | CONFIG_CHR_DEV_SG=m | 521 | CONFIG_CHR_DEV_SG=m |
522 | # CONFIG_CHR_DEV_SCH is not set | ||
209 | 523 | ||
210 | # | 524 | # |
211 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 525 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -213,30 +527,34 @@ CONFIG_CHR_DEV_SG=m | |||
213 | # CONFIG_SCSI_MULTI_LUN is not set | 527 | # CONFIG_SCSI_MULTI_LUN is not set |
214 | CONFIG_SCSI_CONSTANTS=y | 528 | CONFIG_SCSI_CONSTANTS=y |
215 | # CONFIG_SCSI_LOGGING is not set | 529 | # CONFIG_SCSI_LOGGING is not set |
530 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
531 | CONFIG_SCSI_WAIT_SCAN=m | ||
216 | 532 | ||
217 | # | 533 | # |
218 | # SCSI Transport Attributes | 534 | # SCSI Transports |
219 | # | 535 | # |
220 | # CONFIG_SCSI_SPI_ATTRS is not set | 536 | CONFIG_SCSI_SPI_ATTRS=y |
221 | # CONFIG_SCSI_FC_ATTRS is not set | 537 | # CONFIG_SCSI_FC_ATTRS is not set |
222 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 538 | CONFIG_SCSI_ISCSI_ATTRS=m |
223 | 539 | CONFIG_SCSI_SAS_ATTRS=m | |
224 | # | 540 | CONFIG_SCSI_SAS_LIBSAS=m |
225 | # SCSI low-level drivers | 541 | CONFIG_SCSI_SAS_HOST_SMP=y |
226 | # | 542 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set |
543 | CONFIG_SCSI_SRP_ATTRS=m | ||
544 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
545 | CONFIG_SCSI_LOWLEVEL=y | ||
546 | CONFIG_ISCSI_TCP=m | ||
227 | # CONFIG_SCSI_AHA152X is not set | 547 | # CONFIG_SCSI_AHA152X is not set |
228 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 548 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
549 | # CONFIG_SCSI_ADVANSYS is not set | ||
229 | # CONFIG_SCSI_IN2000 is not set | 550 | # CONFIG_SCSI_IN2000 is not set |
230 | # CONFIG_SCSI_SATA is not set | ||
231 | # CONFIG_SCSI_DTC3280 is not set | 551 | # CONFIG_SCSI_DTC3280 is not set |
232 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 552 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
233 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | 553 | # CONFIG_SCSI_GENERIC_NCR5380 is not set |
234 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | 554 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set |
235 | # CONFIG_SCSI_PPA is not set | ||
236 | # CONFIG_SCSI_IMM is not set | ||
237 | # CONFIG_SCSI_NCR53C406A is not set | 555 | # CONFIG_SCSI_NCR53C406A is not set |
556 | CONFIG_53C700_BE_BUS=y | ||
238 | # CONFIG_SCSI_PAS16 is not set | 557 | # CONFIG_SCSI_PAS16 is not set |
239 | # CONFIG_SCSI_PSI240I is not set | ||
240 | # CONFIG_SCSI_QLOGIC_FAS is not set | 558 | # CONFIG_SCSI_QLOGIC_FAS is not set |
241 | # CONFIG_SCSI_SYM53C416 is not set | 559 | # CONFIG_SCSI_SYM53C416 is not set |
242 | # CONFIG_SCSI_T128 is not set | 560 | # CONFIG_SCSI_T128 is not set |
@@ -244,243 +562,42 @@ CONFIG_SCSI_CONSTANTS=y | |||
244 | CONFIG_A3000_SCSI=y | 562 | CONFIG_A3000_SCSI=y |
245 | CONFIG_A2091_SCSI=y | 563 | CONFIG_A2091_SCSI=y |
246 | CONFIG_GVP11_SCSI=y | 564 | CONFIG_GVP11_SCSI=y |
247 | CONFIG_CYBERSTORM_SCSI=y | 565 | CONFIG_SCSI_A4000T=y |
248 | CONFIG_CYBERSTORMII_SCSI=y | 566 | CONFIG_SCSI_ZORRO7XX=y |
249 | CONFIG_BLZ2060_SCSI=y | ||
250 | CONFIG_BLZ1230_SCSI=y | ||
251 | CONFIG_FASTLANE_SCSI=y | ||
252 | CONFIG_OKTAGON_SCSI=y | ||
253 | |||
254 | # | ||
255 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
256 | # | ||
257 | # CONFIG_CD_NO_IDESCSI is not set | ||
258 | |||
259 | # | ||
260 | # Multi-device support (RAID and LVM) | ||
261 | # | ||
262 | CONFIG_MD=y | 567 | CONFIG_MD=y |
263 | CONFIG_BLK_DEV_MD=m | 568 | CONFIG_BLK_DEV_MD=m |
264 | CONFIG_MD_LINEAR=m | 569 | CONFIG_MD_LINEAR=m |
265 | CONFIG_MD_RAID0=m | 570 | CONFIG_MD_RAID0=m |
266 | CONFIG_MD_RAID1=m | 571 | CONFIG_MD_RAID1=m |
267 | # CONFIG_MD_RAID10 is not set | 572 | # CONFIG_MD_RAID10 is not set |
268 | CONFIG_MD_RAID5=m | 573 | CONFIG_MD_RAID456=m |
269 | CONFIG_MD_RAID6=m | 574 | CONFIG_MD_RAID5_RESHAPE=y |
270 | CONFIG_MD_MULTIPATH=m | 575 | CONFIG_MD_MULTIPATH=m |
271 | # CONFIG_MD_FAULTY is not set | 576 | # CONFIG_MD_FAULTY is not set |
272 | CONFIG_BLK_DEV_DM=m | 577 | CONFIG_BLK_DEV_DM=m |
578 | # CONFIG_DM_DEBUG is not set | ||
273 | CONFIG_DM_CRYPT=m | 579 | CONFIG_DM_CRYPT=m |
274 | CONFIG_DM_SNAPSHOT=m | 580 | CONFIG_DM_SNAPSHOT=m |
275 | CONFIG_DM_MIRROR=m | 581 | CONFIG_DM_MIRROR=m |
276 | CONFIG_DM_ZERO=m | 582 | CONFIG_DM_ZERO=m |
277 | CONFIG_DM_MULTIPATH=m | 583 | CONFIG_DM_MULTIPATH=m |
278 | CONFIG_DM_MULTIPATH_EMC=m | 584 | CONFIG_DM_MULTIPATH_EMC=m |
279 | 585 | CONFIG_DM_MULTIPATH_RDAC=m | |
280 | # | 586 | CONFIG_DM_MULTIPATH_HP=m |
281 | # Fusion MPT device support | 587 | # CONFIG_DM_DELAY is not set |
282 | # | 588 | CONFIG_DM_UEVENT=y |
283 | |||
284 | # | ||
285 | # IEEE 1394 (FireWire) support | ||
286 | # | ||
287 | |||
288 | # | ||
289 | # I2O device support | ||
290 | # | ||
291 | |||
292 | # | ||
293 | # Networking support | ||
294 | # | ||
295 | CONFIG_NET=y | ||
296 | |||
297 | # | ||
298 | # Networking options | ||
299 | # | ||
300 | CONFIG_PACKET=y | ||
301 | # CONFIG_PACKET_MMAP is not set | ||
302 | CONFIG_UNIX=y | ||
303 | CONFIG_NET_KEY=y | ||
304 | CONFIG_INET=y | ||
305 | # CONFIG_IP_MULTICAST is not set | ||
306 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
307 | # CONFIG_IP_PNP is not set | ||
308 | CONFIG_NET_IPIP=m | ||
309 | CONFIG_NET_IPGRE=m | ||
310 | # CONFIG_ARPD is not set | ||
311 | CONFIG_SYN_COOKIES=y | ||
312 | CONFIG_INET_AH=m | ||
313 | CONFIG_INET_ESP=m | ||
314 | CONFIG_INET_IPCOMP=m | ||
315 | CONFIG_INET_TUNNEL=m | ||
316 | CONFIG_IP_TCPDIAG=m | ||
317 | CONFIG_IP_TCPDIAG_IPV6=y | ||
318 | |||
319 | # | ||
320 | # IP: Virtual Server Configuration | ||
321 | # | ||
322 | # CONFIG_IP_VS is not set | ||
323 | CONFIG_IPV6=m | ||
324 | CONFIG_IPV6_PRIVACY=y | ||
325 | CONFIG_INET6_AH=m | ||
326 | CONFIG_INET6_ESP=m | ||
327 | CONFIG_INET6_IPCOMP=m | ||
328 | CONFIG_INET6_TUNNEL=m | ||
329 | CONFIG_IPV6_TUNNEL=m | ||
330 | CONFIG_NETFILTER=y | ||
331 | # CONFIG_NETFILTER_DEBUG is not set | ||
332 | |||
333 | # | ||
334 | # IP: Netfilter Configuration | ||
335 | # | ||
336 | CONFIG_IP_NF_CONNTRACK=m | ||
337 | # CONFIG_IP_NF_CT_ACCT is not set | ||
338 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
339 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
340 | CONFIG_IP_NF_FTP=m | ||
341 | CONFIG_IP_NF_IRC=m | ||
342 | CONFIG_IP_NF_TFTP=m | ||
343 | CONFIG_IP_NF_AMANDA=m | ||
344 | CONFIG_IP_NF_QUEUE=m | ||
345 | CONFIG_IP_NF_IPTABLES=m | ||
346 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
347 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
348 | CONFIG_IP_NF_MATCH_MAC=m | ||
349 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
350 | CONFIG_IP_NF_MATCH_MARK=m | ||
351 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
352 | CONFIG_IP_NF_MATCH_TOS=m | ||
353 | CONFIG_IP_NF_MATCH_RECENT=m | ||
354 | CONFIG_IP_NF_MATCH_ECN=m | ||
355 | CONFIG_IP_NF_MATCH_DSCP=m | ||
356 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
357 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
358 | CONFIG_IP_NF_MATCH_TTL=m | ||
359 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
360 | CONFIG_IP_NF_MATCH_HELPER=m | ||
361 | CONFIG_IP_NF_MATCH_STATE=m | ||
362 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
363 | CONFIG_IP_NF_MATCH_OWNER=m | ||
364 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
365 | CONFIG_IP_NF_MATCH_REALM=m | ||
366 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
367 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
368 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
369 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
370 | CONFIG_IP_NF_FILTER=m | ||
371 | CONFIG_IP_NF_TARGET_REJECT=m | ||
372 | CONFIG_IP_NF_TARGET_LOG=m | ||
373 | CONFIG_IP_NF_TARGET_ULOG=m | ||
374 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
375 | CONFIG_IP_NF_NAT=m | ||
376 | CONFIG_IP_NF_NAT_NEEDED=y | ||
377 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
378 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
379 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
380 | CONFIG_IP_NF_TARGET_SAME=m | ||
381 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
382 | CONFIG_IP_NF_NAT_IRC=m | ||
383 | CONFIG_IP_NF_NAT_FTP=m | ||
384 | CONFIG_IP_NF_NAT_TFTP=m | ||
385 | CONFIG_IP_NF_NAT_AMANDA=m | ||
386 | CONFIG_IP_NF_MANGLE=m | ||
387 | CONFIG_IP_NF_TARGET_TOS=m | ||
388 | CONFIG_IP_NF_TARGET_ECN=m | ||
389 | CONFIG_IP_NF_TARGET_DSCP=m | ||
390 | CONFIG_IP_NF_TARGET_MARK=m | ||
391 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
392 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
393 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
394 | CONFIG_IP_NF_RAW=m | ||
395 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
396 | CONFIG_IP_NF_ARPTABLES=m | ||
397 | CONFIG_IP_NF_ARPFILTER=m | ||
398 | CONFIG_IP_NF_ARP_MANGLE=m | ||
399 | |||
400 | # | ||
401 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
402 | # | ||
403 | CONFIG_IP6_NF_QUEUE=m | ||
404 | CONFIG_IP6_NF_IPTABLES=m | ||
405 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
406 | CONFIG_IP6_NF_MATCH_MAC=m | ||
407 | CONFIG_IP6_NF_MATCH_RT=m | ||
408 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
409 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
410 | CONFIG_IP6_NF_MATCH_HL=m | ||
411 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
412 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
413 | CONFIG_IP6_NF_MATCH_MARK=m | ||
414 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
415 | CONFIG_IP6_NF_MATCH_AHESP=m | ||
416 | CONFIG_IP6_NF_MATCH_LENGTH=m | ||
417 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
418 | CONFIG_IP6_NF_FILTER=m | ||
419 | CONFIG_IP6_NF_TARGET_LOG=m | ||
420 | CONFIG_IP6_NF_MANGLE=m | ||
421 | CONFIG_IP6_NF_TARGET_MARK=m | ||
422 | CONFIG_IP6_NF_RAW=m | ||
423 | CONFIG_XFRM=y | ||
424 | CONFIG_XFRM_USER=m | ||
425 | |||
426 | # | ||
427 | # SCTP Configuration (EXPERIMENTAL) | ||
428 | # | ||
429 | CONFIG_IP_SCTP=m | ||
430 | # CONFIG_SCTP_DBG_MSG is not set | ||
431 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
432 | # CONFIG_SCTP_HMAC_NONE is not set | ||
433 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
434 | CONFIG_SCTP_HMAC_MD5=y | ||
435 | # CONFIG_ATM is not set | ||
436 | # CONFIG_BRIDGE is not set | ||
437 | # CONFIG_VLAN_8021Q is not set | ||
438 | # CONFIG_DECNET is not set | ||
439 | CONFIG_LLC=m | ||
440 | # CONFIG_LLC2 is not set | ||
441 | CONFIG_IPX=m | ||
442 | # CONFIG_IPX_INTERN is not set | ||
443 | CONFIG_ATALK=m | ||
444 | # CONFIG_DEV_APPLETALK is not set | ||
445 | # CONFIG_X25 is not set | ||
446 | # CONFIG_LAPB is not set | ||
447 | # CONFIG_NET_DIVERT is not set | ||
448 | # CONFIG_ECONET is not set | ||
449 | # CONFIG_WAN_ROUTER is not set | ||
450 | |||
451 | # | ||
452 | # QoS and/or fair queueing | ||
453 | # | ||
454 | # CONFIG_NET_SCHED is not set | ||
455 | CONFIG_NET_CLS_ROUTE=y | ||
456 | |||
457 | # | ||
458 | # Network testing | ||
459 | # | ||
460 | # CONFIG_NET_PKTGEN is not set | ||
461 | CONFIG_NETPOLL=y | ||
462 | # CONFIG_NETPOLL_RX is not set | ||
463 | # CONFIG_NETPOLL_TRAP is not set | ||
464 | CONFIG_NET_POLL_CONTROLLER=y | ||
465 | # CONFIG_HAMRADIO is not set | ||
466 | # CONFIG_IRDA is not set | ||
467 | # CONFIG_BT is not set | ||
468 | CONFIG_NETDEVICES=y | 589 | CONFIG_NETDEVICES=y |
590 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
469 | CONFIG_DUMMY=m | 591 | CONFIG_DUMMY=m |
470 | # CONFIG_BONDING is not set | 592 | # CONFIG_BONDING is not set |
593 | CONFIG_MACVLAN=m | ||
471 | CONFIG_EQUALIZER=m | 594 | CONFIG_EQUALIZER=m |
472 | # CONFIG_TUN is not set | 595 | # CONFIG_TUN is not set |
473 | 596 | CONFIG_VETH=m | |
474 | # | ||
475 | # ARCnet devices | ||
476 | # | ||
477 | # CONFIG_ARCNET is not set | 597 | # CONFIG_ARCNET is not set |
478 | 598 | # CONFIG_PHYLIB is not set | |
479 | # | ||
480 | # Ethernet (10 or 100Mbit) | ||
481 | # | ||
482 | CONFIG_NET_ETHERNET=y | 599 | CONFIG_NET_ETHERNET=y |
483 | CONFIG_MII=m | 600 | # CONFIG_MII is not set |
484 | CONFIG_ARIADNE=m | 601 | CONFIG_ARIADNE=m |
485 | CONFIG_A2065=m | 602 | CONFIG_A2065=m |
486 | CONFIG_HYDRA=m | 603 | CONFIG_HYDRA=m |
@@ -493,32 +610,24 @@ CONFIG_APNE=m | |||
493 | # CONFIG_DEPCA is not set | 610 | # CONFIG_DEPCA is not set |
494 | # CONFIG_HP100 is not set | 611 | # CONFIG_HP100 is not set |
495 | # CONFIG_NET_ISA is not set | 612 | # CONFIG_NET_ISA is not set |
613 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
614 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
615 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
616 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
496 | # CONFIG_NET_PCI is not set | 617 | # CONFIG_NET_PCI is not set |
618 | # CONFIG_B44 is not set | ||
497 | # CONFIG_NET_POCKET is not set | 619 | # CONFIG_NET_POCKET is not set |
498 | 620 | # CONFIG_NETDEV_1000 is not set | |
499 | # | 621 | # CONFIG_NETDEV_10000 is not set |
500 | # Ethernet (1000 Mbit) | ||
501 | # | ||
502 | |||
503 | # | ||
504 | # Ethernet (10000 Mbit) | ||
505 | # | ||
506 | |||
507 | # | ||
508 | # Token Ring devices | ||
509 | # | ||
510 | # CONFIG_TR is not set | 622 | # CONFIG_TR is not set |
511 | 623 | ||
512 | # | 624 | # |
513 | # Wireless LAN (non-hamradio) | 625 | # Wireless LAN |
514 | # | ||
515 | # CONFIG_NET_RADIO is not set | ||
516 | |||
517 | # | ||
518 | # Wan interfaces | ||
519 | # | 626 | # |
627 | # CONFIG_WLAN_PRE80211 is not set | ||
628 | # CONFIG_WLAN_80211 is not set | ||
520 | # CONFIG_WAN is not set | 629 | # CONFIG_WAN is not set |
521 | CONFIG_PLIP=m | 630 | # CONFIG_PLIP is not set |
522 | CONFIG_PPP=m | 631 | CONFIG_PPP=m |
523 | # CONFIG_PPP_MULTILINK is not set | 632 | # CONFIG_PPP_MULTILINK is not set |
524 | CONFIG_PPP_FILTER=y | 633 | CONFIG_PPP_FILTER=y |
@@ -526,28 +635,28 @@ CONFIG_PPP_ASYNC=m | |||
526 | CONFIG_PPP_SYNC_TTY=m | 635 | CONFIG_PPP_SYNC_TTY=m |
527 | CONFIG_PPP_DEFLATE=m | 636 | CONFIG_PPP_DEFLATE=m |
528 | CONFIG_PPP_BSDCOMP=m | 637 | CONFIG_PPP_BSDCOMP=m |
638 | CONFIG_PPP_MPPE=m | ||
529 | CONFIG_PPPOE=m | 639 | CONFIG_PPPOE=m |
640 | CONFIG_PPPOL2TP=m | ||
530 | CONFIG_SLIP=m | 641 | CONFIG_SLIP=m |
531 | CONFIG_SLIP_COMPRESSED=y | 642 | CONFIG_SLIP_COMPRESSED=y |
643 | CONFIG_SLHC=m | ||
532 | CONFIG_SLIP_SMART=y | 644 | CONFIG_SLIP_SMART=y |
533 | CONFIG_SLIP_MODE_SLIP6=y | 645 | CONFIG_SLIP_MODE_SLIP6=y |
534 | CONFIG_SHAPER=m | ||
535 | CONFIG_NETCONSOLE=m | 646 | CONFIG_NETCONSOLE=m |
536 | 647 | CONFIG_NETCONSOLE_DYNAMIC=y | |
537 | # | 648 | CONFIG_NETPOLL=y |
538 | # ISDN subsystem | 649 | # CONFIG_NETPOLL_TRAP is not set |
539 | # | 650 | CONFIG_NET_POLL_CONTROLLER=y |
540 | # CONFIG_ISDN is not set | 651 | # CONFIG_ISDN is not set |
541 | |||
542 | # | ||
543 | # Telephony Support | ||
544 | # | ||
545 | # CONFIG_PHONE is not set | 652 | # CONFIG_PHONE is not set |
546 | 653 | ||
547 | # | 654 | # |
548 | # Input device support | 655 | # Input device support |
549 | # | 656 | # |
550 | CONFIG_INPUT=y | 657 | CONFIG_INPUT=y |
658 | CONFIG_INPUT_FF_MEMLESS=m | ||
659 | # CONFIG_INPUT_POLLDEV is not set | ||
551 | 660 | ||
552 | # | 661 | # |
553 | # Userland interfaces | 662 | # Userland interfaces |
@@ -557,7 +666,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
557 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 666 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
558 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 667 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
559 | # CONFIG_INPUT_JOYDEV is not set | 668 | # CONFIG_INPUT_JOYDEV is not set |
560 | # CONFIG_INPUT_TSDEV is not set | ||
561 | # CONFIG_INPUT_EVDEV is not set | 669 | # CONFIG_INPUT_EVDEV is not set |
562 | # CONFIG_INPUT_EVBUG is not set | 670 | # CONFIG_INPUT_EVBUG is not set |
563 | 671 | ||
@@ -570,6 +678,7 @@ CONFIG_INPUT_KEYBOARD=y | |||
570 | # CONFIG_KEYBOARD_LKKBD is not set | 678 | # CONFIG_KEYBOARD_LKKBD is not set |
571 | # CONFIG_KEYBOARD_XTKBD is not set | 679 | # CONFIG_KEYBOARD_XTKBD is not set |
572 | # CONFIG_KEYBOARD_NEWTON is not set | 680 | # CONFIG_KEYBOARD_NEWTON is not set |
681 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
573 | CONFIG_KEYBOARD_AMIGA=y | 682 | CONFIG_KEYBOARD_AMIGA=y |
574 | CONFIG_INPUT_MOUSE=y | 683 | CONFIG_INPUT_MOUSE=y |
575 | # CONFIG_MOUSE_PS2 is not set | 684 | # CONFIG_MOUSE_PS2 is not set |
@@ -577,7 +686,7 @@ CONFIG_INPUT_MOUSE=y | |||
577 | # CONFIG_MOUSE_INPORT is not set | 686 | # CONFIG_MOUSE_INPORT is not set |
578 | # CONFIG_MOUSE_LOGIBM is not set | 687 | # CONFIG_MOUSE_LOGIBM is not set |
579 | # CONFIG_MOUSE_PC110PAD is not set | 688 | # CONFIG_MOUSE_PC110PAD is not set |
580 | CONFIG_MOUSE_AMIGA=y | 689 | CONFIG_MOUSE_AMIGA=m |
581 | # CONFIG_MOUSE_VSXXXAA is not set | 690 | # CONFIG_MOUSE_VSXXXAA is not set |
582 | CONFIG_INPUT_JOYSTICK=y | 691 | CONFIG_INPUT_JOYSTICK=y |
583 | # CONFIG_JOYSTICK_ANALOG is not set | 692 | # CONFIG_JOYSTICK_ANALOG is not set |
@@ -603,16 +712,16 @@ CONFIG_INPUT_JOYSTICK=y | |||
603 | # CONFIG_JOYSTICK_TURBOGRAFX is not set | 712 | # CONFIG_JOYSTICK_TURBOGRAFX is not set |
604 | CONFIG_JOYSTICK_AMIGA=m | 713 | CONFIG_JOYSTICK_AMIGA=m |
605 | # CONFIG_JOYSTICK_JOYDUMP is not set | 714 | # CONFIG_JOYSTICK_JOYDUMP is not set |
715 | # CONFIG_INPUT_TABLET is not set | ||
606 | # CONFIG_INPUT_TOUCHSCREEN is not set | 716 | # CONFIG_INPUT_TOUCHSCREEN is not set |
607 | # CONFIG_INPUT_MISC is not set | 717 | CONFIG_INPUT_MISC=y |
718 | CONFIG_INPUT_M68K_BEEP=m | ||
719 | # CONFIG_INPUT_UINPUT is not set | ||
608 | 720 | ||
609 | # | 721 | # |
610 | # Hardware I/O ports | 722 | # Hardware I/O ports |
611 | # | 723 | # |
612 | CONFIG_SERIO=m | 724 | # CONFIG_SERIO is not set |
613 | CONFIG_SERIO_SERPORT=m | ||
614 | # CONFIG_SERIO_PARKBD is not set | ||
615 | # CONFIG_SERIO_RAW is not set | ||
616 | # CONFIG_GAMEPORT is not set | 725 | # CONFIG_GAMEPORT is not set |
617 | 726 | ||
618 | # | 727 | # |
@@ -621,6 +730,7 @@ CONFIG_SERIO_SERPORT=m | |||
621 | CONFIG_VT=y | 730 | CONFIG_VT=y |
622 | CONFIG_VT_CONSOLE=y | 731 | CONFIG_VT_CONSOLE=y |
623 | CONFIG_HW_CONSOLE=y | 732 | CONFIG_HW_CONSOLE=y |
733 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
624 | # CONFIG_SERIAL_NONSTANDARD is not set | 734 | # CONFIG_SERIAL_NONSTANDARD is not set |
625 | CONFIG_A2232=m | 735 | CONFIG_A2232=m |
626 | 736 | ||
@@ -638,94 +748,102 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
638 | CONFIG_PRINTER=m | 748 | CONFIG_PRINTER=m |
639 | # CONFIG_LP_CONSOLE is not set | 749 | # CONFIG_LP_CONSOLE is not set |
640 | # CONFIG_PPDEV is not set | 750 | # CONFIG_PPDEV is not set |
641 | # CONFIG_TIPAR is not set | ||
642 | |||
643 | # | ||
644 | # IPMI | ||
645 | # | ||
646 | # CONFIG_IPMI_HANDLER is not set | 751 | # CONFIG_IPMI_HANDLER is not set |
647 | 752 | # CONFIG_HW_RANDOM is not set | |
648 | # | ||
649 | # Watchdog Cards | ||
650 | # | ||
651 | # CONFIG_WATCHDOG is not set | ||
652 | CONFIG_GEN_RTC=m | 753 | CONFIG_GEN_RTC=m |
653 | CONFIG_GEN_RTC_X=y | 754 | CONFIG_GEN_RTC_X=y |
654 | # CONFIG_DTLK is not set | 755 | # CONFIG_DTLK is not set |
655 | # CONFIG_R3964 is not set | 756 | # CONFIG_R3964 is not set |
656 | |||
657 | # | ||
658 | # Ftape, the floppy tape device driver | ||
659 | # | ||
660 | # CONFIG_DRM is not set | ||
661 | # CONFIG_RAW_DRIVER is not set | 757 | # CONFIG_RAW_DRIVER is not set |
662 | 758 | # CONFIG_TCG_TPM is not set | |
663 | # | ||
664 | # TPM devices | ||
665 | # | ||
666 | |||
667 | # | ||
668 | # I2C support | ||
669 | # | ||
670 | # CONFIG_I2C is not set | 759 | # CONFIG_I2C is not set |
671 | 760 | ||
672 | # | 761 | # |
673 | # Dallas's 1-wire bus | 762 | # SPI support |
674 | # | 763 | # |
764 | # CONFIG_SPI is not set | ||
765 | # CONFIG_SPI_MASTER is not set | ||
675 | # CONFIG_W1 is not set | 766 | # CONFIG_W1 is not set |
767 | # CONFIG_POWER_SUPPLY is not set | ||
768 | # CONFIG_HWMON is not set | ||
769 | # CONFIG_THERMAL is not set | ||
770 | # CONFIG_WATCHDOG is not set | ||
676 | 771 | ||
677 | # | 772 | # |
678 | # Misc devices | 773 | # Sonics Silicon Backplane |
679 | # | 774 | # |
775 | CONFIG_SSB_POSSIBLE=y | ||
776 | # CONFIG_SSB is not set | ||
680 | 777 | ||
681 | # | 778 | # |
682 | # Multimedia devices | 779 | # Multifunction device drivers |
683 | # | 780 | # |
684 | # CONFIG_VIDEO_DEV is not set | 781 | # CONFIG_MFD_SM501 is not set |
685 | 782 | ||
686 | # | 783 | # |
687 | # Digital Video Broadcasting Devices | 784 | # Multimedia devices |
688 | # | 785 | # |
689 | # CONFIG_DVB is not set | 786 | # CONFIG_VIDEO_DEV is not set |
787 | # CONFIG_DVB_CORE is not set | ||
788 | # CONFIG_DAB is not set | ||
690 | 789 | ||
691 | # | 790 | # |
692 | # Graphics support | 791 | # Graphics support |
693 | # | 792 | # |
793 | # CONFIG_VGASTATE is not set | ||
794 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
694 | CONFIG_FB=y | 795 | CONFIG_FB=y |
796 | # CONFIG_FIRMWARE_EDID is not set | ||
797 | # CONFIG_FB_DDC is not set | ||
695 | CONFIG_FB_CFB_FILLRECT=y | 798 | CONFIG_FB_CFB_FILLRECT=y |
696 | CONFIG_FB_CFB_COPYAREA=y | 799 | CONFIG_FB_CFB_COPYAREA=y |
697 | CONFIG_FB_CFB_IMAGEBLIT=y | 800 | CONFIG_FB_CFB_IMAGEBLIT=y |
698 | CONFIG_FB_SOFT_CURSOR=y | 801 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
802 | # CONFIG_FB_SYS_FILLRECT is not set | ||
803 | # CONFIG_FB_SYS_COPYAREA is not set | ||
804 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
805 | # CONFIG_FB_SYS_FOPS is not set | ||
806 | CONFIG_FB_DEFERRED_IO=y | ||
807 | # CONFIG_FB_SVGALIB is not set | ||
699 | # CONFIG_FB_MACMODES is not set | 808 | # CONFIG_FB_MACMODES is not set |
700 | CONFIG_FB_MODE_HELPERS=y | 809 | # CONFIG_FB_BACKLIGHT is not set |
810 | # CONFIG_FB_MODE_HELPERS is not set | ||
701 | # CONFIG_FB_TILEBLITTING is not set | 811 | # CONFIG_FB_TILEBLITTING is not set |
702 | CONFIG_FB_CIRRUS=m | 812 | |
813 | # | ||
814 | # Frame buffer hardware drivers | ||
815 | # | ||
816 | CONFIG_FB_CIRRUS=y | ||
703 | CONFIG_FB_AMIGA=y | 817 | CONFIG_FB_AMIGA=y |
704 | CONFIG_FB_AMIGA_OCS=y | 818 | CONFIG_FB_AMIGA_OCS=y |
705 | CONFIG_FB_AMIGA_ECS=y | 819 | CONFIG_FB_AMIGA_ECS=y |
706 | CONFIG_FB_AMIGA_AGA=y | 820 | CONFIG_FB_AMIGA_AGA=y |
707 | CONFIG_FB_FM2=y | 821 | CONFIG_FB_FM2=y |
822 | # CONFIG_FB_UVESA is not set | ||
708 | # CONFIG_FB_S1D13XXX is not set | 823 | # CONFIG_FB_S1D13XXX is not set |
709 | # CONFIG_FB_VIRTUAL is not set | 824 | # CONFIG_FB_VIRTUAL is not set |
825 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
826 | |||
827 | # | ||
828 | # Display device support | ||
829 | # | ||
830 | # CONFIG_DISPLAY_SUPPORT is not set | ||
710 | 831 | ||
711 | # | 832 | # |
712 | # Console display driver support | 833 | # Console display driver support |
713 | # | 834 | # |
714 | CONFIG_DUMMY_CONSOLE=y | 835 | CONFIG_DUMMY_CONSOLE=y |
715 | CONFIG_FRAMEBUFFER_CONSOLE=y | 836 | CONFIG_FRAMEBUFFER_CONSOLE=y |
837 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
838 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
716 | # CONFIG_FONTS is not set | 839 | # CONFIG_FONTS is not set |
717 | CONFIG_FONT_8x8=y | 840 | CONFIG_FONT_8x8=y |
718 | CONFIG_FONT_8x16=y | 841 | CONFIG_FONT_8x16=y |
719 | CONFIG_FONT_PEARL_8x8=y | 842 | CONFIG_FONT_PEARL_8x8=y |
720 | |||
721 | # | ||
722 | # Logo configuration | ||
723 | # | ||
724 | CONFIG_LOGO=y | 843 | CONFIG_LOGO=y |
725 | CONFIG_LOGO_LINUX_MONO=y | 844 | CONFIG_LOGO_LINUX_MONO=y |
726 | CONFIG_LOGO_LINUX_VGA16=y | 845 | CONFIG_LOGO_LINUX_VGA16=y |
727 | CONFIG_LOGO_LINUX_CLUT224=y | 846 | CONFIG_LOGO_LINUX_CLUT224=y |
728 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
729 | 847 | ||
730 | # | 848 | # |
731 | # Sound | 849 | # Sound |
@@ -733,27 +851,21 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
733 | CONFIG_SOUND=m | 851 | CONFIG_SOUND=m |
734 | CONFIG_DMASOUND_PAULA=m | 852 | CONFIG_DMASOUND_PAULA=m |
735 | CONFIG_DMASOUND=m | 853 | CONFIG_DMASOUND=m |
736 | 854 | CONFIG_HID_SUPPORT=y | |
737 | # | 855 | CONFIG_HID=m |
738 | # USB support | 856 | # CONFIG_HID_DEBUG is not set |
739 | # | 857 | CONFIG_HIDRAW=y |
740 | # CONFIG_USB_ARCH_HAS_HCD is not set | 858 | # CONFIG_USB_SUPPORT is not set |
741 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
742 | |||
743 | # | ||
744 | # USB Gadget Support | ||
745 | # | ||
746 | # CONFIG_USB_GADGET is not set | ||
747 | |||
748 | # | ||
749 | # MMC/SD Card support | ||
750 | # | ||
751 | # CONFIG_MMC is not set | 859 | # CONFIG_MMC is not set |
860 | # CONFIG_MEMSTICK is not set | ||
861 | # CONFIG_NEW_LEDS is not set | ||
862 | # CONFIG_RTC_CLASS is not set | ||
863 | # CONFIG_AUXDISPLAY is not set | ||
752 | 864 | ||
753 | # | 865 | # |
754 | # InfiniBand support | 866 | # Userspace I/O |
755 | # | 867 | # |
756 | # CONFIG_INFINIBAND is not set | 868 | # CONFIG_UIO is not set |
757 | 869 | ||
758 | # | 870 | # |
759 | # Character devices | 871 | # Character devices |
@@ -768,10 +880,11 @@ CONFIG_MULTIFACE_III_TTY=m | |||
768 | # | 880 | # |
769 | CONFIG_EXT2_FS=y | 881 | CONFIG_EXT2_FS=y |
770 | # CONFIG_EXT2_FS_XATTR is not set | 882 | # CONFIG_EXT2_FS_XATTR is not set |
883 | # CONFIG_EXT2_FS_XIP is not set | ||
771 | CONFIG_EXT3_FS=y | 884 | CONFIG_EXT3_FS=y |
772 | # CONFIG_EXT3_FS_XATTR is not set | 885 | # CONFIG_EXT3_FS_XATTR is not set |
886 | # CONFIG_EXT4DEV_FS is not set | ||
773 | CONFIG_JBD=y | 887 | CONFIG_JBD=y |
774 | # CONFIG_JBD_DEBUG is not set | ||
775 | CONFIG_REISERFS_FS=m | 888 | CONFIG_REISERFS_FS=m |
776 | # CONFIG_REISERFS_CHECK is not set | 889 | # CONFIG_REISERFS_CHECK is not set |
777 | # CONFIG_REISERFS_PROC_INFO is not set | 890 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -782,25 +895,29 @@ CONFIG_JFS_FS=m | |||
782 | # CONFIG_JFS_DEBUG is not set | 895 | # CONFIG_JFS_DEBUG is not set |
783 | # CONFIG_JFS_STATISTICS is not set | 896 | # CONFIG_JFS_STATISTICS is not set |
784 | CONFIG_FS_POSIX_ACL=y | 897 | CONFIG_FS_POSIX_ACL=y |
785 | |||
786 | # | ||
787 | # XFS support | ||
788 | # | ||
789 | CONFIG_XFS_FS=m | 898 | CONFIG_XFS_FS=m |
790 | CONFIG_XFS_EXPORT=y | ||
791 | # CONFIG_XFS_RT is not set | ||
792 | # CONFIG_XFS_QUOTA is not set | 899 | # CONFIG_XFS_QUOTA is not set |
793 | # CONFIG_XFS_SECURITY is not set | 900 | # CONFIG_XFS_SECURITY is not set |
794 | # CONFIG_XFS_POSIX_ACL is not set | 901 | # CONFIG_XFS_POSIX_ACL is not set |
795 | CONFIG_MINIX_FS=y | 902 | # CONFIG_XFS_RT is not set |
796 | # CONFIG_ROMFS_FS is not set | 903 | CONFIG_GFS2_FS=m |
904 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
905 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
906 | CONFIG_OCFS2_FS=m | ||
907 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
908 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
909 | CONFIG_DNOTIFY=y | ||
910 | CONFIG_INOTIFY=y | ||
911 | CONFIG_INOTIFY_USER=y | ||
797 | CONFIG_QUOTA=y | 912 | CONFIG_QUOTA=y |
913 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
914 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
798 | # CONFIG_QFMT_V1 is not set | 915 | # CONFIG_QFMT_V1 is not set |
799 | # CONFIG_QFMT_V2 is not set | 916 | # CONFIG_QFMT_V2 is not set |
800 | CONFIG_QUOTACTL=y | 917 | CONFIG_QUOTACTL=y |
801 | CONFIG_DNOTIFY=y | ||
802 | CONFIG_AUTOFS_FS=m | 918 | CONFIG_AUTOFS_FS=m |
803 | CONFIG_AUTOFS4_FS=m | 919 | CONFIG_AUTOFS4_FS=m |
920 | CONFIG_FUSE_FS=m | ||
804 | 921 | ||
805 | # | 922 | # |
806 | # CD-ROM/DVD Filesystems | 923 | # CD-ROM/DVD Filesystems |
@@ -808,7 +925,6 @@ CONFIG_AUTOFS4_FS=m | |||
808 | CONFIG_ISO9660_FS=y | 925 | CONFIG_ISO9660_FS=y |
809 | CONFIG_JOLIET=y | 926 | CONFIG_JOLIET=y |
810 | CONFIG_ZISOFS=y | 927 | CONFIG_ZISOFS=y |
811 | CONFIG_ZISOFS_FS=y | ||
812 | CONFIG_UDF_FS=m | 928 | CONFIG_UDF_FS=m |
813 | CONFIG_UDF_NLS=y | 929 | CONFIG_UDF_NLS=y |
814 | 930 | ||
@@ -827,19 +943,18 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
827 | # | 943 | # |
828 | CONFIG_PROC_FS=y | 944 | CONFIG_PROC_FS=y |
829 | CONFIG_PROC_KCORE=y | 945 | CONFIG_PROC_KCORE=y |
946 | CONFIG_PROC_SYSCTL=y | ||
830 | CONFIG_SYSFS=y | 947 | CONFIG_SYSFS=y |
831 | # CONFIG_DEVFS_FS is not set | ||
832 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
833 | CONFIG_TMPFS=y | 948 | CONFIG_TMPFS=y |
834 | # CONFIG_TMPFS_XATTR is not set | 949 | # CONFIG_TMPFS_POSIX_ACL is not set |
835 | # CONFIG_HUGETLB_PAGE is not set | 950 | # CONFIG_HUGETLB_PAGE is not set |
836 | CONFIG_RAMFS=y | 951 | CONFIG_CONFIGFS_FS=m |
837 | 952 | ||
838 | # | 953 | # |
839 | # Miscellaneous filesystems | 954 | # Miscellaneous filesystems |
840 | # | 955 | # |
841 | # CONFIG_ADFS_FS is not set | 956 | # CONFIG_ADFS_FS is not set |
842 | CONFIG_AFFS_FS=y | 957 | CONFIG_AFFS_FS=m |
843 | CONFIG_HFS_FS=m | 958 | CONFIG_HFS_FS=m |
844 | CONFIG_HFSPLUS_FS=m | 959 | CONFIG_HFSPLUS_FS=m |
845 | # CONFIG_BEFS_FS is not set | 960 | # CONFIG_BEFS_FS is not set |
@@ -847,43 +962,39 @@ CONFIG_HFSPLUS_FS=m | |||
847 | # CONFIG_EFS_FS is not set | 962 | # CONFIG_EFS_FS is not set |
848 | CONFIG_CRAMFS=m | 963 | CONFIG_CRAMFS=m |
849 | # CONFIG_VXFS_FS is not set | 964 | # CONFIG_VXFS_FS is not set |
965 | CONFIG_MINIX_FS=y | ||
850 | CONFIG_HPFS_FS=m | 966 | CONFIG_HPFS_FS=m |
851 | # CONFIG_QNX4FS_FS is not set | 967 | # CONFIG_QNX4FS_FS is not set |
968 | # CONFIG_ROMFS_FS is not set | ||
852 | CONFIG_SYSV_FS=m | 969 | CONFIG_SYSV_FS=m |
853 | CONFIG_UFS_FS=m | 970 | CONFIG_UFS_FS=m |
854 | # CONFIG_UFS_FS_WRITE is not set | 971 | # CONFIG_UFS_FS_WRITE is not set |
855 | 972 | # CONFIG_UFS_DEBUG is not set | |
856 | # | 973 | CONFIG_NETWORK_FILESYSTEMS=y |
857 | # Network File Systems | ||
858 | # | ||
859 | CONFIG_NFS_FS=m | 974 | CONFIG_NFS_FS=m |
860 | CONFIG_NFS_V3=y | 975 | CONFIG_NFS_V3=y |
976 | # CONFIG_NFS_V3_ACL is not set | ||
861 | CONFIG_NFS_V4=y | 977 | CONFIG_NFS_V4=y |
862 | # CONFIG_NFS_DIRECTIO is not set | 978 | # CONFIG_NFS_DIRECTIO is not set |
863 | CONFIG_NFSD=m | 979 | CONFIG_NFSD=m |
864 | CONFIG_NFSD_V3=y | 980 | CONFIG_NFSD_V3=y |
865 | CONFIG_NFSD_V4=y | 981 | # CONFIG_NFSD_V3_ACL is not set |
982 | # CONFIG_NFSD_V4 is not set | ||
866 | CONFIG_NFSD_TCP=y | 983 | CONFIG_NFSD_TCP=y |
867 | CONFIG_LOCKD=m | 984 | CONFIG_LOCKD=m |
868 | CONFIG_LOCKD_V4=y | 985 | CONFIG_LOCKD_V4=y |
869 | CONFIG_EXPORTFS=m | 986 | CONFIG_EXPORTFS=m |
987 | CONFIG_NFS_COMMON=y | ||
870 | CONFIG_SUNRPC=m | 988 | CONFIG_SUNRPC=m |
871 | CONFIG_SUNRPC_GSS=m | 989 | CONFIG_SUNRPC_GSS=m |
990 | CONFIG_SUNRPC_BIND34=y | ||
872 | CONFIG_RPCSEC_GSS_KRB5=m | 991 | CONFIG_RPCSEC_GSS_KRB5=m |
873 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 992 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
874 | CONFIG_SMB_FS=m | 993 | CONFIG_SMB_FS=m |
875 | CONFIG_SMB_NLS_DEFAULT=y | 994 | CONFIG_SMB_NLS_DEFAULT=y |
876 | CONFIG_SMB_NLS_REMOTE="cp437" | 995 | CONFIG_SMB_NLS_REMOTE="cp437" |
877 | # CONFIG_CIFS is not set | 996 | # CONFIG_CIFS is not set |
878 | CONFIG_NCP_FS=m | 997 | # CONFIG_NCP_FS is not set |
879 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
880 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
881 | # CONFIG_NCPFS_STRONG is not set | ||
882 | CONFIG_NCPFS_NFS_NS=y | ||
883 | CONFIG_NCPFS_OS2_NS=y | ||
884 | # CONFIG_NCPFS_SMALLDOS is not set | ||
885 | CONFIG_NCPFS_NLS=y | ||
886 | # CONFIG_NCPFS_EXTRAS is not set | ||
887 | CONFIG_CODA_FS=m | 998 | CONFIG_CODA_FS=m |
888 | # CONFIG_CODA_FS_OLD_API is not set | 999 | # CONFIG_CODA_FS_OLD_API is not set |
889 | # CONFIG_AFS_FS is not set | 1000 | # CONFIG_AFS_FS is not set |
@@ -894,10 +1005,6 @@ CONFIG_CODA_FS=m | |||
894 | # CONFIG_PARTITION_ADVANCED is not set | 1005 | # CONFIG_PARTITION_ADVANCED is not set |
895 | CONFIG_AMIGA_PARTITION=y | 1006 | CONFIG_AMIGA_PARTITION=y |
896 | CONFIG_MSDOS_PARTITION=y | 1007 | CONFIG_MSDOS_PARTITION=y |
897 | |||
898 | # | ||
899 | # Native Language Support | ||
900 | # | ||
901 | CONFIG_NLS=y | 1008 | CONFIG_NLS=y |
902 | CONFIG_NLS_DEFAULT="iso8859-1" | 1009 | CONFIG_NLS_DEFAULT="iso8859-1" |
903 | CONFIG_NLS_CODEPAGE_437=y | 1010 | CONFIG_NLS_CODEPAGE_437=y |
@@ -938,35 +1045,42 @@ CONFIG_NLS_ISO8859_15=m | |||
938 | CONFIG_NLS_KOI8_R=m | 1045 | CONFIG_NLS_KOI8_R=m |
939 | CONFIG_NLS_KOI8_U=m | 1046 | CONFIG_NLS_KOI8_U=m |
940 | CONFIG_NLS_UTF8=m | 1047 | CONFIG_NLS_UTF8=m |
1048 | CONFIG_DLM=m | ||
1049 | # CONFIG_DLM_DEBUG is not set | ||
941 | 1050 | ||
942 | # | 1051 | # |
943 | # Kernel hacking | 1052 | # Kernel hacking |
944 | # | 1053 | # |
945 | # CONFIG_PRINTK_TIME is not set | 1054 | # CONFIG_PRINTK_TIME is not set |
946 | CONFIG_DEBUG_KERNEL=y | 1055 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1056 | CONFIG_ENABLE_MUST_CHECK=y | ||
947 | CONFIG_MAGIC_SYSRQ=y | 1057 | CONFIG_MAGIC_SYSRQ=y |
948 | CONFIG_LOG_BUF_SHIFT=16 | 1058 | # CONFIG_UNUSED_SYMBOLS is not set |
949 | # CONFIG_SCHEDSTATS is not set | ||
950 | # CONFIG_DEBUG_SLAB is not set | ||
951 | # CONFIG_DEBUG_SPINLOCK is not set | ||
952 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
953 | # CONFIG_DEBUG_KOBJECT is not set | ||
954 | CONFIG_DEBUG_BUGVERBOSE=y | ||
955 | # CONFIG_DEBUG_INFO is not set | ||
956 | # CONFIG_DEBUG_FS is not set | 1059 | # CONFIG_DEBUG_FS is not set |
957 | # CONFIG_FRAME_POINTER is not set | 1060 | # CONFIG_HEADERS_CHECK is not set |
1061 | # CONFIG_DEBUG_KERNEL is not set | ||
1062 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1063 | # CONFIG_SAMPLES is not set | ||
958 | 1064 | ||
959 | # | 1065 | # |
960 | # Security options | 1066 | # Security options |
961 | # | 1067 | # |
962 | # CONFIG_KEYS is not set | 1068 | # CONFIG_KEYS is not set |
963 | # CONFIG_SECURITY is not set | 1069 | # CONFIG_SECURITY is not set |
964 | 1070 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
965 | # | 1071 | CONFIG_XOR_BLOCKS=m |
966 | # Cryptographic options | 1072 | CONFIG_ASYNC_CORE=m |
967 | # | 1073 | CONFIG_ASYNC_MEMCPY=m |
1074 | CONFIG_ASYNC_XOR=m | ||
968 | CONFIG_CRYPTO=y | 1075 | CONFIG_CRYPTO=y |
1076 | CONFIG_CRYPTO_ALGAPI=y | ||
1077 | CONFIG_CRYPTO_AEAD=m | ||
1078 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1079 | CONFIG_CRYPTO_SEQIV=m | ||
1080 | CONFIG_CRYPTO_HASH=y | ||
1081 | CONFIG_CRYPTO_MANAGER=y | ||
969 | CONFIG_CRYPTO_HMAC=y | 1082 | CONFIG_CRYPTO_HMAC=y |
1083 | CONFIG_CRYPTO_XCBC=m | ||
970 | CONFIG_CRYPTO_NULL=m | 1084 | CONFIG_CRYPTO_NULL=m |
971 | CONFIG_CRYPTO_MD4=m | 1085 | CONFIG_CRYPTO_MD4=m |
972 | CONFIG_CRYPTO_MD5=m | 1086 | CONFIG_CRYPTO_MD5=m |
@@ -975,9 +1089,21 @@ CONFIG_CRYPTO_SHA256=m | |||
975 | CONFIG_CRYPTO_SHA512=m | 1089 | CONFIG_CRYPTO_SHA512=m |
976 | CONFIG_CRYPTO_WP512=m | 1090 | CONFIG_CRYPTO_WP512=m |
977 | CONFIG_CRYPTO_TGR192=m | 1091 | CONFIG_CRYPTO_TGR192=m |
1092 | CONFIG_CRYPTO_GF128MUL=m | ||
1093 | CONFIG_CRYPTO_ECB=m | ||
1094 | CONFIG_CRYPTO_CBC=m | ||
1095 | CONFIG_CRYPTO_PCBC=m | ||
1096 | CONFIG_CRYPTO_LRW=m | ||
1097 | CONFIG_CRYPTO_XTS=m | ||
1098 | CONFIG_CRYPTO_CTR=m | ||
1099 | CONFIG_CRYPTO_GCM=m | ||
1100 | CONFIG_CRYPTO_CCM=m | ||
1101 | CONFIG_CRYPTO_CRYPTD=m | ||
978 | CONFIG_CRYPTO_DES=m | 1102 | CONFIG_CRYPTO_DES=m |
1103 | CONFIG_CRYPTO_FCRYPT=m | ||
979 | CONFIG_CRYPTO_BLOWFISH=m | 1104 | CONFIG_CRYPTO_BLOWFISH=m |
980 | CONFIG_CRYPTO_TWOFISH=m | 1105 | CONFIG_CRYPTO_TWOFISH=m |
1106 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
981 | CONFIG_CRYPTO_SERPENT=m | 1107 | CONFIG_CRYPTO_SERPENT=m |
982 | CONFIG_CRYPTO_AES=m | 1108 | CONFIG_CRYPTO_AES=m |
983 | CONFIG_CRYPTO_CAST5=m | 1109 | CONFIG_CRYPTO_CAST5=m |
@@ -986,20 +1112,35 @@ CONFIG_CRYPTO_TEA=m | |||
986 | CONFIG_CRYPTO_ARC4=m | 1112 | CONFIG_CRYPTO_ARC4=m |
987 | CONFIG_CRYPTO_KHAZAD=m | 1113 | CONFIG_CRYPTO_KHAZAD=m |
988 | CONFIG_CRYPTO_ANUBIS=m | 1114 | CONFIG_CRYPTO_ANUBIS=m |
1115 | CONFIG_CRYPTO_SEED=m | ||
1116 | CONFIG_CRYPTO_SALSA20=m | ||
989 | CONFIG_CRYPTO_DEFLATE=m | 1117 | CONFIG_CRYPTO_DEFLATE=m |
990 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1118 | CONFIG_CRYPTO_MICHAEL_MIC=m |
991 | CONFIG_CRYPTO_CRC32C=m | 1119 | CONFIG_CRYPTO_CRC32C=m |
1120 | CONFIG_CRYPTO_CAMELLIA=m | ||
992 | CONFIG_CRYPTO_TEST=m | 1121 | CONFIG_CRYPTO_TEST=m |
993 | 1122 | CONFIG_CRYPTO_AUTHENC=m | |
994 | # | 1123 | CONFIG_CRYPTO_LZO=m |
995 | # Hardware crypto devices | 1124 | # CONFIG_CRYPTO_HW is not set |
996 | # | ||
997 | 1125 | ||
998 | # | 1126 | # |
999 | # Library routines | 1127 | # Library routines |
1000 | # | 1128 | # |
1129 | CONFIG_BITREVERSE=y | ||
1001 | CONFIG_CRC_CCITT=m | 1130 | CONFIG_CRC_CCITT=m |
1131 | CONFIG_CRC16=m | ||
1132 | # CONFIG_CRC_ITU_T is not set | ||
1002 | CONFIG_CRC32=y | 1133 | CONFIG_CRC32=y |
1134 | # CONFIG_CRC7 is not set | ||
1003 | CONFIG_LIBCRC32C=m | 1135 | CONFIG_LIBCRC32C=m |
1004 | CONFIG_ZLIB_INFLATE=y | 1136 | CONFIG_ZLIB_INFLATE=y |
1005 | CONFIG_ZLIB_DEFLATE=m | 1137 | CONFIG_ZLIB_DEFLATE=m |
1138 | CONFIG_LZO_COMPRESS=m | ||
1139 | CONFIG_LZO_DECOMPRESS=m | ||
1140 | CONFIG_TEXTSEARCH=y | ||
1141 | CONFIG_TEXTSEARCH_KMP=m | ||
1142 | CONFIG_TEXTSEARCH_BM=m | ||
1143 | CONFIG_TEXTSEARCH_FSM=m | ||
1144 | CONFIG_PLIST=y | ||
1145 | CONFIG_HAS_IOMEM=y | ||
1146 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig index 63024b0b7ac3..e61196cd7fa5 100644 --- a/arch/m68k/configs/apollo_defconfig +++ b/arch/m68k/configs/apollo_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:27 2005 | 4 | # Wed Apr 2 20:46:07 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-apollo" | 27 | CONFIG_LOCALVERSION="-apollo" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -80,10 +128,24 @@ CONFIG_M68030=y | |||
80 | CONFIG_M68040=y | 128 | CONFIG_M68040=y |
81 | CONFIG_M68060=y | 129 | CONFIG_M68060=y |
82 | CONFIG_MMU_MOTOROLA=y | 130 | CONFIG_MMU_MOTOROLA=y |
83 | CONFIG_M68KFPU_EMU=y | 131 | # CONFIG_M68KFPU_EMU is not set |
84 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
85 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
86 | # CONFIG_ADVANCED is not set | 132 | # CONFIG_ADVANCED is not set |
133 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
134 | CONFIG_NODES_SHIFT=3 | ||
135 | CONFIG_SELECT_MEMORY_MODEL=y | ||
136 | # CONFIG_FLATMEM_MANUAL is not set | ||
137 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
138 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
139 | CONFIG_DISCONTIGMEM=y | ||
140 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
141 | CONFIG_NEED_MULTIPLE_NODES=y | ||
142 | # CONFIG_SPARSEMEM_STATIC is not set | ||
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
145 | # CONFIG_RESOURCES_64BIT is not set | ||
146 | CONFIG_ZONE_DMA_FLAG=1 | ||
147 | CONFIG_BOUNCE=y | ||
148 | CONFIG_VIRT_TO_BUS=y | ||
87 | 149 | ||
88 | # | 150 | # |
89 | # General setup | 151 | # General setup |
@@ -93,134 +155,11 @@ CONFIG_BINFMT_AOUT=m | |||
93 | CONFIG_BINFMT_MISC=m | 155 | CONFIG_BINFMT_MISC=m |
94 | CONFIG_HEARTBEAT=y | 156 | CONFIG_HEARTBEAT=y |
95 | CONFIG_PROC_HARDWARE=y | 157 | CONFIG_PROC_HARDWARE=y |
158 | CONFIG_ZONE_DMA=y | ||
159 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
96 | 160 | ||
97 | # | 161 | # |
98 | # Device Drivers | 162 | # Networking |
99 | # | ||
100 | |||
101 | # | ||
102 | # Generic Driver Options | ||
103 | # | ||
104 | CONFIG_STANDALONE=y | ||
105 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
106 | CONFIG_FW_LOADER=m | ||
107 | # CONFIG_DEBUG_DRIVER is not set | ||
108 | |||
109 | # | ||
110 | # Memory Technology Devices (MTD) | ||
111 | # | ||
112 | # CONFIG_MTD is not set | ||
113 | |||
114 | # | ||
115 | # Parallel port support | ||
116 | # | ||
117 | # CONFIG_PARPORT is not set | ||
118 | |||
119 | # | ||
120 | # Plug and Play support | ||
121 | # | ||
122 | |||
123 | # | ||
124 | # Block devices | ||
125 | # | ||
126 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
127 | CONFIG_BLK_DEV_LOOP=y | ||
128 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
129 | CONFIG_BLK_DEV_NBD=m | ||
130 | CONFIG_BLK_DEV_RAM=y | ||
131 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
132 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
133 | CONFIG_BLK_DEV_INITRD=y | ||
134 | CONFIG_INITRAMFS_SOURCE="" | ||
135 | CONFIG_CDROM_PKTCDVD=m | ||
136 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
137 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
138 | |||
139 | # | ||
140 | # IO Schedulers | ||
141 | # | ||
142 | CONFIG_IOSCHED_NOOP=y | ||
143 | CONFIG_IOSCHED_AS=y | ||
144 | CONFIG_IOSCHED_DEADLINE=y | ||
145 | CONFIG_IOSCHED_CFQ=y | ||
146 | CONFIG_ATA_OVER_ETH=m | ||
147 | |||
148 | # | ||
149 | # ATA/ATAPI/MFM/RLL support | ||
150 | # | ||
151 | # CONFIG_IDE is not set | ||
152 | |||
153 | # | ||
154 | # SCSI device support | ||
155 | # | ||
156 | CONFIG_SCSI=y | ||
157 | CONFIG_SCSI_PROC_FS=y | ||
158 | |||
159 | # | ||
160 | # SCSI support type (disk, tape, CD-ROM) | ||
161 | # | ||
162 | CONFIG_BLK_DEV_SD=y | ||
163 | CONFIG_CHR_DEV_ST=m | ||
164 | # CONFIG_CHR_DEV_OSST is not set | ||
165 | CONFIG_BLK_DEV_SR=y | ||
166 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
167 | CONFIG_CHR_DEV_SG=m | ||
168 | |||
169 | # | ||
170 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
171 | # | ||
172 | # CONFIG_SCSI_MULTI_LUN is not set | ||
173 | CONFIG_SCSI_CONSTANTS=y | ||
174 | # CONFIG_SCSI_LOGGING is not set | ||
175 | |||
176 | # | ||
177 | # SCSI Transport Attributes | ||
178 | # | ||
179 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
180 | # CONFIG_SCSI_FC_ATTRS is not set | ||
181 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
182 | |||
183 | # | ||
184 | # SCSI low-level drivers | ||
185 | # | ||
186 | # CONFIG_SCSI_SATA is not set | ||
187 | # CONFIG_SCSI_DEBUG is not set | ||
188 | |||
189 | # | ||
190 | # Multi-device support (RAID and LVM) | ||
191 | # | ||
192 | CONFIG_MD=y | ||
193 | CONFIG_BLK_DEV_MD=m | ||
194 | CONFIG_MD_LINEAR=m | ||
195 | CONFIG_MD_RAID0=m | ||
196 | CONFIG_MD_RAID1=m | ||
197 | # CONFIG_MD_RAID10 is not set | ||
198 | CONFIG_MD_RAID5=m | ||
199 | CONFIG_MD_RAID6=m | ||
200 | CONFIG_MD_MULTIPATH=m | ||
201 | # CONFIG_MD_FAULTY is not set | ||
202 | CONFIG_BLK_DEV_DM=m | ||
203 | CONFIG_DM_CRYPT=m | ||
204 | CONFIG_DM_SNAPSHOT=m | ||
205 | CONFIG_DM_MIRROR=m | ||
206 | CONFIG_DM_ZERO=m | ||
207 | CONFIG_DM_MULTIPATH=m | ||
208 | CONFIG_DM_MULTIPATH_EMC=m | ||
209 | |||
210 | # | ||
211 | # Fusion MPT device support | ||
212 | # | ||
213 | |||
214 | # | ||
215 | # IEEE 1394 (FireWire) support | ||
216 | # | ||
217 | |||
218 | # | ||
219 | # I2O device support | ||
220 | # | ||
221 | |||
222 | # | ||
223 | # Networking support | ||
224 | # | 163 | # |
225 | CONFIG_NET=y | 164 | CONFIG_NET=y |
226 | 165 | ||
@@ -230,10 +169,17 @@ CONFIG_NET=y | |||
230 | CONFIG_PACKET=y | 169 | CONFIG_PACKET=y |
231 | # CONFIG_PACKET_MMAP is not set | 170 | # CONFIG_PACKET_MMAP is not set |
232 | CONFIG_UNIX=y | 171 | CONFIG_UNIX=y |
172 | CONFIG_XFRM=y | ||
173 | # CONFIG_XFRM_USER is not set | ||
174 | # CONFIG_XFRM_SUB_POLICY is not set | ||
175 | CONFIG_XFRM_MIGRATE=y | ||
176 | # CONFIG_XFRM_STATISTICS is not set | ||
233 | CONFIG_NET_KEY=y | 177 | CONFIG_NET_KEY=y |
178 | CONFIG_NET_KEY_MIGRATE=y | ||
234 | CONFIG_INET=y | 179 | CONFIG_INET=y |
235 | # CONFIG_IP_MULTICAST is not set | 180 | # CONFIG_IP_MULTICAST is not set |
236 | # CONFIG_IP_ADVANCED_ROUTER is not set | 181 | # CONFIG_IP_ADVANCED_ROUTER is not set |
182 | CONFIG_IP_FIB_HASH=y | ||
237 | CONFIG_IP_PNP=y | 183 | CONFIG_IP_PNP=y |
238 | CONFIG_IP_PNP_DHCP=y | 184 | CONFIG_IP_PNP_DHCP=y |
239 | CONFIG_IP_PNP_BOOTP=y | 185 | CONFIG_IP_PNP_BOOTP=y |
@@ -245,145 +191,199 @@ CONFIG_SYN_COOKIES=y | |||
245 | CONFIG_INET_AH=m | 191 | CONFIG_INET_AH=m |
246 | CONFIG_INET_ESP=m | 192 | CONFIG_INET_ESP=m |
247 | CONFIG_INET_IPCOMP=m | 193 | CONFIG_INET_IPCOMP=m |
194 | CONFIG_INET_XFRM_TUNNEL=m | ||
248 | CONFIG_INET_TUNNEL=m | 195 | CONFIG_INET_TUNNEL=m |
249 | CONFIG_IP_TCPDIAG=m | 196 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
250 | CONFIG_IP_TCPDIAG_IPV6=y | 197 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
251 | 198 | CONFIG_INET_XFRM_MODE_BEET=m | |
252 | # | 199 | CONFIG_INET_LRO=m |
253 | # IP: Virtual Server Configuration | 200 | CONFIG_INET_DIAG=m |
254 | # | 201 | CONFIG_INET_TCP_DIAG=m |
202 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
203 | CONFIG_TCP_CONG_CUBIC=y | ||
204 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
205 | # CONFIG_TCP_MD5SIG is not set | ||
255 | # CONFIG_IP_VS is not set | 206 | # CONFIG_IP_VS is not set |
256 | CONFIG_IPV6=m | 207 | CONFIG_IPV6=m |
257 | CONFIG_IPV6_PRIVACY=y | 208 | CONFIG_IPV6_PRIVACY=y |
209 | CONFIG_IPV6_ROUTER_PREF=y | ||
210 | CONFIG_IPV6_ROUTE_INFO=y | ||
211 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
258 | CONFIG_INET6_AH=m | 212 | CONFIG_INET6_AH=m |
259 | CONFIG_INET6_ESP=m | 213 | CONFIG_INET6_ESP=m |
260 | CONFIG_INET6_IPCOMP=m | 214 | CONFIG_INET6_IPCOMP=m |
215 | # CONFIG_IPV6_MIP6 is not set | ||
216 | CONFIG_INET6_XFRM_TUNNEL=m | ||
261 | CONFIG_INET6_TUNNEL=m | 217 | CONFIG_INET6_TUNNEL=m |
218 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
219 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
220 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
221 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
222 | CONFIG_IPV6_SIT=m | ||
262 | CONFIG_IPV6_TUNNEL=m | 223 | CONFIG_IPV6_TUNNEL=m |
224 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
225 | # CONFIG_NETWORK_SECMARK is not set | ||
263 | CONFIG_NETFILTER=y | 226 | CONFIG_NETFILTER=y |
264 | # CONFIG_NETFILTER_DEBUG is not set | 227 | # CONFIG_NETFILTER_DEBUG is not set |
228 | CONFIG_NETFILTER_ADVANCED=y | ||
229 | |||
230 | # | ||
231 | # Core Netfilter Configuration | ||
232 | # | ||
233 | CONFIG_NETFILTER_NETLINK=m | ||
234 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
235 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
236 | CONFIG_NF_CONNTRACK=m | ||
237 | CONFIG_NF_CT_ACCT=y | ||
238 | CONFIG_NF_CONNTRACK_MARK=y | ||
239 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
240 | CONFIG_NF_CT_PROTO_GRE=m | ||
241 | CONFIG_NF_CT_PROTO_SCTP=m | ||
242 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
243 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
244 | CONFIG_NF_CONNTRACK_FTP=m | ||
245 | CONFIG_NF_CONNTRACK_H323=m | ||
246 | CONFIG_NF_CONNTRACK_IRC=m | ||
247 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
248 | CONFIG_NF_CONNTRACK_PPTP=m | ||
249 | CONFIG_NF_CONNTRACK_SANE=m | ||
250 | CONFIG_NF_CONNTRACK_SIP=m | ||
251 | CONFIG_NF_CONNTRACK_TFTP=m | ||
252 | # CONFIG_NF_CT_NETLINK is not set | ||
253 | CONFIG_NETFILTER_XTABLES=m | ||
254 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
255 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
265 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
265 | 294 | ||
266 | # | 295 | # |
267 | # IP: Netfilter Configuration | 296 | # IP: Netfilter Configuration |
268 | # | 297 | # |
269 | CONFIG_IP_NF_CONNTRACK=m | 298 | CONFIG_NF_CONNTRACK_IPV4=m |
270 | # CONFIG_IP_NF_CT_ACCT is not set | 299 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
271 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
272 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
273 | CONFIG_IP_NF_FTP=m | ||
274 | CONFIG_IP_NF_IRC=m | ||
275 | CONFIG_IP_NF_TFTP=m | ||
276 | CONFIG_IP_NF_AMANDA=m | ||
277 | CONFIG_IP_NF_QUEUE=m | 300 | CONFIG_IP_NF_QUEUE=m |
278 | CONFIG_IP_NF_IPTABLES=m | 301 | CONFIG_IP_NF_IPTABLES=m |
279 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
280 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
281 | CONFIG_IP_NF_MATCH_MAC=m | ||
282 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
283 | CONFIG_IP_NF_MATCH_MARK=m | ||
284 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
285 | CONFIG_IP_NF_MATCH_TOS=m | ||
286 | CONFIG_IP_NF_MATCH_RECENT=m | 302 | CONFIG_IP_NF_MATCH_RECENT=m |
287 | CONFIG_IP_NF_MATCH_ECN=m | 303 | CONFIG_IP_NF_MATCH_ECN=m |
288 | CONFIG_IP_NF_MATCH_DSCP=m | 304 | CONFIG_IP_NF_MATCH_AH=m |
289 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
290 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
291 | CONFIG_IP_NF_MATCH_TTL=m | 305 | CONFIG_IP_NF_MATCH_TTL=m |
292 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
293 | CONFIG_IP_NF_MATCH_HELPER=m | ||
294 | CONFIG_IP_NF_MATCH_STATE=m | ||
295 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
296 | CONFIG_IP_NF_MATCH_OWNER=m | ||
297 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 306 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
298 | CONFIG_IP_NF_MATCH_REALM=m | ||
299 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
300 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
301 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
302 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
303 | CONFIG_IP_NF_FILTER=m | 307 | CONFIG_IP_NF_FILTER=m |
304 | CONFIG_IP_NF_TARGET_REJECT=m | 308 | CONFIG_IP_NF_TARGET_REJECT=m |
305 | CONFIG_IP_NF_TARGET_LOG=m | 309 | CONFIG_IP_NF_TARGET_LOG=m |
306 | CONFIG_IP_NF_TARGET_ULOG=m | 310 | CONFIG_IP_NF_TARGET_ULOG=m |
307 | CONFIG_IP_NF_TARGET_TCPMSS=m | 311 | CONFIG_NF_NAT=m |
308 | CONFIG_IP_NF_NAT=m | 312 | CONFIG_NF_NAT_NEEDED=y |
309 | CONFIG_IP_NF_NAT_NEEDED=y | ||
310 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 313 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
311 | CONFIG_IP_NF_TARGET_REDIRECT=m | 314 | CONFIG_IP_NF_TARGET_REDIRECT=m |
312 | CONFIG_IP_NF_TARGET_NETMAP=m | 315 | CONFIG_IP_NF_TARGET_NETMAP=m |
313 | CONFIG_IP_NF_TARGET_SAME=m | 316 | CONFIG_NF_NAT_SNMP_BASIC=m |
314 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 317 | CONFIG_NF_NAT_PROTO_GRE=m |
315 | CONFIG_IP_NF_NAT_IRC=m | 318 | CONFIG_NF_NAT_FTP=m |
316 | CONFIG_IP_NF_NAT_FTP=m | 319 | CONFIG_NF_NAT_IRC=m |
317 | CONFIG_IP_NF_NAT_TFTP=m | 320 | CONFIG_NF_NAT_TFTP=m |
318 | CONFIG_IP_NF_NAT_AMANDA=m | 321 | CONFIG_NF_NAT_AMANDA=m |
322 | CONFIG_NF_NAT_PPTP=m | ||
323 | CONFIG_NF_NAT_H323=m | ||
324 | CONFIG_NF_NAT_SIP=m | ||
319 | CONFIG_IP_NF_MANGLE=m | 325 | CONFIG_IP_NF_MANGLE=m |
320 | CONFIG_IP_NF_TARGET_TOS=m | ||
321 | CONFIG_IP_NF_TARGET_ECN=m | 326 | CONFIG_IP_NF_TARGET_ECN=m |
322 | CONFIG_IP_NF_TARGET_DSCP=m | 327 | CONFIG_IP_NF_TARGET_TTL=m |
323 | CONFIG_IP_NF_TARGET_MARK=m | 328 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
324 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
325 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
326 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
327 | CONFIG_IP_NF_RAW=m | 329 | CONFIG_IP_NF_RAW=m |
328 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
329 | CONFIG_IP_NF_ARPTABLES=m | 330 | CONFIG_IP_NF_ARPTABLES=m |
330 | CONFIG_IP_NF_ARPFILTER=m | 331 | CONFIG_IP_NF_ARPFILTER=m |
331 | CONFIG_IP_NF_ARP_MANGLE=m | 332 | CONFIG_IP_NF_ARP_MANGLE=m |
332 | 333 | ||
333 | # | 334 | # |
334 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 335 | # IPv6: Netfilter Configuration |
335 | # | 336 | # |
337 | CONFIG_NF_CONNTRACK_IPV6=m | ||
336 | CONFIG_IP6_NF_QUEUE=m | 338 | CONFIG_IP6_NF_QUEUE=m |
337 | CONFIG_IP6_NF_IPTABLES=m | 339 | CONFIG_IP6_NF_IPTABLES=m |
338 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
339 | CONFIG_IP6_NF_MATCH_MAC=m | ||
340 | CONFIG_IP6_NF_MATCH_RT=m | 340 | CONFIG_IP6_NF_MATCH_RT=m |
341 | CONFIG_IP6_NF_MATCH_OPTS=m | 341 | CONFIG_IP6_NF_MATCH_OPTS=m |
342 | CONFIG_IP6_NF_MATCH_FRAG=m | 342 | CONFIG_IP6_NF_MATCH_FRAG=m |
343 | CONFIG_IP6_NF_MATCH_HL=m | 343 | CONFIG_IP6_NF_MATCH_HL=m |
344 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
345 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
346 | CONFIG_IP6_NF_MATCH_MARK=m | ||
347 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 344 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
348 | CONFIG_IP6_NF_MATCH_AHESP=m | 345 | CONFIG_IP6_NF_MATCH_AH=m |
349 | CONFIG_IP6_NF_MATCH_LENGTH=m | 346 | CONFIG_IP6_NF_MATCH_MH=m |
350 | CONFIG_IP6_NF_MATCH_EUI64=m | 347 | CONFIG_IP6_NF_MATCH_EUI64=m |
351 | CONFIG_IP6_NF_FILTER=m | 348 | CONFIG_IP6_NF_FILTER=m |
352 | CONFIG_IP6_NF_TARGET_LOG=m | 349 | CONFIG_IP6_NF_TARGET_LOG=m |
350 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
353 | CONFIG_IP6_NF_MANGLE=m | 351 | CONFIG_IP6_NF_MANGLE=m |
354 | CONFIG_IP6_NF_TARGET_MARK=m | 352 | CONFIG_IP6_NF_TARGET_HL=m |
355 | CONFIG_IP6_NF_RAW=m | 353 | CONFIG_IP6_NF_RAW=m |
356 | CONFIG_XFRM=y | 354 | CONFIG_IP_DCCP=m |
357 | CONFIG_XFRM_USER=m | 355 | CONFIG_INET_DCCP_DIAG=m |
356 | CONFIG_IP_DCCP_ACKVEC=y | ||
358 | 357 | ||
359 | # | 358 | # |
360 | # SCTP Configuration (EXPERIMENTAL) | 359 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
361 | # | 360 | # |
361 | CONFIG_IP_DCCP_CCID2=m | ||
362 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
363 | CONFIG_IP_DCCP_CCID3=m | ||
364 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
365 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
366 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
362 | CONFIG_IP_SCTP=m | 367 | CONFIG_IP_SCTP=m |
363 | # CONFIG_SCTP_DBG_MSG is not set | 368 | # CONFIG_SCTP_DBG_MSG is not set |
364 | # CONFIG_SCTP_DBG_OBJCNT is not set | 369 | # CONFIG_SCTP_DBG_OBJCNT is not set |
365 | # CONFIG_SCTP_HMAC_NONE is not set | 370 | # CONFIG_SCTP_HMAC_NONE is not set |
366 | # CONFIG_SCTP_HMAC_SHA1 is not set | 371 | # CONFIG_SCTP_HMAC_SHA1 is not set |
367 | CONFIG_SCTP_HMAC_MD5=y | 372 | CONFIG_SCTP_HMAC_MD5=y |
373 | # CONFIG_TIPC is not set | ||
368 | # CONFIG_ATM is not set | 374 | # CONFIG_ATM is not set |
369 | # CONFIG_BRIDGE is not set | 375 | # CONFIG_BRIDGE is not set |
370 | # CONFIG_VLAN_8021Q is not set | 376 | # CONFIG_VLAN_8021Q is not set |
371 | # CONFIG_DECNET is not set | 377 | # CONFIG_DECNET is not set |
372 | CONFIG_LLC=m | 378 | CONFIG_LLC=m |
373 | # CONFIG_LLC2 is not set | 379 | # CONFIG_LLC2 is not set |
374 | CONFIG_IPX=m | 380 | # CONFIG_IPX is not set |
375 | # CONFIG_IPX_INTERN is not set | ||
376 | CONFIG_ATALK=m | 381 | CONFIG_ATALK=m |
377 | # CONFIG_DEV_APPLETALK is not set | 382 | # CONFIG_DEV_APPLETALK is not set |
378 | # CONFIG_X25 is not set | 383 | # CONFIG_X25 is not set |
379 | # CONFIG_LAPB is not set | 384 | # CONFIG_LAPB is not set |
380 | # CONFIG_NET_DIVERT is not set | ||
381 | # CONFIG_ECONET is not set | 385 | # CONFIG_ECONET is not set |
382 | # CONFIG_WAN_ROUTER is not set | 386 | # CONFIG_WAN_ROUTER is not set |
383 | |||
384 | # | ||
385 | # QoS and/or fair queueing | ||
386 | # | ||
387 | # CONFIG_NET_SCHED is not set | 387 | # CONFIG_NET_SCHED is not set |
388 | CONFIG_NET_CLS_ROUTE=y | 388 | CONFIG_NET_CLS_ROUTE=y |
389 | 389 | ||
@@ -391,46 +391,154 @@ CONFIG_NET_CLS_ROUTE=y | |||
391 | # Network testing | 391 | # Network testing |
392 | # | 392 | # |
393 | # CONFIG_NET_PKTGEN is not set | 393 | # CONFIG_NET_PKTGEN is not set |
394 | CONFIG_NETPOLL=y | ||
395 | # CONFIG_NETPOLL_RX is not set | ||
396 | # CONFIG_NETPOLL_TRAP is not set | ||
397 | CONFIG_NET_POLL_CONTROLLER=y | ||
398 | # CONFIG_HAMRADIO is not set | 394 | # CONFIG_HAMRADIO is not set |
395 | # CONFIG_CAN is not set | ||
399 | # CONFIG_IRDA is not set | 396 | # CONFIG_IRDA is not set |
400 | # CONFIG_BT is not set | 397 | # CONFIG_BT is not set |
401 | CONFIG_NETDEVICES=y | 398 | # CONFIG_AF_RXRPC is not set |
402 | CONFIG_DUMMY=m | ||
403 | # CONFIG_BONDING is not set | ||
404 | CONFIG_EQUALIZER=m | ||
405 | # CONFIG_TUN is not set | ||
406 | 399 | ||
407 | # | 400 | # |
408 | # Ethernet (10 or 100Mbit) | 401 | # Wireless |
409 | # | 402 | # |
410 | CONFIG_NET_ETHERNET=y | 403 | # CONFIG_CFG80211 is not set |
411 | CONFIG_MII=m | 404 | CONFIG_WIRELESS_EXT=y |
412 | CONFIG_APOLLO_ELPLUS=y | 405 | # CONFIG_MAC80211 is not set |
406 | CONFIG_IEEE80211=m | ||
407 | # CONFIG_IEEE80211_DEBUG is not set | ||
408 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
409 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
410 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
411 | CONFIG_IEEE80211_SOFTMAC=m | ||
412 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
413 | # CONFIG_RFKILL is not set | ||
414 | # CONFIG_NET_9P is not set | ||
413 | 415 | ||
414 | # | 416 | # |
415 | # Ethernet (1000 Mbit) | 417 | # Device Drivers |
416 | # | 418 | # |
417 | 419 | ||
418 | # | 420 | # |
419 | # Ethernet (10000 Mbit) | 421 | # Generic Driver Options |
420 | # | 422 | # |
423 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
424 | CONFIG_STANDALONE=y | ||
425 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
426 | CONFIG_FW_LOADER=m | ||
427 | # CONFIG_SYS_HYPERVISOR is not set | ||
428 | CONFIG_CONNECTOR=m | ||
429 | # CONFIG_MTD is not set | ||
430 | # CONFIG_PARPORT is not set | ||
431 | CONFIG_BLK_DEV=y | ||
432 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
433 | CONFIG_BLK_DEV_LOOP=y | ||
434 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
435 | CONFIG_BLK_DEV_NBD=m | ||
436 | CONFIG_BLK_DEV_RAM=y | ||
437 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
438 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
439 | # CONFIG_BLK_DEV_XIP is not set | ||
440 | CONFIG_CDROM_PKTCDVD=m | ||
441 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
442 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
443 | CONFIG_ATA_OVER_ETH=m | ||
444 | CONFIG_MISC_DEVICES=y | ||
445 | # CONFIG_EEPROM_93CX6 is not set | ||
446 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
447 | CONFIG_HAVE_IDE=y | ||
448 | # CONFIG_IDE is not set | ||
421 | 449 | ||
422 | # | 450 | # |
423 | # Token Ring devices | 451 | # SCSI device support |
424 | # | 452 | # |
453 | CONFIG_RAID_ATTRS=m | ||
454 | CONFIG_SCSI=y | ||
455 | CONFIG_SCSI_DMA=y | ||
456 | CONFIG_SCSI_TGT=m | ||
457 | # CONFIG_SCSI_NETLINK is not set | ||
458 | CONFIG_SCSI_PROC_FS=y | ||
425 | 459 | ||
426 | # | 460 | # |
427 | # Wireless LAN (non-hamradio) | 461 | # SCSI support type (disk, tape, CD-ROM) |
428 | # | 462 | # |
429 | # CONFIG_NET_RADIO is not set | 463 | CONFIG_BLK_DEV_SD=y |
464 | CONFIG_CHR_DEV_ST=m | ||
465 | CONFIG_CHR_DEV_OSST=m | ||
466 | CONFIG_BLK_DEV_SR=y | ||
467 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
468 | CONFIG_CHR_DEV_SG=m | ||
469 | # CONFIG_CHR_DEV_SCH is not set | ||
470 | |||
471 | # | ||
472 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
473 | # | ||
474 | # CONFIG_SCSI_MULTI_LUN is not set | ||
475 | CONFIG_SCSI_CONSTANTS=y | ||
476 | # CONFIG_SCSI_LOGGING is not set | ||
477 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
478 | CONFIG_SCSI_WAIT_SCAN=m | ||
479 | |||
480 | # | ||
481 | # SCSI Transports | ||
482 | # | ||
483 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
484 | # CONFIG_SCSI_FC_ATTRS is not set | ||
485 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
486 | CONFIG_SCSI_SAS_ATTRS=m | ||
487 | CONFIG_SCSI_SAS_LIBSAS=m | ||
488 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
489 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
490 | CONFIG_SCSI_SRP_ATTRS=m | ||
491 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
492 | CONFIG_SCSI_LOWLEVEL=y | ||
493 | CONFIG_ISCSI_TCP=m | ||
494 | # CONFIG_SCSI_DEBUG is not set | ||
495 | CONFIG_MD=y | ||
496 | CONFIG_BLK_DEV_MD=m | ||
497 | CONFIG_MD_LINEAR=m | ||
498 | CONFIG_MD_RAID0=m | ||
499 | CONFIG_MD_RAID1=m | ||
500 | # CONFIG_MD_RAID10 is not set | ||
501 | CONFIG_MD_RAID456=m | ||
502 | CONFIG_MD_RAID5_RESHAPE=y | ||
503 | CONFIG_MD_MULTIPATH=m | ||
504 | # CONFIG_MD_FAULTY is not set | ||
505 | CONFIG_BLK_DEV_DM=m | ||
506 | # CONFIG_DM_DEBUG is not set | ||
507 | CONFIG_DM_CRYPT=m | ||
508 | CONFIG_DM_SNAPSHOT=m | ||
509 | CONFIG_DM_MIRROR=m | ||
510 | CONFIG_DM_ZERO=m | ||
511 | CONFIG_DM_MULTIPATH=m | ||
512 | CONFIG_DM_MULTIPATH_EMC=m | ||
513 | CONFIG_DM_MULTIPATH_RDAC=m | ||
514 | CONFIG_DM_MULTIPATH_HP=m | ||
515 | # CONFIG_DM_DELAY is not set | ||
516 | CONFIG_DM_UEVENT=y | ||
517 | CONFIG_NETDEVICES=y | ||
518 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
519 | CONFIG_DUMMY=m | ||
520 | # CONFIG_BONDING is not set | ||
521 | CONFIG_MACVLAN=m | ||
522 | CONFIG_EQUALIZER=m | ||
523 | # CONFIG_TUN is not set | ||
524 | CONFIG_VETH=m | ||
525 | # CONFIG_PHYLIB is not set | ||
526 | CONFIG_NET_ETHERNET=y | ||
527 | # CONFIG_MII is not set | ||
528 | CONFIG_APOLLO_ELPLUS=y | ||
529 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
530 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
531 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
532 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
533 | # CONFIG_B44 is not set | ||
534 | # CONFIG_NETDEV_1000 is not set | ||
535 | # CONFIG_NETDEV_10000 is not set | ||
430 | 536 | ||
431 | # | 537 | # |
432 | # Wan interfaces | 538 | # Wireless LAN |
433 | # | 539 | # |
540 | # CONFIG_WLAN_PRE80211 is not set | ||
541 | # CONFIG_WLAN_80211 is not set | ||
434 | # CONFIG_WAN is not set | 542 | # CONFIG_WAN is not set |
435 | CONFIG_PPP=m | 543 | CONFIG_PPP=m |
436 | # CONFIG_PPP_MULTILINK is not set | 544 | # CONFIG_PPP_MULTILINK is not set |
@@ -439,28 +547,28 @@ CONFIG_PPP_ASYNC=m | |||
439 | CONFIG_PPP_SYNC_TTY=m | 547 | CONFIG_PPP_SYNC_TTY=m |
440 | CONFIG_PPP_DEFLATE=m | 548 | CONFIG_PPP_DEFLATE=m |
441 | CONFIG_PPP_BSDCOMP=m | 549 | CONFIG_PPP_BSDCOMP=m |
550 | CONFIG_PPP_MPPE=m | ||
442 | CONFIG_PPPOE=m | 551 | CONFIG_PPPOE=m |
552 | CONFIG_PPPOL2TP=m | ||
443 | CONFIG_SLIP=m | 553 | CONFIG_SLIP=m |
444 | CONFIG_SLIP_COMPRESSED=y | 554 | CONFIG_SLIP_COMPRESSED=y |
555 | CONFIG_SLHC=m | ||
445 | CONFIG_SLIP_SMART=y | 556 | CONFIG_SLIP_SMART=y |
446 | CONFIG_SLIP_MODE_SLIP6=y | 557 | CONFIG_SLIP_MODE_SLIP6=y |
447 | CONFIG_SHAPER=m | ||
448 | CONFIG_NETCONSOLE=m | 558 | CONFIG_NETCONSOLE=m |
449 | 559 | CONFIG_NETCONSOLE_DYNAMIC=y | |
450 | # | 560 | CONFIG_NETPOLL=y |
451 | # ISDN subsystem | 561 | # CONFIG_NETPOLL_TRAP is not set |
452 | # | 562 | CONFIG_NET_POLL_CONTROLLER=y |
453 | # CONFIG_ISDN is not set | 563 | # CONFIG_ISDN is not set |
454 | |||
455 | # | ||
456 | # Telephony Support | ||
457 | # | ||
458 | # CONFIG_PHONE is not set | 564 | # CONFIG_PHONE is not set |
459 | 565 | ||
460 | # | 566 | # |
461 | # Input device support | 567 | # Input device support |
462 | # | 568 | # |
463 | CONFIG_INPUT=y | 569 | CONFIG_INPUT=y |
570 | CONFIG_INPUT_FF_MEMLESS=m | ||
571 | # CONFIG_INPUT_POLLDEV is not set | ||
464 | 572 | ||
465 | # | 573 | # |
466 | # Userland interfaces | 574 | # Userland interfaces |
@@ -470,7 +578,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
470 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 578 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
471 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 579 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
472 | # CONFIG_INPUT_JOYDEV is not set | 580 | # CONFIG_INPUT_JOYDEV is not set |
473 | # CONFIG_INPUT_TSDEV is not set | ||
474 | # CONFIG_INPUT_EVDEV is not set | 581 | # CONFIG_INPUT_EVDEV is not set |
475 | # CONFIG_INPUT_EVBUG is not set | 582 | # CONFIG_INPUT_EVBUG is not set |
476 | 583 | ||
@@ -483,11 +590,19 @@ CONFIG_INPUT_KEYBOARD=y | |||
483 | # CONFIG_KEYBOARD_LKKBD is not set | 590 | # CONFIG_KEYBOARD_LKKBD is not set |
484 | # CONFIG_KEYBOARD_XTKBD is not set | 591 | # CONFIG_KEYBOARD_XTKBD is not set |
485 | # CONFIG_KEYBOARD_NEWTON is not set | 592 | # CONFIG_KEYBOARD_NEWTON is not set |
593 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
486 | CONFIG_INPUT_MOUSE=y | 594 | CONFIG_INPUT_MOUSE=y |
487 | CONFIG_MOUSE_PS2=m | 595 | CONFIG_MOUSE_PS2=m |
596 | CONFIG_MOUSE_PS2_ALPS=y | ||
597 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
598 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
599 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
600 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
601 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
488 | CONFIG_MOUSE_SERIAL=m | 602 | CONFIG_MOUSE_SERIAL=m |
489 | # CONFIG_MOUSE_VSXXXAA is not set | 603 | # CONFIG_MOUSE_VSXXXAA is not set |
490 | # CONFIG_INPUT_JOYSTICK is not set | 604 | # CONFIG_INPUT_JOYSTICK is not set |
605 | # CONFIG_INPUT_TABLET is not set | ||
491 | # CONFIG_INPUT_TOUCHSCREEN is not set | 606 | # CONFIG_INPUT_TOUCHSCREEN is not set |
492 | # CONFIG_INPUT_MISC is not set | 607 | # CONFIG_INPUT_MISC is not set |
493 | 608 | ||
@@ -495,7 +610,7 @@ CONFIG_MOUSE_SERIAL=m | |||
495 | # Hardware I/O ports | 610 | # Hardware I/O ports |
496 | # | 611 | # |
497 | CONFIG_SERIO=m | 612 | CONFIG_SERIO=m |
498 | CONFIG_SERIO_SERPORT=m | 613 | # CONFIG_SERIO_SERPORT is not set |
499 | CONFIG_SERIO_LIBPS2=m | 614 | CONFIG_SERIO_LIBPS2=m |
500 | # CONFIG_SERIO_RAW is not set | 615 | # CONFIG_SERIO_RAW is not set |
501 | # CONFIG_GAMEPORT is not set | 616 | # CONFIG_GAMEPORT is not set |
@@ -506,6 +621,7 @@ CONFIG_SERIO_LIBPS2=m | |||
506 | CONFIG_VT=y | 621 | CONFIG_VT=y |
507 | CONFIG_VT_CONSOLE=y | 622 | CONFIG_VT_CONSOLE=y |
508 | CONFIG_HW_CONSOLE=y | 623 | CONFIG_HW_CONSOLE=y |
624 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
509 | # CONFIG_SERIAL_NONSTANDARD is not set | 625 | # CONFIG_SERIAL_NONSTANDARD is not set |
510 | 626 | ||
511 | # | 627 | # |
@@ -519,90 +635,114 @@ CONFIG_HW_CONSOLE=y | |||
519 | CONFIG_UNIX98_PTYS=y | 635 | CONFIG_UNIX98_PTYS=y |
520 | CONFIG_LEGACY_PTYS=y | 636 | CONFIG_LEGACY_PTYS=y |
521 | CONFIG_LEGACY_PTY_COUNT=256 | 637 | CONFIG_LEGACY_PTY_COUNT=256 |
522 | |||
523 | # | ||
524 | # IPMI | ||
525 | # | ||
526 | # CONFIG_IPMI_HANDLER is not set | 638 | # CONFIG_IPMI_HANDLER is not set |
527 | 639 | # CONFIG_HW_RANDOM is not set | |
528 | # | 640 | CONFIG_GEN_RTC=m |
529 | # Watchdog Cards | ||
530 | # | ||
531 | # CONFIG_WATCHDOG is not set | ||
532 | CONFIG_GEN_RTC=y | ||
533 | CONFIG_GEN_RTC_X=y | 641 | CONFIG_GEN_RTC_X=y |
534 | # CONFIG_DTLK is not set | ||
535 | # CONFIG_R3964 is not set | 642 | # CONFIG_R3964 is not set |
536 | |||
537 | # | ||
538 | # Ftape, the floppy tape device driver | ||
539 | # | ||
540 | # CONFIG_DRM is not set | ||
541 | # CONFIG_RAW_DRIVER is not set | 643 | # CONFIG_RAW_DRIVER is not set |
644 | # CONFIG_TCG_TPM is not set | ||
645 | # CONFIG_I2C is not set | ||
542 | 646 | ||
543 | # | 647 | # |
544 | # TPM devices | 648 | # SPI support |
545 | # | 649 | # |
650 | # CONFIG_SPI is not set | ||
651 | # CONFIG_SPI_MASTER is not set | ||
652 | # CONFIG_W1 is not set | ||
653 | # CONFIG_POWER_SUPPLY is not set | ||
654 | # CONFIG_HWMON is not set | ||
655 | # CONFIG_THERMAL is not set | ||
656 | # CONFIG_WATCHDOG is not set | ||
546 | 657 | ||
547 | # | 658 | # |
548 | # I2C support | 659 | # Sonics Silicon Backplane |
549 | # | 660 | # |
550 | # CONFIG_I2C is not set | 661 | CONFIG_SSB_POSSIBLE=y |
662 | # CONFIG_SSB is not set | ||
551 | 663 | ||
552 | # | 664 | # |
553 | # Dallas's 1-wire bus | 665 | # Multifunction device drivers |
554 | # | 666 | # |
555 | # CONFIG_W1 is not set | 667 | # CONFIG_MFD_SM501 is not set |
556 | 668 | ||
557 | # | 669 | # |
558 | # Misc devices | 670 | # Multimedia devices |
559 | # | 671 | # |
672 | # CONFIG_VIDEO_DEV is not set | ||
673 | # CONFIG_DVB_CORE is not set | ||
674 | # CONFIG_DAB is not set | ||
560 | 675 | ||
561 | # | 676 | # |
562 | # Multimedia devices | 677 | # Graphics support |
563 | # | 678 | # |
564 | # CONFIG_VIDEO_DEV is not set | 679 | # CONFIG_VGASTATE is not set |
680 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
681 | CONFIG_FB=y | ||
682 | # CONFIG_FIRMWARE_EDID is not set | ||
683 | # CONFIG_FB_DDC is not set | ||
684 | CONFIG_FB_CFB_FILLRECT=y | ||
685 | # CONFIG_FB_CFB_COPYAREA is not set | ||
686 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
687 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
688 | # CONFIG_FB_SYS_FILLRECT is not set | ||
689 | # CONFIG_FB_SYS_COPYAREA is not set | ||
690 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
691 | # CONFIG_FB_SYS_FOPS is not set | ||
692 | CONFIG_FB_DEFERRED_IO=y | ||
693 | # CONFIG_FB_SVGALIB is not set | ||
694 | # CONFIG_FB_MACMODES is not set | ||
695 | # CONFIG_FB_BACKLIGHT is not set | ||
696 | # CONFIG_FB_MODE_HELPERS is not set | ||
697 | # CONFIG_FB_TILEBLITTING is not set | ||
565 | 698 | ||
566 | # | 699 | # |
567 | # Digital Video Broadcasting Devices | 700 | # Frame buffer hardware drivers |
568 | # | 701 | # |
569 | # CONFIG_DVB is not set | 702 | CONFIG_FB_APOLLO=y |
703 | # CONFIG_FB_UVESA is not set | ||
704 | # CONFIG_FB_S1D13XXX is not set | ||
705 | # CONFIG_FB_VIRTUAL is not set | ||
706 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
570 | 707 | ||
571 | # | 708 | # |
572 | # Graphics support | 709 | # Display device support |
573 | # | 710 | # |
574 | # CONFIG_FB is not set | 711 | # CONFIG_DISPLAY_SUPPORT is not set |
575 | 712 | ||
576 | # | 713 | # |
577 | # Console display driver support | 714 | # Console display driver support |
578 | # | 715 | # |
579 | CONFIG_DUMMY_CONSOLE=y | 716 | CONFIG_DUMMY_CONSOLE=y |
717 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
718 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
719 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
720 | # CONFIG_FONTS is not set | ||
721 | CONFIG_FONT_8x8=y | ||
722 | CONFIG_FONT_8x16=y | ||
723 | CONFIG_LOGO=y | ||
724 | CONFIG_LOGO_LINUX_MONO=y | ||
725 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
726 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
580 | 727 | ||
581 | # | 728 | # |
582 | # Sound | 729 | # Sound |
583 | # | 730 | # |
584 | # CONFIG_SOUND is not set | 731 | # CONFIG_SOUND is not set |
585 | 732 | CONFIG_HID_SUPPORT=y | |
586 | # | 733 | CONFIG_HID=m |
587 | # USB support | 734 | # CONFIG_HID_DEBUG is not set |
588 | # | 735 | CONFIG_HIDRAW=y |
589 | # CONFIG_USB_ARCH_HAS_HCD is not set | 736 | # CONFIG_USB_SUPPORT is not set |
590 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
591 | |||
592 | # | ||
593 | # USB Gadget Support | ||
594 | # | ||
595 | # CONFIG_USB_GADGET is not set | ||
596 | |||
597 | # | ||
598 | # MMC/SD Card support | ||
599 | # | ||
600 | # CONFIG_MMC is not set | 737 | # CONFIG_MMC is not set |
738 | # CONFIG_MEMSTICK is not set | ||
739 | # CONFIG_NEW_LEDS is not set | ||
740 | # CONFIG_RTC_CLASS is not set | ||
601 | 741 | ||
602 | # | 742 | # |
603 | # InfiniBand support | 743 | # Userspace I/O |
604 | # | 744 | # |
605 | # CONFIG_INFINIBAND is not set | 745 | # CONFIG_UIO is not set |
606 | 746 | ||
607 | # | 747 | # |
608 | # Character devices | 748 | # Character devices |
@@ -615,10 +755,11 @@ CONFIG_SERIAL_CONSOLE=y | |||
615 | # | 755 | # |
616 | CONFIG_EXT2_FS=y | 756 | CONFIG_EXT2_FS=y |
617 | # CONFIG_EXT2_FS_XATTR is not set | 757 | # CONFIG_EXT2_FS_XATTR is not set |
758 | # CONFIG_EXT2_FS_XIP is not set | ||
618 | CONFIG_EXT3_FS=y | 759 | CONFIG_EXT3_FS=y |
619 | # CONFIG_EXT3_FS_XATTR is not set | 760 | # CONFIG_EXT3_FS_XATTR is not set |
761 | # CONFIG_EXT4DEV_FS is not set | ||
620 | CONFIG_JBD=y | 762 | CONFIG_JBD=y |
621 | # CONFIG_JBD_DEBUG is not set | ||
622 | CONFIG_REISERFS_FS=m | 763 | CONFIG_REISERFS_FS=m |
623 | # CONFIG_REISERFS_CHECK is not set | 764 | # CONFIG_REISERFS_CHECK is not set |
624 | # CONFIG_REISERFS_PROC_INFO is not set | 765 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -629,25 +770,29 @@ CONFIG_JFS_FS=m | |||
629 | # CONFIG_JFS_DEBUG is not set | 770 | # CONFIG_JFS_DEBUG is not set |
630 | # CONFIG_JFS_STATISTICS is not set | 771 | # CONFIG_JFS_STATISTICS is not set |
631 | CONFIG_FS_POSIX_ACL=y | 772 | CONFIG_FS_POSIX_ACL=y |
632 | |||
633 | # | ||
634 | # XFS support | ||
635 | # | ||
636 | CONFIG_XFS_FS=m | 773 | CONFIG_XFS_FS=m |
637 | CONFIG_XFS_EXPORT=y | ||
638 | # CONFIG_XFS_RT is not set | ||
639 | # CONFIG_XFS_QUOTA is not set | 774 | # CONFIG_XFS_QUOTA is not set |
640 | # CONFIG_XFS_SECURITY is not set | 775 | # CONFIG_XFS_SECURITY is not set |
641 | # CONFIG_XFS_POSIX_ACL is not set | 776 | # CONFIG_XFS_POSIX_ACL is not set |
642 | CONFIG_MINIX_FS=y | 777 | # CONFIG_XFS_RT is not set |
643 | # CONFIG_ROMFS_FS is not set | 778 | CONFIG_GFS2_FS=m |
779 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
780 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
781 | CONFIG_OCFS2_FS=m | ||
782 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
783 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
784 | CONFIG_DNOTIFY=y | ||
785 | CONFIG_INOTIFY=y | ||
786 | CONFIG_INOTIFY_USER=y | ||
644 | CONFIG_QUOTA=y | 787 | CONFIG_QUOTA=y |
788 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
789 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
645 | # CONFIG_QFMT_V1 is not set | 790 | # CONFIG_QFMT_V1 is not set |
646 | # CONFIG_QFMT_V2 is not set | 791 | # CONFIG_QFMT_V2 is not set |
647 | CONFIG_QUOTACTL=y | 792 | CONFIG_QUOTACTL=y |
648 | CONFIG_DNOTIFY=y | ||
649 | CONFIG_AUTOFS_FS=m | 793 | CONFIG_AUTOFS_FS=m |
650 | CONFIG_AUTOFS4_FS=m | 794 | CONFIG_AUTOFS4_FS=m |
795 | CONFIG_FUSE_FS=m | ||
651 | 796 | ||
652 | # | 797 | # |
653 | # CD-ROM/DVD Filesystems | 798 | # CD-ROM/DVD Filesystems |
@@ -655,7 +800,6 @@ CONFIG_AUTOFS4_FS=m | |||
655 | CONFIG_ISO9660_FS=y | 800 | CONFIG_ISO9660_FS=y |
656 | CONFIG_JOLIET=y | 801 | CONFIG_JOLIET=y |
657 | CONFIG_ZISOFS=y | 802 | CONFIG_ZISOFS=y |
658 | CONFIG_ZISOFS_FS=y | ||
659 | CONFIG_UDF_FS=m | 803 | CONFIG_UDF_FS=m |
660 | CONFIG_UDF_NLS=y | 804 | CONFIG_UDF_NLS=y |
661 | 805 | ||
@@ -674,13 +818,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
674 | # | 818 | # |
675 | CONFIG_PROC_FS=y | 819 | CONFIG_PROC_FS=y |
676 | CONFIG_PROC_KCORE=y | 820 | CONFIG_PROC_KCORE=y |
821 | CONFIG_PROC_SYSCTL=y | ||
677 | CONFIG_SYSFS=y | 822 | CONFIG_SYSFS=y |
678 | # CONFIG_DEVFS_FS is not set | ||
679 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
680 | CONFIG_TMPFS=y | 823 | CONFIG_TMPFS=y |
681 | # CONFIG_TMPFS_XATTR is not set | 824 | # CONFIG_TMPFS_POSIX_ACL is not set |
682 | # CONFIG_HUGETLB_PAGE is not set | 825 | # CONFIG_HUGETLB_PAGE is not set |
683 | CONFIG_RAMFS=y | 826 | CONFIG_CONFIGFS_FS=m |
684 | 827 | ||
685 | # | 828 | # |
686 | # Miscellaneous filesystems | 829 | # Miscellaneous filesystems |
@@ -694,44 +837,40 @@ CONFIG_HFSPLUS_FS=m | |||
694 | # CONFIG_EFS_FS is not set | 837 | # CONFIG_EFS_FS is not set |
695 | CONFIG_CRAMFS=m | 838 | CONFIG_CRAMFS=m |
696 | # CONFIG_VXFS_FS is not set | 839 | # CONFIG_VXFS_FS is not set |
840 | CONFIG_MINIX_FS=y | ||
697 | CONFIG_HPFS_FS=m | 841 | CONFIG_HPFS_FS=m |
698 | # CONFIG_QNX4FS_FS is not set | 842 | # CONFIG_QNX4FS_FS is not set |
843 | # CONFIG_ROMFS_FS is not set | ||
699 | CONFIG_SYSV_FS=m | 844 | CONFIG_SYSV_FS=m |
700 | CONFIG_UFS_FS=m | 845 | CONFIG_UFS_FS=m |
701 | # CONFIG_UFS_FS_WRITE is not set | 846 | # CONFIG_UFS_FS_WRITE is not set |
702 | 847 | # CONFIG_UFS_DEBUG is not set | |
703 | # | 848 | CONFIG_NETWORK_FILESYSTEMS=y |
704 | # Network File Systems | ||
705 | # | ||
706 | CONFIG_NFS_FS=y | 849 | CONFIG_NFS_FS=y |
707 | CONFIG_NFS_V3=y | 850 | CONFIG_NFS_V3=y |
851 | # CONFIG_NFS_V3_ACL is not set | ||
708 | CONFIG_NFS_V4=y | 852 | CONFIG_NFS_V4=y |
709 | # CONFIG_NFS_DIRECTIO is not set | 853 | # CONFIG_NFS_DIRECTIO is not set |
710 | CONFIG_NFSD=m | 854 | CONFIG_NFSD=m |
711 | CONFIG_NFSD_V3=y | 855 | CONFIG_NFSD_V3=y |
712 | CONFIG_NFSD_V4=y | 856 | # CONFIG_NFSD_V3_ACL is not set |
857 | # CONFIG_NFSD_V4 is not set | ||
713 | CONFIG_NFSD_TCP=y | 858 | CONFIG_NFSD_TCP=y |
714 | CONFIG_ROOT_NFS=y | 859 | CONFIG_ROOT_NFS=y |
715 | CONFIG_LOCKD=y | 860 | CONFIG_LOCKD=y |
716 | CONFIG_LOCKD_V4=y | 861 | CONFIG_LOCKD_V4=y |
717 | CONFIG_EXPORTFS=m | 862 | CONFIG_EXPORTFS=m |
863 | CONFIG_NFS_COMMON=y | ||
718 | CONFIG_SUNRPC=y | 864 | CONFIG_SUNRPC=y |
719 | CONFIG_SUNRPC_GSS=y | 865 | CONFIG_SUNRPC_GSS=y |
866 | CONFIG_SUNRPC_BIND34=y | ||
720 | CONFIG_RPCSEC_GSS_KRB5=y | 867 | CONFIG_RPCSEC_GSS_KRB5=y |
721 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 868 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
722 | CONFIG_SMB_FS=m | 869 | CONFIG_SMB_FS=m |
723 | CONFIG_SMB_NLS_DEFAULT=y | 870 | CONFIG_SMB_NLS_DEFAULT=y |
724 | CONFIG_SMB_NLS_REMOTE="cp437" | 871 | CONFIG_SMB_NLS_REMOTE="cp437" |
725 | # CONFIG_CIFS is not set | 872 | # CONFIG_CIFS is not set |
726 | CONFIG_NCP_FS=m | 873 | # CONFIG_NCP_FS is not set |
727 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
728 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
729 | # CONFIG_NCPFS_STRONG is not set | ||
730 | CONFIG_NCPFS_NFS_NS=y | ||
731 | CONFIG_NCPFS_OS2_NS=y | ||
732 | # CONFIG_NCPFS_SMALLDOS is not set | ||
733 | CONFIG_NCPFS_NLS=y | ||
734 | # CONFIG_NCPFS_EXTRAS is not set | ||
735 | CONFIG_CODA_FS=m | 874 | CONFIG_CODA_FS=m |
736 | # CONFIG_CODA_FS_OLD_API is not set | 875 | # CONFIG_CODA_FS_OLD_API is not set |
737 | # CONFIG_AFS_FS is not set | 876 | # CONFIG_AFS_FS is not set |
@@ -741,10 +880,6 @@ CONFIG_CODA_FS=m | |||
741 | # | 880 | # |
742 | # CONFIG_PARTITION_ADVANCED is not set | 881 | # CONFIG_PARTITION_ADVANCED is not set |
743 | CONFIG_MSDOS_PARTITION=y | 882 | CONFIG_MSDOS_PARTITION=y |
744 | |||
745 | # | ||
746 | # Native Language Support | ||
747 | # | ||
748 | CONFIG_NLS=y | 883 | CONFIG_NLS=y |
749 | CONFIG_NLS_DEFAULT="iso8859-1" | 884 | CONFIG_NLS_DEFAULT="iso8859-1" |
750 | CONFIG_NLS_CODEPAGE_437=y | 885 | CONFIG_NLS_CODEPAGE_437=y |
@@ -785,35 +920,42 @@ CONFIG_NLS_ISO8859_15=m | |||
785 | CONFIG_NLS_KOI8_R=m | 920 | CONFIG_NLS_KOI8_R=m |
786 | CONFIG_NLS_KOI8_U=m | 921 | CONFIG_NLS_KOI8_U=m |
787 | CONFIG_NLS_UTF8=m | 922 | CONFIG_NLS_UTF8=m |
923 | CONFIG_DLM=m | ||
924 | # CONFIG_DLM_DEBUG is not set | ||
788 | 925 | ||
789 | # | 926 | # |
790 | # Kernel hacking | 927 | # Kernel hacking |
791 | # | 928 | # |
792 | # CONFIG_PRINTK_TIME is not set | 929 | # CONFIG_PRINTK_TIME is not set |
793 | CONFIG_DEBUG_KERNEL=y | 930 | CONFIG_ENABLE_WARN_DEPRECATED=y |
931 | CONFIG_ENABLE_MUST_CHECK=y | ||
794 | CONFIG_MAGIC_SYSRQ=y | 932 | CONFIG_MAGIC_SYSRQ=y |
795 | CONFIG_LOG_BUF_SHIFT=16 | 933 | # CONFIG_UNUSED_SYMBOLS is not set |
796 | # CONFIG_SCHEDSTATS is not set | ||
797 | # CONFIG_DEBUG_SLAB is not set | ||
798 | # CONFIG_DEBUG_SPINLOCK is not set | ||
799 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
800 | # CONFIG_DEBUG_KOBJECT is not set | ||
801 | CONFIG_DEBUG_BUGVERBOSE=y | ||
802 | # CONFIG_DEBUG_INFO is not set | ||
803 | # CONFIG_DEBUG_FS is not set | 934 | # CONFIG_DEBUG_FS is not set |
804 | # CONFIG_FRAME_POINTER is not set | 935 | # CONFIG_HEADERS_CHECK is not set |
936 | # CONFIG_DEBUG_KERNEL is not set | ||
937 | CONFIG_DEBUG_BUGVERBOSE=y | ||
938 | # CONFIG_SAMPLES is not set | ||
805 | 939 | ||
806 | # | 940 | # |
807 | # Security options | 941 | # Security options |
808 | # | 942 | # |
809 | # CONFIG_KEYS is not set | 943 | # CONFIG_KEYS is not set |
810 | # CONFIG_SECURITY is not set | 944 | # CONFIG_SECURITY is not set |
811 | 945 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
812 | # | 946 | CONFIG_XOR_BLOCKS=m |
813 | # Cryptographic options | 947 | CONFIG_ASYNC_CORE=m |
814 | # | 948 | CONFIG_ASYNC_MEMCPY=m |
949 | CONFIG_ASYNC_XOR=m | ||
815 | CONFIG_CRYPTO=y | 950 | CONFIG_CRYPTO=y |
951 | CONFIG_CRYPTO_ALGAPI=y | ||
952 | CONFIG_CRYPTO_AEAD=m | ||
953 | CONFIG_CRYPTO_BLKCIPHER=y | ||
954 | CONFIG_CRYPTO_SEQIV=m | ||
955 | CONFIG_CRYPTO_HASH=y | ||
956 | CONFIG_CRYPTO_MANAGER=y | ||
816 | CONFIG_CRYPTO_HMAC=y | 957 | CONFIG_CRYPTO_HMAC=y |
958 | CONFIG_CRYPTO_XCBC=m | ||
817 | CONFIG_CRYPTO_NULL=m | 959 | CONFIG_CRYPTO_NULL=m |
818 | CONFIG_CRYPTO_MD4=m | 960 | CONFIG_CRYPTO_MD4=m |
819 | CONFIG_CRYPTO_MD5=y | 961 | CONFIG_CRYPTO_MD5=y |
@@ -822,9 +964,21 @@ CONFIG_CRYPTO_SHA256=m | |||
822 | CONFIG_CRYPTO_SHA512=m | 964 | CONFIG_CRYPTO_SHA512=m |
823 | CONFIG_CRYPTO_WP512=m | 965 | CONFIG_CRYPTO_WP512=m |
824 | CONFIG_CRYPTO_TGR192=m | 966 | CONFIG_CRYPTO_TGR192=m |
967 | CONFIG_CRYPTO_GF128MUL=m | ||
968 | CONFIG_CRYPTO_ECB=m | ||
969 | CONFIG_CRYPTO_CBC=y | ||
970 | CONFIG_CRYPTO_PCBC=m | ||
971 | CONFIG_CRYPTO_LRW=m | ||
972 | CONFIG_CRYPTO_XTS=m | ||
973 | CONFIG_CRYPTO_CTR=m | ||
974 | CONFIG_CRYPTO_GCM=m | ||
975 | CONFIG_CRYPTO_CCM=m | ||
976 | CONFIG_CRYPTO_CRYPTD=m | ||
825 | CONFIG_CRYPTO_DES=y | 977 | CONFIG_CRYPTO_DES=y |
978 | CONFIG_CRYPTO_FCRYPT=m | ||
826 | CONFIG_CRYPTO_BLOWFISH=m | 979 | CONFIG_CRYPTO_BLOWFISH=m |
827 | CONFIG_CRYPTO_TWOFISH=m | 980 | CONFIG_CRYPTO_TWOFISH=m |
981 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
828 | CONFIG_CRYPTO_SERPENT=m | 982 | CONFIG_CRYPTO_SERPENT=m |
829 | CONFIG_CRYPTO_AES=m | 983 | CONFIG_CRYPTO_AES=m |
830 | CONFIG_CRYPTO_CAST5=m | 984 | CONFIG_CRYPTO_CAST5=m |
@@ -833,20 +987,35 @@ CONFIG_CRYPTO_TEA=m | |||
833 | CONFIG_CRYPTO_ARC4=m | 987 | CONFIG_CRYPTO_ARC4=m |
834 | CONFIG_CRYPTO_KHAZAD=m | 988 | CONFIG_CRYPTO_KHAZAD=m |
835 | CONFIG_CRYPTO_ANUBIS=m | 989 | CONFIG_CRYPTO_ANUBIS=m |
990 | CONFIG_CRYPTO_SEED=m | ||
991 | CONFIG_CRYPTO_SALSA20=m | ||
836 | CONFIG_CRYPTO_DEFLATE=m | 992 | CONFIG_CRYPTO_DEFLATE=m |
837 | CONFIG_CRYPTO_MICHAEL_MIC=m | 993 | CONFIG_CRYPTO_MICHAEL_MIC=m |
838 | CONFIG_CRYPTO_CRC32C=m | 994 | CONFIG_CRYPTO_CRC32C=m |
995 | CONFIG_CRYPTO_CAMELLIA=m | ||
839 | CONFIG_CRYPTO_TEST=m | 996 | CONFIG_CRYPTO_TEST=m |
840 | 997 | CONFIG_CRYPTO_AUTHENC=m | |
841 | # | 998 | CONFIG_CRYPTO_LZO=m |
842 | # Hardware crypto devices | 999 | # CONFIG_CRYPTO_HW is not set |
843 | # | ||
844 | 1000 | ||
845 | # | 1001 | # |
846 | # Library routines | 1002 | # Library routines |
847 | # | 1003 | # |
1004 | CONFIG_BITREVERSE=y | ||
848 | CONFIG_CRC_CCITT=m | 1005 | CONFIG_CRC_CCITT=m |
1006 | CONFIG_CRC16=m | ||
1007 | # CONFIG_CRC_ITU_T is not set | ||
849 | CONFIG_CRC32=y | 1008 | CONFIG_CRC32=y |
1009 | # CONFIG_CRC7 is not set | ||
850 | CONFIG_LIBCRC32C=m | 1010 | CONFIG_LIBCRC32C=m |
851 | CONFIG_ZLIB_INFLATE=y | 1011 | CONFIG_ZLIB_INFLATE=y |
852 | CONFIG_ZLIB_DEFLATE=m | 1012 | CONFIG_ZLIB_DEFLATE=m |
1013 | CONFIG_LZO_COMPRESS=m | ||
1014 | CONFIG_LZO_DECOMPRESS=m | ||
1015 | CONFIG_TEXTSEARCH=y | ||
1016 | CONFIG_TEXTSEARCH_KMP=m | ||
1017 | CONFIG_TEXTSEARCH_BM=m | ||
1018 | CONFIG_TEXTSEARCH_FSM=m | ||
1019 | CONFIG_PLIST=y | ||
1020 | CONFIG_HAS_IOMEM=y | ||
1021 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig index 6433da2d2ce2..ba7f971bb026 100644 --- a/arch/m68k/configs/atari_defconfig +++ b/arch/m68k/configs/atari_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:32 2005 | 4 | # Wed Apr 2 20:46:09 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-atari" | 27 | CONFIG_LOCALVERSION="-atari" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -80,10 +128,24 @@ CONFIG_M68030=y | |||
80 | CONFIG_M68040=y | 128 | CONFIG_M68040=y |
81 | CONFIG_M68060=y | 129 | CONFIG_M68060=y |
82 | CONFIG_MMU_MOTOROLA=y | 130 | CONFIG_MMU_MOTOROLA=y |
83 | CONFIG_M68KFPU_EMU=y | 131 | # CONFIG_M68KFPU_EMU is not set |
84 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
85 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
86 | # CONFIG_ADVANCED is not set | 132 | # CONFIG_ADVANCED is not set |
133 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
134 | CONFIG_NODES_SHIFT=3 | ||
135 | CONFIG_SELECT_MEMORY_MODEL=y | ||
136 | # CONFIG_FLATMEM_MANUAL is not set | ||
137 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
138 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
139 | CONFIG_DISCONTIGMEM=y | ||
140 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
141 | CONFIG_NEED_MULTIPLE_NODES=y | ||
142 | # CONFIG_SPARSEMEM_STATIC is not set | ||
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
145 | # CONFIG_RESOURCES_64BIT is not set | ||
146 | CONFIG_ZONE_DMA_FLAG=1 | ||
147 | CONFIG_BOUNCE=y | ||
148 | CONFIG_VIRT_TO_BUS=y | ||
87 | 149 | ||
88 | # | 150 | # |
89 | # General setup | 151 | # General setup |
@@ -94,166 +156,11 @@ CONFIG_BINFMT_MISC=m | |||
94 | CONFIG_STRAM_PROC=y | 156 | CONFIG_STRAM_PROC=y |
95 | CONFIG_HEARTBEAT=y | 157 | CONFIG_HEARTBEAT=y |
96 | CONFIG_PROC_HARDWARE=y | 158 | CONFIG_PROC_HARDWARE=y |
159 | CONFIG_ZONE_DMA=y | ||
160 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
97 | 161 | ||
98 | # | 162 | # |
99 | # Device Drivers | 163 | # Networking |
100 | # | ||
101 | |||
102 | # | ||
103 | # Generic Driver Options | ||
104 | # | ||
105 | CONFIG_STANDALONE=y | ||
106 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
107 | CONFIG_FW_LOADER=m | ||
108 | # CONFIG_DEBUG_DRIVER is not set | ||
109 | |||
110 | # | ||
111 | # Memory Technology Devices (MTD) | ||
112 | # | ||
113 | # CONFIG_MTD is not set | ||
114 | |||
115 | # | ||
116 | # Parallel port support | ||
117 | # | ||
118 | CONFIG_PARPORT=m | ||
119 | # CONFIG_PARPORT_PC is not set | ||
120 | CONFIG_PARPORT_NOT_PC=y | ||
121 | CONFIG_PARPORT_ATARI=m | ||
122 | # CONFIG_PARPORT_GSC is not set | ||
123 | CONFIG_PARPORT_1284=y | ||
124 | |||
125 | # | ||
126 | # Plug and Play support | ||
127 | # | ||
128 | |||
129 | # | ||
130 | # Block devices | ||
131 | # | ||
132 | CONFIG_ATARI_FLOPPY=y | ||
133 | # CONFIG_PARIDE is not set | ||
134 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
135 | CONFIG_BLK_DEV_LOOP=y | ||
136 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
137 | CONFIG_BLK_DEV_NBD=m | ||
138 | CONFIG_BLK_DEV_RAM=y | ||
139 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
140 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
141 | CONFIG_BLK_DEV_INITRD=y | ||
142 | CONFIG_INITRAMFS_SOURCE="" | ||
143 | CONFIG_CDROM_PKTCDVD=m | ||
144 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
145 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
146 | |||
147 | # | ||
148 | # IO Schedulers | ||
149 | # | ||
150 | CONFIG_IOSCHED_NOOP=y | ||
151 | CONFIG_IOSCHED_AS=y | ||
152 | CONFIG_IOSCHED_DEADLINE=y | ||
153 | CONFIG_IOSCHED_CFQ=y | ||
154 | CONFIG_ATA_OVER_ETH=m | ||
155 | |||
156 | # | ||
157 | # ATA/ATAPI/MFM/RLL support | ||
158 | # | ||
159 | CONFIG_IDE=y | ||
160 | CONFIG_BLK_DEV_IDE=y | ||
161 | |||
162 | # | ||
163 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
164 | # | ||
165 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
166 | CONFIG_BLK_DEV_IDEDISK=y | ||
167 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
168 | CONFIG_BLK_DEV_IDECD=y | ||
169 | CONFIG_BLK_DEV_IDETAPE=m | ||
170 | CONFIG_BLK_DEV_IDEFLOPPY=m | ||
171 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
172 | # CONFIG_IDE_TASK_IOCTL is not set | ||
173 | |||
174 | # | ||
175 | # IDE chipset support/bugfixes | ||
176 | # | ||
177 | CONFIG_IDE_GENERIC=y | ||
178 | # CONFIG_IDE_ARM is not set | ||
179 | CONFIG_BLK_DEV_FALCON_IDE=y | ||
180 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
181 | # CONFIG_IDEDMA_AUTO is not set | ||
182 | # CONFIG_BLK_DEV_HD is not set | ||
183 | |||
184 | # | ||
185 | # SCSI device support | ||
186 | # | ||
187 | CONFIG_SCSI=y | ||
188 | CONFIG_SCSI_PROC_FS=y | ||
189 | |||
190 | # | ||
191 | # SCSI support type (disk, tape, CD-ROM) | ||
192 | # | ||
193 | CONFIG_BLK_DEV_SD=y | ||
194 | CONFIG_CHR_DEV_ST=m | ||
195 | # CONFIG_CHR_DEV_OSST is not set | ||
196 | CONFIG_BLK_DEV_SR=y | ||
197 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
198 | CONFIG_CHR_DEV_SG=m | ||
199 | |||
200 | # | ||
201 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
202 | # | ||
203 | # CONFIG_SCSI_MULTI_LUN is not set | ||
204 | CONFIG_SCSI_CONSTANTS=y | ||
205 | # CONFIG_SCSI_LOGGING is not set | ||
206 | |||
207 | # | ||
208 | # SCSI Transport Attributes | ||
209 | # | ||
210 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
211 | # CONFIG_SCSI_FC_ATTRS is not set | ||
212 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
213 | |||
214 | # | ||
215 | # SCSI low-level drivers | ||
216 | # | ||
217 | # CONFIG_SCSI_SATA is not set | ||
218 | # CONFIG_SCSI_PPA is not set | ||
219 | # CONFIG_SCSI_IMM is not set | ||
220 | # CONFIG_SCSI_DEBUG is not set | ||
221 | |||
222 | # | ||
223 | # Multi-device support (RAID and LVM) | ||
224 | # | ||
225 | CONFIG_MD=y | ||
226 | CONFIG_BLK_DEV_MD=m | ||
227 | CONFIG_MD_LINEAR=m | ||
228 | CONFIG_MD_RAID0=m | ||
229 | CONFIG_MD_RAID1=m | ||
230 | # CONFIG_MD_RAID10 is not set | ||
231 | CONFIG_MD_RAID5=m | ||
232 | CONFIG_MD_RAID6=m | ||
233 | CONFIG_MD_MULTIPATH=m | ||
234 | # CONFIG_MD_FAULTY is not set | ||
235 | CONFIG_BLK_DEV_DM=m | ||
236 | CONFIG_DM_CRYPT=m | ||
237 | CONFIG_DM_SNAPSHOT=m | ||
238 | CONFIG_DM_MIRROR=m | ||
239 | CONFIG_DM_ZERO=m | ||
240 | CONFIG_DM_MULTIPATH=m | ||
241 | CONFIG_DM_MULTIPATH_EMC=m | ||
242 | |||
243 | # | ||
244 | # Fusion MPT device support | ||
245 | # | ||
246 | |||
247 | # | ||
248 | # IEEE 1394 (FireWire) support | ||
249 | # | ||
250 | |||
251 | # | ||
252 | # I2O device support | ||
253 | # | ||
254 | |||
255 | # | ||
256 | # Networking support | ||
257 | # | 164 | # |
258 | CONFIG_NET=y | 165 | CONFIG_NET=y |
259 | 166 | ||
@@ -263,10 +170,17 @@ CONFIG_NET=y | |||
263 | CONFIG_PACKET=y | 170 | CONFIG_PACKET=y |
264 | # CONFIG_PACKET_MMAP is not set | 171 | # CONFIG_PACKET_MMAP is not set |
265 | CONFIG_UNIX=y | 172 | CONFIG_UNIX=y |
173 | CONFIG_XFRM=y | ||
174 | # CONFIG_XFRM_USER is not set | ||
175 | # CONFIG_XFRM_SUB_POLICY is not set | ||
176 | CONFIG_XFRM_MIGRATE=y | ||
177 | # CONFIG_XFRM_STATISTICS is not set | ||
266 | CONFIG_NET_KEY=y | 178 | CONFIG_NET_KEY=y |
179 | CONFIG_NET_KEY_MIGRATE=y | ||
267 | CONFIG_INET=y | 180 | CONFIG_INET=y |
268 | # CONFIG_IP_MULTICAST is not set | 181 | # CONFIG_IP_MULTICAST is not set |
269 | # CONFIG_IP_ADVANCED_ROUTER is not set | 182 | # CONFIG_IP_ADVANCED_ROUTER is not set |
183 | CONFIG_IP_FIB_HASH=y | ||
270 | # CONFIG_IP_PNP is not set | 184 | # CONFIG_IP_PNP is not set |
271 | CONFIG_NET_IPIP=m | 185 | CONFIG_NET_IPIP=m |
272 | CONFIG_NET_IPGRE=m | 186 | CONFIG_NET_IPGRE=m |
@@ -275,145 +189,199 @@ CONFIG_SYN_COOKIES=y | |||
275 | CONFIG_INET_AH=m | 189 | CONFIG_INET_AH=m |
276 | CONFIG_INET_ESP=m | 190 | CONFIG_INET_ESP=m |
277 | CONFIG_INET_IPCOMP=m | 191 | CONFIG_INET_IPCOMP=m |
192 | CONFIG_INET_XFRM_TUNNEL=m | ||
278 | CONFIG_INET_TUNNEL=m | 193 | CONFIG_INET_TUNNEL=m |
279 | CONFIG_IP_TCPDIAG=m | 194 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
280 | CONFIG_IP_TCPDIAG_IPV6=y | 195 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
281 | 196 | CONFIG_INET_XFRM_MODE_BEET=m | |
282 | # | 197 | CONFIG_INET_LRO=m |
283 | # IP: Virtual Server Configuration | 198 | CONFIG_INET_DIAG=m |
284 | # | 199 | CONFIG_INET_TCP_DIAG=m |
200 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
201 | CONFIG_TCP_CONG_CUBIC=y | ||
202 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
203 | # CONFIG_TCP_MD5SIG is not set | ||
285 | # CONFIG_IP_VS is not set | 204 | # CONFIG_IP_VS is not set |
286 | CONFIG_IPV6=m | 205 | CONFIG_IPV6=m |
287 | CONFIG_IPV6_PRIVACY=y | 206 | CONFIG_IPV6_PRIVACY=y |
207 | CONFIG_IPV6_ROUTER_PREF=y | ||
208 | CONFIG_IPV6_ROUTE_INFO=y | ||
209 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
288 | CONFIG_INET6_AH=m | 210 | CONFIG_INET6_AH=m |
289 | CONFIG_INET6_ESP=m | 211 | CONFIG_INET6_ESP=m |
290 | CONFIG_INET6_IPCOMP=m | 212 | CONFIG_INET6_IPCOMP=m |
213 | # CONFIG_IPV6_MIP6 is not set | ||
214 | CONFIG_INET6_XFRM_TUNNEL=m | ||
291 | CONFIG_INET6_TUNNEL=m | 215 | CONFIG_INET6_TUNNEL=m |
216 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
217 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
218 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
219 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
220 | CONFIG_IPV6_SIT=m | ||
292 | CONFIG_IPV6_TUNNEL=m | 221 | CONFIG_IPV6_TUNNEL=m |
222 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
223 | # CONFIG_NETWORK_SECMARK is not set | ||
293 | CONFIG_NETFILTER=y | 224 | CONFIG_NETFILTER=y |
294 | # CONFIG_NETFILTER_DEBUG is not set | 225 | # CONFIG_NETFILTER_DEBUG is not set |
226 | CONFIG_NETFILTER_ADVANCED=y | ||
227 | |||
228 | # | ||
229 | # Core Netfilter Configuration | ||
230 | # | ||
231 | CONFIG_NETFILTER_NETLINK=m | ||
232 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
233 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
234 | CONFIG_NF_CONNTRACK=m | ||
235 | CONFIG_NF_CT_ACCT=y | ||
236 | CONFIG_NF_CONNTRACK_MARK=y | ||
237 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
238 | CONFIG_NF_CT_PROTO_GRE=m | ||
239 | CONFIG_NF_CT_PROTO_SCTP=m | ||
240 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
241 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
242 | CONFIG_NF_CONNTRACK_FTP=m | ||
243 | CONFIG_NF_CONNTRACK_H323=m | ||
244 | CONFIG_NF_CONNTRACK_IRC=m | ||
245 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
246 | CONFIG_NF_CONNTRACK_PPTP=m | ||
247 | CONFIG_NF_CONNTRACK_SANE=m | ||
248 | CONFIG_NF_CONNTRACK_SIP=m | ||
249 | CONFIG_NF_CONNTRACK_TFTP=m | ||
250 | # CONFIG_NF_CT_NETLINK is not set | ||
251 | CONFIG_NETFILTER_XTABLES=m | ||
252 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
253 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
254 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
255 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
263 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
264 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
265 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
295 | 292 | ||
296 | # | 293 | # |
297 | # IP: Netfilter Configuration | 294 | # IP: Netfilter Configuration |
298 | # | 295 | # |
299 | CONFIG_IP_NF_CONNTRACK=m | 296 | CONFIG_NF_CONNTRACK_IPV4=m |
300 | # CONFIG_IP_NF_CT_ACCT is not set | 297 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
301 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
302 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
303 | CONFIG_IP_NF_FTP=m | ||
304 | CONFIG_IP_NF_IRC=m | ||
305 | CONFIG_IP_NF_TFTP=m | ||
306 | CONFIG_IP_NF_AMANDA=m | ||
307 | CONFIG_IP_NF_QUEUE=m | 298 | CONFIG_IP_NF_QUEUE=m |
308 | CONFIG_IP_NF_IPTABLES=m | 299 | CONFIG_IP_NF_IPTABLES=m |
309 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
310 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
311 | CONFIG_IP_NF_MATCH_MAC=m | ||
312 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
313 | CONFIG_IP_NF_MATCH_MARK=m | ||
314 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
315 | CONFIG_IP_NF_MATCH_TOS=m | ||
316 | CONFIG_IP_NF_MATCH_RECENT=m | 300 | CONFIG_IP_NF_MATCH_RECENT=m |
317 | CONFIG_IP_NF_MATCH_ECN=m | 301 | CONFIG_IP_NF_MATCH_ECN=m |
318 | CONFIG_IP_NF_MATCH_DSCP=m | 302 | CONFIG_IP_NF_MATCH_AH=m |
319 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
320 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
321 | CONFIG_IP_NF_MATCH_TTL=m | 303 | CONFIG_IP_NF_MATCH_TTL=m |
322 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
323 | CONFIG_IP_NF_MATCH_HELPER=m | ||
324 | CONFIG_IP_NF_MATCH_STATE=m | ||
325 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
326 | CONFIG_IP_NF_MATCH_OWNER=m | ||
327 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 304 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
328 | CONFIG_IP_NF_MATCH_REALM=m | ||
329 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
330 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
331 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
332 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
333 | CONFIG_IP_NF_FILTER=m | 305 | CONFIG_IP_NF_FILTER=m |
334 | CONFIG_IP_NF_TARGET_REJECT=m | 306 | CONFIG_IP_NF_TARGET_REJECT=m |
335 | CONFIG_IP_NF_TARGET_LOG=m | 307 | CONFIG_IP_NF_TARGET_LOG=m |
336 | CONFIG_IP_NF_TARGET_ULOG=m | 308 | CONFIG_IP_NF_TARGET_ULOG=m |
337 | CONFIG_IP_NF_TARGET_TCPMSS=m | 309 | CONFIG_NF_NAT=m |
338 | CONFIG_IP_NF_NAT=m | 310 | CONFIG_NF_NAT_NEEDED=y |
339 | CONFIG_IP_NF_NAT_NEEDED=y | ||
340 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 311 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
341 | CONFIG_IP_NF_TARGET_REDIRECT=m | 312 | CONFIG_IP_NF_TARGET_REDIRECT=m |
342 | CONFIG_IP_NF_TARGET_NETMAP=m | 313 | CONFIG_IP_NF_TARGET_NETMAP=m |
343 | CONFIG_IP_NF_TARGET_SAME=m | 314 | CONFIG_NF_NAT_SNMP_BASIC=m |
344 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 315 | CONFIG_NF_NAT_PROTO_GRE=m |
345 | CONFIG_IP_NF_NAT_IRC=m | 316 | CONFIG_NF_NAT_FTP=m |
346 | CONFIG_IP_NF_NAT_FTP=m | 317 | CONFIG_NF_NAT_IRC=m |
347 | CONFIG_IP_NF_NAT_TFTP=m | 318 | CONFIG_NF_NAT_TFTP=m |
348 | CONFIG_IP_NF_NAT_AMANDA=m | 319 | CONFIG_NF_NAT_AMANDA=m |
320 | CONFIG_NF_NAT_PPTP=m | ||
321 | CONFIG_NF_NAT_H323=m | ||
322 | CONFIG_NF_NAT_SIP=m | ||
349 | CONFIG_IP_NF_MANGLE=m | 323 | CONFIG_IP_NF_MANGLE=m |
350 | CONFIG_IP_NF_TARGET_TOS=m | ||
351 | CONFIG_IP_NF_TARGET_ECN=m | 324 | CONFIG_IP_NF_TARGET_ECN=m |
352 | CONFIG_IP_NF_TARGET_DSCP=m | 325 | CONFIG_IP_NF_TARGET_TTL=m |
353 | CONFIG_IP_NF_TARGET_MARK=m | 326 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
354 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
355 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
356 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
357 | CONFIG_IP_NF_RAW=m | 327 | CONFIG_IP_NF_RAW=m |
358 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
359 | CONFIG_IP_NF_ARPTABLES=m | 328 | CONFIG_IP_NF_ARPTABLES=m |
360 | CONFIG_IP_NF_ARPFILTER=m | 329 | CONFIG_IP_NF_ARPFILTER=m |
361 | CONFIG_IP_NF_ARP_MANGLE=m | 330 | CONFIG_IP_NF_ARP_MANGLE=m |
362 | 331 | ||
363 | # | 332 | # |
364 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 333 | # IPv6: Netfilter Configuration |
365 | # | 334 | # |
335 | CONFIG_NF_CONNTRACK_IPV6=m | ||
366 | CONFIG_IP6_NF_QUEUE=m | 336 | CONFIG_IP6_NF_QUEUE=m |
367 | CONFIG_IP6_NF_IPTABLES=m | 337 | CONFIG_IP6_NF_IPTABLES=m |
368 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
369 | CONFIG_IP6_NF_MATCH_MAC=m | ||
370 | CONFIG_IP6_NF_MATCH_RT=m | 338 | CONFIG_IP6_NF_MATCH_RT=m |
371 | CONFIG_IP6_NF_MATCH_OPTS=m | 339 | CONFIG_IP6_NF_MATCH_OPTS=m |
372 | CONFIG_IP6_NF_MATCH_FRAG=m | 340 | CONFIG_IP6_NF_MATCH_FRAG=m |
373 | CONFIG_IP6_NF_MATCH_HL=m | 341 | CONFIG_IP6_NF_MATCH_HL=m |
374 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
375 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
376 | CONFIG_IP6_NF_MATCH_MARK=m | ||
377 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 342 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
378 | CONFIG_IP6_NF_MATCH_AHESP=m | 343 | CONFIG_IP6_NF_MATCH_AH=m |
379 | CONFIG_IP6_NF_MATCH_LENGTH=m | 344 | CONFIG_IP6_NF_MATCH_MH=m |
380 | CONFIG_IP6_NF_MATCH_EUI64=m | 345 | CONFIG_IP6_NF_MATCH_EUI64=m |
381 | CONFIG_IP6_NF_FILTER=m | 346 | CONFIG_IP6_NF_FILTER=m |
382 | CONFIG_IP6_NF_TARGET_LOG=m | 347 | CONFIG_IP6_NF_TARGET_LOG=m |
348 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
383 | CONFIG_IP6_NF_MANGLE=m | 349 | CONFIG_IP6_NF_MANGLE=m |
384 | CONFIG_IP6_NF_TARGET_MARK=m | 350 | CONFIG_IP6_NF_TARGET_HL=m |
385 | CONFIG_IP6_NF_RAW=m | 351 | CONFIG_IP6_NF_RAW=m |
386 | CONFIG_XFRM=y | 352 | CONFIG_IP_DCCP=m |
387 | CONFIG_XFRM_USER=m | 353 | CONFIG_INET_DCCP_DIAG=m |
354 | CONFIG_IP_DCCP_ACKVEC=y | ||
388 | 355 | ||
389 | # | 356 | # |
390 | # SCTP Configuration (EXPERIMENTAL) | 357 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
391 | # | 358 | # |
359 | CONFIG_IP_DCCP_CCID2=m | ||
360 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
361 | CONFIG_IP_DCCP_CCID3=m | ||
362 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
363 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
364 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
392 | CONFIG_IP_SCTP=m | 365 | CONFIG_IP_SCTP=m |
393 | # CONFIG_SCTP_DBG_MSG is not set | 366 | # CONFIG_SCTP_DBG_MSG is not set |
394 | # CONFIG_SCTP_DBG_OBJCNT is not set | 367 | # CONFIG_SCTP_DBG_OBJCNT is not set |
395 | # CONFIG_SCTP_HMAC_NONE is not set | 368 | # CONFIG_SCTP_HMAC_NONE is not set |
396 | # CONFIG_SCTP_HMAC_SHA1 is not set | 369 | # CONFIG_SCTP_HMAC_SHA1 is not set |
397 | CONFIG_SCTP_HMAC_MD5=y | 370 | CONFIG_SCTP_HMAC_MD5=y |
371 | # CONFIG_TIPC is not set | ||
398 | # CONFIG_ATM is not set | 372 | # CONFIG_ATM is not set |
399 | # CONFIG_BRIDGE is not set | 373 | # CONFIG_BRIDGE is not set |
400 | # CONFIG_VLAN_8021Q is not set | 374 | # CONFIG_VLAN_8021Q is not set |
401 | # CONFIG_DECNET is not set | 375 | # CONFIG_DECNET is not set |
402 | CONFIG_LLC=m | 376 | CONFIG_LLC=m |
403 | # CONFIG_LLC2 is not set | 377 | # CONFIG_LLC2 is not set |
404 | CONFIG_IPX=m | 378 | # CONFIG_IPX is not set |
405 | # CONFIG_IPX_INTERN is not set | ||
406 | CONFIG_ATALK=m | 379 | CONFIG_ATALK=m |
407 | # CONFIG_DEV_APPLETALK is not set | 380 | # CONFIG_DEV_APPLETALK is not set |
408 | # CONFIG_X25 is not set | 381 | # CONFIG_X25 is not set |
409 | # CONFIG_LAPB is not set | 382 | # CONFIG_LAPB is not set |
410 | # CONFIG_NET_DIVERT is not set | ||
411 | # CONFIG_ECONET is not set | 383 | # CONFIG_ECONET is not set |
412 | # CONFIG_WAN_ROUTER is not set | 384 | # CONFIG_WAN_ROUTER is not set |
413 | |||
414 | # | ||
415 | # QoS and/or fair queueing | ||
416 | # | ||
417 | # CONFIG_NET_SCHED is not set | 385 | # CONFIG_NET_SCHED is not set |
418 | CONFIG_NET_CLS_ROUTE=y | 386 | CONFIG_NET_CLS_ROUTE=y |
419 | 387 | ||
@@ -421,46 +389,189 @@ CONFIG_NET_CLS_ROUTE=y | |||
421 | # Network testing | 389 | # Network testing |
422 | # | 390 | # |
423 | # CONFIG_NET_PKTGEN is not set | 391 | # CONFIG_NET_PKTGEN is not set |
424 | CONFIG_NETPOLL=y | ||
425 | # CONFIG_NETPOLL_RX is not set | ||
426 | # CONFIG_NETPOLL_TRAP is not set | ||
427 | CONFIG_NET_POLL_CONTROLLER=y | ||
428 | # CONFIG_HAMRADIO is not set | 392 | # CONFIG_HAMRADIO is not set |
393 | # CONFIG_CAN is not set | ||
429 | # CONFIG_IRDA is not set | 394 | # CONFIG_IRDA is not set |
430 | # CONFIG_BT is not set | 395 | # CONFIG_BT is not set |
431 | CONFIG_NETDEVICES=y | 396 | # CONFIG_AF_RXRPC is not set |
432 | CONFIG_DUMMY=m | ||
433 | # CONFIG_BONDING is not set | ||
434 | CONFIG_EQUALIZER=m | ||
435 | # CONFIG_TUN is not set | ||
436 | 397 | ||
437 | # | 398 | # |
438 | # Ethernet (10 or 100Mbit) | 399 | # Wireless |
439 | # | 400 | # |
440 | CONFIG_NET_ETHERNET=y | 401 | # CONFIG_CFG80211 is not set |
441 | CONFIG_MII=m | 402 | CONFIG_WIRELESS_EXT=y |
442 | CONFIG_ATARILANCE=m | 403 | # CONFIG_MAC80211 is not set |
404 | CONFIG_IEEE80211=m | ||
405 | # CONFIG_IEEE80211_DEBUG is not set | ||
406 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
407 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
408 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
409 | CONFIG_IEEE80211_SOFTMAC=m | ||
410 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
411 | # CONFIG_RFKILL is not set | ||
412 | # CONFIG_NET_9P is not set | ||
413 | |||
414 | # | ||
415 | # Device Drivers | ||
416 | # | ||
417 | |||
418 | # | ||
419 | # Generic Driver Options | ||
420 | # | ||
421 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
422 | CONFIG_STANDALONE=y | ||
423 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
424 | CONFIG_FW_LOADER=m | ||
425 | # CONFIG_SYS_HYPERVISOR is not set | ||
426 | CONFIG_CONNECTOR=m | ||
427 | # CONFIG_MTD is not set | ||
428 | CONFIG_PARPORT=m | ||
429 | CONFIG_PARPORT_ATARI=m | ||
430 | # CONFIG_PARPORT_GSC is not set | ||
431 | # CONFIG_PARPORT_AX88796 is not set | ||
432 | CONFIG_PARPORT_1284=y | ||
433 | CONFIG_PARPORT_NOT_PC=y | ||
434 | CONFIG_BLK_DEV=y | ||
435 | CONFIG_ATARI_FLOPPY=y | ||
436 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
437 | CONFIG_BLK_DEV_LOOP=y | ||
438 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
439 | CONFIG_BLK_DEV_NBD=m | ||
440 | CONFIG_BLK_DEV_RAM=y | ||
441 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
442 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
443 | # CONFIG_BLK_DEV_XIP is not set | ||
444 | CONFIG_CDROM_PKTCDVD=m | ||
445 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
446 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
447 | CONFIG_ATA_OVER_ETH=m | ||
448 | CONFIG_MISC_DEVICES=y | ||
449 | # CONFIG_EEPROM_93CX6 is not set | ||
450 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
451 | CONFIG_HAVE_IDE=y | ||
452 | CONFIG_IDE=y | ||
453 | CONFIG_BLK_DEV_IDE=y | ||
454 | |||
455 | # | ||
456 | # Please see Documentation/ide/ide.txt for help/info on IDE drives | ||
457 | # | ||
458 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
459 | CONFIG_BLK_DEV_IDEDISK=y | ||
460 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
461 | CONFIG_BLK_DEV_IDECD=y | ||
462 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
463 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
464 | CONFIG_BLK_DEV_IDEFLOPPY=m | ||
465 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
466 | # CONFIG_IDE_TASK_IOCTL is not set | ||
467 | CONFIG_IDE_PROC_FS=y | ||
443 | 468 | ||
444 | # | 469 | # |
445 | # Ethernet (1000 Mbit) | 470 | # IDE chipset support/bugfixes |
446 | # | 471 | # |
472 | # CONFIG_IDE_GENERIC is not set | ||
473 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
474 | CONFIG_BLK_DEV_FALCON_IDE=y | ||
475 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
476 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set | ||
477 | # CONFIG_BLK_DEV_HD is not set | ||
447 | 478 | ||
448 | # | 479 | # |
449 | # Ethernet (10000 Mbit) | 480 | # SCSI device support |
450 | # | 481 | # |
482 | CONFIG_RAID_ATTRS=m | ||
483 | CONFIG_SCSI=y | ||
484 | CONFIG_SCSI_DMA=y | ||
485 | CONFIG_SCSI_TGT=m | ||
486 | # CONFIG_SCSI_NETLINK is not set | ||
487 | CONFIG_SCSI_PROC_FS=y | ||
451 | 488 | ||
452 | # | 489 | # |
453 | # Token Ring devices | 490 | # SCSI support type (disk, tape, CD-ROM) |
491 | # | ||
492 | CONFIG_BLK_DEV_SD=y | ||
493 | CONFIG_CHR_DEV_ST=m | ||
494 | CONFIG_CHR_DEV_OSST=m | ||
495 | CONFIG_BLK_DEV_SR=y | ||
496 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
497 | CONFIG_CHR_DEV_SG=m | ||
498 | # CONFIG_CHR_DEV_SCH is not set | ||
499 | |||
500 | # | ||
501 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
454 | # | 502 | # |
503 | # CONFIG_SCSI_MULTI_LUN is not set | ||
504 | CONFIG_SCSI_CONSTANTS=y | ||
505 | # CONFIG_SCSI_LOGGING is not set | ||
506 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
507 | CONFIG_SCSI_WAIT_SCAN=m | ||
455 | 508 | ||
456 | # | 509 | # |
457 | # Wireless LAN (non-hamradio) | 510 | # SCSI Transports |
458 | # | 511 | # |
459 | # CONFIG_NET_RADIO is not set | 512 | CONFIG_SCSI_SPI_ATTRS=y |
513 | # CONFIG_SCSI_FC_ATTRS is not set | ||
514 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
515 | CONFIG_SCSI_SAS_ATTRS=m | ||
516 | CONFIG_SCSI_SAS_LIBSAS=m | ||
517 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
518 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
519 | CONFIG_SCSI_SRP_ATTRS=m | ||
520 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
521 | CONFIG_SCSI_LOWLEVEL=y | ||
522 | CONFIG_ISCSI_TCP=m | ||
523 | # CONFIG_SCSI_DEBUG is not set | ||
524 | CONFIG_ATARI_SCSI=y | ||
525 | # CONFIG_ATARI_SCSI_TOSHIBA_DELAY is not set | ||
526 | # CONFIG_ATARI_SCSI_RESET_BOOT is not set | ||
527 | CONFIG_MD=y | ||
528 | CONFIG_BLK_DEV_MD=m | ||
529 | CONFIG_MD_LINEAR=m | ||
530 | CONFIG_MD_RAID0=m | ||
531 | CONFIG_MD_RAID1=m | ||
532 | # CONFIG_MD_RAID10 is not set | ||
533 | CONFIG_MD_RAID456=m | ||
534 | CONFIG_MD_RAID5_RESHAPE=y | ||
535 | CONFIG_MD_MULTIPATH=m | ||
536 | # CONFIG_MD_FAULTY is not set | ||
537 | CONFIG_BLK_DEV_DM=m | ||
538 | # CONFIG_DM_DEBUG is not set | ||
539 | CONFIG_DM_CRYPT=m | ||
540 | CONFIG_DM_SNAPSHOT=m | ||
541 | CONFIG_DM_MIRROR=m | ||
542 | CONFIG_DM_ZERO=m | ||
543 | CONFIG_DM_MULTIPATH=m | ||
544 | CONFIG_DM_MULTIPATH_EMC=m | ||
545 | CONFIG_DM_MULTIPATH_RDAC=m | ||
546 | CONFIG_DM_MULTIPATH_HP=m | ||
547 | # CONFIG_DM_DELAY is not set | ||
548 | CONFIG_DM_UEVENT=y | ||
549 | CONFIG_NETDEVICES=y | ||
550 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
551 | CONFIG_DUMMY=m | ||
552 | # CONFIG_BONDING is not set | ||
553 | CONFIG_MACVLAN=m | ||
554 | CONFIG_EQUALIZER=m | ||
555 | # CONFIG_TUN is not set | ||
556 | CONFIG_VETH=m | ||
557 | # CONFIG_PHYLIB is not set | ||
558 | CONFIG_NET_ETHERNET=y | ||
559 | CONFIG_MII=m | ||
560 | CONFIG_ATARILANCE=m | ||
561 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
562 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
563 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
564 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
565 | # CONFIG_B44 is not set | ||
566 | # CONFIG_NET_POCKET is not set | ||
567 | # CONFIG_NETDEV_1000 is not set | ||
568 | # CONFIG_NETDEV_10000 is not set | ||
460 | 569 | ||
461 | # | 570 | # |
462 | # Wan interfaces | 571 | # Wireless LAN |
463 | # | 572 | # |
573 | # CONFIG_WLAN_PRE80211 is not set | ||
574 | # CONFIG_WLAN_80211 is not set | ||
464 | # CONFIG_WAN is not set | 575 | # CONFIG_WAN is not set |
465 | # CONFIG_PLIP is not set | 576 | # CONFIG_PLIP is not set |
466 | CONFIG_PPP=m | 577 | CONFIG_PPP=m |
@@ -470,28 +581,28 @@ CONFIG_PPP_ASYNC=m | |||
470 | CONFIG_PPP_SYNC_TTY=m | 581 | CONFIG_PPP_SYNC_TTY=m |
471 | CONFIG_PPP_DEFLATE=m | 582 | CONFIG_PPP_DEFLATE=m |
472 | CONFIG_PPP_BSDCOMP=m | 583 | CONFIG_PPP_BSDCOMP=m |
584 | CONFIG_PPP_MPPE=m | ||
473 | CONFIG_PPPOE=m | 585 | CONFIG_PPPOE=m |
586 | CONFIG_PPPOL2TP=m | ||
474 | CONFIG_SLIP=m | 587 | CONFIG_SLIP=m |
475 | CONFIG_SLIP_COMPRESSED=y | 588 | CONFIG_SLIP_COMPRESSED=y |
589 | CONFIG_SLHC=m | ||
476 | CONFIG_SLIP_SMART=y | 590 | CONFIG_SLIP_SMART=y |
477 | CONFIG_SLIP_MODE_SLIP6=y | 591 | CONFIG_SLIP_MODE_SLIP6=y |
478 | CONFIG_SHAPER=m | ||
479 | CONFIG_NETCONSOLE=m | 592 | CONFIG_NETCONSOLE=m |
480 | 593 | CONFIG_NETCONSOLE_DYNAMIC=y | |
481 | # | 594 | CONFIG_NETPOLL=y |
482 | # ISDN subsystem | 595 | # CONFIG_NETPOLL_TRAP is not set |
483 | # | 596 | CONFIG_NET_POLL_CONTROLLER=y |
484 | # CONFIG_ISDN is not set | 597 | # CONFIG_ISDN is not set |
485 | |||
486 | # | ||
487 | # Telephony Support | ||
488 | # | ||
489 | # CONFIG_PHONE is not set | 598 | # CONFIG_PHONE is not set |
490 | 599 | ||
491 | # | 600 | # |
492 | # Input device support | 601 | # Input device support |
493 | # | 602 | # |
494 | CONFIG_INPUT=y | 603 | CONFIG_INPUT=y |
604 | CONFIG_INPUT_FF_MEMLESS=m | ||
605 | # CONFIG_INPUT_POLLDEV is not set | ||
495 | 606 | ||
496 | # | 607 | # |
497 | # Userland interfaces | 608 | # Userland interfaces |
@@ -501,7 +612,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
501 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 612 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
502 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 613 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
503 | # CONFIG_INPUT_JOYDEV is not set | 614 | # CONFIG_INPUT_JOYDEV is not set |
504 | # CONFIG_INPUT_TSDEV is not set | ||
505 | # CONFIG_INPUT_EVDEV is not set | 615 | # CONFIG_INPUT_EVDEV is not set |
506 | # CONFIG_INPUT_EVBUG is not set | 616 | # CONFIG_INPUT_EVBUG is not set |
507 | 617 | ||
@@ -509,26 +619,37 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
509 | # Input Device Drivers | 619 | # Input Device Drivers |
510 | # | 620 | # |
511 | CONFIG_INPUT_KEYBOARD=y | 621 | CONFIG_INPUT_KEYBOARD=y |
512 | CONFIG_KEYBOARD_ATKBD=y | 622 | # CONFIG_KEYBOARD_ATKBD is not set |
513 | # CONFIG_KEYBOARD_SUNKBD is not set | 623 | # CONFIG_KEYBOARD_SUNKBD is not set |
514 | # CONFIG_KEYBOARD_LKKBD is not set | 624 | # CONFIG_KEYBOARD_LKKBD is not set |
515 | # CONFIG_KEYBOARD_XTKBD is not set | 625 | # CONFIG_KEYBOARD_XTKBD is not set |
516 | # CONFIG_KEYBOARD_NEWTON is not set | 626 | # CONFIG_KEYBOARD_NEWTON is not set |
627 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
628 | CONFIG_ATARI_KBD_CORE=y | ||
629 | CONFIG_KEYBOARD_ATARI=y | ||
517 | CONFIG_INPUT_MOUSE=y | 630 | CONFIG_INPUT_MOUSE=y |
518 | CONFIG_MOUSE_PS2=y | 631 | CONFIG_MOUSE_PS2=y |
632 | CONFIG_MOUSE_PS2_ALPS=y | ||
633 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
634 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
635 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
636 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
637 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
519 | # CONFIG_MOUSE_SERIAL is not set | 638 | # CONFIG_MOUSE_SERIAL is not set |
639 | CONFIG_MOUSE_ATARI=m | ||
520 | # CONFIG_MOUSE_VSXXXAA is not set | 640 | # CONFIG_MOUSE_VSXXXAA is not set |
521 | # CONFIG_INPUT_JOYSTICK is not set | 641 | # CONFIG_INPUT_JOYSTICK is not set |
642 | # CONFIG_INPUT_TABLET is not set | ||
522 | # CONFIG_INPUT_TOUCHSCREEN is not set | 643 | # CONFIG_INPUT_TOUCHSCREEN is not set |
523 | CONFIG_INPUT_MISC=y | 644 | CONFIG_INPUT_MISC=y |
524 | CONFIG_INPUT_M68K_BEEP=m | 645 | CONFIG_INPUT_M68K_BEEP=m |
525 | CONFIG_INPUT_UINPUT=m | 646 | # CONFIG_INPUT_UINPUT is not set |
526 | 647 | ||
527 | # | 648 | # |
528 | # Hardware I/O ports | 649 | # Hardware I/O ports |
529 | # | 650 | # |
530 | CONFIG_SERIO=y | 651 | CONFIG_SERIO=y |
531 | CONFIG_SERIO_SERPORT=y | 652 | # CONFIG_SERIO_SERPORT is not set |
532 | # CONFIG_SERIO_PARKBD is not set | 653 | # CONFIG_SERIO_PARKBD is not set |
533 | CONFIG_SERIO_LIBPS2=y | 654 | CONFIG_SERIO_LIBPS2=y |
534 | # CONFIG_SERIO_RAW is not set | 655 | # CONFIG_SERIO_RAW is not set |
@@ -540,6 +661,7 @@ CONFIG_SERIO_LIBPS2=y | |||
540 | CONFIG_VT=y | 661 | CONFIG_VT=y |
541 | CONFIG_VT_CONSOLE=y | 662 | CONFIG_VT_CONSOLE=y |
542 | CONFIG_HW_CONSOLE=y | 663 | CONFIG_HW_CONSOLE=y |
664 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
543 | # CONFIG_SERIAL_NONSTANDARD is not set | 665 | # CONFIG_SERIAL_NONSTANDARD is not set |
544 | 666 | ||
545 | # | 667 | # |
@@ -556,86 +678,97 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
556 | CONFIG_PRINTER=m | 678 | CONFIG_PRINTER=m |
557 | # CONFIG_LP_CONSOLE is not set | 679 | # CONFIG_LP_CONSOLE is not set |
558 | # CONFIG_PPDEV is not set | 680 | # CONFIG_PPDEV is not set |
559 | # CONFIG_TIPAR is not set | ||
560 | |||
561 | # | ||
562 | # IPMI | ||
563 | # | ||
564 | # CONFIG_IPMI_HANDLER is not set | 681 | # CONFIG_IPMI_HANDLER is not set |
565 | 682 | # CONFIG_HW_RANDOM is not set | |
566 | # | ||
567 | # Watchdog Cards | ||
568 | # | ||
569 | # CONFIG_WATCHDOG is not set | ||
570 | CONFIG_NVRAM=y | 683 | CONFIG_NVRAM=y |
571 | CONFIG_GEN_RTC=y | 684 | CONFIG_GEN_RTC=m |
572 | CONFIG_GEN_RTC_X=y | 685 | CONFIG_GEN_RTC_X=y |
573 | # CONFIG_DTLK is not set | ||
574 | # CONFIG_R3964 is not set | 686 | # CONFIG_R3964 is not set |
575 | |||
576 | # | ||
577 | # Ftape, the floppy tape device driver | ||
578 | # | ||
579 | # CONFIG_DRM is not set | ||
580 | # CONFIG_RAW_DRIVER is not set | 687 | # CONFIG_RAW_DRIVER is not set |
581 | 688 | # CONFIG_TCG_TPM is not set | |
582 | # | ||
583 | # TPM devices | ||
584 | # | ||
585 | |||
586 | # | ||
587 | # I2C support | ||
588 | # | ||
589 | # CONFIG_I2C is not set | 689 | # CONFIG_I2C is not set |
590 | 690 | ||
591 | # | 691 | # |
592 | # Dallas's 1-wire bus | 692 | # SPI support |
593 | # | 693 | # |
694 | # CONFIG_SPI is not set | ||
695 | # CONFIG_SPI_MASTER is not set | ||
594 | # CONFIG_W1 is not set | 696 | # CONFIG_W1 is not set |
697 | # CONFIG_POWER_SUPPLY is not set | ||
698 | # CONFIG_HWMON is not set | ||
699 | # CONFIG_THERMAL is not set | ||
700 | # CONFIG_WATCHDOG is not set | ||
595 | 701 | ||
596 | # | 702 | # |
597 | # Misc devices | 703 | # Sonics Silicon Backplane |
598 | # | 704 | # |
705 | CONFIG_SSB_POSSIBLE=y | ||
706 | # CONFIG_SSB is not set | ||
599 | 707 | ||
600 | # | 708 | # |
601 | # Multimedia devices | 709 | # Multifunction device drivers |
602 | # | 710 | # |
603 | # CONFIG_VIDEO_DEV is not set | 711 | # CONFIG_MFD_SM501 is not set |
604 | 712 | ||
605 | # | 713 | # |
606 | # Digital Video Broadcasting Devices | 714 | # Multimedia devices |
607 | # | 715 | # |
608 | # CONFIG_DVB is not set | 716 | # CONFIG_VIDEO_DEV is not set |
717 | # CONFIG_DVB_CORE is not set | ||
718 | # CONFIG_DAB is not set | ||
609 | 719 | ||
610 | # | 720 | # |
611 | # Graphics support | 721 | # Graphics support |
612 | # | 722 | # |
723 | # CONFIG_VGASTATE is not set | ||
724 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
613 | CONFIG_FB=y | 725 | CONFIG_FB=y |
614 | # CONFIG_FB_CFB_FILLRECT is not set | 726 | # CONFIG_FIRMWARE_EDID is not set |
615 | # CONFIG_FB_CFB_COPYAREA is not set | 727 | # CONFIG_FB_DDC is not set |
616 | # CONFIG_FB_CFB_IMAGEBLIT is not set | 728 | CONFIG_FB_CFB_FILLRECT=y |
617 | # CONFIG_FB_SOFT_CURSOR is not set | 729 | CONFIG_FB_CFB_COPYAREA=y |
730 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
731 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
732 | # CONFIG_FB_SYS_FILLRECT is not set | ||
733 | # CONFIG_FB_SYS_COPYAREA is not set | ||
734 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
735 | # CONFIG_FB_SYS_FOPS is not set | ||
736 | CONFIG_FB_DEFERRED_IO=y | ||
737 | # CONFIG_FB_SVGALIB is not set | ||
618 | # CONFIG_FB_MACMODES is not set | 738 | # CONFIG_FB_MACMODES is not set |
619 | CONFIG_FB_MODE_HELPERS=y | 739 | # CONFIG_FB_BACKLIGHT is not set |
740 | # CONFIG_FB_MODE_HELPERS is not set | ||
620 | # CONFIG_FB_TILEBLITTING is not set | 741 | # CONFIG_FB_TILEBLITTING is not set |
621 | # CONFIG_FB_ATY is not set | 742 | |
743 | # | ||
744 | # Frame buffer hardware drivers | ||
745 | # | ||
746 | CONFIG_FB_ATARI=y | ||
747 | # CONFIG_FB_UVESA is not set | ||
622 | # CONFIG_FB_S1D13XXX is not set | 748 | # CONFIG_FB_S1D13XXX is not set |
749 | # CONFIG_FB_ATY is not set | ||
623 | # CONFIG_FB_VIRTUAL is not set | 750 | # CONFIG_FB_VIRTUAL is not set |
751 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
752 | |||
753 | # | ||
754 | # Display device support | ||
755 | # | ||
756 | # CONFIG_DISPLAY_SUPPORT is not set | ||
624 | 757 | ||
625 | # | 758 | # |
626 | # Console display driver support | 759 | # Console display driver support |
627 | # | 760 | # |
628 | CONFIG_DUMMY_CONSOLE=y | 761 | CONFIG_DUMMY_CONSOLE=y |
629 | CONFIG_FRAMEBUFFER_CONSOLE=y | 762 | CONFIG_FRAMEBUFFER_CONSOLE=y |
763 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
764 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
630 | # CONFIG_FONTS is not set | 765 | # CONFIG_FONTS is not set |
631 | CONFIG_FONT_8x8=y | 766 | CONFIG_FONT_8x8=y |
632 | CONFIG_FONT_8x16=y | 767 | CONFIG_FONT_8x16=y |
633 | 768 | CONFIG_LOGO=y | |
634 | # | 769 | CONFIG_LOGO_LINUX_MONO=y |
635 | # Logo configuration | 770 | CONFIG_LOGO_LINUX_VGA16=y |
636 | # | 771 | CONFIG_LOGO_LINUX_CLUT224=y |
637 | # CONFIG_LOGO is not set | ||
638 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
639 | 772 | ||
640 | # | 773 | # |
641 | # Sound | 774 | # Sound |
@@ -643,27 +776,21 @@ CONFIG_FONT_8x16=y | |||
643 | CONFIG_SOUND=m | 776 | CONFIG_SOUND=m |
644 | CONFIG_DMASOUND_ATARI=m | 777 | CONFIG_DMASOUND_ATARI=m |
645 | CONFIG_DMASOUND=m | 778 | CONFIG_DMASOUND=m |
646 | 779 | CONFIG_HID_SUPPORT=y | |
647 | # | 780 | CONFIG_HID=m |
648 | # USB support | 781 | # CONFIG_HID_DEBUG is not set |
649 | # | 782 | CONFIG_HIDRAW=y |
650 | # CONFIG_USB_ARCH_HAS_HCD is not set | 783 | # CONFIG_USB_SUPPORT is not set |
651 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
652 | |||
653 | # | ||
654 | # USB Gadget Support | ||
655 | # | ||
656 | # CONFIG_USB_GADGET is not set | ||
657 | |||
658 | # | ||
659 | # MMC/SD Card support | ||
660 | # | ||
661 | # CONFIG_MMC is not set | 784 | # CONFIG_MMC is not set |
785 | # CONFIG_MEMSTICK is not set | ||
786 | # CONFIG_NEW_LEDS is not set | ||
787 | # CONFIG_RTC_CLASS is not set | ||
788 | # CONFIG_AUXDISPLAY is not set | ||
662 | 789 | ||
663 | # | 790 | # |
664 | # InfiniBand support | 791 | # Userspace I/O |
665 | # | 792 | # |
666 | # CONFIG_INFINIBAND is not set | 793 | # CONFIG_UIO is not set |
667 | 794 | ||
668 | # | 795 | # |
669 | # Character devices | 796 | # Character devices |
@@ -680,38 +807,44 @@ CONFIG_ATARI_DSP56K=m | |||
680 | # | 807 | # |
681 | CONFIG_EXT2_FS=y | 808 | CONFIG_EXT2_FS=y |
682 | # CONFIG_EXT2_FS_XATTR is not set | 809 | # CONFIG_EXT2_FS_XATTR is not set |
810 | # CONFIG_EXT2_FS_XIP is not set | ||
683 | CONFIG_EXT3_FS=y | 811 | CONFIG_EXT3_FS=y |
684 | # CONFIG_EXT3_FS_XATTR is not set | 812 | # CONFIG_EXT3_FS_XATTR is not set |
813 | # CONFIG_EXT4DEV_FS is not set | ||
685 | CONFIG_JBD=y | 814 | CONFIG_JBD=y |
686 | # CONFIG_JBD_DEBUG is not set | ||
687 | CONFIG_REISERFS_FS=m | 815 | CONFIG_REISERFS_FS=m |
688 | # CONFIG_REISERFS_CHECK is not set | 816 | # CONFIG_REISERFS_CHECK is not set |
689 | CONFIG_REISERFS_PROC_INFO=y | 817 | # CONFIG_REISERFS_PROC_INFO is not set |
690 | # CONFIG_REISERFS_FS_XATTR is not set | 818 | # CONFIG_REISERFS_FS_XATTR is not set |
691 | CONFIG_JFS_FS=m | 819 | CONFIG_JFS_FS=m |
692 | # CONFIG_JFS_POSIX_ACL is not set | 820 | # CONFIG_JFS_POSIX_ACL is not set |
693 | # CONFIG_JFS_SECURITY is not set | 821 | # CONFIG_JFS_SECURITY is not set |
694 | # CONFIG_JFS_DEBUG is not set | 822 | # CONFIG_JFS_DEBUG is not set |
695 | # CONFIG_JFS_STATISTICS is not set | 823 | # CONFIG_JFS_STATISTICS is not set |
696 | 824 | CONFIG_FS_POSIX_ACL=y | |
697 | # | ||
698 | # XFS support | ||
699 | # | ||
700 | CONFIG_XFS_FS=m | 825 | CONFIG_XFS_FS=m |
701 | CONFIG_XFS_EXPORT=y | ||
702 | # CONFIG_XFS_RT is not set | ||
703 | # CONFIG_XFS_QUOTA is not set | 826 | # CONFIG_XFS_QUOTA is not set |
704 | # CONFIG_XFS_SECURITY is not set | 827 | # CONFIG_XFS_SECURITY is not set |
705 | # CONFIG_XFS_POSIX_ACL is not set | 828 | # CONFIG_XFS_POSIX_ACL is not set |
706 | CONFIG_MINIX_FS=y | 829 | # CONFIG_XFS_RT is not set |
707 | # CONFIG_ROMFS_FS is not set | 830 | CONFIG_GFS2_FS=m |
831 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
832 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
833 | CONFIG_OCFS2_FS=m | ||
834 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
835 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
836 | CONFIG_DNOTIFY=y | ||
837 | CONFIG_INOTIFY=y | ||
838 | CONFIG_INOTIFY_USER=y | ||
708 | CONFIG_QUOTA=y | 839 | CONFIG_QUOTA=y |
840 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
841 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
709 | # CONFIG_QFMT_V1 is not set | 842 | # CONFIG_QFMT_V1 is not set |
710 | # CONFIG_QFMT_V2 is not set | 843 | # CONFIG_QFMT_V2 is not set |
711 | CONFIG_QUOTACTL=y | 844 | CONFIG_QUOTACTL=y |
712 | CONFIG_DNOTIFY=y | ||
713 | CONFIG_AUTOFS_FS=m | 845 | CONFIG_AUTOFS_FS=m |
714 | CONFIG_AUTOFS4_FS=m | 846 | CONFIG_AUTOFS4_FS=m |
847 | CONFIG_FUSE_FS=m | ||
715 | 848 | ||
716 | # | 849 | # |
717 | # CD-ROM/DVD Filesystems | 850 | # CD-ROM/DVD Filesystems |
@@ -719,7 +852,6 @@ CONFIG_AUTOFS4_FS=m | |||
719 | CONFIG_ISO9660_FS=y | 852 | CONFIG_ISO9660_FS=y |
720 | CONFIG_JOLIET=y | 853 | CONFIG_JOLIET=y |
721 | CONFIG_ZISOFS=y | 854 | CONFIG_ZISOFS=y |
722 | CONFIG_ZISOFS_FS=y | ||
723 | CONFIG_UDF_FS=m | 855 | CONFIG_UDF_FS=m |
724 | CONFIG_UDF_NLS=y | 856 | CONFIG_UDF_NLS=y |
725 | 857 | ||
@@ -738,13 +870,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
738 | # | 870 | # |
739 | CONFIG_PROC_FS=y | 871 | CONFIG_PROC_FS=y |
740 | CONFIG_PROC_KCORE=y | 872 | CONFIG_PROC_KCORE=y |
873 | CONFIG_PROC_SYSCTL=y | ||
741 | CONFIG_SYSFS=y | 874 | CONFIG_SYSFS=y |
742 | # CONFIG_DEVFS_FS is not set | ||
743 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
744 | CONFIG_TMPFS=y | 875 | CONFIG_TMPFS=y |
745 | # CONFIG_TMPFS_XATTR is not set | 876 | # CONFIG_TMPFS_POSIX_ACL is not set |
746 | # CONFIG_HUGETLB_PAGE is not set | 877 | # CONFIG_HUGETLB_PAGE is not set |
747 | CONFIG_RAMFS=y | 878 | CONFIG_CONFIGFS_FS=m |
748 | 879 | ||
749 | # | 880 | # |
750 | # Miscellaneous filesystems | 881 | # Miscellaneous filesystems |
@@ -758,42 +889,38 @@ CONFIG_HFSPLUS_FS=m | |||
758 | # CONFIG_EFS_FS is not set | 889 | # CONFIG_EFS_FS is not set |
759 | CONFIG_CRAMFS=m | 890 | CONFIG_CRAMFS=m |
760 | # CONFIG_VXFS_FS is not set | 891 | # CONFIG_VXFS_FS is not set |
892 | CONFIG_MINIX_FS=y | ||
761 | CONFIG_HPFS_FS=m | 893 | CONFIG_HPFS_FS=m |
762 | # CONFIG_QNX4FS_FS is not set | 894 | # CONFIG_QNX4FS_FS is not set |
895 | # CONFIG_ROMFS_FS is not set | ||
763 | CONFIG_SYSV_FS=m | 896 | CONFIG_SYSV_FS=m |
764 | CONFIG_UFS_FS=m | 897 | CONFIG_UFS_FS=m |
765 | # CONFIG_UFS_FS_WRITE is not set | 898 | # CONFIG_UFS_FS_WRITE is not set |
766 | 899 | # CONFIG_UFS_DEBUG is not set | |
767 | # | 900 | CONFIG_NETWORK_FILESYSTEMS=y |
768 | # Network File Systems | ||
769 | # | ||
770 | CONFIG_NFS_FS=m | 901 | CONFIG_NFS_FS=m |
771 | CONFIG_NFS_V3=y | 902 | CONFIG_NFS_V3=y |
903 | # CONFIG_NFS_V3_ACL is not set | ||
772 | # CONFIG_NFS_V4 is not set | 904 | # CONFIG_NFS_V4 is not set |
773 | # CONFIG_NFS_DIRECTIO is not set | 905 | # CONFIG_NFS_DIRECTIO is not set |
774 | CONFIG_NFSD=m | 906 | CONFIG_NFSD=m |
775 | CONFIG_NFSD_V3=y | 907 | CONFIG_NFSD_V3=y |
908 | # CONFIG_NFSD_V3_ACL is not set | ||
776 | # CONFIG_NFSD_V4 is not set | 909 | # CONFIG_NFSD_V4 is not set |
777 | CONFIG_NFSD_TCP=y | 910 | CONFIG_NFSD_TCP=y |
778 | CONFIG_LOCKD=m | 911 | CONFIG_LOCKD=m |
779 | CONFIG_LOCKD_V4=y | 912 | CONFIG_LOCKD_V4=y |
780 | CONFIG_EXPORTFS=m | 913 | CONFIG_EXPORTFS=m |
914 | CONFIG_NFS_COMMON=y | ||
781 | CONFIG_SUNRPC=m | 915 | CONFIG_SUNRPC=m |
916 | CONFIG_SUNRPC_BIND34=y | ||
782 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 917 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
783 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 918 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
784 | CONFIG_SMB_FS=m | 919 | CONFIG_SMB_FS=m |
785 | CONFIG_SMB_NLS_DEFAULT=y | 920 | CONFIG_SMB_NLS_DEFAULT=y |
786 | CONFIG_SMB_NLS_REMOTE="cp437" | 921 | CONFIG_SMB_NLS_REMOTE="cp437" |
787 | # CONFIG_CIFS is not set | 922 | # CONFIG_CIFS is not set |
788 | CONFIG_NCP_FS=m | 923 | # CONFIG_NCP_FS is not set |
789 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
790 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
791 | # CONFIG_NCPFS_STRONG is not set | ||
792 | CONFIG_NCPFS_NFS_NS=y | ||
793 | CONFIG_NCPFS_OS2_NS=y | ||
794 | # CONFIG_NCPFS_SMALLDOS is not set | ||
795 | CONFIG_NCPFS_NLS=y | ||
796 | # CONFIG_NCPFS_EXTRAS is not set | ||
797 | CONFIG_CODA_FS=m | 924 | CONFIG_CODA_FS=m |
798 | # CONFIG_CODA_FS_OLD_API is not set | 925 | # CONFIG_CODA_FS_OLD_API is not set |
799 | # CONFIG_AFS_FS is not set | 926 | # CONFIG_AFS_FS is not set |
@@ -804,10 +931,6 @@ CONFIG_CODA_FS=m | |||
804 | # CONFIG_PARTITION_ADVANCED is not set | 931 | # CONFIG_PARTITION_ADVANCED is not set |
805 | CONFIG_ATARI_PARTITION=y | 932 | CONFIG_ATARI_PARTITION=y |
806 | CONFIG_MSDOS_PARTITION=y | 933 | CONFIG_MSDOS_PARTITION=y |
807 | |||
808 | # | ||
809 | # Native Language Support | ||
810 | # | ||
811 | CONFIG_NLS=y | 934 | CONFIG_NLS=y |
812 | CONFIG_NLS_DEFAULT="iso8859-1" | 935 | CONFIG_NLS_DEFAULT="iso8859-1" |
813 | CONFIG_NLS_CODEPAGE_437=y | 936 | CONFIG_NLS_CODEPAGE_437=y |
@@ -848,35 +971,42 @@ CONFIG_NLS_ISO8859_15=m | |||
848 | CONFIG_NLS_KOI8_R=m | 971 | CONFIG_NLS_KOI8_R=m |
849 | CONFIG_NLS_KOI8_U=m | 972 | CONFIG_NLS_KOI8_U=m |
850 | CONFIG_NLS_UTF8=m | 973 | CONFIG_NLS_UTF8=m |
974 | CONFIG_DLM=m | ||
975 | # CONFIG_DLM_DEBUG is not set | ||
851 | 976 | ||
852 | # | 977 | # |
853 | # Kernel hacking | 978 | # Kernel hacking |
854 | # | 979 | # |
855 | # CONFIG_PRINTK_TIME is not set | 980 | # CONFIG_PRINTK_TIME is not set |
856 | CONFIG_DEBUG_KERNEL=y | 981 | CONFIG_ENABLE_WARN_DEPRECATED=y |
982 | CONFIG_ENABLE_MUST_CHECK=y | ||
857 | CONFIG_MAGIC_SYSRQ=y | 983 | CONFIG_MAGIC_SYSRQ=y |
858 | CONFIG_LOG_BUF_SHIFT=16 | 984 | # CONFIG_UNUSED_SYMBOLS is not set |
859 | # CONFIG_SCHEDSTATS is not set | ||
860 | # CONFIG_DEBUG_SLAB is not set | ||
861 | # CONFIG_DEBUG_SPINLOCK is not set | ||
862 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
863 | # CONFIG_DEBUG_KOBJECT is not set | ||
864 | CONFIG_DEBUG_BUGVERBOSE=y | ||
865 | # CONFIG_DEBUG_INFO is not set | ||
866 | # CONFIG_DEBUG_FS is not set | 985 | # CONFIG_DEBUG_FS is not set |
867 | # CONFIG_FRAME_POINTER is not set | 986 | # CONFIG_HEADERS_CHECK is not set |
987 | # CONFIG_DEBUG_KERNEL is not set | ||
988 | CONFIG_DEBUG_BUGVERBOSE=y | ||
989 | # CONFIG_SAMPLES is not set | ||
868 | 990 | ||
869 | # | 991 | # |
870 | # Security options | 992 | # Security options |
871 | # | 993 | # |
872 | # CONFIG_KEYS is not set | 994 | # CONFIG_KEYS is not set |
873 | # CONFIG_SECURITY is not set | 995 | # CONFIG_SECURITY is not set |
874 | 996 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
875 | # | 997 | CONFIG_XOR_BLOCKS=m |
876 | # Cryptographic options | 998 | CONFIG_ASYNC_CORE=m |
877 | # | 999 | CONFIG_ASYNC_MEMCPY=m |
1000 | CONFIG_ASYNC_XOR=m | ||
878 | CONFIG_CRYPTO=y | 1001 | CONFIG_CRYPTO=y |
1002 | CONFIG_CRYPTO_ALGAPI=y | ||
1003 | CONFIG_CRYPTO_AEAD=m | ||
1004 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1005 | CONFIG_CRYPTO_SEQIV=m | ||
1006 | CONFIG_CRYPTO_HASH=y | ||
1007 | CONFIG_CRYPTO_MANAGER=y | ||
879 | CONFIG_CRYPTO_HMAC=y | 1008 | CONFIG_CRYPTO_HMAC=y |
1009 | CONFIG_CRYPTO_XCBC=m | ||
880 | CONFIG_CRYPTO_NULL=m | 1010 | CONFIG_CRYPTO_NULL=m |
881 | CONFIG_CRYPTO_MD4=m | 1011 | CONFIG_CRYPTO_MD4=m |
882 | CONFIG_CRYPTO_MD5=m | 1012 | CONFIG_CRYPTO_MD5=m |
@@ -885,9 +1015,21 @@ CONFIG_CRYPTO_SHA256=m | |||
885 | CONFIG_CRYPTO_SHA512=m | 1015 | CONFIG_CRYPTO_SHA512=m |
886 | CONFIG_CRYPTO_WP512=m | 1016 | CONFIG_CRYPTO_WP512=m |
887 | CONFIG_CRYPTO_TGR192=m | 1017 | CONFIG_CRYPTO_TGR192=m |
1018 | CONFIG_CRYPTO_GF128MUL=m | ||
1019 | CONFIG_CRYPTO_ECB=m | ||
1020 | CONFIG_CRYPTO_CBC=m | ||
1021 | CONFIG_CRYPTO_PCBC=m | ||
1022 | CONFIG_CRYPTO_LRW=m | ||
1023 | CONFIG_CRYPTO_XTS=m | ||
1024 | CONFIG_CRYPTO_CTR=m | ||
1025 | CONFIG_CRYPTO_GCM=m | ||
1026 | CONFIG_CRYPTO_CCM=m | ||
1027 | CONFIG_CRYPTO_CRYPTD=m | ||
888 | CONFIG_CRYPTO_DES=m | 1028 | CONFIG_CRYPTO_DES=m |
1029 | CONFIG_CRYPTO_FCRYPT=m | ||
889 | CONFIG_CRYPTO_BLOWFISH=m | 1030 | CONFIG_CRYPTO_BLOWFISH=m |
890 | CONFIG_CRYPTO_TWOFISH=m | 1031 | CONFIG_CRYPTO_TWOFISH=m |
1032 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
891 | CONFIG_CRYPTO_SERPENT=m | 1033 | CONFIG_CRYPTO_SERPENT=m |
892 | CONFIG_CRYPTO_AES=m | 1034 | CONFIG_CRYPTO_AES=m |
893 | CONFIG_CRYPTO_CAST5=m | 1035 | CONFIG_CRYPTO_CAST5=m |
@@ -896,20 +1038,35 @@ CONFIG_CRYPTO_TEA=m | |||
896 | CONFIG_CRYPTO_ARC4=m | 1038 | CONFIG_CRYPTO_ARC4=m |
897 | CONFIG_CRYPTO_KHAZAD=m | 1039 | CONFIG_CRYPTO_KHAZAD=m |
898 | CONFIG_CRYPTO_ANUBIS=m | 1040 | CONFIG_CRYPTO_ANUBIS=m |
1041 | CONFIG_CRYPTO_SEED=m | ||
1042 | CONFIG_CRYPTO_SALSA20=m | ||
899 | CONFIG_CRYPTO_DEFLATE=m | 1043 | CONFIG_CRYPTO_DEFLATE=m |
900 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1044 | CONFIG_CRYPTO_MICHAEL_MIC=m |
901 | CONFIG_CRYPTO_CRC32C=m | 1045 | CONFIG_CRYPTO_CRC32C=m |
1046 | CONFIG_CRYPTO_CAMELLIA=m | ||
902 | CONFIG_CRYPTO_TEST=m | 1047 | CONFIG_CRYPTO_TEST=m |
903 | 1048 | CONFIG_CRYPTO_AUTHENC=m | |
904 | # | 1049 | CONFIG_CRYPTO_LZO=m |
905 | # Hardware crypto devices | 1050 | # CONFIG_CRYPTO_HW is not set |
906 | # | ||
907 | 1051 | ||
908 | # | 1052 | # |
909 | # Library routines | 1053 | # Library routines |
910 | # | 1054 | # |
1055 | CONFIG_BITREVERSE=y | ||
911 | CONFIG_CRC_CCITT=m | 1056 | CONFIG_CRC_CCITT=m |
1057 | CONFIG_CRC16=y | ||
1058 | # CONFIG_CRC_ITU_T is not set | ||
912 | CONFIG_CRC32=y | 1059 | CONFIG_CRC32=y |
1060 | # CONFIG_CRC7 is not set | ||
913 | CONFIG_LIBCRC32C=m | 1061 | CONFIG_LIBCRC32C=m |
914 | CONFIG_ZLIB_INFLATE=y | 1062 | CONFIG_ZLIB_INFLATE=y |
915 | CONFIG_ZLIB_DEFLATE=m | 1063 | CONFIG_ZLIB_DEFLATE=m |
1064 | CONFIG_LZO_COMPRESS=m | ||
1065 | CONFIG_LZO_DECOMPRESS=m | ||
1066 | CONFIG_TEXTSEARCH=y | ||
1067 | CONFIG_TEXTSEARCH_KMP=m | ||
1068 | CONFIG_TEXTSEARCH_BM=m | ||
1069 | CONFIG_TEXTSEARCH_FSM=m | ||
1070 | CONFIG_PLIST=y | ||
1071 | CONFIG_HAS_IOMEM=y | ||
1072 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig index da2a23a21463..ed98eff708c4 100644 --- a/arch/m68k/configs/bvme6000_defconfig +++ b/arch/m68k/configs/bvme6000_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:37 2005 | 4 | # Wed Apr 2 20:46:10 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-bvme6000" | 27 | CONFIG_LOCALVERSION="-bvme6000" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -85,6 +133,22 @@ CONFIG_M68060=y | |||
85 | CONFIG_MMU_MOTOROLA=y | 133 | CONFIG_MMU_MOTOROLA=y |
86 | # CONFIG_M68KFPU_EMU is not set | 134 | # CONFIG_M68KFPU_EMU is not set |
87 | # CONFIG_ADVANCED is not set | 135 | # CONFIG_ADVANCED is not set |
136 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
137 | CONFIG_NODES_SHIFT=3 | ||
138 | CONFIG_SELECT_MEMORY_MODEL=y | ||
139 | # CONFIG_FLATMEM_MANUAL is not set | ||
140 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
141 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
142 | CONFIG_DISCONTIGMEM=y | ||
143 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
144 | CONFIG_NEED_MULTIPLE_NODES=y | ||
145 | # CONFIG_SPARSEMEM_STATIC is not set | ||
146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
148 | # CONFIG_RESOURCES_64BIT is not set | ||
149 | CONFIG_ZONE_DMA_FLAG=1 | ||
150 | CONFIG_BOUNCE=y | ||
151 | CONFIG_VIRT_TO_BUS=y | ||
88 | 152 | ||
89 | # | 153 | # |
90 | # General setup | 154 | # General setup |
@@ -93,134 +157,11 @@ CONFIG_BINFMT_ELF=y | |||
93 | CONFIG_BINFMT_AOUT=m | 157 | CONFIG_BINFMT_AOUT=m |
94 | CONFIG_BINFMT_MISC=m | 158 | CONFIG_BINFMT_MISC=m |
95 | CONFIG_PROC_HARDWARE=y | 159 | CONFIG_PROC_HARDWARE=y |
160 | CONFIG_ZONE_DMA=y | ||
161 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
96 | 162 | ||
97 | # | 163 | # |
98 | # Device Drivers | 164 | # Networking |
99 | # | ||
100 | |||
101 | # | ||
102 | # Generic Driver Options | ||
103 | # | ||
104 | CONFIG_STANDALONE=y | ||
105 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
106 | CONFIG_FW_LOADER=m | ||
107 | # CONFIG_DEBUG_DRIVER is not set | ||
108 | |||
109 | # | ||
110 | # Memory Technology Devices (MTD) | ||
111 | # | ||
112 | # CONFIG_MTD is not set | ||
113 | |||
114 | # | ||
115 | # Parallel port support | ||
116 | # | ||
117 | # CONFIG_PARPORT is not set | ||
118 | |||
119 | # | ||
120 | # Plug and Play support | ||
121 | # | ||
122 | |||
123 | # | ||
124 | # Block devices | ||
125 | # | ||
126 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
127 | CONFIG_BLK_DEV_LOOP=y | ||
128 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
129 | CONFIG_BLK_DEV_NBD=m | ||
130 | CONFIG_BLK_DEV_RAM=y | ||
131 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
132 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
133 | CONFIG_BLK_DEV_INITRD=y | ||
134 | CONFIG_INITRAMFS_SOURCE="" | ||
135 | CONFIG_CDROM_PKTCDVD=m | ||
136 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
137 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
138 | |||
139 | # | ||
140 | # IO Schedulers | ||
141 | # | ||
142 | CONFIG_IOSCHED_NOOP=y | ||
143 | CONFIG_IOSCHED_AS=y | ||
144 | CONFIG_IOSCHED_DEADLINE=y | ||
145 | CONFIG_IOSCHED_CFQ=y | ||
146 | CONFIG_ATA_OVER_ETH=m | ||
147 | |||
148 | # | ||
149 | # ATA/ATAPI/MFM/RLL support | ||
150 | # | ||
151 | # CONFIG_IDE is not set | ||
152 | |||
153 | # | ||
154 | # SCSI device support | ||
155 | # | ||
156 | CONFIG_SCSI=y | ||
157 | CONFIG_SCSI_PROC_FS=y | ||
158 | |||
159 | # | ||
160 | # SCSI support type (disk, tape, CD-ROM) | ||
161 | # | ||
162 | CONFIG_BLK_DEV_SD=y | ||
163 | CONFIG_CHR_DEV_ST=m | ||
164 | # CONFIG_CHR_DEV_OSST is not set | ||
165 | CONFIG_BLK_DEV_SR=y | ||
166 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
167 | CONFIG_CHR_DEV_SG=m | ||
168 | |||
169 | # | ||
170 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
171 | # | ||
172 | # CONFIG_SCSI_MULTI_LUN is not set | ||
173 | CONFIG_SCSI_CONSTANTS=y | ||
174 | # CONFIG_SCSI_LOGGING is not set | ||
175 | |||
176 | # | ||
177 | # SCSI Transport Attributes | ||
178 | # | ||
179 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
180 | # CONFIG_SCSI_FC_ATTRS is not set | ||
181 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
182 | |||
183 | # | ||
184 | # SCSI low-level drivers | ||
185 | # | ||
186 | # CONFIG_SCSI_SATA is not set | ||
187 | # CONFIG_SCSI_DEBUG is not set | ||
188 | |||
189 | # | ||
190 | # Multi-device support (RAID and LVM) | ||
191 | # | ||
192 | CONFIG_MD=y | ||
193 | CONFIG_BLK_DEV_MD=m | ||
194 | CONFIG_MD_LINEAR=m | ||
195 | CONFIG_MD_RAID0=m | ||
196 | CONFIG_MD_RAID1=m | ||
197 | # CONFIG_MD_RAID10 is not set | ||
198 | CONFIG_MD_RAID5=m | ||
199 | CONFIG_MD_RAID6=m | ||
200 | CONFIG_MD_MULTIPATH=m | ||
201 | # CONFIG_MD_FAULTY is not set | ||
202 | CONFIG_BLK_DEV_DM=m | ||
203 | CONFIG_DM_CRYPT=m | ||
204 | CONFIG_DM_SNAPSHOT=m | ||
205 | CONFIG_DM_MIRROR=m | ||
206 | CONFIG_DM_ZERO=m | ||
207 | CONFIG_DM_MULTIPATH=m | ||
208 | CONFIG_DM_MULTIPATH_EMC=m | ||
209 | |||
210 | # | ||
211 | # Fusion MPT device support | ||
212 | # | ||
213 | |||
214 | # | ||
215 | # IEEE 1394 (FireWire) support | ||
216 | # | ||
217 | |||
218 | # | ||
219 | # I2O device support | ||
220 | # | ||
221 | |||
222 | # | ||
223 | # Networking support | ||
224 | # | 165 | # |
225 | CONFIG_NET=y | 166 | CONFIG_NET=y |
226 | 167 | ||
@@ -230,10 +171,17 @@ CONFIG_NET=y | |||
230 | CONFIG_PACKET=y | 171 | CONFIG_PACKET=y |
231 | # CONFIG_PACKET_MMAP is not set | 172 | # CONFIG_PACKET_MMAP is not set |
232 | CONFIG_UNIX=y | 173 | CONFIG_UNIX=y |
174 | CONFIG_XFRM=y | ||
175 | # CONFIG_XFRM_USER is not set | ||
176 | # CONFIG_XFRM_SUB_POLICY is not set | ||
177 | CONFIG_XFRM_MIGRATE=y | ||
178 | # CONFIG_XFRM_STATISTICS is not set | ||
233 | CONFIG_NET_KEY=y | 179 | CONFIG_NET_KEY=y |
180 | CONFIG_NET_KEY_MIGRATE=y | ||
234 | CONFIG_INET=y | 181 | CONFIG_INET=y |
235 | # CONFIG_IP_MULTICAST is not set | 182 | # CONFIG_IP_MULTICAST is not set |
236 | # CONFIG_IP_ADVANCED_ROUTER is not set | 183 | # CONFIG_IP_ADVANCED_ROUTER is not set |
184 | CONFIG_IP_FIB_HASH=y | ||
237 | CONFIG_IP_PNP=y | 185 | CONFIG_IP_PNP=y |
238 | CONFIG_IP_PNP_DHCP=y | 186 | CONFIG_IP_PNP_DHCP=y |
239 | CONFIG_IP_PNP_BOOTP=y | 187 | CONFIG_IP_PNP_BOOTP=y |
@@ -245,126 +193,186 @@ CONFIG_SYN_COOKIES=y | |||
245 | CONFIG_INET_AH=m | 193 | CONFIG_INET_AH=m |
246 | CONFIG_INET_ESP=m | 194 | CONFIG_INET_ESP=m |
247 | CONFIG_INET_IPCOMP=m | 195 | CONFIG_INET_IPCOMP=m |
196 | CONFIG_INET_XFRM_TUNNEL=m | ||
248 | CONFIG_INET_TUNNEL=m | 197 | CONFIG_INET_TUNNEL=m |
249 | CONFIG_IP_TCPDIAG=m | 198 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
250 | CONFIG_IP_TCPDIAG_IPV6=y | 199 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
251 | 200 | CONFIG_INET_XFRM_MODE_BEET=m | |
252 | # | 201 | CONFIG_INET_LRO=m |
253 | # IP: Virtual Server Configuration | 202 | CONFIG_INET_DIAG=m |
254 | # | 203 | CONFIG_INET_TCP_DIAG=m |
204 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
205 | CONFIG_TCP_CONG_CUBIC=y | ||
206 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
207 | # CONFIG_TCP_MD5SIG is not set | ||
255 | # CONFIG_IP_VS is not set | 208 | # CONFIG_IP_VS is not set |
256 | CONFIG_IPV6=m | 209 | CONFIG_IPV6=m |
257 | CONFIG_IPV6_PRIVACY=y | 210 | CONFIG_IPV6_PRIVACY=y |
211 | CONFIG_IPV6_ROUTER_PREF=y | ||
212 | CONFIG_IPV6_ROUTE_INFO=y | ||
213 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
258 | CONFIG_INET6_AH=m | 214 | CONFIG_INET6_AH=m |
259 | CONFIG_INET6_ESP=m | 215 | CONFIG_INET6_ESP=m |
260 | CONFIG_INET6_IPCOMP=m | 216 | CONFIG_INET6_IPCOMP=m |
217 | # CONFIG_IPV6_MIP6 is not set | ||
218 | CONFIG_INET6_XFRM_TUNNEL=m | ||
261 | CONFIG_INET6_TUNNEL=m | 219 | CONFIG_INET6_TUNNEL=m |
220 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
221 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
224 | CONFIG_IPV6_SIT=m | ||
262 | CONFIG_IPV6_TUNNEL=m | 225 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | ||
263 | CONFIG_NETFILTER=y | 228 | CONFIG_NETFILTER=y |
264 | # CONFIG_NETFILTER_DEBUG is not set | 229 | # CONFIG_NETFILTER_DEBUG is not set |
230 | CONFIG_NETFILTER_ADVANCED=y | ||
231 | |||
232 | # | ||
233 | # Core Netfilter Configuration | ||
234 | # | ||
235 | CONFIG_NETFILTER_NETLINK=m | ||
236 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
237 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
238 | CONFIG_NF_CONNTRACK=m | ||
239 | CONFIG_NF_CT_ACCT=y | ||
240 | CONFIG_NF_CONNTRACK_MARK=y | ||
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | ||
243 | CONFIG_NF_CT_PROTO_SCTP=m | ||
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
245 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
246 | CONFIG_NF_CONNTRACK_FTP=m | ||
247 | CONFIG_NF_CONNTRACK_H323=m | ||
248 | CONFIG_NF_CONNTRACK_IRC=m | ||
249 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
250 | CONFIG_NF_CONNTRACK_PPTP=m | ||
251 | CONFIG_NF_CONNTRACK_SANE=m | ||
252 | CONFIG_NF_CONNTRACK_SIP=m | ||
253 | CONFIG_NF_CONNTRACK_TFTP=m | ||
254 | # CONFIG_NF_CT_NETLINK is not set | ||
255 | CONFIG_NETFILTER_XTABLES=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
265 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
266 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
294 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
295 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
265 | 296 | ||
266 | # | 297 | # |
267 | # IP: Netfilter Configuration | 298 | # IP: Netfilter Configuration |
268 | # | 299 | # |
269 | CONFIG_IP_NF_CONNTRACK=m | 300 | CONFIG_NF_CONNTRACK_IPV4=m |
270 | # CONFIG_IP_NF_CT_ACCT is not set | 301 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
271 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
272 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
273 | CONFIG_IP_NF_FTP=m | ||
274 | CONFIG_IP_NF_IRC=m | ||
275 | CONFIG_IP_NF_TFTP=m | ||
276 | CONFIG_IP_NF_AMANDA=m | ||
277 | CONFIG_IP_NF_QUEUE=m | 302 | CONFIG_IP_NF_QUEUE=m |
278 | CONFIG_IP_NF_IPTABLES=m | 303 | CONFIG_IP_NF_IPTABLES=m |
279 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
280 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
281 | CONFIG_IP_NF_MATCH_MAC=m | ||
282 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
283 | CONFIG_IP_NF_MATCH_MARK=m | ||
284 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
285 | CONFIG_IP_NF_MATCH_TOS=m | ||
286 | CONFIG_IP_NF_MATCH_RECENT=m | 304 | CONFIG_IP_NF_MATCH_RECENT=m |
287 | CONFIG_IP_NF_MATCH_ECN=m | 305 | CONFIG_IP_NF_MATCH_ECN=m |
288 | CONFIG_IP_NF_MATCH_DSCP=m | 306 | CONFIG_IP_NF_MATCH_AH=m |
289 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
290 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
291 | CONFIG_IP_NF_MATCH_TTL=m | 307 | CONFIG_IP_NF_MATCH_TTL=m |
292 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
293 | CONFIG_IP_NF_MATCH_HELPER=m | ||
294 | CONFIG_IP_NF_MATCH_STATE=m | ||
295 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
296 | CONFIG_IP_NF_MATCH_OWNER=m | ||
297 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 308 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
298 | CONFIG_IP_NF_MATCH_REALM=m | ||
299 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
300 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
301 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
302 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
303 | CONFIG_IP_NF_FILTER=m | 309 | CONFIG_IP_NF_FILTER=m |
304 | CONFIG_IP_NF_TARGET_REJECT=m | 310 | CONFIG_IP_NF_TARGET_REJECT=m |
305 | CONFIG_IP_NF_TARGET_LOG=m | 311 | CONFIG_IP_NF_TARGET_LOG=m |
306 | CONFIG_IP_NF_TARGET_ULOG=m | 312 | CONFIG_IP_NF_TARGET_ULOG=m |
307 | CONFIG_IP_NF_TARGET_TCPMSS=m | 313 | CONFIG_NF_NAT=m |
308 | CONFIG_IP_NF_NAT=m | 314 | CONFIG_NF_NAT_NEEDED=y |
309 | CONFIG_IP_NF_NAT_NEEDED=y | ||
310 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 315 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
311 | CONFIG_IP_NF_TARGET_REDIRECT=m | 316 | CONFIG_IP_NF_TARGET_REDIRECT=m |
312 | CONFIG_IP_NF_TARGET_NETMAP=m | 317 | CONFIG_IP_NF_TARGET_NETMAP=m |
313 | CONFIG_IP_NF_TARGET_SAME=m | 318 | CONFIG_NF_NAT_SNMP_BASIC=m |
314 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 319 | CONFIG_NF_NAT_PROTO_GRE=m |
315 | CONFIG_IP_NF_NAT_IRC=m | 320 | CONFIG_NF_NAT_FTP=m |
316 | CONFIG_IP_NF_NAT_FTP=m | 321 | CONFIG_NF_NAT_IRC=m |
317 | CONFIG_IP_NF_NAT_TFTP=m | 322 | CONFIG_NF_NAT_TFTP=m |
318 | CONFIG_IP_NF_NAT_AMANDA=m | 323 | CONFIG_NF_NAT_AMANDA=m |
324 | CONFIG_NF_NAT_PPTP=m | ||
325 | CONFIG_NF_NAT_H323=m | ||
326 | CONFIG_NF_NAT_SIP=m | ||
319 | CONFIG_IP_NF_MANGLE=m | 327 | CONFIG_IP_NF_MANGLE=m |
320 | CONFIG_IP_NF_TARGET_TOS=m | ||
321 | CONFIG_IP_NF_TARGET_ECN=m | 328 | CONFIG_IP_NF_TARGET_ECN=m |
322 | CONFIG_IP_NF_TARGET_DSCP=m | 329 | CONFIG_IP_NF_TARGET_TTL=m |
323 | CONFIG_IP_NF_TARGET_MARK=m | 330 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
324 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
325 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
326 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
327 | CONFIG_IP_NF_RAW=m | 331 | CONFIG_IP_NF_RAW=m |
328 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
329 | CONFIG_IP_NF_ARPTABLES=m | 332 | CONFIG_IP_NF_ARPTABLES=m |
330 | CONFIG_IP_NF_ARPFILTER=m | 333 | CONFIG_IP_NF_ARPFILTER=m |
331 | CONFIG_IP_NF_ARP_MANGLE=m | 334 | CONFIG_IP_NF_ARP_MANGLE=m |
332 | 335 | ||
333 | # | 336 | # |
334 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 337 | # IPv6: Netfilter Configuration |
335 | # | 338 | # |
339 | CONFIG_NF_CONNTRACK_IPV6=m | ||
336 | CONFIG_IP6_NF_QUEUE=m | 340 | CONFIG_IP6_NF_QUEUE=m |
337 | CONFIG_IP6_NF_IPTABLES=m | 341 | CONFIG_IP6_NF_IPTABLES=m |
338 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
339 | CONFIG_IP6_NF_MATCH_MAC=m | ||
340 | CONFIG_IP6_NF_MATCH_RT=m | 342 | CONFIG_IP6_NF_MATCH_RT=m |
341 | CONFIG_IP6_NF_MATCH_OPTS=m | 343 | CONFIG_IP6_NF_MATCH_OPTS=m |
342 | CONFIG_IP6_NF_MATCH_FRAG=m | 344 | CONFIG_IP6_NF_MATCH_FRAG=m |
343 | CONFIG_IP6_NF_MATCH_HL=m | 345 | CONFIG_IP6_NF_MATCH_HL=m |
344 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
345 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
346 | CONFIG_IP6_NF_MATCH_MARK=m | ||
347 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 346 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
348 | CONFIG_IP6_NF_MATCH_AHESP=m | 347 | CONFIG_IP6_NF_MATCH_AH=m |
349 | CONFIG_IP6_NF_MATCH_LENGTH=m | 348 | CONFIG_IP6_NF_MATCH_MH=m |
350 | CONFIG_IP6_NF_MATCH_EUI64=m | 349 | CONFIG_IP6_NF_MATCH_EUI64=m |
351 | CONFIG_IP6_NF_FILTER=m | 350 | CONFIG_IP6_NF_FILTER=m |
352 | CONFIG_IP6_NF_TARGET_LOG=m | 351 | CONFIG_IP6_NF_TARGET_LOG=m |
352 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
353 | CONFIG_IP6_NF_MANGLE=m | 353 | CONFIG_IP6_NF_MANGLE=m |
354 | CONFIG_IP6_NF_TARGET_MARK=m | 354 | CONFIG_IP6_NF_TARGET_HL=m |
355 | CONFIG_IP6_NF_RAW=m | 355 | CONFIG_IP6_NF_RAW=m |
356 | CONFIG_XFRM=y | 356 | CONFIG_IP_DCCP=m |
357 | CONFIG_XFRM_USER=m | 357 | CONFIG_INET_DCCP_DIAG=m |
358 | CONFIG_IP_DCCP_ACKVEC=y | ||
358 | 359 | ||
359 | # | 360 | # |
360 | # SCTP Configuration (EXPERIMENTAL) | 361 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
361 | # | 362 | # |
363 | CONFIG_IP_DCCP_CCID2=m | ||
364 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
365 | CONFIG_IP_DCCP_CCID3=m | ||
366 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
367 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
368 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
362 | CONFIG_IP_SCTP=m | 369 | CONFIG_IP_SCTP=m |
363 | # CONFIG_SCTP_DBG_MSG is not set | 370 | # CONFIG_SCTP_DBG_MSG is not set |
364 | # CONFIG_SCTP_DBG_OBJCNT is not set | 371 | # CONFIG_SCTP_DBG_OBJCNT is not set |
365 | # CONFIG_SCTP_HMAC_NONE is not set | 372 | # CONFIG_SCTP_HMAC_NONE is not set |
366 | # CONFIG_SCTP_HMAC_SHA1 is not set | 373 | # CONFIG_SCTP_HMAC_SHA1 is not set |
367 | CONFIG_SCTP_HMAC_MD5=y | 374 | CONFIG_SCTP_HMAC_MD5=y |
375 | # CONFIG_TIPC is not set | ||
368 | # CONFIG_ATM is not set | 376 | # CONFIG_ATM is not set |
369 | # CONFIG_BRIDGE is not set | 377 | # CONFIG_BRIDGE is not set |
370 | # CONFIG_VLAN_8021Q is not set | 378 | # CONFIG_VLAN_8021Q is not set |
@@ -376,13 +384,8 @@ CONFIG_ATALK=m | |||
376 | # CONFIG_DEV_APPLETALK is not set | 384 | # CONFIG_DEV_APPLETALK is not set |
377 | # CONFIG_X25 is not set | 385 | # CONFIG_X25 is not set |
378 | # CONFIG_LAPB is not set | 386 | # CONFIG_LAPB is not set |
379 | # CONFIG_NET_DIVERT is not set | ||
380 | # CONFIG_ECONET is not set | 387 | # CONFIG_ECONET is not set |
381 | # CONFIG_WAN_ROUTER is not set | 388 | # CONFIG_WAN_ROUTER is not set |
382 | |||
383 | # | ||
384 | # QoS and/or fair queueing | ||
385 | # | ||
386 | # CONFIG_NET_SCHED is not set | 389 | # CONFIG_NET_SCHED is not set |
387 | CONFIG_NET_CLS_ROUTE=y | 390 | CONFIG_NET_CLS_ROUTE=y |
388 | 391 | ||
@@ -390,76 +393,186 @@ CONFIG_NET_CLS_ROUTE=y | |||
390 | # Network testing | 393 | # Network testing |
391 | # | 394 | # |
392 | # CONFIG_NET_PKTGEN is not set | 395 | # CONFIG_NET_PKTGEN is not set |
393 | CONFIG_NETPOLL=y | ||
394 | # CONFIG_NETPOLL_RX is not set | ||
395 | # CONFIG_NETPOLL_TRAP is not set | ||
396 | CONFIG_NET_POLL_CONTROLLER=y | ||
397 | # CONFIG_HAMRADIO is not set | 396 | # CONFIG_HAMRADIO is not set |
397 | # CONFIG_CAN is not set | ||
398 | # CONFIG_IRDA is not set | 398 | # CONFIG_IRDA is not set |
399 | # CONFIG_BT is not set | 399 | # CONFIG_BT is not set |
400 | CONFIG_NETDEVICES=y | 400 | # CONFIG_AF_RXRPC is not set |
401 | CONFIG_DUMMY=m | ||
402 | # CONFIG_BONDING is not set | ||
403 | CONFIG_EQUALIZER=m | ||
404 | # CONFIG_TUN is not set | ||
405 | 401 | ||
406 | # | 402 | # |
407 | # Ethernet (10 or 100Mbit) | 403 | # Wireless |
408 | # | 404 | # |
409 | CONFIG_NET_ETHERNET=y | 405 | # CONFIG_CFG80211 is not set |
410 | CONFIG_MII=m | 406 | CONFIG_WIRELESS_EXT=y |
411 | CONFIG_BVME6000_NET=y | 407 | # CONFIG_MAC80211 is not set |
408 | CONFIG_IEEE80211=m | ||
409 | # CONFIG_IEEE80211_DEBUG is not set | ||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | ||
416 | # CONFIG_NET_9P is not set | ||
412 | 417 | ||
413 | # | 418 | # |
414 | # Ethernet (1000 Mbit) | 419 | # Device Drivers |
415 | # | 420 | # |
416 | 421 | ||
417 | # | 422 | # |
418 | # Ethernet (10000 Mbit) | 423 | # Generic Driver Options |
419 | # | 424 | # |
425 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
426 | CONFIG_STANDALONE=y | ||
427 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
428 | CONFIG_FW_LOADER=m | ||
429 | # CONFIG_SYS_HYPERVISOR is not set | ||
430 | CONFIG_CONNECTOR=m | ||
431 | # CONFIG_MTD is not set | ||
432 | # CONFIG_PARPORT is not set | ||
433 | CONFIG_BLK_DEV=y | ||
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
435 | CONFIG_BLK_DEV_LOOP=y | ||
436 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
437 | CONFIG_BLK_DEV_NBD=m | ||
438 | CONFIG_BLK_DEV_RAM=y | ||
439 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
440 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
441 | # CONFIG_BLK_DEV_XIP is not set | ||
442 | CONFIG_CDROM_PKTCDVD=m | ||
443 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
444 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
445 | CONFIG_ATA_OVER_ETH=m | ||
446 | CONFIG_MISC_DEVICES=y | ||
447 | # CONFIG_EEPROM_93CX6 is not set | ||
448 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
449 | CONFIG_HAVE_IDE=y | ||
450 | # CONFIG_IDE is not set | ||
420 | 451 | ||
421 | # | 452 | # |
422 | # Token Ring devices | 453 | # SCSI device support |
423 | # | 454 | # |
455 | CONFIG_RAID_ATTRS=m | ||
456 | CONFIG_SCSI=y | ||
457 | CONFIG_SCSI_DMA=y | ||
458 | CONFIG_SCSI_TGT=m | ||
459 | # CONFIG_SCSI_NETLINK is not set | ||
460 | CONFIG_SCSI_PROC_FS=y | ||
424 | 461 | ||
425 | # | 462 | # |
426 | # Wireless LAN (non-hamradio) | 463 | # SCSI support type (disk, tape, CD-ROM) |
427 | # | 464 | # |
428 | # CONFIG_NET_RADIO is not set | 465 | CONFIG_BLK_DEV_SD=y |
466 | CONFIG_CHR_DEV_ST=m | ||
467 | CONFIG_CHR_DEV_OSST=m | ||
468 | CONFIG_BLK_DEV_SR=y | ||
469 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
470 | CONFIG_CHR_DEV_SG=m | ||
471 | # CONFIG_CHR_DEV_SCH is not set | ||
472 | |||
473 | # | ||
474 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
475 | # | ||
476 | # CONFIG_SCSI_MULTI_LUN is not set | ||
477 | CONFIG_SCSI_CONSTANTS=y | ||
478 | # CONFIG_SCSI_LOGGING is not set | ||
479 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
480 | CONFIG_SCSI_WAIT_SCAN=m | ||
481 | |||
482 | # | ||
483 | # SCSI Transports | ||
484 | # | ||
485 | CONFIG_SCSI_SPI_ATTRS=y | ||
486 | # CONFIG_SCSI_FC_ATTRS is not set | ||
487 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
488 | CONFIG_SCSI_SAS_ATTRS=m | ||
489 | CONFIG_SCSI_SAS_LIBSAS=m | ||
490 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
491 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
492 | CONFIG_SCSI_SRP_ATTRS=m | ||
493 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
494 | CONFIG_SCSI_LOWLEVEL=y | ||
495 | CONFIG_ISCSI_TCP=m | ||
496 | CONFIG_53C700_BE_BUS=y | ||
497 | # CONFIG_SCSI_DEBUG is not set | ||
498 | CONFIG_BVME6000_SCSI=y | ||
499 | CONFIG_MD=y | ||
500 | CONFIG_BLK_DEV_MD=m | ||
501 | CONFIG_MD_LINEAR=m | ||
502 | CONFIG_MD_RAID0=m | ||
503 | CONFIG_MD_RAID1=m | ||
504 | # CONFIG_MD_RAID10 is not set | ||
505 | CONFIG_MD_RAID456=m | ||
506 | CONFIG_MD_RAID5_RESHAPE=y | ||
507 | CONFIG_MD_MULTIPATH=m | ||
508 | # CONFIG_MD_FAULTY is not set | ||
509 | CONFIG_BLK_DEV_DM=m | ||
510 | # CONFIG_DM_DEBUG is not set | ||
511 | CONFIG_DM_CRYPT=m | ||
512 | CONFIG_DM_SNAPSHOT=m | ||
513 | CONFIG_DM_MIRROR=m | ||
514 | CONFIG_DM_ZERO=m | ||
515 | CONFIG_DM_MULTIPATH=m | ||
516 | CONFIG_DM_MULTIPATH_EMC=m | ||
517 | CONFIG_DM_MULTIPATH_RDAC=m | ||
518 | CONFIG_DM_MULTIPATH_HP=m | ||
519 | # CONFIG_DM_DELAY is not set | ||
520 | CONFIG_DM_UEVENT=y | ||
521 | CONFIG_NETDEVICES=y | ||
522 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
523 | CONFIG_DUMMY=m | ||
524 | # CONFIG_BONDING is not set | ||
525 | CONFIG_MACVLAN=m | ||
526 | CONFIG_EQUALIZER=m | ||
527 | # CONFIG_TUN is not set | ||
528 | CONFIG_VETH=m | ||
529 | # CONFIG_PHYLIB is not set | ||
530 | CONFIG_NET_ETHERNET=y | ||
531 | # CONFIG_MII is not set | ||
532 | CONFIG_BVME6000_NET=y | ||
533 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
534 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
535 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
536 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
537 | # CONFIG_B44 is not set | ||
538 | # CONFIG_NETDEV_1000 is not set | ||
539 | # CONFIG_NETDEV_10000 is not set | ||
429 | 540 | ||
430 | # | 541 | # |
431 | # Wan interfaces | 542 | # Wireless LAN |
432 | # | 543 | # |
544 | # CONFIG_WLAN_PRE80211 is not set | ||
545 | # CONFIG_WLAN_80211 is not set | ||
433 | # CONFIG_WAN is not set | 546 | # CONFIG_WAN is not set |
434 | CONFIG_PPP=m | 547 | CONFIG_PPP=m |
435 | # CONFIG_PPP_MULTILINK is not set | 548 | # CONFIG_PPP_MULTILINK is not set |
436 | # CONFIG_PPP_FILTER is not set | 549 | CONFIG_PPP_FILTER=y |
437 | CONFIG_PPP_ASYNC=m | 550 | CONFIG_PPP_ASYNC=m |
438 | CONFIG_PPP_SYNC_TTY=m | 551 | CONFIG_PPP_SYNC_TTY=m |
439 | CONFIG_PPP_DEFLATE=m | 552 | CONFIG_PPP_DEFLATE=m |
440 | CONFIG_PPP_BSDCOMP=m | 553 | CONFIG_PPP_BSDCOMP=m |
554 | CONFIG_PPP_MPPE=m | ||
441 | CONFIG_PPPOE=m | 555 | CONFIG_PPPOE=m |
556 | CONFIG_PPPOL2TP=m | ||
442 | CONFIG_SLIP=m | 557 | CONFIG_SLIP=m |
443 | CONFIG_SLIP_COMPRESSED=y | 558 | CONFIG_SLIP_COMPRESSED=y |
559 | CONFIG_SLHC=m | ||
444 | CONFIG_SLIP_SMART=y | 560 | CONFIG_SLIP_SMART=y |
445 | CONFIG_SLIP_MODE_SLIP6=y | 561 | CONFIG_SLIP_MODE_SLIP6=y |
446 | CONFIG_SHAPER=m | ||
447 | CONFIG_NETCONSOLE=m | 562 | CONFIG_NETCONSOLE=m |
448 | 563 | CONFIG_NETCONSOLE_DYNAMIC=y | |
449 | # | 564 | CONFIG_NETPOLL=y |
450 | # ISDN subsystem | 565 | # CONFIG_NETPOLL_TRAP is not set |
451 | # | 566 | CONFIG_NET_POLL_CONTROLLER=y |
452 | # CONFIG_ISDN is not set | 567 | # CONFIG_ISDN is not set |
453 | |||
454 | # | ||
455 | # Telephony Support | ||
456 | # | ||
457 | # CONFIG_PHONE is not set | 568 | # CONFIG_PHONE is not set |
458 | 569 | ||
459 | # | 570 | # |
460 | # Input device support | 571 | # Input device support |
461 | # | 572 | # |
462 | CONFIG_INPUT=y | 573 | CONFIG_INPUT=y |
574 | CONFIG_INPUT_FF_MEMLESS=m | ||
575 | # CONFIG_INPUT_POLLDEV is not set | ||
463 | 576 | ||
464 | # | 577 | # |
465 | # Userland interfaces | 578 | # Userland interfaces |
@@ -469,7 +582,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
469 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 582 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
470 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 583 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
471 | # CONFIG_INPUT_JOYDEV is not set | 584 | # CONFIG_INPUT_JOYDEV is not set |
472 | # CONFIG_INPUT_TSDEV is not set | ||
473 | # CONFIG_INPUT_EVDEV is not set | 585 | # CONFIG_INPUT_EVDEV is not set |
474 | # CONFIG_INPUT_EVBUG is not set | 586 | # CONFIG_INPUT_EVBUG is not set |
475 | 587 | ||
@@ -482,11 +594,19 @@ CONFIG_INPUT_KEYBOARD=y | |||
482 | # CONFIG_KEYBOARD_LKKBD is not set | 594 | # CONFIG_KEYBOARD_LKKBD is not set |
483 | # CONFIG_KEYBOARD_XTKBD is not set | 595 | # CONFIG_KEYBOARD_XTKBD is not set |
484 | # CONFIG_KEYBOARD_NEWTON is not set | 596 | # CONFIG_KEYBOARD_NEWTON is not set |
597 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
485 | CONFIG_INPUT_MOUSE=y | 598 | CONFIG_INPUT_MOUSE=y |
486 | CONFIG_MOUSE_PS2=m | 599 | CONFIG_MOUSE_PS2=m |
600 | CONFIG_MOUSE_PS2_ALPS=y | ||
601 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
602 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
603 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
604 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
605 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
487 | CONFIG_MOUSE_SERIAL=m | 606 | CONFIG_MOUSE_SERIAL=m |
488 | # CONFIG_MOUSE_VSXXXAA is not set | 607 | # CONFIG_MOUSE_VSXXXAA is not set |
489 | # CONFIG_INPUT_JOYSTICK is not set | 608 | # CONFIG_INPUT_JOYSTICK is not set |
609 | # CONFIG_INPUT_TABLET is not set | ||
490 | # CONFIG_INPUT_TOUCHSCREEN is not set | 610 | # CONFIG_INPUT_TOUCHSCREEN is not set |
491 | # CONFIG_INPUT_MISC is not set | 611 | # CONFIG_INPUT_MISC is not set |
492 | 612 | ||
@@ -494,7 +614,7 @@ CONFIG_MOUSE_SERIAL=m | |||
494 | # Hardware I/O ports | 614 | # Hardware I/O ports |
495 | # | 615 | # |
496 | CONFIG_SERIO=m | 616 | CONFIG_SERIO=m |
497 | CONFIG_SERIO_SERPORT=m | 617 | # CONFIG_SERIO_SERPORT is not set |
498 | CONFIG_SERIO_LIBPS2=m | 618 | CONFIG_SERIO_LIBPS2=m |
499 | # CONFIG_SERIO_RAW is not set | 619 | # CONFIG_SERIO_RAW is not set |
500 | # CONFIG_GAMEPORT is not set | 620 | # CONFIG_GAMEPORT is not set |
@@ -505,6 +625,7 @@ CONFIG_SERIO_LIBPS2=m | |||
505 | CONFIG_VT=y | 625 | CONFIG_VT=y |
506 | CONFIG_VT_CONSOLE=y | 626 | CONFIG_VT_CONSOLE=y |
507 | CONFIG_HW_CONSOLE=y | 627 | CONFIG_HW_CONSOLE=y |
628 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
508 | # CONFIG_SERIAL_NONSTANDARD is not set | 629 | # CONFIG_SERIAL_NONSTANDARD is not set |
509 | 630 | ||
510 | # | 631 | # |
@@ -518,59 +639,56 @@ CONFIG_HW_CONSOLE=y | |||
518 | CONFIG_UNIX98_PTYS=y | 639 | CONFIG_UNIX98_PTYS=y |
519 | CONFIG_LEGACY_PTYS=y | 640 | CONFIG_LEGACY_PTYS=y |
520 | CONFIG_LEGACY_PTY_COUNT=256 | 641 | CONFIG_LEGACY_PTY_COUNT=256 |
521 | |||
522 | # | ||
523 | # IPMI | ||
524 | # | ||
525 | # CONFIG_IPMI_HANDLER is not set | 642 | # CONFIG_IPMI_HANDLER is not set |
526 | 643 | # CONFIG_HW_RANDOM is not set | |
527 | # | ||
528 | # Watchdog Cards | ||
529 | # | ||
530 | # CONFIG_WATCHDOG is not set | ||
531 | CONFIG_GEN_RTC=m | 644 | CONFIG_GEN_RTC=m |
532 | CONFIG_GEN_RTC_X=y | 645 | CONFIG_GEN_RTC_X=y |
533 | # CONFIG_DTLK is not set | ||
534 | # CONFIG_R3964 is not set | 646 | # CONFIG_R3964 is not set |
535 | |||
536 | # | ||
537 | # Ftape, the floppy tape device driver | ||
538 | # | ||
539 | # CONFIG_DRM is not set | ||
540 | # CONFIG_RAW_DRIVER is not set | 647 | # CONFIG_RAW_DRIVER is not set |
648 | # CONFIG_TCG_TPM is not set | ||
649 | # CONFIG_I2C is not set | ||
541 | 650 | ||
542 | # | 651 | # |
543 | # TPM devices | 652 | # SPI support |
544 | # | ||
545 | |||
546 | # | ||
547 | # I2C support | ||
548 | # | 653 | # |
549 | # CONFIG_I2C is not set | 654 | # CONFIG_SPI is not set |
655 | # CONFIG_SPI_MASTER is not set | ||
656 | # CONFIG_W1 is not set | ||
657 | # CONFIG_POWER_SUPPLY is not set | ||
658 | # CONFIG_HWMON is not set | ||
659 | # CONFIG_THERMAL is not set | ||
660 | # CONFIG_WATCHDOG is not set | ||
550 | 661 | ||
551 | # | 662 | # |
552 | # Dallas's 1-wire bus | 663 | # Sonics Silicon Backplane |
553 | # | 664 | # |
554 | # CONFIG_W1 is not set | 665 | CONFIG_SSB_POSSIBLE=y |
666 | # CONFIG_SSB is not set | ||
555 | 667 | ||
556 | # | 668 | # |
557 | # Misc devices | 669 | # Multifunction device drivers |
558 | # | 670 | # |
671 | # CONFIG_MFD_SM501 is not set | ||
559 | 672 | ||
560 | # | 673 | # |
561 | # Multimedia devices | 674 | # Multimedia devices |
562 | # | 675 | # |
563 | # CONFIG_VIDEO_DEV is not set | 676 | # CONFIG_VIDEO_DEV is not set |
677 | # CONFIG_DVB_CORE is not set | ||
678 | # CONFIG_DAB is not set | ||
564 | 679 | ||
565 | # | 680 | # |
566 | # Digital Video Broadcasting Devices | 681 | # Graphics support |
567 | # | 682 | # |
568 | # CONFIG_DVB is not set | 683 | # CONFIG_VGASTATE is not set |
684 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
685 | # CONFIG_FB is not set | ||
686 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
569 | 687 | ||
570 | # | 688 | # |
571 | # Graphics support | 689 | # Display device support |
572 | # | 690 | # |
573 | # CONFIG_FB is not set | 691 | # CONFIG_DISPLAY_SUPPORT is not set |
574 | 692 | ||
575 | # | 693 | # |
576 | # Console display driver support | 694 | # Console display driver support |
@@ -581,27 +699,20 @@ CONFIG_DUMMY_CONSOLE=y | |||
581 | # Sound | 699 | # Sound |
582 | # | 700 | # |
583 | # CONFIG_SOUND is not set | 701 | # CONFIG_SOUND is not set |
584 | 702 | CONFIG_HID_SUPPORT=y | |
585 | # | 703 | CONFIG_HID=m |
586 | # USB support | 704 | # CONFIG_HID_DEBUG is not set |
587 | # | 705 | CONFIG_HIDRAW=y |
588 | # CONFIG_USB_ARCH_HAS_HCD is not set | 706 | # CONFIG_USB_SUPPORT is not set |
589 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
590 | |||
591 | # | ||
592 | # USB Gadget Support | ||
593 | # | ||
594 | # CONFIG_USB_GADGET is not set | ||
595 | |||
596 | # | ||
597 | # MMC/SD Card support | ||
598 | # | ||
599 | # CONFIG_MMC is not set | 707 | # CONFIG_MMC is not set |
708 | # CONFIG_MEMSTICK is not set | ||
709 | # CONFIG_NEW_LEDS is not set | ||
710 | # CONFIG_RTC_CLASS is not set | ||
600 | 711 | ||
601 | # | 712 | # |
602 | # InfiniBand support | 713 | # Userspace I/O |
603 | # | 714 | # |
604 | # CONFIG_INFINIBAND is not set | 715 | # CONFIG_UIO is not set |
605 | 716 | ||
606 | # | 717 | # |
607 | # Character devices | 718 | # Character devices |
@@ -614,10 +725,11 @@ CONFIG_SERIAL_CONSOLE=y | |||
614 | # | 725 | # |
615 | CONFIG_EXT2_FS=y | 726 | CONFIG_EXT2_FS=y |
616 | # CONFIG_EXT2_FS_XATTR is not set | 727 | # CONFIG_EXT2_FS_XATTR is not set |
728 | # CONFIG_EXT2_FS_XIP is not set | ||
617 | CONFIG_EXT3_FS=y | 729 | CONFIG_EXT3_FS=y |
618 | # CONFIG_EXT3_FS_XATTR is not set | 730 | # CONFIG_EXT3_FS_XATTR is not set |
731 | # CONFIG_EXT4DEV_FS is not set | ||
619 | CONFIG_JBD=y | 732 | CONFIG_JBD=y |
620 | # CONFIG_JBD_DEBUG is not set | ||
621 | CONFIG_REISERFS_FS=m | 733 | CONFIG_REISERFS_FS=m |
622 | # CONFIG_REISERFS_CHECK is not set | 734 | # CONFIG_REISERFS_CHECK is not set |
623 | # CONFIG_REISERFS_PROC_INFO is not set | 735 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -628,25 +740,29 @@ CONFIG_JFS_FS=m | |||
628 | # CONFIG_JFS_DEBUG is not set | 740 | # CONFIG_JFS_DEBUG is not set |
629 | # CONFIG_JFS_STATISTICS is not set | 741 | # CONFIG_JFS_STATISTICS is not set |
630 | CONFIG_FS_POSIX_ACL=y | 742 | CONFIG_FS_POSIX_ACL=y |
631 | |||
632 | # | ||
633 | # XFS support | ||
634 | # | ||
635 | CONFIG_XFS_FS=m | 743 | CONFIG_XFS_FS=m |
636 | CONFIG_XFS_EXPORT=y | ||
637 | # CONFIG_XFS_RT is not set | ||
638 | # CONFIG_XFS_QUOTA is not set | 744 | # CONFIG_XFS_QUOTA is not set |
639 | # CONFIG_XFS_SECURITY is not set | 745 | # CONFIG_XFS_SECURITY is not set |
640 | # CONFIG_XFS_POSIX_ACL is not set | 746 | # CONFIG_XFS_POSIX_ACL is not set |
641 | CONFIG_MINIX_FS=y | 747 | # CONFIG_XFS_RT is not set |
642 | # CONFIG_ROMFS_FS is not set | 748 | CONFIG_GFS2_FS=m |
749 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
750 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
751 | CONFIG_OCFS2_FS=m | ||
752 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
753 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
754 | CONFIG_DNOTIFY=y | ||
755 | CONFIG_INOTIFY=y | ||
756 | CONFIG_INOTIFY_USER=y | ||
643 | CONFIG_QUOTA=y | 757 | CONFIG_QUOTA=y |
758 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
759 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
644 | # CONFIG_QFMT_V1 is not set | 760 | # CONFIG_QFMT_V1 is not set |
645 | # CONFIG_QFMT_V2 is not set | 761 | # CONFIG_QFMT_V2 is not set |
646 | CONFIG_QUOTACTL=y | 762 | CONFIG_QUOTACTL=y |
647 | CONFIG_DNOTIFY=y | ||
648 | CONFIG_AUTOFS_FS=m | 763 | CONFIG_AUTOFS_FS=m |
649 | CONFIG_AUTOFS4_FS=m | 764 | CONFIG_AUTOFS4_FS=m |
765 | CONFIG_FUSE_FS=m | ||
650 | 766 | ||
651 | # | 767 | # |
652 | # CD-ROM/DVD Filesystems | 768 | # CD-ROM/DVD Filesystems |
@@ -654,7 +770,6 @@ CONFIG_AUTOFS4_FS=m | |||
654 | CONFIG_ISO9660_FS=y | 770 | CONFIG_ISO9660_FS=y |
655 | CONFIG_JOLIET=y | 771 | CONFIG_JOLIET=y |
656 | CONFIG_ZISOFS=y | 772 | CONFIG_ZISOFS=y |
657 | CONFIG_ZISOFS_FS=y | ||
658 | CONFIG_UDF_FS=m | 773 | CONFIG_UDF_FS=m |
659 | CONFIG_UDF_NLS=y | 774 | CONFIG_UDF_NLS=y |
660 | 775 | ||
@@ -673,13 +788,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
673 | # | 788 | # |
674 | CONFIG_PROC_FS=y | 789 | CONFIG_PROC_FS=y |
675 | CONFIG_PROC_KCORE=y | 790 | CONFIG_PROC_KCORE=y |
791 | CONFIG_PROC_SYSCTL=y | ||
676 | CONFIG_SYSFS=y | 792 | CONFIG_SYSFS=y |
677 | # CONFIG_DEVFS_FS is not set | ||
678 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
679 | CONFIG_TMPFS=y | 793 | CONFIG_TMPFS=y |
680 | # CONFIG_TMPFS_XATTR is not set | 794 | # CONFIG_TMPFS_POSIX_ACL is not set |
681 | # CONFIG_HUGETLB_PAGE is not set | 795 | # CONFIG_HUGETLB_PAGE is not set |
682 | CONFIG_RAMFS=y | 796 | CONFIG_CONFIGFS_FS=m |
683 | 797 | ||
684 | # | 798 | # |
685 | # Miscellaneous filesystems | 799 | # Miscellaneous filesystems |
@@ -693,44 +807,40 @@ CONFIG_HFSPLUS_FS=m | |||
693 | # CONFIG_EFS_FS is not set | 807 | # CONFIG_EFS_FS is not set |
694 | CONFIG_CRAMFS=m | 808 | CONFIG_CRAMFS=m |
695 | # CONFIG_VXFS_FS is not set | 809 | # CONFIG_VXFS_FS is not set |
810 | CONFIG_MINIX_FS=y | ||
696 | CONFIG_HPFS_FS=m | 811 | CONFIG_HPFS_FS=m |
697 | # CONFIG_QNX4FS_FS is not set | 812 | # CONFIG_QNX4FS_FS is not set |
813 | # CONFIG_ROMFS_FS is not set | ||
698 | CONFIG_SYSV_FS=m | 814 | CONFIG_SYSV_FS=m |
699 | CONFIG_UFS_FS=m | 815 | CONFIG_UFS_FS=m |
700 | # CONFIG_UFS_FS_WRITE is not set | 816 | # CONFIG_UFS_FS_WRITE is not set |
701 | 817 | # CONFIG_UFS_DEBUG is not set | |
702 | # | 818 | CONFIG_NETWORK_FILESYSTEMS=y |
703 | # Network File Systems | ||
704 | # | ||
705 | CONFIG_NFS_FS=y | 819 | CONFIG_NFS_FS=y |
706 | CONFIG_NFS_V3=y | 820 | CONFIG_NFS_V3=y |
821 | # CONFIG_NFS_V3_ACL is not set | ||
707 | CONFIG_NFS_V4=y | 822 | CONFIG_NFS_V4=y |
708 | # CONFIG_NFS_DIRECTIO is not set | 823 | # CONFIG_NFS_DIRECTIO is not set |
709 | CONFIG_NFSD=m | 824 | CONFIG_NFSD=m |
710 | CONFIG_NFSD_V3=y | 825 | CONFIG_NFSD_V3=y |
711 | CONFIG_NFSD_V4=y | 826 | # CONFIG_NFSD_V3_ACL is not set |
827 | # CONFIG_NFSD_V4 is not set | ||
712 | CONFIG_NFSD_TCP=y | 828 | CONFIG_NFSD_TCP=y |
713 | CONFIG_ROOT_NFS=y | 829 | CONFIG_ROOT_NFS=y |
714 | CONFIG_LOCKD=y | 830 | CONFIG_LOCKD=y |
715 | CONFIG_LOCKD_V4=y | 831 | CONFIG_LOCKD_V4=y |
716 | CONFIG_EXPORTFS=m | 832 | CONFIG_EXPORTFS=m |
833 | CONFIG_NFS_COMMON=y | ||
717 | CONFIG_SUNRPC=y | 834 | CONFIG_SUNRPC=y |
718 | CONFIG_SUNRPC_GSS=y | 835 | CONFIG_SUNRPC_GSS=y |
836 | CONFIG_SUNRPC_BIND34=y | ||
719 | CONFIG_RPCSEC_GSS_KRB5=y | 837 | CONFIG_RPCSEC_GSS_KRB5=y |
720 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 838 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
721 | CONFIG_SMB_FS=m | 839 | CONFIG_SMB_FS=m |
722 | CONFIG_SMB_NLS_DEFAULT=y | 840 | CONFIG_SMB_NLS_DEFAULT=y |
723 | CONFIG_SMB_NLS_REMOTE="cp437" | 841 | CONFIG_SMB_NLS_REMOTE="cp437" |
724 | # CONFIG_CIFS is not set | 842 | # CONFIG_CIFS is not set |
725 | CONFIG_NCP_FS=m | 843 | # CONFIG_NCP_FS is not set |
726 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
727 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
728 | # CONFIG_NCPFS_STRONG is not set | ||
729 | CONFIG_NCPFS_NFS_NS=y | ||
730 | CONFIG_NCPFS_OS2_NS=y | ||
731 | # CONFIG_NCPFS_SMALLDOS is not set | ||
732 | CONFIG_NCPFS_NLS=y | ||
733 | # CONFIG_NCPFS_EXTRAS is not set | ||
734 | CONFIG_CODA_FS=m | 844 | CONFIG_CODA_FS=m |
735 | # CONFIG_CODA_FS_OLD_API is not set | 845 | # CONFIG_CODA_FS_OLD_API is not set |
736 | # CONFIG_AFS_FS is not set | 846 | # CONFIG_AFS_FS is not set |
@@ -740,10 +850,7 @@ CONFIG_CODA_FS=m | |||
740 | # | 850 | # |
741 | # CONFIG_PARTITION_ADVANCED is not set | 851 | # CONFIG_PARTITION_ADVANCED is not set |
742 | CONFIG_MSDOS_PARTITION=y | 852 | CONFIG_MSDOS_PARTITION=y |
743 | 853 | CONFIG_SYSV68_PARTITION=y | |
744 | # | ||
745 | # Native Language Support | ||
746 | # | ||
747 | CONFIG_NLS=y | 854 | CONFIG_NLS=y |
748 | CONFIG_NLS_DEFAULT="iso8859-1" | 855 | CONFIG_NLS_DEFAULT="iso8859-1" |
749 | CONFIG_NLS_CODEPAGE_437=y | 856 | CONFIG_NLS_CODEPAGE_437=y |
@@ -784,35 +891,42 @@ CONFIG_NLS_ISO8859_15=m | |||
784 | CONFIG_NLS_KOI8_R=m | 891 | CONFIG_NLS_KOI8_R=m |
785 | CONFIG_NLS_KOI8_U=m | 892 | CONFIG_NLS_KOI8_U=m |
786 | CONFIG_NLS_UTF8=m | 893 | CONFIG_NLS_UTF8=m |
894 | CONFIG_DLM=m | ||
895 | # CONFIG_DLM_DEBUG is not set | ||
787 | 896 | ||
788 | # | 897 | # |
789 | # Kernel hacking | 898 | # Kernel hacking |
790 | # | 899 | # |
791 | # CONFIG_PRINTK_TIME is not set | 900 | # CONFIG_PRINTK_TIME is not set |
792 | CONFIG_DEBUG_KERNEL=y | 901 | CONFIG_ENABLE_WARN_DEPRECATED=y |
902 | CONFIG_ENABLE_MUST_CHECK=y | ||
793 | CONFIG_MAGIC_SYSRQ=y | 903 | CONFIG_MAGIC_SYSRQ=y |
794 | CONFIG_LOG_BUF_SHIFT=16 | 904 | # CONFIG_UNUSED_SYMBOLS is not set |
795 | # CONFIG_SCHEDSTATS is not set | ||
796 | # CONFIG_DEBUG_SLAB is not set | ||
797 | # CONFIG_DEBUG_SPINLOCK is not set | ||
798 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
799 | # CONFIG_DEBUG_KOBJECT is not set | ||
800 | CONFIG_DEBUG_BUGVERBOSE=y | ||
801 | # CONFIG_DEBUG_INFO is not set | ||
802 | # CONFIG_DEBUG_FS is not set | 905 | # CONFIG_DEBUG_FS is not set |
803 | # CONFIG_FRAME_POINTER is not set | 906 | # CONFIG_HEADERS_CHECK is not set |
907 | # CONFIG_DEBUG_KERNEL is not set | ||
908 | CONFIG_DEBUG_BUGVERBOSE=y | ||
909 | # CONFIG_SAMPLES is not set | ||
804 | 910 | ||
805 | # | 911 | # |
806 | # Security options | 912 | # Security options |
807 | # | 913 | # |
808 | # CONFIG_KEYS is not set | 914 | # CONFIG_KEYS is not set |
809 | # CONFIG_SECURITY is not set | 915 | # CONFIG_SECURITY is not set |
810 | 916 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
811 | # | 917 | CONFIG_XOR_BLOCKS=m |
812 | # Cryptographic options | 918 | CONFIG_ASYNC_CORE=m |
813 | # | 919 | CONFIG_ASYNC_MEMCPY=m |
920 | CONFIG_ASYNC_XOR=m | ||
814 | CONFIG_CRYPTO=y | 921 | CONFIG_CRYPTO=y |
922 | CONFIG_CRYPTO_ALGAPI=y | ||
923 | CONFIG_CRYPTO_AEAD=m | ||
924 | CONFIG_CRYPTO_BLKCIPHER=y | ||
925 | CONFIG_CRYPTO_SEQIV=m | ||
926 | CONFIG_CRYPTO_HASH=y | ||
927 | CONFIG_CRYPTO_MANAGER=y | ||
815 | CONFIG_CRYPTO_HMAC=y | 928 | CONFIG_CRYPTO_HMAC=y |
929 | CONFIG_CRYPTO_XCBC=m | ||
816 | CONFIG_CRYPTO_NULL=m | 930 | CONFIG_CRYPTO_NULL=m |
817 | CONFIG_CRYPTO_MD4=m | 931 | CONFIG_CRYPTO_MD4=m |
818 | CONFIG_CRYPTO_MD5=y | 932 | CONFIG_CRYPTO_MD5=y |
@@ -821,9 +935,21 @@ CONFIG_CRYPTO_SHA256=m | |||
821 | CONFIG_CRYPTO_SHA512=m | 935 | CONFIG_CRYPTO_SHA512=m |
822 | CONFIG_CRYPTO_WP512=m | 936 | CONFIG_CRYPTO_WP512=m |
823 | CONFIG_CRYPTO_TGR192=m | 937 | CONFIG_CRYPTO_TGR192=m |
938 | CONFIG_CRYPTO_GF128MUL=m | ||
939 | CONFIG_CRYPTO_ECB=m | ||
940 | CONFIG_CRYPTO_CBC=y | ||
941 | CONFIG_CRYPTO_PCBC=m | ||
942 | CONFIG_CRYPTO_LRW=m | ||
943 | CONFIG_CRYPTO_XTS=m | ||
944 | CONFIG_CRYPTO_CTR=m | ||
945 | CONFIG_CRYPTO_GCM=m | ||
946 | CONFIG_CRYPTO_CCM=m | ||
947 | CONFIG_CRYPTO_CRYPTD=m | ||
824 | CONFIG_CRYPTO_DES=y | 948 | CONFIG_CRYPTO_DES=y |
949 | CONFIG_CRYPTO_FCRYPT=m | ||
825 | CONFIG_CRYPTO_BLOWFISH=m | 950 | CONFIG_CRYPTO_BLOWFISH=m |
826 | CONFIG_CRYPTO_TWOFISH=m | 951 | CONFIG_CRYPTO_TWOFISH=m |
952 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
827 | CONFIG_CRYPTO_SERPENT=m | 953 | CONFIG_CRYPTO_SERPENT=m |
828 | CONFIG_CRYPTO_AES=m | 954 | CONFIG_CRYPTO_AES=m |
829 | CONFIG_CRYPTO_CAST5=m | 955 | CONFIG_CRYPTO_CAST5=m |
@@ -832,20 +958,35 @@ CONFIG_CRYPTO_TEA=m | |||
832 | CONFIG_CRYPTO_ARC4=m | 958 | CONFIG_CRYPTO_ARC4=m |
833 | CONFIG_CRYPTO_KHAZAD=m | 959 | CONFIG_CRYPTO_KHAZAD=m |
834 | CONFIG_CRYPTO_ANUBIS=m | 960 | CONFIG_CRYPTO_ANUBIS=m |
961 | CONFIG_CRYPTO_SEED=m | ||
962 | CONFIG_CRYPTO_SALSA20=m | ||
835 | CONFIG_CRYPTO_DEFLATE=m | 963 | CONFIG_CRYPTO_DEFLATE=m |
836 | CONFIG_CRYPTO_MICHAEL_MIC=m | 964 | CONFIG_CRYPTO_MICHAEL_MIC=m |
837 | CONFIG_CRYPTO_CRC32C=m | 965 | CONFIG_CRYPTO_CRC32C=m |
966 | CONFIG_CRYPTO_CAMELLIA=m | ||
838 | CONFIG_CRYPTO_TEST=m | 967 | CONFIG_CRYPTO_TEST=m |
839 | 968 | CONFIG_CRYPTO_AUTHENC=m | |
840 | # | 969 | CONFIG_CRYPTO_LZO=m |
841 | # Hardware crypto devices | 970 | # CONFIG_CRYPTO_HW is not set |
842 | # | ||
843 | 971 | ||
844 | # | 972 | # |
845 | # Library routines | 973 | # Library routines |
846 | # | 974 | # |
975 | CONFIG_BITREVERSE=m | ||
847 | CONFIG_CRC_CCITT=m | 976 | CONFIG_CRC_CCITT=m |
977 | CONFIG_CRC16=m | ||
978 | # CONFIG_CRC_ITU_T is not set | ||
848 | CONFIG_CRC32=m | 979 | CONFIG_CRC32=m |
980 | # CONFIG_CRC7 is not set | ||
849 | CONFIG_LIBCRC32C=m | 981 | CONFIG_LIBCRC32C=m |
850 | CONFIG_ZLIB_INFLATE=y | 982 | CONFIG_ZLIB_INFLATE=y |
851 | CONFIG_ZLIB_DEFLATE=m | 983 | CONFIG_ZLIB_DEFLATE=m |
984 | CONFIG_LZO_COMPRESS=m | ||
985 | CONFIG_LZO_DECOMPRESS=m | ||
986 | CONFIG_TEXTSEARCH=y | ||
987 | CONFIG_TEXTSEARCH_KMP=m | ||
988 | CONFIG_TEXTSEARCH_BM=m | ||
989 | CONFIG_TEXTSEARCH_FSM=m | ||
990 | CONFIG_PLIST=y | ||
991 | CONFIG_HAS_IOMEM=y | ||
992 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig index 51251883adf8..38b68c70e567 100644 --- a/arch/m68k/configs/hp300_defconfig +++ b/arch/m68k/configs/hp300_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:41 2005 | 4 | # Wed Apr 2 20:46:12 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-hp300" | 27 | CONFIG_LOCALVERSION="-hp300" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -81,10 +129,24 @@ CONFIG_M68030=y | |||
81 | CONFIG_M68040=y | 129 | CONFIG_M68040=y |
82 | CONFIG_M68060=y | 130 | CONFIG_M68060=y |
83 | CONFIG_MMU_MOTOROLA=y | 131 | CONFIG_MMU_MOTOROLA=y |
84 | CONFIG_M68KFPU_EMU=y | 132 | # CONFIG_M68KFPU_EMU is not set |
85 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
86 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
87 | # CONFIG_ADVANCED is not set | 133 | # CONFIG_ADVANCED is not set |
134 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
135 | CONFIG_NODES_SHIFT=3 | ||
136 | CONFIG_SELECT_MEMORY_MODEL=y | ||
137 | # CONFIG_FLATMEM_MANUAL is not set | ||
138 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
139 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
140 | CONFIG_DISCONTIGMEM=y | ||
141 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
142 | CONFIG_NEED_MULTIPLE_NODES=y | ||
143 | # CONFIG_SPARSEMEM_STATIC is not set | ||
144 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
145 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
146 | # CONFIG_RESOURCES_64BIT is not set | ||
147 | CONFIG_ZONE_DMA_FLAG=1 | ||
148 | CONFIG_BOUNCE=y | ||
149 | CONFIG_VIRT_TO_BUS=y | ||
88 | 150 | ||
89 | # | 151 | # |
90 | # General setup | 152 | # General setup |
@@ -94,134 +156,11 @@ CONFIG_BINFMT_AOUT=m | |||
94 | CONFIG_BINFMT_MISC=m | 156 | CONFIG_BINFMT_MISC=m |
95 | CONFIG_HEARTBEAT=y | 157 | CONFIG_HEARTBEAT=y |
96 | CONFIG_PROC_HARDWARE=y | 158 | CONFIG_PROC_HARDWARE=y |
159 | CONFIG_ZONE_DMA=y | ||
160 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
97 | 161 | ||
98 | # | 162 | # |
99 | # Device Drivers | 163 | # Networking |
100 | # | ||
101 | |||
102 | # | ||
103 | # Generic Driver Options | ||
104 | # | ||
105 | CONFIG_STANDALONE=y | ||
106 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
107 | CONFIG_FW_LOADER=m | ||
108 | # CONFIG_DEBUG_DRIVER is not set | ||
109 | |||
110 | # | ||
111 | # Memory Technology Devices (MTD) | ||
112 | # | ||
113 | # CONFIG_MTD is not set | ||
114 | |||
115 | # | ||
116 | # Parallel port support | ||
117 | # | ||
118 | # CONFIG_PARPORT is not set | ||
119 | |||
120 | # | ||
121 | # Plug and Play support | ||
122 | # | ||
123 | |||
124 | # | ||
125 | # Block devices | ||
126 | # | ||
127 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
128 | CONFIG_BLK_DEV_LOOP=y | ||
129 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
130 | CONFIG_BLK_DEV_NBD=m | ||
131 | CONFIG_BLK_DEV_RAM=y | ||
132 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
133 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
134 | CONFIG_BLK_DEV_INITRD=y | ||
135 | CONFIG_INITRAMFS_SOURCE="" | ||
136 | CONFIG_CDROM_PKTCDVD=m | ||
137 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
138 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
139 | |||
140 | # | ||
141 | # IO Schedulers | ||
142 | # | ||
143 | CONFIG_IOSCHED_NOOP=y | ||
144 | CONFIG_IOSCHED_AS=y | ||
145 | CONFIG_IOSCHED_DEADLINE=y | ||
146 | CONFIG_IOSCHED_CFQ=y | ||
147 | CONFIG_ATA_OVER_ETH=m | ||
148 | |||
149 | # | ||
150 | # ATA/ATAPI/MFM/RLL support | ||
151 | # | ||
152 | # CONFIG_IDE is not set | ||
153 | |||
154 | # | ||
155 | # SCSI device support | ||
156 | # | ||
157 | CONFIG_SCSI=y | ||
158 | CONFIG_SCSI_PROC_FS=y | ||
159 | |||
160 | # | ||
161 | # SCSI support type (disk, tape, CD-ROM) | ||
162 | # | ||
163 | CONFIG_BLK_DEV_SD=y | ||
164 | CONFIG_CHR_DEV_ST=m | ||
165 | # CONFIG_CHR_DEV_OSST is not set | ||
166 | CONFIG_BLK_DEV_SR=y | ||
167 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
168 | CONFIG_CHR_DEV_SG=m | ||
169 | |||
170 | # | ||
171 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
172 | # | ||
173 | # CONFIG_SCSI_MULTI_LUN is not set | ||
174 | CONFIG_SCSI_CONSTANTS=y | ||
175 | # CONFIG_SCSI_LOGGING is not set | ||
176 | |||
177 | # | ||
178 | # SCSI Transport Attributes | ||
179 | # | ||
180 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
181 | # CONFIG_SCSI_FC_ATTRS is not set | ||
182 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
183 | |||
184 | # | ||
185 | # SCSI low-level drivers | ||
186 | # | ||
187 | # CONFIG_SCSI_SATA is not set | ||
188 | # CONFIG_SCSI_DEBUG is not set | ||
189 | |||
190 | # | ||
191 | # Multi-device support (RAID and LVM) | ||
192 | # | ||
193 | CONFIG_MD=y | ||
194 | CONFIG_BLK_DEV_MD=m | ||
195 | CONFIG_MD_LINEAR=m | ||
196 | CONFIG_MD_RAID0=m | ||
197 | CONFIG_MD_RAID1=m | ||
198 | # CONFIG_MD_RAID10 is not set | ||
199 | CONFIG_MD_RAID5=m | ||
200 | CONFIG_MD_RAID6=m | ||
201 | CONFIG_MD_MULTIPATH=m | ||
202 | # CONFIG_MD_FAULTY is not set | ||
203 | CONFIG_BLK_DEV_DM=m | ||
204 | CONFIG_DM_CRYPT=m | ||
205 | CONFIG_DM_SNAPSHOT=m | ||
206 | CONFIG_DM_MIRROR=m | ||
207 | CONFIG_DM_ZERO=m | ||
208 | CONFIG_DM_MULTIPATH=m | ||
209 | CONFIG_DM_MULTIPATH_EMC=m | ||
210 | |||
211 | # | ||
212 | # Fusion MPT device support | ||
213 | # | ||
214 | |||
215 | # | ||
216 | # IEEE 1394 (FireWire) support | ||
217 | # | ||
218 | |||
219 | # | ||
220 | # I2O device support | ||
221 | # | ||
222 | |||
223 | # | ||
224 | # Networking support | ||
225 | # | 164 | # |
226 | CONFIG_NET=y | 165 | CONFIG_NET=y |
227 | 166 | ||
@@ -231,10 +170,17 @@ CONFIG_NET=y | |||
231 | CONFIG_PACKET=y | 170 | CONFIG_PACKET=y |
232 | # CONFIG_PACKET_MMAP is not set | 171 | # CONFIG_PACKET_MMAP is not set |
233 | CONFIG_UNIX=y | 172 | CONFIG_UNIX=y |
173 | CONFIG_XFRM=y | ||
174 | # CONFIG_XFRM_USER is not set | ||
175 | # CONFIG_XFRM_SUB_POLICY is not set | ||
176 | CONFIG_XFRM_MIGRATE=y | ||
177 | # CONFIG_XFRM_STATISTICS is not set | ||
234 | CONFIG_NET_KEY=y | 178 | CONFIG_NET_KEY=y |
179 | CONFIG_NET_KEY_MIGRATE=y | ||
235 | CONFIG_INET=y | 180 | CONFIG_INET=y |
236 | # CONFIG_IP_MULTICAST is not set | 181 | # CONFIG_IP_MULTICAST is not set |
237 | # CONFIG_IP_ADVANCED_ROUTER is not set | 182 | # CONFIG_IP_ADVANCED_ROUTER is not set |
183 | CONFIG_IP_FIB_HASH=y | ||
238 | CONFIG_IP_PNP=y | 184 | CONFIG_IP_PNP=y |
239 | CONFIG_IP_PNP_DHCP=y | 185 | CONFIG_IP_PNP_DHCP=y |
240 | CONFIG_IP_PNP_BOOTP=y | 186 | CONFIG_IP_PNP_BOOTP=y |
@@ -246,145 +192,199 @@ CONFIG_SYN_COOKIES=y | |||
246 | CONFIG_INET_AH=m | 192 | CONFIG_INET_AH=m |
247 | CONFIG_INET_ESP=m | 193 | CONFIG_INET_ESP=m |
248 | CONFIG_INET_IPCOMP=m | 194 | CONFIG_INET_IPCOMP=m |
195 | CONFIG_INET_XFRM_TUNNEL=m | ||
249 | CONFIG_INET_TUNNEL=m | 196 | CONFIG_INET_TUNNEL=m |
250 | CONFIG_IP_TCPDIAG=m | 197 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
251 | CONFIG_IP_TCPDIAG_IPV6=y | 198 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
252 | 199 | CONFIG_INET_XFRM_MODE_BEET=m | |
253 | # | 200 | CONFIG_INET_LRO=m |
254 | # IP: Virtual Server Configuration | 201 | CONFIG_INET_DIAG=m |
255 | # | 202 | CONFIG_INET_TCP_DIAG=m |
203 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
204 | CONFIG_TCP_CONG_CUBIC=y | ||
205 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
206 | # CONFIG_TCP_MD5SIG is not set | ||
256 | # CONFIG_IP_VS is not set | 207 | # CONFIG_IP_VS is not set |
257 | CONFIG_IPV6=m | 208 | CONFIG_IPV6=m |
258 | CONFIG_IPV6_PRIVACY=y | 209 | CONFIG_IPV6_PRIVACY=y |
210 | CONFIG_IPV6_ROUTER_PREF=y | ||
211 | CONFIG_IPV6_ROUTE_INFO=y | ||
212 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
259 | CONFIG_INET6_AH=m | 213 | CONFIG_INET6_AH=m |
260 | CONFIG_INET6_ESP=m | 214 | CONFIG_INET6_ESP=m |
261 | CONFIG_INET6_IPCOMP=m | 215 | CONFIG_INET6_IPCOMP=m |
216 | # CONFIG_IPV6_MIP6 is not set | ||
217 | CONFIG_INET6_XFRM_TUNNEL=m | ||
262 | CONFIG_INET6_TUNNEL=m | 218 | CONFIG_INET6_TUNNEL=m |
219 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
220 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
221 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
222 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
223 | CONFIG_IPV6_SIT=m | ||
263 | CONFIG_IPV6_TUNNEL=m | 224 | CONFIG_IPV6_TUNNEL=m |
225 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
226 | # CONFIG_NETWORK_SECMARK is not set | ||
264 | CONFIG_NETFILTER=y | 227 | CONFIG_NETFILTER=y |
265 | # CONFIG_NETFILTER_DEBUG is not set | 228 | # CONFIG_NETFILTER_DEBUG is not set |
229 | CONFIG_NETFILTER_ADVANCED=y | ||
230 | |||
231 | # | ||
232 | # Core Netfilter Configuration | ||
233 | # | ||
234 | CONFIG_NETFILTER_NETLINK=m | ||
235 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
236 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
237 | CONFIG_NF_CONNTRACK=m | ||
238 | CONFIG_NF_CT_ACCT=y | ||
239 | CONFIG_NF_CONNTRACK_MARK=y | ||
240 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
241 | CONFIG_NF_CT_PROTO_GRE=m | ||
242 | CONFIG_NF_CT_PROTO_SCTP=m | ||
243 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
244 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
245 | CONFIG_NF_CONNTRACK_FTP=m | ||
246 | CONFIG_NF_CONNTRACK_H323=m | ||
247 | CONFIG_NF_CONNTRACK_IRC=m | ||
248 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
249 | CONFIG_NF_CONNTRACK_PPTP=m | ||
250 | CONFIG_NF_CONNTRACK_SANE=m | ||
251 | CONFIG_NF_CONNTRACK_SIP=m | ||
252 | CONFIG_NF_CONNTRACK_TFTP=m | ||
253 | # CONFIG_NF_CT_NETLINK is not set | ||
254 | CONFIG_NETFILTER_XTABLES=m | ||
255 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
265 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
294 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
266 | 295 | ||
267 | # | 296 | # |
268 | # IP: Netfilter Configuration | 297 | # IP: Netfilter Configuration |
269 | # | 298 | # |
270 | CONFIG_IP_NF_CONNTRACK=m | 299 | CONFIG_NF_CONNTRACK_IPV4=m |
271 | # CONFIG_IP_NF_CT_ACCT is not set | 300 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
272 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
273 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
274 | CONFIG_IP_NF_FTP=m | ||
275 | CONFIG_IP_NF_IRC=m | ||
276 | CONFIG_IP_NF_TFTP=m | ||
277 | CONFIG_IP_NF_AMANDA=m | ||
278 | CONFIG_IP_NF_QUEUE=m | 301 | CONFIG_IP_NF_QUEUE=m |
279 | CONFIG_IP_NF_IPTABLES=m | 302 | CONFIG_IP_NF_IPTABLES=m |
280 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
281 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
282 | CONFIG_IP_NF_MATCH_MAC=m | ||
283 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
284 | CONFIG_IP_NF_MATCH_MARK=m | ||
285 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
286 | CONFIG_IP_NF_MATCH_TOS=m | ||
287 | CONFIG_IP_NF_MATCH_RECENT=m | 303 | CONFIG_IP_NF_MATCH_RECENT=m |
288 | CONFIG_IP_NF_MATCH_ECN=m | 304 | CONFIG_IP_NF_MATCH_ECN=m |
289 | CONFIG_IP_NF_MATCH_DSCP=m | 305 | CONFIG_IP_NF_MATCH_AH=m |
290 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
291 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
292 | CONFIG_IP_NF_MATCH_TTL=m | 306 | CONFIG_IP_NF_MATCH_TTL=m |
293 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
294 | CONFIG_IP_NF_MATCH_HELPER=m | ||
295 | CONFIG_IP_NF_MATCH_STATE=m | ||
296 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
297 | CONFIG_IP_NF_MATCH_OWNER=m | ||
298 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 307 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
299 | CONFIG_IP_NF_MATCH_REALM=m | ||
300 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
301 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
302 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
303 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
304 | CONFIG_IP_NF_FILTER=m | 308 | CONFIG_IP_NF_FILTER=m |
305 | CONFIG_IP_NF_TARGET_REJECT=m | 309 | CONFIG_IP_NF_TARGET_REJECT=m |
306 | CONFIG_IP_NF_TARGET_LOG=m | 310 | CONFIG_IP_NF_TARGET_LOG=m |
307 | CONFIG_IP_NF_TARGET_ULOG=m | 311 | CONFIG_IP_NF_TARGET_ULOG=m |
308 | CONFIG_IP_NF_TARGET_TCPMSS=m | 312 | CONFIG_NF_NAT=m |
309 | CONFIG_IP_NF_NAT=m | 313 | CONFIG_NF_NAT_NEEDED=y |
310 | CONFIG_IP_NF_NAT_NEEDED=y | ||
311 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 314 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
312 | CONFIG_IP_NF_TARGET_REDIRECT=m | 315 | CONFIG_IP_NF_TARGET_REDIRECT=m |
313 | CONFIG_IP_NF_TARGET_NETMAP=m | 316 | CONFIG_IP_NF_TARGET_NETMAP=m |
314 | CONFIG_IP_NF_TARGET_SAME=m | 317 | CONFIG_NF_NAT_SNMP_BASIC=m |
315 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 318 | CONFIG_NF_NAT_PROTO_GRE=m |
316 | CONFIG_IP_NF_NAT_IRC=m | 319 | CONFIG_NF_NAT_FTP=m |
317 | CONFIG_IP_NF_NAT_FTP=m | 320 | CONFIG_NF_NAT_IRC=m |
318 | CONFIG_IP_NF_NAT_TFTP=m | 321 | CONFIG_NF_NAT_TFTP=m |
319 | CONFIG_IP_NF_NAT_AMANDA=m | 322 | CONFIG_NF_NAT_AMANDA=m |
323 | CONFIG_NF_NAT_PPTP=m | ||
324 | CONFIG_NF_NAT_H323=m | ||
325 | CONFIG_NF_NAT_SIP=m | ||
320 | CONFIG_IP_NF_MANGLE=m | 326 | CONFIG_IP_NF_MANGLE=m |
321 | CONFIG_IP_NF_TARGET_TOS=m | ||
322 | CONFIG_IP_NF_TARGET_ECN=m | 327 | CONFIG_IP_NF_TARGET_ECN=m |
323 | CONFIG_IP_NF_TARGET_DSCP=m | 328 | CONFIG_IP_NF_TARGET_TTL=m |
324 | CONFIG_IP_NF_TARGET_MARK=m | 329 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
325 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
326 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
327 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
328 | CONFIG_IP_NF_RAW=m | 330 | CONFIG_IP_NF_RAW=m |
329 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
330 | CONFIG_IP_NF_ARPTABLES=m | 331 | CONFIG_IP_NF_ARPTABLES=m |
331 | CONFIG_IP_NF_ARPFILTER=m | 332 | CONFIG_IP_NF_ARPFILTER=m |
332 | CONFIG_IP_NF_ARP_MANGLE=m | 333 | CONFIG_IP_NF_ARP_MANGLE=m |
333 | 334 | ||
334 | # | 335 | # |
335 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 336 | # IPv6: Netfilter Configuration |
336 | # | 337 | # |
338 | CONFIG_NF_CONNTRACK_IPV6=m | ||
337 | CONFIG_IP6_NF_QUEUE=m | 339 | CONFIG_IP6_NF_QUEUE=m |
338 | CONFIG_IP6_NF_IPTABLES=m | 340 | CONFIG_IP6_NF_IPTABLES=m |
339 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
340 | CONFIG_IP6_NF_MATCH_MAC=m | ||
341 | CONFIG_IP6_NF_MATCH_RT=m | 341 | CONFIG_IP6_NF_MATCH_RT=m |
342 | CONFIG_IP6_NF_MATCH_OPTS=m | 342 | CONFIG_IP6_NF_MATCH_OPTS=m |
343 | CONFIG_IP6_NF_MATCH_FRAG=m | 343 | CONFIG_IP6_NF_MATCH_FRAG=m |
344 | CONFIG_IP6_NF_MATCH_HL=m | 344 | CONFIG_IP6_NF_MATCH_HL=m |
345 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
346 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
347 | CONFIG_IP6_NF_MATCH_MARK=m | ||
348 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 345 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
349 | CONFIG_IP6_NF_MATCH_AHESP=m | 346 | CONFIG_IP6_NF_MATCH_AH=m |
350 | CONFIG_IP6_NF_MATCH_LENGTH=m | 347 | CONFIG_IP6_NF_MATCH_MH=m |
351 | CONFIG_IP6_NF_MATCH_EUI64=m | 348 | CONFIG_IP6_NF_MATCH_EUI64=m |
352 | CONFIG_IP6_NF_FILTER=m | 349 | CONFIG_IP6_NF_FILTER=m |
353 | CONFIG_IP6_NF_TARGET_LOG=m | 350 | CONFIG_IP6_NF_TARGET_LOG=m |
351 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
354 | CONFIG_IP6_NF_MANGLE=m | 352 | CONFIG_IP6_NF_MANGLE=m |
355 | CONFIG_IP6_NF_TARGET_MARK=m | 353 | CONFIG_IP6_NF_TARGET_HL=m |
356 | CONFIG_IP6_NF_RAW=m | 354 | CONFIG_IP6_NF_RAW=m |
357 | CONFIG_XFRM=y | 355 | CONFIG_IP_DCCP=m |
358 | CONFIG_XFRM_USER=m | 356 | CONFIG_INET_DCCP_DIAG=m |
357 | CONFIG_IP_DCCP_ACKVEC=y | ||
359 | 358 | ||
360 | # | 359 | # |
361 | # SCTP Configuration (EXPERIMENTAL) | 360 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
362 | # | 361 | # |
362 | CONFIG_IP_DCCP_CCID2=m | ||
363 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
364 | CONFIG_IP_DCCP_CCID3=m | ||
365 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
366 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
367 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
363 | CONFIG_IP_SCTP=m | 368 | CONFIG_IP_SCTP=m |
364 | # CONFIG_SCTP_DBG_MSG is not set | 369 | # CONFIG_SCTP_DBG_MSG is not set |
365 | # CONFIG_SCTP_DBG_OBJCNT is not set | 370 | # CONFIG_SCTP_DBG_OBJCNT is not set |
366 | # CONFIG_SCTP_HMAC_NONE is not set | 371 | # CONFIG_SCTP_HMAC_NONE is not set |
367 | # CONFIG_SCTP_HMAC_SHA1 is not set | 372 | # CONFIG_SCTP_HMAC_SHA1 is not set |
368 | CONFIG_SCTP_HMAC_MD5=y | 373 | CONFIG_SCTP_HMAC_MD5=y |
374 | # CONFIG_TIPC is not set | ||
369 | # CONFIG_ATM is not set | 375 | # CONFIG_ATM is not set |
370 | # CONFIG_BRIDGE is not set | 376 | # CONFIG_BRIDGE is not set |
371 | # CONFIG_VLAN_8021Q is not set | 377 | # CONFIG_VLAN_8021Q is not set |
372 | # CONFIG_DECNET is not set | 378 | # CONFIG_DECNET is not set |
373 | CONFIG_LLC=m | 379 | CONFIG_LLC=m |
374 | # CONFIG_LLC2 is not set | 380 | # CONFIG_LLC2 is not set |
375 | CONFIG_IPX=m | 381 | # CONFIG_IPX is not set |
376 | # CONFIG_IPX_INTERN is not set | ||
377 | CONFIG_ATALK=m | 382 | CONFIG_ATALK=m |
378 | # CONFIG_DEV_APPLETALK is not set | 383 | # CONFIG_DEV_APPLETALK is not set |
379 | # CONFIG_X25 is not set | 384 | # CONFIG_X25 is not set |
380 | # CONFIG_LAPB is not set | 385 | # CONFIG_LAPB is not set |
381 | # CONFIG_NET_DIVERT is not set | ||
382 | # CONFIG_ECONET is not set | 386 | # CONFIG_ECONET is not set |
383 | # CONFIG_WAN_ROUTER is not set | 387 | # CONFIG_WAN_ROUTER is not set |
384 | |||
385 | # | ||
386 | # QoS and/or fair queueing | ||
387 | # | ||
388 | # CONFIG_NET_SCHED is not set | 388 | # CONFIG_NET_SCHED is not set |
389 | CONFIG_NET_CLS_ROUTE=y | 389 | CONFIG_NET_CLS_ROUTE=y |
390 | 390 | ||
@@ -392,46 +392,154 @@ CONFIG_NET_CLS_ROUTE=y | |||
392 | # Network testing | 392 | # Network testing |
393 | # | 393 | # |
394 | # CONFIG_NET_PKTGEN is not set | 394 | # CONFIG_NET_PKTGEN is not set |
395 | CONFIG_NETPOLL=y | ||
396 | # CONFIG_NETPOLL_RX is not set | ||
397 | # CONFIG_NETPOLL_TRAP is not set | ||
398 | CONFIG_NET_POLL_CONTROLLER=y | ||
399 | # CONFIG_HAMRADIO is not set | 395 | # CONFIG_HAMRADIO is not set |
396 | # CONFIG_CAN is not set | ||
400 | # CONFIG_IRDA is not set | 397 | # CONFIG_IRDA is not set |
401 | # CONFIG_BT is not set | 398 | # CONFIG_BT is not set |
402 | CONFIG_NETDEVICES=y | 399 | # CONFIG_AF_RXRPC is not set |
403 | CONFIG_DUMMY=m | ||
404 | # CONFIG_BONDING is not set | ||
405 | CONFIG_EQUALIZER=m | ||
406 | # CONFIG_TUN is not set | ||
407 | 400 | ||
408 | # | 401 | # |
409 | # Ethernet (10 or 100Mbit) | 402 | # Wireless |
410 | # | 403 | # |
411 | CONFIG_NET_ETHERNET=y | 404 | # CONFIG_CFG80211 is not set |
412 | CONFIG_MII=m | 405 | CONFIG_WIRELESS_EXT=y |
413 | CONFIG_HPLANCE=y | 406 | # CONFIG_MAC80211 is not set |
407 | CONFIG_IEEE80211=m | ||
408 | # CONFIG_IEEE80211_DEBUG is not set | ||
409 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
410 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
411 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
412 | CONFIG_IEEE80211_SOFTMAC=m | ||
413 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
414 | # CONFIG_RFKILL is not set | ||
415 | # CONFIG_NET_9P is not set | ||
414 | 416 | ||
415 | # | 417 | # |
416 | # Ethernet (1000 Mbit) | 418 | # Device Drivers |
417 | # | 419 | # |
418 | 420 | ||
419 | # | 421 | # |
420 | # Ethernet (10000 Mbit) | 422 | # Generic Driver Options |
421 | # | 423 | # |
424 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
425 | CONFIG_STANDALONE=y | ||
426 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
427 | CONFIG_FW_LOADER=m | ||
428 | # CONFIG_SYS_HYPERVISOR is not set | ||
429 | CONFIG_CONNECTOR=m | ||
430 | # CONFIG_MTD is not set | ||
431 | # CONFIG_PARPORT is not set | ||
432 | CONFIG_BLK_DEV=y | ||
433 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
434 | CONFIG_BLK_DEV_LOOP=y | ||
435 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
436 | CONFIG_BLK_DEV_NBD=m | ||
437 | CONFIG_BLK_DEV_RAM=y | ||
438 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
439 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
440 | # CONFIG_BLK_DEV_XIP is not set | ||
441 | CONFIG_CDROM_PKTCDVD=m | ||
442 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
443 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
444 | CONFIG_ATA_OVER_ETH=m | ||
445 | CONFIG_MISC_DEVICES=y | ||
446 | # CONFIG_EEPROM_93CX6 is not set | ||
447 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
448 | CONFIG_HAVE_IDE=y | ||
449 | # CONFIG_IDE is not set | ||
422 | 450 | ||
423 | # | 451 | # |
424 | # Token Ring devices | 452 | # SCSI device support |
425 | # | 453 | # |
454 | CONFIG_RAID_ATTRS=m | ||
455 | CONFIG_SCSI=y | ||
456 | CONFIG_SCSI_DMA=y | ||
457 | CONFIG_SCSI_TGT=m | ||
458 | # CONFIG_SCSI_NETLINK is not set | ||
459 | CONFIG_SCSI_PROC_FS=y | ||
426 | 460 | ||
427 | # | 461 | # |
428 | # Wireless LAN (non-hamradio) | 462 | # SCSI support type (disk, tape, CD-ROM) |
429 | # | 463 | # |
430 | # CONFIG_NET_RADIO is not set | 464 | CONFIG_BLK_DEV_SD=y |
465 | CONFIG_CHR_DEV_ST=m | ||
466 | CONFIG_CHR_DEV_OSST=m | ||
467 | CONFIG_BLK_DEV_SR=y | ||
468 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
469 | CONFIG_CHR_DEV_SG=m | ||
470 | # CONFIG_CHR_DEV_SCH is not set | ||
471 | |||
472 | # | ||
473 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
474 | # | ||
475 | # CONFIG_SCSI_MULTI_LUN is not set | ||
476 | CONFIG_SCSI_CONSTANTS=y | ||
477 | # CONFIG_SCSI_LOGGING is not set | ||
478 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
479 | CONFIG_SCSI_WAIT_SCAN=m | ||
480 | |||
481 | # | ||
482 | # SCSI Transports | ||
483 | # | ||
484 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
485 | # CONFIG_SCSI_FC_ATTRS is not set | ||
486 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
487 | CONFIG_SCSI_SAS_ATTRS=m | ||
488 | CONFIG_SCSI_SAS_LIBSAS=m | ||
489 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
490 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
491 | CONFIG_SCSI_SRP_ATTRS=m | ||
492 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
493 | CONFIG_SCSI_LOWLEVEL=y | ||
494 | CONFIG_ISCSI_TCP=m | ||
495 | # CONFIG_SCSI_DEBUG is not set | ||
496 | CONFIG_MD=y | ||
497 | CONFIG_BLK_DEV_MD=m | ||
498 | CONFIG_MD_LINEAR=m | ||
499 | CONFIG_MD_RAID0=m | ||
500 | CONFIG_MD_RAID1=m | ||
501 | # CONFIG_MD_RAID10 is not set | ||
502 | CONFIG_MD_RAID456=m | ||
503 | CONFIG_MD_RAID5_RESHAPE=y | ||
504 | CONFIG_MD_MULTIPATH=m | ||
505 | # CONFIG_MD_FAULTY is not set | ||
506 | CONFIG_BLK_DEV_DM=m | ||
507 | # CONFIG_DM_DEBUG is not set | ||
508 | CONFIG_DM_CRYPT=m | ||
509 | CONFIG_DM_SNAPSHOT=m | ||
510 | CONFIG_DM_MIRROR=m | ||
511 | CONFIG_DM_ZERO=m | ||
512 | CONFIG_DM_MULTIPATH=m | ||
513 | CONFIG_DM_MULTIPATH_EMC=m | ||
514 | CONFIG_DM_MULTIPATH_RDAC=m | ||
515 | CONFIG_DM_MULTIPATH_HP=m | ||
516 | # CONFIG_DM_DELAY is not set | ||
517 | CONFIG_DM_UEVENT=y | ||
518 | CONFIG_NETDEVICES=y | ||
519 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
520 | CONFIG_DUMMY=m | ||
521 | # CONFIG_BONDING is not set | ||
522 | CONFIG_MACVLAN=m | ||
523 | CONFIG_EQUALIZER=m | ||
524 | # CONFIG_TUN is not set | ||
525 | CONFIG_VETH=m | ||
526 | # CONFIG_PHYLIB is not set | ||
527 | CONFIG_NET_ETHERNET=y | ||
528 | # CONFIG_MII is not set | ||
529 | CONFIG_HPLANCE=y | ||
530 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
531 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
532 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
533 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
534 | # CONFIG_B44 is not set | ||
535 | # CONFIG_NETDEV_1000 is not set | ||
536 | # CONFIG_NETDEV_10000 is not set | ||
431 | 537 | ||
432 | # | 538 | # |
433 | # Wan interfaces | 539 | # Wireless LAN |
434 | # | 540 | # |
541 | # CONFIG_WLAN_PRE80211 is not set | ||
542 | # CONFIG_WLAN_80211 is not set | ||
435 | # CONFIG_WAN is not set | 543 | # CONFIG_WAN is not set |
436 | CONFIG_PPP=m | 544 | CONFIG_PPP=m |
437 | # CONFIG_PPP_MULTILINK is not set | 545 | # CONFIG_PPP_MULTILINK is not set |
@@ -440,28 +548,28 @@ CONFIG_PPP_ASYNC=m | |||
440 | CONFIG_PPP_SYNC_TTY=m | 548 | CONFIG_PPP_SYNC_TTY=m |
441 | CONFIG_PPP_DEFLATE=m | 549 | CONFIG_PPP_DEFLATE=m |
442 | CONFIG_PPP_BSDCOMP=m | 550 | CONFIG_PPP_BSDCOMP=m |
551 | CONFIG_PPP_MPPE=m | ||
443 | CONFIG_PPPOE=m | 552 | CONFIG_PPPOE=m |
553 | CONFIG_PPPOL2TP=m | ||
444 | CONFIG_SLIP=m | 554 | CONFIG_SLIP=m |
445 | CONFIG_SLIP_COMPRESSED=y | 555 | CONFIG_SLIP_COMPRESSED=y |
556 | CONFIG_SLHC=m | ||
446 | CONFIG_SLIP_SMART=y | 557 | CONFIG_SLIP_SMART=y |
447 | CONFIG_SLIP_MODE_SLIP6=y | 558 | CONFIG_SLIP_MODE_SLIP6=y |
448 | CONFIG_SHAPER=m | ||
449 | CONFIG_NETCONSOLE=m | 559 | CONFIG_NETCONSOLE=m |
450 | 560 | CONFIG_NETCONSOLE_DYNAMIC=y | |
451 | # | 561 | CONFIG_NETPOLL=y |
452 | # ISDN subsystem | 562 | # CONFIG_NETPOLL_TRAP is not set |
453 | # | 563 | CONFIG_NET_POLL_CONTROLLER=y |
454 | # CONFIG_ISDN is not set | 564 | # CONFIG_ISDN is not set |
455 | |||
456 | # | ||
457 | # Telephony Support | ||
458 | # | ||
459 | # CONFIG_PHONE is not set | 565 | # CONFIG_PHONE is not set |
460 | 566 | ||
461 | # | 567 | # |
462 | # Input device support | 568 | # Input device support |
463 | # | 569 | # |
464 | CONFIG_INPUT=y | 570 | CONFIG_INPUT=y |
571 | CONFIG_INPUT_FF_MEMLESS=m | ||
572 | # CONFIG_INPUT_POLLDEV is not set | ||
465 | 573 | ||
466 | # | 574 | # |
467 | # Userland interfaces | 575 | # Userland interfaces |
@@ -471,7 +579,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
471 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 579 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
472 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 580 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
473 | # CONFIG_INPUT_JOYDEV is not set | 581 | # CONFIG_INPUT_JOYDEV is not set |
474 | # CONFIG_INPUT_TSDEV is not set | ||
475 | # CONFIG_INPUT_EVDEV is not set | 582 | # CONFIG_INPUT_EVDEV is not set |
476 | # CONFIG_INPUT_EVBUG is not set | 583 | # CONFIG_INPUT_EVBUG is not set |
477 | 584 | ||
@@ -484,19 +591,35 @@ CONFIG_INPUT_KEYBOARD=y | |||
484 | # CONFIG_KEYBOARD_LKKBD is not set | 591 | # CONFIG_KEYBOARD_LKKBD is not set |
485 | # CONFIG_KEYBOARD_XTKBD is not set | 592 | # CONFIG_KEYBOARD_XTKBD is not set |
486 | # CONFIG_KEYBOARD_NEWTON is not set | 593 | # CONFIG_KEYBOARD_NEWTON is not set |
594 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
595 | CONFIG_KEYBOARD_HIL_OLD=y | ||
596 | CONFIG_KEYBOARD_HIL=y | ||
487 | CONFIG_INPUT_MOUSE=y | 597 | CONFIG_INPUT_MOUSE=y |
488 | CONFIG_MOUSE_PS2=m | 598 | CONFIG_MOUSE_PS2=m |
599 | CONFIG_MOUSE_PS2_ALPS=y | ||
600 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
601 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
602 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
603 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
604 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
489 | CONFIG_MOUSE_SERIAL=m | 605 | CONFIG_MOUSE_SERIAL=m |
490 | # CONFIG_MOUSE_VSXXXAA is not set | 606 | # CONFIG_MOUSE_VSXXXAA is not set |
607 | CONFIG_MOUSE_HIL=m | ||
491 | # CONFIG_INPUT_JOYSTICK is not set | 608 | # CONFIG_INPUT_JOYSTICK is not set |
609 | # CONFIG_INPUT_TABLET is not set | ||
492 | # CONFIG_INPUT_TOUCHSCREEN is not set | 610 | # CONFIG_INPUT_TOUCHSCREEN is not set |
493 | # CONFIG_INPUT_MISC is not set | 611 | CONFIG_INPUT_MISC=y |
612 | # CONFIG_INPUT_M68K_BEEP is not set | ||
613 | # CONFIG_INPUT_UINPUT is not set | ||
614 | CONFIG_HP_SDC_RTC=m | ||
494 | 615 | ||
495 | # | 616 | # |
496 | # Hardware I/O ports | 617 | # Hardware I/O ports |
497 | # | 618 | # |
498 | CONFIG_SERIO=m | 619 | CONFIG_SERIO=y |
499 | CONFIG_SERIO_SERPORT=m | 620 | # CONFIG_SERIO_SERPORT is not set |
621 | CONFIG_HP_SDC=y | ||
622 | CONFIG_HIL_MLC=y | ||
500 | CONFIG_SERIO_LIBPS2=m | 623 | CONFIG_SERIO_LIBPS2=m |
501 | # CONFIG_SERIO_RAW is not set | 624 | # CONFIG_SERIO_RAW is not set |
502 | # CONFIG_GAMEPORT is not set | 625 | # CONFIG_GAMEPORT is not set |
@@ -507,6 +630,7 @@ CONFIG_SERIO_LIBPS2=m | |||
507 | CONFIG_VT=y | 630 | CONFIG_VT=y |
508 | CONFIG_VT_CONSOLE=y | 631 | CONFIG_VT_CONSOLE=y |
509 | CONFIG_HW_CONSOLE=y | 632 | CONFIG_HW_CONSOLE=y |
633 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
510 | # CONFIG_SERIAL_NONSTANDARD is not set | 634 | # CONFIG_SERIAL_NONSTANDARD is not set |
511 | 635 | ||
512 | # | 636 | # |
@@ -520,90 +644,114 @@ CONFIG_HW_CONSOLE=y | |||
520 | CONFIG_UNIX98_PTYS=y | 644 | CONFIG_UNIX98_PTYS=y |
521 | CONFIG_LEGACY_PTYS=y | 645 | CONFIG_LEGACY_PTYS=y |
522 | CONFIG_LEGACY_PTY_COUNT=256 | 646 | CONFIG_LEGACY_PTY_COUNT=256 |
523 | |||
524 | # | ||
525 | # IPMI | ||
526 | # | ||
527 | # CONFIG_IPMI_HANDLER is not set | 647 | # CONFIG_IPMI_HANDLER is not set |
528 | 648 | # CONFIG_HW_RANDOM is not set | |
529 | # | 649 | CONFIG_GEN_RTC=m |
530 | # Watchdog Cards | ||
531 | # | ||
532 | # CONFIG_WATCHDOG is not set | ||
533 | CONFIG_GEN_RTC=y | ||
534 | CONFIG_GEN_RTC_X=y | 650 | CONFIG_GEN_RTC_X=y |
535 | # CONFIG_DTLK is not set | ||
536 | # CONFIG_R3964 is not set | 651 | # CONFIG_R3964 is not set |
537 | |||
538 | # | ||
539 | # Ftape, the floppy tape device driver | ||
540 | # | ||
541 | # CONFIG_DRM is not set | ||
542 | # CONFIG_RAW_DRIVER is not set | 652 | # CONFIG_RAW_DRIVER is not set |
653 | # CONFIG_TCG_TPM is not set | ||
654 | # CONFIG_I2C is not set | ||
543 | 655 | ||
544 | # | 656 | # |
545 | # TPM devices | 657 | # SPI support |
546 | # | 658 | # |
659 | # CONFIG_SPI is not set | ||
660 | # CONFIG_SPI_MASTER is not set | ||
661 | # CONFIG_W1 is not set | ||
662 | # CONFIG_POWER_SUPPLY is not set | ||
663 | # CONFIG_HWMON is not set | ||
664 | # CONFIG_THERMAL is not set | ||
665 | # CONFIG_WATCHDOG is not set | ||
547 | 666 | ||
548 | # | 667 | # |
549 | # I2C support | 668 | # Sonics Silicon Backplane |
550 | # | 669 | # |
551 | # CONFIG_I2C is not set | 670 | CONFIG_SSB_POSSIBLE=y |
671 | # CONFIG_SSB is not set | ||
552 | 672 | ||
553 | # | 673 | # |
554 | # Dallas's 1-wire bus | 674 | # Multifunction device drivers |
555 | # | 675 | # |
556 | # CONFIG_W1 is not set | 676 | # CONFIG_MFD_SM501 is not set |
557 | 677 | ||
558 | # | 678 | # |
559 | # Misc devices | 679 | # Multimedia devices |
560 | # | 680 | # |
681 | # CONFIG_VIDEO_DEV is not set | ||
682 | # CONFIG_DVB_CORE is not set | ||
683 | # CONFIG_DAB is not set | ||
561 | 684 | ||
562 | # | 685 | # |
563 | # Multimedia devices | 686 | # Graphics support |
564 | # | 687 | # |
565 | # CONFIG_VIDEO_DEV is not set | 688 | # CONFIG_VGASTATE is not set |
689 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
690 | CONFIG_FB=y | ||
691 | # CONFIG_FIRMWARE_EDID is not set | ||
692 | # CONFIG_FB_DDC is not set | ||
693 | CONFIG_FB_CFB_FILLRECT=y | ||
694 | # CONFIG_FB_CFB_COPYAREA is not set | ||
695 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
696 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
697 | # CONFIG_FB_SYS_FILLRECT is not set | ||
698 | # CONFIG_FB_SYS_COPYAREA is not set | ||
699 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
700 | # CONFIG_FB_SYS_FOPS is not set | ||
701 | CONFIG_FB_DEFERRED_IO=y | ||
702 | # CONFIG_FB_SVGALIB is not set | ||
703 | # CONFIG_FB_MACMODES is not set | ||
704 | # CONFIG_FB_BACKLIGHT is not set | ||
705 | # CONFIG_FB_MODE_HELPERS is not set | ||
706 | # CONFIG_FB_TILEBLITTING is not set | ||
566 | 707 | ||
567 | # | 708 | # |
568 | # Digital Video Broadcasting Devices | 709 | # Frame buffer hardware drivers |
569 | # | 710 | # |
570 | # CONFIG_DVB is not set | 711 | CONFIG_FB_HP300=y |
712 | # CONFIG_FB_UVESA is not set | ||
713 | # CONFIG_FB_S1D13XXX is not set | ||
714 | # CONFIG_FB_VIRTUAL is not set | ||
715 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
571 | 716 | ||
572 | # | 717 | # |
573 | # Graphics support | 718 | # Display device support |
574 | # | 719 | # |
575 | # CONFIG_FB is not set | 720 | # CONFIG_DISPLAY_SUPPORT is not set |
576 | 721 | ||
577 | # | 722 | # |
578 | # Console display driver support | 723 | # Console display driver support |
579 | # | 724 | # |
580 | CONFIG_DUMMY_CONSOLE=y | 725 | CONFIG_DUMMY_CONSOLE=y |
726 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
727 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
728 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
729 | # CONFIG_FONTS is not set | ||
730 | CONFIG_FONT_8x8=y | ||
731 | CONFIG_FONT_8x16=y | ||
732 | CONFIG_LOGO=y | ||
733 | # CONFIG_LOGO_LINUX_MONO is not set | ||
734 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
735 | CONFIG_LOGO_LINUX_CLUT224=y | ||
581 | 736 | ||
582 | # | 737 | # |
583 | # Sound | 738 | # Sound |
584 | # | 739 | # |
585 | # CONFIG_SOUND is not set | 740 | # CONFIG_SOUND is not set |
586 | 741 | CONFIG_HID_SUPPORT=y | |
587 | # | 742 | CONFIG_HID=m |
588 | # USB support | 743 | # CONFIG_HID_DEBUG is not set |
589 | # | 744 | CONFIG_HIDRAW=y |
590 | # CONFIG_USB_ARCH_HAS_HCD is not set | 745 | # CONFIG_USB_SUPPORT is not set |
591 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
592 | |||
593 | # | ||
594 | # USB Gadget Support | ||
595 | # | ||
596 | # CONFIG_USB_GADGET is not set | ||
597 | |||
598 | # | ||
599 | # MMC/SD Card support | ||
600 | # | ||
601 | # CONFIG_MMC is not set | 746 | # CONFIG_MMC is not set |
747 | # CONFIG_MEMSTICK is not set | ||
748 | # CONFIG_NEW_LEDS is not set | ||
749 | # CONFIG_RTC_CLASS is not set | ||
602 | 750 | ||
603 | # | 751 | # |
604 | # InfiniBand support | 752 | # Userspace I/O |
605 | # | 753 | # |
606 | # CONFIG_INFINIBAND is not set | 754 | # CONFIG_UIO is not set |
607 | 755 | ||
608 | # | 756 | # |
609 | # Character devices | 757 | # Character devices |
@@ -614,10 +762,11 @@ CONFIG_DUMMY_CONSOLE=y | |||
614 | # | 762 | # |
615 | CONFIG_EXT2_FS=y | 763 | CONFIG_EXT2_FS=y |
616 | # CONFIG_EXT2_FS_XATTR is not set | 764 | # CONFIG_EXT2_FS_XATTR is not set |
765 | # CONFIG_EXT2_FS_XIP is not set | ||
617 | CONFIG_EXT3_FS=y | 766 | CONFIG_EXT3_FS=y |
618 | # CONFIG_EXT3_FS_XATTR is not set | 767 | # CONFIG_EXT3_FS_XATTR is not set |
768 | # CONFIG_EXT4DEV_FS is not set | ||
619 | CONFIG_JBD=y | 769 | CONFIG_JBD=y |
620 | # CONFIG_JBD_DEBUG is not set | ||
621 | CONFIG_REISERFS_FS=m | 770 | CONFIG_REISERFS_FS=m |
622 | # CONFIG_REISERFS_CHECK is not set | 771 | # CONFIG_REISERFS_CHECK is not set |
623 | # CONFIG_REISERFS_PROC_INFO is not set | 772 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -628,25 +777,29 @@ CONFIG_JFS_FS=m | |||
628 | # CONFIG_JFS_DEBUG is not set | 777 | # CONFIG_JFS_DEBUG is not set |
629 | # CONFIG_JFS_STATISTICS is not set | 778 | # CONFIG_JFS_STATISTICS is not set |
630 | CONFIG_FS_POSIX_ACL=y | 779 | CONFIG_FS_POSIX_ACL=y |
631 | |||
632 | # | ||
633 | # XFS support | ||
634 | # | ||
635 | CONFIG_XFS_FS=m | 780 | CONFIG_XFS_FS=m |
636 | CONFIG_XFS_EXPORT=y | ||
637 | # CONFIG_XFS_RT is not set | ||
638 | # CONFIG_XFS_QUOTA is not set | 781 | # CONFIG_XFS_QUOTA is not set |
639 | # CONFIG_XFS_SECURITY is not set | 782 | # CONFIG_XFS_SECURITY is not set |
640 | # CONFIG_XFS_POSIX_ACL is not set | 783 | # CONFIG_XFS_POSIX_ACL is not set |
641 | CONFIG_MINIX_FS=y | 784 | # CONFIG_XFS_RT is not set |
642 | # CONFIG_ROMFS_FS is not set | 785 | CONFIG_GFS2_FS=m |
786 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
787 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
788 | CONFIG_OCFS2_FS=m | ||
789 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
790 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
791 | CONFIG_DNOTIFY=y | ||
792 | CONFIG_INOTIFY=y | ||
793 | CONFIG_INOTIFY_USER=y | ||
643 | CONFIG_QUOTA=y | 794 | CONFIG_QUOTA=y |
795 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
796 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
644 | # CONFIG_QFMT_V1 is not set | 797 | # CONFIG_QFMT_V1 is not set |
645 | # CONFIG_QFMT_V2 is not set | 798 | # CONFIG_QFMT_V2 is not set |
646 | CONFIG_QUOTACTL=y | 799 | CONFIG_QUOTACTL=y |
647 | CONFIG_DNOTIFY=y | ||
648 | CONFIG_AUTOFS_FS=m | 800 | CONFIG_AUTOFS_FS=m |
649 | CONFIG_AUTOFS4_FS=m | 801 | CONFIG_AUTOFS4_FS=m |
802 | CONFIG_FUSE_FS=m | ||
650 | 803 | ||
651 | # | 804 | # |
652 | # CD-ROM/DVD Filesystems | 805 | # CD-ROM/DVD Filesystems |
@@ -654,7 +807,6 @@ CONFIG_AUTOFS4_FS=m | |||
654 | CONFIG_ISO9660_FS=y | 807 | CONFIG_ISO9660_FS=y |
655 | CONFIG_JOLIET=y | 808 | CONFIG_JOLIET=y |
656 | CONFIG_ZISOFS=y | 809 | CONFIG_ZISOFS=y |
657 | CONFIG_ZISOFS_FS=y | ||
658 | CONFIG_UDF_FS=m | 810 | CONFIG_UDF_FS=m |
659 | CONFIG_UDF_NLS=y | 811 | CONFIG_UDF_NLS=y |
660 | 812 | ||
@@ -673,13 +825,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
673 | # | 825 | # |
674 | CONFIG_PROC_FS=y | 826 | CONFIG_PROC_FS=y |
675 | CONFIG_PROC_KCORE=y | 827 | CONFIG_PROC_KCORE=y |
828 | CONFIG_PROC_SYSCTL=y | ||
676 | CONFIG_SYSFS=y | 829 | CONFIG_SYSFS=y |
677 | # CONFIG_DEVFS_FS is not set | ||
678 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
679 | CONFIG_TMPFS=y | 830 | CONFIG_TMPFS=y |
680 | # CONFIG_TMPFS_XATTR is not set | 831 | # CONFIG_TMPFS_POSIX_ACL is not set |
681 | # CONFIG_HUGETLB_PAGE is not set | 832 | # CONFIG_HUGETLB_PAGE is not set |
682 | CONFIG_RAMFS=y | 833 | CONFIG_CONFIGFS_FS=m |
683 | 834 | ||
684 | # | 835 | # |
685 | # Miscellaneous filesystems | 836 | # Miscellaneous filesystems |
@@ -693,44 +844,40 @@ CONFIG_HFSPLUS_FS=m | |||
693 | # CONFIG_EFS_FS is not set | 844 | # CONFIG_EFS_FS is not set |
694 | CONFIG_CRAMFS=m | 845 | CONFIG_CRAMFS=m |
695 | # CONFIG_VXFS_FS is not set | 846 | # CONFIG_VXFS_FS is not set |
847 | CONFIG_MINIX_FS=y | ||
696 | CONFIG_HPFS_FS=m | 848 | CONFIG_HPFS_FS=m |
697 | # CONFIG_QNX4FS_FS is not set | 849 | # CONFIG_QNX4FS_FS is not set |
850 | # CONFIG_ROMFS_FS is not set | ||
698 | CONFIG_SYSV_FS=m | 851 | CONFIG_SYSV_FS=m |
699 | CONFIG_UFS_FS=m | 852 | CONFIG_UFS_FS=m |
700 | # CONFIG_UFS_FS_WRITE is not set | 853 | # CONFIG_UFS_FS_WRITE is not set |
701 | 854 | # CONFIG_UFS_DEBUG is not set | |
702 | # | 855 | CONFIG_NETWORK_FILESYSTEMS=y |
703 | # Network File Systems | ||
704 | # | ||
705 | CONFIG_NFS_FS=y | 856 | CONFIG_NFS_FS=y |
706 | CONFIG_NFS_V3=y | 857 | CONFIG_NFS_V3=y |
858 | # CONFIG_NFS_V3_ACL is not set | ||
707 | CONFIG_NFS_V4=y | 859 | CONFIG_NFS_V4=y |
708 | # CONFIG_NFS_DIRECTIO is not set | 860 | # CONFIG_NFS_DIRECTIO is not set |
709 | CONFIG_NFSD=m | 861 | CONFIG_NFSD=m |
710 | CONFIG_NFSD_V3=y | 862 | CONFIG_NFSD_V3=y |
711 | CONFIG_NFSD_V4=y | 863 | # CONFIG_NFSD_V3_ACL is not set |
864 | # CONFIG_NFSD_V4 is not set | ||
712 | CONFIG_NFSD_TCP=y | 865 | CONFIG_NFSD_TCP=y |
713 | CONFIG_ROOT_NFS=y | 866 | CONFIG_ROOT_NFS=y |
714 | CONFIG_LOCKD=y | 867 | CONFIG_LOCKD=y |
715 | CONFIG_LOCKD_V4=y | 868 | CONFIG_LOCKD_V4=y |
716 | CONFIG_EXPORTFS=m | 869 | CONFIG_EXPORTFS=m |
870 | CONFIG_NFS_COMMON=y | ||
717 | CONFIG_SUNRPC=y | 871 | CONFIG_SUNRPC=y |
718 | CONFIG_SUNRPC_GSS=y | 872 | CONFIG_SUNRPC_GSS=y |
873 | CONFIG_SUNRPC_BIND34=y | ||
719 | CONFIG_RPCSEC_GSS_KRB5=y | 874 | CONFIG_RPCSEC_GSS_KRB5=y |
720 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 875 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
721 | CONFIG_SMB_FS=m | 876 | CONFIG_SMB_FS=m |
722 | CONFIG_SMB_NLS_DEFAULT=y | 877 | CONFIG_SMB_NLS_DEFAULT=y |
723 | CONFIG_SMB_NLS_REMOTE="cp437" | 878 | CONFIG_SMB_NLS_REMOTE="cp437" |
724 | # CONFIG_CIFS is not set | 879 | # CONFIG_CIFS is not set |
725 | CONFIG_NCP_FS=m | 880 | # CONFIG_NCP_FS is not set |
726 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
727 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
728 | # CONFIG_NCPFS_STRONG is not set | ||
729 | CONFIG_NCPFS_NFS_NS=y | ||
730 | CONFIG_NCPFS_OS2_NS=y | ||
731 | # CONFIG_NCPFS_SMALLDOS is not set | ||
732 | CONFIG_NCPFS_NLS=y | ||
733 | # CONFIG_NCPFS_EXTRAS is not set | ||
734 | CONFIG_CODA_FS=m | 881 | CONFIG_CODA_FS=m |
735 | # CONFIG_CODA_FS_OLD_API is not set | 882 | # CONFIG_CODA_FS_OLD_API is not set |
736 | # CONFIG_AFS_FS is not set | 883 | # CONFIG_AFS_FS is not set |
@@ -740,10 +887,6 @@ CONFIG_CODA_FS=m | |||
740 | # | 887 | # |
741 | # CONFIG_PARTITION_ADVANCED is not set | 888 | # CONFIG_PARTITION_ADVANCED is not set |
742 | CONFIG_MSDOS_PARTITION=y | 889 | CONFIG_MSDOS_PARTITION=y |
743 | |||
744 | # | ||
745 | # Native Language Support | ||
746 | # | ||
747 | CONFIG_NLS=y | 890 | CONFIG_NLS=y |
748 | CONFIG_NLS_DEFAULT="iso8859-1" | 891 | CONFIG_NLS_DEFAULT="iso8859-1" |
749 | CONFIG_NLS_CODEPAGE_437=y | 892 | CONFIG_NLS_CODEPAGE_437=y |
@@ -784,35 +927,42 @@ CONFIG_NLS_ISO8859_15=m | |||
784 | CONFIG_NLS_KOI8_R=m | 927 | CONFIG_NLS_KOI8_R=m |
785 | CONFIG_NLS_KOI8_U=m | 928 | CONFIG_NLS_KOI8_U=m |
786 | CONFIG_NLS_UTF8=m | 929 | CONFIG_NLS_UTF8=m |
930 | CONFIG_DLM=m | ||
931 | # CONFIG_DLM_DEBUG is not set | ||
787 | 932 | ||
788 | # | 933 | # |
789 | # Kernel hacking | 934 | # Kernel hacking |
790 | # | 935 | # |
791 | # CONFIG_PRINTK_TIME is not set | 936 | # CONFIG_PRINTK_TIME is not set |
792 | CONFIG_DEBUG_KERNEL=y | 937 | CONFIG_ENABLE_WARN_DEPRECATED=y |
938 | CONFIG_ENABLE_MUST_CHECK=y | ||
793 | CONFIG_MAGIC_SYSRQ=y | 939 | CONFIG_MAGIC_SYSRQ=y |
794 | CONFIG_LOG_BUF_SHIFT=16 | 940 | # CONFIG_UNUSED_SYMBOLS is not set |
795 | # CONFIG_SCHEDSTATS is not set | ||
796 | # CONFIG_DEBUG_SLAB is not set | ||
797 | # CONFIG_DEBUG_SPINLOCK is not set | ||
798 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
799 | # CONFIG_DEBUG_KOBJECT is not set | ||
800 | CONFIG_DEBUG_BUGVERBOSE=y | ||
801 | # CONFIG_DEBUG_INFO is not set | ||
802 | # CONFIG_DEBUG_FS is not set | 941 | # CONFIG_DEBUG_FS is not set |
803 | # CONFIG_FRAME_POINTER is not set | 942 | # CONFIG_HEADERS_CHECK is not set |
943 | # CONFIG_DEBUG_KERNEL is not set | ||
944 | CONFIG_DEBUG_BUGVERBOSE=y | ||
945 | # CONFIG_SAMPLES is not set | ||
804 | 946 | ||
805 | # | 947 | # |
806 | # Security options | 948 | # Security options |
807 | # | 949 | # |
808 | # CONFIG_KEYS is not set | 950 | # CONFIG_KEYS is not set |
809 | # CONFIG_SECURITY is not set | 951 | # CONFIG_SECURITY is not set |
810 | 952 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
811 | # | 953 | CONFIG_XOR_BLOCKS=m |
812 | # Cryptographic options | 954 | CONFIG_ASYNC_CORE=m |
813 | # | 955 | CONFIG_ASYNC_MEMCPY=m |
956 | CONFIG_ASYNC_XOR=m | ||
814 | CONFIG_CRYPTO=y | 957 | CONFIG_CRYPTO=y |
958 | CONFIG_CRYPTO_ALGAPI=y | ||
959 | CONFIG_CRYPTO_AEAD=m | ||
960 | CONFIG_CRYPTO_BLKCIPHER=y | ||
961 | CONFIG_CRYPTO_SEQIV=m | ||
962 | CONFIG_CRYPTO_HASH=y | ||
963 | CONFIG_CRYPTO_MANAGER=y | ||
815 | CONFIG_CRYPTO_HMAC=y | 964 | CONFIG_CRYPTO_HMAC=y |
965 | CONFIG_CRYPTO_XCBC=m | ||
816 | CONFIG_CRYPTO_NULL=m | 966 | CONFIG_CRYPTO_NULL=m |
817 | CONFIG_CRYPTO_MD4=m | 967 | CONFIG_CRYPTO_MD4=m |
818 | CONFIG_CRYPTO_MD5=y | 968 | CONFIG_CRYPTO_MD5=y |
@@ -821,9 +971,21 @@ CONFIG_CRYPTO_SHA256=m | |||
821 | CONFIG_CRYPTO_SHA512=m | 971 | CONFIG_CRYPTO_SHA512=m |
822 | CONFIG_CRYPTO_WP512=m | 972 | CONFIG_CRYPTO_WP512=m |
823 | CONFIG_CRYPTO_TGR192=m | 973 | CONFIG_CRYPTO_TGR192=m |
974 | CONFIG_CRYPTO_GF128MUL=m | ||
975 | CONFIG_CRYPTO_ECB=m | ||
976 | CONFIG_CRYPTO_CBC=y | ||
977 | CONFIG_CRYPTO_PCBC=m | ||
978 | CONFIG_CRYPTO_LRW=m | ||
979 | CONFIG_CRYPTO_XTS=m | ||
980 | CONFIG_CRYPTO_CTR=m | ||
981 | CONFIG_CRYPTO_GCM=m | ||
982 | CONFIG_CRYPTO_CCM=m | ||
983 | CONFIG_CRYPTO_CRYPTD=m | ||
824 | CONFIG_CRYPTO_DES=y | 984 | CONFIG_CRYPTO_DES=y |
985 | CONFIG_CRYPTO_FCRYPT=m | ||
825 | CONFIG_CRYPTO_BLOWFISH=m | 986 | CONFIG_CRYPTO_BLOWFISH=m |
826 | CONFIG_CRYPTO_TWOFISH=m | 987 | CONFIG_CRYPTO_TWOFISH=m |
988 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
827 | CONFIG_CRYPTO_SERPENT=m | 989 | CONFIG_CRYPTO_SERPENT=m |
828 | CONFIG_CRYPTO_AES=m | 990 | CONFIG_CRYPTO_AES=m |
829 | CONFIG_CRYPTO_CAST5=m | 991 | CONFIG_CRYPTO_CAST5=m |
@@ -832,20 +994,35 @@ CONFIG_CRYPTO_TEA=m | |||
832 | CONFIG_CRYPTO_ARC4=m | 994 | CONFIG_CRYPTO_ARC4=m |
833 | CONFIG_CRYPTO_KHAZAD=m | 995 | CONFIG_CRYPTO_KHAZAD=m |
834 | CONFIG_CRYPTO_ANUBIS=m | 996 | CONFIG_CRYPTO_ANUBIS=m |
997 | CONFIG_CRYPTO_SEED=m | ||
998 | CONFIG_CRYPTO_SALSA20=m | ||
835 | CONFIG_CRYPTO_DEFLATE=m | 999 | CONFIG_CRYPTO_DEFLATE=m |
836 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1000 | CONFIG_CRYPTO_MICHAEL_MIC=m |
837 | CONFIG_CRYPTO_CRC32C=m | 1001 | CONFIG_CRYPTO_CRC32C=m |
1002 | CONFIG_CRYPTO_CAMELLIA=m | ||
838 | CONFIG_CRYPTO_TEST=m | 1003 | CONFIG_CRYPTO_TEST=m |
839 | 1004 | CONFIG_CRYPTO_AUTHENC=m | |
840 | # | 1005 | CONFIG_CRYPTO_LZO=m |
841 | # Hardware crypto devices | 1006 | # CONFIG_CRYPTO_HW is not set |
842 | # | ||
843 | 1007 | ||
844 | # | 1008 | # |
845 | # Library routines | 1009 | # Library routines |
846 | # | 1010 | # |
1011 | CONFIG_BITREVERSE=y | ||
847 | CONFIG_CRC_CCITT=m | 1012 | CONFIG_CRC_CCITT=m |
1013 | CONFIG_CRC16=m | ||
1014 | # CONFIG_CRC_ITU_T is not set | ||
848 | CONFIG_CRC32=y | 1015 | CONFIG_CRC32=y |
1016 | # CONFIG_CRC7 is not set | ||
849 | CONFIG_LIBCRC32C=m | 1017 | CONFIG_LIBCRC32C=m |
850 | CONFIG_ZLIB_INFLATE=y | 1018 | CONFIG_ZLIB_INFLATE=y |
851 | CONFIG_ZLIB_DEFLATE=m | 1019 | CONFIG_ZLIB_DEFLATE=m |
1020 | CONFIG_LZO_COMPRESS=m | ||
1021 | CONFIG_LZO_DECOMPRESS=m | ||
1022 | CONFIG_TEXTSEARCH=y | ||
1023 | CONFIG_TEXTSEARCH_KMP=m | ||
1024 | CONFIG_TEXTSEARCH_BM=m | ||
1025 | CONFIG_TEXTSEARCH_FSM=m | ||
1026 | CONFIG_PLIST=y | ||
1027 | CONFIG_HAS_IOMEM=y | ||
1028 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig index ff9dffa5b860..738bca695a88 100644 --- a/arch/m68k/configs/mac_defconfig +++ b/arch/m68k/configs/mac_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:45 2005 | 4 | # Wed Apr 2 20:46:14 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-mac" | 27 | CONFIG_LOCALVERSION="-mac" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -82,10 +130,24 @@ CONFIG_M68030=y | |||
82 | CONFIG_M68040=y | 130 | CONFIG_M68040=y |
83 | # CONFIG_M68060 is not set | 131 | # CONFIG_M68060 is not set |
84 | CONFIG_MMU_MOTOROLA=y | 132 | CONFIG_MMU_MOTOROLA=y |
85 | CONFIG_M68KFPU_EMU=y | 133 | # CONFIG_M68KFPU_EMU is not set |
86 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
87 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
88 | # CONFIG_ADVANCED is not set | 134 | # CONFIG_ADVANCED is not set |
135 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
136 | CONFIG_NODES_SHIFT=3 | ||
137 | CONFIG_SELECT_MEMORY_MODEL=y | ||
138 | # CONFIG_FLATMEM_MANUAL is not set | ||
139 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
140 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
141 | CONFIG_DISCONTIGMEM=y | ||
142 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
143 | CONFIG_NEED_MULTIPLE_NODES=y | ||
144 | # CONFIG_SPARSEMEM_STATIC is not set | ||
145 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
146 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
147 | # CONFIG_RESOURCES_64BIT is not set | ||
148 | CONFIG_ZONE_DMA_FLAG=1 | ||
149 | CONFIG_BOUNCE=y | ||
150 | CONFIG_VIRT_TO_BUS=y | ||
89 | 151 | ||
90 | # | 152 | # |
91 | # General setup | 153 | # General setup |
@@ -95,171 +157,11 @@ CONFIG_BINFMT_AOUT=m | |||
95 | CONFIG_BINFMT_MISC=m | 157 | CONFIG_BINFMT_MISC=m |
96 | # CONFIG_HEARTBEAT is not set | 158 | # CONFIG_HEARTBEAT is not set |
97 | CONFIG_PROC_HARDWARE=y | 159 | CONFIG_PROC_HARDWARE=y |
160 | CONFIG_ZONE_DMA=y | ||
161 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
98 | 162 | ||
99 | # | 163 | # |
100 | # Device Drivers | 164 | # Networking |
101 | # | ||
102 | |||
103 | # | ||
104 | # Generic Driver Options | ||
105 | # | ||
106 | CONFIG_STANDALONE=y | ||
107 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
108 | CONFIG_FW_LOADER=m | ||
109 | # CONFIG_DEBUG_DRIVER is not set | ||
110 | |||
111 | # | ||
112 | # Memory Technology Devices (MTD) | ||
113 | # | ||
114 | # CONFIG_MTD is not set | ||
115 | |||
116 | # | ||
117 | # Parallel port support | ||
118 | # | ||
119 | # CONFIG_PARPORT is not set | ||
120 | |||
121 | # | ||
122 | # Plug and Play support | ||
123 | # | ||
124 | |||
125 | # | ||
126 | # Block devices | ||
127 | # | ||
128 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
129 | CONFIG_BLK_DEV_LOOP=y | ||
130 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
131 | CONFIG_BLK_DEV_NBD=m | ||
132 | CONFIG_BLK_DEV_RAM=y | ||
133 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
134 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
135 | CONFIG_BLK_DEV_INITRD=y | ||
136 | CONFIG_INITRAMFS_SOURCE="" | ||
137 | CONFIG_CDROM_PKTCDVD=m | ||
138 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
139 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
140 | |||
141 | # | ||
142 | # IO Schedulers | ||
143 | # | ||
144 | CONFIG_IOSCHED_NOOP=y | ||
145 | CONFIG_IOSCHED_AS=y | ||
146 | CONFIG_IOSCHED_DEADLINE=y | ||
147 | CONFIG_IOSCHED_CFQ=y | ||
148 | CONFIG_ATA_OVER_ETH=m | ||
149 | |||
150 | # | ||
151 | # ATA/ATAPI/MFM/RLL support | ||
152 | # | ||
153 | CONFIG_IDE=y | ||
154 | CONFIG_BLK_DEV_IDE=y | ||
155 | |||
156 | # | ||
157 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
158 | # | ||
159 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
160 | CONFIG_BLK_DEV_IDEDISK=y | ||
161 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
162 | CONFIG_BLK_DEV_IDECD=y | ||
163 | CONFIG_BLK_DEV_IDETAPE=m | ||
164 | CONFIG_BLK_DEV_IDEFLOPPY=m | ||
165 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
166 | # CONFIG_IDE_TASK_IOCTL is not set | ||
167 | |||
168 | # | ||
169 | # IDE chipset support/bugfixes | ||
170 | # | ||
171 | CONFIG_IDE_GENERIC=y | ||
172 | # CONFIG_IDE_ARM is not set | ||
173 | CONFIG_BLK_DEV_MAC_IDE=y | ||
174 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
175 | # CONFIG_IDEDMA_AUTO is not set | ||
176 | # CONFIG_BLK_DEV_HD is not set | ||
177 | |||
178 | # | ||
179 | # SCSI device support | ||
180 | # | ||
181 | CONFIG_SCSI=y | ||
182 | CONFIG_SCSI_PROC_FS=y | ||
183 | |||
184 | # | ||
185 | # SCSI support type (disk, tape, CD-ROM) | ||
186 | # | ||
187 | CONFIG_BLK_DEV_SD=y | ||
188 | CONFIG_CHR_DEV_ST=m | ||
189 | CONFIG_CHR_DEV_OSST=m | ||
190 | CONFIG_BLK_DEV_SR=y | ||
191 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
192 | CONFIG_CHR_DEV_SG=m | ||
193 | |||
194 | # | ||
195 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
196 | # | ||
197 | # CONFIG_SCSI_MULTI_LUN is not set | ||
198 | CONFIG_SCSI_CONSTANTS=y | ||
199 | # CONFIG_SCSI_LOGGING is not set | ||
200 | |||
201 | # | ||
202 | # SCSI Transport Attributes | ||
203 | # | ||
204 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
205 | # CONFIG_SCSI_FC_ATTRS is not set | ||
206 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
207 | |||
208 | # | ||
209 | # SCSI low-level drivers | ||
210 | # | ||
211 | # CONFIG_SCSI_SATA is not set | ||
212 | # CONFIG_SCSI_DEBUG is not set | ||
213 | CONFIG_MAC_SCSI=y | ||
214 | CONFIG_SCSI_MAC_ESP=y | ||
215 | |||
216 | # | ||
217 | # Multi-device support (RAID and LVM) | ||
218 | # | ||
219 | CONFIG_MD=y | ||
220 | CONFIG_BLK_DEV_MD=m | ||
221 | CONFIG_MD_LINEAR=m | ||
222 | CONFIG_MD_RAID0=m | ||
223 | CONFIG_MD_RAID1=m | ||
224 | # CONFIG_MD_RAID10 is not set | ||
225 | CONFIG_MD_RAID5=m | ||
226 | CONFIG_MD_RAID6=m | ||
227 | CONFIG_MD_MULTIPATH=m | ||
228 | # CONFIG_MD_FAULTY is not set | ||
229 | CONFIG_BLK_DEV_DM=m | ||
230 | CONFIG_DM_CRYPT=m | ||
231 | CONFIG_DM_SNAPSHOT=m | ||
232 | CONFIG_DM_MIRROR=m | ||
233 | CONFIG_DM_ZERO=m | ||
234 | CONFIG_DM_MULTIPATH=m | ||
235 | CONFIG_DM_MULTIPATH_EMC=m | ||
236 | |||
237 | # | ||
238 | # Fusion MPT device support | ||
239 | # | ||
240 | |||
241 | # | ||
242 | # IEEE 1394 (FireWire) support | ||
243 | # | ||
244 | |||
245 | # | ||
246 | # I2O device support | ||
247 | # | ||
248 | |||
249 | # | ||
250 | # Macintosh device drivers | ||
251 | # | ||
252 | CONFIG_ADB=y | ||
253 | CONFIG_ADB_MACII=y | ||
254 | CONFIG_ADB_MACIISI=y | ||
255 | CONFIG_ADB_IOP=y | ||
256 | CONFIG_ADB_PMU68K=y | ||
257 | CONFIG_ADB_CUDA=y | ||
258 | CONFIG_INPUT_ADBHID=y | ||
259 | CONFIG_MAC_EMUMOUSEBTN=y | ||
260 | |||
261 | # | ||
262 | # Networking support | ||
263 | # | 165 | # |
264 | CONFIG_NET=y | 166 | CONFIG_NET=y |
265 | 167 | ||
@@ -269,10 +171,17 @@ CONFIG_NET=y | |||
269 | CONFIG_PACKET=y | 171 | CONFIG_PACKET=y |
270 | # CONFIG_PACKET_MMAP is not set | 172 | # CONFIG_PACKET_MMAP is not set |
271 | CONFIG_UNIX=y | 173 | CONFIG_UNIX=y |
174 | CONFIG_XFRM=y | ||
175 | # CONFIG_XFRM_USER is not set | ||
176 | # CONFIG_XFRM_SUB_POLICY is not set | ||
177 | CONFIG_XFRM_MIGRATE=y | ||
178 | # CONFIG_XFRM_STATISTICS is not set | ||
272 | CONFIG_NET_KEY=y | 179 | CONFIG_NET_KEY=y |
180 | CONFIG_NET_KEY_MIGRATE=y | ||
273 | CONFIG_INET=y | 181 | CONFIG_INET=y |
274 | # CONFIG_IP_MULTICAST is not set | 182 | # CONFIG_IP_MULTICAST is not set |
275 | # CONFIG_IP_ADVANCED_ROUTER is not set | 183 | # CONFIG_IP_ADVANCED_ROUTER is not set |
184 | CONFIG_IP_FIB_HASH=y | ||
276 | # CONFIG_IP_PNP is not set | 185 | # CONFIG_IP_PNP is not set |
277 | CONFIG_NET_IPIP=m | 186 | CONFIG_NET_IPIP=m |
278 | CONFIG_NET_IPGRE=m | 187 | CONFIG_NET_IPGRE=m |
@@ -281,148 +190,202 @@ CONFIG_SYN_COOKIES=y | |||
281 | CONFIG_INET_AH=m | 190 | CONFIG_INET_AH=m |
282 | CONFIG_INET_ESP=m | 191 | CONFIG_INET_ESP=m |
283 | CONFIG_INET_IPCOMP=m | 192 | CONFIG_INET_IPCOMP=m |
193 | CONFIG_INET_XFRM_TUNNEL=m | ||
284 | CONFIG_INET_TUNNEL=m | 194 | CONFIG_INET_TUNNEL=m |
285 | CONFIG_IP_TCPDIAG=m | 195 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
286 | CONFIG_IP_TCPDIAG_IPV6=y | 196 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
287 | 197 | CONFIG_INET_XFRM_MODE_BEET=m | |
288 | # | 198 | CONFIG_INET_LRO=m |
289 | # IP: Virtual Server Configuration | 199 | CONFIG_INET_DIAG=m |
290 | # | 200 | CONFIG_INET_TCP_DIAG=m |
201 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
202 | CONFIG_TCP_CONG_CUBIC=y | ||
203 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
204 | # CONFIG_TCP_MD5SIG is not set | ||
291 | # CONFIG_IP_VS is not set | 205 | # CONFIG_IP_VS is not set |
292 | CONFIG_IPV6=m | 206 | CONFIG_IPV6=m |
293 | CONFIG_IPV6_PRIVACY=y | 207 | CONFIG_IPV6_PRIVACY=y |
208 | CONFIG_IPV6_ROUTER_PREF=y | ||
209 | CONFIG_IPV6_ROUTE_INFO=y | ||
210 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
294 | CONFIG_INET6_AH=m | 211 | CONFIG_INET6_AH=m |
295 | CONFIG_INET6_ESP=m | 212 | CONFIG_INET6_ESP=m |
296 | CONFIG_INET6_IPCOMP=m | 213 | CONFIG_INET6_IPCOMP=m |
214 | # CONFIG_IPV6_MIP6 is not set | ||
215 | CONFIG_INET6_XFRM_TUNNEL=m | ||
297 | CONFIG_INET6_TUNNEL=m | 216 | CONFIG_INET6_TUNNEL=m |
217 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
218 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
219 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
220 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
221 | CONFIG_IPV6_SIT=m | ||
298 | CONFIG_IPV6_TUNNEL=m | 222 | CONFIG_IPV6_TUNNEL=m |
223 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
224 | # CONFIG_NETWORK_SECMARK is not set | ||
299 | CONFIG_NETFILTER=y | 225 | CONFIG_NETFILTER=y |
300 | # CONFIG_NETFILTER_DEBUG is not set | 226 | # CONFIG_NETFILTER_DEBUG is not set |
227 | CONFIG_NETFILTER_ADVANCED=y | ||
228 | |||
229 | # | ||
230 | # Core Netfilter Configuration | ||
231 | # | ||
232 | CONFIG_NETFILTER_NETLINK=m | ||
233 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
234 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
235 | CONFIG_NF_CONNTRACK=m | ||
236 | CONFIG_NF_CT_ACCT=y | ||
237 | CONFIG_NF_CONNTRACK_MARK=y | ||
238 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
239 | CONFIG_NF_CT_PROTO_GRE=m | ||
240 | CONFIG_NF_CT_PROTO_SCTP=m | ||
241 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
242 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
243 | CONFIG_NF_CONNTRACK_FTP=m | ||
244 | CONFIG_NF_CONNTRACK_H323=m | ||
245 | CONFIG_NF_CONNTRACK_IRC=m | ||
246 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
247 | CONFIG_NF_CONNTRACK_PPTP=m | ||
248 | CONFIG_NF_CONNTRACK_SANE=m | ||
249 | CONFIG_NF_CONNTRACK_SIP=m | ||
250 | CONFIG_NF_CONNTRACK_TFTP=m | ||
251 | # CONFIG_NF_CT_NETLINK is not set | ||
252 | CONFIG_NETFILTER_XTABLES=m | ||
253 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
254 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
255 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
264 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
265 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
301 | 293 | ||
302 | # | 294 | # |
303 | # IP: Netfilter Configuration | 295 | # IP: Netfilter Configuration |
304 | # | 296 | # |
305 | CONFIG_IP_NF_CONNTRACK=m | 297 | CONFIG_NF_CONNTRACK_IPV4=m |
306 | # CONFIG_IP_NF_CT_ACCT is not set | 298 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
307 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
308 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
309 | CONFIG_IP_NF_FTP=m | ||
310 | CONFIG_IP_NF_IRC=m | ||
311 | CONFIG_IP_NF_TFTP=m | ||
312 | CONFIG_IP_NF_AMANDA=m | ||
313 | CONFIG_IP_NF_QUEUE=m | 299 | CONFIG_IP_NF_QUEUE=m |
314 | CONFIG_IP_NF_IPTABLES=m | 300 | CONFIG_IP_NF_IPTABLES=m |
315 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
316 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
317 | CONFIG_IP_NF_MATCH_MAC=m | ||
318 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
319 | CONFIG_IP_NF_MATCH_MARK=m | ||
320 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
321 | CONFIG_IP_NF_MATCH_TOS=m | ||
322 | CONFIG_IP_NF_MATCH_RECENT=m | 301 | CONFIG_IP_NF_MATCH_RECENT=m |
323 | CONFIG_IP_NF_MATCH_ECN=m | 302 | CONFIG_IP_NF_MATCH_ECN=m |
324 | CONFIG_IP_NF_MATCH_DSCP=m | 303 | CONFIG_IP_NF_MATCH_AH=m |
325 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
326 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
327 | CONFIG_IP_NF_MATCH_TTL=m | 304 | CONFIG_IP_NF_MATCH_TTL=m |
328 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
329 | CONFIG_IP_NF_MATCH_HELPER=m | ||
330 | CONFIG_IP_NF_MATCH_STATE=m | ||
331 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
332 | CONFIG_IP_NF_MATCH_OWNER=m | ||
333 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 305 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
334 | CONFIG_IP_NF_MATCH_REALM=m | ||
335 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
336 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
337 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
338 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
339 | CONFIG_IP_NF_FILTER=m | 306 | CONFIG_IP_NF_FILTER=m |
340 | CONFIG_IP_NF_TARGET_REJECT=m | 307 | CONFIG_IP_NF_TARGET_REJECT=m |
341 | CONFIG_IP_NF_TARGET_LOG=m | 308 | CONFIG_IP_NF_TARGET_LOG=m |
342 | CONFIG_IP_NF_TARGET_ULOG=m | 309 | CONFIG_IP_NF_TARGET_ULOG=m |
343 | CONFIG_IP_NF_TARGET_TCPMSS=m | 310 | CONFIG_NF_NAT=m |
344 | CONFIG_IP_NF_NAT=m | 311 | CONFIG_NF_NAT_NEEDED=y |
345 | CONFIG_IP_NF_NAT_NEEDED=y | ||
346 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 312 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
347 | CONFIG_IP_NF_TARGET_REDIRECT=m | 313 | CONFIG_IP_NF_TARGET_REDIRECT=m |
348 | CONFIG_IP_NF_TARGET_NETMAP=m | 314 | CONFIG_IP_NF_TARGET_NETMAP=m |
349 | CONFIG_IP_NF_TARGET_SAME=m | 315 | CONFIG_NF_NAT_SNMP_BASIC=m |
350 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 316 | CONFIG_NF_NAT_PROTO_GRE=m |
351 | CONFIG_IP_NF_NAT_IRC=m | 317 | CONFIG_NF_NAT_FTP=m |
352 | CONFIG_IP_NF_NAT_FTP=m | 318 | CONFIG_NF_NAT_IRC=m |
353 | CONFIG_IP_NF_NAT_TFTP=m | 319 | CONFIG_NF_NAT_TFTP=m |
354 | CONFIG_IP_NF_NAT_AMANDA=m | 320 | CONFIG_NF_NAT_AMANDA=m |
321 | CONFIG_NF_NAT_PPTP=m | ||
322 | CONFIG_NF_NAT_H323=m | ||
323 | CONFIG_NF_NAT_SIP=m | ||
355 | CONFIG_IP_NF_MANGLE=m | 324 | CONFIG_IP_NF_MANGLE=m |
356 | CONFIG_IP_NF_TARGET_TOS=m | ||
357 | CONFIG_IP_NF_TARGET_ECN=m | 325 | CONFIG_IP_NF_TARGET_ECN=m |
358 | CONFIG_IP_NF_TARGET_DSCP=m | 326 | CONFIG_IP_NF_TARGET_TTL=m |
359 | CONFIG_IP_NF_TARGET_MARK=m | 327 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
360 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
361 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
362 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
363 | CONFIG_IP_NF_RAW=m | 328 | CONFIG_IP_NF_RAW=m |
364 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
365 | CONFIG_IP_NF_ARPTABLES=m | 329 | CONFIG_IP_NF_ARPTABLES=m |
366 | CONFIG_IP_NF_ARPFILTER=m | 330 | CONFIG_IP_NF_ARPFILTER=m |
367 | CONFIG_IP_NF_ARP_MANGLE=m | 331 | CONFIG_IP_NF_ARP_MANGLE=m |
368 | 332 | ||
369 | # | 333 | # |
370 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 334 | # IPv6: Netfilter Configuration |
371 | # | 335 | # |
336 | CONFIG_NF_CONNTRACK_IPV6=m | ||
372 | CONFIG_IP6_NF_QUEUE=m | 337 | CONFIG_IP6_NF_QUEUE=m |
373 | CONFIG_IP6_NF_IPTABLES=m | 338 | CONFIG_IP6_NF_IPTABLES=m |
374 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
375 | CONFIG_IP6_NF_MATCH_MAC=m | ||
376 | CONFIG_IP6_NF_MATCH_RT=m | 339 | CONFIG_IP6_NF_MATCH_RT=m |
377 | CONFIG_IP6_NF_MATCH_OPTS=m | 340 | CONFIG_IP6_NF_MATCH_OPTS=m |
378 | CONFIG_IP6_NF_MATCH_FRAG=m | 341 | CONFIG_IP6_NF_MATCH_FRAG=m |
379 | CONFIG_IP6_NF_MATCH_HL=m | 342 | CONFIG_IP6_NF_MATCH_HL=m |
380 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
381 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
382 | CONFIG_IP6_NF_MATCH_MARK=m | ||
383 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 343 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
384 | CONFIG_IP6_NF_MATCH_AHESP=m | 344 | CONFIG_IP6_NF_MATCH_AH=m |
385 | CONFIG_IP6_NF_MATCH_LENGTH=m | 345 | CONFIG_IP6_NF_MATCH_MH=m |
386 | CONFIG_IP6_NF_MATCH_EUI64=m | 346 | CONFIG_IP6_NF_MATCH_EUI64=m |
387 | CONFIG_IP6_NF_FILTER=m | 347 | CONFIG_IP6_NF_FILTER=m |
388 | CONFIG_IP6_NF_TARGET_LOG=m | 348 | CONFIG_IP6_NF_TARGET_LOG=m |
349 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
389 | CONFIG_IP6_NF_MANGLE=m | 350 | CONFIG_IP6_NF_MANGLE=m |
390 | CONFIG_IP6_NF_TARGET_MARK=m | 351 | CONFIG_IP6_NF_TARGET_HL=m |
391 | CONFIG_IP6_NF_RAW=m | 352 | CONFIG_IP6_NF_RAW=m |
392 | CONFIG_XFRM=y | 353 | CONFIG_IP_DCCP=m |
393 | CONFIG_XFRM_USER=m | 354 | CONFIG_INET_DCCP_DIAG=m |
355 | CONFIG_IP_DCCP_ACKVEC=y | ||
394 | 356 | ||
395 | # | 357 | # |
396 | # SCTP Configuration (EXPERIMENTAL) | 358 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
397 | # | 359 | # |
360 | CONFIG_IP_DCCP_CCID2=m | ||
361 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
362 | CONFIG_IP_DCCP_CCID3=m | ||
363 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
364 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
365 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
398 | CONFIG_IP_SCTP=m | 366 | CONFIG_IP_SCTP=m |
399 | # CONFIG_SCTP_DBG_MSG is not set | 367 | # CONFIG_SCTP_DBG_MSG is not set |
400 | # CONFIG_SCTP_DBG_OBJCNT is not set | 368 | # CONFIG_SCTP_DBG_OBJCNT is not set |
401 | # CONFIG_SCTP_HMAC_NONE is not set | 369 | # CONFIG_SCTP_HMAC_NONE is not set |
402 | # CONFIG_SCTP_HMAC_SHA1 is not set | 370 | # CONFIG_SCTP_HMAC_SHA1 is not set |
403 | CONFIG_SCTP_HMAC_MD5=y | 371 | CONFIG_SCTP_HMAC_MD5=y |
372 | # CONFIG_TIPC is not set | ||
404 | # CONFIG_ATM is not set | 373 | # CONFIG_ATM is not set |
405 | # CONFIG_BRIDGE is not set | 374 | # CONFIG_BRIDGE is not set |
406 | # CONFIG_VLAN_8021Q is not set | 375 | # CONFIG_VLAN_8021Q is not set |
407 | # CONFIG_DECNET is not set | 376 | # CONFIG_DECNET is not set |
408 | CONFIG_LLC=m | 377 | CONFIG_LLC=m |
409 | # CONFIG_LLC2 is not set | 378 | # CONFIG_LLC2 is not set |
410 | CONFIG_IPX=m | 379 | # CONFIG_IPX is not set |
411 | # CONFIG_IPX_INTERN is not set | ||
412 | CONFIG_ATALK=m | 380 | CONFIG_ATALK=m |
413 | CONFIG_DEV_APPLETALK=y | 381 | CONFIG_DEV_APPLETALK=m |
414 | CONFIG_IPDDP=m | 382 | CONFIG_IPDDP=m |
415 | CONFIG_IPDDP_ENCAP=y | 383 | CONFIG_IPDDP_ENCAP=y |
416 | CONFIG_IPDDP_DECAP=y | 384 | CONFIG_IPDDP_DECAP=y |
417 | # CONFIG_X25 is not set | 385 | # CONFIG_X25 is not set |
418 | # CONFIG_LAPB is not set | 386 | # CONFIG_LAPB is not set |
419 | # CONFIG_NET_DIVERT is not set | ||
420 | # CONFIG_ECONET is not set | 387 | # CONFIG_ECONET is not set |
421 | # CONFIG_WAN_ROUTER is not set | 388 | # CONFIG_WAN_ROUTER is not set |
422 | |||
423 | # | ||
424 | # QoS and/or fair queueing | ||
425 | # | ||
426 | # CONFIG_NET_SCHED is not set | 389 | # CONFIG_NET_SCHED is not set |
427 | CONFIG_NET_CLS_ROUTE=y | 390 | CONFIG_NET_CLS_ROUTE=y |
428 | 391 | ||
@@ -430,80 +393,223 @@ CONFIG_NET_CLS_ROUTE=y | |||
430 | # Network testing | 393 | # Network testing |
431 | # | 394 | # |
432 | # CONFIG_NET_PKTGEN is not set | 395 | # CONFIG_NET_PKTGEN is not set |
433 | CONFIG_NETPOLL=y | ||
434 | # CONFIG_NETPOLL_RX is not set | ||
435 | # CONFIG_NETPOLL_TRAP is not set | ||
436 | CONFIG_NET_POLL_CONTROLLER=y | ||
437 | # CONFIG_HAMRADIO is not set | 396 | # CONFIG_HAMRADIO is not set |
397 | # CONFIG_CAN is not set | ||
438 | # CONFIG_IRDA is not set | 398 | # CONFIG_IRDA is not set |
439 | # CONFIG_BT is not set | 399 | # CONFIG_BT is not set |
440 | CONFIG_NETDEVICES=y | 400 | # CONFIG_AF_RXRPC is not set |
441 | CONFIG_DUMMY=m | ||
442 | # CONFIG_BONDING is not set | ||
443 | CONFIG_EQUALIZER=m | ||
444 | # CONFIG_TUN is not set | ||
445 | 401 | ||
446 | # | 402 | # |
447 | # Ethernet (10 or 100Mbit) | 403 | # Wireless |
448 | # | 404 | # |
449 | CONFIG_NET_ETHERNET=y | 405 | # CONFIG_CFG80211 is not set |
450 | # CONFIG_MII is not set | 406 | CONFIG_WIRELESS_EXT=y |
451 | CONFIG_MAC8390=y | 407 | # CONFIG_MAC80211 is not set |
452 | CONFIG_MAC89x0=y | 408 | CONFIG_IEEE80211=m |
453 | CONFIG_MACSONIC=y | 409 | # CONFIG_IEEE80211_DEBUG is not set |
454 | CONFIG_MACMACE=y | 410 | CONFIG_IEEE80211_CRYPT_WEP=m |
455 | # CONFIG_NET_VENDOR_SMC is not set | 411 | CONFIG_IEEE80211_CRYPT_CCMP=m |
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | ||
416 | # CONFIG_NET_9P is not set | ||
417 | |||
418 | # | ||
419 | # Device Drivers | ||
420 | # | ||
421 | |||
422 | # | ||
423 | # Generic Driver Options | ||
424 | # | ||
425 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
426 | CONFIG_STANDALONE=y | ||
427 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
428 | CONFIG_FW_LOADER=m | ||
429 | # CONFIG_SYS_HYPERVISOR is not set | ||
430 | CONFIG_CONNECTOR=m | ||
431 | # CONFIG_MTD is not set | ||
432 | # CONFIG_PARPORT is not set | ||
433 | CONFIG_BLK_DEV=y | ||
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
435 | CONFIG_BLK_DEV_LOOP=y | ||
436 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
437 | CONFIG_BLK_DEV_NBD=m | ||
438 | CONFIG_BLK_DEV_RAM=y | ||
439 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
440 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
441 | # CONFIG_BLK_DEV_XIP is not set | ||
442 | CONFIG_CDROM_PKTCDVD=m | ||
443 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
444 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
445 | CONFIG_ATA_OVER_ETH=m | ||
446 | CONFIG_MISC_DEVICES=y | ||
447 | # CONFIG_EEPROM_93CX6 is not set | ||
448 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
449 | CONFIG_HAVE_IDE=y | ||
450 | CONFIG_IDE=y | ||
451 | CONFIG_BLK_DEV_IDE=y | ||
456 | 452 | ||
457 | # | 453 | # |
458 | # Ethernet (1000 Mbit) | 454 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
455 | # | ||
456 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
457 | CONFIG_BLK_DEV_IDEDISK=y | ||
458 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
459 | CONFIG_BLK_DEV_IDECD=y | ||
460 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
461 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
462 | CONFIG_BLK_DEV_IDEFLOPPY=m | ||
463 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
464 | # CONFIG_IDE_TASK_IOCTL is not set | ||
465 | CONFIG_IDE_PROC_FS=y | ||
466 | |||
467 | # | ||
468 | # IDE chipset support/bugfixes | ||
459 | # | 469 | # |
470 | # CONFIG_IDE_GENERIC is not set | ||
471 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
472 | CONFIG_BLK_DEV_MAC_IDE=y | ||
473 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
474 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set | ||
475 | # CONFIG_BLK_DEV_HD is not set | ||
460 | 476 | ||
461 | # | 477 | # |
462 | # Ethernet (10000 Mbit) | 478 | # SCSI device support |
463 | # | 479 | # |
480 | CONFIG_RAID_ATTRS=m | ||
481 | CONFIG_SCSI=y | ||
482 | CONFIG_SCSI_DMA=y | ||
483 | CONFIG_SCSI_TGT=m | ||
484 | # CONFIG_SCSI_NETLINK is not set | ||
485 | CONFIG_SCSI_PROC_FS=y | ||
464 | 486 | ||
465 | # | 487 | # |
466 | # Token Ring devices | 488 | # SCSI support type (disk, tape, CD-ROM) |
467 | # | 489 | # |
490 | CONFIG_BLK_DEV_SD=y | ||
491 | CONFIG_CHR_DEV_ST=m | ||
492 | CONFIG_CHR_DEV_OSST=m | ||
493 | CONFIG_BLK_DEV_SR=y | ||
494 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
495 | CONFIG_CHR_DEV_SG=m | ||
496 | # CONFIG_CHR_DEV_SCH is not set | ||
468 | 497 | ||
469 | # | 498 | # |
470 | # Wireless LAN (non-hamradio) | 499 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
471 | # | 500 | # |
472 | # CONFIG_NET_RADIO is not set | 501 | # CONFIG_SCSI_MULTI_LUN is not set |
502 | CONFIG_SCSI_CONSTANTS=y | ||
503 | # CONFIG_SCSI_LOGGING is not set | ||
504 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
505 | CONFIG_SCSI_WAIT_SCAN=m | ||
473 | 506 | ||
474 | # | 507 | # |
475 | # Wan interfaces | 508 | # SCSI Transports |
476 | # | 509 | # |
510 | CONFIG_SCSI_SPI_ATTRS=y | ||
511 | # CONFIG_SCSI_FC_ATTRS is not set | ||
512 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
513 | CONFIG_SCSI_SAS_ATTRS=m | ||
514 | CONFIG_SCSI_SAS_LIBSAS=m | ||
515 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
516 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
517 | CONFIG_SCSI_SRP_ATTRS=m | ||
518 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
519 | CONFIG_SCSI_LOWLEVEL=y | ||
520 | CONFIG_ISCSI_TCP=m | ||
521 | # CONFIG_SCSI_DEBUG is not set | ||
522 | CONFIG_MAC_SCSI=y | ||
523 | CONFIG_MD=y | ||
524 | CONFIG_BLK_DEV_MD=m | ||
525 | CONFIG_MD_LINEAR=m | ||
526 | CONFIG_MD_RAID0=m | ||
527 | CONFIG_MD_RAID1=m | ||
528 | # CONFIG_MD_RAID10 is not set | ||
529 | CONFIG_MD_RAID456=m | ||
530 | CONFIG_MD_RAID5_RESHAPE=y | ||
531 | CONFIG_MD_MULTIPATH=m | ||
532 | # CONFIG_MD_FAULTY is not set | ||
533 | CONFIG_BLK_DEV_DM=m | ||
534 | # CONFIG_DM_DEBUG is not set | ||
535 | CONFIG_DM_CRYPT=m | ||
536 | CONFIG_DM_SNAPSHOT=m | ||
537 | CONFIG_DM_MIRROR=m | ||
538 | CONFIG_DM_ZERO=m | ||
539 | CONFIG_DM_MULTIPATH=m | ||
540 | CONFIG_DM_MULTIPATH_EMC=m | ||
541 | CONFIG_DM_MULTIPATH_RDAC=m | ||
542 | CONFIG_DM_MULTIPATH_HP=m | ||
543 | # CONFIG_DM_DELAY is not set | ||
544 | CONFIG_DM_UEVENT=y | ||
545 | CONFIG_MACINTOSH_DRIVERS=y | ||
546 | CONFIG_ADB=y | ||
547 | CONFIG_ADB_MACII=y | ||
548 | CONFIG_ADB_MACIISI=y | ||
549 | CONFIG_ADB_IOP=y | ||
550 | CONFIG_ADB_PMU68K=y | ||
551 | CONFIG_ADB_CUDA=y | ||
552 | CONFIG_INPUT_ADBHID=y | ||
553 | CONFIG_MAC_EMUMOUSEBTN=y | ||
554 | CONFIG_NETDEVICES=y | ||
555 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
556 | CONFIG_DUMMY=m | ||
557 | # CONFIG_BONDING is not set | ||
558 | CONFIG_MACVLAN=m | ||
559 | CONFIG_EQUALIZER=m | ||
560 | # CONFIG_TUN is not set | ||
561 | CONFIG_VETH=m | ||
562 | # CONFIG_PHYLIB is not set | ||
563 | CONFIG_NET_ETHERNET=y | ||
564 | # CONFIG_MII is not set | ||
565 | CONFIG_MAC8390=y | ||
566 | CONFIG_MAC89x0=m | ||
567 | CONFIG_MACSONIC=m | ||
568 | CONFIG_MACMACE=y | ||
569 | # CONFIG_NET_VENDOR_SMC is not set | ||
570 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
571 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
572 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
573 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
574 | # CONFIG_B44 is not set | ||
575 | # CONFIG_NETDEV_1000 is not set | ||
576 | # CONFIG_NETDEV_10000 is not set | ||
577 | |||
578 | # | ||
579 | # Wireless LAN | ||
580 | # | ||
581 | # CONFIG_WLAN_PRE80211 is not set | ||
582 | # CONFIG_WLAN_80211 is not set | ||
477 | # CONFIG_WAN is not set | 583 | # CONFIG_WAN is not set |
478 | CONFIG_PPP=m | 584 | CONFIG_PPP=m |
479 | # CONFIG_PPP_MULTILINK is not set | 585 | # CONFIG_PPP_MULTILINK is not set |
480 | CONFIG_PPP_FILTER=y | 586 | CONFIG_PPP_FILTER=y |
481 | # CONFIG_PPP_ASYNC is not set | 587 | CONFIG_PPP_ASYNC=m |
482 | # CONFIG_PPP_SYNC_TTY is not set | 588 | CONFIG_PPP_SYNC_TTY=m |
483 | CONFIG_PPP_DEFLATE=m | 589 | CONFIG_PPP_DEFLATE=m |
484 | CONFIG_PPP_BSDCOMP=m | 590 | CONFIG_PPP_BSDCOMP=m |
591 | CONFIG_PPP_MPPE=m | ||
485 | CONFIG_PPPOE=m | 592 | CONFIG_PPPOE=m |
593 | CONFIG_PPPOL2TP=m | ||
486 | CONFIG_SLIP=m | 594 | CONFIG_SLIP=m |
487 | CONFIG_SLIP_COMPRESSED=y | 595 | CONFIG_SLIP_COMPRESSED=y |
596 | CONFIG_SLHC=m | ||
488 | CONFIG_SLIP_SMART=y | 597 | CONFIG_SLIP_SMART=y |
489 | CONFIG_SLIP_MODE_SLIP6=y | 598 | CONFIG_SLIP_MODE_SLIP6=y |
490 | CONFIG_SHAPER=m | ||
491 | CONFIG_NETCONSOLE=m | 599 | CONFIG_NETCONSOLE=m |
492 | 600 | CONFIG_NETCONSOLE_DYNAMIC=y | |
493 | # | 601 | CONFIG_NETPOLL=y |
494 | # ISDN subsystem | 602 | # CONFIG_NETPOLL_TRAP is not set |
495 | # | 603 | CONFIG_NET_POLL_CONTROLLER=y |
496 | # CONFIG_ISDN is not set | 604 | # CONFIG_ISDN is not set |
497 | |||
498 | # | ||
499 | # Telephony Support | ||
500 | # | ||
501 | # CONFIG_PHONE is not set | 605 | # CONFIG_PHONE is not set |
502 | 606 | ||
503 | # | 607 | # |
504 | # Input device support | 608 | # Input device support |
505 | # | 609 | # |
506 | CONFIG_INPUT=y | 610 | CONFIG_INPUT=y |
611 | CONFIG_INPUT_FF_MEMLESS=m | ||
612 | # CONFIG_INPUT_POLLDEV is not set | ||
507 | 613 | ||
508 | # | 614 | # |
509 | # Userland interfaces | 615 | # Userland interfaces |
@@ -513,7 +619,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
513 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 619 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
514 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 620 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
515 | # CONFIG_INPUT_JOYDEV is not set | 621 | # CONFIG_INPUT_JOYDEV is not set |
516 | # CONFIG_INPUT_TSDEV is not set | ||
517 | # CONFIG_INPUT_EVDEV is not set | 622 | # CONFIG_INPUT_EVDEV is not set |
518 | # CONFIG_INPUT_EVBUG is not set | 623 | # CONFIG_INPUT_EVBUG is not set |
519 | 624 | ||
@@ -526,19 +631,29 @@ CONFIG_INPUT_KEYBOARD=y | |||
526 | # CONFIG_KEYBOARD_LKKBD is not set | 631 | # CONFIG_KEYBOARD_LKKBD is not set |
527 | # CONFIG_KEYBOARD_XTKBD is not set | 632 | # CONFIG_KEYBOARD_XTKBD is not set |
528 | # CONFIG_KEYBOARD_NEWTON is not set | 633 | # CONFIG_KEYBOARD_NEWTON is not set |
634 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
529 | CONFIG_INPUT_MOUSE=y | 635 | CONFIG_INPUT_MOUSE=y |
530 | CONFIG_MOUSE_PS2=m | 636 | CONFIG_MOUSE_PS2=m |
637 | CONFIG_MOUSE_PS2_ALPS=y | ||
638 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
639 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
640 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
641 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
642 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
531 | CONFIG_MOUSE_SERIAL=m | 643 | CONFIG_MOUSE_SERIAL=m |
532 | # CONFIG_MOUSE_VSXXXAA is not set | 644 | # CONFIG_MOUSE_VSXXXAA is not set |
533 | # CONFIG_INPUT_JOYSTICK is not set | 645 | # CONFIG_INPUT_JOYSTICK is not set |
646 | # CONFIG_INPUT_TABLET is not set | ||
534 | # CONFIG_INPUT_TOUCHSCREEN is not set | 647 | # CONFIG_INPUT_TOUCHSCREEN is not set |
535 | # CONFIG_INPUT_MISC is not set | 648 | CONFIG_INPUT_MISC=y |
649 | CONFIG_INPUT_M68K_BEEP=m | ||
650 | # CONFIG_INPUT_UINPUT is not set | ||
536 | 651 | ||
537 | # | 652 | # |
538 | # Hardware I/O ports | 653 | # Hardware I/O ports |
539 | # | 654 | # |
540 | CONFIG_SERIO=m | 655 | CONFIG_SERIO=m |
541 | CONFIG_SERIO_SERPORT=m | 656 | # CONFIG_SERIO_SERPORT is not set |
542 | CONFIG_SERIO_LIBPS2=m | 657 | CONFIG_SERIO_LIBPS2=m |
543 | # CONFIG_SERIO_RAW is not set | 658 | # CONFIG_SERIO_RAW is not set |
544 | # CONFIG_GAMEPORT is not set | 659 | # CONFIG_GAMEPORT is not set |
@@ -549,6 +664,7 @@ CONFIG_SERIO_LIBPS2=m | |||
549 | CONFIG_VT=y | 664 | CONFIG_VT=y |
550 | CONFIG_VT_CONSOLE=y | 665 | CONFIG_VT_CONSOLE=y |
551 | CONFIG_HW_CONSOLE=y | 666 | CONFIG_HW_CONSOLE=y |
667 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
552 | # CONFIG_SERIAL_NONSTANDARD is not set | 668 | # CONFIG_SERIAL_NONSTANDARD is not set |
553 | 669 | ||
554 | # | 670 | # |
@@ -562,116 +678,117 @@ CONFIG_HW_CONSOLE=y | |||
562 | CONFIG_UNIX98_PTYS=y | 678 | CONFIG_UNIX98_PTYS=y |
563 | CONFIG_LEGACY_PTYS=y | 679 | CONFIG_LEGACY_PTYS=y |
564 | CONFIG_LEGACY_PTY_COUNT=256 | 680 | CONFIG_LEGACY_PTY_COUNT=256 |
565 | |||
566 | # | ||
567 | # IPMI | ||
568 | # | ||
569 | # CONFIG_IPMI_HANDLER is not set | 681 | # CONFIG_IPMI_HANDLER is not set |
570 | 682 | # CONFIG_HW_RANDOM is not set | |
571 | # | ||
572 | # Watchdog Cards | ||
573 | # | ||
574 | # CONFIG_WATCHDOG is not set | ||
575 | CONFIG_GEN_RTC=m | 683 | CONFIG_GEN_RTC=m |
576 | CONFIG_GEN_RTC_X=y | 684 | CONFIG_GEN_RTC_X=y |
577 | # CONFIG_DTLK is not set | ||
578 | # CONFIG_R3964 is not set | 685 | # CONFIG_R3964 is not set |
579 | |||
580 | # | ||
581 | # Ftape, the floppy tape device driver | ||
582 | # | ||
583 | # CONFIG_DRM is not set | ||
584 | # CONFIG_RAW_DRIVER is not set | 686 | # CONFIG_RAW_DRIVER is not set |
585 | 687 | # CONFIG_TCG_TPM is not set | |
586 | # | ||
587 | # TPM devices | ||
588 | # | ||
589 | |||
590 | # | ||
591 | # I2C support | ||
592 | # | ||
593 | # CONFIG_I2C is not set | 688 | # CONFIG_I2C is not set |
594 | 689 | ||
595 | # | 690 | # |
596 | # Dallas's 1-wire bus | 691 | # SPI support |
597 | # | 692 | # |
693 | # CONFIG_SPI is not set | ||
694 | # CONFIG_SPI_MASTER is not set | ||
598 | # CONFIG_W1 is not set | 695 | # CONFIG_W1 is not set |
696 | # CONFIG_POWER_SUPPLY is not set | ||
697 | # CONFIG_HWMON is not set | ||
698 | # CONFIG_THERMAL is not set | ||
699 | # CONFIG_WATCHDOG is not set | ||
599 | 700 | ||
600 | # | 701 | # |
601 | # Misc devices | 702 | # Sonics Silicon Backplane |
602 | # | 703 | # |
704 | CONFIG_SSB_POSSIBLE=y | ||
705 | # CONFIG_SSB is not set | ||
603 | 706 | ||
604 | # | 707 | # |
605 | # Multimedia devices | 708 | # Multifunction device drivers |
606 | # | 709 | # |
607 | # CONFIG_VIDEO_DEV is not set | 710 | # CONFIG_MFD_SM501 is not set |
608 | 711 | ||
609 | # | 712 | # |
610 | # Digital Video Broadcasting Devices | 713 | # Multimedia devices |
611 | # | 714 | # |
612 | # CONFIG_DVB is not set | 715 | # CONFIG_VIDEO_DEV is not set |
716 | # CONFIG_DVB_CORE is not set | ||
717 | # CONFIG_DAB is not set | ||
613 | 718 | ||
614 | # | 719 | # |
615 | # Graphics support | 720 | # Graphics support |
616 | # | 721 | # |
722 | # CONFIG_VGASTATE is not set | ||
723 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
617 | CONFIG_FB=y | 724 | CONFIG_FB=y |
725 | # CONFIG_FIRMWARE_EDID is not set | ||
726 | # CONFIG_FB_DDC is not set | ||
618 | CONFIG_FB_CFB_FILLRECT=y | 727 | CONFIG_FB_CFB_FILLRECT=y |
619 | CONFIG_FB_CFB_COPYAREA=y | 728 | CONFIG_FB_CFB_COPYAREA=y |
620 | CONFIG_FB_CFB_IMAGEBLIT=y | 729 | CONFIG_FB_CFB_IMAGEBLIT=y |
621 | CONFIG_FB_SOFT_CURSOR=y | 730 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
731 | # CONFIG_FB_SYS_FILLRECT is not set | ||
732 | # CONFIG_FB_SYS_COPYAREA is not set | ||
733 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
734 | # CONFIG_FB_SYS_FOPS is not set | ||
735 | CONFIG_FB_DEFERRED_IO=y | ||
736 | # CONFIG_FB_SVGALIB is not set | ||
622 | CONFIG_FB_MACMODES=y | 737 | CONFIG_FB_MACMODES=y |
623 | CONFIG_FB_MODE_HELPERS=y | 738 | # CONFIG_FB_BACKLIGHT is not set |
739 | # CONFIG_FB_MODE_HELPERS is not set | ||
624 | # CONFIG_FB_TILEBLITTING is not set | 740 | # CONFIG_FB_TILEBLITTING is not set |
741 | |||
742 | # | ||
743 | # Frame buffer hardware drivers | ||
744 | # | ||
625 | CONFIG_FB_VALKYRIE=y | 745 | CONFIG_FB_VALKYRIE=y |
626 | CONFIG_FB_MAC=y | 746 | CONFIG_FB_MAC=y |
747 | # CONFIG_FB_UVESA is not set | ||
627 | # CONFIG_FB_S1D13XXX is not set | 748 | # CONFIG_FB_S1D13XXX is not set |
628 | # CONFIG_FB_VIRTUAL is not set | 749 | # CONFIG_FB_VIRTUAL is not set |
750 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
751 | |||
752 | # | ||
753 | # Display device support | ||
754 | # | ||
755 | # CONFIG_DISPLAY_SUPPORT is not set | ||
629 | 756 | ||
630 | # | 757 | # |
631 | # Console display driver support | 758 | # Console display driver support |
632 | # | 759 | # |
633 | CONFIG_DUMMY_CONSOLE=y | 760 | CONFIG_DUMMY_CONSOLE=y |
634 | CONFIG_FRAMEBUFFER_CONSOLE=y | 761 | CONFIG_FRAMEBUFFER_CONSOLE=y |
762 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
763 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
635 | # CONFIG_FONTS is not set | 764 | # CONFIG_FONTS is not set |
636 | CONFIG_FONT_8x8=y | 765 | CONFIG_FONT_8x8=y |
637 | CONFIG_FONT_8x16=y | 766 | CONFIG_FONT_8x16=y |
638 | CONFIG_FONT_6x11=y | 767 | CONFIG_FONT_6x11=y |
639 | |||
640 | # | ||
641 | # Logo configuration | ||
642 | # | ||
643 | CONFIG_LOGO=y | 768 | CONFIG_LOGO=y |
644 | CONFIG_LOGO_LINUX_MONO=y | 769 | CONFIG_LOGO_LINUX_MONO=y |
645 | CONFIG_LOGO_LINUX_VGA16=y | 770 | CONFIG_LOGO_LINUX_VGA16=y |
646 | CONFIG_LOGO_LINUX_CLUT224=y | 771 | CONFIG_LOGO_LINUX_CLUT224=y |
647 | CONFIG_LOGO_MAC_CLUT224=y | 772 | CONFIG_LOGO_MAC_CLUT224=y |
648 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
649 | 773 | ||
650 | # | 774 | # |
651 | # Sound | 775 | # Sound |
652 | # | 776 | # |
653 | # CONFIG_SOUND is not set | 777 | # CONFIG_SOUND is not set |
654 | 778 | CONFIG_HID_SUPPORT=y | |
655 | # | 779 | CONFIG_HID=m |
656 | # USB support | 780 | # CONFIG_HID_DEBUG is not set |
657 | # | 781 | CONFIG_HIDRAW=y |
658 | # CONFIG_USB_ARCH_HAS_HCD is not set | 782 | # CONFIG_USB_SUPPORT is not set |
659 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
660 | |||
661 | # | ||
662 | # USB Gadget Support | ||
663 | # | ||
664 | # CONFIG_USB_GADGET is not set | ||
665 | |||
666 | # | ||
667 | # MMC/SD Card support | ||
668 | # | ||
669 | # CONFIG_MMC is not set | 783 | # CONFIG_MMC is not set |
784 | # CONFIG_MEMSTICK is not set | ||
785 | # CONFIG_NEW_LEDS is not set | ||
786 | # CONFIG_RTC_CLASS is not set | ||
670 | 787 | ||
671 | # | 788 | # |
672 | # InfiniBand support | 789 | # Userspace I/O |
673 | # | 790 | # |
674 | # CONFIG_INFINIBAND is not set | 791 | # CONFIG_UIO is not set |
675 | 792 | ||
676 | # | 793 | # |
677 | # Character devices | 794 | # Character devices |
@@ -685,10 +802,11 @@ CONFIG_SERIAL_CONSOLE=y | |||
685 | # | 802 | # |
686 | CONFIG_EXT2_FS=y | 803 | CONFIG_EXT2_FS=y |
687 | # CONFIG_EXT2_FS_XATTR is not set | 804 | # CONFIG_EXT2_FS_XATTR is not set |
805 | # CONFIG_EXT2_FS_XIP is not set | ||
688 | CONFIG_EXT3_FS=y | 806 | CONFIG_EXT3_FS=y |
689 | # CONFIG_EXT3_FS_XATTR is not set | 807 | # CONFIG_EXT3_FS_XATTR is not set |
808 | # CONFIG_EXT4DEV_FS is not set | ||
690 | CONFIG_JBD=y | 809 | CONFIG_JBD=y |
691 | # CONFIG_JBD_DEBUG is not set | ||
692 | CONFIG_REISERFS_FS=m | 810 | CONFIG_REISERFS_FS=m |
693 | # CONFIG_REISERFS_CHECK is not set | 811 | # CONFIG_REISERFS_CHECK is not set |
694 | # CONFIG_REISERFS_PROC_INFO is not set | 812 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -699,25 +817,29 @@ CONFIG_JFS_FS=m | |||
699 | # CONFIG_JFS_DEBUG is not set | 817 | # CONFIG_JFS_DEBUG is not set |
700 | # CONFIG_JFS_STATISTICS is not set | 818 | # CONFIG_JFS_STATISTICS is not set |
701 | CONFIG_FS_POSIX_ACL=y | 819 | CONFIG_FS_POSIX_ACL=y |
702 | |||
703 | # | ||
704 | # XFS support | ||
705 | # | ||
706 | CONFIG_XFS_FS=m | 820 | CONFIG_XFS_FS=m |
707 | CONFIG_XFS_EXPORT=y | ||
708 | # CONFIG_XFS_RT is not set | ||
709 | # CONFIG_XFS_QUOTA is not set | 821 | # CONFIG_XFS_QUOTA is not set |
710 | # CONFIG_XFS_SECURITY is not set | 822 | # CONFIG_XFS_SECURITY is not set |
711 | # CONFIG_XFS_POSIX_ACL is not set | 823 | # CONFIG_XFS_POSIX_ACL is not set |
712 | CONFIG_MINIX_FS=y | 824 | # CONFIG_XFS_RT is not set |
713 | # CONFIG_ROMFS_FS is not set | 825 | CONFIG_GFS2_FS=m |
826 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
827 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
828 | CONFIG_OCFS2_FS=m | ||
829 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
830 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
831 | CONFIG_DNOTIFY=y | ||
832 | CONFIG_INOTIFY=y | ||
833 | CONFIG_INOTIFY_USER=y | ||
714 | CONFIG_QUOTA=y | 834 | CONFIG_QUOTA=y |
835 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
836 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
715 | # CONFIG_QFMT_V1 is not set | 837 | # CONFIG_QFMT_V1 is not set |
716 | # CONFIG_QFMT_V2 is not set | 838 | # CONFIG_QFMT_V2 is not set |
717 | CONFIG_QUOTACTL=y | 839 | CONFIG_QUOTACTL=y |
718 | CONFIG_DNOTIFY=y | ||
719 | CONFIG_AUTOFS_FS=m | 840 | CONFIG_AUTOFS_FS=m |
720 | CONFIG_AUTOFS4_FS=m | 841 | CONFIG_AUTOFS4_FS=m |
842 | CONFIG_FUSE_FS=m | ||
721 | 843 | ||
722 | # | 844 | # |
723 | # CD-ROM/DVD Filesystems | 845 | # CD-ROM/DVD Filesystems |
@@ -725,7 +847,6 @@ CONFIG_AUTOFS4_FS=m | |||
725 | CONFIG_ISO9660_FS=y | 847 | CONFIG_ISO9660_FS=y |
726 | CONFIG_JOLIET=y | 848 | CONFIG_JOLIET=y |
727 | CONFIG_ZISOFS=y | 849 | CONFIG_ZISOFS=y |
728 | CONFIG_ZISOFS_FS=y | ||
729 | CONFIG_UDF_FS=m | 850 | CONFIG_UDF_FS=m |
730 | CONFIG_UDF_NLS=y | 851 | CONFIG_UDF_NLS=y |
731 | 852 | ||
@@ -744,13 +865,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
744 | # | 865 | # |
745 | CONFIG_PROC_FS=y | 866 | CONFIG_PROC_FS=y |
746 | CONFIG_PROC_KCORE=y | 867 | CONFIG_PROC_KCORE=y |
868 | CONFIG_PROC_SYSCTL=y | ||
747 | CONFIG_SYSFS=y | 869 | CONFIG_SYSFS=y |
748 | # CONFIG_DEVFS_FS is not set | ||
749 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
750 | CONFIG_TMPFS=y | 870 | CONFIG_TMPFS=y |
751 | # CONFIG_TMPFS_XATTR is not set | 871 | # CONFIG_TMPFS_POSIX_ACL is not set |
752 | # CONFIG_HUGETLB_PAGE is not set | 872 | # CONFIG_HUGETLB_PAGE is not set |
753 | CONFIG_RAMFS=y | 873 | CONFIG_CONFIGFS_FS=m |
754 | 874 | ||
755 | # | 875 | # |
756 | # Miscellaneous filesystems | 876 | # Miscellaneous filesystems |
@@ -764,43 +884,39 @@ CONFIG_HFSPLUS_FS=y | |||
764 | # CONFIG_EFS_FS is not set | 884 | # CONFIG_EFS_FS is not set |
765 | CONFIG_CRAMFS=m | 885 | CONFIG_CRAMFS=m |
766 | # CONFIG_VXFS_FS is not set | 886 | # CONFIG_VXFS_FS is not set |
887 | CONFIG_MINIX_FS=y | ||
767 | CONFIG_HPFS_FS=m | 888 | CONFIG_HPFS_FS=m |
768 | # CONFIG_QNX4FS_FS is not set | 889 | # CONFIG_QNX4FS_FS is not set |
890 | # CONFIG_ROMFS_FS is not set | ||
769 | CONFIG_SYSV_FS=m | 891 | CONFIG_SYSV_FS=m |
770 | CONFIG_UFS_FS=m | 892 | CONFIG_UFS_FS=m |
771 | # CONFIG_UFS_FS_WRITE is not set | 893 | # CONFIG_UFS_FS_WRITE is not set |
772 | 894 | # CONFIG_UFS_DEBUG is not set | |
773 | # | 895 | CONFIG_NETWORK_FILESYSTEMS=y |
774 | # Network File Systems | ||
775 | # | ||
776 | CONFIG_NFS_FS=m | 896 | CONFIG_NFS_FS=m |
777 | CONFIG_NFS_V3=y | 897 | CONFIG_NFS_V3=y |
898 | # CONFIG_NFS_V3_ACL is not set | ||
778 | CONFIG_NFS_V4=y | 899 | CONFIG_NFS_V4=y |
779 | # CONFIG_NFS_DIRECTIO is not set | 900 | # CONFIG_NFS_DIRECTIO is not set |
780 | CONFIG_NFSD=m | 901 | CONFIG_NFSD=m |
781 | CONFIG_NFSD_V3=y | 902 | CONFIG_NFSD_V3=y |
782 | CONFIG_NFSD_V4=y | 903 | # CONFIG_NFSD_V3_ACL is not set |
904 | # CONFIG_NFSD_V4 is not set | ||
783 | CONFIG_NFSD_TCP=y | 905 | CONFIG_NFSD_TCP=y |
784 | CONFIG_LOCKD=m | 906 | CONFIG_LOCKD=m |
785 | CONFIG_LOCKD_V4=y | 907 | CONFIG_LOCKD_V4=y |
786 | CONFIG_EXPORTFS=m | 908 | CONFIG_EXPORTFS=m |
909 | CONFIG_NFS_COMMON=y | ||
787 | CONFIG_SUNRPC=m | 910 | CONFIG_SUNRPC=m |
788 | CONFIG_SUNRPC_GSS=m | 911 | CONFIG_SUNRPC_GSS=m |
912 | CONFIG_SUNRPC_BIND34=y | ||
789 | CONFIG_RPCSEC_GSS_KRB5=m | 913 | CONFIG_RPCSEC_GSS_KRB5=m |
790 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 914 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
791 | CONFIG_SMB_FS=m | 915 | CONFIG_SMB_FS=m |
792 | CONFIG_SMB_NLS_DEFAULT=y | 916 | CONFIG_SMB_NLS_DEFAULT=y |
793 | CONFIG_SMB_NLS_REMOTE="cp437" | 917 | CONFIG_SMB_NLS_REMOTE="cp437" |
794 | # CONFIG_CIFS is not set | 918 | # CONFIG_CIFS is not set |
795 | CONFIG_NCP_FS=m | 919 | # CONFIG_NCP_FS is not set |
796 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
797 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
798 | # CONFIG_NCPFS_STRONG is not set | ||
799 | CONFIG_NCPFS_NFS_NS=y | ||
800 | CONFIG_NCPFS_OS2_NS=y | ||
801 | # CONFIG_NCPFS_SMALLDOS is not set | ||
802 | CONFIG_NCPFS_NLS=y | ||
803 | # CONFIG_NCPFS_EXTRAS is not set | ||
804 | CONFIG_CODA_FS=m | 920 | CONFIG_CODA_FS=m |
805 | # CONFIG_CODA_FS_OLD_API is not set | 921 | # CONFIG_CODA_FS_OLD_API is not set |
806 | # CONFIG_AFS_FS is not set | 922 | # CONFIG_AFS_FS is not set |
@@ -808,27 +924,9 @@ CONFIG_CODA_FS=m | |||
808 | # | 924 | # |
809 | # Partition Types | 925 | # Partition Types |
810 | # | 926 | # |
811 | CONFIG_PARTITION_ADVANCED=y | 927 | # CONFIG_PARTITION_ADVANCED is not set |
812 | # CONFIG_ACORN_PARTITION is not set | ||
813 | # CONFIG_OSF_PARTITION is not set | ||
814 | CONFIG_AMIGA_PARTITION=y | ||
815 | CONFIG_ATARI_PARTITION=y | ||
816 | CONFIG_MAC_PARTITION=y | 928 | CONFIG_MAC_PARTITION=y |
817 | CONFIG_MSDOS_PARTITION=y | 929 | CONFIG_MSDOS_PARTITION=y |
818 | CONFIG_BSD_DISKLABEL=y | ||
819 | CONFIG_MINIX_SUBPARTITION=y | ||
820 | CONFIG_SOLARIS_X86_PARTITION=y | ||
821 | CONFIG_UNIXWARE_DISKLABEL=y | ||
822 | CONFIG_LDM_PARTITION=y | ||
823 | CONFIG_LDM_DEBUG=y | ||
824 | # CONFIG_SGI_PARTITION is not set | ||
825 | # CONFIG_ULTRIX_PARTITION is not set | ||
826 | CONFIG_SUN_PARTITION=y | ||
827 | # CONFIG_EFI_PARTITION is not set | ||
828 | |||
829 | # | ||
830 | # Native Language Support | ||
831 | # | ||
832 | CONFIG_NLS=y | 930 | CONFIG_NLS=y |
833 | CONFIG_NLS_DEFAULT="iso8859-1" | 931 | CONFIG_NLS_DEFAULT="iso8859-1" |
834 | CONFIG_NLS_CODEPAGE_437=y | 932 | CONFIG_NLS_CODEPAGE_437=y |
@@ -869,46 +967,65 @@ CONFIG_NLS_ISO8859_15=m | |||
869 | CONFIG_NLS_KOI8_R=m | 967 | CONFIG_NLS_KOI8_R=m |
870 | CONFIG_NLS_KOI8_U=m | 968 | CONFIG_NLS_KOI8_U=m |
871 | CONFIG_NLS_UTF8=y | 969 | CONFIG_NLS_UTF8=y |
970 | CONFIG_DLM=m | ||
971 | # CONFIG_DLM_DEBUG is not set | ||
872 | 972 | ||
873 | # | 973 | # |
874 | # Kernel hacking | 974 | # Kernel hacking |
875 | # | 975 | # |
876 | # CONFIG_PRINTK_TIME is not set | 976 | # CONFIG_PRINTK_TIME is not set |
877 | CONFIG_DEBUG_KERNEL=y | 977 | CONFIG_ENABLE_WARN_DEPRECATED=y |
978 | CONFIG_ENABLE_MUST_CHECK=y | ||
878 | CONFIG_MAGIC_SYSRQ=y | 979 | CONFIG_MAGIC_SYSRQ=y |
879 | CONFIG_LOG_BUF_SHIFT=16 | 980 | # CONFIG_UNUSED_SYMBOLS is not set |
880 | # CONFIG_SCHEDSTATS is not set | ||
881 | # CONFIG_DEBUG_SLAB is not set | ||
882 | # CONFIG_DEBUG_SPINLOCK is not set | ||
883 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
884 | # CONFIG_DEBUG_KOBJECT is not set | ||
885 | CONFIG_DEBUG_BUGVERBOSE=y | ||
886 | # CONFIG_DEBUG_INFO is not set | ||
887 | # CONFIG_DEBUG_FS is not set | 981 | # CONFIG_DEBUG_FS is not set |
888 | # CONFIG_FRAME_POINTER is not set | 982 | # CONFIG_HEADERS_CHECK is not set |
983 | # CONFIG_DEBUG_KERNEL is not set | ||
984 | CONFIG_DEBUG_BUGVERBOSE=y | ||
985 | # CONFIG_SAMPLES is not set | ||
889 | 986 | ||
890 | # | 987 | # |
891 | # Security options | 988 | # Security options |
892 | # | 989 | # |
893 | # CONFIG_KEYS is not set | 990 | # CONFIG_KEYS is not set |
894 | # CONFIG_SECURITY is not set | 991 | # CONFIG_SECURITY is not set |
895 | 992 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
896 | # | 993 | CONFIG_XOR_BLOCKS=m |
897 | # Cryptographic options | 994 | CONFIG_ASYNC_CORE=m |
898 | # | 995 | CONFIG_ASYNC_MEMCPY=m |
996 | CONFIG_ASYNC_XOR=m | ||
899 | CONFIG_CRYPTO=y | 997 | CONFIG_CRYPTO=y |
998 | CONFIG_CRYPTO_ALGAPI=y | ||
999 | CONFIG_CRYPTO_AEAD=m | ||
1000 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1001 | CONFIG_CRYPTO_SEQIV=m | ||
1002 | CONFIG_CRYPTO_HASH=y | ||
1003 | CONFIG_CRYPTO_MANAGER=y | ||
900 | CONFIG_CRYPTO_HMAC=y | 1004 | CONFIG_CRYPTO_HMAC=y |
1005 | CONFIG_CRYPTO_XCBC=m | ||
901 | CONFIG_CRYPTO_NULL=m | 1006 | CONFIG_CRYPTO_NULL=m |
902 | CONFIG_CRYPTO_MD4=m | 1007 | CONFIG_CRYPTO_MD4=m |
903 | CONFIG_CRYPTO_MD5=y | 1008 | CONFIG_CRYPTO_MD5=m |
904 | CONFIG_CRYPTO_SHA1=m | 1009 | CONFIG_CRYPTO_SHA1=m |
905 | CONFIG_CRYPTO_SHA256=m | 1010 | CONFIG_CRYPTO_SHA256=m |
906 | CONFIG_CRYPTO_SHA512=m | 1011 | CONFIG_CRYPTO_SHA512=m |
907 | CONFIG_CRYPTO_WP512=m | 1012 | CONFIG_CRYPTO_WP512=m |
908 | CONFIG_CRYPTO_TGR192=m | 1013 | CONFIG_CRYPTO_TGR192=m |
1014 | CONFIG_CRYPTO_GF128MUL=m | ||
1015 | CONFIG_CRYPTO_ECB=m | ||
1016 | CONFIG_CRYPTO_CBC=m | ||
1017 | CONFIG_CRYPTO_PCBC=m | ||
1018 | CONFIG_CRYPTO_LRW=m | ||
1019 | CONFIG_CRYPTO_XTS=m | ||
1020 | CONFIG_CRYPTO_CTR=m | ||
1021 | CONFIG_CRYPTO_GCM=m | ||
1022 | CONFIG_CRYPTO_CCM=m | ||
1023 | CONFIG_CRYPTO_CRYPTD=m | ||
909 | CONFIG_CRYPTO_DES=m | 1024 | CONFIG_CRYPTO_DES=m |
1025 | CONFIG_CRYPTO_FCRYPT=m | ||
910 | CONFIG_CRYPTO_BLOWFISH=m | 1026 | CONFIG_CRYPTO_BLOWFISH=m |
911 | CONFIG_CRYPTO_TWOFISH=m | 1027 | CONFIG_CRYPTO_TWOFISH=m |
1028 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
912 | CONFIG_CRYPTO_SERPENT=m | 1029 | CONFIG_CRYPTO_SERPENT=m |
913 | CONFIG_CRYPTO_AES=m | 1030 | CONFIG_CRYPTO_AES=m |
914 | CONFIG_CRYPTO_CAST5=m | 1031 | CONFIG_CRYPTO_CAST5=m |
@@ -917,20 +1034,35 @@ CONFIG_CRYPTO_TEA=m | |||
917 | CONFIG_CRYPTO_ARC4=m | 1034 | CONFIG_CRYPTO_ARC4=m |
918 | CONFIG_CRYPTO_KHAZAD=m | 1035 | CONFIG_CRYPTO_KHAZAD=m |
919 | CONFIG_CRYPTO_ANUBIS=m | 1036 | CONFIG_CRYPTO_ANUBIS=m |
1037 | CONFIG_CRYPTO_SEED=m | ||
1038 | CONFIG_CRYPTO_SALSA20=m | ||
920 | CONFIG_CRYPTO_DEFLATE=m | 1039 | CONFIG_CRYPTO_DEFLATE=m |
921 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1040 | CONFIG_CRYPTO_MICHAEL_MIC=m |
922 | CONFIG_CRYPTO_CRC32C=m | 1041 | CONFIG_CRYPTO_CRC32C=m |
1042 | CONFIG_CRYPTO_CAMELLIA=m | ||
923 | CONFIG_CRYPTO_TEST=m | 1043 | CONFIG_CRYPTO_TEST=m |
924 | 1044 | CONFIG_CRYPTO_AUTHENC=m | |
925 | # | 1045 | CONFIG_CRYPTO_LZO=m |
926 | # Hardware crypto devices | 1046 | # CONFIG_CRYPTO_HW is not set |
927 | # | ||
928 | 1047 | ||
929 | # | 1048 | # |
930 | # Library routines | 1049 | # Library routines |
931 | # | 1050 | # |
1051 | CONFIG_BITREVERSE=y | ||
932 | CONFIG_CRC_CCITT=m | 1052 | CONFIG_CRC_CCITT=m |
1053 | CONFIG_CRC16=m | ||
1054 | # CONFIG_CRC_ITU_T is not set | ||
933 | CONFIG_CRC32=y | 1055 | CONFIG_CRC32=y |
1056 | # CONFIG_CRC7 is not set | ||
934 | CONFIG_LIBCRC32C=m | 1057 | CONFIG_LIBCRC32C=m |
935 | CONFIG_ZLIB_INFLATE=y | 1058 | CONFIG_ZLIB_INFLATE=y |
936 | CONFIG_ZLIB_DEFLATE=m | 1059 | CONFIG_ZLIB_DEFLATE=m |
1060 | CONFIG_LZO_COMPRESS=m | ||
1061 | CONFIG_LZO_DECOMPRESS=m | ||
1062 | CONFIG_TEXTSEARCH=y | ||
1063 | CONFIG_TEXTSEARCH_KMP=m | ||
1064 | CONFIG_TEXTSEARCH_BM=m | ||
1065 | CONFIG_TEXTSEARCH_FSM=m | ||
1066 | CONFIG_PLIST=y | ||
1067 | CONFIG_HAS_IOMEM=y | ||
1068 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig index f0d5534f6830..f40b1724254b 100644 --- a/arch/m68k/configs/mvme147_defconfig +++ b/arch/m68k/configs/mvme147_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:50 2005 | 4 | # Wed Apr 2 20:46:17 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-mvme147" | 27 | CONFIG_LOCALVERSION="-mvme147" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -85,6 +133,22 @@ CONFIG_M68030=y | |||
85 | CONFIG_MMU_MOTOROLA=y | 133 | CONFIG_MMU_MOTOROLA=y |
86 | # CONFIG_M68KFPU_EMU is not set | 134 | # CONFIG_M68KFPU_EMU is not set |
87 | # CONFIG_ADVANCED is not set | 135 | # CONFIG_ADVANCED is not set |
136 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
137 | CONFIG_NODES_SHIFT=3 | ||
138 | CONFIG_SELECT_MEMORY_MODEL=y | ||
139 | # CONFIG_FLATMEM_MANUAL is not set | ||
140 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
141 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
142 | CONFIG_DISCONTIGMEM=y | ||
143 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
144 | CONFIG_NEED_MULTIPLE_NODES=y | ||
145 | # CONFIG_SPARSEMEM_STATIC is not set | ||
146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
148 | # CONFIG_RESOURCES_64BIT is not set | ||
149 | CONFIG_ZONE_DMA_FLAG=1 | ||
150 | CONFIG_BOUNCE=y | ||
151 | CONFIG_VIRT_TO_BUS=y | ||
88 | 152 | ||
89 | # | 153 | # |
90 | # General setup | 154 | # General setup |
@@ -93,135 +157,11 @@ CONFIG_BINFMT_ELF=y | |||
93 | CONFIG_BINFMT_AOUT=m | 157 | CONFIG_BINFMT_AOUT=m |
94 | CONFIG_BINFMT_MISC=m | 158 | CONFIG_BINFMT_MISC=m |
95 | CONFIG_PROC_HARDWARE=y | 159 | CONFIG_PROC_HARDWARE=y |
160 | CONFIG_ZONE_DMA=y | ||
161 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
96 | 162 | ||
97 | # | 163 | # |
98 | # Device Drivers | 164 | # Networking |
99 | # | ||
100 | |||
101 | # | ||
102 | # Generic Driver Options | ||
103 | # | ||
104 | CONFIG_STANDALONE=y | ||
105 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
106 | CONFIG_FW_LOADER=m | ||
107 | # CONFIG_DEBUG_DRIVER is not set | ||
108 | |||
109 | # | ||
110 | # Memory Technology Devices (MTD) | ||
111 | # | ||
112 | # CONFIG_MTD is not set | ||
113 | |||
114 | # | ||
115 | # Parallel port support | ||
116 | # | ||
117 | # CONFIG_PARPORT is not set | ||
118 | |||
119 | # | ||
120 | # Plug and Play support | ||
121 | # | ||
122 | |||
123 | # | ||
124 | # Block devices | ||
125 | # | ||
126 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
127 | CONFIG_BLK_DEV_LOOP=y | ||
128 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
129 | CONFIG_BLK_DEV_NBD=m | ||
130 | CONFIG_BLK_DEV_RAM=y | ||
131 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
132 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
133 | CONFIG_BLK_DEV_INITRD=y | ||
134 | CONFIG_INITRAMFS_SOURCE="" | ||
135 | CONFIG_CDROM_PKTCDVD=m | ||
136 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
137 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
138 | |||
139 | # | ||
140 | # IO Schedulers | ||
141 | # | ||
142 | CONFIG_IOSCHED_NOOP=y | ||
143 | CONFIG_IOSCHED_AS=y | ||
144 | CONFIG_IOSCHED_DEADLINE=y | ||
145 | CONFIG_IOSCHED_CFQ=y | ||
146 | CONFIG_ATA_OVER_ETH=m | ||
147 | |||
148 | # | ||
149 | # ATA/ATAPI/MFM/RLL support | ||
150 | # | ||
151 | # CONFIG_IDE is not set | ||
152 | |||
153 | # | ||
154 | # SCSI device support | ||
155 | # | ||
156 | CONFIG_SCSI=y | ||
157 | CONFIG_SCSI_PROC_FS=y | ||
158 | |||
159 | # | ||
160 | # SCSI support type (disk, tape, CD-ROM) | ||
161 | # | ||
162 | CONFIG_BLK_DEV_SD=y | ||
163 | CONFIG_CHR_DEV_ST=m | ||
164 | # CONFIG_CHR_DEV_OSST is not set | ||
165 | CONFIG_BLK_DEV_SR=y | ||
166 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
167 | CONFIG_CHR_DEV_SG=m | ||
168 | |||
169 | # | ||
170 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
171 | # | ||
172 | # CONFIG_SCSI_MULTI_LUN is not set | ||
173 | CONFIG_SCSI_CONSTANTS=y | ||
174 | # CONFIG_SCSI_LOGGING is not set | ||
175 | |||
176 | # | ||
177 | # SCSI Transport Attributes | ||
178 | # | ||
179 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
180 | # CONFIG_SCSI_FC_ATTRS is not set | ||
181 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
182 | |||
183 | # | ||
184 | # SCSI low-level drivers | ||
185 | # | ||
186 | # CONFIG_SCSI_SATA is not set | ||
187 | # CONFIG_SCSI_DEBUG is not set | ||
188 | CONFIG_MVME147_SCSI=y | ||
189 | |||
190 | # | ||
191 | # Multi-device support (RAID and LVM) | ||
192 | # | ||
193 | CONFIG_MD=y | ||
194 | CONFIG_BLK_DEV_MD=m | ||
195 | CONFIG_MD_LINEAR=m | ||
196 | CONFIG_MD_RAID0=m | ||
197 | CONFIG_MD_RAID1=m | ||
198 | # CONFIG_MD_RAID10 is not set | ||
199 | CONFIG_MD_RAID5=m | ||
200 | CONFIG_MD_RAID6=m | ||
201 | CONFIG_MD_MULTIPATH=m | ||
202 | # CONFIG_MD_FAULTY is not set | ||
203 | CONFIG_BLK_DEV_DM=m | ||
204 | CONFIG_DM_CRYPT=m | ||
205 | CONFIG_DM_SNAPSHOT=m | ||
206 | CONFIG_DM_MIRROR=m | ||
207 | CONFIG_DM_ZERO=m | ||
208 | CONFIG_DM_MULTIPATH=m | ||
209 | CONFIG_DM_MULTIPATH_EMC=m | ||
210 | |||
211 | # | ||
212 | # Fusion MPT device support | ||
213 | # | ||
214 | |||
215 | # | ||
216 | # IEEE 1394 (FireWire) support | ||
217 | # | ||
218 | |||
219 | # | ||
220 | # I2O device support | ||
221 | # | ||
222 | |||
223 | # | ||
224 | # Networking support | ||
225 | # | 165 | # |
226 | CONFIG_NET=y | 166 | CONFIG_NET=y |
227 | 167 | ||
@@ -231,10 +171,17 @@ CONFIG_NET=y | |||
231 | CONFIG_PACKET=y | 171 | CONFIG_PACKET=y |
232 | # CONFIG_PACKET_MMAP is not set | 172 | # CONFIG_PACKET_MMAP is not set |
233 | CONFIG_UNIX=y | 173 | CONFIG_UNIX=y |
174 | CONFIG_XFRM=y | ||
175 | # CONFIG_XFRM_USER is not set | ||
176 | # CONFIG_XFRM_SUB_POLICY is not set | ||
177 | CONFIG_XFRM_MIGRATE=y | ||
178 | # CONFIG_XFRM_STATISTICS is not set | ||
234 | CONFIG_NET_KEY=y | 179 | CONFIG_NET_KEY=y |
180 | CONFIG_NET_KEY_MIGRATE=y | ||
235 | CONFIG_INET=y | 181 | CONFIG_INET=y |
236 | # CONFIG_IP_MULTICAST is not set | 182 | # CONFIG_IP_MULTICAST is not set |
237 | # CONFIG_IP_ADVANCED_ROUTER is not set | 183 | # CONFIG_IP_ADVANCED_ROUTER is not set |
184 | CONFIG_IP_FIB_HASH=y | ||
238 | CONFIG_IP_PNP=y | 185 | CONFIG_IP_PNP=y |
239 | CONFIG_IP_PNP_DHCP=y | 186 | CONFIG_IP_PNP_DHCP=y |
240 | CONFIG_IP_PNP_BOOTP=y | 187 | CONFIG_IP_PNP_BOOTP=y |
@@ -246,145 +193,199 @@ CONFIG_SYN_COOKIES=y | |||
246 | CONFIG_INET_AH=m | 193 | CONFIG_INET_AH=m |
247 | CONFIG_INET_ESP=m | 194 | CONFIG_INET_ESP=m |
248 | CONFIG_INET_IPCOMP=m | 195 | CONFIG_INET_IPCOMP=m |
196 | CONFIG_INET_XFRM_TUNNEL=m | ||
249 | CONFIG_INET_TUNNEL=m | 197 | CONFIG_INET_TUNNEL=m |
250 | CONFIG_IP_TCPDIAG=m | 198 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
251 | CONFIG_IP_TCPDIAG_IPV6=y | 199 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
252 | 200 | CONFIG_INET_XFRM_MODE_BEET=m | |
253 | # | 201 | CONFIG_INET_LRO=m |
254 | # IP: Virtual Server Configuration | 202 | CONFIG_INET_DIAG=m |
255 | # | 203 | CONFIG_INET_TCP_DIAG=m |
204 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
205 | CONFIG_TCP_CONG_CUBIC=y | ||
206 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
207 | # CONFIG_TCP_MD5SIG is not set | ||
256 | # CONFIG_IP_VS is not set | 208 | # CONFIG_IP_VS is not set |
257 | CONFIG_IPV6=m | 209 | CONFIG_IPV6=m |
258 | CONFIG_IPV6_PRIVACY=y | 210 | CONFIG_IPV6_PRIVACY=y |
211 | CONFIG_IPV6_ROUTER_PREF=y | ||
212 | CONFIG_IPV6_ROUTE_INFO=y | ||
213 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
259 | CONFIG_INET6_AH=m | 214 | CONFIG_INET6_AH=m |
260 | CONFIG_INET6_ESP=m | 215 | CONFIG_INET6_ESP=m |
261 | CONFIG_INET6_IPCOMP=m | 216 | CONFIG_INET6_IPCOMP=m |
217 | # CONFIG_IPV6_MIP6 is not set | ||
218 | CONFIG_INET6_XFRM_TUNNEL=m | ||
262 | CONFIG_INET6_TUNNEL=m | 219 | CONFIG_INET6_TUNNEL=m |
220 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
221 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
224 | CONFIG_IPV6_SIT=m | ||
263 | CONFIG_IPV6_TUNNEL=m | 225 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | ||
264 | CONFIG_NETFILTER=y | 228 | CONFIG_NETFILTER=y |
265 | # CONFIG_NETFILTER_DEBUG is not set | 229 | # CONFIG_NETFILTER_DEBUG is not set |
230 | CONFIG_NETFILTER_ADVANCED=y | ||
231 | |||
232 | # | ||
233 | # Core Netfilter Configuration | ||
234 | # | ||
235 | CONFIG_NETFILTER_NETLINK=m | ||
236 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
237 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
238 | CONFIG_NF_CONNTRACK=m | ||
239 | CONFIG_NF_CT_ACCT=y | ||
240 | CONFIG_NF_CONNTRACK_MARK=y | ||
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | ||
243 | CONFIG_NF_CT_PROTO_SCTP=m | ||
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
245 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
246 | CONFIG_NF_CONNTRACK_FTP=m | ||
247 | CONFIG_NF_CONNTRACK_H323=m | ||
248 | CONFIG_NF_CONNTRACK_IRC=m | ||
249 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
250 | CONFIG_NF_CONNTRACK_PPTP=m | ||
251 | CONFIG_NF_CONNTRACK_SANE=m | ||
252 | CONFIG_NF_CONNTRACK_SIP=m | ||
253 | CONFIG_NF_CONNTRACK_TFTP=m | ||
254 | # CONFIG_NF_CT_NETLINK is not set | ||
255 | CONFIG_NETFILTER_XTABLES=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
265 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
266 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
294 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
295 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
266 | 296 | ||
267 | # | 297 | # |
268 | # IP: Netfilter Configuration | 298 | # IP: Netfilter Configuration |
269 | # | 299 | # |
270 | CONFIG_IP_NF_CONNTRACK=m | 300 | CONFIG_NF_CONNTRACK_IPV4=m |
271 | # CONFIG_IP_NF_CT_ACCT is not set | 301 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
272 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
273 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
274 | CONFIG_IP_NF_FTP=m | ||
275 | CONFIG_IP_NF_IRC=m | ||
276 | CONFIG_IP_NF_TFTP=m | ||
277 | CONFIG_IP_NF_AMANDA=m | ||
278 | CONFIG_IP_NF_QUEUE=m | 302 | CONFIG_IP_NF_QUEUE=m |
279 | CONFIG_IP_NF_IPTABLES=m | 303 | CONFIG_IP_NF_IPTABLES=m |
280 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
281 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
282 | CONFIG_IP_NF_MATCH_MAC=m | ||
283 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
284 | CONFIG_IP_NF_MATCH_MARK=m | ||
285 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
286 | CONFIG_IP_NF_MATCH_TOS=m | ||
287 | CONFIG_IP_NF_MATCH_RECENT=m | 304 | CONFIG_IP_NF_MATCH_RECENT=m |
288 | CONFIG_IP_NF_MATCH_ECN=m | 305 | CONFIG_IP_NF_MATCH_ECN=m |
289 | CONFIG_IP_NF_MATCH_DSCP=m | 306 | CONFIG_IP_NF_MATCH_AH=m |
290 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
291 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
292 | CONFIG_IP_NF_MATCH_TTL=m | 307 | CONFIG_IP_NF_MATCH_TTL=m |
293 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
294 | CONFIG_IP_NF_MATCH_HELPER=m | ||
295 | CONFIG_IP_NF_MATCH_STATE=m | ||
296 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
297 | CONFIG_IP_NF_MATCH_OWNER=m | ||
298 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 308 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
299 | CONFIG_IP_NF_MATCH_REALM=m | ||
300 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
301 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
302 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
303 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
304 | CONFIG_IP_NF_FILTER=m | 309 | CONFIG_IP_NF_FILTER=m |
305 | CONFIG_IP_NF_TARGET_REJECT=m | 310 | CONFIG_IP_NF_TARGET_REJECT=m |
306 | CONFIG_IP_NF_TARGET_LOG=m | 311 | CONFIG_IP_NF_TARGET_LOG=m |
307 | CONFIG_IP_NF_TARGET_ULOG=m | 312 | CONFIG_IP_NF_TARGET_ULOG=m |
308 | CONFIG_IP_NF_TARGET_TCPMSS=m | 313 | CONFIG_NF_NAT=m |
309 | CONFIG_IP_NF_NAT=m | 314 | CONFIG_NF_NAT_NEEDED=y |
310 | CONFIG_IP_NF_NAT_NEEDED=y | ||
311 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 315 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
312 | CONFIG_IP_NF_TARGET_REDIRECT=m | 316 | CONFIG_IP_NF_TARGET_REDIRECT=m |
313 | CONFIG_IP_NF_TARGET_NETMAP=m | 317 | CONFIG_IP_NF_TARGET_NETMAP=m |
314 | CONFIG_IP_NF_TARGET_SAME=m | 318 | CONFIG_NF_NAT_SNMP_BASIC=m |
315 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 319 | CONFIG_NF_NAT_PROTO_GRE=m |
316 | CONFIG_IP_NF_NAT_IRC=m | 320 | CONFIG_NF_NAT_FTP=m |
317 | CONFIG_IP_NF_NAT_FTP=m | 321 | CONFIG_NF_NAT_IRC=m |
318 | CONFIG_IP_NF_NAT_TFTP=m | 322 | CONFIG_NF_NAT_TFTP=m |
319 | CONFIG_IP_NF_NAT_AMANDA=m | 323 | CONFIG_NF_NAT_AMANDA=m |
324 | CONFIG_NF_NAT_PPTP=m | ||
325 | CONFIG_NF_NAT_H323=m | ||
326 | CONFIG_NF_NAT_SIP=m | ||
320 | CONFIG_IP_NF_MANGLE=m | 327 | CONFIG_IP_NF_MANGLE=m |
321 | CONFIG_IP_NF_TARGET_TOS=m | ||
322 | CONFIG_IP_NF_TARGET_ECN=m | 328 | CONFIG_IP_NF_TARGET_ECN=m |
323 | CONFIG_IP_NF_TARGET_DSCP=m | 329 | CONFIG_IP_NF_TARGET_TTL=m |
324 | CONFIG_IP_NF_TARGET_MARK=m | 330 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
325 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
326 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
327 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
328 | CONFIG_IP_NF_RAW=m | 331 | CONFIG_IP_NF_RAW=m |
329 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
330 | CONFIG_IP_NF_ARPTABLES=m | 332 | CONFIG_IP_NF_ARPTABLES=m |
331 | CONFIG_IP_NF_ARPFILTER=m | 333 | CONFIG_IP_NF_ARPFILTER=m |
332 | CONFIG_IP_NF_ARP_MANGLE=m | 334 | CONFIG_IP_NF_ARP_MANGLE=m |
333 | 335 | ||
334 | # | 336 | # |
335 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 337 | # IPv6: Netfilter Configuration |
336 | # | 338 | # |
339 | CONFIG_NF_CONNTRACK_IPV6=m | ||
337 | CONFIG_IP6_NF_QUEUE=m | 340 | CONFIG_IP6_NF_QUEUE=m |
338 | CONFIG_IP6_NF_IPTABLES=m | 341 | CONFIG_IP6_NF_IPTABLES=m |
339 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
340 | CONFIG_IP6_NF_MATCH_MAC=m | ||
341 | CONFIG_IP6_NF_MATCH_RT=m | 342 | CONFIG_IP6_NF_MATCH_RT=m |
342 | CONFIG_IP6_NF_MATCH_OPTS=m | 343 | CONFIG_IP6_NF_MATCH_OPTS=m |
343 | CONFIG_IP6_NF_MATCH_FRAG=m | 344 | CONFIG_IP6_NF_MATCH_FRAG=m |
344 | CONFIG_IP6_NF_MATCH_HL=m | 345 | CONFIG_IP6_NF_MATCH_HL=m |
345 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
346 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
347 | CONFIG_IP6_NF_MATCH_MARK=m | ||
348 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 346 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
349 | CONFIG_IP6_NF_MATCH_AHESP=m | 347 | CONFIG_IP6_NF_MATCH_AH=m |
350 | CONFIG_IP6_NF_MATCH_LENGTH=m | 348 | CONFIG_IP6_NF_MATCH_MH=m |
351 | CONFIG_IP6_NF_MATCH_EUI64=m | 349 | CONFIG_IP6_NF_MATCH_EUI64=m |
352 | CONFIG_IP6_NF_FILTER=m | 350 | CONFIG_IP6_NF_FILTER=m |
353 | CONFIG_IP6_NF_TARGET_LOG=m | 351 | CONFIG_IP6_NF_TARGET_LOG=m |
352 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
354 | CONFIG_IP6_NF_MANGLE=m | 353 | CONFIG_IP6_NF_MANGLE=m |
355 | CONFIG_IP6_NF_TARGET_MARK=m | 354 | CONFIG_IP6_NF_TARGET_HL=m |
356 | CONFIG_IP6_NF_RAW=m | 355 | CONFIG_IP6_NF_RAW=m |
357 | CONFIG_XFRM=y | 356 | CONFIG_IP_DCCP=m |
358 | CONFIG_XFRM_USER=m | 357 | CONFIG_INET_DCCP_DIAG=m |
358 | CONFIG_IP_DCCP_ACKVEC=y | ||
359 | 359 | ||
360 | # | 360 | # |
361 | # SCTP Configuration (EXPERIMENTAL) | 361 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
362 | # | 362 | # |
363 | CONFIG_IP_DCCP_CCID2=m | ||
364 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
365 | CONFIG_IP_DCCP_CCID3=m | ||
366 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
367 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
368 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
363 | CONFIG_IP_SCTP=m | 369 | CONFIG_IP_SCTP=m |
364 | # CONFIG_SCTP_DBG_MSG is not set | 370 | # CONFIG_SCTP_DBG_MSG is not set |
365 | # CONFIG_SCTP_DBG_OBJCNT is not set | 371 | # CONFIG_SCTP_DBG_OBJCNT is not set |
366 | # CONFIG_SCTP_HMAC_NONE is not set | 372 | # CONFIG_SCTP_HMAC_NONE is not set |
367 | # CONFIG_SCTP_HMAC_SHA1 is not set | 373 | # CONFIG_SCTP_HMAC_SHA1 is not set |
368 | CONFIG_SCTP_HMAC_MD5=y | 374 | CONFIG_SCTP_HMAC_MD5=y |
375 | # CONFIG_TIPC is not set | ||
369 | # CONFIG_ATM is not set | 376 | # CONFIG_ATM is not set |
370 | # CONFIG_BRIDGE is not set | 377 | # CONFIG_BRIDGE is not set |
371 | # CONFIG_VLAN_8021Q is not set | 378 | # CONFIG_VLAN_8021Q is not set |
372 | # CONFIG_DECNET is not set | 379 | # CONFIG_DECNET is not set |
373 | CONFIG_LLC=m | 380 | CONFIG_LLC=m |
374 | # CONFIG_LLC2 is not set | 381 | # CONFIG_LLC2 is not set |
375 | CONFIG_IPX=m | 382 | # CONFIG_IPX is not set |
376 | # CONFIG_IPX_INTERN is not set | ||
377 | CONFIG_ATALK=m | 383 | CONFIG_ATALK=m |
378 | # CONFIG_DEV_APPLETALK is not set | 384 | # CONFIG_DEV_APPLETALK is not set |
379 | # CONFIG_X25 is not set | 385 | # CONFIG_X25 is not set |
380 | # CONFIG_LAPB is not set | 386 | # CONFIG_LAPB is not set |
381 | # CONFIG_NET_DIVERT is not set | ||
382 | # CONFIG_ECONET is not set | 387 | # CONFIG_ECONET is not set |
383 | # CONFIG_WAN_ROUTER is not set | 388 | # CONFIG_WAN_ROUTER is not set |
384 | |||
385 | # | ||
386 | # QoS and/or fair queueing | ||
387 | # | ||
388 | # CONFIG_NET_SCHED is not set | 389 | # CONFIG_NET_SCHED is not set |
389 | CONFIG_NET_CLS_ROUTE=y | 390 | CONFIG_NET_CLS_ROUTE=y |
390 | 391 | ||
@@ -392,46 +393,155 @@ CONFIG_NET_CLS_ROUTE=y | |||
392 | # Network testing | 393 | # Network testing |
393 | # | 394 | # |
394 | # CONFIG_NET_PKTGEN is not set | 395 | # CONFIG_NET_PKTGEN is not set |
395 | CONFIG_NETPOLL=y | ||
396 | # CONFIG_NETPOLL_RX is not set | ||
397 | # CONFIG_NETPOLL_TRAP is not set | ||
398 | CONFIG_NET_POLL_CONTROLLER=y | ||
399 | # CONFIG_HAMRADIO is not set | 396 | # CONFIG_HAMRADIO is not set |
397 | # CONFIG_CAN is not set | ||
400 | # CONFIG_IRDA is not set | 398 | # CONFIG_IRDA is not set |
401 | # CONFIG_BT is not set | 399 | # CONFIG_BT is not set |
402 | CONFIG_NETDEVICES=y | 400 | # CONFIG_AF_RXRPC is not set |
403 | CONFIG_DUMMY=m | ||
404 | # CONFIG_BONDING is not set | ||
405 | CONFIG_EQUALIZER=m | ||
406 | # CONFIG_TUN is not set | ||
407 | 401 | ||
408 | # | 402 | # |
409 | # Ethernet (10 or 100Mbit) | 403 | # Wireless |
410 | # | 404 | # |
411 | CONFIG_NET_ETHERNET=y | 405 | # CONFIG_CFG80211 is not set |
412 | CONFIG_MII=m | 406 | CONFIG_WIRELESS_EXT=y |
413 | CONFIG_MVME147_NET=y | 407 | # CONFIG_MAC80211 is not set |
408 | CONFIG_IEEE80211=m | ||
409 | # CONFIG_IEEE80211_DEBUG is not set | ||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | ||
416 | # CONFIG_NET_9P is not set | ||
414 | 417 | ||
415 | # | 418 | # |
416 | # Ethernet (1000 Mbit) | 419 | # Device Drivers |
420 | # | ||
421 | |||
422 | # | ||
423 | # Generic Driver Options | ||
424 | # | ||
425 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
426 | CONFIG_STANDALONE=y | ||
427 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
428 | CONFIG_FW_LOADER=m | ||
429 | # CONFIG_SYS_HYPERVISOR is not set | ||
430 | CONFIG_CONNECTOR=m | ||
431 | # CONFIG_MTD is not set | ||
432 | # CONFIG_PARPORT is not set | ||
433 | CONFIG_BLK_DEV=y | ||
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
435 | CONFIG_BLK_DEV_LOOP=y | ||
436 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
437 | CONFIG_BLK_DEV_NBD=m | ||
438 | CONFIG_BLK_DEV_RAM=y | ||
439 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
440 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
441 | # CONFIG_BLK_DEV_XIP is not set | ||
442 | CONFIG_CDROM_PKTCDVD=m | ||
443 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
444 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
445 | CONFIG_ATA_OVER_ETH=m | ||
446 | CONFIG_MISC_DEVICES=y | ||
447 | # CONFIG_EEPROM_93CX6 is not set | ||
448 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
449 | CONFIG_HAVE_IDE=y | ||
450 | # CONFIG_IDE is not set | ||
451 | |||
452 | # | ||
453 | # SCSI device support | ||
417 | # | 454 | # |
455 | CONFIG_RAID_ATTRS=m | ||
456 | CONFIG_SCSI=y | ||
457 | CONFIG_SCSI_DMA=y | ||
458 | CONFIG_SCSI_TGT=m | ||
459 | # CONFIG_SCSI_NETLINK is not set | ||
460 | CONFIG_SCSI_PROC_FS=y | ||
418 | 461 | ||
419 | # | 462 | # |
420 | # Ethernet (10000 Mbit) | 463 | # SCSI support type (disk, tape, CD-ROM) |
421 | # | 464 | # |
465 | CONFIG_BLK_DEV_SD=y | ||
466 | CONFIG_CHR_DEV_ST=m | ||
467 | CONFIG_CHR_DEV_OSST=m | ||
468 | CONFIG_BLK_DEV_SR=y | ||
469 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
470 | CONFIG_CHR_DEV_SG=m | ||
471 | # CONFIG_CHR_DEV_SCH is not set | ||
422 | 472 | ||
423 | # | 473 | # |
424 | # Token Ring devices | 474 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
425 | # | 475 | # |
476 | # CONFIG_SCSI_MULTI_LUN is not set | ||
477 | CONFIG_SCSI_CONSTANTS=y | ||
478 | # CONFIG_SCSI_LOGGING is not set | ||
479 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
480 | CONFIG_SCSI_WAIT_SCAN=m | ||
426 | 481 | ||
427 | # | 482 | # |
428 | # Wireless LAN (non-hamradio) | 483 | # SCSI Transports |
429 | # | 484 | # |
430 | # CONFIG_NET_RADIO is not set | 485 | CONFIG_SCSI_SPI_ATTRS=y |
486 | # CONFIG_SCSI_FC_ATTRS is not set | ||
487 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
488 | CONFIG_SCSI_SAS_ATTRS=m | ||
489 | CONFIG_SCSI_SAS_LIBSAS=m | ||
490 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
491 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
492 | CONFIG_SCSI_SRP_ATTRS=m | ||
493 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
494 | CONFIG_SCSI_LOWLEVEL=y | ||
495 | CONFIG_ISCSI_TCP=m | ||
496 | # CONFIG_SCSI_DEBUG is not set | ||
497 | CONFIG_MVME147_SCSI=y | ||
498 | CONFIG_MD=y | ||
499 | CONFIG_BLK_DEV_MD=m | ||
500 | CONFIG_MD_LINEAR=m | ||
501 | CONFIG_MD_RAID0=m | ||
502 | CONFIG_MD_RAID1=m | ||
503 | # CONFIG_MD_RAID10 is not set | ||
504 | CONFIG_MD_RAID456=m | ||
505 | CONFIG_MD_RAID5_RESHAPE=y | ||
506 | CONFIG_MD_MULTIPATH=m | ||
507 | # CONFIG_MD_FAULTY is not set | ||
508 | CONFIG_BLK_DEV_DM=m | ||
509 | # CONFIG_DM_DEBUG is not set | ||
510 | CONFIG_DM_CRYPT=m | ||
511 | CONFIG_DM_SNAPSHOT=m | ||
512 | CONFIG_DM_MIRROR=m | ||
513 | CONFIG_DM_ZERO=m | ||
514 | CONFIG_DM_MULTIPATH=m | ||
515 | CONFIG_DM_MULTIPATH_EMC=m | ||
516 | CONFIG_DM_MULTIPATH_RDAC=m | ||
517 | CONFIG_DM_MULTIPATH_HP=m | ||
518 | # CONFIG_DM_DELAY is not set | ||
519 | CONFIG_DM_UEVENT=y | ||
520 | CONFIG_NETDEVICES=y | ||
521 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
522 | CONFIG_DUMMY=m | ||
523 | # CONFIG_BONDING is not set | ||
524 | CONFIG_MACVLAN=m | ||
525 | CONFIG_EQUALIZER=m | ||
526 | # CONFIG_TUN is not set | ||
527 | CONFIG_VETH=m | ||
528 | # CONFIG_PHYLIB is not set | ||
529 | CONFIG_NET_ETHERNET=y | ||
530 | # CONFIG_MII is not set | ||
531 | CONFIG_MVME147_NET=y | ||
532 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
533 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
534 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
535 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
536 | # CONFIG_B44 is not set | ||
537 | # CONFIG_NETDEV_1000 is not set | ||
538 | # CONFIG_NETDEV_10000 is not set | ||
431 | 539 | ||
432 | # | 540 | # |
433 | # Wan interfaces | 541 | # Wireless LAN |
434 | # | 542 | # |
543 | # CONFIG_WLAN_PRE80211 is not set | ||
544 | # CONFIG_WLAN_80211 is not set | ||
435 | # CONFIG_WAN is not set | 545 | # CONFIG_WAN is not set |
436 | CONFIG_PPP=m | 546 | CONFIG_PPP=m |
437 | # CONFIG_PPP_MULTILINK is not set | 547 | # CONFIG_PPP_MULTILINK is not set |
@@ -440,28 +550,28 @@ CONFIG_PPP_ASYNC=m | |||
440 | CONFIG_PPP_SYNC_TTY=m | 550 | CONFIG_PPP_SYNC_TTY=m |
441 | CONFIG_PPP_DEFLATE=m | 551 | CONFIG_PPP_DEFLATE=m |
442 | CONFIG_PPP_BSDCOMP=m | 552 | CONFIG_PPP_BSDCOMP=m |
553 | CONFIG_PPP_MPPE=m | ||
443 | CONFIG_PPPOE=m | 554 | CONFIG_PPPOE=m |
555 | CONFIG_PPPOL2TP=m | ||
444 | CONFIG_SLIP=m | 556 | CONFIG_SLIP=m |
445 | CONFIG_SLIP_COMPRESSED=y | 557 | CONFIG_SLIP_COMPRESSED=y |
558 | CONFIG_SLHC=m | ||
446 | CONFIG_SLIP_SMART=y | 559 | CONFIG_SLIP_SMART=y |
447 | CONFIG_SLIP_MODE_SLIP6=y | 560 | CONFIG_SLIP_MODE_SLIP6=y |
448 | CONFIG_SHAPER=m | ||
449 | CONFIG_NETCONSOLE=m | 561 | CONFIG_NETCONSOLE=m |
450 | 562 | CONFIG_NETCONSOLE_DYNAMIC=y | |
451 | # | 563 | CONFIG_NETPOLL=y |
452 | # ISDN subsystem | 564 | # CONFIG_NETPOLL_TRAP is not set |
453 | # | 565 | CONFIG_NET_POLL_CONTROLLER=y |
454 | # CONFIG_ISDN is not set | 566 | # CONFIG_ISDN is not set |
455 | |||
456 | # | ||
457 | # Telephony Support | ||
458 | # | ||
459 | # CONFIG_PHONE is not set | 567 | # CONFIG_PHONE is not set |
460 | 568 | ||
461 | # | 569 | # |
462 | # Input device support | 570 | # Input device support |
463 | # | 571 | # |
464 | CONFIG_INPUT=y | 572 | CONFIG_INPUT=y |
573 | CONFIG_INPUT_FF_MEMLESS=m | ||
574 | # CONFIG_INPUT_POLLDEV is not set | ||
465 | 575 | ||
466 | # | 576 | # |
467 | # Userland interfaces | 577 | # Userland interfaces |
@@ -471,7 +581,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
471 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 581 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
472 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 582 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
473 | # CONFIG_INPUT_JOYDEV is not set | 583 | # CONFIG_INPUT_JOYDEV is not set |
474 | # CONFIG_INPUT_TSDEV is not set | ||
475 | # CONFIG_INPUT_EVDEV is not set | 584 | # CONFIG_INPUT_EVDEV is not set |
476 | # CONFIG_INPUT_EVBUG is not set | 585 | # CONFIG_INPUT_EVBUG is not set |
477 | 586 | ||
@@ -484,11 +593,19 @@ CONFIG_INPUT_KEYBOARD=y | |||
484 | # CONFIG_KEYBOARD_LKKBD is not set | 593 | # CONFIG_KEYBOARD_LKKBD is not set |
485 | # CONFIG_KEYBOARD_XTKBD is not set | 594 | # CONFIG_KEYBOARD_XTKBD is not set |
486 | # CONFIG_KEYBOARD_NEWTON is not set | 595 | # CONFIG_KEYBOARD_NEWTON is not set |
596 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
487 | CONFIG_INPUT_MOUSE=y | 597 | CONFIG_INPUT_MOUSE=y |
488 | CONFIG_MOUSE_PS2=m | 598 | CONFIG_MOUSE_PS2=m |
599 | CONFIG_MOUSE_PS2_ALPS=y | ||
600 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
601 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
602 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
603 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
604 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
489 | CONFIG_MOUSE_SERIAL=m | 605 | CONFIG_MOUSE_SERIAL=m |
490 | # CONFIG_MOUSE_VSXXXAA is not set | 606 | # CONFIG_MOUSE_VSXXXAA is not set |
491 | # CONFIG_INPUT_JOYSTICK is not set | 607 | # CONFIG_INPUT_JOYSTICK is not set |
608 | # CONFIG_INPUT_TABLET is not set | ||
492 | # CONFIG_INPUT_TOUCHSCREEN is not set | 609 | # CONFIG_INPUT_TOUCHSCREEN is not set |
493 | # CONFIG_INPUT_MISC is not set | 610 | # CONFIG_INPUT_MISC is not set |
494 | 611 | ||
@@ -496,7 +613,7 @@ CONFIG_MOUSE_SERIAL=m | |||
496 | # Hardware I/O ports | 613 | # Hardware I/O ports |
497 | # | 614 | # |
498 | CONFIG_SERIO=m | 615 | CONFIG_SERIO=m |
499 | CONFIG_SERIO_SERPORT=m | 616 | # CONFIG_SERIO_SERPORT is not set |
500 | CONFIG_SERIO_LIBPS2=m | 617 | CONFIG_SERIO_LIBPS2=m |
501 | # CONFIG_SERIO_RAW is not set | 618 | # CONFIG_SERIO_RAW is not set |
502 | # CONFIG_GAMEPORT is not set | 619 | # CONFIG_GAMEPORT is not set |
@@ -507,6 +624,7 @@ CONFIG_SERIO_LIBPS2=m | |||
507 | CONFIG_VT=y | 624 | CONFIG_VT=y |
508 | CONFIG_VT_CONSOLE=y | 625 | CONFIG_VT_CONSOLE=y |
509 | CONFIG_HW_CONSOLE=y | 626 | CONFIG_HW_CONSOLE=y |
627 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
510 | # CONFIG_SERIAL_NONSTANDARD is not set | 628 | # CONFIG_SERIAL_NONSTANDARD is not set |
511 | 629 | ||
512 | # | 630 | # |
@@ -520,112 +638,80 @@ CONFIG_HW_CONSOLE=y | |||
520 | CONFIG_UNIX98_PTYS=y | 638 | CONFIG_UNIX98_PTYS=y |
521 | CONFIG_LEGACY_PTYS=y | 639 | CONFIG_LEGACY_PTYS=y |
522 | CONFIG_LEGACY_PTY_COUNT=256 | 640 | CONFIG_LEGACY_PTY_COUNT=256 |
523 | |||
524 | # | ||
525 | # IPMI | ||
526 | # | ||
527 | # CONFIG_IPMI_HANDLER is not set | 641 | # CONFIG_IPMI_HANDLER is not set |
528 | 642 | # CONFIG_HW_RANDOM is not set | |
529 | # | ||
530 | # Watchdog Cards | ||
531 | # | ||
532 | # CONFIG_WATCHDOG is not set | ||
533 | CONFIG_GEN_RTC=m | 643 | CONFIG_GEN_RTC=m |
534 | CONFIG_GEN_RTC_X=y | 644 | CONFIG_GEN_RTC_X=y |
535 | # CONFIG_DTLK is not set | ||
536 | # CONFIG_R3964 is not set | 645 | # CONFIG_R3964 is not set |
537 | |||
538 | # | ||
539 | # Ftape, the floppy tape device driver | ||
540 | # | ||
541 | # CONFIG_DRM is not set | ||
542 | # CONFIG_RAW_DRIVER is not set | 646 | # CONFIG_RAW_DRIVER is not set |
647 | # CONFIG_TCG_TPM is not set | ||
648 | # CONFIG_I2C is not set | ||
543 | 649 | ||
544 | # | 650 | # |
545 | # TPM devices | 651 | # SPI support |
546 | # | ||
547 | |||
548 | # | ||
549 | # I2C support | ||
550 | # | 652 | # |
551 | # CONFIG_I2C is not set | 653 | # CONFIG_SPI is not set |
654 | # CONFIG_SPI_MASTER is not set | ||
655 | # CONFIG_W1 is not set | ||
656 | # CONFIG_POWER_SUPPLY is not set | ||
657 | # CONFIG_HWMON is not set | ||
658 | # CONFIG_THERMAL is not set | ||
659 | # CONFIG_WATCHDOG is not set | ||
552 | 660 | ||
553 | # | 661 | # |
554 | # Dallas's 1-wire bus | 662 | # Sonics Silicon Backplane |
555 | # | 663 | # |
556 | # CONFIG_W1 is not set | 664 | CONFIG_SSB_POSSIBLE=y |
665 | # CONFIG_SSB is not set | ||
557 | 666 | ||
558 | # | 667 | # |
559 | # Misc devices | 668 | # Multifunction device drivers |
560 | # | 669 | # |
670 | # CONFIG_MFD_SM501 is not set | ||
561 | 671 | ||
562 | # | 672 | # |
563 | # Multimedia devices | 673 | # Multimedia devices |
564 | # | 674 | # |
565 | # CONFIG_VIDEO_DEV is not set | 675 | # CONFIG_VIDEO_DEV is not set |
676 | # CONFIG_DVB_CORE is not set | ||
677 | # CONFIG_DAB is not set | ||
566 | 678 | ||
567 | # | 679 | # |
568 | # Digital Video Broadcasting Devices | 680 | # Graphics support |
569 | # | 681 | # |
570 | # CONFIG_DVB is not set | 682 | # CONFIG_VGASTATE is not set |
683 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
684 | # CONFIG_FB is not set | ||
685 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
571 | 686 | ||
572 | # | 687 | # |
573 | # Graphics support | 688 | # Display device support |
574 | # | 689 | # |
575 | CONFIG_FB=y | 690 | # CONFIG_DISPLAY_SUPPORT is not set |
576 | # CONFIG_FB_CFB_FILLRECT is not set | ||
577 | # CONFIG_FB_CFB_COPYAREA is not set | ||
578 | # CONFIG_FB_CFB_IMAGEBLIT is not set | ||
579 | # CONFIG_FB_SOFT_CURSOR is not set | ||
580 | # CONFIG_FB_MACMODES is not set | ||
581 | CONFIG_FB_MODE_HELPERS=y | ||
582 | # CONFIG_FB_TILEBLITTING is not set | ||
583 | # CONFIG_FB_S1D13XXX is not set | ||
584 | # CONFIG_FB_VIRTUAL is not set | ||
585 | 691 | ||
586 | # | 692 | # |
587 | # Console display driver support | 693 | # Console display driver support |
588 | # | 694 | # |
589 | CONFIG_DUMMY_CONSOLE=y | 695 | CONFIG_DUMMY_CONSOLE=y |
590 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
591 | # CONFIG_FONTS is not set | ||
592 | CONFIG_FONT_8x8=y | ||
593 | CONFIG_FONT_8x16=y | ||
594 | |||
595 | # | ||
596 | # Logo configuration | ||
597 | # | ||
598 | CONFIG_LOGO=y | ||
599 | CONFIG_LOGO_LINUX_MONO=y | ||
600 | CONFIG_LOGO_LINUX_VGA16=y | ||
601 | CONFIG_LOGO_LINUX_CLUT224=y | ||
602 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
603 | 696 | ||
604 | # | 697 | # |
605 | # Sound | 698 | # Sound |
606 | # | 699 | # |
607 | # CONFIG_SOUND is not set | 700 | # CONFIG_SOUND is not set |
608 | 701 | CONFIG_HID_SUPPORT=y | |
609 | # | 702 | CONFIG_HID=m |
610 | # USB support | 703 | # CONFIG_HID_DEBUG is not set |
611 | # | 704 | CONFIG_HIDRAW=y |
612 | # CONFIG_USB_ARCH_HAS_HCD is not set | 705 | # CONFIG_USB_SUPPORT is not set |
613 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
614 | |||
615 | # | ||
616 | # USB Gadget Support | ||
617 | # | ||
618 | # CONFIG_USB_GADGET is not set | ||
619 | |||
620 | # | ||
621 | # MMC/SD Card support | ||
622 | # | ||
623 | # CONFIG_MMC is not set | 706 | # CONFIG_MMC is not set |
707 | # CONFIG_MEMSTICK is not set | ||
708 | # CONFIG_NEW_LEDS is not set | ||
709 | # CONFIG_RTC_CLASS is not set | ||
624 | 710 | ||
625 | # | 711 | # |
626 | # InfiniBand support | 712 | # Userspace I/O |
627 | # | 713 | # |
628 | # CONFIG_INFINIBAND is not set | 714 | # CONFIG_UIO is not set |
629 | 715 | ||
630 | # | 716 | # |
631 | # Character devices | 717 | # Character devices |
@@ -638,10 +724,11 @@ CONFIG_SERIAL_CONSOLE=y | |||
638 | # | 724 | # |
639 | CONFIG_EXT2_FS=y | 725 | CONFIG_EXT2_FS=y |
640 | # CONFIG_EXT2_FS_XATTR is not set | 726 | # CONFIG_EXT2_FS_XATTR is not set |
727 | # CONFIG_EXT2_FS_XIP is not set | ||
641 | CONFIG_EXT3_FS=y | 728 | CONFIG_EXT3_FS=y |
642 | # CONFIG_EXT3_FS_XATTR is not set | 729 | # CONFIG_EXT3_FS_XATTR is not set |
730 | # CONFIG_EXT4DEV_FS is not set | ||
643 | CONFIG_JBD=y | 731 | CONFIG_JBD=y |
644 | # CONFIG_JBD_DEBUG is not set | ||
645 | CONFIG_REISERFS_FS=m | 732 | CONFIG_REISERFS_FS=m |
646 | # CONFIG_REISERFS_CHECK is not set | 733 | # CONFIG_REISERFS_CHECK is not set |
647 | # CONFIG_REISERFS_PROC_INFO is not set | 734 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -652,25 +739,29 @@ CONFIG_JFS_FS=m | |||
652 | # CONFIG_JFS_DEBUG is not set | 739 | # CONFIG_JFS_DEBUG is not set |
653 | # CONFIG_JFS_STATISTICS is not set | 740 | # CONFIG_JFS_STATISTICS is not set |
654 | CONFIG_FS_POSIX_ACL=y | 741 | CONFIG_FS_POSIX_ACL=y |
655 | |||
656 | # | ||
657 | # XFS support | ||
658 | # | ||
659 | CONFIG_XFS_FS=m | 742 | CONFIG_XFS_FS=m |
660 | CONFIG_XFS_EXPORT=y | ||
661 | # CONFIG_XFS_RT is not set | ||
662 | # CONFIG_XFS_QUOTA is not set | 743 | # CONFIG_XFS_QUOTA is not set |
663 | # CONFIG_XFS_SECURITY is not set | 744 | # CONFIG_XFS_SECURITY is not set |
664 | # CONFIG_XFS_POSIX_ACL is not set | 745 | # CONFIG_XFS_POSIX_ACL is not set |
665 | CONFIG_MINIX_FS=y | 746 | # CONFIG_XFS_RT is not set |
666 | # CONFIG_ROMFS_FS is not set | 747 | CONFIG_GFS2_FS=m |
748 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
749 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
750 | CONFIG_OCFS2_FS=m | ||
751 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
752 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
753 | CONFIG_DNOTIFY=y | ||
754 | CONFIG_INOTIFY=y | ||
755 | CONFIG_INOTIFY_USER=y | ||
667 | CONFIG_QUOTA=y | 756 | CONFIG_QUOTA=y |
757 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
758 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
668 | # CONFIG_QFMT_V1 is not set | 759 | # CONFIG_QFMT_V1 is not set |
669 | # CONFIG_QFMT_V2 is not set | 760 | # CONFIG_QFMT_V2 is not set |
670 | CONFIG_QUOTACTL=y | 761 | CONFIG_QUOTACTL=y |
671 | CONFIG_DNOTIFY=y | ||
672 | CONFIG_AUTOFS_FS=m | 762 | CONFIG_AUTOFS_FS=m |
673 | CONFIG_AUTOFS4_FS=m | 763 | CONFIG_AUTOFS4_FS=m |
764 | CONFIG_FUSE_FS=m | ||
674 | 765 | ||
675 | # | 766 | # |
676 | # CD-ROM/DVD Filesystems | 767 | # CD-ROM/DVD Filesystems |
@@ -678,7 +769,6 @@ CONFIG_AUTOFS4_FS=m | |||
678 | CONFIG_ISO9660_FS=y | 769 | CONFIG_ISO9660_FS=y |
679 | CONFIG_JOLIET=y | 770 | CONFIG_JOLIET=y |
680 | CONFIG_ZISOFS=y | 771 | CONFIG_ZISOFS=y |
681 | CONFIG_ZISOFS_FS=y | ||
682 | CONFIG_UDF_FS=m | 772 | CONFIG_UDF_FS=m |
683 | CONFIG_UDF_NLS=y | 773 | CONFIG_UDF_NLS=y |
684 | 774 | ||
@@ -697,15 +787,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
697 | # | 787 | # |
698 | CONFIG_PROC_FS=y | 788 | CONFIG_PROC_FS=y |
699 | CONFIG_PROC_KCORE=y | 789 | CONFIG_PROC_KCORE=y |
790 | CONFIG_PROC_SYSCTL=y | ||
700 | CONFIG_SYSFS=y | 791 | CONFIG_SYSFS=y |
701 | CONFIG_DEVFS_FS=y | ||
702 | # CONFIG_DEVFS_MOUNT is not set | ||
703 | # CONFIG_DEVFS_DEBUG is not set | ||
704 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
705 | CONFIG_TMPFS=y | 792 | CONFIG_TMPFS=y |
706 | # CONFIG_TMPFS_XATTR is not set | 793 | # CONFIG_TMPFS_POSIX_ACL is not set |
707 | # CONFIG_HUGETLB_PAGE is not set | 794 | # CONFIG_HUGETLB_PAGE is not set |
708 | CONFIG_RAMFS=y | 795 | CONFIG_CONFIGFS_FS=m |
709 | 796 | ||
710 | # | 797 | # |
711 | # Miscellaneous filesystems | 798 | # Miscellaneous filesystems |
@@ -719,44 +806,40 @@ CONFIG_HFSPLUS_FS=m | |||
719 | # CONFIG_EFS_FS is not set | 806 | # CONFIG_EFS_FS is not set |
720 | CONFIG_CRAMFS=m | 807 | CONFIG_CRAMFS=m |
721 | # CONFIG_VXFS_FS is not set | 808 | # CONFIG_VXFS_FS is not set |
809 | CONFIG_MINIX_FS=y | ||
722 | CONFIG_HPFS_FS=m | 810 | CONFIG_HPFS_FS=m |
723 | # CONFIG_QNX4FS_FS is not set | 811 | # CONFIG_QNX4FS_FS is not set |
812 | # CONFIG_ROMFS_FS is not set | ||
724 | CONFIG_SYSV_FS=m | 813 | CONFIG_SYSV_FS=m |
725 | CONFIG_UFS_FS=m | 814 | CONFIG_UFS_FS=m |
726 | # CONFIG_UFS_FS_WRITE is not set | 815 | # CONFIG_UFS_FS_WRITE is not set |
727 | 816 | # CONFIG_UFS_DEBUG is not set | |
728 | # | 817 | CONFIG_NETWORK_FILESYSTEMS=y |
729 | # Network File Systems | ||
730 | # | ||
731 | CONFIG_NFS_FS=y | 818 | CONFIG_NFS_FS=y |
732 | CONFIG_NFS_V3=y | 819 | CONFIG_NFS_V3=y |
820 | # CONFIG_NFS_V3_ACL is not set | ||
733 | CONFIG_NFS_V4=y | 821 | CONFIG_NFS_V4=y |
734 | # CONFIG_NFS_DIRECTIO is not set | 822 | # CONFIG_NFS_DIRECTIO is not set |
735 | CONFIG_NFSD=m | 823 | CONFIG_NFSD=m |
736 | CONFIG_NFSD_V3=y | 824 | CONFIG_NFSD_V3=y |
737 | CONFIG_NFSD_V4=y | 825 | # CONFIG_NFSD_V3_ACL is not set |
826 | # CONFIG_NFSD_V4 is not set | ||
738 | CONFIG_NFSD_TCP=y | 827 | CONFIG_NFSD_TCP=y |
739 | CONFIG_ROOT_NFS=y | 828 | CONFIG_ROOT_NFS=y |
740 | CONFIG_LOCKD=y | 829 | CONFIG_LOCKD=y |
741 | CONFIG_LOCKD_V4=y | 830 | CONFIG_LOCKD_V4=y |
742 | CONFIG_EXPORTFS=m | 831 | CONFIG_EXPORTFS=m |
832 | CONFIG_NFS_COMMON=y | ||
743 | CONFIG_SUNRPC=y | 833 | CONFIG_SUNRPC=y |
744 | CONFIG_SUNRPC_GSS=y | 834 | CONFIG_SUNRPC_GSS=y |
835 | CONFIG_SUNRPC_BIND34=y | ||
745 | CONFIG_RPCSEC_GSS_KRB5=y | 836 | CONFIG_RPCSEC_GSS_KRB5=y |
746 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 837 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
747 | CONFIG_SMB_FS=m | 838 | CONFIG_SMB_FS=m |
748 | CONFIG_SMB_NLS_DEFAULT=y | 839 | CONFIG_SMB_NLS_DEFAULT=y |
749 | CONFIG_SMB_NLS_REMOTE="cp437" | 840 | CONFIG_SMB_NLS_REMOTE="cp437" |
750 | # CONFIG_CIFS is not set | 841 | # CONFIG_CIFS is not set |
751 | CONFIG_NCP_FS=m | 842 | # CONFIG_NCP_FS is not set |
752 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
753 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
754 | # CONFIG_NCPFS_STRONG is not set | ||
755 | # CONFIG_NCPFS_NFS_NS is not set | ||
756 | # CONFIG_NCPFS_OS2_NS is not set | ||
757 | # CONFIG_NCPFS_SMALLDOS is not set | ||
758 | CONFIG_NCPFS_NLS=y | ||
759 | # CONFIG_NCPFS_EXTRAS is not set | ||
760 | CONFIG_CODA_FS=m | 843 | CONFIG_CODA_FS=m |
761 | # CONFIG_CODA_FS_OLD_API is not set | 844 | # CONFIG_CODA_FS_OLD_API is not set |
762 | # CONFIG_AFS_FS is not set | 845 | # CONFIG_AFS_FS is not set |
@@ -766,10 +849,7 @@ CONFIG_CODA_FS=m | |||
766 | # | 849 | # |
767 | # CONFIG_PARTITION_ADVANCED is not set | 850 | # CONFIG_PARTITION_ADVANCED is not set |
768 | CONFIG_MSDOS_PARTITION=y | 851 | CONFIG_MSDOS_PARTITION=y |
769 | 852 | CONFIG_SYSV68_PARTITION=y | |
770 | # | ||
771 | # Native Language Support | ||
772 | # | ||
773 | CONFIG_NLS=y | 853 | CONFIG_NLS=y |
774 | CONFIG_NLS_DEFAULT="iso8859-1" | 854 | CONFIG_NLS_DEFAULT="iso8859-1" |
775 | CONFIG_NLS_CODEPAGE_437=y | 855 | CONFIG_NLS_CODEPAGE_437=y |
@@ -810,35 +890,42 @@ CONFIG_NLS_ISO8859_15=m | |||
810 | CONFIG_NLS_KOI8_R=m | 890 | CONFIG_NLS_KOI8_R=m |
811 | CONFIG_NLS_KOI8_U=m | 891 | CONFIG_NLS_KOI8_U=m |
812 | CONFIG_NLS_UTF8=m | 892 | CONFIG_NLS_UTF8=m |
893 | CONFIG_DLM=m | ||
894 | # CONFIG_DLM_DEBUG is not set | ||
813 | 895 | ||
814 | # | 896 | # |
815 | # Kernel hacking | 897 | # Kernel hacking |
816 | # | 898 | # |
817 | # CONFIG_PRINTK_TIME is not set | 899 | # CONFIG_PRINTK_TIME is not set |
818 | CONFIG_DEBUG_KERNEL=y | 900 | CONFIG_ENABLE_WARN_DEPRECATED=y |
901 | CONFIG_ENABLE_MUST_CHECK=y | ||
819 | CONFIG_MAGIC_SYSRQ=y | 902 | CONFIG_MAGIC_SYSRQ=y |
820 | CONFIG_LOG_BUF_SHIFT=16 | 903 | # CONFIG_UNUSED_SYMBOLS is not set |
821 | # CONFIG_SCHEDSTATS is not set | ||
822 | # CONFIG_DEBUG_SLAB is not set | ||
823 | # CONFIG_DEBUG_SPINLOCK is not set | ||
824 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
825 | # CONFIG_DEBUG_KOBJECT is not set | ||
826 | CONFIG_DEBUG_BUGVERBOSE=y | ||
827 | # CONFIG_DEBUG_INFO is not set | ||
828 | # CONFIG_DEBUG_FS is not set | 904 | # CONFIG_DEBUG_FS is not set |
829 | # CONFIG_FRAME_POINTER is not set | 905 | # CONFIG_HEADERS_CHECK is not set |
906 | # CONFIG_DEBUG_KERNEL is not set | ||
907 | CONFIG_DEBUG_BUGVERBOSE=y | ||
908 | # CONFIG_SAMPLES is not set | ||
830 | 909 | ||
831 | # | 910 | # |
832 | # Security options | 911 | # Security options |
833 | # | 912 | # |
834 | # CONFIG_KEYS is not set | 913 | # CONFIG_KEYS is not set |
835 | # CONFIG_SECURITY is not set | 914 | # CONFIG_SECURITY is not set |
836 | 915 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
837 | # | 916 | CONFIG_XOR_BLOCKS=m |
838 | # Cryptographic options | 917 | CONFIG_ASYNC_CORE=m |
839 | # | 918 | CONFIG_ASYNC_MEMCPY=m |
919 | CONFIG_ASYNC_XOR=m | ||
840 | CONFIG_CRYPTO=y | 920 | CONFIG_CRYPTO=y |
921 | CONFIG_CRYPTO_ALGAPI=y | ||
922 | CONFIG_CRYPTO_AEAD=m | ||
923 | CONFIG_CRYPTO_BLKCIPHER=y | ||
924 | CONFIG_CRYPTO_SEQIV=m | ||
925 | CONFIG_CRYPTO_HASH=y | ||
926 | CONFIG_CRYPTO_MANAGER=y | ||
841 | CONFIG_CRYPTO_HMAC=y | 927 | CONFIG_CRYPTO_HMAC=y |
928 | CONFIG_CRYPTO_XCBC=m | ||
842 | CONFIG_CRYPTO_NULL=m | 929 | CONFIG_CRYPTO_NULL=m |
843 | CONFIG_CRYPTO_MD4=m | 930 | CONFIG_CRYPTO_MD4=m |
844 | CONFIG_CRYPTO_MD5=y | 931 | CONFIG_CRYPTO_MD5=y |
@@ -847,9 +934,21 @@ CONFIG_CRYPTO_SHA256=m | |||
847 | CONFIG_CRYPTO_SHA512=m | 934 | CONFIG_CRYPTO_SHA512=m |
848 | CONFIG_CRYPTO_WP512=m | 935 | CONFIG_CRYPTO_WP512=m |
849 | CONFIG_CRYPTO_TGR192=m | 936 | CONFIG_CRYPTO_TGR192=m |
937 | CONFIG_CRYPTO_GF128MUL=m | ||
938 | CONFIG_CRYPTO_ECB=m | ||
939 | CONFIG_CRYPTO_CBC=y | ||
940 | CONFIG_CRYPTO_PCBC=m | ||
941 | CONFIG_CRYPTO_LRW=m | ||
942 | CONFIG_CRYPTO_XTS=m | ||
943 | CONFIG_CRYPTO_CTR=m | ||
944 | CONFIG_CRYPTO_GCM=m | ||
945 | CONFIG_CRYPTO_CCM=m | ||
946 | CONFIG_CRYPTO_CRYPTD=m | ||
850 | CONFIG_CRYPTO_DES=y | 947 | CONFIG_CRYPTO_DES=y |
948 | CONFIG_CRYPTO_FCRYPT=m | ||
851 | CONFIG_CRYPTO_BLOWFISH=m | 949 | CONFIG_CRYPTO_BLOWFISH=m |
852 | CONFIG_CRYPTO_TWOFISH=m | 950 | CONFIG_CRYPTO_TWOFISH=m |
951 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
853 | CONFIG_CRYPTO_SERPENT=m | 952 | CONFIG_CRYPTO_SERPENT=m |
854 | CONFIG_CRYPTO_AES=m | 953 | CONFIG_CRYPTO_AES=m |
855 | CONFIG_CRYPTO_CAST5=m | 954 | CONFIG_CRYPTO_CAST5=m |
@@ -858,20 +957,35 @@ CONFIG_CRYPTO_TEA=m | |||
858 | CONFIG_CRYPTO_ARC4=m | 957 | CONFIG_CRYPTO_ARC4=m |
859 | CONFIG_CRYPTO_KHAZAD=m | 958 | CONFIG_CRYPTO_KHAZAD=m |
860 | CONFIG_CRYPTO_ANUBIS=m | 959 | CONFIG_CRYPTO_ANUBIS=m |
960 | CONFIG_CRYPTO_SEED=m | ||
961 | CONFIG_CRYPTO_SALSA20=m | ||
861 | CONFIG_CRYPTO_DEFLATE=m | 962 | CONFIG_CRYPTO_DEFLATE=m |
862 | CONFIG_CRYPTO_MICHAEL_MIC=m | 963 | CONFIG_CRYPTO_MICHAEL_MIC=m |
863 | CONFIG_CRYPTO_CRC32C=m | 964 | CONFIG_CRYPTO_CRC32C=m |
965 | CONFIG_CRYPTO_CAMELLIA=m | ||
864 | CONFIG_CRYPTO_TEST=m | 966 | CONFIG_CRYPTO_TEST=m |
865 | 967 | CONFIG_CRYPTO_AUTHENC=m | |
866 | # | 968 | CONFIG_CRYPTO_LZO=m |
867 | # Hardware crypto devices | 969 | # CONFIG_CRYPTO_HW is not set |
868 | # | ||
869 | 970 | ||
870 | # | 971 | # |
871 | # Library routines | 972 | # Library routines |
872 | # | 973 | # |
974 | CONFIG_BITREVERSE=y | ||
873 | CONFIG_CRC_CCITT=m | 975 | CONFIG_CRC_CCITT=m |
976 | CONFIG_CRC16=m | ||
977 | # CONFIG_CRC_ITU_T is not set | ||
874 | CONFIG_CRC32=y | 978 | CONFIG_CRC32=y |
979 | # CONFIG_CRC7 is not set | ||
875 | CONFIG_LIBCRC32C=m | 980 | CONFIG_LIBCRC32C=m |
876 | CONFIG_ZLIB_INFLATE=y | 981 | CONFIG_ZLIB_INFLATE=y |
877 | CONFIG_ZLIB_DEFLATE=m | 982 | CONFIG_ZLIB_DEFLATE=m |
983 | CONFIG_LZO_COMPRESS=m | ||
984 | CONFIG_LZO_DECOMPRESS=m | ||
985 | CONFIG_TEXTSEARCH=y | ||
986 | CONFIG_TEXTSEARCH_KMP=m | ||
987 | CONFIG_TEXTSEARCH_BM=m | ||
988 | CONFIG_TEXTSEARCH_FSM=m | ||
989 | CONFIG_PLIST=y | ||
990 | CONFIG_HAS_IOMEM=y | ||
991 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig index 1d5c46ff3c81..e9ccc774334e 100644 --- a/arch/m68k/configs/mvme16x_defconfig +++ b/arch/m68k/configs/mvme16x_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:53 2005 | 4 | # Wed Apr 2 20:46:19 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-mvme16x" | 27 | CONFIG_LOCALVERSION="-mvme16x" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -85,6 +133,22 @@ CONFIG_M68060=y | |||
85 | CONFIG_MMU_MOTOROLA=y | 133 | CONFIG_MMU_MOTOROLA=y |
86 | # CONFIG_M68KFPU_EMU is not set | 134 | # CONFIG_M68KFPU_EMU is not set |
87 | # CONFIG_ADVANCED is not set | 135 | # CONFIG_ADVANCED is not set |
136 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
137 | CONFIG_NODES_SHIFT=3 | ||
138 | CONFIG_SELECT_MEMORY_MODEL=y | ||
139 | # CONFIG_FLATMEM_MANUAL is not set | ||
140 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
141 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
142 | CONFIG_DISCONTIGMEM=y | ||
143 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
144 | CONFIG_NEED_MULTIPLE_NODES=y | ||
145 | # CONFIG_SPARSEMEM_STATIC is not set | ||
146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
148 | # CONFIG_RESOURCES_64BIT is not set | ||
149 | CONFIG_ZONE_DMA_FLAG=1 | ||
150 | CONFIG_BOUNCE=y | ||
151 | CONFIG_VIRT_TO_BUS=y | ||
88 | 152 | ||
89 | # | 153 | # |
90 | # General setup | 154 | # General setup |
@@ -93,134 +157,11 @@ CONFIG_BINFMT_ELF=y | |||
93 | CONFIG_BINFMT_AOUT=m | 157 | CONFIG_BINFMT_AOUT=m |
94 | CONFIG_BINFMT_MISC=m | 158 | CONFIG_BINFMT_MISC=m |
95 | CONFIG_PROC_HARDWARE=y | 159 | CONFIG_PROC_HARDWARE=y |
160 | CONFIG_ZONE_DMA=y | ||
161 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
96 | 162 | ||
97 | # | 163 | # |
98 | # Device Drivers | 164 | # Networking |
99 | # | ||
100 | |||
101 | # | ||
102 | # Generic Driver Options | ||
103 | # | ||
104 | CONFIG_STANDALONE=y | ||
105 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
106 | CONFIG_FW_LOADER=m | ||
107 | # CONFIG_DEBUG_DRIVER is not set | ||
108 | |||
109 | # | ||
110 | # Memory Technology Devices (MTD) | ||
111 | # | ||
112 | # CONFIG_MTD is not set | ||
113 | |||
114 | # | ||
115 | # Parallel port support | ||
116 | # | ||
117 | # CONFIG_PARPORT is not set | ||
118 | |||
119 | # | ||
120 | # Plug and Play support | ||
121 | # | ||
122 | |||
123 | # | ||
124 | # Block devices | ||
125 | # | ||
126 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
127 | CONFIG_BLK_DEV_LOOP=y | ||
128 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
129 | CONFIG_BLK_DEV_NBD=m | ||
130 | CONFIG_BLK_DEV_RAM=y | ||
131 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
132 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
133 | CONFIG_BLK_DEV_INITRD=y | ||
134 | CONFIG_INITRAMFS_SOURCE="" | ||
135 | CONFIG_CDROM_PKTCDVD=m | ||
136 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
137 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
138 | |||
139 | # | ||
140 | # IO Schedulers | ||
141 | # | ||
142 | CONFIG_IOSCHED_NOOP=y | ||
143 | CONFIG_IOSCHED_AS=y | ||
144 | CONFIG_IOSCHED_DEADLINE=y | ||
145 | CONFIG_IOSCHED_CFQ=y | ||
146 | CONFIG_ATA_OVER_ETH=m | ||
147 | |||
148 | # | ||
149 | # ATA/ATAPI/MFM/RLL support | ||
150 | # | ||
151 | # CONFIG_IDE is not set | ||
152 | |||
153 | # | ||
154 | # SCSI device support | ||
155 | # | ||
156 | CONFIG_SCSI=y | ||
157 | CONFIG_SCSI_PROC_FS=y | ||
158 | |||
159 | # | ||
160 | # SCSI support type (disk, tape, CD-ROM) | ||
161 | # | ||
162 | CONFIG_BLK_DEV_SD=y | ||
163 | CONFIG_CHR_DEV_ST=m | ||
164 | # CONFIG_CHR_DEV_OSST is not set | ||
165 | CONFIG_BLK_DEV_SR=y | ||
166 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
167 | CONFIG_CHR_DEV_SG=m | ||
168 | |||
169 | # | ||
170 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
171 | # | ||
172 | # CONFIG_SCSI_MULTI_LUN is not set | ||
173 | CONFIG_SCSI_CONSTANTS=y | ||
174 | # CONFIG_SCSI_LOGGING is not set | ||
175 | |||
176 | # | ||
177 | # SCSI Transport Attributes | ||
178 | # | ||
179 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
180 | # CONFIG_SCSI_FC_ATTRS is not set | ||
181 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
182 | |||
183 | # | ||
184 | # SCSI low-level drivers | ||
185 | # | ||
186 | # CONFIG_SCSI_SATA is not set | ||
187 | # CONFIG_SCSI_DEBUG is not set | ||
188 | |||
189 | # | ||
190 | # Multi-device support (RAID and LVM) | ||
191 | # | ||
192 | CONFIG_MD=y | ||
193 | CONFIG_BLK_DEV_MD=m | ||
194 | CONFIG_MD_LINEAR=m | ||
195 | CONFIG_MD_RAID0=m | ||
196 | CONFIG_MD_RAID1=m | ||
197 | # CONFIG_MD_RAID10 is not set | ||
198 | CONFIG_MD_RAID5=m | ||
199 | CONFIG_MD_RAID6=m | ||
200 | CONFIG_MD_MULTIPATH=m | ||
201 | # CONFIG_MD_FAULTY is not set | ||
202 | CONFIG_BLK_DEV_DM=m | ||
203 | CONFIG_DM_CRYPT=m | ||
204 | CONFIG_DM_SNAPSHOT=m | ||
205 | CONFIG_DM_MIRROR=m | ||
206 | CONFIG_DM_ZERO=m | ||
207 | CONFIG_DM_MULTIPATH=m | ||
208 | CONFIG_DM_MULTIPATH_EMC=m | ||
209 | |||
210 | # | ||
211 | # Fusion MPT device support | ||
212 | # | ||
213 | |||
214 | # | ||
215 | # IEEE 1394 (FireWire) support | ||
216 | # | ||
217 | |||
218 | # | ||
219 | # I2O device support | ||
220 | # | ||
221 | |||
222 | # | ||
223 | # Networking support | ||
224 | # | 165 | # |
225 | CONFIG_NET=y | 166 | CONFIG_NET=y |
226 | 167 | ||
@@ -230,10 +171,17 @@ CONFIG_NET=y | |||
230 | CONFIG_PACKET=y | 171 | CONFIG_PACKET=y |
231 | # CONFIG_PACKET_MMAP is not set | 172 | # CONFIG_PACKET_MMAP is not set |
232 | CONFIG_UNIX=y | 173 | CONFIG_UNIX=y |
174 | CONFIG_XFRM=y | ||
175 | # CONFIG_XFRM_USER is not set | ||
176 | # CONFIG_XFRM_SUB_POLICY is not set | ||
177 | CONFIG_XFRM_MIGRATE=y | ||
178 | # CONFIG_XFRM_STATISTICS is not set | ||
233 | CONFIG_NET_KEY=y | 179 | CONFIG_NET_KEY=y |
180 | CONFIG_NET_KEY_MIGRATE=y | ||
234 | CONFIG_INET=y | 181 | CONFIG_INET=y |
235 | # CONFIG_IP_MULTICAST is not set | 182 | # CONFIG_IP_MULTICAST is not set |
236 | # CONFIG_IP_ADVANCED_ROUTER is not set | 183 | # CONFIG_IP_ADVANCED_ROUTER is not set |
184 | CONFIG_IP_FIB_HASH=y | ||
237 | CONFIG_IP_PNP=y | 185 | CONFIG_IP_PNP=y |
238 | CONFIG_IP_PNP_DHCP=y | 186 | CONFIG_IP_PNP_DHCP=y |
239 | CONFIG_IP_PNP_BOOTP=y | 187 | CONFIG_IP_PNP_BOOTP=y |
@@ -245,145 +193,199 @@ CONFIG_SYN_COOKIES=y | |||
245 | CONFIG_INET_AH=m | 193 | CONFIG_INET_AH=m |
246 | CONFIG_INET_ESP=m | 194 | CONFIG_INET_ESP=m |
247 | CONFIG_INET_IPCOMP=m | 195 | CONFIG_INET_IPCOMP=m |
196 | CONFIG_INET_XFRM_TUNNEL=m | ||
248 | CONFIG_INET_TUNNEL=m | 197 | CONFIG_INET_TUNNEL=m |
249 | CONFIG_IP_TCPDIAG=m | 198 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
250 | CONFIG_IP_TCPDIAG_IPV6=y | 199 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
251 | 200 | CONFIG_INET_XFRM_MODE_BEET=m | |
252 | # | 201 | CONFIG_INET_LRO=m |
253 | # IP: Virtual Server Configuration | 202 | CONFIG_INET_DIAG=m |
254 | # | 203 | CONFIG_INET_TCP_DIAG=m |
204 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
205 | CONFIG_TCP_CONG_CUBIC=y | ||
206 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
207 | # CONFIG_TCP_MD5SIG is not set | ||
255 | # CONFIG_IP_VS is not set | 208 | # CONFIG_IP_VS is not set |
256 | CONFIG_IPV6=m | 209 | CONFIG_IPV6=m |
257 | CONFIG_IPV6_PRIVACY=y | 210 | CONFIG_IPV6_PRIVACY=y |
211 | CONFIG_IPV6_ROUTER_PREF=y | ||
212 | CONFIG_IPV6_ROUTE_INFO=y | ||
213 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
258 | CONFIG_INET6_AH=m | 214 | CONFIG_INET6_AH=m |
259 | CONFIG_INET6_ESP=m | 215 | CONFIG_INET6_ESP=m |
260 | CONFIG_INET6_IPCOMP=m | 216 | CONFIG_INET6_IPCOMP=m |
217 | # CONFIG_IPV6_MIP6 is not set | ||
218 | CONFIG_INET6_XFRM_TUNNEL=m | ||
261 | CONFIG_INET6_TUNNEL=m | 219 | CONFIG_INET6_TUNNEL=m |
220 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
221 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
224 | CONFIG_IPV6_SIT=m | ||
262 | CONFIG_IPV6_TUNNEL=m | 225 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | ||
263 | CONFIG_NETFILTER=y | 228 | CONFIG_NETFILTER=y |
264 | # CONFIG_NETFILTER_DEBUG is not set | 229 | # CONFIG_NETFILTER_DEBUG is not set |
230 | CONFIG_NETFILTER_ADVANCED=y | ||
231 | |||
232 | # | ||
233 | # Core Netfilter Configuration | ||
234 | # | ||
235 | CONFIG_NETFILTER_NETLINK=m | ||
236 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
237 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
238 | CONFIG_NF_CONNTRACK=m | ||
239 | CONFIG_NF_CT_ACCT=y | ||
240 | CONFIG_NF_CONNTRACK_MARK=y | ||
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | ||
243 | CONFIG_NF_CT_PROTO_SCTP=m | ||
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
245 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
246 | CONFIG_NF_CONNTRACK_FTP=m | ||
247 | CONFIG_NF_CONNTRACK_H323=m | ||
248 | CONFIG_NF_CONNTRACK_IRC=m | ||
249 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
250 | CONFIG_NF_CONNTRACK_PPTP=m | ||
251 | CONFIG_NF_CONNTRACK_SANE=m | ||
252 | CONFIG_NF_CONNTRACK_SIP=m | ||
253 | CONFIG_NF_CONNTRACK_TFTP=m | ||
254 | # CONFIG_NF_CT_NETLINK is not set | ||
255 | CONFIG_NETFILTER_XTABLES=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
265 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
266 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
294 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
295 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
265 | 296 | ||
266 | # | 297 | # |
267 | # IP: Netfilter Configuration | 298 | # IP: Netfilter Configuration |
268 | # | 299 | # |
269 | CONFIG_IP_NF_CONNTRACK=m | 300 | CONFIG_NF_CONNTRACK_IPV4=m |
270 | # CONFIG_IP_NF_CT_ACCT is not set | 301 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
271 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
272 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
273 | CONFIG_IP_NF_FTP=m | ||
274 | CONFIG_IP_NF_IRC=m | ||
275 | CONFIG_IP_NF_TFTP=m | ||
276 | CONFIG_IP_NF_AMANDA=m | ||
277 | CONFIG_IP_NF_QUEUE=m | 302 | CONFIG_IP_NF_QUEUE=m |
278 | CONFIG_IP_NF_IPTABLES=m | 303 | CONFIG_IP_NF_IPTABLES=m |
279 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
280 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
281 | CONFIG_IP_NF_MATCH_MAC=m | ||
282 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
283 | CONFIG_IP_NF_MATCH_MARK=m | ||
284 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
285 | CONFIG_IP_NF_MATCH_TOS=m | ||
286 | CONFIG_IP_NF_MATCH_RECENT=m | 304 | CONFIG_IP_NF_MATCH_RECENT=m |
287 | CONFIG_IP_NF_MATCH_ECN=m | 305 | CONFIG_IP_NF_MATCH_ECN=m |
288 | CONFIG_IP_NF_MATCH_DSCP=m | 306 | CONFIG_IP_NF_MATCH_AH=m |
289 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
290 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
291 | CONFIG_IP_NF_MATCH_TTL=m | 307 | CONFIG_IP_NF_MATCH_TTL=m |
292 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
293 | CONFIG_IP_NF_MATCH_HELPER=m | ||
294 | CONFIG_IP_NF_MATCH_STATE=m | ||
295 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
296 | CONFIG_IP_NF_MATCH_OWNER=m | ||
297 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 308 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
298 | CONFIG_IP_NF_MATCH_REALM=m | ||
299 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
300 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
301 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
302 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
303 | CONFIG_IP_NF_FILTER=m | 309 | CONFIG_IP_NF_FILTER=m |
304 | CONFIG_IP_NF_TARGET_REJECT=m | 310 | CONFIG_IP_NF_TARGET_REJECT=m |
305 | CONFIG_IP_NF_TARGET_LOG=m | 311 | CONFIG_IP_NF_TARGET_LOG=m |
306 | CONFIG_IP_NF_TARGET_ULOG=m | 312 | CONFIG_IP_NF_TARGET_ULOG=m |
307 | CONFIG_IP_NF_TARGET_TCPMSS=m | 313 | CONFIG_NF_NAT=m |
308 | CONFIG_IP_NF_NAT=m | 314 | CONFIG_NF_NAT_NEEDED=y |
309 | CONFIG_IP_NF_NAT_NEEDED=y | ||
310 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 315 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
311 | CONFIG_IP_NF_TARGET_REDIRECT=m | 316 | CONFIG_IP_NF_TARGET_REDIRECT=m |
312 | CONFIG_IP_NF_TARGET_NETMAP=m | 317 | CONFIG_IP_NF_TARGET_NETMAP=m |
313 | CONFIG_IP_NF_TARGET_SAME=m | 318 | CONFIG_NF_NAT_SNMP_BASIC=m |
314 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 319 | CONFIG_NF_NAT_PROTO_GRE=m |
315 | CONFIG_IP_NF_NAT_IRC=m | 320 | CONFIG_NF_NAT_FTP=m |
316 | CONFIG_IP_NF_NAT_FTP=m | 321 | CONFIG_NF_NAT_IRC=m |
317 | CONFIG_IP_NF_NAT_TFTP=m | 322 | CONFIG_NF_NAT_TFTP=m |
318 | CONFIG_IP_NF_NAT_AMANDA=m | 323 | CONFIG_NF_NAT_AMANDA=m |
324 | CONFIG_NF_NAT_PPTP=m | ||
325 | CONFIG_NF_NAT_H323=m | ||
326 | CONFIG_NF_NAT_SIP=m | ||
319 | CONFIG_IP_NF_MANGLE=m | 327 | CONFIG_IP_NF_MANGLE=m |
320 | CONFIG_IP_NF_TARGET_TOS=m | ||
321 | CONFIG_IP_NF_TARGET_ECN=m | 328 | CONFIG_IP_NF_TARGET_ECN=m |
322 | CONFIG_IP_NF_TARGET_DSCP=m | 329 | CONFIG_IP_NF_TARGET_TTL=m |
323 | CONFIG_IP_NF_TARGET_MARK=m | 330 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
324 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
325 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
326 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
327 | CONFIG_IP_NF_RAW=m | 331 | CONFIG_IP_NF_RAW=m |
328 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
329 | CONFIG_IP_NF_ARPTABLES=m | 332 | CONFIG_IP_NF_ARPTABLES=m |
330 | CONFIG_IP_NF_ARPFILTER=m | 333 | CONFIG_IP_NF_ARPFILTER=m |
331 | CONFIG_IP_NF_ARP_MANGLE=m | 334 | CONFIG_IP_NF_ARP_MANGLE=m |
332 | 335 | ||
333 | # | 336 | # |
334 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 337 | # IPv6: Netfilter Configuration |
335 | # | 338 | # |
339 | CONFIG_NF_CONNTRACK_IPV6=m | ||
336 | CONFIG_IP6_NF_QUEUE=m | 340 | CONFIG_IP6_NF_QUEUE=m |
337 | CONFIG_IP6_NF_IPTABLES=m | 341 | CONFIG_IP6_NF_IPTABLES=m |
338 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
339 | CONFIG_IP6_NF_MATCH_MAC=m | ||
340 | CONFIG_IP6_NF_MATCH_RT=m | 342 | CONFIG_IP6_NF_MATCH_RT=m |
341 | CONFIG_IP6_NF_MATCH_OPTS=m | 343 | CONFIG_IP6_NF_MATCH_OPTS=m |
342 | CONFIG_IP6_NF_MATCH_FRAG=m | 344 | CONFIG_IP6_NF_MATCH_FRAG=m |
343 | CONFIG_IP6_NF_MATCH_HL=m | 345 | CONFIG_IP6_NF_MATCH_HL=m |
344 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
345 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
346 | CONFIG_IP6_NF_MATCH_MARK=m | ||
347 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 346 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
348 | CONFIG_IP6_NF_MATCH_AHESP=m | 347 | CONFIG_IP6_NF_MATCH_AH=m |
349 | CONFIG_IP6_NF_MATCH_LENGTH=m | 348 | CONFIG_IP6_NF_MATCH_MH=m |
350 | CONFIG_IP6_NF_MATCH_EUI64=m | 349 | CONFIG_IP6_NF_MATCH_EUI64=m |
351 | CONFIG_IP6_NF_FILTER=m | 350 | CONFIG_IP6_NF_FILTER=m |
352 | CONFIG_IP6_NF_TARGET_LOG=m | 351 | CONFIG_IP6_NF_TARGET_LOG=m |
352 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
353 | CONFIG_IP6_NF_MANGLE=m | 353 | CONFIG_IP6_NF_MANGLE=m |
354 | CONFIG_IP6_NF_TARGET_MARK=m | 354 | CONFIG_IP6_NF_TARGET_HL=m |
355 | CONFIG_IP6_NF_RAW=m | 355 | CONFIG_IP6_NF_RAW=m |
356 | CONFIG_XFRM=y | 356 | CONFIG_IP_DCCP=m |
357 | CONFIG_XFRM_USER=m | 357 | CONFIG_INET_DCCP_DIAG=m |
358 | CONFIG_IP_DCCP_ACKVEC=y | ||
358 | 359 | ||
359 | # | 360 | # |
360 | # SCTP Configuration (EXPERIMENTAL) | 361 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
361 | # | 362 | # |
363 | CONFIG_IP_DCCP_CCID2=m | ||
364 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
365 | CONFIG_IP_DCCP_CCID3=m | ||
366 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
367 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
368 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
362 | CONFIG_IP_SCTP=m | 369 | CONFIG_IP_SCTP=m |
363 | # CONFIG_SCTP_DBG_MSG is not set | 370 | # CONFIG_SCTP_DBG_MSG is not set |
364 | # CONFIG_SCTP_DBG_OBJCNT is not set | 371 | # CONFIG_SCTP_DBG_OBJCNT is not set |
365 | # CONFIG_SCTP_HMAC_NONE is not set | 372 | # CONFIG_SCTP_HMAC_NONE is not set |
366 | # CONFIG_SCTP_HMAC_SHA1 is not set | 373 | # CONFIG_SCTP_HMAC_SHA1 is not set |
367 | CONFIG_SCTP_HMAC_MD5=y | 374 | CONFIG_SCTP_HMAC_MD5=y |
375 | # CONFIG_TIPC is not set | ||
368 | # CONFIG_ATM is not set | 376 | # CONFIG_ATM is not set |
369 | # CONFIG_BRIDGE is not set | 377 | # CONFIG_BRIDGE is not set |
370 | # CONFIG_VLAN_8021Q is not set | 378 | # CONFIG_VLAN_8021Q is not set |
371 | # CONFIG_DECNET is not set | 379 | # CONFIG_DECNET is not set |
372 | CONFIG_LLC=m | 380 | CONFIG_LLC=m |
373 | # CONFIG_LLC2 is not set | 381 | # CONFIG_LLC2 is not set |
374 | CONFIG_IPX=m | 382 | # CONFIG_IPX is not set |
375 | # CONFIG_IPX_INTERN is not set | ||
376 | CONFIG_ATALK=m | 383 | CONFIG_ATALK=m |
377 | # CONFIG_DEV_APPLETALK is not set | 384 | # CONFIG_DEV_APPLETALK is not set |
378 | # CONFIG_X25 is not set | 385 | # CONFIG_X25 is not set |
379 | # CONFIG_LAPB is not set | 386 | # CONFIG_LAPB is not set |
380 | # CONFIG_NET_DIVERT is not set | ||
381 | # CONFIG_ECONET is not set | 387 | # CONFIG_ECONET is not set |
382 | # CONFIG_WAN_ROUTER is not set | 388 | # CONFIG_WAN_ROUTER is not set |
383 | |||
384 | # | ||
385 | # QoS and/or fair queueing | ||
386 | # | ||
387 | # CONFIG_NET_SCHED is not set | 389 | # CONFIG_NET_SCHED is not set |
388 | CONFIG_NET_CLS_ROUTE=y | 390 | CONFIG_NET_CLS_ROUTE=y |
389 | 391 | ||
@@ -391,46 +393,156 @@ CONFIG_NET_CLS_ROUTE=y | |||
391 | # Network testing | 393 | # Network testing |
392 | # | 394 | # |
393 | # CONFIG_NET_PKTGEN is not set | 395 | # CONFIG_NET_PKTGEN is not set |
394 | CONFIG_NETPOLL=y | ||
395 | # CONFIG_NETPOLL_RX is not set | ||
396 | # CONFIG_NETPOLL_TRAP is not set | ||
397 | CONFIG_NET_POLL_CONTROLLER=y | ||
398 | # CONFIG_HAMRADIO is not set | 396 | # CONFIG_HAMRADIO is not set |
397 | # CONFIG_CAN is not set | ||
399 | # CONFIG_IRDA is not set | 398 | # CONFIG_IRDA is not set |
400 | # CONFIG_BT is not set | 399 | # CONFIG_BT is not set |
401 | CONFIG_NETDEVICES=y | 400 | # CONFIG_AF_RXRPC is not set |
402 | CONFIG_DUMMY=m | ||
403 | # CONFIG_BONDING is not set | ||
404 | CONFIG_EQUALIZER=m | ||
405 | # CONFIG_TUN is not set | ||
406 | 401 | ||
407 | # | 402 | # |
408 | # Ethernet (10 or 100Mbit) | 403 | # Wireless |
409 | # | 404 | # |
410 | CONFIG_NET_ETHERNET=y | 405 | # CONFIG_CFG80211 is not set |
411 | CONFIG_MII=m | 406 | CONFIG_WIRELESS_EXT=y |
412 | CONFIG_MVME16x_NET=y | 407 | # CONFIG_MAC80211 is not set |
408 | CONFIG_IEEE80211=m | ||
409 | # CONFIG_IEEE80211_DEBUG is not set | ||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | ||
416 | # CONFIG_NET_9P is not set | ||
413 | 417 | ||
414 | # | 418 | # |
415 | # Ethernet (1000 Mbit) | 419 | # Device Drivers |
416 | # | 420 | # |
417 | 421 | ||
418 | # | 422 | # |
419 | # Ethernet (10000 Mbit) | 423 | # Generic Driver Options |
420 | # | 424 | # |
425 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
426 | CONFIG_STANDALONE=y | ||
427 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
428 | CONFIG_FW_LOADER=m | ||
429 | # CONFIG_SYS_HYPERVISOR is not set | ||
430 | CONFIG_CONNECTOR=m | ||
431 | # CONFIG_MTD is not set | ||
432 | # CONFIG_PARPORT is not set | ||
433 | CONFIG_BLK_DEV=y | ||
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
435 | CONFIG_BLK_DEV_LOOP=y | ||
436 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
437 | CONFIG_BLK_DEV_NBD=m | ||
438 | CONFIG_BLK_DEV_RAM=y | ||
439 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
440 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
441 | # CONFIG_BLK_DEV_XIP is not set | ||
442 | CONFIG_CDROM_PKTCDVD=m | ||
443 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
444 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
445 | CONFIG_ATA_OVER_ETH=m | ||
446 | CONFIG_MISC_DEVICES=y | ||
447 | # CONFIG_EEPROM_93CX6 is not set | ||
448 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
449 | CONFIG_HAVE_IDE=y | ||
450 | # CONFIG_IDE is not set | ||
451 | |||
452 | # | ||
453 | # SCSI device support | ||
454 | # | ||
455 | CONFIG_RAID_ATTRS=m | ||
456 | CONFIG_SCSI=y | ||
457 | CONFIG_SCSI_DMA=y | ||
458 | CONFIG_SCSI_TGT=m | ||
459 | # CONFIG_SCSI_NETLINK is not set | ||
460 | CONFIG_SCSI_PROC_FS=y | ||
421 | 461 | ||
422 | # | 462 | # |
423 | # Token Ring devices | 463 | # SCSI support type (disk, tape, CD-ROM) |
424 | # | 464 | # |
465 | CONFIG_BLK_DEV_SD=y | ||
466 | CONFIG_CHR_DEV_ST=m | ||
467 | CONFIG_CHR_DEV_OSST=m | ||
468 | CONFIG_BLK_DEV_SR=y | ||
469 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
470 | CONFIG_CHR_DEV_SG=m | ||
471 | # CONFIG_CHR_DEV_SCH is not set | ||
425 | 472 | ||
426 | # | 473 | # |
427 | # Wireless LAN (non-hamradio) | 474 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
428 | # | 475 | # |
429 | # CONFIG_NET_RADIO is not set | 476 | # CONFIG_SCSI_MULTI_LUN is not set |
477 | CONFIG_SCSI_CONSTANTS=y | ||
478 | # CONFIG_SCSI_LOGGING is not set | ||
479 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
480 | CONFIG_SCSI_WAIT_SCAN=m | ||
430 | 481 | ||
431 | # | 482 | # |
432 | # Wan interfaces | 483 | # SCSI Transports |
484 | # | ||
485 | CONFIG_SCSI_SPI_ATTRS=y | ||
486 | # CONFIG_SCSI_FC_ATTRS is not set | ||
487 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
488 | CONFIG_SCSI_SAS_ATTRS=m | ||
489 | CONFIG_SCSI_SAS_LIBSAS=m | ||
490 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
491 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
492 | CONFIG_SCSI_SRP_ATTRS=m | ||
493 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
494 | CONFIG_SCSI_LOWLEVEL=y | ||
495 | CONFIG_ISCSI_TCP=m | ||
496 | CONFIG_53C700_BE_BUS=y | ||
497 | # CONFIG_SCSI_DEBUG is not set | ||
498 | CONFIG_MVME16x_SCSI=y | ||
499 | CONFIG_MD=y | ||
500 | CONFIG_BLK_DEV_MD=m | ||
501 | CONFIG_MD_LINEAR=m | ||
502 | CONFIG_MD_RAID0=m | ||
503 | CONFIG_MD_RAID1=m | ||
504 | # CONFIG_MD_RAID10 is not set | ||
505 | CONFIG_MD_RAID456=m | ||
506 | CONFIG_MD_RAID5_RESHAPE=y | ||
507 | CONFIG_MD_MULTIPATH=m | ||
508 | # CONFIG_MD_FAULTY is not set | ||
509 | CONFIG_BLK_DEV_DM=m | ||
510 | # CONFIG_DM_DEBUG is not set | ||
511 | CONFIG_DM_CRYPT=m | ||
512 | CONFIG_DM_SNAPSHOT=m | ||
513 | CONFIG_DM_MIRROR=m | ||
514 | CONFIG_DM_ZERO=m | ||
515 | CONFIG_DM_MULTIPATH=m | ||
516 | CONFIG_DM_MULTIPATH_EMC=m | ||
517 | CONFIG_DM_MULTIPATH_RDAC=m | ||
518 | CONFIG_DM_MULTIPATH_HP=m | ||
519 | # CONFIG_DM_DELAY is not set | ||
520 | CONFIG_DM_UEVENT=y | ||
521 | CONFIG_NETDEVICES=y | ||
522 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
523 | CONFIG_DUMMY=m | ||
524 | # CONFIG_BONDING is not set | ||
525 | CONFIG_MACVLAN=m | ||
526 | CONFIG_EQUALIZER=m | ||
527 | # CONFIG_TUN is not set | ||
528 | CONFIG_VETH=m | ||
529 | # CONFIG_PHYLIB is not set | ||
530 | CONFIG_NET_ETHERNET=y | ||
531 | # CONFIG_MII is not set | ||
532 | CONFIG_MVME16x_NET=y | ||
533 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
534 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
535 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
536 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
537 | # CONFIG_B44 is not set | ||
538 | # CONFIG_NETDEV_1000 is not set | ||
539 | # CONFIG_NETDEV_10000 is not set | ||
540 | |||
433 | # | 541 | # |
542 | # Wireless LAN | ||
543 | # | ||
544 | # CONFIG_WLAN_PRE80211 is not set | ||
545 | # CONFIG_WLAN_80211 is not set | ||
434 | # CONFIG_WAN is not set | 546 | # CONFIG_WAN is not set |
435 | CONFIG_PPP=m | 547 | CONFIG_PPP=m |
436 | # CONFIG_PPP_MULTILINK is not set | 548 | # CONFIG_PPP_MULTILINK is not set |
@@ -439,28 +551,28 @@ CONFIG_PPP_ASYNC=m | |||
439 | CONFIG_PPP_SYNC_TTY=m | 551 | CONFIG_PPP_SYNC_TTY=m |
440 | CONFIG_PPP_DEFLATE=m | 552 | CONFIG_PPP_DEFLATE=m |
441 | CONFIG_PPP_BSDCOMP=m | 553 | CONFIG_PPP_BSDCOMP=m |
554 | CONFIG_PPP_MPPE=m | ||
442 | CONFIG_PPPOE=m | 555 | CONFIG_PPPOE=m |
556 | CONFIG_PPPOL2TP=m | ||
443 | CONFIG_SLIP=m | 557 | CONFIG_SLIP=m |
444 | CONFIG_SLIP_COMPRESSED=y | 558 | CONFIG_SLIP_COMPRESSED=y |
559 | CONFIG_SLHC=m | ||
445 | CONFIG_SLIP_SMART=y | 560 | CONFIG_SLIP_SMART=y |
446 | CONFIG_SLIP_MODE_SLIP6=y | 561 | CONFIG_SLIP_MODE_SLIP6=y |
447 | CONFIG_SHAPER=m | ||
448 | CONFIG_NETCONSOLE=m | 562 | CONFIG_NETCONSOLE=m |
449 | 563 | CONFIG_NETCONSOLE_DYNAMIC=y | |
450 | # | 564 | CONFIG_NETPOLL=y |
451 | # ISDN subsystem | 565 | # CONFIG_NETPOLL_TRAP is not set |
452 | # | 566 | CONFIG_NET_POLL_CONTROLLER=y |
453 | # CONFIG_ISDN is not set | 567 | # CONFIG_ISDN is not set |
454 | |||
455 | # | ||
456 | # Telephony Support | ||
457 | # | ||
458 | # CONFIG_PHONE is not set | 568 | # CONFIG_PHONE is not set |
459 | 569 | ||
460 | # | 570 | # |
461 | # Input device support | 571 | # Input device support |
462 | # | 572 | # |
463 | CONFIG_INPUT=y | 573 | CONFIG_INPUT=y |
574 | CONFIG_INPUT_FF_MEMLESS=m | ||
575 | # CONFIG_INPUT_POLLDEV is not set | ||
464 | 576 | ||
465 | # | 577 | # |
466 | # Userland interfaces | 578 | # Userland interfaces |
@@ -470,7 +582,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
470 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 582 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
471 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 583 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
472 | # CONFIG_INPUT_JOYDEV is not set | 584 | # CONFIG_INPUT_JOYDEV is not set |
473 | # CONFIG_INPUT_TSDEV is not set | ||
474 | # CONFIG_INPUT_EVDEV is not set | 585 | # CONFIG_INPUT_EVDEV is not set |
475 | # CONFIG_INPUT_EVBUG is not set | 586 | # CONFIG_INPUT_EVBUG is not set |
476 | 587 | ||
@@ -483,11 +594,19 @@ CONFIG_INPUT_KEYBOARD=y | |||
483 | # CONFIG_KEYBOARD_LKKBD is not set | 594 | # CONFIG_KEYBOARD_LKKBD is not set |
484 | # CONFIG_KEYBOARD_XTKBD is not set | 595 | # CONFIG_KEYBOARD_XTKBD is not set |
485 | # CONFIG_KEYBOARD_NEWTON is not set | 596 | # CONFIG_KEYBOARD_NEWTON is not set |
597 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
486 | CONFIG_INPUT_MOUSE=y | 598 | CONFIG_INPUT_MOUSE=y |
487 | CONFIG_MOUSE_PS2=m | 599 | CONFIG_MOUSE_PS2=m |
600 | CONFIG_MOUSE_PS2_ALPS=y | ||
601 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
602 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
603 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
604 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
605 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
488 | CONFIG_MOUSE_SERIAL=m | 606 | CONFIG_MOUSE_SERIAL=m |
489 | # CONFIG_MOUSE_VSXXXAA is not set | 607 | # CONFIG_MOUSE_VSXXXAA is not set |
490 | # CONFIG_INPUT_JOYSTICK is not set | 608 | # CONFIG_INPUT_JOYSTICK is not set |
609 | # CONFIG_INPUT_TABLET is not set | ||
491 | # CONFIG_INPUT_TOUCHSCREEN is not set | 610 | # CONFIG_INPUT_TOUCHSCREEN is not set |
492 | # CONFIG_INPUT_MISC is not set | 611 | # CONFIG_INPUT_MISC is not set |
493 | 612 | ||
@@ -495,7 +614,7 @@ CONFIG_MOUSE_SERIAL=m | |||
495 | # Hardware I/O ports | 614 | # Hardware I/O ports |
496 | # | 615 | # |
497 | CONFIG_SERIO=m | 616 | CONFIG_SERIO=m |
498 | CONFIG_SERIO_SERPORT=m | 617 | # CONFIG_SERIO_SERPORT is not set |
499 | CONFIG_SERIO_LIBPS2=m | 618 | CONFIG_SERIO_LIBPS2=m |
500 | # CONFIG_SERIO_RAW is not set | 619 | # CONFIG_SERIO_RAW is not set |
501 | # CONFIG_GAMEPORT is not set | 620 | # CONFIG_GAMEPORT is not set |
@@ -506,6 +625,7 @@ CONFIG_SERIO_LIBPS2=m | |||
506 | CONFIG_VT=y | 625 | CONFIG_VT=y |
507 | CONFIG_VT_CONSOLE=y | 626 | CONFIG_VT_CONSOLE=y |
508 | CONFIG_HW_CONSOLE=y | 627 | CONFIG_HW_CONSOLE=y |
628 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
509 | # CONFIG_SERIAL_NONSTANDARD is not set | 629 | # CONFIG_SERIAL_NONSTANDARD is not set |
510 | 630 | ||
511 | # | 631 | # |
@@ -519,116 +639,85 @@ CONFIG_HW_CONSOLE=y | |||
519 | CONFIG_UNIX98_PTYS=y | 639 | CONFIG_UNIX98_PTYS=y |
520 | CONFIG_LEGACY_PTYS=y | 640 | CONFIG_LEGACY_PTYS=y |
521 | CONFIG_LEGACY_PTY_COUNT=256 | 641 | CONFIG_LEGACY_PTY_COUNT=256 |
522 | |||
523 | # | ||
524 | # IPMI | ||
525 | # | ||
526 | # CONFIG_IPMI_HANDLER is not set | 642 | # CONFIG_IPMI_HANDLER is not set |
527 | 643 | # CONFIG_HW_RANDOM is not set | |
528 | # | ||
529 | # Watchdog Cards | ||
530 | # | ||
531 | # CONFIG_WATCHDOG is not set | ||
532 | CONFIG_GEN_RTC=m | 644 | CONFIG_GEN_RTC=m |
533 | CONFIG_GEN_RTC_X=y | 645 | CONFIG_GEN_RTC_X=y |
534 | # CONFIG_DTLK is not set | ||
535 | # CONFIG_R3964 is not set | 646 | # CONFIG_R3964 is not set |
536 | |||
537 | # | ||
538 | # Ftape, the floppy tape device driver | ||
539 | # | ||
540 | # CONFIG_DRM is not set | ||
541 | # CONFIG_RAW_DRIVER is not set | 647 | # CONFIG_RAW_DRIVER is not set |
648 | # CONFIG_TCG_TPM is not set | ||
649 | # CONFIG_I2C is not set | ||
542 | 650 | ||
543 | # | 651 | # |
544 | # TPM devices | 652 | # SPI support |
545 | # | 653 | # |
654 | # CONFIG_SPI is not set | ||
655 | # CONFIG_SPI_MASTER is not set | ||
656 | # CONFIG_W1 is not set | ||
657 | # CONFIG_POWER_SUPPLY is not set | ||
658 | # CONFIG_HWMON is not set | ||
659 | # CONFIG_THERMAL is not set | ||
660 | # CONFIG_WATCHDOG is not set | ||
546 | 661 | ||
547 | # | 662 | # |
548 | # I2C support | 663 | # Sonics Silicon Backplane |
549 | # | 664 | # |
550 | # CONFIG_I2C is not set | 665 | CONFIG_SSB_POSSIBLE=y |
666 | # CONFIG_SSB is not set | ||
551 | 667 | ||
552 | # | 668 | # |
553 | # Dallas's 1-wire bus | 669 | # Multifunction device drivers |
554 | # | ||
555 | # CONFIG_W1 is not set | ||
556 | |||
557 | # | ||
558 | # Misc devices | ||
559 | # | 670 | # |
671 | # CONFIG_MFD_SM501 is not set | ||
560 | 672 | ||
561 | # | 673 | # |
562 | # Multimedia devices | 674 | # Multimedia devices |
563 | # | 675 | # |
564 | # CONFIG_VIDEO_DEV is not set | 676 | # CONFIG_VIDEO_DEV is not set |
677 | # CONFIG_DVB_CORE is not set | ||
678 | # CONFIG_DAB is not set | ||
565 | 679 | ||
566 | # | 680 | # |
567 | # Digital Video Broadcasting Devices | 681 | # Graphics support |
568 | # | 682 | # |
569 | # CONFIG_DVB is not set | 683 | # CONFIG_VGASTATE is not set |
684 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
685 | # CONFIG_FB is not set | ||
686 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
570 | 687 | ||
571 | # | 688 | # |
572 | # Graphics support | 689 | # Display device support |
573 | # | 690 | # |
574 | CONFIG_FB=y | 691 | # CONFIG_DISPLAY_SUPPORT is not set |
575 | # CONFIG_FB_CFB_FILLRECT is not set | ||
576 | # CONFIG_FB_CFB_COPYAREA is not set | ||
577 | # CONFIG_FB_CFB_IMAGEBLIT is not set | ||
578 | # CONFIG_FB_SOFT_CURSOR is not set | ||
579 | # CONFIG_FB_MACMODES is not set | ||
580 | CONFIG_FB_MODE_HELPERS=y | ||
581 | # CONFIG_FB_TILEBLITTING is not set | ||
582 | # CONFIG_FB_S1D13XXX is not set | ||
583 | # CONFIG_FB_VIRTUAL is not set | ||
584 | 692 | ||
585 | # | 693 | # |
586 | # Console display driver support | 694 | # Console display driver support |
587 | # | 695 | # |
588 | CONFIG_DUMMY_CONSOLE=y | 696 | CONFIG_DUMMY_CONSOLE=y |
589 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
590 | # CONFIG_FONTS is not set | ||
591 | CONFIG_FONT_8x8=y | ||
592 | CONFIG_FONT_8x16=y | ||
593 | |||
594 | # | ||
595 | # Logo configuration | ||
596 | # | ||
597 | CONFIG_LOGO=y | ||
598 | CONFIG_LOGO_LINUX_MONO=y | ||
599 | CONFIG_LOGO_LINUX_VGA16=y | ||
600 | CONFIG_LOGO_LINUX_CLUT224=y | ||
601 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
602 | 697 | ||
603 | # | 698 | # |
604 | # Sound | 699 | # Sound |
605 | # | 700 | # |
606 | # CONFIG_SOUND is not set | 701 | # CONFIG_SOUND is not set |
607 | 702 | CONFIG_HID_SUPPORT=y | |
608 | # | 703 | CONFIG_HID=m |
609 | # USB support | 704 | # CONFIG_HID_DEBUG is not set |
610 | # | 705 | CONFIG_HIDRAW=y |
611 | # CONFIG_USB_ARCH_HAS_HCD is not set | 706 | # CONFIG_USB_SUPPORT is not set |
612 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
613 | |||
614 | # | ||
615 | # USB Gadget Support | ||
616 | # | ||
617 | # CONFIG_USB_GADGET is not set | ||
618 | |||
619 | # | ||
620 | # MMC/SD Card support | ||
621 | # | ||
622 | # CONFIG_MMC is not set | 707 | # CONFIG_MMC is not set |
708 | # CONFIG_MEMSTICK is not set | ||
709 | # CONFIG_NEW_LEDS is not set | ||
710 | # CONFIG_RTC_CLASS is not set | ||
623 | 711 | ||
624 | # | 712 | # |
625 | # InfiniBand support | 713 | # Userspace I/O |
626 | # | 714 | # |
627 | # CONFIG_INFINIBAND is not set | 715 | # CONFIG_UIO is not set |
628 | 716 | ||
629 | # | 717 | # |
630 | # Character devices | 718 | # Character devices |
631 | # | 719 | # |
720 | CONFIG_SERIAL167=y | ||
632 | CONFIG_MVME162_SCC=y | 721 | CONFIG_MVME162_SCC=y |
633 | CONFIG_SERIAL_CONSOLE=y | 722 | CONFIG_SERIAL_CONSOLE=y |
634 | 723 | ||
@@ -637,10 +726,11 @@ CONFIG_SERIAL_CONSOLE=y | |||
637 | # | 726 | # |
638 | CONFIG_EXT2_FS=y | 727 | CONFIG_EXT2_FS=y |
639 | # CONFIG_EXT2_FS_XATTR is not set | 728 | # CONFIG_EXT2_FS_XATTR is not set |
729 | # CONFIG_EXT2_FS_XIP is not set | ||
640 | CONFIG_EXT3_FS=y | 730 | CONFIG_EXT3_FS=y |
641 | # CONFIG_EXT3_FS_XATTR is not set | 731 | # CONFIG_EXT3_FS_XATTR is not set |
732 | # CONFIG_EXT4DEV_FS is not set | ||
642 | CONFIG_JBD=y | 733 | CONFIG_JBD=y |
643 | # CONFIG_JBD_DEBUG is not set | ||
644 | CONFIG_REISERFS_FS=m | 734 | CONFIG_REISERFS_FS=m |
645 | # CONFIG_REISERFS_CHECK is not set | 735 | # CONFIG_REISERFS_CHECK is not set |
646 | # CONFIG_REISERFS_PROC_INFO is not set | 736 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -651,25 +741,29 @@ CONFIG_JFS_FS=m | |||
651 | # CONFIG_JFS_DEBUG is not set | 741 | # CONFIG_JFS_DEBUG is not set |
652 | # CONFIG_JFS_STATISTICS is not set | 742 | # CONFIG_JFS_STATISTICS is not set |
653 | CONFIG_FS_POSIX_ACL=y | 743 | CONFIG_FS_POSIX_ACL=y |
654 | |||
655 | # | ||
656 | # XFS support | ||
657 | # | ||
658 | CONFIG_XFS_FS=m | 744 | CONFIG_XFS_FS=m |
659 | CONFIG_XFS_EXPORT=y | ||
660 | # CONFIG_XFS_RT is not set | ||
661 | # CONFIG_XFS_QUOTA is not set | 745 | # CONFIG_XFS_QUOTA is not set |
662 | # CONFIG_XFS_SECURITY is not set | 746 | # CONFIG_XFS_SECURITY is not set |
663 | # CONFIG_XFS_POSIX_ACL is not set | 747 | # CONFIG_XFS_POSIX_ACL is not set |
664 | CONFIG_MINIX_FS=y | 748 | # CONFIG_XFS_RT is not set |
665 | # CONFIG_ROMFS_FS is not set | 749 | CONFIG_GFS2_FS=m |
750 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
751 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
752 | CONFIG_OCFS2_FS=m | ||
753 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
754 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
755 | CONFIG_DNOTIFY=y | ||
756 | CONFIG_INOTIFY=y | ||
757 | CONFIG_INOTIFY_USER=y | ||
666 | CONFIG_QUOTA=y | 758 | CONFIG_QUOTA=y |
759 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
760 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
667 | # CONFIG_QFMT_V1 is not set | 761 | # CONFIG_QFMT_V1 is not set |
668 | # CONFIG_QFMT_V2 is not set | 762 | # CONFIG_QFMT_V2 is not set |
669 | CONFIG_QUOTACTL=y | 763 | CONFIG_QUOTACTL=y |
670 | CONFIG_DNOTIFY=y | ||
671 | CONFIG_AUTOFS_FS=m | 764 | CONFIG_AUTOFS_FS=m |
672 | CONFIG_AUTOFS4_FS=m | 765 | CONFIG_AUTOFS4_FS=m |
766 | CONFIG_FUSE_FS=m | ||
673 | 767 | ||
674 | # | 768 | # |
675 | # CD-ROM/DVD Filesystems | 769 | # CD-ROM/DVD Filesystems |
@@ -677,7 +771,6 @@ CONFIG_AUTOFS4_FS=m | |||
677 | CONFIG_ISO9660_FS=y | 771 | CONFIG_ISO9660_FS=y |
678 | CONFIG_JOLIET=y | 772 | CONFIG_JOLIET=y |
679 | CONFIG_ZISOFS=y | 773 | CONFIG_ZISOFS=y |
680 | CONFIG_ZISOFS_FS=y | ||
681 | CONFIG_UDF_FS=m | 774 | CONFIG_UDF_FS=m |
682 | CONFIG_UDF_NLS=y | 775 | CONFIG_UDF_NLS=y |
683 | 776 | ||
@@ -696,15 +789,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
696 | # | 789 | # |
697 | CONFIG_PROC_FS=y | 790 | CONFIG_PROC_FS=y |
698 | CONFIG_PROC_KCORE=y | 791 | CONFIG_PROC_KCORE=y |
792 | CONFIG_PROC_SYSCTL=y | ||
699 | CONFIG_SYSFS=y | 793 | CONFIG_SYSFS=y |
700 | CONFIG_DEVFS_FS=y | ||
701 | # CONFIG_DEVFS_MOUNT is not set | ||
702 | # CONFIG_DEVFS_DEBUG is not set | ||
703 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
704 | CONFIG_TMPFS=y | 794 | CONFIG_TMPFS=y |
705 | # CONFIG_TMPFS_XATTR is not set | 795 | # CONFIG_TMPFS_POSIX_ACL is not set |
706 | # CONFIG_HUGETLB_PAGE is not set | 796 | # CONFIG_HUGETLB_PAGE is not set |
707 | CONFIG_RAMFS=y | 797 | CONFIG_CONFIGFS_FS=m |
708 | 798 | ||
709 | # | 799 | # |
710 | # Miscellaneous filesystems | 800 | # Miscellaneous filesystems |
@@ -718,44 +808,40 @@ CONFIG_HFSPLUS_FS=m | |||
718 | # CONFIG_EFS_FS is not set | 808 | # CONFIG_EFS_FS is not set |
719 | CONFIG_CRAMFS=m | 809 | CONFIG_CRAMFS=m |
720 | # CONFIG_VXFS_FS is not set | 810 | # CONFIG_VXFS_FS is not set |
811 | CONFIG_MINIX_FS=y | ||
721 | CONFIG_HPFS_FS=m | 812 | CONFIG_HPFS_FS=m |
722 | # CONFIG_QNX4FS_FS is not set | 813 | # CONFIG_QNX4FS_FS is not set |
814 | # CONFIG_ROMFS_FS is not set | ||
723 | CONFIG_SYSV_FS=m | 815 | CONFIG_SYSV_FS=m |
724 | CONFIG_UFS_FS=m | 816 | CONFIG_UFS_FS=m |
725 | # CONFIG_UFS_FS_WRITE is not set | 817 | # CONFIG_UFS_FS_WRITE is not set |
726 | 818 | # CONFIG_UFS_DEBUG is not set | |
727 | # | 819 | CONFIG_NETWORK_FILESYSTEMS=y |
728 | # Network File Systems | ||
729 | # | ||
730 | CONFIG_NFS_FS=y | 820 | CONFIG_NFS_FS=y |
731 | CONFIG_NFS_V3=y | 821 | CONFIG_NFS_V3=y |
822 | # CONFIG_NFS_V3_ACL is not set | ||
732 | CONFIG_NFS_V4=y | 823 | CONFIG_NFS_V4=y |
733 | # CONFIG_NFS_DIRECTIO is not set | 824 | # CONFIG_NFS_DIRECTIO is not set |
734 | CONFIG_NFSD=m | 825 | CONFIG_NFSD=m |
735 | CONFIG_NFSD_V3=y | 826 | CONFIG_NFSD_V3=y |
736 | CONFIG_NFSD_V4=y | 827 | # CONFIG_NFSD_V3_ACL is not set |
828 | # CONFIG_NFSD_V4 is not set | ||
737 | CONFIG_NFSD_TCP=y | 829 | CONFIG_NFSD_TCP=y |
738 | CONFIG_ROOT_NFS=y | 830 | CONFIG_ROOT_NFS=y |
739 | CONFIG_LOCKD=y | 831 | CONFIG_LOCKD=y |
740 | CONFIG_LOCKD_V4=y | 832 | CONFIG_LOCKD_V4=y |
741 | CONFIG_EXPORTFS=m | 833 | CONFIG_EXPORTFS=m |
834 | CONFIG_NFS_COMMON=y | ||
742 | CONFIG_SUNRPC=y | 835 | CONFIG_SUNRPC=y |
743 | CONFIG_SUNRPC_GSS=y | 836 | CONFIG_SUNRPC_GSS=y |
837 | CONFIG_SUNRPC_BIND34=y | ||
744 | CONFIG_RPCSEC_GSS_KRB5=y | 838 | CONFIG_RPCSEC_GSS_KRB5=y |
745 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 839 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
746 | CONFIG_SMB_FS=m | 840 | CONFIG_SMB_FS=m |
747 | CONFIG_SMB_NLS_DEFAULT=y | 841 | CONFIG_SMB_NLS_DEFAULT=y |
748 | CONFIG_SMB_NLS_REMOTE="cp437" | 842 | CONFIG_SMB_NLS_REMOTE="cp437" |
749 | # CONFIG_CIFS is not set | 843 | # CONFIG_CIFS is not set |
750 | CONFIG_NCP_FS=m | 844 | # CONFIG_NCP_FS is not set |
751 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
752 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
753 | # CONFIG_NCPFS_STRONG is not set | ||
754 | # CONFIG_NCPFS_NFS_NS is not set | ||
755 | # CONFIG_NCPFS_OS2_NS is not set | ||
756 | # CONFIG_NCPFS_SMALLDOS is not set | ||
757 | CONFIG_NCPFS_NLS=y | ||
758 | # CONFIG_NCPFS_EXTRAS is not set | ||
759 | CONFIG_CODA_FS=m | 845 | CONFIG_CODA_FS=m |
760 | # CONFIG_CODA_FS_OLD_API is not set | 846 | # CONFIG_CODA_FS_OLD_API is not set |
761 | # CONFIG_AFS_FS is not set | 847 | # CONFIG_AFS_FS is not set |
@@ -765,10 +851,7 @@ CONFIG_CODA_FS=m | |||
765 | # | 851 | # |
766 | # CONFIG_PARTITION_ADVANCED is not set | 852 | # CONFIG_PARTITION_ADVANCED is not set |
767 | CONFIG_MSDOS_PARTITION=y | 853 | CONFIG_MSDOS_PARTITION=y |
768 | 854 | CONFIG_SYSV68_PARTITION=y | |
769 | # | ||
770 | # Native Language Support | ||
771 | # | ||
772 | CONFIG_NLS=y | 855 | CONFIG_NLS=y |
773 | CONFIG_NLS_DEFAULT="iso8859-1" | 856 | CONFIG_NLS_DEFAULT="iso8859-1" |
774 | CONFIG_NLS_CODEPAGE_437=y | 857 | CONFIG_NLS_CODEPAGE_437=y |
@@ -809,35 +892,42 @@ CONFIG_NLS_ISO8859_15=m | |||
809 | CONFIG_NLS_KOI8_R=m | 892 | CONFIG_NLS_KOI8_R=m |
810 | CONFIG_NLS_KOI8_U=m | 893 | CONFIG_NLS_KOI8_U=m |
811 | CONFIG_NLS_UTF8=m | 894 | CONFIG_NLS_UTF8=m |
895 | CONFIG_DLM=m | ||
896 | # CONFIG_DLM_DEBUG is not set | ||
812 | 897 | ||
813 | # | 898 | # |
814 | # Kernel hacking | 899 | # Kernel hacking |
815 | # | 900 | # |
816 | # CONFIG_PRINTK_TIME is not set | 901 | # CONFIG_PRINTK_TIME is not set |
817 | CONFIG_DEBUG_KERNEL=y | 902 | CONFIG_ENABLE_WARN_DEPRECATED=y |
903 | CONFIG_ENABLE_MUST_CHECK=y | ||
818 | CONFIG_MAGIC_SYSRQ=y | 904 | CONFIG_MAGIC_SYSRQ=y |
819 | CONFIG_LOG_BUF_SHIFT=16 | 905 | # CONFIG_UNUSED_SYMBOLS is not set |
820 | # CONFIG_SCHEDSTATS is not set | ||
821 | # CONFIG_DEBUG_SLAB is not set | ||
822 | # CONFIG_DEBUG_SPINLOCK is not set | ||
823 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
824 | # CONFIG_DEBUG_KOBJECT is not set | ||
825 | CONFIG_DEBUG_BUGVERBOSE=y | ||
826 | # CONFIG_DEBUG_INFO is not set | ||
827 | # CONFIG_DEBUG_FS is not set | 906 | # CONFIG_DEBUG_FS is not set |
828 | # CONFIG_FRAME_POINTER is not set | 907 | # CONFIG_HEADERS_CHECK is not set |
908 | # CONFIG_DEBUG_KERNEL is not set | ||
909 | CONFIG_DEBUG_BUGVERBOSE=y | ||
910 | # CONFIG_SAMPLES is not set | ||
829 | 911 | ||
830 | # | 912 | # |
831 | # Security options | 913 | # Security options |
832 | # | 914 | # |
833 | # CONFIG_KEYS is not set | 915 | # CONFIG_KEYS is not set |
834 | # CONFIG_SECURITY is not set | 916 | # CONFIG_SECURITY is not set |
835 | 917 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
836 | # | 918 | CONFIG_XOR_BLOCKS=m |
837 | # Cryptographic options | 919 | CONFIG_ASYNC_CORE=m |
838 | # | 920 | CONFIG_ASYNC_MEMCPY=m |
921 | CONFIG_ASYNC_XOR=m | ||
839 | CONFIG_CRYPTO=y | 922 | CONFIG_CRYPTO=y |
923 | CONFIG_CRYPTO_ALGAPI=y | ||
924 | CONFIG_CRYPTO_AEAD=m | ||
925 | CONFIG_CRYPTO_BLKCIPHER=y | ||
926 | CONFIG_CRYPTO_SEQIV=m | ||
927 | CONFIG_CRYPTO_HASH=y | ||
928 | CONFIG_CRYPTO_MANAGER=y | ||
840 | CONFIG_CRYPTO_HMAC=y | 929 | CONFIG_CRYPTO_HMAC=y |
930 | CONFIG_CRYPTO_XCBC=m | ||
841 | CONFIG_CRYPTO_NULL=m | 931 | CONFIG_CRYPTO_NULL=m |
842 | CONFIG_CRYPTO_MD4=m | 932 | CONFIG_CRYPTO_MD4=m |
843 | CONFIG_CRYPTO_MD5=y | 933 | CONFIG_CRYPTO_MD5=y |
@@ -846,9 +936,21 @@ CONFIG_CRYPTO_SHA256=m | |||
846 | CONFIG_CRYPTO_SHA512=m | 936 | CONFIG_CRYPTO_SHA512=m |
847 | CONFIG_CRYPTO_WP512=m | 937 | CONFIG_CRYPTO_WP512=m |
848 | CONFIG_CRYPTO_TGR192=m | 938 | CONFIG_CRYPTO_TGR192=m |
939 | CONFIG_CRYPTO_GF128MUL=m | ||
940 | CONFIG_CRYPTO_ECB=m | ||
941 | CONFIG_CRYPTO_CBC=y | ||
942 | CONFIG_CRYPTO_PCBC=m | ||
943 | CONFIG_CRYPTO_LRW=m | ||
944 | CONFIG_CRYPTO_XTS=m | ||
945 | CONFIG_CRYPTO_CTR=m | ||
946 | CONFIG_CRYPTO_GCM=m | ||
947 | CONFIG_CRYPTO_CCM=m | ||
948 | CONFIG_CRYPTO_CRYPTD=m | ||
849 | CONFIG_CRYPTO_DES=y | 949 | CONFIG_CRYPTO_DES=y |
950 | CONFIG_CRYPTO_FCRYPT=m | ||
850 | CONFIG_CRYPTO_BLOWFISH=m | 951 | CONFIG_CRYPTO_BLOWFISH=m |
851 | CONFIG_CRYPTO_TWOFISH=m | 952 | CONFIG_CRYPTO_TWOFISH=m |
953 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
852 | CONFIG_CRYPTO_SERPENT=m | 954 | CONFIG_CRYPTO_SERPENT=m |
853 | CONFIG_CRYPTO_AES=m | 955 | CONFIG_CRYPTO_AES=m |
854 | CONFIG_CRYPTO_CAST5=m | 956 | CONFIG_CRYPTO_CAST5=m |
@@ -857,20 +959,35 @@ CONFIG_CRYPTO_TEA=m | |||
857 | CONFIG_CRYPTO_ARC4=m | 959 | CONFIG_CRYPTO_ARC4=m |
858 | CONFIG_CRYPTO_KHAZAD=m | 960 | CONFIG_CRYPTO_KHAZAD=m |
859 | CONFIG_CRYPTO_ANUBIS=m | 961 | CONFIG_CRYPTO_ANUBIS=m |
962 | CONFIG_CRYPTO_SEED=m | ||
963 | CONFIG_CRYPTO_SALSA20=m | ||
860 | CONFIG_CRYPTO_DEFLATE=m | 964 | CONFIG_CRYPTO_DEFLATE=m |
861 | CONFIG_CRYPTO_MICHAEL_MIC=m | 965 | CONFIG_CRYPTO_MICHAEL_MIC=m |
862 | CONFIG_CRYPTO_CRC32C=m | 966 | CONFIG_CRYPTO_CRC32C=m |
967 | CONFIG_CRYPTO_CAMELLIA=m | ||
863 | CONFIG_CRYPTO_TEST=m | 968 | CONFIG_CRYPTO_TEST=m |
864 | 969 | CONFIG_CRYPTO_AUTHENC=m | |
865 | # | 970 | CONFIG_CRYPTO_LZO=m |
866 | # Hardware crypto devices | 971 | # CONFIG_CRYPTO_HW is not set |
867 | # | ||
868 | 972 | ||
869 | # | 973 | # |
870 | # Library routines | 974 | # Library routines |
871 | # | 975 | # |
976 | CONFIG_BITREVERSE=y | ||
872 | CONFIG_CRC_CCITT=m | 977 | CONFIG_CRC_CCITT=m |
978 | CONFIG_CRC16=m | ||
979 | # CONFIG_CRC_ITU_T is not set | ||
873 | CONFIG_CRC32=y | 980 | CONFIG_CRC32=y |
981 | # CONFIG_CRC7 is not set | ||
874 | CONFIG_LIBCRC32C=m | 982 | CONFIG_LIBCRC32C=m |
875 | CONFIG_ZLIB_INFLATE=y | 983 | CONFIG_ZLIB_INFLATE=y |
876 | CONFIG_ZLIB_DEFLATE=m | 984 | CONFIG_ZLIB_DEFLATE=m |
985 | CONFIG_LZO_COMPRESS=m | ||
986 | CONFIG_LZO_DECOMPRESS=m | ||
987 | CONFIG_TEXTSEARCH=y | ||
988 | CONFIG_TEXTSEARCH_KMP=m | ||
989 | CONFIG_TEXTSEARCH_BM=m | ||
990 | CONFIG_TEXTSEARCH_FSM=m | ||
991 | CONFIG_PLIST=y | ||
992 | CONFIG_HAS_IOMEM=y | ||
993 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig index 856238634d42..165658fe73eb 100644 --- a/arch/m68k/configs/q40_defconfig +++ b/arch/m68k/configs/q40_defconfig | |||
@@ -1,63 +1,112 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:34:58 2005 | 4 | # Wed Apr 2 20:46:20 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
16 | CONFIG_NO_IOPORT=y | ||
17 | # CONFIG_NO_DMA is not set | ||
18 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
19 | CONFIG_HZ=100 | ||
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 21 | ||
12 | # | 22 | # |
13 | # Code maturity level options | 23 | # General setup |
14 | # | 24 | # |
15 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-q40" | 28 | CONFIG_LOCALVERSION="-q40" |
29 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
32 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 33 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 34 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 35 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 36 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 37 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 38 | # CONFIG_IKCONFIG is not set |
39 | CONFIG_LOG_BUF_SHIFT=14 | ||
40 | # CONFIG_CGROUPS is not set | ||
41 | # CONFIG_GROUP_SCHED is not set | ||
42 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
43 | CONFIG_RELAY=y | ||
44 | CONFIG_NAMESPACES=y | ||
45 | # CONFIG_UTS_NS is not set | ||
46 | # CONFIG_IPC_NS is not set | ||
47 | # CONFIG_USER_NS is not set | ||
48 | # CONFIG_PID_NS is not set | ||
49 | CONFIG_BLK_DEV_INITRD=y | ||
50 | CONFIG_INITRAMFS_SOURCE="" | ||
51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
52 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 53 | # CONFIG_EMBEDDED is not set |
54 | CONFIG_UID16=y | ||
55 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
58 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 59 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 60 | CONFIG_BUG=y |
61 | CONFIG_ELF_CORE=y | ||
62 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 63 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 64 | CONFIG_FUTEX=y |
65 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 66 | CONFIG_EPOLL=y |
67 | CONFIG_SIGNALFD=y | ||
68 | CONFIG_TIMERFD=y | ||
69 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 70 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 71 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 72 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 73 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 74 | # CONFIG_SLOB is not set |
75 | # CONFIG_PROFILING is not set | ||
76 | # CONFIG_MARKERS is not set | ||
77 | # CONFIG_HAVE_OPROFILE is not set | ||
78 | # CONFIG_HAVE_KPROBES is not set | ||
79 | # CONFIG_HAVE_KRETPROBES is not set | ||
80 | CONFIG_PROC_PAGE_MONITOR=y | ||
81 | CONFIG_SLABINFO=y | ||
82 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 83 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 84 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 85 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 86 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 87 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 88 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 89 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 90 | CONFIG_KMOD=y |
91 | CONFIG_BLOCK=y | ||
92 | # CONFIG_LBD is not set | ||
93 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
94 | # CONFIG_LSF is not set | ||
95 | CONFIG_BLK_DEV_BSG=y | ||
96 | |||
97 | # | ||
98 | # IO Schedulers | ||
99 | # | ||
100 | CONFIG_IOSCHED_NOOP=y | ||
101 | CONFIG_IOSCHED_AS=y | ||
102 | CONFIG_IOSCHED_DEADLINE=y | ||
103 | CONFIG_IOSCHED_CFQ=y | ||
104 | CONFIG_DEFAULT_AS=y | ||
105 | # CONFIG_DEFAULT_DEADLINE is not set | ||
106 | # CONFIG_DEFAULT_CFQ is not set | ||
107 | # CONFIG_DEFAULT_NOOP is not set | ||
108 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
109 | CONFIG_CLASSIC_RCU=y | ||
61 | 110 | ||
62 | # | 111 | # |
63 | # Platform dependent setup | 112 | # Platform dependent setup |
@@ -80,10 +129,24 @@ CONFIG_Q40=y | |||
80 | CONFIG_M68040=y | 129 | CONFIG_M68040=y |
81 | CONFIG_M68060=y | 130 | CONFIG_M68060=y |
82 | CONFIG_MMU_MOTOROLA=y | 131 | CONFIG_MMU_MOTOROLA=y |
83 | CONFIG_M68KFPU_EMU=y | 132 | # CONFIG_M68KFPU_EMU is not set |
84 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
85 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
86 | # CONFIG_ADVANCED is not set | 133 | # CONFIG_ADVANCED is not set |
134 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
135 | CONFIG_NODES_SHIFT=3 | ||
136 | CONFIG_SELECT_MEMORY_MODEL=y | ||
137 | # CONFIG_FLATMEM_MANUAL is not set | ||
138 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
139 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
140 | CONFIG_DISCONTIGMEM=y | ||
141 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
142 | CONFIG_NEED_MULTIPLE_NODES=y | ||
143 | # CONFIG_SPARSEMEM_STATIC is not set | ||
144 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
145 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
146 | # CONFIG_RESOURCES_64BIT is not set | ||
147 | CONFIG_ZONE_DMA_FLAG=1 | ||
148 | CONFIG_BOUNCE=y | ||
149 | CONFIG_VIRT_TO_BUS=y | ||
87 | 150 | ||
88 | # | 151 | # |
89 | # General setup | 152 | # General setup |
@@ -91,41 +154,282 @@ CONFIG_M68KFPU_EMU_EXTRAPREC=y | |||
91 | CONFIG_BINFMT_ELF=y | 154 | CONFIG_BINFMT_ELF=y |
92 | CONFIG_BINFMT_AOUT=m | 155 | CONFIG_BINFMT_AOUT=m |
93 | CONFIG_BINFMT_MISC=m | 156 | CONFIG_BINFMT_MISC=m |
94 | # CONFIG_HEARTBEAT is not set | 157 | CONFIG_HEARTBEAT=y |
95 | CONFIG_PROC_HARDWARE=y | 158 | CONFIG_PROC_HARDWARE=y |
96 | CONFIG_ISA=y | 159 | CONFIG_ISA=y |
97 | CONFIG_GENERIC_ISA_DMA=y | 160 | CONFIG_GENERIC_ISA_DMA=y |
161 | CONFIG_ZONE_DMA=y | ||
162 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
98 | 163 | ||
99 | # | 164 | # |
100 | # Device Drivers | 165 | # Networking |
101 | # | 166 | # |
167 | CONFIG_NET=y | ||
102 | 168 | ||
103 | # | 169 | # |
104 | # Generic Driver Options | 170 | # Networking options |
105 | # | 171 | # |
106 | CONFIG_STANDALONE=y | 172 | CONFIG_PACKET=y |
107 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 173 | # CONFIG_PACKET_MMAP is not set |
108 | CONFIG_FW_LOADER=m | 174 | CONFIG_UNIX=y |
109 | # CONFIG_DEBUG_DRIVER is not set | 175 | CONFIG_XFRM=y |
176 | # CONFIG_XFRM_USER is not set | ||
177 | # CONFIG_XFRM_SUB_POLICY is not set | ||
178 | CONFIG_XFRM_MIGRATE=y | ||
179 | # CONFIG_XFRM_STATISTICS is not set | ||
180 | CONFIG_NET_KEY=y | ||
181 | CONFIG_NET_KEY_MIGRATE=y | ||
182 | CONFIG_INET=y | ||
183 | # CONFIG_IP_MULTICAST is not set | ||
184 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
185 | CONFIG_IP_FIB_HASH=y | ||
186 | # CONFIG_IP_PNP is not set | ||
187 | CONFIG_NET_IPIP=m | ||
188 | CONFIG_NET_IPGRE=m | ||
189 | # CONFIG_ARPD is not set | ||
190 | CONFIG_SYN_COOKIES=y | ||
191 | CONFIG_INET_AH=m | ||
192 | CONFIG_INET_ESP=m | ||
193 | CONFIG_INET_IPCOMP=m | ||
194 | CONFIG_INET_XFRM_TUNNEL=m | ||
195 | CONFIG_INET_TUNNEL=m | ||
196 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | ||
197 | CONFIG_INET_XFRM_MODE_TUNNEL=m | ||
198 | CONFIG_INET_XFRM_MODE_BEET=m | ||
199 | CONFIG_INET_LRO=m | ||
200 | CONFIG_INET_DIAG=m | ||
201 | CONFIG_INET_TCP_DIAG=m | ||
202 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
203 | CONFIG_TCP_CONG_CUBIC=y | ||
204 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
205 | # CONFIG_TCP_MD5SIG is not set | ||
206 | # CONFIG_IP_VS is not set | ||
207 | CONFIG_IPV6=m | ||
208 | CONFIG_IPV6_PRIVACY=y | ||
209 | CONFIG_IPV6_ROUTER_PREF=y | ||
210 | CONFIG_IPV6_ROUTE_INFO=y | ||
211 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
212 | CONFIG_INET6_AH=m | ||
213 | CONFIG_INET6_ESP=m | ||
214 | CONFIG_INET6_IPCOMP=m | ||
215 | # CONFIG_IPV6_MIP6 is not set | ||
216 | CONFIG_INET6_XFRM_TUNNEL=m | ||
217 | CONFIG_INET6_TUNNEL=m | ||
218 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
219 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
220 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
221 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
222 | CONFIG_IPV6_SIT=m | ||
223 | CONFIG_IPV6_TUNNEL=m | ||
224 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
225 | # CONFIG_NETWORK_SECMARK is not set | ||
226 | CONFIG_NETFILTER=y | ||
227 | # CONFIG_NETFILTER_DEBUG is not set | ||
228 | CONFIG_NETFILTER_ADVANCED=y | ||
229 | |||
230 | # | ||
231 | # Core Netfilter Configuration | ||
232 | # | ||
233 | CONFIG_NETFILTER_NETLINK=m | ||
234 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
235 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
236 | CONFIG_NF_CONNTRACK=m | ||
237 | CONFIG_NF_CT_ACCT=y | ||
238 | CONFIG_NF_CONNTRACK_MARK=y | ||
239 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
240 | CONFIG_NF_CT_PROTO_GRE=m | ||
241 | CONFIG_NF_CT_PROTO_SCTP=m | ||
242 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
243 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
244 | CONFIG_NF_CONNTRACK_FTP=m | ||
245 | CONFIG_NF_CONNTRACK_H323=m | ||
246 | CONFIG_NF_CONNTRACK_IRC=m | ||
247 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
248 | CONFIG_NF_CONNTRACK_PPTP=m | ||
249 | CONFIG_NF_CONNTRACK_SANE=m | ||
250 | CONFIG_NF_CONNTRACK_SIP=m | ||
251 | CONFIG_NF_CONNTRACK_TFTP=m | ||
252 | # CONFIG_NF_CT_NETLINK is not set | ||
253 | CONFIG_NETFILTER_XTABLES=m | ||
254 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
255 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
264 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
265 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
110 | 294 | ||
111 | # | 295 | # |
112 | # Memory Technology Devices (MTD) | 296 | # IP: Netfilter Configuration |
113 | # | 297 | # |
114 | # CONFIG_MTD is not set | 298 | CONFIG_NF_CONNTRACK_IPV4=m |
299 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
300 | CONFIG_IP_NF_QUEUE=m | ||
301 | CONFIG_IP_NF_IPTABLES=m | ||
302 | CONFIG_IP_NF_MATCH_RECENT=m | ||
303 | CONFIG_IP_NF_MATCH_ECN=m | ||
304 | CONFIG_IP_NF_MATCH_AH=m | ||
305 | CONFIG_IP_NF_MATCH_TTL=m | ||
306 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
307 | CONFIG_IP_NF_FILTER=m | ||
308 | CONFIG_IP_NF_TARGET_REJECT=m | ||
309 | CONFIG_IP_NF_TARGET_LOG=m | ||
310 | CONFIG_IP_NF_TARGET_ULOG=m | ||
311 | CONFIG_NF_NAT=m | ||
312 | CONFIG_NF_NAT_NEEDED=y | ||
313 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
314 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
315 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
316 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
317 | CONFIG_NF_NAT_PROTO_GRE=m | ||
318 | CONFIG_NF_NAT_FTP=m | ||
319 | CONFIG_NF_NAT_IRC=m | ||
320 | CONFIG_NF_NAT_TFTP=m | ||
321 | CONFIG_NF_NAT_AMANDA=m | ||
322 | CONFIG_NF_NAT_PPTP=m | ||
323 | CONFIG_NF_NAT_H323=m | ||
324 | CONFIG_NF_NAT_SIP=m | ||
325 | CONFIG_IP_NF_MANGLE=m | ||
326 | CONFIG_IP_NF_TARGET_ECN=m | ||
327 | CONFIG_IP_NF_TARGET_TTL=m | ||
328 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
329 | CONFIG_IP_NF_RAW=m | ||
330 | CONFIG_IP_NF_ARPTABLES=m | ||
331 | CONFIG_IP_NF_ARPFILTER=m | ||
332 | CONFIG_IP_NF_ARP_MANGLE=m | ||
115 | 333 | ||
116 | # | 334 | # |
117 | # Parallel port support | 335 | # IPv6: Netfilter Configuration |
118 | # | 336 | # |
119 | # CONFIG_PARPORT is not set | 337 | CONFIG_NF_CONNTRACK_IPV6=m |
338 | CONFIG_IP6_NF_QUEUE=m | ||
339 | CONFIG_IP6_NF_IPTABLES=m | ||
340 | CONFIG_IP6_NF_MATCH_RT=m | ||
341 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
342 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
343 | CONFIG_IP6_NF_MATCH_HL=m | ||
344 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
345 | CONFIG_IP6_NF_MATCH_AH=m | ||
346 | CONFIG_IP6_NF_MATCH_MH=m | ||
347 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
348 | CONFIG_IP6_NF_FILTER=m | ||
349 | CONFIG_IP6_NF_TARGET_LOG=m | ||
350 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
351 | CONFIG_IP6_NF_MANGLE=m | ||
352 | CONFIG_IP6_NF_TARGET_HL=m | ||
353 | CONFIG_IP6_NF_RAW=m | ||
354 | CONFIG_IP_DCCP=m | ||
355 | CONFIG_INET_DCCP_DIAG=m | ||
356 | CONFIG_IP_DCCP_ACKVEC=y | ||
120 | 357 | ||
121 | # | 358 | # |
122 | # Plug and Play support | 359 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
123 | # | 360 | # |
124 | # CONFIG_PNP is not set | 361 | CONFIG_IP_DCCP_CCID2=m |
362 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
363 | CONFIG_IP_DCCP_CCID3=m | ||
364 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
365 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
366 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
367 | CONFIG_IP_SCTP=m | ||
368 | # CONFIG_SCTP_DBG_MSG is not set | ||
369 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
370 | # CONFIG_SCTP_HMAC_NONE is not set | ||
371 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
372 | CONFIG_SCTP_HMAC_MD5=y | ||
373 | # CONFIG_TIPC is not set | ||
374 | # CONFIG_ATM is not set | ||
375 | # CONFIG_BRIDGE is not set | ||
376 | # CONFIG_VLAN_8021Q is not set | ||
377 | # CONFIG_DECNET is not set | ||
378 | CONFIG_LLC=m | ||
379 | # CONFIG_LLC2 is not set | ||
380 | # CONFIG_IPX is not set | ||
381 | CONFIG_ATALK=m | ||
382 | # CONFIG_DEV_APPLETALK is not set | ||
383 | # CONFIG_X25 is not set | ||
384 | # CONFIG_LAPB is not set | ||
385 | # CONFIG_ECONET is not set | ||
386 | # CONFIG_WAN_ROUTER is not set | ||
387 | # CONFIG_NET_SCHED is not set | ||
388 | CONFIG_NET_CLS_ROUTE=y | ||
125 | 389 | ||
126 | # | 390 | # |
127 | # Block devices | 391 | # Network testing |
128 | # | 392 | # |
393 | # CONFIG_NET_PKTGEN is not set | ||
394 | # CONFIG_HAMRADIO is not set | ||
395 | # CONFIG_CAN is not set | ||
396 | # CONFIG_IRDA is not set | ||
397 | # CONFIG_BT is not set | ||
398 | # CONFIG_AF_RXRPC is not set | ||
399 | |||
400 | # | ||
401 | # Wireless | ||
402 | # | ||
403 | # CONFIG_CFG80211 is not set | ||
404 | CONFIG_WIRELESS_EXT=y | ||
405 | # CONFIG_MAC80211 is not set | ||
406 | CONFIG_IEEE80211=m | ||
407 | # CONFIG_IEEE80211_DEBUG is not set | ||
408 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
409 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
410 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
411 | CONFIG_IEEE80211_SOFTMAC=m | ||
412 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
413 | # CONFIG_RFKILL is not set | ||
414 | # CONFIG_NET_9P is not set | ||
415 | |||
416 | # | ||
417 | # Device Drivers | ||
418 | # | ||
419 | |||
420 | # | ||
421 | # Generic Driver Options | ||
422 | # | ||
423 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
424 | CONFIG_STANDALONE=y | ||
425 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
426 | CONFIG_FW_LOADER=m | ||
427 | # CONFIG_SYS_HYPERVISOR is not set | ||
428 | CONFIG_CONNECTOR=m | ||
429 | # CONFIG_MTD is not set | ||
430 | # CONFIG_PARPORT is not set | ||
431 | # CONFIG_PNP is not set | ||
432 | CONFIG_BLK_DEV=y | ||
129 | # CONFIG_BLK_DEV_FD is not set | 433 | # CONFIG_BLK_DEV_FD is not set |
130 | # CONFIG_BLK_DEV_COW_COMMON is not set | 434 | # CONFIG_BLK_DEV_COW_COMMON is not set |
131 | CONFIG_BLK_DEV_LOOP=y | 435 | CONFIG_BLK_DEV_LOOP=y |
@@ -134,54 +438,64 @@ CONFIG_BLK_DEV_NBD=m | |||
134 | CONFIG_BLK_DEV_RAM=y | 438 | CONFIG_BLK_DEV_RAM=y |
135 | CONFIG_BLK_DEV_RAM_COUNT=16 | 439 | CONFIG_BLK_DEV_RAM_COUNT=16 |
136 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 440 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
137 | CONFIG_BLK_DEV_INITRD=y | 441 | # CONFIG_BLK_DEV_XIP is not set |
138 | CONFIG_INITRAMFS_SOURCE="" | ||
139 | CONFIG_CDROM_PKTCDVD=m | 442 | CONFIG_CDROM_PKTCDVD=m |
140 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 443 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
141 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | 444 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set |
142 | |||
143 | # | ||
144 | # IO Schedulers | ||
145 | # | ||
146 | CONFIG_IOSCHED_NOOP=y | ||
147 | CONFIG_IOSCHED_AS=y | ||
148 | CONFIG_IOSCHED_DEADLINE=y | ||
149 | CONFIG_IOSCHED_CFQ=y | ||
150 | CONFIG_ATA_OVER_ETH=m | 445 | CONFIG_ATA_OVER_ETH=m |
151 | 446 | CONFIG_MISC_DEVICES=y | |
152 | # | 447 | # CONFIG_EEPROM_93CX6 is not set |
153 | # ATA/ATAPI/MFM/RLL support | 448 | # CONFIG_ENCLOSURE_SERVICES is not set |
154 | # | 449 | CONFIG_HAVE_IDE=y |
155 | CONFIG_IDE=y | 450 | CONFIG_IDE=y |
156 | CONFIG_BLK_DEV_IDE=y | 451 | CONFIG_BLK_DEV_IDE=y |
157 | 452 | ||
158 | # | 453 | # |
159 | # Please see Documentation/ide.txt for help/info on IDE drives | 454 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
160 | # | 455 | # |
161 | # CONFIG_BLK_DEV_IDE_SATA is not set | 456 | # CONFIG_BLK_DEV_IDE_SATA is not set |
162 | CONFIG_BLK_DEV_IDEDISK=y | 457 | CONFIG_BLK_DEV_IDEDISK=y |
163 | # CONFIG_IDEDISK_MULTI_MODE is not set | 458 | # CONFIG_IDEDISK_MULTI_MODE is not set |
164 | CONFIG_BLK_DEV_IDECD=y | 459 | CONFIG_BLK_DEV_IDECD=y |
165 | CONFIG_BLK_DEV_IDETAPE=m | 460 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y |
461 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
166 | CONFIG_BLK_DEV_IDEFLOPPY=m | 462 | CONFIG_BLK_DEV_IDEFLOPPY=m |
167 | # CONFIG_BLK_DEV_IDESCSI is not set | 463 | # CONFIG_BLK_DEV_IDESCSI is not set |
168 | # CONFIG_IDE_TASK_IOCTL is not set | 464 | # CONFIG_IDE_TASK_IOCTL is not set |
465 | CONFIG_IDE_PROC_FS=y | ||
169 | 466 | ||
170 | # | 467 | # |
171 | # IDE chipset support/bugfixes | 468 | # IDE chipset support/bugfixes |
172 | # | 469 | # |
173 | CONFIG_IDE_GENERIC=y | 470 | # CONFIG_IDE_GENERIC is not set |
174 | # CONFIG_IDE_ARM is not set | 471 | # CONFIG_BLK_DEV_PLATFORM is not set |
175 | CONFIG_BLK_DEV_Q40IDE=y | 472 | CONFIG_BLK_DEV_Q40IDE=y |
176 | # CONFIG_IDE_CHIPSETS is not set | 473 | |
474 | # | ||
475 | # Other IDE chipsets support | ||
476 | # | ||
477 | |||
478 | # | ||
479 | # Note: most of these also require special kernel boot parameters | ||
480 | # | ||
481 | # CONFIG_BLK_DEV_4DRIVES is not set | ||
482 | # CONFIG_BLK_DEV_ALI14XX is not set | ||
483 | # CONFIG_BLK_DEV_DTC2278 is not set | ||
484 | # CONFIG_BLK_DEV_HT6560B is not set | ||
485 | # CONFIG_BLK_DEV_QD65XX is not set | ||
486 | # CONFIG_BLK_DEV_UMC8672 is not set | ||
177 | # CONFIG_BLK_DEV_IDEDMA is not set | 487 | # CONFIG_BLK_DEV_IDEDMA is not set |
178 | # CONFIG_IDEDMA_AUTO is not set | 488 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set |
179 | # CONFIG_BLK_DEV_HD is not set | 489 | # CONFIG_BLK_DEV_HD is not set |
180 | 490 | ||
181 | # | 491 | # |
182 | # SCSI device support | 492 | # SCSI device support |
183 | # | 493 | # |
494 | CONFIG_RAID_ATTRS=m | ||
184 | CONFIG_SCSI=y | 495 | CONFIG_SCSI=y |
496 | CONFIG_SCSI_DMA=y | ||
497 | CONFIG_SCSI_TGT=m | ||
498 | # CONFIG_SCSI_NETLINK is not set | ||
185 | CONFIG_SCSI_PROC_FS=y | 499 | CONFIG_SCSI_PROC_FS=y |
186 | 500 | ||
187 | # | 501 | # |
@@ -189,10 +503,11 @@ CONFIG_SCSI_PROC_FS=y | |||
189 | # | 503 | # |
190 | CONFIG_BLK_DEV_SD=y | 504 | CONFIG_BLK_DEV_SD=y |
191 | CONFIG_CHR_DEV_ST=m | 505 | CONFIG_CHR_DEV_ST=m |
192 | # CONFIG_CHR_DEV_OSST is not set | 506 | CONFIG_CHR_DEV_OSST=m |
193 | CONFIG_BLK_DEV_SR=y | 507 | CONFIG_BLK_DEV_SR=y |
194 | CONFIG_BLK_DEV_SR_VENDOR=y | 508 | CONFIG_BLK_DEV_SR_VENDOR=y |
195 | CONFIG_CHR_DEV_SG=m | 509 | CONFIG_CHR_DEV_SG=m |
510 | # CONFIG_CHR_DEV_SCH is not set | ||
196 | 511 | ||
197 | # | 512 | # |
198 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 513 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -200,266 +515,71 @@ CONFIG_CHR_DEV_SG=m | |||
200 | # CONFIG_SCSI_MULTI_LUN is not set | 515 | # CONFIG_SCSI_MULTI_LUN is not set |
201 | CONFIG_SCSI_CONSTANTS=y | 516 | CONFIG_SCSI_CONSTANTS=y |
202 | # CONFIG_SCSI_LOGGING is not set | 517 | # CONFIG_SCSI_LOGGING is not set |
518 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
519 | CONFIG_SCSI_WAIT_SCAN=m | ||
203 | 520 | ||
204 | # | 521 | # |
205 | # SCSI Transport Attributes | 522 | # SCSI Transports |
206 | # | 523 | # |
207 | # CONFIG_SCSI_SPI_ATTRS is not set | 524 | # CONFIG_SCSI_SPI_ATTRS is not set |
208 | # CONFIG_SCSI_FC_ATTRS is not set | 525 | # CONFIG_SCSI_FC_ATTRS is not set |
209 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 526 | CONFIG_SCSI_ISCSI_ATTRS=m |
210 | 527 | CONFIG_SCSI_SAS_ATTRS=m | |
211 | # | 528 | CONFIG_SCSI_SAS_LIBSAS=m |
212 | # SCSI low-level drivers | 529 | CONFIG_SCSI_SAS_HOST_SMP=y |
213 | # | 530 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set |
531 | CONFIG_SCSI_SRP_ATTRS=m | ||
532 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
533 | CONFIG_SCSI_LOWLEVEL=y | ||
534 | CONFIG_ISCSI_TCP=m | ||
214 | # CONFIG_SCSI_AHA152X is not set | 535 | # CONFIG_SCSI_AHA152X is not set |
215 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 536 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
537 | # CONFIG_SCSI_ADVANSYS is not set | ||
216 | # CONFIG_SCSI_IN2000 is not set | 538 | # CONFIG_SCSI_IN2000 is not set |
217 | # CONFIG_SCSI_SATA is not set | ||
218 | # CONFIG_SCSI_DTC3280 is not set | 539 | # CONFIG_SCSI_DTC3280 is not set |
219 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 540 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
220 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | 541 | # CONFIG_SCSI_GENERIC_NCR5380 is not set |
221 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | 542 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set |
222 | # CONFIG_SCSI_NCR53C406A is not set | 543 | # CONFIG_SCSI_NCR53C406A is not set |
223 | # CONFIG_SCSI_PAS16 is not set | 544 | # CONFIG_SCSI_PAS16 is not set |
224 | # CONFIG_SCSI_PSI240I is not set | ||
225 | # CONFIG_SCSI_QLOGIC_FAS is not set | 545 | # CONFIG_SCSI_QLOGIC_FAS is not set |
226 | # CONFIG_SCSI_SYM53C416 is not set | 546 | # CONFIG_SCSI_SYM53C416 is not set |
227 | # CONFIG_SCSI_T128 is not set | 547 | # CONFIG_SCSI_T128 is not set |
228 | # CONFIG_SCSI_DEBUG is not set | 548 | # CONFIG_SCSI_DEBUG is not set |
229 | |||
230 | # | ||
231 | # Old CD-ROM drivers (not SCSI, not IDE) | ||
232 | # | ||
233 | # CONFIG_CD_NO_IDESCSI is not set | ||
234 | |||
235 | # | ||
236 | # Multi-device support (RAID and LVM) | ||
237 | # | ||
238 | CONFIG_MD=y | 549 | CONFIG_MD=y |
239 | CONFIG_BLK_DEV_MD=m | 550 | CONFIG_BLK_DEV_MD=m |
240 | CONFIG_MD_LINEAR=m | 551 | CONFIG_MD_LINEAR=m |
241 | CONFIG_MD_RAID0=m | 552 | CONFIG_MD_RAID0=m |
242 | CONFIG_MD_RAID1=m | 553 | CONFIG_MD_RAID1=m |
243 | # CONFIG_MD_RAID10 is not set | 554 | # CONFIG_MD_RAID10 is not set |
244 | CONFIG_MD_RAID5=m | 555 | CONFIG_MD_RAID456=m |
245 | CONFIG_MD_RAID6=m | 556 | CONFIG_MD_RAID5_RESHAPE=y |
246 | CONFIG_MD_MULTIPATH=m | 557 | CONFIG_MD_MULTIPATH=m |
247 | # CONFIG_MD_FAULTY is not set | 558 | # CONFIG_MD_FAULTY is not set |
248 | CONFIG_BLK_DEV_DM=m | 559 | CONFIG_BLK_DEV_DM=m |
560 | # CONFIG_DM_DEBUG is not set | ||
249 | CONFIG_DM_CRYPT=m | 561 | CONFIG_DM_CRYPT=m |
250 | CONFIG_DM_SNAPSHOT=m | 562 | CONFIG_DM_SNAPSHOT=m |
251 | CONFIG_DM_MIRROR=m | 563 | CONFIG_DM_MIRROR=m |
252 | CONFIG_DM_ZERO=m | 564 | CONFIG_DM_ZERO=m |
253 | CONFIG_DM_MULTIPATH=m | 565 | CONFIG_DM_MULTIPATH=m |
254 | CONFIG_DM_MULTIPATH_EMC=m | 566 | CONFIG_DM_MULTIPATH_EMC=m |
255 | 567 | CONFIG_DM_MULTIPATH_RDAC=m | |
256 | # | 568 | CONFIG_DM_MULTIPATH_HP=m |
257 | # Fusion MPT device support | 569 | # CONFIG_DM_DELAY is not set |
258 | # | 570 | CONFIG_DM_UEVENT=y |
259 | |||
260 | # | ||
261 | # IEEE 1394 (FireWire) support | ||
262 | # | ||
263 | |||
264 | # | ||
265 | # I2O device support | ||
266 | # | ||
267 | |||
268 | # | ||
269 | # Networking support | ||
270 | # | ||
271 | CONFIG_NET=y | ||
272 | |||
273 | # | ||
274 | # Networking options | ||
275 | # | ||
276 | CONFIG_PACKET=y | ||
277 | # CONFIG_PACKET_MMAP is not set | ||
278 | CONFIG_UNIX=y | ||
279 | CONFIG_NET_KEY=y | ||
280 | CONFIG_INET=y | ||
281 | # CONFIG_IP_MULTICAST is not set | ||
282 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
283 | CONFIG_IP_PNP=y | ||
284 | CONFIG_IP_PNP_DHCP=y | ||
285 | CONFIG_IP_PNP_BOOTP=y | ||
286 | CONFIG_IP_PNP_RARP=y | ||
287 | CONFIG_NET_IPIP=m | ||
288 | CONFIG_NET_IPGRE=m | ||
289 | # CONFIG_ARPD is not set | ||
290 | CONFIG_SYN_COOKIES=y | ||
291 | CONFIG_INET_AH=m | ||
292 | CONFIG_INET_ESP=m | ||
293 | CONFIG_INET_IPCOMP=m | ||
294 | CONFIG_INET_TUNNEL=m | ||
295 | CONFIG_IP_TCPDIAG=m | ||
296 | CONFIG_IP_TCPDIAG_IPV6=y | ||
297 | |||
298 | # | ||
299 | # IP: Virtual Server Configuration | ||
300 | # | ||
301 | # CONFIG_IP_VS is not set | ||
302 | CONFIG_IPV6=m | ||
303 | CONFIG_IPV6_PRIVACY=y | ||
304 | CONFIG_INET6_AH=m | ||
305 | CONFIG_INET6_ESP=m | ||
306 | CONFIG_INET6_IPCOMP=m | ||
307 | CONFIG_INET6_TUNNEL=m | ||
308 | CONFIG_IPV6_TUNNEL=m | ||
309 | CONFIG_NETFILTER=y | ||
310 | # CONFIG_NETFILTER_DEBUG is not set | ||
311 | |||
312 | # | ||
313 | # IP: Netfilter Configuration | ||
314 | # | ||
315 | CONFIG_IP_NF_CONNTRACK=m | ||
316 | # CONFIG_IP_NF_CT_ACCT is not set | ||
317 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
318 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
319 | CONFIG_IP_NF_FTP=m | ||
320 | CONFIG_IP_NF_IRC=m | ||
321 | CONFIG_IP_NF_TFTP=m | ||
322 | CONFIG_IP_NF_AMANDA=m | ||
323 | CONFIG_IP_NF_QUEUE=m | ||
324 | CONFIG_IP_NF_IPTABLES=m | ||
325 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
326 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
327 | CONFIG_IP_NF_MATCH_MAC=m | ||
328 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
329 | CONFIG_IP_NF_MATCH_MARK=m | ||
330 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
331 | CONFIG_IP_NF_MATCH_TOS=m | ||
332 | CONFIG_IP_NF_MATCH_RECENT=m | ||
333 | CONFIG_IP_NF_MATCH_ECN=m | ||
334 | CONFIG_IP_NF_MATCH_DSCP=m | ||
335 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
336 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
337 | CONFIG_IP_NF_MATCH_TTL=m | ||
338 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
339 | CONFIG_IP_NF_MATCH_HELPER=m | ||
340 | CONFIG_IP_NF_MATCH_STATE=m | ||
341 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
342 | CONFIG_IP_NF_MATCH_OWNER=m | ||
343 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
344 | CONFIG_IP_NF_MATCH_REALM=m | ||
345 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
346 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
347 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
348 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
349 | CONFIG_IP_NF_FILTER=m | ||
350 | CONFIG_IP_NF_TARGET_REJECT=m | ||
351 | CONFIG_IP_NF_TARGET_LOG=m | ||
352 | CONFIG_IP_NF_TARGET_ULOG=m | ||
353 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
354 | CONFIG_IP_NF_NAT=m | ||
355 | CONFIG_IP_NF_NAT_NEEDED=y | ||
356 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
357 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
358 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
359 | CONFIG_IP_NF_TARGET_SAME=m | ||
360 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
361 | CONFIG_IP_NF_NAT_IRC=m | ||
362 | CONFIG_IP_NF_NAT_FTP=m | ||
363 | CONFIG_IP_NF_NAT_TFTP=m | ||
364 | CONFIG_IP_NF_NAT_AMANDA=m | ||
365 | CONFIG_IP_NF_MANGLE=m | ||
366 | CONFIG_IP_NF_TARGET_TOS=m | ||
367 | CONFIG_IP_NF_TARGET_ECN=m | ||
368 | CONFIG_IP_NF_TARGET_DSCP=m | ||
369 | CONFIG_IP_NF_TARGET_MARK=m | ||
370 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
371 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
372 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
373 | CONFIG_IP_NF_RAW=m | ||
374 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
375 | CONFIG_IP_NF_ARPTABLES=m | ||
376 | CONFIG_IP_NF_ARPFILTER=m | ||
377 | CONFIG_IP_NF_ARP_MANGLE=m | ||
378 | |||
379 | # | ||
380 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
381 | # | ||
382 | CONFIG_IP6_NF_QUEUE=m | ||
383 | CONFIG_IP6_NF_IPTABLES=m | ||
384 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
385 | CONFIG_IP6_NF_MATCH_MAC=m | ||
386 | CONFIG_IP6_NF_MATCH_RT=m | ||
387 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
388 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
389 | CONFIG_IP6_NF_MATCH_HL=m | ||
390 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
391 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
392 | CONFIG_IP6_NF_MATCH_MARK=m | ||
393 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
394 | CONFIG_IP6_NF_MATCH_AHESP=m | ||
395 | CONFIG_IP6_NF_MATCH_LENGTH=m | ||
396 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
397 | CONFIG_IP6_NF_FILTER=m | ||
398 | CONFIG_IP6_NF_TARGET_LOG=m | ||
399 | CONFIG_IP6_NF_MANGLE=m | ||
400 | CONFIG_IP6_NF_TARGET_MARK=m | ||
401 | CONFIG_IP6_NF_RAW=m | ||
402 | CONFIG_XFRM=y | ||
403 | # CONFIG_XFRM_USER is not set | ||
404 | |||
405 | # | ||
406 | # SCTP Configuration (EXPERIMENTAL) | ||
407 | # | ||
408 | CONFIG_IP_SCTP=m | ||
409 | # CONFIG_SCTP_DBG_MSG is not set | ||
410 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
411 | # CONFIG_SCTP_HMAC_NONE is not set | ||
412 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
413 | CONFIG_SCTP_HMAC_MD5=y | ||
414 | # CONFIG_ATM is not set | ||
415 | # CONFIG_BRIDGE is not set | ||
416 | # CONFIG_VLAN_8021Q is not set | ||
417 | # CONFIG_DECNET is not set | ||
418 | CONFIG_LLC=m | ||
419 | # CONFIG_LLC2 is not set | ||
420 | CONFIG_IPX=m | ||
421 | # CONFIG_IPX_INTERN is not set | ||
422 | CONFIG_ATALK=m | ||
423 | # CONFIG_DEV_APPLETALK is not set | ||
424 | # CONFIG_X25 is not set | ||
425 | # CONFIG_LAPB is not set | ||
426 | # CONFIG_NET_DIVERT is not set | ||
427 | # CONFIG_ECONET is not set | ||
428 | # CONFIG_WAN_ROUTER is not set | ||
429 | |||
430 | # | ||
431 | # QoS and/or fair queueing | ||
432 | # | ||
433 | # CONFIG_NET_SCHED is not set | ||
434 | CONFIG_NET_CLS_ROUTE=y | ||
435 | |||
436 | # | ||
437 | # Network testing | ||
438 | # | ||
439 | # CONFIG_NET_PKTGEN is not set | ||
440 | CONFIG_NETPOLL=y | ||
441 | # CONFIG_NETPOLL_RX is not set | ||
442 | # CONFIG_NETPOLL_TRAP is not set | ||
443 | CONFIG_NET_POLL_CONTROLLER=y | ||
444 | # CONFIG_HAMRADIO is not set | ||
445 | # CONFIG_IRDA is not set | ||
446 | # CONFIG_BT is not set | ||
447 | CONFIG_NETDEVICES=y | 571 | CONFIG_NETDEVICES=y |
572 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
448 | CONFIG_DUMMY=m | 573 | CONFIG_DUMMY=m |
449 | # CONFIG_BONDING is not set | 574 | # CONFIG_BONDING is not set |
575 | CONFIG_MACVLAN=m | ||
450 | CONFIG_EQUALIZER=m | 576 | CONFIG_EQUALIZER=m |
451 | # CONFIG_TUN is not set | 577 | # CONFIG_TUN is not set |
452 | 578 | CONFIG_VETH=m | |
453 | # | ||
454 | # ARCnet devices | ||
455 | # | ||
456 | # CONFIG_ARCNET is not set | 579 | # CONFIG_ARCNET is not set |
457 | 580 | # CONFIG_PHYLIB is not set | |
458 | # | ||
459 | # Ethernet (10 or 100Mbit) | ||
460 | # | ||
461 | CONFIG_NET_ETHERNET=y | 581 | CONFIG_NET_ETHERNET=y |
462 | CONFIG_MII=m | 582 | # CONFIG_MII is not set |
463 | # CONFIG_NET_VENDOR_3COM is not set | 583 | # CONFIG_NET_VENDOR_3COM is not set |
464 | # CONFIG_NET_VENDOR_SMC is not set | 584 | # CONFIG_NET_VENDOR_SMC is not set |
465 | # CONFIG_NET_VENDOR_RACAL is not set | 585 | # CONFIG_NET_VENDOR_RACAL is not set |
@@ -468,30 +588,21 @@ CONFIG_MII=m | |||
468 | # CONFIG_HP100 is not set | 588 | # CONFIG_HP100 is not set |
469 | # CONFIG_NET_ISA is not set | 589 | # CONFIG_NET_ISA is not set |
470 | CONFIG_NE2000=m | 590 | CONFIG_NE2000=m |
591 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
592 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
593 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
594 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
471 | # CONFIG_NET_PCI is not set | 595 | # CONFIG_NET_PCI is not set |
472 | # CONFIG_NET_POCKET is not set | 596 | # CONFIG_B44 is not set |
473 | 597 | # CONFIG_NETDEV_1000 is not set | |
474 | # | 598 | # CONFIG_NETDEV_10000 is not set |
475 | # Ethernet (1000 Mbit) | ||
476 | # | ||
477 | |||
478 | # | ||
479 | # Ethernet (10000 Mbit) | ||
480 | # | ||
481 | |||
482 | # | ||
483 | # Token Ring devices | ||
484 | # | ||
485 | # CONFIG_TR is not set | 599 | # CONFIG_TR is not set |
486 | 600 | ||
487 | # | 601 | # |
488 | # Wireless LAN (non-hamradio) | 602 | # Wireless LAN |
489 | # | ||
490 | # CONFIG_NET_RADIO is not set | ||
491 | |||
492 | # | ||
493 | # Wan interfaces | ||
494 | # | 603 | # |
604 | # CONFIG_WLAN_PRE80211 is not set | ||
605 | # CONFIG_WLAN_80211 is not set | ||
495 | # CONFIG_WAN is not set | 606 | # CONFIG_WAN is not set |
496 | CONFIG_PPP=m | 607 | CONFIG_PPP=m |
497 | # CONFIG_PPP_MULTILINK is not set | 608 | # CONFIG_PPP_MULTILINK is not set |
@@ -500,28 +611,28 @@ CONFIG_PPP_ASYNC=m | |||
500 | CONFIG_PPP_SYNC_TTY=m | 611 | CONFIG_PPP_SYNC_TTY=m |
501 | CONFIG_PPP_DEFLATE=m | 612 | CONFIG_PPP_DEFLATE=m |
502 | CONFIG_PPP_BSDCOMP=m | 613 | CONFIG_PPP_BSDCOMP=m |
614 | CONFIG_PPP_MPPE=m | ||
503 | CONFIG_PPPOE=m | 615 | CONFIG_PPPOE=m |
616 | CONFIG_PPPOL2TP=m | ||
504 | CONFIG_SLIP=m | 617 | CONFIG_SLIP=m |
505 | CONFIG_SLIP_COMPRESSED=y | 618 | CONFIG_SLIP_COMPRESSED=y |
619 | CONFIG_SLHC=m | ||
506 | CONFIG_SLIP_SMART=y | 620 | CONFIG_SLIP_SMART=y |
507 | CONFIG_SLIP_MODE_SLIP6=y | 621 | CONFIG_SLIP_MODE_SLIP6=y |
508 | CONFIG_SHAPER=m | ||
509 | CONFIG_NETCONSOLE=m | 622 | CONFIG_NETCONSOLE=m |
510 | 623 | CONFIG_NETCONSOLE_DYNAMIC=y | |
511 | # | 624 | CONFIG_NETPOLL=y |
512 | # ISDN subsystem | 625 | # CONFIG_NETPOLL_TRAP is not set |
513 | # | 626 | CONFIG_NET_POLL_CONTROLLER=y |
514 | # CONFIG_ISDN is not set | 627 | # CONFIG_ISDN is not set |
515 | |||
516 | # | ||
517 | # Telephony Support | ||
518 | # | ||
519 | # CONFIG_PHONE is not set | 628 | # CONFIG_PHONE is not set |
520 | 629 | ||
521 | # | 630 | # |
522 | # Input device support | 631 | # Input device support |
523 | # | 632 | # |
524 | CONFIG_INPUT=y | 633 | CONFIG_INPUT=y |
634 | CONFIG_INPUT_FF_MEMLESS=m | ||
635 | # CONFIG_INPUT_POLLDEV is not set | ||
525 | 636 | ||
526 | # | 637 | # |
527 | # Userland interfaces | 638 | # Userland interfaces |
@@ -531,7 +642,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
531 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 642 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
532 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 643 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
533 | # CONFIG_INPUT_JOYDEV is not set | 644 | # CONFIG_INPUT_JOYDEV is not set |
534 | # CONFIG_INPUT_TSDEV is not set | ||
535 | # CONFIG_INPUT_EVDEV is not set | 645 | # CONFIG_INPUT_EVDEV is not set |
536 | # CONFIG_INPUT_EVBUG is not set | 646 | # CONFIG_INPUT_EVBUG is not set |
537 | 647 | ||
@@ -544,22 +654,32 @@ CONFIG_INPUT_KEYBOARD=y | |||
544 | # CONFIG_KEYBOARD_LKKBD is not set | 654 | # CONFIG_KEYBOARD_LKKBD is not set |
545 | # CONFIG_KEYBOARD_XTKBD is not set | 655 | # CONFIG_KEYBOARD_XTKBD is not set |
546 | # CONFIG_KEYBOARD_NEWTON is not set | 656 | # CONFIG_KEYBOARD_NEWTON is not set |
657 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
547 | CONFIG_INPUT_MOUSE=y | 658 | CONFIG_INPUT_MOUSE=y |
548 | CONFIG_MOUSE_PS2=m | 659 | CONFIG_MOUSE_PS2=m |
660 | CONFIG_MOUSE_PS2_ALPS=y | ||
661 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
662 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
663 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
664 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
665 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
549 | CONFIG_MOUSE_SERIAL=m | 666 | CONFIG_MOUSE_SERIAL=m |
550 | # CONFIG_MOUSE_INPORT is not set | 667 | # CONFIG_MOUSE_INPORT is not set |
551 | # CONFIG_MOUSE_LOGIBM is not set | 668 | # CONFIG_MOUSE_LOGIBM is not set |
552 | # CONFIG_MOUSE_PC110PAD is not set | 669 | # CONFIG_MOUSE_PC110PAD is not set |
553 | # CONFIG_MOUSE_VSXXXAA is not set | 670 | # CONFIG_MOUSE_VSXXXAA is not set |
554 | # CONFIG_INPUT_JOYSTICK is not set | 671 | # CONFIG_INPUT_JOYSTICK is not set |
672 | # CONFIG_INPUT_TABLET is not set | ||
555 | # CONFIG_INPUT_TOUCHSCREEN is not set | 673 | # CONFIG_INPUT_TOUCHSCREEN is not set |
556 | # CONFIG_INPUT_MISC is not set | 674 | CONFIG_INPUT_MISC=y |
675 | CONFIG_INPUT_M68K_BEEP=m | ||
676 | # CONFIG_INPUT_UINPUT is not set | ||
557 | 677 | ||
558 | # | 678 | # |
559 | # Hardware I/O ports | 679 | # Hardware I/O ports |
560 | # | 680 | # |
561 | CONFIG_SERIO=m | 681 | CONFIG_SERIO=m |
562 | CONFIG_SERIO_SERPORT=m | 682 | # CONFIG_SERIO_SERPORT is not set |
563 | CONFIG_SERIO_Q40KBD=m | 683 | CONFIG_SERIO_Q40KBD=m |
564 | CONFIG_SERIO_LIBPS2=m | 684 | CONFIG_SERIO_LIBPS2=m |
565 | # CONFIG_SERIO_RAW is not set | 685 | # CONFIG_SERIO_RAW is not set |
@@ -571,6 +691,7 @@ CONFIG_SERIO_LIBPS2=m | |||
571 | CONFIG_VT=y | 691 | CONFIG_VT=y |
572 | CONFIG_VT_CONSOLE=y | 692 | CONFIG_VT_CONSOLE=y |
573 | CONFIG_HW_CONSOLE=y | 693 | CONFIG_HW_CONSOLE=y |
694 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
574 | # CONFIG_SERIAL_NONSTANDARD is not set | 695 | # CONFIG_SERIAL_NONSTANDARD is not set |
575 | 696 | ||
576 | # | 697 | # |
@@ -584,115 +705,117 @@ CONFIG_HW_CONSOLE=y | |||
584 | CONFIG_UNIX98_PTYS=y | 705 | CONFIG_UNIX98_PTYS=y |
585 | CONFIG_LEGACY_PTYS=y | 706 | CONFIG_LEGACY_PTYS=y |
586 | CONFIG_LEGACY_PTY_COUNT=256 | 707 | CONFIG_LEGACY_PTY_COUNT=256 |
587 | |||
588 | # | ||
589 | # IPMI | ||
590 | # | ||
591 | # CONFIG_IPMI_HANDLER is not set | 708 | # CONFIG_IPMI_HANDLER is not set |
592 | 709 | # CONFIG_HW_RANDOM is not set | |
593 | # | ||
594 | # Watchdog Cards | ||
595 | # | ||
596 | # CONFIG_WATCHDOG is not set | ||
597 | CONFIG_GEN_RTC=m | 710 | CONFIG_GEN_RTC=m |
598 | CONFIG_GEN_RTC_X=y | 711 | CONFIG_GEN_RTC_X=y |
599 | # CONFIG_DTLK is not set | 712 | # CONFIG_DTLK is not set |
600 | # CONFIG_R3964 is not set | 713 | # CONFIG_R3964 is not set |
601 | |||
602 | # | ||
603 | # Ftape, the floppy tape device driver | ||
604 | # | ||
605 | # CONFIG_DRM is not set | ||
606 | # CONFIG_RAW_DRIVER is not set | 714 | # CONFIG_RAW_DRIVER is not set |
607 | 715 | # CONFIG_TCG_TPM is not set | |
608 | # | ||
609 | # TPM devices | ||
610 | # | ||
611 | |||
612 | # | ||
613 | # I2C support | ||
614 | # | ||
615 | # CONFIG_I2C is not set | 716 | # CONFIG_I2C is not set |
616 | 717 | ||
617 | # | 718 | # |
618 | # Dallas's 1-wire bus | 719 | # SPI support |
619 | # | 720 | # |
721 | # CONFIG_SPI is not set | ||
722 | # CONFIG_SPI_MASTER is not set | ||
620 | # CONFIG_W1 is not set | 723 | # CONFIG_W1 is not set |
724 | # CONFIG_POWER_SUPPLY is not set | ||
725 | # CONFIG_HWMON is not set | ||
726 | # CONFIG_THERMAL is not set | ||
727 | # CONFIG_WATCHDOG is not set | ||
621 | 728 | ||
622 | # | 729 | # |
623 | # Misc devices | 730 | # Sonics Silicon Backplane |
624 | # | 731 | # |
732 | CONFIG_SSB_POSSIBLE=y | ||
733 | # CONFIG_SSB is not set | ||
625 | 734 | ||
626 | # | 735 | # |
627 | # Multimedia devices | 736 | # Multifunction device drivers |
628 | # | 737 | # |
629 | # CONFIG_VIDEO_DEV is not set | 738 | # CONFIG_MFD_SM501 is not set |
630 | 739 | ||
631 | # | 740 | # |
632 | # Digital Video Broadcasting Devices | 741 | # Multimedia devices |
633 | # | 742 | # |
634 | # CONFIG_DVB is not set | 743 | # CONFIG_VIDEO_DEV is not set |
744 | # CONFIG_DVB_CORE is not set | ||
745 | # CONFIG_DAB is not set | ||
635 | 746 | ||
636 | # | 747 | # |
637 | # Graphics support | 748 | # Graphics support |
638 | # | 749 | # |
750 | # CONFIG_VGASTATE is not set | ||
751 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
639 | CONFIG_FB=y | 752 | CONFIG_FB=y |
753 | # CONFIG_FIRMWARE_EDID is not set | ||
754 | # CONFIG_FB_DDC is not set | ||
640 | CONFIG_FB_CFB_FILLRECT=y | 755 | CONFIG_FB_CFB_FILLRECT=y |
641 | CONFIG_FB_CFB_COPYAREA=y | 756 | CONFIG_FB_CFB_COPYAREA=y |
642 | CONFIG_FB_CFB_IMAGEBLIT=y | 757 | CONFIG_FB_CFB_IMAGEBLIT=y |
643 | CONFIG_FB_SOFT_CURSOR=y | 758 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
759 | # CONFIG_FB_SYS_FILLRECT is not set | ||
760 | # CONFIG_FB_SYS_COPYAREA is not set | ||
761 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
762 | # CONFIG_FB_SYS_FOPS is not set | ||
763 | CONFIG_FB_DEFERRED_IO=y | ||
764 | # CONFIG_FB_SVGALIB is not set | ||
644 | # CONFIG_FB_MACMODES is not set | 765 | # CONFIG_FB_MACMODES is not set |
645 | CONFIG_FB_MODE_HELPERS=y | 766 | # CONFIG_FB_BACKLIGHT is not set |
767 | # CONFIG_FB_MODE_HELPERS is not set | ||
646 | # CONFIG_FB_TILEBLITTING is not set | 768 | # CONFIG_FB_TILEBLITTING is not set |
769 | |||
770 | # | ||
771 | # Frame buffer hardware drivers | ||
772 | # | ||
647 | CONFIG_FB_Q40=y | 773 | CONFIG_FB_Q40=y |
774 | # CONFIG_FB_UVESA is not set | ||
648 | # CONFIG_FB_S1D13XXX is not set | 775 | # CONFIG_FB_S1D13XXX is not set |
649 | # CONFIG_FB_VIRTUAL is not set | 776 | # CONFIG_FB_VIRTUAL is not set |
777 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
778 | |||
779 | # | ||
780 | # Display device support | ||
781 | # | ||
782 | # CONFIG_DISPLAY_SUPPORT is not set | ||
650 | 783 | ||
651 | # | 784 | # |
652 | # Console display driver support | 785 | # Console display driver support |
653 | # | 786 | # |
654 | CONFIG_DUMMY_CONSOLE=y | 787 | CONFIG_DUMMY_CONSOLE=y |
655 | CONFIG_FRAMEBUFFER_CONSOLE=y | 788 | CONFIG_FRAMEBUFFER_CONSOLE=y |
789 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
790 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
656 | # CONFIG_FONTS is not set | 791 | # CONFIG_FONTS is not set |
657 | CONFIG_FONT_8x8=y | 792 | CONFIG_FONT_8x8=y |
658 | CONFIG_FONT_8x16=y | 793 | CONFIG_FONT_8x16=y |
659 | |||
660 | # | ||
661 | # Logo configuration | ||
662 | # | ||
663 | CONFIG_LOGO=y | 794 | CONFIG_LOGO=y |
664 | CONFIG_LOGO_LINUX_MONO=y | 795 | CONFIG_LOGO_LINUX_MONO=y |
665 | CONFIG_LOGO_LINUX_VGA16=y | 796 | CONFIG_LOGO_LINUX_VGA16=y |
666 | CONFIG_LOGO_LINUX_CLUT224=y | 797 | CONFIG_LOGO_LINUX_CLUT224=y |
667 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
668 | 798 | ||
669 | # | 799 | # |
670 | # Sound | 800 | # Sound |
671 | # | 801 | # |
672 | CONFIG_SOUND=y | 802 | CONFIG_SOUND=m |
673 | CONFIG_DMASOUND_Q40=y | 803 | CONFIG_DMASOUND_Q40=m |
674 | CONFIG_DMASOUND=y | 804 | CONFIG_DMASOUND=m |
675 | 805 | CONFIG_HID_SUPPORT=y | |
676 | # | 806 | CONFIG_HID=m |
677 | # USB support | 807 | # CONFIG_HID_DEBUG is not set |
678 | # | 808 | CONFIG_HIDRAW=y |
679 | # CONFIG_USB_ARCH_HAS_HCD is not set | 809 | # CONFIG_USB_SUPPORT is not set |
680 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
681 | |||
682 | # | ||
683 | # USB Gadget Support | ||
684 | # | ||
685 | # CONFIG_USB_GADGET is not set | ||
686 | |||
687 | # | ||
688 | # MMC/SD Card support | ||
689 | # | ||
690 | # CONFIG_MMC is not set | 810 | # CONFIG_MMC is not set |
811 | # CONFIG_MEMSTICK is not set | ||
812 | # CONFIG_NEW_LEDS is not set | ||
813 | # CONFIG_RTC_CLASS is not set | ||
691 | 814 | ||
692 | # | 815 | # |
693 | # InfiniBand support | 816 | # Userspace I/O |
694 | # | 817 | # |
695 | # CONFIG_INFINIBAND is not set | 818 | # CONFIG_UIO is not set |
696 | 819 | ||
697 | # | 820 | # |
698 | # Character devices | 821 | # Character devices |
@@ -703,10 +826,11 @@ CONFIG_DMASOUND=y | |||
703 | # | 826 | # |
704 | CONFIG_EXT2_FS=y | 827 | CONFIG_EXT2_FS=y |
705 | # CONFIG_EXT2_FS_XATTR is not set | 828 | # CONFIG_EXT2_FS_XATTR is not set |
829 | # CONFIG_EXT2_FS_XIP is not set | ||
706 | CONFIG_EXT3_FS=y | 830 | CONFIG_EXT3_FS=y |
707 | # CONFIG_EXT3_FS_XATTR is not set | 831 | # CONFIG_EXT3_FS_XATTR is not set |
832 | # CONFIG_EXT4DEV_FS is not set | ||
708 | CONFIG_JBD=y | 833 | CONFIG_JBD=y |
709 | # CONFIG_JBD_DEBUG is not set | ||
710 | CONFIG_REISERFS_FS=m | 834 | CONFIG_REISERFS_FS=m |
711 | # CONFIG_REISERFS_CHECK is not set | 835 | # CONFIG_REISERFS_CHECK is not set |
712 | # CONFIG_REISERFS_PROC_INFO is not set | 836 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -717,25 +841,29 @@ CONFIG_JFS_FS=m | |||
717 | # CONFIG_JFS_DEBUG is not set | 841 | # CONFIG_JFS_DEBUG is not set |
718 | # CONFIG_JFS_STATISTICS is not set | 842 | # CONFIG_JFS_STATISTICS is not set |
719 | CONFIG_FS_POSIX_ACL=y | 843 | CONFIG_FS_POSIX_ACL=y |
720 | |||
721 | # | ||
722 | # XFS support | ||
723 | # | ||
724 | CONFIG_XFS_FS=m | 844 | CONFIG_XFS_FS=m |
725 | CONFIG_XFS_EXPORT=y | ||
726 | # CONFIG_XFS_RT is not set | ||
727 | # CONFIG_XFS_QUOTA is not set | 845 | # CONFIG_XFS_QUOTA is not set |
728 | # CONFIG_XFS_SECURITY is not set | 846 | # CONFIG_XFS_SECURITY is not set |
729 | # CONFIG_XFS_POSIX_ACL is not set | 847 | # CONFIG_XFS_POSIX_ACL is not set |
730 | CONFIG_MINIX_FS=y | 848 | # CONFIG_XFS_RT is not set |
731 | # CONFIG_ROMFS_FS is not set | 849 | CONFIG_GFS2_FS=m |
850 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
851 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
852 | CONFIG_OCFS2_FS=m | ||
853 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
854 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
855 | CONFIG_DNOTIFY=y | ||
856 | CONFIG_INOTIFY=y | ||
857 | CONFIG_INOTIFY_USER=y | ||
732 | CONFIG_QUOTA=y | 858 | CONFIG_QUOTA=y |
859 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
860 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
733 | # CONFIG_QFMT_V1 is not set | 861 | # CONFIG_QFMT_V1 is not set |
734 | # CONFIG_QFMT_V2 is not set | 862 | # CONFIG_QFMT_V2 is not set |
735 | CONFIG_QUOTACTL=y | 863 | CONFIG_QUOTACTL=y |
736 | CONFIG_DNOTIFY=y | ||
737 | CONFIG_AUTOFS_FS=m | 864 | CONFIG_AUTOFS_FS=m |
738 | CONFIG_AUTOFS4_FS=m | 865 | CONFIG_AUTOFS4_FS=m |
866 | CONFIG_FUSE_FS=m | ||
739 | 867 | ||
740 | # | 868 | # |
741 | # CD-ROM/DVD Filesystems | 869 | # CD-ROM/DVD Filesystems |
@@ -743,7 +871,6 @@ CONFIG_AUTOFS4_FS=m | |||
743 | CONFIG_ISO9660_FS=y | 871 | CONFIG_ISO9660_FS=y |
744 | CONFIG_JOLIET=y | 872 | CONFIG_JOLIET=y |
745 | CONFIG_ZISOFS=y | 873 | CONFIG_ZISOFS=y |
746 | CONFIG_ZISOFS_FS=y | ||
747 | CONFIG_UDF_FS=m | 874 | CONFIG_UDF_FS=m |
748 | CONFIG_UDF_NLS=y | 875 | CONFIG_UDF_NLS=y |
749 | 876 | ||
@@ -762,13 +889,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
762 | # | 889 | # |
763 | CONFIG_PROC_FS=y | 890 | CONFIG_PROC_FS=y |
764 | CONFIG_PROC_KCORE=y | 891 | CONFIG_PROC_KCORE=y |
892 | CONFIG_PROC_SYSCTL=y | ||
765 | CONFIG_SYSFS=y | 893 | CONFIG_SYSFS=y |
766 | # CONFIG_DEVFS_FS is not set | ||
767 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
768 | CONFIG_TMPFS=y | 894 | CONFIG_TMPFS=y |
769 | # CONFIG_TMPFS_XATTR is not set | 895 | # CONFIG_TMPFS_POSIX_ACL is not set |
770 | # CONFIG_HUGETLB_PAGE is not set | 896 | # CONFIG_HUGETLB_PAGE is not set |
771 | CONFIG_RAMFS=y | 897 | CONFIG_CONFIGFS_FS=m |
772 | 898 | ||
773 | # | 899 | # |
774 | # Miscellaneous filesystems | 900 | # Miscellaneous filesystems |
@@ -782,44 +908,39 @@ CONFIG_HFSPLUS_FS=m | |||
782 | # CONFIG_EFS_FS is not set | 908 | # CONFIG_EFS_FS is not set |
783 | CONFIG_CRAMFS=m | 909 | CONFIG_CRAMFS=m |
784 | # CONFIG_VXFS_FS is not set | 910 | # CONFIG_VXFS_FS is not set |
911 | CONFIG_MINIX_FS=y | ||
785 | CONFIG_HPFS_FS=m | 912 | CONFIG_HPFS_FS=m |
786 | # CONFIG_QNX4FS_FS is not set | 913 | # CONFIG_QNX4FS_FS is not set |
914 | # CONFIG_ROMFS_FS is not set | ||
787 | CONFIG_SYSV_FS=m | 915 | CONFIG_SYSV_FS=m |
788 | CONFIG_UFS_FS=m | 916 | CONFIG_UFS_FS=m |
789 | CONFIG_UFS_FS_WRITE=y | 917 | # CONFIG_UFS_FS_WRITE is not set |
790 | 918 | # CONFIG_UFS_DEBUG is not set | |
791 | # | 919 | CONFIG_NETWORK_FILESYSTEMS=y |
792 | # Network File Systems | ||
793 | # | ||
794 | CONFIG_NFS_FS=y | 920 | CONFIG_NFS_FS=y |
795 | CONFIG_NFS_V3=y | 921 | CONFIG_NFS_V3=y |
922 | # CONFIG_NFS_V3_ACL is not set | ||
796 | CONFIG_NFS_V4=y | 923 | CONFIG_NFS_V4=y |
797 | # CONFIG_NFS_DIRECTIO is not set | 924 | # CONFIG_NFS_DIRECTIO is not set |
798 | CONFIG_NFSD=m | 925 | CONFIG_NFSD=m |
799 | CONFIG_NFSD_V3=y | 926 | CONFIG_NFSD_V3=y |
800 | CONFIG_NFSD_V4=y | 927 | # CONFIG_NFSD_V3_ACL is not set |
928 | # CONFIG_NFSD_V4 is not set | ||
801 | CONFIG_NFSD_TCP=y | 929 | CONFIG_NFSD_TCP=y |
802 | CONFIG_ROOT_NFS=y | ||
803 | CONFIG_LOCKD=y | 930 | CONFIG_LOCKD=y |
804 | CONFIG_LOCKD_V4=y | 931 | CONFIG_LOCKD_V4=y |
805 | CONFIG_EXPORTFS=m | 932 | CONFIG_EXPORTFS=m |
933 | CONFIG_NFS_COMMON=y | ||
806 | CONFIG_SUNRPC=y | 934 | CONFIG_SUNRPC=y |
807 | CONFIG_SUNRPC_GSS=y | 935 | CONFIG_SUNRPC_GSS=y |
936 | CONFIG_SUNRPC_BIND34=y | ||
808 | CONFIG_RPCSEC_GSS_KRB5=y | 937 | CONFIG_RPCSEC_GSS_KRB5=y |
809 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 938 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
810 | CONFIG_SMB_FS=m | 939 | CONFIG_SMB_FS=m |
811 | CONFIG_SMB_NLS_DEFAULT=y | 940 | CONFIG_SMB_NLS_DEFAULT=y |
812 | CONFIG_SMB_NLS_REMOTE="cp437" | 941 | CONFIG_SMB_NLS_REMOTE="cp437" |
813 | # CONFIG_CIFS is not set | 942 | # CONFIG_CIFS is not set |
814 | CONFIG_NCP_FS=m | 943 | # CONFIG_NCP_FS is not set |
815 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
816 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
817 | # CONFIG_NCPFS_STRONG is not set | ||
818 | # CONFIG_NCPFS_NFS_NS is not set | ||
819 | # CONFIG_NCPFS_OS2_NS is not set | ||
820 | # CONFIG_NCPFS_SMALLDOS is not set | ||
821 | CONFIG_NCPFS_NLS=y | ||
822 | # CONFIG_NCPFS_EXTRAS is not set | ||
823 | CONFIG_CODA_FS=m | 944 | CONFIG_CODA_FS=m |
824 | # CONFIG_CODA_FS_OLD_API is not set | 945 | # CONFIG_CODA_FS_OLD_API is not set |
825 | # CONFIG_AFS_FS is not set | 946 | # CONFIG_AFS_FS is not set |
@@ -829,10 +950,6 @@ CONFIG_CODA_FS=m | |||
829 | # | 950 | # |
830 | # CONFIG_PARTITION_ADVANCED is not set | 951 | # CONFIG_PARTITION_ADVANCED is not set |
831 | CONFIG_MSDOS_PARTITION=y | 952 | CONFIG_MSDOS_PARTITION=y |
832 | |||
833 | # | ||
834 | # Native Language Support | ||
835 | # | ||
836 | CONFIG_NLS=y | 953 | CONFIG_NLS=y |
837 | CONFIG_NLS_DEFAULT="iso8859-1" | 954 | CONFIG_NLS_DEFAULT="iso8859-1" |
838 | CONFIG_NLS_CODEPAGE_437=y | 955 | CONFIG_NLS_CODEPAGE_437=y |
@@ -873,35 +990,42 @@ CONFIG_NLS_ISO8859_15=m | |||
873 | CONFIG_NLS_KOI8_R=m | 990 | CONFIG_NLS_KOI8_R=m |
874 | CONFIG_NLS_KOI8_U=m | 991 | CONFIG_NLS_KOI8_U=m |
875 | CONFIG_NLS_UTF8=m | 992 | CONFIG_NLS_UTF8=m |
993 | CONFIG_DLM=m | ||
994 | # CONFIG_DLM_DEBUG is not set | ||
876 | 995 | ||
877 | # | 996 | # |
878 | # Kernel hacking | 997 | # Kernel hacking |
879 | # | 998 | # |
880 | # CONFIG_PRINTK_TIME is not set | 999 | # CONFIG_PRINTK_TIME is not set |
881 | CONFIG_DEBUG_KERNEL=y | 1000 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1001 | CONFIG_ENABLE_MUST_CHECK=y | ||
882 | CONFIG_MAGIC_SYSRQ=y | 1002 | CONFIG_MAGIC_SYSRQ=y |
883 | CONFIG_LOG_BUF_SHIFT=16 | 1003 | # CONFIG_UNUSED_SYMBOLS is not set |
884 | # CONFIG_SCHEDSTATS is not set | ||
885 | # CONFIG_DEBUG_SLAB is not set | ||
886 | # CONFIG_DEBUG_SPINLOCK is not set | ||
887 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
888 | # CONFIG_DEBUG_KOBJECT is not set | ||
889 | CONFIG_DEBUG_BUGVERBOSE=y | ||
890 | # CONFIG_DEBUG_INFO is not set | ||
891 | # CONFIG_DEBUG_FS is not set | 1004 | # CONFIG_DEBUG_FS is not set |
892 | # CONFIG_FRAME_POINTER is not set | 1005 | # CONFIG_HEADERS_CHECK is not set |
1006 | # CONFIG_DEBUG_KERNEL is not set | ||
1007 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1008 | # CONFIG_SAMPLES is not set | ||
893 | 1009 | ||
894 | # | 1010 | # |
895 | # Security options | 1011 | # Security options |
896 | # | 1012 | # |
897 | # CONFIG_KEYS is not set | 1013 | # CONFIG_KEYS is not set |
898 | # CONFIG_SECURITY is not set | 1014 | # CONFIG_SECURITY is not set |
899 | 1015 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
900 | # | 1016 | CONFIG_XOR_BLOCKS=m |
901 | # Cryptographic options | 1017 | CONFIG_ASYNC_CORE=m |
902 | # | 1018 | CONFIG_ASYNC_MEMCPY=m |
1019 | CONFIG_ASYNC_XOR=m | ||
903 | CONFIG_CRYPTO=y | 1020 | CONFIG_CRYPTO=y |
1021 | CONFIG_CRYPTO_ALGAPI=y | ||
1022 | CONFIG_CRYPTO_AEAD=m | ||
1023 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1024 | CONFIG_CRYPTO_SEQIV=m | ||
1025 | CONFIG_CRYPTO_HASH=y | ||
1026 | CONFIG_CRYPTO_MANAGER=y | ||
904 | CONFIG_CRYPTO_HMAC=y | 1027 | CONFIG_CRYPTO_HMAC=y |
1028 | CONFIG_CRYPTO_XCBC=m | ||
905 | CONFIG_CRYPTO_NULL=m | 1029 | CONFIG_CRYPTO_NULL=m |
906 | CONFIG_CRYPTO_MD4=m | 1030 | CONFIG_CRYPTO_MD4=m |
907 | CONFIG_CRYPTO_MD5=y | 1031 | CONFIG_CRYPTO_MD5=y |
@@ -910,9 +1034,21 @@ CONFIG_CRYPTO_SHA256=m | |||
910 | CONFIG_CRYPTO_SHA512=m | 1034 | CONFIG_CRYPTO_SHA512=m |
911 | CONFIG_CRYPTO_WP512=m | 1035 | CONFIG_CRYPTO_WP512=m |
912 | CONFIG_CRYPTO_TGR192=m | 1036 | CONFIG_CRYPTO_TGR192=m |
1037 | CONFIG_CRYPTO_GF128MUL=m | ||
1038 | CONFIG_CRYPTO_ECB=m | ||
1039 | CONFIG_CRYPTO_CBC=y | ||
1040 | CONFIG_CRYPTO_PCBC=m | ||
1041 | CONFIG_CRYPTO_LRW=m | ||
1042 | CONFIG_CRYPTO_XTS=m | ||
1043 | CONFIG_CRYPTO_CTR=m | ||
1044 | CONFIG_CRYPTO_GCM=m | ||
1045 | CONFIG_CRYPTO_CCM=m | ||
1046 | CONFIG_CRYPTO_CRYPTD=m | ||
913 | CONFIG_CRYPTO_DES=y | 1047 | CONFIG_CRYPTO_DES=y |
1048 | CONFIG_CRYPTO_FCRYPT=m | ||
914 | CONFIG_CRYPTO_BLOWFISH=m | 1049 | CONFIG_CRYPTO_BLOWFISH=m |
915 | CONFIG_CRYPTO_TWOFISH=m | 1050 | CONFIG_CRYPTO_TWOFISH=m |
1051 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
916 | CONFIG_CRYPTO_SERPENT=m | 1052 | CONFIG_CRYPTO_SERPENT=m |
917 | CONFIG_CRYPTO_AES=m | 1053 | CONFIG_CRYPTO_AES=m |
918 | CONFIG_CRYPTO_CAST5=m | 1054 | CONFIG_CRYPTO_CAST5=m |
@@ -921,20 +1057,35 @@ CONFIG_CRYPTO_TEA=m | |||
921 | CONFIG_CRYPTO_ARC4=m | 1057 | CONFIG_CRYPTO_ARC4=m |
922 | CONFIG_CRYPTO_KHAZAD=m | 1058 | CONFIG_CRYPTO_KHAZAD=m |
923 | CONFIG_CRYPTO_ANUBIS=m | 1059 | CONFIG_CRYPTO_ANUBIS=m |
1060 | CONFIG_CRYPTO_SEED=m | ||
1061 | CONFIG_CRYPTO_SALSA20=m | ||
924 | CONFIG_CRYPTO_DEFLATE=m | 1062 | CONFIG_CRYPTO_DEFLATE=m |
925 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1063 | CONFIG_CRYPTO_MICHAEL_MIC=m |
926 | CONFIG_CRYPTO_CRC32C=m | 1064 | CONFIG_CRYPTO_CRC32C=m |
1065 | CONFIG_CRYPTO_CAMELLIA=m | ||
927 | CONFIG_CRYPTO_TEST=m | 1066 | CONFIG_CRYPTO_TEST=m |
928 | 1067 | CONFIG_CRYPTO_AUTHENC=m | |
929 | # | 1068 | CONFIG_CRYPTO_LZO=m |
930 | # Hardware crypto devices | 1069 | # CONFIG_CRYPTO_HW is not set |
931 | # | ||
932 | 1070 | ||
933 | # | 1071 | # |
934 | # Library routines | 1072 | # Library routines |
935 | # | 1073 | # |
1074 | CONFIG_BITREVERSE=y | ||
936 | CONFIG_CRC_CCITT=m | 1075 | CONFIG_CRC_CCITT=m |
1076 | CONFIG_CRC16=m | ||
1077 | # CONFIG_CRC_ITU_T is not set | ||
937 | CONFIG_CRC32=y | 1078 | CONFIG_CRC32=y |
1079 | # CONFIG_CRC7 is not set | ||
938 | CONFIG_LIBCRC32C=m | 1080 | CONFIG_LIBCRC32C=m |
939 | CONFIG_ZLIB_INFLATE=y | 1081 | CONFIG_ZLIB_INFLATE=y |
940 | CONFIG_ZLIB_DEFLATE=m | 1082 | CONFIG_ZLIB_DEFLATE=m |
1083 | CONFIG_LZO_COMPRESS=m | ||
1084 | CONFIG_LZO_DECOMPRESS=m | ||
1085 | CONFIG_TEXTSEARCH=y | ||
1086 | CONFIG_TEXTSEARCH_KMP=m | ||
1087 | CONFIG_TEXTSEARCH_BM=m | ||
1088 | CONFIG_TEXTSEARCH_FSM=m | ||
1089 | CONFIG_PLIST=y | ||
1090 | CONFIG_HAS_IOMEM=y | ||
1091 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig index af903b5c5708..bd2b9c4927c4 100644 --- a/arch/m68k/configs/sun3_defconfig +++ b/arch/m68k/configs/sun3_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:35:02 2005 | 4 | # Wed Apr 2 20:46:22 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | CONFIG_NO_DMA=y | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-sun3" | 27 | CONFIG_LOCALVERSION="-sun3" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -69,10 +117,24 @@ CONFIG_SUN3=y | |||
69 | # | 117 | # |
70 | CONFIG_M68020=y | 118 | CONFIG_M68020=y |
71 | CONFIG_MMU_SUN3=y | 119 | CONFIG_MMU_SUN3=y |
72 | CONFIG_M68KFPU_EMU=y | 120 | # CONFIG_M68KFPU_EMU is not set |
73 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
74 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
75 | # CONFIG_ADVANCED is not set | 121 | # CONFIG_ADVANCED is not set |
122 | CONFIG_SINGLE_MEMORY_CHUNK=y | ||
123 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
124 | CONFIG_SELECT_MEMORY_MODEL=y | ||
125 | CONFIG_FLATMEM_MANUAL=y | ||
126 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
127 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
128 | CONFIG_FLATMEM=y | ||
129 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
130 | CONFIG_NEED_MULTIPLE_NODES=y | ||
131 | # CONFIG_SPARSEMEM_STATIC is not set | ||
132 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
133 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
134 | # CONFIG_RESOURCES_64BIT is not set | ||
135 | CONFIG_ZONE_DMA_FLAG=1 | ||
136 | CONFIG_BOUNCE=y | ||
137 | CONFIG_VIRT_TO_BUS=y | ||
76 | 138 | ||
77 | # | 139 | # |
78 | # General setup | 140 | # General setup |
@@ -81,134 +143,11 @@ CONFIG_BINFMT_ELF=y | |||
81 | CONFIG_BINFMT_AOUT=m | 143 | CONFIG_BINFMT_AOUT=m |
82 | CONFIG_BINFMT_MISC=m | 144 | CONFIG_BINFMT_MISC=m |
83 | CONFIG_PROC_HARDWARE=y | 145 | CONFIG_PROC_HARDWARE=y |
146 | CONFIG_ZONE_DMA=y | ||
147 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
84 | 148 | ||
85 | # | 149 | # |
86 | # Device Drivers | 150 | # Networking |
87 | # | ||
88 | |||
89 | # | ||
90 | # Generic Driver Options | ||
91 | # | ||
92 | CONFIG_STANDALONE=y | ||
93 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
94 | CONFIG_FW_LOADER=m | ||
95 | # CONFIG_DEBUG_DRIVER is not set | ||
96 | |||
97 | # | ||
98 | # Memory Technology Devices (MTD) | ||
99 | # | ||
100 | # CONFIG_MTD is not set | ||
101 | |||
102 | # | ||
103 | # Parallel port support | ||
104 | # | ||
105 | # CONFIG_PARPORT is not set | ||
106 | |||
107 | # | ||
108 | # Plug and Play support | ||
109 | # | ||
110 | |||
111 | # | ||
112 | # Block devices | ||
113 | # | ||
114 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
115 | CONFIG_BLK_DEV_LOOP=y | ||
116 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
117 | CONFIG_BLK_DEV_NBD=m | ||
118 | CONFIG_BLK_DEV_RAM=y | ||
119 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
120 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
121 | CONFIG_BLK_DEV_INITRD=y | ||
122 | CONFIG_INITRAMFS_SOURCE="" | ||
123 | CONFIG_CDROM_PKTCDVD=m | ||
124 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
125 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
126 | |||
127 | # | ||
128 | # IO Schedulers | ||
129 | # | ||
130 | CONFIG_IOSCHED_NOOP=y | ||
131 | CONFIG_IOSCHED_AS=y | ||
132 | CONFIG_IOSCHED_DEADLINE=y | ||
133 | CONFIG_IOSCHED_CFQ=y | ||
134 | CONFIG_ATA_OVER_ETH=m | ||
135 | |||
136 | # | ||
137 | # ATA/ATAPI/MFM/RLL support | ||
138 | # | ||
139 | # CONFIG_IDE is not set | ||
140 | |||
141 | # | ||
142 | # SCSI device support | ||
143 | # | ||
144 | CONFIG_SCSI=y | ||
145 | CONFIG_SCSI_PROC_FS=y | ||
146 | |||
147 | # | ||
148 | # SCSI support type (disk, tape, CD-ROM) | ||
149 | # | ||
150 | CONFIG_BLK_DEV_SD=y | ||
151 | CONFIG_CHR_DEV_ST=m | ||
152 | # CONFIG_CHR_DEV_OSST is not set | ||
153 | CONFIG_BLK_DEV_SR=y | ||
154 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
155 | CONFIG_CHR_DEV_SG=m | ||
156 | |||
157 | # | ||
158 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
159 | # | ||
160 | # CONFIG_SCSI_MULTI_LUN is not set | ||
161 | CONFIG_SCSI_CONSTANTS=y | ||
162 | # CONFIG_SCSI_LOGGING is not set | ||
163 | |||
164 | # | ||
165 | # SCSI Transport Attributes | ||
166 | # | ||
167 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
168 | # CONFIG_SCSI_FC_ATTRS is not set | ||
169 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
170 | |||
171 | # | ||
172 | # SCSI low-level drivers | ||
173 | # | ||
174 | # CONFIG_SCSI_SATA is not set | ||
175 | # CONFIG_SCSI_DEBUG is not set | ||
176 | |||
177 | # | ||
178 | # Multi-device support (RAID and LVM) | ||
179 | # | ||
180 | CONFIG_MD=y | ||
181 | CONFIG_BLK_DEV_MD=m | ||
182 | CONFIG_MD_LINEAR=m | ||
183 | CONFIG_MD_RAID0=m | ||
184 | CONFIG_MD_RAID1=m | ||
185 | # CONFIG_MD_RAID10 is not set | ||
186 | CONFIG_MD_RAID5=m | ||
187 | CONFIG_MD_RAID6=m | ||
188 | CONFIG_MD_MULTIPATH=m | ||
189 | # CONFIG_MD_FAULTY is not set | ||
190 | CONFIG_BLK_DEV_DM=m | ||
191 | CONFIG_DM_CRYPT=m | ||
192 | CONFIG_DM_SNAPSHOT=m | ||
193 | CONFIG_DM_MIRROR=m | ||
194 | CONFIG_DM_ZERO=m | ||
195 | CONFIG_DM_MULTIPATH=m | ||
196 | CONFIG_DM_MULTIPATH_EMC=m | ||
197 | |||
198 | # | ||
199 | # Fusion MPT device support | ||
200 | # | ||
201 | |||
202 | # | ||
203 | # IEEE 1394 (FireWire) support | ||
204 | # | ||
205 | |||
206 | # | ||
207 | # I2O device support | ||
208 | # | ||
209 | |||
210 | # | ||
211 | # Networking support | ||
212 | # | 151 | # |
213 | CONFIG_NET=y | 152 | CONFIG_NET=y |
214 | 153 | ||
@@ -218,10 +157,17 @@ CONFIG_NET=y | |||
218 | CONFIG_PACKET=y | 157 | CONFIG_PACKET=y |
219 | # CONFIG_PACKET_MMAP is not set | 158 | # CONFIG_PACKET_MMAP is not set |
220 | CONFIG_UNIX=y | 159 | CONFIG_UNIX=y |
160 | CONFIG_XFRM=y | ||
161 | # CONFIG_XFRM_USER is not set | ||
162 | # CONFIG_XFRM_SUB_POLICY is not set | ||
163 | CONFIG_XFRM_MIGRATE=y | ||
164 | # CONFIG_XFRM_STATISTICS is not set | ||
221 | CONFIG_NET_KEY=y | 165 | CONFIG_NET_KEY=y |
166 | CONFIG_NET_KEY_MIGRATE=y | ||
222 | CONFIG_INET=y | 167 | CONFIG_INET=y |
223 | # CONFIG_IP_MULTICAST is not set | 168 | # CONFIG_IP_MULTICAST is not set |
224 | # CONFIG_IP_ADVANCED_ROUTER is not set | 169 | # CONFIG_IP_ADVANCED_ROUTER is not set |
170 | CONFIG_IP_FIB_HASH=y | ||
225 | CONFIG_IP_PNP=y | 171 | CONFIG_IP_PNP=y |
226 | CONFIG_IP_PNP_DHCP=y | 172 | CONFIG_IP_PNP_DHCP=y |
227 | CONFIG_IP_PNP_BOOTP=y | 173 | CONFIG_IP_PNP_BOOTP=y |
@@ -233,145 +179,199 @@ CONFIG_SYN_COOKIES=y | |||
233 | CONFIG_INET_AH=m | 179 | CONFIG_INET_AH=m |
234 | CONFIG_INET_ESP=m | 180 | CONFIG_INET_ESP=m |
235 | CONFIG_INET_IPCOMP=m | 181 | CONFIG_INET_IPCOMP=m |
182 | CONFIG_INET_XFRM_TUNNEL=m | ||
236 | CONFIG_INET_TUNNEL=m | 183 | CONFIG_INET_TUNNEL=m |
237 | CONFIG_IP_TCPDIAG=m | 184 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
238 | CONFIG_IP_TCPDIAG_IPV6=y | 185 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
239 | 186 | CONFIG_INET_XFRM_MODE_BEET=m | |
240 | # | 187 | CONFIG_INET_LRO=m |
241 | # IP: Virtual Server Configuration | 188 | CONFIG_INET_DIAG=m |
242 | # | 189 | CONFIG_INET_TCP_DIAG=m |
190 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
191 | CONFIG_TCP_CONG_CUBIC=y | ||
192 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
193 | # CONFIG_TCP_MD5SIG is not set | ||
243 | # CONFIG_IP_VS is not set | 194 | # CONFIG_IP_VS is not set |
244 | CONFIG_IPV6=m | 195 | CONFIG_IPV6=m |
245 | CONFIG_IPV6_PRIVACY=y | 196 | CONFIG_IPV6_PRIVACY=y |
197 | CONFIG_IPV6_ROUTER_PREF=y | ||
198 | CONFIG_IPV6_ROUTE_INFO=y | ||
199 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
246 | CONFIG_INET6_AH=m | 200 | CONFIG_INET6_AH=m |
247 | CONFIG_INET6_ESP=m | 201 | CONFIG_INET6_ESP=m |
248 | CONFIG_INET6_IPCOMP=m | 202 | CONFIG_INET6_IPCOMP=m |
203 | # CONFIG_IPV6_MIP6 is not set | ||
204 | CONFIG_INET6_XFRM_TUNNEL=m | ||
249 | CONFIG_INET6_TUNNEL=m | 205 | CONFIG_INET6_TUNNEL=m |
206 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
207 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
208 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
209 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
210 | CONFIG_IPV6_SIT=m | ||
250 | CONFIG_IPV6_TUNNEL=m | 211 | CONFIG_IPV6_TUNNEL=m |
212 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
213 | # CONFIG_NETWORK_SECMARK is not set | ||
251 | CONFIG_NETFILTER=y | 214 | CONFIG_NETFILTER=y |
252 | # CONFIG_NETFILTER_DEBUG is not set | 215 | # CONFIG_NETFILTER_DEBUG is not set |
216 | CONFIG_NETFILTER_ADVANCED=y | ||
217 | |||
218 | # | ||
219 | # Core Netfilter Configuration | ||
220 | # | ||
221 | CONFIG_NETFILTER_NETLINK=m | ||
222 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
223 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
224 | CONFIG_NF_CONNTRACK=m | ||
225 | CONFIG_NF_CT_ACCT=y | ||
226 | CONFIG_NF_CONNTRACK_MARK=y | ||
227 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
228 | CONFIG_NF_CT_PROTO_GRE=m | ||
229 | CONFIG_NF_CT_PROTO_SCTP=m | ||
230 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
231 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
232 | CONFIG_NF_CONNTRACK_FTP=m | ||
233 | CONFIG_NF_CONNTRACK_H323=m | ||
234 | CONFIG_NF_CONNTRACK_IRC=m | ||
235 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
236 | CONFIG_NF_CONNTRACK_PPTP=m | ||
237 | CONFIG_NF_CONNTRACK_SANE=m | ||
238 | CONFIG_NF_CONNTRACK_SIP=m | ||
239 | CONFIG_NF_CONNTRACK_TFTP=m | ||
240 | # CONFIG_NF_CT_NETLINK is not set | ||
241 | CONFIG_NETFILTER_XTABLES=m | ||
242 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
243 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
244 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
245 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
246 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
247 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
248 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
249 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
250 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
251 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
252 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
253 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
254 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
255 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
256 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
257 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
258 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
259 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
260 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
261 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
262 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
263 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
264 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
265 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
253 | 282 | ||
254 | # | 283 | # |
255 | # IP: Netfilter Configuration | 284 | # IP: Netfilter Configuration |
256 | # | 285 | # |
257 | CONFIG_IP_NF_CONNTRACK=m | 286 | CONFIG_NF_CONNTRACK_IPV4=m |
258 | # CONFIG_IP_NF_CT_ACCT is not set | 287 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
259 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
260 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
261 | CONFIG_IP_NF_FTP=m | ||
262 | CONFIG_IP_NF_IRC=m | ||
263 | CONFIG_IP_NF_TFTP=m | ||
264 | CONFIG_IP_NF_AMANDA=m | ||
265 | CONFIG_IP_NF_QUEUE=m | 288 | CONFIG_IP_NF_QUEUE=m |
266 | CONFIG_IP_NF_IPTABLES=m | 289 | CONFIG_IP_NF_IPTABLES=m |
267 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
268 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
269 | CONFIG_IP_NF_MATCH_MAC=m | ||
270 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
271 | CONFIG_IP_NF_MATCH_MARK=m | ||
272 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
273 | CONFIG_IP_NF_MATCH_TOS=m | ||
274 | CONFIG_IP_NF_MATCH_RECENT=m | 290 | CONFIG_IP_NF_MATCH_RECENT=m |
275 | CONFIG_IP_NF_MATCH_ECN=m | 291 | CONFIG_IP_NF_MATCH_ECN=m |
276 | CONFIG_IP_NF_MATCH_DSCP=m | 292 | CONFIG_IP_NF_MATCH_AH=m |
277 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
278 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
279 | CONFIG_IP_NF_MATCH_TTL=m | 293 | CONFIG_IP_NF_MATCH_TTL=m |
280 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
281 | CONFIG_IP_NF_MATCH_HELPER=m | ||
282 | CONFIG_IP_NF_MATCH_STATE=m | ||
283 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
284 | CONFIG_IP_NF_MATCH_OWNER=m | ||
285 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 294 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
286 | CONFIG_IP_NF_MATCH_REALM=m | ||
287 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
288 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
289 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
290 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
291 | CONFIG_IP_NF_FILTER=m | 295 | CONFIG_IP_NF_FILTER=m |
292 | CONFIG_IP_NF_TARGET_REJECT=m | 296 | CONFIG_IP_NF_TARGET_REJECT=m |
293 | CONFIG_IP_NF_TARGET_LOG=m | 297 | CONFIG_IP_NF_TARGET_LOG=m |
294 | CONFIG_IP_NF_TARGET_ULOG=m | 298 | CONFIG_IP_NF_TARGET_ULOG=m |
295 | CONFIG_IP_NF_TARGET_TCPMSS=m | 299 | CONFIG_NF_NAT=m |
296 | CONFIG_IP_NF_NAT=m | 300 | CONFIG_NF_NAT_NEEDED=y |
297 | CONFIG_IP_NF_NAT_NEEDED=y | ||
298 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 301 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
299 | CONFIG_IP_NF_TARGET_REDIRECT=m | 302 | CONFIG_IP_NF_TARGET_REDIRECT=m |
300 | CONFIG_IP_NF_TARGET_NETMAP=m | 303 | CONFIG_IP_NF_TARGET_NETMAP=m |
301 | CONFIG_IP_NF_TARGET_SAME=m | 304 | CONFIG_NF_NAT_SNMP_BASIC=m |
302 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 305 | CONFIG_NF_NAT_PROTO_GRE=m |
303 | CONFIG_IP_NF_NAT_IRC=m | 306 | CONFIG_NF_NAT_FTP=m |
304 | CONFIG_IP_NF_NAT_FTP=m | 307 | CONFIG_NF_NAT_IRC=m |
305 | CONFIG_IP_NF_NAT_TFTP=m | 308 | CONFIG_NF_NAT_TFTP=m |
306 | CONFIG_IP_NF_NAT_AMANDA=m | 309 | CONFIG_NF_NAT_AMANDA=m |
310 | CONFIG_NF_NAT_PPTP=m | ||
311 | CONFIG_NF_NAT_H323=m | ||
312 | CONFIG_NF_NAT_SIP=m | ||
307 | CONFIG_IP_NF_MANGLE=m | 313 | CONFIG_IP_NF_MANGLE=m |
308 | CONFIG_IP_NF_TARGET_TOS=m | ||
309 | CONFIG_IP_NF_TARGET_ECN=m | 314 | CONFIG_IP_NF_TARGET_ECN=m |
310 | CONFIG_IP_NF_TARGET_DSCP=m | 315 | CONFIG_IP_NF_TARGET_TTL=m |
311 | CONFIG_IP_NF_TARGET_MARK=m | 316 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
312 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
313 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
314 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
315 | CONFIG_IP_NF_RAW=m | 317 | CONFIG_IP_NF_RAW=m |
316 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
317 | CONFIG_IP_NF_ARPTABLES=m | 318 | CONFIG_IP_NF_ARPTABLES=m |
318 | CONFIG_IP_NF_ARPFILTER=m | 319 | CONFIG_IP_NF_ARPFILTER=m |
319 | CONFIG_IP_NF_ARP_MANGLE=m | 320 | CONFIG_IP_NF_ARP_MANGLE=m |
320 | 321 | ||
321 | # | 322 | # |
322 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 323 | # IPv6: Netfilter Configuration |
323 | # | 324 | # |
325 | CONFIG_NF_CONNTRACK_IPV6=m | ||
324 | CONFIG_IP6_NF_QUEUE=m | 326 | CONFIG_IP6_NF_QUEUE=m |
325 | CONFIG_IP6_NF_IPTABLES=m | 327 | CONFIG_IP6_NF_IPTABLES=m |
326 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
327 | CONFIG_IP6_NF_MATCH_MAC=m | ||
328 | CONFIG_IP6_NF_MATCH_RT=m | 328 | CONFIG_IP6_NF_MATCH_RT=m |
329 | CONFIG_IP6_NF_MATCH_OPTS=m | 329 | CONFIG_IP6_NF_MATCH_OPTS=m |
330 | CONFIG_IP6_NF_MATCH_FRAG=m | 330 | CONFIG_IP6_NF_MATCH_FRAG=m |
331 | CONFIG_IP6_NF_MATCH_HL=m | 331 | CONFIG_IP6_NF_MATCH_HL=m |
332 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
333 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
334 | CONFIG_IP6_NF_MATCH_MARK=m | ||
335 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 332 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
336 | CONFIG_IP6_NF_MATCH_AHESP=m | 333 | CONFIG_IP6_NF_MATCH_AH=m |
337 | CONFIG_IP6_NF_MATCH_LENGTH=m | 334 | CONFIG_IP6_NF_MATCH_MH=m |
338 | CONFIG_IP6_NF_MATCH_EUI64=m | 335 | CONFIG_IP6_NF_MATCH_EUI64=m |
339 | CONFIG_IP6_NF_FILTER=m | 336 | CONFIG_IP6_NF_FILTER=m |
340 | CONFIG_IP6_NF_TARGET_LOG=m | 337 | CONFIG_IP6_NF_TARGET_LOG=m |
338 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
341 | CONFIG_IP6_NF_MANGLE=m | 339 | CONFIG_IP6_NF_MANGLE=m |
342 | CONFIG_IP6_NF_TARGET_MARK=m | 340 | CONFIG_IP6_NF_TARGET_HL=m |
343 | CONFIG_IP6_NF_RAW=m | 341 | CONFIG_IP6_NF_RAW=m |
344 | CONFIG_XFRM=y | 342 | CONFIG_IP_DCCP=m |
345 | # CONFIG_XFRM_USER is not set | 343 | CONFIG_INET_DCCP_DIAG=m |
344 | CONFIG_IP_DCCP_ACKVEC=y | ||
346 | 345 | ||
347 | # | 346 | # |
348 | # SCTP Configuration (EXPERIMENTAL) | 347 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
349 | # | 348 | # |
349 | CONFIG_IP_DCCP_CCID2=m | ||
350 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
351 | CONFIG_IP_DCCP_CCID3=m | ||
352 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
353 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
354 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
350 | CONFIG_IP_SCTP=m | 355 | CONFIG_IP_SCTP=m |
351 | # CONFIG_SCTP_DBG_MSG is not set | 356 | # CONFIG_SCTP_DBG_MSG is not set |
352 | # CONFIG_SCTP_DBG_OBJCNT is not set | 357 | # CONFIG_SCTP_DBG_OBJCNT is not set |
353 | # CONFIG_SCTP_HMAC_NONE is not set | 358 | # CONFIG_SCTP_HMAC_NONE is not set |
354 | # CONFIG_SCTP_HMAC_SHA1 is not set | 359 | # CONFIG_SCTP_HMAC_SHA1 is not set |
355 | CONFIG_SCTP_HMAC_MD5=y | 360 | CONFIG_SCTP_HMAC_MD5=y |
361 | # CONFIG_TIPC is not set | ||
356 | # CONFIG_ATM is not set | 362 | # CONFIG_ATM is not set |
357 | # CONFIG_BRIDGE is not set | 363 | # CONFIG_BRIDGE is not set |
358 | # CONFIG_VLAN_8021Q is not set | 364 | # CONFIG_VLAN_8021Q is not set |
359 | # CONFIG_DECNET is not set | 365 | # CONFIG_DECNET is not set |
360 | CONFIG_LLC=m | 366 | CONFIG_LLC=m |
361 | # CONFIG_LLC2 is not set | 367 | # CONFIG_LLC2 is not set |
362 | CONFIG_IPX=m | 368 | # CONFIG_IPX is not set |
363 | # CONFIG_IPX_INTERN is not set | ||
364 | CONFIG_ATALK=m | 369 | CONFIG_ATALK=m |
365 | # CONFIG_DEV_APPLETALK is not set | 370 | # CONFIG_DEV_APPLETALK is not set |
366 | # CONFIG_X25 is not set | 371 | # CONFIG_X25 is not set |
367 | # CONFIG_LAPB is not set | 372 | # CONFIG_LAPB is not set |
368 | # CONFIG_NET_DIVERT is not set | ||
369 | # CONFIG_ECONET is not set | 373 | # CONFIG_ECONET is not set |
370 | # CONFIG_WAN_ROUTER is not set | 374 | # CONFIG_WAN_ROUTER is not set |
371 | |||
372 | # | ||
373 | # QoS and/or fair queueing | ||
374 | # | ||
375 | # CONFIG_NET_SCHED is not set | 375 | # CONFIG_NET_SCHED is not set |
376 | CONFIG_NET_CLS_ROUTE=y | 376 | CONFIG_NET_CLS_ROUTE=y |
377 | 377 | ||
@@ -379,47 +379,156 @@ CONFIG_NET_CLS_ROUTE=y | |||
379 | # Network testing | 379 | # Network testing |
380 | # | 380 | # |
381 | # CONFIG_NET_PKTGEN is not set | 381 | # CONFIG_NET_PKTGEN is not set |
382 | CONFIG_NETPOLL=y | ||
383 | # CONFIG_NETPOLL_RX is not set | ||
384 | # CONFIG_NETPOLL_TRAP is not set | ||
385 | CONFIG_NET_POLL_CONTROLLER=y | ||
386 | # CONFIG_HAMRADIO is not set | 382 | # CONFIG_HAMRADIO is not set |
383 | # CONFIG_CAN is not set | ||
387 | # CONFIG_IRDA is not set | 384 | # CONFIG_IRDA is not set |
388 | # CONFIG_BT is not set | 385 | # CONFIG_BT is not set |
389 | CONFIG_NETDEVICES=y | 386 | # CONFIG_AF_RXRPC is not set |
390 | CONFIG_DUMMY=m | ||
391 | # CONFIG_BONDING is not set | ||
392 | CONFIG_EQUALIZER=m | ||
393 | # CONFIG_TUN is not set | ||
394 | 387 | ||
395 | # | 388 | # |
396 | # Ethernet (10 or 100Mbit) | 389 | # Wireless |
397 | # | 390 | # |
398 | CONFIG_NET_ETHERNET=y | 391 | # CONFIG_CFG80211 is not set |
399 | CONFIG_MII=m | 392 | CONFIG_WIRELESS_EXT=y |
400 | CONFIG_SUN3LANCE=y | 393 | # CONFIG_MAC80211 is not set |
401 | CONFIG_SUN3_82586=y | 394 | CONFIG_IEEE80211=m |
395 | # CONFIG_IEEE80211_DEBUG is not set | ||
396 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
397 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
398 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
399 | CONFIG_IEEE80211_SOFTMAC=m | ||
400 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
401 | # CONFIG_RFKILL is not set | ||
402 | # CONFIG_NET_9P is not set | ||
402 | 403 | ||
403 | # | 404 | # |
404 | # Ethernet (1000 Mbit) | 405 | # Device Drivers |
405 | # | 406 | # |
406 | 407 | ||
407 | # | 408 | # |
408 | # Ethernet (10000 Mbit) | 409 | # Generic Driver Options |
409 | # | 410 | # |
411 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
412 | CONFIG_STANDALONE=y | ||
413 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
414 | CONFIG_FW_LOADER=m | ||
415 | # CONFIG_SYS_HYPERVISOR is not set | ||
416 | CONFIG_CONNECTOR=m | ||
417 | # CONFIG_MTD is not set | ||
418 | # CONFIG_PARPORT is not set | ||
419 | CONFIG_BLK_DEV=y | ||
420 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
421 | CONFIG_BLK_DEV_LOOP=y | ||
422 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
423 | CONFIG_BLK_DEV_NBD=m | ||
424 | CONFIG_BLK_DEV_RAM=y | ||
425 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
426 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
427 | # CONFIG_BLK_DEV_XIP is not set | ||
428 | CONFIG_CDROM_PKTCDVD=m | ||
429 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
430 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
431 | CONFIG_ATA_OVER_ETH=m | ||
432 | CONFIG_MISC_DEVICES=y | ||
433 | # CONFIG_EEPROM_93CX6 is not set | ||
434 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
435 | CONFIG_HAVE_IDE=y | ||
436 | # CONFIG_IDE is not set | ||
410 | 437 | ||
411 | # | 438 | # |
412 | # Token Ring devices | 439 | # SCSI device support |
413 | # | 440 | # |
441 | CONFIG_RAID_ATTRS=m | ||
442 | CONFIG_SCSI=y | ||
443 | # CONFIG_SCSI_DMA is not set | ||
444 | CONFIG_SCSI_TGT=m | ||
445 | # CONFIG_SCSI_NETLINK is not set | ||
446 | CONFIG_SCSI_PROC_FS=y | ||
414 | 447 | ||
415 | # | 448 | # |
416 | # Wireless LAN (non-hamradio) | 449 | # SCSI support type (disk, tape, CD-ROM) |
417 | # | 450 | # |
418 | # CONFIG_NET_RADIO is not set | 451 | CONFIG_BLK_DEV_SD=y |
452 | CONFIG_CHR_DEV_ST=m | ||
453 | CONFIG_CHR_DEV_OSST=m | ||
454 | CONFIG_BLK_DEV_SR=y | ||
455 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
456 | CONFIG_CHR_DEV_SG=m | ||
457 | # CONFIG_CHR_DEV_SCH is not set | ||
419 | 458 | ||
420 | # | 459 | # |
421 | # Wan interfaces | 460 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
422 | # | 461 | # |
462 | # CONFIG_SCSI_MULTI_LUN is not set | ||
463 | CONFIG_SCSI_CONSTANTS=y | ||
464 | # CONFIG_SCSI_LOGGING is not set | ||
465 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
466 | CONFIG_SCSI_WAIT_SCAN=m | ||
467 | |||
468 | # | ||
469 | # SCSI Transports | ||
470 | # | ||
471 | CONFIG_SCSI_SPI_ATTRS=y | ||
472 | # CONFIG_SCSI_FC_ATTRS is not set | ||
473 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
474 | CONFIG_SCSI_SAS_ATTRS=m | ||
475 | CONFIG_SCSI_SAS_LIBSAS=m | ||
476 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
477 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
478 | CONFIG_SCSI_SRP_ATTRS=m | ||
479 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
480 | CONFIG_SCSI_LOWLEVEL=y | ||
481 | CONFIG_ISCSI_TCP=m | ||
482 | # CONFIG_SCSI_DEBUG is not set | ||
483 | CONFIG_SUN3_SCSI=y | ||
484 | CONFIG_MD=y | ||
485 | CONFIG_BLK_DEV_MD=m | ||
486 | CONFIG_MD_LINEAR=m | ||
487 | CONFIG_MD_RAID0=m | ||
488 | CONFIG_MD_RAID1=m | ||
489 | # CONFIG_MD_RAID10 is not set | ||
490 | CONFIG_MD_RAID456=m | ||
491 | CONFIG_MD_RAID5_RESHAPE=y | ||
492 | CONFIG_MD_MULTIPATH=m | ||
493 | # CONFIG_MD_FAULTY is not set | ||
494 | CONFIG_BLK_DEV_DM=m | ||
495 | # CONFIG_DM_DEBUG is not set | ||
496 | CONFIG_DM_CRYPT=m | ||
497 | CONFIG_DM_SNAPSHOT=m | ||
498 | CONFIG_DM_MIRROR=m | ||
499 | CONFIG_DM_ZERO=m | ||
500 | CONFIG_DM_MULTIPATH=m | ||
501 | CONFIG_DM_MULTIPATH_EMC=m | ||
502 | CONFIG_DM_MULTIPATH_RDAC=m | ||
503 | CONFIG_DM_MULTIPATH_HP=m | ||
504 | # CONFIG_DM_DELAY is not set | ||
505 | CONFIG_DM_UEVENT=y | ||
506 | CONFIG_NETDEVICES=y | ||
507 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
508 | CONFIG_DUMMY=m | ||
509 | # CONFIG_BONDING is not set | ||
510 | CONFIG_MACVLAN=m | ||
511 | CONFIG_EQUALIZER=m | ||
512 | # CONFIG_TUN is not set | ||
513 | CONFIG_VETH=m | ||
514 | # CONFIG_PHYLIB is not set | ||
515 | CONFIG_NET_ETHERNET=y | ||
516 | # CONFIG_MII is not set | ||
517 | CONFIG_SUN3LANCE=y | ||
518 | CONFIG_SUN3_82586=y | ||
519 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
520 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
521 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
522 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
523 | # CONFIG_B44 is not set | ||
524 | # CONFIG_NETDEV_1000 is not set | ||
525 | # CONFIG_NETDEV_10000 is not set | ||
526 | |||
527 | # | ||
528 | # Wireless LAN | ||
529 | # | ||
530 | # CONFIG_WLAN_PRE80211 is not set | ||
531 | # CONFIG_WLAN_80211 is not set | ||
423 | # CONFIG_WAN is not set | 532 | # CONFIG_WAN is not set |
424 | CONFIG_PPP=m | 533 | CONFIG_PPP=m |
425 | # CONFIG_PPP_MULTILINK is not set | 534 | # CONFIG_PPP_MULTILINK is not set |
@@ -428,28 +537,28 @@ CONFIG_PPP_ASYNC=m | |||
428 | CONFIG_PPP_SYNC_TTY=m | 537 | CONFIG_PPP_SYNC_TTY=m |
429 | CONFIG_PPP_DEFLATE=m | 538 | CONFIG_PPP_DEFLATE=m |
430 | CONFIG_PPP_BSDCOMP=m | 539 | CONFIG_PPP_BSDCOMP=m |
540 | CONFIG_PPP_MPPE=m | ||
431 | CONFIG_PPPOE=m | 541 | CONFIG_PPPOE=m |
542 | CONFIG_PPPOL2TP=m | ||
432 | CONFIG_SLIP=m | 543 | CONFIG_SLIP=m |
433 | CONFIG_SLIP_COMPRESSED=y | 544 | CONFIG_SLIP_COMPRESSED=y |
545 | CONFIG_SLHC=m | ||
434 | CONFIG_SLIP_SMART=y | 546 | CONFIG_SLIP_SMART=y |
435 | CONFIG_SLIP_MODE_SLIP6=y | 547 | CONFIG_SLIP_MODE_SLIP6=y |
436 | CONFIG_SHAPER=m | ||
437 | CONFIG_NETCONSOLE=m | 548 | CONFIG_NETCONSOLE=m |
438 | 549 | CONFIG_NETCONSOLE_DYNAMIC=y | |
439 | # | 550 | CONFIG_NETPOLL=y |
440 | # ISDN subsystem | 551 | # CONFIG_NETPOLL_TRAP is not set |
441 | # | 552 | CONFIG_NET_POLL_CONTROLLER=y |
442 | # CONFIG_ISDN is not set | 553 | # CONFIG_ISDN is not set |
443 | |||
444 | # | ||
445 | # Telephony Support | ||
446 | # | ||
447 | # CONFIG_PHONE is not set | 554 | # CONFIG_PHONE is not set |
448 | 555 | ||
449 | # | 556 | # |
450 | # Input device support | 557 | # Input device support |
451 | # | 558 | # |
452 | CONFIG_INPUT=y | 559 | CONFIG_INPUT=y |
560 | CONFIG_INPUT_FF_MEMLESS=m | ||
561 | # CONFIG_INPUT_POLLDEV is not set | ||
453 | 562 | ||
454 | # | 563 | # |
455 | # Userland interfaces | 564 | # Userland interfaces |
@@ -459,7 +568,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
459 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 568 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
460 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 569 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
461 | # CONFIG_INPUT_JOYDEV is not set | 570 | # CONFIG_INPUT_JOYDEV is not set |
462 | # CONFIG_INPUT_TSDEV is not set | ||
463 | # CONFIG_INPUT_EVDEV is not set | 571 | # CONFIG_INPUT_EVDEV is not set |
464 | # CONFIG_INPUT_EVBUG is not set | 572 | # CONFIG_INPUT_EVBUG is not set |
465 | 573 | ||
@@ -472,11 +580,19 @@ CONFIG_KEYBOARD_SUNKBD=y | |||
472 | # CONFIG_KEYBOARD_LKKBD is not set | 580 | # CONFIG_KEYBOARD_LKKBD is not set |
473 | # CONFIG_KEYBOARD_XTKBD is not set | 581 | # CONFIG_KEYBOARD_XTKBD is not set |
474 | # CONFIG_KEYBOARD_NEWTON is not set | 582 | # CONFIG_KEYBOARD_NEWTON is not set |
583 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
475 | CONFIG_INPUT_MOUSE=y | 584 | CONFIG_INPUT_MOUSE=y |
476 | CONFIG_MOUSE_PS2=m | 585 | CONFIG_MOUSE_PS2=m |
586 | CONFIG_MOUSE_PS2_ALPS=y | ||
587 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
588 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
589 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
590 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
591 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
477 | CONFIG_MOUSE_SERIAL=m | 592 | CONFIG_MOUSE_SERIAL=m |
478 | # CONFIG_MOUSE_VSXXXAA is not set | 593 | # CONFIG_MOUSE_VSXXXAA is not set |
479 | # CONFIG_INPUT_JOYSTICK is not set | 594 | # CONFIG_INPUT_JOYSTICK is not set |
595 | # CONFIG_INPUT_TABLET is not set | ||
480 | # CONFIG_INPUT_TOUCHSCREEN is not set | 596 | # CONFIG_INPUT_TOUCHSCREEN is not set |
481 | # CONFIG_INPUT_MISC is not set | 597 | # CONFIG_INPUT_MISC is not set |
482 | 598 | ||
@@ -484,7 +600,7 @@ CONFIG_MOUSE_SERIAL=m | |||
484 | # Hardware I/O ports | 600 | # Hardware I/O ports |
485 | # | 601 | # |
486 | CONFIG_SERIO=y | 602 | CONFIG_SERIO=y |
487 | CONFIG_SERIO_SERPORT=m | 603 | # CONFIG_SERIO_SERPORT is not set |
488 | CONFIG_SERIO_LIBPS2=m | 604 | CONFIG_SERIO_LIBPS2=m |
489 | # CONFIG_SERIO_RAW is not set | 605 | # CONFIG_SERIO_RAW is not set |
490 | # CONFIG_GAMEPORT is not set | 606 | # CONFIG_GAMEPORT is not set |
@@ -495,6 +611,7 @@ CONFIG_SERIO_LIBPS2=m | |||
495 | CONFIG_VT=y | 611 | CONFIG_VT=y |
496 | CONFIG_VT_CONSOLE=y | 612 | CONFIG_VT_CONSOLE=y |
497 | CONFIG_HW_CONSOLE=y | 613 | CONFIG_HW_CONSOLE=y |
614 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
498 | # CONFIG_SERIAL_NONSTANDARD is not set | 615 | # CONFIG_SERIAL_NONSTANDARD is not set |
499 | 616 | ||
500 | # | 617 | # |
@@ -508,112 +625,113 @@ CONFIG_HW_CONSOLE=y | |||
508 | CONFIG_UNIX98_PTYS=y | 625 | CONFIG_UNIX98_PTYS=y |
509 | CONFIG_LEGACY_PTYS=y | 626 | CONFIG_LEGACY_PTYS=y |
510 | CONFIG_LEGACY_PTY_COUNT=256 | 627 | CONFIG_LEGACY_PTY_COUNT=256 |
511 | |||
512 | # | ||
513 | # IPMI | ||
514 | # | ||
515 | # CONFIG_IPMI_HANDLER is not set | 628 | # CONFIG_IPMI_HANDLER is not set |
516 | 629 | # CONFIG_HW_RANDOM is not set | |
517 | # | 630 | CONFIG_GEN_RTC=m |
518 | # Watchdog Cards | ||
519 | # | ||
520 | # CONFIG_WATCHDOG is not set | ||
521 | CONFIG_GEN_RTC=y | ||
522 | CONFIG_GEN_RTC_X=y | 631 | CONFIG_GEN_RTC_X=y |
523 | # CONFIG_DTLK is not set | ||
524 | # CONFIG_R3964 is not set | 632 | # CONFIG_R3964 is not set |
525 | |||
526 | # | ||
527 | # Ftape, the floppy tape device driver | ||
528 | # | ||
529 | # CONFIG_DRM is not set | ||
530 | # CONFIG_RAW_DRIVER is not set | 633 | # CONFIG_RAW_DRIVER is not set |
531 | 634 | # CONFIG_TCG_TPM is not set | |
532 | # | ||
533 | # TPM devices | ||
534 | # | ||
535 | |||
536 | # | ||
537 | # I2C support | ||
538 | # | ||
539 | # CONFIG_I2C is not set | 635 | # CONFIG_I2C is not set |
540 | 636 | ||
541 | # | 637 | # |
542 | # Dallas's 1-wire bus | 638 | # SPI support |
543 | # | 639 | # |
640 | # CONFIG_SPI is not set | ||
641 | # CONFIG_SPI_MASTER is not set | ||
544 | # CONFIG_W1 is not set | 642 | # CONFIG_W1 is not set |
643 | # CONFIG_POWER_SUPPLY is not set | ||
644 | # CONFIG_HWMON is not set | ||
645 | # CONFIG_THERMAL is not set | ||
646 | # CONFIG_WATCHDOG is not set | ||
545 | 647 | ||
546 | # | 648 | # |
547 | # Misc devices | 649 | # Sonics Silicon Backplane |
548 | # | 650 | # |
651 | CONFIG_SSB_POSSIBLE=y | ||
652 | # CONFIG_SSB is not set | ||
549 | 653 | ||
550 | # | 654 | # |
551 | # Multimedia devices | 655 | # Multifunction device drivers |
552 | # | 656 | # |
553 | # CONFIG_VIDEO_DEV is not set | 657 | # CONFIG_MFD_SM501 is not set |
554 | 658 | ||
555 | # | 659 | # |
556 | # Digital Video Broadcasting Devices | 660 | # Multimedia devices |
557 | # | 661 | # |
558 | # CONFIG_DVB is not set | 662 | # CONFIG_VIDEO_DEV is not set |
663 | # CONFIG_DVB_CORE is not set | ||
664 | # CONFIG_DAB is not set | ||
559 | 665 | ||
560 | # | 666 | # |
561 | # Graphics support | 667 | # Graphics support |
562 | # | 668 | # |
669 | # CONFIG_VGASTATE is not set | ||
670 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
563 | CONFIG_FB=y | 671 | CONFIG_FB=y |
672 | # CONFIG_FIRMWARE_EDID is not set | ||
673 | # CONFIG_FB_DDC is not set | ||
564 | # CONFIG_FB_CFB_FILLRECT is not set | 674 | # CONFIG_FB_CFB_FILLRECT is not set |
565 | # CONFIG_FB_CFB_COPYAREA is not set | 675 | # CONFIG_FB_CFB_COPYAREA is not set |
566 | # CONFIG_FB_CFB_IMAGEBLIT is not set | 676 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
567 | # CONFIG_FB_SOFT_CURSOR is not set | 677 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
678 | # CONFIG_FB_SYS_FILLRECT is not set | ||
679 | # CONFIG_FB_SYS_COPYAREA is not set | ||
680 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
681 | # CONFIG_FB_SYS_FOPS is not set | ||
682 | CONFIG_FB_DEFERRED_IO=y | ||
683 | # CONFIG_FB_SVGALIB is not set | ||
568 | # CONFIG_FB_MACMODES is not set | 684 | # CONFIG_FB_MACMODES is not set |
569 | CONFIG_FB_MODE_HELPERS=y | 685 | # CONFIG_FB_BACKLIGHT is not set |
686 | # CONFIG_FB_MODE_HELPERS is not set | ||
570 | # CONFIG_FB_TILEBLITTING is not set | 687 | # CONFIG_FB_TILEBLITTING is not set |
688 | |||
689 | # | ||
690 | # Frame buffer hardware drivers | ||
691 | # | ||
692 | # CONFIG_FB_UVESA is not set | ||
571 | # CONFIG_FB_S1D13XXX is not set | 693 | # CONFIG_FB_S1D13XXX is not set |
572 | # CONFIG_FB_VIRTUAL is not set | 694 | # CONFIG_FB_VIRTUAL is not set |
695 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
696 | |||
697 | # | ||
698 | # Display device support | ||
699 | # | ||
700 | # CONFIG_DISPLAY_SUPPORT is not set | ||
573 | 701 | ||
574 | # | 702 | # |
575 | # Console display driver support | 703 | # Console display driver support |
576 | # | 704 | # |
577 | CONFIG_DUMMY_CONSOLE=y | 705 | CONFIG_DUMMY_CONSOLE=y |
578 | CONFIG_FRAMEBUFFER_CONSOLE=y | 706 | CONFIG_FRAMEBUFFER_CONSOLE=y |
707 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
708 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
579 | # CONFIG_FONTS is not set | 709 | # CONFIG_FONTS is not set |
580 | CONFIG_FONT_8x8=y | 710 | CONFIG_FONT_8x8=y |
581 | CONFIG_FONT_8x16=y | 711 | CONFIG_FONT_8x16=y |
582 | |||
583 | # | ||
584 | # Logo configuration | ||
585 | # | ||
586 | CONFIG_LOGO=y | 712 | CONFIG_LOGO=y |
587 | CONFIG_LOGO_LINUX_MONO=y | 713 | CONFIG_LOGO_LINUX_MONO=y |
588 | CONFIG_LOGO_LINUX_VGA16=y | 714 | CONFIG_LOGO_LINUX_VGA16=y |
589 | CONFIG_LOGO_LINUX_CLUT224=y | 715 | CONFIG_LOGO_LINUX_CLUT224=y |
590 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
591 | 716 | ||
592 | # | 717 | # |
593 | # Sound | 718 | # Sound |
594 | # | 719 | # |
595 | # CONFIG_SOUND is not set | 720 | # CONFIG_SOUND is not set |
596 | 721 | CONFIG_HID_SUPPORT=y | |
597 | # | 722 | CONFIG_HID=m |
598 | # USB support | 723 | # CONFIG_HID_DEBUG is not set |
599 | # | 724 | CONFIG_HIDRAW=y |
600 | # CONFIG_USB_ARCH_HAS_HCD is not set | 725 | # CONFIG_USB_SUPPORT is not set |
601 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
602 | |||
603 | # | ||
604 | # USB Gadget Support | ||
605 | # | ||
606 | # CONFIG_USB_GADGET is not set | ||
607 | |||
608 | # | ||
609 | # MMC/SD Card support | ||
610 | # | ||
611 | # CONFIG_MMC is not set | 726 | # CONFIG_MMC is not set |
727 | # CONFIG_MEMSTICK is not set | ||
728 | # CONFIG_NEW_LEDS is not set | ||
729 | # CONFIG_RTC_CLASS is not set | ||
612 | 730 | ||
613 | # | 731 | # |
614 | # InfiniBand support | 732 | # Userspace I/O |
615 | # | 733 | # |
616 | # CONFIG_INFINIBAND is not set | 734 | # CONFIG_UIO is not set |
617 | 735 | ||
618 | # | 736 | # |
619 | # Character devices | 737 | # Character devices |
@@ -624,10 +742,11 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
624 | # | 742 | # |
625 | CONFIG_EXT2_FS=y | 743 | CONFIG_EXT2_FS=y |
626 | # CONFIG_EXT2_FS_XATTR is not set | 744 | # CONFIG_EXT2_FS_XATTR is not set |
745 | # CONFIG_EXT2_FS_XIP is not set | ||
627 | CONFIG_EXT3_FS=y | 746 | CONFIG_EXT3_FS=y |
628 | # CONFIG_EXT3_FS_XATTR is not set | 747 | # CONFIG_EXT3_FS_XATTR is not set |
748 | # CONFIG_EXT4DEV_FS is not set | ||
629 | CONFIG_JBD=y | 749 | CONFIG_JBD=y |
630 | # CONFIG_JBD_DEBUG is not set | ||
631 | CONFIG_REISERFS_FS=m | 750 | CONFIG_REISERFS_FS=m |
632 | # CONFIG_REISERFS_CHECK is not set | 751 | # CONFIG_REISERFS_CHECK is not set |
633 | # CONFIG_REISERFS_PROC_INFO is not set | 752 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -638,25 +757,29 @@ CONFIG_JFS_FS=m | |||
638 | # CONFIG_JFS_DEBUG is not set | 757 | # CONFIG_JFS_DEBUG is not set |
639 | # CONFIG_JFS_STATISTICS is not set | 758 | # CONFIG_JFS_STATISTICS is not set |
640 | CONFIG_FS_POSIX_ACL=y | 759 | CONFIG_FS_POSIX_ACL=y |
641 | |||
642 | # | ||
643 | # XFS support | ||
644 | # | ||
645 | CONFIG_XFS_FS=m | 760 | CONFIG_XFS_FS=m |
646 | CONFIG_XFS_EXPORT=y | ||
647 | # CONFIG_XFS_RT is not set | ||
648 | # CONFIG_XFS_QUOTA is not set | 761 | # CONFIG_XFS_QUOTA is not set |
649 | # CONFIG_XFS_SECURITY is not set | 762 | # CONFIG_XFS_SECURITY is not set |
650 | # CONFIG_XFS_POSIX_ACL is not set | 763 | # CONFIG_XFS_POSIX_ACL is not set |
651 | CONFIG_MINIX_FS=y | 764 | # CONFIG_XFS_RT is not set |
652 | # CONFIG_ROMFS_FS is not set | 765 | CONFIG_GFS2_FS=m |
766 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
767 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
768 | CONFIG_OCFS2_FS=m | ||
769 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
770 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
771 | CONFIG_DNOTIFY=y | ||
772 | CONFIG_INOTIFY=y | ||
773 | CONFIG_INOTIFY_USER=y | ||
653 | CONFIG_QUOTA=y | 774 | CONFIG_QUOTA=y |
775 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
776 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
654 | # CONFIG_QFMT_V1 is not set | 777 | # CONFIG_QFMT_V1 is not set |
655 | # CONFIG_QFMT_V2 is not set | 778 | # CONFIG_QFMT_V2 is not set |
656 | CONFIG_QUOTACTL=y | 779 | CONFIG_QUOTACTL=y |
657 | CONFIG_DNOTIFY=y | ||
658 | CONFIG_AUTOFS_FS=m | 780 | CONFIG_AUTOFS_FS=m |
659 | CONFIG_AUTOFS4_FS=m | 781 | CONFIG_AUTOFS4_FS=m |
782 | CONFIG_FUSE_FS=m | ||
660 | 783 | ||
661 | # | 784 | # |
662 | # CD-ROM/DVD Filesystems | 785 | # CD-ROM/DVD Filesystems |
@@ -664,7 +787,6 @@ CONFIG_AUTOFS4_FS=m | |||
664 | CONFIG_ISO9660_FS=y | 787 | CONFIG_ISO9660_FS=y |
665 | CONFIG_JOLIET=y | 788 | CONFIG_JOLIET=y |
666 | CONFIG_ZISOFS=y | 789 | CONFIG_ZISOFS=y |
667 | CONFIG_ZISOFS_FS=y | ||
668 | CONFIG_UDF_FS=m | 790 | CONFIG_UDF_FS=m |
669 | CONFIG_UDF_NLS=y | 791 | CONFIG_UDF_NLS=y |
670 | 792 | ||
@@ -683,15 +805,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
683 | # | 805 | # |
684 | CONFIG_PROC_FS=y | 806 | CONFIG_PROC_FS=y |
685 | CONFIG_PROC_KCORE=y | 807 | CONFIG_PROC_KCORE=y |
808 | CONFIG_PROC_SYSCTL=y | ||
686 | CONFIG_SYSFS=y | 809 | CONFIG_SYSFS=y |
687 | CONFIG_DEVFS_FS=y | ||
688 | CONFIG_DEVFS_MOUNT=y | ||
689 | # CONFIG_DEVFS_DEBUG is not set | ||
690 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
691 | CONFIG_TMPFS=y | 810 | CONFIG_TMPFS=y |
692 | # CONFIG_TMPFS_XATTR is not set | 811 | # CONFIG_TMPFS_POSIX_ACL is not set |
693 | # CONFIG_HUGETLB_PAGE is not set | 812 | # CONFIG_HUGETLB_PAGE is not set |
694 | CONFIG_RAMFS=y | 813 | CONFIG_CONFIGFS_FS=m |
695 | 814 | ||
696 | # | 815 | # |
697 | # Miscellaneous filesystems | 816 | # Miscellaneous filesystems |
@@ -705,44 +824,40 @@ CONFIG_HFSPLUS_FS=m | |||
705 | # CONFIG_EFS_FS is not set | 824 | # CONFIG_EFS_FS is not set |
706 | CONFIG_CRAMFS=m | 825 | CONFIG_CRAMFS=m |
707 | # CONFIG_VXFS_FS is not set | 826 | # CONFIG_VXFS_FS is not set |
827 | CONFIG_MINIX_FS=y | ||
708 | CONFIG_HPFS_FS=m | 828 | CONFIG_HPFS_FS=m |
709 | # CONFIG_QNX4FS_FS is not set | 829 | # CONFIG_QNX4FS_FS is not set |
830 | # CONFIG_ROMFS_FS is not set | ||
710 | CONFIG_SYSV_FS=m | 831 | CONFIG_SYSV_FS=m |
711 | CONFIG_UFS_FS=m | 832 | CONFIG_UFS_FS=m |
712 | CONFIG_UFS_FS_WRITE=y | 833 | # CONFIG_UFS_FS_WRITE is not set |
713 | 834 | # CONFIG_UFS_DEBUG is not set | |
714 | # | 835 | CONFIG_NETWORK_FILESYSTEMS=y |
715 | # Network File Systems | ||
716 | # | ||
717 | CONFIG_NFS_FS=y | 836 | CONFIG_NFS_FS=y |
718 | CONFIG_NFS_V3=y | 837 | CONFIG_NFS_V3=y |
838 | # CONFIG_NFS_V3_ACL is not set | ||
719 | CONFIG_NFS_V4=y | 839 | CONFIG_NFS_V4=y |
720 | # CONFIG_NFS_DIRECTIO is not set | 840 | # CONFIG_NFS_DIRECTIO is not set |
721 | CONFIG_NFSD=m | 841 | CONFIG_NFSD=m |
722 | CONFIG_NFSD_V3=y | 842 | CONFIG_NFSD_V3=y |
723 | CONFIG_NFSD_V4=y | 843 | # CONFIG_NFSD_V3_ACL is not set |
844 | # CONFIG_NFSD_V4 is not set | ||
724 | CONFIG_NFSD_TCP=y | 845 | CONFIG_NFSD_TCP=y |
725 | CONFIG_ROOT_NFS=y | 846 | CONFIG_ROOT_NFS=y |
726 | CONFIG_LOCKD=y | 847 | CONFIG_LOCKD=y |
727 | CONFIG_LOCKD_V4=y | 848 | CONFIG_LOCKD_V4=y |
728 | CONFIG_EXPORTFS=m | 849 | CONFIG_EXPORTFS=m |
850 | CONFIG_NFS_COMMON=y | ||
729 | CONFIG_SUNRPC=y | 851 | CONFIG_SUNRPC=y |
730 | CONFIG_SUNRPC_GSS=y | 852 | CONFIG_SUNRPC_GSS=y |
853 | CONFIG_SUNRPC_BIND34=y | ||
731 | CONFIG_RPCSEC_GSS_KRB5=y | 854 | CONFIG_RPCSEC_GSS_KRB5=y |
732 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 855 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
733 | CONFIG_SMB_FS=m | 856 | CONFIG_SMB_FS=m |
734 | CONFIG_SMB_NLS_DEFAULT=y | 857 | CONFIG_SMB_NLS_DEFAULT=y |
735 | CONFIG_SMB_NLS_REMOTE="cp437" | 858 | CONFIG_SMB_NLS_REMOTE="cp437" |
736 | # CONFIG_CIFS is not set | 859 | # CONFIG_CIFS is not set |
737 | CONFIG_NCP_FS=m | 860 | # CONFIG_NCP_FS is not set |
738 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
739 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
740 | # CONFIG_NCPFS_STRONG is not set | ||
741 | # CONFIG_NCPFS_NFS_NS is not set | ||
742 | # CONFIG_NCPFS_OS2_NS is not set | ||
743 | # CONFIG_NCPFS_SMALLDOS is not set | ||
744 | CONFIG_NCPFS_NLS=y | ||
745 | # CONFIG_NCPFS_EXTRAS is not set | ||
746 | CONFIG_CODA_FS=m | 861 | CONFIG_CODA_FS=m |
747 | # CONFIG_CODA_FS_OLD_API is not set | 862 | # CONFIG_CODA_FS_OLD_API is not set |
748 | # CONFIG_AFS_FS is not set | 863 | # CONFIG_AFS_FS is not set |
@@ -753,10 +868,6 @@ CONFIG_CODA_FS=m | |||
753 | # CONFIG_PARTITION_ADVANCED is not set | 868 | # CONFIG_PARTITION_ADVANCED is not set |
754 | CONFIG_MSDOS_PARTITION=y | 869 | CONFIG_MSDOS_PARTITION=y |
755 | CONFIG_SUN_PARTITION=y | 870 | CONFIG_SUN_PARTITION=y |
756 | |||
757 | # | ||
758 | # Native Language Support | ||
759 | # | ||
760 | CONFIG_NLS=y | 871 | CONFIG_NLS=y |
761 | CONFIG_NLS_DEFAULT="iso8859-1" | 872 | CONFIG_NLS_DEFAULT="iso8859-1" |
762 | CONFIG_NLS_CODEPAGE_437=y | 873 | CONFIG_NLS_CODEPAGE_437=y |
@@ -797,35 +908,42 @@ CONFIG_NLS_ISO8859_15=m | |||
797 | CONFIG_NLS_KOI8_R=m | 908 | CONFIG_NLS_KOI8_R=m |
798 | CONFIG_NLS_KOI8_U=m | 909 | CONFIG_NLS_KOI8_U=m |
799 | CONFIG_NLS_UTF8=m | 910 | CONFIG_NLS_UTF8=m |
911 | CONFIG_DLM=m | ||
912 | # CONFIG_DLM_DEBUG is not set | ||
800 | 913 | ||
801 | # | 914 | # |
802 | # Kernel hacking | 915 | # Kernel hacking |
803 | # | 916 | # |
804 | # CONFIG_PRINTK_TIME is not set | 917 | # CONFIG_PRINTK_TIME is not set |
805 | CONFIG_DEBUG_KERNEL=y | 918 | CONFIG_ENABLE_WARN_DEPRECATED=y |
919 | CONFIG_ENABLE_MUST_CHECK=y | ||
806 | CONFIG_MAGIC_SYSRQ=y | 920 | CONFIG_MAGIC_SYSRQ=y |
807 | CONFIG_LOG_BUF_SHIFT=16 | 921 | # CONFIG_UNUSED_SYMBOLS is not set |
808 | # CONFIG_SCHEDSTATS is not set | ||
809 | # CONFIG_DEBUG_SLAB is not set | ||
810 | # CONFIG_DEBUG_SPINLOCK is not set | ||
811 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
812 | # CONFIG_DEBUG_KOBJECT is not set | ||
813 | CONFIG_DEBUG_BUGVERBOSE=y | ||
814 | # CONFIG_DEBUG_INFO is not set | ||
815 | # CONFIG_DEBUG_FS is not set | 922 | # CONFIG_DEBUG_FS is not set |
816 | # CONFIG_FRAME_POINTER is not set | 923 | # CONFIG_HEADERS_CHECK is not set |
924 | # CONFIG_DEBUG_KERNEL is not set | ||
925 | CONFIG_DEBUG_BUGVERBOSE=y | ||
926 | # CONFIG_SAMPLES is not set | ||
817 | 927 | ||
818 | # | 928 | # |
819 | # Security options | 929 | # Security options |
820 | # | 930 | # |
821 | # CONFIG_KEYS is not set | 931 | # CONFIG_KEYS is not set |
822 | # CONFIG_SECURITY is not set | 932 | # CONFIG_SECURITY is not set |
823 | 933 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
824 | # | 934 | CONFIG_XOR_BLOCKS=m |
825 | # Cryptographic options | 935 | CONFIG_ASYNC_CORE=m |
826 | # | 936 | CONFIG_ASYNC_MEMCPY=m |
937 | CONFIG_ASYNC_XOR=m | ||
827 | CONFIG_CRYPTO=y | 938 | CONFIG_CRYPTO=y |
939 | CONFIG_CRYPTO_ALGAPI=y | ||
940 | CONFIG_CRYPTO_AEAD=m | ||
941 | CONFIG_CRYPTO_BLKCIPHER=y | ||
942 | CONFIG_CRYPTO_SEQIV=m | ||
943 | CONFIG_CRYPTO_HASH=y | ||
944 | CONFIG_CRYPTO_MANAGER=y | ||
828 | CONFIG_CRYPTO_HMAC=y | 945 | CONFIG_CRYPTO_HMAC=y |
946 | CONFIG_CRYPTO_XCBC=m | ||
829 | CONFIG_CRYPTO_NULL=m | 947 | CONFIG_CRYPTO_NULL=m |
830 | CONFIG_CRYPTO_MD4=m | 948 | CONFIG_CRYPTO_MD4=m |
831 | CONFIG_CRYPTO_MD5=y | 949 | CONFIG_CRYPTO_MD5=y |
@@ -834,9 +952,21 @@ CONFIG_CRYPTO_SHA256=m | |||
834 | CONFIG_CRYPTO_SHA512=m | 952 | CONFIG_CRYPTO_SHA512=m |
835 | CONFIG_CRYPTO_WP512=m | 953 | CONFIG_CRYPTO_WP512=m |
836 | CONFIG_CRYPTO_TGR192=m | 954 | CONFIG_CRYPTO_TGR192=m |
955 | CONFIG_CRYPTO_GF128MUL=m | ||
956 | CONFIG_CRYPTO_ECB=m | ||
957 | CONFIG_CRYPTO_CBC=y | ||
958 | CONFIG_CRYPTO_PCBC=m | ||
959 | CONFIG_CRYPTO_LRW=m | ||
960 | CONFIG_CRYPTO_XTS=m | ||
961 | CONFIG_CRYPTO_CTR=m | ||
962 | CONFIG_CRYPTO_GCM=m | ||
963 | CONFIG_CRYPTO_CCM=m | ||
964 | CONFIG_CRYPTO_CRYPTD=m | ||
837 | CONFIG_CRYPTO_DES=y | 965 | CONFIG_CRYPTO_DES=y |
966 | CONFIG_CRYPTO_FCRYPT=m | ||
838 | CONFIG_CRYPTO_BLOWFISH=m | 967 | CONFIG_CRYPTO_BLOWFISH=m |
839 | CONFIG_CRYPTO_TWOFISH=m | 968 | CONFIG_CRYPTO_TWOFISH=m |
969 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
840 | CONFIG_CRYPTO_SERPENT=m | 970 | CONFIG_CRYPTO_SERPENT=m |
841 | CONFIG_CRYPTO_AES=m | 971 | CONFIG_CRYPTO_AES=m |
842 | CONFIG_CRYPTO_CAST5=m | 972 | CONFIG_CRYPTO_CAST5=m |
@@ -845,20 +975,34 @@ CONFIG_CRYPTO_TEA=m | |||
845 | CONFIG_CRYPTO_ARC4=m | 975 | CONFIG_CRYPTO_ARC4=m |
846 | CONFIG_CRYPTO_KHAZAD=m | 976 | CONFIG_CRYPTO_KHAZAD=m |
847 | CONFIG_CRYPTO_ANUBIS=m | 977 | CONFIG_CRYPTO_ANUBIS=m |
978 | CONFIG_CRYPTO_SEED=m | ||
979 | CONFIG_CRYPTO_SALSA20=m | ||
848 | CONFIG_CRYPTO_DEFLATE=m | 980 | CONFIG_CRYPTO_DEFLATE=m |
849 | CONFIG_CRYPTO_MICHAEL_MIC=m | 981 | CONFIG_CRYPTO_MICHAEL_MIC=m |
850 | CONFIG_CRYPTO_CRC32C=m | 982 | CONFIG_CRYPTO_CRC32C=m |
983 | CONFIG_CRYPTO_CAMELLIA=m | ||
851 | CONFIG_CRYPTO_TEST=m | 984 | CONFIG_CRYPTO_TEST=m |
852 | 985 | CONFIG_CRYPTO_AUTHENC=m | |
853 | # | 986 | CONFIG_CRYPTO_LZO=m |
854 | # Hardware crypto devices | 987 | # CONFIG_CRYPTO_HW is not set |
855 | # | ||
856 | 988 | ||
857 | # | 989 | # |
858 | # Library routines | 990 | # Library routines |
859 | # | 991 | # |
992 | CONFIG_BITREVERSE=y | ||
860 | CONFIG_CRC_CCITT=m | 993 | CONFIG_CRC_CCITT=m |
994 | CONFIG_CRC16=m | ||
995 | # CONFIG_CRC_ITU_T is not set | ||
861 | CONFIG_CRC32=y | 996 | CONFIG_CRC32=y |
997 | # CONFIG_CRC7 is not set | ||
862 | CONFIG_LIBCRC32C=m | 998 | CONFIG_LIBCRC32C=m |
863 | CONFIG_ZLIB_INFLATE=y | 999 | CONFIG_ZLIB_INFLATE=y |
864 | CONFIG_ZLIB_DEFLATE=m | 1000 | CONFIG_ZLIB_DEFLATE=m |
1001 | CONFIG_LZO_COMPRESS=m | ||
1002 | CONFIG_LZO_DECOMPRESS=m | ||
1003 | CONFIG_TEXTSEARCH=y | ||
1004 | CONFIG_TEXTSEARCH_KMP=m | ||
1005 | CONFIG_TEXTSEARCH_BM=m | ||
1006 | CONFIG_TEXTSEARCH_FSM=m | ||
1007 | CONFIG_PLIST=y | ||
1008 | CONFIG_HAS_IOMEM=y | ||
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig index 997143b7928a..f18154f1ef1f 100644 --- a/arch/m68k/configs/sun3x_defconfig +++ b/arch/m68k/configs/sun3x_defconfig | |||
@@ -1,63 +1,111 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.12-rc6-m68k | 3 | # Linux kernel version: 2.6.25-rc8 |
4 | # Tue Jun 7 20:35:06 2005 | 4 | # Wed Apr 2 20:46:23 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 20 | ||
12 | # | 21 | # |
13 | # Code maturity level options | 22 | # General setup |
14 | # | 23 | # |
15 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="-sun3x" | 27 | CONFIG_LOCALVERSION="-sun3x" |
28 | CONFIG_LOCALVERSION_AUTO=y | ||
24 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
25 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
27 | CONFIG_BSD_PROCESS_ACCT=y | 33 | CONFIG_BSD_PROCESS_ACCT=y |
28 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
29 | CONFIG_SYSCTL=y | 35 | # CONFIG_TASKSTATS is not set |
30 | CONFIG_AUDIT=y | 36 | # CONFIG_AUDIT is not set |
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | 37 | # CONFIG_IKCONFIG is not set |
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
34 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
35 | CONFIG_KALLSYMS=y | 55 | CONFIG_KALLSYMS=y |
36 | # CONFIG_KALLSYMS_ALL is not set | ||
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | ||
38 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
39 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | ||
61 | # CONFIG_COMPAT_BRK is not set | ||
40 | CONFIG_BASE_FULL=y | 62 | CONFIG_BASE_FULL=y |
41 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
64 | CONFIG_ANON_INODES=y | ||
42 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
66 | CONFIG_SIGNALFD=y | ||
67 | CONFIG_TIMERFD=y | ||
68 | CONFIG_EVENTFD=y | ||
43 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
44 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 70 | CONFIG_VM_EVENT_COUNTERS=y |
45 | CONFIG_CC_ALIGN_LABELS=0 | 71 | CONFIG_SLAB=y |
46 | CONFIG_CC_ALIGN_LOOPS=0 | 72 | # CONFIG_SLUB is not set |
47 | CONFIG_CC_ALIGN_JUMPS=0 | 73 | # CONFIG_SLOB is not set |
74 | # CONFIG_PROFILING is not set | ||
75 | # CONFIG_MARKERS is not set | ||
76 | # CONFIG_HAVE_OPROFILE is not set | ||
77 | # CONFIG_HAVE_KPROBES is not set | ||
78 | # CONFIG_HAVE_KRETPROBES is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | ||
81 | CONFIG_RT_MUTEXES=y | ||
48 | # CONFIG_TINY_SHMEM is not set | 82 | # CONFIG_TINY_SHMEM is not set |
49 | CONFIG_BASE_SMALL=0 | 83 | CONFIG_BASE_SMALL=0 |
50 | |||
51 | # | ||
52 | # Loadable module support | ||
53 | # | ||
54 | CONFIG_MODULES=y | 84 | CONFIG_MODULES=y |
55 | CONFIG_MODULE_UNLOAD=y | 85 | CONFIG_MODULE_UNLOAD=y |
56 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 86 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
57 | CONFIG_OBSOLETE_MODPARM=y | ||
58 | # CONFIG_MODVERSIONS is not set | 87 | # CONFIG_MODVERSIONS is not set |
59 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 88 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
60 | CONFIG_KMOD=y | 89 | CONFIG_KMOD=y |
90 | CONFIG_BLOCK=y | ||
91 | # CONFIG_LBD is not set | ||
92 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
93 | # CONFIG_LSF is not set | ||
94 | CONFIG_BLK_DEV_BSG=y | ||
95 | |||
96 | # | ||
97 | # IO Schedulers | ||
98 | # | ||
99 | CONFIG_IOSCHED_NOOP=y | ||
100 | CONFIG_IOSCHED_AS=y | ||
101 | CONFIG_IOSCHED_DEADLINE=y | ||
102 | CONFIG_IOSCHED_CFQ=y | ||
103 | CONFIG_DEFAULT_AS=y | ||
104 | # CONFIG_DEFAULT_DEADLINE is not set | ||
105 | # CONFIG_DEFAULT_CFQ is not set | ||
106 | # CONFIG_DEFAULT_NOOP is not set | ||
107 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
108 | CONFIG_CLASSIC_RCU=y | ||
61 | 109 | ||
62 | # | 110 | # |
63 | # Platform dependent setup | 111 | # Platform dependent setup |
@@ -80,10 +128,24 @@ CONFIG_M68030=y | |||
80 | # CONFIG_M68040 is not set | 128 | # CONFIG_M68040 is not set |
81 | # CONFIG_M68060 is not set | 129 | # CONFIG_M68060 is not set |
82 | CONFIG_MMU_MOTOROLA=y | 130 | CONFIG_MMU_MOTOROLA=y |
83 | CONFIG_M68KFPU_EMU=y | 131 | # CONFIG_M68KFPU_EMU is not set |
84 | CONFIG_M68KFPU_EMU_EXTRAPREC=y | ||
85 | # CONFIG_M68KFPU_EMU_ONLY is not set | ||
86 | # CONFIG_ADVANCED is not set | 132 | # CONFIG_ADVANCED is not set |
133 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
134 | CONFIG_NODES_SHIFT=3 | ||
135 | CONFIG_SELECT_MEMORY_MODEL=y | ||
136 | # CONFIG_FLATMEM_MANUAL is not set | ||
137 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
138 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
139 | CONFIG_DISCONTIGMEM=y | ||
140 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
141 | CONFIG_NEED_MULTIPLE_NODES=y | ||
142 | # CONFIG_SPARSEMEM_STATIC is not set | ||
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
145 | # CONFIG_RESOURCES_64BIT is not set | ||
146 | CONFIG_ZONE_DMA_FLAG=1 | ||
147 | CONFIG_BOUNCE=y | ||
148 | CONFIG_VIRT_TO_BUS=y | ||
87 | 149 | ||
88 | # | 150 | # |
89 | # General setup | 151 | # General setup |
@@ -92,135 +154,11 @@ CONFIG_BINFMT_ELF=y | |||
92 | CONFIG_BINFMT_AOUT=m | 154 | CONFIG_BINFMT_AOUT=m |
93 | CONFIG_BINFMT_MISC=m | 155 | CONFIG_BINFMT_MISC=m |
94 | CONFIG_PROC_HARDWARE=y | 156 | CONFIG_PROC_HARDWARE=y |
157 | CONFIG_ZONE_DMA=y | ||
158 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
95 | 159 | ||
96 | # | 160 | # |
97 | # Device Drivers | 161 | # Networking |
98 | # | ||
99 | |||
100 | # | ||
101 | # Generic Driver Options | ||
102 | # | ||
103 | CONFIG_STANDALONE=y | ||
104 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
105 | CONFIG_FW_LOADER=m | ||
106 | # CONFIG_DEBUG_DRIVER is not set | ||
107 | |||
108 | # | ||
109 | # Memory Technology Devices (MTD) | ||
110 | # | ||
111 | # CONFIG_MTD is not set | ||
112 | |||
113 | # | ||
114 | # Parallel port support | ||
115 | # | ||
116 | # CONFIG_PARPORT is not set | ||
117 | |||
118 | # | ||
119 | # Plug and Play support | ||
120 | # | ||
121 | |||
122 | # | ||
123 | # Block devices | ||
124 | # | ||
125 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
126 | CONFIG_BLK_DEV_LOOP=y | ||
127 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
128 | CONFIG_BLK_DEV_NBD=m | ||
129 | CONFIG_BLK_DEV_RAM=y | ||
130 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
131 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
132 | CONFIG_BLK_DEV_INITRD=y | ||
133 | CONFIG_INITRAMFS_SOURCE="" | ||
134 | CONFIG_CDROM_PKTCDVD=m | ||
135 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
136 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
137 | |||
138 | # | ||
139 | # IO Schedulers | ||
140 | # | ||
141 | CONFIG_IOSCHED_NOOP=y | ||
142 | CONFIG_IOSCHED_AS=y | ||
143 | CONFIG_IOSCHED_DEADLINE=y | ||
144 | CONFIG_IOSCHED_CFQ=y | ||
145 | CONFIG_ATA_OVER_ETH=m | ||
146 | |||
147 | # | ||
148 | # ATA/ATAPI/MFM/RLL support | ||
149 | # | ||
150 | # CONFIG_IDE is not set | ||
151 | |||
152 | # | ||
153 | # SCSI device support | ||
154 | # | ||
155 | CONFIG_SCSI=y | ||
156 | CONFIG_SCSI_PROC_FS=y | ||
157 | |||
158 | # | ||
159 | # SCSI support type (disk, tape, CD-ROM) | ||
160 | # | ||
161 | CONFIG_BLK_DEV_SD=y | ||
162 | CONFIG_CHR_DEV_ST=m | ||
163 | # CONFIG_CHR_DEV_OSST is not set | ||
164 | CONFIG_BLK_DEV_SR=y | ||
165 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
166 | CONFIG_CHR_DEV_SG=m | ||
167 | |||
168 | # | ||
169 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
170 | # | ||
171 | # CONFIG_SCSI_MULTI_LUN is not set | ||
172 | CONFIG_SCSI_CONSTANTS=y | ||
173 | # CONFIG_SCSI_LOGGING is not set | ||
174 | |||
175 | # | ||
176 | # SCSI Transport Attributes | ||
177 | # | ||
178 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
179 | # CONFIG_SCSI_FC_ATTRS is not set | ||
180 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
181 | |||
182 | # | ||
183 | # SCSI low-level drivers | ||
184 | # | ||
185 | # CONFIG_SCSI_SATA is not set | ||
186 | # CONFIG_SCSI_DEBUG is not set | ||
187 | CONFIG_SUN3X_ESP=y | ||
188 | |||
189 | # | ||
190 | # Multi-device support (RAID and LVM) | ||
191 | # | ||
192 | CONFIG_MD=y | ||
193 | CONFIG_BLK_DEV_MD=m | ||
194 | CONFIG_MD_LINEAR=m | ||
195 | CONFIG_MD_RAID0=m | ||
196 | CONFIG_MD_RAID1=m | ||
197 | # CONFIG_MD_RAID10 is not set | ||
198 | CONFIG_MD_RAID5=m | ||
199 | CONFIG_MD_RAID6=m | ||
200 | CONFIG_MD_MULTIPATH=m | ||
201 | # CONFIG_MD_FAULTY is not set | ||
202 | CONFIG_BLK_DEV_DM=m | ||
203 | CONFIG_DM_CRYPT=m | ||
204 | CONFIG_DM_SNAPSHOT=m | ||
205 | CONFIG_DM_MIRROR=m | ||
206 | CONFIG_DM_ZERO=m | ||
207 | CONFIG_DM_MULTIPATH=m | ||
208 | CONFIG_DM_MULTIPATH_EMC=m | ||
209 | |||
210 | # | ||
211 | # Fusion MPT device support | ||
212 | # | ||
213 | |||
214 | # | ||
215 | # IEEE 1394 (FireWire) support | ||
216 | # | ||
217 | |||
218 | # | ||
219 | # I2O device support | ||
220 | # | ||
221 | |||
222 | # | ||
223 | # Networking support | ||
224 | # | 162 | # |
225 | CONFIG_NET=y | 163 | CONFIG_NET=y |
226 | 164 | ||
@@ -230,10 +168,17 @@ CONFIG_NET=y | |||
230 | CONFIG_PACKET=y | 168 | CONFIG_PACKET=y |
231 | # CONFIG_PACKET_MMAP is not set | 169 | # CONFIG_PACKET_MMAP is not set |
232 | CONFIG_UNIX=y | 170 | CONFIG_UNIX=y |
171 | CONFIG_XFRM=y | ||
172 | # CONFIG_XFRM_USER is not set | ||
173 | # CONFIG_XFRM_SUB_POLICY is not set | ||
174 | CONFIG_XFRM_MIGRATE=y | ||
175 | # CONFIG_XFRM_STATISTICS is not set | ||
233 | CONFIG_NET_KEY=y | 176 | CONFIG_NET_KEY=y |
177 | CONFIG_NET_KEY_MIGRATE=y | ||
234 | CONFIG_INET=y | 178 | CONFIG_INET=y |
235 | # CONFIG_IP_MULTICAST is not set | 179 | # CONFIG_IP_MULTICAST is not set |
236 | # CONFIG_IP_ADVANCED_ROUTER is not set | 180 | # CONFIG_IP_ADVANCED_ROUTER is not set |
181 | CONFIG_IP_FIB_HASH=y | ||
237 | CONFIG_IP_PNP=y | 182 | CONFIG_IP_PNP=y |
238 | CONFIG_IP_PNP_DHCP=y | 183 | CONFIG_IP_PNP_DHCP=y |
239 | CONFIG_IP_PNP_BOOTP=y | 184 | CONFIG_IP_PNP_BOOTP=y |
@@ -245,145 +190,199 @@ CONFIG_SYN_COOKIES=y | |||
245 | CONFIG_INET_AH=m | 190 | CONFIG_INET_AH=m |
246 | CONFIG_INET_ESP=m | 191 | CONFIG_INET_ESP=m |
247 | CONFIG_INET_IPCOMP=m | 192 | CONFIG_INET_IPCOMP=m |
193 | CONFIG_INET_XFRM_TUNNEL=m | ||
248 | CONFIG_INET_TUNNEL=m | 194 | CONFIG_INET_TUNNEL=m |
249 | CONFIG_IP_TCPDIAG=m | 195 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
250 | CONFIG_IP_TCPDIAG_IPV6=y | 196 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
251 | 197 | CONFIG_INET_XFRM_MODE_BEET=m | |
252 | # | 198 | CONFIG_INET_LRO=m |
253 | # IP: Virtual Server Configuration | 199 | CONFIG_INET_DIAG=m |
254 | # | 200 | CONFIG_INET_TCP_DIAG=m |
201 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
202 | CONFIG_TCP_CONG_CUBIC=y | ||
203 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
204 | # CONFIG_TCP_MD5SIG is not set | ||
255 | # CONFIG_IP_VS is not set | 205 | # CONFIG_IP_VS is not set |
256 | CONFIG_IPV6=m | 206 | CONFIG_IPV6=m |
257 | CONFIG_IPV6_PRIVACY=y | 207 | CONFIG_IPV6_PRIVACY=y |
208 | CONFIG_IPV6_ROUTER_PREF=y | ||
209 | CONFIG_IPV6_ROUTE_INFO=y | ||
210 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
258 | CONFIG_INET6_AH=m | 211 | CONFIG_INET6_AH=m |
259 | CONFIG_INET6_ESP=m | 212 | CONFIG_INET6_ESP=m |
260 | CONFIG_INET6_IPCOMP=m | 213 | CONFIG_INET6_IPCOMP=m |
214 | # CONFIG_IPV6_MIP6 is not set | ||
215 | CONFIG_INET6_XFRM_TUNNEL=m | ||
261 | CONFIG_INET6_TUNNEL=m | 216 | CONFIG_INET6_TUNNEL=m |
217 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
218 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
219 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
220 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
221 | CONFIG_IPV6_SIT=m | ||
262 | CONFIG_IPV6_TUNNEL=m | 222 | CONFIG_IPV6_TUNNEL=m |
223 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
224 | # CONFIG_NETWORK_SECMARK is not set | ||
263 | CONFIG_NETFILTER=y | 225 | CONFIG_NETFILTER=y |
264 | # CONFIG_NETFILTER_DEBUG is not set | 226 | # CONFIG_NETFILTER_DEBUG is not set |
227 | CONFIG_NETFILTER_ADVANCED=y | ||
228 | |||
229 | # | ||
230 | # Core Netfilter Configuration | ||
231 | # | ||
232 | CONFIG_NETFILTER_NETLINK=m | ||
233 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
234 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
235 | CONFIG_NF_CONNTRACK=m | ||
236 | CONFIG_NF_CT_ACCT=y | ||
237 | CONFIG_NF_CONNTRACK_MARK=y | ||
238 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
239 | CONFIG_NF_CT_PROTO_GRE=m | ||
240 | CONFIG_NF_CT_PROTO_SCTP=m | ||
241 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
242 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
243 | CONFIG_NF_CONNTRACK_FTP=m | ||
244 | CONFIG_NF_CONNTRACK_H323=m | ||
245 | CONFIG_NF_CONNTRACK_IRC=m | ||
246 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
247 | CONFIG_NF_CONNTRACK_PPTP=m | ||
248 | CONFIG_NF_CONNTRACK_SANE=m | ||
249 | CONFIG_NF_CONNTRACK_SIP=m | ||
250 | CONFIG_NF_CONNTRACK_TFTP=m | ||
251 | # CONFIG_NF_CT_NETLINK is not set | ||
252 | CONFIG_NETFILTER_XTABLES=m | ||
253 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
254 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
255 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
256 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
257 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
258 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
259 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
260 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
261 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
262 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
263 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
264 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
265 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
266 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
267 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
268 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
269 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
270 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
271 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
272 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
273 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
274 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
275 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
276 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
277 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
278 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
279 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
280 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
281 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
282 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
283 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
265 | 293 | ||
266 | # | 294 | # |
267 | # IP: Netfilter Configuration | 295 | # IP: Netfilter Configuration |
268 | # | 296 | # |
269 | CONFIG_IP_NF_CONNTRACK=m | 297 | CONFIG_NF_CONNTRACK_IPV4=m |
270 | # CONFIG_IP_NF_CT_ACCT is not set | 298 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
271 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
272 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
273 | CONFIG_IP_NF_FTP=m | ||
274 | CONFIG_IP_NF_IRC=m | ||
275 | CONFIG_IP_NF_TFTP=m | ||
276 | CONFIG_IP_NF_AMANDA=m | ||
277 | CONFIG_IP_NF_QUEUE=m | 299 | CONFIG_IP_NF_QUEUE=m |
278 | CONFIG_IP_NF_IPTABLES=m | 300 | CONFIG_IP_NF_IPTABLES=m |
279 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
280 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
281 | CONFIG_IP_NF_MATCH_MAC=m | ||
282 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
283 | CONFIG_IP_NF_MATCH_MARK=m | ||
284 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
285 | CONFIG_IP_NF_MATCH_TOS=m | ||
286 | CONFIG_IP_NF_MATCH_RECENT=m | 301 | CONFIG_IP_NF_MATCH_RECENT=m |
287 | CONFIG_IP_NF_MATCH_ECN=m | 302 | CONFIG_IP_NF_MATCH_ECN=m |
288 | CONFIG_IP_NF_MATCH_DSCP=m | 303 | CONFIG_IP_NF_MATCH_AH=m |
289 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
290 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
291 | CONFIG_IP_NF_MATCH_TTL=m | 304 | CONFIG_IP_NF_MATCH_TTL=m |
292 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
293 | CONFIG_IP_NF_MATCH_HELPER=m | ||
294 | CONFIG_IP_NF_MATCH_STATE=m | ||
295 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
296 | CONFIG_IP_NF_MATCH_OWNER=m | ||
297 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 305 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
298 | CONFIG_IP_NF_MATCH_REALM=m | ||
299 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
300 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
301 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
302 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
303 | CONFIG_IP_NF_FILTER=m | 306 | CONFIG_IP_NF_FILTER=m |
304 | CONFIG_IP_NF_TARGET_REJECT=m | 307 | CONFIG_IP_NF_TARGET_REJECT=m |
305 | CONFIG_IP_NF_TARGET_LOG=m | 308 | CONFIG_IP_NF_TARGET_LOG=m |
306 | CONFIG_IP_NF_TARGET_ULOG=m | 309 | CONFIG_IP_NF_TARGET_ULOG=m |
307 | CONFIG_IP_NF_TARGET_TCPMSS=m | 310 | CONFIG_NF_NAT=m |
308 | CONFIG_IP_NF_NAT=m | 311 | CONFIG_NF_NAT_NEEDED=y |
309 | CONFIG_IP_NF_NAT_NEEDED=y | ||
310 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 312 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
311 | CONFIG_IP_NF_TARGET_REDIRECT=m | 313 | CONFIG_IP_NF_TARGET_REDIRECT=m |
312 | CONFIG_IP_NF_TARGET_NETMAP=m | 314 | CONFIG_IP_NF_TARGET_NETMAP=m |
313 | CONFIG_IP_NF_TARGET_SAME=m | 315 | CONFIG_NF_NAT_SNMP_BASIC=m |
314 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 316 | CONFIG_NF_NAT_PROTO_GRE=m |
315 | CONFIG_IP_NF_NAT_IRC=m | 317 | CONFIG_NF_NAT_FTP=m |
316 | CONFIG_IP_NF_NAT_FTP=m | 318 | CONFIG_NF_NAT_IRC=m |
317 | CONFIG_IP_NF_NAT_TFTP=m | 319 | CONFIG_NF_NAT_TFTP=m |
318 | CONFIG_IP_NF_NAT_AMANDA=m | 320 | CONFIG_NF_NAT_AMANDA=m |
321 | CONFIG_NF_NAT_PPTP=m | ||
322 | CONFIG_NF_NAT_H323=m | ||
323 | CONFIG_NF_NAT_SIP=m | ||
319 | CONFIG_IP_NF_MANGLE=m | 324 | CONFIG_IP_NF_MANGLE=m |
320 | CONFIG_IP_NF_TARGET_TOS=m | ||
321 | CONFIG_IP_NF_TARGET_ECN=m | 325 | CONFIG_IP_NF_TARGET_ECN=m |
322 | CONFIG_IP_NF_TARGET_DSCP=m | 326 | CONFIG_IP_NF_TARGET_TTL=m |
323 | CONFIG_IP_NF_TARGET_MARK=m | 327 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
324 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
325 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
326 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | ||
327 | CONFIG_IP_NF_RAW=m | 328 | CONFIG_IP_NF_RAW=m |
328 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
329 | CONFIG_IP_NF_ARPTABLES=m | 329 | CONFIG_IP_NF_ARPTABLES=m |
330 | CONFIG_IP_NF_ARPFILTER=m | 330 | CONFIG_IP_NF_ARPFILTER=m |
331 | CONFIG_IP_NF_ARP_MANGLE=m | 331 | CONFIG_IP_NF_ARP_MANGLE=m |
332 | 332 | ||
333 | # | 333 | # |
334 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 334 | # IPv6: Netfilter Configuration |
335 | # | 335 | # |
336 | CONFIG_NF_CONNTRACK_IPV6=m | ||
336 | CONFIG_IP6_NF_QUEUE=m | 337 | CONFIG_IP6_NF_QUEUE=m |
337 | CONFIG_IP6_NF_IPTABLES=m | 338 | CONFIG_IP6_NF_IPTABLES=m |
338 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
339 | CONFIG_IP6_NF_MATCH_MAC=m | ||
340 | CONFIG_IP6_NF_MATCH_RT=m | 339 | CONFIG_IP6_NF_MATCH_RT=m |
341 | CONFIG_IP6_NF_MATCH_OPTS=m | 340 | CONFIG_IP6_NF_MATCH_OPTS=m |
342 | CONFIG_IP6_NF_MATCH_FRAG=m | 341 | CONFIG_IP6_NF_MATCH_FRAG=m |
343 | CONFIG_IP6_NF_MATCH_HL=m | 342 | CONFIG_IP6_NF_MATCH_HL=m |
344 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
345 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
346 | CONFIG_IP6_NF_MATCH_MARK=m | ||
347 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 343 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
348 | CONFIG_IP6_NF_MATCH_AHESP=m | 344 | CONFIG_IP6_NF_MATCH_AH=m |
349 | CONFIG_IP6_NF_MATCH_LENGTH=m | 345 | CONFIG_IP6_NF_MATCH_MH=m |
350 | CONFIG_IP6_NF_MATCH_EUI64=m | 346 | CONFIG_IP6_NF_MATCH_EUI64=m |
351 | CONFIG_IP6_NF_FILTER=m | 347 | CONFIG_IP6_NF_FILTER=m |
352 | CONFIG_IP6_NF_TARGET_LOG=m | 348 | CONFIG_IP6_NF_TARGET_LOG=m |
349 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
353 | CONFIG_IP6_NF_MANGLE=m | 350 | CONFIG_IP6_NF_MANGLE=m |
354 | CONFIG_IP6_NF_TARGET_MARK=m | 351 | CONFIG_IP6_NF_TARGET_HL=m |
355 | CONFIG_IP6_NF_RAW=m | 352 | CONFIG_IP6_NF_RAW=m |
356 | CONFIG_XFRM=y | 353 | CONFIG_IP_DCCP=m |
357 | # CONFIG_XFRM_USER is not set | 354 | CONFIG_INET_DCCP_DIAG=m |
355 | CONFIG_IP_DCCP_ACKVEC=y | ||
358 | 356 | ||
359 | # | 357 | # |
360 | # SCTP Configuration (EXPERIMENTAL) | 358 | # DCCP CCIDs Configuration (EXPERIMENTAL) |
361 | # | 359 | # |
360 | CONFIG_IP_DCCP_CCID2=m | ||
361 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
362 | CONFIG_IP_DCCP_CCID3=m | ||
363 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
364 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
365 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
362 | CONFIG_IP_SCTP=m | 366 | CONFIG_IP_SCTP=m |
363 | # CONFIG_SCTP_DBG_MSG is not set | 367 | # CONFIG_SCTP_DBG_MSG is not set |
364 | # CONFIG_SCTP_DBG_OBJCNT is not set | 368 | # CONFIG_SCTP_DBG_OBJCNT is not set |
365 | # CONFIG_SCTP_HMAC_NONE is not set | 369 | # CONFIG_SCTP_HMAC_NONE is not set |
366 | # CONFIG_SCTP_HMAC_SHA1 is not set | 370 | # CONFIG_SCTP_HMAC_SHA1 is not set |
367 | CONFIG_SCTP_HMAC_MD5=y | 371 | CONFIG_SCTP_HMAC_MD5=y |
372 | # CONFIG_TIPC is not set | ||
368 | # CONFIG_ATM is not set | 373 | # CONFIG_ATM is not set |
369 | # CONFIG_BRIDGE is not set | 374 | # CONFIG_BRIDGE is not set |
370 | # CONFIG_VLAN_8021Q is not set | 375 | # CONFIG_VLAN_8021Q is not set |
371 | # CONFIG_DECNET is not set | 376 | # CONFIG_DECNET is not set |
372 | CONFIG_LLC=m | 377 | CONFIG_LLC=m |
373 | # CONFIG_LLC2 is not set | 378 | # CONFIG_LLC2 is not set |
374 | CONFIG_IPX=m | 379 | # CONFIG_IPX is not set |
375 | # CONFIG_IPX_INTERN is not set | ||
376 | CONFIG_ATALK=m | 380 | CONFIG_ATALK=m |
377 | # CONFIG_DEV_APPLETALK is not set | 381 | # CONFIG_DEV_APPLETALK is not set |
378 | # CONFIG_X25 is not set | 382 | # CONFIG_X25 is not set |
379 | # CONFIG_LAPB is not set | 383 | # CONFIG_LAPB is not set |
380 | # CONFIG_NET_DIVERT is not set | ||
381 | # CONFIG_ECONET is not set | 384 | # CONFIG_ECONET is not set |
382 | # CONFIG_WAN_ROUTER is not set | 385 | # CONFIG_WAN_ROUTER is not set |
383 | |||
384 | # | ||
385 | # QoS and/or fair queueing | ||
386 | # | ||
387 | # CONFIG_NET_SCHED is not set | 386 | # CONFIG_NET_SCHED is not set |
388 | CONFIG_NET_CLS_ROUTE=y | 387 | CONFIG_NET_CLS_ROUTE=y |
389 | 388 | ||
@@ -391,46 +390,155 @@ CONFIG_NET_CLS_ROUTE=y | |||
391 | # Network testing | 390 | # Network testing |
392 | # | 391 | # |
393 | # CONFIG_NET_PKTGEN is not set | 392 | # CONFIG_NET_PKTGEN is not set |
394 | CONFIG_NETPOLL=y | ||
395 | # CONFIG_NETPOLL_RX is not set | ||
396 | # CONFIG_NETPOLL_TRAP is not set | ||
397 | CONFIG_NET_POLL_CONTROLLER=y | ||
398 | # CONFIG_HAMRADIO is not set | 393 | # CONFIG_HAMRADIO is not set |
394 | # CONFIG_CAN is not set | ||
399 | # CONFIG_IRDA is not set | 395 | # CONFIG_IRDA is not set |
400 | # CONFIG_BT is not set | 396 | # CONFIG_BT is not set |
401 | CONFIG_NETDEVICES=y | 397 | # CONFIG_AF_RXRPC is not set |
402 | CONFIG_DUMMY=m | ||
403 | # CONFIG_BONDING is not set | ||
404 | CONFIG_EQUALIZER=m | ||
405 | # CONFIG_TUN is not set | ||
406 | 398 | ||
407 | # | 399 | # |
408 | # Ethernet (10 or 100Mbit) | 400 | # Wireless |
409 | # | 401 | # |
410 | CONFIG_NET_ETHERNET=y | 402 | # CONFIG_CFG80211 is not set |
411 | CONFIG_MII=m | 403 | CONFIG_WIRELESS_EXT=y |
412 | CONFIG_SUN3LANCE=y | 404 | # CONFIG_MAC80211 is not set |
405 | CONFIG_IEEE80211=m | ||
406 | # CONFIG_IEEE80211_DEBUG is not set | ||
407 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
408 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
409 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
410 | CONFIG_IEEE80211_SOFTMAC=m | ||
411 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
412 | # CONFIG_RFKILL is not set | ||
413 | # CONFIG_NET_9P is not set | ||
413 | 414 | ||
414 | # | 415 | # |
415 | # Ethernet (1000 Mbit) | 416 | # Device Drivers |
416 | # | 417 | # |
417 | 418 | ||
418 | # | 419 | # |
419 | # Ethernet (10000 Mbit) | 420 | # Generic Driver Options |
420 | # | 421 | # |
422 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
423 | CONFIG_STANDALONE=y | ||
424 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
425 | CONFIG_FW_LOADER=m | ||
426 | # CONFIG_SYS_HYPERVISOR is not set | ||
427 | CONFIG_CONNECTOR=m | ||
428 | # CONFIG_MTD is not set | ||
429 | # CONFIG_PARPORT is not set | ||
430 | CONFIG_BLK_DEV=y | ||
431 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
432 | CONFIG_BLK_DEV_LOOP=y | ||
433 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
434 | CONFIG_BLK_DEV_NBD=m | ||
435 | CONFIG_BLK_DEV_RAM=y | ||
436 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
437 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
438 | # CONFIG_BLK_DEV_XIP is not set | ||
439 | CONFIG_CDROM_PKTCDVD=m | ||
440 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
441 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
442 | CONFIG_ATA_OVER_ETH=m | ||
443 | CONFIG_MISC_DEVICES=y | ||
444 | # CONFIG_EEPROM_93CX6 is not set | ||
445 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
446 | CONFIG_HAVE_IDE=y | ||
447 | # CONFIG_IDE is not set | ||
421 | 448 | ||
422 | # | 449 | # |
423 | # Token Ring devices | 450 | # SCSI device support |
424 | # | 451 | # |
452 | CONFIG_RAID_ATTRS=m | ||
453 | CONFIG_SCSI=y | ||
454 | CONFIG_SCSI_DMA=y | ||
455 | CONFIG_SCSI_TGT=m | ||
456 | # CONFIG_SCSI_NETLINK is not set | ||
457 | CONFIG_SCSI_PROC_FS=y | ||
425 | 458 | ||
426 | # | 459 | # |
427 | # Wireless LAN (non-hamradio) | 460 | # SCSI support type (disk, tape, CD-ROM) |
428 | # | 461 | # |
429 | # CONFIG_NET_RADIO is not set | 462 | CONFIG_BLK_DEV_SD=y |
463 | CONFIG_CHR_DEV_ST=m | ||
464 | CONFIG_CHR_DEV_OSST=m | ||
465 | CONFIG_BLK_DEV_SR=y | ||
466 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
467 | CONFIG_CHR_DEV_SG=m | ||
468 | # CONFIG_CHR_DEV_SCH is not set | ||
430 | 469 | ||
431 | # | 470 | # |
432 | # Wan interfaces | 471 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
433 | # | 472 | # |
473 | # CONFIG_SCSI_MULTI_LUN is not set | ||
474 | CONFIG_SCSI_CONSTANTS=y | ||
475 | # CONFIG_SCSI_LOGGING is not set | ||
476 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
477 | CONFIG_SCSI_WAIT_SCAN=m | ||
478 | |||
479 | # | ||
480 | # SCSI Transports | ||
481 | # | ||
482 | CONFIG_SCSI_SPI_ATTRS=y | ||
483 | # CONFIG_SCSI_FC_ATTRS is not set | ||
484 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
485 | CONFIG_SCSI_SAS_ATTRS=m | ||
486 | CONFIG_SCSI_SAS_LIBSAS=m | ||
487 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
488 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
489 | CONFIG_SCSI_SRP_ATTRS=m | ||
490 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
491 | CONFIG_SCSI_LOWLEVEL=y | ||
492 | CONFIG_ISCSI_TCP=m | ||
493 | # CONFIG_SCSI_DEBUG is not set | ||
494 | CONFIG_SUN3X_ESP=y | ||
495 | CONFIG_MD=y | ||
496 | CONFIG_BLK_DEV_MD=m | ||
497 | CONFIG_MD_LINEAR=m | ||
498 | CONFIG_MD_RAID0=m | ||
499 | CONFIG_MD_RAID1=m | ||
500 | # CONFIG_MD_RAID10 is not set | ||
501 | CONFIG_MD_RAID456=m | ||
502 | CONFIG_MD_RAID5_RESHAPE=y | ||
503 | CONFIG_MD_MULTIPATH=m | ||
504 | # CONFIG_MD_FAULTY is not set | ||
505 | CONFIG_BLK_DEV_DM=m | ||
506 | # CONFIG_DM_DEBUG is not set | ||
507 | CONFIG_DM_CRYPT=m | ||
508 | CONFIG_DM_SNAPSHOT=m | ||
509 | CONFIG_DM_MIRROR=m | ||
510 | CONFIG_DM_ZERO=m | ||
511 | CONFIG_DM_MULTIPATH=m | ||
512 | CONFIG_DM_MULTIPATH_EMC=m | ||
513 | CONFIG_DM_MULTIPATH_RDAC=m | ||
514 | CONFIG_DM_MULTIPATH_HP=m | ||
515 | # CONFIG_DM_DELAY is not set | ||
516 | CONFIG_DM_UEVENT=y | ||
517 | CONFIG_NETDEVICES=y | ||
518 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
519 | CONFIG_DUMMY=m | ||
520 | # CONFIG_BONDING is not set | ||
521 | CONFIG_MACVLAN=m | ||
522 | CONFIG_EQUALIZER=m | ||
523 | # CONFIG_TUN is not set | ||
524 | CONFIG_VETH=m | ||
525 | # CONFIG_PHYLIB is not set | ||
526 | CONFIG_NET_ETHERNET=y | ||
527 | # CONFIG_MII is not set | ||
528 | CONFIG_SUN3LANCE=y | ||
529 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
530 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
531 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
532 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
533 | # CONFIG_B44 is not set | ||
534 | # CONFIG_NETDEV_1000 is not set | ||
535 | # CONFIG_NETDEV_10000 is not set | ||
536 | |||
537 | # | ||
538 | # Wireless LAN | ||
539 | # | ||
540 | # CONFIG_WLAN_PRE80211 is not set | ||
541 | # CONFIG_WLAN_80211 is not set | ||
434 | # CONFIG_WAN is not set | 542 | # CONFIG_WAN is not set |
435 | CONFIG_PPP=m | 543 | CONFIG_PPP=m |
436 | # CONFIG_PPP_MULTILINK is not set | 544 | # CONFIG_PPP_MULTILINK is not set |
@@ -439,28 +547,28 @@ CONFIG_PPP_ASYNC=m | |||
439 | CONFIG_PPP_SYNC_TTY=m | 547 | CONFIG_PPP_SYNC_TTY=m |
440 | CONFIG_PPP_DEFLATE=m | 548 | CONFIG_PPP_DEFLATE=m |
441 | CONFIG_PPP_BSDCOMP=m | 549 | CONFIG_PPP_BSDCOMP=m |
550 | CONFIG_PPP_MPPE=m | ||
442 | CONFIG_PPPOE=m | 551 | CONFIG_PPPOE=m |
552 | CONFIG_PPPOL2TP=m | ||
443 | CONFIG_SLIP=m | 553 | CONFIG_SLIP=m |
444 | CONFIG_SLIP_COMPRESSED=y | 554 | CONFIG_SLIP_COMPRESSED=y |
555 | CONFIG_SLHC=m | ||
445 | CONFIG_SLIP_SMART=y | 556 | CONFIG_SLIP_SMART=y |
446 | CONFIG_SLIP_MODE_SLIP6=y | 557 | CONFIG_SLIP_MODE_SLIP6=y |
447 | CONFIG_SHAPER=m | ||
448 | CONFIG_NETCONSOLE=m | 558 | CONFIG_NETCONSOLE=m |
449 | 559 | CONFIG_NETCONSOLE_DYNAMIC=y | |
450 | # | 560 | CONFIG_NETPOLL=y |
451 | # ISDN subsystem | 561 | # CONFIG_NETPOLL_TRAP is not set |
452 | # | 562 | CONFIG_NET_POLL_CONTROLLER=y |
453 | # CONFIG_ISDN is not set | 563 | # CONFIG_ISDN is not set |
454 | |||
455 | # | ||
456 | # Telephony Support | ||
457 | # | ||
458 | # CONFIG_PHONE is not set | 564 | # CONFIG_PHONE is not set |
459 | 565 | ||
460 | # | 566 | # |
461 | # Input device support | 567 | # Input device support |
462 | # | 568 | # |
463 | CONFIG_INPUT=y | 569 | CONFIG_INPUT=y |
570 | CONFIG_INPUT_FF_MEMLESS=m | ||
571 | # CONFIG_INPUT_POLLDEV is not set | ||
464 | 572 | ||
465 | # | 573 | # |
466 | # Userland interfaces | 574 | # Userland interfaces |
@@ -470,7 +578,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y | |||
470 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | 578 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 |
471 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | 579 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 |
472 | # CONFIG_INPUT_JOYDEV is not set | 580 | # CONFIG_INPUT_JOYDEV is not set |
473 | # CONFIG_INPUT_TSDEV is not set | ||
474 | # CONFIG_INPUT_EVDEV is not set | 581 | # CONFIG_INPUT_EVDEV is not set |
475 | # CONFIG_INPUT_EVBUG is not set | 582 | # CONFIG_INPUT_EVBUG is not set |
476 | 583 | ||
@@ -483,11 +590,19 @@ CONFIG_KEYBOARD_SUNKBD=y | |||
483 | # CONFIG_KEYBOARD_LKKBD is not set | 590 | # CONFIG_KEYBOARD_LKKBD is not set |
484 | # CONFIG_KEYBOARD_XTKBD is not set | 591 | # CONFIG_KEYBOARD_XTKBD is not set |
485 | # CONFIG_KEYBOARD_NEWTON is not set | 592 | # CONFIG_KEYBOARD_NEWTON is not set |
593 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
486 | CONFIG_INPUT_MOUSE=y | 594 | CONFIG_INPUT_MOUSE=y |
487 | CONFIG_MOUSE_PS2=m | 595 | CONFIG_MOUSE_PS2=m |
596 | CONFIG_MOUSE_PS2_ALPS=y | ||
597 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
598 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
599 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
600 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
601 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
488 | CONFIG_MOUSE_SERIAL=m | 602 | CONFIG_MOUSE_SERIAL=m |
489 | # CONFIG_MOUSE_VSXXXAA is not set | 603 | # CONFIG_MOUSE_VSXXXAA is not set |
490 | # CONFIG_INPUT_JOYSTICK is not set | 604 | # CONFIG_INPUT_JOYSTICK is not set |
605 | # CONFIG_INPUT_TABLET is not set | ||
491 | # CONFIG_INPUT_TOUCHSCREEN is not set | 606 | # CONFIG_INPUT_TOUCHSCREEN is not set |
492 | # CONFIG_INPUT_MISC is not set | 607 | # CONFIG_INPUT_MISC is not set |
493 | 608 | ||
@@ -495,7 +610,7 @@ CONFIG_MOUSE_SERIAL=m | |||
495 | # Hardware I/O ports | 610 | # Hardware I/O ports |
496 | # | 611 | # |
497 | CONFIG_SERIO=y | 612 | CONFIG_SERIO=y |
498 | CONFIG_SERIO_SERPORT=m | 613 | # CONFIG_SERIO_SERPORT is not set |
499 | CONFIG_SERIO_LIBPS2=m | 614 | CONFIG_SERIO_LIBPS2=m |
500 | # CONFIG_SERIO_RAW is not set | 615 | # CONFIG_SERIO_RAW is not set |
501 | # CONFIG_GAMEPORT is not set | 616 | # CONFIG_GAMEPORT is not set |
@@ -506,6 +621,7 @@ CONFIG_SERIO_LIBPS2=m | |||
506 | CONFIG_VT=y | 621 | CONFIG_VT=y |
507 | CONFIG_VT_CONSOLE=y | 622 | CONFIG_VT_CONSOLE=y |
508 | CONFIG_HW_CONSOLE=y | 623 | CONFIG_HW_CONSOLE=y |
624 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
509 | # CONFIG_SERIAL_NONSTANDARD is not set | 625 | # CONFIG_SERIAL_NONSTANDARD is not set |
510 | 626 | ||
511 | # | 627 | # |
@@ -519,112 +635,113 @@ CONFIG_HW_CONSOLE=y | |||
519 | CONFIG_UNIX98_PTYS=y | 635 | CONFIG_UNIX98_PTYS=y |
520 | CONFIG_LEGACY_PTYS=y | 636 | CONFIG_LEGACY_PTYS=y |
521 | CONFIG_LEGACY_PTY_COUNT=256 | 637 | CONFIG_LEGACY_PTY_COUNT=256 |
522 | |||
523 | # | ||
524 | # IPMI | ||
525 | # | ||
526 | # CONFIG_IPMI_HANDLER is not set | 638 | # CONFIG_IPMI_HANDLER is not set |
527 | 639 | # CONFIG_HW_RANDOM is not set | |
528 | # | 640 | CONFIG_GEN_RTC=m |
529 | # Watchdog Cards | ||
530 | # | ||
531 | # CONFIG_WATCHDOG is not set | ||
532 | CONFIG_GEN_RTC=y | ||
533 | CONFIG_GEN_RTC_X=y | 641 | CONFIG_GEN_RTC_X=y |
534 | # CONFIG_DTLK is not set | ||
535 | # CONFIG_R3964 is not set | 642 | # CONFIG_R3964 is not set |
536 | |||
537 | # | ||
538 | # Ftape, the floppy tape device driver | ||
539 | # | ||
540 | # CONFIG_DRM is not set | ||
541 | # CONFIG_RAW_DRIVER is not set | 643 | # CONFIG_RAW_DRIVER is not set |
542 | 644 | # CONFIG_TCG_TPM is not set | |
543 | # | ||
544 | # TPM devices | ||
545 | # | ||
546 | |||
547 | # | ||
548 | # I2C support | ||
549 | # | ||
550 | # CONFIG_I2C is not set | 645 | # CONFIG_I2C is not set |
551 | 646 | ||
552 | # | 647 | # |
553 | # Dallas's 1-wire bus | 648 | # SPI support |
554 | # | 649 | # |
650 | # CONFIG_SPI is not set | ||
651 | # CONFIG_SPI_MASTER is not set | ||
555 | # CONFIG_W1 is not set | 652 | # CONFIG_W1 is not set |
653 | # CONFIG_POWER_SUPPLY is not set | ||
654 | # CONFIG_HWMON is not set | ||
655 | # CONFIG_THERMAL is not set | ||
656 | # CONFIG_WATCHDOG is not set | ||
556 | 657 | ||
557 | # | 658 | # |
558 | # Misc devices | 659 | # Sonics Silicon Backplane |
559 | # | 660 | # |
661 | CONFIG_SSB_POSSIBLE=y | ||
662 | # CONFIG_SSB is not set | ||
560 | 663 | ||
561 | # | 664 | # |
562 | # Multimedia devices | 665 | # Multifunction device drivers |
563 | # | 666 | # |
564 | # CONFIG_VIDEO_DEV is not set | 667 | # CONFIG_MFD_SM501 is not set |
565 | 668 | ||
566 | # | 669 | # |
567 | # Digital Video Broadcasting Devices | 670 | # Multimedia devices |
568 | # | 671 | # |
569 | # CONFIG_DVB is not set | 672 | # CONFIG_VIDEO_DEV is not set |
673 | # CONFIG_DVB_CORE is not set | ||
674 | # CONFIG_DAB is not set | ||
570 | 675 | ||
571 | # | 676 | # |
572 | # Graphics support | 677 | # Graphics support |
573 | # | 678 | # |
679 | # CONFIG_VGASTATE is not set | ||
680 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
574 | CONFIG_FB=y | 681 | CONFIG_FB=y |
682 | # CONFIG_FIRMWARE_EDID is not set | ||
683 | # CONFIG_FB_DDC is not set | ||
575 | # CONFIG_FB_CFB_FILLRECT is not set | 684 | # CONFIG_FB_CFB_FILLRECT is not set |
576 | # CONFIG_FB_CFB_COPYAREA is not set | 685 | # CONFIG_FB_CFB_COPYAREA is not set |
577 | # CONFIG_FB_CFB_IMAGEBLIT is not set | 686 | # CONFIG_FB_CFB_IMAGEBLIT is not set |
578 | # CONFIG_FB_SOFT_CURSOR is not set | 687 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
688 | # CONFIG_FB_SYS_FILLRECT is not set | ||
689 | # CONFIG_FB_SYS_COPYAREA is not set | ||
690 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
691 | # CONFIG_FB_SYS_FOPS is not set | ||
692 | CONFIG_FB_DEFERRED_IO=y | ||
693 | # CONFIG_FB_SVGALIB is not set | ||
579 | # CONFIG_FB_MACMODES is not set | 694 | # CONFIG_FB_MACMODES is not set |
580 | CONFIG_FB_MODE_HELPERS=y | 695 | # CONFIG_FB_BACKLIGHT is not set |
696 | # CONFIG_FB_MODE_HELPERS is not set | ||
581 | # CONFIG_FB_TILEBLITTING is not set | 697 | # CONFIG_FB_TILEBLITTING is not set |
698 | |||
699 | # | ||
700 | # Frame buffer hardware drivers | ||
701 | # | ||
702 | # CONFIG_FB_UVESA is not set | ||
582 | # CONFIG_FB_S1D13XXX is not set | 703 | # CONFIG_FB_S1D13XXX is not set |
583 | # CONFIG_FB_VIRTUAL is not set | 704 | # CONFIG_FB_VIRTUAL is not set |
705 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
706 | |||
707 | # | ||
708 | # Display device support | ||
709 | # | ||
710 | # CONFIG_DISPLAY_SUPPORT is not set | ||
584 | 711 | ||
585 | # | 712 | # |
586 | # Console display driver support | 713 | # Console display driver support |
587 | # | 714 | # |
588 | CONFIG_DUMMY_CONSOLE=y | 715 | CONFIG_DUMMY_CONSOLE=y |
589 | CONFIG_FRAMEBUFFER_CONSOLE=y | 716 | CONFIG_FRAMEBUFFER_CONSOLE=y |
717 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
718 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
590 | # CONFIG_FONTS is not set | 719 | # CONFIG_FONTS is not set |
591 | CONFIG_FONT_8x8=y | 720 | CONFIG_FONT_8x8=y |
592 | CONFIG_FONT_8x16=y | 721 | CONFIG_FONT_8x16=y |
593 | |||
594 | # | ||
595 | # Logo configuration | ||
596 | # | ||
597 | CONFIG_LOGO=y | 722 | CONFIG_LOGO=y |
598 | CONFIG_LOGO_LINUX_MONO=y | 723 | CONFIG_LOGO_LINUX_MONO=y |
599 | CONFIG_LOGO_LINUX_VGA16=y | 724 | CONFIG_LOGO_LINUX_VGA16=y |
600 | CONFIG_LOGO_LINUX_CLUT224=y | 725 | CONFIG_LOGO_LINUX_CLUT224=y |
601 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
602 | 726 | ||
603 | # | 727 | # |
604 | # Sound | 728 | # Sound |
605 | # | 729 | # |
606 | # CONFIG_SOUND is not set | 730 | # CONFIG_SOUND is not set |
607 | 731 | CONFIG_HID_SUPPORT=y | |
608 | # | 732 | CONFIG_HID=m |
609 | # USB support | 733 | # CONFIG_HID_DEBUG is not set |
610 | # | 734 | CONFIG_HIDRAW=y |
611 | # CONFIG_USB_ARCH_HAS_HCD is not set | 735 | # CONFIG_USB_SUPPORT is not set |
612 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
613 | |||
614 | # | ||
615 | # USB Gadget Support | ||
616 | # | ||
617 | # CONFIG_USB_GADGET is not set | ||
618 | |||
619 | # | ||
620 | # MMC/SD Card support | ||
621 | # | ||
622 | # CONFIG_MMC is not set | 736 | # CONFIG_MMC is not set |
737 | # CONFIG_MEMSTICK is not set | ||
738 | # CONFIG_NEW_LEDS is not set | ||
739 | # CONFIG_RTC_CLASS is not set | ||
623 | 740 | ||
624 | # | 741 | # |
625 | # InfiniBand support | 742 | # Userspace I/O |
626 | # | 743 | # |
627 | # CONFIG_INFINIBAND is not set | 744 | # CONFIG_UIO is not set |
628 | 745 | ||
629 | # | 746 | # |
630 | # Character devices | 747 | # Character devices |
@@ -635,10 +752,11 @@ CONFIG_LOGO_LINUX_CLUT224=y | |||
635 | # | 752 | # |
636 | CONFIG_EXT2_FS=y | 753 | CONFIG_EXT2_FS=y |
637 | # CONFIG_EXT2_FS_XATTR is not set | 754 | # CONFIG_EXT2_FS_XATTR is not set |
755 | # CONFIG_EXT2_FS_XIP is not set | ||
638 | CONFIG_EXT3_FS=y | 756 | CONFIG_EXT3_FS=y |
639 | # CONFIG_EXT3_FS_XATTR is not set | 757 | # CONFIG_EXT3_FS_XATTR is not set |
758 | # CONFIG_EXT4DEV_FS is not set | ||
640 | CONFIG_JBD=y | 759 | CONFIG_JBD=y |
641 | # CONFIG_JBD_DEBUG is not set | ||
642 | CONFIG_REISERFS_FS=m | 760 | CONFIG_REISERFS_FS=m |
643 | # CONFIG_REISERFS_CHECK is not set | 761 | # CONFIG_REISERFS_CHECK is not set |
644 | # CONFIG_REISERFS_PROC_INFO is not set | 762 | # CONFIG_REISERFS_PROC_INFO is not set |
@@ -649,25 +767,29 @@ CONFIG_JFS_FS=m | |||
649 | # CONFIG_JFS_DEBUG is not set | 767 | # CONFIG_JFS_DEBUG is not set |
650 | # CONFIG_JFS_STATISTICS is not set | 768 | # CONFIG_JFS_STATISTICS is not set |
651 | CONFIG_FS_POSIX_ACL=y | 769 | CONFIG_FS_POSIX_ACL=y |
652 | |||
653 | # | ||
654 | # XFS support | ||
655 | # | ||
656 | CONFIG_XFS_FS=m | 770 | CONFIG_XFS_FS=m |
657 | CONFIG_XFS_EXPORT=y | ||
658 | # CONFIG_XFS_RT is not set | ||
659 | # CONFIG_XFS_QUOTA is not set | 771 | # CONFIG_XFS_QUOTA is not set |
660 | # CONFIG_XFS_SECURITY is not set | 772 | # CONFIG_XFS_SECURITY is not set |
661 | # CONFIG_XFS_POSIX_ACL is not set | 773 | # CONFIG_XFS_POSIX_ACL is not set |
662 | CONFIG_MINIX_FS=y | 774 | # CONFIG_XFS_RT is not set |
663 | # CONFIG_ROMFS_FS is not set | 775 | CONFIG_GFS2_FS=m |
776 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
777 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
778 | CONFIG_OCFS2_FS=m | ||
779 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
780 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
781 | CONFIG_DNOTIFY=y | ||
782 | CONFIG_INOTIFY=y | ||
783 | CONFIG_INOTIFY_USER=y | ||
664 | CONFIG_QUOTA=y | 784 | CONFIG_QUOTA=y |
785 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
786 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
665 | # CONFIG_QFMT_V1 is not set | 787 | # CONFIG_QFMT_V1 is not set |
666 | # CONFIG_QFMT_V2 is not set | 788 | # CONFIG_QFMT_V2 is not set |
667 | CONFIG_QUOTACTL=y | 789 | CONFIG_QUOTACTL=y |
668 | CONFIG_DNOTIFY=y | ||
669 | CONFIG_AUTOFS_FS=m | 790 | CONFIG_AUTOFS_FS=m |
670 | CONFIG_AUTOFS4_FS=m | 791 | CONFIG_AUTOFS4_FS=m |
792 | CONFIG_FUSE_FS=m | ||
671 | 793 | ||
672 | # | 794 | # |
673 | # CD-ROM/DVD Filesystems | 795 | # CD-ROM/DVD Filesystems |
@@ -675,7 +797,6 @@ CONFIG_AUTOFS4_FS=m | |||
675 | CONFIG_ISO9660_FS=y | 797 | CONFIG_ISO9660_FS=y |
676 | CONFIG_JOLIET=y | 798 | CONFIG_JOLIET=y |
677 | CONFIG_ZISOFS=y | 799 | CONFIG_ZISOFS=y |
678 | CONFIG_ZISOFS_FS=y | ||
679 | CONFIG_UDF_FS=m | 800 | CONFIG_UDF_FS=m |
680 | CONFIG_UDF_NLS=y | 801 | CONFIG_UDF_NLS=y |
681 | 802 | ||
@@ -694,15 +815,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
694 | # | 815 | # |
695 | CONFIG_PROC_FS=y | 816 | CONFIG_PROC_FS=y |
696 | CONFIG_PROC_KCORE=y | 817 | CONFIG_PROC_KCORE=y |
818 | CONFIG_PROC_SYSCTL=y | ||
697 | CONFIG_SYSFS=y | 819 | CONFIG_SYSFS=y |
698 | CONFIG_DEVFS_FS=y | ||
699 | CONFIG_DEVFS_MOUNT=y | ||
700 | # CONFIG_DEVFS_DEBUG is not set | ||
701 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
702 | CONFIG_TMPFS=y | 820 | CONFIG_TMPFS=y |
703 | # CONFIG_TMPFS_XATTR is not set | 821 | # CONFIG_TMPFS_POSIX_ACL is not set |
704 | # CONFIG_HUGETLB_PAGE is not set | 822 | # CONFIG_HUGETLB_PAGE is not set |
705 | CONFIG_RAMFS=y | 823 | CONFIG_CONFIGFS_FS=m |
706 | 824 | ||
707 | # | 825 | # |
708 | # Miscellaneous filesystems | 826 | # Miscellaneous filesystems |
@@ -716,44 +834,40 @@ CONFIG_HFSPLUS_FS=m | |||
716 | # CONFIG_EFS_FS is not set | 834 | # CONFIG_EFS_FS is not set |
717 | CONFIG_CRAMFS=m | 835 | CONFIG_CRAMFS=m |
718 | # CONFIG_VXFS_FS is not set | 836 | # CONFIG_VXFS_FS is not set |
837 | CONFIG_MINIX_FS=y | ||
719 | CONFIG_HPFS_FS=m | 838 | CONFIG_HPFS_FS=m |
720 | # CONFIG_QNX4FS_FS is not set | 839 | # CONFIG_QNX4FS_FS is not set |
840 | # CONFIG_ROMFS_FS is not set | ||
721 | CONFIG_SYSV_FS=m | 841 | CONFIG_SYSV_FS=m |
722 | CONFIG_UFS_FS=m | 842 | CONFIG_UFS_FS=m |
723 | CONFIG_UFS_FS_WRITE=y | 843 | # CONFIG_UFS_FS_WRITE is not set |
724 | 844 | # CONFIG_UFS_DEBUG is not set | |
725 | # | 845 | CONFIG_NETWORK_FILESYSTEMS=y |
726 | # Network File Systems | ||
727 | # | ||
728 | CONFIG_NFS_FS=y | 846 | CONFIG_NFS_FS=y |
729 | CONFIG_NFS_V3=y | 847 | CONFIG_NFS_V3=y |
848 | # CONFIG_NFS_V3_ACL is not set | ||
730 | CONFIG_NFS_V4=y | 849 | CONFIG_NFS_V4=y |
731 | # CONFIG_NFS_DIRECTIO is not set | 850 | # CONFIG_NFS_DIRECTIO is not set |
732 | CONFIG_NFSD=m | 851 | CONFIG_NFSD=m |
733 | CONFIG_NFSD_V3=y | 852 | CONFIG_NFSD_V3=y |
734 | CONFIG_NFSD_V4=y | 853 | # CONFIG_NFSD_V3_ACL is not set |
854 | # CONFIG_NFSD_V4 is not set | ||
735 | CONFIG_NFSD_TCP=y | 855 | CONFIG_NFSD_TCP=y |
736 | CONFIG_ROOT_NFS=y | 856 | CONFIG_ROOT_NFS=y |
737 | CONFIG_LOCKD=y | 857 | CONFIG_LOCKD=y |
738 | CONFIG_LOCKD_V4=y | 858 | CONFIG_LOCKD_V4=y |
739 | CONFIG_EXPORTFS=m | 859 | CONFIG_EXPORTFS=m |
860 | CONFIG_NFS_COMMON=y | ||
740 | CONFIG_SUNRPC=y | 861 | CONFIG_SUNRPC=y |
741 | CONFIG_SUNRPC_GSS=y | 862 | CONFIG_SUNRPC_GSS=y |
863 | CONFIG_SUNRPC_BIND34=y | ||
742 | CONFIG_RPCSEC_GSS_KRB5=y | 864 | CONFIG_RPCSEC_GSS_KRB5=y |
743 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 865 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
744 | CONFIG_SMB_FS=m | 866 | CONFIG_SMB_FS=m |
745 | CONFIG_SMB_NLS_DEFAULT=y | 867 | CONFIG_SMB_NLS_DEFAULT=y |
746 | CONFIG_SMB_NLS_REMOTE="cp437" | 868 | CONFIG_SMB_NLS_REMOTE="cp437" |
747 | # CONFIG_CIFS is not set | 869 | # CONFIG_CIFS is not set |
748 | CONFIG_NCP_FS=m | 870 | # CONFIG_NCP_FS is not set |
749 | # CONFIG_NCPFS_PACKET_SIGNING is not set | ||
750 | # CONFIG_NCPFS_IOCTL_LOCKING is not set | ||
751 | # CONFIG_NCPFS_STRONG is not set | ||
752 | # CONFIG_NCPFS_NFS_NS is not set | ||
753 | # CONFIG_NCPFS_OS2_NS is not set | ||
754 | # CONFIG_NCPFS_SMALLDOS is not set | ||
755 | CONFIG_NCPFS_NLS=y | ||
756 | # CONFIG_NCPFS_EXTRAS is not set | ||
757 | CONFIG_CODA_FS=m | 871 | CONFIG_CODA_FS=m |
758 | # CONFIG_CODA_FS_OLD_API is not set | 872 | # CONFIG_CODA_FS_OLD_API is not set |
759 | # CONFIG_AFS_FS is not set | 873 | # CONFIG_AFS_FS is not set |
@@ -764,10 +878,6 @@ CONFIG_CODA_FS=m | |||
764 | # CONFIG_PARTITION_ADVANCED is not set | 878 | # CONFIG_PARTITION_ADVANCED is not set |
765 | CONFIG_MSDOS_PARTITION=y | 879 | CONFIG_MSDOS_PARTITION=y |
766 | CONFIG_SUN_PARTITION=y | 880 | CONFIG_SUN_PARTITION=y |
767 | |||
768 | # | ||
769 | # Native Language Support | ||
770 | # | ||
771 | CONFIG_NLS=y | 881 | CONFIG_NLS=y |
772 | CONFIG_NLS_DEFAULT="iso8859-1" | 882 | CONFIG_NLS_DEFAULT="iso8859-1" |
773 | CONFIG_NLS_CODEPAGE_437=y | 883 | CONFIG_NLS_CODEPAGE_437=y |
@@ -808,35 +918,42 @@ CONFIG_NLS_ISO8859_15=m | |||
808 | CONFIG_NLS_KOI8_R=m | 918 | CONFIG_NLS_KOI8_R=m |
809 | CONFIG_NLS_KOI8_U=m | 919 | CONFIG_NLS_KOI8_U=m |
810 | CONFIG_NLS_UTF8=m | 920 | CONFIG_NLS_UTF8=m |
921 | CONFIG_DLM=m | ||
922 | # CONFIG_DLM_DEBUG is not set | ||
811 | 923 | ||
812 | # | 924 | # |
813 | # Kernel hacking | 925 | # Kernel hacking |
814 | # | 926 | # |
815 | # CONFIG_PRINTK_TIME is not set | 927 | # CONFIG_PRINTK_TIME is not set |
816 | CONFIG_DEBUG_KERNEL=y | 928 | CONFIG_ENABLE_WARN_DEPRECATED=y |
929 | CONFIG_ENABLE_MUST_CHECK=y | ||
817 | CONFIG_MAGIC_SYSRQ=y | 930 | CONFIG_MAGIC_SYSRQ=y |
818 | CONFIG_LOG_BUF_SHIFT=16 | 931 | # CONFIG_UNUSED_SYMBOLS is not set |
819 | # CONFIG_SCHEDSTATS is not set | ||
820 | # CONFIG_DEBUG_SLAB is not set | ||
821 | # CONFIG_DEBUG_SPINLOCK is not set | ||
822 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
823 | # CONFIG_DEBUG_KOBJECT is not set | ||
824 | CONFIG_DEBUG_BUGVERBOSE=y | ||
825 | # CONFIG_DEBUG_INFO is not set | ||
826 | # CONFIG_DEBUG_FS is not set | 932 | # CONFIG_DEBUG_FS is not set |
827 | # CONFIG_FRAME_POINTER is not set | 933 | # CONFIG_HEADERS_CHECK is not set |
934 | # CONFIG_DEBUG_KERNEL is not set | ||
935 | CONFIG_DEBUG_BUGVERBOSE=y | ||
936 | # CONFIG_SAMPLES is not set | ||
828 | 937 | ||
829 | # | 938 | # |
830 | # Security options | 939 | # Security options |
831 | # | 940 | # |
832 | # CONFIG_KEYS is not set | 941 | # CONFIG_KEYS is not set |
833 | # CONFIG_SECURITY is not set | 942 | # CONFIG_SECURITY is not set |
834 | 943 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
835 | # | 944 | CONFIG_XOR_BLOCKS=m |
836 | # Cryptographic options | 945 | CONFIG_ASYNC_CORE=m |
837 | # | 946 | CONFIG_ASYNC_MEMCPY=m |
947 | CONFIG_ASYNC_XOR=m | ||
838 | CONFIG_CRYPTO=y | 948 | CONFIG_CRYPTO=y |
949 | CONFIG_CRYPTO_ALGAPI=y | ||
950 | CONFIG_CRYPTO_AEAD=m | ||
951 | CONFIG_CRYPTO_BLKCIPHER=y | ||
952 | CONFIG_CRYPTO_SEQIV=m | ||
953 | CONFIG_CRYPTO_HASH=y | ||
954 | CONFIG_CRYPTO_MANAGER=y | ||
839 | CONFIG_CRYPTO_HMAC=y | 955 | CONFIG_CRYPTO_HMAC=y |
956 | CONFIG_CRYPTO_XCBC=m | ||
840 | CONFIG_CRYPTO_NULL=m | 957 | CONFIG_CRYPTO_NULL=m |
841 | CONFIG_CRYPTO_MD4=m | 958 | CONFIG_CRYPTO_MD4=m |
842 | CONFIG_CRYPTO_MD5=y | 959 | CONFIG_CRYPTO_MD5=y |
@@ -845,9 +962,21 @@ CONFIG_CRYPTO_SHA256=m | |||
845 | CONFIG_CRYPTO_SHA512=m | 962 | CONFIG_CRYPTO_SHA512=m |
846 | CONFIG_CRYPTO_WP512=m | 963 | CONFIG_CRYPTO_WP512=m |
847 | CONFIG_CRYPTO_TGR192=m | 964 | CONFIG_CRYPTO_TGR192=m |
965 | CONFIG_CRYPTO_GF128MUL=m | ||
966 | CONFIG_CRYPTO_ECB=m | ||
967 | CONFIG_CRYPTO_CBC=y | ||
968 | CONFIG_CRYPTO_PCBC=m | ||
969 | CONFIG_CRYPTO_LRW=m | ||
970 | CONFIG_CRYPTO_XTS=m | ||
971 | CONFIG_CRYPTO_CTR=m | ||
972 | CONFIG_CRYPTO_GCM=m | ||
973 | CONFIG_CRYPTO_CCM=m | ||
974 | CONFIG_CRYPTO_CRYPTD=m | ||
848 | CONFIG_CRYPTO_DES=y | 975 | CONFIG_CRYPTO_DES=y |
976 | CONFIG_CRYPTO_FCRYPT=m | ||
849 | CONFIG_CRYPTO_BLOWFISH=m | 977 | CONFIG_CRYPTO_BLOWFISH=m |
850 | CONFIG_CRYPTO_TWOFISH=m | 978 | CONFIG_CRYPTO_TWOFISH=m |
979 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
851 | CONFIG_CRYPTO_SERPENT=m | 980 | CONFIG_CRYPTO_SERPENT=m |
852 | CONFIG_CRYPTO_AES=m | 981 | CONFIG_CRYPTO_AES=m |
853 | CONFIG_CRYPTO_CAST5=m | 982 | CONFIG_CRYPTO_CAST5=m |
@@ -856,20 +985,35 @@ CONFIG_CRYPTO_TEA=m | |||
856 | CONFIG_CRYPTO_ARC4=m | 985 | CONFIG_CRYPTO_ARC4=m |
857 | CONFIG_CRYPTO_KHAZAD=m | 986 | CONFIG_CRYPTO_KHAZAD=m |
858 | CONFIG_CRYPTO_ANUBIS=m | 987 | CONFIG_CRYPTO_ANUBIS=m |
988 | CONFIG_CRYPTO_SEED=m | ||
989 | CONFIG_CRYPTO_SALSA20=m | ||
859 | CONFIG_CRYPTO_DEFLATE=m | 990 | CONFIG_CRYPTO_DEFLATE=m |
860 | CONFIG_CRYPTO_MICHAEL_MIC=m | 991 | CONFIG_CRYPTO_MICHAEL_MIC=m |
861 | CONFIG_CRYPTO_CRC32C=m | 992 | CONFIG_CRYPTO_CRC32C=m |
993 | CONFIG_CRYPTO_CAMELLIA=m | ||
862 | CONFIG_CRYPTO_TEST=m | 994 | CONFIG_CRYPTO_TEST=m |
863 | 995 | CONFIG_CRYPTO_AUTHENC=m | |
864 | # | 996 | CONFIG_CRYPTO_LZO=m |
865 | # Hardware crypto devices | 997 | # CONFIG_CRYPTO_HW is not set |
866 | # | ||
867 | 998 | ||
868 | # | 999 | # |
869 | # Library routines | 1000 | # Library routines |
870 | # | 1001 | # |
1002 | CONFIG_BITREVERSE=y | ||
871 | CONFIG_CRC_CCITT=m | 1003 | CONFIG_CRC_CCITT=m |
1004 | CONFIG_CRC16=m | ||
1005 | # CONFIG_CRC_ITU_T is not set | ||
872 | CONFIG_CRC32=y | 1006 | CONFIG_CRC32=y |
1007 | # CONFIG_CRC7 is not set | ||
873 | CONFIG_LIBCRC32C=m | 1008 | CONFIG_LIBCRC32C=m |
874 | CONFIG_ZLIB_INFLATE=y | 1009 | CONFIG_ZLIB_INFLATE=y |
875 | CONFIG_ZLIB_DEFLATE=m | 1010 | CONFIG_ZLIB_DEFLATE=m |
1011 | CONFIG_LZO_COMPRESS=m | ||
1012 | CONFIG_LZO_DECOMPRESS=m | ||
1013 | CONFIG_TEXTSEARCH=y | ||
1014 | CONFIG_TEXTSEARCH_KMP=m | ||
1015 | CONFIG_TEXTSEARCH_BM=m | ||
1016 | CONFIG_TEXTSEARCH_FSM=m | ||
1017 | CONFIG_PLIST=y | ||
1018 | CONFIG_HAS_IOMEM=y | ||
1019 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/defconfig b/arch/m68k/defconfig deleted file mode 100644 index 7d935e48a9a8..000000000000 --- a/arch/m68k/defconfig +++ /dev/null | |||
@@ -1,657 +0,0 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.12-rc6-m68k | ||
4 | # Tue Jun 7 20:34:17 2005 | ||
5 | # | ||
6 | CONFIG_M68K=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | |||
12 | # | ||
13 | # Code maturity level options | ||
14 | # | ||
15 | CONFIG_EXPERIMENTAL=y | ||
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | CONFIG_SWAP=y | ||
25 | CONFIG_SYSVIPC=y | ||
26 | # CONFIG_POSIX_MQUEUE is not set | ||
27 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
28 | CONFIG_SYSCTL=y | ||
29 | # CONFIG_AUDIT is not set | ||
30 | # CONFIG_HOTPLUG is not set | ||
31 | CONFIG_KOBJECT_UEVENT=y | ||
32 | # CONFIG_IKCONFIG is not set | ||
33 | # CONFIG_EMBEDDED is not set | ||
34 | CONFIG_KALLSYMS=y | ||
35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
36 | CONFIG_PRINTK=y | ||
37 | CONFIG_BUG=y | ||
38 | CONFIG_BASE_FULL=y | ||
39 | CONFIG_FUTEX=y | ||
40 | CONFIG_EPOLL=y | ||
41 | CONFIG_SHMEM=y | ||
42 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
43 | CONFIG_CC_ALIGN_LABELS=0 | ||
44 | CONFIG_CC_ALIGN_LOOPS=0 | ||
45 | CONFIG_CC_ALIGN_JUMPS=0 | ||
46 | # CONFIG_TINY_SHMEM is not set | ||
47 | CONFIG_BASE_SMALL=0 | ||
48 | |||
49 | # | ||
50 | # Loadable module support | ||
51 | # | ||
52 | # CONFIG_MODULES is not set | ||
53 | |||
54 | # | ||
55 | # Platform dependent setup | ||
56 | # | ||
57 | # CONFIG_SUN3 is not set | ||
58 | CONFIG_AMIGA=y | ||
59 | # CONFIG_ATARI is not set | ||
60 | # CONFIG_MAC is not set | ||
61 | # CONFIG_APOLLO is not set | ||
62 | # CONFIG_VME is not set | ||
63 | # CONFIG_HP300 is not set | ||
64 | # CONFIG_SUN3X is not set | ||
65 | # CONFIG_Q40 is not set | ||
66 | |||
67 | # | ||
68 | # Processor type | ||
69 | # | ||
70 | CONFIG_M68020=y | ||
71 | CONFIG_M68030=y | ||
72 | CONFIG_M68040=y | ||
73 | # CONFIG_M68060 is not set | ||
74 | CONFIG_MMU_MOTOROLA=y | ||
75 | # CONFIG_M68KFPU_EMU is not set | ||
76 | # CONFIG_ADVANCED is not set | ||
77 | |||
78 | # | ||
79 | # General setup | ||
80 | # | ||
81 | CONFIG_BINFMT_ELF=y | ||
82 | CONFIG_BINFMT_AOUT=y | ||
83 | # CONFIG_BINFMT_MISC is not set | ||
84 | CONFIG_ZORRO=y | ||
85 | # CONFIG_AMIGA_PCMCIA is not set | ||
86 | # CONFIG_HEARTBEAT is not set | ||
87 | CONFIG_PROC_HARDWARE=y | ||
88 | # CONFIG_ZORRO_NAMES is not set | ||
89 | |||
90 | # | ||
91 | # Device Drivers | ||
92 | # | ||
93 | |||
94 | # | ||
95 | # Generic Driver Options | ||
96 | # | ||
97 | CONFIG_STANDALONE=y | ||
98 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
99 | # CONFIG_FW_LOADER is not set | ||
100 | |||
101 | # | ||
102 | # Memory Technology Devices (MTD) | ||
103 | # | ||
104 | # CONFIG_MTD is not set | ||
105 | |||
106 | # | ||
107 | # Parallel port support | ||
108 | # | ||
109 | # CONFIG_PARPORT is not set | ||
110 | |||
111 | # | ||
112 | # Plug and Play support | ||
113 | # | ||
114 | |||
115 | # | ||
116 | # Block devices | ||
117 | # | ||
118 | CONFIG_AMIGA_FLOPPY=y | ||
119 | # CONFIG_AMIGA_Z2RAM is not set | ||
120 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
121 | # CONFIG_BLK_DEV_LOOP is not set | ||
122 | # CONFIG_BLK_DEV_NBD is not set | ||
123 | CONFIG_BLK_DEV_RAM=y | ||
124 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
125 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
126 | CONFIG_BLK_DEV_INITRD=y | ||
127 | CONFIG_INITRAMFS_SOURCE="" | ||
128 | CONFIG_CDROM_PKTCDVD=y | ||
129 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
130 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
131 | |||
132 | # | ||
133 | # IO Schedulers | ||
134 | # | ||
135 | CONFIG_IOSCHED_NOOP=y | ||
136 | CONFIG_IOSCHED_AS=y | ||
137 | CONFIG_IOSCHED_DEADLINE=y | ||
138 | CONFIG_IOSCHED_CFQ=y | ||
139 | # CONFIG_ATA_OVER_ETH is not set | ||
140 | |||
141 | # | ||
142 | # ATA/ATAPI/MFM/RLL support | ||
143 | # | ||
144 | # CONFIG_IDE is not set | ||
145 | |||
146 | # | ||
147 | # SCSI device support | ||
148 | # | ||
149 | CONFIG_SCSI=y | ||
150 | CONFIG_SCSI_PROC_FS=y | ||
151 | |||
152 | # | ||
153 | # SCSI support type (disk, tape, CD-ROM) | ||
154 | # | ||
155 | CONFIG_BLK_DEV_SD=y | ||
156 | CONFIG_CHR_DEV_ST=y | ||
157 | # CONFIG_CHR_DEV_OSST is not set | ||
158 | CONFIG_BLK_DEV_SR=y | ||
159 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
160 | # CONFIG_CHR_DEV_SG is not set | ||
161 | |||
162 | # | ||
163 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
164 | # | ||
165 | # CONFIG_SCSI_MULTI_LUN is not set | ||
166 | CONFIG_SCSI_CONSTANTS=y | ||
167 | # CONFIG_SCSI_LOGGING is not set | ||
168 | |||
169 | # | ||
170 | # SCSI Transport Attributes | ||
171 | # | ||
172 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
173 | # CONFIG_SCSI_FC_ATTRS is not set | ||
174 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
175 | |||
176 | # | ||
177 | # SCSI low-level drivers | ||
178 | # | ||
179 | # CONFIG_SCSI_SATA is not set | ||
180 | # CONFIG_SCSI_DEBUG is not set | ||
181 | CONFIG_A3000_SCSI=y | ||
182 | CONFIG_A2091_SCSI=y | ||
183 | CONFIG_GVP11_SCSI=y | ||
184 | # CONFIG_CYBERSTORM_SCSI is not set | ||
185 | # CONFIG_CYBERSTORMII_SCSI is not set | ||
186 | # CONFIG_BLZ2060_SCSI is not set | ||
187 | # CONFIG_BLZ1230_SCSI is not set | ||
188 | # CONFIG_FASTLANE_SCSI is not set | ||
189 | # CONFIG_OKTAGON_SCSI is not set | ||
190 | |||
191 | # | ||
192 | # Multi-device support (RAID and LVM) | ||
193 | # | ||
194 | # CONFIG_MD is not set | ||
195 | |||
196 | # | ||
197 | # Fusion MPT device support | ||
198 | # | ||
199 | |||
200 | # | ||
201 | # IEEE 1394 (FireWire) support | ||
202 | # | ||
203 | |||
204 | # | ||
205 | # I2O device support | ||
206 | # | ||
207 | |||
208 | # | ||
209 | # Networking support | ||
210 | # | ||
211 | CONFIG_NET=y | ||
212 | |||
213 | # | ||
214 | # Networking options | ||
215 | # | ||
216 | CONFIG_PACKET=y | ||
217 | # CONFIG_PACKET_MMAP is not set | ||
218 | CONFIG_UNIX=y | ||
219 | # CONFIG_NET_KEY is not set | ||
220 | CONFIG_INET=y | ||
221 | # CONFIG_IP_MULTICAST is not set | ||
222 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
223 | # CONFIG_IP_PNP is not set | ||
224 | # CONFIG_NET_IPIP is not set | ||
225 | # CONFIG_NET_IPGRE is not set | ||
226 | # CONFIG_ARPD is not set | ||
227 | # CONFIG_SYN_COOKIES is not set | ||
228 | # CONFIG_INET_AH is not set | ||
229 | # CONFIG_INET_ESP is not set | ||
230 | # CONFIG_INET_IPCOMP is not set | ||
231 | # CONFIG_INET_TUNNEL is not set | ||
232 | CONFIG_IP_TCPDIAG=y | ||
233 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
234 | # CONFIG_IPV6 is not set | ||
235 | # CONFIG_NETFILTER is not set | ||
236 | |||
237 | # | ||
238 | # SCTP Configuration (EXPERIMENTAL) | ||
239 | # | ||
240 | # CONFIG_IP_SCTP is not set | ||
241 | # CONFIG_ATM is not set | ||
242 | # CONFIG_BRIDGE is not set | ||
243 | # CONFIG_VLAN_8021Q is not set | ||
244 | # CONFIG_DECNET is not set | ||
245 | # CONFIG_LLC2 is not set | ||
246 | # CONFIG_IPX is not set | ||
247 | # CONFIG_ATALK is not set | ||
248 | # CONFIG_X25 is not set | ||
249 | # CONFIG_LAPB is not set | ||
250 | # CONFIG_NET_DIVERT is not set | ||
251 | # CONFIG_ECONET is not set | ||
252 | # CONFIG_WAN_ROUTER is not set | ||
253 | |||
254 | # | ||
255 | # QoS and/or fair queueing | ||
256 | # | ||
257 | # CONFIG_NET_SCHED is not set | ||
258 | # CONFIG_NET_CLS_ROUTE is not set | ||
259 | |||
260 | # | ||
261 | # Network testing | ||
262 | # | ||
263 | # CONFIG_NET_PKTGEN is not set | ||
264 | # CONFIG_NETPOLL is not set | ||
265 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
266 | # CONFIG_HAMRADIO is not set | ||
267 | # CONFIG_IRDA is not set | ||
268 | # CONFIG_BT is not set | ||
269 | CONFIG_NETDEVICES=y | ||
270 | # CONFIG_DUMMY is not set | ||
271 | # CONFIG_BONDING is not set | ||
272 | # CONFIG_EQUALIZER is not set | ||
273 | # CONFIG_TUN is not set | ||
274 | |||
275 | # | ||
276 | # Ethernet (10 or 100Mbit) | ||
277 | # | ||
278 | # CONFIG_NET_ETHERNET is not set | ||
279 | |||
280 | # | ||
281 | # Ethernet (1000 Mbit) | ||
282 | # | ||
283 | |||
284 | # | ||
285 | # Ethernet (10000 Mbit) | ||
286 | # | ||
287 | |||
288 | # | ||
289 | # Token Ring devices | ||
290 | # | ||
291 | |||
292 | # | ||
293 | # Wireless LAN (non-hamradio) | ||
294 | # | ||
295 | # CONFIG_NET_RADIO is not set | ||
296 | |||
297 | # | ||
298 | # Wan interfaces | ||
299 | # | ||
300 | # CONFIG_WAN is not set | ||
301 | # CONFIG_PPP is not set | ||
302 | # CONFIG_SLIP is not set | ||
303 | # CONFIG_SHAPER is not set | ||
304 | # CONFIG_NETCONSOLE is not set | ||
305 | |||
306 | # | ||
307 | # ISDN subsystem | ||
308 | # | ||
309 | # CONFIG_ISDN is not set | ||
310 | |||
311 | # | ||
312 | # Telephony Support | ||
313 | # | ||
314 | # CONFIG_PHONE is not set | ||
315 | |||
316 | # | ||
317 | # Input device support | ||
318 | # | ||
319 | CONFIG_INPUT=y | ||
320 | |||
321 | # | ||
322 | # Userland interfaces | ||
323 | # | ||
324 | CONFIG_INPUT_MOUSEDEV=y | ||
325 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
326 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
327 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
328 | # CONFIG_INPUT_JOYDEV is not set | ||
329 | # CONFIG_INPUT_TSDEV is not set | ||
330 | # CONFIG_INPUT_EVDEV is not set | ||
331 | # CONFIG_INPUT_EVBUG is not set | ||
332 | |||
333 | # | ||
334 | # Input Device Drivers | ||
335 | # | ||
336 | CONFIG_INPUT_KEYBOARD=y | ||
337 | CONFIG_KEYBOARD_ATKBD=y | ||
338 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
339 | # CONFIG_KEYBOARD_LKKBD is not set | ||
340 | # CONFIG_KEYBOARD_XTKBD is not set | ||
341 | # CONFIG_KEYBOARD_NEWTON is not set | ||
342 | # CONFIG_KEYBOARD_AMIGA is not set | ||
343 | CONFIG_INPUT_MOUSE=y | ||
344 | CONFIG_MOUSE_PS2=y | ||
345 | # CONFIG_MOUSE_SERIAL is not set | ||
346 | # CONFIG_MOUSE_AMIGA is not set | ||
347 | # CONFIG_MOUSE_VSXXXAA is not set | ||
348 | # CONFIG_INPUT_JOYSTICK is not set | ||
349 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
350 | # CONFIG_INPUT_MISC is not set | ||
351 | |||
352 | # | ||
353 | # Hardware I/O ports | ||
354 | # | ||
355 | CONFIG_SERIO=y | ||
356 | CONFIG_SERIO_SERPORT=y | ||
357 | CONFIG_SERIO_LIBPS2=y | ||
358 | # CONFIG_SERIO_RAW is not set | ||
359 | # CONFIG_GAMEPORT is not set | ||
360 | |||
361 | # | ||
362 | # Character devices | ||
363 | # | ||
364 | CONFIG_VT=y | ||
365 | CONFIG_VT_CONSOLE=y | ||
366 | CONFIG_HW_CONSOLE=y | ||
367 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
368 | # CONFIG_A2232 is not set | ||
369 | |||
370 | # | ||
371 | # Serial drivers | ||
372 | # | ||
373 | # CONFIG_SERIAL_8250 is not set | ||
374 | |||
375 | # | ||
376 | # Non-8250 serial port support | ||
377 | # | ||
378 | CONFIG_UNIX98_PTYS=y | ||
379 | CONFIG_LEGACY_PTYS=y | ||
380 | CONFIG_LEGACY_PTY_COUNT=256 | ||
381 | |||
382 | # | ||
383 | # IPMI | ||
384 | # | ||
385 | # CONFIG_IPMI_HANDLER is not set | ||
386 | |||
387 | # | ||
388 | # Watchdog Cards | ||
389 | # | ||
390 | # CONFIG_WATCHDOG is not set | ||
391 | # CONFIG_GEN_RTC is not set | ||
392 | # CONFIG_DTLK is not set | ||
393 | # CONFIG_R3964 is not set | ||
394 | |||
395 | # | ||
396 | # Ftape, the floppy tape device driver | ||
397 | # | ||
398 | # CONFIG_DRM is not set | ||
399 | # CONFIG_RAW_DRIVER is not set | ||
400 | |||
401 | # | ||
402 | # TPM devices | ||
403 | # | ||
404 | |||
405 | # | ||
406 | # I2C support | ||
407 | # | ||
408 | # CONFIG_I2C is not set | ||
409 | |||
410 | # | ||
411 | # Dallas's 1-wire bus | ||
412 | # | ||
413 | # CONFIG_W1 is not set | ||
414 | |||
415 | # | ||
416 | # Misc devices | ||
417 | # | ||
418 | |||
419 | # | ||
420 | # Multimedia devices | ||
421 | # | ||
422 | # CONFIG_VIDEO_DEV is not set | ||
423 | |||
424 | # | ||
425 | # Digital Video Broadcasting Devices | ||
426 | # | ||
427 | # CONFIG_DVB is not set | ||
428 | |||
429 | # | ||
430 | # Graphics support | ||
431 | # | ||
432 | CONFIG_FB=y | ||
433 | # CONFIG_FB_CFB_FILLRECT is not set | ||
434 | # CONFIG_FB_CFB_COPYAREA is not set | ||
435 | # CONFIG_FB_CFB_IMAGEBLIT is not set | ||
436 | CONFIG_FB_SOFT_CURSOR=y | ||
437 | # CONFIG_FB_MACMODES is not set | ||
438 | CONFIG_FB_MODE_HELPERS=y | ||
439 | # CONFIG_FB_TILEBLITTING is not set | ||
440 | # CONFIG_FB_CIRRUS is not set | ||
441 | CONFIG_FB_AMIGA=y | ||
442 | CONFIG_FB_AMIGA_OCS=y | ||
443 | CONFIG_FB_AMIGA_ECS=y | ||
444 | CONFIG_FB_AMIGA_AGA=y | ||
445 | # CONFIG_FB_FM2 is not set | ||
446 | # CONFIG_FB_S1D13XXX is not set | ||
447 | # CONFIG_FB_VIRTUAL is not set | ||
448 | |||
449 | # | ||
450 | # Console display driver support | ||
451 | # | ||
452 | CONFIG_DUMMY_CONSOLE=y | ||
453 | # CONFIG_FRAMEBUFFER_CONSOLE is not set | ||
454 | |||
455 | # | ||
456 | # Logo configuration | ||
457 | # | ||
458 | # CONFIG_LOGO is not set | ||
459 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
460 | |||
461 | # | ||
462 | # Sound | ||
463 | # | ||
464 | # CONFIG_SOUND is not set | ||
465 | |||
466 | # | ||
467 | # USB support | ||
468 | # | ||
469 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
470 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
471 | |||
472 | # | ||
473 | # USB Gadget Support | ||
474 | # | ||
475 | # CONFIG_USB_GADGET is not set | ||
476 | |||
477 | # | ||
478 | # MMC/SD Card support | ||
479 | # | ||
480 | # CONFIG_MMC is not set | ||
481 | |||
482 | # | ||
483 | # InfiniBand support | ||
484 | # | ||
485 | # CONFIG_INFINIBAND is not set | ||
486 | |||
487 | # | ||
488 | # Character devices | ||
489 | # | ||
490 | CONFIG_AMIGA_BUILTIN_SERIAL=y | ||
491 | # CONFIG_MULTIFACE_III_TTY is not set | ||
492 | # CONFIG_GVPIOEXT is not set | ||
493 | # CONFIG_SERIAL_CONSOLE is not set | ||
494 | |||
495 | # | ||
496 | # File systems | ||
497 | # | ||
498 | CONFIG_EXT2_FS=y | ||
499 | # CONFIG_EXT2_FS_XATTR is not set | ||
500 | # CONFIG_EXT3_FS is not set | ||
501 | # CONFIG_JBD is not set | ||
502 | # CONFIG_REISERFS_FS is not set | ||
503 | # CONFIG_JFS_FS is not set | ||
504 | |||
505 | # | ||
506 | # XFS support | ||
507 | # | ||
508 | # CONFIG_XFS_FS is not set | ||
509 | CONFIG_MINIX_FS=y | ||
510 | # CONFIG_ROMFS_FS is not set | ||
511 | # CONFIG_QUOTA is not set | ||
512 | CONFIG_DNOTIFY=y | ||
513 | # CONFIG_AUTOFS_FS is not set | ||
514 | # CONFIG_AUTOFS4_FS is not set | ||
515 | |||
516 | # | ||
517 | # CD-ROM/DVD Filesystems | ||
518 | # | ||
519 | # CONFIG_ISO9660_FS is not set | ||
520 | # CONFIG_UDF_FS is not set | ||
521 | |||
522 | # | ||
523 | # DOS/FAT/NT Filesystems | ||
524 | # | ||
525 | CONFIG_FAT_FS=y | ||
526 | CONFIG_MSDOS_FS=y | ||
527 | # CONFIG_VFAT_FS is not set | ||
528 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
529 | # CONFIG_NTFS_FS is not set | ||
530 | |||
531 | # | ||
532 | # Pseudo filesystems | ||
533 | # | ||
534 | CONFIG_PROC_FS=y | ||
535 | CONFIG_PROC_KCORE=y | ||
536 | CONFIG_SYSFS=y | ||
537 | # CONFIG_DEVFS_FS is not set | ||
538 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
539 | # CONFIG_TMPFS is not set | ||
540 | # CONFIG_HUGETLB_PAGE is not set | ||
541 | CONFIG_RAMFS=y | ||
542 | |||
543 | # | ||
544 | # Miscellaneous filesystems | ||
545 | # | ||
546 | # CONFIG_ADFS_FS is not set | ||
547 | # CONFIG_AFFS_FS is not set | ||
548 | # CONFIG_HFS_FS is not set | ||
549 | # CONFIG_HFSPLUS_FS is not set | ||
550 | # CONFIG_BEFS_FS is not set | ||
551 | # CONFIG_BFS_FS is not set | ||
552 | # CONFIG_EFS_FS is not set | ||
553 | # CONFIG_CRAMFS is not set | ||
554 | # CONFIG_VXFS_FS is not set | ||
555 | # CONFIG_HPFS_FS is not set | ||
556 | # CONFIG_QNX4FS_FS is not set | ||
557 | # CONFIG_SYSV_FS is not set | ||
558 | # CONFIG_UFS_FS is not set | ||
559 | |||
560 | # | ||
561 | # Network File Systems | ||
562 | # | ||
563 | CONFIG_NFS_FS=y | ||
564 | # CONFIG_NFS_V3 is not set | ||
565 | # CONFIG_NFS_V4 is not set | ||
566 | # CONFIG_NFS_DIRECTIO is not set | ||
567 | # CONFIG_NFSD is not set | ||
568 | CONFIG_LOCKD=y | ||
569 | CONFIG_SUNRPC=y | ||
570 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
571 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
572 | # CONFIG_SMB_FS is not set | ||
573 | # CONFIG_CIFS is not set | ||
574 | # CONFIG_NCP_FS is not set | ||
575 | # CONFIG_CODA_FS is not set | ||
576 | # CONFIG_AFS_FS is not set | ||
577 | |||
578 | # | ||
579 | # Partition Types | ||
580 | # | ||
581 | # CONFIG_PARTITION_ADVANCED is not set | ||
582 | CONFIG_AMIGA_PARTITION=y | ||
583 | CONFIG_MSDOS_PARTITION=y | ||
584 | |||
585 | # | ||
586 | # Native Language Support | ||
587 | # | ||
588 | CONFIG_NLS=y | ||
589 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
590 | CONFIG_NLS_CODEPAGE_437=y | ||
591 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
592 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
593 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
594 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
595 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
596 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
597 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
598 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
599 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
600 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
601 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
602 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
603 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
604 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
605 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
606 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
607 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
608 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
609 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
610 | # CONFIG_NLS_ISO8859_8 is not set | ||
611 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
612 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
613 | # CONFIG_NLS_ASCII is not set | ||
614 | # CONFIG_NLS_ISO8859_1 is not set | ||
615 | # CONFIG_NLS_ISO8859_2 is not set | ||
616 | # CONFIG_NLS_ISO8859_3 is not set | ||
617 | # CONFIG_NLS_ISO8859_4 is not set | ||
618 | # CONFIG_NLS_ISO8859_5 is not set | ||
619 | # CONFIG_NLS_ISO8859_6 is not set | ||
620 | # CONFIG_NLS_ISO8859_7 is not set | ||
621 | # CONFIG_NLS_ISO8859_9 is not set | ||
622 | # CONFIG_NLS_ISO8859_13 is not set | ||
623 | # CONFIG_NLS_ISO8859_14 is not set | ||
624 | # CONFIG_NLS_ISO8859_15 is not set | ||
625 | # CONFIG_NLS_KOI8_R is not set | ||
626 | # CONFIG_NLS_KOI8_U is not set | ||
627 | # CONFIG_NLS_UTF8 is not set | ||
628 | |||
629 | # | ||
630 | # Kernel hacking | ||
631 | # | ||
632 | # CONFIG_PRINTK_TIME is not set | ||
633 | # CONFIG_DEBUG_KERNEL is not set | ||
634 | CONFIG_LOG_BUF_SHIFT=14 | ||
635 | CONFIG_DEBUG_BUGVERBOSE=y | ||
636 | |||
637 | # | ||
638 | # Security options | ||
639 | # | ||
640 | # CONFIG_KEYS is not set | ||
641 | # CONFIG_SECURITY is not set | ||
642 | |||
643 | # | ||
644 | # Cryptographic options | ||
645 | # | ||
646 | # CONFIG_CRYPTO is not set | ||
647 | |||
648 | # | ||
649 | # Hardware crypto devices | ||
650 | # | ||
651 | |||
652 | # | ||
653 | # Library routines | ||
654 | # | ||
655 | # CONFIG_CRC_CCITT is not set | ||
656 | CONFIG_CRC32=y | ||
657 | # CONFIG_LIBCRC32C is not set | ||
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index 72097dacabd3..1c62381f5c23 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile | |||
@@ -482,10 +482,13 @@ endif | |||
482 | # be 16kb aligned or the handling of the current variable will break. | 482 | # be 16kb aligned or the handling of the current variable will break. |
483 | # Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys | 483 | # Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys |
484 | # | 484 | # |
485 | #core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/ arch/mips/arc/arc_con.o | 485 | ifdef CONFIG_SGI_IP28 |
486 | ifeq ($(call cc-option-yn,-mr10k-cache-barrier=1), n) | ||
487 | $(error gcc doesn't support needed option -mr10k-cache-barrier=1) | ||
488 | endif | ||
489 | endif | ||
486 | core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/ | 490 | core-$(CONFIG_SGI_IP28) += arch/mips/sgi-ip22/ |
487 | cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=1 -Iinclude/asm-mips/mach-ip28 | 491 | cflags-$(CONFIG_SGI_IP28) += -mr10k-cache-barrier=1 -Iinclude/asm-mips/mach-ip28 |
488 | #cflags-$(CONFIG_SGI_IP28) += -Iinclude/asm-mips/mach-ip28 | ||
489 | load-$(CONFIG_SGI_IP28) += 0xa800000020004000 | 492 | load-$(CONFIG_SGI_IP28) += 0xa800000020004000 |
490 | 493 | ||
491 | # | 494 | # |
diff --git a/arch/mips/au1000/common/cputable.c b/arch/mips/au1000/common/cputable.c index d8df5fdb045f..5c0d35d6e22a 100644 --- a/arch/mips/au1000/common/cputable.c +++ b/arch/mips/au1000/common/cputable.c | |||
@@ -22,24 +22,24 @@ struct cpu_spec* cur_cpu_spec[NR_CPUS]; | |||
22 | /* With some thought, we can probably use the mask to reduce the | 22 | /* With some thought, we can probably use the mask to reduce the |
23 | * size of the table. | 23 | * size of the table. |
24 | */ | 24 | */ |
25 | struct cpu_spec cpu_specs[] = { | 25 | struct cpu_spec cpu_specs[] = { |
26 | { 0xffffffff, 0x00030100, "Au1000 DA", 1, 0 }, | 26 | { 0xffffffff, 0x00030100, "Au1000 DA", 1, 0, 1 }, |
27 | { 0xffffffff, 0x00030201, "Au1000 HA", 1, 0 }, | 27 | { 0xffffffff, 0x00030201, "Au1000 HA", 1, 0, 1 }, |
28 | { 0xffffffff, 0x00030202, "Au1000 HB", 1, 0 }, | 28 | { 0xffffffff, 0x00030202, "Au1000 HB", 1, 0, 1 }, |
29 | { 0xffffffff, 0x00030203, "Au1000 HC", 1, 1 }, | 29 | { 0xffffffff, 0x00030203, "Au1000 HC", 1, 1, 0 }, |
30 | { 0xffffffff, 0x00030204, "Au1000 HD", 1, 1 }, | 30 | { 0xffffffff, 0x00030204, "Au1000 HD", 1, 1, 0 }, |
31 | { 0xffffffff, 0x01030200, "Au1500 AB", 1, 1 }, | 31 | { 0xffffffff, 0x01030200, "Au1500 AB", 1, 1, 0 }, |
32 | { 0xffffffff, 0x01030201, "Au1500 AC", 0, 1 }, | 32 | { 0xffffffff, 0x01030201, "Au1500 AC", 0, 1, 0 }, |
33 | { 0xffffffff, 0x01030202, "Au1500 AD", 0, 1 }, | 33 | { 0xffffffff, 0x01030202, "Au1500 AD", 0, 1, 0 }, |
34 | { 0xffffffff, 0x02030200, "Au1100 AB", 1, 1 }, | 34 | { 0xffffffff, 0x02030200, "Au1100 AB", 1, 1, 0 }, |
35 | { 0xffffffff, 0x02030201, "Au1100 BA", 1, 1 }, | 35 | { 0xffffffff, 0x02030201, "Au1100 BA", 1, 1, 0 }, |
36 | { 0xffffffff, 0x02030202, "Au1100 BC", 1, 1 }, | 36 | { 0xffffffff, 0x02030202, "Au1100 BC", 1, 1, 0 }, |
37 | { 0xffffffff, 0x02030203, "Au1100 BD", 0, 1 }, | 37 | { 0xffffffff, 0x02030203, "Au1100 BD", 0, 1, 0 }, |
38 | { 0xffffffff, 0x02030204, "Au1100 BE", 0, 1 }, | 38 | { 0xffffffff, 0x02030204, "Au1100 BE", 0, 1, 0 }, |
39 | { 0xffffffff, 0x03030200, "Au1550 AA", 0, 1 }, | 39 | { 0xffffffff, 0x03030200, "Au1550 AA", 0, 1, 0 }, |
40 | { 0xffffffff, 0x04030200, "Au1200 AB", 0, 0 }, | 40 | { 0xffffffff, 0x04030200, "Au1200 AB", 0, 0, 0 }, |
41 | { 0xffffffff, 0x04030201, "Au1200 AC", 1, 0 }, | 41 | { 0xffffffff, 0x04030201, "Au1200 AC", 1, 0, 0 }, |
42 | { 0x00000000, 0x00000000, "Unknown Au1xxx", 1, 0 }, | 42 | { 0x00000000, 0x00000000, "Unknown Au1xxx", 1, 0, 0 } |
43 | }; | 43 | }; |
44 | 44 | ||
45 | void | 45 | void |
diff --git a/arch/mips/au1000/common/setup.c b/arch/mips/au1000/common/setup.c index d885e3848ec6..9e4ab80caab6 100644 --- a/arch/mips/au1000/common/setup.c +++ b/arch/mips/au1000/common/setup.c | |||
@@ -57,7 +57,7 @@ void __init plat_mem_setup(void) | |||
57 | { | 57 | { |
58 | struct cpu_spec *sp; | 58 | struct cpu_spec *sp; |
59 | char *argptr; | 59 | char *argptr; |
60 | unsigned long prid, cpupll, bclk = 1; | 60 | unsigned long prid, cpufreq, bclk = 1; |
61 | 61 | ||
62 | set_cpuspec(); | 62 | set_cpuspec(); |
63 | sp = cur_cpu_spec[0]; | 63 | sp = cur_cpu_spec[0]; |
@@ -65,8 +65,15 @@ void __init plat_mem_setup(void) | |||
65 | board_setup(); /* board specific setup */ | 65 | board_setup(); /* board specific setup */ |
66 | 66 | ||
67 | prid = read_c0_prid(); | 67 | prid = read_c0_prid(); |
68 | cpupll = (au_readl(0xB1900060) & 0x3F) * 12; | 68 | if (sp->cpu_pll_wo) |
69 | printk("(PRId %08lx) @ %ldMHZ\n", prid, cpupll); | 69 | #ifdef CONFIG_SOC_AU1000_FREQUENCY |
70 | cpufreq = CONFIG_SOC_AU1000_FREQUENCY / 1000000; | ||
71 | #else | ||
72 | cpufreq = 396; | ||
73 | #endif | ||
74 | else | ||
75 | cpufreq = (au_readl(SYS_CPUPLL) & 0x3F) * 12; | ||
76 | printk(KERN_INFO "(PRID %08lx) @ %ld MHz\n", prid, cpufreq); | ||
70 | 77 | ||
71 | bclk = sp->cpu_bclk; | 78 | bclk = sp->cpu_bclk; |
72 | if (bclk) | 79 | if (bclk) |
diff --git a/arch/mips/au1000/common/time.c b/arch/mips/au1000/common/time.c index f113b512d7b1..e122bbc6cd88 100644 --- a/arch/mips/au1000/common/time.c +++ b/arch/mips/au1000/common/time.c | |||
@@ -209,18 +209,22 @@ unsigned long cal_r4koff(void) | |||
209 | while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); | 209 | while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); |
210 | au_writel(0, SYS_TOYWRITE); | 210 | au_writel(0, SYS_TOYWRITE); |
211 | while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); | 211 | while (au_readl(SYS_COUNTER_CNTRL) & SYS_CNTRL_C1S); |
212 | } else | ||
213 | no_au1xxx_32khz = 1; | ||
212 | 214 | ||
213 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * | 215 | /* |
214 | AU1000_SRC_CLK; | 216 | * On early Au1000, sys_cpupll was write-only. Since these |
215 | } | 217 | * silicon versions of Au1000 are not sold by AMD, we don't bend |
216 | else { | 218 | * over backwards trying to determine the frequency. |
217 | /* The 32KHz oscillator isn't running, so assume there | 219 | */ |
218 | * isn't one and grab the processor speed from the PLL. | 220 | if (cur_cpu_spec[0]->cpu_pll_wo) |
219 | * NOTE: some old silicon doesn't allow reading the PLL. | 221 | #ifdef CONFIG_SOC_AU1000_FREQUENCY |
220 | */ | 222 | cpu_speed = CONFIG_SOC_AU1000_FREQUENCY; |
223 | #else | ||
224 | cpu_speed = 396000000; | ||
225 | #endif | ||
226 | else | ||
221 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * AU1000_SRC_CLK; | 227 | cpu_speed = (au_readl(SYS_CPUPLL) & 0x0000003f) * AU1000_SRC_CLK; |
222 | no_au1xxx_32khz = 1; | ||
223 | } | ||
224 | mips_hpt_frequency = cpu_speed; | 228 | mips_hpt_frequency = cpu_speed; |
225 | // Equation: Baudrate = CPU / (SD * 2 * CLKDIV * 16) | 229 | // Equation: Baudrate = CPU / (SD * 2 * CLKDIV * 16) |
226 | set_au1x00_uart_baud_base(cpu_speed / (2 * ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2) * 16)); | 230 | set_au1x00_uart_baud_base(cpu_speed / (2 * ((int)(au_readl(SYS_POWERCTRL)&0x03) + 2) * 16)); |
diff --git a/arch/mips/au1000/xxs1500/board_setup.c b/arch/mips/au1000/xxs1500/board_setup.c index a9237f41933d..b2e413e597a8 100644 --- a/arch/mips/au1000/xxs1500/board_setup.c +++ b/arch/mips/au1000/xxs1500/board_setup.c | |||
@@ -33,11 +33,10 @@ | |||
33 | #include <asm/cpu.h> | 33 | #include <asm/cpu.h> |
34 | #include <asm/bootinfo.h> | 34 | #include <asm/bootinfo.h> |
35 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
36 | #include <asm/keyboard.h> | ||
37 | #include <asm/mipsregs.h> | 36 | #include <asm/mipsregs.h> |
38 | #include <asm/reboot.h> | 37 | #include <asm/reboot.h> |
39 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
40 | #include <asm/au1000.h> | 39 | #include <asm/mach-au1x00/au1000.h> |
41 | 40 | ||
42 | void board_reset(void) | 41 | void board_reset(void) |
43 | { | 42 | { |
diff --git a/arch/mips/au1000/xxs1500/irqmap.c b/arch/mips/au1000/xxs1500/irqmap.c index 389349295d70..a343da134334 100644 --- a/arch/mips/au1000/xxs1500/irqmap.c +++ b/arch/mips/au1000/xxs1500/irqmap.c | |||
@@ -45,7 +45,7 @@ | |||
45 | #include <asm/io.h> | 45 | #include <asm/io.h> |
46 | #include <asm/mipsregs.h> | 46 | #include <asm/mipsregs.h> |
47 | #include <asm/system.h> | 47 | #include <asm/system.h> |
48 | #include <asm/au1000.h> | 48 | #include <asm/mach-au1x00/au1000.h> |
49 | 49 | ||
50 | struct au1xxx_irqmap __initdata au1xxx_irq_map[] = { | 50 | struct au1xxx_irqmap __initdata au1xxx_irq_map[] = { |
51 | { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, | 51 | { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, |
diff --git a/arch/mips/configs/bigsur_defconfig b/arch/mips/configs/bigsur_defconfig index abf70d74e9d7..3b42cea2e402 100644 --- a/arch/mips/configs/bigsur_defconfig +++ b/arch/mips/configs/bigsur_defconfig | |||
@@ -1,58 +1,48 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Tue Feb 20 21:47:22 2007 | 4 | # Mon Mar 31 08:11:19 2008 |
5 | # | 5 | # |
6 | CONFIG_MIPS=y | 6 | CONFIG_MIPS=y |
7 | 7 | ||
8 | # | 8 | # |
9 | # Machine selection | 9 | # Machine selection |
10 | # | 10 | # |
11 | CONFIG_ZONE_DMA=y | 11 | # CONFIG_MACH_ALCHEMY is not set |
12 | # CONFIG_MIPS_MTX1 is not set | ||
13 | # CONFIG_MIPS_BOSPORUS is not set | ||
14 | # CONFIG_MIPS_PB1000 is not set | ||
15 | # CONFIG_MIPS_PB1100 is not set | ||
16 | # CONFIG_MIPS_PB1500 is not set | ||
17 | # CONFIG_MIPS_PB1550 is not set | ||
18 | # CONFIG_MIPS_PB1200 is not set | ||
19 | # CONFIG_MIPS_DB1000 is not set | ||
20 | # CONFIG_MIPS_DB1100 is not set | ||
21 | # CONFIG_MIPS_DB1500 is not set | ||
22 | # CONFIG_MIPS_DB1550 is not set | ||
23 | # CONFIG_MIPS_DB1200 is not set | ||
24 | # CONFIG_MIPS_MIRAGE is not set | ||
25 | # CONFIG_BASLER_EXCITE is not set | 12 | # CONFIG_BASLER_EXCITE is not set |
13 | # CONFIG_BCM47XX is not set | ||
26 | # CONFIG_MIPS_COBALT is not set | 14 | # CONFIG_MIPS_COBALT is not set |
27 | # CONFIG_MACH_DECSTATION is not set | 15 | # CONFIG_MACH_DECSTATION is not set |
28 | # CONFIG_MACH_JAZZ is not set | 16 | # CONFIG_MACH_JAZZ is not set |
17 | # CONFIG_LASAT is not set | ||
18 | # CONFIG_LEMOTE_FULONG is not set | ||
29 | # CONFIG_MIPS_ATLAS is not set | 19 | # CONFIG_MIPS_ATLAS is not set |
30 | # CONFIG_MIPS_MALTA is not set | 20 | # CONFIG_MIPS_MALTA is not set |
31 | # CONFIG_MIPS_SEAD is not set | 21 | # CONFIG_MIPS_SEAD is not set |
32 | # CONFIG_WR_PPMC is not set | ||
33 | # CONFIG_MIPS_SIM is not set | 22 | # CONFIG_MIPS_SIM is not set |
34 | # CONFIG_MOMENCO_JAGUAR_ATX is not set | 23 | # CONFIG_MARKEINS is not set |
35 | # CONFIG_MIPS_XXS1500 is not set | 24 | # CONFIG_MACH_VR41XX is not set |
36 | # CONFIG_PNX8550_JBS is not set | 25 | # CONFIG_PNX8550_JBS is not set |
37 | # CONFIG_PNX8550_STB810 is not set | 26 | # CONFIG_PNX8550_STB810 is not set |
38 | # CONFIG_MACH_VR41XX is not set | 27 | # CONFIG_PMC_MSP is not set |
39 | # CONFIG_PMC_YOSEMITE is not set | 28 | # CONFIG_PMC_YOSEMITE is not set |
40 | # CONFIG_MARKEINS is not set | ||
41 | # CONFIG_SGI_IP22 is not set | 29 | # CONFIG_SGI_IP22 is not set |
42 | # CONFIG_SGI_IP27 is not set | 30 | # CONFIG_SGI_IP27 is not set |
31 | # CONFIG_SGI_IP28 is not set | ||
43 | # CONFIG_SGI_IP32 is not set | 32 | # CONFIG_SGI_IP32 is not set |
44 | CONFIG_SIBYTE_BIGSUR=y | ||
45 | # CONFIG_SIBYTE_SWARM is not set | ||
46 | # CONFIG_SIBYTE_SENTOSA is not set | ||
47 | # CONFIG_SIBYTE_RHONE is not set | ||
48 | # CONFIG_SIBYTE_CARMEL is not set | ||
49 | # CONFIG_SIBYTE_LITTLESUR is not set | ||
50 | # CONFIG_SIBYTE_CRHINE is not set | 33 | # CONFIG_SIBYTE_CRHINE is not set |
34 | # CONFIG_SIBYTE_CARMEL is not set | ||
51 | # CONFIG_SIBYTE_CRHONE is not set | 35 | # CONFIG_SIBYTE_CRHONE is not set |
36 | # CONFIG_SIBYTE_RHONE is not set | ||
37 | # CONFIG_SIBYTE_SWARM is not set | ||
38 | # CONFIG_SIBYTE_LITTLESUR is not set | ||
39 | # CONFIG_SIBYTE_SENTOSA is not set | ||
40 | CONFIG_SIBYTE_BIGSUR=y | ||
52 | # CONFIG_SNI_RM is not set | 41 | # CONFIG_SNI_RM is not set |
53 | # CONFIG_TOSHIBA_JMR3927 is not set | 42 | # CONFIG_TOSHIBA_JMR3927 is not set |
54 | # CONFIG_TOSHIBA_RBTX4927 is not set | 43 | # CONFIG_TOSHIBA_RBTX4927 is not set |
55 | # CONFIG_TOSHIBA_RBTX4938 is not set | 44 | # CONFIG_TOSHIBA_RBTX4938 is not set |
45 | # CONFIG_WR_PPMC is not set | ||
56 | CONFIG_SIBYTE_BCM1x80=y | 46 | CONFIG_SIBYTE_BCM1x80=y |
57 | CONFIG_SIBYTE_SB1xxx_SOC=y | 47 | CONFIG_SIBYTE_SB1xxx_SOC=y |
58 | # CONFIG_CPU_SB1_PASS_1 is not set | 48 | # CONFIG_CPU_SB1_PASS_1 is not set |
@@ -68,9 +58,11 @@ CONFIG_SIBYTE_CFE=y | |||
68 | # CONFIG_SIBYTE_CFE_CONSOLE is not set | 58 | # CONFIG_SIBYTE_CFE_CONSOLE is not set |
69 | # CONFIG_SIBYTE_BUS_WATCHER is not set | 59 | # CONFIG_SIBYTE_BUS_WATCHER is not set |
70 | # CONFIG_SIBYTE_TBPROF is not set | 60 | # CONFIG_SIBYTE_TBPROF is not set |
61 | CONFIG_SIBYTE_HAS_ZBUS_PROFILING=y | ||
71 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 62 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
72 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 63 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
73 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 64 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
65 | CONFIG_ARCH_SUPPORTS_OPROFILE=y | ||
74 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 66 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
75 | CONFIG_GENERIC_HWEIGHT=y | 67 | CONFIG_GENERIC_HWEIGHT=y |
76 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 68 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
@@ -81,11 +73,17 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | |||
81 | # CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set | 73 | # CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set |
82 | CONFIG_CEVT_BCM1480=y | 74 | CONFIG_CEVT_BCM1480=y |
83 | CONFIG_CSRC_BCM1480=y | 75 | CONFIG_CSRC_BCM1480=y |
76 | CONFIG_CFE=y | ||
84 | CONFIG_DMA_COHERENT=y | 77 | CONFIG_DMA_COHERENT=y |
78 | CONFIG_EARLY_PRINTK=y | ||
79 | CONFIG_SYS_HAS_EARLY_PRINTK=y | ||
80 | # CONFIG_HOTPLUG_CPU is not set | ||
81 | # CONFIG_NO_IOPORT is not set | ||
85 | CONFIG_CPU_BIG_ENDIAN=y | 82 | CONFIG_CPU_BIG_ENDIAN=y |
86 | # CONFIG_CPU_LITTLE_ENDIAN is not set | 83 | # CONFIG_CPU_LITTLE_ENDIAN is not set |
87 | CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y | 84 | CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y |
88 | CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y | 85 | CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y |
86 | CONFIG_IRQ_CPU=y | ||
89 | CONFIG_SWAP_IO_SPACE=y | 87 | CONFIG_SWAP_IO_SPACE=y |
90 | CONFIG_BOOT_ELF32=y | 88 | CONFIG_BOOT_ELF32=y |
91 | CONFIG_MIPS_L1_CACHE_SHIFT=5 | 89 | CONFIG_MIPS_L1_CACHE_SHIFT=5 |
@@ -93,10 +91,6 @@ CONFIG_MIPS_L1_CACHE_SHIFT=5 | |||
93 | # | 91 | # |
94 | # CPU selection | 92 | # CPU selection |
95 | # | 93 | # |
96 | CONFIG_TICK_ONESHOT=y | ||
97 | CONFIG_NO_HZ=y | ||
98 | CONFIG_HIGH_RES_TIMERS=y | ||
99 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
100 | # CONFIG_CPU_LOONGSON2 is not set | 94 | # CONFIG_CPU_LOONGSON2 is not set |
101 | # CONFIG_CPU_MIPS32_R1 is not set | 95 | # CONFIG_CPU_MIPS32_R1 is not set |
102 | # CONFIG_CPU_MIPS32_R2 is not set | 96 | # CONFIG_CPU_MIPS32_R2 is not set |
@@ -137,14 +131,15 @@ CONFIG_PAGE_SIZE_4KB=y | |||
137 | CONFIG_MIPS_MT_DISABLED=y | 131 | CONFIG_MIPS_MT_DISABLED=y |
138 | # CONFIG_MIPS_MT_SMP is not set | 132 | # CONFIG_MIPS_MT_SMP is not set |
139 | # CONFIG_MIPS_MT_SMTC is not set | 133 | # CONFIG_MIPS_MT_SMTC is not set |
140 | # CONFIG_MIPS_VPE_LOADER is not set | ||
141 | CONFIG_CPU_HAS_LLSC=y | 134 | CONFIG_CPU_HAS_LLSC=y |
142 | CONFIG_CPU_HAS_SYNC=y | 135 | CONFIG_CPU_HAS_SYNC=y |
143 | CONFIG_GENERIC_HARDIRQS=y | 136 | CONFIG_GENERIC_HARDIRQS=y |
144 | CONFIG_GENERIC_IRQ_PROBE=y | 137 | CONFIG_GENERIC_IRQ_PROBE=y |
145 | CONFIG_IRQ_PER_CPU=y | 138 | CONFIG_IRQ_PER_CPU=y |
146 | CONFIG_CPU_SUPPORTS_HIGHMEM=y | 139 | CONFIG_CPU_SUPPORTS_HIGHMEM=y |
140 | CONFIG_SYS_SUPPORTS_HIGHMEM=y | ||
147 | CONFIG_ARCH_FLATMEM_ENABLE=y | 141 | CONFIG_ARCH_FLATMEM_ENABLE=y |
142 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
148 | CONFIG_SELECT_MEMORY_MODEL=y | 143 | CONFIG_SELECT_MEMORY_MODEL=y |
149 | CONFIG_FLATMEM_MANUAL=y | 144 | CONFIG_FLATMEM_MANUAL=y |
150 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 145 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -152,13 +147,19 @@ CONFIG_FLATMEM_MANUAL=y | |||
152 | CONFIG_FLATMEM=y | 147 | CONFIG_FLATMEM=y |
153 | CONFIG_FLAT_NODE_MEM_MAP=y | 148 | CONFIG_FLAT_NODE_MEM_MAP=y |
154 | # CONFIG_SPARSEMEM_STATIC is not set | 149 | # CONFIG_SPARSEMEM_STATIC is not set |
150 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
155 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 151 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
156 | CONFIG_RESOURCES_64BIT=y | 152 | CONFIG_RESOURCES_64BIT=y |
157 | CONFIG_ZONE_DMA_FLAG=1 | 153 | CONFIG_ZONE_DMA_FLAG=0 |
154 | CONFIG_VIRT_TO_BUS=y | ||
158 | CONFIG_SMP=y | 155 | CONFIG_SMP=y |
159 | CONFIG_SYS_SUPPORTS_SMP=y | 156 | CONFIG_SYS_SUPPORTS_SMP=y |
160 | CONFIG_NR_CPUS_DEFAULT_4=y | 157 | CONFIG_NR_CPUS_DEFAULT_4=y |
161 | CONFIG_NR_CPUS=4 | 158 | CONFIG_NR_CPUS=4 |
159 | CONFIG_TICK_ONESHOT=y | ||
160 | CONFIG_NO_HZ=y | ||
161 | CONFIG_HIGH_RES_TIMERS=y | ||
162 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
162 | # CONFIG_HZ_48 is not set | 163 | # CONFIG_HZ_48 is not set |
163 | # CONFIG_HZ_100 is not set | 164 | # CONFIG_HZ_100 is not set |
164 | # CONFIG_HZ_128 is not set | 165 | # CONFIG_HZ_128 is not set |
@@ -171,38 +172,45 @@ CONFIG_HZ=1000 | |||
171 | CONFIG_PREEMPT_NONE=y | 172 | CONFIG_PREEMPT_NONE=y |
172 | # CONFIG_PREEMPT_VOLUNTARY is not set | 173 | # CONFIG_PREEMPT_VOLUNTARY is not set |
173 | # CONFIG_PREEMPT is not set | 174 | # CONFIG_PREEMPT is not set |
174 | # CONFIG_PREEMPT_BKL is not set | ||
175 | # CONFIG_KEXEC is not set | 175 | # CONFIG_KEXEC is not set |
176 | CONFIG_SECCOMP=y | ||
176 | CONFIG_LOCKDEP_SUPPORT=y | 177 | CONFIG_LOCKDEP_SUPPORT=y |
177 | CONFIG_STACKTRACE_SUPPORT=y | 178 | CONFIG_STACKTRACE_SUPPORT=y |
178 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 179 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
179 | 180 | ||
180 | # | 181 | # |
181 | # Code maturity level options | 182 | # General setup |
182 | # | 183 | # |
183 | CONFIG_EXPERIMENTAL=y | 184 | CONFIG_EXPERIMENTAL=y |
184 | CONFIG_LOCK_KERNEL=y | 185 | CONFIG_LOCK_KERNEL=y |
185 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 186 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
186 | |||
187 | # | ||
188 | # General setup | ||
189 | # | ||
190 | CONFIG_LOCALVERSION="" | 187 | CONFIG_LOCALVERSION="" |
191 | CONFIG_LOCALVERSION_AUTO=y | 188 | CONFIG_LOCALVERSION_AUTO=y |
192 | CONFIG_SWAP=y | 189 | CONFIG_SWAP=y |
193 | CONFIG_SYSVIPC=y | 190 | CONFIG_SYSVIPC=y |
194 | # CONFIG_IPC_NS is not set | ||
195 | CONFIG_SYSVIPC_SYSCTL=y | 191 | CONFIG_SYSVIPC_SYSCTL=y |
196 | # CONFIG_POSIX_MQUEUE is not set | 192 | CONFIG_POSIX_MQUEUE=y |
197 | # CONFIG_BSD_PROCESS_ACCT is not set | 193 | CONFIG_BSD_PROCESS_ACCT=y |
198 | # CONFIG_TASKSTATS is not set | 194 | CONFIG_BSD_PROCESS_ACCT_V3=y |
199 | # CONFIG_UTS_NS is not set | 195 | CONFIG_TASKSTATS=y |
200 | # CONFIG_AUDIT is not set | 196 | CONFIG_TASK_DELAY_ACCT=y |
197 | CONFIG_TASK_XACCT=y | ||
198 | CONFIG_TASK_IO_ACCOUNTING=y | ||
199 | CONFIG_AUDIT=y | ||
201 | CONFIG_IKCONFIG=y | 200 | CONFIG_IKCONFIG=y |
202 | CONFIG_IKCONFIG_PROC=y | 201 | CONFIG_IKCONFIG_PROC=y |
203 | # CONFIG_CPUSETS is not set | 202 | CONFIG_LOG_BUF_SHIFT=16 |
203 | # CONFIG_CGROUPS is not set | ||
204 | CONFIG_GROUP_SCHED=y | ||
205 | CONFIG_FAIR_GROUP_SCHED=y | ||
206 | # CONFIG_RT_GROUP_SCHED is not set | ||
207 | CONFIG_USER_SCHED=y | ||
208 | # CONFIG_CGROUP_SCHED is not set | ||
204 | CONFIG_SYSFS_DEPRECATED=y | 209 | CONFIG_SYSFS_DEPRECATED=y |
205 | # CONFIG_RELAY is not set | 210 | CONFIG_SYSFS_DEPRECATED_V2=y |
211 | CONFIG_RELAY=y | ||
212 | # CONFIG_NAMESPACES is not set | ||
213 | CONFIG_BLK_DEV_INITRD=y | ||
206 | CONFIG_INITRAMFS_SOURCE="" | 214 | CONFIG_INITRAMFS_SOURCE="" |
207 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 215 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
208 | CONFIG_SYSCTL=y | 216 | CONFIG_SYSCTL=y |
@@ -211,24 +219,33 @@ CONFIG_EMBEDDED=y | |||
211 | CONFIG_KALLSYMS=y | 219 | CONFIG_KALLSYMS=y |
212 | # CONFIG_KALLSYMS_ALL is not set | 220 | # CONFIG_KALLSYMS_ALL is not set |
213 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 221 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
214 | # CONFIG_HOTPLUG is not set | 222 | CONFIG_HOTPLUG=y |
215 | CONFIG_PRINTK=y | 223 | CONFIG_PRINTK=y |
216 | CONFIG_BUG=y | 224 | CONFIG_BUG=y |
217 | CONFIG_ELF_CORE=y | 225 | CONFIG_ELF_CORE=y |
226 | CONFIG_COMPAT_BRK=y | ||
218 | CONFIG_BASE_FULL=y | 227 | CONFIG_BASE_FULL=y |
219 | CONFIG_FUTEX=y | 228 | CONFIG_FUTEX=y |
229 | CONFIG_ANON_INODES=y | ||
220 | CONFIG_EPOLL=y | 230 | CONFIG_EPOLL=y |
231 | CONFIG_SIGNALFD=y | ||
232 | CONFIG_TIMERFD=y | ||
233 | CONFIG_EVENTFD=y | ||
221 | CONFIG_SHMEM=y | 234 | CONFIG_SHMEM=y |
222 | CONFIG_SLAB=y | ||
223 | CONFIG_VM_EVENT_COUNTERS=y | 235 | CONFIG_VM_EVENT_COUNTERS=y |
236 | CONFIG_SLAB=y | ||
237 | # CONFIG_SLUB is not set | ||
238 | # CONFIG_SLOB is not set | ||
239 | # CONFIG_PROFILING is not set | ||
240 | # CONFIG_MARKERS is not set | ||
241 | CONFIG_HAVE_OPROFILE=y | ||
242 | # CONFIG_HAVE_KPROBES is not set | ||
243 | # CONFIG_HAVE_KRETPROBES is not set | ||
244 | CONFIG_PROC_PAGE_MONITOR=y | ||
245 | CONFIG_SLABINFO=y | ||
224 | CONFIG_RT_MUTEXES=y | 246 | CONFIG_RT_MUTEXES=y |
225 | # CONFIG_TINY_SHMEM is not set | 247 | # CONFIG_TINY_SHMEM is not set |
226 | CONFIG_BASE_SMALL=0 | 248 | CONFIG_BASE_SMALL=0 |
227 | # CONFIG_SLOB is not set | ||
228 | |||
229 | # | ||
230 | # Loadable module support | ||
231 | # | ||
232 | CONFIG_MODULES=y | 249 | CONFIG_MODULES=y |
233 | CONFIG_MODULE_UNLOAD=y | 250 | CONFIG_MODULE_UNLOAD=y |
234 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 251 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
@@ -236,12 +253,10 @@ CONFIG_MODVERSIONS=y | |||
236 | CONFIG_MODULE_SRCVERSION_ALL=y | 253 | CONFIG_MODULE_SRCVERSION_ALL=y |
237 | CONFIG_KMOD=y | 254 | CONFIG_KMOD=y |
238 | CONFIG_STOP_MACHINE=y | 255 | CONFIG_STOP_MACHINE=y |
239 | |||
240 | # | ||
241 | # Block layer | ||
242 | # | ||
243 | CONFIG_BLOCK=y | 256 | CONFIG_BLOCK=y |
244 | # CONFIG_BLK_DEV_IO_TRACE is not set | 257 | # CONFIG_BLK_DEV_IO_TRACE is not set |
258 | # CONFIG_BLK_DEV_BSG is not set | ||
259 | CONFIG_BLOCK_COMPAT=y | ||
245 | 260 | ||
246 | # | 261 | # |
247 | # IO Schedulers | 262 | # IO Schedulers |
@@ -255,6 +270,7 @@ CONFIG_DEFAULT_AS=y | |||
255 | # CONFIG_DEFAULT_CFQ is not set | 270 | # CONFIG_DEFAULT_CFQ is not set |
256 | # CONFIG_DEFAULT_NOOP is not set | 271 | # CONFIG_DEFAULT_NOOP is not set |
257 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 272 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
273 | CONFIG_CLASSIC_RCU=y | ||
258 | 274 | ||
259 | # | 275 | # |
260 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) | 276 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) |
@@ -262,23 +278,19 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
262 | CONFIG_HW_HAS_PCI=y | 278 | CONFIG_HW_HAS_PCI=y |
263 | CONFIG_PCI=y | 279 | CONFIG_PCI=y |
264 | CONFIG_PCI_DOMAINS=y | 280 | CONFIG_PCI_DOMAINS=y |
281 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
282 | CONFIG_PCI_LEGACY=y | ||
265 | CONFIG_PCI_DEBUG=y | 283 | CONFIG_PCI_DEBUG=y |
266 | CONFIG_MMU=y | 284 | CONFIG_MMU=y |
267 | 285 | CONFIG_ZONE_DMA32=y | |
268 | # | 286 | # CONFIG_PCCARD is not set |
269 | # PCCARD (PCMCIA/CardBus) support | 287 | # CONFIG_HOTPLUG_PCI is not set |
270 | # | ||
271 | |||
272 | # | ||
273 | # PCI Hotplug Support | ||
274 | # | ||
275 | 288 | ||
276 | # | 289 | # |
277 | # Executable file formats | 290 | # Executable file formats |
278 | # | 291 | # |
279 | CONFIG_BINFMT_ELF=y | 292 | CONFIG_BINFMT_ELF=y |
280 | # CONFIG_BINFMT_MISC is not set | 293 | # CONFIG_BINFMT_MISC is not set |
281 | # CONFIG_BUILD_ELF64 is not set | ||
282 | CONFIG_MIPS32_COMPAT=y | 294 | CONFIG_MIPS32_COMPAT=y |
283 | CONFIG_COMPAT=y | 295 | CONFIG_COMPAT=y |
284 | CONFIG_SYSVIPC_COMPAT=y | 296 | CONFIG_SYSVIPC_COMPAT=y |
@@ -292,7 +304,6 @@ CONFIG_BINFMT_ELF32=y | |||
292 | CONFIG_PM=y | 304 | CONFIG_PM=y |
293 | # CONFIG_PM_LEGACY is not set | 305 | # CONFIG_PM_LEGACY is not set |
294 | # CONFIG_PM_DEBUG is not set | 306 | # CONFIG_PM_DEBUG is not set |
295 | # CONFIG_PM_SYSFS_DEPRECATED is not set | ||
296 | 307 | ||
297 | # | 308 | # |
298 | # Networking | 309 | # Networking |
@@ -302,7 +313,6 @@ CONFIG_NET=y | |||
302 | # | 313 | # |
303 | # Networking options | 314 | # Networking options |
304 | # | 315 | # |
305 | # CONFIG_NETDEBUG is not set | ||
306 | CONFIG_PACKET=y | 316 | CONFIG_PACKET=y |
307 | CONFIG_PACKET_MMAP=y | 317 | CONFIG_PACKET_MMAP=y |
308 | CONFIG_UNIX=y | 318 | CONFIG_UNIX=y |
@@ -310,10 +320,11 @@ CONFIG_XFRM=y | |||
310 | CONFIG_XFRM_USER=m | 320 | CONFIG_XFRM_USER=m |
311 | # CONFIG_XFRM_SUB_POLICY is not set | 321 | # CONFIG_XFRM_SUB_POLICY is not set |
312 | CONFIG_XFRM_MIGRATE=y | 322 | CONFIG_XFRM_MIGRATE=y |
323 | # CONFIG_XFRM_STATISTICS is not set | ||
313 | CONFIG_NET_KEY=y | 324 | CONFIG_NET_KEY=y |
314 | CONFIG_NET_KEY_MIGRATE=y | 325 | CONFIG_NET_KEY_MIGRATE=y |
315 | CONFIG_INET=y | 326 | CONFIG_INET=y |
316 | # CONFIG_IP_MULTICAST is not set | 327 | CONFIG_IP_MULTICAST=y |
317 | # CONFIG_IP_ADVANCED_ROUTER is not set | 328 | # CONFIG_IP_ADVANCED_ROUTER is not set |
318 | CONFIG_IP_FIB_HASH=y | 329 | CONFIG_IP_FIB_HASH=y |
319 | CONFIG_IP_PNP=y | 330 | CONFIG_IP_PNP=y |
@@ -322,41 +333,141 @@ CONFIG_IP_PNP_BOOTP=y | |||
322 | # CONFIG_IP_PNP_RARP is not set | 333 | # CONFIG_IP_PNP_RARP is not set |
323 | # CONFIG_NET_IPIP is not set | 334 | # CONFIG_NET_IPIP is not set |
324 | # CONFIG_NET_IPGRE is not set | 335 | # CONFIG_NET_IPGRE is not set |
336 | CONFIG_IP_MROUTE=y | ||
337 | CONFIG_IP_PIMSM_V1=y | ||
338 | CONFIG_IP_PIMSM_V2=y | ||
325 | # CONFIG_ARPD is not set | 339 | # CONFIG_ARPD is not set |
326 | # CONFIG_SYN_COOKIES is not set | 340 | # CONFIG_SYN_COOKIES is not set |
327 | # CONFIG_INET_AH is not set | 341 | CONFIG_INET_AH=m |
328 | # CONFIG_INET_ESP is not set | 342 | CONFIG_INET_ESP=m |
329 | # CONFIG_INET_IPCOMP is not set | 343 | CONFIG_INET_IPCOMP=m |
330 | # CONFIG_INET_XFRM_TUNNEL is not set | 344 | CONFIG_INET_XFRM_TUNNEL=m |
331 | # CONFIG_INET_TUNNEL is not set | 345 | CONFIG_INET_TUNNEL=m |
332 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | 346 | CONFIG_INET_XFRM_MODE_TRANSPORT=m |
333 | CONFIG_INET_XFRM_MODE_TUNNEL=m | 347 | CONFIG_INET_XFRM_MODE_TUNNEL=m |
334 | CONFIG_INET_XFRM_MODE_BEET=y | 348 | CONFIG_INET_XFRM_MODE_BEET=y |
349 | # CONFIG_INET_LRO is not set | ||
335 | CONFIG_INET_DIAG=y | 350 | CONFIG_INET_DIAG=y |
336 | CONFIG_INET_TCP_DIAG=y | 351 | CONFIG_INET_TCP_DIAG=y |
337 | # CONFIG_TCP_CONG_ADVANCED is not set | 352 | # CONFIG_TCP_CONG_ADVANCED is not set |
338 | CONFIG_TCP_CONG_CUBIC=y | 353 | CONFIG_TCP_CONG_CUBIC=y |
339 | CONFIG_DEFAULT_TCP_CONG="cubic" | 354 | CONFIG_DEFAULT_TCP_CONG="cubic" |
340 | CONFIG_TCP_MD5SIG=y | 355 | CONFIG_TCP_MD5SIG=y |
341 | # CONFIG_IPV6 is not set | 356 | CONFIG_IP_VS=m |
342 | # CONFIG_INET6_XFRM_TUNNEL is not set | 357 | # CONFIG_IP_VS_DEBUG is not set |
343 | # CONFIG_INET6_TUNNEL is not set | 358 | CONFIG_IP_VS_TAB_BITS=12 |
359 | |||
360 | # | ||
361 | # IPVS transport protocol load balancing support | ||
362 | # | ||
363 | CONFIG_IP_VS_PROTO_TCP=y | ||
364 | CONFIG_IP_VS_PROTO_UDP=y | ||
365 | CONFIG_IP_VS_PROTO_ESP=y | ||
366 | CONFIG_IP_VS_PROTO_AH=y | ||
367 | |||
368 | # | ||
369 | # IPVS scheduler | ||
370 | # | ||
371 | CONFIG_IP_VS_RR=m | ||
372 | CONFIG_IP_VS_WRR=m | ||
373 | CONFIG_IP_VS_LC=m | ||
374 | CONFIG_IP_VS_WLC=m | ||
375 | CONFIG_IP_VS_LBLC=m | ||
376 | CONFIG_IP_VS_LBLCR=m | ||
377 | CONFIG_IP_VS_DH=m | ||
378 | CONFIG_IP_VS_SH=m | ||
379 | CONFIG_IP_VS_SED=m | ||
380 | CONFIG_IP_VS_NQ=m | ||
381 | |||
382 | # | ||
383 | # IPVS application helper | ||
384 | # | ||
385 | CONFIG_IP_VS_FTP=m | ||
386 | CONFIG_IPV6=m | ||
387 | CONFIG_IPV6_PRIVACY=y | ||
388 | CONFIG_IPV6_ROUTER_PREF=y | ||
389 | CONFIG_IPV6_ROUTE_INFO=y | ||
390 | CONFIG_IPV6_OPTIMISTIC_DAD=y | ||
391 | CONFIG_INET6_AH=m | ||
392 | CONFIG_INET6_ESP=m | ||
393 | CONFIG_INET6_IPCOMP=m | ||
394 | CONFIG_IPV6_MIP6=m | ||
395 | CONFIG_INET6_XFRM_TUNNEL=m | ||
396 | CONFIG_INET6_TUNNEL=m | ||
397 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
398 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
399 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
400 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
401 | CONFIG_IPV6_SIT=m | ||
402 | CONFIG_IPV6_TUNNEL=m | ||
403 | CONFIG_IPV6_MULTIPLE_TABLES=y | ||
404 | CONFIG_IPV6_SUBTREES=y | ||
344 | CONFIG_NETWORK_SECMARK=y | 405 | CONFIG_NETWORK_SECMARK=y |
345 | # CONFIG_NETFILTER is not set | 406 | CONFIG_NETFILTER=y |
346 | 407 | # CONFIG_NETFILTER_DEBUG is not set | |
347 | # | 408 | # CONFIG_NETFILTER_ADVANCED is not set |
348 | # DCCP Configuration (EXPERIMENTAL) | 409 | |
349 | # | 410 | # |
411 | # Core Netfilter Configuration | ||
412 | # | ||
413 | CONFIG_NETFILTER_NETLINK=m | ||
414 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
415 | CONFIG_NF_CONNTRACK=m | ||
416 | CONFIG_NF_CONNTRACK_SECMARK=y | ||
417 | CONFIG_NF_CONNTRACK_FTP=m | ||
418 | CONFIG_NF_CONNTRACK_IRC=m | ||
419 | CONFIG_NF_CONNTRACK_SIP=m | ||
420 | CONFIG_NF_CT_NETLINK=m | ||
421 | CONFIG_NETFILTER_XTABLES=m | ||
422 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
423 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
424 | CONFIG_NETFILTER_XT_TARGET_SECMARK=m | ||
425 | CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m | ||
426 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
427 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
428 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
429 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
430 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
431 | |||
432 | # | ||
433 | # IP: Netfilter Configuration | ||
434 | # | ||
435 | CONFIG_NF_CONNTRACK_IPV4=m | ||
436 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
437 | CONFIG_IP_NF_IPTABLES=m | ||
438 | CONFIG_IP_NF_FILTER=m | ||
439 | CONFIG_IP_NF_TARGET_REJECT=m | ||
440 | CONFIG_IP_NF_TARGET_LOG=m | ||
441 | CONFIG_IP_NF_TARGET_ULOG=m | ||
442 | CONFIG_NF_NAT=m | ||
443 | CONFIG_NF_NAT_NEEDED=y | ||
444 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
445 | CONFIG_NF_NAT_FTP=m | ||
446 | CONFIG_NF_NAT_IRC=m | ||
447 | # CONFIG_NF_NAT_TFTP is not set | ||
448 | # CONFIG_NF_NAT_AMANDA is not set | ||
449 | # CONFIG_NF_NAT_PPTP is not set | ||
450 | # CONFIG_NF_NAT_H323 is not set | ||
451 | CONFIG_NF_NAT_SIP=m | ||
452 | CONFIG_IP_NF_MANGLE=m | ||
453 | |||
454 | # | ||
455 | # IPv6: Netfilter Configuration | ||
456 | # | ||
457 | CONFIG_NF_CONNTRACK_IPV6=m | ||
458 | CONFIG_IP6_NF_IPTABLES=m | ||
459 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
460 | CONFIG_IP6_NF_FILTER=m | ||
461 | CONFIG_IP6_NF_TARGET_LOG=m | ||
462 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
463 | CONFIG_IP6_NF_MANGLE=m | ||
350 | # CONFIG_IP_DCCP is not set | 464 | # CONFIG_IP_DCCP is not set |
351 | 465 | CONFIG_IP_SCTP=m | |
352 | # | 466 | # CONFIG_SCTP_DBG_MSG is not set |
353 | # SCTP Configuration (EXPERIMENTAL) | 467 | # CONFIG_SCTP_DBG_OBJCNT is not set |
354 | # | 468 | # CONFIG_SCTP_HMAC_NONE is not set |
355 | # CONFIG_IP_SCTP is not set | 469 | # CONFIG_SCTP_HMAC_SHA1 is not set |
356 | 470 | CONFIG_SCTP_HMAC_MD5=y | |
357 | # | ||
358 | # TIPC Configuration (EXPERIMENTAL) | ||
359 | # | ||
360 | # CONFIG_TIPC is not set | 471 | # CONFIG_TIPC is not set |
361 | # CONFIG_ATM is not set | 472 | # CONFIG_ATM is not set |
362 | # CONFIG_BRIDGE is not set | 473 | # CONFIG_BRIDGE is not set |
@@ -369,10 +480,6 @@ CONFIG_NETWORK_SECMARK=y | |||
369 | # CONFIG_LAPB is not set | 480 | # CONFIG_LAPB is not set |
370 | # CONFIG_ECONET is not set | 481 | # CONFIG_ECONET is not set |
371 | # CONFIG_WAN_ROUTER is not set | 482 | # CONFIG_WAN_ROUTER is not set |
372 | |||
373 | # | ||
374 | # QoS and/or fair queueing | ||
375 | # | ||
376 | # CONFIG_NET_SCHED is not set | 483 | # CONFIG_NET_SCHED is not set |
377 | 484 | ||
378 | # | 485 | # |
@@ -380,9 +487,21 @@ CONFIG_NETWORK_SECMARK=y | |||
380 | # | 487 | # |
381 | # CONFIG_NET_PKTGEN is not set | 488 | # CONFIG_NET_PKTGEN is not set |
382 | # CONFIG_HAMRADIO is not set | 489 | # CONFIG_HAMRADIO is not set |
490 | # CONFIG_CAN is not set | ||
383 | # CONFIG_IRDA is not set | 491 | # CONFIG_IRDA is not set |
384 | # CONFIG_BT is not set | 492 | # CONFIG_BT is not set |
493 | # CONFIG_AF_RXRPC is not set | ||
494 | CONFIG_FIB_RULES=y | ||
495 | |||
496 | # | ||
497 | # Wireless | ||
498 | # | ||
499 | # CONFIG_CFG80211 is not set | ||
500 | # CONFIG_WIRELESS_EXT is not set | ||
501 | # CONFIG_MAC80211 is not set | ||
385 | # CONFIG_IEEE80211 is not set | 502 | # CONFIG_IEEE80211 is not set |
503 | # CONFIG_RFKILL is not set | ||
504 | # CONFIG_NET_9P is not set | ||
386 | 505 | ||
387 | # | 506 | # |
388 | # Device Drivers | 507 | # Device Drivers |
@@ -391,85 +510,70 @@ CONFIG_NETWORK_SECMARK=y | |||
391 | # | 510 | # |
392 | # Generic Driver Options | 511 | # Generic Driver Options |
393 | # | 512 | # |
513 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
394 | CONFIG_STANDALONE=y | 514 | CONFIG_STANDALONE=y |
395 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 515 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
516 | CONFIG_FW_LOADER=m | ||
396 | # CONFIG_DEBUG_DRIVER is not set | 517 | # CONFIG_DEBUG_DRIVER is not set |
397 | # CONFIG_DEBUG_DEVRES is not set | 518 | # CONFIG_DEBUG_DEVRES is not set |
398 | # CONFIG_SYS_HYPERVISOR is not set | 519 | # CONFIG_SYS_HYPERVISOR is not set |
399 | |||
400 | # | ||
401 | # Connector - unified userspace <-> kernelspace linker | ||
402 | # | ||
403 | # CONFIG_CONNECTOR is not set | 520 | # CONFIG_CONNECTOR is not set |
404 | |||
405 | # | ||
406 | # Memory Technology Devices (MTD) | ||
407 | # | ||
408 | # CONFIG_MTD is not set | 521 | # CONFIG_MTD is not set |
409 | |||
410 | # | ||
411 | # Parallel port support | ||
412 | # | ||
413 | # CONFIG_PARPORT is not set | 522 | # CONFIG_PARPORT is not set |
414 | 523 | CONFIG_BLK_DEV=y | |
415 | # | ||
416 | # Plug and Play support | ||
417 | # | ||
418 | # CONFIG_PNPACPI is not set | ||
419 | |||
420 | # | ||
421 | # Block devices | ||
422 | # | ||
423 | # CONFIG_BLK_CPQ_DA is not set | 524 | # CONFIG_BLK_CPQ_DA is not set |
424 | # CONFIG_BLK_CPQ_CISS_DA is not set | 525 | # CONFIG_BLK_CPQ_CISS_DA is not set |
425 | # CONFIG_BLK_DEV_DAC960 is not set | 526 | # CONFIG_BLK_DEV_DAC960 is not set |
426 | # CONFIG_BLK_DEV_UMEM is not set | 527 | # CONFIG_BLK_DEV_UMEM is not set |
427 | # CONFIG_BLK_DEV_COW_COMMON is not set | 528 | # CONFIG_BLK_DEV_COW_COMMON is not set |
428 | CONFIG_BLK_DEV_LOOP=m | 529 | CONFIG_BLK_DEV_LOOP=m |
429 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 530 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
430 | CONFIG_BLK_DEV_NBD=m | 531 | CONFIG_BLK_DEV_NBD=m |
431 | # CONFIG_BLK_DEV_SX8 is not set | 532 | # CONFIG_BLK_DEV_SX8 is not set |
432 | # CONFIG_BLK_DEV_RAM is not set | 533 | # CONFIG_BLK_DEV_RAM is not set |
433 | CONFIG_BLK_DEV_INITRD=y | ||
434 | # CONFIG_CDROM_PKTCDVD is not set | 534 | # CONFIG_CDROM_PKTCDVD is not set |
435 | # CONFIG_ATA_OVER_ETH is not set | 535 | # CONFIG_ATA_OVER_ETH is not set |
436 | 536 | CONFIG_MISC_DEVICES=y | |
437 | # | 537 | # CONFIG_PHANTOM is not set |
438 | # Misc devices | 538 | # CONFIG_EEPROM_93CX6 is not set |
439 | # | ||
440 | CONFIG_SGI_IOC4=m | 539 | CONFIG_SGI_IOC4=m |
441 | # CONFIG_TIFM_CORE is not set | 540 | # CONFIG_TIFM_CORE is not set |
442 | 541 | # CONFIG_ENCLOSURE_SERVICES is not set | |
443 | # | 542 | CONFIG_HAVE_IDE=y |
444 | # ATA/ATAPI/MFM/RLL support | ||
445 | # | ||
446 | CONFIG_IDE=y | 543 | CONFIG_IDE=y |
447 | CONFIG_IDE_MAX_HWIFS=4 | 544 | CONFIG_IDE_MAX_HWIFS=4 |
448 | CONFIG_BLK_DEV_IDE=y | 545 | CONFIG_BLK_DEV_IDE=y |
449 | 546 | ||
450 | # | 547 | # |
451 | # Please see Documentation/ide.txt for help/info on IDE drives | 548 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
452 | # | 549 | # |
453 | # CONFIG_BLK_DEV_IDE_SATA is not set | 550 | # CONFIG_BLK_DEV_IDE_SATA is not set |
454 | CONFIG_BLK_DEV_IDEDISK=y | 551 | CONFIG_BLK_DEV_IDEDISK=y |
455 | # CONFIG_IDEDISK_MULTI_MODE is not set | 552 | # CONFIG_IDEDISK_MULTI_MODE is not set |
456 | CONFIG_BLK_DEV_IDECD=y | 553 | CONFIG_BLK_DEV_IDECD=y |
554 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
457 | CONFIG_BLK_DEV_IDETAPE=y | 555 | CONFIG_BLK_DEV_IDETAPE=y |
458 | CONFIG_BLK_DEV_IDEFLOPPY=y | 556 | CONFIG_BLK_DEV_IDEFLOPPY=y |
557 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
459 | # CONFIG_IDE_TASK_IOCTL is not set | 558 | # CONFIG_IDE_TASK_IOCTL is not set |
559 | CONFIG_IDE_PROC_FS=y | ||
460 | 560 | ||
461 | # | 561 | # |
462 | # IDE chipset support/bugfixes | 562 | # IDE chipset support/bugfixes |
463 | # | 563 | # |
464 | CONFIG_IDE_GENERIC=y | 564 | CONFIG_IDE_GENERIC=y |
565 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
566 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
567 | |||
568 | # | ||
569 | # PCI IDE chipsets support | ||
570 | # | ||
465 | CONFIG_BLK_DEV_IDEPCI=y | 571 | CONFIG_BLK_DEV_IDEPCI=y |
466 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 572 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
467 | # CONFIG_BLK_DEV_OFFBOARD is not set | 573 | # CONFIG_BLK_DEV_OFFBOARD is not set |
468 | CONFIG_BLK_DEV_GENERIC=y | 574 | CONFIG_BLK_DEV_GENERIC=y |
469 | # CONFIG_BLK_DEV_OPTI621 is not set | 575 | # CONFIG_BLK_DEV_OPTI621 is not set |
470 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 576 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
471 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | ||
472 | # CONFIG_IDEDMA_PCI_AUTO is not set | ||
473 | # CONFIG_BLK_DEV_AEC62XX is not set | 577 | # CONFIG_BLK_DEV_AEC62XX is not set |
474 | # CONFIG_BLK_DEV_ALI15X3 is not set | 578 | # CONFIG_BLK_DEV_ALI15X3 is not set |
475 | # CONFIG_BLK_DEV_AMD74XX is not set | 579 | # CONFIG_BLK_DEV_AMD74XX is not set |
@@ -495,87 +599,196 @@ CONFIG_BLK_DEV_IT8213=m | |||
495 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 599 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
496 | CONFIG_BLK_DEV_TC86C001=m | 600 | CONFIG_BLK_DEV_TC86C001=m |
497 | # CONFIG_BLK_DEV_IDE_SWARM is not set | 601 | # CONFIG_BLK_DEV_IDE_SWARM is not set |
498 | # CONFIG_IDE_ARM is not set | ||
499 | CONFIG_BLK_DEV_IDEDMA=y | 602 | CONFIG_BLK_DEV_IDEDMA=y |
500 | # CONFIG_IDEDMA_IVB is not set | 603 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
501 | # CONFIG_IDEDMA_AUTO is not set | ||
502 | # CONFIG_BLK_DEV_HD is not set | 604 | # CONFIG_BLK_DEV_HD is not set |
503 | 605 | ||
504 | # | 606 | # |
505 | # SCSI device support | 607 | # SCSI device support |
506 | # | 608 | # |
507 | # CONFIG_RAID_ATTRS is not set | 609 | # CONFIG_RAID_ATTRS is not set |
508 | # CONFIG_SCSI is not set | 610 | CONFIG_SCSI=y |
611 | CONFIG_SCSI_DMA=y | ||
612 | # CONFIG_SCSI_TGT is not set | ||
509 | # CONFIG_SCSI_NETLINK is not set | 613 | # CONFIG_SCSI_NETLINK is not set |
510 | 614 | CONFIG_SCSI_PROC_FS=y | |
511 | # | 615 | |
512 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | 616 | # |
513 | # | 617 | # SCSI support type (disk, tape, CD-ROM) |
514 | # CONFIG_ATA is not set | 618 | # |
515 | 619 | CONFIG_BLK_DEV_SD=y | |
516 | # | 620 | # CONFIG_CHR_DEV_ST is not set |
517 | # Multi-device support (RAID and LVM) | 621 | # CONFIG_CHR_DEV_OSST is not set |
518 | # | 622 | # CONFIG_BLK_DEV_SR is not set |
623 | # CONFIG_CHR_DEV_SG is not set | ||
624 | # CONFIG_CHR_DEV_SCH is not set | ||
625 | |||
626 | # | ||
627 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
628 | # | ||
629 | # CONFIG_SCSI_MULTI_LUN is not set | ||
630 | # CONFIG_SCSI_CONSTANTS is not set | ||
631 | # CONFIG_SCSI_LOGGING is not set | ||
632 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
633 | CONFIG_SCSI_WAIT_SCAN=m | ||
634 | |||
635 | # | ||
636 | # SCSI Transports | ||
637 | # | ||
638 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
639 | # CONFIG_SCSI_FC_ATTRS is not set | ||
640 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
641 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
642 | # CONFIG_SCSI_SRP_ATTRS is not set | ||
643 | CONFIG_SCSI_LOWLEVEL=y | ||
644 | # CONFIG_ISCSI_TCP is not set | ||
645 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
646 | # CONFIG_SCSI_3W_9XXX is not set | ||
647 | # CONFIG_SCSI_ACARD is not set | ||
648 | # CONFIG_SCSI_AACRAID is not set | ||
649 | # CONFIG_SCSI_AIC7XXX is not set | ||
650 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
651 | # CONFIG_SCSI_AIC79XX is not set | ||
652 | # CONFIG_SCSI_AIC94XX is not set | ||
653 | # CONFIG_SCSI_ADVANSYS is not set | ||
654 | # CONFIG_SCSI_ARCMSR is not set | ||
655 | # CONFIG_MEGARAID_NEWGEN is not set | ||
656 | # CONFIG_MEGARAID_LEGACY is not set | ||
657 | # CONFIG_MEGARAID_SAS is not set | ||
658 | # CONFIG_SCSI_HPTIOP is not set | ||
659 | # CONFIG_SCSI_DMX3191D is not set | ||
660 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
661 | # CONFIG_SCSI_IPS is not set | ||
662 | # CONFIG_SCSI_INITIO is not set | ||
663 | # CONFIG_SCSI_INIA100 is not set | ||
664 | # CONFIG_SCSI_MVSAS is not set | ||
665 | # CONFIG_SCSI_STEX is not set | ||
666 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
667 | # CONFIG_SCSI_IPR is not set | ||
668 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
669 | # CONFIG_SCSI_QLA_FC is not set | ||
670 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
671 | # CONFIG_SCSI_LPFC is not set | ||
672 | # CONFIG_SCSI_DC395x is not set | ||
673 | # CONFIG_SCSI_DC390T is not set | ||
674 | # CONFIG_SCSI_DEBUG is not set | ||
675 | # CONFIG_SCSI_SRP is not set | ||
676 | CONFIG_ATA=y | ||
677 | # CONFIG_ATA_NONSTANDARD is not set | ||
678 | # CONFIG_SATA_AHCI is not set | ||
679 | # CONFIG_SATA_SVW is not set | ||
680 | # CONFIG_ATA_PIIX is not set | ||
681 | # CONFIG_SATA_MV is not set | ||
682 | # CONFIG_SATA_NV is not set | ||
683 | # CONFIG_PDC_ADMA is not set | ||
684 | # CONFIG_SATA_QSTOR is not set | ||
685 | # CONFIG_SATA_PROMISE is not set | ||
686 | # CONFIG_SATA_SX4 is not set | ||
687 | # CONFIG_SATA_SIL is not set | ||
688 | CONFIG_SATA_SIL24=y | ||
689 | # CONFIG_SATA_SIS is not set | ||
690 | # CONFIG_SATA_ULI is not set | ||
691 | # CONFIG_SATA_VIA is not set | ||
692 | # CONFIG_SATA_VITESSE is not set | ||
693 | # CONFIG_SATA_INIC162X is not set | ||
694 | # CONFIG_PATA_ALI is not set | ||
695 | # CONFIG_PATA_AMD is not set | ||
696 | # CONFIG_PATA_ARTOP is not set | ||
697 | # CONFIG_PATA_ATIIXP is not set | ||
698 | # CONFIG_PATA_CMD640_PCI is not set | ||
699 | # CONFIG_PATA_CMD64X is not set | ||
700 | # CONFIG_PATA_CS5520 is not set | ||
701 | # CONFIG_PATA_CS5530 is not set | ||
702 | # CONFIG_PATA_CYPRESS is not set | ||
703 | # CONFIG_PATA_EFAR is not set | ||
704 | # CONFIG_ATA_GENERIC is not set | ||
705 | # CONFIG_PATA_HPT366 is not set | ||
706 | # CONFIG_PATA_HPT37X is not set | ||
707 | # CONFIG_PATA_HPT3X2N is not set | ||
708 | # CONFIG_PATA_HPT3X3 is not set | ||
709 | # CONFIG_PATA_IT821X is not set | ||
710 | # CONFIG_PATA_IT8213 is not set | ||
711 | # CONFIG_PATA_JMICRON is not set | ||
712 | # CONFIG_PATA_TRIFLEX is not set | ||
713 | # CONFIG_PATA_MARVELL is not set | ||
714 | # CONFIG_PATA_MPIIX is not set | ||
715 | # CONFIG_PATA_OLDPIIX is not set | ||
716 | # CONFIG_PATA_NETCELL is not set | ||
717 | # CONFIG_PATA_NINJA32 is not set | ||
718 | # CONFIG_PATA_NS87410 is not set | ||
719 | # CONFIG_PATA_NS87415 is not set | ||
720 | # CONFIG_PATA_OPTI is not set | ||
721 | # CONFIG_PATA_OPTIDMA is not set | ||
722 | # CONFIG_PATA_PDC_OLD is not set | ||
723 | # CONFIG_PATA_RADISYS is not set | ||
724 | # CONFIG_PATA_RZ1000 is not set | ||
725 | # CONFIG_PATA_SC1200 is not set | ||
726 | # CONFIG_PATA_SERVERWORKS is not set | ||
727 | # CONFIG_PATA_PDC2027X is not set | ||
728 | CONFIG_PATA_SIL680=y | ||
729 | # CONFIG_PATA_SIS is not set | ||
730 | # CONFIG_PATA_VIA is not set | ||
731 | # CONFIG_PATA_WINBOND is not set | ||
732 | # CONFIG_PATA_PLATFORM is not set | ||
519 | # CONFIG_MD is not set | 733 | # CONFIG_MD is not set |
520 | |||
521 | # | ||
522 | # Fusion MPT device support | ||
523 | # | ||
524 | # CONFIG_FUSION is not set | 734 | # CONFIG_FUSION is not set |
525 | 735 | ||
526 | # | 736 | # |
527 | # IEEE 1394 (FireWire) support | 737 | # IEEE 1394 (FireWire) support |
528 | # | 738 | # |
739 | # CONFIG_FIREWIRE is not set | ||
529 | # CONFIG_IEEE1394 is not set | 740 | # CONFIG_IEEE1394 is not set |
530 | |||
531 | # | ||
532 | # I2O device support | ||
533 | # | ||
534 | # CONFIG_I2O is not set | 741 | # CONFIG_I2O is not set |
535 | |||
536 | # | ||
537 | # Network device support | ||
538 | # | ||
539 | CONFIG_NETDEVICES=y | 742 | CONFIG_NETDEVICES=y |
743 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
540 | # CONFIG_DUMMY is not set | 744 | # CONFIG_DUMMY is not set |
541 | # CONFIG_BONDING is not set | 745 | # CONFIG_BONDING is not set |
746 | # CONFIG_MACVLAN is not set | ||
542 | # CONFIG_EQUALIZER is not set | 747 | # CONFIG_EQUALIZER is not set |
543 | # CONFIG_TUN is not set | 748 | # CONFIG_TUN is not set |
544 | 749 | # CONFIG_VETH is not set | |
545 | # | ||
546 | # ARCnet devices | ||
547 | # | ||
548 | # CONFIG_ARCNET is not set | 750 | # CONFIG_ARCNET is not set |
549 | 751 | CONFIG_PHYLIB=y | |
550 | # | 752 | |
551 | # PHY device support | 753 | # |
552 | # | 754 | # MII PHY device drivers |
553 | # CONFIG_PHYLIB is not set | 755 | # |
554 | 756 | # CONFIG_MARVELL_PHY is not set | |
555 | # | 757 | # CONFIG_DAVICOM_PHY is not set |
556 | # Ethernet (10 or 100Mbit) | 758 | # CONFIG_QSEMI_PHY is not set |
557 | # | 759 | # CONFIG_LXT_PHY is not set |
760 | # CONFIG_CICADA_PHY is not set | ||
761 | # CONFIG_VITESSE_PHY is not set | ||
762 | # CONFIG_SMSC_PHY is not set | ||
763 | # CONFIG_BROADCOM_PHY is not set | ||
764 | # CONFIG_ICPLUS_PHY is not set | ||
765 | # CONFIG_REALTEK_PHY is not set | ||
766 | # CONFIG_FIXED_PHY is not set | ||
767 | # CONFIG_MDIO_BITBANG is not set | ||
558 | CONFIG_NET_ETHERNET=y | 768 | CONFIG_NET_ETHERNET=y |
559 | CONFIG_MII=y | 769 | CONFIG_MII=y |
770 | # CONFIG_AX88796 is not set | ||
560 | # CONFIG_HAPPYMEAL is not set | 771 | # CONFIG_HAPPYMEAL is not set |
561 | # CONFIG_SUNGEM is not set | 772 | # CONFIG_SUNGEM is not set |
562 | # CONFIG_CASSINI is not set | 773 | # CONFIG_CASSINI is not set |
563 | # CONFIG_NET_VENDOR_3COM is not set | 774 | # CONFIG_NET_VENDOR_3COM is not set |
564 | # CONFIG_DM9000 is not set | 775 | # CONFIG_DM9000 is not set |
565 | |||
566 | # | ||
567 | # Tulip family network device support | ||
568 | # | ||
569 | # CONFIG_NET_TULIP is not set | 776 | # CONFIG_NET_TULIP is not set |
570 | # CONFIG_HP100 is not set | 777 | # CONFIG_HP100 is not set |
778 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
779 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
780 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
781 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
571 | # CONFIG_NET_PCI is not set | 782 | # CONFIG_NET_PCI is not set |
572 | 783 | # CONFIG_B44 is not set | |
573 | # | 784 | CONFIG_NETDEV_1000=y |
574 | # Ethernet (1000 Mbit) | ||
575 | # | ||
576 | # CONFIG_ACENIC is not set | 785 | # CONFIG_ACENIC is not set |
577 | # CONFIG_DL2K is not set | 786 | # CONFIG_DL2K is not set |
578 | # CONFIG_E1000 is not set | 787 | # CONFIG_E1000 is not set |
788 | # CONFIG_E1000E is not set | ||
789 | # CONFIG_E1000E_ENABLED is not set | ||
790 | # CONFIG_IP1000 is not set | ||
791 | # CONFIG_IGB is not set | ||
579 | # CONFIG_NS83820 is not set | 792 | # CONFIG_NS83820 is not set |
580 | # CONFIG_HAMACHI is not set | 793 | # CONFIG_HAMACHI is not set |
581 | # CONFIG_YELLOWFIN is not set | 794 | # CONFIG_YELLOWFIN is not set |
@@ -585,52 +798,53 @@ CONFIG_SB1250_MAC=y | |||
585 | # CONFIG_SKGE is not set | 798 | # CONFIG_SKGE is not set |
586 | # CONFIG_SKY2 is not set | 799 | # CONFIG_SKY2 is not set |
587 | # CONFIG_SK98LIN is not set | 800 | # CONFIG_SK98LIN is not set |
801 | # CONFIG_VIA_VELOCITY is not set | ||
588 | # CONFIG_TIGON3 is not set | 802 | # CONFIG_TIGON3 is not set |
589 | # CONFIG_BNX2 is not set | 803 | # CONFIG_BNX2 is not set |
590 | # CONFIG_QLA3XXX is not set | 804 | # CONFIG_QLA3XXX is not set |
591 | # CONFIG_ATL1 is not set | 805 | # CONFIG_ATL1 is not set |
592 | 806 | CONFIG_NETDEV_10000=y | |
593 | # | ||
594 | # Ethernet (10000 Mbit) | ||
595 | # | ||
596 | # CONFIG_CHELSIO_T1 is not set | 807 | # CONFIG_CHELSIO_T1 is not set |
597 | CONFIG_CHELSIO_T3=m | 808 | CONFIG_CHELSIO_T3=m |
809 | # CONFIG_IXGBE is not set | ||
598 | # CONFIG_IXGB is not set | 810 | # CONFIG_IXGB is not set |
599 | # CONFIG_S2IO is not set | 811 | # CONFIG_S2IO is not set |
600 | # CONFIG_MYRI10GE is not set | 812 | # CONFIG_MYRI10GE is not set |
601 | CONFIG_NETXEN_NIC=m | 813 | CONFIG_NETXEN_NIC=m |
602 | 814 | # CONFIG_NIU is not set | |
603 | # | 815 | # CONFIG_MLX4_CORE is not set |
604 | # Token Ring devices | 816 | # CONFIG_TEHUTI is not set |
605 | # | 817 | # CONFIG_BNX2X is not set |
606 | # CONFIG_TR is not set | 818 | # CONFIG_TR is not set |
607 | 819 | ||
608 | # | 820 | # |
609 | # Wireless LAN (non-hamradio) | 821 | # Wireless LAN |
610 | # | ||
611 | # CONFIG_NET_RADIO is not set | ||
612 | |||
613 | # | ||
614 | # Wan interfaces | ||
615 | # | 822 | # |
823 | # CONFIG_WLAN_PRE80211 is not set | ||
824 | # CONFIG_WLAN_80211 is not set | ||
616 | # CONFIG_WAN is not set | 825 | # CONFIG_WAN is not set |
617 | # CONFIG_FDDI is not set | 826 | # CONFIG_FDDI is not set |
618 | # CONFIG_HIPPI is not set | 827 | # CONFIG_HIPPI is not set |
619 | # CONFIG_PPP is not set | 828 | CONFIG_PPP=m |
620 | # CONFIG_SLIP is not set | 829 | CONFIG_PPP_MULTILINK=y |
621 | # CONFIG_SHAPER is not set | 830 | CONFIG_PPP_FILTER=y |
831 | CONFIG_PPP_ASYNC=m | ||
832 | CONFIG_PPP_SYNC_TTY=m | ||
833 | CONFIG_PPP_DEFLATE=m | ||
834 | CONFIG_PPP_BSDCOMP=m | ||
835 | CONFIG_PPP_MPPE=m | ||
836 | CONFIG_PPPOE=m | ||
837 | CONFIG_PPPOL2TP=m | ||
838 | CONFIG_SLIP=m | ||
839 | CONFIG_SLIP_COMPRESSED=y | ||
840 | CONFIG_SLHC=m | ||
841 | CONFIG_SLIP_SMART=y | ||
842 | CONFIG_SLIP_MODE_SLIP6=y | ||
843 | # CONFIG_NET_FC is not set | ||
622 | # CONFIG_NETCONSOLE is not set | 844 | # CONFIG_NETCONSOLE is not set |
623 | # CONFIG_NETPOLL is not set | 845 | # CONFIG_NETPOLL is not set |
624 | # CONFIG_NET_POLL_CONTROLLER is not set | 846 | # CONFIG_NET_POLL_CONTROLLER is not set |
625 | |||
626 | # | ||
627 | # ISDN subsystem | ||
628 | # | ||
629 | # CONFIG_ISDN is not set | 847 | # CONFIG_ISDN is not set |
630 | |||
631 | # | ||
632 | # Telephony Support | ||
633 | # | ||
634 | # CONFIG_PHONE is not set | 848 | # CONFIG_PHONE is not set |
635 | 849 | ||
636 | # | 850 | # |
@@ -660,17 +874,16 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
660 | # CONFIG_DIGIEPCA is not set | 874 | # CONFIG_DIGIEPCA is not set |
661 | # CONFIG_MOXA_INTELLIO is not set | 875 | # CONFIG_MOXA_INTELLIO is not set |
662 | # CONFIG_MOXA_SMARTIO is not set | 876 | # CONFIG_MOXA_SMARTIO is not set |
663 | CONFIG_MOXA_SMARTIO_NEW=m | ||
664 | # CONFIG_ISI is not set | 877 | # CONFIG_ISI is not set |
665 | # CONFIG_SYNCLINKMP is not set | 878 | # CONFIG_SYNCLINKMP is not set |
666 | # CONFIG_SYNCLINK_GT is not set | 879 | # CONFIG_SYNCLINK_GT is not set |
667 | # CONFIG_N_HDLC is not set | 880 | # CONFIG_N_HDLC is not set |
881 | # CONFIG_RISCOM8 is not set | ||
668 | # CONFIG_SPECIALIX is not set | 882 | # CONFIG_SPECIALIX is not set |
669 | # CONFIG_SX is not set | 883 | # CONFIG_SX is not set |
670 | # CONFIG_RIO is not set | 884 | # CONFIG_RIO is not set |
671 | # CONFIG_STALDRV is not set | 885 | # CONFIG_STALDRV is not set |
672 | CONFIG_SERIAL_SB1250_DUART=y | 886 | # CONFIG_NOZOMI is not set |
673 | CONFIG_SERIAL_SB1250_DUART_CONSOLE=y | ||
674 | 887 | ||
675 | # | 888 | # |
676 | # Serial drivers | 889 | # Serial drivers |
@@ -680,39 +893,24 @@ CONFIG_SERIAL_SB1250_DUART_CONSOLE=y | |||
680 | # | 893 | # |
681 | # Non-8250 serial port support | 894 | # Non-8250 serial port support |
682 | # | 895 | # |
896 | CONFIG_SERIAL_SB1250_DUART=y | ||
897 | CONFIG_SERIAL_SB1250_DUART_CONSOLE=y | ||
898 | CONFIG_SERIAL_CORE=y | ||
899 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
683 | # CONFIG_SERIAL_JSM is not set | 900 | # CONFIG_SERIAL_JSM is not set |
684 | CONFIG_UNIX98_PTYS=y | 901 | CONFIG_UNIX98_PTYS=y |
685 | CONFIG_LEGACY_PTYS=y | 902 | CONFIG_LEGACY_PTYS=y |
686 | CONFIG_LEGACY_PTY_COUNT=256 | 903 | CONFIG_LEGACY_PTY_COUNT=256 |
687 | |||
688 | # | ||
689 | # IPMI | ||
690 | # | ||
691 | # CONFIG_IPMI_HANDLER is not set | 904 | # CONFIG_IPMI_HANDLER is not set |
692 | |||
693 | # | ||
694 | # Watchdog Cards | ||
695 | # | ||
696 | # CONFIG_WATCHDOG is not set | ||
697 | # CONFIG_HW_RANDOM is not set | 905 | # CONFIG_HW_RANDOM is not set |
698 | # CONFIG_RTC is not set | 906 | # CONFIG_RTC is not set |
699 | CONFIG_GEN_RTC=y | ||
700 | # CONFIG_GEN_RTC_X is not set | ||
701 | # CONFIG_DTLK is not set | ||
702 | # CONFIG_R3964 is not set | 907 | # CONFIG_R3964 is not set |
703 | # CONFIG_APPLICOM is not set | 908 | # CONFIG_APPLICOM is not set |
704 | # CONFIG_DRM is not set | ||
705 | # CONFIG_RAW_DRIVER is not set | 909 | # CONFIG_RAW_DRIVER is not set |
706 | |||
707 | # | ||
708 | # TPM devices | ||
709 | # | ||
710 | # CONFIG_TCG_TPM is not set | 910 | # CONFIG_TCG_TPM is not set |
711 | 911 | CONFIG_DEVPORT=y | |
712 | # | ||
713 | # I2C support | ||
714 | # | ||
715 | CONFIG_I2C=y | 912 | CONFIG_I2C=y |
913 | CONFIG_I2C_BOARDINFO=y | ||
716 | CONFIG_I2C_CHARDEV=y | 914 | CONFIG_I2C_CHARDEV=y |
717 | 915 | ||
718 | # | 916 | # |
@@ -736,29 +934,30 @@ CONFIG_I2C_CHARDEV=y | |||
736 | # CONFIG_I2C_NFORCE2 is not set | 934 | # CONFIG_I2C_NFORCE2 is not set |
737 | # CONFIG_I2C_OCORES is not set | 935 | # CONFIG_I2C_OCORES is not set |
738 | # CONFIG_I2C_PARPORT_LIGHT is not set | 936 | # CONFIG_I2C_PARPORT_LIGHT is not set |
739 | # CONFIG_I2C_PASEMI is not set | ||
740 | # CONFIG_I2C_PROSAVAGE is not set | 937 | # CONFIG_I2C_PROSAVAGE is not set |
741 | # CONFIG_I2C_SAVAGE4 is not set | 938 | # CONFIG_I2C_SAVAGE4 is not set |
742 | CONFIG_I2C_SIBYTE=y | 939 | CONFIG_I2C_SIBYTE=y |
940 | # CONFIG_I2C_SIMTEC is not set | ||
743 | # CONFIG_I2C_SIS5595 is not set | 941 | # CONFIG_I2C_SIS5595 is not set |
744 | # CONFIG_I2C_SIS630 is not set | 942 | # CONFIG_I2C_SIS630 is not set |
745 | # CONFIG_I2C_SIS96X is not set | 943 | # CONFIG_I2C_SIS96X is not set |
944 | # CONFIG_I2C_TAOS_EVM is not set | ||
746 | # CONFIG_I2C_STUB is not set | 945 | # CONFIG_I2C_STUB is not set |
747 | # CONFIG_I2C_VIA is not set | 946 | # CONFIG_I2C_VIA is not set |
748 | # CONFIG_I2C_VIAPRO is not set | 947 | # CONFIG_I2C_VIAPRO is not set |
749 | # CONFIG_I2C_VOODOO3 is not set | 948 | # CONFIG_I2C_VOODOO3 is not set |
750 | # CONFIG_I2C_PCA_ISA is not set | ||
751 | 949 | ||
752 | # | 950 | # |
753 | # Miscellaneous I2C Chip support | 951 | # Miscellaneous I2C Chip support |
754 | # | 952 | # |
755 | CONFIG_SENSORS_DS1337=y | 953 | # CONFIG_DS1682 is not set |
756 | CONFIG_SENSORS_DS1374=y | ||
757 | CONFIG_SENSORS_EEPROM=y | 954 | CONFIG_SENSORS_EEPROM=y |
758 | CONFIG_SENSORS_PCF8574=y | 955 | CONFIG_SENSORS_PCF8574=y |
759 | CONFIG_SENSORS_PCA9539=y | 956 | # CONFIG_PCF8575 is not set |
760 | CONFIG_SENSORS_PCF8591=y | 957 | CONFIG_SENSORS_PCF8591=y |
958 | # CONFIG_TPS65010 is not set | ||
761 | CONFIG_SENSORS_MAX6875=y | 959 | CONFIG_SENSORS_MAX6875=y |
960 | # CONFIG_SENSORS_TSL2550 is not set | ||
762 | CONFIG_I2C_DEBUG_CORE=y | 961 | CONFIG_I2C_DEBUG_CORE=y |
763 | CONFIG_I2C_DEBUG_ALGO=y | 962 | CONFIG_I2C_DEBUG_ALGO=y |
764 | CONFIG_I2C_DEBUG_BUS=y | 963 | CONFIG_I2C_DEBUG_BUS=y |
@@ -769,43 +968,49 @@ CONFIG_I2C_DEBUG_CHIP=y | |||
769 | # | 968 | # |
770 | # CONFIG_SPI is not set | 969 | # CONFIG_SPI is not set |
771 | # CONFIG_SPI_MASTER is not set | 970 | # CONFIG_SPI_MASTER is not set |
971 | # CONFIG_W1 is not set | ||
972 | # CONFIG_POWER_SUPPLY is not set | ||
973 | # CONFIG_HWMON is not set | ||
974 | # CONFIG_THERMAL is not set | ||
975 | # CONFIG_WATCHDOG is not set | ||
772 | 976 | ||
773 | # | 977 | # |
774 | # Dallas's 1-wire bus | 978 | # Sonics Silicon Backplane |
775 | # | 979 | # |
776 | # CONFIG_W1 is not set | 980 | CONFIG_SSB_POSSIBLE=y |
981 | # CONFIG_SSB is not set | ||
777 | 982 | ||
778 | # | 983 | # |
779 | # Hardware Monitoring support | 984 | # Multifunction device drivers |
780 | # | 985 | # |
781 | # CONFIG_HWMON is not set | 986 | # CONFIG_MFD_SM501 is not set |
782 | # CONFIG_HWMON_VID is not set | ||
783 | 987 | ||
784 | # | 988 | # |
785 | # Multimedia devices | 989 | # Multimedia devices |
786 | # | 990 | # |
787 | # CONFIG_VIDEO_DEV is not set | 991 | # CONFIG_VIDEO_DEV is not set |
788 | 992 | # CONFIG_DVB_CORE is not set | |
789 | # | 993 | # CONFIG_DAB is not set |
790 | # Digital Video Broadcasting Devices | ||
791 | # | ||
792 | # CONFIG_DVB is not set | ||
793 | 994 | ||
794 | # | 995 | # |
795 | # Graphics support | 996 | # Graphics support |
796 | # | 997 | # |
797 | # CONFIG_FIRMWARE_EDID is not set | 998 | # CONFIG_DRM is not set |
999 | # CONFIG_VGASTATE is not set | ||
1000 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
798 | # CONFIG_FB is not set | 1001 | # CONFIG_FB is not set |
799 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 1002 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
800 | 1003 | ||
801 | # | 1004 | # |
802 | # Sound | 1005 | # Display device support |
803 | # | 1006 | # |
804 | # CONFIG_SOUND is not set | 1007 | # CONFIG_DISPLAY_SUPPORT is not set |
805 | 1008 | ||
806 | # | 1009 | # |
807 | # USB support | 1010 | # Sound |
808 | # | 1011 | # |
1012 | # CONFIG_SOUND is not set | ||
1013 | CONFIG_USB_SUPPORT=y | ||
809 | CONFIG_USB_ARCH_HAS_HCD=y | 1014 | CONFIG_USB_ARCH_HAS_HCD=y |
810 | CONFIG_USB_ARCH_HAS_OHCI=y | 1015 | CONFIG_USB_ARCH_HAS_OHCI=y |
811 | CONFIG_USB_ARCH_HAS_EHCI=y | 1016 | CONFIG_USB_ARCH_HAS_EHCI=y |
@@ -814,104 +1019,73 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
814 | # | 1019 | # |
815 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1020 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
816 | # | 1021 | # |
817 | |||
818 | # | ||
819 | # USB Gadget Support | ||
820 | # | ||
821 | # CONFIG_USB_GADGET is not set | 1022 | # CONFIG_USB_GADGET is not set |
822 | |||
823 | # | ||
824 | # MMC/SD Card support | ||
825 | # | ||
826 | # CONFIG_MMC is not set | 1023 | # CONFIG_MMC is not set |
827 | 1024 | # CONFIG_MEMSTICK is not set | |
828 | # | ||
829 | # LED devices | ||
830 | # | ||
831 | # CONFIG_NEW_LEDS is not set | 1025 | # CONFIG_NEW_LEDS is not set |
832 | |||
833 | # | ||
834 | # LED drivers | ||
835 | # | ||
836 | |||
837 | # | ||
838 | # LED Triggers | ||
839 | # | ||
840 | |||
841 | # | ||
842 | # InfiniBand support | ||
843 | # | ||
844 | # CONFIG_INFINIBAND is not set | 1026 | # CONFIG_INFINIBAND is not set |
845 | 1027 | CONFIG_RTC_LIB=y | |
846 | # | ||
847 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | ||
848 | # | ||
849 | |||
850 | # | ||
851 | # Real Time Clock | ||
852 | # | ||
853 | # CONFIG_RTC_CLASS is not set | 1028 | # CONFIG_RTC_CLASS is not set |
854 | 1029 | ||
855 | # | 1030 | # |
856 | # DMA Engine support | 1031 | # Userspace I/O |
857 | # | ||
858 | # CONFIG_DMA_ENGINE is not set | ||
859 | |||
860 | # | ||
861 | # DMA Clients | ||
862 | # | ||
863 | |||
864 | # | ||
865 | # DMA Devices | ||
866 | # | ||
867 | |||
868 | # | ||
869 | # Auxiliary Display support | ||
870 | # | ||
871 | |||
872 | # | ||
873 | # Virtualization | ||
874 | # | 1032 | # |
1033 | # CONFIG_UIO is not set | ||
875 | 1034 | ||
876 | # | 1035 | # |
877 | # File systems | 1036 | # File systems |
878 | # | 1037 | # |
879 | CONFIG_EXT2_FS=y | 1038 | CONFIG_EXT2_FS=m |
880 | CONFIG_EXT2_FS_XATTR=y | 1039 | CONFIG_EXT2_FS_XATTR=y |
881 | CONFIG_EXT2_FS_POSIX_ACL=y | 1040 | # CONFIG_EXT2_FS_POSIX_ACL is not set |
882 | CONFIG_EXT2_FS_SECURITY=y | 1041 | # CONFIG_EXT2_FS_SECURITY is not set |
883 | # CONFIG_EXT2_FS_XIP is not set | 1042 | # CONFIG_EXT2_FS_XIP is not set |
884 | # CONFIG_EXT3_FS is not set | 1043 | CONFIG_EXT3_FS=y |
1044 | CONFIG_EXT3_FS_XATTR=y | ||
1045 | # CONFIG_EXT3_FS_POSIX_ACL is not set | ||
1046 | # CONFIG_EXT3_FS_SECURITY is not set | ||
885 | # CONFIG_EXT4DEV_FS is not set | 1047 | # CONFIG_EXT4DEV_FS is not set |
1048 | CONFIG_JBD=y | ||
886 | CONFIG_FS_MBCACHE=y | 1049 | CONFIG_FS_MBCACHE=y |
887 | # CONFIG_REISERFS_FS is not set | 1050 | # CONFIG_REISERFS_FS is not set |
888 | # CONFIG_JFS_FS is not set | 1051 | # CONFIG_JFS_FS is not set |
889 | CONFIG_FS_POSIX_ACL=y | 1052 | # CONFIG_FS_POSIX_ACL is not set |
890 | # CONFIG_XFS_FS is not set | 1053 | # CONFIG_XFS_FS is not set |
891 | # CONFIG_GFS2_FS is not set | 1054 | # CONFIG_GFS2_FS is not set |
892 | # CONFIG_OCFS2_FS is not set | 1055 | # CONFIG_OCFS2_FS is not set |
893 | # CONFIG_MINIX_FS is not set | 1056 | CONFIG_DNOTIFY=y |
894 | # CONFIG_ROMFS_FS is not set | ||
895 | CONFIG_INOTIFY=y | 1057 | CONFIG_INOTIFY=y |
896 | CONFIG_INOTIFY_USER=y | 1058 | CONFIG_INOTIFY_USER=y |
897 | # CONFIG_QUOTA is not set | 1059 | CONFIG_QUOTA=y |
898 | CONFIG_DNOTIFY=y | 1060 | CONFIG_QUOTA_NETLINK_INTERFACE=y |
899 | # CONFIG_AUTOFS_FS is not set | 1061 | # CONFIG_PRINT_QUOTA_WARNING is not set |
900 | # CONFIG_AUTOFS4_FS is not set | 1062 | # CONFIG_QFMT_V1 is not set |
901 | # CONFIG_FUSE_FS is not set | 1063 | CONFIG_QFMT_V2=m |
1064 | CONFIG_QUOTACTL=y | ||
1065 | CONFIG_AUTOFS_FS=m | ||
1066 | CONFIG_AUTOFS4_FS=m | ||
1067 | CONFIG_FUSE_FS=m | ||
902 | 1068 | ||
903 | # | 1069 | # |
904 | # CD-ROM/DVD Filesystems | 1070 | # CD-ROM/DVD Filesystems |
905 | # | 1071 | # |
906 | # CONFIG_ISO9660_FS is not set | 1072 | CONFIG_ISO9660_FS=m |
907 | # CONFIG_UDF_FS is not set | 1073 | CONFIG_JOLIET=y |
1074 | CONFIG_ZISOFS=y | ||
1075 | CONFIG_UDF_FS=m | ||
1076 | CONFIG_UDF_NLS=y | ||
908 | 1077 | ||
909 | # | 1078 | # |
910 | # DOS/FAT/NT Filesystems | 1079 | # DOS/FAT/NT Filesystems |
911 | # | 1080 | # |
912 | # CONFIG_MSDOS_FS is not set | 1081 | CONFIG_FAT_FS=m |
913 | # CONFIG_VFAT_FS is not set | 1082 | CONFIG_MSDOS_FS=m |
914 | # CONFIG_NTFS_FS is not set | 1083 | CONFIG_VFAT_FS=m |
1084 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1085 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1086 | CONFIG_NTFS_FS=m | ||
1087 | # CONFIG_NTFS_DEBUG is not set | ||
1088 | CONFIG_NTFS_RW=y | ||
915 | 1089 | ||
916 | # | 1090 | # |
917 | # Pseudo filesystems | 1091 | # Pseudo filesystems |
@@ -923,7 +1097,6 @@ CONFIG_SYSFS=y | |||
923 | CONFIG_TMPFS=y | 1097 | CONFIG_TMPFS=y |
924 | # CONFIG_TMPFS_POSIX_ACL is not set | 1098 | # CONFIG_TMPFS_POSIX_ACL is not set |
925 | # CONFIG_HUGETLB_PAGE is not set | 1099 | # CONFIG_HUGETLB_PAGE is not set |
926 | CONFIG_RAMFS=y | ||
927 | CONFIG_CONFIGFS_FS=m | 1100 | CONFIG_CONFIGFS_FS=m |
928 | 1101 | ||
929 | # | 1102 | # |
@@ -939,14 +1112,13 @@ CONFIG_CONFIGFS_FS=m | |||
939 | # CONFIG_EFS_FS is not set | 1112 | # CONFIG_EFS_FS is not set |
940 | # CONFIG_CRAMFS is not set | 1113 | # CONFIG_CRAMFS is not set |
941 | # CONFIG_VXFS_FS is not set | 1114 | # CONFIG_VXFS_FS is not set |
1115 | # CONFIG_MINIX_FS is not set | ||
942 | # CONFIG_HPFS_FS is not set | 1116 | # CONFIG_HPFS_FS is not set |
943 | # CONFIG_QNX4FS_FS is not set | 1117 | # CONFIG_QNX4FS_FS is not set |
1118 | # CONFIG_ROMFS_FS is not set | ||
944 | # CONFIG_SYSV_FS is not set | 1119 | # CONFIG_SYSV_FS is not set |
945 | # CONFIG_UFS_FS is not set | 1120 | # CONFIG_UFS_FS is not set |
946 | 1121 | CONFIG_NETWORK_FILESYSTEMS=y | |
947 | # | ||
948 | # Network File Systems | ||
949 | # | ||
950 | CONFIG_NFS_FS=y | 1122 | CONFIG_NFS_FS=y |
951 | CONFIG_NFS_V3=y | 1123 | CONFIG_NFS_V3=y |
952 | # CONFIG_NFS_V3_ACL is not set | 1124 | # CONFIG_NFS_V3_ACL is not set |
@@ -958,6 +1130,7 @@ CONFIG_LOCKD=y | |||
958 | CONFIG_LOCKD_V4=y | 1130 | CONFIG_LOCKD_V4=y |
959 | CONFIG_NFS_COMMON=y | 1131 | CONFIG_NFS_COMMON=y |
960 | CONFIG_SUNRPC=y | 1132 | CONFIG_SUNRPC=y |
1133 | # CONFIG_SUNRPC_BIND34 is not set | ||
961 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1134 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
962 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1135 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
963 | # CONFIG_SMB_FS is not set | 1136 | # CONFIG_SMB_FS is not set |
@@ -965,37 +1138,61 @@ CONFIG_SUNRPC=y | |||
965 | # CONFIG_NCP_FS is not set | 1138 | # CONFIG_NCP_FS is not set |
966 | # CONFIG_CODA_FS is not set | 1139 | # CONFIG_CODA_FS is not set |
967 | # CONFIG_AFS_FS is not set | 1140 | # CONFIG_AFS_FS is not set |
968 | # CONFIG_9P_FS is not set | ||
969 | 1141 | ||
970 | # | 1142 | # |
971 | # Partition Types | 1143 | # Partition Types |
972 | # | 1144 | # |
973 | # CONFIG_PARTITION_ADVANCED is not set | 1145 | # CONFIG_PARTITION_ADVANCED is not set |
974 | CONFIG_MSDOS_PARTITION=y | 1146 | CONFIG_MSDOS_PARTITION=y |
975 | 1147 | CONFIG_NLS=m | |
976 | # | 1148 | CONFIG_NLS_DEFAULT="iso8859-1" |
977 | # Native Language Support | 1149 | CONFIG_NLS_CODEPAGE_437=m |
978 | # | 1150 | CONFIG_NLS_CODEPAGE_737=m |
979 | # CONFIG_NLS is not set | 1151 | CONFIG_NLS_CODEPAGE_775=m |
980 | 1152 | CONFIG_NLS_CODEPAGE_850=m | |
981 | # | 1153 | CONFIG_NLS_CODEPAGE_852=m |
982 | # Distributed Lock Manager | 1154 | CONFIG_NLS_CODEPAGE_855=m |
983 | # | 1155 | CONFIG_NLS_CODEPAGE_857=m |
1156 | CONFIG_NLS_CODEPAGE_860=m | ||
1157 | CONFIG_NLS_CODEPAGE_861=m | ||
1158 | CONFIG_NLS_CODEPAGE_862=m | ||
1159 | CONFIG_NLS_CODEPAGE_863=m | ||
1160 | CONFIG_NLS_CODEPAGE_864=m | ||
1161 | CONFIG_NLS_CODEPAGE_865=m | ||
1162 | CONFIG_NLS_CODEPAGE_866=m | ||
1163 | CONFIG_NLS_CODEPAGE_869=m | ||
1164 | CONFIG_NLS_CODEPAGE_936=m | ||
1165 | CONFIG_NLS_CODEPAGE_950=m | ||
1166 | CONFIG_NLS_CODEPAGE_932=m | ||
1167 | CONFIG_NLS_CODEPAGE_949=m | ||
1168 | CONFIG_NLS_CODEPAGE_874=m | ||
1169 | CONFIG_NLS_ISO8859_8=m | ||
1170 | CONFIG_NLS_CODEPAGE_1250=m | ||
1171 | CONFIG_NLS_CODEPAGE_1251=m | ||
1172 | CONFIG_NLS_ASCII=m | ||
1173 | CONFIG_NLS_ISO8859_1=m | ||
1174 | CONFIG_NLS_ISO8859_2=m | ||
1175 | CONFIG_NLS_ISO8859_3=m | ||
1176 | CONFIG_NLS_ISO8859_4=m | ||
1177 | CONFIG_NLS_ISO8859_5=m | ||
1178 | CONFIG_NLS_ISO8859_6=m | ||
1179 | CONFIG_NLS_ISO8859_7=m | ||
1180 | CONFIG_NLS_ISO8859_9=m | ||
1181 | CONFIG_NLS_ISO8859_13=m | ||
1182 | CONFIG_NLS_ISO8859_14=m | ||
1183 | CONFIG_NLS_ISO8859_15=m | ||
1184 | CONFIG_NLS_KOI8_R=m | ||
1185 | CONFIG_NLS_KOI8_U=m | ||
1186 | CONFIG_NLS_UTF8=m | ||
984 | CONFIG_DLM=m | 1187 | CONFIG_DLM=m |
985 | CONFIG_DLM_TCP=y | ||
986 | # CONFIG_DLM_SCTP is not set | ||
987 | # CONFIG_DLM_DEBUG is not set | 1188 | # CONFIG_DLM_DEBUG is not set |
988 | 1189 | ||
989 | # | 1190 | # |
990 | # Profiling support | ||
991 | # | ||
992 | # CONFIG_PROFILING is not set | ||
993 | |||
994 | # | ||
995 | # Kernel hacking | 1191 | # Kernel hacking |
996 | # | 1192 | # |
997 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 1193 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
998 | # CONFIG_PRINTK_TIME is not set | 1194 | # CONFIG_PRINTK_TIME is not set |
1195 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
999 | CONFIG_ENABLE_MUST_CHECK=y | 1196 | CONFIG_ENABLE_MUST_CHECK=y |
1000 | CONFIG_MAGIC_SYSRQ=y | 1197 | CONFIG_MAGIC_SYSRQ=y |
1001 | # CONFIG_UNUSED_SYMBOLS is not set | 1198 | # CONFIG_UNUSED_SYMBOLS is not set |
@@ -1003,8 +1200,8 @@ CONFIG_MAGIC_SYSRQ=y | |||
1003 | # CONFIG_HEADERS_CHECK is not set | 1200 | # CONFIG_HEADERS_CHECK is not set |
1004 | CONFIG_DEBUG_KERNEL=y | 1201 | CONFIG_DEBUG_KERNEL=y |
1005 | # CONFIG_DEBUG_SHIRQ is not set | 1202 | # CONFIG_DEBUG_SHIRQ is not set |
1006 | CONFIG_LOG_BUF_SHIFT=16 | ||
1007 | CONFIG_DETECT_SOFTLOCKUP=y | 1203 | CONFIG_DETECT_SOFTLOCKUP=y |
1204 | CONFIG_SCHED_DEBUG=y | ||
1008 | # CONFIG_SCHEDSTATS is not set | 1205 | # CONFIG_SCHEDSTATS is not set |
1009 | # CONFIG_TIMER_STATS is not set | 1206 | # CONFIG_TIMER_STATS is not set |
1010 | # CONFIG_DEBUG_SLAB is not set | 1207 | # CONFIG_DEBUG_SLAB is not set |
@@ -1014,15 +1211,19 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1014 | CONFIG_DEBUG_MUTEXES=y | 1211 | CONFIG_DEBUG_MUTEXES=y |
1015 | # CONFIG_DEBUG_LOCK_ALLOC is not set | 1212 | # CONFIG_DEBUG_LOCK_ALLOC is not set |
1016 | # CONFIG_PROVE_LOCKING is not set | 1213 | # CONFIG_PROVE_LOCKING is not set |
1214 | # CONFIG_LOCK_STAT is not set | ||
1017 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1215 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1018 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1216 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1019 | # CONFIG_DEBUG_KOBJECT is not set | 1217 | # CONFIG_DEBUG_KOBJECT is not set |
1020 | # CONFIG_DEBUG_INFO is not set | 1218 | # CONFIG_DEBUG_INFO is not set |
1021 | # CONFIG_DEBUG_VM is not set | 1219 | # CONFIG_DEBUG_VM is not set |
1022 | # CONFIG_DEBUG_LIST is not set | 1220 | # CONFIG_DEBUG_LIST is not set |
1023 | CONFIG_FORCED_INLINING=y | 1221 | # CONFIG_DEBUG_SG is not set |
1222 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
1024 | # CONFIG_RCU_TORTURE_TEST is not set | 1223 | # CONFIG_RCU_TORTURE_TEST is not set |
1025 | CONFIG_CROSSCOMPILE=y | 1224 | # CONFIG_BACKTRACE_SELF_TEST is not set |
1225 | # CONFIG_FAULT_INJECTION is not set | ||
1226 | # CONFIG_SAMPLES is not set | ||
1026 | CONFIG_CMDLINE="" | 1227 | CONFIG_CMDLINE="" |
1027 | # CONFIG_DEBUG_STACK_USAGE is not set | 1228 | # CONFIG_DEBUG_STACK_USAGE is not set |
1028 | # CONFIG_SB1XXX_CORELIS is not set | 1229 | # CONFIG_SB1XXX_CORELIS is not set |
@@ -1034,23 +1235,22 @@ CONFIG_CMDLINE="" | |||
1034 | CONFIG_KEYS=y | 1235 | CONFIG_KEYS=y |
1035 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | 1236 | CONFIG_KEYS_DEBUG_PROC_KEYS=y |
1036 | # CONFIG_SECURITY is not set | 1237 | # CONFIG_SECURITY is not set |
1037 | 1238 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | |
1038 | # | ||
1039 | # Cryptographic options | ||
1040 | # | ||
1041 | CONFIG_CRYPTO=y | 1239 | CONFIG_CRYPTO=y |
1042 | CONFIG_CRYPTO_ALGAPI=y | 1240 | CONFIG_CRYPTO_ALGAPI=y |
1043 | CONFIG_CRYPTO_BLKCIPHER=m | 1241 | CONFIG_CRYPTO_AEAD=m |
1242 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1243 | CONFIG_CRYPTO_SEQIV=m | ||
1044 | CONFIG_CRYPTO_HASH=y | 1244 | CONFIG_CRYPTO_HASH=y |
1045 | CONFIG_CRYPTO_MANAGER=y | 1245 | CONFIG_CRYPTO_MANAGER=y |
1046 | CONFIG_CRYPTO_HMAC=y | 1246 | CONFIG_CRYPTO_HMAC=y |
1047 | CONFIG_CRYPTO_XCBC=m | 1247 | CONFIG_CRYPTO_XCBC=m |
1048 | CONFIG_CRYPTO_NULL=y | 1248 | CONFIG_CRYPTO_NULL=y |
1049 | CONFIG_CRYPTO_MD4=y | 1249 | CONFIG_CRYPTO_MD4=m |
1050 | CONFIG_CRYPTO_MD5=y | 1250 | CONFIG_CRYPTO_MD5=y |
1051 | CONFIG_CRYPTO_SHA1=y | 1251 | CONFIG_CRYPTO_SHA1=m |
1052 | CONFIG_CRYPTO_SHA256=y | 1252 | CONFIG_CRYPTO_SHA256=m |
1053 | CONFIG_CRYPTO_SHA512=y | 1253 | CONFIG_CRYPTO_SHA512=m |
1054 | CONFIG_CRYPTO_WP512=m | 1254 | CONFIG_CRYPTO_WP512=m |
1055 | CONFIG_CRYPTO_TGR192=m | 1255 | CONFIG_CRYPTO_TGR192=m |
1056 | CONFIG_CRYPTO_GF128MUL=m | 1256 | CONFIG_CRYPTO_GF128MUL=m |
@@ -1058,39 +1258,50 @@ CONFIG_CRYPTO_ECB=m | |||
1058 | CONFIG_CRYPTO_CBC=m | 1258 | CONFIG_CRYPTO_CBC=m |
1059 | CONFIG_CRYPTO_PCBC=m | 1259 | CONFIG_CRYPTO_PCBC=m |
1060 | CONFIG_CRYPTO_LRW=m | 1260 | CONFIG_CRYPTO_LRW=m |
1061 | CONFIG_CRYPTO_DES=y | 1261 | CONFIG_CRYPTO_XTS=m |
1262 | CONFIG_CRYPTO_CTR=m | ||
1263 | CONFIG_CRYPTO_GCM=m | ||
1264 | CONFIG_CRYPTO_CCM=m | ||
1265 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1266 | CONFIG_CRYPTO_DES=m | ||
1062 | CONFIG_CRYPTO_FCRYPT=m | 1267 | CONFIG_CRYPTO_FCRYPT=m |
1063 | CONFIG_CRYPTO_BLOWFISH=y | 1268 | CONFIG_CRYPTO_BLOWFISH=m |
1064 | CONFIG_CRYPTO_TWOFISH=y | 1269 | CONFIG_CRYPTO_TWOFISH=m |
1065 | CONFIG_CRYPTO_TWOFISH_COMMON=y | 1270 | CONFIG_CRYPTO_TWOFISH_COMMON=m |
1066 | CONFIG_CRYPTO_SERPENT=y | 1271 | CONFIG_CRYPTO_SERPENT=m |
1067 | CONFIG_CRYPTO_AES=m | 1272 | CONFIG_CRYPTO_AES=m |
1068 | # CONFIG_CRYPTO_CAST5 is not set | 1273 | CONFIG_CRYPTO_CAST5=m |
1069 | # CONFIG_CRYPTO_CAST6 is not set | 1274 | CONFIG_CRYPTO_CAST6=m |
1070 | CONFIG_CRYPTO_TEA=m | 1275 | CONFIG_CRYPTO_TEA=m |
1071 | # CONFIG_CRYPTO_ARC4 is not set | 1276 | CONFIG_CRYPTO_ARC4=m |
1072 | CONFIG_CRYPTO_KHAZAD=m | 1277 | CONFIG_CRYPTO_KHAZAD=m |
1073 | CONFIG_CRYPTO_ANUBIS=m | 1278 | CONFIG_CRYPTO_ANUBIS=m |
1074 | CONFIG_CRYPTO_DEFLATE=y | 1279 | CONFIG_CRYPTO_SEED=m |
1075 | CONFIG_CRYPTO_MICHAEL_MIC=y | 1280 | CONFIG_CRYPTO_SALSA20=m |
1281 | CONFIG_CRYPTO_DEFLATE=m | ||
1282 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1076 | # CONFIG_CRYPTO_CRC32C is not set | 1283 | # CONFIG_CRYPTO_CRC32C is not set |
1077 | CONFIG_CRYPTO_CAMELLIA=m | 1284 | CONFIG_CRYPTO_CAMELLIA=m |
1078 | # CONFIG_CRYPTO_TEST is not set | 1285 | # CONFIG_CRYPTO_TEST is not set |
1079 | 1286 | CONFIG_CRYPTO_AUTHENC=m | |
1080 | # | 1287 | # CONFIG_CRYPTO_LZO is not set |
1081 | # Hardware crypto devices | 1288 | CONFIG_CRYPTO_HW=y |
1082 | # | 1289 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set |
1083 | 1290 | ||
1084 | # | 1291 | # |
1085 | # Library routines | 1292 | # Library routines |
1086 | # | 1293 | # |
1087 | CONFIG_BITREVERSE=y | 1294 | CONFIG_BITREVERSE=y |
1088 | # CONFIG_CRC_CCITT is not set | 1295 | CONFIG_CRC_CCITT=m |
1089 | # CONFIG_CRC16 is not set | 1296 | # CONFIG_CRC16 is not set |
1297 | # CONFIG_CRC_ITU_T is not set | ||
1090 | CONFIG_CRC32=y | 1298 | CONFIG_CRC32=y |
1091 | # CONFIG_LIBCRC32C is not set | 1299 | # CONFIG_CRC7 is not set |
1092 | CONFIG_ZLIB_INFLATE=y | 1300 | CONFIG_LIBCRC32C=m |
1093 | CONFIG_ZLIB_DEFLATE=y | 1301 | CONFIG_AUDIT_GENERIC=y |
1302 | CONFIG_ZLIB_INFLATE=m | ||
1303 | CONFIG_ZLIB_DEFLATE=m | ||
1094 | CONFIG_PLIST=y | 1304 | CONFIG_PLIST=y |
1095 | CONFIG_HAS_IOMEM=y | 1305 | CONFIG_HAS_IOMEM=y |
1096 | CONFIG_HAS_IOPORT=y | 1306 | CONFIG_HAS_IOPORT=y |
1307 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/mips/kernel/gdb-stub.c b/arch/mips/kernel/gdb-stub.c index 3191afa29ad8..25f4eab8ea9c 100644 --- a/arch/mips/kernel/gdb-stub.c +++ b/arch/mips/kernel/gdb-stub.c | |||
@@ -139,7 +139,6 @@ | |||
139 | #include <asm/system.h> | 139 | #include <asm/system.h> |
140 | #include <asm/gdb-stub.h> | 140 | #include <asm/gdb-stub.h> |
141 | #include <asm/inst.h> | 141 | #include <asm/inst.h> |
142 | #include <asm/smp.h> | ||
143 | 142 | ||
144 | /* | 143 | /* |
145 | * external low-level support routines | 144 | * external low-level support routines |
@@ -656,6 +655,7 @@ void set_async_breakpoint(unsigned long *epc) | |||
656 | *epc = (unsigned long)async_breakpoint; | 655 | *epc = (unsigned long)async_breakpoint; |
657 | } | 656 | } |
658 | 657 | ||
658 | #ifdef CONFIG_SMP | ||
659 | static void kgdb_wait(void *arg) | 659 | static void kgdb_wait(void *arg) |
660 | { | 660 | { |
661 | unsigned flags; | 661 | unsigned flags; |
@@ -668,6 +668,7 @@ static void kgdb_wait(void *arg) | |||
668 | 668 | ||
669 | local_irq_restore(flags); | 669 | local_irq_restore(flags); |
670 | } | 670 | } |
671 | #endif | ||
671 | 672 | ||
672 | /* | 673 | /* |
673 | * GDB stub needs to call kgdb_wait on all processor with interrupts | 674 | * GDB stub needs to call kgdb_wait on all processor with interrupts |
diff --git a/arch/mips/kernel/i8253.c b/arch/mips/kernel/i8253.c index fc4aa07b6d35..38fa1a194bf4 100644 --- a/arch/mips/kernel/i8253.c +++ b/arch/mips/kernel/i8253.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/time.h> | 15 | #include <asm/time.h> |
16 | 16 | ||
17 | DEFINE_SPINLOCK(i8253_lock); | 17 | DEFINE_SPINLOCK(i8253_lock); |
18 | EXPORT_SYMBOL(i8253_lock); | ||
18 | 19 | ||
19 | /* | 20 | /* |
20 | * Initialize the PIT timer. | 21 | * Initialize the PIT timer. |
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c index 9f85d4cecc5b..b45a7093ca2d 100644 --- a/arch/mips/kernel/time.c +++ b/arch/mips/kernel/time.c | |||
@@ -157,6 +157,6 @@ void __init time_init(void) | |||
157 | { | 157 | { |
158 | plat_time_init(); | 158 | plat_time_init(); |
159 | 159 | ||
160 | if (mips_clockevent_init() || !cpu_has_mfc0_count_bug()) | 160 | if (!mips_clockevent_init() || !cpu_has_mfc0_count_bug()) |
161 | init_mips_clocksource(); | 161 | init_mips_clocksource(); |
162 | } | 162 | } |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index eed2dc4273e0..39804c584edd 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
@@ -262,13 +262,21 @@ void dump_mtregs(void) | |||
262 | /* Find some VPE program space */ | 262 | /* Find some VPE program space */ |
263 | static void *alloc_progmem(unsigned long len) | 263 | static void *alloc_progmem(unsigned long len) |
264 | { | 264 | { |
265 | void *addr; | ||
266 | |||
265 | #ifdef CONFIG_MIPS_VPE_LOADER_TOM | 267 | #ifdef CONFIG_MIPS_VPE_LOADER_TOM |
266 | /* this means you must tell linux to use less memory than you physically have */ | 268 | /* |
267 | return pfn_to_kaddr(max_pfn); | 269 | * This means you must tell Linux to use less memory than you |
270 | * physically have, for example by passing a mem= boot argument. | ||
271 | */ | ||
272 | addr = pfn_to_kaddr(max_pfn); | ||
273 | memset(addr, 0, len); | ||
268 | #else | 274 | #else |
269 | // simple grab some mem for now | 275 | /* simple grab some mem for now */ |
270 | return kmalloc(len, GFP_KERNEL); | 276 | addr = kzalloc(len, GFP_KERNEL); |
271 | #endif | 277 | #endif |
278 | |||
279 | return addr; | ||
272 | } | 280 | } |
273 | 281 | ||
274 | static void release_progmem(void *ptr) | 282 | static void release_progmem(void *ptr) |
@@ -884,9 +892,10 @@ static int vpe_elfload(struct vpe * v) | |||
884 | } | 892 | } |
885 | 893 | ||
886 | v->load_addr = alloc_progmem(mod.core_size); | 894 | v->load_addr = alloc_progmem(mod.core_size); |
887 | memset(v->load_addr, 0, mod.core_size); | 895 | if (!v->load_addr) |
896 | return -ENOMEM; | ||
888 | 897 | ||
889 | printk("VPE loader: loading to %p\n", v->load_addr); | 898 | pr_info("VPE loader: loading to %p\n", v->load_addr); |
890 | 899 | ||
891 | if (relocate) { | 900 | if (relocate) { |
892 | for (i = 0; i < hdr->e_shnum; i++) { | 901 | for (i = 0; i < hdr->e_shnum; i++) { |
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 6496925b5e29..77aefb4ebedd 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -361,6 +361,16 @@ static inline int has_valid_asid(const struct mm_struct *mm) | |||
361 | #endif | 361 | #endif |
362 | } | 362 | } |
363 | 363 | ||
364 | static void r4k__flush_cache_vmap(void) | ||
365 | { | ||
366 | r4k_blast_dcache(); | ||
367 | } | ||
368 | |||
369 | static void r4k__flush_cache_vunmap(void) | ||
370 | { | ||
371 | r4k_blast_dcache(); | ||
372 | } | ||
373 | |||
364 | static inline void local_r4k_flush_cache_range(void * args) | 374 | static inline void local_r4k_flush_cache_range(void * args) |
365 | { | 375 | { |
366 | struct vm_area_struct *vma = args; | 376 | struct vm_area_struct *vma = args; |
@@ -1281,6 +1291,10 @@ void __cpuinit r4k_cache_init(void) | |||
1281 | PAGE_SIZE - 1); | 1291 | PAGE_SIZE - 1); |
1282 | else | 1292 | else |
1283 | shm_align_mask = PAGE_SIZE-1; | 1293 | shm_align_mask = PAGE_SIZE-1; |
1294 | |||
1295 | __flush_cache_vmap = r4k__flush_cache_vmap; | ||
1296 | __flush_cache_vunmap = r4k__flush_cache_vunmap; | ||
1297 | |||
1284 | flush_cache_all = cache_noop; | 1298 | flush_cache_all = cache_noop; |
1285 | __flush_cache_all = r4k___flush_cache_all; | 1299 | __flush_cache_all = r4k___flush_cache_all; |
1286 | flush_cache_mm = r4k_flush_cache_mm; | 1300 | flush_cache_mm = r4k_flush_cache_mm; |
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c index b09d56981d53..a9f7f1f5e9b4 100644 --- a/arch/mips/mm/c-tx39.c +++ b/arch/mips/mm/c-tx39.c | |||
@@ -122,6 +122,16 @@ static inline void tx39_blast_icache(void) | |||
122 | local_irq_restore(flags); | 122 | local_irq_restore(flags); |
123 | } | 123 | } |
124 | 124 | ||
125 | static void tx39__flush_cache_vmap(void) | ||
126 | { | ||
127 | tx39_blast_dcache(); | ||
128 | } | ||
129 | |||
130 | static void tx39__flush_cache_vunmap(void) | ||
131 | { | ||
132 | tx39_blast_dcache(); | ||
133 | } | ||
134 | |||
125 | static inline void tx39_flush_cache_all(void) | 135 | static inline void tx39_flush_cache_all(void) |
126 | { | 136 | { |
127 | if (!cpu_has_dc_aliases) | 137 | if (!cpu_has_dc_aliases) |
@@ -344,6 +354,8 @@ void __cpuinit tx39_cache_init(void) | |||
344 | switch (current_cpu_type()) { | 354 | switch (current_cpu_type()) { |
345 | case CPU_TX3912: | 355 | case CPU_TX3912: |
346 | /* TX39/H core (writethru direct-map cache) */ | 356 | /* TX39/H core (writethru direct-map cache) */ |
357 | __flush_cache_vmap = tx39__flush_cache_vmap; | ||
358 | __flush_cache_vunmap = tx39__flush_cache_vunmap; | ||
347 | flush_cache_all = tx39h_flush_icache_all; | 359 | flush_cache_all = tx39h_flush_icache_all; |
348 | __flush_cache_all = tx39h_flush_icache_all; | 360 | __flush_cache_all = tx39h_flush_icache_all; |
349 | flush_cache_mm = (void *) tx39h_flush_icache_all; | 361 | flush_cache_mm = (void *) tx39h_flush_icache_all; |
@@ -369,6 +381,9 @@ void __cpuinit tx39_cache_init(void) | |||
369 | write_c0_wired(0); /* set 8 on reset... */ | 381 | write_c0_wired(0); /* set 8 on reset... */ |
370 | /* board-dependent init code may set WBON */ | 382 | /* board-dependent init code may set WBON */ |
371 | 383 | ||
384 | __flush_cache_vmap = tx39__flush_cache_vmap; | ||
385 | __flush_cache_vunmap = tx39__flush_cache_vunmap; | ||
386 | |||
372 | flush_cache_all = tx39_flush_cache_all; | 387 | flush_cache_all = tx39_flush_cache_all; |
373 | __flush_cache_all = tx39___flush_cache_all; | 388 | __flush_cache_all = tx39___flush_cache_all; |
374 | flush_cache_mm = tx39_flush_cache_mm; | 389 | flush_cache_mm = tx39_flush_cache_mm; |
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c index 51ab1faa027d..f5903679ee6a 100644 --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c | |||
@@ -30,6 +30,9 @@ void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, | |||
30 | unsigned long pfn); | 30 | unsigned long pfn); |
31 | void (*flush_icache_range)(unsigned long start, unsigned long end); | 31 | void (*flush_icache_range)(unsigned long start, unsigned long end); |
32 | 32 | ||
33 | void (*__flush_cache_vmap)(void); | ||
34 | void (*__flush_cache_vunmap)(void); | ||
35 | |||
33 | /* MIPS specific cache operations */ | 36 | /* MIPS specific cache operations */ |
34 | void (*flush_cache_sigtramp)(unsigned long addr); | 37 | void (*flush_cache_sigtramp)(unsigned long addr); |
35 | void (*local_flush_data_cache_page)(void * addr); | 38 | void (*local_flush_data_cache_page)(void * addr); |
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index 3a93d4ce2703..382738ca8a0b 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
@@ -307,6 +307,7 @@ static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l, | |||
307 | case CPU_R12000: | 307 | case CPU_R12000: |
308 | case CPU_R14000: | 308 | case CPU_R14000: |
309 | case CPU_4KC: | 309 | case CPU_4KC: |
310 | case CPU_4KEC: | ||
310 | case CPU_SB1: | 311 | case CPU_SB1: |
311 | case CPU_SB1A: | 312 | case CPU_SB1A: |
312 | case CPU_4KSC: | 313 | case CPU_4KSC: |
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c index ab68c4318a30..87e2c8f54e2d 100644 --- a/arch/mips/pci/pci-bcm1480.c +++ b/arch/mips/pci/pci-bcm1480.c | |||
@@ -185,8 +185,8 @@ static struct resource bcm1480_mem_resource = { | |||
185 | 185 | ||
186 | static struct resource bcm1480_io_resource = { | 186 | static struct resource bcm1480_io_resource = { |
187 | .name = "BCM1480 PCI I/O", | 187 | .name = "BCM1480 PCI I/O", |
188 | .start = 0x2c000000UL, | 188 | .start = A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, |
189 | .end = 0x2dffffffUL, | 189 | .end = A_BCM1480_PHYS_PCI_IO_MATCH_BYTES + 0x1ffffffUL, |
190 | .flags = IORESOURCE_IO, | 190 | .flags = IORESOURCE_IO, |
191 | }; | 191 | }; |
192 | 192 | ||
@@ -194,6 +194,7 @@ struct pci_controller bcm1480_controller = { | |||
194 | .pci_ops = &bcm1480_pci_ops, | 194 | .pci_ops = &bcm1480_pci_ops, |
195 | .mem_resource = &bcm1480_mem_resource, | 195 | .mem_resource = &bcm1480_mem_resource, |
196 | .io_resource = &bcm1480_io_resource, | 196 | .io_resource = &bcm1480_io_resource, |
197 | .io_offset = A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, | ||
197 | }; | 198 | }; |
198 | 199 | ||
199 | 200 | ||
@@ -251,6 +252,7 @@ static int __init bcm1480_pcibios_init(void) | |||
251 | 252 | ||
252 | bcm1480_controller.io_map_base = (unsigned long) | 253 | bcm1480_controller.io_map_base = (unsigned long) |
253 | ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536); | 254 | ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536); |
255 | bcm1480_controller.io_map_base -= bcm1480_controller.io_offset; | ||
254 | set_io_port_base(bcm1480_controller.io_map_base); | 256 | set_io_port_base(bcm1480_controller.io_map_base); |
255 | isa_slot_offset = (unsigned long) | 257 | isa_slot_offset = (unsigned long) |
256 | ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024); | 258 | ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024); |
diff --git a/arch/mips/pci/pci-bcm1480ht.c b/arch/mips/pci/pci-bcm1480ht.c index 005e7fecab08..f54f45412b0b 100644 --- a/arch/mips/pci/pci-bcm1480ht.c +++ b/arch/mips/pci/pci-bcm1480ht.c | |||
@@ -180,8 +180,8 @@ static struct resource bcm1480ht_mem_resource = { | |||
180 | 180 | ||
181 | static struct resource bcm1480ht_io_resource = { | 181 | static struct resource bcm1480ht_io_resource = { |
182 | .name = "BCM1480 HT I/O", | 182 | .name = "BCM1480 HT I/O", |
183 | .start = 0x00000000UL, | 183 | .start = A_BCM1480_PHYS_HT_IO_MATCH_BYTES, |
184 | .end = 0x01ffffffUL, | 184 | .end = A_BCM1480_PHYS_HT_IO_MATCH_BYTES + 0x01ffffffUL, |
185 | .flags = IORESOURCE_IO, | 185 | .flags = IORESOURCE_IO, |
186 | }; | 186 | }; |
187 | 187 | ||
@@ -191,29 +191,22 @@ struct pci_controller bcm1480ht_controller = { | |||
191 | .io_resource = &bcm1480ht_io_resource, | 191 | .io_resource = &bcm1480ht_io_resource, |
192 | .index = 1, | 192 | .index = 1, |
193 | .get_busno = bcm1480ht_pcibios_get_busno, | 193 | .get_busno = bcm1480ht_pcibios_get_busno, |
194 | .io_offset = A_BCM1480_PHYS_HT_IO_MATCH_BYTES, | ||
194 | }; | 195 | }; |
195 | 196 | ||
196 | static int __init bcm1480ht_pcibios_init(void) | 197 | static int __init bcm1480ht_pcibios_init(void) |
197 | { | 198 | { |
198 | uint32_t cmdreg; | ||
199 | |||
200 | ht_cfg_space = ioremap(A_BCM1480_PHYS_HT_CFG_MATCH_BITS, 16*1024*1024); | 199 | ht_cfg_space = ioremap(A_BCM1480_PHYS_HT_CFG_MATCH_BITS, 16*1024*1024); |
201 | 200 | ||
202 | /* | 201 | /* CFE doesn't always init all HT paths, so we always scan */ |
203 | * See if the PCI bus has been configured by the firmware. | ||
204 | */ | ||
205 | cmdreg = READCFG32(CFGOFFSET(0, PCI_DEVFN(PCI_BRIDGE_DEVICE, 0), | ||
206 | PCI_COMMAND)); | ||
207 | if (!(cmdreg & PCI_COMMAND_MASTER)) { | ||
208 | printk("HT: Skipping HT probe. Bus is not initialized.\n"); | ||
209 | iounmap(ht_cfg_space); | ||
210 | return 1; /* XXX */ | ||
211 | } | ||
212 | bcm1480ht_bus_status |= PCI_BUS_ENABLED; | 202 | bcm1480ht_bus_status |= PCI_BUS_ENABLED; |
213 | 203 | ||
214 | ht_eoi_space = (unsigned long) | 204 | ht_eoi_space = (unsigned long) |
215 | ioremap(A_BCM1480_PHYS_HT_SPECIAL_MATCH_BYTES, | 205 | ioremap(A_BCM1480_PHYS_HT_SPECIAL_MATCH_BYTES, |
216 | 4 * 1024 * 1024); | 206 | 4 * 1024 * 1024); |
207 | bcm1480ht_controller.io_map_base = (unsigned long) | ||
208 | ioremap(A_BCM1480_PHYS_HT_IO_MATCH_BYTES, 65536); | ||
209 | bcm1480ht_controller.io_map_base -= bcm1480ht_controller.io_offset; | ||
217 | 210 | ||
218 | register_pci_controller(&bcm1480ht_controller); | 211 | register_pci_controller(&bcm1480ht_controller); |
219 | 212 | ||
diff --git a/arch/powerpc/boot/dts/cm5200.dts b/arch/powerpc/boot/dts/cm5200.dts index 30737eafe68e..c6ca6319e4f7 100644 --- a/arch/powerpc/boot/dts/cm5200.dts +++ b/arch/powerpc/boot/dts/cm5200.dts | |||
@@ -212,13 +212,30 @@ | |||
212 | ethernet@3000 { | 212 | ethernet@3000 { |
213 | device_type = "network"; | 213 | device_type = "network"; |
214 | compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec"; | 214 | compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec"; |
215 | reg = <3000 800>; | 215 | reg = <3000 400>; |
216 | local-mac-address = [ 00 00 00 00 00 00 ]; | 216 | local-mac-address = [ 00 00 00 00 00 00 ]; |
217 | interrupts = <2 5 0>; | 217 | interrupts = <2 5 0>; |
218 | interrupt-parent = <&mpc5200_pic>; | 218 | interrupt-parent = <&mpc5200_pic>; |
219 | phy-handle = <&phy0>; | ||
220 | }; | ||
221 | |||
222 | mdio@3000 { | ||
223 | #address-cells = <1>; | ||
224 | #size-cells = <0>; | ||
225 | compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio"; | ||
226 | reg = <3000 400>; // fec range, since we need to setup fec interrupts | ||
227 | interrupts = <2 5 0>; // these are for "mii command finished", not link changes & co. | ||
228 | interrupt-parent = <&mpc5200_pic>; | ||
229 | |||
230 | phy0: ethernet-phy@0 { | ||
231 | device_type = "ethernet-phy"; | ||
232 | reg = <0>; | ||
233 | }; | ||
219 | }; | 234 | }; |
220 | 235 | ||
221 | i2c@3d40 { | 236 | i2c@3d40 { |
237 | #address-cells = <1>; | ||
238 | #size-cells = <0>; | ||
222 | compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; | 239 | compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; |
223 | reg = <3d40 40>; | 240 | reg = <3d40 40>; |
224 | interrupts = <2 10 0>; | 241 | interrupts = <2 10 0>; |
@@ -231,4 +248,22 @@ | |||
231 | reg = <8000 4000>; | 248 | reg = <8000 4000>; |
232 | }; | 249 | }; |
233 | }; | 250 | }; |
251 | |||
252 | lpb { | ||
253 | model = "fsl,lpb"; | ||
254 | compatible = "fsl,lpb"; | ||
255 | #address-cells = <2>; | ||
256 | #size-cells = <1>; | ||
257 | ranges = <0 0 fc000000 2000000>; | ||
258 | |||
259 | // 16-bit flash device at LocalPlus Bus CS0 | ||
260 | flash@0,0 { | ||
261 | compatible = "cfi-flash"; | ||
262 | reg = <0 0 2000000>; | ||
263 | bank-width = <2>; | ||
264 | device-width = <2>; | ||
265 | #size-cells = <1>; | ||
266 | #address-cells = <1>; | ||
267 | }; | ||
268 | }; | ||
234 | }; | 269 | }; |
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts index 0d701c1bf539..09b4e16154d6 100644 --- a/arch/powerpc/boot/dts/lite5200.dts +++ b/arch/powerpc/boot/dts/lite5200.dts | |||
@@ -258,6 +258,21 @@ | |||
258 | local-mac-address = [ 00 00 00 00 00 00 ]; | 258 | local-mac-address = [ 00 00 00 00 00 00 ]; |
259 | interrupts = <2 5 0>; | 259 | interrupts = <2 5 0>; |
260 | interrupt-parent = <&mpc5200_pic>; | 260 | interrupt-parent = <&mpc5200_pic>; |
261 | phy-handle = <&phy0>; | ||
262 | }; | ||
263 | |||
264 | mdio@3000 { | ||
265 | #address-cells = <1>; | ||
266 | #size-cells = <0>; | ||
267 | compatible = "fsl,mpc5200-mdio"; | ||
268 | reg = <3000 400>; // fec range, since we need to setup fec interrupts | ||
269 | interrupts = <2 5 0>; // these are for "mii command finished", not link changes & co. | ||
270 | interrupt-parent = <&mpc5200_pic>; | ||
271 | |||
272 | phy0:ethernet-phy@1 { | ||
273 | device_type = "ethernet-phy"; | ||
274 | reg = <1>; | ||
275 | }; | ||
261 | }; | 276 | }; |
262 | 277 | ||
263 | ata@3a00 { | 278 | ata@3a00 { |
diff --git a/arch/powerpc/boot/dts/motionpro.dts b/arch/powerpc/boot/dts/motionpro.dts index 76951ab038ee..2b0dde058f8e 100644 --- a/arch/powerpc/boot/dts/motionpro.dts +++ b/arch/powerpc/boot/dts/motionpro.dts | |||
@@ -148,7 +148,6 @@ | |||
148 | interrupt-parent = <&mpc5200_pic>; | 148 | interrupt-parent = <&mpc5200_pic>; |
149 | }; | 149 | }; |
150 | 150 | ||
151 | |||
152 | spi@f00 { | 151 | spi@f00 { |
153 | compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi"; | 152 | compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi"; |
154 | reg = <f00 20>; | 153 | reg = <f00 20>; |
@@ -209,10 +208,25 @@ | |||
209 | ethernet@3000 { | 208 | ethernet@3000 { |
210 | device_type = "network"; | 209 | device_type = "network"; |
211 | compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec"; | 210 | compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec"; |
212 | reg = <3000 800>; | 211 | reg = <3000 400>; |
213 | local-mac-address = [ 00 00 00 00 00 00 ]; | 212 | local-mac-address = [ 00 00 00 00 00 00 ]; |
214 | interrupts = <2 5 0>; | 213 | interrupts = <2 5 0>; |
215 | interrupt-parent = <&mpc5200_pic>; | 214 | interrupt-parent = <&mpc5200_pic>; |
215 | phy-handle = <&phy0>; | ||
216 | }; | ||
217 | |||
218 | mdio@3000 { | ||
219 | #address-cells = <1>; | ||
220 | #size-cells = <0>; | ||
221 | compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio"; | ||
222 | reg = <3000 400>; // fec range, since we need to setup fec interrupts | ||
223 | interrupts = <2 5 0>; // these are for "mii command finished", not link changes & co. | ||
224 | interrupt-parent = <&mpc5200_pic>; | ||
225 | |||
226 | phy0: ethernet-phy@2 { | ||
227 | device_type = "ethernet-phy"; | ||
228 | reg = <2>; | ||
229 | }; | ||
216 | }; | 230 | }; |
217 | 231 | ||
218 | ata@3a00 { | 232 | ata@3a00 { |
@@ -223,11 +237,19 @@ | |||
223 | }; | 237 | }; |
224 | 238 | ||
225 | i2c@3d40 { | 239 | i2c@3d40 { |
240 | #address-cells = <1>; | ||
241 | #size-cells = <0>; | ||
226 | compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; | 242 | compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c"; |
227 | reg = <3d40 40>; | 243 | reg = <3d40 40>; |
228 | interrupts = <2 10 0>; | 244 | interrupts = <2 10 0>; |
229 | interrupt-parent = <&mpc5200_pic>; | 245 | interrupt-parent = <&mpc5200_pic>; |
230 | fsl5200-clocking; | 246 | fsl5200-clocking; |
247 | |||
248 | rtc@68 { | ||
249 | device_type = "rtc"; | ||
250 | compatible = "dallas,ds1339"; | ||
251 | reg = <68>; | ||
252 | }; | ||
231 | }; | 253 | }; |
232 | 254 | ||
233 | sram@8000 { | 255 | sram@8000 { |
@@ -240,7 +262,8 @@ | |||
240 | compatible = "fsl,lpb"; | 262 | compatible = "fsl,lpb"; |
241 | #address-cells = <2>; | 263 | #address-cells = <2>; |
242 | #size-cells = <1>; | 264 | #size-cells = <1>; |
243 | ranges = <1 0 50000000 00010000 | 265 | ranges = <0 0 ff000000 01000000 |
266 | 1 0 50000000 00010000 | ||
244 | 2 0 50010000 00010000 | 267 | 2 0 50010000 00010000 |
245 | 3 0 50020000 00010000>; | 268 | 3 0 50020000 00010000>; |
246 | 269 | ||
@@ -271,31 +294,15 @@ | |||
271 | compatible = "promess,pro_module_dio"; | 294 | compatible = "promess,pro_module_dio"; |
272 | reg = <3 800 2>; | 295 | reg = <3 800 2>; |
273 | }; | 296 | }; |
274 | }; | ||
275 | 297 | ||
276 | pci@f0000d00 { | 298 | // 16-bit flash device at LocalPlus Bus CS0 |
277 | #interrupt-cells = <1>; | 299 | flash@0,0 { |
278 | #size-cells = <2>; | 300 | compatible = "cfi-flash"; |
279 | #address-cells = <3>; | 301 | reg = <0 0 01000000>; |
280 | device_type = "pci"; | 302 | bank-width = <2>; |
281 | compatible = "fsl,mpc5200b-pci","fsl,mpc5200-pci"; | 303 | device-width = <2>; |
282 | reg = <f0000d00 100>; | 304 | #size-cells = <1>; |
283 | interrupt-map-mask = <f800 0 0 7>; | 305 | #address-cells = <1>; |
284 | interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 // 1st slot | 306 | }; |
285 | c000 0 0 2 &mpc5200_pic 1 1 3 | ||
286 | c000 0 0 3 &mpc5200_pic 1 2 3 | ||
287 | c000 0 0 4 &mpc5200_pic 1 3 3 | ||
288 | |||
289 | c800 0 0 1 &mpc5200_pic 1 1 3 // 2nd slot | ||
290 | c800 0 0 2 &mpc5200_pic 1 2 3 | ||
291 | c800 0 0 3 &mpc5200_pic 1 3 3 | ||
292 | c800 0 0 4 &mpc5200_pic 0 0 3>; | ||
293 | clock-frequency = <0>; // From boot loader | ||
294 | interrupts = <2 8 0 2 9 0 2 a 0>; | ||
295 | interrupt-parent = <&mpc5200_pic>; | ||
296 | bus-range = <0 0>; | ||
297 | ranges = <42000000 0 80000000 80000000 0 20000000 | ||
298 | 02000000 0 a0000000 a0000000 0 10000000 | ||
299 | 01000000 0 00000000 b0000000 0 01000000>; | ||
300 | }; | 307 | }; |
301 | }; | 308 | }; |
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts index 49c05e97386c..eac8e1b59496 100644 --- a/arch/powerpc/boot/dts/mpc8377_mds.dts +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts | |||
@@ -255,14 +255,14 @@ | |||
255 | }; | 255 | }; |
256 | 256 | ||
257 | sata@18000 { | 257 | sata@18000 { |
258 | compatible = "fsl,mpc8379-sata"; | 258 | compatible = "fsl,mpc8379-sata", "fsl,pq-sata"; |
259 | reg = <0x18000 0x1000>; | 259 | reg = <0x18000 0x1000>; |
260 | interrupts = <44 0x8>; | 260 | interrupts = <44 0x8>; |
261 | interrupt-parent = <&ipic>; | 261 | interrupt-parent = <&ipic>; |
262 | }; | 262 | }; |
263 | 263 | ||
264 | sata@19000 { | 264 | sata@19000 { |
265 | compatible = "fsl,mpc8379-sata"; | 265 | compatible = "fsl,mpc8379-sata", "fsl,pq-sata"; |
266 | reg = <0x19000 0x1000>; | 266 | reg = <0x19000 0x1000>; |
267 | interrupts = <45 0x8>; | 267 | interrupts = <45 0x8>; |
268 | interrupt-parent = <&ipic>; | 268 | interrupt-parent = <&ipic>; |
diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts index 440aa4dfab0c..5bc09ad016f5 100644 --- a/arch/powerpc/boot/dts/mpc8377_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts | |||
@@ -143,7 +143,6 @@ | |||
143 | mode = "cpu"; | 143 | mode = "cpu"; |
144 | }; | 144 | }; |
145 | 145 | ||
146 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
147 | usb@23000 { | 146 | usb@23000 { |
148 | compatible = "fsl-usb2-dr"; | 147 | compatible = "fsl-usb2-dr"; |
149 | reg = <0x23000 0x1000>; | 148 | reg = <0x23000 0x1000>; |
@@ -151,7 +150,7 @@ | |||
151 | #size-cells = <0>; | 150 | #size-cells = <0>; |
152 | interrupt-parent = <&ipic>; | 151 | interrupt-parent = <&ipic>; |
153 | interrupts = <38 0x8>; | 152 | interrupts = <38 0x8>; |
154 | phy_type = "utmi"; | 153 | phy_type = "ulpi"; |
155 | }; | 154 | }; |
156 | 155 | ||
157 | mdio@24520 { | 156 | mdio@24520 { |
diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts index 92711534b179..711f9a30f9ab 100644 --- a/arch/powerpc/boot/dts/mpc8378_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts | |||
@@ -143,7 +143,6 @@ | |||
143 | mode = "cpu"; | 143 | mode = "cpu"; |
144 | }; | 144 | }; |
145 | 145 | ||
146 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
147 | usb@23000 { | 146 | usb@23000 { |
148 | compatible = "fsl-usb2-dr"; | 147 | compatible = "fsl-usb2-dr"; |
149 | reg = <0x23000 0x1000>; | 148 | reg = <0x23000 0x1000>; |
@@ -151,7 +150,7 @@ | |||
151 | #size-cells = <0>; | 150 | #size-cells = <0>; |
152 | interrupt-parent = <&ipic>; | 151 | interrupt-parent = <&ipic>; |
153 | interrupts = <38 0x8>; | 152 | interrupts = <38 0x8>; |
154 | phy_type = "utmi"; | 153 | phy_type = "ulpi"; |
155 | }; | 154 | }; |
156 | 155 | ||
157 | mdio@24520 { | 156 | mdio@24520 { |
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts index fdb4a9255b24..6f78a9fd9826 100644 --- a/arch/powerpc/boot/dts/mpc8379_mds.dts +++ b/arch/powerpc/boot/dts/mpc8379_mds.dts | |||
@@ -255,28 +255,28 @@ | |||
255 | }; | 255 | }; |
256 | 256 | ||
257 | sata@18000 { | 257 | sata@18000 { |
258 | compatible = "fsl,mpc8379-sata"; | 258 | compatible = "fsl,mpc8379-sata", "fsl,pq-sata"; |
259 | reg = <0x18000 0x1000>; | 259 | reg = <0x18000 0x1000>; |
260 | interrupts = <44 0x8>; | 260 | interrupts = <44 0x8>; |
261 | interrupt-parent = <&ipic>; | 261 | interrupt-parent = <&ipic>; |
262 | }; | 262 | }; |
263 | 263 | ||
264 | sata@19000 { | 264 | sata@19000 { |
265 | compatible = "fsl,mpc8379-sata"; | 265 | compatible = "fsl,mpc8379-sata", "fsl,pq-sata"; |
266 | reg = <0x19000 0x1000>; | 266 | reg = <0x19000 0x1000>; |
267 | interrupts = <45 0x8>; | 267 | interrupts = <45 0x8>; |
268 | interrupt-parent = <&ipic>; | 268 | interrupt-parent = <&ipic>; |
269 | }; | 269 | }; |
270 | 270 | ||
271 | sata@1a000 { | 271 | sata@1a000 { |
272 | compatible = "fsl,mpc8379-sata"; | 272 | compatible = "fsl,mpc8379-sata", "fsl,pq-sata"; |
273 | reg = <0x1a000 0x1000>; | 273 | reg = <0x1a000 0x1000>; |
274 | interrupts = <46 0x8>; | 274 | interrupts = <46 0x8>; |
275 | interrupt-parent = <&ipic>; | 275 | interrupt-parent = <&ipic>; |
276 | }; | 276 | }; |
277 | 277 | ||
278 | sata@1b000 { | 278 | sata@1b000 { |
279 | compatible = "fsl,mpc8379-sata"; | 279 | compatible = "fsl,mpc8379-sata", "fsl,pq-sata"; |
280 | reg = <0x1b000 0x1000>; | 280 | reg = <0x1b000 0x1000>; |
281 | interrupts = <47 0x8>; | 281 | interrupts = <47 0x8>; |
282 | interrupt-parent = <&ipic>; | 282 | interrupt-parent = <&ipic>; |
diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts index 0dda2fc558f8..c11ceb7d3299 100644 --- a/arch/powerpc/boot/dts/mpc8379_rdb.dts +++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts | |||
@@ -143,7 +143,6 @@ | |||
143 | mode = "cpu"; | 143 | mode = "cpu"; |
144 | }; | 144 | }; |
145 | 145 | ||
146 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
147 | usb@23000 { | 146 | usb@23000 { |
148 | compatible = "fsl-usb2-dr"; | 147 | compatible = "fsl-usb2-dr"; |
149 | reg = <0x23000 0x1000>; | 148 | reg = <0x23000 0x1000>; |
@@ -151,7 +150,7 @@ | |||
151 | #size-cells = <0>; | 150 | #size-cells = <0>; |
152 | interrupt-parent = <&ipic>; | 151 | interrupt-parent = <&ipic>; |
153 | interrupts = <38 0x8>; | 152 | interrupts = <38 0x8>; |
154 | phy_type = "utmi"; | 153 | phy_type = "ulpi"; |
155 | }; | 154 | }; |
156 | 155 | ||
157 | mdio@24520 { | 156 | mdio@24520 { |
diff --git a/arch/powerpc/boot/dts/tqm5200.dts b/arch/powerpc/boot/dts/tqm5200.dts index c86464f007da..65bcea6a0173 100644 --- a/arch/powerpc/boot/dts/tqm5200.dts +++ b/arch/powerpc/boot/dts/tqm5200.dts | |||
@@ -127,10 +127,25 @@ | |||
127 | ethernet@3000 { | 127 | ethernet@3000 { |
128 | device_type = "network"; | 128 | device_type = "network"; |
129 | compatible = "fsl,mpc5200-fec"; | 129 | compatible = "fsl,mpc5200-fec"; |
130 | reg = <3000 800>; | 130 | reg = <3000 400>; |
131 | local-mac-address = [ 00 00 00 00 00 00 ]; | 131 | local-mac-address = [ 00 00 00 00 00 00 ]; |
132 | interrupts = <2 5 0>; | 132 | interrupts = <2 5 0>; |
133 | interrupt-parent = <&mpc5200_pic>; | 133 | interrupt-parent = <&mpc5200_pic>; |
134 | phy-handle = <&phy0>; | ||
135 | }; | ||
136 | |||
137 | mdio@3000 { | ||
138 | #address-cells = <1>; | ||
139 | #size-cells = <0>; | ||
140 | compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio"; | ||
141 | reg = <3000 400>; // fec range, since we need to setup fec interrupts | ||
142 | interrupts = <2 5 0>; // these are for "mii command finished", not link changes & co. | ||
143 | interrupt-parent = <&mpc5200_pic>; | ||
144 | |||
145 | phy0: ethernet-phy@0 { | ||
146 | device_type = "ethernet-phy"; | ||
147 | reg = <0>; | ||
148 | }; | ||
134 | }; | 149 | }; |
135 | 150 | ||
136 | ata@3a00 { | 151 | ata@3a00 { |
@@ -141,11 +156,19 @@ | |||
141 | }; | 156 | }; |
142 | 157 | ||
143 | i2c@3d40 { | 158 | i2c@3d40 { |
159 | #address-cells = <1>; | ||
160 | #size-cells = <0>; | ||
144 | compatible = "fsl,mpc5200-i2c","fsl-i2c"; | 161 | compatible = "fsl,mpc5200-i2c","fsl-i2c"; |
145 | reg = <3d40 40>; | 162 | reg = <3d40 40>; |
146 | interrupts = <2 10 0>; | 163 | interrupts = <2 10 0>; |
147 | interrupt-parent = <&mpc5200_pic>; | 164 | interrupt-parent = <&mpc5200_pic>; |
148 | fsl5200-clocking; | 165 | fsl5200-clocking; |
166 | |||
167 | rtc@68 { | ||
168 | device_type = "rtc"; | ||
169 | compatible = "dallas,ds1307"; | ||
170 | reg = <68>; | ||
171 | }; | ||
149 | }; | 172 | }; |
150 | 173 | ||
151 | sram@8000 { | 174 | sram@8000 { |
@@ -154,6 +177,23 @@ | |||
154 | }; | 177 | }; |
155 | }; | 178 | }; |
156 | 179 | ||
180 | lpb { | ||
181 | model = "fsl,lpb"; | ||
182 | compatible = "fsl,lpb"; | ||
183 | #address-cells = <2>; | ||
184 | #size-cells = <1>; | ||
185 | ranges = <0 0 fc000000 02000000>; | ||
186 | |||
187 | flash@0,0 { | ||
188 | compatible = "cfi-flash"; | ||
189 | reg = <0 0 02000000>; | ||
190 | bank-width = <4>; | ||
191 | device-width = <2>; | ||
192 | #size-cells = <1>; | ||
193 | #address-cells = <1>; | ||
194 | }; | ||
195 | }; | ||
196 | |||
157 | pci@f0000d00 { | 197 | pci@f0000d00 { |
158 | #interrupt-cells = <1>; | 198 | #interrupt-cells = <1>; |
159 | #size-cells = <2>; | 199 | #size-cells = <2>; |
diff --git a/arch/powerpc/configs/mpc832x_mds_defconfig b/arch/powerpc/configs/mpc832x_mds_defconfig index 79d228f84c5a..50cceda8994f 100644 --- a/arch/powerpc/configs/mpc832x_mds_defconfig +++ b/arch/powerpc/configs/mpc832x_mds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:16 2008 | 4 | # Mon Mar 31 11:36:51 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -628,8 +628,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
628 | # CONFIG_IPMI_HANDLER is not set | 628 | # CONFIG_IPMI_HANDLER is not set |
629 | CONFIG_HW_RANDOM=y | 629 | CONFIG_HW_RANDOM=y |
630 | # CONFIG_NVRAM is not set | 630 | # CONFIG_NVRAM is not set |
631 | CONFIG_GEN_RTC=y | 631 | # CONFIG_GEN_RTC is not set |
632 | # CONFIG_GEN_RTC_X is not set | ||
633 | # CONFIG_R3964 is not set | 632 | # CONFIG_R3964 is not set |
634 | # CONFIG_APPLICOM is not set | 633 | # CONFIG_APPLICOM is not set |
635 | # CONFIG_RAW_DRIVER is not set | 634 | # CONFIG_RAW_DRIVER is not set |
@@ -824,10 +823,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
824 | # CONFIG_EDAC is not set | 823 | # CONFIG_EDAC is not set |
825 | CONFIG_RTC_LIB=y | 824 | CONFIG_RTC_LIB=y |
826 | CONFIG_RTC_CLASS=y | 825 | CONFIG_RTC_CLASS=y |
827 | |||
828 | # | ||
829 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
830 | # | ||
831 | CONFIG_RTC_HCTOSYS=y | 826 | CONFIG_RTC_HCTOSYS=y |
832 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 827 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
833 | # CONFIG_RTC_DEBUG is not set | 828 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc834x_mds_defconfig b/arch/powerpc/configs/mpc834x_mds_defconfig index 9360144942f1..b4e82c0e2be7 100644 --- a/arch/powerpc/configs/mpc834x_mds_defconfig +++ b/arch/powerpc/configs/mpc834x_mds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:20 2008 | 4 | # Mon Mar 31 11:36:56 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -571,8 +571,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
571 | # CONFIG_IPMI_HANDLER is not set | 571 | # CONFIG_IPMI_HANDLER is not set |
572 | # CONFIG_HW_RANDOM is not set | 572 | # CONFIG_HW_RANDOM is not set |
573 | # CONFIG_NVRAM is not set | 573 | # CONFIG_NVRAM is not set |
574 | CONFIG_GEN_RTC=y | 574 | # CONFIG_GEN_RTC is not set |
575 | # CONFIG_GEN_RTC_X is not set | ||
576 | # CONFIG_R3964 is not set | 575 | # CONFIG_R3964 is not set |
577 | # CONFIG_APPLICOM is not set | 576 | # CONFIG_APPLICOM is not set |
578 | # CONFIG_RAW_DRIVER is not set | 577 | # CONFIG_RAW_DRIVER is not set |
@@ -767,10 +766,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
767 | # CONFIG_EDAC is not set | 766 | # CONFIG_EDAC is not set |
768 | CONFIG_RTC_LIB=y | 767 | CONFIG_RTC_LIB=y |
769 | CONFIG_RTC_CLASS=y | 768 | CONFIG_RTC_CLASS=y |
770 | |||
771 | # | ||
772 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
773 | # | ||
774 | CONFIG_RTC_HCTOSYS=y | 769 | CONFIG_RTC_HCTOSYS=y |
775 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 770 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
776 | # CONFIG_RTC_DEBUG is not set | 771 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc836x_mds_defconfig b/arch/powerpc/configs/mpc836x_mds_defconfig index 7c8b06046d5d..d50a96eddcdc 100644 --- a/arch/powerpc/configs/mpc836x_mds_defconfig +++ b/arch/powerpc/configs/mpc836x_mds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:21 2008 | 4 | # Mon Mar 31 11:36:57 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -626,8 +626,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
626 | # CONFIG_IPMI_HANDLER is not set | 626 | # CONFIG_IPMI_HANDLER is not set |
627 | CONFIG_HW_RANDOM=y | 627 | CONFIG_HW_RANDOM=y |
628 | # CONFIG_NVRAM is not set | 628 | # CONFIG_NVRAM is not set |
629 | CONFIG_GEN_RTC=y | 629 | # CONFIG_GEN_RTC is not set |
630 | # CONFIG_GEN_RTC_X is not set | ||
631 | # CONFIG_R3964 is not set | 630 | # CONFIG_R3964 is not set |
632 | # CONFIG_APPLICOM is not set | 631 | # CONFIG_APPLICOM is not set |
633 | # CONFIG_RAW_DRIVER is not set | 632 | # CONFIG_RAW_DRIVER is not set |
@@ -822,10 +821,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
822 | # CONFIG_EDAC is not set | 821 | # CONFIG_EDAC is not set |
823 | CONFIG_RTC_LIB=y | 822 | CONFIG_RTC_LIB=y |
824 | CONFIG_RTC_CLASS=y | 823 | CONFIG_RTC_CLASS=y |
825 | |||
826 | # | ||
827 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
828 | # | ||
829 | CONFIG_RTC_HCTOSYS=y | 824 | CONFIG_RTC_HCTOSYS=y |
830 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 825 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
831 | # CONFIG_RTC_DEBUG is not set | 826 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc837x_rdb_defconfig b/arch/powerpc/configs/mpc837x_rdb_defconfig index 44093a0eaf88..a6331769d88f 100644 --- a/arch/powerpc/configs/mpc837x_rdb_defconfig +++ b/arch/powerpc/configs/mpc837x_rdb_defconfig | |||
@@ -684,7 +684,29 @@ CONFIG_USB_SUPPORT=y | |||
684 | CONFIG_USB_ARCH_HAS_HCD=y | 684 | CONFIG_USB_ARCH_HAS_HCD=y |
685 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 685 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
686 | CONFIG_USB_ARCH_HAS_EHCI=y | 686 | CONFIG_USB_ARCH_HAS_EHCI=y |
687 | # CONFIG_USB is not set | 687 | CONFIG_USB=y |
688 | # CONFIG_USB_DEBUG is not set | ||
689 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
690 | |||
691 | # | ||
692 | # Miscellaneous USB options | ||
693 | # | ||
694 | # CONFIG_USB_DEVICEFS is not set | ||
695 | CONFIG_USB_DEVICE_CLASS=y | ||
696 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
697 | # CONFIG_USB_OTG is not set | ||
698 | |||
699 | # | ||
700 | # USB Host Controller Drivers | ||
701 | # | ||
702 | CONFIG_USB_EHCI_HCD=y | ||
703 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
704 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
705 | CONFIG_USB_EHCI_FSL=y | ||
706 | CONFIG_USB_EHCI_HCD_PPC_OF=y | ||
707 | # CONFIG_USB_ISP116X_HCD is not set | ||
708 | # CONFIG_USB_SL811_HCD is not set | ||
709 | # CONFIG_USB_R8A66597_HCD is not set | ||
688 | 710 | ||
689 | # | 711 | # |
690 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 712 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
diff --git a/arch/powerpc/configs/mpc83xx_defconfig b/arch/powerpc/configs/mpc83xx_defconfig index 1f6cf68e89f8..029d2dab7deb 100644 --- a/arch/powerpc/configs/mpc83xx_defconfig +++ b/arch/powerpc/configs/mpc83xx_defconfig | |||
@@ -690,7 +690,29 @@ CONFIG_USB_SUPPORT=y | |||
690 | CONFIG_USB_ARCH_HAS_HCD=y | 690 | CONFIG_USB_ARCH_HAS_HCD=y |
691 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 691 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
692 | CONFIG_USB_ARCH_HAS_EHCI=y | 692 | CONFIG_USB_ARCH_HAS_EHCI=y |
693 | # CONFIG_USB is not set | 693 | CONFIG_USB=y |
694 | # CONFIG_USB_DEBUG is not set | ||
695 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
696 | |||
697 | # | ||
698 | # Miscellaneous USB options | ||
699 | # | ||
700 | # CONFIG_USB_DEVICEFS is not set | ||
701 | CONFIG_USB_DEVICE_CLASS=y | ||
702 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
703 | # CONFIG_USB_OTG is not set | ||
704 | |||
705 | # | ||
706 | # USB Host Controller Drivers | ||
707 | # | ||
708 | CONFIG_USB_EHCI_HCD=y | ||
709 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | ||
710 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
711 | CONFIG_USB_EHCI_FSL=y | ||
712 | CONFIG_USB_EHCI_HCD_PPC_OF=y | ||
713 | # CONFIG_USB_ISP116X_HCD is not set | ||
714 | # CONFIG_USB_SL811_HCD is not set | ||
715 | # CONFIG_USB_R8A66597_HCD is not set | ||
694 | 716 | ||
695 | # | 717 | # |
696 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 718 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
diff --git a/arch/powerpc/configs/mpc8544_ds_defconfig b/arch/powerpc/configs/mpc8544_ds_defconfig index c75b6aee76d1..418bcdb5f919 100644 --- a/arch/powerpc/configs/mpc8544_ds_defconfig +++ b/arch/powerpc/configs/mpc8544_ds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:26 2008 | 4 | # Mon Mar 31 11:37:03 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -742,8 +742,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
742 | # CONFIG_IPMI_HANDLER is not set | 742 | # CONFIG_IPMI_HANDLER is not set |
743 | # CONFIG_HW_RANDOM is not set | 743 | # CONFIG_HW_RANDOM is not set |
744 | CONFIG_NVRAM=y | 744 | CONFIG_NVRAM=y |
745 | CONFIG_GEN_RTC=y | 745 | # CONFIG_GEN_RTC is not set |
746 | CONFIG_GEN_RTC_X=y | ||
747 | # CONFIG_R3964 is not set | 746 | # CONFIG_R3964 is not set |
748 | # CONFIG_APPLICOM is not set | 747 | # CONFIG_APPLICOM is not set |
749 | # CONFIG_RAW_DRIVER is not set | 748 | # CONFIG_RAW_DRIVER is not set |
@@ -1209,10 +1208,6 @@ CONFIG_USB_MON=y | |||
1209 | # CONFIG_EDAC is not set | 1208 | # CONFIG_EDAC is not set |
1210 | CONFIG_RTC_LIB=y | 1209 | CONFIG_RTC_LIB=y |
1211 | CONFIG_RTC_CLASS=y | 1210 | CONFIG_RTC_CLASS=y |
1212 | |||
1213 | # | ||
1214 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1215 | # | ||
1216 | CONFIG_RTC_HCTOSYS=y | 1211 | CONFIG_RTC_HCTOSYS=y |
1217 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1212 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1218 | # CONFIG_RTC_DEBUG is not set | 1213 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc8568mds_defconfig b/arch/powerpc/configs/mpc8568mds_defconfig index e7da4b96cdeb..2b866b385607 100644 --- a/arch/powerpc/configs/mpc8568mds_defconfig +++ b/arch/powerpc/configs/mpc8568mds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:28 2008 | 4 | # Mon Mar 31 11:37:05 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -629,8 +629,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
629 | # CONFIG_IPMI_HANDLER is not set | 629 | # CONFIG_IPMI_HANDLER is not set |
630 | CONFIG_HW_RANDOM=y | 630 | CONFIG_HW_RANDOM=y |
631 | # CONFIG_NVRAM is not set | 631 | # CONFIG_NVRAM is not set |
632 | CONFIG_GEN_RTC=y | 632 | # CONFIG_GEN_RTC is not set |
633 | # CONFIG_GEN_RTC_X is not set | ||
634 | # CONFIG_R3964 is not set | 633 | # CONFIG_R3964 is not set |
635 | # CONFIG_APPLICOM is not set | 634 | # CONFIG_APPLICOM is not set |
636 | # CONFIG_RAW_DRIVER is not set | 635 | # CONFIG_RAW_DRIVER is not set |
@@ -825,10 +824,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
825 | # CONFIG_EDAC is not set | 824 | # CONFIG_EDAC is not set |
826 | CONFIG_RTC_LIB=y | 825 | CONFIG_RTC_LIB=y |
827 | CONFIG_RTC_CLASS=y | 826 | CONFIG_RTC_CLASS=y |
828 | |||
829 | # | ||
830 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
831 | # | ||
832 | CONFIG_RTC_HCTOSYS=y | 827 | CONFIG_RTC_HCTOSYS=y |
833 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 828 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
834 | # CONFIG_RTC_DEBUG is not set | 829 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc8572_ds_defconfig b/arch/powerpc/configs/mpc8572_ds_defconfig index 460afe99c653..53aa6f3173a5 100644 --- a/arch/powerpc/configs/mpc8572_ds_defconfig +++ b/arch/powerpc/configs/mpc8572_ds_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:29 2008 | 4 | # Mon Mar 31 11:37:06 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -742,8 +742,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
742 | # CONFIG_IPMI_HANDLER is not set | 742 | # CONFIG_IPMI_HANDLER is not set |
743 | # CONFIG_HW_RANDOM is not set | 743 | # CONFIG_HW_RANDOM is not set |
744 | CONFIG_NVRAM=y | 744 | CONFIG_NVRAM=y |
745 | CONFIG_GEN_RTC=y | 745 | # CONFIG_GEN_RTC is not set |
746 | CONFIG_GEN_RTC_X=y | ||
747 | # CONFIG_R3964 is not set | 746 | # CONFIG_R3964 is not set |
748 | # CONFIG_APPLICOM is not set | 747 | # CONFIG_APPLICOM is not set |
749 | # CONFIG_RAW_DRIVER is not set | 748 | # CONFIG_RAW_DRIVER is not set |
@@ -1209,10 +1208,6 @@ CONFIG_USB_MON=y | |||
1209 | # CONFIG_EDAC is not set | 1208 | # CONFIG_EDAC is not set |
1210 | CONFIG_RTC_LIB=y | 1209 | CONFIG_RTC_LIB=y |
1211 | CONFIG_RTC_CLASS=y | 1210 | CONFIG_RTC_CLASS=y |
1212 | |||
1213 | # | ||
1214 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1215 | # | ||
1216 | CONFIG_RTC_HCTOSYS=y | 1211 | CONFIG_RTC_HCTOSYS=y |
1217 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1212 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1218 | # CONFIG_RTC_DEBUG is not set | 1213 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc85xx_defconfig b/arch/powerpc/configs/mpc85xx_defconfig index 615e4c1bf735..2075722911bb 100644 --- a/arch/powerpc/configs/mpc85xx_defconfig +++ b/arch/powerpc/configs/mpc85xx_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:31 2008 | 4 | # Mon Mar 31 11:37:08 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -750,8 +750,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
750 | # CONFIG_IPMI_HANDLER is not set | 750 | # CONFIG_IPMI_HANDLER is not set |
751 | # CONFIG_HW_RANDOM is not set | 751 | # CONFIG_HW_RANDOM is not set |
752 | CONFIG_NVRAM=y | 752 | CONFIG_NVRAM=y |
753 | CONFIG_GEN_RTC=y | 753 | # CONFIG_GEN_RTC is not set |
754 | CONFIG_GEN_RTC_X=y | ||
755 | # CONFIG_R3964 is not set | 754 | # CONFIG_R3964 is not set |
756 | # CONFIG_APPLICOM is not set | 755 | # CONFIG_APPLICOM is not set |
757 | # CONFIG_RAW_DRIVER is not set | 756 | # CONFIG_RAW_DRIVER is not set |
@@ -1217,10 +1216,6 @@ CONFIG_USB_MON=y | |||
1217 | # CONFIG_EDAC is not set | 1216 | # CONFIG_EDAC is not set |
1218 | CONFIG_RTC_LIB=y | 1217 | CONFIG_RTC_LIB=y |
1219 | CONFIG_RTC_CLASS=y | 1218 | CONFIG_RTC_CLASS=y |
1220 | |||
1221 | # | ||
1222 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1223 | # | ||
1224 | CONFIG_RTC_HCTOSYS=y | 1219 | CONFIG_RTC_HCTOSYS=y |
1225 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1220 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1226 | # CONFIG_RTC_DEBUG is not set | 1221 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/mpc8641_hpcn_defconfig b/arch/powerpc/configs/mpc8641_hpcn_defconfig index 994e76817967..d01dcdb70bd7 100644 --- a/arch/powerpc/configs/mpc8641_hpcn_defconfig +++ b/arch/powerpc/configs/mpc8641_hpcn_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:34 2008 | 4 | # Mon Mar 31 11:37:11 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -736,8 +736,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
736 | # CONFIG_IPMI_HANDLER is not set | 736 | # CONFIG_IPMI_HANDLER is not set |
737 | # CONFIG_HW_RANDOM is not set | 737 | # CONFIG_HW_RANDOM is not set |
738 | CONFIG_NVRAM=y | 738 | CONFIG_NVRAM=y |
739 | CONFIG_GEN_RTC=y | 739 | # CONFIG_GEN_RTC is not set |
740 | CONFIG_GEN_RTC_X=y | ||
741 | # CONFIG_R3964 is not set | 740 | # CONFIG_R3964 is not set |
742 | # CONFIG_APPLICOM is not set | 741 | # CONFIG_APPLICOM is not set |
743 | # CONFIG_RAW_DRIVER is not set | 742 | # CONFIG_RAW_DRIVER is not set |
@@ -1203,10 +1202,6 @@ CONFIG_USB_MON=y | |||
1203 | # CONFIG_EDAC is not set | 1202 | # CONFIG_EDAC is not set |
1204 | CONFIG_RTC_LIB=y | 1203 | CONFIG_RTC_LIB=y |
1205 | CONFIG_RTC_CLASS=y | 1204 | CONFIG_RTC_CLASS=y |
1206 | |||
1207 | # | ||
1208 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1209 | # | ||
1210 | CONFIG_RTC_HCTOSYS=y | 1205 | CONFIG_RTC_HCTOSYS=y |
1211 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1206 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1212 | # CONFIG_RTC_DEBUG is not set | 1207 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig index 797f0dfebde2..09f306248f2e 100644 --- a/arch/powerpc/configs/pasemi_defconfig +++ b/arch/powerpc/configs/pasemi_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc6 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Tue Jan 15 10:26:10 2008 | 4 | # Tue Mar 25 10:25:48 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -27,6 +27,7 @@ CONFIG_GENERIC_TIME=y | |||
27 | CONFIG_GENERIC_TIME_VSYSCALL=y | 27 | CONFIG_GENERIC_TIME_VSYSCALL=y |
28 | CONFIG_GENERIC_CLOCKEVENTS=y | 28 | CONFIG_GENERIC_CLOCKEVENTS=y |
29 | CONFIG_GENERIC_HARDIRQS=y | 29 | CONFIG_GENERIC_HARDIRQS=y |
30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
30 | CONFIG_IRQ_PER_CPU=y | 31 | CONFIG_IRQ_PER_CPU=y |
31 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
32 | CONFIG_ARCH_HAS_ILOG2_U32=y | 33 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -67,17 +68,19 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
67 | # CONFIG_POSIX_MQUEUE is not set | 68 | # CONFIG_POSIX_MQUEUE is not set |
68 | # CONFIG_BSD_PROCESS_ACCT is not set | 69 | # CONFIG_BSD_PROCESS_ACCT is not set |
69 | # CONFIG_TASKSTATS is not set | 70 | # CONFIG_TASKSTATS is not set |
70 | # CONFIG_USER_NS is not set | ||
71 | # CONFIG_PID_NS is not set | ||
72 | # CONFIG_AUDIT is not set | 71 | # CONFIG_AUDIT is not set |
73 | # CONFIG_IKCONFIG is not set | 72 | # CONFIG_IKCONFIG is not set |
74 | CONFIG_LOG_BUF_SHIFT=17 | 73 | CONFIG_LOG_BUF_SHIFT=17 |
75 | # CONFIG_CGROUPS is not set | 74 | # CONFIG_CGROUPS is not set |
76 | CONFIG_FAIR_GROUP_SCHED=y | 75 | # CONFIG_GROUP_SCHED is not set |
77 | CONFIG_FAIR_USER_SCHED=y | ||
78 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
79 | CONFIG_SYSFS_DEPRECATED=y | 76 | CONFIG_SYSFS_DEPRECATED=y |
77 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
80 | # CONFIG_RELAY is not set | 78 | # CONFIG_RELAY is not set |
79 | CONFIG_NAMESPACES=y | ||
80 | # CONFIG_UTS_NS is not set | ||
81 | # CONFIG_IPC_NS is not set | ||
82 | # CONFIG_USER_NS is not set | ||
83 | # CONFIG_PID_NS is not set | ||
81 | CONFIG_BLK_DEV_INITRD=y | 84 | CONFIG_BLK_DEV_INITRD=y |
82 | CONFIG_INITRAMFS_SOURCE="" | 85 | CONFIG_INITRAMFS_SOURCE="" |
83 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 86 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -91,11 +94,13 @@ CONFIG_HOTPLUG=y | |||
91 | CONFIG_PRINTK=y | 94 | CONFIG_PRINTK=y |
92 | CONFIG_BUG=y | 95 | CONFIG_BUG=y |
93 | CONFIG_ELF_CORE=y | 96 | CONFIG_ELF_CORE=y |
97 | CONFIG_COMPAT_BRK=y | ||
94 | CONFIG_BASE_FULL=y | 98 | CONFIG_BASE_FULL=y |
95 | CONFIG_FUTEX=y | 99 | CONFIG_FUTEX=y |
96 | CONFIG_ANON_INODES=y | 100 | CONFIG_ANON_INODES=y |
97 | CONFIG_EPOLL=y | 101 | CONFIG_EPOLL=y |
98 | CONFIG_SIGNALFD=y | 102 | CONFIG_SIGNALFD=y |
103 | CONFIG_TIMERFD=y | ||
99 | CONFIG_EVENTFD=y | 104 | CONFIG_EVENTFD=y |
100 | CONFIG_SHMEM=y | 105 | CONFIG_SHMEM=y |
101 | CONFIG_VM_EVENT_COUNTERS=y | 106 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -103,6 +108,15 @@ CONFIG_SLUB_DEBUG=y | |||
103 | # CONFIG_SLAB is not set | 108 | # CONFIG_SLAB is not set |
104 | CONFIG_SLUB=y | 109 | CONFIG_SLUB=y |
105 | # CONFIG_SLOB is not set | 110 | # CONFIG_SLOB is not set |
111 | CONFIG_PROFILING=y | ||
112 | # CONFIG_MARKERS is not set | ||
113 | CONFIG_OPROFILE=y | ||
114 | CONFIG_HAVE_OPROFILE=y | ||
115 | # CONFIG_KPROBES is not set | ||
116 | CONFIG_HAVE_KPROBES=y | ||
117 | CONFIG_HAVE_KRETPROBES=y | ||
118 | CONFIG_PROC_PAGE_MONITOR=y | ||
119 | CONFIG_SLABINFO=y | ||
106 | CONFIG_RT_MUTEXES=y | 120 | CONFIG_RT_MUTEXES=y |
107 | # CONFIG_TINY_SHMEM is not set | 121 | # CONFIG_TINY_SHMEM is not set |
108 | CONFIG_BASE_SMALL=0 | 122 | CONFIG_BASE_SMALL=0 |
@@ -130,6 +144,7 @@ CONFIG_DEFAULT_AS=y | |||
130 | # CONFIG_DEFAULT_CFQ is not set | 144 | # CONFIG_DEFAULT_CFQ is not set |
131 | # CONFIG_DEFAULT_NOOP is not set | 145 | # CONFIG_DEFAULT_NOOP is not set |
132 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 146 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
147 | CONFIG_CLASSIC_RCU=y | ||
133 | 148 | ||
134 | # | 149 | # |
135 | # Platform support | 150 | # Platform support |
@@ -140,8 +155,8 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
140 | # CONFIG_PPC_86xx is not set | 155 | # CONFIG_PPC_86xx is not set |
141 | # CONFIG_PPC_PSERIES is not set | 156 | # CONFIG_PPC_PSERIES is not set |
142 | # CONFIG_PPC_ISERIES is not set | 157 | # CONFIG_PPC_ISERIES is not set |
143 | # CONFIG_PPC_MPC52xx is not set | 158 | # CONFIG_PPC_MPC512x is not set |
144 | # CONFIG_PPC_MPC5200 is not set | 159 | # CONFIG_PPC_MPC5121 is not set |
145 | # CONFIG_PPC_PMAC is not set | 160 | # CONFIG_PPC_PMAC is not set |
146 | # CONFIG_PPC_MAPLE is not set | 161 | # CONFIG_PPC_MAPLE is not set |
147 | CONFIG_PPC_PASEMI=y | 162 | CONFIG_PPC_PASEMI=y |
@@ -159,6 +174,7 @@ CONFIG_PPC_PASEMI_MDIO=y | |||
159 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 174 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
160 | # CONFIG_PQ2ADS is not set | 175 | # CONFIG_PQ2ADS is not set |
161 | CONFIG_PPC_NATIVE=y | 176 | CONFIG_PPC_NATIVE=y |
177 | # CONFIG_IPIC is not set | ||
162 | CONFIG_MPIC=y | 178 | CONFIG_MPIC=y |
163 | # CONFIG_MPIC_WEIRD is not set | 179 | # CONFIG_MPIC_WEIRD is not set |
164 | # CONFIG_PPC_I8259 is not set | 180 | # CONFIG_PPC_I8259 is not set |
@@ -189,7 +205,6 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y | |||
189 | # CPU Frequency drivers | 205 | # CPU Frequency drivers |
190 | # | 206 | # |
191 | CONFIG_PPC_PASEMI_CPUFREQ=y | 207 | CONFIG_PPC_PASEMI_CPUFREQ=y |
192 | # CONFIG_CPM2 is not set | ||
193 | # CONFIG_FSL_ULI1575 is not set | 208 | # CONFIG_FSL_ULI1575 is not set |
194 | 209 | ||
195 | # | 210 | # |
@@ -204,16 +219,20 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | |||
204 | # CONFIG_HZ_300 is not set | 219 | # CONFIG_HZ_300 is not set |
205 | CONFIG_HZ_1000=y | 220 | CONFIG_HZ_1000=y |
206 | CONFIG_HZ=1000 | 221 | CONFIG_HZ=1000 |
222 | # CONFIG_SCHED_HRTICK is not set | ||
207 | CONFIG_PREEMPT_NONE=y | 223 | CONFIG_PREEMPT_NONE=y |
208 | # CONFIG_PREEMPT_VOLUNTARY is not set | 224 | # CONFIG_PREEMPT_VOLUNTARY is not set |
209 | # CONFIG_PREEMPT is not set | 225 | # CONFIG_PREEMPT is not set |
210 | # CONFIG_PREEMPT_BKL is not set | ||
211 | CONFIG_BINFMT_ELF=y | 226 | CONFIG_BINFMT_ELF=y |
227 | CONFIG_COMPAT_BINFMT_ELF=y | ||
212 | # CONFIG_BINFMT_MISC is not set | 228 | # CONFIG_BINFMT_MISC is not set |
213 | CONFIG_FORCE_MAX_ZONEORDER=9 | 229 | CONFIG_FORCE_MAX_ZONEORDER=9 |
214 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 230 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
215 | CONFIG_IOMMU_VMERGE=y | 231 | CONFIG_IOMMU_VMERGE=y |
232 | CONFIG_IOMMU_HELPER=y | ||
216 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 233 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
234 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
235 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
217 | # CONFIG_KEXEC is not set | 236 | # CONFIG_KEXEC is not set |
218 | # CONFIG_CRASH_DUMP is not set | 237 | # CONFIG_CRASH_DUMP is not set |
219 | # CONFIG_IRQ_ALL_CPUS is not set | 238 | # CONFIG_IRQ_ALL_CPUS is not set |
@@ -236,12 +255,12 @@ CONFIG_ZONE_DMA_FLAG=1 | |||
236 | CONFIG_BOUNCE=y | 255 | CONFIG_BOUNCE=y |
237 | CONFIG_PPC_HAS_HASH_64K=y | 256 | CONFIG_PPC_HAS_HASH_64K=y |
238 | CONFIG_PPC_64K_PAGES=y | 257 | CONFIG_PPC_64K_PAGES=y |
258 | # CONFIG_PPC_SUBPAGE_PROT is not set | ||
239 | # CONFIG_SCHED_SMT is not set | 259 | # CONFIG_SCHED_SMT is not set |
240 | CONFIG_PROC_DEVICETREE=y | 260 | CONFIG_PROC_DEVICETREE=y |
241 | # CONFIG_CMDLINE_BOOL is not set | 261 | # CONFIG_CMDLINE_BOOL is not set |
242 | # CONFIG_PM is not set | 262 | # CONFIG_PM is not set |
243 | # CONFIG_SECCOMP is not set | 263 | # CONFIG_SECCOMP is not set |
244 | # CONFIG_WANT_DEVICE_TREE is not set | ||
245 | CONFIG_ISA_DMA_API=y | 264 | CONFIG_ISA_DMA_API=y |
246 | 265 | ||
247 | # | 266 | # |
@@ -290,6 +309,7 @@ CONFIG_XFRM=y | |||
290 | CONFIG_XFRM_USER=y | 309 | CONFIG_XFRM_USER=y |
291 | # CONFIG_XFRM_SUB_POLICY is not set | 310 | # CONFIG_XFRM_SUB_POLICY is not set |
292 | # CONFIG_XFRM_MIGRATE is not set | 311 | # CONFIG_XFRM_MIGRATE is not set |
312 | # CONFIG_XFRM_STATISTICS is not set | ||
293 | CONFIG_NET_KEY=y | 313 | CONFIG_NET_KEY=y |
294 | # CONFIG_NET_KEY_MIGRATE is not set | 314 | # CONFIG_NET_KEY_MIGRATE is not set |
295 | CONFIG_INET=y | 315 | CONFIG_INET=y |
@@ -346,6 +366,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
346 | # | 366 | # |
347 | # CONFIG_NET_PKTGEN is not set | 367 | # CONFIG_NET_PKTGEN is not set |
348 | # CONFIG_HAMRADIO is not set | 368 | # CONFIG_HAMRADIO is not set |
369 | # CONFIG_CAN is not set | ||
349 | # CONFIG_IRDA is not set | 370 | # CONFIG_IRDA is not set |
350 | # CONFIG_BT is not set | 371 | # CONFIG_BT is not set |
351 | # CONFIG_AF_RXRPC is not set | 372 | # CONFIG_AF_RXRPC is not set |
@@ -441,8 +462,10 @@ CONFIG_MTD_NAND=y | |||
441 | CONFIG_MTD_NAND_IDS=y | 462 | CONFIG_MTD_NAND_IDS=y |
442 | # CONFIG_MTD_NAND_DISKONCHIP is not set | 463 | # CONFIG_MTD_NAND_DISKONCHIP is not set |
443 | # CONFIG_MTD_NAND_CAFE is not set | 464 | # CONFIG_MTD_NAND_CAFE is not set |
465 | CONFIG_MTD_NAND_PASEMI=y | ||
444 | # CONFIG_MTD_NAND_PLATFORM is not set | 466 | # CONFIG_MTD_NAND_PLATFORM is not set |
445 | # CONFIG_MTD_ALAUDA is not set | 467 | # CONFIG_MTD_ALAUDA is not set |
468 | # CONFIG_MTD_NAND_FSL_ELBC is not set | ||
446 | # CONFIG_MTD_ONENAND is not set | 469 | # CONFIG_MTD_ONENAND is not set |
447 | 470 | ||
448 | # | 471 | # |
@@ -465,7 +488,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
465 | CONFIG_BLK_DEV_RAM=y | 488 | CONFIG_BLK_DEV_RAM=y |
466 | CONFIG_BLK_DEV_RAM_COUNT=16 | 489 | CONFIG_BLK_DEV_RAM_COUNT=16 |
467 | CONFIG_BLK_DEV_RAM_SIZE=16384 | 490 | CONFIG_BLK_DEV_RAM_SIZE=16384 |
468 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 491 | # CONFIG_BLK_DEV_XIP is not set |
469 | # CONFIG_CDROM_PKTCDVD is not set | 492 | # CONFIG_CDROM_PKTCDVD is not set |
470 | # CONFIG_ATA_OVER_ETH is not set | 493 | # CONFIG_ATA_OVER_ETH is not set |
471 | CONFIG_MISC_DEVICES=y | 494 | CONFIG_MISC_DEVICES=y |
@@ -473,11 +496,13 @@ CONFIG_MISC_DEVICES=y | |||
473 | # CONFIG_EEPROM_93CX6 is not set | 496 | # CONFIG_EEPROM_93CX6 is not set |
474 | # CONFIG_SGI_IOC4 is not set | 497 | # CONFIG_SGI_IOC4 is not set |
475 | # CONFIG_TIFM_CORE is not set | 498 | # CONFIG_TIFM_CORE is not set |
499 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
500 | CONFIG_HAVE_IDE=y | ||
476 | CONFIG_IDE=y | 501 | CONFIG_IDE=y |
477 | CONFIG_BLK_DEV_IDE=y | 502 | CONFIG_BLK_DEV_IDE=y |
478 | 503 | ||
479 | # | 504 | # |
480 | # Please see Documentation/ide.txt for help/info on IDE drives | 505 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
481 | # | 506 | # |
482 | # CONFIG_BLK_DEV_IDE_SATA is not set | 507 | # CONFIG_BLK_DEV_IDE_SATA is not set |
483 | CONFIG_BLK_DEV_IDEDISK=y | 508 | CONFIG_BLK_DEV_IDEDISK=y |
@@ -485,6 +510,7 @@ CONFIG_IDEDISK_MULTI_MODE=y | |||
485 | # CONFIG_BLK_DEV_IDECS is not set | 510 | # CONFIG_BLK_DEV_IDECS is not set |
486 | # CONFIG_BLK_DEV_DELKIN is not set | 511 | # CONFIG_BLK_DEV_DELKIN is not set |
487 | CONFIG_BLK_DEV_IDECD=y | 512 | CONFIG_BLK_DEV_IDECD=y |
513 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
488 | # CONFIG_BLK_DEV_IDETAPE is not set | 514 | # CONFIG_BLK_DEV_IDETAPE is not set |
489 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 515 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
490 | CONFIG_BLK_DEV_IDESCSI=y | 516 | CONFIG_BLK_DEV_IDESCSI=y |
@@ -500,7 +526,6 @@ CONFIG_IDE_PROC_FS=y | |||
500 | # | 526 | # |
501 | # PCI IDE chipsets support | 527 | # PCI IDE chipsets support |
502 | # | 528 | # |
503 | # CONFIG_IDEPCI_PCIBUS_ORDER is not set | ||
504 | # CONFIG_BLK_DEV_GENERIC is not set | 529 | # CONFIG_BLK_DEV_GENERIC is not set |
505 | # CONFIG_BLK_DEV_OPTI621 is not set | 530 | # CONFIG_BLK_DEV_OPTI621 is not set |
506 | # CONFIG_BLK_DEV_AEC62XX is not set | 531 | # CONFIG_BLK_DEV_AEC62XX is not set |
@@ -528,7 +553,6 @@ CONFIG_IDE_PROC_FS=y | |||
528 | # CONFIG_BLK_DEV_TRM290 is not set | 553 | # CONFIG_BLK_DEV_TRM290 is not set |
529 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 554 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
530 | # CONFIG_BLK_DEV_TC86C001 is not set | 555 | # CONFIG_BLK_DEV_TC86C001 is not set |
531 | # CONFIG_IDE_ARM is not set | ||
532 | # CONFIG_BLK_DEV_IDEDMA is not set | 556 | # CONFIG_BLK_DEV_IDEDMA is not set |
533 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 557 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
534 | # CONFIG_BLK_DEV_HD is not set | 558 | # CONFIG_BLK_DEV_HD is not set |
@@ -593,6 +617,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
593 | # CONFIG_SCSI_IPS is not set | 617 | # CONFIG_SCSI_IPS is not set |
594 | # CONFIG_SCSI_INITIO is not set | 618 | # CONFIG_SCSI_INITIO is not set |
595 | # CONFIG_SCSI_INIA100 is not set | 619 | # CONFIG_SCSI_INIA100 is not set |
620 | # CONFIG_SCSI_MVSAS is not set | ||
596 | # CONFIG_SCSI_STEX is not set | 621 | # CONFIG_SCSI_STEX is not set |
597 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 622 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
598 | # CONFIG_SCSI_IPR is not set | 623 | # CONFIG_SCSI_IPR is not set |
@@ -646,6 +671,7 @@ CONFIG_ATA_GENERIC=y | |||
646 | # CONFIG_PATA_MPIIX is not set | 671 | # CONFIG_PATA_MPIIX is not set |
647 | # CONFIG_PATA_OLDPIIX is not set | 672 | # CONFIG_PATA_OLDPIIX is not set |
648 | # CONFIG_PATA_NETCELL is not set | 673 | # CONFIG_PATA_NETCELL is not set |
674 | # CONFIG_PATA_NINJA32 is not set | ||
649 | # CONFIG_PATA_NS87410 is not set | 675 | # CONFIG_PATA_NS87410 is not set |
650 | # CONFIG_PATA_NS87415 is not set | 676 | # CONFIG_PATA_NS87415 is not set |
651 | # CONFIG_PATA_OPTI is not set | 677 | # CONFIG_PATA_OPTI is not set |
@@ -699,7 +725,6 @@ CONFIG_DUMMY=y | |||
699 | # CONFIG_EQUALIZER is not set | 725 | # CONFIG_EQUALIZER is not set |
700 | # CONFIG_TUN is not set | 726 | # CONFIG_TUN is not set |
701 | # CONFIG_VETH is not set | 727 | # CONFIG_VETH is not set |
702 | # CONFIG_IP1000 is not set | ||
703 | # CONFIG_ARCNET is not set | 728 | # CONFIG_ARCNET is not set |
704 | CONFIG_PHYLIB=y | 729 | CONFIG_PHYLIB=y |
705 | 730 | ||
@@ -715,6 +740,7 @@ CONFIG_MARVELL_PHY=y | |||
715 | # CONFIG_SMSC_PHY is not set | 740 | # CONFIG_SMSC_PHY is not set |
716 | # CONFIG_BROADCOM_PHY is not set | 741 | # CONFIG_BROADCOM_PHY is not set |
717 | # CONFIG_ICPLUS_PHY is not set | 742 | # CONFIG_ICPLUS_PHY is not set |
743 | # CONFIG_REALTEK_PHY is not set | ||
718 | # CONFIG_FIXED_PHY is not set | 744 | # CONFIG_FIXED_PHY is not set |
719 | # CONFIG_MDIO_BITBANG is not set | 745 | # CONFIG_MDIO_BITBANG is not set |
720 | CONFIG_NET_ETHERNET=y | 746 | CONFIG_NET_ETHERNET=y |
@@ -742,6 +768,7 @@ CONFIG_NET_PCI=y | |||
742 | # CONFIG_NE2K_PCI is not set | 768 | # CONFIG_NE2K_PCI is not set |
743 | # CONFIG_8139CP is not set | 769 | # CONFIG_8139CP is not set |
744 | # CONFIG_8139TOO is not set | 770 | # CONFIG_8139TOO is not set |
771 | # CONFIG_R6040 is not set | ||
745 | # CONFIG_SIS900 is not set | 772 | # CONFIG_SIS900 is not set |
746 | # CONFIG_EPIC100 is not set | 773 | # CONFIG_EPIC100 is not set |
747 | # CONFIG_SUNDANCE is not set | 774 | # CONFIG_SUNDANCE is not set |
@@ -754,6 +781,9 @@ CONFIG_E1000=y | |||
754 | CONFIG_E1000_NAPI=y | 781 | CONFIG_E1000_NAPI=y |
755 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 782 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
756 | # CONFIG_E1000E is not set | 783 | # CONFIG_E1000E is not set |
784 | # CONFIG_E1000E_ENABLED is not set | ||
785 | # CONFIG_IP1000 is not set | ||
786 | # CONFIG_IGB is not set | ||
757 | # CONFIG_NS83820 is not set | 787 | # CONFIG_NS83820 is not set |
758 | # CONFIG_HAMACHI is not set | 788 | # CONFIG_HAMACHI is not set |
759 | # CONFIG_YELLOWFIN is not set | 789 | # CONFIG_YELLOWFIN is not set |
@@ -779,6 +809,7 @@ CONFIG_NETDEV_10000=y | |||
779 | CONFIG_PASEMI_MAC=y | 809 | CONFIG_PASEMI_MAC=y |
780 | # CONFIG_MLX4_CORE is not set | 810 | # CONFIG_MLX4_CORE is not set |
781 | # CONFIG_TEHUTI is not set | 811 | # CONFIG_TEHUTI is not set |
812 | # CONFIG_BNX2X is not set | ||
782 | # CONFIG_TR is not set | 813 | # CONFIG_TR is not set |
783 | 814 | ||
784 | # | 815 | # |
@@ -802,7 +833,6 @@ CONFIG_PASEMI_MAC=y | |||
802 | # CONFIG_PPP is not set | 833 | # CONFIG_PPP is not set |
803 | # CONFIG_SLIP is not set | 834 | # CONFIG_SLIP is not set |
804 | # CONFIG_NET_FC is not set | 835 | # CONFIG_NET_FC is not set |
805 | # CONFIG_SHAPER is not set | ||
806 | # CONFIG_NETCONSOLE is not set | 836 | # CONFIG_NETCONSOLE is not set |
807 | # CONFIG_NETPOLL is not set | 837 | # CONFIG_NETPOLL is not set |
808 | # CONFIG_NET_POLL_CONTROLLER is not set | 838 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -861,6 +891,7 @@ CONFIG_VT_CONSOLE=y | |||
861 | CONFIG_HW_CONSOLE=y | 891 | CONFIG_HW_CONSOLE=y |
862 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 892 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
863 | # CONFIG_SERIAL_NONSTANDARD is not set | 893 | # CONFIG_SERIAL_NONSTANDARD is not set |
894 | # CONFIG_NOZOMI is not set | ||
864 | 895 | ||
865 | # | 896 | # |
866 | # Serial drivers | 897 | # Serial drivers |
@@ -886,8 +917,7 @@ CONFIG_LEGACY_PTY_COUNT=4 | |||
886 | # CONFIG_IPMI_HANDLER is not set | 917 | # CONFIG_IPMI_HANDLER is not set |
887 | CONFIG_HW_RANDOM=y | 918 | CONFIG_HW_RANDOM=y |
888 | CONFIG_HW_RANDOM_PASEMI=y | 919 | CONFIG_HW_RANDOM_PASEMI=y |
889 | CONFIG_GEN_RTC=y | 920 | # CONFIG_GEN_RTC is not set |
890 | CONFIG_GEN_RTC_X=y | ||
891 | # CONFIG_R3964 is not set | 921 | # CONFIG_R3964 is not set |
892 | # CONFIG_APPLICOM is not set | 922 | # CONFIG_APPLICOM is not set |
893 | 923 | ||
@@ -897,6 +927,7 @@ CONFIG_GEN_RTC_X=y | |||
897 | # CONFIG_SYNCLINK_CS is not set | 927 | # CONFIG_SYNCLINK_CS is not set |
898 | # CONFIG_CARDMAN_4000 is not set | 928 | # CONFIG_CARDMAN_4000 is not set |
899 | # CONFIG_CARDMAN_4040 is not set | 929 | # CONFIG_CARDMAN_4040 is not set |
930 | # CONFIG_IPWIRELESS is not set | ||
900 | CONFIG_RAW_DRIVER=y | 931 | CONFIG_RAW_DRIVER=y |
901 | CONFIG_MAX_RAW_DEVS=256 | 932 | CONFIG_MAX_RAW_DEVS=256 |
902 | # CONFIG_HANGCHECK_TIMER is not set | 933 | # CONFIG_HANGCHECK_TIMER is not set |
@@ -944,13 +975,12 @@ CONFIG_I2C_PASEMI=y | |||
944 | # | 975 | # |
945 | # Miscellaneous I2C Chip support | 976 | # Miscellaneous I2C Chip support |
946 | # | 977 | # |
947 | # CONFIG_SENSORS_DS1337 is not set | ||
948 | # CONFIG_SENSORS_DS1374 is not set | ||
949 | # CONFIG_DS1682 is not set | 978 | # CONFIG_DS1682 is not set |
950 | CONFIG_SENSORS_EEPROM=y | 979 | CONFIG_SENSORS_EEPROM=y |
951 | # CONFIG_SENSORS_PCF8574 is not set | 980 | # CONFIG_SENSORS_PCF8574 is not set |
952 | # CONFIG_SENSORS_PCA9539 is not set | 981 | # CONFIG_PCF8575 is not set |
953 | # CONFIG_SENSORS_PCF8591 is not set | 982 | # CONFIG_SENSORS_PCF8591 is not set |
983 | # CONFIG_TPS65010 is not set | ||
954 | # CONFIG_SENSORS_MAX6875 is not set | 984 | # CONFIG_SENSORS_MAX6875 is not set |
955 | # CONFIG_SENSORS_TSL2550 is not set | 985 | # CONFIG_SENSORS_TSL2550 is not set |
956 | # CONFIG_I2C_DEBUG_CORE is not set | 986 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -975,6 +1005,7 @@ CONFIG_HWMON_VID=y | |||
975 | # CONFIG_SENSORS_ADM1031 is not set | 1005 | # CONFIG_SENSORS_ADM1031 is not set |
976 | # CONFIG_SENSORS_ADM9240 is not set | 1006 | # CONFIG_SENSORS_ADM9240 is not set |
977 | # CONFIG_SENSORS_ADT7470 is not set | 1007 | # CONFIG_SENSORS_ADT7470 is not set |
1008 | # CONFIG_SENSORS_ADT7473 is not set | ||
978 | # CONFIG_SENSORS_ATXP1 is not set | 1009 | # CONFIG_SENSORS_ATXP1 is not set |
979 | # CONFIG_SENSORS_DS1621 is not set | 1010 | # CONFIG_SENSORS_DS1621 is not set |
980 | # CONFIG_SENSORS_I5K_AMB is not set | 1011 | # CONFIG_SENSORS_I5K_AMB is not set |
@@ -1004,6 +1035,7 @@ CONFIG_SENSORS_LM90=y | |||
1004 | # CONFIG_SENSORS_SMSC47M1 is not set | 1035 | # CONFIG_SENSORS_SMSC47M1 is not set |
1005 | # CONFIG_SENSORS_SMSC47M192 is not set | 1036 | # CONFIG_SENSORS_SMSC47M192 is not set |
1006 | # CONFIG_SENSORS_SMSC47B397 is not set | 1037 | # CONFIG_SENSORS_SMSC47B397 is not set |
1038 | # CONFIG_SENSORS_ADS7828 is not set | ||
1007 | # CONFIG_SENSORS_THMC50 is not set | 1039 | # CONFIG_SENSORS_THMC50 is not set |
1008 | # CONFIG_SENSORS_VIA686A is not set | 1040 | # CONFIG_SENSORS_VIA686A is not set |
1009 | # CONFIG_SENSORS_VT1211 is not set | 1041 | # CONFIG_SENSORS_VT1211 is not set |
@@ -1013,9 +1045,11 @@ CONFIG_SENSORS_LM90=y | |||
1013 | # CONFIG_SENSORS_W83792D is not set | 1045 | # CONFIG_SENSORS_W83792D is not set |
1014 | # CONFIG_SENSORS_W83793 is not set | 1046 | # CONFIG_SENSORS_W83793 is not set |
1015 | # CONFIG_SENSORS_W83L785TS is not set | 1047 | # CONFIG_SENSORS_W83L785TS is not set |
1048 | # CONFIG_SENSORS_W83L786NG is not set | ||
1016 | # CONFIG_SENSORS_W83627HF is not set | 1049 | # CONFIG_SENSORS_W83627HF is not set |
1017 | # CONFIG_SENSORS_W83627EHF is not set | 1050 | # CONFIG_SENSORS_W83627EHF is not set |
1018 | # CONFIG_HWMON_DEBUG_CHIP is not set | 1051 | # CONFIG_HWMON_DEBUG_CHIP is not set |
1052 | # CONFIG_THERMAL is not set | ||
1019 | # CONFIG_WATCHDOG is not set | 1053 | # CONFIG_WATCHDOG is not set |
1020 | 1054 | ||
1021 | # | 1055 | # |
@@ -1183,6 +1217,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1183 | # CONFIG_SND_BT87X is not set | 1217 | # CONFIG_SND_BT87X is not set |
1184 | # CONFIG_SND_CA0106 is not set | 1218 | # CONFIG_SND_CA0106 is not set |
1185 | # CONFIG_SND_CMIPCI is not set | 1219 | # CONFIG_SND_CMIPCI is not set |
1220 | # CONFIG_SND_OXYGEN is not set | ||
1186 | # CONFIG_SND_CS4281 is not set | 1221 | # CONFIG_SND_CS4281 is not set |
1187 | # CONFIG_SND_CS46XX is not set | 1222 | # CONFIG_SND_CS46XX is not set |
1188 | # CONFIG_SND_CS5530 is not set | 1223 | # CONFIG_SND_CS5530 is not set |
@@ -1208,6 +1243,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1208 | # CONFIG_SND_HDA_INTEL is not set | 1243 | # CONFIG_SND_HDA_INTEL is not set |
1209 | # CONFIG_SND_HDSP is not set | 1244 | # CONFIG_SND_HDSP is not set |
1210 | # CONFIG_SND_HDSPM is not set | 1245 | # CONFIG_SND_HDSPM is not set |
1246 | # CONFIG_SND_HIFIER is not set | ||
1211 | # CONFIG_SND_ICE1712 is not set | 1247 | # CONFIG_SND_ICE1712 is not set |
1212 | # CONFIG_SND_ICE1724 is not set | 1248 | # CONFIG_SND_ICE1724 is not set |
1213 | # CONFIG_SND_INTEL8X0 is not set | 1249 | # CONFIG_SND_INTEL8X0 is not set |
@@ -1225,6 +1261,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1225 | # CONFIG_SND_TRIDENT is not set | 1261 | # CONFIG_SND_TRIDENT is not set |
1226 | # CONFIG_SND_VIA82XX is not set | 1262 | # CONFIG_SND_VIA82XX is not set |
1227 | # CONFIG_SND_VIA82XX_MODEM is not set | 1263 | # CONFIG_SND_VIA82XX_MODEM is not set |
1264 | # CONFIG_SND_VIRTUOSO is not set | ||
1228 | # CONFIG_SND_VX222 is not set | 1265 | # CONFIG_SND_VX222 is not set |
1229 | # CONFIG_SND_YMFPCI is not set | 1266 | # CONFIG_SND_YMFPCI is not set |
1230 | 1267 | ||
@@ -1259,6 +1296,10 @@ CONFIG_SND_USB_USX2Y=y | |||
1259 | # | 1296 | # |
1260 | 1297 | ||
1261 | # | 1298 | # |
1299 | # ALSA SoC audio for Freescale SOCs | ||
1300 | # | ||
1301 | |||
1302 | # | ||
1262 | # Open Sound System | 1303 | # Open Sound System |
1263 | # | 1304 | # |
1264 | # CONFIG_SOUND_PRIME is not set | 1305 | # CONFIG_SOUND_PRIME is not set |
@@ -1280,6 +1321,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1280 | CONFIG_USB_ARCH_HAS_EHCI=y | 1321 | CONFIG_USB_ARCH_HAS_EHCI=y |
1281 | CONFIG_USB=y | 1322 | CONFIG_USB=y |
1282 | # CONFIG_USB_DEBUG is not set | 1323 | # CONFIG_USB_DEBUG is not set |
1324 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1283 | 1325 | ||
1284 | # | 1326 | # |
1285 | # Miscellaneous USB options | 1327 | # Miscellaneous USB options |
@@ -1293,17 +1335,14 @@ CONFIG_USB_DEVICEFS=y | |||
1293 | # USB Host Controller Drivers | 1335 | # USB Host Controller Drivers |
1294 | # | 1336 | # |
1295 | CONFIG_USB_EHCI_HCD=y | 1337 | CONFIG_USB_EHCI_HCD=y |
1296 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1297 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1338 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1298 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1339 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1340 | CONFIG_USB_EHCI_HCD_PPC_OF=y | ||
1299 | # CONFIG_USB_ISP116X_HCD is not set | 1341 | # CONFIG_USB_ISP116X_HCD is not set |
1300 | CONFIG_USB_OHCI_HCD=y | 1342 | CONFIG_USB_OHCI_HCD=y |
1301 | CONFIG_USB_OHCI_HCD_PPC_OF=y | 1343 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
1302 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | 1344 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1303 | # CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set | 1345 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
1304 | CONFIG_USB_OHCI_HCD_PCI=y | ||
1305 | CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y | ||
1306 | CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y | ||
1307 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 1346 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
1308 | CONFIG_USB_UHCI_HCD=y | 1347 | CONFIG_USB_UHCI_HCD=y |
1309 | CONFIG_USB_SL811_HCD=y | 1348 | CONFIG_USB_SL811_HCD=y |
@@ -1348,10 +1387,6 @@ CONFIG_USB_LIBUSUAL=y | |||
1348 | # | 1387 | # |
1349 | # USB port drivers | 1388 | # USB port drivers |
1350 | # | 1389 | # |
1351 | |||
1352 | # | ||
1353 | # USB Serial Converter support | ||
1354 | # | ||
1355 | # CONFIG_USB_SERIAL is not set | 1390 | # CONFIG_USB_SERIAL is not set |
1356 | 1391 | ||
1357 | # | 1392 | # |
@@ -1377,16 +1412,9 @@ CONFIG_USB_LIBUSUAL=y | |||
1377 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1412 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1378 | # CONFIG_USB_IOWARRIOR is not set | 1413 | # CONFIG_USB_IOWARRIOR is not set |
1379 | # CONFIG_USB_TEST is not set | 1414 | # CONFIG_USB_TEST is not set |
1380 | |||
1381 | # | ||
1382 | # USB DSL modem support | ||
1383 | # | ||
1384 | |||
1385 | # | ||
1386 | # USB Gadget Support | ||
1387 | # | ||
1388 | # CONFIG_USB_GADGET is not set | 1415 | # CONFIG_USB_GADGET is not set |
1389 | # CONFIG_MMC is not set | 1416 | # CONFIG_MMC is not set |
1417 | # CONFIG_MEMSTICK is not set | ||
1390 | # CONFIG_NEW_LEDS is not set | 1418 | # CONFIG_NEW_LEDS is not set |
1391 | # CONFIG_INFINIBAND is not set | 1419 | # CONFIG_INFINIBAND is not set |
1392 | CONFIG_EDAC=y | 1420 | CONFIG_EDAC=y |
@@ -1425,6 +1453,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1425 | # CONFIG_RTC_DRV_PCF8563 is not set | 1453 | # CONFIG_RTC_DRV_PCF8563 is not set |
1426 | # CONFIG_RTC_DRV_PCF8583 is not set | 1454 | # CONFIG_RTC_DRV_PCF8583 is not set |
1427 | # CONFIG_RTC_DRV_M41T80 is not set | 1455 | # CONFIG_RTC_DRV_M41T80 is not set |
1456 | # CONFIG_RTC_DRV_S35390A is not set | ||
1428 | 1457 | ||
1429 | # | 1458 | # |
1430 | # SPI RTC drivers | 1459 | # SPI RTC drivers |
@@ -1434,9 +1463,10 @@ CONFIG_RTC_DRV_DS1307=y | |||
1434 | # Platform RTC drivers | 1463 | # Platform RTC drivers |
1435 | # | 1464 | # |
1436 | # CONFIG_RTC_DRV_CMOS is not set | 1465 | # CONFIG_RTC_DRV_CMOS is not set |
1466 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1437 | # CONFIG_RTC_DRV_DS1553 is not set | 1467 | # CONFIG_RTC_DRV_DS1553 is not set |
1438 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1439 | # CONFIG_RTC_DRV_DS1742 is not set | 1468 | # CONFIG_RTC_DRV_DS1742 is not set |
1469 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1440 | # CONFIG_RTC_DRV_M48T86 is not set | 1470 | # CONFIG_RTC_DRV_M48T86 is not set |
1441 | # CONFIG_RTC_DRV_M48T59 is not set | 1471 | # CONFIG_RTC_DRV_M48T59 is not set |
1442 | # CONFIG_RTC_DRV_V3020 is not set | 1472 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -1444,6 +1474,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1444 | # | 1474 | # |
1445 | # on-CPU RTC drivers | 1475 | # on-CPU RTC drivers |
1446 | # | 1476 | # |
1477 | # CONFIG_DMADEVICES is not set | ||
1447 | 1478 | ||
1448 | # | 1479 | # |
1449 | # Userspace I/O | 1480 | # Userspace I/O |
@@ -1471,12 +1502,10 @@ CONFIG_FS_POSIX_ACL=y | |||
1471 | # CONFIG_XFS_FS is not set | 1502 | # CONFIG_XFS_FS is not set |
1472 | # CONFIG_GFS2_FS is not set | 1503 | # CONFIG_GFS2_FS is not set |
1473 | # CONFIG_OCFS2_FS is not set | 1504 | # CONFIG_OCFS2_FS is not set |
1474 | # CONFIG_MINIX_FS is not set | 1505 | CONFIG_DNOTIFY=y |
1475 | # CONFIG_ROMFS_FS is not set | ||
1476 | CONFIG_INOTIFY=y | 1506 | CONFIG_INOTIFY=y |
1477 | CONFIG_INOTIFY_USER=y | 1507 | CONFIG_INOTIFY_USER=y |
1478 | # CONFIG_QUOTA is not set | 1508 | # CONFIG_QUOTA is not set |
1479 | CONFIG_DNOTIFY=y | ||
1480 | CONFIG_AUTOFS_FS=y | 1509 | CONFIG_AUTOFS_FS=y |
1481 | CONFIG_AUTOFS4_FS=y | 1510 | CONFIG_AUTOFS4_FS=y |
1482 | # CONFIG_FUSE_FS is not set | 1511 | # CONFIG_FUSE_FS is not set |
@@ -1536,8 +1565,10 @@ CONFIG_JFFS2_RTIME=y | |||
1536 | # CONFIG_JFFS2_RUBIN is not set | 1565 | # CONFIG_JFFS2_RUBIN is not set |
1537 | # CONFIG_CRAMFS is not set | 1566 | # CONFIG_CRAMFS is not set |
1538 | # CONFIG_VXFS_FS is not set | 1567 | # CONFIG_VXFS_FS is not set |
1568 | # CONFIG_MINIX_FS is not set | ||
1539 | # CONFIG_HPFS_FS is not set | 1569 | # CONFIG_HPFS_FS is not set |
1540 | # CONFIG_QNX4FS_FS is not set | 1570 | # CONFIG_QNX4FS_FS is not set |
1571 | # CONFIG_ROMFS_FS is not set | ||
1541 | # CONFIG_SYSV_FS is not set | 1572 | # CONFIG_SYSV_FS is not set |
1542 | # CONFIG_UFS_FS is not set | 1573 | # CONFIG_UFS_FS is not set |
1543 | CONFIG_NETWORK_FILESYSTEMS=y | 1574 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1629,7 +1660,6 @@ CONFIG_NLS_ISO8859_1=y | |||
1629 | # CONFIG_NLS_KOI8_U is not set | 1660 | # CONFIG_NLS_KOI8_U is not set |
1630 | # CONFIG_NLS_UTF8 is not set | 1661 | # CONFIG_NLS_UTF8 is not set |
1631 | # CONFIG_DLM is not set | 1662 | # CONFIG_DLM is not set |
1632 | # CONFIG_UCC_SLOW is not set | ||
1633 | 1663 | ||
1634 | # | 1664 | # |
1635 | # Library routines | 1665 | # Library routines |
@@ -1647,11 +1677,6 @@ CONFIG_PLIST=y | |||
1647 | CONFIG_HAS_IOMEM=y | 1677 | CONFIG_HAS_IOMEM=y |
1648 | CONFIG_HAS_IOPORT=y | 1678 | CONFIG_HAS_IOPORT=y |
1649 | CONFIG_HAS_DMA=y | 1679 | CONFIG_HAS_DMA=y |
1650 | CONFIG_INSTRUMENTATION=y | ||
1651 | CONFIG_PROFILING=y | ||
1652 | CONFIG_OPROFILE=y | ||
1653 | # CONFIG_KPROBES is not set | ||
1654 | # CONFIG_MARKERS is not set | ||
1655 | 1680 | ||
1656 | # | 1681 | # |
1657 | # Kernel hacking | 1682 | # Kernel hacking |
@@ -1670,6 +1695,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1670 | # CONFIG_SCHEDSTATS is not set | 1695 | # CONFIG_SCHEDSTATS is not set |
1671 | # CONFIG_TIMER_STATS is not set | 1696 | # CONFIG_TIMER_STATS is not set |
1672 | # CONFIG_SLUB_DEBUG_ON is not set | 1697 | # CONFIG_SLUB_DEBUG_ON is not set |
1698 | # CONFIG_SLUB_STATS is not set | ||
1673 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1699 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1674 | # CONFIG_RT_MUTEX_TESTER is not set | 1700 | # CONFIG_RT_MUTEX_TESTER is not set |
1675 | # CONFIG_DEBUG_SPINLOCK is not set | 1701 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1682,9 +1708,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1682 | # CONFIG_DEBUG_VM is not set | 1708 | # CONFIG_DEBUG_VM is not set |
1683 | # CONFIG_DEBUG_LIST is not set | 1709 | # CONFIG_DEBUG_LIST is not set |
1684 | # CONFIG_DEBUG_SG is not set | 1710 | # CONFIG_DEBUG_SG is not set |
1685 | # CONFIG_FORCED_INLINING is not set | ||
1686 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1711 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1687 | # CONFIG_RCU_TORTURE_TEST is not set | 1712 | # CONFIG_RCU_TORTURE_TEST is not set |
1713 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1688 | # CONFIG_FAULT_INJECTION is not set | 1714 | # CONFIG_FAULT_INJECTION is not set |
1689 | # CONFIG_SAMPLES is not set | 1715 | # CONFIG_SAMPLES is not set |
1690 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1716 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -1710,7 +1736,9 @@ CONFIG_ASYNC_MEMCPY=y | |||
1710 | CONFIG_ASYNC_XOR=y | 1736 | CONFIG_ASYNC_XOR=y |
1711 | CONFIG_CRYPTO=y | 1737 | CONFIG_CRYPTO=y |
1712 | CONFIG_CRYPTO_ALGAPI=y | 1738 | CONFIG_CRYPTO_ALGAPI=y |
1739 | CONFIG_CRYPTO_AEAD=y | ||
1713 | CONFIG_CRYPTO_BLKCIPHER=y | 1740 | CONFIG_CRYPTO_BLKCIPHER=y |
1741 | # CONFIG_CRYPTO_SEQIV is not set | ||
1714 | CONFIG_CRYPTO_HASH=y | 1742 | CONFIG_CRYPTO_HASH=y |
1715 | CONFIG_CRYPTO_MANAGER=y | 1743 | CONFIG_CRYPTO_MANAGER=y |
1716 | CONFIG_CRYPTO_HMAC=y | 1744 | CONFIG_CRYPTO_HMAC=y |
@@ -1729,6 +1757,9 @@ CONFIG_CRYPTO_CBC=y | |||
1729 | # CONFIG_CRYPTO_PCBC is not set | 1757 | # CONFIG_CRYPTO_PCBC is not set |
1730 | # CONFIG_CRYPTO_LRW is not set | 1758 | # CONFIG_CRYPTO_LRW is not set |
1731 | # CONFIG_CRYPTO_XTS is not set | 1759 | # CONFIG_CRYPTO_XTS is not set |
1760 | # CONFIG_CRYPTO_CTR is not set | ||
1761 | # CONFIG_CRYPTO_GCM is not set | ||
1762 | # CONFIG_CRYPTO_CCM is not set | ||
1732 | # CONFIG_CRYPTO_CRYPTD is not set | 1763 | # CONFIG_CRYPTO_CRYPTD is not set |
1733 | CONFIG_CRYPTO_DES=y | 1764 | CONFIG_CRYPTO_DES=y |
1734 | # CONFIG_CRYPTO_FCRYPT is not set | 1765 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1743,11 +1774,14 @@ CONFIG_CRYPTO_AES=y | |||
1743 | # CONFIG_CRYPTO_KHAZAD is not set | 1774 | # CONFIG_CRYPTO_KHAZAD is not set |
1744 | # CONFIG_CRYPTO_ANUBIS is not set | 1775 | # CONFIG_CRYPTO_ANUBIS is not set |
1745 | # CONFIG_CRYPTO_SEED is not set | 1776 | # CONFIG_CRYPTO_SEED is not set |
1777 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1746 | # CONFIG_CRYPTO_DEFLATE is not set | 1778 | # CONFIG_CRYPTO_DEFLATE is not set |
1747 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1779 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1748 | # CONFIG_CRYPTO_CRC32C is not set | 1780 | # CONFIG_CRYPTO_CRC32C is not set |
1749 | # CONFIG_CRYPTO_CAMELLIA is not set | 1781 | # CONFIG_CRYPTO_CAMELLIA is not set |
1750 | # CONFIG_CRYPTO_TEST is not set | 1782 | # CONFIG_CRYPTO_TEST is not set |
1751 | # CONFIG_CRYPTO_AUTHENC is not set | 1783 | CONFIG_CRYPTO_AUTHENC=y |
1784 | # CONFIG_CRYPTO_LZO is not set | ||
1752 | CONFIG_CRYPTO_HW=y | 1785 | CONFIG_CRYPTO_HW=y |
1786 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1753 | # CONFIG_PPC_CLOCK is not set | 1787 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/prpmc2800_defconfig b/arch/powerpc/configs/prpmc2800_defconfig index f53d55bbdd7c..f9121685f11a 100644 --- a/arch/powerpc/configs/prpmc2800_defconfig +++ b/arch/powerpc/configs/prpmc2800_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:37 2008 | 4 | # Mon Mar 31 11:37:15 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -855,8 +855,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
855 | # CONFIG_IPMI_HANDLER is not set | 855 | # CONFIG_IPMI_HANDLER is not set |
856 | # CONFIG_HW_RANDOM is not set | 856 | # CONFIG_HW_RANDOM is not set |
857 | # CONFIG_NVRAM is not set | 857 | # CONFIG_NVRAM is not set |
858 | CONFIG_GEN_RTC=y | 858 | # CONFIG_GEN_RTC is not set |
859 | # CONFIG_GEN_RTC_X is not set | ||
860 | # CONFIG_R3964 is not set | 859 | # CONFIG_R3964 is not set |
861 | # CONFIG_APPLICOM is not set | 860 | # CONFIG_APPLICOM is not set |
862 | # CONFIG_RAW_DRIVER is not set | 861 | # CONFIG_RAW_DRIVER is not set |
@@ -1129,10 +1128,6 @@ CONFIG_USB_MON=y | |||
1129 | # CONFIG_EDAC is not set | 1128 | # CONFIG_EDAC is not set |
1130 | CONFIG_RTC_LIB=y | 1129 | CONFIG_RTC_LIB=y |
1131 | CONFIG_RTC_CLASS=y | 1130 | CONFIG_RTC_CLASS=y |
1132 | |||
1133 | # | ||
1134 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1135 | # | ||
1136 | CONFIG_RTC_HCTOSYS=y | 1131 | CONFIG_RTC_HCTOSYS=y |
1137 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1132 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1138 | # CONFIG_RTC_DEBUG is not set | 1133 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/configs/storcenter_defconfig b/arch/powerpc/configs/storcenter_defconfig index 8fc85747a0a7..fdbfd39a3aca 100644 --- a/arch/powerpc/configs/storcenter_defconfig +++ b/arch/powerpc/configs/storcenter_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.25-rc7 |
4 | # Mon Mar 24 08:48:41 2008 | 4 | # Mon Mar 31 11:37:19 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -717,8 +717,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
717 | # CONFIG_IPMI_HANDLER is not set | 717 | # CONFIG_IPMI_HANDLER is not set |
718 | CONFIG_HW_RANDOM=m | 718 | CONFIG_HW_RANDOM=m |
719 | CONFIG_NVRAM=y | 719 | CONFIG_NVRAM=y |
720 | CONFIG_GEN_RTC=y | 720 | # CONFIG_GEN_RTC is not set |
721 | # CONFIG_GEN_RTC_X is not set | ||
722 | # CONFIG_R3964 is not set | 721 | # CONFIG_R3964 is not set |
723 | # CONFIG_APPLICOM is not set | 722 | # CONFIG_APPLICOM is not set |
724 | # CONFIG_RAW_DRIVER is not set | 723 | # CONFIG_RAW_DRIVER is not set |
@@ -931,10 +930,6 @@ CONFIG_USB_STORAGE=y | |||
931 | # CONFIG_EDAC is not set | 930 | # CONFIG_EDAC is not set |
932 | CONFIG_RTC_LIB=y | 931 | CONFIG_RTC_LIB=y |
933 | CONFIG_RTC_CLASS=y | 932 | CONFIG_RTC_CLASS=y |
934 | |||
935 | # | ||
936 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
937 | # | ||
938 | CONFIG_RTC_HCTOSYS=y | 933 | CONFIG_RTC_HCTOSYS=y |
939 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 934 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
940 | # CONFIG_RTC_DEBUG is not set | 935 | # CONFIG_RTC_DEBUG is not set |
diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S index 11b4f6d9ffce..d3aee08e6814 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S | |||
@@ -1387,12 +1387,14 @@ __secondary_start: | |||
1387 | #ifdef CONFIG_PPC_ISERIES | 1387 | #ifdef CONFIG_PPC_ISERIES |
1388 | BEGIN_FW_FTR_SECTION | 1388 | BEGIN_FW_FTR_SECTION |
1389 | ori r4,r4,MSR_EE | 1389 | ori r4,r4,MSR_EE |
1390 | li r8,1 | ||
1391 | stb r8,PACAHARDIRQEN(r13) | ||
1390 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 1392 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
1391 | #endif | 1393 | #endif |
1392 | BEGIN_FW_FTR_SECTION | 1394 | BEGIN_FW_FTR_SECTION |
1393 | stb r7,PACASOFTIRQEN(r13) | ||
1394 | stb r7,PACAHARDIRQEN(r13) | 1395 | stb r7,PACAHARDIRQEN(r13) |
1395 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) | 1396 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) |
1397 | stb r7,PACASOFTIRQEN(r13) | ||
1396 | 1398 | ||
1397 | mtspr SPRN_SRR0,r3 | 1399 | mtspr SPRN_SRR0,r3 |
1398 | mtspr SPRN_SRR1,r4 | 1400 | mtspr SPRN_SRR1,r4 |
@@ -1520,15 +1522,14 @@ _INIT_GLOBAL(start_here_common) | |||
1520 | #ifdef CONFIG_PPC_ISERIES | 1522 | #ifdef CONFIG_PPC_ISERIES |
1521 | BEGIN_FW_FTR_SECTION | 1523 | BEGIN_FW_FTR_SECTION |
1522 | mfmsr r5 | 1524 | mfmsr r5 |
1523 | ori r5,r5,MSR_EE /* Hard Enabled */ | 1525 | ori r5,r5,MSR_EE /* Hard Enabled on iSeries*/ |
1524 | mtmsrd r5 | 1526 | mtmsrd r5 |
1527 | li r5,1 | ||
1525 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) | 1528 | END_FW_FTR_SECTION_IFSET(FW_FEATURE_ISERIES) |
1526 | #endif | 1529 | #endif |
1527 | BEGIN_FW_FTR_SECTION | 1530 | stb r5,PACAHARDIRQEN(r13) /* Hard Disabled on others */ |
1528 | stb r5,PACAHARDIRQEN(r13) | ||
1529 | END_FW_FTR_SECTION_IFCLR(FW_FEATURE_ISERIES) | ||
1530 | 1531 | ||
1531 | bl .start_kernel | 1532 | bl .start_kernel |
1532 | 1533 | ||
1533 | /* Not reached */ | 1534 | /* Not reached */ |
1534 | BUG_OPCODE | 1535 | BUG_OPCODE |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index b0e5deb4274f..292163f5b39a 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -143,7 +143,6 @@ void local_irq_restore(unsigned long en) | |||
143 | */ | 143 | */ |
144 | if (local_paca->lppaca_ptr->int_dword.any_int) | 144 | if (local_paca->lppaca_ptr->int_dword.any_int) |
145 | iseries_handle_interrupts(); | 145 | iseries_handle_interrupts(); |
146 | return; | ||
147 | } | 146 | } |
148 | 147 | ||
149 | /* | 148 | /* |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 59311ec0d422..4ec605521504 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -241,8 +241,12 @@ void discard_lazy_cpu_state(void) | |||
241 | } | 241 | } |
242 | #endif /* CONFIG_SMP */ | 242 | #endif /* CONFIG_SMP */ |
243 | 243 | ||
244 | static DEFINE_PER_CPU(unsigned long, current_dabr); | ||
245 | |||
244 | int set_dabr(unsigned long dabr) | 246 | int set_dabr(unsigned long dabr) |
245 | { | 247 | { |
248 | __get_cpu_var(current_dabr) = dabr; | ||
249 | |||
246 | #ifdef CONFIG_PPC_MERGE /* XXX for now */ | 250 | #ifdef CONFIG_PPC_MERGE /* XXX for now */ |
247 | if (ppc_md.set_dabr) | 251 | if (ppc_md.set_dabr) |
248 | return ppc_md.set_dabr(dabr); | 252 | return ppc_md.set_dabr(dabr); |
@@ -259,8 +263,6 @@ int set_dabr(unsigned long dabr) | |||
259 | DEFINE_PER_CPU(struct cpu_usage, cpu_usage_array); | 263 | DEFINE_PER_CPU(struct cpu_usage, cpu_usage_array); |
260 | #endif | 264 | #endif |
261 | 265 | ||
262 | static DEFINE_PER_CPU(unsigned long, current_dabr); | ||
263 | |||
264 | struct task_struct *__switch_to(struct task_struct *prev, | 266 | struct task_struct *__switch_to(struct task_struct *prev, |
265 | struct task_struct *new) | 267 | struct task_struct *new) |
266 | { | 268 | { |
@@ -325,10 +327,8 @@ struct task_struct *__switch_to(struct task_struct *prev, | |||
325 | 327 | ||
326 | #endif /* CONFIG_SMP */ | 328 | #endif /* CONFIG_SMP */ |
327 | 329 | ||
328 | if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr)) { | 330 | if (unlikely(__get_cpu_var(current_dabr) != new->thread.dabr)) |
329 | set_dabr(new->thread.dabr); | 331 | set_dabr(new->thread.dabr); |
330 | __get_cpu_var(current_dabr) = new->thread.dabr; | ||
331 | } | ||
332 | 332 | ||
333 | new_thread = &new->thread; | 333 | new_thread = &new->thread; |
334 | old_thread = ¤t->thread; | 334 | old_thread = ¤t->thread; |
diff --git a/arch/powerpc/kernel/rtas_flash.c b/arch/powerpc/kernel/rtas_flash.c index f2276593f416..538baf46f15f 100644 --- a/arch/powerpc/kernel/rtas_flash.c +++ b/arch/powerpc/kernel/rtas_flash.c | |||
@@ -356,7 +356,7 @@ static int rtas_excl_open(struct inode *inode, struct file *file) | |||
356 | 356 | ||
357 | /* Enforce exclusive open with use count of PDE */ | 357 | /* Enforce exclusive open with use count of PDE */ |
358 | spin_lock(&flash_file_open_lock); | 358 | spin_lock(&flash_file_open_lock); |
359 | if (atomic_read(&dp->count) > 1) { | 359 | if (atomic_read(&dp->count) > 2) { |
360 | spin_unlock(&flash_file_open_lock); | 360 | spin_unlock(&flash_file_open_lock); |
361 | return -EBUSY; | 361 | return -EBUSY; |
362 | } | 362 | } |
diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S index 7f830a4888d6..e10d76a860d3 100644 --- a/arch/powerpc/mm/hash_low_32.S +++ b/arch/powerpc/mm/hash_low_32.S | |||
@@ -44,6 +44,9 @@ mmu_hash_lock: | |||
44 | #ifdef CONFIG_SMP | 44 | #ifdef CONFIG_SMP |
45 | .text | 45 | .text |
46 | _GLOBAL(hash_page_sync) | 46 | _GLOBAL(hash_page_sync) |
47 | mfmsr r10 | ||
48 | rlwinm r0,r10,0,17,15 /* clear bit 16 (MSR_EE) */ | ||
49 | mtmsr r0 | ||
47 | lis r8,mmu_hash_lock@h | 50 | lis r8,mmu_hash_lock@h |
48 | ori r8,r8,mmu_hash_lock@l | 51 | ori r8,r8,mmu_hash_lock@l |
49 | lis r0,0x0fff | 52 | lis r0,0x0fff |
@@ -60,8 +63,9 @@ _GLOBAL(hash_page_sync) | |||
60 | eieio | 63 | eieio |
61 | li r0,0 | 64 | li r0,0 |
62 | stw r0,0(r8) | 65 | stw r0,0(r8) |
63 | blr | 66 | mtmsr r10 |
64 | #endif | 67 | blr |
68 | #endif /* CONFIG_SMP */ | ||
65 | 69 | ||
66 | /* | 70 | /* |
67 | * Load a PTE into the hash table, if possible. | 71 | * Load a PTE into the hash table, if possible. |
diff --git a/arch/powerpc/oprofile/cell/vma_map.c b/arch/powerpc/oprofile/cell/vma_map.c index 76ec1d16aef7..9a932177e70e 100644 --- a/arch/powerpc/oprofile/cell/vma_map.c +++ b/arch/powerpc/oprofile/cell/vma_map.c | |||
@@ -92,7 +92,7 @@ vma_map_add(struct vma_to_fileoffset_map *map, unsigned int vma, | |||
92 | * A pointer to the first vma_map in the generated list | 92 | * A pointer to the first vma_map in the generated list |
93 | * of vma_maps is returned. */ | 93 | * of vma_maps is returned. */ |
94 | struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | 94 | struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, |
95 | unsigned long spu_elf_start) | 95 | unsigned long __spu_elf_start) |
96 | { | 96 | { |
97 | static const unsigned char expected[EI_PAD] = { | 97 | static const unsigned char expected[EI_PAD] = { |
98 | [EI_MAG0] = ELFMAG0, | 98 | [EI_MAG0] = ELFMAG0, |
@@ -107,9 +107,11 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
107 | 107 | ||
108 | int grd_val; | 108 | int grd_val; |
109 | struct vma_to_fileoffset_map *map = NULL; | 109 | struct vma_to_fileoffset_map *map = NULL; |
110 | void __user *spu_elf_start = (void __user *)__spu_elf_start; | ||
110 | struct spu_overlay_info ovly; | 111 | struct spu_overlay_info ovly; |
111 | unsigned int overlay_tbl_offset = -1; | 112 | unsigned int overlay_tbl_offset = -1; |
112 | unsigned long phdr_start, shdr_start; | 113 | Elf32_Phdr __user *phdr_start; |
114 | Elf32_Shdr __user *shdr_start; | ||
113 | Elf32_Ehdr ehdr; | 115 | Elf32_Ehdr ehdr; |
114 | Elf32_Phdr phdr; | 116 | Elf32_Phdr phdr; |
115 | Elf32_Shdr shdr, shdr_str; | 117 | Elf32_Shdr shdr, shdr_str; |
@@ -121,12 +123,12 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
121 | unsigned int ovly_buf_table_sym = 0; | 123 | unsigned int ovly_buf_table_sym = 0; |
122 | unsigned int ovly_table_end_sym = 0; | 124 | unsigned int ovly_table_end_sym = 0; |
123 | unsigned int ovly_buf_table_end_sym = 0; | 125 | unsigned int ovly_buf_table_end_sym = 0; |
124 | unsigned long ovly_table; | 126 | struct spu_overlay_info __user *ovly_table; |
125 | unsigned int n_ovlys; | 127 | unsigned int n_ovlys; |
126 | 128 | ||
127 | /* Get and validate ELF header. */ | 129 | /* Get and validate ELF header. */ |
128 | 130 | ||
129 | if (copy_from_user(&ehdr, (void *) spu_elf_start, sizeof (ehdr))) | 131 | if (copy_from_user(&ehdr, spu_elf_start, sizeof (ehdr))) |
130 | goto fail; | 132 | goto fail; |
131 | 133 | ||
132 | if (memcmp(ehdr.e_ident, expected, EI_PAD) != 0) { | 134 | if (memcmp(ehdr.e_ident, expected, EI_PAD) != 0) { |
@@ -152,9 +154,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
152 | 154 | ||
153 | /* Traverse program headers. */ | 155 | /* Traverse program headers. */ |
154 | for (i = 0; i < ehdr.e_phnum; i++) { | 156 | for (i = 0; i < ehdr.e_phnum; i++) { |
155 | if (copy_from_user(&phdr, | 157 | if (copy_from_user(&phdr, phdr_start + i, sizeof(phdr))) |
156 | (void *) (phdr_start + i * sizeof(phdr)), | ||
157 | sizeof(phdr))) | ||
158 | goto fail; | 158 | goto fail; |
159 | 159 | ||
160 | if (phdr.p_type != PT_LOAD) | 160 | if (phdr.p_type != PT_LOAD) |
@@ -171,9 +171,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
171 | pr_debug("SPU_PROF: Created non-overlay maps\n"); | 171 | pr_debug("SPU_PROF: Created non-overlay maps\n"); |
172 | /* Traverse section table and search for overlay-related symbols. */ | 172 | /* Traverse section table and search for overlay-related symbols. */ |
173 | for (i = 0; i < ehdr.e_shnum; i++) { | 173 | for (i = 0; i < ehdr.e_shnum; i++) { |
174 | if (copy_from_user(&shdr, | 174 | if (copy_from_user(&shdr, shdr_start + i, sizeof(shdr))) |
175 | (void *) (shdr_start + i * sizeof(shdr)), | ||
176 | sizeof(shdr))) | ||
177 | goto fail; | 175 | goto fail; |
178 | 176 | ||
179 | if (shdr.sh_type != SHT_SYMTAB) | 177 | if (shdr.sh_type != SHT_SYMTAB) |
@@ -182,8 +180,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
182 | continue; | 180 | continue; |
183 | 181 | ||
184 | if (copy_from_user(&shdr_str, | 182 | if (copy_from_user(&shdr_str, |
185 | (void *) (shdr_start + shdr.sh_link * | 183 | shdr_start + shdr.sh_link, |
186 | sizeof(shdr)), | ||
187 | sizeof(shdr))) | 184 | sizeof(shdr))) |
188 | goto fail; | 185 | goto fail; |
189 | 186 | ||
@@ -191,15 +188,15 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
191 | goto fail;; | 188 | goto fail;; |
192 | 189 | ||
193 | for (j = 0; j < shdr.sh_size / sizeof (sym); j++) { | 190 | for (j = 0; j < shdr.sh_size / sizeof (sym); j++) { |
194 | if (copy_from_user(&sym, (void *) (spu_elf_start + | 191 | if (copy_from_user(&sym, spu_elf_start + |
195 | shdr.sh_offset + j * | 192 | shdr.sh_offset + |
196 | sizeof (sym)), | 193 | j * sizeof (sym), |
197 | sizeof (sym))) | 194 | sizeof (sym))) |
198 | goto fail; | 195 | goto fail; |
199 | 196 | ||
200 | if (copy_from_user(name, (void *) | 197 | if (copy_from_user(name, |
201 | (spu_elf_start + shdr_str.sh_offset + | 198 | spu_elf_start + shdr_str.sh_offset + |
202 | sym.st_name), | 199 | sym.st_name, |
203 | 20)) | 200 | 20)) |
204 | goto fail; | 201 | goto fail; |
205 | 202 | ||
@@ -245,9 +242,7 @@ struct vma_to_fileoffset_map *create_vma_map(const struct spu *aSpu, | |||
245 | 242 | ||
246 | /* Traverse overlay table. */ | 243 | /* Traverse overlay table. */ |
247 | for (i = 0; i < n_ovlys; i++) { | 244 | for (i = 0; i < n_ovlys; i++) { |
248 | if (copy_from_user(&ovly, (void *) | 245 | if (copy_from_user(&ovly, ovly_table + i, sizeof (ovly))) |
249 | (ovly_table + i * sizeof (ovly)), | ||
250 | sizeof (ovly))) | ||
251 | goto fail; | 246 | goto fail; |
252 | 247 | ||
253 | /* The ovly.vma/size/offset arguments are analogous to the same | 248 | /* The ovly.vma/size/offset arguments are analogous to the same |
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index ca52b587166d..a977f200db89 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
@@ -763,7 +763,7 @@ void xics_request_IPIs(void) | |||
763 | } | 763 | } |
764 | #endif /* CONFIG_SMP */ | 764 | #endif /* CONFIG_SMP */ |
765 | 765 | ||
766 | void xics_teardown_cpu() | 766 | void xics_teardown_cpu(void) |
767 | { | 767 | { |
768 | int cpu = smp_processor_id(); | 768 | int cpu = smp_processor_id(); |
769 | 769 | ||
diff --git a/arch/powerpc/sysdev/cpm2.c b/arch/powerpc/sysdev/cpm2.c index 7be711232124..dd066bb1d562 100644 --- a/arch/powerpc/sysdev/cpm2.c +++ b/arch/powerpc/sysdev/cpm2.c | |||
@@ -240,6 +240,7 @@ int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode) | |||
240 | case CPM_CLK_SCC1: | 240 | case CPM_CLK_SCC1: |
241 | reg = &im_cpmux->cmx_scr; | 241 | reg = &im_cpmux->cmx_scr; |
242 | shift = 24; | 242 | shift = 24; |
243 | break; | ||
243 | case CPM_CLK_SCC2: | 244 | case CPM_CLK_SCC2: |
244 | reg = &im_cpmux->cmx_scr; | 245 | reg = &im_cpmux->cmx_scr; |
245 | shift = 16; | 246 | shift = 16; |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 12720489e458..8d2cd1de5726 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -72,9 +72,6 @@ config SYS_SUPPORTS_NUMA | |||
72 | config SYS_SUPPORTS_PCI | 72 | config SYS_SUPPORTS_PCI |
73 | bool | 73 | bool |
74 | 74 | ||
75 | config ARCH_MAY_HAVE_PC_FDC | ||
76 | bool | ||
77 | |||
78 | config STACKTRACE_SUPPORT | 75 | config STACKTRACE_SUPPORT |
79 | def_bool y | 76 | def_bool y |
80 | 77 | ||
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile index 3dda24daa0a8..89b408620dcb 100644 --- a/arch/sh/boot/Makefile +++ b/arch/sh/boot/Makefile | |||
@@ -44,7 +44,7 @@ KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%08x" \ | |||
44 | 44 | ||
45 | quiet_cmd_uimage = UIMAGE $@ | 45 | quiet_cmd_uimage = UIMAGE $@ |
46 | cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \ | 46 | cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \ |
47 | -C none -a $(KERNEL_LOAD) -e $(KERNEL_ENTRY) \ | 47 | -C gzip -a $(KERNEL_LOAD) -e $(KERNEL_ENTRY) \ |
48 | -n 'Linux-$(KERNELRELEASE)' -d $< $@ | 48 | -n 'Linux-$(KERNELRELEASE)' -d $< $@ |
49 | 49 | ||
50 | $(obj)/uImage: $(obj)/vmlinux.bin.gz FORCE | 50 | $(obj)/uImage: $(obj)/vmlinux.bin.gz FORCE |
diff --git a/arch/sh/kernel/cpu/sh2a/fpu.c b/arch/sh/kernel/cpu/sh2a/fpu.c index ff99562456fb..5627c0b3ffa8 100644 --- a/arch/sh/kernel/cpu/sh2a/fpu.c +++ b/arch/sh/kernel/cpu/sh2a/fpu.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/signal.h> | 13 | #include <linux/signal.h> |
14 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/fpu.h> | ||
16 | 17 | ||
17 | /* The PR (precision) bit in the FP Status Register must be clear when | 18 | /* The PR (precision) bit in the FP Status Register must be clear when |
18 | * an frchg instruction is executed, otherwise the instruction is undefined. | 19 | * an frchg instruction is executed, otherwise the instruction is undefined. |
diff --git a/arch/sh/kernel/cpu/sh4/fpu.c b/arch/sh/kernel/cpu/sh4/fpu.c index 817f9939cda6..8020796139f1 100644 --- a/arch/sh/kernel/cpu/sh4/fpu.c +++ b/arch/sh/kernel/cpu/sh4/fpu.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/cpu/fpu.h> | 16 | #include <asm/cpu/fpu.h> |
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | #include <asm/system.h> | 18 | #include <asm/system.h> |
19 | #include <asm/fpu.h> | ||
19 | 20 | ||
20 | /* The PR (precision) bit in the FP Status Register must be clear when | 21 | /* The PR (precision) bit in the FP Status Register must be clear when |
21 | * an frchg instruction is executed, otherwise the instruction is undefined. | 22 | * an frchg instruction is executed, otherwise the instruction is undefined. |
diff --git a/arch/sh/kernel/cpu/sh5/fpu.c b/arch/sh/kernel/cpu/sh5/fpu.c index 30b76a94abf2..dd4f51ffb50e 100644 --- a/arch/sh/kernel/cpu/sh5/fpu.c +++ b/arch/sh/kernel/cpu/sh5/fpu.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | #include <asm/user.h> | 18 | #include <asm/user.h> |
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include <asm/fpu.h> | ||
20 | 21 | ||
21 | /* | 22 | /* |
22 | * Initially load the FPU with signalling NANS. This bit pattern | 23 | * Initially load the FPU with signalling NANS. This bit pattern |
diff --git a/arch/sh/kernel/dump_task.c b/arch/sh/kernel/dump_task.c index 4a8a4083ff0b..1db7ce0f25d4 100644 --- a/arch/sh/kernel/dump_task.c +++ b/arch/sh/kernel/dump_task.c | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/elfcore.h> | 1 | #include <linux/elfcore.h> |
2 | #include <linux/sched.h> | 2 | #include <linux/sched.h> |
3 | #include <asm/fpu.h> | ||
3 | 4 | ||
4 | /* | 5 | /* |
5 | * Capture the user space registers if the task is not running (in user space) | 6 | * Capture the user space registers if the task is not running (in user space) |
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index 9ab1926b9d10..b98e37a1f54c 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
26 | #include <asm/system.h> | 26 | #include <asm/system.h> |
27 | #include <asm/ubc.h> | 27 | #include <asm/ubc.h> |
28 | #include <asm/fpu.h> | ||
28 | 29 | ||
29 | static int hlt_counter; | 30 | static int hlt_counter; |
30 | int ubc_usercnt = 0; | 31 | int ubc_usercnt = 0; |
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index f6b5fbfe75c4..f311551d9a05 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/cacheflush.h> | 31 | #include <asm/cacheflush.h> |
32 | #include <asm/fpu.h> | ||
32 | 33 | ||
33 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 34 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
34 | 35 | ||
diff --git a/arch/sparc/kernel/ptrace.c b/arch/sparc/kernel/ptrace.c index 5b54f11f4e59..7f44ae69b29e 100644 --- a/arch/sparc/kernel/ptrace.c +++ b/arch/sparc/kernel/ptrace.c | |||
@@ -325,7 +325,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
325 | const struct user_regset_view *view; | 325 | const struct user_regset_view *view; |
326 | int ret; | 326 | int ret; |
327 | 327 | ||
328 | view = task_user_regset_view(child); | 328 | view = task_user_regset_view(current); |
329 | 329 | ||
330 | switch(request) { | 330 | switch(request) { |
331 | case PTRACE_GETREGS: { | 331 | case PTRACE_GETREGS: { |
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 250958d1e3cb..9d4bd2229493 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc1 | 3 | # Linux kernel version: 2.6.25-rc3 |
4 | # Sun Feb 17 22:44:12 2008 | 4 | # Wed Mar 26 04:33:35 2008 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -55,9 +55,11 @@ CONFIG_POSIX_MQUEUE=y | |||
55 | # CONFIG_IKCONFIG is not set | 55 | # CONFIG_IKCONFIG is not set |
56 | CONFIG_LOG_BUF_SHIFT=18 | 56 | CONFIG_LOG_BUF_SHIFT=18 |
57 | # CONFIG_CGROUPS is not set | 57 | # CONFIG_CGROUPS is not set |
58 | CONFIG_GROUP_SCHED=y | ||
58 | CONFIG_FAIR_GROUP_SCHED=y | 59 | CONFIG_FAIR_GROUP_SCHED=y |
59 | CONFIG_FAIR_USER_SCHED=y | 60 | CONFIG_RT_GROUP_SCHED=y |
60 | # CONFIG_FAIR_CGROUP_SCHED is not set | 61 | CONFIG_USER_SCHED=y |
62 | # CONFIG_CGROUP_SCHED is not set | ||
61 | CONFIG_SYSFS_DEPRECATED=y | 63 | CONFIG_SYSFS_DEPRECATED=y |
62 | CONFIG_RELAY=y | 64 | CONFIG_RELAY=y |
63 | CONFIG_NAMESPACES=y | 65 | CONFIG_NAMESPACES=y |
@@ -482,6 +484,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
482 | # CONFIG_SCSI_IPS is not set | 484 | # CONFIG_SCSI_IPS is not set |
483 | # CONFIG_SCSI_INITIO is not set | 485 | # CONFIG_SCSI_INITIO is not set |
484 | # CONFIG_SCSI_INIA100 is not set | 486 | # CONFIG_SCSI_INIA100 is not set |
487 | # CONFIG_SCSI_MVSAS is not set | ||
485 | # CONFIG_SCSI_STEX is not set | 488 | # CONFIG_SCSI_STEX is not set |
486 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 489 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
487 | # CONFIG_SCSI_QLOGIC_1280 is not set | 490 | # CONFIG_SCSI_QLOGIC_1280 is not set |
@@ -810,6 +813,7 @@ CONFIG_HWMON=y | |||
810 | # CONFIG_SENSORS_ADM1031 is not set | 813 | # CONFIG_SENSORS_ADM1031 is not set |
811 | # CONFIG_SENSORS_ADM9240 is not set | 814 | # CONFIG_SENSORS_ADM9240 is not set |
812 | # CONFIG_SENSORS_ADT7470 is not set | 815 | # CONFIG_SENSORS_ADT7470 is not set |
816 | # CONFIG_SENSORS_ADT7473 is not set | ||
813 | # CONFIG_SENSORS_ATXP1 is not set | 817 | # CONFIG_SENSORS_ATXP1 is not set |
814 | # CONFIG_SENSORS_DS1621 is not set | 818 | # CONFIG_SENSORS_DS1621 is not set |
815 | # CONFIG_SENSORS_I5K_AMB is not set | 819 | # CONFIG_SENSORS_I5K_AMB is not set |
diff --git a/arch/sparc64/kernel/cpu.c b/arch/sparc64/kernel/cpu.c index dd5d28e3d798..0097c08dc600 100644 --- a/arch/sparc64/kernel/cpu.c +++ b/arch/sparc64/kernel/cpu.c | |||
@@ -15,6 +15,8 @@ | |||
15 | #include <asm/spitfire.h> | 15 | #include <asm/spitfire.h> |
16 | #include <asm/oplib.h> | 16 | #include <asm/oplib.h> |
17 | 17 | ||
18 | #include "entry.h" | ||
19 | |||
18 | DEFINE_PER_CPU(cpuinfo_sparc, __cpu_data) = { 0 }; | 20 | DEFINE_PER_CPU(cpuinfo_sparc, __cpu_data) = { 0 }; |
19 | 21 | ||
20 | struct cpu_iu_info { | 22 | struct cpu_iu_info { |
@@ -65,8 +67,6 @@ static struct cpu_iu_info linux_sparc_chips[] = { | |||
65 | char *sparc_cpu_type; | 67 | char *sparc_cpu_type; |
66 | char *sparc_fpu_type; | 68 | char *sparc_fpu_type; |
67 | 69 | ||
68 | unsigned int fsr_storage; | ||
69 | |||
70 | static void __init sun4v_cpu_probe(void) | 70 | static void __init sun4v_cpu_probe(void) |
71 | { | 71 | { |
72 | switch (sun4v_chip_type) { | 72 | switch (sun4v_chip_type) { |
@@ -94,8 +94,10 @@ void __init cpu_probe(void) | |||
94 | unsigned long ver, fpu_vers, manuf, impl, fprs; | 94 | unsigned long ver, fpu_vers, manuf, impl, fprs; |
95 | int i; | 95 | int i; |
96 | 96 | ||
97 | if (tlb_type == hypervisor) | 97 | if (tlb_type == hypervisor) { |
98 | return sun4v_cpu_probe(); | 98 | sun4v_cpu_probe(); |
99 | return; | ||
100 | } | ||
99 | 101 | ||
100 | fprs = fprs_read(); | 102 | fprs = fprs_read(); |
101 | fprs_write(FPRS_FEF); | 103 | fprs_write(FPRS_FEF); |
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index 6be4d2d2904e..49eca4b1cf25 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
@@ -1705,6 +1705,36 @@ __flushw_user: | |||
1705 | 2: retl | 1705 | 2: retl |
1706 | nop | 1706 | nop |
1707 | 1707 | ||
1708 | /* Flush %fp and %i7 to the stack for all register | ||
1709 | * windows active inside of the cpu. This allows | ||
1710 | * show_stack_trace() to avoid using an expensive | ||
1711 | * 'flushw'. | ||
1712 | */ | ||
1713 | .globl stack_trace_flush | ||
1714 | .type stack_trace_flush,#function | ||
1715 | stack_trace_flush: | ||
1716 | rdpr %pstate, %o0 | ||
1717 | wrpr %o0, PSTATE_IE, %pstate | ||
1718 | |||
1719 | rdpr %cwp, %g1 | ||
1720 | rdpr %canrestore, %g2 | ||
1721 | sub %g1, 1, %g3 | ||
1722 | |||
1723 | 1: brz,pn %g2, 2f | ||
1724 | sub %g2, 1, %g2 | ||
1725 | wrpr %g3, %cwp | ||
1726 | stx %fp, [%sp + STACK_BIAS + RW_V9_I6] | ||
1727 | stx %i7, [%sp + STACK_BIAS + RW_V9_I7] | ||
1728 | ba,pt %xcc, 1b | ||
1729 | sub %g3, 1, %g3 | ||
1730 | |||
1731 | 2: wrpr %g1, %cwp | ||
1732 | wrpr %o0, %pstate | ||
1733 | |||
1734 | retl | ||
1735 | nop | ||
1736 | .size stack_trace_flush,.-stack_trace_flush | ||
1737 | |||
1708 | #ifdef CONFIG_SMP | 1738 | #ifdef CONFIG_SMP |
1709 | .globl hard_smp_processor_id | 1739 | .globl hard_smp_processor_id |
1710 | hard_smp_processor_id: | 1740 | hard_smp_processor_id: |
diff --git a/arch/sparc64/kernel/entry.h b/arch/sparc64/kernel/entry.h new file mode 100644 index 000000000000..4a91e9c6d31b --- /dev/null +++ b/arch/sparc64/kernel/entry.h | |||
@@ -0,0 +1,196 @@ | |||
1 | #ifndef _ENTRY_H | ||
2 | #define _ENTRY_H | ||
3 | |||
4 | #include <linux/kernel.h> | ||
5 | #include <linux/types.h> | ||
6 | #include <linux/init.h> | ||
7 | |||
8 | extern char *sparc_cpu_type; | ||
9 | extern char *sparc_fpu_type; | ||
10 | |||
11 | extern void __init per_cpu_patch(void); | ||
12 | extern void __init sun4v_patch(void); | ||
13 | extern void __init boot_cpu_id_too_large(int cpu); | ||
14 | extern unsigned int dcache_parity_tl1_occurred; | ||
15 | extern unsigned int icache_parity_tl1_occurred; | ||
16 | |||
17 | extern asmlinkage void update_perfctrs(void); | ||
18 | extern asmlinkage void sparc_breakpoint(struct pt_regs *regs); | ||
19 | extern void timer_interrupt(int irq, struct pt_regs *regs); | ||
20 | |||
21 | extern void do_notify_resume(struct pt_regs *regs, | ||
22 | unsigned long orig_i0, | ||
23 | int restart_syscall, | ||
24 | unsigned long thread_info_flags); | ||
25 | |||
26 | extern asmlinkage void syscall_trace(struct pt_regs *regs, | ||
27 | int syscall_exit_p); | ||
28 | |||
29 | extern void bad_trap_tl1(struct pt_regs *regs, long lvl); | ||
30 | |||
31 | extern void do_fpe_common(struct pt_regs *regs); | ||
32 | extern void do_fpieee(struct pt_regs *regs); | ||
33 | extern void do_fpother(struct pt_regs *regs); | ||
34 | extern void do_tof(struct pt_regs *regs); | ||
35 | extern void do_div0(struct pt_regs *regs); | ||
36 | extern void do_illegal_instruction(struct pt_regs *regs); | ||
37 | extern void mem_address_unaligned(struct pt_regs *regs, | ||
38 | unsigned long sfar, | ||
39 | unsigned long sfsr); | ||
40 | extern void sun4v_do_mna(struct pt_regs *regs, | ||
41 | unsigned long addr, | ||
42 | unsigned long type_ctx); | ||
43 | extern void do_privop(struct pt_regs *regs); | ||
44 | extern void do_privact(struct pt_regs *regs); | ||
45 | extern void do_cee(struct pt_regs *regs); | ||
46 | extern void do_cee_tl1(struct pt_regs *regs); | ||
47 | extern void do_dae_tl1(struct pt_regs *regs); | ||
48 | extern void do_iae_tl1(struct pt_regs *regs); | ||
49 | extern void do_div0_tl1(struct pt_regs *regs); | ||
50 | extern void do_fpdis_tl1(struct pt_regs *regs); | ||
51 | extern void do_fpieee_tl1(struct pt_regs *regs); | ||
52 | extern void do_fpother_tl1(struct pt_regs *regs); | ||
53 | extern void do_ill_tl1(struct pt_regs *regs); | ||
54 | extern void do_irq_tl1(struct pt_regs *regs); | ||
55 | extern void do_lddfmna_tl1(struct pt_regs *regs); | ||
56 | extern void do_stdfmna_tl1(struct pt_regs *regs); | ||
57 | extern void do_paw(struct pt_regs *regs); | ||
58 | extern void do_paw_tl1(struct pt_regs *regs); | ||
59 | extern void do_vaw(struct pt_regs *regs); | ||
60 | extern void do_vaw_tl1(struct pt_regs *regs); | ||
61 | extern void do_tof_tl1(struct pt_regs *regs); | ||
62 | extern void do_getpsr(struct pt_regs *regs); | ||
63 | |||
64 | extern void spitfire_insn_access_exception(struct pt_regs *regs, | ||
65 | unsigned long sfsr, | ||
66 | unsigned long sfar); | ||
67 | extern void spitfire_insn_access_exception_tl1(struct pt_regs *regs, | ||
68 | unsigned long sfsr, | ||
69 | unsigned long sfar); | ||
70 | extern void spitfire_data_access_exception(struct pt_regs *regs, | ||
71 | unsigned long sfsr, | ||
72 | unsigned long sfar); | ||
73 | extern void spitfire_data_access_exception_tl1(struct pt_regs *regs, | ||
74 | unsigned long sfsr, | ||
75 | unsigned long sfar); | ||
76 | extern void spitfire_access_error(struct pt_regs *regs, | ||
77 | unsigned long status_encoded, | ||
78 | unsigned long afar); | ||
79 | |||
80 | extern void cheetah_fecc_handler(struct pt_regs *regs, | ||
81 | unsigned long afsr, | ||
82 | unsigned long afar); | ||
83 | extern void cheetah_cee_handler(struct pt_regs *regs, | ||
84 | unsigned long afsr, | ||
85 | unsigned long afar); | ||
86 | extern void cheetah_deferred_handler(struct pt_regs *regs, | ||
87 | unsigned long afsr, | ||
88 | unsigned long afar); | ||
89 | extern void cheetah_plus_parity_error(int type, struct pt_regs *regs); | ||
90 | |||
91 | extern void sun4v_insn_access_exception(struct pt_regs *regs, | ||
92 | unsigned long addr, | ||
93 | unsigned long type_ctx); | ||
94 | extern void sun4v_insn_access_exception_tl1(struct pt_regs *regs, | ||
95 | unsigned long addr, | ||
96 | unsigned long type_ctx); | ||
97 | extern void sun4v_data_access_exception(struct pt_regs *regs, | ||
98 | unsigned long addr, | ||
99 | unsigned long type_ctx); | ||
100 | extern void sun4v_data_access_exception_tl1(struct pt_regs *regs, | ||
101 | unsigned long addr, | ||
102 | unsigned long type_ctx); | ||
103 | extern void sun4v_resum_error(struct pt_regs *regs, | ||
104 | unsigned long offset); | ||
105 | extern void sun4v_resum_overflow(struct pt_regs *regs); | ||
106 | extern void sun4v_nonresum_error(struct pt_regs *regs, | ||
107 | unsigned long offset); | ||
108 | extern void sun4v_nonresum_overflow(struct pt_regs *regs); | ||
109 | |||
110 | extern unsigned long sun4v_err_itlb_vaddr; | ||
111 | extern unsigned long sun4v_err_itlb_ctx; | ||
112 | extern unsigned long sun4v_err_itlb_pte; | ||
113 | extern unsigned long sun4v_err_itlb_error; | ||
114 | |||
115 | extern void sun4v_itlb_error_report(struct pt_regs *regs, int tl); | ||
116 | |||
117 | extern unsigned long sun4v_err_dtlb_vaddr; | ||
118 | extern unsigned long sun4v_err_dtlb_ctx; | ||
119 | extern unsigned long sun4v_err_dtlb_pte; | ||
120 | extern unsigned long sun4v_err_dtlb_error; | ||
121 | |||
122 | extern void sun4v_dtlb_error_report(struct pt_regs *regs, int tl); | ||
123 | extern void hypervisor_tlbop_error(unsigned long err, | ||
124 | unsigned long op); | ||
125 | extern void hypervisor_tlbop_error_xcall(unsigned long err, | ||
126 | unsigned long op); | ||
127 | |||
128 | /* WARNING: The error trap handlers in assembly know the precise | ||
129 | * layout of the following structure. | ||
130 | * | ||
131 | * C-level handlers in traps.c use this information to log the | ||
132 | * error and then determine how to recover (if possible). | ||
133 | */ | ||
134 | struct cheetah_err_info { | ||
135 | /*0x00*/u64 afsr; | ||
136 | /*0x08*/u64 afar; | ||
137 | |||
138 | /* D-cache state */ | ||
139 | /*0x10*/u64 dcache_data[4]; /* The actual data */ | ||
140 | /*0x30*/u64 dcache_index; /* D-cache index */ | ||
141 | /*0x38*/u64 dcache_tag; /* D-cache tag/valid */ | ||
142 | /*0x40*/u64 dcache_utag; /* D-cache microtag */ | ||
143 | /*0x48*/u64 dcache_stag; /* D-cache snooptag */ | ||
144 | |||
145 | /* I-cache state */ | ||
146 | /*0x50*/u64 icache_data[8]; /* The actual insns + predecode */ | ||
147 | /*0x90*/u64 icache_index; /* I-cache index */ | ||
148 | /*0x98*/u64 icache_tag; /* I-cache phys tag */ | ||
149 | /*0xa0*/u64 icache_utag; /* I-cache microtag */ | ||
150 | /*0xa8*/u64 icache_stag; /* I-cache snooptag */ | ||
151 | /*0xb0*/u64 icache_upper; /* I-cache upper-tag */ | ||
152 | /*0xb8*/u64 icache_lower; /* I-cache lower-tag */ | ||
153 | |||
154 | /* E-cache state */ | ||
155 | /*0xc0*/u64 ecache_data[4]; /* 32 bytes from staging registers */ | ||
156 | /*0xe0*/u64 ecache_index; /* E-cache index */ | ||
157 | /*0xe8*/u64 ecache_tag; /* E-cache tag/state */ | ||
158 | |||
159 | /*0xf0*/u64 __pad[32 - 30]; | ||
160 | }; | ||
161 | #define CHAFSR_INVALID ((u64)-1L) | ||
162 | |||
163 | /* This is allocated at boot time based upon the largest hardware | ||
164 | * cpu ID in the system. We allocate two entries per cpu, one for | ||
165 | * TL==0 logging and one for TL >= 1 logging. | ||
166 | */ | ||
167 | extern struct cheetah_err_info *cheetah_error_log; | ||
168 | |||
169 | /* UPA nodes send interrupt packet to UltraSparc with first data reg | ||
170 | * value low 5 (7 on Starfire) bits holding the IRQ identifier being | ||
171 | * delivered. We must translate this into a non-vector IRQ so we can | ||
172 | * set the softint on this cpu. | ||
173 | * | ||
174 | * To make processing these packets efficient and race free we use | ||
175 | * an array of irq buckets below. The interrupt vector handler in | ||
176 | * entry.S feeds incoming packets into per-cpu pil-indexed lists. | ||
177 | * | ||
178 | * If you make changes to ino_bucket, please update hand coded assembler | ||
179 | * of the vectored interrupt trap handler(s) in entry.S and sun4v_ivec.S | ||
180 | */ | ||
181 | struct ino_bucket { | ||
182 | /*0x00*/unsigned long __irq_chain_pa; | ||
183 | |||
184 | /* Virtual interrupt number assigned to this INO. */ | ||
185 | /*0x08*/unsigned int __virt_irq; | ||
186 | /*0x0c*/unsigned int __pad; | ||
187 | }; | ||
188 | |||
189 | extern struct ino_bucket *ivector_table; | ||
190 | extern unsigned long ivector_table_pa; | ||
191 | |||
192 | extern void handler_irq(int irq, struct pt_regs *regs); | ||
193 | extern void init_irqwork_curcpu(void); | ||
194 | extern void __cpuinit sun4v_register_mondo_queues(int this_cpu); | ||
195 | |||
196 | #endif /* _ENTRY_H */ | ||
diff --git a/arch/sparc64/kernel/iommu.c b/arch/sparc64/kernel/iommu.c index fbaab3497bfd..756fa24eeefa 100644 --- a/arch/sparc64/kernel/iommu.c +++ b/arch/sparc64/kernel/iommu.c | |||
@@ -516,9 +516,11 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist, | |||
516 | unsigned long flags, handle, prot, ctx; | 516 | unsigned long flags, handle, prot, ctx; |
517 | dma_addr_t dma_next = 0, dma_addr; | 517 | dma_addr_t dma_next = 0, dma_addr; |
518 | unsigned int max_seg_size; | 518 | unsigned int max_seg_size; |
519 | unsigned long seg_boundary_size; | ||
519 | int outcount, incount, i; | 520 | int outcount, incount, i; |
520 | struct strbuf *strbuf; | 521 | struct strbuf *strbuf; |
521 | struct iommu *iommu; | 522 | struct iommu *iommu; |
523 | unsigned long base_shift; | ||
522 | 524 | ||
523 | BUG_ON(direction == DMA_NONE); | 525 | BUG_ON(direction == DMA_NONE); |
524 | 526 | ||
@@ -549,8 +551,11 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist, | |||
549 | outs->dma_length = 0; | 551 | outs->dma_length = 0; |
550 | 552 | ||
551 | max_seg_size = dma_get_max_seg_size(dev); | 553 | max_seg_size = dma_get_max_seg_size(dev); |
554 | seg_boundary_size = ALIGN(dma_get_seg_boundary(dev) + 1, | ||
555 | IO_PAGE_SIZE) >> IO_PAGE_SHIFT; | ||
556 | base_shift = iommu->page_table_map_base >> IO_PAGE_SHIFT; | ||
552 | for_each_sg(sglist, s, nelems, i) { | 557 | for_each_sg(sglist, s, nelems, i) { |
553 | unsigned long paddr, npages, entry, slen; | 558 | unsigned long paddr, npages, entry, out_entry = 0, slen; |
554 | iopte_t *base; | 559 | iopte_t *base; |
555 | 560 | ||
556 | slen = s->length; | 561 | slen = s->length; |
@@ -593,7 +598,9 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist, | |||
593 | * - allocated dma_addr isn't contiguous to previous allocation | 598 | * - allocated dma_addr isn't contiguous to previous allocation |
594 | */ | 599 | */ |
595 | if ((dma_addr != dma_next) || | 600 | if ((dma_addr != dma_next) || |
596 | (outs->dma_length + s->length > max_seg_size)) { | 601 | (outs->dma_length + s->length > max_seg_size) || |
602 | (is_span_boundary(out_entry, base_shift, | ||
603 | seg_boundary_size, outs, s))) { | ||
597 | /* Can't merge: create a new segment */ | 604 | /* Can't merge: create a new segment */ |
598 | segstart = s; | 605 | segstart = s; |
599 | outcount++; | 606 | outcount++; |
@@ -607,6 +614,7 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist, | |||
607 | /* This is a new segment, fill entries */ | 614 | /* This is a new segment, fill entries */ |
608 | outs->dma_address = dma_addr; | 615 | outs->dma_address = dma_addr; |
609 | outs->dma_length = slen; | 616 | outs->dma_length = slen; |
617 | out_entry = entry; | ||
610 | } | 618 | } |
611 | 619 | ||
612 | /* Calculate next page pointer for contiguous check */ | 620 | /* Calculate next page pointer for contiguous check */ |
@@ -626,7 +634,7 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist, | |||
626 | iommu_map_failed: | 634 | iommu_map_failed: |
627 | for_each_sg(sglist, s, nelems, i) { | 635 | for_each_sg(sglist, s, nelems, i) { |
628 | if (s->dma_length != 0) { | 636 | if (s->dma_length != 0) { |
629 | unsigned long vaddr, npages, entry, i; | 637 | unsigned long vaddr, npages, entry, j; |
630 | iopte_t *base; | 638 | iopte_t *base; |
631 | 639 | ||
632 | vaddr = s->dma_address & IO_PAGE_MASK; | 640 | vaddr = s->dma_address & IO_PAGE_MASK; |
@@ -637,8 +645,8 @@ iommu_map_failed: | |||
637 | >> IO_PAGE_SHIFT; | 645 | >> IO_PAGE_SHIFT; |
638 | base = iommu->page_table + entry; | 646 | base = iommu->page_table + entry; |
639 | 647 | ||
640 | for (i = 0; i < npages; i++) | 648 | for (j = 0; j < npages; j++) |
641 | iopte_make_dummy(iommu, base + i); | 649 | iopte_make_dummy(iommu, base + j); |
642 | 650 | ||
643 | s->dma_address = DMA_ERROR_CODE; | 651 | s->dma_address = DMA_ERROR_CODE; |
644 | s->dma_length = 0; | 652 | s->dma_length = 0; |
@@ -803,7 +811,7 @@ static void dma_4u_sync_sg_for_cpu(struct device *dev, | |||
803 | spin_unlock_irqrestore(&iommu->lock, flags); | 811 | spin_unlock_irqrestore(&iommu->lock, flags); |
804 | } | 812 | } |
805 | 813 | ||
806 | const struct dma_ops sun4u_dma_ops = { | 814 | static const struct dma_ops sun4u_dma_ops = { |
807 | .alloc_coherent = dma_4u_alloc_coherent, | 815 | .alloc_coherent = dma_4u_alloc_coherent, |
808 | .free_coherent = dma_4u_free_coherent, | 816 | .free_coherent = dma_4u_free_coherent, |
809 | .map_single = dma_4u_map_single, | 817 | .map_single = dma_4u_map_single, |
diff --git a/arch/sparc64/kernel/iommu_common.h b/arch/sparc64/kernel/iommu_common.h index 0713bd58499c..f3575a614fa2 100644 --- a/arch/sparc64/kernel/iommu_common.h +++ b/arch/sparc64/kernel/iommu_common.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <linux/scatterlist.h> | 13 | #include <linux/scatterlist.h> |
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/iommu-helper.h> | ||
15 | 16 | ||
16 | #include <asm/iommu.h> | 17 | #include <asm/iommu.h> |
17 | #include <asm/scatterlist.h> | 18 | #include <asm/scatterlist.h> |
@@ -45,17 +46,16 @@ static inline unsigned long iommu_num_pages(unsigned long vaddr, | |||
45 | return npages; | 46 | return npages; |
46 | } | 47 | } |
47 | 48 | ||
48 | static inline unsigned long calc_npages(struct scatterlist *sglist, int nelems) | 49 | static inline int is_span_boundary(unsigned long entry, |
50 | unsigned long shift, | ||
51 | unsigned long boundary_size, | ||
52 | struct scatterlist *outs, | ||
53 | struct scatterlist *sg) | ||
49 | { | 54 | { |
50 | unsigned long i, npages = 0; | 55 | unsigned long paddr = SG_ENT_PHYS_ADDRESS(outs); |
51 | struct scatterlist *sg; | 56 | int nr = iommu_num_pages(paddr, outs->dma_length + sg->length); |
52 | 57 | ||
53 | for_each_sg(sglist, sg, nelems, i) { | 58 | return iommu_is_span_boundary(entry, nr, shift, boundary_size); |
54 | unsigned long paddr = SG_ENT_PHYS_ADDRESS(sg); | ||
55 | npages += iommu_num_pages(paddr, sg->length); | ||
56 | } | ||
57 | |||
58 | return npages; | ||
59 | } | 59 | } |
60 | 60 | ||
61 | extern unsigned long iommu_range_alloc(struct device *dev, | 61 | extern unsigned long iommu_range_alloc(struct device *dev, |
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index 5ec06c8c7fea..eb88bd6e674e 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -44,27 +44,10 @@ | |||
44 | #include <asm/hypervisor.h> | 44 | #include <asm/hypervisor.h> |
45 | #include <asm/cacheflush.h> | 45 | #include <asm/cacheflush.h> |
46 | 46 | ||
47 | /* UPA nodes send interrupt packet to UltraSparc with first data reg | 47 | #include "entry.h" |
48 | * value low 5 (7 on Starfire) bits holding the IRQ identifier being | ||
49 | * delivered. We must translate this into a non-vector IRQ so we can | ||
50 | * set the softint on this cpu. | ||
51 | * | ||
52 | * To make processing these packets efficient and race free we use | ||
53 | * an array of irq buckets below. The interrupt vector handler in | ||
54 | * entry.S feeds incoming packets into per-cpu pil-indexed lists. | ||
55 | * | ||
56 | * If you make changes to ino_bucket, please update hand coded assembler | ||
57 | * of the vectored interrupt trap handler(s) in entry.S and sun4v_ivec.S | ||
58 | */ | ||
59 | struct ino_bucket { | ||
60 | /*0x00*/unsigned long __irq_chain_pa; | ||
61 | |||
62 | /* Virtual interrupt number assigned to this INO. */ | ||
63 | /*0x08*/unsigned int __virt_irq; | ||
64 | /*0x0c*/unsigned int __pad; | ||
65 | }; | ||
66 | 48 | ||
67 | #define NUM_IVECS (IMAP_INR + 1) | 49 | #define NUM_IVECS (IMAP_INR + 1) |
50 | |||
68 | struct ino_bucket *ivector_table; | 51 | struct ino_bucket *ivector_table; |
69 | unsigned long ivector_table_pa; | 52 | unsigned long ivector_table_pa; |
70 | 53 | ||
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c index ddca6c6c0b49..01839706bd52 100644 --- a/arch/sparc64/kernel/pci_sun4v.c +++ b/arch/sparc64/kernel/pci_sun4v.c | |||
@@ -335,8 +335,10 @@ static int dma_4v_map_sg(struct device *dev, struct scatterlist *sglist, | |||
335 | unsigned long flags, handle, prot; | 335 | unsigned long flags, handle, prot; |
336 | dma_addr_t dma_next = 0, dma_addr; | 336 | dma_addr_t dma_next = 0, dma_addr; |
337 | unsigned int max_seg_size; | 337 | unsigned int max_seg_size; |
338 | unsigned long seg_boundary_size; | ||
338 | int outcount, incount, i; | 339 | int outcount, incount, i; |
339 | struct iommu *iommu; | 340 | struct iommu *iommu; |
341 | unsigned long base_shift; | ||
340 | long err; | 342 | long err; |
341 | 343 | ||
342 | BUG_ON(direction == DMA_NONE); | 344 | BUG_ON(direction == DMA_NONE); |
@@ -362,8 +364,11 @@ static int dma_4v_map_sg(struct device *dev, struct scatterlist *sglist, | |||
362 | iommu_batch_start(dev, prot, ~0UL); | 364 | iommu_batch_start(dev, prot, ~0UL); |
363 | 365 | ||
364 | max_seg_size = dma_get_max_seg_size(dev); | 366 | max_seg_size = dma_get_max_seg_size(dev); |
367 | seg_boundary_size = ALIGN(dma_get_seg_boundary(dev) + 1, | ||
368 | IO_PAGE_SIZE) >> IO_PAGE_SHIFT; | ||
369 | base_shift = iommu->page_table_map_base >> IO_PAGE_SHIFT; | ||
365 | for_each_sg(sglist, s, nelems, i) { | 370 | for_each_sg(sglist, s, nelems, i) { |
366 | unsigned long paddr, npages, entry, slen; | 371 | unsigned long paddr, npages, entry, out_entry = 0, slen; |
367 | 372 | ||
368 | slen = s->length; | 373 | slen = s->length; |
369 | /* Sanity check */ | 374 | /* Sanity check */ |
@@ -406,7 +411,9 @@ static int dma_4v_map_sg(struct device *dev, struct scatterlist *sglist, | |||
406 | * - allocated dma_addr isn't contiguous to previous allocation | 411 | * - allocated dma_addr isn't contiguous to previous allocation |
407 | */ | 412 | */ |
408 | if ((dma_addr != dma_next) || | 413 | if ((dma_addr != dma_next) || |
409 | (outs->dma_length + s->length > max_seg_size)) { | 414 | (outs->dma_length + s->length > max_seg_size) || |
415 | (is_span_boundary(out_entry, base_shift, | ||
416 | seg_boundary_size, outs, s))) { | ||
410 | /* Can't merge: create a new segment */ | 417 | /* Can't merge: create a new segment */ |
411 | segstart = s; | 418 | segstart = s; |
412 | outcount++; | 419 | outcount++; |
@@ -420,6 +427,7 @@ static int dma_4v_map_sg(struct device *dev, struct scatterlist *sglist, | |||
420 | /* This is a new segment, fill entries */ | 427 | /* This is a new segment, fill entries */ |
421 | outs->dma_address = dma_addr; | 428 | outs->dma_address = dma_addr; |
422 | outs->dma_length = slen; | 429 | outs->dma_length = slen; |
430 | out_entry = entry; | ||
423 | } | 431 | } |
424 | 432 | ||
425 | /* Calculate next page pointer for contiguous check */ | 433 | /* Calculate next page pointer for contiguous check */ |
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c index 9a1ba1fe859d..e9fc0aa2da38 100644 --- a/arch/sparc64/kernel/ptrace.c +++ b/arch/sparc64/kernel/ptrace.c | |||
@@ -35,6 +35,9 @@ | |||
35 | #include <asm/spitfire.h> | 35 | #include <asm/spitfire.h> |
36 | #include <asm/page.h> | 36 | #include <asm/page.h> |
37 | #include <asm/cpudata.h> | 37 | #include <asm/cpudata.h> |
38 | #include <asm/cacheflush.h> | ||
39 | |||
40 | #include "entry.h" | ||
38 | 41 | ||
39 | /* #define ALLOW_INIT_TRACING */ | 42 | /* #define ALLOW_INIT_TRACING */ |
40 | 43 | ||
@@ -67,6 +70,8 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, | |||
67 | if (tlb_type == hypervisor) | 70 | if (tlb_type == hypervisor) |
68 | return; | 71 | return; |
69 | 72 | ||
73 | preempt_disable(); | ||
74 | |||
70 | #ifdef DCACHE_ALIASING_POSSIBLE | 75 | #ifdef DCACHE_ALIASING_POSSIBLE |
71 | /* If bit 13 of the kernel address we used to access the | 76 | /* If bit 13 of the kernel address we used to access the |
72 | * user page is the same as the virtual address that page | 77 | * user page is the same as the virtual address that page |
@@ -105,6 +110,87 @@ void flush_ptrace_access(struct vm_area_struct *vma, struct page *page, | |||
105 | for (; start < end; start += icache_line_size) | 110 | for (; start < end; start += icache_line_size) |
106 | flushi(start); | 111 | flushi(start); |
107 | } | 112 | } |
113 | |||
114 | preempt_enable(); | ||
115 | } | ||
116 | |||
117 | static int get_from_target(struct task_struct *target, unsigned long uaddr, | ||
118 | void *kbuf, int len) | ||
119 | { | ||
120 | if (target == current) { | ||
121 | if (copy_from_user(kbuf, (void __user *) uaddr, len)) | ||
122 | return -EFAULT; | ||
123 | } else { | ||
124 | int len2 = access_process_vm(target, uaddr, kbuf, len, 0); | ||
125 | if (len2 != len) | ||
126 | return -EFAULT; | ||
127 | } | ||
128 | return 0; | ||
129 | } | ||
130 | |||
131 | static int set_to_target(struct task_struct *target, unsigned long uaddr, | ||
132 | void *kbuf, int len) | ||
133 | { | ||
134 | if (target == current) { | ||
135 | if (copy_to_user((void __user *) uaddr, kbuf, len)) | ||
136 | return -EFAULT; | ||
137 | } else { | ||
138 | int len2 = access_process_vm(target, uaddr, kbuf, len, 1); | ||
139 | if (len2 != len) | ||
140 | return -EFAULT; | ||
141 | } | ||
142 | return 0; | ||
143 | } | ||
144 | |||
145 | static int regwindow64_get(struct task_struct *target, | ||
146 | const struct pt_regs *regs, | ||
147 | struct reg_window *wbuf) | ||
148 | { | ||
149 | unsigned long rw_addr = regs->u_regs[UREG_I6]; | ||
150 | |||
151 | if (test_tsk_thread_flag(current, TIF_32BIT)) { | ||
152 | struct reg_window32 win32; | ||
153 | int i; | ||
154 | |||
155 | if (get_from_target(target, rw_addr, &win32, sizeof(win32))) | ||
156 | return -EFAULT; | ||
157 | for (i = 0; i < 8; i++) | ||
158 | wbuf->locals[i] = win32.locals[i]; | ||
159 | for (i = 0; i < 8; i++) | ||
160 | wbuf->ins[i] = win32.ins[i]; | ||
161 | } else { | ||
162 | rw_addr += STACK_BIAS; | ||
163 | if (get_from_target(target, rw_addr, wbuf, sizeof(*wbuf))) | ||
164 | return -EFAULT; | ||
165 | } | ||
166 | |||
167 | return 0; | ||
168 | } | ||
169 | |||
170 | static int regwindow64_set(struct task_struct *target, | ||
171 | const struct pt_regs *regs, | ||
172 | struct reg_window *wbuf) | ||
173 | { | ||
174 | unsigned long rw_addr = regs->u_regs[UREG_I6]; | ||
175 | |||
176 | if (test_tsk_thread_flag(current, TIF_32BIT)) { | ||
177 | struct reg_window32 win32; | ||
178 | int i; | ||
179 | |||
180 | for (i = 0; i < 8; i++) | ||
181 | win32.locals[i] = wbuf->locals[i]; | ||
182 | for (i = 0; i < 8; i++) | ||
183 | win32.ins[i] = wbuf->ins[i]; | ||
184 | |||
185 | if (set_to_target(target, rw_addr, &win32, sizeof(win32))) | ||
186 | return -EFAULT; | ||
187 | } else { | ||
188 | rw_addr += STACK_BIAS; | ||
189 | if (set_to_target(target, rw_addr, wbuf, sizeof(*wbuf))) | ||
190 | return -EFAULT; | ||
191 | } | ||
192 | |||
193 | return 0; | ||
108 | } | 194 | } |
109 | 195 | ||
110 | enum sparc_regset { | 196 | enum sparc_regset { |
@@ -126,16 +212,13 @@ static int genregs64_get(struct task_struct *target, | |||
126 | ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, | 212 | ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, |
127 | regs->u_regs, | 213 | regs->u_regs, |
128 | 0, 16 * sizeof(u64)); | 214 | 0, 16 * sizeof(u64)); |
129 | if (!ret) { | 215 | if (!ret && count && pos < (32 * sizeof(u64))) { |
130 | unsigned long __user *reg_window = (unsigned long __user *) | 216 | struct reg_window window; |
131 | (regs->u_regs[UREG_I6] + STACK_BIAS); | ||
132 | unsigned long window[16]; | ||
133 | 217 | ||
134 | if (copy_from_user(window, reg_window, sizeof(window))) | 218 | if (regwindow64_get(target, regs, &window)) |
135 | return -EFAULT; | 219 | return -EFAULT; |
136 | |||
137 | ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, | 220 | ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf, |
138 | window, | 221 | &window, |
139 | 16 * sizeof(u64), | 222 | 16 * sizeof(u64), |
140 | 32 * sizeof(u64)); | 223 | 32 * sizeof(u64)); |
141 | } | 224 | } |
@@ -157,10 +240,11 @@ static int genregs64_get(struct task_struct *target, | |||
157 | 36 * sizeof(u64)); | 240 | 36 * sizeof(u64)); |
158 | } | 241 | } |
159 | 242 | ||
160 | if (!ret) | 243 | if (!ret) { |
161 | ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf, | 244 | ret = user_regset_copyout_zero(&pos, &count, &kbuf, &ubuf, |
162 | 36 * sizeof(u64), -1); | 245 | 36 * sizeof(u64), -1); |
163 | 246 | ||
247 | } | ||
164 | return ret; | 248 | return ret; |
165 | } | 249 | } |
166 | 250 | ||
@@ -178,20 +262,19 @@ static int genregs64_set(struct task_struct *target, | |||
178 | ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, | 262 | ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, |
179 | regs->u_regs, | 263 | regs->u_regs, |
180 | 0, 16 * sizeof(u64)); | 264 | 0, 16 * sizeof(u64)); |
181 | if (!ret && count > 0) { | 265 | if (!ret && count && pos < (32 * sizeof(u64))) { |
182 | unsigned long __user *reg_window = (unsigned long __user *) | 266 | struct reg_window window; |
183 | (regs->u_regs[UREG_I6] + STACK_BIAS); | ||
184 | unsigned long window[16]; | ||
185 | 267 | ||
186 | if (copy_from_user(window, reg_window, sizeof(window))) | 268 | if (regwindow64_get(target, regs, &window)) |
187 | return -EFAULT; | 269 | return -EFAULT; |
188 | 270 | ||
189 | ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, | 271 | ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, |
190 | window, | 272 | &window, |
191 | 16 * sizeof(u64), | 273 | 16 * sizeof(u64), |
192 | 32 * sizeof(u64)); | 274 | 32 * sizeof(u64)); |
275 | |||
193 | if (!ret && | 276 | if (!ret && |
194 | copy_to_user(reg_window, window, sizeof(window))) | 277 | regwindow64_set(target, regs, &window)) |
195 | return -EFAULT; | 278 | return -EFAULT; |
196 | } | 279 | } |
197 | 280 | ||
@@ -382,6 +465,7 @@ static const struct user_regset_view user_sparc64_view = { | |||
382 | .regsets = sparc64_regsets, .n = ARRAY_SIZE(sparc64_regsets) | 465 | .regsets = sparc64_regsets, .n = ARRAY_SIZE(sparc64_regsets) |
383 | }; | 466 | }; |
384 | 467 | ||
468 | #ifdef CONFIG_COMPAT | ||
385 | static int genregs32_get(struct task_struct *target, | 469 | static int genregs32_get(struct task_struct *target, |
386 | const struct user_regset *regset, | 470 | const struct user_regset *regset, |
387 | unsigned int pos, unsigned int count, | 471 | unsigned int pos, unsigned int count, |
@@ -404,9 +488,22 @@ static int genregs32_get(struct task_struct *target, | |||
404 | *k++ = regs->u_regs[pos++]; | 488 | *k++ = regs->u_regs[pos++]; |
405 | 489 | ||
406 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; | 490 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; |
407 | for (; count > 0 && pos < 32; count--) { | 491 | if (target == current) { |
408 | if (get_user(*k++, ®_window[pos++])) | 492 | for (; count > 0 && pos < 32; count--) { |
409 | return -EFAULT; | 493 | if (get_user(*k++, ®_window[pos++])) |
494 | return -EFAULT; | ||
495 | } | ||
496 | } else { | ||
497 | for (; count > 0 && pos < 32; count--) { | ||
498 | if (access_process_vm(target, | ||
499 | (unsigned long) | ||
500 | ®_window[pos], | ||
501 | k, sizeof(*k), 0) | ||
502 | != sizeof(*k)) | ||
503 | return -EFAULT; | ||
504 | k++; | ||
505 | pos++; | ||
506 | } | ||
410 | } | 507 | } |
411 | } else { | 508 | } else { |
412 | for (; count > 0 && pos < 16; count--) { | 509 | for (; count > 0 && pos < 16; count--) { |
@@ -415,10 +512,28 @@ static int genregs32_get(struct task_struct *target, | |||
415 | } | 512 | } |
416 | 513 | ||
417 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; | 514 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; |
418 | for (; count > 0 && pos < 32; count--) { | 515 | if (target == current) { |
419 | if (get_user(reg, ®_window[pos++]) || | 516 | for (; count > 0 && pos < 32; count--) { |
420 | put_user(reg, u++)) | 517 | if (get_user(reg, ®_window[pos++]) || |
421 | return -EFAULT; | 518 | put_user(reg, u++)) |
519 | return -EFAULT; | ||
520 | } | ||
521 | } else { | ||
522 | for (; count > 0 && pos < 32; count--) { | ||
523 | if (access_process_vm(target, | ||
524 | (unsigned long) | ||
525 | ®_window[pos], | ||
526 | ®, sizeof(reg), 0) | ||
527 | != sizeof(reg)) | ||
528 | return -EFAULT; | ||
529 | if (access_process_vm(target, | ||
530 | (unsigned long) u, | ||
531 | ®, sizeof(reg), 1) | ||
532 | != sizeof(reg)) | ||
533 | return -EFAULT; | ||
534 | pos++; | ||
535 | u++; | ||
536 | } | ||
422 | } | 537 | } |
423 | } | 538 | } |
424 | while (count > 0) { | 539 | while (count > 0) { |
@@ -480,9 +595,23 @@ static int genregs32_set(struct task_struct *target, | |||
480 | regs->u_regs[pos++] = *k++; | 595 | regs->u_regs[pos++] = *k++; |
481 | 596 | ||
482 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; | 597 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; |
483 | for (; count > 0 && pos < 32; count--) { | 598 | if (target == current) { |
484 | if (put_user(*k++, ®_window[pos++])) | 599 | for (; count > 0 && pos < 32; count--) { |
485 | return -EFAULT; | 600 | if (put_user(*k++, ®_window[pos++])) |
601 | return -EFAULT; | ||
602 | } | ||
603 | } else { | ||
604 | for (; count > 0 && pos < 32; count--) { | ||
605 | if (access_process_vm(target, | ||
606 | (unsigned long) | ||
607 | ®_window[pos], | ||
608 | (void *) k, | ||
609 | sizeof(*k), 1) | ||
610 | != sizeof(*k)) | ||
611 | return -EFAULT; | ||
612 | k++; | ||
613 | pos++; | ||
614 | } | ||
486 | } | 615 | } |
487 | } else { | 616 | } else { |
488 | for (; count > 0 && pos < 16; count--) { | 617 | for (; count > 0 && pos < 16; count--) { |
@@ -492,10 +621,29 @@ static int genregs32_set(struct task_struct *target, | |||
492 | } | 621 | } |
493 | 622 | ||
494 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; | 623 | reg_window = (compat_ulong_t __user *) regs->u_regs[UREG_I6]; |
495 | for (; count > 0 && pos < 32; count--) { | 624 | if (target == current) { |
496 | if (get_user(reg, u++) || | 625 | for (; count > 0 && pos < 32; count--) { |
497 | put_user(reg, ®_window[pos++])) | 626 | if (get_user(reg, u++) || |
498 | return -EFAULT; | 627 | put_user(reg, ®_window[pos++])) |
628 | return -EFAULT; | ||
629 | } | ||
630 | } else { | ||
631 | for (; count > 0 && pos < 32; count--) { | ||
632 | if (access_process_vm(target, | ||
633 | (unsigned long) | ||
634 | u, | ||
635 | ®, sizeof(reg), 0) | ||
636 | != sizeof(reg)) | ||
637 | return -EFAULT; | ||
638 | if (access_process_vm(target, | ||
639 | (unsigned long) | ||
640 | ®_window[pos], | ||
641 | ®, sizeof(reg), 1) | ||
642 | != sizeof(reg)) | ||
643 | return -EFAULT; | ||
644 | pos++; | ||
645 | u++; | ||
646 | } | ||
499 | } | 647 | } |
500 | } | 648 | } |
501 | while (count > 0) { | 649 | while (count > 0) { |
@@ -676,14 +824,18 @@ static const struct user_regset_view user_sparc32_view = { | |||
676 | .name = "sparc", .e_machine = EM_SPARC, | 824 | .name = "sparc", .e_machine = EM_SPARC, |
677 | .regsets = sparc32_regsets, .n = ARRAY_SIZE(sparc32_regsets) | 825 | .regsets = sparc32_regsets, .n = ARRAY_SIZE(sparc32_regsets) |
678 | }; | 826 | }; |
827 | #endif /* CONFIG_COMPAT */ | ||
679 | 828 | ||
680 | const struct user_regset_view *task_user_regset_view(struct task_struct *task) | 829 | const struct user_regset_view *task_user_regset_view(struct task_struct *task) |
681 | { | 830 | { |
831 | #ifdef CONFIG_COMPAT | ||
682 | if (test_tsk_thread_flag(task, TIF_32BIT)) | 832 | if (test_tsk_thread_flag(task, TIF_32BIT)) |
683 | return &user_sparc32_view; | 833 | return &user_sparc32_view; |
834 | #endif | ||
684 | return &user_sparc64_view; | 835 | return &user_sparc64_view; |
685 | } | 836 | } |
686 | 837 | ||
838 | #ifdef CONFIG_COMPAT | ||
687 | struct compat_fps { | 839 | struct compat_fps { |
688 | unsigned int regs[32]; | 840 | unsigned int regs[32]; |
689 | unsigned int fsr; | 841 | unsigned int fsr; |
@@ -699,7 +851,7 @@ struct compat_fps { | |||
699 | long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | 851 | long compat_arch_ptrace(struct task_struct *child, compat_long_t request, |
700 | compat_ulong_t caddr, compat_ulong_t cdata) | 852 | compat_ulong_t caddr, compat_ulong_t cdata) |
701 | { | 853 | { |
702 | const struct user_regset_view *view = task_user_regset_view(child); | 854 | const struct user_regset_view *view = task_user_regset_view(current); |
703 | compat_ulong_t caddr2 = task_pt_regs(current)->u_regs[UREG_I4]; | 855 | compat_ulong_t caddr2 = task_pt_regs(current)->u_regs[UREG_I4]; |
704 | struct pt_regs32 __user *pregs; | 856 | struct pt_regs32 __user *pregs; |
705 | struct compat_fps __user *fps; | 857 | struct compat_fps __user *fps; |
@@ -798,6 +950,7 @@ long compat_arch_ptrace(struct task_struct *child, compat_long_t request, | |||
798 | 950 | ||
799 | return ret; | 951 | return ret; |
800 | } | 952 | } |
953 | #endif /* CONFIG_COMPAT */ | ||
801 | 954 | ||
802 | struct fps { | 955 | struct fps { |
803 | unsigned int regs[64]; | 956 | unsigned int regs[64]; |
@@ -806,12 +959,15 @@ struct fps { | |||
806 | 959 | ||
807 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 960 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) |
808 | { | 961 | { |
809 | const struct user_regset_view *view = task_user_regset_view(child); | 962 | const struct user_regset_view *view = task_user_regset_view(current); |
810 | struct pt_regs __user *pregs = (struct pt_regs __user *) addr; | ||
811 | unsigned long addr2 = task_pt_regs(current)->u_regs[UREG_I4]; | 963 | unsigned long addr2 = task_pt_regs(current)->u_regs[UREG_I4]; |
812 | struct fps __user *fps = (struct fps __user *) addr; | 964 | struct pt_regs __user *pregs; |
965 | struct fps __user *fps; | ||
813 | int ret; | 966 | int ret; |
814 | 967 | ||
968 | pregs = (struct pt_regs __user *) (unsigned long) addr; | ||
969 | fps = (struct fps __user *) (unsigned long) addr; | ||
970 | |||
815 | switch (request) { | 971 | switch (request) { |
816 | case PTRACE_PEEKUSR: | 972 | case PTRACE_PEEKUSR: |
817 | ret = (addr != 0) ? -EIO : 0; | 973 | ret = (addr != 0) ? -EIO : 0; |
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index d036dbe72864..6acb4c51cfe4 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c | |||
@@ -51,6 +51,8 @@ | |||
51 | #include <net/ipconfig.h> | 51 | #include <net/ipconfig.h> |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | #include "entry.h" | ||
55 | |||
54 | /* Used to synchronize accesses to NatSemi SUPER I/O chip configure | 56 | /* Used to synchronize accesses to NatSemi SUPER I/O chip configure |
55 | * operations in asm/ns87303.h | 57 | * operations in asm/ns87303.h |
56 | */ | 58 | */ |
@@ -335,9 +337,6 @@ void __init setup_arch(char **cmdline_p) | |||
335 | 337 | ||
336 | /* BUFFER is PAGE_SIZE bytes long. */ | 338 | /* BUFFER is PAGE_SIZE bytes long. */ |
337 | 339 | ||
338 | extern char *sparc_cpu_type; | ||
339 | extern char *sparc_fpu_type; | ||
340 | |||
341 | extern void smp_info(struct seq_file *); | 340 | extern void smp_info(struct seq_file *); |
342 | extern void smp_bogo(struct seq_file *); | 341 | extern void smp_bogo(struct seq_file *); |
343 | extern void mmu_info(struct seq_file *); | 342 | extern void mmu_info(struct seq_file *); |
diff --git a/arch/sparc64/kernel/signal.c b/arch/sparc64/kernel/signal.c index fb13775b3682..9d51956e8e2f 100644 --- a/arch/sparc64/kernel/signal.c +++ b/arch/sparc64/kernel/signal.c | |||
@@ -32,6 +32,9 @@ | |||
32 | #include <asm/siginfo.h> | 32 | #include <asm/siginfo.h> |
33 | #include <asm/visasm.h> | 33 | #include <asm/visasm.h> |
34 | 34 | ||
35 | #include "entry.h" | ||
36 | #include "systbls.h" | ||
37 | |||
35 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 38 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
36 | 39 | ||
37 | /* {set, get}context() needed for 64-bit SparcLinux userland. */ | 40 | /* {set, get}context() needed for 64-bit SparcLinux userland. */ |
@@ -354,7 +357,7 @@ static int invalid_frame_pointer(void __user *fp, int fplen) | |||
354 | static inline int | 357 | static inline int |
355 | save_fpu_state(struct pt_regs *regs, __siginfo_fpu_t __user *fpu) | 358 | save_fpu_state(struct pt_regs *regs, __siginfo_fpu_t __user *fpu) |
356 | { | 359 | { |
357 | unsigned long *fpregs = (unsigned long *)(regs+1); | 360 | unsigned long *fpregs = current_thread_info()->fpregs; |
358 | unsigned long fprs; | 361 | unsigned long fprs; |
359 | int err = 0; | 362 | int err = 0; |
360 | 363 | ||
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 5a1126b363a4..59f020d69d4c 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* smp.c: Sparc64 SMP support. | 1 | /* smp.c: Sparc64 SMP support. |
2 | * | 2 | * |
3 | * Copyright (C) 1997, 2007 David S. Miller (davem@davemloft.net) | 3 | * Copyright (C) 1997, 2007, 2008 David S. Miller (davem@davemloft.net) |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <linux/module.h> | 6 | #include <linux/module.h> |
@@ -30,6 +30,7 @@ | |||
30 | #include <asm/cpudata.h> | 30 | #include <asm/cpudata.h> |
31 | #include <asm/hvtramp.h> | 31 | #include <asm/hvtramp.h> |
32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
33 | #include <asm/timer.h> | ||
33 | 34 | ||
34 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
35 | #include <asm/irq_regs.h> | 36 | #include <asm/irq_regs.h> |
diff --git a/arch/sparc64/kernel/stacktrace.c b/arch/sparc64/kernel/stacktrace.c index 47f92a59be18..84d39e873e88 100644 --- a/arch/sparc64/kernel/stacktrace.c +++ b/arch/sparc64/kernel/stacktrace.c | |||
@@ -2,13 +2,15 @@ | |||
2 | #include <linux/stacktrace.h> | 2 | #include <linux/stacktrace.h> |
3 | #include <linux/thread_info.h> | 3 | #include <linux/thread_info.h> |
4 | #include <asm/ptrace.h> | 4 | #include <asm/ptrace.h> |
5 | #include <asm/stacktrace.h> | ||
5 | 6 | ||
6 | void save_stack_trace(struct stack_trace *trace) | 7 | void save_stack_trace(struct stack_trace *trace) |
7 | { | 8 | { |
8 | unsigned long ksp, fp, thread_base; | 9 | unsigned long ksp, fp, thread_base; |
9 | struct thread_info *tp = task_thread_info(current); | 10 | struct thread_info *tp = task_thread_info(current); |
10 | 11 | ||
11 | flushw_all(); | 12 | stack_trace_flush(); |
13 | |||
12 | __asm__ __volatile__( | 14 | __asm__ __volatile__( |
13 | "mov %%fp, %0" | 15 | "mov %%fp, %0" |
14 | : "=r" (ksp) | 16 | : "=r" (ksp) |
diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c index 134d801579f9..f952745d0f3d 100644 --- a/arch/sparc64/kernel/sys_sparc.c +++ b/arch/sparc64/kernel/sys_sparc.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* $Id: sys_sparc.c,v 1.57 2002/02/09 19:49:30 davem Exp $ | 1 | /* linux/arch/sparc64/kernel/sys_sparc.c |
2 | * linux/arch/sparc64/kernel/sys_sparc.c | ||
3 | * | 2 | * |
4 | * This file contains various random system calls that | 3 | * This file contains various random system calls that |
5 | * have a non-standard calling sequence on the Linux/sparc | 4 | * have a non-standard calling sequence on the Linux/sparc |
@@ -30,6 +29,9 @@ | |||
30 | #include <asm/perfctr.h> | 29 | #include <asm/perfctr.h> |
31 | #include <asm/unistd.h> | 30 | #include <asm/unistd.h> |
32 | 31 | ||
32 | #include "entry.h" | ||
33 | #include "systbls.h" | ||
34 | |||
33 | /* #define DEBUG_UNIMP_SYSCALL */ | 35 | /* #define DEBUG_UNIMP_SYSCALL */ |
34 | 36 | ||
35 | asmlinkage unsigned long sys_getpagesize(void) | 37 | asmlinkage unsigned long sys_getpagesize(void) |
@@ -445,7 +447,8 @@ asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second, | |||
445 | goto out; | 447 | goto out; |
446 | case SEMTIMEDOP: | 448 | case SEMTIMEDOP: |
447 | err = sys_semtimedop(first, ptr, (unsigned)second, | 449 | err = sys_semtimedop(first, ptr, (unsigned)second, |
448 | (const struct timespec __user *) fifth); | 450 | (const struct timespec __user *) |
451 | (unsigned long) fifth); | ||
449 | goto out; | 452 | goto out; |
450 | case SEMGET: | 453 | case SEMGET: |
451 | err = sys_semget(first, (int)second, (int)third); | 454 | err = sys_semget(first, (int)second, (int)third); |
@@ -788,7 +791,7 @@ asmlinkage long sys_utrap_install(utrap_entry_t type, | |||
788 | } else { | 791 | } else { |
789 | if ((utrap_handler_t)current_thread_info()->utraps[type] != new_p && | 792 | if ((utrap_handler_t)current_thread_info()->utraps[type] != new_p && |
790 | current_thread_info()->utraps[0] > 1) { | 793 | current_thread_info()->utraps[0] > 1) { |
791 | long *p = current_thread_info()->utraps; | 794 | unsigned long *p = current_thread_info()->utraps; |
792 | 795 | ||
793 | current_thread_info()->utraps = | 796 | current_thread_info()->utraps = |
794 | kmalloc((UT_TRAP_INSTRUCTION_31+1)*sizeof(long), | 797 | kmalloc((UT_TRAP_INSTRUCTION_31+1)*sizeof(long), |
@@ -816,7 +819,8 @@ asmlinkage long sys_utrap_install(utrap_entry_t type, | |||
816 | return 0; | 819 | return 0; |
817 | } | 820 | } |
818 | 821 | ||
819 | long sparc_memory_ordering(unsigned long model, struct pt_regs *regs) | 822 | asmlinkage long sparc_memory_ordering(unsigned long model, |
823 | struct pt_regs *regs) | ||
820 | { | 824 | { |
821 | if (model >= 3) | 825 | if (model >= 3) |
822 | return -EINVAL; | 826 | return -EINVAL; |
diff --git a/arch/sparc64/kernel/systbls.h b/arch/sparc64/kernel/systbls.h new file mode 100644 index 000000000000..8a0d20a35d0c --- /dev/null +++ b/arch/sparc64/kernel/systbls.h | |||
@@ -0,0 +1,53 @@ | |||
1 | #ifndef _SYSTBLS_H | ||
2 | #define _SYSTBLS_H | ||
3 | |||
4 | #include <linux/kernel.h> | ||
5 | #include <linux/types.h> | ||
6 | #include <linux/utsname.h> | ||
7 | #include <asm/utrap.h> | ||
8 | #include <asm/signal.h> | ||
9 | |||
10 | extern asmlinkage unsigned long sys_getpagesize(void); | ||
11 | extern asmlinkage unsigned long sparc_brk(unsigned long brk); | ||
12 | extern asmlinkage long sparc_pipe(struct pt_regs *regs); | ||
13 | extern asmlinkage long sys_ipc(unsigned int call, int first, | ||
14 | unsigned long second, | ||
15 | unsigned long third, | ||
16 | void __user *ptr, long fifth); | ||
17 | extern asmlinkage long sparc64_newuname(struct new_utsname __user *name); | ||
18 | extern asmlinkage long sparc64_personality(unsigned long personality); | ||
19 | extern asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, | ||
20 | unsigned long prot, unsigned long flags, | ||
21 | unsigned long fd, unsigned long off); | ||
22 | extern asmlinkage long sys64_munmap(unsigned long addr, size_t len); | ||
23 | extern asmlinkage unsigned long sys64_mremap(unsigned long addr, | ||
24 | unsigned long old_len, | ||
25 | unsigned long new_len, | ||
26 | unsigned long flags, | ||
27 | unsigned long new_addr); | ||
28 | extern asmlinkage unsigned long c_sys_nis_syscall(struct pt_regs *regs); | ||
29 | extern asmlinkage long sys_getdomainname(char __user *name, int len); | ||
30 | extern asmlinkage long solaris_syscall(struct pt_regs *regs); | ||
31 | extern asmlinkage long sunos_syscall(struct pt_regs *regs); | ||
32 | extern asmlinkage long sys_utrap_install(utrap_entry_t type, | ||
33 | utrap_handler_t new_p, | ||
34 | utrap_handler_t new_d, | ||
35 | utrap_handler_t __user *old_p, | ||
36 | utrap_handler_t __user *old_d); | ||
37 | extern asmlinkage long sparc_memory_ordering(unsigned long model, | ||
38 | struct pt_regs *regs); | ||
39 | extern asmlinkage long sys_rt_sigaction(int sig, | ||
40 | const struct sigaction __user *act, | ||
41 | struct sigaction __user *oact, | ||
42 | void __user *restorer, | ||
43 | size_t sigsetsize); | ||
44 | extern asmlinkage long sys_perfctr(int opcode, unsigned long arg0, | ||
45 | unsigned long arg1, unsigned long arg2); | ||
46 | |||
47 | extern asmlinkage void sparc64_set_context(struct pt_regs *regs); | ||
48 | extern asmlinkage void sparc64_get_context(struct pt_regs *regs); | ||
49 | extern asmlinkage long sys_sigpause(unsigned int set); | ||
50 | extern asmlinkage long sys_sigsuspend(old_sigset_t set); | ||
51 | extern void do_rt_sigreturn(struct pt_regs *regs); | ||
52 | |||
53 | #endif /* _SYSTBLS_H */ | ||
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c index d204f1ab1d4c..e5d238970c7e 100644 --- a/arch/sparc64/kernel/time.c +++ b/arch/sparc64/kernel/time.c | |||
@@ -1,7 +1,6 @@ | |||
1 | /* $Id: time.c,v 1.42 2002/01/23 14:33:55 davem Exp $ | 1 | /* time.c: UltraSparc timer and TOD clock support. |
2 | * time.c: UltraSparc timer and TOD clock support. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1997, 2008 David S. Miller (davem@davemloft.net) |
5 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) |
6 | * | 5 | * |
7 | * Based largely on code which is: | 6 | * Based largely on code which is: |
@@ -48,6 +47,8 @@ | |||
48 | #include <asm/uaccess.h> | 47 | #include <asm/uaccess.h> |
49 | #include <asm/irq_regs.h> | 48 | #include <asm/irq_regs.h> |
50 | 49 | ||
50 | #include "entry.h" | ||
51 | |||
51 | DEFINE_SPINLOCK(mostek_lock); | 52 | DEFINE_SPINLOCK(mostek_lock); |
52 | DEFINE_SPINLOCK(rtc_lock); | 53 | DEFINE_SPINLOCK(rtc_lock); |
53 | void __iomem *mstk48t02_regs = NULL; | 54 | void __iomem *mstk48t02_regs = NULL; |
@@ -508,6 +509,37 @@ static int __init has_low_battery(void) | |||
508 | return (data1 == data2); /* Was the write blocked? */ | 509 | return (data1 == data2); /* Was the write blocked? */ |
509 | } | 510 | } |
510 | 511 | ||
512 | static void __init mostek_set_system_time(void __iomem *mregs) | ||
513 | { | ||
514 | unsigned int year, mon, day, hour, min, sec; | ||
515 | u8 tmp; | ||
516 | |||
517 | spin_lock_irq(&mostek_lock); | ||
518 | |||
519 | /* Traditional Mostek chip. */ | ||
520 | tmp = mostek_read(mregs + MOSTEK_CREG); | ||
521 | tmp |= MSTK_CREG_READ; | ||
522 | mostek_write(mregs + MOSTEK_CREG, tmp); | ||
523 | |||
524 | sec = MSTK_REG_SEC(mregs); | ||
525 | min = MSTK_REG_MIN(mregs); | ||
526 | hour = MSTK_REG_HOUR(mregs); | ||
527 | day = MSTK_REG_DOM(mregs); | ||
528 | mon = MSTK_REG_MONTH(mregs); | ||
529 | year = MSTK_CVT_YEAR( MSTK_REG_YEAR(mregs) ); | ||
530 | |||
531 | xtime.tv_sec = mktime(year, mon, day, hour, min, sec); | ||
532 | xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); | ||
533 | set_normalized_timespec(&wall_to_monotonic, | ||
534 | -xtime.tv_sec, -xtime.tv_nsec); | ||
535 | |||
536 | tmp = mostek_read(mregs + MOSTEK_CREG); | ||
537 | tmp &= ~MSTK_CREG_READ; | ||
538 | mostek_write(mregs + MOSTEK_CREG, tmp); | ||
539 | |||
540 | spin_unlock_irq(&mostek_lock); | ||
541 | } | ||
542 | |||
511 | /* Probe for the real time clock chip. */ | 543 | /* Probe for the real time clock chip. */ |
512 | static void __init set_system_time(void) | 544 | static void __init set_system_time(void) |
513 | { | 545 | { |
@@ -520,7 +552,6 @@ static void __init set_system_time(void) | |||
520 | unsigned long dregs = 0UL; | 552 | unsigned long dregs = 0UL; |
521 | void __iomem *bregs = 0UL; | 553 | void __iomem *bregs = 0UL; |
522 | #endif | 554 | #endif |
523 | u8 tmp; | ||
524 | 555 | ||
525 | if (!mregs && !dregs && !bregs) { | 556 | if (!mregs && !dregs && !bregs) { |
526 | prom_printf("Something wrong, clock regs not mapped yet.\n"); | 557 | prom_printf("Something wrong, clock regs not mapped yet.\n"); |
@@ -528,20 +559,11 @@ static void __init set_system_time(void) | |||
528 | } | 559 | } |
529 | 560 | ||
530 | if (mregs) { | 561 | if (mregs) { |
531 | spin_lock_irq(&mostek_lock); | 562 | mostek_set_system_time(mregs); |
532 | 563 | return; | |
533 | /* Traditional Mostek chip. */ | 564 | } |
534 | tmp = mostek_read(mregs + MOSTEK_CREG); | ||
535 | tmp |= MSTK_CREG_READ; | ||
536 | mostek_write(mregs + MOSTEK_CREG, tmp); | ||
537 | 565 | ||
538 | sec = MSTK_REG_SEC(mregs); | 566 | if (bregs) { |
539 | min = MSTK_REG_MIN(mregs); | ||
540 | hour = MSTK_REG_HOUR(mregs); | ||
541 | day = MSTK_REG_DOM(mregs); | ||
542 | mon = MSTK_REG_MONTH(mregs); | ||
543 | year = MSTK_CVT_YEAR( MSTK_REG_YEAR(mregs) ); | ||
544 | } else if (bregs) { | ||
545 | unsigned char val = readb(bregs + 0x0e); | 567 | unsigned char val = readb(bregs + 0x0e); |
546 | unsigned int century; | 568 | unsigned int century; |
547 | 569 | ||
@@ -596,14 +618,6 @@ static void __init set_system_time(void) | |||
596 | xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); | 618 | xtime.tv_nsec = (INITIAL_JIFFIES % HZ) * (NSEC_PER_SEC / HZ); |
597 | set_normalized_timespec(&wall_to_monotonic, | 619 | set_normalized_timespec(&wall_to_monotonic, |
598 | -xtime.tv_sec, -xtime.tv_nsec); | 620 | -xtime.tv_sec, -xtime.tv_nsec); |
599 | |||
600 | if (mregs) { | ||
601 | tmp = mostek_read(mregs + MOSTEK_CREG); | ||
602 | tmp &= ~MSTK_CREG_READ; | ||
603 | mostek_write(mregs + MOSTEK_CREG, tmp); | ||
604 | |||
605 | spin_unlock_irq(&mostek_lock); | ||
606 | } | ||
607 | } | 621 | } |
608 | 622 | ||
609 | /* davem suggests we keep this within the 4M locked kernel image */ | 623 | /* davem suggests we keep this within the 4M locked kernel image */ |
@@ -1027,7 +1041,7 @@ void __init time_init(void) | |||
1027 | setup_clockevent_multiplier(clock); | 1041 | setup_clockevent_multiplier(clock); |
1028 | 1042 | ||
1029 | sparc64_clockevent.max_delta_ns = | 1043 | sparc64_clockevent.max_delta_ns = |
1030 | clockevent_delta2ns(0x7fffffffffffffff, &sparc64_clockevent); | 1044 | clockevent_delta2ns(0x7fffffffffffffffUL, &sparc64_clockevent); |
1031 | sparc64_clockevent.min_delta_ns = | 1045 | sparc64_clockevent.min_delta_ns = |
1032 | clockevent_delta2ns(0xF, &sparc64_clockevent); | 1046 | clockevent_delta2ns(0xF, &sparc64_clockevent); |
1033 | 1047 | ||
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c index 007f5317c0de..96da847023f3 100644 --- a/arch/sparc64/kernel/traps.c +++ b/arch/sparc64/kernel/traps.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #endif | 42 | #endif |
43 | #include <asm/prom.h> | 43 | #include <asm/prom.h> |
44 | 44 | ||
45 | #include "entry.h" | ||
45 | 46 | ||
46 | /* When an irrecoverable trap occurs at tl > 0, the trap entry | 47 | /* When an irrecoverable trap occurs at tl > 0, the trap entry |
47 | * code logs the trap state registers at every level in the trap | 48 | * code logs the trap state registers at every level in the trap |
@@ -77,11 +78,6 @@ static void dump_tl1_traplog(struct tl1_traplog *p) | |||
77 | } | 78 | } |
78 | } | 79 | } |
79 | 80 | ||
80 | void do_call_debug(struct pt_regs *regs) | ||
81 | { | ||
82 | notify_die(DIE_CALL, "debug call", regs, 0, 255, SIGINT); | ||
83 | } | ||
84 | |||
85 | void bad_trap(struct pt_regs *regs, long lvl) | 81 | void bad_trap(struct pt_regs *regs, long lvl) |
86 | { | 82 | { |
87 | char buffer[32]; | 83 | char buffer[32]; |
@@ -550,41 +546,6 @@ static unsigned long ecache_flush_physbase; | |||
550 | static unsigned long ecache_flush_linesize; | 546 | static unsigned long ecache_flush_linesize; |
551 | static unsigned long ecache_flush_size; | 547 | static unsigned long ecache_flush_size; |
552 | 548 | ||
553 | /* WARNING: The error trap handlers in assembly know the precise | ||
554 | * layout of the following structure. | ||
555 | * | ||
556 | * C-level handlers below use this information to log the error | ||
557 | * and then determine how to recover (if possible). | ||
558 | */ | ||
559 | struct cheetah_err_info { | ||
560 | /*0x00*/u64 afsr; | ||
561 | /*0x08*/u64 afar; | ||
562 | |||
563 | /* D-cache state */ | ||
564 | /*0x10*/u64 dcache_data[4]; /* The actual data */ | ||
565 | /*0x30*/u64 dcache_index; /* D-cache index */ | ||
566 | /*0x38*/u64 dcache_tag; /* D-cache tag/valid */ | ||
567 | /*0x40*/u64 dcache_utag; /* D-cache microtag */ | ||
568 | /*0x48*/u64 dcache_stag; /* D-cache snooptag */ | ||
569 | |||
570 | /* I-cache state */ | ||
571 | /*0x50*/u64 icache_data[8]; /* The actual insns + predecode */ | ||
572 | /*0x90*/u64 icache_index; /* I-cache index */ | ||
573 | /*0x98*/u64 icache_tag; /* I-cache phys tag */ | ||
574 | /*0xa0*/u64 icache_utag; /* I-cache microtag */ | ||
575 | /*0xa8*/u64 icache_stag; /* I-cache snooptag */ | ||
576 | /*0xb0*/u64 icache_upper; /* I-cache upper-tag */ | ||
577 | /*0xb8*/u64 icache_lower; /* I-cache lower-tag */ | ||
578 | |||
579 | /* E-cache state */ | ||
580 | /*0xc0*/u64 ecache_data[4]; /* 32 bytes from staging registers */ | ||
581 | /*0xe0*/u64 ecache_index; /* E-cache index */ | ||
582 | /*0xe8*/u64 ecache_tag; /* E-cache tag/state */ | ||
583 | |||
584 | /*0xf0*/u64 __pad[32 - 30]; | ||
585 | }; | ||
586 | #define CHAFSR_INVALID ((u64)-1L) | ||
587 | |||
588 | /* This table is ordered in priority of errors and matches the | 549 | /* This table is ordered in priority of errors and matches the |
589 | * AFAR overwrite policy as well. | 550 | * AFAR overwrite policy as well. |
590 | */ | 551 | */ |
@@ -758,10 +719,6 @@ static struct afsr_error_table __jalapeno_error_table[] = { | |||
758 | static struct afsr_error_table *cheetah_error_table; | 719 | static struct afsr_error_table *cheetah_error_table; |
759 | static unsigned long cheetah_afsr_errors; | 720 | static unsigned long cheetah_afsr_errors; |
760 | 721 | ||
761 | /* This is allocated at boot time based upon the largest hardware | ||
762 | * cpu ID in the system. We allocate two entries per cpu, one for | ||
763 | * TL==0 logging and one for TL >= 1 logging. | ||
764 | */ | ||
765 | struct cheetah_err_info *cheetah_error_log; | 722 | struct cheetah_err_info *cheetah_error_log; |
766 | 723 | ||
767 | static inline struct cheetah_err_info *cheetah_get_error_log(unsigned long afsr) | 724 | static inline struct cheetah_err_info *cheetah_get_error_log(unsigned long afsr) |
@@ -2102,7 +2059,7 @@ void do_div0(struct pt_regs *regs) | |||
2102 | force_sig_info(SIGFPE, &info, current); | 2059 | force_sig_info(SIGFPE, &info, current); |
2103 | } | 2060 | } |
2104 | 2061 | ||
2105 | void instruction_dump (unsigned int *pc) | 2062 | static void instruction_dump(unsigned int *pc) |
2106 | { | 2063 | { |
2107 | int i; | 2064 | int i; |
2108 | 2065 | ||
@@ -2115,7 +2072,7 @@ void instruction_dump (unsigned int *pc) | |||
2115 | printk("\n"); | 2072 | printk("\n"); |
2116 | } | 2073 | } |
2117 | 2074 | ||
2118 | static void user_instruction_dump (unsigned int __user *pc) | 2075 | static void user_instruction_dump(unsigned int __user *pc) |
2119 | { | 2076 | { |
2120 | int i; | 2077 | int i; |
2121 | unsigned int buf[9]; | 2078 | unsigned int buf[9]; |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 466fd6cffac9..f37078d96407 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -46,6 +46,7 @@ | |||
46 | #include <asm/prom.h> | 46 | #include <asm/prom.h> |
47 | #include <asm/sstate.h> | 47 | #include <asm/sstate.h> |
48 | #include <asm/mdesc.h> | 48 | #include <asm/mdesc.h> |
49 | #include <asm/cpudata.h> | ||
49 | 50 | ||
50 | #define MAX_PHYS_ADDRESS (1UL << 42UL) | 51 | #define MAX_PHYS_ADDRESS (1UL << 42UL) |
51 | #define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL) | 52 | #define KPTE_BITMAP_CHUNK_SZ (256UL * 1024UL * 1024UL) |
@@ -1273,10 +1274,6 @@ void __cpuinit sun4v_ktsb_register(void) | |||
1273 | 1274 | ||
1274 | /* paging_init() sets up the page tables */ | 1275 | /* paging_init() sets up the page tables */ |
1275 | 1276 | ||
1276 | extern void cheetah_ecache_flush_init(void); | ||
1277 | extern void sun4v_patch_tlb_handlers(void); | ||
1278 | |||
1279 | extern void cpu_probe(void); | ||
1280 | extern void central_probe(void); | 1277 | extern void central_probe(void); |
1281 | 1278 | ||
1282 | static unsigned long last_valid_pfn; | 1279 | static unsigned long last_valid_pfn; |
diff --git a/arch/sparc64/mm/tlb.c b/arch/sparc64/mm/tlb.c index 3f10fc921b00..ae24919cba7c 100644 --- a/arch/sparc64/mm/tlb.c +++ b/arch/sparc64/mm/tlb.c | |||
@@ -23,9 +23,7 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers) = { 0, }; | |||
23 | 23 | ||
24 | void flush_tlb_pending(void) | 24 | void flush_tlb_pending(void) |
25 | { | 25 | { |
26 | struct mmu_gather *mp = &__get_cpu_var(mmu_gathers); | 26 | struct mmu_gather *mp = &get_cpu_var(mmu_gathers); |
27 | |||
28 | preempt_disable(); | ||
29 | 27 | ||
30 | if (mp->tlb_nr) { | 28 | if (mp->tlb_nr) { |
31 | flush_tsb_user(mp); | 29 | flush_tsb_user(mp); |
@@ -42,7 +40,7 @@ void flush_tlb_pending(void) | |||
42 | mp->tlb_nr = 0; | 40 | mp->tlb_nr = 0; |
43 | } | 41 | } |
44 | 42 | ||
45 | preempt_enable(); | 43 | put_cpu_var(mmu_gathers); |
46 | } | 44 | } |
47 | 45 | ||
48 | void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig) | 46 | void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig) |
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c index 1e8f41a99511..1d43bdfc20c4 100644 --- a/arch/um/drivers/net_kern.c +++ b/arch/um/drivers/net_kern.c | |||
@@ -256,11 +256,7 @@ static struct net_device_stats *uml_net_get_stats(struct net_device *dev) | |||
256 | 256 | ||
257 | static void uml_net_set_multicast_list(struct net_device *dev) | 257 | static void uml_net_set_multicast_list(struct net_device *dev) |
258 | { | 258 | { |
259 | if (dev->flags & IFF_PROMISC) | 259 | return; |
260 | return; | ||
261 | else if (dev->mc_count) | ||
262 | dev->flags |= IFF_ALLMULTI; | ||
263 | else dev->flags &= ~IFF_ALLMULTI; | ||
264 | } | 260 | } |
265 | 261 | ||
266 | static void uml_net_tx_timeout(struct net_device *dev) | 262 | static void uml_net_tx_timeout(struct net_device *dev) |
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c index 45d79ea890ae..5fed98ca0e1f 100644 --- a/arch/x86/kernel/alternative.c +++ b/arch/x86/kernel/alternative.c | |||
@@ -65,7 +65,8 @@ __setup("noreplace-paravirt", setup_noreplace_paravirt); | |||
65 | get them easily into strings. */ | 65 | get them easily into strings. */ |
66 | asm("\t.section .rodata, \"a\"\nintelnops: " | 66 | asm("\t.section .rodata, \"a\"\nintelnops: " |
67 | GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 | 67 | GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 |
68 | GENERIC_NOP7 GENERIC_NOP8); | 68 | GENERIC_NOP7 GENERIC_NOP8 |
69 | "\t.previous"); | ||
69 | extern const unsigned char intelnops[]; | 70 | extern const unsigned char intelnops[]; |
70 | static const unsigned char *const intel_nops[ASM_NOP_MAX+1] = { | 71 | static const unsigned char *const intel_nops[ASM_NOP_MAX+1] = { |
71 | NULL, | 72 | NULL, |
@@ -83,7 +84,8 @@ static const unsigned char *const intel_nops[ASM_NOP_MAX+1] = { | |||
83 | #ifdef K8_NOP1 | 84 | #ifdef K8_NOP1 |
84 | asm("\t.section .rodata, \"a\"\nk8nops: " | 85 | asm("\t.section .rodata, \"a\"\nk8nops: " |
85 | K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 | 86 | K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 |
86 | K8_NOP7 K8_NOP8); | 87 | K8_NOP7 K8_NOP8 |
88 | "\t.previous"); | ||
87 | extern const unsigned char k8nops[]; | 89 | extern const unsigned char k8nops[]; |
88 | static const unsigned char *const k8_nops[ASM_NOP_MAX+1] = { | 90 | static const unsigned char *const k8_nops[ASM_NOP_MAX+1] = { |
89 | NULL, | 91 | NULL, |
@@ -101,7 +103,8 @@ static const unsigned char *const k8_nops[ASM_NOP_MAX+1] = { | |||
101 | #ifdef K7_NOP1 | 103 | #ifdef K7_NOP1 |
102 | asm("\t.section .rodata, \"a\"\nk7nops: " | 104 | asm("\t.section .rodata, \"a\"\nk7nops: " |
103 | K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 | 105 | K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 |
104 | K7_NOP7 K7_NOP8); | 106 | K7_NOP7 K7_NOP8 |
107 | "\t.previous"); | ||
105 | extern const unsigned char k7nops[]; | 108 | extern const unsigned char k7nops[]; |
106 | static const unsigned char *const k7_nops[ASM_NOP_MAX+1] = { | 109 | static const unsigned char *const k7_nops[ASM_NOP_MAX+1] = { |
107 | NULL, | 110 | NULL, |
@@ -119,7 +122,8 @@ static const unsigned char *const k7_nops[ASM_NOP_MAX+1] = { | |||
119 | #ifdef P6_NOP1 | 122 | #ifdef P6_NOP1 |
120 | asm("\t.section .rodata, \"a\"\np6nops: " | 123 | asm("\t.section .rodata, \"a\"\np6nops: " |
121 | P6_NOP1 P6_NOP2 P6_NOP3 P6_NOP4 P6_NOP5 P6_NOP6 | 124 | P6_NOP1 P6_NOP2 P6_NOP3 P6_NOP4 P6_NOP5 P6_NOP6 |
122 | P6_NOP7 P6_NOP8); | 125 | P6_NOP7 P6_NOP8 |
126 | "\t.previous"); | ||
123 | extern const unsigned char p6nops[]; | 127 | extern const unsigned char p6nops[]; |
124 | static const unsigned char *const p6_nops[ASM_NOP_MAX+1] = { | 128 | static const unsigned char *const p6_nops[ASM_NOP_MAX+1] = { |
125 | NULL, | 129 | NULL, |
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 027e5c003b16..170d2f5523b2 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c | |||
@@ -143,14 +143,6 @@ static void __init check_config(void) | |||
143 | #endif | 143 | #endif |
144 | 144 | ||
145 | /* | 145 | /* |
146 | * If we configured ourselves for a TSC, we'd better have one! | ||
147 | */ | ||
148 | #ifdef CONFIG_X86_TSC | ||
149 | if (!cpu_has_tsc) | ||
150 | panic("Kernel compiled for Pentium+, requires TSC feature!"); | ||
151 | #endif | ||
152 | |||
153 | /* | ||
154 | * If we were told we had a good local APIC, check for buggy Pentia, | 146 | * If we were told we had a good local APIC, check for buggy Pentia, |
155 | * i.e. all B steppings and the C2 stepping of P54C when using their | 147 | * i.e. all B steppings and the C2 stepping of P54C when using their |
156 | * integrated APIC (see 11AP erratum in "Pentium Processor | 148 | * integrated APIC (see 11AP erratum in "Pentium Processor |
diff --git a/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c b/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c index f2b5a621d27b..8a85c93bd62a 100644 --- a/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c +++ b/arch/x86/kernel/cpu/cpufreq/speedstep-smi.c | |||
@@ -63,7 +63,7 @@ static struct cpufreq_frequency_table speedstep_freqs[] = { | |||
63 | */ | 63 | */ |
64 | static int speedstep_smi_ownership (void) | 64 | static int speedstep_smi_ownership (void) |
65 | { | 65 | { |
66 | u32 command, result, magic; | 66 | u32 command, result, magic, dummy; |
67 | u32 function = GET_SPEEDSTEP_OWNER; | 67 | u32 function = GET_SPEEDSTEP_OWNER; |
68 | unsigned char magic_data[] = "Copyright (c) 1999 Intel Corporation"; | 68 | unsigned char magic_data[] = "Copyright (c) 1999 Intel Corporation"; |
69 | 69 | ||
@@ -73,8 +73,11 @@ static int speedstep_smi_ownership (void) | |||
73 | dprintk("trying to obtain ownership with command %x at port %x\n", command, smi_port); | 73 | dprintk("trying to obtain ownership with command %x at port %x\n", command, smi_port); |
74 | 74 | ||
75 | __asm__ __volatile__( | 75 | __asm__ __volatile__( |
76 | "push %%ebp\n" | ||
76 | "out %%al, (%%dx)\n" | 77 | "out %%al, (%%dx)\n" |
77 | : "=D" (result) | 78 | "pop %%ebp\n" |
79 | : "=D" (result), "=a" (dummy), "=b" (dummy), "=c" (dummy), "=d" (dummy), | ||
80 | "=S" (dummy) | ||
78 | : "a" (command), "b" (function), "c" (0), "d" (smi_port), | 81 | : "a" (command), "b" (function), "c" (0), "d" (smi_port), |
79 | "D" (0), "S" (magic) | 82 | "D" (0), "S" (magic) |
80 | : "memory" | 83 | : "memory" |
@@ -96,7 +99,7 @@ static int speedstep_smi_ownership (void) | |||
96 | */ | 99 | */ |
97 | static int speedstep_smi_get_freqs (unsigned int *low, unsigned int *high) | 100 | static int speedstep_smi_get_freqs (unsigned int *low, unsigned int *high) |
98 | { | 101 | { |
99 | u32 command, result = 0, edi, high_mhz, low_mhz; | 102 | u32 command, result = 0, edi, high_mhz, low_mhz, dummy; |
100 | u32 state=0; | 103 | u32 state=0; |
101 | u32 function = GET_SPEEDSTEP_FREQS; | 104 | u32 function = GET_SPEEDSTEP_FREQS; |
102 | 105 | ||
@@ -109,10 +112,12 @@ static int speedstep_smi_get_freqs (unsigned int *low, unsigned int *high) | |||
109 | 112 | ||
110 | dprintk("trying to determine frequencies with command %x at port %x\n", command, smi_port); | 113 | dprintk("trying to determine frequencies with command %x at port %x\n", command, smi_port); |
111 | 114 | ||
112 | __asm__ __volatile__("movl $0, %%edi\n" | 115 | __asm__ __volatile__( |
116 | "push %%ebp\n" | ||
113 | "out %%al, (%%dx)\n" | 117 | "out %%al, (%%dx)\n" |
114 | : "=a" (result), "=b" (high_mhz), "=c" (low_mhz), "=d" (state), "=D" (edi) | 118 | "pop %%ebp" |
115 | : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0) | 119 | : "=a" (result), "=b" (high_mhz), "=c" (low_mhz), "=d" (state), "=D" (edi), "=S" (dummy) |
120 | : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0), "D" (0) | ||
116 | ); | 121 | ); |
117 | 122 | ||
118 | dprintk("result %x, low_freq %u, high_freq %u\n", result, low_mhz, high_mhz); | 123 | dprintk("result %x, low_freq %u, high_freq %u\n", result, low_mhz, high_mhz); |
@@ -135,16 +140,18 @@ static int speedstep_smi_get_freqs (unsigned int *low, unsigned int *high) | |||
135 | static int speedstep_get_state (void) | 140 | static int speedstep_get_state (void) |
136 | { | 141 | { |
137 | u32 function=GET_SPEEDSTEP_STATE; | 142 | u32 function=GET_SPEEDSTEP_STATE; |
138 | u32 result, state, edi, command; | 143 | u32 result, state, edi, command, dummy; |
139 | 144 | ||
140 | command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); | 145 | command = (smi_sig & 0xffffff00) | (smi_cmd & 0xff); |
141 | 146 | ||
142 | dprintk("trying to determine current setting with command %x at port %x\n", command, smi_port); | 147 | dprintk("trying to determine current setting with command %x at port %x\n", command, smi_port); |
143 | 148 | ||
144 | __asm__ __volatile__("movl $0, %%edi\n" | 149 | __asm__ __volatile__( |
150 | "push %%ebp\n" | ||
145 | "out %%al, (%%dx)\n" | 151 | "out %%al, (%%dx)\n" |
146 | : "=a" (result), "=b" (state), "=D" (edi) | 152 | "pop %%ebp\n" |
147 | : "a" (command), "b" (function), "c" (0), "d" (smi_port), "S" (0) | 153 | : "=a" (result), "=b" (state), "=D" (edi), "=c" (dummy), "=d" (dummy), "=S" (dummy) |
154 | : "a" (command), "b" (function), "c" (0), "d" (smi_port), "S" (0), "D" (0) | ||
148 | ); | 155 | ); |
149 | 156 | ||
150 | dprintk("state is %x, result is %x\n", state, result); | 157 | dprintk("state is %x, result is %x\n", state, result); |
@@ -160,7 +167,7 @@ static int speedstep_get_state (void) | |||
160 | */ | 167 | */ |
161 | static void speedstep_set_state (unsigned int state) | 168 | static void speedstep_set_state (unsigned int state) |
162 | { | 169 | { |
163 | unsigned int result = 0, command, new_state; | 170 | unsigned int result = 0, command, new_state, dummy; |
164 | unsigned long flags; | 171 | unsigned long flags; |
165 | unsigned int function=SET_SPEEDSTEP_STATE; | 172 | unsigned int function=SET_SPEEDSTEP_STATE; |
166 | unsigned int retry = 0; | 173 | unsigned int retry = 0; |
@@ -182,10 +189,12 @@ static void speedstep_set_state (unsigned int state) | |||
182 | } | 189 | } |
183 | retry++; | 190 | retry++; |
184 | __asm__ __volatile__( | 191 | __asm__ __volatile__( |
185 | "movl $0, %%edi\n" | 192 | "push %%ebp\n" |
186 | "out %%al, (%%dx)\n" | 193 | "out %%al, (%%dx)\n" |
187 | : "=b" (new_state), "=D" (result) | 194 | "pop %%ebp" |
188 | : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0) | 195 | : "=b" (new_state), "=D" (result), "=c" (dummy), "=a" (dummy), |
196 | "=d" (dummy), "=S" (dummy) | ||
197 | : "a" (command), "b" (function), "c" (state), "d" (smi_port), "S" (0), "D" (0) | ||
189 | ); | 198 | ); |
190 | } while ((new_state != state) && (retry <= SMI_TRIES)); | 199 | } while ((new_state != state) && (retry <= SMI_TRIES)); |
191 | 200 | ||
@@ -195,7 +204,7 @@ static void speedstep_set_state (unsigned int state) | |||
195 | if (new_state == state) { | 204 | if (new_state == state) { |
196 | dprintk("change to %u MHz succeeded after %u tries with result %u\n", (speedstep_freqs[new_state].frequency / 1000), retry, result); | 205 | dprintk("change to %u MHz succeeded after %u tries with result %u\n", (speedstep_freqs[new_state].frequency / 1000), retry, result); |
197 | } else { | 206 | } else { |
198 | printk(KERN_ERR "cpufreq: change failed with new_state %u and result %u\n", new_state, result); | 207 | printk(KERN_ERR "cpufreq: change to state %u failed with new_state %u and result %u\n", state, new_state, result); |
199 | } | 208 | } |
200 | 209 | ||
201 | return; | 210 | return; |
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 103d61a59b19..3e18db4cefee 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
@@ -176,12 +176,13 @@ static inline void k8_enable_fixed_iorrs(void) | |||
176 | } | 176 | } |
177 | 177 | ||
178 | /** | 178 | /** |
179 | * Checks and updates an fixed-range MTRR if it differs from the value it | 179 | * set_fixed_range - checks & updates a fixed-range MTRR if it differs from the value it should have |
180 | * should have. If K8 extentions are wanted, update the K8 SYSCFG MSR also. | 180 | * @msr: MSR address of the MTTR which should be checked and updated |
181 | * see AMD publication no. 24593, chapter 7.8.1, page 233 for more information | 181 | * @changed: pointer which indicates whether the MTRR needed to be changed |
182 | * \param msr MSR address of the MTTR which should be checked and updated | 182 | * @msrwords: pointer to the MSR values which the MSR should have |
183 | * \param changed pointer which indicates whether the MTRR needed to be changed | 183 | * |
184 | * \param msrwords pointer to the MSR values which the MSR should have | 184 | * If K8 extentions are wanted, update the K8 SYSCFG MSR also. |
185 | * See AMD publication no. 24593, chapter 7.8.1, page 233 for more information. | ||
185 | */ | 186 | */ |
186 | static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords) | 187 | static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords) |
187 | { | 188 | { |
@@ -199,12 +200,15 @@ static void set_fixed_range(int msr, bool *changed, unsigned int *msrwords) | |||
199 | } | 200 | } |
200 | } | 201 | } |
201 | 202 | ||
203 | /** | ||
204 | * generic_get_free_region - Get a free MTRR. | ||
205 | * @base: The starting (base) address of the region. | ||
206 | * @size: The size (in bytes) of the region. | ||
207 | * @replace_reg: mtrr index to be replaced; set to invalid value if none. | ||
208 | * | ||
209 | * Returns: The index of the region on success, else negative on error. | ||
210 | */ | ||
202 | int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg) | 211 | int generic_get_free_region(unsigned long base, unsigned long size, int replace_reg) |
203 | /* [SUMMARY] Get a free MTRR. | ||
204 | <base> The starting (base) address of the region. | ||
205 | <size> The size (in bytes) of the region. | ||
206 | [RETURNS] The index of the region on success, else -1 on error. | ||
207 | */ | ||
208 | { | 212 | { |
209 | int i, max; | 213 | int i, max; |
210 | mtrr_type ltype; | 214 | mtrr_type ltype; |
@@ -249,8 +253,8 @@ static void generic_get_mtrr(unsigned int reg, unsigned long *base, | |||
249 | } | 253 | } |
250 | 254 | ||
251 | /** | 255 | /** |
252 | * Checks and updates the fixed-range MTRRs if they differ from the saved set | 256 | * set_fixed_ranges - checks & updates the fixed-range MTRRs if they differ from the saved set |
253 | * \param frs pointer to fixed-range MTRR values, saved by get_fixed_ranges() | 257 | * @frs: pointer to fixed-range MTRR values, saved by get_fixed_ranges() |
254 | */ | 258 | */ |
255 | static int set_fixed_ranges(mtrr_type * frs) | 259 | static int set_fixed_ranges(mtrr_type * frs) |
256 | { | 260 | { |
@@ -294,13 +298,13 @@ static bool set_mtrr_var_ranges(unsigned int index, struct mtrr_var_range *vr) | |||
294 | 298 | ||
295 | static u32 deftype_lo, deftype_hi; | 299 | static u32 deftype_lo, deftype_hi; |
296 | 300 | ||
301 | /** | ||
302 | * set_mtrr_state - Set the MTRR state for this CPU. | ||
303 | * | ||
304 | * NOTE: The CPU must already be in a safe state for MTRR changes. | ||
305 | * RETURNS: 0 if no changes made, else a mask indicating what was changed. | ||
306 | */ | ||
297 | static unsigned long set_mtrr_state(void) | 307 | static unsigned long set_mtrr_state(void) |
298 | /* [SUMMARY] Set the MTRR state for this CPU. | ||
299 | <state> The MTRR state information to read. | ||
300 | <ctxt> Some relevant CPU context. | ||
301 | [NOTE] The CPU must already be in a safe state for MTRR changes. | ||
302 | [RETURNS] 0 if no changes made, else a mask indication what was changed. | ||
303 | */ | ||
304 | { | 308 | { |
305 | unsigned int i; | 309 | unsigned int i; |
306 | unsigned long change_mask = 0; | 310 | unsigned long change_mask = 0; |
diff --git a/arch/x86/kernel/cpu/perfctr-watchdog.c b/arch/x86/kernel/cpu/perfctr-watchdog.c index 9b838324b818..b943e10ad814 100644 --- a/arch/x86/kernel/cpu/perfctr-watchdog.c +++ b/arch/x86/kernel/cpu/perfctr-watchdog.c | |||
@@ -652,9 +652,6 @@ static void probe_nmi_watchdog(void) | |||
652 | wd_ops = &p6_wd_ops; | 652 | wd_ops = &p6_wd_ops; |
653 | break; | 653 | break; |
654 | case 15: | 654 | case 15: |
655 | if (boot_cpu_data.x86_model > 0x4) | ||
656 | return; | ||
657 | |||
658 | wd_ops = &p4_wd_ops; | 655 | wd_ops = &p4_wd_ops; |
659 | break; | 656 | break; |
660 | default: | 657 | default: |
@@ -670,8 +667,10 @@ int lapic_watchdog_init(unsigned nmi_hz) | |||
670 | { | 667 | { |
671 | if (!wd_ops) { | 668 | if (!wd_ops) { |
672 | probe_nmi_watchdog(); | 669 | probe_nmi_watchdog(); |
673 | if (!wd_ops) | 670 | if (!wd_ops) { |
671 | printk(KERN_INFO "NMI watchdog: CPU not supported\n"); | ||
674 | return -1; | 672 | return -1; |
673 | } | ||
675 | 674 | ||
676 | if (!wd_ops->reserve()) { | 675 | if (!wd_ops->reserve()) { |
677 | printk(KERN_ERR | 676 | printk(KERN_ERR |
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c index 235fd6c77504..36652ea1a265 100644 --- a/arch/x86/kernel/hpet.c +++ b/arch/x86/kernel/hpet.c | |||
@@ -133,13 +133,16 @@ static void hpet_reserve_platform_timers(unsigned long id) | |||
133 | #ifdef CONFIG_HPET_EMULATE_RTC | 133 | #ifdef CONFIG_HPET_EMULATE_RTC |
134 | hpet_reserve_timer(&hd, 1); | 134 | hpet_reserve_timer(&hd, 1); |
135 | #endif | 135 | #endif |
136 | |||
136 | hd.hd_irq[0] = HPET_LEGACY_8254; | 137 | hd.hd_irq[0] = HPET_LEGACY_8254; |
137 | hd.hd_irq[1] = HPET_LEGACY_RTC; | 138 | hd.hd_irq[1] = HPET_LEGACY_RTC; |
138 | 139 | ||
139 | for (i = 2; i < nrtimers; timer++, i++) | 140 | for (i = 2; i < nrtimers; timer++, i++) |
140 | hd.hd_irq[i] = (timer->hpet_config & Tn_INT_ROUTE_CNF_MASK) >> | 141 | hd.hd_irq[i] = (timer->hpet_config & Tn_INT_ROUTE_CNF_MASK) >> |
141 | Tn_INT_ROUTE_CNF_SHIFT; | 142 | Tn_INT_ROUTE_CNF_SHIFT; |
143 | |||
142 | hpet_alloc(&hd); | 144 | hpet_alloc(&hd); |
145 | |||
143 | } | 146 | } |
144 | #else | 147 | #else |
145 | static void hpet_reserve_platform_timers(unsigned long id) { } | 148 | static void hpet_reserve_platform_timers(unsigned long id) { } |
diff --git a/arch/x86/kernel/io_delay.c b/arch/x86/kernel/io_delay.c index c706a3061553..5921e5f0a640 100644 --- a/arch/x86/kernel/io_delay.c +++ b/arch/x86/kernel/io_delay.c | |||
@@ -78,6 +78,14 @@ static struct dmi_system_id __initdata io_delay_0xed_port_dmi_table[] = { | |||
78 | }, | 78 | }, |
79 | { | 79 | { |
80 | .callback = dmi_io_delay_0xed_port, | 80 | .callback = dmi_io_delay_0xed_port, |
81 | .ident = "HP Pavilion dv6000", | ||
82 | .matches = { | ||
83 | DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"), | ||
84 | DMI_MATCH(DMI_BOARD_NAME, "30B8") | ||
85 | } | ||
86 | }, | ||
87 | { | ||
88 | .callback = dmi_io_delay_0xed_port, | ||
81 | .ident = "HP Pavilion tx1000", | 89 | .ident = "HP Pavilion tx1000", |
82 | .matches = { | 90 | .matches = { |
83 | DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"), | 91 | DMI_MATCH(DMI_BOARD_VENDOR, "Quanta"), |
diff --git a/arch/x86/kernel/machine_kexec_64.c b/arch/x86/kernel/machine_kexec_64.c index 236d2f8f7ddc..576a03db4511 100644 --- a/arch/x86/kernel/machine_kexec_64.c +++ b/arch/x86/kernel/machine_kexec_64.c | |||
@@ -233,6 +233,7 @@ NORET_TYPE void machine_kexec(struct kimage *image) | |||
233 | 233 | ||
234 | void arch_crash_save_vmcoreinfo(void) | 234 | void arch_crash_save_vmcoreinfo(void) |
235 | { | 235 | { |
236 | VMCOREINFO_SYMBOL(phys_base); | ||
236 | VMCOREINFO_SYMBOL(init_level4_pgt); | 237 | VMCOREINFO_SYMBOL(init_level4_pgt); |
237 | 238 | ||
238 | #ifdef CONFIG_NUMA | 239 | #ifdef CONFIG_NUMA |
diff --git a/arch/x86/kernel/mfgpt_32.c b/arch/x86/kernel/mfgpt_32.c index 027fc067b399..b402c0f3f192 100644 --- a/arch/x86/kernel/mfgpt_32.c +++ b/arch/x86/kernel/mfgpt_32.c | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
32 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
33 | #include <linux/module.h> | ||
33 | #include <asm/geode.h> | 34 | #include <asm/geode.h> |
34 | 35 | ||
35 | static struct mfgpt_timer_t { | 36 | static struct mfgpt_timer_t { |
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index faf3229f8fb3..700e4647dd30 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
@@ -615,8 +615,8 @@ static __init int init_k8_gatt(struct agp_kern_info *info) | |||
615 | 615 | ||
616 | nommu: | 616 | nommu: |
617 | /* Should not happen anymore */ | 617 | /* Should not happen anymore */ |
618 | printk(KERN_ERR "PCI-DMA: More than 4GB of RAM and no IOMMU\n" | 618 | printk(KERN_WARNING "PCI-DMA: More than 4GB of RAM and no IOMMU\n" |
619 | KERN_ERR "PCI-DMA: 32bit PCI IO may malfunction.\n"); | 619 | KERN_WARNING "falling back to iommu=soft.\n"); |
620 | return -1; | 620 | return -1; |
621 | } | 621 | } |
622 | 622 | ||
@@ -692,9 +692,9 @@ void __init gart_iommu_init(void) | |||
692 | !gart_iommu_aperture || | 692 | !gart_iommu_aperture || |
693 | (no_agp && init_k8_gatt(&info) < 0)) { | 693 | (no_agp && init_k8_gatt(&info) < 0)) { |
694 | if (end_pfn > MAX_DMA32_PFN) { | 694 | if (end_pfn > MAX_DMA32_PFN) { |
695 | printk(KERN_ERR "WARNING more than 4GB of memory " | 695 | printk(KERN_WARNING "More than 4GB of memory " |
696 | "but GART IOMMU not available.\n" | 696 | "but GART IOMMU not available.\n" |
697 | KERN_ERR "WARNING 32bit PCI may malfunction.\n"); | 697 | KERN_WARNING "falling back to iommu=soft.\n"); |
698 | } | 698 | } |
699 | return; | 699 | return; |
700 | } | 700 | } |
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index be3c7a299f02..43930e73f657 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -82,7 +82,6 @@ unsigned long thread_saved_pc(struct task_struct *tsk) | |||
82 | */ | 82 | */ |
83 | void (*pm_idle)(void); | 83 | void (*pm_idle)(void); |
84 | EXPORT_SYMBOL(pm_idle); | 84 | EXPORT_SYMBOL(pm_idle); |
85 | static DEFINE_PER_CPU(unsigned int, cpu_idle_state); | ||
86 | 85 | ||
87 | void disable_hlt(void) | 86 | void disable_hlt(void) |
88 | { | 87 | { |
@@ -190,9 +189,6 @@ void cpu_idle(void) | |||
190 | while (!need_resched()) { | 189 | while (!need_resched()) { |
191 | void (*idle)(void); | 190 | void (*idle)(void); |
192 | 191 | ||
193 | if (__get_cpu_var(cpu_idle_state)) | ||
194 | __get_cpu_var(cpu_idle_state) = 0; | ||
195 | |||
196 | check_pgt_cache(); | 192 | check_pgt_cache(); |
197 | rmb(); | 193 | rmb(); |
198 | idle = pm_idle; | 194 | idle = pm_idle; |
@@ -220,40 +216,19 @@ static void do_nothing(void *unused) | |||
220 | { | 216 | { |
221 | } | 217 | } |
222 | 218 | ||
219 | /* | ||
220 | * cpu_idle_wait - Used to ensure that all the CPUs discard old value of | ||
221 | * pm_idle and update to new pm_idle value. Required while changing pm_idle | ||
222 | * handler on SMP systems. | ||
223 | * | ||
224 | * Caller must have changed pm_idle to the new value before the call. Old | ||
225 | * pm_idle value will not be used by any CPU after the return of this function. | ||
226 | */ | ||
223 | void cpu_idle_wait(void) | 227 | void cpu_idle_wait(void) |
224 | { | 228 | { |
225 | unsigned int cpu, this_cpu = get_cpu(); | 229 | smp_mb(); |
226 | cpumask_t map, tmp = current->cpus_allowed; | 230 | /* kick all the CPUs so that they exit out of pm_idle */ |
227 | 231 | smp_call_function(do_nothing, NULL, 0, 1); | |
228 | set_cpus_allowed(current, cpumask_of_cpu(this_cpu)); | ||
229 | put_cpu(); | ||
230 | |||
231 | cpus_clear(map); | ||
232 | for_each_online_cpu(cpu) { | ||
233 | per_cpu(cpu_idle_state, cpu) = 1; | ||
234 | cpu_set(cpu, map); | ||
235 | } | ||
236 | |||
237 | __get_cpu_var(cpu_idle_state) = 0; | ||
238 | |||
239 | wmb(); | ||
240 | do { | ||
241 | ssleep(1); | ||
242 | for_each_online_cpu(cpu) { | ||
243 | if (cpu_isset(cpu, map) && !per_cpu(cpu_idle_state, cpu)) | ||
244 | cpu_clear(cpu, map); | ||
245 | } | ||
246 | cpus_and(map, map, cpu_online_map); | ||
247 | /* | ||
248 | * We waited 1 sec, if a CPU still did not call idle | ||
249 | * it may be because it is in idle and not waking up | ||
250 | * because it has nothing to do. | ||
251 | * Give all the remaining CPUS a kick. | ||
252 | */ | ||
253 | smp_call_function_mask(map, do_nothing, NULL, 0); | ||
254 | } while (!cpus_empty(map)); | ||
255 | |||
256 | set_cpus_allowed(current, tmp); | ||
257 | } | 232 | } |
258 | EXPORT_SYMBOL_GPL(cpu_idle_wait); | 233 | EXPORT_SYMBOL_GPL(cpu_idle_wait); |
259 | 234 | ||
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 3baf9b9f4c87..46c4c546b499 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -63,7 +63,6 @@ EXPORT_SYMBOL(boot_option_idle_override); | |||
63 | */ | 63 | */ |
64 | void (*pm_idle)(void); | 64 | void (*pm_idle)(void); |
65 | EXPORT_SYMBOL(pm_idle); | 65 | EXPORT_SYMBOL(pm_idle); |
66 | static DEFINE_PER_CPU(unsigned int, cpu_idle_state); | ||
67 | 66 | ||
68 | static ATOMIC_NOTIFIER_HEAD(idle_notifier); | 67 | static ATOMIC_NOTIFIER_HEAD(idle_notifier); |
69 | 68 | ||
@@ -173,9 +172,6 @@ void cpu_idle(void) | |||
173 | while (!need_resched()) { | 172 | while (!need_resched()) { |
174 | void (*idle)(void); | 173 | void (*idle)(void); |
175 | 174 | ||
176 | if (__get_cpu_var(cpu_idle_state)) | ||
177 | __get_cpu_var(cpu_idle_state) = 0; | ||
178 | |||
179 | rmb(); | 175 | rmb(); |
180 | idle = pm_idle; | 176 | idle = pm_idle; |
181 | if (!idle) | 177 | if (!idle) |
@@ -207,40 +203,19 @@ static void do_nothing(void *unused) | |||
207 | { | 203 | { |
208 | } | 204 | } |
209 | 205 | ||
206 | /* | ||
207 | * cpu_idle_wait - Used to ensure that all the CPUs discard old value of | ||
208 | * pm_idle and update to new pm_idle value. Required while changing pm_idle | ||
209 | * handler on SMP systems. | ||
210 | * | ||
211 | * Caller must have changed pm_idle to the new value before the call. Old | ||
212 | * pm_idle value will not be used by any CPU after the return of this function. | ||
213 | */ | ||
210 | void cpu_idle_wait(void) | 214 | void cpu_idle_wait(void) |
211 | { | 215 | { |
212 | unsigned int cpu, this_cpu = get_cpu(); | 216 | smp_mb(); |
213 | cpumask_t map, tmp = current->cpus_allowed; | 217 | /* kick all the CPUs so that they exit out of pm_idle */ |
214 | 218 | smp_call_function(do_nothing, NULL, 0, 1); | |
215 | set_cpus_allowed(current, cpumask_of_cpu(this_cpu)); | ||
216 | put_cpu(); | ||
217 | |||
218 | cpus_clear(map); | ||
219 | for_each_online_cpu(cpu) { | ||
220 | per_cpu(cpu_idle_state, cpu) = 1; | ||
221 | cpu_set(cpu, map); | ||
222 | } | ||
223 | |||
224 | __get_cpu_var(cpu_idle_state) = 0; | ||
225 | |||
226 | wmb(); | ||
227 | do { | ||
228 | ssleep(1); | ||
229 | for_each_online_cpu(cpu) { | ||
230 | if (cpu_isset(cpu, map) && !per_cpu(cpu_idle_state, cpu)) | ||
231 | cpu_clear(cpu, map); | ||
232 | } | ||
233 | cpus_and(map, map, cpu_online_map); | ||
234 | /* | ||
235 | * We waited 1 sec, if a CPU still did not call idle | ||
236 | * it may be because it is in idle and not waking up | ||
237 | * because it has nothing to do. | ||
238 | * Give all the remaining CPUS a kick. | ||
239 | */ | ||
240 | smp_call_function_mask(map, do_nothing, 0, 0); | ||
241 | } while (!cpus_empty(map)); | ||
242 | |||
243 | set_cpus_allowed(current, tmp); | ||
244 | } | 219 | } |
245 | EXPORT_SYMBOL_GPL(cpu_idle_wait); | 220 | EXPORT_SYMBOL_GPL(cpu_idle_wait); |
246 | 221 | ||
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index d5904eef1d31..eb92ccbb3502 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -600,21 +600,6 @@ static int ptrace_bts_read_record(struct task_struct *child, | |||
600 | return sizeof(ret); | 600 | return sizeof(ret); |
601 | } | 601 | } |
602 | 602 | ||
603 | static int ptrace_bts_write_record(struct task_struct *child, | ||
604 | const struct bts_struct *in) | ||
605 | { | ||
606 | int retval; | ||
607 | |||
608 | if (!child->thread.ds_area_msr) | ||
609 | return -ENXIO; | ||
610 | |||
611 | retval = ds_write_bts((void *)child->thread.ds_area_msr, in); | ||
612 | if (retval) | ||
613 | return retval; | ||
614 | |||
615 | return sizeof(*in); | ||
616 | } | ||
617 | |||
618 | static int ptrace_bts_clear(struct task_struct *child) | 603 | static int ptrace_bts_clear(struct task_struct *child) |
619 | { | 604 | { |
620 | if (!child->thread.ds_area_msr) | 605 | if (!child->thread.ds_area_msr) |
@@ -657,75 +642,6 @@ static int ptrace_bts_drain(struct task_struct *child, | |||
657 | return end; | 642 | return end; |
658 | } | 643 | } |
659 | 644 | ||
660 | static int ptrace_bts_realloc(struct task_struct *child, | ||
661 | int size, int reduce_size) | ||
662 | { | ||
663 | unsigned long rlim, vm; | ||
664 | int ret, old_size; | ||
665 | |||
666 | if (size < 0) | ||
667 | return -EINVAL; | ||
668 | |||
669 | old_size = ds_get_bts_size((void *)child->thread.ds_area_msr); | ||
670 | if (old_size < 0) | ||
671 | return old_size; | ||
672 | |||
673 | ret = ds_free((void **)&child->thread.ds_area_msr); | ||
674 | if (ret < 0) | ||
675 | goto out; | ||
676 | |||
677 | size >>= PAGE_SHIFT; | ||
678 | old_size >>= PAGE_SHIFT; | ||
679 | |||
680 | current->mm->total_vm -= old_size; | ||
681 | current->mm->locked_vm -= old_size; | ||
682 | |||
683 | if (size == 0) | ||
684 | goto out; | ||
685 | |||
686 | rlim = current->signal->rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT; | ||
687 | vm = current->mm->total_vm + size; | ||
688 | if (rlim < vm) { | ||
689 | ret = -ENOMEM; | ||
690 | |||
691 | if (!reduce_size) | ||
692 | goto out; | ||
693 | |||
694 | size = rlim - current->mm->total_vm; | ||
695 | if (size <= 0) | ||
696 | goto out; | ||
697 | } | ||
698 | |||
699 | rlim = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT; | ||
700 | vm = current->mm->locked_vm + size; | ||
701 | if (rlim < vm) { | ||
702 | ret = -ENOMEM; | ||
703 | |||
704 | if (!reduce_size) | ||
705 | goto out; | ||
706 | |||
707 | size = rlim - current->mm->locked_vm; | ||
708 | if (size <= 0) | ||
709 | goto out; | ||
710 | } | ||
711 | |||
712 | ret = ds_allocate((void **)&child->thread.ds_area_msr, | ||
713 | size << PAGE_SHIFT); | ||
714 | if (ret < 0) | ||
715 | goto out; | ||
716 | |||
717 | current->mm->total_vm += size; | ||
718 | current->mm->locked_vm += size; | ||
719 | |||
720 | out: | ||
721 | if (child->thread.ds_area_msr) | ||
722 | set_tsk_thread_flag(child, TIF_DS_AREA_MSR); | ||
723 | else | ||
724 | clear_tsk_thread_flag(child, TIF_DS_AREA_MSR); | ||
725 | |||
726 | return ret; | ||
727 | } | ||
728 | |||
729 | static int ptrace_bts_config(struct task_struct *child, | 645 | static int ptrace_bts_config(struct task_struct *child, |
730 | long cfg_size, | 646 | long cfg_size, |
731 | const struct ptrace_bts_config __user *ucfg) | 647 | const struct ptrace_bts_config __user *ucfg) |
@@ -828,6 +744,91 @@ static int ptrace_bts_status(struct task_struct *child, | |||
828 | return sizeof(cfg); | 744 | return sizeof(cfg); |
829 | } | 745 | } |
830 | 746 | ||
747 | |||
748 | static int ptrace_bts_write_record(struct task_struct *child, | ||
749 | const struct bts_struct *in) | ||
750 | { | ||
751 | int retval; | ||
752 | |||
753 | if (!child->thread.ds_area_msr) | ||
754 | return -ENXIO; | ||
755 | |||
756 | retval = ds_write_bts((void *)child->thread.ds_area_msr, in); | ||
757 | if (retval) | ||
758 | return retval; | ||
759 | |||
760 | return sizeof(*in); | ||
761 | } | ||
762 | |||
763 | static int ptrace_bts_realloc(struct task_struct *child, | ||
764 | int size, int reduce_size) | ||
765 | { | ||
766 | unsigned long rlim, vm; | ||
767 | int ret, old_size; | ||
768 | |||
769 | if (size < 0) | ||
770 | return -EINVAL; | ||
771 | |||
772 | old_size = ds_get_bts_size((void *)child->thread.ds_area_msr); | ||
773 | if (old_size < 0) | ||
774 | return old_size; | ||
775 | |||
776 | ret = ds_free((void **)&child->thread.ds_area_msr); | ||
777 | if (ret < 0) | ||
778 | goto out; | ||
779 | |||
780 | size >>= PAGE_SHIFT; | ||
781 | old_size >>= PAGE_SHIFT; | ||
782 | |||
783 | current->mm->total_vm -= old_size; | ||
784 | current->mm->locked_vm -= old_size; | ||
785 | |||
786 | if (size == 0) | ||
787 | goto out; | ||
788 | |||
789 | rlim = current->signal->rlim[RLIMIT_AS].rlim_cur >> PAGE_SHIFT; | ||
790 | vm = current->mm->total_vm + size; | ||
791 | if (rlim < vm) { | ||
792 | ret = -ENOMEM; | ||
793 | |||
794 | if (!reduce_size) | ||
795 | goto out; | ||
796 | |||
797 | size = rlim - current->mm->total_vm; | ||
798 | if (size <= 0) | ||
799 | goto out; | ||
800 | } | ||
801 | |||
802 | rlim = current->signal->rlim[RLIMIT_MEMLOCK].rlim_cur >> PAGE_SHIFT; | ||
803 | vm = current->mm->locked_vm + size; | ||
804 | if (rlim < vm) { | ||
805 | ret = -ENOMEM; | ||
806 | |||
807 | if (!reduce_size) | ||
808 | goto out; | ||
809 | |||
810 | size = rlim - current->mm->locked_vm; | ||
811 | if (size <= 0) | ||
812 | goto out; | ||
813 | } | ||
814 | |||
815 | ret = ds_allocate((void **)&child->thread.ds_area_msr, | ||
816 | size << PAGE_SHIFT); | ||
817 | if (ret < 0) | ||
818 | goto out; | ||
819 | |||
820 | current->mm->total_vm += size; | ||
821 | current->mm->locked_vm += size; | ||
822 | |||
823 | out: | ||
824 | if (child->thread.ds_area_msr) | ||
825 | set_tsk_thread_flag(child, TIF_DS_AREA_MSR); | ||
826 | else | ||
827 | clear_tsk_thread_flag(child, TIF_DS_AREA_MSR); | ||
828 | |||
829 | return ret; | ||
830 | } | ||
831 | |||
831 | void ptrace_bts_take_timestamp(struct task_struct *tsk, | 832 | void ptrace_bts_take_timestamp(struct task_struct *tsk, |
832 | enum bts_qualifier qualifier) | 833 | enum bts_qualifier qualifier) |
833 | { | 834 | { |
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c index a1d7071a51c9..2b3e5d45176b 100644 --- a/arch/x86/kernel/setup_32.c +++ b/arch/x86/kernel/setup_32.c | |||
@@ -406,8 +406,6 @@ static unsigned long __init setup_memory(void) | |||
406 | */ | 406 | */ |
407 | min_low_pfn = PFN_UP(init_pg_tables_end); | 407 | min_low_pfn = PFN_UP(init_pg_tables_end); |
408 | 408 | ||
409 | find_max_pfn(); | ||
410 | |||
411 | max_low_pfn = find_max_low_pfn(); | 409 | max_low_pfn = find_max_low_pfn(); |
412 | 410 | ||
413 | #ifdef CONFIG_HIGHMEM | 411 | #ifdef CONFIG_HIGHMEM |
@@ -764,12 +762,13 @@ void __init setup_arch(char **cmdline_p) | |||
764 | if (efi_enabled) | 762 | if (efi_enabled) |
765 | efi_init(); | 763 | efi_init(); |
766 | 764 | ||
767 | max_low_pfn = setup_memory(); | ||
768 | |||
769 | /* update e820 for memory not covered by WB MTRRs */ | 765 | /* update e820 for memory not covered by WB MTRRs */ |
766 | find_max_pfn(); | ||
770 | mtrr_bp_init(); | 767 | mtrr_bp_init(); |
771 | if (mtrr_trim_uncached_memory(max_pfn)) | 768 | if (mtrr_trim_uncached_memory(max_pfn)) |
772 | max_low_pfn = setup_memory(); | 769 | find_max_pfn(); |
770 | |||
771 | max_low_pfn = setup_memory(); | ||
773 | 772 | ||
774 | #ifdef CONFIG_VMI | 773 | #ifdef CONFIG_VMI |
775 | /* | 774 | /* |
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index 7637dc91c79b..f4f7ecfb898c 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c | |||
@@ -801,7 +801,7 @@ static void __cpuinit srat_detect_node(void) | |||
801 | /* Don't do the funky fallback heuristics the AMD version employs | 801 | /* Don't do the funky fallback heuristics the AMD version employs |
802 | for now. */ | 802 | for now. */ |
803 | node = apicid_to_node[apicid]; | 803 | node = apicid_to_node[apicid]; |
804 | if (node == NUMA_NO_NODE) | 804 | if (node == NUMA_NO_NODE || !node_online(node)) |
805 | node = first_node(node_online_map); | 805 | node = first_node(node_online_map); |
806 | numa_set_node(cpu, node); | 806 | numa_set_node(cpu, node); |
807 | 807 | ||
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c index 9d406cdc847f..071ff4798236 100644 --- a/arch/x86/kernel/step.c +++ b/arch/x86/kernel/step.c | |||
@@ -140,6 +140,9 @@ static int enable_single_step(struct task_struct *child) | |||
140 | */ | 140 | */ |
141 | static void write_debugctlmsr(struct task_struct *child, unsigned long val) | 141 | static void write_debugctlmsr(struct task_struct *child, unsigned long val) |
142 | { | 142 | { |
143 | if (child->thread.debugctlmsr == val) | ||
144 | return; | ||
145 | |||
143 | child->thread.debugctlmsr = val; | 146 | child->thread.debugctlmsr = val; |
144 | 147 | ||
145 | if (child != current) | 148 | if (child != current) |
@@ -165,11 +168,11 @@ static void enable_step(struct task_struct *child, bool block) | |||
165 | write_debugctlmsr(child, | 168 | write_debugctlmsr(child, |
166 | child->thread.debugctlmsr | DEBUGCTLMSR_BTF); | 169 | child->thread.debugctlmsr | DEBUGCTLMSR_BTF); |
167 | } else { | 170 | } else { |
168 | write_debugctlmsr(child, | 171 | write_debugctlmsr(child, |
169 | child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF); | 172 | child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF); |
170 | 173 | ||
171 | if (!child->thread.debugctlmsr) | 174 | if (!child->thread.debugctlmsr) |
172 | clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); | 175 | clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); |
173 | } | 176 | } |
174 | } | 177 | } |
175 | 178 | ||
diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c index 022bcaa3b42e..ab6bf375a307 100644 --- a/arch/x86/kernel/tls.c +++ b/arch/x86/kernel/tls.c | |||
@@ -92,7 +92,7 @@ int do_set_thread_area(struct task_struct *p, int idx, | |||
92 | asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) | 92 | asmlinkage int sys_set_thread_area(struct user_desc __user *u_info) |
93 | { | 93 | { |
94 | int ret = do_set_thread_area(current, -1, u_info, 1); | 94 | int ret = do_set_thread_area(current, -1, u_info, 1); |
95 | prevent_tail_call(ret); | 95 | asmlinkage_protect(1, ret, u_info); |
96 | return ret; | 96 | return ret; |
97 | } | 97 | } |
98 | 98 | ||
@@ -142,7 +142,7 @@ int do_get_thread_area(struct task_struct *p, int idx, | |||
142 | asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) | 142 | asmlinkage int sys_get_thread_area(struct user_desc __user *u_info) |
143 | { | 143 | { |
144 | int ret = do_get_thread_area(current, -1, u_info); | 144 | int ret = do_get_thread_area(current, -1, u_info); |
145 | prevent_tail_call(ret); | 145 | asmlinkage_protect(1, ret, u_info); |
146 | return ret; | 146 | return ret; |
147 | } | 147 | } |
148 | 148 | ||
diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c index f14cfd9d1f94..c2241e04ea5f 100644 --- a/arch/x86/kernel/tsc_32.c +++ b/arch/x86/kernel/tsc_32.c | |||
@@ -256,9 +256,7 @@ time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, void *data) | |||
256 | ref_freq, freq->new); | 256 | ref_freq, freq->new); |
257 | if (!(freq->flags & CPUFREQ_CONST_LOOPS)) { | 257 | if (!(freq->flags & CPUFREQ_CONST_LOOPS)) { |
258 | tsc_khz = cpu_khz; | 258 | tsc_khz = cpu_khz; |
259 | preempt_disable(); | 259 | set_cyc2ns_scale(cpu_khz, freq->cpu); |
260 | set_cyc2ns_scale(cpu_khz, smp_processor_id()); | ||
261 | preempt_enable(); | ||
262 | /* | 260 | /* |
263 | * TSC based sched_clock turns | 261 | * TSC based sched_clock turns |
264 | * to junk w/ cpufreq | 262 | * to junk w/ cpufreq |
diff --git a/arch/x86/kernel/tsc_64.c b/arch/x86/kernel/tsc_64.c index 947554ddabb6..d3bebaaad842 100644 --- a/arch/x86/kernel/tsc_64.c +++ b/arch/x86/kernel/tsc_64.c | |||
@@ -148,9 +148,7 @@ static int time_cpufreq_notifier(struct notifier_block *nb, unsigned long val, | |||
148 | mark_tsc_unstable("cpufreq changes"); | 148 | mark_tsc_unstable("cpufreq changes"); |
149 | } | 149 | } |
150 | 150 | ||
151 | preempt_disable(); | 151 | set_cyc2ns_scale(tsc_khz_ref, freq->cpu); |
152 | set_cyc2ns_scale(tsc_khz_ref, smp_processor_id()); | ||
153 | preempt_enable(); | ||
154 | 152 | ||
155 | return 0; | 153 | return 0; |
156 | } | 154 | } |
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index a104c532ff70..3335b4595efd 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -10,21 +10,19 @@ | |||
10 | * (such as the example in Documentation/lguest/lguest.c) is called the | 10 | * (such as the example in Documentation/lguest/lguest.c) is called the |
11 | * Launcher. | 11 | * Launcher. |
12 | * | 12 | * |
13 | * Secondly, we only run specially modified Guests, not normal kernels. When | 13 | * Secondly, we only run specially modified Guests, not normal kernels: setting |
14 | * you set CONFIG_LGUEST to 'y' or 'm', this automatically sets | 14 | * CONFIG_LGUEST_GUEST to "y" compiles this file into the kernel so it knows |
15 | * CONFIG_LGUEST_GUEST=y, which compiles this file into the kernel so it knows | 15 | * how to be a Guest at boot time. This means that you can use the same kernel |
16 | * how to be a Guest. This means that you can use the same kernel you boot | 16 | * you boot normally (ie. as a Host) as a Guest. |
17 | * normally (ie. as a Host) as a Guest. | ||
18 | * | 17 | * |
19 | * These Guests know that they cannot do privileged operations, such as disable | 18 | * These Guests know that they cannot do privileged operations, such as disable |
20 | * interrupts, and that they have to ask the Host to do such things explicitly. | 19 | * interrupts, and that they have to ask the Host to do such things explicitly. |
21 | * This file consists of all the replacements for such low-level native | 20 | * This file consists of all the replacements for such low-level native |
22 | * hardware operations: these special Guest versions call the Host. | 21 | * hardware operations: these special Guest versions call the Host. |
23 | * | 22 | * |
24 | * So how does the kernel know it's a Guest? The Guest starts at a special | 23 | * So how does the kernel know it's a Guest? We'll see that later, but let's |
25 | * entry point marked with a magic string, which sets up a few things then | 24 | * just say that we end up here where we replace the native functions various |
26 | * calls here. We replace the native functions various "paravirt" structures | 25 | * "paravirt" structures with our Guest versions, then boot like normal. :*/ |
27 | * with our Guest versions, then boot like normal. :*/ | ||
28 | 26 | ||
29 | /* | 27 | /* |
30 | * Copyright (C) 2006, Rusty Russell <rusty@rustcorp.com.au> IBM Corporation. | 28 | * Copyright (C) 2006, Rusty Russell <rusty@rustcorp.com.au> IBM Corporation. |
@@ -134,7 +132,7 @@ static void async_hcall(unsigned long call, unsigned long arg1, | |||
134 | * lguest_leave_lazy_mode(). | 132 | * lguest_leave_lazy_mode(). |
135 | * | 133 | * |
136 | * So, when we're in lazy mode, we call async_hcall() to store the call for | 134 | * So, when we're in lazy mode, we call async_hcall() to store the call for |
137 | * future processing. */ | 135 | * future processing: */ |
138 | static void lazy_hcall(unsigned long call, | 136 | static void lazy_hcall(unsigned long call, |
139 | unsigned long arg1, | 137 | unsigned long arg1, |
140 | unsigned long arg2, | 138 | unsigned long arg2, |
@@ -147,7 +145,7 @@ static void lazy_hcall(unsigned long call, | |||
147 | } | 145 | } |
148 | 146 | ||
149 | /* When lazy mode is turned off reset the per-cpu lazy mode variable and then | 147 | /* When lazy mode is turned off reset the per-cpu lazy mode variable and then |
150 | * issue a hypercall to flush any stored calls. */ | 148 | * issue the do-nothing hypercall to flush any stored calls. */ |
151 | static void lguest_leave_lazy_mode(void) | 149 | static void lguest_leave_lazy_mode(void) |
152 | { | 150 | { |
153 | paravirt_leave_lazy(paravirt_get_lazy_mode()); | 151 | paravirt_leave_lazy(paravirt_get_lazy_mode()); |
@@ -164,7 +162,7 @@ static void lguest_leave_lazy_mode(void) | |||
164 | * | 162 | * |
165 | * So instead we keep an "irq_enabled" field inside our "struct lguest_data", | 163 | * So instead we keep an "irq_enabled" field inside our "struct lguest_data", |
166 | * which the Guest can update with a single instruction. The Host knows to | 164 | * which the Guest can update with a single instruction. The Host knows to |
167 | * check there when it wants to deliver an interrupt. | 165 | * check there before it tries to deliver an interrupt. |
168 | */ | 166 | */ |
169 | 167 | ||
170 | /* save_flags() is expected to return the processor state (ie. "flags"). The | 168 | /* save_flags() is expected to return the processor state (ie. "flags"). The |
@@ -196,10 +194,15 @@ static void irq_enable(void) | |||
196 | /*M:003 Note that we don't check for outstanding interrupts when we re-enable | 194 | /*M:003 Note that we don't check for outstanding interrupts when we re-enable |
197 | * them (or when we unmask an interrupt). This seems to work for the moment, | 195 | * them (or when we unmask an interrupt). This seems to work for the moment, |
198 | * since interrupts are rare and we'll just get the interrupt on the next timer | 196 | * since interrupts are rare and we'll just get the interrupt on the next timer |
199 | * tick, but when we turn on CONFIG_NO_HZ, we should revisit this. One way | 197 | * tick, but now we can run with CONFIG_NO_HZ, we should revisit this. One way |
200 | * would be to put the "irq_enabled" field in a page by itself, and have the | 198 | * would be to put the "irq_enabled" field in a page by itself, and have the |
201 | * Host write-protect it when an interrupt comes in when irqs are disabled. | 199 | * Host write-protect it when an interrupt comes in when irqs are disabled. |
202 | * There will then be a page fault as soon as interrupts are re-enabled. :*/ | 200 | * There will then be a page fault as soon as interrupts are re-enabled. |
201 | * | ||
202 | * A better method is to implement soft interrupt disable generally for x86: | ||
203 | * instead of disabling interrupts, we set a flag. If an interrupt does come | ||
204 | * in, we then disable them for real. This is uncommon, so we could simply use | ||
205 | * a hypercall for interrupt control and not worry about efficiency. :*/ | ||
203 | 206 | ||
204 | /*G:034 | 207 | /*G:034 |
205 | * The Interrupt Descriptor Table (IDT). | 208 | * The Interrupt Descriptor Table (IDT). |
@@ -212,6 +215,10 @@ static void irq_enable(void) | |||
212 | static void lguest_write_idt_entry(gate_desc *dt, | 215 | static void lguest_write_idt_entry(gate_desc *dt, |
213 | int entrynum, const gate_desc *g) | 216 | int entrynum, const gate_desc *g) |
214 | { | 217 | { |
218 | /* The gate_desc structure is 8 bytes long: we hand it to the Host in | ||
219 | * two 32-bit chunks. The whole 32-bit kernel used to hand descriptors | ||
220 | * around like this; typesafety wasn't a big concern in Linux's early | ||
221 | * years. */ | ||
215 | u32 *desc = (u32 *)g; | 222 | u32 *desc = (u32 *)g; |
216 | /* Keep the local copy up to date. */ | 223 | /* Keep the local copy up to date. */ |
217 | native_write_idt_entry(dt, entrynum, g); | 224 | native_write_idt_entry(dt, entrynum, g); |
@@ -243,7 +250,8 @@ static void lguest_load_idt(const struct desc_ptr *desc) | |||
243 | * | 250 | * |
244 | * This is the opposite of the IDT code where we have a LOAD_IDT_ENTRY | 251 | * This is the opposite of the IDT code where we have a LOAD_IDT_ENTRY |
245 | * hypercall and use that repeatedly to load a new IDT. I don't think it | 252 | * hypercall and use that repeatedly to load a new IDT. I don't think it |
246 | * really matters, but wouldn't it be nice if they were the same? | 253 | * really matters, but wouldn't it be nice if they were the same? Wouldn't |
254 | * it be even better if you were the one to send the patch to fix it? | ||
247 | */ | 255 | */ |
248 | static void lguest_load_gdt(const struct desc_ptr *desc) | 256 | static void lguest_load_gdt(const struct desc_ptr *desc) |
249 | { | 257 | { |
@@ -298,9 +306,9 @@ static void lguest_load_tr_desc(void) | |||
298 | 306 | ||
299 | /* The "cpuid" instruction is a way of querying both the CPU identity | 307 | /* The "cpuid" instruction is a way of querying both the CPU identity |
300 | * (manufacturer, model, etc) and its features. It was introduced before the | 308 | * (manufacturer, model, etc) and its features. It was introduced before the |
301 | * Pentium in 1993 and keeps getting extended by both Intel and AMD. As you | 309 | * Pentium in 1993 and keeps getting extended by both Intel, AMD and others. |
302 | * might imagine, after a decade and a half this treatment, it is now a giant | 310 | * As you might imagine, after a decade and a half this treatment, it is now a |
303 | * ball of hair. Its entry in the current Intel manual runs to 28 pages. | 311 | * giant ball of hair. Its entry in the current Intel manual runs to 28 pages. |
304 | * | 312 | * |
305 | * This instruction even it has its own Wikipedia entry. The Wikipedia entry | 313 | * This instruction even it has its own Wikipedia entry. The Wikipedia entry |
306 | * has been translated into 4 languages. I am not making this up! | 314 | * has been translated into 4 languages. I am not making this up! |
@@ -594,17 +602,17 @@ static unsigned long lguest_get_wallclock(void) | |||
594 | return lguest_data.time.tv_sec; | 602 | return lguest_data.time.tv_sec; |
595 | } | 603 | } |
596 | 604 | ||
597 | /* The TSC is a Time Stamp Counter. The Host tells us what speed it runs at, | 605 | /* The TSC is an Intel thing called the Time Stamp Counter. The Host tells us |
598 | * or 0 if it's unusable as a reliable clock source. This matches what we want | 606 | * what speed it runs at, or 0 if it's unusable as a reliable clock source. |
599 | * here: if we return 0 from this function, the x86 TSC clock will not register | 607 | * This matches what we want here: if we return 0 from this function, the x86 |
600 | * itself. */ | 608 | * TSC clock will give up and not register itself. */ |
601 | static unsigned long lguest_cpu_khz(void) | 609 | static unsigned long lguest_cpu_khz(void) |
602 | { | 610 | { |
603 | return lguest_data.tsc_khz; | 611 | return lguest_data.tsc_khz; |
604 | } | 612 | } |
605 | 613 | ||
606 | /* If we can't use the TSC, the kernel falls back to our "lguest_clock", where | 614 | /* If we can't use the TSC, the kernel falls back to our lower-priority |
607 | * we read the time value given to us by the Host. */ | 615 | * "lguest_clock", where we read the time value given to us by the Host. */ |
608 | static cycle_t lguest_clock_read(void) | 616 | static cycle_t lguest_clock_read(void) |
609 | { | 617 | { |
610 | unsigned long sec, nsec; | 618 | unsigned long sec, nsec; |
@@ -648,12 +656,16 @@ static struct clocksource lguest_clock = { | |||
648 | static int lguest_clockevent_set_next_event(unsigned long delta, | 656 | static int lguest_clockevent_set_next_event(unsigned long delta, |
649 | struct clock_event_device *evt) | 657 | struct clock_event_device *evt) |
650 | { | 658 | { |
659 | /* FIXME: I don't think this can ever happen, but James tells me he had | ||
660 | * to put this code in. Maybe we should remove it now. Anyone? */ | ||
651 | if (delta < LG_CLOCK_MIN_DELTA) { | 661 | if (delta < LG_CLOCK_MIN_DELTA) { |
652 | if (printk_ratelimit()) | 662 | if (printk_ratelimit()) |
653 | printk(KERN_DEBUG "%s: small delta %lu ns\n", | 663 | printk(KERN_DEBUG "%s: small delta %lu ns\n", |
654 | __FUNCTION__, delta); | 664 | __FUNCTION__, delta); |
655 | return -ETIME; | 665 | return -ETIME; |
656 | } | 666 | } |
667 | |||
668 | /* Please wake us this far in the future. */ | ||
657 | hcall(LHCALL_SET_CLOCKEVENT, delta, 0, 0); | 669 | hcall(LHCALL_SET_CLOCKEVENT, delta, 0, 0); |
658 | return 0; | 670 | return 0; |
659 | } | 671 | } |
@@ -738,7 +750,7 @@ static void lguest_time_init(void) | |||
738 | * will not tolerate us trying to use that), the stack pointer, and the number | 750 | * will not tolerate us trying to use that), the stack pointer, and the number |
739 | * of pages in the stack. */ | 751 | * of pages in the stack. */ |
740 | static void lguest_load_sp0(struct tss_struct *tss, | 752 | static void lguest_load_sp0(struct tss_struct *tss, |
741 | struct thread_struct *thread) | 753 | struct thread_struct *thread) |
742 | { | 754 | { |
743 | lazy_hcall(LHCALL_SET_STACK, __KERNEL_DS|0x1, thread->sp0, | 755 | lazy_hcall(LHCALL_SET_STACK, __KERNEL_DS|0x1, thread->sp0, |
744 | THREAD_SIZE/PAGE_SIZE); | 756 | THREAD_SIZE/PAGE_SIZE); |
@@ -786,9 +798,8 @@ static void lguest_safe_halt(void) | |||
786 | hcall(LHCALL_HALT, 0, 0, 0); | 798 | hcall(LHCALL_HALT, 0, 0, 0); |
787 | } | 799 | } |
788 | 800 | ||
789 | /* Perhaps CRASH isn't the best name for this hypercall, but we use it to get a | 801 | /* The SHUTDOWN hypercall takes a string to describe what's happening, and |
790 | * message out when we're crashing as well as elegant termination like powering | 802 | * an argument which says whether this to restart (reboot) the Guest or not. |
791 | * off. | ||
792 | * | 803 | * |
793 | * Note that the Host always prefers that the Guest speak in physical addresses | 804 | * Note that the Host always prefers that the Guest speak in physical addresses |
794 | * rather than virtual addresses, so we use __pa() here. */ | 805 | * rather than virtual addresses, so we use __pa() here. */ |
@@ -816,8 +827,9 @@ static struct notifier_block paniced = { | |||
816 | /* Setting up memory is fairly easy. */ | 827 | /* Setting up memory is fairly easy. */ |
817 | static __init char *lguest_memory_setup(void) | 828 | static __init char *lguest_memory_setup(void) |
818 | { | 829 | { |
819 | /* We do this here and not earlier because lockcheck barfs if we do it | 830 | /* We do this here and not earlier because lockcheck used to barf if we |
820 | * before start_kernel() */ | 831 | * did it before start_kernel(). I think we fixed that, so it'd be |
832 | * nice to move it back to lguest_init. Patch welcome... */ | ||
821 | atomic_notifier_chain_register(&panic_notifier_list, &paniced); | 833 | atomic_notifier_chain_register(&panic_notifier_list, &paniced); |
822 | 834 | ||
823 | /* The Linux bootloader header contains an "e820" memory map: the | 835 | /* The Linux bootloader header contains an "e820" memory map: the |
@@ -850,12 +862,19 @@ static __init int early_put_chars(u32 vtermno, const char *buf, int count) | |||
850 | return len; | 862 | return len; |
851 | } | 863 | } |
852 | 864 | ||
865 | /* Rebooting also tells the Host we're finished, but the RESTART flag tells the | ||
866 | * Launcher to reboot us. */ | ||
867 | static void lguest_restart(char *reason) | ||
868 | { | ||
869 | hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0); | ||
870 | } | ||
871 | |||
853 | /*G:050 | 872 | /*G:050 |
854 | * Patching (Powerfully Placating Performance Pedants) | 873 | * Patching (Powerfully Placating Performance Pedants) |
855 | * | 874 | * |
856 | * We have already seen that pv_ops structures let us replace simple | 875 | * We have already seen that pv_ops structures let us replace simple native |
857 | * native instructions with calls to the appropriate back end all throughout | 876 | * instructions with calls to the appropriate back end all throughout the |
858 | * the kernel. This allows the same kernel to run as a Guest and as a native | 877 | * kernel. This allows the same kernel to run as a Guest and as a native |
859 | * kernel, but it's slow because of all the indirect branches. | 878 | * kernel, but it's slow because of all the indirect branches. |
860 | * | 879 | * |
861 | * Remember that David Wheeler quote about "Any problem in computer science can | 880 | * Remember that David Wheeler quote about "Any problem in computer science can |
@@ -908,14 +927,9 @@ static unsigned lguest_patch(u8 type, u16 clobber, void *ibuf, | |||
908 | return insn_len; | 927 | return insn_len; |
909 | } | 928 | } |
910 | 929 | ||
911 | static void lguest_restart(char *reason) | 930 | /*G:030 Once we get to lguest_init(), we know we're a Guest. The various |
912 | { | 931 | * pv_ops structures in the kernel provide points for (almost) every routine we |
913 | hcall(LHCALL_SHUTDOWN, __pa(reason), LGUEST_SHUTDOWN_RESTART, 0); | 932 | * have to override to avoid privileged instructions. */ |
914 | } | ||
915 | |||
916 | /*G:030 Once we get to lguest_init(), we know we're a Guest. The pv_ops | ||
917 | * structures in the kernel provide points for (almost) every routine we have | ||
918 | * to override to avoid privileged instructions. */ | ||
919 | __init void lguest_init(void) | 933 | __init void lguest_init(void) |
920 | { | 934 | { |
921 | /* We're under lguest, paravirt is enabled, and we're running at | 935 | /* We're under lguest, paravirt is enabled, and we're running at |
@@ -1003,9 +1017,9 @@ __init void lguest_init(void) | |||
1003 | * the normal data segment to get through booting. */ | 1017 | * the normal data segment to get through booting. */ |
1004 | asm volatile ("mov %0, %%fs" : : "r" (__KERNEL_DS) : "memory"); | 1018 | asm volatile ("mov %0, %%fs" : : "r" (__KERNEL_DS) : "memory"); |
1005 | 1019 | ||
1006 | /* The Host uses the top of the Guest's virtual address space for the | 1020 | /* The Host<->Guest Switcher lives at the top of our address space, and |
1007 | * Host<->Guest Switcher, and it tells us how big that is in | 1021 | * the Host told us how big it is when we made LGUEST_INIT hypercall: |
1008 | * lguest_data.reserve_mem, set up on the LGUEST_INIT hypercall. */ | 1022 | * it put the answer in lguest_data.reserve_mem */ |
1009 | reserve_top_address(lguest_data.reserve_mem); | 1023 | reserve_top_address(lguest_data.reserve_mem); |
1010 | 1024 | ||
1011 | /* If we don't initialize the lock dependency checker now, it crashes | 1025 | /* If we don't initialize the lock dependency checker now, it crashes |
@@ -1027,6 +1041,7 @@ __init void lguest_init(void) | |||
1027 | /* Math is always hard! */ | 1041 | /* Math is always hard! */ |
1028 | new_cpu_data.hard_math = 1; | 1042 | new_cpu_data.hard_math = 1; |
1029 | 1043 | ||
1044 | /* We don't have features. We have puppies! Puppies! */ | ||
1030 | #ifdef CONFIG_X86_MCE | 1045 | #ifdef CONFIG_X86_MCE |
1031 | mce_disabled = 1; | 1046 | mce_disabled = 1; |
1032 | #endif | 1047 | #endif |
@@ -1044,10 +1059,11 @@ __init void lguest_init(void) | |||
1044 | virtio_cons_early_init(early_put_chars); | 1059 | virtio_cons_early_init(early_put_chars); |
1045 | 1060 | ||
1046 | /* Last of all, we set the power management poweroff hook to point to | 1061 | /* Last of all, we set the power management poweroff hook to point to |
1047 | * the Guest routine to power off. */ | 1062 | * the Guest routine to power off, and the reboot hook to our restart |
1063 | * routine. */ | ||
1048 | pm_power_off = lguest_power_off; | 1064 | pm_power_off = lguest_power_off; |
1049 | |||
1050 | machine_ops.restart = lguest_restart; | 1065 | machine_ops.restart = lguest_restart; |
1066 | |||
1051 | /* Now we're set up, call start_kernel() in init/main.c and we proceed | 1067 | /* Now we're set up, call start_kernel() in init/main.c and we proceed |
1052 | * to boot as normal. It never returns. */ | 1068 | * to boot as normal. It never returns. */ |
1053 | start_kernel(); | 1069 | start_kernel(); |
diff --git a/arch/x86/lguest/i386_head.S b/arch/x86/lguest/i386_head.S index 95b6fbcded63..5c7cef34c9e7 100644 --- a/arch/x86/lguest/i386_head.S +++ b/arch/x86/lguest/i386_head.S | |||
@@ -5,13 +5,20 @@ | |||
5 | #include <asm/thread_info.h> | 5 | #include <asm/thread_info.h> |
6 | #include <asm/processor-flags.h> | 6 | #include <asm/processor-flags.h> |
7 | 7 | ||
8 | /*G:020 This is where we begin: head.S notes that the boot header's platform | 8 | /*G:020 Our story starts with the kernel booting into startup_32 in |
9 | * type field is "1" (lguest), so calls us here. | 9 | * arch/x86/kernel/head_32.S. It expects a boot header, which is created by |
10 | * the bootloader (the Launcher in our case). | ||
11 | * | ||
12 | * The startup_32 function does very little: it clears the uninitialized global | ||
13 | * C variables which we expect to be zero (ie. BSS) and then copies the boot | ||
14 | * header and kernel command line somewhere safe. Finally it checks the | ||
15 | * 'hardware_subarch' field. This was introduced in 2.6.24 for lguest and Xen: | ||
16 | * if it's set to '1' (lguest's assigned number), then it calls us here. | ||
10 | * | 17 | * |
11 | * WARNING: be very careful here! We're running at addresses equal to physical | 18 | * WARNING: be very careful here! We're running at addresses equal to physical |
12 | * addesses (around 0), not above PAGE_OFFSET as most code expectes | 19 | * addesses (around 0), not above PAGE_OFFSET as most code expectes |
13 | * (eg. 0xC0000000). Jumps are relative, so they're OK, but we can't touch any | 20 | * (eg. 0xC0000000). Jumps are relative, so they're OK, but we can't touch any |
14 | * data. | 21 | * data without remembering to subtract __PAGE_OFFSET! |
15 | * | 22 | * |
16 | * The .section line puts this code in .init.text so it will be discarded after | 23 | * The .section line puts this code in .init.text so it will be discarded after |
17 | * boot. */ | 24 | * boot. */ |
@@ -24,7 +31,7 @@ ENTRY(lguest_entry) | |||
24 | int $LGUEST_TRAP_ENTRY | 31 | int $LGUEST_TRAP_ENTRY |
25 | 32 | ||
26 | /* The Host put the toplevel pagetable in lguest_data.pgdir. The movsl | 33 | /* The Host put the toplevel pagetable in lguest_data.pgdir. The movsl |
27 | * instruction uses %esi implicitly as the source for the copy we' | 34 | * instruction uses %esi implicitly as the source for the copy we're |
28 | * about to do. */ | 35 | * about to do. */ |
29 | movl lguest_data - __PAGE_OFFSET + LGUEST_DATA_pgdir, %esi | 36 | movl lguest_data - __PAGE_OFFSET + LGUEST_DATA_pgdir, %esi |
30 | 37 | ||
diff --git a/arch/x86/mach-rdc321x/gpio.c b/arch/x86/mach-rdc321x/gpio.c index 031269163bd6..247f33d3a407 100644 --- a/arch/x86/mach-rdc321x/gpio.c +++ b/arch/x86/mach-rdc321x/gpio.c | |||
@@ -1,91 +1,194 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2007, OpenWrt.org, Florian Fainelli <florian@openwrt.org> | 2 | * GPIO support for RDC SoC R3210/R8610 |
3 | * RDC321x architecture specific GPIO support | 3 | * |
4 | * Copyright (C) 2007, Florian Fainelli <florian@openwrt.org> | ||
5 | * Copyright (C) 2008, Volker Weiss <dev@tintuc.de> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
4 | * | 20 | * |
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License as published by the | ||
7 | * Free Software Foundation; either version 2 of the License, or (at your | ||
8 | * option) any later version. | ||
9 | */ | 21 | */ |
10 | 22 | ||
11 | #include <linux/autoconf.h> | 23 | |
12 | #include <linux/init.h> | 24 | #include <linux/spinlock.h> |
13 | #include <linux/io.h> | 25 | #include <linux/io.h> |
14 | #include <linux/types.h> | 26 | #include <linux/types.h> |
15 | #include <linux/module.h> | 27 | #include <linux/module.h> |
16 | #include <linux/delay.h> | ||
17 | 28 | ||
29 | #include <asm/gpio.h> | ||
18 | #include <asm/mach-rdc321x/rdc321x_defs.h> | 30 | #include <asm/mach-rdc321x/rdc321x_defs.h> |
19 | 31 | ||
20 | static inline int rdc_gpio_is_valid(unsigned gpio) | 32 | |
33 | /* spin lock to protect our private copy of GPIO data register plus | ||
34 | the access to PCI conf registers. */ | ||
35 | static DEFINE_SPINLOCK(gpio_lock); | ||
36 | |||
37 | /* copy of GPIO data registers */ | ||
38 | static u32 gpio_data_reg1; | ||
39 | static u32 gpio_data_reg2; | ||
40 | |||
41 | static u32 gpio_request_data[2]; | ||
42 | |||
43 | |||
44 | static inline void rdc321x_conf_write(unsigned addr, u32 value) | ||
21 | { | 45 | { |
22 | return (gpio <= RDC_MAX_GPIO); | 46 | outl((1 << 31) | (7 << 11) | addr, RDC3210_CFGREG_ADDR); |
47 | outl(value, RDC3210_CFGREG_DATA); | ||
23 | } | 48 | } |
24 | 49 | ||
25 | static unsigned int rdc_gpio_read(unsigned gpio) | 50 | static inline void rdc321x_conf_or(unsigned addr, u32 value) |
26 | { | 51 | { |
27 | unsigned int val; | 52 | outl((1 << 31) | (7 << 11) | addr, RDC3210_CFGREG_ADDR); |
28 | 53 | value |= inl(RDC3210_CFGREG_DATA); | |
29 | val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x84:0x48)); | 54 | outl(value, RDC3210_CFGREG_DATA); |
30 | outl(val, RDC3210_CFGREG_ADDR); | ||
31 | udelay(10); | ||
32 | val = inl(RDC3210_CFGREG_DATA); | ||
33 | val |= (0x1 << (gpio & 0x1F)); | ||
34 | outl(val, RDC3210_CFGREG_DATA); | ||
35 | udelay(10); | ||
36 | val = 0x80000000 | (7 << 11) | ((gpio&0x20?0x88:0x4C)); | ||
37 | outl(val, RDC3210_CFGREG_ADDR); | ||
38 | udelay(10); | ||
39 | val = inl(RDC3210_CFGREG_DATA); | ||
40 | |||
41 | return val; | ||
42 | } | 55 | } |
43 | 56 | ||
44 | static void rdc_gpio_write(unsigned int val) | 57 | static inline u32 rdc321x_conf_read(unsigned addr) |
45 | { | 58 | { |
46 | if (val) { | 59 | outl((1 << 31) | (7 << 11) | addr, RDC3210_CFGREG_ADDR); |
47 | outl(val, RDC3210_CFGREG_DATA); | 60 | |
48 | udelay(10); | 61 | return inl(RDC3210_CFGREG_DATA); |
49 | } | ||
50 | } | 62 | } |
51 | 63 | ||
52 | int rdc_gpio_get_value(unsigned gpio) | 64 | /* configure pin as GPIO */ |
65 | static void rdc321x_configure_gpio(unsigned gpio) | ||
66 | { | ||
67 | unsigned long flags; | ||
68 | |||
69 | spin_lock_irqsave(&gpio_lock, flags); | ||
70 | rdc321x_conf_or(gpio < 32 | ||
71 | ? RDC321X_GPIO_CTRL_REG1 : RDC321X_GPIO_CTRL_REG2, | ||
72 | 1 << (gpio & 0x1f)); | ||
73 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
74 | } | ||
75 | |||
76 | /* initially setup the 2 copies of the gpio data registers. | ||
77 | This function must be called by the platform setup code. */ | ||
78 | void __init rdc321x_gpio_setup() | ||
79 | { | ||
80 | /* this might not be, what others (BIOS, bootloader, etc.) | ||
81 | wrote to these registers before, but it's a good guess. Still | ||
82 | better than just using 0xffffffff. */ | ||
83 | |||
84 | gpio_data_reg1 = rdc321x_conf_read(RDC321X_GPIO_DATA_REG1); | ||
85 | gpio_data_reg2 = rdc321x_conf_read(RDC321X_GPIO_DATA_REG2); | ||
86 | } | ||
87 | |||
88 | /* determine, if gpio number is valid */ | ||
89 | static inline int rdc321x_is_gpio(unsigned gpio) | ||
90 | { | ||
91 | return gpio <= RDC321X_MAX_GPIO; | ||
92 | } | ||
93 | |||
94 | /* request GPIO */ | ||
95 | int rdc_gpio_request(unsigned gpio, const char *label) | ||
53 | { | 96 | { |
54 | if (rdc_gpio_is_valid(gpio)) | 97 | unsigned long flags; |
55 | return (int)rdc_gpio_read(gpio); | 98 | |
56 | else | 99 | if (!rdc321x_is_gpio(gpio)) |
57 | return -EINVAL; | 100 | return -EINVAL; |
101 | |||
102 | spin_lock_irqsave(&gpio_lock, flags); | ||
103 | if (gpio_request_data[(gpio & 0x20) ? 1 : 0] & (1 << (gpio & 0x1f))) | ||
104 | goto inuse; | ||
105 | gpio_request_data[(gpio & 0x20) ? 1 : 0] |= (1 << (gpio & 0x1f)); | ||
106 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
107 | |||
108 | return 0; | ||
109 | inuse: | ||
110 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
111 | return -EINVAL; | ||
58 | } | 112 | } |
59 | EXPORT_SYMBOL(rdc_gpio_get_value); | 113 | EXPORT_SYMBOL(rdc_gpio_request); |
60 | 114 | ||
61 | void rdc_gpio_set_value(unsigned gpio, int value) | 115 | /* release previously-claimed GPIO */ |
116 | void rdc_gpio_free(unsigned gpio) | ||
62 | { | 117 | { |
63 | unsigned int val; | 118 | unsigned long flags; |
64 | 119 | ||
65 | if (!rdc_gpio_is_valid(gpio)) | 120 | if (!rdc321x_is_gpio(gpio)) |
66 | return; | 121 | return; |
67 | 122 | ||
68 | val = rdc_gpio_read(gpio); | 123 | spin_lock_irqsave(&gpio_lock, flags); |
124 | gpio_request_data[(gpio & 0x20) ? 1 : 0] &= ~(1 << (gpio & 0x1f)); | ||
125 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
126 | } | ||
127 | EXPORT_SYMBOL(rdc_gpio_free); | ||
128 | |||
129 | /* read GPIO pin */ | ||
130 | int rdc_gpio_get_value(unsigned gpio) | ||
131 | { | ||
132 | u32 reg; | ||
133 | unsigned long flags; | ||
134 | |||
135 | spin_lock_irqsave(&gpio_lock, flags); | ||
136 | reg = rdc321x_conf_read(gpio < 32 | ||
137 | ? RDC321X_GPIO_DATA_REG1 : RDC321X_GPIO_DATA_REG2); | ||
138 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
69 | 139 | ||
70 | if (value) | 140 | return (1 << (gpio & 0x1f)) & reg ? 1 : 0; |
71 | val &= ~(0x1 << (gpio & 0x1F)); | 141 | } |
72 | else | 142 | EXPORT_SYMBOL(rdc_gpio_get_value); |
73 | val |= (0x1 << (gpio & 0x1F)); | ||
74 | 143 | ||
75 | rdc_gpio_write(val); | 144 | /* set GPIO pin to value */ |
145 | void rdc_gpio_set_value(unsigned gpio, int value) | ||
146 | { | ||
147 | unsigned long flags; | ||
148 | u32 reg; | ||
149 | |||
150 | reg = 1 << (gpio & 0x1f); | ||
151 | if (gpio < 32) { | ||
152 | spin_lock_irqsave(&gpio_lock, flags); | ||
153 | if (value) | ||
154 | gpio_data_reg1 |= reg; | ||
155 | else | ||
156 | gpio_data_reg1 &= ~reg; | ||
157 | rdc321x_conf_write(RDC321X_GPIO_DATA_REG1, gpio_data_reg1); | ||
158 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
159 | } else { | ||
160 | spin_lock_irqsave(&gpio_lock, flags); | ||
161 | if (value) | ||
162 | gpio_data_reg2 |= reg; | ||
163 | else | ||
164 | gpio_data_reg2 &= ~reg; | ||
165 | rdc321x_conf_write(RDC321X_GPIO_DATA_REG2, gpio_data_reg2); | ||
166 | spin_unlock_irqrestore(&gpio_lock, flags); | ||
167 | } | ||
76 | } | 168 | } |
77 | EXPORT_SYMBOL(rdc_gpio_set_value); | 169 | EXPORT_SYMBOL(rdc_gpio_set_value); |
78 | 170 | ||
171 | /* configure GPIO pin as input */ | ||
79 | int rdc_gpio_direction_input(unsigned gpio) | 172 | int rdc_gpio_direction_input(unsigned gpio) |
80 | { | 173 | { |
174 | if (!rdc321x_is_gpio(gpio)) | ||
175 | return -EINVAL; | ||
176 | |||
177 | rdc321x_configure_gpio(gpio); | ||
178 | |||
81 | return 0; | 179 | return 0; |
82 | } | 180 | } |
83 | EXPORT_SYMBOL(rdc_gpio_direction_input); | 181 | EXPORT_SYMBOL(rdc_gpio_direction_input); |
84 | 182 | ||
183 | /* configure GPIO pin as output and set value */ | ||
85 | int rdc_gpio_direction_output(unsigned gpio, int value) | 184 | int rdc_gpio_direction_output(unsigned gpio, int value) |
86 | { | 185 | { |
186 | if (!rdc321x_is_gpio(gpio)) | ||
187 | return -EINVAL; | ||
188 | |||
189 | gpio_set_value(gpio, value); | ||
190 | rdc321x_configure_gpio(gpio); | ||
191 | |||
87 | return 0; | 192 | return 0; |
88 | } | 193 | } |
89 | EXPORT_SYMBOL(rdc_gpio_direction_output); | 194 | EXPORT_SYMBOL(rdc_gpio_direction_output); |
90 | |||
91 | |||
diff --git a/arch/x86/mach-rdc321x/platform.c b/arch/x86/mach-rdc321x/platform.c index dda6024a5862..a037041817c7 100644 --- a/arch/x86/mach-rdc321x/platform.c +++ b/arch/x86/mach-rdc321x/platform.c | |||
@@ -62,6 +62,8 @@ static struct platform_device *rdc321x_devs[] = { | |||
62 | 62 | ||
63 | static int __init rdc_board_setup(void) | 63 | static int __init rdc_board_setup(void) |
64 | { | 64 | { |
65 | rdc321x_gpio_setup(); | ||
66 | |||
65 | return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs)); | 67 | return platform_add_devices(rdc321x_devs, ARRAY_SIZE(rdc321x_devs)); |
66 | } | 68 | } |
67 | 69 | ||
diff --git a/arch/x86/mm/discontig_32.c b/arch/x86/mm/discontig_32.c index c394ca0720b8..8e25e06ff730 100644 --- a/arch/x86/mm/discontig_32.c +++ b/arch/x86/mm/discontig_32.c | |||
@@ -324,7 +324,6 @@ unsigned long __init setup_memory(void) | |||
324 | * this space and use it to adjust the boundary between ZONE_NORMAL | 324 | * this space and use it to adjust the boundary between ZONE_NORMAL |
325 | * and ZONE_HIGHMEM. | 325 | * and ZONE_HIGHMEM. |
326 | */ | 326 | */ |
327 | find_max_pfn(); | ||
328 | get_memcfg_numa(); | 327 | get_memcfg_numa(); |
329 | 328 | ||
330 | kva_pages = calculate_numa_remap_pages(); | 329 | kva_pages = calculate_numa_remap_pages(); |
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index fdc667422df9..ec08d8389850 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c | |||
@@ -91,12 +91,10 @@ static int is_prefetch(struct pt_regs *regs, unsigned long addr, | |||
91 | int prefetch = 0; | 91 | int prefetch = 0; |
92 | unsigned char *max_instr; | 92 | unsigned char *max_instr; |
93 | 93 | ||
94 | #ifdef CONFIG_X86_32 | 94 | /* |
95 | if (!(__supported_pte_mask & _PAGE_NX)) | 95 | * If it was a exec (instruction fetch) fault on NX page, then |
96 | return 0; | 96 | * do not ignore the fault: |
97 | #endif | 97 | */ |
98 | |||
99 | /* If it was a exec fault on NX page, ignore */ | ||
100 | if (error_code & PF_INSTR) | 98 | if (error_code & PF_INSTR) |
101 | return 0; | 99 | return 0; |
102 | 100 | ||
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c index 3d936f232704..9cf33d3ee5bc 100644 --- a/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c | |||
@@ -73,15 +73,15 @@ void *kmap_atomic_prot(struct page *page, enum km_type type, pgprot_t prot) | |||
73 | { | 73 | { |
74 | enum fixed_addresses idx; | 74 | enum fixed_addresses idx; |
75 | unsigned long vaddr; | 75 | unsigned long vaddr; |
76 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ | ||
77 | |||
78 | debug_kmap_atomic_prot(type); | ||
79 | 76 | ||
77 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ | ||
80 | pagefault_disable(); | 78 | pagefault_disable(); |
81 | 79 | ||
82 | if (!PageHighMem(page)) | 80 | if (!PageHighMem(page)) |
83 | return page_address(page); | 81 | return page_address(page); |
84 | 82 | ||
83 | debug_kmap_atomic_prot(type); | ||
84 | |||
85 | idx = type + KM_TYPE_NR*smp_processor_id(); | 85 | idx = type + KM_TYPE_NR*smp_processor_id(); |
86 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | 86 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); |
87 | BUG_ON(!pte_none(*(kmap_pte-idx))); | 87 | BUG_ON(!pte_none(*(kmap_pte-idx))); |
diff --git a/arch/x86/mm/hugetlbpage.c b/arch/x86/mm/hugetlbpage.c index 4fbafb4bc2f0..0b3d567e686d 100644 --- a/arch/x86/mm/hugetlbpage.c +++ b/arch/x86/mm/hugetlbpage.c | |||
@@ -178,7 +178,7 @@ follow_huge_addr(struct mm_struct *mm, unsigned long address, int write) | |||
178 | 178 | ||
179 | page = &pte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)]; | 179 | page = &pte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)]; |
180 | 180 | ||
181 | WARN_ON(!PageCompound(page)); | 181 | WARN_ON(!PageHead(page)); |
182 | 182 | ||
183 | return page; | 183 | return page; |
184 | } | 184 | } |
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 4afaba0ed722..794895c6dcc9 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -137,7 +137,11 @@ static void __iomem *__ioremap(resource_size_t phys_addr, unsigned long size, | |||
137 | switch (mode) { | 137 | switch (mode) { |
138 | case IOR_MODE_UNCACHED: | 138 | case IOR_MODE_UNCACHED: |
139 | default: | 139 | default: |
140 | prot = PAGE_KERNEL_NOCACHE; | 140 | /* |
141 | * FIXME: we will use UC MINUS for now, as video fb drivers | ||
142 | * depend on it. Upcoming ioremap_wc() will fix this behavior. | ||
143 | */ | ||
144 | prot = PAGE_KERNEL_UC_MINUS; | ||
141 | break; | 145 | break; |
142 | case IOR_MODE_CACHED: | 146 | case IOR_MODE_CACHED: |
143 | prot = PAGE_KERNEL; | 147 | prot = PAGE_KERNEL; |
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 14e48b5a94ba..7b79f6be4e7d 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -771,7 +771,7 @@ static inline int change_page_attr_clear(unsigned long addr, int numpages, | |||
771 | int set_memory_uc(unsigned long addr, int numpages) | 771 | int set_memory_uc(unsigned long addr, int numpages) |
772 | { | 772 | { |
773 | return change_page_attr_set(addr, numpages, | 773 | return change_page_attr_set(addr, numpages, |
774 | __pgprot(_PAGE_PCD | _PAGE_PWT)); | 774 | __pgprot(_PAGE_PCD)); |
775 | } | 775 | } |
776 | EXPORT_SYMBOL(set_memory_uc); | 776 | EXPORT_SYMBOL(set_memory_uc); |
777 | 777 | ||
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 8b9ee27805fd..27ee26aedf94 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -95,7 +95,7 @@ struct shared_info *HYPERVISOR_shared_info = (void *)&dummy_shared_info; | |||
95 | * | 95 | * |
96 | * 0: not available, 1: available | 96 | * 0: not available, 1: available |
97 | */ | 97 | */ |
98 | static int have_vcpu_info_placement = 0; | 98 | static int have_vcpu_info_placement = 1; |
99 | 99 | ||
100 | static void __init xen_vcpu_setup(int cpu) | 100 | static void __init xen_vcpu_setup(int cpu) |
101 | { | 101 | { |
@@ -103,6 +103,7 @@ static void __init xen_vcpu_setup(int cpu) | |||
103 | int err; | 103 | int err; |
104 | struct vcpu_info *vcpup; | 104 | struct vcpu_info *vcpup; |
105 | 105 | ||
106 | BUG_ON(HYPERVISOR_shared_info == &dummy_shared_info); | ||
106 | per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; | 107 | per_cpu(xen_vcpu, cpu) = &HYPERVISOR_shared_info->vcpu_info[cpu]; |
107 | 108 | ||
108 | if (!have_vcpu_info_placement) | 109 | if (!have_vcpu_info_placement) |
@@ -666,10 +667,10 @@ static void xen_release_pt_init(u32 pfn) | |||
666 | make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); | 667 | make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); |
667 | } | 668 | } |
668 | 669 | ||
669 | static void pin_pagetable_pfn(unsigned level, unsigned long pfn) | 670 | static void pin_pagetable_pfn(unsigned cmd, unsigned long pfn) |
670 | { | 671 | { |
671 | struct mmuext_op op; | 672 | struct mmuext_op op; |
672 | op.cmd = level; | 673 | op.cmd = cmd; |
673 | op.arg1.mfn = pfn_to_mfn(pfn); | 674 | op.arg1.mfn = pfn_to_mfn(pfn); |
674 | if (HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF)) | 675 | if (HYPERVISOR_mmuext_op(&op, 1, NULL, DOMID_SELF)) |
675 | BUG(); | 676 | BUG(); |
@@ -686,7 +687,8 @@ static void xen_alloc_ptpage(struct mm_struct *mm, u32 pfn, unsigned level) | |||
686 | 687 | ||
687 | if (!PageHighMem(page)) { | 688 | if (!PageHighMem(page)) { |
688 | make_lowmem_page_readonly(__va(PFN_PHYS(pfn))); | 689 | make_lowmem_page_readonly(__va(PFN_PHYS(pfn))); |
689 | pin_pagetable_pfn(level, pfn); | 690 | if (level == PT_PTE) |
691 | pin_pagetable_pfn(MMUEXT_PIN_L1_TABLE, pfn); | ||
690 | } else | 692 | } else |
691 | /* make sure there are no stray mappings of | 693 | /* make sure there are no stray mappings of |
692 | this page */ | 694 | this page */ |
@@ -696,27 +698,39 @@ static void xen_alloc_ptpage(struct mm_struct *mm, u32 pfn, unsigned level) | |||
696 | 698 | ||
697 | static void xen_alloc_pt(struct mm_struct *mm, u32 pfn) | 699 | static void xen_alloc_pt(struct mm_struct *mm, u32 pfn) |
698 | { | 700 | { |
699 | xen_alloc_ptpage(mm, pfn, MMUEXT_PIN_L1_TABLE); | 701 | xen_alloc_ptpage(mm, pfn, PT_PTE); |
700 | } | 702 | } |
701 | 703 | ||
702 | static void xen_alloc_pd(struct mm_struct *mm, u32 pfn) | 704 | static void xen_alloc_pd(struct mm_struct *mm, u32 pfn) |
703 | { | 705 | { |
704 | xen_alloc_ptpage(mm, pfn, MMUEXT_PIN_L2_TABLE); | 706 | xen_alloc_ptpage(mm, pfn, PT_PMD); |
705 | } | 707 | } |
706 | 708 | ||
707 | /* This should never happen until we're OK to use struct page */ | 709 | /* This should never happen until we're OK to use struct page */ |
708 | static void xen_release_pt(u32 pfn) | 710 | static void xen_release_ptpage(u32 pfn, unsigned level) |
709 | { | 711 | { |
710 | struct page *page = pfn_to_page(pfn); | 712 | struct page *page = pfn_to_page(pfn); |
711 | 713 | ||
712 | if (PagePinned(page)) { | 714 | if (PagePinned(page)) { |
713 | if (!PageHighMem(page)) { | 715 | if (!PageHighMem(page)) { |
714 | pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, pfn); | 716 | if (level == PT_PTE) |
717 | pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, pfn); | ||
715 | make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); | 718 | make_lowmem_page_readwrite(__va(PFN_PHYS(pfn))); |
716 | } | 719 | } |
720 | ClearPagePinned(page); | ||
717 | } | 721 | } |
718 | } | 722 | } |
719 | 723 | ||
724 | static void xen_release_pt(u32 pfn) | ||
725 | { | ||
726 | xen_release_ptpage(pfn, PT_PTE); | ||
727 | } | ||
728 | |||
729 | static void xen_release_pd(u32 pfn) | ||
730 | { | ||
731 | xen_release_ptpage(pfn, PT_PMD); | ||
732 | } | ||
733 | |||
720 | #ifdef CONFIG_HIGHPTE | 734 | #ifdef CONFIG_HIGHPTE |
721 | static void *xen_kmap_atomic_pte(struct page *page, enum km_type type) | 735 | static void *xen_kmap_atomic_pte(struct page *page, enum km_type type) |
722 | { | 736 | { |
@@ -805,33 +819,43 @@ static __init void xen_pagetable_setup_start(pgd_t *base) | |||
805 | PFN_DOWN(__pa(xen_start_info->pt_base))); | 819 | PFN_DOWN(__pa(xen_start_info->pt_base))); |
806 | } | 820 | } |
807 | 821 | ||
808 | static __init void xen_pagetable_setup_done(pgd_t *base) | 822 | static __init void setup_shared_info(void) |
809 | { | 823 | { |
810 | /* This will work as long as patching hasn't happened yet | ||
811 | (which it hasn't) */ | ||
812 | pv_mmu_ops.alloc_pt = xen_alloc_pt; | ||
813 | pv_mmu_ops.alloc_pd = xen_alloc_pd; | ||
814 | pv_mmu_ops.release_pt = xen_release_pt; | ||
815 | pv_mmu_ops.release_pd = xen_release_pt; | ||
816 | pv_mmu_ops.set_pte = xen_set_pte; | ||
817 | |||
818 | if (!xen_feature(XENFEAT_auto_translated_physmap)) { | 824 | if (!xen_feature(XENFEAT_auto_translated_physmap)) { |
825 | unsigned long addr = fix_to_virt(FIX_PARAVIRT_BOOTMAP); | ||
826 | |||
819 | /* | 827 | /* |
820 | * Create a mapping for the shared info page. | 828 | * Create a mapping for the shared info page. |
821 | * Should be set_fixmap(), but shared_info is a machine | 829 | * Should be set_fixmap(), but shared_info is a machine |
822 | * address with no corresponding pseudo-phys address. | 830 | * address with no corresponding pseudo-phys address. |
823 | */ | 831 | */ |
824 | set_pte_mfn(fix_to_virt(FIX_PARAVIRT_BOOTMAP), | 832 | set_pte_mfn(addr, |
825 | PFN_DOWN(xen_start_info->shared_info), | 833 | PFN_DOWN(xen_start_info->shared_info), |
826 | PAGE_KERNEL); | 834 | PAGE_KERNEL); |
827 | 835 | ||
828 | HYPERVISOR_shared_info = | 836 | HYPERVISOR_shared_info = (struct shared_info *)addr; |
829 | (struct shared_info *)fix_to_virt(FIX_PARAVIRT_BOOTMAP); | ||
830 | |||
831 | } else | 837 | } else |
832 | HYPERVISOR_shared_info = | 838 | HYPERVISOR_shared_info = |
833 | (struct shared_info *)__va(xen_start_info->shared_info); | 839 | (struct shared_info *)__va(xen_start_info->shared_info); |
834 | 840 | ||
841 | #ifndef CONFIG_SMP | ||
842 | /* In UP this is as good a place as any to set up shared info */ | ||
843 | xen_setup_vcpu_info_placement(); | ||
844 | #endif | ||
845 | } | ||
846 | |||
847 | static __init void xen_pagetable_setup_done(pgd_t *base) | ||
848 | { | ||
849 | /* This will work as long as patching hasn't happened yet | ||
850 | (which it hasn't) */ | ||
851 | pv_mmu_ops.alloc_pt = xen_alloc_pt; | ||
852 | pv_mmu_ops.alloc_pd = xen_alloc_pd; | ||
853 | pv_mmu_ops.release_pt = xen_release_pt; | ||
854 | pv_mmu_ops.release_pd = xen_release_pd; | ||
855 | pv_mmu_ops.set_pte = xen_set_pte; | ||
856 | |||
857 | setup_shared_info(); | ||
858 | |||
835 | /* Actually pin the pagetable down, but we can't set PG_pinned | 859 | /* Actually pin the pagetable down, but we can't set PG_pinned |
836 | yet because the page structures don't exist yet. */ | 860 | yet because the page structures don't exist yet. */ |
837 | { | 861 | { |
@@ -1182,15 +1206,9 @@ asmlinkage void __init xen_start_kernel(void) | |||
1182 | x86_write_percpu(xen_cr3, __pa(pgd)); | 1206 | x86_write_percpu(xen_cr3, __pa(pgd)); |
1183 | x86_write_percpu(xen_current_cr3, __pa(pgd)); | 1207 | x86_write_percpu(xen_current_cr3, __pa(pgd)); |
1184 | 1208 | ||
1185 | #ifdef CONFIG_SMP | ||
1186 | /* Don't do the full vcpu_info placement stuff until we have a | 1209 | /* Don't do the full vcpu_info placement stuff until we have a |
1187 | possible map. */ | 1210 | possible map and a non-dummy shared_info. */ |
1188 | per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0]; | 1211 | per_cpu(xen_vcpu, 0) = &HYPERVISOR_shared_info->vcpu_info[0]; |
1189 | #else | ||
1190 | /* May as well do it now, since there's no good time to call | ||
1191 | it later on UP. */ | ||
1192 | xen_setup_vcpu_info_placement(); | ||
1193 | #endif | ||
1194 | 1212 | ||
1195 | pv_info.kernel_rpl = 1; | 1213 | pv_info.kernel_rpl = 1; |
1196 | if (xen_feature(XENFEAT_supervisor_mode_kernel)) | 1214 | if (xen_feature(XENFEAT_supervisor_mode_kernel)) |
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 0144395448ae..2a054ef2a3da 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -310,13 +310,6 @@ pgd_t xen_make_pgd(unsigned long pgd) | |||
310 | } | 310 | } |
311 | #endif /* CONFIG_X86_PAE */ | 311 | #endif /* CONFIG_X86_PAE */ |
312 | 312 | ||
313 | enum pt_level { | ||
314 | PT_PGD, | ||
315 | PT_PUD, | ||
316 | PT_PMD, | ||
317 | PT_PTE | ||
318 | }; | ||
319 | |||
320 | /* | 313 | /* |
321 | (Yet another) pagetable walker. This one is intended for pinning a | 314 | (Yet another) pagetable walker. This one is intended for pinning a |
322 | pagetable. This means that it walks a pagetable and calls the | 315 | pagetable. This means that it walks a pagetable and calls the |
diff --git a/arch/x86/xen/mmu.h b/arch/x86/xen/mmu.h index c9ff27f3ac3a..b5e189b1519d 100644 --- a/arch/x86/xen/mmu.h +++ b/arch/x86/xen/mmu.h | |||
@@ -3,6 +3,13 @@ | |||
3 | #include <linux/linkage.h> | 3 | #include <linux/linkage.h> |
4 | #include <asm/page.h> | 4 | #include <asm/page.h> |
5 | 5 | ||
6 | enum pt_level { | ||
7 | PT_PGD, | ||
8 | PT_PUD, | ||
9 | PT_PMD, | ||
10 | PT_PTE | ||
11 | }; | ||
12 | |||
6 | /* | 13 | /* |
7 | * Page-directory addresses above 4GB do not fit into architectural %cr3. | 14 | * Page-directory addresses above 4GB do not fit into architectural %cr3. |
8 | * When accessing %cr3, or equivalent field in vcpu_guest_context, guests | 15 | * When accessing %cr3, or equivalent field in vcpu_guest_context, guests |
diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S index 1a43b60c0c62..6b7190449d07 100644 --- a/arch/x86/xen/xen-asm.S +++ b/arch/x86/xen/xen-asm.S | |||
@@ -33,12 +33,17 @@ | |||
33 | events, then enter the hypervisor to get them handled. | 33 | events, then enter the hypervisor to get them handled. |
34 | */ | 34 | */ |
35 | ENTRY(xen_irq_enable_direct) | 35 | ENTRY(xen_irq_enable_direct) |
36 | /* Clear mask and test pending */ | 36 | /* Unmask events */ |
37 | andw $0x00ff, PER_CPU_VAR(xen_vcpu_info)+XEN_vcpu_info_pending | 37 | movb $0, PER_CPU_VAR(xen_vcpu_info)+XEN_vcpu_info_mask |
38 | |||
38 | /* Preempt here doesn't matter because that will deal with | 39 | /* Preempt here doesn't matter because that will deal with |
39 | any pending interrupts. The pending check may end up being | 40 | any pending interrupts. The pending check may end up being |
40 | run on the wrong CPU, but that doesn't hurt. */ | 41 | run on the wrong CPU, but that doesn't hurt. */ |
42 | |||
43 | /* Test for pending */ | ||
44 | testb $0xff, PER_CPU_VAR(xen_vcpu_info)+XEN_vcpu_info_pending | ||
41 | jz 1f | 45 | jz 1f |
46 | |||
42 | 2: call check_events | 47 | 2: call check_events |
43 | 1: | 48 | 1: |
44 | ENDPATCH(xen_irq_enable_direct) | 49 | ENDPATCH(xen_irq_enable_direct) |
diff --git a/block/blk-settings.c b/block/blk-settings.c index 1344a0ea5cc6..5713f7e5cbd2 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c | |||
@@ -140,7 +140,7 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_addr) | |||
140 | /* Assume anything <= 4GB can be handled by IOMMU. | 140 | /* Assume anything <= 4GB can be handled by IOMMU. |
141 | Actually some IOMMUs can handle everything, but I don't | 141 | Actually some IOMMUs can handle everything, but I don't |
142 | know of a way to test this here. */ | 142 | know of a way to test this here. */ |
143 | if (b_pfn <= (min_t(u64, 0xffffffff, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) | 143 | if (b_pfn < (min_t(u64, 0x100000000UL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) |
144 | dma = 1; | 144 | dma = 1; |
145 | q->bounce_pfn = max_low_pfn; | 145 | q->bounce_pfn = max_low_pfn; |
146 | #else | 146 | #else |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 0f962ecae91f..f4e1006c253d 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -1143,24 +1143,37 @@ static void cfq_put_queue(struct cfq_queue *cfqq) | |||
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | /* | 1145 | /* |
1146 | * Call func for each cic attached to this ioc. Returns number of cic's seen. | 1146 | * Call func for each cic attached to this ioc. |
1147 | */ | 1147 | */ |
1148 | static unsigned int | 1148 | static void |
1149 | call_for_each_cic(struct io_context *ioc, | 1149 | call_for_each_cic(struct io_context *ioc, |
1150 | void (*func)(struct io_context *, struct cfq_io_context *)) | 1150 | void (*func)(struct io_context *, struct cfq_io_context *)) |
1151 | { | 1151 | { |
1152 | struct cfq_io_context *cic; | 1152 | struct cfq_io_context *cic; |
1153 | struct hlist_node *n; | 1153 | struct hlist_node *n; |
1154 | int called = 0; | ||
1155 | 1154 | ||
1156 | rcu_read_lock(); | 1155 | rcu_read_lock(); |
1157 | hlist_for_each_entry_rcu(cic, n, &ioc->cic_list, cic_list) { | 1156 | hlist_for_each_entry_rcu(cic, n, &ioc->cic_list, cic_list) |
1158 | func(ioc, cic); | 1157 | func(ioc, cic); |
1159 | called++; | ||
1160 | } | ||
1161 | rcu_read_unlock(); | 1158 | rcu_read_unlock(); |
1159 | } | ||
1160 | |||
1161 | static void cfq_cic_free_rcu(struct rcu_head *head) | ||
1162 | { | ||
1163 | struct cfq_io_context *cic; | ||
1164 | |||
1165 | cic = container_of(head, struct cfq_io_context, rcu_head); | ||
1166 | |||
1167 | kmem_cache_free(cfq_ioc_pool, cic); | ||
1168 | elv_ioc_count_dec(ioc_count); | ||
1162 | 1169 | ||
1163 | return called; | 1170 | if (ioc_gone && !elv_ioc_count_read(ioc_count)) |
1171 | complete(ioc_gone); | ||
1172 | } | ||
1173 | |||
1174 | static void cfq_cic_free(struct cfq_io_context *cic) | ||
1175 | { | ||
1176 | call_rcu(&cic->rcu_head, cfq_cic_free_rcu); | ||
1164 | } | 1177 | } |
1165 | 1178 | ||
1166 | static void cic_free_func(struct io_context *ioc, struct cfq_io_context *cic) | 1179 | static void cic_free_func(struct io_context *ioc, struct cfq_io_context *cic) |
@@ -1174,24 +1187,18 @@ static void cic_free_func(struct io_context *ioc, struct cfq_io_context *cic) | |||
1174 | hlist_del_rcu(&cic->cic_list); | 1187 | hlist_del_rcu(&cic->cic_list); |
1175 | spin_unlock_irqrestore(&ioc->lock, flags); | 1188 | spin_unlock_irqrestore(&ioc->lock, flags); |
1176 | 1189 | ||
1177 | kmem_cache_free(cfq_ioc_pool, cic); | 1190 | cfq_cic_free(cic); |
1178 | } | 1191 | } |
1179 | 1192 | ||
1180 | static void cfq_free_io_context(struct io_context *ioc) | 1193 | static void cfq_free_io_context(struct io_context *ioc) |
1181 | { | 1194 | { |
1182 | int freed; | ||
1183 | |||
1184 | /* | 1195 | /* |
1185 | * ioc->refcount is zero here, so no more cic's are allowed to be | 1196 | * ioc->refcount is zero here, or we are called from elv_unregister(), |
1186 | * linked into this ioc. So it should be ok to iterate over the known | 1197 | * so no more cic's are allowed to be linked into this ioc. So it |
1187 | * list, we will see all cic's since no new ones are added. | 1198 | * should be ok to iterate over the known list, we will see all cic's |
1199 | * since no new ones are added. | ||
1188 | */ | 1200 | */ |
1189 | freed = call_for_each_cic(ioc, cic_free_func); | 1201 | call_for_each_cic(ioc, cic_free_func); |
1190 | |||
1191 | elv_ioc_count_mod(ioc_count, -freed); | ||
1192 | |||
1193 | if (ioc_gone && !elv_ioc_count_read(ioc_count)) | ||
1194 | complete(ioc_gone); | ||
1195 | } | 1202 | } |
1196 | 1203 | ||
1197 | static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq) | 1204 | static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq) |
@@ -1207,6 +1214,8 @@ static void cfq_exit_cfqq(struct cfq_data *cfqd, struct cfq_queue *cfqq) | |||
1207 | static void __cfq_exit_single_io_context(struct cfq_data *cfqd, | 1214 | static void __cfq_exit_single_io_context(struct cfq_data *cfqd, |
1208 | struct cfq_io_context *cic) | 1215 | struct cfq_io_context *cic) |
1209 | { | 1216 | { |
1217 | struct io_context *ioc = cic->ioc; | ||
1218 | |||
1210 | list_del_init(&cic->queue_list); | 1219 | list_del_init(&cic->queue_list); |
1211 | 1220 | ||
1212 | /* | 1221 | /* |
@@ -1216,6 +1225,9 @@ static void __cfq_exit_single_io_context(struct cfq_data *cfqd, | |||
1216 | cic->dead_key = (unsigned long) cic->key; | 1225 | cic->dead_key = (unsigned long) cic->key; |
1217 | cic->key = NULL; | 1226 | cic->key = NULL; |
1218 | 1227 | ||
1228 | if (ioc->ioc_data == cic) | ||
1229 | rcu_assign_pointer(ioc->ioc_data, NULL); | ||
1230 | |||
1219 | if (cic->cfqq[ASYNC]) { | 1231 | if (cic->cfqq[ASYNC]) { |
1220 | cfq_exit_cfqq(cfqd, cic->cfqq[ASYNC]); | 1232 | cfq_exit_cfqq(cfqd, cic->cfqq[ASYNC]); |
1221 | cic->cfqq[ASYNC] = NULL; | 1233 | cic->cfqq[ASYNC] = NULL; |
@@ -1248,7 +1260,6 @@ static void cfq_exit_single_io_context(struct io_context *ioc, | |||
1248 | */ | 1260 | */ |
1249 | static void cfq_exit_io_context(struct io_context *ioc) | 1261 | static void cfq_exit_io_context(struct io_context *ioc) |
1250 | { | 1262 | { |
1251 | rcu_assign_pointer(ioc->ioc_data, NULL); | ||
1252 | call_for_each_cic(ioc, cfq_exit_single_io_context); | 1263 | call_for_each_cic(ioc, cfq_exit_single_io_context); |
1253 | } | 1264 | } |
1254 | 1265 | ||
@@ -1458,15 +1469,6 @@ cfq_get_queue(struct cfq_data *cfqd, int is_sync, struct io_context *ioc, | |||
1458 | return cfqq; | 1469 | return cfqq; |
1459 | } | 1470 | } |
1460 | 1471 | ||
1461 | static void cfq_cic_free(struct cfq_io_context *cic) | ||
1462 | { | ||
1463 | kmem_cache_free(cfq_ioc_pool, cic); | ||
1464 | elv_ioc_count_dec(ioc_count); | ||
1465 | |||
1466 | if (ioc_gone && !elv_ioc_count_read(ioc_count)) | ||
1467 | complete(ioc_gone); | ||
1468 | } | ||
1469 | |||
1470 | /* | 1472 | /* |
1471 | * We drop cfq io contexts lazily, so we may find a dead one. | 1473 | * We drop cfq io contexts lazily, so we may find a dead one. |
1472 | */ | 1474 | */ |
@@ -1480,8 +1482,7 @@ cfq_drop_dead_cic(struct cfq_data *cfqd, struct io_context *ioc, | |||
1480 | 1482 | ||
1481 | spin_lock_irqsave(&ioc->lock, flags); | 1483 | spin_lock_irqsave(&ioc->lock, flags); |
1482 | 1484 | ||
1483 | if (ioc->ioc_data == cic) | 1485 | BUG_ON(ioc->ioc_data == cic); |
1484 | rcu_assign_pointer(ioc->ioc_data, NULL); | ||
1485 | 1486 | ||
1486 | radix_tree_delete(&ioc->radix_root, (unsigned long) cfqd); | 1487 | radix_tree_delete(&ioc->radix_root, (unsigned long) cfqd); |
1487 | hlist_del_rcu(&cic->cic_list); | 1488 | hlist_del_rcu(&cic->cic_list); |
@@ -2138,7 +2139,7 @@ static int __init cfq_slab_setup(void) | |||
2138 | if (!cfq_pool) | 2139 | if (!cfq_pool) |
2139 | goto fail; | 2140 | goto fail; |
2140 | 2141 | ||
2141 | cfq_ioc_pool = KMEM_CACHE(cfq_io_context, SLAB_DESTROY_BY_RCU); | 2142 | cfq_ioc_pool = KMEM_CACHE(cfq_io_context, 0); |
2142 | if (!cfq_ioc_pool) | 2143 | if (!cfq_ioc_pool) |
2143 | goto fail; | 2144 | goto fail; |
2144 | 2145 | ||
@@ -2286,7 +2287,6 @@ static void __exit cfq_exit(void) | |||
2286 | smp_wmb(); | 2287 | smp_wmb(); |
2287 | if (elv_ioc_count_read(ioc_count)) | 2288 | if (elv_ioc_count_read(ioc_count)) |
2288 | wait_for_completion(ioc_gone); | 2289 | wait_for_completion(ioc_gone); |
2289 | synchronize_rcu(); | ||
2290 | cfq_slab_kill(); | 2290 | cfq_slab_kill(); |
2291 | } | 2291 | } |
2292 | 2292 | ||
diff --git a/crypto/xcbc.c b/crypto/xcbc.c index 2feb0f239c38..b63b633e549c 100644 --- a/crypto/xcbc.c +++ b/crypto/xcbc.c | |||
@@ -116,13 +116,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc, | |||
116 | struct crypto_xcbc_ctx *ctx = crypto_hash_ctx_aligned(parent); | 116 | struct crypto_xcbc_ctx *ctx = crypto_hash_ctx_aligned(parent); |
117 | struct crypto_cipher *tfm = ctx->child; | 117 | struct crypto_cipher *tfm = ctx->child; |
118 | int bs = crypto_hash_blocksize(parent); | 118 | int bs = crypto_hash_blocksize(parent); |
119 | unsigned int i = 0; | ||
120 | 119 | ||
121 | do { | 120 | for (;;) { |
122 | 121 | struct page *pg = sg_page(sg); | |
123 | struct page *pg = sg_page(&sg[i]); | 122 | unsigned int offset = sg->offset; |
124 | unsigned int offset = sg[i].offset; | 123 | unsigned int slen = sg->length; |
125 | unsigned int slen = sg[i].length; | ||
126 | 124 | ||
127 | if (unlikely(slen > nbytes)) | 125 | if (unlikely(slen > nbytes)) |
128 | slen = nbytes; | 126 | slen = nbytes; |
@@ -182,8 +180,11 @@ static int crypto_xcbc_digest_update2(struct hash_desc *pdesc, | |||
182 | offset = 0; | 180 | offset = 0; |
183 | pg++; | 181 | pg++; |
184 | } | 182 | } |
185 | i++; | 183 | |
186 | } while (nbytes>0); | 184 | if (!nbytes) |
185 | break; | ||
186 | sg = scatterwalk_sg_next(sg); | ||
187 | } | ||
187 | 188 | ||
188 | return 0; | 189 | return 0; |
189 | } | 190 | } |
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 36a68fa114e3..a825b431b64f 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
@@ -822,7 +822,7 @@ static int acpi_processor_remove(struct acpi_device *device, int type) | |||
822 | } | 822 | } |
823 | 823 | ||
824 | processors[pr->id] = NULL; | 824 | processors[pr->id] = NULL; |
825 | 825 | processor_device_array[pr->id] = NULL; | |
826 | kfree(pr); | 826 | kfree(pr); |
827 | 827 | ||
828 | return 0; | 828 | return 0; |
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index e8e2d8869236..788da9781f80 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -1487,7 +1487,6 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, | |||
1487 | return 0; | 1487 | return 0; |
1488 | } | 1488 | } |
1489 | 1489 | ||
1490 | acpi_unlazy_tlb(smp_processor_id()); | ||
1491 | /* | 1490 | /* |
1492 | * Must be done before busmaster disable as we might need to | 1491 | * Must be done before busmaster disable as we might need to |
1493 | * access HPET ! | 1492 | * access HPET ! |
@@ -1577,6 +1576,8 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, | |||
1577 | return 0; | 1576 | return 0; |
1578 | } | 1577 | } |
1579 | 1578 | ||
1579 | acpi_unlazy_tlb(smp_processor_id()); | ||
1580 | |||
1580 | /* Tell the scheduler that we are going deep-idle: */ | 1581 | /* Tell the scheduler that we are going deep-idle: */ |
1581 | sched_clock_idle_sleep_event(); | 1582 | sched_clock_idle_sleep_event(); |
1582 | /* | 1583 | /* |
@@ -1692,7 +1693,9 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr) | |||
1692 | switch (cx->type) { | 1693 | switch (cx->type) { |
1693 | case ACPI_STATE_C1: | 1694 | case ACPI_STATE_C1: |
1694 | state->flags |= CPUIDLE_FLAG_SHALLOW; | 1695 | state->flags |= CPUIDLE_FLAG_SHALLOW; |
1695 | state->flags |= CPUIDLE_FLAG_TIME_VALID; | 1696 | if (cx->entry_method == ACPI_CSTATE_FFH) |
1697 | state->flags |= CPUIDLE_FLAG_TIME_VALID; | ||
1698 | |||
1696 | state->enter = acpi_idle_enter_c1; | 1699 | state->enter = acpi_idle_enter_c1; |
1697 | dev->safe_state = state; | 1700 | dev->safe_state = state; |
1698 | break; | 1701 | break; |
diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c index a2cf3008ce6c..bcf2c70fca87 100644 --- a/drivers/acpi/sbshc.c +++ b/drivers/acpi/sbshc.c | |||
@@ -130,7 +130,6 @@ static int acpi_smbus_transaction(struct acpi_smb_hc *hc, u8 protocol, | |||
130 | goto end; | 130 | goto end; |
131 | } | 131 | } |
132 | smb_hc_write(hc, ACPI_SMB_COMMAND, command); | 132 | smb_hc_write(hc, ACPI_SMB_COMMAND, command); |
133 | smb_hc_write(hc, ACPI_SMB_COMMAND, command); | ||
134 | if (!(protocol & 0x01)) { | 133 | if (!(protocol & 0x01)) { |
135 | smb_hc_write(hc, ACPI_SMB_BLOCK_COUNT, length); | 134 | smb_hc_write(hc, ACPI_SMB_BLOCK_COUNT, length); |
136 | for (i = 0; i < length; ++i) | 135 | for (i = 0; i < length; ++i) |
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 57570ac47803..e6ce262b5d44 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c | |||
@@ -39,20 +39,26 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias, | |||
39 | int size) | 39 | int size) |
40 | { | 40 | { |
41 | int len; | 41 | int len; |
42 | int count; | ||
42 | 43 | ||
43 | if (!acpi_dev->flags.hardware_id) | 44 | if (!acpi_dev->flags.hardware_id && !acpi_dev->flags.compatible_ids) |
44 | return -ENODEV; | 45 | return -ENODEV; |
45 | 46 | ||
46 | len = snprintf(modalias, size, "acpi:%s:", | 47 | len = snprintf(modalias, size, "acpi:"); |
47 | acpi_dev->pnp.hardware_id); | ||
48 | if (len < 0 || len >= size) | ||
49 | return -EINVAL; | ||
50 | size -= len; | 48 | size -= len; |
51 | 49 | ||
50 | if (acpi_dev->flags.hardware_id) { | ||
51 | count = snprintf(&modalias[len], size, "%s:", | ||
52 | acpi_dev->pnp.hardware_id); | ||
53 | if (count < 0 || count >= size) | ||
54 | return -EINVAL; | ||
55 | len += count; | ||
56 | size -= count; | ||
57 | } | ||
58 | |||
52 | if (acpi_dev->flags.compatible_ids) { | 59 | if (acpi_dev->flags.compatible_ids) { |
53 | struct acpi_compatible_id_list *cid_list; | 60 | struct acpi_compatible_id_list *cid_list; |
54 | int i; | 61 | int i; |
55 | int count; | ||
56 | 62 | ||
57 | cid_list = acpi_dev->pnp.cid_list; | 63 | cid_list = acpi_dev->pnp.cid_list; |
58 | for (i = 0; i < cid_list->count; i++) { | 64 | for (i = 0; i < cid_list->count; i++) { |
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c index d2f71a54726c..71183eea7906 100644 --- a/drivers/acpi/sleep/main.c +++ b/drivers/acpi/sleep/main.c | |||
@@ -26,21 +26,6 @@ u8 sleep_states[ACPI_S_STATE_COUNT]; | |||
26 | 26 | ||
27 | #ifdef CONFIG_PM_SLEEP | 27 | #ifdef CONFIG_PM_SLEEP |
28 | static u32 acpi_target_sleep_state = ACPI_STATE_S0; | 28 | static u32 acpi_target_sleep_state = ACPI_STATE_S0; |
29 | static bool acpi_sleep_finish_wake_up; | ||
30 | |||
31 | /* | ||
32 | * ACPI 2.0 and later want us to execute _PTS after suspending devices, so we | ||
33 | * allow the user to request that behavior by using the 'acpi_new_pts_ordering' | ||
34 | * kernel command line option that causes the following variable to be set. | ||
35 | */ | ||
36 | static bool new_pts_ordering; | ||
37 | |||
38 | static int __init acpi_new_pts_ordering(char *str) | ||
39 | { | ||
40 | new_pts_ordering = true; | ||
41 | return 1; | ||
42 | } | ||
43 | __setup("acpi_new_pts_ordering", acpi_new_pts_ordering); | ||
44 | #endif | 29 | #endif |
45 | 30 | ||
46 | static int acpi_sleep_prepare(u32 acpi_state) | 31 | static int acpi_sleep_prepare(u32 acpi_state) |
@@ -91,14 +76,6 @@ static int acpi_pm_begin(suspend_state_t pm_state) | |||
91 | 76 | ||
92 | if (sleep_states[acpi_state]) { | 77 | if (sleep_states[acpi_state]) { |
93 | acpi_target_sleep_state = acpi_state; | 78 | acpi_target_sleep_state = acpi_state; |
94 | if (new_pts_ordering) | ||
95 | return 0; | ||
96 | |||
97 | error = acpi_sleep_prepare(acpi_state); | ||
98 | if (error) | ||
99 | acpi_target_sleep_state = ACPI_STATE_S0; | ||
100 | else | ||
101 | acpi_sleep_finish_wake_up = true; | ||
102 | } else { | 79 | } else { |
103 | printk(KERN_ERR "ACPI does not support this state: %d\n", | 80 | printk(KERN_ERR "ACPI does not support this state: %d\n", |
104 | pm_state); | 81 | pm_state); |
@@ -116,14 +93,11 @@ static int acpi_pm_begin(suspend_state_t pm_state) | |||
116 | 93 | ||
117 | static int acpi_pm_prepare(void) | 94 | static int acpi_pm_prepare(void) |
118 | { | 95 | { |
119 | if (new_pts_ordering) { | 96 | int error = acpi_sleep_prepare(acpi_target_sleep_state); |
120 | int error = acpi_sleep_prepare(acpi_target_sleep_state); | ||
121 | 97 | ||
122 | if (error) { | 98 | if (error) { |
123 | acpi_target_sleep_state = ACPI_STATE_S0; | 99 | acpi_target_sleep_state = ACPI_STATE_S0; |
124 | return error; | 100 | return error; |
125 | } | ||
126 | acpi_sleep_finish_wake_up = true; | ||
127 | } | 101 | } |
128 | 102 | ||
129 | return ACPI_SUCCESS(acpi_hw_disable_all_gpes()) ? 0 : -EFAULT; | 103 | return ACPI_SUCCESS(acpi_hw_disable_all_gpes()) ? 0 : -EFAULT; |
@@ -212,7 +186,6 @@ static void acpi_pm_finish(void) | |||
212 | acpi_set_firmware_waking_vector((acpi_physical_address) 0); | 186 | acpi_set_firmware_waking_vector((acpi_physical_address) 0); |
213 | 187 | ||
214 | acpi_target_sleep_state = ACPI_STATE_S0; | 188 | acpi_target_sleep_state = ACPI_STATE_S0; |
215 | acpi_sleep_finish_wake_up = false; | ||
216 | 189 | ||
217 | #ifdef CONFIG_X86 | 190 | #ifdef CONFIG_X86 |
218 | if (init_8259A_after_S1) { | 191 | if (init_8259A_after_S1) { |
@@ -229,11 +202,10 @@ static void acpi_pm_finish(void) | |||
229 | static void acpi_pm_end(void) | 202 | static void acpi_pm_end(void) |
230 | { | 203 | { |
231 | /* | 204 | /* |
232 | * This is necessary in case acpi_pm_finish() is not called directly | 205 | * This is necessary in case acpi_pm_finish() is not called during a |
233 | * during a failing transition to a sleep state. | 206 | * failing transition to a sleep state. |
234 | */ | 207 | */ |
235 | if (acpi_sleep_finish_wake_up) | 208 | acpi_target_sleep_state = ACPI_STATE_S0; |
236 | acpi_pm_finish(); | ||
237 | } | 209 | } |
238 | 210 | ||
239 | static int acpi_pm_state_valid(suspend_state_t pm_state) | 211 | static int acpi_pm_state_valid(suspend_state_t pm_state) |
@@ -285,31 +257,18 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = { | |||
285 | #ifdef CONFIG_HIBERNATION | 257 | #ifdef CONFIG_HIBERNATION |
286 | static int acpi_hibernation_begin(void) | 258 | static int acpi_hibernation_begin(void) |
287 | { | 259 | { |
288 | int error; | ||
289 | |||
290 | acpi_target_sleep_state = ACPI_STATE_S4; | 260 | acpi_target_sleep_state = ACPI_STATE_S4; |
291 | if (new_pts_ordering) | ||
292 | return 0; | ||
293 | 261 | ||
294 | error = acpi_sleep_prepare(ACPI_STATE_S4); | 262 | return 0; |
295 | if (error) | ||
296 | acpi_target_sleep_state = ACPI_STATE_S0; | ||
297 | else | ||
298 | acpi_sleep_finish_wake_up = true; | ||
299 | |||
300 | return error; | ||
301 | } | 263 | } |
302 | 264 | ||
303 | static int acpi_hibernation_prepare(void) | 265 | static int acpi_hibernation_prepare(void) |
304 | { | 266 | { |
305 | if (new_pts_ordering) { | 267 | int error = acpi_sleep_prepare(ACPI_STATE_S4); |
306 | int error = acpi_sleep_prepare(ACPI_STATE_S4); | ||
307 | 268 | ||
308 | if (error) { | 269 | if (error) { |
309 | acpi_target_sleep_state = ACPI_STATE_S0; | 270 | acpi_target_sleep_state = ACPI_STATE_S0; |
310 | return error; | 271 | return error; |
311 | } | ||
312 | acpi_sleep_finish_wake_up = true; | ||
313 | } | 272 | } |
314 | 273 | ||
315 | return ACPI_SUCCESS(acpi_hw_disable_all_gpes()) ? 0 : -EFAULT; | 274 | return ACPI_SUCCESS(acpi_hw_disable_all_gpes()) ? 0 : -EFAULT; |
@@ -353,17 +312,15 @@ static void acpi_hibernation_finish(void) | |||
353 | acpi_set_firmware_waking_vector((acpi_physical_address) 0); | 312 | acpi_set_firmware_waking_vector((acpi_physical_address) 0); |
354 | 313 | ||
355 | acpi_target_sleep_state = ACPI_STATE_S0; | 314 | acpi_target_sleep_state = ACPI_STATE_S0; |
356 | acpi_sleep_finish_wake_up = false; | ||
357 | } | 315 | } |
358 | 316 | ||
359 | static void acpi_hibernation_end(void) | 317 | static void acpi_hibernation_end(void) |
360 | { | 318 | { |
361 | /* | 319 | /* |
362 | * This is necessary in case acpi_hibernation_finish() is not called | 320 | * This is necessary in case acpi_hibernation_finish() is not called |
363 | * directly during a failing transition to the sleep state. | 321 | * during a failing transition to the sleep state. |
364 | */ | 322 | */ |
365 | if (acpi_sleep_finish_wake_up) | 323 | acpi_target_sleep_state = ACPI_STATE_S0; |
366 | acpi_hibernation_finish(); | ||
367 | } | 324 | } |
368 | 325 | ||
369 | static int acpi_hibernation_pre_restore(void) | 326 | static int acpi_hibernation_pre_restore(void) |
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index c4e00ac8ea85..1bcecc7dd2ca 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
@@ -1125,7 +1125,7 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz) | |||
1125 | tz->trips.active[i].flags.valid; i++, trips++); | 1125 | tz->trips.active[i].flags.valid; i++, trips++); |
1126 | tz->thermal_zone = thermal_zone_device_register("ACPI thermal zone", | 1126 | tz->thermal_zone = thermal_zone_device_register("ACPI thermal zone", |
1127 | trips, tz, &acpi_thermal_zone_ops); | 1127 | trips, tz, &acpi_thermal_zone_ops); |
1128 | if (!tz->thermal_zone) | 1128 | if (IS_ERR(tz->thermal_zone)) |
1129 | return -ENODEV; | 1129 | return -ENODEV; |
1130 | 1130 | ||
1131 | result = sysfs_create_link(&tz->device->dev.kobj, | 1131 | result = sysfs_create_link(&tz->device->dev.kobj, |
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 12fb44f16766..980a74188781 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
@@ -713,7 +713,7 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device) | |||
713 | 713 | ||
714 | kfree(obj); | 714 | kfree(obj); |
715 | 715 | ||
716 | if (device->cap._BCL && device->cap._BCM && max_level > 0) { | 716 | if (device->cap._BCL && device->cap._BCM && device->cap._BQC && max_level > 0){ |
717 | int result; | 717 | int result; |
718 | static int count = 0; | 718 | static int count = 0; |
719 | char *name; | 719 | char *name; |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index c4248b37ff64..be95fdb69726 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -326,6 +326,44 @@ static void ata_force_horkage(struct ata_device *dev) | |||
326 | } | 326 | } |
327 | 327 | ||
328 | /** | 328 | /** |
329 | * atapi_cmd_type - Determine ATAPI command type from SCSI opcode | ||
330 | * @opcode: SCSI opcode | ||
331 | * | ||
332 | * Determine ATAPI command type from @opcode. | ||
333 | * | ||
334 | * LOCKING: | ||
335 | * None. | ||
336 | * | ||
337 | * RETURNS: | ||
338 | * ATAPI_{READ|WRITE|READ_CD|PASS_THRU|MISC} | ||
339 | */ | ||
340 | int atapi_cmd_type(u8 opcode) | ||
341 | { | ||
342 | switch (opcode) { | ||
343 | case GPCMD_READ_10: | ||
344 | case GPCMD_READ_12: | ||
345 | return ATAPI_READ; | ||
346 | |||
347 | case GPCMD_WRITE_10: | ||
348 | case GPCMD_WRITE_12: | ||
349 | case GPCMD_WRITE_AND_VERIFY_10: | ||
350 | return ATAPI_WRITE; | ||
351 | |||
352 | case GPCMD_READ_CD: | ||
353 | case GPCMD_READ_CD_MSF: | ||
354 | return ATAPI_READ_CD; | ||
355 | |||
356 | case ATA_16: | ||
357 | case ATA_12: | ||
358 | if (atapi_passthru16) | ||
359 | return ATAPI_PASS_THRU; | ||
360 | /* fall thru */ | ||
361 | default: | ||
362 | return ATAPI_MISC; | ||
363 | } | ||
364 | } | ||
365 | |||
366 | /** | ||
329 | * ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure | 367 | * ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure |
330 | * @tf: Taskfile to convert | 368 | * @tf: Taskfile to convert |
331 | * @pmp: Port multiplier port | 369 | * @pmp: Port multiplier port |
@@ -972,7 +1010,7 @@ static void ata_dev_disable_pm(struct ata_device *dev) | |||
972 | void ata_lpm_schedule(struct ata_port *ap, enum link_pm policy) | 1010 | void ata_lpm_schedule(struct ata_port *ap, enum link_pm policy) |
973 | { | 1011 | { |
974 | ap->pm_policy = policy; | 1012 | ap->pm_policy = policy; |
975 | ap->link.eh_info.action |= ATA_EHI_LPM; | 1013 | ap->link.eh_info.action |= ATA_EH_LPM; |
976 | ap->link.eh_info.flags |= ATA_EHI_NO_AUTOPSY; | 1014 | ap->link.eh_info.flags |= ATA_EHI_NO_AUTOPSY; |
977 | ata_port_schedule_eh(ap); | 1015 | ata_port_schedule_eh(ap); |
978 | } | 1016 | } |
@@ -2660,7 +2698,7 @@ int ata_bus_probe(struct ata_port *ap) | |||
2660 | specific sequence bass-ackwards so that PDIAG- is released by | 2698 | specific sequence bass-ackwards so that PDIAG- is released by |
2661 | the slave device */ | 2699 | the slave device */ |
2662 | 2700 | ||
2663 | ata_link_for_each_dev(dev, &ap->link) { | 2701 | ata_link_for_each_dev_reverse(dev, &ap->link) { |
2664 | if (tries[dev->devno]) | 2702 | if (tries[dev->devno]) |
2665 | dev->class = classes[dev->devno]; | 2703 | dev->class = classes[dev->devno]; |
2666 | 2704 | ||
@@ -7774,6 +7812,7 @@ EXPORT_SYMBOL_GPL(ata_tf_read); | |||
7774 | EXPORT_SYMBOL_GPL(ata_noop_dev_select); | 7812 | EXPORT_SYMBOL_GPL(ata_noop_dev_select); |
7775 | EXPORT_SYMBOL_GPL(ata_std_dev_select); | 7813 | EXPORT_SYMBOL_GPL(ata_std_dev_select); |
7776 | EXPORT_SYMBOL_GPL(sata_print_link_status); | 7814 | EXPORT_SYMBOL_GPL(sata_print_link_status); |
7815 | EXPORT_SYMBOL_GPL(atapi_cmd_type); | ||
7777 | EXPORT_SYMBOL_GPL(ata_tf_to_fis); | 7816 | EXPORT_SYMBOL_GPL(ata_tf_to_fis); |
7778 | EXPORT_SYMBOL_GPL(ata_tf_from_fis); | 7817 | EXPORT_SYMBOL_GPL(ata_tf_from_fis); |
7779 | EXPORT_SYMBOL_GPL(ata_pack_xfermask); | 7818 | EXPORT_SYMBOL_GPL(ata_pack_xfermask); |
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 681252fd8143..a5830329eda4 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -2748,7 +2748,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
2748 | ehc->i.flags &= ~ATA_EHI_SETMODE; | 2748 | ehc->i.flags &= ~ATA_EHI_SETMODE; |
2749 | } | 2749 | } |
2750 | 2750 | ||
2751 | if (ehc->i.action & ATA_EHI_LPM) | 2751 | if (ehc->i.action & ATA_EH_LPM) |
2752 | ata_link_for_each_dev(dev, link) | 2752 | ata_link_for_each_dev(dev, link) |
2753 | ata_dev_enable_pm(dev, ap->pm_policy); | 2753 | ata_dev_enable_pm(dev, ap->pm_policy); |
2754 | 2754 | ||
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index 8786455c901d..ce830fe3a362 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -36,6 +36,10 @@ | |||
36 | #define DRV_NAME "pata_ali" | 36 | #define DRV_NAME "pata_ali" |
37 | #define DRV_VERSION "0.7.5" | 37 | #define DRV_VERSION "0.7.5" |
38 | 38 | ||
39 | int ali_atapi_dma = 0; | ||
40 | module_param_named(atapi_dma, ali_atapi_dma, int, 0644); | ||
41 | MODULE_PARM_DESC(atapi_dma, "Enable ATAPI DMA (0=disable, 1=enable)"); | ||
42 | |||
39 | /* | 43 | /* |
40 | * Cable special cases | 44 | * Cable special cases |
41 | */ | 45 | */ |
@@ -270,6 +274,27 @@ static void ali_set_dmamode(struct ata_port *ap, struct ata_device *adev) | |||
270 | } | 274 | } |
271 | 275 | ||
272 | /** | 276 | /** |
277 | * ali_warn_atapi_dma - Warn about ATAPI DMA disablement | ||
278 | * @adev: Device | ||
279 | * | ||
280 | * Whine about ATAPI DMA disablement if @adev is an ATAPI device. | ||
281 | * Can be used as ->dev_config. | ||
282 | */ | ||
283 | |||
284 | static void ali_warn_atapi_dma(struct ata_device *adev) | ||
285 | { | ||
286 | struct ata_eh_context *ehc = &adev->link->eh_context; | ||
287 | int print_info = ehc->i.flags & ATA_EHI_PRINTINFO; | ||
288 | |||
289 | if (print_info && adev->class == ATA_DEV_ATAPI && !ali_atapi_dma) { | ||
290 | ata_dev_printk(adev, KERN_WARNING, | ||
291 | "WARNING: ATAPI DMA disabled for reliablity issues. It can be enabled\n"); | ||
292 | ata_dev_printk(adev, KERN_WARNING, | ||
293 | "WARNING: via pata_ali.atapi_dma modparam or corresponding sysfs node.\n"); | ||
294 | } | ||
295 | } | ||
296 | |||
297 | /** | ||
273 | * ali_lock_sectors - Keep older devices to 255 sector mode | 298 | * ali_lock_sectors - Keep older devices to 255 sector mode |
274 | * @adev: Device | 299 | * @adev: Device |
275 | * | 300 | * |
@@ -283,6 +308,7 @@ static void ali_set_dmamode(struct ata_port *ap, struct ata_device *adev) | |||
283 | static void ali_lock_sectors(struct ata_device *adev) | 308 | static void ali_lock_sectors(struct ata_device *adev) |
284 | { | 309 | { |
285 | adev->max_sectors = 255; | 310 | adev->max_sectors = 255; |
311 | ali_warn_atapi_dma(adev); | ||
286 | } | 312 | } |
287 | 313 | ||
288 | /** | 314 | /** |
@@ -294,6 +320,18 @@ static void ali_lock_sectors(struct ata_device *adev) | |||
294 | 320 | ||
295 | static int ali_check_atapi_dma(struct ata_queued_cmd *qc) | 321 | static int ali_check_atapi_dma(struct ata_queued_cmd *qc) |
296 | { | 322 | { |
323 | if (!ali_atapi_dma) { | ||
324 | /* FIXME: pata_ali can't do ATAPI DMA reliably but the | ||
325 | * IDE alim15x3 driver can. I tried lots of things | ||
326 | * but couldn't find what the actual difference was. | ||
327 | * If you got an idea, please write it to | ||
328 | * linux-ide@vger.kernel.org and cc htejun@gmail.com. | ||
329 | * | ||
330 | * Disable ATAPI DMA for now. | ||
331 | */ | ||
332 | return -EOPNOTSUPP; | ||
333 | } | ||
334 | |||
297 | /* If its not a media command, its not worth it */ | 335 | /* If its not a media command, its not worth it */ |
298 | if (atapi_cmd_type(qc->cdb[0]) == ATAPI_MISC) | 336 | if (atapi_cmd_type(qc->cdb[0]) == ATAPI_MISC) |
299 | return -EOPNOTSUPP; | 337 | return -EOPNOTSUPP; |
@@ -359,6 +397,7 @@ static struct ata_port_operations ali_20_port_ops = { | |||
359 | 397 | ||
360 | .tf_load = ata_tf_load, | 398 | .tf_load = ata_tf_load, |
361 | .tf_read = ata_tf_read, | 399 | .tf_read = ata_tf_read, |
400 | .check_atapi_dma = ali_check_atapi_dma, | ||
362 | .check_status = ata_check_status, | 401 | .check_status = ata_check_status, |
363 | .exec_command = ata_exec_command, | 402 | .exec_command = ata_exec_command, |
364 | .dev_select = ata_std_dev_select, | 403 | .dev_select = ata_std_dev_select, |
@@ -438,6 +477,7 @@ static struct ata_port_operations ali_c5_port_ops = { | |||
438 | .check_status = ata_check_status, | 477 | .check_status = ata_check_status, |
439 | .exec_command = ata_exec_command, | 478 | .exec_command = ata_exec_command, |
440 | .dev_select = ata_std_dev_select, | 479 | .dev_select = ata_std_dev_select, |
480 | .dev_config = ali_warn_atapi_dma, | ||
441 | 481 | ||
442 | .freeze = ata_bmdma_freeze, | 482 | .freeze = ata_bmdma_freeze, |
443 | .thaw = ata_bmdma_thaw, | 483 | .thaw = ata_bmdma_thaw, |
diff --git a/drivers/ata/pata_sil680.c b/drivers/ata/pata_sil680.c index 503245a1eafa..7c5b2dd9a1a1 100644 --- a/drivers/ata/pata_sil680.c +++ b/drivers/ata/pata_sil680.c | |||
@@ -269,7 +269,11 @@ static u8 sil680_init_chip(struct pci_dev *pdev, int *try_mmio) | |||
269 | dev_dbg(&pdev->dev, "sil680: BA5_EN = %d clock = %02X\n", | 269 | dev_dbg(&pdev->dev, "sil680: BA5_EN = %d clock = %02X\n", |
270 | tmpbyte & 1, tmpbyte & 0x30); | 270 | tmpbyte & 1, tmpbyte & 0x30); |
271 | 271 | ||
272 | *try_mmio = (tmpbyte & 1) || pci_resource_start(pdev, 5); | 272 | *try_mmio = 0; |
273 | #ifdef CONFIG_PPC_MERGE | ||
274 | if (machine_is(cell)) | ||
275 | *try_mmio = (tmpbyte & 1) || pci_resource_start(pdev, 5); | ||
276 | #endif | ||
273 | 277 | ||
274 | switch(tmpbyte & 0x30) { | 278 | switch(tmpbyte & 0x30) { |
275 | case 0x00: | 279 | case 0x00: |
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index 07791a7a48a5..9d1e3cad4aa9 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c | |||
@@ -1256,7 +1256,6 @@ static int sata_fsl_probe(struct of_device *ofdev, | |||
1256 | void __iomem *ssr_base = NULL; | 1256 | void __iomem *ssr_base = NULL; |
1257 | void __iomem *csr_base = NULL; | 1257 | void __iomem *csr_base = NULL; |
1258 | struct sata_fsl_host_priv *host_priv = NULL; | 1258 | struct sata_fsl_host_priv *host_priv = NULL; |
1259 | struct resource *r; | ||
1260 | int irq; | 1259 | int irq; |
1261 | struct ata_host *host; | 1260 | struct ata_host *host; |
1262 | 1261 | ||
@@ -1266,8 +1265,6 @@ static int sata_fsl_probe(struct of_device *ofdev, | |||
1266 | dev_printk(KERN_INFO, &ofdev->dev, | 1265 | dev_printk(KERN_INFO, &ofdev->dev, |
1267 | "Sata FSL Platform/CSB Driver init\n"); | 1266 | "Sata FSL Platform/CSB Driver init\n"); |
1268 | 1267 | ||
1269 | r = kmalloc(sizeof(struct resource), GFP_KERNEL); | ||
1270 | |||
1271 | hcr_base = of_iomap(ofdev->node, 0); | 1268 | hcr_base = of_iomap(ofdev->node, 0); |
1272 | if (!hcr_base) | 1269 | if (!hcr_base) |
1273 | goto error_exit_with_cleanup; | 1270 | goto error_exit_with_cleanup; |
@@ -1348,10 +1345,7 @@ static int sata_fsl_remove(struct of_device *ofdev) | |||
1348 | 1345 | ||
1349 | static struct of_device_id fsl_sata_match[] = { | 1346 | static struct of_device_id fsl_sata_match[] = { |
1350 | { | 1347 | { |
1351 | .compatible = "fsl,mpc8315-sata", | 1348 | .compatible = "fsl,pq-sata", |
1352 | }, | ||
1353 | { | ||
1354 | .compatible = "fsl,mpc8379-sata", | ||
1355 | }, | 1349 | }, |
1356 | {}, | 1350 | {}, |
1357 | }; | 1351 | }; |
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c index 47c57a4294b7..98099f526d82 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c | |||
@@ -978,6 +978,7 @@ static int fs_open(struct atm_vcc *atm_vcc) | |||
978 | /* Docs are vague about this atm_hdr field. By the way, the FS | 978 | /* Docs are vague about this atm_hdr field. By the way, the FS |
979 | * chip makes odd errors if lower bits are set.... -- REW */ | 979 | * chip makes odd errors if lower bits are set.... -- REW */ |
980 | tc->atm_hdr = (vpi << 20) | (vci << 4); | 980 | tc->atm_hdr = (vpi << 20) | (vci << 4); |
981 | tmc0 = 0; | ||
981 | { | 982 | { |
982 | int pcr = atm_pcr_goal (txtp); | 983 | int pcr = atm_pcr_goal (txtp); |
983 | 984 | ||
diff --git a/drivers/atm/he.c b/drivers/atm/he.c index 2e3395b7e8c1..ffc4a5a41946 100644 --- a/drivers/atm/he.c +++ b/drivers/atm/he.c | |||
@@ -3000,8 +3000,7 @@ he_proc_read(struct atm_dev *dev, loff_t *pos, char *page) | |||
3000 | 3000 | ||
3001 | /* eeprom routines -- see 4.7 */ | 3001 | /* eeprom routines -- see 4.7 */ |
3002 | 3002 | ||
3003 | u8 | 3003 | static u8 read_prom_byte(struct he_dev *he_dev, int addr) |
3004 | read_prom_byte(struct he_dev *he_dev, int addr) | ||
3005 | { | 3004 | { |
3006 | u32 val = 0, tmp_read = 0; | 3005 | u32 val = 0, tmp_read = 0; |
3007 | int i, j = 0; | 3006 | int i, j = 0; |
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c index b967919fb7e2..28d77b5195de 100644 --- a/drivers/atm/idt77252.c +++ b/drivers/atm/idt77252.c | |||
@@ -2016,8 +2016,7 @@ idt77252_send_skb(struct atm_vcc *vcc, struct sk_buff *skb, int oam) | |||
2016 | return 0; | 2016 | return 0; |
2017 | } | 2017 | } |
2018 | 2018 | ||
2019 | int | 2019 | static int idt77252_send(struct atm_vcc *vcc, struct sk_buff *skb) |
2020 | idt77252_send(struct atm_vcc *vcc, struct sk_buff *skb) | ||
2021 | { | 2020 | { |
2022 | return idt77252_send_skb(vcc, skb, 0); | 2021 | return idt77252_send_skb(vcc, skb, 0); |
2023 | } | 2022 | } |
@@ -3072,8 +3071,7 @@ idt77252_dev_open(struct idt77252_dev *card) | |||
3072 | return 0; | 3071 | return 0; |
3073 | } | 3072 | } |
3074 | 3073 | ||
3075 | void | 3074 | static void idt77252_dev_close(struct atm_dev *dev) |
3076 | idt77252_dev_close(struct atm_dev *dev) | ||
3077 | { | 3075 | { |
3078 | struct idt77252_dev *card = dev->dev_data; | 3076 | struct idt77252_dev *card = dev->dev_data; |
3079 | u32 conf; | 3077 | u32 conf; |
diff --git a/drivers/atm/iphase.c b/drivers/atm/iphase.c index ef52452640e0..670c093ed25f 100644 --- a/drivers/atm/iphase.c +++ b/drivers/atm/iphase.c | |||
@@ -958,6 +958,7 @@ static void ia_suni_pm7345_init (IADEV *iadev) | |||
958 | 958 | ||
959 | /***************************** IA_LIB END *****************************/ | 959 | /***************************** IA_LIB END *****************************/ |
960 | 960 | ||
961 | #ifdef CONFIG_ATM_IA_DEBUG | ||
961 | static int tcnter = 0; | 962 | static int tcnter = 0; |
962 | static void xdump( u_char* cp, int length, char* prefix ) | 963 | static void xdump( u_char* cp, int length, char* prefix ) |
963 | { | 964 | { |
@@ -992,6 +993,7 @@ static void xdump( u_char* cp, int length, char* prefix ) | |||
992 | } | 993 | } |
993 | 994 | ||
994 | } /* close xdump(... */ | 995 | } /* close xdump(... */ |
996 | #endif /* CONFIG_ATM_IA_DEBUG */ | ||
995 | 997 | ||
996 | 998 | ||
997 | static struct atm_dev *ia_boards = NULL; | 999 | static struct atm_dev *ia_boards = NULL; |
diff --git a/drivers/base/driver.c b/drivers/base/driver.c index bf31a0170a48..9a6537f14401 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c | |||
@@ -133,6 +133,7 @@ int driver_add_kobj(struct device_driver *drv, struct kobject *kobj, | |||
133 | { | 133 | { |
134 | va_list args; | 134 | va_list args; |
135 | char *name; | 135 | char *name; |
136 | int ret; | ||
136 | 137 | ||
137 | va_start(args, fmt); | 138 | va_start(args, fmt); |
138 | name = kvasprintf(GFP_KERNEL, fmt, args); | 139 | name = kvasprintf(GFP_KERNEL, fmt, args); |
@@ -141,7 +142,9 @@ int driver_add_kobj(struct device_driver *drv, struct kobject *kobj, | |||
141 | if (!name) | 142 | if (!name) |
142 | return -ENOMEM; | 143 | return -ENOMEM; |
143 | 144 | ||
144 | return kobject_add(kobj, &drv->p->kobj, "%s", name); | 145 | ret = kobject_add(kobj, &drv->p->kobj, "%s", name); |
146 | kfree(name); | ||
147 | return ret; | ||
145 | } | 148 | } |
146 | EXPORT_SYMBOL_GPL(driver_add_kobj); | 149 | EXPORT_SYMBOL_GPL(driver_add_kobj); |
147 | 150 | ||
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 55bd35c0f082..9c9627e8e334 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <scsi/sg.h> | 50 | #include <scsi/sg.h> |
51 | #include <scsi/scsi_ioctl.h> | 51 | #include <scsi/scsi_ioctl.h> |
52 | #include <linux/cdrom.h> | 52 | #include <linux/cdrom.h> |
53 | #include <linux/scatterlist.h> | ||
53 | 54 | ||
54 | #define CCISS_DRIVER_VERSION(maj,min,submin) ((maj<<16)|(min<<8)|(submin)) | 55 | #define CCISS_DRIVER_VERSION(maj,min,submin) ((maj<<16)|(min<<8)|(submin)) |
55 | #define DRIVER_NAME "HP CISS Driver (v 3.6.14)" | 56 | #define DRIVER_NAME "HP CISS Driver (v 3.6.14)" |
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index b53fdb0a282c..60cc54368b66 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c | |||
@@ -153,6 +153,12 @@ static int sock_xmit(struct nbd_device *lo, int send, void *buf, int size, | |||
153 | struct kvec iov; | 153 | struct kvec iov; |
154 | sigset_t blocked, oldset; | 154 | sigset_t blocked, oldset; |
155 | 155 | ||
156 | if (unlikely(!sock)) { | ||
157 | printk(KERN_ERR "%s: Attempted %s on closed socket in sock_xmit\n", | ||
158 | lo->disk->disk_name, (send ? "send" : "recv")); | ||
159 | return -EINVAL; | ||
160 | } | ||
161 | |||
156 | /* Allow interception of SIGKILL only | 162 | /* Allow interception of SIGKILL only |
157 | * Don't allow other signals to interrupt the transmission */ | 163 | * Don't allow other signals to interrupt the transmission */ |
158 | siginitsetinv(&blocked, sigmask(SIGKILL)); | 164 | siginitsetinv(&blocked, sigmask(SIGKILL)); |
diff --git a/drivers/block/ub.c b/drivers/block/ub.c index c452e2d355ee..27bfe72aab59 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * and is not licensed separately. See file COPYING for details. | 8 | * and is not licensed separately. See file COPYING for details. |
9 | * | 9 | * |
10 | * TODO (sorted by decreasing priority) | 10 | * TODO (sorted by decreasing priority) |
11 | * -- Return sense now that rq allows it (we always auto-sense anyway). | ||
11 | * -- set readonly flag for CDs, set removable flag for CF readers | 12 | * -- set readonly flag for CDs, set removable flag for CF readers |
12 | * -- do inquiry and verify we got a disk and not a tape (for LUN mismatch) | 13 | * -- do inquiry and verify we got a disk and not a tape (for LUN mismatch) |
13 | * -- verify the 13 conditions and do bulk resets | 14 | * -- verify the 13 conditions and do bulk resets |
@@ -359,7 +360,8 @@ static void ub_cmd_build_block(struct ub_dev *sc, struct ub_lun *lun, | |||
359 | static void ub_cmd_build_packet(struct ub_dev *sc, struct ub_lun *lun, | 360 | static void ub_cmd_build_packet(struct ub_dev *sc, struct ub_lun *lun, |
360 | struct ub_scsi_cmd *cmd, struct ub_request *urq); | 361 | struct ub_scsi_cmd *cmd, struct ub_request *urq); |
361 | static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd); | 362 | static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd); |
362 | static void ub_end_rq(struct request *rq, unsigned int status); | 363 | static void ub_end_rq(struct request *rq, unsigned int status, |
364 | unsigned int cmd_len); | ||
363 | static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun, | 365 | static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun, |
364 | struct ub_request *urq, struct ub_scsi_cmd *cmd); | 366 | struct ub_request *urq, struct ub_scsi_cmd *cmd); |
365 | static int ub_submit_scsi(struct ub_dev *sc, struct ub_scsi_cmd *cmd); | 367 | static int ub_submit_scsi(struct ub_dev *sc, struct ub_scsi_cmd *cmd); |
@@ -642,13 +644,13 @@ static int ub_request_fn_1(struct ub_lun *lun, struct request *rq) | |||
642 | 644 | ||
643 | if (atomic_read(&sc->poison)) { | 645 | if (atomic_read(&sc->poison)) { |
644 | blkdev_dequeue_request(rq); | 646 | blkdev_dequeue_request(rq); |
645 | ub_end_rq(rq, DID_NO_CONNECT << 16); | 647 | ub_end_rq(rq, DID_NO_CONNECT << 16, blk_rq_bytes(rq)); |
646 | return 0; | 648 | return 0; |
647 | } | 649 | } |
648 | 650 | ||
649 | if (lun->changed && !blk_pc_request(rq)) { | 651 | if (lun->changed && !blk_pc_request(rq)) { |
650 | blkdev_dequeue_request(rq); | 652 | blkdev_dequeue_request(rq); |
651 | ub_end_rq(rq, SAM_STAT_CHECK_CONDITION); | 653 | ub_end_rq(rq, SAM_STAT_CHECK_CONDITION, blk_rq_bytes(rq)); |
652 | return 0; | 654 | return 0; |
653 | } | 655 | } |
654 | 656 | ||
@@ -701,7 +703,7 @@ static int ub_request_fn_1(struct ub_lun *lun, struct request *rq) | |||
701 | 703 | ||
702 | drop: | 704 | drop: |
703 | ub_put_cmd(lun, cmd); | 705 | ub_put_cmd(lun, cmd); |
704 | ub_end_rq(rq, DID_ERROR << 16); | 706 | ub_end_rq(rq, DID_ERROR << 16, blk_rq_bytes(rq)); |
705 | return 0; | 707 | return 0; |
706 | } | 708 | } |
707 | 709 | ||
@@ -770,6 +772,7 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd) | |||
770 | struct ub_request *urq = cmd->back; | 772 | struct ub_request *urq = cmd->back; |
771 | struct request *rq; | 773 | struct request *rq; |
772 | unsigned int scsi_status; | 774 | unsigned int scsi_status; |
775 | unsigned int cmd_len; | ||
773 | 776 | ||
774 | rq = urq->rq; | 777 | rq = urq->rq; |
775 | 778 | ||
@@ -779,8 +782,18 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd) | |||
779 | rq->data_len = 0; | 782 | rq->data_len = 0; |
780 | else | 783 | else |
781 | rq->data_len -= cmd->act_len; | 784 | rq->data_len -= cmd->act_len; |
785 | scsi_status = 0; | ||
786 | } else { | ||
787 | if (cmd->act_len != cmd->len) { | ||
788 | if ((cmd->key == MEDIUM_ERROR || | ||
789 | cmd->key == UNIT_ATTENTION) && | ||
790 | ub_rw_cmd_retry(sc, lun, urq, cmd) == 0) | ||
791 | return; | ||
792 | scsi_status = SAM_STAT_CHECK_CONDITION; | ||
793 | } else { | ||
794 | scsi_status = 0; | ||
795 | } | ||
782 | } | 796 | } |
783 | scsi_status = 0; | ||
784 | } else { | 797 | } else { |
785 | if (blk_pc_request(rq)) { | 798 | if (blk_pc_request(rq)) { |
786 | /* UB_SENSE_SIZE is smaller than SCSI_SENSE_BUFFERSIZE */ | 799 | /* UB_SENSE_SIZE is smaller than SCSI_SENSE_BUFFERSIZE */ |
@@ -801,14 +814,17 @@ static void ub_rw_cmd_done(struct ub_dev *sc, struct ub_scsi_cmd *cmd) | |||
801 | 814 | ||
802 | urq->rq = NULL; | 815 | urq->rq = NULL; |
803 | 816 | ||
817 | cmd_len = cmd->len; | ||
804 | ub_put_cmd(lun, cmd); | 818 | ub_put_cmd(lun, cmd); |
805 | ub_end_rq(rq, scsi_status); | 819 | ub_end_rq(rq, scsi_status, cmd_len); |
806 | blk_start_queue(lun->disk->queue); | 820 | blk_start_queue(lun->disk->queue); |
807 | } | 821 | } |
808 | 822 | ||
809 | static void ub_end_rq(struct request *rq, unsigned int scsi_status) | 823 | static void ub_end_rq(struct request *rq, unsigned int scsi_status, |
824 | unsigned int cmd_len) | ||
810 | { | 825 | { |
811 | int error; | 826 | int error; |
827 | long rqlen; | ||
812 | 828 | ||
813 | if (scsi_status == 0) { | 829 | if (scsi_status == 0) { |
814 | error = 0; | 830 | error = 0; |
@@ -816,8 +832,12 @@ static void ub_end_rq(struct request *rq, unsigned int scsi_status) | |||
816 | error = -EIO; | 832 | error = -EIO; |
817 | rq->errors = scsi_status; | 833 | rq->errors = scsi_status; |
818 | } | 834 | } |
819 | if (__blk_end_request(rq, error, blk_rq_bytes(rq))) | 835 | rqlen = blk_rq_bytes(rq); /* Oddly enough, this is the residue. */ |
820 | BUG(); | 836 | if (__blk_end_request(rq, error, cmd_len)) { |
837 | printk(KERN_WARNING DRV_NAME | ||
838 | ": __blk_end_request blew, %s-cmd total %u rqlen %ld\n", | ||
839 | blk_pc_request(rq)? "pc": "fs", cmd_len, rqlen); | ||
840 | } | ||
821 | } | 841 | } |
822 | 842 | ||
823 | static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun, | 843 | static int ub_rw_cmd_retry(struct ub_dev *sc, struct ub_lun *lun, |
diff --git a/drivers/char/drm/ati_pcigart.c b/drivers/char/drm/ati_pcigart.c index e5a0e97cfdda..141f4dfa0a11 100644 --- a/drivers/char/drm/ati_pcigart.c +++ b/drivers/char/drm/ati_pcigart.c | |||
@@ -122,8 +122,9 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga | |||
122 | } else { | 122 | } else { |
123 | address = gart_info->addr; | 123 | address = gart_info->addr; |
124 | bus_address = gart_info->bus_addr; | 124 | bus_address = gart_info->bus_addr; |
125 | DRM_DEBUG("PCI: Gart Table: VRAM %08X mapped at %08lX\n", | 125 | DRM_DEBUG("PCI: Gart Table: VRAM %08LX mapped at %08lX\n", |
126 | bus_address, (unsigned long)address); | 126 | (unsigned long long)bus_address, |
127 | (unsigned long)address); | ||
127 | } | 128 | } |
128 | 129 | ||
129 | pci_gart = (u32 *) address; | 130 | pci_gart = (u32 *) address; |
@@ -167,6 +168,12 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga | |||
167 | } | 168 | } |
168 | } | 169 | } |
169 | 170 | ||
171 | if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) | ||
172 | dma_sync_single_for_device(&dev->pdev->dev, | ||
173 | bus_address, | ||
174 | max_pages * sizeof(u32), | ||
175 | PCI_DMA_TODEVICE); | ||
176 | |||
170 | ret = 1; | 177 | ret = 1; |
171 | 178 | ||
172 | #if defined(__i386__) || defined(__x86_64__) | 179 | #if defined(__i386__) || defined(__x86_64__) |
diff --git a/drivers/char/drm/drm_scatter.c b/drivers/char/drm/drm_scatter.c index 26d8f675ed5d..b2b0f3d41714 100644 --- a/drivers/char/drm/drm_scatter.c +++ b/drivers/char/drm/drm_scatter.c | |||
@@ -36,6 +36,15 @@ | |||
36 | 36 | ||
37 | #define DEBUG_SCATTER 0 | 37 | #define DEBUG_SCATTER 0 |
38 | 38 | ||
39 | static inline void *drm_vmalloc_dma(unsigned long size) | ||
40 | { | ||
41 | #if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE) | ||
42 | return __vmalloc(size, GFP_KERNEL, PAGE_KERNEL | _PAGE_NO_CACHE); | ||
43 | #else | ||
44 | return vmalloc_32(size); | ||
45 | #endif | ||
46 | } | ||
47 | |||
39 | void drm_sg_cleanup(struct drm_sg_mem * entry) | 48 | void drm_sg_cleanup(struct drm_sg_mem * entry) |
40 | { | 49 | { |
41 | struct page *page; | 50 | struct page *page; |
@@ -104,7 +113,7 @@ int drm_sg_alloc(struct drm_device *dev, struct drm_scatter_gather * request) | |||
104 | } | 113 | } |
105 | memset((void *)entry->busaddr, 0, pages * sizeof(*entry->busaddr)); | 114 | memset((void *)entry->busaddr, 0, pages * sizeof(*entry->busaddr)); |
106 | 115 | ||
107 | entry->virtual = vmalloc_32(pages << PAGE_SHIFT); | 116 | entry->virtual = drm_vmalloc_dma(pages << PAGE_SHIFT); |
108 | if (!entry->virtual) { | 117 | if (!entry->virtual) { |
109 | drm_free(entry->busaddr, | 118 | drm_free(entry->busaddr, |
110 | entry->pages * sizeof(*entry->busaddr), DRM_MEM_PAGES); | 119 | entry->pages * sizeof(*entry->busaddr), DRM_MEM_PAGES); |
diff --git a/drivers/char/drm/drm_vm.c b/drivers/char/drm/drm_vm.c index 3d65c4dcd0c6..945df72a51a9 100644 --- a/drivers/char/drm/drm_vm.c +++ b/drivers/char/drm/drm_vm.c | |||
@@ -54,13 +54,24 @@ static pgprot_t drm_io_prot(uint32_t map_type, struct vm_area_struct *vma) | |||
54 | pgprot_val(tmp) |= _PAGE_NO_CACHE; | 54 | pgprot_val(tmp) |= _PAGE_NO_CACHE; |
55 | if (map_type == _DRM_REGISTERS) | 55 | if (map_type == _DRM_REGISTERS) |
56 | pgprot_val(tmp) |= _PAGE_GUARDED; | 56 | pgprot_val(tmp) |= _PAGE_GUARDED; |
57 | #endif | 57 | #elif defined(__ia64__) |
58 | #if defined(__ia64__) | ||
59 | if (efi_range_is_wc(vma->vm_start, vma->vm_end - | 58 | if (efi_range_is_wc(vma->vm_start, vma->vm_end - |
60 | vma->vm_start)) | 59 | vma->vm_start)) |
61 | tmp = pgprot_writecombine(tmp); | 60 | tmp = pgprot_writecombine(tmp); |
62 | else | 61 | else |
63 | tmp = pgprot_noncached(tmp); | 62 | tmp = pgprot_noncached(tmp); |
63 | #elif defined(__sparc__) | ||
64 | tmp = pgprot_noncached(tmp); | ||
65 | #endif | ||
66 | return tmp; | ||
67 | } | ||
68 | |||
69 | static pgprot_t drm_dma_prot(uint32_t map_type, struct vm_area_struct *vma) | ||
70 | { | ||
71 | pgprot_t tmp = vm_get_page_prot(vma->vm_flags); | ||
72 | |||
73 | #if defined(__powerpc__) && defined(CONFIG_NOT_COHERENT_CACHE) | ||
74 | tmp |= _PAGE_NO_CACHE; | ||
64 | #endif | 75 | #endif |
65 | return tmp; | 76 | return tmp; |
66 | } | 77 | } |
@@ -603,9 +614,6 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma) | |||
603 | offset = dev->driver->get_reg_ofs(dev); | 614 | offset = dev->driver->get_reg_ofs(dev); |
604 | vma->vm_flags |= VM_IO; /* not in core dump */ | 615 | vma->vm_flags |= VM_IO; /* not in core dump */ |
605 | vma->vm_page_prot = drm_io_prot(map->type, vma); | 616 | vma->vm_page_prot = drm_io_prot(map->type, vma); |
606 | #ifdef __sparc__ | ||
607 | vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); | ||
608 | #endif | ||
609 | if (io_remap_pfn_range(vma, vma->vm_start, | 617 | if (io_remap_pfn_range(vma, vma->vm_start, |
610 | (map->offset + offset) >> PAGE_SHIFT, | 618 | (map->offset + offset) >> PAGE_SHIFT, |
611 | vma->vm_end - vma->vm_start, | 619 | vma->vm_end - vma->vm_start, |
@@ -624,6 +632,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma) | |||
624 | page_to_pfn(virt_to_page(map->handle)), | 632 | page_to_pfn(virt_to_page(map->handle)), |
625 | vma->vm_end - vma->vm_start, vma->vm_page_prot)) | 633 | vma->vm_end - vma->vm_start, vma->vm_page_prot)) |
626 | return -EAGAIN; | 634 | return -EAGAIN; |
635 | vma->vm_page_prot = drm_dma_prot(map->type, vma); | ||
627 | /* fall through to _DRM_SHM */ | 636 | /* fall through to _DRM_SHM */ |
628 | case _DRM_SHM: | 637 | case _DRM_SHM: |
629 | vma->vm_ops = &drm_vm_shm_ops; | 638 | vma->vm_ops = &drm_vm_shm_ops; |
@@ -631,6 +640,7 @@ static int drm_mmap_locked(struct file *filp, struct vm_area_struct *vma) | |||
631 | /* Don't let this area swap. Change when | 640 | /* Don't let this area swap. Change when |
632 | DRM_KERNEL advisory is supported. */ | 641 | DRM_KERNEL advisory is supported. */ |
633 | vma->vm_flags |= VM_RESERVED; | 642 | vma->vm_flags |= VM_RESERVED; |
643 | vma->vm_page_prot = drm_dma_prot(map->type, vma); | ||
634 | break; | 644 | break; |
635 | case _DRM_SCATTER_GATHER: | 645 | case _DRM_SCATTER_GATHER: |
636 | vma->vm_ops = &drm_vm_sg_ops; | 646 | vma->vm_ops = &drm_vm_sg_ops; |
diff --git a/drivers/char/drm/i915_dma.c b/drivers/char/drm/i915_dma.c index e9d6663bec73..a043bb12301a 100644 --- a/drivers/char/drm/i915_dma.c +++ b/drivers/char/drm/i915_dma.c | |||
@@ -804,6 +804,9 @@ void i915_driver_lastclose(struct drm_device * dev) | |||
804 | { | 804 | { |
805 | drm_i915_private_t *dev_priv = dev->dev_private; | 805 | drm_i915_private_t *dev_priv = dev->dev_private; |
806 | 806 | ||
807 | if (!dev_priv) | ||
808 | return; | ||
809 | |||
807 | if (dev_priv->agp_heap) | 810 | if (dev_priv->agp_heap) |
808 | i915_mem_takedown(&(dev_priv->agp_heap)); | 811 | i915_mem_takedown(&(dev_priv->agp_heap)); |
809 | 812 | ||
diff --git a/drivers/char/drm/i915_drv.h b/drivers/char/drm/i915_drv.h index c10d128e34db..675d88bda066 100644 --- a/drivers/char/drm/i915_drv.h +++ b/drivers/char/drm/i915_drv.h | |||
@@ -1092,8 +1092,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
1092 | #define IS_I915G(dev) ((dev)->pci_device == 0x2582 || (dev)->pci_device == 0x258a) | 1092 | #define IS_I915G(dev) ((dev)->pci_device == 0x2582 || (dev)->pci_device == 0x258a) |
1093 | #define IS_I915GM(dev) ((dev)->pci_device == 0x2592) | 1093 | #define IS_I915GM(dev) ((dev)->pci_device == 0x2592) |
1094 | #define IS_I945G(dev) ((dev)->pci_device == 0x2772) | 1094 | #define IS_I945G(dev) ((dev)->pci_device == 0x2772) |
1095 | #define IS_I945GM(dev) ((dev)->pci_device == 0x27A2) | 1095 | #define IS_I945GM(dev) ((dev)->pci_device == 0x27A2 ||\ |
1096 | 1096 | (dev)->pci_device == 0x27AE) | |
1097 | #define IS_I965G(dev) ((dev)->pci_device == 0x2972 || \ | 1097 | #define IS_I965G(dev) ((dev)->pci_device == 0x2972 || \ |
1098 | (dev)->pci_device == 0x2982 || \ | 1098 | (dev)->pci_device == 0x2982 || \ |
1099 | (dev)->pci_device == 0x2992 || \ | 1099 | (dev)->pci_device == 0x2992 || \ |
diff --git a/drivers/char/drm/r300_cmdbuf.c b/drivers/char/drm/r300_cmdbuf.c index 0f4afc44245c..f535812e4057 100644 --- a/drivers/char/drm/r300_cmdbuf.c +++ b/drivers/char/drm/r300_cmdbuf.c | |||
@@ -729,6 +729,47 @@ static void r300_discard_buffer(struct drm_device * dev, struct drm_buf * buf) | |||
729 | buf->used = 0; | 729 | buf->used = 0; |
730 | } | 730 | } |
731 | 731 | ||
732 | static void r300_cmd_wait(drm_radeon_private_t * dev_priv, | ||
733 | drm_r300_cmd_header_t header) | ||
734 | { | ||
735 | u32 wait_until; | ||
736 | RING_LOCALS; | ||
737 | |||
738 | if (!header.wait.flags) | ||
739 | return; | ||
740 | |||
741 | wait_until = 0; | ||
742 | |||
743 | switch(header.wait.flags) { | ||
744 | case R300_WAIT_2D: | ||
745 | wait_until = RADEON_WAIT_2D_IDLE; | ||
746 | break; | ||
747 | case R300_WAIT_3D: | ||
748 | wait_until = RADEON_WAIT_3D_IDLE; | ||
749 | break; | ||
750 | case R300_NEW_WAIT_2D_3D: | ||
751 | wait_until = RADEON_WAIT_2D_IDLE|RADEON_WAIT_3D_IDLE; | ||
752 | break; | ||
753 | case R300_NEW_WAIT_2D_2D_CLEAN: | ||
754 | wait_until = RADEON_WAIT_2D_IDLE|RADEON_WAIT_2D_IDLECLEAN; | ||
755 | break; | ||
756 | case R300_NEW_WAIT_3D_3D_CLEAN: | ||
757 | wait_until = RADEON_WAIT_3D_IDLE|RADEON_WAIT_3D_IDLECLEAN; | ||
758 | break; | ||
759 | case R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN: | ||
760 | wait_until = RADEON_WAIT_2D_IDLE|RADEON_WAIT_2D_IDLECLEAN; | ||
761 | wait_until |= RADEON_WAIT_3D_IDLE|RADEON_WAIT_3D_IDLECLEAN; | ||
762 | break; | ||
763 | default: | ||
764 | return; | ||
765 | } | ||
766 | |||
767 | BEGIN_RING(2); | ||
768 | OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0)); | ||
769 | OUT_RING(wait_until); | ||
770 | ADVANCE_RING(); | ||
771 | } | ||
772 | |||
732 | static int r300_scratch(drm_radeon_private_t *dev_priv, | 773 | static int r300_scratch(drm_radeon_private_t *dev_priv, |
733 | drm_radeon_kcmd_buffer_t *cmdbuf, | 774 | drm_radeon_kcmd_buffer_t *cmdbuf, |
734 | drm_r300_cmd_header_t header) | 775 | drm_r300_cmd_header_t header) |
@@ -909,19 +950,8 @@ int r300_do_cp_cmdbuf(struct drm_device *dev, | |||
909 | break; | 950 | break; |
910 | 951 | ||
911 | case R300_CMD_WAIT: | 952 | case R300_CMD_WAIT: |
912 | /* simple enough, we can do it here */ | ||
913 | DRM_DEBUG("R300_CMD_WAIT\n"); | 953 | DRM_DEBUG("R300_CMD_WAIT\n"); |
914 | if (header.wait.flags == 0) | 954 | r300_cmd_wait(dev_priv, header); |
915 | break; /* nothing to do */ | ||
916 | |||
917 | { | ||
918 | RING_LOCALS; | ||
919 | |||
920 | BEGIN_RING(2); | ||
921 | OUT_RING(CP_PACKET0(RADEON_WAIT_UNTIL, 0)); | ||
922 | OUT_RING((header.wait.flags & 0xf) << 14); | ||
923 | ADVANCE_RING(); | ||
924 | } | ||
925 | break; | 955 | break; |
926 | 956 | ||
927 | case R300_CMD_SCRATCH: | 957 | case R300_CMD_SCRATCH: |
diff --git a/drivers/char/drm/radeon_drm.h b/drivers/char/drm/radeon_drm.h index 71e5b21fad2c..aab82e121e07 100644 --- a/drivers/char/drm/radeon_drm.h +++ b/drivers/char/drm/radeon_drm.h | |||
@@ -225,8 +225,20 @@ typedef union { | |||
225 | #define R300_CMD_WAIT 7 | 225 | #define R300_CMD_WAIT 7 |
226 | # define R300_WAIT_2D 0x1 | 226 | # define R300_WAIT_2D 0x1 |
227 | # define R300_WAIT_3D 0x2 | 227 | # define R300_WAIT_3D 0x2 |
228 | /* these two defines are DOING IT WRONG - however | ||
229 | * we have userspace which relies on using these. | ||
230 | * The wait interface is backwards compat new | ||
231 | * code should use the NEW_WAIT defines below | ||
232 | * THESE ARE NOT BIT FIELDS | ||
233 | */ | ||
228 | # define R300_WAIT_2D_CLEAN 0x3 | 234 | # define R300_WAIT_2D_CLEAN 0x3 |
229 | # define R300_WAIT_3D_CLEAN 0x4 | 235 | # define R300_WAIT_3D_CLEAN 0x4 |
236 | |||
237 | # define R300_NEW_WAIT_2D_3D 0x3 | ||
238 | # define R300_NEW_WAIT_2D_2D_CLEAN 0x4 | ||
239 | # define R300_NEW_WAIT_3D_3D_CLEAN 0x6 | ||
240 | # define R300_NEW_WAIT_2D_2D_CLEAN_3D_3D_CLEAN 0x8 | ||
241 | |||
230 | #define R300_CMD_SCRATCH 8 | 242 | #define R300_CMD_SCRATCH 8 |
231 | 243 | ||
232 | typedef union { | 244 | typedef union { |
diff --git a/drivers/char/drm/radeon_mem.c b/drivers/char/drm/radeon_mem.c index 78b34fa7c89a..4af5286a36fb 100644 --- a/drivers/char/drm/radeon_mem.c +++ b/drivers/char/drm/radeon_mem.c | |||
@@ -88,7 +88,7 @@ static struct mem_block *alloc_block(struct mem_block *heap, int size, | |||
88 | 88 | ||
89 | list_for_each(p, heap) { | 89 | list_for_each(p, heap) { |
90 | int start = (p->start + mask) & ~mask; | 90 | int start = (p->start + mask) & ~mask; |
91 | if (p->file_priv == 0 && start + size <= p->start + p->size) | 91 | if (p->file_priv == NULL && start + size <= p->start + p->size) |
92 | return split_block(p, start, size, file_priv); | 92 | return split_block(p, start, size, file_priv); |
93 | } | 93 | } |
94 | 94 | ||
@@ -113,7 +113,7 @@ static void free_block(struct mem_block *p) | |||
113 | /* Assumes a single contiguous range. Needs a special file_priv in | 113 | /* Assumes a single contiguous range. Needs a special file_priv in |
114 | * 'heap' to stop it being subsumed. | 114 | * 'heap' to stop it being subsumed. |
115 | */ | 115 | */ |
116 | if (p->next->file_priv == 0) { | 116 | if (p->next->file_priv == NULL) { |
117 | struct mem_block *q = p->next; | 117 | struct mem_block *q = p->next; |
118 | p->size += q->size; | 118 | p->size += q->size; |
119 | p->next = q->next; | 119 | p->next = q->next; |
@@ -121,7 +121,7 @@ static void free_block(struct mem_block *p) | |||
121 | drm_free(q, sizeof(*q), DRM_MEM_BUFS); | 121 | drm_free(q, sizeof(*q), DRM_MEM_BUFS); |
122 | } | 122 | } |
123 | 123 | ||
124 | if (p->prev->file_priv == 0) { | 124 | if (p->prev->file_priv == NULL) { |
125 | struct mem_block *q = p->prev; | 125 | struct mem_block *q = p->prev; |
126 | q->size += p->size; | 126 | q->size += p->size; |
127 | q->next = p->next; | 127 | q->next = p->next; |
@@ -174,7 +174,7 @@ void radeon_mem_release(struct drm_file *file_priv, struct mem_block *heap) | |||
174 | * 'heap' to stop it being subsumed. | 174 | * 'heap' to stop it being subsumed. |
175 | */ | 175 | */ |
176 | list_for_each(p, heap) { | 176 | list_for_each(p, heap) { |
177 | while (p->file_priv == 0 && p->next->file_priv == 0) { | 177 | while (p->file_priv == NULL && p->next->file_priv == NULL) { |
178 | struct mem_block *q = p->next; | 178 | struct mem_block *q = p->next; |
179 | p->size += q->size; | 179 | p->size += q->size; |
180 | p->next = q->next; | 180 | p->next = q->next; |
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c index 465ad35ed38f..1399971be689 100644 --- a/drivers/char/hpet.c +++ b/drivers/char/hpet.c | |||
@@ -731,14 +731,14 @@ static unsigned long hpet_calibrate(struct hpets *hpetp) | |||
731 | 731 | ||
732 | int hpet_alloc(struct hpet_data *hdp) | 732 | int hpet_alloc(struct hpet_data *hdp) |
733 | { | 733 | { |
734 | u64 cap, mcfg, hpet_config; | 734 | u64 cap, mcfg; |
735 | struct hpet_dev *devp; | 735 | struct hpet_dev *devp; |
736 | u32 i, ntimer, irq; | 736 | u32 i, ntimer; |
737 | struct hpets *hpetp; | 737 | struct hpets *hpetp; |
738 | size_t siz; | 738 | size_t siz; |
739 | struct hpet __iomem *hpet; | 739 | struct hpet __iomem *hpet; |
740 | static struct hpets *last = NULL; | 740 | static struct hpets *last = NULL; |
741 | unsigned long period, irq_bitmap; | 741 | unsigned long period; |
742 | unsigned long long temp; | 742 | unsigned long long temp; |
743 | 743 | ||
744 | /* | 744 | /* |
@@ -765,47 +765,11 @@ int hpet_alloc(struct hpet_data *hdp) | |||
765 | hpetp->hp_hpet_phys = hdp->hd_phys_address; | 765 | hpetp->hp_hpet_phys = hdp->hd_phys_address; |
766 | 766 | ||
767 | hpetp->hp_ntimer = hdp->hd_nirqs; | 767 | hpetp->hp_ntimer = hdp->hd_nirqs; |
768 | hpet = hpetp->hp_hpet; | ||
769 | |||
770 | /* Assign IRQs statically for legacy devices */ | ||
771 | hpetp->hp_dev[0].hd_hdwirq = hdp->hd_irq[0]; | ||
772 | hpetp->hp_dev[1].hd_hdwirq = hdp->hd_irq[1]; | ||
773 | |||
774 | /* Assign IRQs dynamically for the others */ | ||
775 | for (i = 2, devp = &hpetp->hp_dev[2]; i < hdp->hd_nirqs; i++, devp++) { | ||
776 | struct hpet_timer __iomem *timer; | ||
777 | 768 | ||
778 | timer = &hpet->hpet_timers[devp - hpetp->hp_dev]; | 769 | for (i = 0; i < hdp->hd_nirqs; i++) |
770 | hpetp->hp_dev[i].hd_hdwirq = hdp->hd_irq[i]; | ||
779 | 771 | ||
780 | /* Check if there's already an IRQ assigned to the timer */ | 772 | hpet = hpetp->hp_hpet; |
781 | if (hdp->hd_irq[i]) { | ||
782 | hpetp->hp_dev[i].hd_hdwirq = hdp->hd_irq[i]; | ||
783 | continue; | ||
784 | } | ||
785 | |||
786 | hpet_config = readq(&timer->hpet_config); | ||
787 | irq_bitmap = (hpet_config & Tn_INT_ROUTE_CAP_MASK) | ||
788 | >> Tn_INT_ROUTE_CAP_SHIFT; | ||
789 | if (!irq_bitmap) | ||
790 | irq = 0; /* No valid IRQ Assignable */ | ||
791 | else { | ||
792 | irq = find_first_bit(&irq_bitmap, 32); | ||
793 | do { | ||
794 | hpet_config |= irq << Tn_INT_ROUTE_CNF_SHIFT; | ||
795 | writeq(hpet_config, &timer->hpet_config); | ||
796 | |||
797 | /* | ||
798 | * Verify whether we have written a valid | ||
799 | * IRQ number by reading it back again | ||
800 | */ | ||
801 | hpet_config = readq(&timer->hpet_config); | ||
802 | if (irq == (hpet_config & Tn_INT_ROUTE_CNF_MASK) | ||
803 | >> Tn_INT_ROUTE_CNF_SHIFT) | ||
804 | break; /* Success */ | ||
805 | } while ((irq = (find_next_bit(&irq_bitmap, 32, irq)))); | ||
806 | } | ||
807 | hpetp->hp_dev[i].hd_hdwirq = irq; | ||
808 | } | ||
809 | 773 | ||
810 | cap = readq(&hpet->hpet_cap); | 774 | cap = readq(&hpet->hpet_cap); |
811 | 775 | ||
@@ -836,8 +800,7 @@ int hpet_alloc(struct hpet_data *hdp) | |||
836 | hpetp->hp_which, hdp->hd_phys_address, | 800 | hpetp->hp_which, hdp->hd_phys_address, |
837 | hpetp->hp_ntimer > 1 ? "s" : ""); | 801 | hpetp->hp_ntimer > 1 ? "s" : ""); |
838 | for (i = 0; i < hpetp->hp_ntimer; i++) | 802 | for (i = 0; i < hpetp->hp_ntimer; i++) |
839 | printk("%s %d", i > 0 ? "," : "", | 803 | printk("%s %d", i > 0 ? "," : "", hdp->hd_irq[i]); |
840 | hpetp->hp_dev[i].hd_hdwirq); | ||
841 | printk("\n"); | 804 | printk("\n"); |
842 | 805 | ||
843 | printk(KERN_INFO "hpet%u: %u %d-bit timers, %Lu Hz\n", | 806 | printk(KERN_INFO "hpet%u: %u %d-bit timers, %Lu Hz\n", |
diff --git a/drivers/char/ip2/i2lib.c b/drivers/char/ip2/i2lib.c index d6567b32fb5c..9c25320121ef 100644 --- a/drivers/char/ip2/i2lib.c +++ b/drivers/char/ip2/i2lib.c | |||
@@ -644,12 +644,12 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, | |||
644 | // Normal Expected path - We still hold LOCK | 644 | // Normal Expected path - We still hold LOCK |
645 | break; /* from for()- Enough room: goto proceed */ | 645 | break; /* from for()- Enough room: goto proceed */ |
646 | } | 646 | } |
647 | } | 647 | ip2trace(CHANN, ITRC_QUEUE, 3, 1, totalsize); |
648 | 648 | WRITE_UNLOCK_IRQRESTORE(lock_var_p, flags); | |
649 | ip2trace (CHANN, ITRC_QUEUE, 3, 1, totalsize ); | 649 | } else |
650 | ip2trace(CHANN, ITRC_QUEUE, 3, 1, totalsize); | ||
650 | 651 | ||
651 | // Prepare to wait for buffers to empty | 652 | /* Prepare to wait for buffers to empty */ |
652 | WRITE_UNLOCK_IRQRESTORE(lock_var_p,flags); | ||
653 | serviceOutgoingFifo(pB); // Dump what we got | 653 | serviceOutgoingFifo(pB); // Dump what we got |
654 | 654 | ||
655 | if (timeout == 0) { | 655 | if (timeout == 0) { |
@@ -1830,6 +1830,8 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1830 | default: // Neither packet? should be impossible | 1830 | default: // Neither packet? should be impossible |
1831 | ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 5, 1, | 1831 | ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 5, 1, |
1832 | PTYPE_OF(pB->i2eLeadoffWord) ); | 1832 | PTYPE_OF(pB->i2eLeadoffWord) ); |
1833 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock, | ||
1834 | bflags); | ||
1833 | 1835 | ||
1834 | break; | 1836 | break; |
1835 | } // End of switch on type of packets | 1837 | } // End of switch on type of packets |
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c index 46b2a1cc8b54..0c09409fa45d 100644 --- a/drivers/char/n_tty.c +++ b/drivers/char/n_tty.c | |||
@@ -1183,7 +1183,7 @@ static int copy_from_read_buf(struct tty_struct *tty, | |||
1183 | return retval; | 1183 | return retval; |
1184 | } | 1184 | } |
1185 | 1185 | ||
1186 | extern ssize_t redirected_tty_write(struct file *, const char *, | 1186 | extern ssize_t redirected_tty_write(struct file *, const char __user *, |
1187 | size_t, loff_t *); | 1187 | size_t, loff_t *); |
1188 | 1188 | ||
1189 | /** | 1189 | /** |
diff --git a/drivers/char/nozomi.c b/drivers/char/nozomi.c index 6d0dc5f9b6bb..6a6843a0a674 100644 --- a/drivers/char/nozomi.c +++ b/drivers/char/nozomi.c | |||
@@ -438,7 +438,7 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start, | |||
438 | u32 size_bytes) | 438 | u32 size_bytes) |
439 | { | 439 | { |
440 | u32 i = 0; | 440 | u32 i = 0; |
441 | const u32 *ptr = (__force u32 *) mem_addr_start; | 441 | const u32 __iomem *ptr = mem_addr_start; |
442 | u16 *buf16; | 442 | u16 *buf16; |
443 | 443 | ||
444 | if (unlikely(!ptr || !buf)) | 444 | if (unlikely(!ptr || !buf)) |
@@ -448,11 +448,11 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start, | |||
448 | switch (size_bytes) { | 448 | switch (size_bytes) { |
449 | case 2: /* 2 bytes */ | 449 | case 2: /* 2 bytes */ |
450 | buf16 = (u16 *) buf; | 450 | buf16 = (u16 *) buf; |
451 | *buf16 = __le16_to_cpu(readw((void __iomem *)ptr)); | 451 | *buf16 = __le16_to_cpu(readw(ptr)); |
452 | goto out; | 452 | goto out; |
453 | break; | 453 | break; |
454 | case 4: /* 4 bytes */ | 454 | case 4: /* 4 bytes */ |
455 | *(buf) = __le32_to_cpu(readl((void __iomem *)ptr)); | 455 | *(buf) = __le32_to_cpu(readl(ptr)); |
456 | goto out; | 456 | goto out; |
457 | break; | 457 | break; |
458 | } | 458 | } |
@@ -461,11 +461,11 @@ static void read_mem32(u32 *buf, const void __iomem *mem_addr_start, | |||
461 | if (size_bytes - i == 2) { | 461 | if (size_bytes - i == 2) { |
462 | /* Handle 2 bytes in the end */ | 462 | /* Handle 2 bytes in the end */ |
463 | buf16 = (u16 *) buf; | 463 | buf16 = (u16 *) buf; |
464 | *(buf16) = __le16_to_cpu(readw((void __iomem *)ptr)); | 464 | *(buf16) = __le16_to_cpu(readw(ptr)); |
465 | i += 2; | 465 | i += 2; |
466 | } else { | 466 | } else { |
467 | /* Read 4 bytes */ | 467 | /* Read 4 bytes */ |
468 | *(buf) = __le32_to_cpu(readl((void __iomem *)ptr)); | 468 | *(buf) = __le32_to_cpu(readl(ptr)); |
469 | i += 4; | 469 | i += 4; |
470 | } | 470 | } |
471 | buf++; | 471 | buf++; |
@@ -484,7 +484,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf, | |||
484 | u32 size_bytes) | 484 | u32 size_bytes) |
485 | { | 485 | { |
486 | u32 i = 0; | 486 | u32 i = 0; |
487 | u32 *ptr = (__force u32 *) mem_addr_start; | 487 | u32 __iomem *ptr = mem_addr_start; |
488 | const u16 *buf16; | 488 | const u16 *buf16; |
489 | 489 | ||
490 | if (unlikely(!ptr || !buf)) | 490 | if (unlikely(!ptr || !buf)) |
@@ -494,7 +494,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf, | |||
494 | switch (size_bytes) { | 494 | switch (size_bytes) { |
495 | case 2: /* 2 bytes */ | 495 | case 2: /* 2 bytes */ |
496 | buf16 = (const u16 *)buf; | 496 | buf16 = (const u16 *)buf; |
497 | writew(__cpu_to_le16(*buf16), (void __iomem *)ptr); | 497 | writew(__cpu_to_le16(*buf16), ptr); |
498 | return 2; | 498 | return 2; |
499 | break; | 499 | break; |
500 | case 1: /* | 500 | case 1: /* |
@@ -502,7 +502,7 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf, | |||
502 | * so falling through.. | 502 | * so falling through.. |
503 | */ | 503 | */ |
504 | case 4: /* 4 bytes */ | 504 | case 4: /* 4 bytes */ |
505 | writel(__cpu_to_le32(*buf), (void __iomem *)ptr); | 505 | writel(__cpu_to_le32(*buf), ptr); |
506 | return 4; | 506 | return 4; |
507 | break; | 507 | break; |
508 | } | 508 | } |
@@ -511,11 +511,11 @@ static u32 write_mem32(void __iomem *mem_addr_start, const u32 *buf, | |||
511 | if (size_bytes - i == 2) { | 511 | if (size_bytes - i == 2) { |
512 | /* 2 bytes */ | 512 | /* 2 bytes */ |
513 | buf16 = (const u16 *)buf; | 513 | buf16 = (const u16 *)buf; |
514 | writew(__cpu_to_le16(*buf16), (void __iomem *)ptr); | 514 | writew(__cpu_to_le16(*buf16), ptr); |
515 | i += 2; | 515 | i += 2; |
516 | } else { | 516 | } else { |
517 | /* 4 bytes */ | 517 | /* 4 bytes */ |
518 | writel(__cpu_to_le32(*buf), (void __iomem *)ptr); | 518 | writel(__cpu_to_le32(*buf), ptr); |
519 | i += 4; | 519 | i += 4; |
520 | } | 520 | } |
521 | buf++; | 521 | buf++; |
diff --git a/drivers/char/rio/riotable.c b/drivers/char/rio/riotable.c index 991119c9f473..9b52892a501f 100644 --- a/drivers/char/rio/riotable.c +++ b/drivers/char/rio/riotable.c | |||
@@ -425,8 +425,10 @@ int RIOApel(struct rio_info *p) | |||
425 | 425 | ||
426 | MapP = &p->RIOConnectTable[Next++]; | 426 | MapP = &p->RIOConnectTable[Next++]; |
427 | MapP->HostUniqueNum = HostP->UniqueNum; | 427 | MapP->HostUniqueNum = HostP->UniqueNum; |
428 | if ((HostP->Flags & RUN_STATE) != RC_RUNNING) | 428 | if ((HostP->Flags & RUN_STATE) != RC_RUNNING) { |
429 | rio_spin_unlock_irqrestore(&HostP->HostLock, flags); | ||
429 | continue; | 430 | continue; |
431 | } | ||
430 | MapP->RtaUniqueNum = 0; | 432 | MapP->RtaUniqueNum = 0; |
431 | MapP->ID = 0; | 433 | MapP->ID = 0; |
432 | MapP->Flags = SLOT_IN_USE; | 434 | MapP->Flags = SLOT_IN_USE; |
diff --git a/drivers/char/rio/riotty.c b/drivers/char/rio/riotty.c index a4f0b1e3e7fa..cfa54361473f 100644 --- a/drivers/char/rio/riotty.c +++ b/drivers/char/rio/riotty.c | |||
@@ -319,6 +319,7 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
319 | PortP->State |= RIO_WOPEN; | 319 | PortP->State |= RIO_WOPEN; |
320 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); | 320 | rio_spin_unlock_irqrestore(&PortP->portSem, flags); |
321 | if (RIODelay(PortP, HUNDRED_MS) == RIO_FAIL) { | 321 | if (RIODelay(PortP, HUNDRED_MS) == RIO_FAIL) { |
322 | rio_spin_lock_irqsave(&PortP->portSem, flags); | ||
322 | /* | 323 | /* |
323 | ** ACTION: verify that this is a good thing | 324 | ** ACTION: verify that this is a good thing |
324 | ** to do here. -- ??? | 325 | ** to do here. -- ??? |
@@ -334,6 +335,7 @@ int riotopen(struct tty_struct *tty, struct file *filp) | |||
334 | func_exit(); | 335 | func_exit(); |
335 | return -EINTR; | 336 | return -EINTR; |
336 | } | 337 | } |
338 | rio_spin_lock_irqsave(&PortP->portSem, flags); | ||
337 | } | 339 | } |
338 | PortP->State &= ~RIO_WOPEN; | 340 | PortP->State &= ~RIO_WOPEN; |
339 | } | 341 | } |
@@ -493,6 +495,7 @@ int riotclose(void *ptr) | |||
493 | 495 | ||
494 | if (RIOShortCommand(p, PortP, CLOSE, 1, 0) == RIO_FAIL) { | 496 | if (RIOShortCommand(p, PortP, CLOSE, 1, 0) == RIO_FAIL) { |
495 | RIOPreemptiveCmd(p, PortP, FCLOSE); | 497 | RIOPreemptiveCmd(p, PortP, FCLOSE); |
498 | rio_spin_lock_irqsave(&PortP->portSem, flags); | ||
496 | goto close_end; | 499 | goto close_end; |
497 | } | 500 | } |
498 | 501 | ||
@@ -508,6 +511,7 @@ int riotclose(void *ptr) | |||
508 | 511 | ||
509 | if (p->RIOHalted) { | 512 | if (p->RIOHalted) { |
510 | RIOClearUp(PortP); | 513 | RIOClearUp(PortP); |
514 | rio_spin_lock_irqsave(&PortP->portSem, flags); | ||
511 | goto close_end; | 515 | goto close_end; |
512 | } | 516 | } |
513 | if (RIODelay(PortP, HUNDRED_MS) == RIO_FAIL) { | 517 | if (RIODelay(PortP, HUNDRED_MS) == RIO_FAIL) { |
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index d73663a52324..fc555a90bb21 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -67,7 +67,7 @@ static void cpuidle_idle_call(void) | |||
67 | /* enter the state and update stats */ | 67 | /* enter the state and update stats */ |
68 | dev->last_residency = target_state->enter(dev, target_state); | 68 | dev->last_residency = target_state->enter(dev, target_state); |
69 | dev->last_state = target_state; | 69 | dev->last_state = target_state; |
70 | target_state->time += dev->last_residency; | 70 | target_state->time += (unsigned long long)dev->last_residency; |
71 | target_state->usage++; | 71 | target_state->usage++; |
72 | 72 | ||
73 | /* give the governor an opportunity to reflect on the outcome */ | 73 | /* give the governor an opportunity to reflect on the outcome */ |
@@ -224,7 +224,7 @@ static void poll_idle_init(struct cpuidle_device *dev) | |||
224 | state->exit_latency = 0; | 224 | state->exit_latency = 0; |
225 | state->target_residency = 0; | 225 | state->target_residency = 0; |
226 | state->power_usage = -1; | 226 | state->power_usage = -1; |
227 | state->flags = CPUIDLE_FLAG_POLL | CPUIDLE_FLAG_TIME_VALID; | 227 | state->flags = CPUIDLE_FLAG_POLL; |
228 | state->enter = poll_idle; | 228 | state->enter = poll_idle; |
229 | } | 229 | } |
230 | #else | 230 | #else |
diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c index 69102ca05685..e949618b9be0 100644 --- a/drivers/cpuidle/sysfs.c +++ b/drivers/cpuidle/sysfs.c | |||
@@ -218,6 +218,12 @@ static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | |||
218 | return sprintf(buf, "%u\n", state->_name);\ | 218 | return sprintf(buf, "%u\n", state->_name);\ |
219 | } | 219 | } |
220 | 220 | ||
221 | #define define_show_state_ull_function(_name) \ | ||
222 | static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | ||
223 | { \ | ||
224 | return sprintf(buf, "%llu\n", state->_name);\ | ||
225 | } | ||
226 | |||
221 | #define define_show_state_str_function(_name) \ | 227 | #define define_show_state_str_function(_name) \ |
222 | static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | 228 | static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ |
223 | { \ | 229 | { \ |
@@ -228,8 +234,8 @@ static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ | |||
228 | 234 | ||
229 | define_show_state_function(exit_latency) | 235 | define_show_state_function(exit_latency) |
230 | define_show_state_function(power_usage) | 236 | define_show_state_function(power_usage) |
231 | define_show_state_function(usage) | 237 | define_show_state_ull_function(usage) |
232 | define_show_state_function(time) | 238 | define_show_state_ull_function(time) |
233 | define_show_state_str_function(name) | 239 | define_show_state_str_function(name) |
234 | define_show_state_str_function(desc) | 240 | define_show_state_str_function(desc) |
235 | 241 | ||
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c index 3110bf7014f7..81f3f950cd7d 100644 --- a/drivers/crypto/hifn_795x.c +++ b/drivers/crypto/hifn_795x.c | |||
@@ -392,8 +392,8 @@ static atomic_t hifn_dev_number; | |||
392 | 392 | ||
393 | struct hifn_desc | 393 | struct hifn_desc |
394 | { | 394 | { |
395 | volatile u32 l; | 395 | volatile __le32 l; |
396 | volatile u32 p; | 396 | volatile __le32 p; |
397 | }; | 397 | }; |
398 | 398 | ||
399 | struct hifn_dma { | 399 | struct hifn_dma { |
@@ -481,10 +481,10 @@ struct hifn_device | |||
481 | 481 | ||
482 | struct hifn_base_command | 482 | struct hifn_base_command |
483 | { | 483 | { |
484 | volatile u16 masks; | 484 | volatile __le16 masks; |
485 | volatile u16 session_num; | 485 | volatile __le16 session_num; |
486 | volatile u16 total_source_count; | 486 | volatile __le16 total_source_count; |
487 | volatile u16 total_dest_count; | 487 | volatile __le16 total_dest_count; |
488 | }; | 488 | }; |
489 | 489 | ||
490 | #define HIFN_BASE_CMD_COMP 0x0100 /* enable compression engine */ | 490 | #define HIFN_BASE_CMD_COMP 0x0100 /* enable compression engine */ |
@@ -504,10 +504,10 @@ struct hifn_base_command | |||
504 | */ | 504 | */ |
505 | struct hifn_crypt_command | 505 | struct hifn_crypt_command |
506 | { | 506 | { |
507 | volatile u16 masks; | 507 | volatile __le16 masks; |
508 | volatile u16 header_skip; | 508 | volatile __le16 header_skip; |
509 | volatile u16 source_count; | 509 | volatile __le16 source_count; |
510 | volatile u16 reserved; | 510 | volatile __le16 reserved; |
511 | }; | 511 | }; |
512 | 512 | ||
513 | #define HIFN_CRYPT_CMD_ALG_MASK 0x0003 /* algorithm: */ | 513 | #define HIFN_CRYPT_CMD_ALG_MASK 0x0003 /* algorithm: */ |
@@ -670,7 +670,7 @@ static inline u32 hifn_read_0(struct hifn_device *dev, u32 reg) | |||
670 | { | 670 | { |
671 | u32 ret; | 671 | u32 ret; |
672 | 672 | ||
673 | ret = readl((char *)(dev->bar[0]) + reg); | 673 | ret = readl(dev->bar[0] + reg); |
674 | 674 | ||
675 | return ret; | 675 | return ret; |
676 | } | 676 | } |
@@ -679,19 +679,19 @@ static inline u32 hifn_read_1(struct hifn_device *dev, u32 reg) | |||
679 | { | 679 | { |
680 | u32 ret; | 680 | u32 ret; |
681 | 681 | ||
682 | ret = readl((char *)(dev->bar[1]) + reg); | 682 | ret = readl(dev->bar[1] + reg); |
683 | 683 | ||
684 | return ret; | 684 | return ret; |
685 | } | 685 | } |
686 | 686 | ||
687 | static inline void hifn_write_0(struct hifn_device *dev, u32 reg, u32 val) | 687 | static inline void hifn_write_0(struct hifn_device *dev, u32 reg, u32 val) |
688 | { | 688 | { |
689 | writel(val, (char *)(dev->bar[0]) + reg); | 689 | writel(val, dev->bar[0] + reg); |
690 | } | 690 | } |
691 | 691 | ||
692 | static inline void hifn_write_1(struct hifn_device *dev, u32 reg, u32 val) | 692 | static inline void hifn_write_1(struct hifn_device *dev, u32 reg, u32 val) |
693 | { | 693 | { |
694 | writel(val, (char *)(dev->bar[1]) + reg); | 694 | writel(val, dev->bar[1] + reg); |
695 | } | 695 | } |
696 | 696 | ||
697 | static void hifn_wait_puc(struct hifn_device *dev) | 697 | static void hifn_wait_puc(struct hifn_device *dev) |
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c index 72692309398a..df163687c91a 100644 --- a/drivers/dma/fsldma.c +++ b/drivers/dma/fsldma.c | |||
@@ -1021,11 +1021,11 @@ const u32 mpc8349_dma_ip_feature = FSL_DMA_IP_83XX | FSL_DMA_LITTLE_ENDIAN; | |||
1021 | 1021 | ||
1022 | static struct of_device_id of_fsl_dma_chan_ids[] = { | 1022 | static struct of_device_id of_fsl_dma_chan_ids[] = { |
1023 | { | 1023 | { |
1024 | .compatible = "fsl,mpc8540-dma-channel", | 1024 | .compatible = "fsl,eloplus-dma-channel", |
1025 | .data = (void *)&mpc8540_dma_ip_feature, | 1025 | .data = (void *)&mpc8540_dma_ip_feature, |
1026 | }, | 1026 | }, |
1027 | { | 1027 | { |
1028 | .compatible = "fsl,mpc8349-dma-channel", | 1028 | .compatible = "fsl,elo-dma-channel", |
1029 | .data = (void *)&mpc8349_dma_ip_feature, | 1029 | .data = (void *)&mpc8349_dma_ip_feature, |
1030 | }, | 1030 | }, |
1031 | {} | 1031 | {} |
@@ -1107,8 +1107,8 @@ err: | |||
1107 | } | 1107 | } |
1108 | 1108 | ||
1109 | static struct of_device_id of_fsl_dma_ids[] = { | 1109 | static struct of_device_id of_fsl_dma_ids[] = { |
1110 | { .compatible = "fsl,mpc8540-dma", }, | 1110 | { .compatible = "fsl,eloplus-dma", }, |
1111 | { .compatible = "fsl,mpc8349-dma", }, | 1111 | { .compatible = "fsl,elo-dma", }, |
1112 | {} | 1112 | {} |
1113 | }; | 1113 | }; |
1114 | 1114 | ||
diff --git a/drivers/dma/fsldma.h b/drivers/dma/fsldma.h index fddd6aee2a63..6faf07ba0d0e 100644 --- a/drivers/dma/fsldma.h +++ b/drivers/dma/fsldma.h | |||
@@ -75,12 +75,15 @@ | |||
75 | #define FSL_DMA_DGSR_EOSI 0x02 | 75 | #define FSL_DMA_DGSR_EOSI 0x02 |
76 | #define FSL_DMA_DGSR_EOLSI 0x01 | 76 | #define FSL_DMA_DGSR_EOLSI 0x01 |
77 | 77 | ||
78 | typedef u64 __bitwise v64; | ||
79 | typedef u32 __bitwise v32; | ||
80 | |||
78 | struct fsl_dma_ld_hw { | 81 | struct fsl_dma_ld_hw { |
79 | u64 __bitwise src_addr; | 82 | v64 src_addr; |
80 | u64 __bitwise dst_addr; | 83 | v64 dst_addr; |
81 | u64 __bitwise next_ln_addr; | 84 | v64 next_ln_addr; |
82 | u32 __bitwise count; | 85 | v32 count; |
83 | u32 __bitwise reserve; | 86 | v32 reserve; |
84 | } __attribute__((aligned(32))); | 87 | } __attribute__((aligned(32))); |
85 | 88 | ||
86 | struct fsl_desc_sw { | 89 | struct fsl_desc_sw { |
@@ -92,13 +95,13 @@ struct fsl_desc_sw { | |||
92 | } __attribute__((aligned(32))); | 95 | } __attribute__((aligned(32))); |
93 | 96 | ||
94 | struct fsl_dma_chan_regs { | 97 | struct fsl_dma_chan_regs { |
95 | u32 __bitwise mr; /* 0x00 - Mode Register */ | 98 | u32 mr; /* 0x00 - Mode Register */ |
96 | u32 __bitwise sr; /* 0x04 - Status Register */ | 99 | u32 sr; /* 0x04 - Status Register */ |
97 | u64 __bitwise cdar; /* 0x08 - Current descriptor address register */ | 100 | u64 cdar; /* 0x08 - Current descriptor address register */ |
98 | u64 __bitwise sar; /* 0x10 - Source Address Register */ | 101 | u64 sar; /* 0x10 - Source Address Register */ |
99 | u64 __bitwise dar; /* 0x18 - Destination Address Register */ | 102 | u64 dar; /* 0x18 - Destination Address Register */ |
100 | u32 __bitwise bcr; /* 0x20 - Byte Count Register */ | 103 | u32 bcr; /* 0x20 - Byte Count Register */ |
101 | u64 __bitwise ndar; /* 0x24 - Next Descriptor Address Register */ | 104 | u64 ndar; /* 0x24 - Next Descriptor Address Register */ |
102 | }; | 105 | }; |
103 | 106 | ||
104 | struct fsl_dma_chan; | 107 | struct fsl_dma_chan; |
@@ -151,25 +154,27 @@ struct fsl_dma_chan { | |||
151 | #ifndef __powerpc64__ | 154 | #ifndef __powerpc64__ |
152 | static u64 in_be64(const u64 __iomem *addr) | 155 | static u64 in_be64(const u64 __iomem *addr) |
153 | { | 156 | { |
154 | return ((u64)in_be32((u32 *)addr) << 32) | (in_be32((u32 *)addr + 1)); | 157 | return ((u64)in_be32((u32 __iomem *)addr) << 32) | |
158 | (in_be32((u32 __iomem *)addr + 1)); | ||
155 | } | 159 | } |
156 | 160 | ||
157 | static void out_be64(u64 __iomem *addr, u64 val) | 161 | static void out_be64(u64 __iomem *addr, u64 val) |
158 | { | 162 | { |
159 | out_be32((u32 *)addr, val >> 32); | 163 | out_be32((u32 __iomem *)addr, val >> 32); |
160 | out_be32((u32 *)addr + 1, (u32)val); | 164 | out_be32((u32 __iomem *)addr + 1, (u32)val); |
161 | } | 165 | } |
162 | 166 | ||
163 | /* There is no asm instructions for 64 bits reverse loads and stores */ | 167 | /* There is no asm instructions for 64 bits reverse loads and stores */ |
164 | static u64 in_le64(const u64 __iomem *addr) | 168 | static u64 in_le64(const u64 __iomem *addr) |
165 | { | 169 | { |
166 | return ((u64)in_le32((u32 *)addr + 1) << 32) | (in_le32((u32 *)addr)); | 170 | return ((u64)in_le32((u32 __iomem *)addr + 1) << 32) | |
171 | (in_le32((u32 __iomem *)addr)); | ||
167 | } | 172 | } |
168 | 173 | ||
169 | static void out_le64(u64 __iomem *addr, u64 val) | 174 | static void out_le64(u64 __iomem *addr, u64 val) |
170 | { | 175 | { |
171 | out_le32((u32 *)addr + 1, val >> 32); | 176 | out_le32((u32 __iomem *)addr + 1, val >> 32); |
172 | out_le32((u32 *)addr, (u32)val); | 177 | out_le32((u32 __iomem *)addr, (u32)val); |
173 | } | 178 | } |
174 | #endif | 179 | #endif |
175 | 180 | ||
@@ -182,9 +187,11 @@ static void out_le64(u64 __iomem *addr, u64 val) | |||
182 | 187 | ||
183 | #define DMA_TO_CPU(fsl_chan, d, width) \ | 188 | #define DMA_TO_CPU(fsl_chan, d, width) \ |
184 | (((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ? \ | 189 | (((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ? \ |
185 | be##width##_to_cpu(d) : le##width##_to_cpu(d)) | 190 | be##width##_to_cpu((__force __be##width)(v##width)d) : \ |
191 | le##width##_to_cpu((__force __le##width)(v##width)d)) | ||
186 | #define CPU_TO_DMA(fsl_chan, c, width) \ | 192 | #define CPU_TO_DMA(fsl_chan, c, width) \ |
187 | (((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ? \ | 193 | (((fsl_chan)->feature & FSL_DMA_BIG_ENDIAN) ? \ |
188 | cpu_to_be##width(c) : cpu_to_le##width(c)) | 194 | (__force v##width)cpu_to_be##width(c) : \ |
195 | (__force v##width)cpu_to_le##width(c)) | ||
189 | 196 | ||
190 | #endif /* __DMA_FSLDMA_H */ | 197 | #endif /* __DMA_FSLDMA_H */ |
diff --git a/drivers/dma/ioat_dca.c b/drivers/dma/ioat_dca.c index 0fa8a98051a8..9e922760b7ff 100644 --- a/drivers/dma/ioat_dca.c +++ b/drivers/dma/ioat_dca.c | |||
@@ -98,7 +98,7 @@ struct ioat_dca_slot { | |||
98 | 98 | ||
99 | struct ioat_dca_priv { | 99 | struct ioat_dca_priv { |
100 | void __iomem *iobase; | 100 | void __iomem *iobase; |
101 | void *dca_base; | 101 | void __iomem *dca_base; |
102 | int max_requesters; | 102 | int max_requesters; |
103 | int requester_count; | 103 | int requester_count; |
104 | u8 tag_map[IOAT_TAG_MAP_LEN]; | 104 | u8 tag_map[IOAT_TAG_MAP_LEN]; |
@@ -338,7 +338,7 @@ static struct dca_ops ioat2_dca_ops = { | |||
338 | .get_tag = ioat2_dca_get_tag, | 338 | .get_tag = ioat2_dca_get_tag, |
339 | }; | 339 | }; |
340 | 340 | ||
341 | static int ioat2_dca_count_dca_slots(void *iobase, u16 dca_offset) | 341 | static int ioat2_dca_count_dca_slots(void __iomem *iobase, u16 dca_offset) |
342 | { | 342 | { |
343 | int slots = 0; | 343 | int slots = 0; |
344 | u32 req; | 344 | u32 req; |
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c index 996d61f0d460..ca6d51efd8bb 100644 --- a/drivers/firewire/fw-ohci.c +++ b/drivers/firewire/fw-ohci.c | |||
@@ -401,7 +401,8 @@ static void ar_context_tasklet(unsigned long data) | |||
401 | 401 | ||
402 | if (d->res_count == 0) { | 402 | if (d->res_count == 0) { |
403 | size_t size, rest, offset; | 403 | size_t size, rest, offset; |
404 | dma_addr_t buffer_bus; | 404 | dma_addr_t start_bus; |
405 | void *start; | ||
405 | 406 | ||
406 | /* | 407 | /* |
407 | * This descriptor is finished and we may have a | 408 | * This descriptor is finished and we may have a |
@@ -410,9 +411,9 @@ static void ar_context_tasklet(unsigned long data) | |||
410 | */ | 411 | */ |
411 | 412 | ||
412 | offset = offsetof(struct ar_buffer, data); | 413 | offset = offsetof(struct ar_buffer, data); |
413 | buffer_bus = le32_to_cpu(ab->descriptor.data_address) - offset; | 414 | start = buffer = ab; |
415 | start_bus = le32_to_cpu(ab->descriptor.data_address) - offset; | ||
414 | 416 | ||
415 | buffer = ab; | ||
416 | ab = ab->next; | 417 | ab = ab->next; |
417 | d = &ab->descriptor; | 418 | d = &ab->descriptor; |
418 | size = buffer + PAGE_SIZE - ctx->pointer; | 419 | size = buffer + PAGE_SIZE - ctx->pointer; |
@@ -427,7 +428,7 @@ static void ar_context_tasklet(unsigned long data) | |||
427 | buffer = handle_ar_packet(ctx, buffer); | 428 | buffer = handle_ar_packet(ctx, buffer); |
428 | 429 | ||
429 | dma_free_coherent(ohci->card.device, PAGE_SIZE, | 430 | dma_free_coherent(ohci->card.device, PAGE_SIZE, |
430 | buffer, buffer_bus); | 431 | start, start_bus); |
431 | ar_context_add_page(ctx); | 432 | ar_context_add_page(ctx); |
432 | } else { | 433 | } else { |
433 | buffer = ctx->pointer; | 434 | buffer = ctx->pointer; |
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index 4072449ad1cd..c5e3ed7e903b 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c | |||
@@ -266,7 +266,7 @@ static void __init dmi_save_ipmi_device(const struct dmi_header *dm) | |||
266 | dev->name = "IPMI controller"; | 266 | dev->name = "IPMI controller"; |
267 | dev->device_data = data; | 267 | dev->device_data = data; |
268 | 268 | ||
269 | list_add(&dev->list, &dmi_devices); | 269 | list_add_tail(&dev->list, &dmi_devices); |
270 | } | 270 | } |
271 | 271 | ||
272 | static void __init dmi_save_extended_devices(const struct dmi_header *dm) | 272 | static void __init dmi_save_extended_devices(const struct dmi_header *dm) |
diff --git a/drivers/hwmon/w83781d.c b/drivers/hwmon/w83781d.c index 5c85670e2d16..f942ecdd47c8 100644 --- a/drivers/hwmon/w83781d.c +++ b/drivers/hwmon/w83781d.c | |||
@@ -1367,7 +1367,8 @@ w83781d_isa_probe(struct platform_device *pdev) | |||
1367 | 1367 | ||
1368 | /* Reserve the ISA region */ | 1368 | /* Reserve the ISA region */ |
1369 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); | 1369 | res = platform_get_resource(pdev, IORESOURCE_IO, 0); |
1370 | if (!request_region(res->start, W83781D_EXTENT, "w83781d")) { | 1370 | if (!request_region(res->start + W83781D_ADDR_REG_OFFSET, 2, |
1371 | "w83781d")) { | ||
1371 | err = -EBUSY; | 1372 | err = -EBUSY; |
1372 | goto exit; | 1373 | goto exit; |
1373 | } | 1374 | } |
@@ -1415,7 +1416,7 @@ w83781d_isa_probe(struct platform_device *pdev) | |||
1415 | device_remove_file(&pdev->dev, &dev_attr_name); | 1416 | device_remove_file(&pdev->dev, &dev_attr_name); |
1416 | kfree(data); | 1417 | kfree(data); |
1417 | exit_release_region: | 1418 | exit_release_region: |
1418 | release_region(res->start, W83781D_EXTENT); | 1419 | release_region(res->start + W83781D_ADDR_REG_OFFSET, 2); |
1419 | exit: | 1420 | exit: |
1420 | return err; | 1421 | return err; |
1421 | } | 1422 | } |
@@ -1429,7 +1430,7 @@ w83781d_isa_remove(struct platform_device *pdev) | |||
1429 | sysfs_remove_group(&pdev->dev.kobj, &w83781d_group); | 1430 | sysfs_remove_group(&pdev->dev.kobj, &w83781d_group); |
1430 | sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt); | 1431 | sysfs_remove_group(&pdev->dev.kobj, &w83781d_group_opt); |
1431 | device_remove_file(&pdev->dev, &dev_attr_name); | 1432 | device_remove_file(&pdev->dev, &dev_attr_name); |
1432 | release_region(data->client.addr, W83781D_EXTENT); | 1433 | release_region(data->client.addr + W83781D_ADDR_REG_OFFSET, 2); |
1433 | kfree(data); | 1434 | kfree(data); |
1434 | 1435 | ||
1435 | return 0; | 1436 | return 0; |
@@ -1797,8 +1798,17 @@ w83781d_isa_found(unsigned short address) | |||
1797 | { | 1798 | { |
1798 | int val, save, found = 0; | 1799 | int val, save, found = 0; |
1799 | 1800 | ||
1800 | if (!request_region(address, W83781D_EXTENT, "w83781d")) | 1801 | /* We have to request the region in two parts because some |
1802 | boards declare base+4 to base+7 as a PNP device */ | ||
1803 | if (!request_region(address, 4, "w83781d")) { | ||
1804 | pr_debug("w83781d: Failed to request low part of region\n"); | ||
1801 | return 0; | 1805 | return 0; |
1806 | } | ||
1807 | if (!request_region(address + 4, 4, "w83781d")) { | ||
1808 | pr_debug("w83781d: Failed to request high part of region\n"); | ||
1809 | release_region(address, 4); | ||
1810 | return 0; | ||
1811 | } | ||
1802 | 1812 | ||
1803 | #define REALLY_SLOW_IO | 1813 | #define REALLY_SLOW_IO |
1804 | /* We need the timeouts for at least some W83781D-like | 1814 | /* We need the timeouts for at least some W83781D-like |
@@ -1871,7 +1881,8 @@ w83781d_isa_found(unsigned short address) | |||
1871 | val == 0x30 ? "W83782D" : "W83781D", (int)address); | 1881 | val == 0x30 ? "W83782D" : "W83781D", (int)address); |
1872 | 1882 | ||
1873 | release: | 1883 | release: |
1874 | release_region(address, W83781D_EXTENT); | 1884 | release_region(address + 4, 4); |
1885 | release_region(address, 4); | ||
1875 | return found; | 1886 | return found; |
1876 | } | 1887 | } |
1877 | 1888 | ||
diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c index cce5a614758d..fde26345a379 100644 --- a/drivers/i2c/busses/i2c-davinci.c +++ b/drivers/i2c/busses/i2c-davinci.c | |||
@@ -382,9 +382,8 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) | |||
382 | break; | 382 | break; |
383 | 383 | ||
384 | case DAVINCI_I2C_IVR_ARDY: | 384 | case DAVINCI_I2C_IVR_ARDY: |
385 | w = davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG); | 385 | davinci_i2c_write_reg(dev, |
386 | MOD_REG_BIT(w, DAVINCI_I2C_STR_ARDY, 1); | 386 | DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_ARDY); |
387 | davinci_i2c_write_reg(dev, DAVINCI_I2C_STR_REG, w); | ||
388 | complete(&dev->cmd_complete); | 387 | complete(&dev->cmd_complete); |
389 | break; | 388 | break; |
390 | 389 | ||
@@ -397,12 +396,9 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) | |||
397 | if (dev->buf_len) | 396 | if (dev->buf_len) |
398 | continue; | 397 | continue; |
399 | 398 | ||
400 | w = davinci_i2c_read_reg(dev, | ||
401 | DAVINCI_I2C_STR_REG); | ||
402 | MOD_REG_BIT(w, DAVINCI_I2C_IMR_RRDY, 0); | ||
403 | davinci_i2c_write_reg(dev, | 399 | davinci_i2c_write_reg(dev, |
404 | DAVINCI_I2C_STR_REG, | 400 | DAVINCI_I2C_STR_REG, |
405 | w); | 401 | DAVINCI_I2C_IMR_RRDY); |
406 | } else | 402 | } else |
407 | dev_err(dev->dev, "RDR IRQ while no " | 403 | dev_err(dev->dev, "RDR IRQ while no " |
408 | "data requested\n"); | 404 | "data requested\n"); |
@@ -428,9 +424,8 @@ static irqreturn_t i2c_davinci_isr(int this_irq, void *dev_id) | |||
428 | break; | 424 | break; |
429 | 425 | ||
430 | case DAVINCI_I2C_IVR_SCD: | 426 | case DAVINCI_I2C_IVR_SCD: |
431 | w = davinci_i2c_read_reg(dev, DAVINCI_I2C_STR_REG); | 427 | davinci_i2c_write_reg(dev, |
432 | MOD_REG_BIT(w, DAVINCI_I2C_STR_SCD, 1); | 428 | DAVINCI_I2C_STR_REG, DAVINCI_I2C_STR_SCD); |
433 | davinci_i2c_write_reg(dev, DAVINCI_I2C_STR_REG, w); | ||
434 | complete(&dev->cmd_complete); | 429 | complete(&dev->cmd_complete); |
435 | break; | 430 | break; |
436 | 431 | ||
diff --git a/drivers/i2c/busses/i2c-ibm_iic.c b/drivers/i2c/busses/i2c-ibm_iic.c index 7c7eb0cfeceb..22bb247d0e60 100644 --- a/drivers/i2c/busses/i2c-ibm_iic.c +++ b/drivers/i2c/busses/i2c-ibm_iic.c | |||
@@ -55,7 +55,7 @@ MODULE_PARM_DESC(iic_force_poll, "Force polling mode"); | |||
55 | 55 | ||
56 | static int iic_force_fast; | 56 | static int iic_force_fast; |
57 | module_param(iic_force_fast, bool, 0); | 57 | module_param(iic_force_fast, bool, 0); |
58 | MODULE_PARM_DESC(iic_fast_poll, "Force fast mode (400 kHz)"); | 58 | MODULE_PARM_DESC(iic_force_fast, "Force fast mode (400 kHz)"); |
59 | 59 | ||
60 | #define DBG_LEVEL 0 | 60 | #define DBG_LEVEL 0 |
61 | 61 | ||
diff --git a/drivers/i2c/busses/i2c-tiny-usb.c b/drivers/i2c/busses/i2c-tiny-usb.c index cb9abe7565a7..b1c050ff311d 100644 --- a/drivers/i2c/busses/i2c-tiny-usb.c +++ b/drivers/i2c/busses/i2c-tiny-usb.c | |||
@@ -131,11 +131,15 @@ static const struct i2c_algorithm usb_algorithm = { | |||
131 | 131 | ||
132 | /* ----- begin of usb layer ---------------------------------------------- */ | 132 | /* ----- begin of usb layer ---------------------------------------------- */ |
133 | 133 | ||
134 | /* The usb i2c interface uses a vid/pid pair donated by */ | 134 | /* |
135 | /* Future Technology Devices International Ltd. */ | 135 | * Initially the usb i2c interface uses a vid/pid pair donated by |
136 | * Future Technology Devices International Ltd., later a pair was | ||
137 | * bought from EZPrototypes | ||
138 | */ | ||
136 | static struct usb_device_id i2c_tiny_usb_table [] = { | 139 | static struct usb_device_id i2c_tiny_usb_table [] = { |
137 | { USB_DEVICE(0x0403, 0xc631) }, | 140 | { USB_DEVICE(0x0403, 0xc631) }, /* FTDI */ |
138 | { } /* Terminating entry */ | 141 | { USB_DEVICE(0x1c40, 0x0534) }, /* EZPrototypes */ |
142 | { } /* Terminating entry */ | ||
139 | }; | 143 | }; |
140 | 144 | ||
141 | MODULE_DEVICE_TABLE(usb, i2c_tiny_usb_table); | 145 | MODULE_DEVICE_TABLE(usb, i2c_tiny_usb_table); |
diff --git a/drivers/i2c/chips/Kconfig b/drivers/i2c/chips/Kconfig index b21593f93586..2da2edfa68ec 100644 --- a/drivers/i2c/chips/Kconfig +++ b/drivers/i2c/chips/Kconfig | |||
@@ -93,6 +93,7 @@ config ISP1301_OMAP | |||
93 | 93 | ||
94 | config TPS65010 | 94 | config TPS65010 |
95 | tristate "TPS6501x Power Management chips" | 95 | tristate "TPS6501x Power Management chips" |
96 | depends on HAVE_GPIO_LIB | ||
96 | default y if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_OSK | 97 | default y if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_OSK |
97 | help | 98 | help |
98 | If you say yes here you get support for the TPS6501x series of | 99 | If you say yes here you get support for the TPS6501x series of |
diff --git a/drivers/i2c/chips/tps65010.c b/drivers/i2c/chips/tps65010.c index 4154a9108859..b67f69c2e7f3 100644 --- a/drivers/i2c/chips/tps65010.c +++ b/drivers/i2c/chips/tps65010.c | |||
@@ -30,9 +30,13 @@ | |||
30 | #include <linux/debugfs.h> | 30 | #include <linux/debugfs.h> |
31 | #include <linux/seq_file.h> | 31 | #include <linux/seq_file.h> |
32 | #include <linux/mutex.h> | 32 | #include <linux/mutex.h> |
33 | #include <linux/platform_device.h> | ||
33 | 34 | ||
34 | #include <linux/i2c/tps65010.h> | 35 | #include <linux/i2c/tps65010.h> |
35 | 36 | ||
37 | #include <asm/gpio.h> | ||
38 | |||
39 | |||
36 | /*-------------------------------------------------------------------------*/ | 40 | /*-------------------------------------------------------------------------*/ |
37 | 41 | ||
38 | #define DRIVER_VERSION "2 May 2005" | 42 | #define DRIVER_VERSION "2 May 2005" |
@@ -84,7 +88,9 @@ struct tps65010 { | |||
84 | u8 chgstatus, regstatus, chgconf; | 88 | u8 chgstatus, regstatus, chgconf; |
85 | u8 nmask1, nmask2; | 89 | u8 nmask1, nmask2; |
86 | 90 | ||
87 | /* not currently tracking GPIO state */ | 91 | u8 outmask; |
92 | struct gpio_chip chip; | ||
93 | struct platform_device *leds; | ||
88 | }; | 94 | }; |
89 | 95 | ||
90 | #define POWER_POLL_DELAY msecs_to_jiffies(5000) | 96 | #define POWER_POLL_DELAY msecs_to_jiffies(5000) |
@@ -449,12 +455,72 @@ static irqreturn_t tps65010_irq(int irq, void *_tps) | |||
449 | 455 | ||
450 | /*-------------------------------------------------------------------------*/ | 456 | /*-------------------------------------------------------------------------*/ |
451 | 457 | ||
458 | /* offsets 0..3 == GPIO1..GPIO4 | ||
459 | * offsets 4..5 == LED1/nPG, LED2 (we set one of the non-BLINK modes) | ||
460 | */ | ||
461 | static void | ||
462 | tps65010_gpio_set(struct gpio_chip *chip, unsigned offset, int value) | ||
463 | { | ||
464 | if (offset < 4) | ||
465 | tps65010_set_gpio_out_value(offset + 1, value); | ||
466 | else | ||
467 | tps65010_set_led(offset - 3, value ? ON : OFF); | ||
468 | } | ||
469 | |||
470 | static int | ||
471 | tps65010_output(struct gpio_chip *chip, unsigned offset, int value) | ||
472 | { | ||
473 | /* GPIOs may be input-only */ | ||
474 | if (offset < 4) { | ||
475 | struct tps65010 *tps; | ||
476 | |||
477 | tps = container_of(chip, struct tps65010, chip); | ||
478 | if (!(tps->outmask & (1 << offset))) | ||
479 | return -EINVAL; | ||
480 | tps65010_set_gpio_out_value(offset + 1, value); | ||
481 | } else | ||
482 | tps65010_set_led(offset - 3, value ? ON : OFF); | ||
483 | |||
484 | return 0; | ||
485 | } | ||
486 | |||
487 | static int tps65010_gpio_get(struct gpio_chip *chip, unsigned offset) | ||
488 | { | ||
489 | int value; | ||
490 | struct tps65010 *tps; | ||
491 | |||
492 | tps = container_of(chip, struct tps65010, chip); | ||
493 | |||
494 | if (offset < 4) { | ||
495 | value = i2c_smbus_read_byte_data(tps->client, TPS_DEFGPIO); | ||
496 | if (value < 0) | ||
497 | return 0; | ||
498 | if (value & (1 << (offset + 4))) /* output */ | ||
499 | return !(value & (1 << offset)); | ||
500 | else /* input */ | ||
501 | return (value & (1 << offset)); | ||
502 | } | ||
503 | |||
504 | /* REVISIT we *could* report LED1/nPG and LED2 state ... */ | ||
505 | return 0; | ||
506 | } | ||
507 | |||
508 | |||
509 | /*-------------------------------------------------------------------------*/ | ||
510 | |||
452 | static struct tps65010 *the_tps; | 511 | static struct tps65010 *the_tps; |
453 | 512 | ||
454 | static int __exit tps65010_remove(struct i2c_client *client) | 513 | static int __exit tps65010_remove(struct i2c_client *client) |
455 | { | 514 | { |
456 | struct tps65010 *tps = i2c_get_clientdata(client); | 515 | struct tps65010 *tps = i2c_get_clientdata(client); |
516 | struct tps65010_board *board = client->dev.platform_data; | ||
457 | 517 | ||
518 | if (board && board->teardown) { | ||
519 | int status = board->teardown(client, board->context); | ||
520 | if (status < 0) | ||
521 | dev_dbg(&client->dev, "board %s %s err %d\n", | ||
522 | "teardown", client->name, status); | ||
523 | } | ||
458 | if (client->irq > 0) | 524 | if (client->irq > 0) |
459 | free_irq(client->irq, tps); | 525 | free_irq(client->irq, tps); |
460 | cancel_delayed_work(&tps->work); | 526 | cancel_delayed_work(&tps->work); |
@@ -469,6 +535,7 @@ static int tps65010_probe(struct i2c_client *client) | |||
469 | { | 535 | { |
470 | struct tps65010 *tps; | 536 | struct tps65010 *tps; |
471 | int status; | 537 | int status; |
538 | struct tps65010_board *board = client->dev.platform_data; | ||
472 | 539 | ||
473 | if (the_tps) { | 540 | if (the_tps) { |
474 | dev_dbg(&client->dev, "only one tps6501x chip allowed\n"); | 541 | dev_dbg(&client->dev, "only one tps6501x chip allowed\n"); |
@@ -577,6 +644,38 @@ static int tps65010_probe(struct i2c_client *client) | |||
577 | 644 | ||
578 | tps->file = debugfs_create_file(DRIVER_NAME, S_IRUGO, NULL, | 645 | tps->file = debugfs_create_file(DRIVER_NAME, S_IRUGO, NULL, |
579 | tps, DEBUG_FOPS); | 646 | tps, DEBUG_FOPS); |
647 | |||
648 | /* optionally register GPIOs */ | ||
649 | if (board && board->base > 0) { | ||
650 | tps->outmask = board->outmask; | ||
651 | |||
652 | tps->chip.label = client->name; | ||
653 | |||
654 | tps->chip.set = tps65010_gpio_set; | ||
655 | tps->chip.direction_output = tps65010_output; | ||
656 | |||
657 | /* NOTE: only partial support for inputs; nyet IRQs */ | ||
658 | tps->chip.get = tps65010_gpio_get; | ||
659 | |||
660 | tps->chip.base = board->base; | ||
661 | tps->chip.ngpio = 6; | ||
662 | tps->chip.can_sleep = 1; | ||
663 | |||
664 | status = gpiochip_add(&tps->chip); | ||
665 | if (status < 0) | ||
666 | dev_err(&client->dev, "can't add gpiochip, err %d\n", | ||
667 | status); | ||
668 | else if (board->setup) { | ||
669 | status = board->setup(client, board->context); | ||
670 | if (status < 0) { | ||
671 | dev_dbg(&client->dev, | ||
672 | "board %s %s err %d\n", | ||
673 | "setup", client->name, status); | ||
674 | status = 0; | ||
675 | } | ||
676 | } | ||
677 | } | ||
678 | |||
580 | return 0; | 679 | return 0; |
581 | fail1: | 680 | fail1: |
582 | kfree(tps); | 681 | kfree(tps); |
diff --git a/drivers/ide/arm/ide_arm.c b/drivers/ide/arm/ide_arm.c index 43a70e91363e..be9ff7334c52 100644 --- a/drivers/ide/arm/ide_arm.c +++ b/drivers/ide/arm/ide_arm.c | |||
@@ -46,3 +46,5 @@ static int __init ide_arm_init(void) | |||
46 | } | 46 | } |
47 | 47 | ||
48 | module_init(ide_arm_init); | 48 | module_init(ide_arm_init); |
49 | |||
50 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c index e79bf8f9b7db..c8ffbaf29a88 100644 --- a/drivers/ide/cris/ide-cris.c +++ b/drivers/ide/cris/ide-cris.c | |||
@@ -1067,3 +1067,5 @@ static void cris_dma_start(ide_drive_t *drive) | |||
1067 | } | 1067 | } |
1068 | 1068 | ||
1069 | module_init(init_e100_ide); | 1069 | module_init(init_e100_ide); |
1070 | |||
1071 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/h8300/ide-h8300.c b/drivers/ide/h8300/ide-h8300.c index 520aec075700..4108ec4ffa7f 100644 --- a/drivers/ide/h8300/ide-h8300.c +++ b/drivers/ide/h8300/ide-h8300.c | |||
@@ -110,6 +110,7 @@ static int __init h8300_ide_init(void) | |||
110 | ide_init_port_data(hwif, index); | 110 | ide_init_port_data(hwif, index); |
111 | ide_init_port_hw(hwif, &hw); | 111 | ide_init_port_hw(hwif, &hw); |
112 | hwif_setup(hwif); | 112 | hwif_setup(hwif); |
113 | hwif->host_flags = IDE_HFLAG_NO_IO_32BIT; | ||
113 | printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", index); | 114 | printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", index); |
114 | 115 | ||
115 | idx[0] = index; | 116 | idx[0] = index; |
@@ -125,3 +126,5 @@ out_busy: | |||
125 | } | 126 | } |
126 | 127 | ||
127 | module_init(h8300_ide_init); | 128 | module_init(h8300_ide_init); |
129 | |||
130 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index c419266234a7..e77cee0e5d65 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -595,6 +595,7 @@ u8 eighty_ninty_three (ide_drive_t *drive) | |||
595 | 595 | ||
596 | /* | 596 | /* |
597 | * FIXME: | 597 | * FIXME: |
598 | * - change master/slave IDENTIFY order | ||
598 | * - force bit13 (80c cable present) check also for !ivb devices | 599 | * - force bit13 (80c cable present) check also for !ivb devices |
599 | * (unless the slave device is pre-ATA3) | 600 | * (unless the slave device is pre-ATA3) |
600 | */ | 601 | */ |
@@ -657,7 +658,7 @@ int ide_driveid_update(ide_drive_t *drive) | |||
657 | local_irq_restore(flags); | 658 | local_irq_restore(flags); |
658 | return 0; | 659 | return 0; |
659 | } | 660 | } |
660 | ata_input_data(drive, id, SECTOR_WORDS); | 661 | hwif->ata_input_data(drive, id, SECTOR_WORDS); |
661 | (void)ide_read_status(drive); /* clear drive IRQ */ | 662 | (void)ide_read_status(drive); /* clear drive IRQ */ |
662 | local_irq_enable(); | 663 | local_irq_enable(); |
663 | local_irq_restore(flags); | 664 | local_irq_restore(flags); |
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c index b163b2e52212..c14bb5380c25 100644 --- a/drivers/ide/ide-pnp.c +++ b/drivers/ide/ide-pnp.c | |||
@@ -86,3 +86,5 @@ static void __exit pnpide_exit(void) | |||
86 | 86 | ||
87 | module_init(pnpide_init); | 87 | module_init(pnpide_init); |
88 | module_exit(pnpide_exit); | 88 | module_exit(pnpide_exit); |
89 | |||
90 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 194ecb0049eb..47a114927c31 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -774,9 +774,10 @@ static int ide_probe_port(ide_hwif_t *hwif) | |||
774 | printk(KERN_DEBUG "%s: Wait for ready failed before probe !\n", hwif->name); | 774 | printk(KERN_DEBUG "%s: Wait for ready failed before probe !\n", hwif->name); |
775 | 775 | ||
776 | /* | 776 | /* |
777 | * Need to probe slave device first to make it release PDIAG-. | 777 | * Second drive should only exist if first drive was found, |
778 | * but a lot of cdrom drives are configured as single slaves. | ||
778 | */ | 779 | */ |
779 | for (unit = MAX_DRIVES - 1; unit >= 0; unit--) { | 780 | for (unit = 0; unit < MAX_DRIVES; ++unit) { |
780 | ide_drive_t *drive = &hwif->drives[unit]; | 781 | ide_drive_t *drive = &hwif->drives[unit]; |
781 | drive->dn = (hwif->channel ? 2 : 0) + unit; | 782 | drive->dn = (hwif->channel ? 2 : 0) + unit; |
782 | (void) probe_for_drive(drive); | 783 | (void) probe_for_drive(drive); |
diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c index 50ffa871d5e9..fdd3791e465f 100644 --- a/drivers/ide/legacy/buddha.c +++ b/drivers/ide/legacy/buddha.c | |||
@@ -241,3 +241,5 @@ fail_base2: | |||
241 | } | 241 | } |
242 | 242 | ||
243 | module_init(buddha_init); | 243 | module_init(buddha_init); |
244 | |||
245 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/legacy/falconide.c b/drivers/ide/legacy/falconide.c index 8949ce71bddc..e950afa5939c 100644 --- a/drivers/ide/legacy/falconide.c +++ b/drivers/ide/legacy/falconide.c | |||
@@ -93,3 +93,5 @@ static int __init falconide_init(void) | |||
93 | } | 93 | } |
94 | 94 | ||
95 | module_init(falconide_init); | 95 | module_init(falconide_init); |
96 | |||
97 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/legacy/gayle.c b/drivers/ide/legacy/gayle.c index b7d81090d5da..e3b4638cc883 100644 --- a/drivers/ide/legacy/gayle.c +++ b/drivers/ide/legacy/gayle.c | |||
@@ -195,3 +195,5 @@ found: | |||
195 | } | 195 | } |
196 | 196 | ||
197 | module_init(gayle_init); | 197 | module_init(gayle_init); |
198 | |||
199 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c index 9a79098d9eb4..eaf5dbe58bc2 100644 --- a/drivers/ide/legacy/macide.c +++ b/drivers/ide/legacy/macide.c | |||
@@ -137,3 +137,5 @@ static int __init macide_init(void) | |||
137 | } | 137 | } |
138 | 138 | ||
139 | module_init(macide_init); | 139 | module_init(macide_init); |
140 | |||
141 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index 1381b91bc316..2da28759686e 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c | |||
@@ -153,3 +153,5 @@ static int __init q40ide_init(void) | |||
153 | } | 153 | } |
154 | 154 | ||
155 | module_init(q40ide_init); | 155 | module_init(q40ide_init); |
156 | |||
157 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c index ec667982809c..29fbc5ead03b 100644 --- a/drivers/ide/pci/cmd640.c +++ b/drivers/ide/pci/cmd640.c | |||
@@ -881,3 +881,5 @@ module_param_named(probe_vlb, cmd640_vlb, bool, 0); | |||
881 | MODULE_PARM_DESC(probe_vlb, "probe for VLB version of CMD640 chipset"); | 881 | MODULE_PARM_DESC(probe_vlb, "probe for VLB version of CMD640 chipset"); |
882 | 882 | ||
883 | module_init(cmd640x_init); | 883 | module_init(cmd640x_init); |
884 | |||
885 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index cc4be9621bc0..8d624afe8529 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
@@ -492,7 +492,7 @@ static void proc_reports_siimage (struct pci_dev *dev, u8 clocking, const char * | |||
492 | 492 | ||
493 | static unsigned int setup_mmio_siimage (struct pci_dev *dev, const char *name) | 493 | static unsigned int setup_mmio_siimage (struct pci_dev *dev, const char *name) |
494 | { | 494 | { |
495 | unsigned long bar5 = pci_resource_start(dev, 5); | 495 | resource_size_t bar5 = pci_resource_start(dev, 5); |
496 | unsigned long barsize = pci_resource_len(dev, 5); | 496 | unsigned long barsize = pci_resource_len(dev, 5); |
497 | u8 tmpbyte = 0; | 497 | u8 tmpbyte = 0; |
498 | void __iomem *ioaddr; | 498 | void __iomem *ioaddr; |
diff --git a/drivers/ide/ppc/mpc8xx.c b/drivers/ide/ppc/mpc8xx.c index 38fbfb8d5445..ebaba01c7551 100644 --- a/drivers/ide/ppc/mpc8xx.c +++ b/drivers/ide/ppc/mpc8xx.c | |||
@@ -853,3 +853,5 @@ static int __init mpc8xx_ide_probe(void) | |||
853 | } | 853 | } |
854 | 854 | ||
855 | module_init(mpc8xx_ide_probe); | 855 | module_init(mpc8xx_ide_probe); |
856 | |||
857 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index 78c9eeb85634..d9ca52e6cdab 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -1771,3 +1771,5 @@ static int __devinit pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) | |||
1771 | #endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ | 1771 | #endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ |
1772 | 1772 | ||
1773 | module_init(pmac_ide_probe); | 1773 | module_init(pmac_ide_probe); |
1774 | |||
1775 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c index a58ad8a470f9..781ea5950373 100644 --- a/drivers/infiniband/core/addr.c +++ b/drivers/infiniband/core/addr.c | |||
@@ -154,7 +154,7 @@ static void addr_send_arp(struct sockaddr_in *dst_in) | |||
154 | { | 154 | { |
155 | struct rtable *rt; | 155 | struct rtable *rt; |
156 | struct flowi fl; | 156 | struct flowi fl; |
157 | u32 dst_ip = dst_in->sin_addr.s_addr; | 157 | __be32 dst_ip = dst_in->sin_addr.s_addr; |
158 | 158 | ||
159 | memset(&fl, 0, sizeof fl); | 159 | memset(&fl, 0, sizeof fl); |
160 | fl.nl_u.ip4_u.daddr = dst_ip; | 160 | fl.nl_u.ip4_u.daddr = dst_ip; |
@@ -169,8 +169,8 @@ static int addr_resolve_remote(struct sockaddr_in *src_in, | |||
169 | struct sockaddr_in *dst_in, | 169 | struct sockaddr_in *dst_in, |
170 | struct rdma_dev_addr *addr) | 170 | struct rdma_dev_addr *addr) |
171 | { | 171 | { |
172 | u32 src_ip = src_in->sin_addr.s_addr; | 172 | __be32 src_ip = src_in->sin_addr.s_addr; |
173 | u32 dst_ip = dst_in->sin_addr.s_addr; | 173 | __be32 dst_ip = dst_in->sin_addr.s_addr; |
174 | struct flowi fl; | 174 | struct flowi fl; |
175 | struct rtable *rt; | 175 | struct rtable *rt; |
176 | struct neighbour *neigh; | 176 | struct neighbour *neigh; |
@@ -257,7 +257,7 @@ static int addr_resolve_local(struct sockaddr_in *src_in, | |||
257 | struct rdma_dev_addr *addr) | 257 | struct rdma_dev_addr *addr) |
258 | { | 258 | { |
259 | struct net_device *dev; | 259 | struct net_device *dev; |
260 | u32 src_ip = src_in->sin_addr.s_addr; | 260 | __be32 src_ip = src_in->sin_addr.s_addr; |
261 | __be32 dst_ip = dst_in->sin_addr.s_addr; | 261 | __be32 dst_ip = dst_in->sin_addr.s_addr; |
262 | int ret; | 262 | int ret; |
263 | 263 | ||
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 4df405157086..faa7ce318a6d 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c | |||
@@ -393,7 +393,7 @@ static int cm_alloc_id(struct cm_id_private *cm_id_priv) | |||
393 | spin_unlock_irqrestore(&cm.lock, flags); | 393 | spin_unlock_irqrestore(&cm.lock, flags); |
394 | } while( (ret == -EAGAIN) && idr_pre_get(&cm.local_id_table, GFP_KERNEL) ); | 394 | } while( (ret == -EAGAIN) && idr_pre_get(&cm.local_id_table, GFP_KERNEL) ); |
395 | 395 | ||
396 | cm_id_priv->id.local_id = (__force __be32) (id ^ cm.random_id_operand); | 396 | cm_id_priv->id.local_id = (__force __be32)id ^ cm.random_id_operand; |
397 | return ret; | 397 | return ret; |
398 | } | 398 | } |
399 | 399 | ||
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 34507daaf9b6..d81c156a22b4 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c | |||
@@ -168,15 +168,15 @@ struct cma_work { | |||
168 | union cma_ip_addr { | 168 | union cma_ip_addr { |
169 | struct in6_addr ip6; | 169 | struct in6_addr ip6; |
170 | struct { | 170 | struct { |
171 | __u32 pad[3]; | 171 | __be32 pad[3]; |
172 | __u32 addr; | 172 | __be32 addr; |
173 | } ip4; | 173 | } ip4; |
174 | }; | 174 | }; |
175 | 175 | ||
176 | struct cma_hdr { | 176 | struct cma_hdr { |
177 | u8 cma_version; | 177 | u8 cma_version; |
178 | u8 ip_version; /* IP version: 7:4 */ | 178 | u8 ip_version; /* IP version: 7:4 */ |
179 | __u16 port; | 179 | __be16 port; |
180 | union cma_ip_addr src_addr; | 180 | union cma_ip_addr src_addr; |
181 | union cma_ip_addr dst_addr; | 181 | union cma_ip_addr dst_addr; |
182 | }; | 182 | }; |
@@ -186,8 +186,8 @@ struct sdp_hh { | |||
186 | u8 sdp_version; /* Major version: 7:4 */ | 186 | u8 sdp_version; /* Major version: 7:4 */ |
187 | u8 ip_version; /* IP version: 7:4 */ | 187 | u8 ip_version; /* IP version: 7:4 */ |
188 | u8 sdp_specific1[10]; | 188 | u8 sdp_specific1[10]; |
189 | __u16 port; | 189 | __be16 port; |
190 | __u16 sdp_specific2; | 190 | __be16 sdp_specific2; |
191 | union cma_ip_addr src_addr; | 191 | union cma_ip_addr src_addr; |
192 | union cma_ip_addr dst_addr; | 192 | union cma_ip_addr dst_addr; |
193 | }; | 193 | }; |
@@ -663,7 +663,7 @@ static inline int cma_any_port(struct sockaddr *addr) | |||
663 | } | 663 | } |
664 | 664 | ||
665 | static int cma_get_net_info(void *hdr, enum rdma_port_space ps, | 665 | static int cma_get_net_info(void *hdr, enum rdma_port_space ps, |
666 | u8 *ip_ver, __u16 *port, | 666 | u8 *ip_ver, __be16 *port, |
667 | union cma_ip_addr **src, union cma_ip_addr **dst) | 667 | union cma_ip_addr **src, union cma_ip_addr **dst) |
668 | { | 668 | { |
669 | switch (ps) { | 669 | switch (ps) { |
@@ -695,7 +695,7 @@ static int cma_get_net_info(void *hdr, enum rdma_port_space ps, | |||
695 | 695 | ||
696 | static void cma_save_net_info(struct rdma_addr *addr, | 696 | static void cma_save_net_info(struct rdma_addr *addr, |
697 | struct rdma_addr *listen_addr, | 697 | struct rdma_addr *listen_addr, |
698 | u8 ip_ver, __u16 port, | 698 | u8 ip_ver, __be16 port, |
699 | union cma_ip_addr *src, union cma_ip_addr *dst) | 699 | union cma_ip_addr *src, union cma_ip_addr *dst) |
700 | { | 700 | { |
701 | struct sockaddr_in *listen4, *ip4; | 701 | struct sockaddr_in *listen4, *ip4; |
@@ -996,7 +996,7 @@ static struct rdma_id_private *cma_new_conn_id(struct rdma_cm_id *listen_id, | |||
996 | struct rdma_cm_id *id; | 996 | struct rdma_cm_id *id; |
997 | struct rdma_route *rt; | 997 | struct rdma_route *rt; |
998 | union cma_ip_addr *src, *dst; | 998 | union cma_ip_addr *src, *dst; |
999 | __u16 port; | 999 | __be16 port; |
1000 | u8 ip_ver; | 1000 | u8 ip_ver; |
1001 | 1001 | ||
1002 | if (cma_get_net_info(ib_event->private_data, listen_id->ps, | 1002 | if (cma_get_net_info(ib_event->private_data, listen_id->ps, |
@@ -1043,7 +1043,7 @@ static struct rdma_id_private *cma_new_udp_id(struct rdma_cm_id *listen_id, | |||
1043 | struct rdma_id_private *id_priv; | 1043 | struct rdma_id_private *id_priv; |
1044 | struct rdma_cm_id *id; | 1044 | struct rdma_cm_id *id; |
1045 | union cma_ip_addr *src, *dst; | 1045 | union cma_ip_addr *src, *dst; |
1046 | __u16 port; | 1046 | __be16 port; |
1047 | u8 ip_ver; | 1047 | u8 ip_ver; |
1048 | int ret; | 1048 | int ret; |
1049 | 1049 | ||
@@ -1165,7 +1165,7 @@ static void cma_set_compare_data(enum rdma_port_space ps, struct sockaddr *addr, | |||
1165 | { | 1165 | { |
1166 | struct cma_hdr *cma_data, *cma_mask; | 1166 | struct cma_hdr *cma_data, *cma_mask; |
1167 | struct sdp_hh *sdp_data, *sdp_mask; | 1167 | struct sdp_hh *sdp_data, *sdp_mask; |
1168 | __u32 ip4_addr; | 1168 | __be32 ip4_addr; |
1169 | struct in6_addr ip6_addr; | 1169 | struct in6_addr ip6_addr; |
1170 | 1170 | ||
1171 | memset(compare, 0, sizeof *compare); | 1171 | memset(compare, 0, sizeof *compare); |
@@ -1181,12 +1181,12 @@ static void cma_set_compare_data(enum rdma_port_space ps, struct sockaddr *addr, | |||
1181 | sdp_set_ip_ver(sdp_data, 4); | 1181 | sdp_set_ip_ver(sdp_data, 4); |
1182 | sdp_set_ip_ver(sdp_mask, 0xF); | 1182 | sdp_set_ip_ver(sdp_mask, 0xF); |
1183 | sdp_data->dst_addr.ip4.addr = ip4_addr; | 1183 | sdp_data->dst_addr.ip4.addr = ip4_addr; |
1184 | sdp_mask->dst_addr.ip4.addr = ~0; | 1184 | sdp_mask->dst_addr.ip4.addr = htonl(~0); |
1185 | } else { | 1185 | } else { |
1186 | cma_set_ip_ver(cma_data, 4); | 1186 | cma_set_ip_ver(cma_data, 4); |
1187 | cma_set_ip_ver(cma_mask, 0xF); | 1187 | cma_set_ip_ver(cma_mask, 0xF); |
1188 | cma_data->dst_addr.ip4.addr = ip4_addr; | 1188 | cma_data->dst_addr.ip4.addr = ip4_addr; |
1189 | cma_mask->dst_addr.ip4.addr = ~0; | 1189 | cma_mask->dst_addr.ip4.addr = htonl(~0); |
1190 | } | 1190 | } |
1191 | break; | 1191 | break; |
1192 | case AF_INET6: | 1192 | case AF_INET6: |
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c index 320f2b6ddee6..99f2f2a46bf7 100644 --- a/drivers/infiniband/hw/cxgb3/iwch_cm.c +++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c | |||
@@ -1745,7 +1745,7 @@ int iwch_accept_cr(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
1745 | 1745 | ||
1746 | /* bind QP to EP and move to RTS */ | 1746 | /* bind QP to EP and move to RTS */ |
1747 | attrs.mpa_attr = ep->mpa_attr; | 1747 | attrs.mpa_attr = ep->mpa_attr; |
1748 | attrs.max_ird = ep->ord; | 1748 | attrs.max_ird = ep->ird; |
1749 | attrs.max_ord = ep->ord; | 1749 | attrs.max_ord = ep->ord; |
1750 | attrs.llp_stream_handle = ep; | 1750 | attrs.llp_stream_handle = ep; |
1751 | attrs.next_state = IWCH_QP_STATE_RTS; | 1751 | attrs.next_state = IWCH_QP_STATE_RTS; |
diff --git a/drivers/input/apm-power.c b/drivers/input/apm-power.c index c36d110b349a..7d61a9660806 100644 --- a/drivers/input/apm-power.c +++ b/drivers/input/apm-power.c | |||
@@ -63,8 +63,6 @@ static int apmpower_connect(struct input_handler *handler, | |||
63 | handle->handler = handler; | 63 | handle->handler = handler; |
64 | handle->name = "apm-power"; | 64 | handle->name = "apm-power"; |
65 | 65 | ||
66 | handler->private = handle; | ||
67 | |||
68 | error = input_register_handle(handle); | 66 | error = input_register_handle(handle); |
69 | if (error) { | 67 | if (error) { |
70 | printk(KERN_ERR | 68 | printk(KERN_ERR |
@@ -87,11 +85,10 @@ static int apmpower_connect(struct input_handler *handler, | |||
87 | return 0; | 85 | return 0; |
88 | } | 86 | } |
89 | 87 | ||
90 | static void apmpower_disconnect(struct input_handle *handler) | 88 | static void apmpower_disconnect(struct input_handle *handle) |
91 | { | 89 | { |
92 | struct input_handle *handle = handler->private; | ||
93 | |||
94 | input_close_device(handle); | 90 | input_close_device(handle); |
91 | input_unregister_handle(handle); | ||
95 | kfree(handle); | 92 | kfree(handle); |
96 | } | 93 | } |
97 | 94 | ||
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 0727b0a12557..b32984bc516f 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c | |||
@@ -124,6 +124,7 @@ static void evdev_free(struct device *dev) | |||
124 | { | 124 | { |
125 | struct evdev *evdev = container_of(dev, struct evdev, dev); | 125 | struct evdev *evdev = container_of(dev, struct evdev, dev); |
126 | 126 | ||
127 | input_put_device(evdev->handle.dev); | ||
127 | kfree(evdev); | 128 | kfree(evdev); |
128 | } | 129 | } |
129 | 130 | ||
@@ -893,7 +894,7 @@ static int evdev_connect(struct input_handler *handler, struct input_dev *dev, | |||
893 | evdev->exist = 1; | 894 | evdev->exist = 1; |
894 | evdev->minor = minor; | 895 | evdev->minor = minor; |
895 | 896 | ||
896 | evdev->handle.dev = dev; | 897 | evdev->handle.dev = input_get_device(dev); |
897 | evdev->handle.name = evdev->name; | 898 | evdev->handle.name = evdev->name; |
898 | evdev->handle.handler = handler; | 899 | evdev->handle.handler = handler; |
899 | evdev->handle.private = evdev; | 900 | evdev->handle.private = evdev; |
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c index 22b2789ef58a..65d7077a75a1 100644 --- a/drivers/input/joydev.c +++ b/drivers/input/joydev.c | |||
@@ -171,6 +171,7 @@ static void joydev_free(struct device *dev) | |||
171 | { | 171 | { |
172 | struct joydev *joydev = container_of(dev, struct joydev, dev); | 172 | struct joydev *joydev = container_of(dev, struct joydev, dev); |
173 | 173 | ||
174 | input_put_device(joydev->handle.dev); | ||
174 | kfree(joydev); | 175 | kfree(joydev); |
175 | } | 176 | } |
176 | 177 | ||
@@ -750,7 +751,7 @@ static int joydev_connect(struct input_handler *handler, struct input_dev *dev, | |||
750 | joydev->minor = minor; | 751 | joydev->minor = minor; |
751 | 752 | ||
752 | joydev->exist = 1; | 753 | joydev->exist = 1; |
753 | joydev->handle.dev = dev; | 754 | joydev->handle.dev = input_get_device(dev); |
754 | joydev->handle.name = joydev->name; | 755 | joydev->handle.name = joydev->name; |
755 | joydev->handle.handler = handler; | 756 | joydev->handle.handler = handler; |
756 | joydev->handle.private = joydev; | 757 | joydev->handle.private = joydev; |
diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c index 6224c2fb3b65..4e651c11c1da 100644 --- a/drivers/input/keyboard/pxa27x_keypad.c +++ b/drivers/input/keyboard/pxa27x_keypad.c | |||
@@ -50,9 +50,9 @@ | |||
50 | #define KPKDI 0x0048 | 50 | #define KPKDI 0x0048 |
51 | 51 | ||
52 | /* bit definitions */ | 52 | /* bit definitions */ |
53 | #define KPC_MKRN(n) ((((n) & 0x7) - 1) << 26) /* matrix key row number */ | 53 | #define KPC_MKRN(n) ((((n) - 1) & 0x7) << 26) /* matrix key row number */ |
54 | #define KPC_MKCN(n) ((((n) & 0x7) - 1) << 23) /* matrix key column number */ | 54 | #define KPC_MKCN(n) ((((n) - 1) & 0x7) << 23) /* matrix key column number */ |
55 | #define KPC_DKN(n) ((((n) & 0x7) - 1) << 6) /* direct key number */ | 55 | #define KPC_DKN(n) ((((n) - 1) & 0x7) << 6) /* direct key number */ |
56 | 56 | ||
57 | #define KPC_AS (0x1 << 30) /* Automatic Scan bit */ | 57 | #define KPC_AS (0x1 << 30) /* Automatic Scan bit */ |
58 | #define KPC_ASACT (0x1 << 29) /* Automatic Scan on Activity */ | 58 | #define KPC_ASACT (0x1 << 29) /* Automatic Scan on Activity */ |
diff --git a/drivers/input/misc/ixp4xx-beeper.c b/drivers/input/misc/ixp4xx-beeper.c index d2ade7443b7d..798d84c44d03 100644 --- a/drivers/input/misc/ixp4xx-beeper.c +++ b/drivers/input/misc/ixp4xx-beeper.c | |||
@@ -25,6 +25,7 @@ | |||
25 | MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); | 25 | MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); |
26 | MODULE_DESCRIPTION("ixp4xx beeper driver"); | 26 | MODULE_DESCRIPTION("ixp4xx beeper driver"); |
27 | MODULE_LICENSE("GPL"); | 27 | MODULE_LICENSE("GPL"); |
28 | MODULE_ALIAS("platform:ixp4xx-beeper"); | ||
28 | 29 | ||
29 | static DEFINE_SPINLOCK(beep_lock); | 30 | static DEFINE_SPINLOCK(beep_lock); |
30 | 31 | ||
diff --git a/drivers/input/mouse/appletouch.c b/drivers/input/mouse/appletouch.c index b4423a471f02..8dd3942f3022 100644 --- a/drivers/input/mouse/appletouch.c +++ b/drivers/input/mouse/appletouch.c | |||
@@ -62,6 +62,10 @@ | |||
62 | #define GEYSER4_ISO_PRODUCT_ID 0x021B | 62 | #define GEYSER4_ISO_PRODUCT_ID 0x021B |
63 | #define GEYSER4_JIS_PRODUCT_ID 0x021C | 63 | #define GEYSER4_JIS_PRODUCT_ID 0x021C |
64 | 64 | ||
65 | #define GEYSER4_HF_ANSI_PRODUCT_ID 0x0229 | ||
66 | #define GEYSER4_HF_ISO_PRODUCT_ID 0x022A | ||
67 | #define GEYSER4_HF_JIS_PRODUCT_ID 0x022B | ||
68 | |||
65 | #define ATP_DEVICE(prod) \ | 69 | #define ATP_DEVICE(prod) \ |
66 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ | 70 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ |
67 | USB_DEVICE_ID_MATCH_INT_CLASS | \ | 71 | USB_DEVICE_ID_MATCH_INT_CLASS | \ |
@@ -93,6 +97,10 @@ static struct usb_device_id atp_table [] = { | |||
93 | { ATP_DEVICE(GEYSER4_ISO_PRODUCT_ID) }, | 97 | { ATP_DEVICE(GEYSER4_ISO_PRODUCT_ID) }, |
94 | { ATP_DEVICE(GEYSER4_JIS_PRODUCT_ID) }, | 98 | { ATP_DEVICE(GEYSER4_JIS_PRODUCT_ID) }, |
95 | 99 | ||
100 | { ATP_DEVICE(GEYSER4_HF_ANSI_PRODUCT_ID) }, | ||
101 | { ATP_DEVICE(GEYSER4_HF_ISO_PRODUCT_ID) }, | ||
102 | { ATP_DEVICE(GEYSER4_HF_JIS_PRODUCT_ID) }, | ||
103 | |||
96 | /* Terminating entry */ | 104 | /* Terminating entry */ |
97 | { } | 105 | { } |
98 | }; | 106 | }; |
@@ -217,7 +225,10 @@ static inline int atp_is_geyser_3(struct atp *dev) | |||
217 | (productId == GEYSER3_JIS_PRODUCT_ID) || | 225 | (productId == GEYSER3_JIS_PRODUCT_ID) || |
218 | (productId == GEYSER4_ANSI_PRODUCT_ID) || | 226 | (productId == GEYSER4_ANSI_PRODUCT_ID) || |
219 | (productId == GEYSER4_ISO_PRODUCT_ID) || | 227 | (productId == GEYSER4_ISO_PRODUCT_ID) || |
220 | (productId == GEYSER4_JIS_PRODUCT_ID); | 228 | (productId == GEYSER4_JIS_PRODUCT_ID) || |
229 | (productId == GEYSER4_HF_ANSI_PRODUCT_ID) || | ||
230 | (productId == GEYSER4_HF_ISO_PRODUCT_ID) || | ||
231 | (productId == GEYSER4_HF_JIS_PRODUCT_ID); | ||
221 | } | 232 | } |
222 | 233 | ||
223 | /* | 234 | /* |
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c index bbbe5e81adc1..b989748598ae 100644 --- a/drivers/input/mousedev.c +++ b/drivers/input/mousedev.c | |||
@@ -414,6 +414,7 @@ static void mousedev_free(struct device *dev) | |||
414 | { | 414 | { |
415 | struct mousedev *mousedev = container_of(dev, struct mousedev, dev); | 415 | struct mousedev *mousedev = container_of(dev, struct mousedev, dev); |
416 | 416 | ||
417 | input_put_device(mousedev->handle.dev); | ||
417 | kfree(mousedev); | 418 | kfree(mousedev); |
418 | } | 419 | } |
419 | 420 | ||
@@ -865,7 +866,7 @@ static struct mousedev *mousedev_create(struct input_dev *dev, | |||
865 | 866 | ||
866 | mousedev->minor = minor; | 867 | mousedev->minor = minor; |
867 | mousedev->exist = 1; | 868 | mousedev->exist = 1; |
868 | mousedev->handle.dev = dev; | 869 | mousedev->handle.dev = input_get_device(dev); |
869 | mousedev->handle.name = mousedev->name; | 870 | mousedev->handle.name = mousedev->name; |
870 | mousedev->handle.handler = handler; | 871 | mousedev->handle.handler = handler; |
871 | mousedev->handle.private = mousedev; | 872 | mousedev->handle.private = mousedev; |
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index 57a1c28bf122..39573b91c8de 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c | |||
@@ -28,13 +28,6 @@ | |||
28 | #include <linux/spi/ads7846.h> | 28 | #include <linux/spi/ads7846.h> |
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | 30 | ||
31 | #ifdef CONFIG_ARM | ||
32 | #include <asm/mach-types.h> | ||
33 | #ifdef CONFIG_ARCH_OMAP | ||
34 | #include <asm/arch/gpio.h> | ||
35 | #endif | ||
36 | #endif | ||
37 | |||
38 | 31 | ||
39 | /* | 32 | /* |
40 | * This code has been heavily tested on a Nokia 770, and lightly | 33 | * This code has been heavily tested on a Nokia 770, and lightly |
@@ -1174,31 +1167,6 @@ static struct spi_driver ads7846_driver = { | |||
1174 | 1167 | ||
1175 | static int __init ads7846_init(void) | 1168 | static int __init ads7846_init(void) |
1176 | { | 1169 | { |
1177 | /* grr, board-specific init should stay out of drivers!! */ | ||
1178 | |||
1179 | #ifdef CONFIG_ARCH_OMAP | ||
1180 | if (machine_is_omap_osk()) { | ||
1181 | /* GPIO4 = PENIRQ; GPIO6 = BUSY */ | ||
1182 | omap_request_gpio(4); | ||
1183 | omap_set_gpio_direction(4, 1); | ||
1184 | omap_request_gpio(6); | ||
1185 | omap_set_gpio_direction(6, 1); | ||
1186 | } | ||
1187 | // also TI 1510 Innovator, bitbanging through FPGA | ||
1188 | // also Nokia 770 | ||
1189 | // also Palm Tungsten T2 | ||
1190 | #endif | ||
1191 | |||
1192 | // PXA: | ||
1193 | // also Dell Axim X50 | ||
1194 | // also HP iPaq H191x/H192x/H415x/H435x | ||
1195 | // also Intel Lubbock (additional to UCB1400; as temperature sensor) | ||
1196 | // also Sharp Zaurus C7xx, C8xx (corgi/sheperd/husky) | ||
1197 | |||
1198 | // Atmel at91sam9261-EK uses ads7843 | ||
1199 | |||
1200 | // also various AMD Au1x00 devel boards | ||
1201 | |||
1202 | return spi_register_driver(&ads7846_driver); | 1170 | return spi_register_driver(&ads7846_driver); |
1203 | } | 1171 | } |
1204 | module_init(ads7846_init); | 1172 | module_init(ads7846_init); |
@@ -1206,14 +1174,6 @@ module_init(ads7846_init); | |||
1206 | static void __exit ads7846_exit(void) | 1174 | static void __exit ads7846_exit(void) |
1207 | { | 1175 | { |
1208 | spi_unregister_driver(&ads7846_driver); | 1176 | spi_unregister_driver(&ads7846_driver); |
1209 | |||
1210 | #ifdef CONFIG_ARCH_OMAP | ||
1211 | if (machine_is_omap_osk()) { | ||
1212 | omap_free_gpio(4); | ||
1213 | omap_free_gpio(6); | ||
1214 | } | ||
1215 | #endif | ||
1216 | |||
1217 | } | 1177 | } |
1218 | module_exit(ads7846_exit); | 1178 | module_exit(ads7846_exit); |
1219 | 1179 | ||
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index 6c0a9c4761ee..4c0b05852cb6 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c | |||
@@ -49,13 +49,13 @@ static void gpio_led_set(struct led_classdev *led_cdev, | |||
49 | if (led_dat->active_low) | 49 | if (led_dat->active_low) |
50 | level = !level; | 50 | level = !level; |
51 | 51 | ||
52 | /* setting GPIOs with I2C/etc requires a preemptible task context */ | 52 | /* Setting GPIOs with I2C/etc requires a task context, and we don't |
53 | * seem to have a reliable way to know if we're already in one; so | ||
54 | * let's just assume the worst. | ||
55 | */ | ||
53 | if (led_dat->can_sleep) { | 56 | if (led_dat->can_sleep) { |
54 | if (preempt_count()) { | 57 | led_dat->new_level = level; |
55 | led_dat->new_level = level; | 58 | schedule_work(&led_dat->work); |
56 | schedule_work(&led_dat->work); | ||
57 | } else | ||
58 | gpio_set_value_cansleep(led_dat->gpio, level); | ||
59 | } else | 59 | } else |
60 | gpio_set_value(led_dat->gpio, level); | 60 | gpio_set_value(led_dat->gpio, level); |
61 | } | 61 | } |
@@ -79,6 +79,10 @@ static int gpio_led_probe(struct platform_device *pdev) | |||
79 | cur_led = &pdata->leds[i]; | 79 | cur_led = &pdata->leds[i]; |
80 | led_dat = &leds_data[i]; | 80 | led_dat = &leds_data[i]; |
81 | 81 | ||
82 | ret = gpio_request(cur_led->gpio, cur_led->name); | ||
83 | if (ret < 0) | ||
84 | goto err; | ||
85 | |||
82 | led_dat->cdev.name = cur_led->name; | 86 | led_dat->cdev.name = cur_led->name; |
83 | led_dat->cdev.default_trigger = cur_led->default_trigger; | 87 | led_dat->cdev.default_trigger = cur_led->default_trigger; |
84 | led_dat->gpio = cur_led->gpio; | 88 | led_dat->gpio = cur_led->gpio; |
@@ -87,10 +91,6 @@ static int gpio_led_probe(struct platform_device *pdev) | |||
87 | led_dat->cdev.brightness_set = gpio_led_set; | 91 | led_dat->cdev.brightness_set = gpio_led_set; |
88 | led_dat->cdev.brightness = LED_OFF; | 92 | led_dat->cdev.brightness = LED_OFF; |
89 | 93 | ||
90 | ret = gpio_request(led_dat->gpio, led_dat->cdev.name); | ||
91 | if (ret < 0) | ||
92 | goto err; | ||
93 | |||
94 | gpio_direction_output(led_dat->gpio, led_dat->active_low); | 94 | gpio_direction_output(led_dat->gpio, led_dat->active_low); |
95 | 95 | ||
96 | INIT_WORK(&led_dat->work, gpio_led_work); | 96 | INIT_WORK(&led_dat->work, gpio_led_work); |
diff --git a/drivers/lguest/Makefile b/drivers/lguest/Makefile index 5e8272d296d8..7d463c26124f 100644 --- a/drivers/lguest/Makefile +++ b/drivers/lguest/Makefile | |||
@@ -19,3 +19,11 @@ Beer: | |||
19 | @for f in Preparation Guest Drivers Launcher Host Switcher Mastery; do echo "{==- $$f -==}"; make -s $$f; done; echo "{==-==}" | 19 | @for f in Preparation Guest Drivers Launcher Host Switcher Mastery; do echo "{==- $$f -==}"; make -s $$f; done; echo "{==-==}" |
20 | Preparation Preparation! Guest Drivers Launcher Host Switcher Mastery: | 20 | Preparation Preparation! Guest Drivers Launcher Host Switcher Mastery: |
21 | @sh ../../Documentation/lguest/extract $(PREFIX) `find ../../* -name '*.[chS]' -wholename '*lguest*'` | 21 | @sh ../../Documentation/lguest/extract $(PREFIX) `find ../../* -name '*.[chS]' -wholename '*lguest*'` |
22 | Puppy: | ||
23 | @clear | ||
24 | @printf " __ \n (___()'\`;\n /, /\`\n \\\\\\\"--\\\\\\ \n" | ||
25 | @sleep 2; clear; printf "\n\n Sit!\n\n"; sleep 1; clear | ||
26 | @printf " __ \n ()'\`; \n /\\|\` \n / | \n(/_)_|_ \n" | ||
27 | @sleep 2; clear; printf "\n\n Stand!\n\n"; sleep 1; clear | ||
28 | @printf " __ \n ()'\`; \n /\\|\` \n /._.= \n /| / \n(_\_)_ \n" | ||
29 | @sleep 2; clear; printf "\n\n Good puppy!\n\n"; sleep 1; clear | ||
diff --git a/drivers/lguest/core.c b/drivers/lguest/core.c index c632c08cbbdc..5eea4356d703 100644 --- a/drivers/lguest/core.c +++ b/drivers/lguest/core.c | |||
@@ -1,8 +1,6 @@ | |||
1 | /*P:400 This contains run_guest() which actually calls into the Host<->Guest | 1 | /*P:400 This contains run_guest() which actually calls into the Host<->Guest |
2 | * Switcher and analyzes the return, such as determining if the Guest wants the | 2 | * Switcher and analyzes the return, such as determining if the Guest wants the |
3 | * Host to do something. This file also contains useful helper routines, and a | 3 | * Host to do something. This file also contains useful helper routines. :*/ |
4 | * couple of non-obvious setup and teardown pieces which were implemented after | ||
5 | * days of debugging pain. :*/ | ||
6 | #include <linux/module.h> | 4 | #include <linux/module.h> |
7 | #include <linux/stringify.h> | 5 | #include <linux/stringify.h> |
8 | #include <linux/stddef.h> | 6 | #include <linux/stddef.h> |
@@ -49,8 +47,8 @@ static __init int map_switcher(void) | |||
49 | * easy. | 47 | * easy. |
50 | */ | 48 | */ |
51 | 49 | ||
52 | /* We allocate an array of "struct page"s. map_vm_area() wants the | 50 | /* We allocate an array of struct page pointers. map_vm_area() wants |
53 | * pages in this form, rather than just an array of pointers. */ | 51 | * this, rather than just an array of pages. */ |
54 | switcher_page = kmalloc(sizeof(switcher_page[0])*TOTAL_SWITCHER_PAGES, | 52 | switcher_page = kmalloc(sizeof(switcher_page[0])*TOTAL_SWITCHER_PAGES, |
55 | GFP_KERNEL); | 53 | GFP_KERNEL); |
56 | if (!switcher_page) { | 54 | if (!switcher_page) { |
@@ -172,7 +170,7 @@ void __lgread(struct lg_cpu *cpu, void *b, unsigned long addr, unsigned bytes) | |||
172 | } | 170 | } |
173 | } | 171 | } |
174 | 172 | ||
175 | /* This is the write (copy into guest) version. */ | 173 | /* This is the write (copy into Guest) version. */ |
176 | void __lgwrite(struct lg_cpu *cpu, unsigned long addr, const void *b, | 174 | void __lgwrite(struct lg_cpu *cpu, unsigned long addr, const void *b, |
177 | unsigned bytes) | 175 | unsigned bytes) |
178 | { | 176 | { |
@@ -209,9 +207,9 @@ int run_guest(struct lg_cpu *cpu, unsigned long __user *user) | |||
209 | if (cpu->break_out) | 207 | if (cpu->break_out) |
210 | return -EAGAIN; | 208 | return -EAGAIN; |
211 | 209 | ||
212 | /* Check if there are any interrupts which can be delivered | 210 | /* Check if there are any interrupts which can be delivered now: |
213 | * now: if so, this sets up the hander to be executed when we | 211 | * if so, this sets up the hander to be executed when we next |
214 | * next run the Guest. */ | 212 | * run the Guest. */ |
215 | maybe_do_interrupt(cpu); | 213 | maybe_do_interrupt(cpu); |
216 | 214 | ||
217 | /* All long-lived kernel loops need to check with this horrible | 215 | /* All long-lived kernel loops need to check with this horrible |
@@ -246,8 +244,10 @@ int run_guest(struct lg_cpu *cpu, unsigned long __user *user) | |||
246 | lguest_arch_handle_trap(cpu); | 244 | lguest_arch_handle_trap(cpu); |
247 | } | 245 | } |
248 | 246 | ||
247 | /* Special case: Guest is 'dead' but wants a reboot. */ | ||
249 | if (cpu->lg->dead == ERR_PTR(-ERESTART)) | 248 | if (cpu->lg->dead == ERR_PTR(-ERESTART)) |
250 | return -ERESTART; | 249 | return -ERESTART; |
250 | |||
251 | /* The Guest is dead => "No such file or directory" */ | 251 | /* The Guest is dead => "No such file or directory" */ |
252 | return -ENOENT; | 252 | return -ENOENT; |
253 | } | 253 | } |
diff --git a/drivers/lguest/hypercalls.c b/drivers/lguest/hypercalls.c index 0f2cb4fd7c69..54d66f05fefa 100644 --- a/drivers/lguest/hypercalls.c +++ b/drivers/lguest/hypercalls.c | |||
@@ -29,7 +29,7 @@ | |||
29 | #include "lg.h" | 29 | #include "lg.h" |
30 | 30 | ||
31 | /*H:120 This is the core hypercall routine: where the Guest gets what it wants. | 31 | /*H:120 This is the core hypercall routine: where the Guest gets what it wants. |
32 | * Or gets killed. Or, in the case of LHCALL_CRASH, both. */ | 32 | * Or gets killed. Or, in the case of LHCALL_SHUTDOWN, both. */ |
33 | static void do_hcall(struct lg_cpu *cpu, struct hcall_args *args) | 33 | static void do_hcall(struct lg_cpu *cpu, struct hcall_args *args) |
34 | { | 34 | { |
35 | switch (args->arg0) { | 35 | switch (args->arg0) { |
@@ -190,6 +190,13 @@ static void initialize(struct lg_cpu *cpu) | |||
190 | * pagetable. */ | 190 | * pagetable. */ |
191 | guest_pagetable_clear_all(cpu); | 191 | guest_pagetable_clear_all(cpu); |
192 | } | 192 | } |
193 | /*:*/ | ||
194 | |||
195 | /*M:013 If a Guest reads from a page (so creates a mapping) that it has never | ||
196 | * written to, and then the Launcher writes to it (ie. the output of a virtual | ||
197 | * device), the Guest will still see the old page. In practice, this never | ||
198 | * happens: why would the Guest read a page which it has never written to? But | ||
199 | * a similar scenario might one day bite us, so it's worth mentioning. :*/ | ||
193 | 200 | ||
194 | /*H:100 | 201 | /*H:100 |
195 | * Hypercalls | 202 | * Hypercalls |
@@ -227,7 +234,7 @@ void do_hypercalls(struct lg_cpu *cpu) | |||
227 | * However, if we are signalled or the Guest sends I/O to the | 234 | * However, if we are signalled or the Guest sends I/O to the |
228 | * Launcher, the run_guest() loop will exit without running the | 235 | * Launcher, the run_guest() loop will exit without running the |
229 | * Guest. When it comes back it would try to re-run the | 236 | * Guest. When it comes back it would try to re-run the |
230 | * hypercall. */ | 237 | * hypercall. Finding that bug sucked. */ |
231 | cpu->hcall = NULL; | 238 | cpu->hcall = NULL; |
232 | } | 239 | } |
233 | } | 240 | } |
diff --git a/drivers/lguest/interrupts_and_traps.c b/drivers/lguest/interrupts_and_traps.c index 32e97c1858e5..0414ddf87587 100644 --- a/drivers/lguest/interrupts_and_traps.c +++ b/drivers/lguest/interrupts_and_traps.c | |||
@@ -144,7 +144,6 @@ void maybe_do_interrupt(struct lg_cpu *cpu) | |||
144 | if (copy_from_user(&blk, cpu->lg->lguest_data->blocked_interrupts, | 144 | if (copy_from_user(&blk, cpu->lg->lguest_data->blocked_interrupts, |
145 | sizeof(blk))) | 145 | sizeof(blk))) |
146 | return; | 146 | return; |
147 | |||
148 | bitmap_andnot(blk, cpu->irqs_pending, blk, LGUEST_IRQS); | 147 | bitmap_andnot(blk, cpu->irqs_pending, blk, LGUEST_IRQS); |
149 | 148 | ||
150 | /* Find the first interrupt. */ | 149 | /* Find the first interrupt. */ |
@@ -237,9 +236,9 @@ void free_interrupts(void) | |||
237 | clear_bit(syscall_vector, used_vectors); | 236 | clear_bit(syscall_vector, used_vectors); |
238 | } | 237 | } |
239 | 238 | ||
240 | /*H:220 Now we've got the routines to deliver interrupts, delivering traps | 239 | /*H:220 Now we've got the routines to deliver interrupts, delivering traps like |
241 | * like page fault is easy. The only trick is that Intel decided that some | 240 | * page fault is easy. The only trick is that Intel decided that some traps |
242 | * traps should have error codes: */ | 241 | * should have error codes: */ |
243 | static int has_err(unsigned int trap) | 242 | static int has_err(unsigned int trap) |
244 | { | 243 | { |
245 | return (trap == 8 || (trap >= 10 && trap <= 14) || trap == 17); | 244 | return (trap == 8 || (trap >= 10 && trap <= 14) || trap == 17); |
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c index 1b2ec0bf5eb1..2bc9bf7e88e5 100644 --- a/drivers/lguest/lguest_device.c +++ b/drivers/lguest/lguest_device.c | |||
@@ -1,10 +1,10 @@ | |||
1 | /*P:050 Lguest guests use a very simple method to describe devices. It's a | 1 | /*P:050 Lguest guests use a very simple method to describe devices. It's a |
2 | * series of device descriptors contained just above the top of normal | 2 | * series of device descriptors contained just above the top of normal Guest |
3 | * memory. | 3 | * memory. |
4 | * | 4 | * |
5 | * We use the standard "virtio" device infrastructure, which provides us with a | 5 | * We use the standard "virtio" device infrastructure, which provides us with a |
6 | * console, a network and a block driver. Each one expects some configuration | 6 | * console, a network and a block driver. Each one expects some configuration |
7 | * information and a "virtqueue" mechanism to send and receive data. :*/ | 7 | * information and a "virtqueue" or two to send and receive data. :*/ |
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/bootmem.h> | 9 | #include <linux/bootmem.h> |
10 | #include <linux/lguest_launcher.h> | 10 | #include <linux/lguest_launcher.h> |
@@ -53,7 +53,7 @@ struct lguest_device { | |||
53 | * Device configurations | 53 | * Device configurations |
54 | * | 54 | * |
55 | * The configuration information for a device consists of one or more | 55 | * The configuration information for a device consists of one or more |
56 | * virtqueues, a feature bitmaks, and some configuration bytes. The | 56 | * virtqueues, a feature bitmap, and some configuration bytes. The |
57 | * configuration bytes don't really matter to us: the Launcher sets them up, and | 57 | * configuration bytes don't really matter to us: the Launcher sets them up, and |
58 | * the driver will look at them during setup. | 58 | * the driver will look at them during setup. |
59 | * | 59 | * |
@@ -179,7 +179,7 @@ struct lguest_vq_info | |||
179 | }; | 179 | }; |
180 | 180 | ||
181 | /* When the virtio_ring code wants to prod the Host, it calls us here and we | 181 | /* When the virtio_ring code wants to prod the Host, it calls us here and we |
182 | * make a hypercall. We hand the page number of the virtqueue so the Host | 182 | * make a hypercall. We hand the physical address of the virtqueue so the Host |
183 | * knows which virtqueue we're talking about. */ | 183 | * knows which virtqueue we're talking about. */ |
184 | static void lg_notify(struct virtqueue *vq) | 184 | static void lg_notify(struct virtqueue *vq) |
185 | { | 185 | { |
@@ -199,7 +199,8 @@ static void lg_notify(struct virtqueue *vq) | |||
199 | * allocate its own pages and tell the Host where they are, but for lguest it's | 199 | * allocate its own pages and tell the Host where they are, but for lguest it's |
200 | * simpler for the Host to simply tell us where the pages are. | 200 | * simpler for the Host to simply tell us where the pages are. |
201 | * | 201 | * |
202 | * So we provide devices with a "find virtqueue and set it up" function. */ | 202 | * So we provide drivers with a "find the Nth virtqueue and set it up" |
203 | * function. */ | ||
203 | static struct virtqueue *lg_find_vq(struct virtio_device *vdev, | 204 | static struct virtqueue *lg_find_vq(struct virtio_device *vdev, |
204 | unsigned index, | 205 | unsigned index, |
205 | void (*callback)(struct virtqueue *vq)) | 206 | void (*callback)(struct virtqueue *vq)) |
diff --git a/drivers/lguest/lguest_user.c b/drivers/lguest/lguest_user.c index 2221485b0773..645e6e040bfb 100644 --- a/drivers/lguest/lguest_user.c +++ b/drivers/lguest/lguest_user.c | |||
@@ -73,7 +73,7 @@ static ssize_t read(struct file *file, char __user *user, size_t size,loff_t*o) | |||
73 | if (current != cpu->tsk) | 73 | if (current != cpu->tsk) |
74 | return -EPERM; | 74 | return -EPERM; |
75 | 75 | ||
76 | /* If the guest is already dead, we indicate why */ | 76 | /* If the Guest is already dead, we indicate why */ |
77 | if (lg->dead) { | 77 | if (lg->dead) { |
78 | size_t len; | 78 | size_t len; |
79 | 79 | ||
@@ -88,7 +88,7 @@ static ssize_t read(struct file *file, char __user *user, size_t size,loff_t*o) | |||
88 | return len; | 88 | return len; |
89 | } | 89 | } |
90 | 90 | ||
91 | /* If we returned from read() last time because the Guest notified, | 91 | /* If we returned from read() last time because the Guest sent I/O, |
92 | * clear the flag. */ | 92 | * clear the flag. */ |
93 | if (cpu->pending_notify) | 93 | if (cpu->pending_notify) |
94 | cpu->pending_notify = 0; | 94 | cpu->pending_notify = 0; |
@@ -97,14 +97,20 @@ static ssize_t read(struct file *file, char __user *user, size_t size,loff_t*o) | |||
97 | return run_guest(cpu, (unsigned long __user *)user); | 97 | return run_guest(cpu, (unsigned long __user *)user); |
98 | } | 98 | } |
99 | 99 | ||
100 | /*L:025 This actually initializes a CPU. For the moment, a Guest is only | ||
101 | * uniprocessor, so "id" is always 0. */ | ||
100 | static int lg_cpu_start(struct lg_cpu *cpu, unsigned id, unsigned long start_ip) | 102 | static int lg_cpu_start(struct lg_cpu *cpu, unsigned id, unsigned long start_ip) |
101 | { | 103 | { |
104 | /* We have a limited number the number of CPUs in the lguest struct. */ | ||
102 | if (id >= NR_CPUS) | 105 | if (id >= NR_CPUS) |
103 | return -EINVAL; | 106 | return -EINVAL; |
104 | 107 | ||
108 | /* Set up this CPU's id, and pointer back to the lguest struct. */ | ||
105 | cpu->id = id; | 109 | cpu->id = id; |
106 | cpu->lg = container_of((cpu - id), struct lguest, cpus[0]); | 110 | cpu->lg = container_of((cpu - id), struct lguest, cpus[0]); |
107 | cpu->lg->nr_cpus++; | 111 | cpu->lg->nr_cpus++; |
112 | |||
113 | /* Each CPU has a timer it can set. */ | ||
108 | init_clockdev(cpu); | 114 | init_clockdev(cpu); |
109 | 115 | ||
110 | /* We need a complete page for the Guest registers: they are accessible | 116 | /* We need a complete page for the Guest registers: they are accessible |
@@ -120,11 +126,11 @@ static int lg_cpu_start(struct lg_cpu *cpu, unsigned id, unsigned long start_ip) | |||
120 | * address. */ | 126 | * address. */ |
121 | lguest_arch_setup_regs(cpu, start_ip); | 127 | lguest_arch_setup_regs(cpu, start_ip); |
122 | 128 | ||
123 | /* Initialize the queue for the waker to wait on */ | 129 | /* Initialize the queue for the Waker to wait on */ |
124 | init_waitqueue_head(&cpu->break_wq); | 130 | init_waitqueue_head(&cpu->break_wq); |
125 | 131 | ||
126 | /* We keep a pointer to the Launcher task (ie. current task) for when | 132 | /* We keep a pointer to the Launcher task (ie. current task) for when |
127 | * other Guests want to wake this one (inter-Guest I/O). */ | 133 | * other Guests want to wake this one (eg. console input). */ |
128 | cpu->tsk = current; | 134 | cpu->tsk = current; |
129 | 135 | ||
130 | /* We need to keep a pointer to the Launcher's memory map, because if | 136 | /* We need to keep a pointer to the Launcher's memory map, because if |
@@ -136,6 +142,7 @@ static int lg_cpu_start(struct lg_cpu *cpu, unsigned id, unsigned long start_ip) | |||
136 | * when the same Guest runs on the same CPU twice. */ | 142 | * when the same Guest runs on the same CPU twice. */ |
137 | cpu->last_pages = NULL; | 143 | cpu->last_pages = NULL; |
138 | 144 | ||
145 | /* No error == success. */ | ||
139 | return 0; | 146 | return 0; |
140 | } | 147 | } |
141 | 148 | ||
@@ -182,17 +189,16 @@ static int initialize(struct file *file, const unsigned long __user *input) | |||
182 | } | 189 | } |
183 | 190 | ||
184 | /* Populate the easy fields of our "struct lguest" */ | 191 | /* Populate the easy fields of our "struct lguest" */ |
185 | lg->mem_base = (void __user *)(long)args[0]; | 192 | lg->mem_base = (void __user *)args[0]; |
186 | lg->pfn_limit = args[1]; | 193 | lg->pfn_limit = args[1]; |
187 | 194 | ||
188 | /* This is the first cpu */ | 195 | /* This is the first cpu (cpu 0) and it will start booting at args[3] */ |
189 | err = lg_cpu_start(&lg->cpus[0], 0, args[3]); | 196 | err = lg_cpu_start(&lg->cpus[0], 0, args[3]); |
190 | if (err) | 197 | if (err) |
191 | goto release_guest; | 198 | goto release_guest; |
192 | 199 | ||
193 | /* Initialize the Guest's shadow page tables, using the toplevel | 200 | /* Initialize the Guest's shadow page tables, using the toplevel |
194 | * address the Launcher gave us. This allocates memory, so can | 201 | * address the Launcher gave us. This allocates memory, so can fail. */ |
195 | * fail. */ | ||
196 | err = init_guest_pagetable(lg, args[2]); | 202 | err = init_guest_pagetable(lg, args[2]); |
197 | if (err) | 203 | if (err) |
198 | goto free_regs; | 204 | goto free_regs; |
@@ -218,11 +224,16 @@ unlock: | |||
218 | /*L:010 The first operation the Launcher does must be a write. All writes | 224 | /*L:010 The first operation the Launcher does must be a write. All writes |
219 | * start with an unsigned long number: for the first write this must be | 225 | * start with an unsigned long number: for the first write this must be |
220 | * LHREQ_INITIALIZE to set up the Guest. After that the Launcher can use | 226 | * LHREQ_INITIALIZE to set up the Guest. After that the Launcher can use |
221 | * writes of other values to send interrupts. */ | 227 | * writes of other values to send interrupts. |
228 | * | ||
229 | * Note that we overload the "offset" in the /dev/lguest file to indicate what | ||
230 | * CPU number we're dealing with. Currently this is always 0, since we only | ||
231 | * support uniprocessor Guests, but you can see the beginnings of SMP support | ||
232 | * here. */ | ||
222 | static ssize_t write(struct file *file, const char __user *in, | 233 | static ssize_t write(struct file *file, const char __user *in, |
223 | size_t size, loff_t *off) | 234 | size_t size, loff_t *off) |
224 | { | 235 | { |
225 | /* Once the guest is initialized, we hold the "struct lguest" in the | 236 | /* Once the Guest is initialized, we hold the "struct lguest" in the |
226 | * file private data. */ | 237 | * file private data. */ |
227 | struct lguest *lg = file->private_data; | 238 | struct lguest *lg = file->private_data; |
228 | const unsigned long __user *input = (const unsigned long __user *)in; | 239 | const unsigned long __user *input = (const unsigned long __user *)in; |
@@ -230,6 +241,7 @@ static ssize_t write(struct file *file, const char __user *in, | |||
230 | struct lg_cpu *uninitialized_var(cpu); | 241 | struct lg_cpu *uninitialized_var(cpu); |
231 | unsigned int cpu_id = *off; | 242 | unsigned int cpu_id = *off; |
232 | 243 | ||
244 | /* The first value tells us what this request is. */ | ||
233 | if (get_user(req, input) != 0) | 245 | if (get_user(req, input) != 0) |
234 | return -EFAULT; | 246 | return -EFAULT; |
235 | input++; | 247 | input++; |
diff --git a/drivers/lguest/page_tables.c b/drivers/lguest/page_tables.c index a7f64a9d67e0..d93500f24fbb 100644 --- a/drivers/lguest/page_tables.c +++ b/drivers/lguest/page_tables.c | |||
@@ -2,8 +2,8 @@ | |||
2 | * previous encounters. It's functional, and as neat as it can be in the | 2 | * previous encounters. It's functional, and as neat as it can be in the |
3 | * circumstances, but be wary, for these things are subtle and break easily. | 3 | * circumstances, but be wary, for these things are subtle and break easily. |
4 | * The Guest provides a virtual to physical mapping, but we can neither trust | 4 | * The Guest provides a virtual to physical mapping, but we can neither trust |
5 | * it nor use it: we verify and convert it here to point the hardware to the | 5 | * it nor use it: we verify and convert it here then point the CPU to the |
6 | * actual Guest pages when running the Guest. :*/ | 6 | * converted Guest pages when running the Guest. :*/ |
7 | 7 | ||
8 | /* Copyright (C) Rusty Russell IBM Corporation 2006. | 8 | /* Copyright (C) Rusty Russell IBM Corporation 2006. |
9 | * GPL v2 and any later version */ | 9 | * GPL v2 and any later version */ |
@@ -106,6 +106,11 @@ static unsigned long gpte_addr(pgd_t gpgd, unsigned long vaddr) | |||
106 | BUG_ON(!(pgd_flags(gpgd) & _PAGE_PRESENT)); | 106 | BUG_ON(!(pgd_flags(gpgd) & _PAGE_PRESENT)); |
107 | return gpage + ((vaddr>>PAGE_SHIFT) % PTRS_PER_PTE) * sizeof(pte_t); | 107 | return gpage + ((vaddr>>PAGE_SHIFT) % PTRS_PER_PTE) * sizeof(pte_t); |
108 | } | 108 | } |
109 | /*:*/ | ||
110 | |||
111 | /*M:014 get_pfn is slow; it takes the mmap sem and calls get_user_pages. We | ||
112 | * could probably try to grab batches of pages here as an optimization | ||
113 | * (ie. pre-faulting). :*/ | ||
109 | 114 | ||
110 | /*H:350 This routine takes a page number given by the Guest and converts it to | 115 | /*H:350 This routine takes a page number given by the Guest and converts it to |
111 | * an actual, physical page number. It can fail for several reasons: the | 116 | * an actual, physical page number. It can fail for several reasons: the |
@@ -113,8 +118,8 @@ static unsigned long gpte_addr(pgd_t gpgd, unsigned long vaddr) | |||
113 | * and the page is read-only, or the write flag was set and the page was | 118 | * and the page is read-only, or the write flag was set and the page was |
114 | * shared so had to be copied, but we ran out of memory. | 119 | * shared so had to be copied, but we ran out of memory. |
115 | * | 120 | * |
116 | * This holds a reference to the page, so release_pte() is careful to | 121 | * This holds a reference to the page, so release_pte() is careful to put that |
117 | * put that back. */ | 122 | * back. */ |
118 | static unsigned long get_pfn(unsigned long virtpfn, int write) | 123 | static unsigned long get_pfn(unsigned long virtpfn, int write) |
119 | { | 124 | { |
120 | struct page *page; | 125 | struct page *page; |
@@ -532,13 +537,13 @@ static void do_set_pte(struct lg_cpu *cpu, int idx, | |||
532 | * all processes. So when the page table above that address changes, we update | 537 | * all processes. So when the page table above that address changes, we update |
533 | * all the page tables, not just the current one. This is rare. | 538 | * all the page tables, not just the current one. This is rare. |
534 | * | 539 | * |
535 | * The benefit is that when we have to track a new page table, we can copy keep | 540 | * The benefit is that when we have to track a new page table, we can keep all |
536 | * all the kernel mappings. This speeds up context switch immensely. */ | 541 | * the kernel mappings. This speeds up context switch immensely. */ |
537 | void guest_set_pte(struct lg_cpu *cpu, | 542 | void guest_set_pte(struct lg_cpu *cpu, |
538 | unsigned long gpgdir, unsigned long vaddr, pte_t gpte) | 543 | unsigned long gpgdir, unsigned long vaddr, pte_t gpte) |
539 | { | 544 | { |
540 | /* Kernel mappings must be changed on all top levels. Slow, but | 545 | /* Kernel mappings must be changed on all top levels. Slow, but doesn't |
541 | * doesn't happen often. */ | 546 | * happen often. */ |
542 | if (vaddr >= cpu->lg->kernel_address) { | 547 | if (vaddr >= cpu->lg->kernel_address) { |
543 | unsigned int i; | 548 | unsigned int i; |
544 | for (i = 0; i < ARRAY_SIZE(cpu->lg->pgdirs); i++) | 549 | for (i = 0; i < ARRAY_SIZE(cpu->lg->pgdirs); i++) |
@@ -704,12 +709,11 @@ static __init void populate_switcher_pte_page(unsigned int cpu, | |||
704 | /* We've made it through the page table code. Perhaps our tired brains are | 709 | /* We've made it through the page table code. Perhaps our tired brains are |
705 | * still processing the details, or perhaps we're simply glad it's over. | 710 | * still processing the details, or perhaps we're simply glad it's over. |
706 | * | 711 | * |
707 | * If nothing else, note that all this complexity in juggling shadow page | 712 | * If nothing else, note that all this complexity in juggling shadow page tables |
708 | * tables in sync with the Guest's page tables is for one reason: for most | 713 | * in sync with the Guest's page tables is for one reason: for most Guests this |
709 | * Guests this page table dance determines how bad performance will be. This | 714 | * page table dance determines how bad performance will be. This is why Xen |
710 | * is why Xen uses exotic direct Guest pagetable manipulation, and why both | 715 | * uses exotic direct Guest pagetable manipulation, and why both Intel and AMD |
711 | * Intel and AMD have implemented shadow page table support directly into | 716 | * have implemented shadow page table support directly into hardware. |
712 | * hardware. | ||
713 | * | 717 | * |
714 | * There is just one file remaining in the Host. */ | 718 | * There is just one file remaining in the Host. */ |
715 | 719 | ||
diff --git a/drivers/lguest/x86/core.c b/drivers/lguest/x86/core.c index 635187812d52..5126d5d9ea0e 100644 --- a/drivers/lguest/x86/core.c +++ b/drivers/lguest/x86/core.c | |||
@@ -17,6 +17,13 @@ | |||
17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
19 | */ | 19 | */ |
20 | /*P:450 This file contains the x86-specific lguest code. It used to be all | ||
21 | * mixed in with drivers/lguest/core.c but several foolhardy code slashers | ||
22 | * wrestled most of the dependencies out to here in preparation for porting | ||
23 | * lguest to other architectures (see what I mean by foolhardy?). | ||
24 | * | ||
25 | * This also contains a couple of non-obvious setup and teardown pieces which | ||
26 | * were implemented after days of debugging pain. :*/ | ||
20 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
21 | #include <linux/start_kernel.h> | 28 | #include <linux/start_kernel.h> |
22 | #include <linux/string.h> | 29 | #include <linux/string.h> |
@@ -157,6 +164,8 @@ static void run_guest_once(struct lg_cpu *cpu, struct lguest_pages *pages) | |||
157 | * also simplify copy_in_guest_info(). Note that we'd still need to restore | 164 | * also simplify copy_in_guest_info(). Note that we'd still need to restore |
158 | * things when we exit to Launcher userspace, but that's fairly easy. | 165 | * things when we exit to Launcher userspace, but that's fairly easy. |
159 | * | 166 | * |
167 | * We could also try using this hooks for PGE, but that might be too expensive. | ||
168 | * | ||
160 | * The hooks were designed for KVM, but we can also put them to good use. :*/ | 169 | * The hooks were designed for KVM, but we can also put them to good use. :*/ |
161 | 170 | ||
162 | /*H:040 This is the i386-specific code to setup and run the Guest. Interrupts | 171 | /*H:040 This is the i386-specific code to setup and run the Guest. Interrupts |
@@ -182,7 +191,7 @@ void lguest_arch_run_guest(struct lg_cpu *cpu) | |||
182 | * was doing. */ | 191 | * was doing. */ |
183 | run_guest_once(cpu, lguest_pages(raw_smp_processor_id())); | 192 | run_guest_once(cpu, lguest_pages(raw_smp_processor_id())); |
184 | 193 | ||
185 | /* Note that the "regs" pointer contains two extra entries which are | 194 | /* Note that the "regs" structure contains two extra entries which are |
186 | * not really registers: a trap number which says what interrupt or | 195 | * not really registers: a trap number which says what interrupt or |
187 | * trap made the switcher code come back, and an error code which some | 196 | * trap made the switcher code come back, and an error code which some |
188 | * traps set. */ | 197 | * traps set. */ |
@@ -293,11 +302,10 @@ void lguest_arch_handle_trap(struct lg_cpu *cpu) | |||
293 | break; | 302 | break; |
294 | case 14: /* We've intercepted a Page Fault. */ | 303 | case 14: /* We've intercepted a Page Fault. */ |
295 | /* The Guest accessed a virtual address that wasn't mapped. | 304 | /* The Guest accessed a virtual address that wasn't mapped. |
296 | * This happens a lot: we don't actually set up most of the | 305 | * This happens a lot: we don't actually set up most of the page |
297 | * page tables for the Guest at all when we start: as it runs | 306 | * tables for the Guest at all when we start: as it runs it asks |
298 | * it asks for more and more, and we set them up as | 307 | * for more and more, and we set them up as required. In this |
299 | * required. In this case, we don't even tell the Guest that | 308 | * case, we don't even tell the Guest that the fault happened. |
300 | * the fault happened. | ||
301 | * | 309 | * |
302 | * The errcode tells whether this was a read or a write, and | 310 | * The errcode tells whether this was a read or a write, and |
303 | * whether kernel or userspace code. */ | 311 | * whether kernel or userspace code. */ |
@@ -342,7 +350,7 @@ void lguest_arch_handle_trap(struct lg_cpu *cpu) | |||
342 | if (!deliver_trap(cpu, cpu->regs->trapnum)) | 350 | if (!deliver_trap(cpu, cpu->regs->trapnum)) |
343 | /* If the Guest doesn't have a handler (either it hasn't | 351 | /* If the Guest doesn't have a handler (either it hasn't |
344 | * registered any yet, or it's one of the faults we don't let | 352 | * registered any yet, or it's one of the faults we don't let |
345 | * it handle), it dies with a cryptic error message. */ | 353 | * it handle), it dies with this cryptic error message. */ |
346 | kill_guest(cpu, "unhandled trap %li at %#lx (%#lx)", | 354 | kill_guest(cpu, "unhandled trap %li at %#lx (%#lx)", |
347 | cpu->regs->trapnum, cpu->regs->eip, | 355 | cpu->regs->trapnum, cpu->regs->eip, |
348 | cpu->regs->trapnum == 14 ? cpu->arch.last_pagefault | 356 | cpu->regs->trapnum == 14 ? cpu->arch.last_pagefault |
@@ -375,8 +383,8 @@ void __init lguest_arch_host_init(void) | |||
375 | * The only exception is the interrupt handlers in switcher.S: their | 383 | * The only exception is the interrupt handlers in switcher.S: their |
376 | * addresses are placed in a table (default_idt_entries), so we need to | 384 | * addresses are placed in a table (default_idt_entries), so we need to |
377 | * update the table with the new addresses. switcher_offset() is a | 385 | * update the table with the new addresses. switcher_offset() is a |
378 | * convenience function which returns the distance between the builtin | 386 | * convenience function which returns the distance between the |
379 | * switcher code and the high-mapped copy we just made. */ | 387 | * compiled-in switcher code and the high-mapped copy we just made. */ |
380 | for (i = 0; i < IDT_ENTRIES; i++) | 388 | for (i = 0; i < IDT_ENTRIES; i++) |
381 | default_idt_entries[i] += switcher_offset(); | 389 | default_idt_entries[i] += switcher_offset(); |
382 | 390 | ||
@@ -416,7 +424,7 @@ void __init lguest_arch_host_init(void) | |||
416 | state->guest_gdt_desc.address = (long)&state->guest_gdt; | 424 | state->guest_gdt_desc.address = (long)&state->guest_gdt; |
417 | 425 | ||
418 | /* We know where we want the stack to be when the Guest enters | 426 | /* We know where we want the stack to be when the Guest enters |
419 | * the switcher: in pages->regs. The stack grows upwards, so | 427 | * the Switcher: in pages->regs. The stack grows upwards, so |
420 | * we start it at the end of that structure. */ | 428 | * we start it at the end of that structure. */ |
421 | state->guest_tss.sp0 = (long)(&pages->regs + 1); | 429 | state->guest_tss.sp0 = (long)(&pages->regs + 1); |
422 | /* And this is the GDT entry to use for the stack: we keep a | 430 | /* And this is the GDT entry to use for the stack: we keep a |
@@ -513,8 +521,8 @@ int lguest_arch_init_hypercalls(struct lg_cpu *cpu) | |||
513 | { | 521 | { |
514 | u32 tsc_speed; | 522 | u32 tsc_speed; |
515 | 523 | ||
516 | /* The pointer to the Guest's "struct lguest_data" is the only | 524 | /* The pointer to the Guest's "struct lguest_data" is the only argument. |
517 | * argument. We check that address now. */ | 525 | * We check that address now. */ |
518 | if (!lguest_address_ok(cpu->lg, cpu->hcall->arg1, | 526 | if (!lguest_address_ok(cpu->lg, cpu->hcall->arg1, |
519 | sizeof(*cpu->lg->lguest_data))) | 527 | sizeof(*cpu->lg->lguest_data))) |
520 | return -EFAULT; | 528 | return -EFAULT; |
@@ -546,6 +554,7 @@ int lguest_arch_init_hypercalls(struct lg_cpu *cpu) | |||
546 | 554 | ||
547 | return 0; | 555 | return 0; |
548 | } | 556 | } |
557 | /*:*/ | ||
549 | 558 | ||
550 | /*L:030 lguest_arch_setup_regs() | 559 | /*L:030 lguest_arch_setup_regs() |
551 | * | 560 | * |
diff --git a/drivers/lguest/x86/switcher_32.S b/drivers/lguest/x86/switcher_32.S index 0af8baaa0d4a..3fc15318a80f 100644 --- a/drivers/lguest/x86/switcher_32.S +++ b/drivers/lguest/x86/switcher_32.S | |||
@@ -1,6 +1,6 @@ | |||
1 | /*P:900 This is the Switcher: code which sits at 0xFFC00000 to do the low-level | 1 | /*P:900 This is the Switcher: code which sits at 0xFFC00000 astride both the |
2 | * Guest<->Host switch. It is as simple as it can be made, but it's naturally | 2 | * Host and Guest to do the low-level Guest<->Host switch. It is as simple as |
3 | * very specific to x86. | 3 | * it can be made, but it's naturally very specific to x86. |
4 | * | 4 | * |
5 | * You have now completed Preparation. If this has whet your appetite; if you | 5 | * You have now completed Preparation. If this has whet your appetite; if you |
6 | * are feeling invigorated and refreshed then the next, more challenging stage | 6 | * are feeling invigorated and refreshed then the next, more challenging stage |
@@ -189,7 +189,7 @@ ENTRY(switch_to_guest) | |||
189 | // Interrupts are turned back on: we are Guest. | 189 | // Interrupts are turned back on: we are Guest. |
190 | iret | 190 | iret |
191 | 191 | ||
192 | // We treat two paths to switch back to the Host | 192 | // We tread two paths to switch back to the Host |
193 | // Yet both must save Guest state and restore Host | 193 | // Yet both must save Guest state and restore Host |
194 | // So we put the routine in a macro. | 194 | // So we put the routine in a macro. |
195 | #define SWITCH_TO_HOST \ | 195 | #define SWITCH_TO_HOST \ |
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index b04f98df94ea..835def11419d 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2003 Christophe Saout <christophe@saout.de> | 2 | * Copyright (C) 2003 Christophe Saout <christophe@saout.de> |
3 | * Copyright (C) 2004 Clemens Fruhwirth <clemens@endorphin.org> | 3 | * Copyright (C) 2004 Clemens Fruhwirth <clemens@endorphin.org> |
4 | * Copyright (C) 2006-2007 Red Hat, Inc. All rights reserved. | 4 | * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. |
5 | * | 5 | * |
6 | * This file is released under the GPL. | 6 | * This file is released under the GPL. |
7 | */ | 7 | */ |
@@ -93,6 +93,8 @@ struct crypt_config { | |||
93 | 93 | ||
94 | struct workqueue_struct *io_queue; | 94 | struct workqueue_struct *io_queue; |
95 | struct workqueue_struct *crypt_queue; | 95 | struct workqueue_struct *crypt_queue; |
96 | wait_queue_head_t writeq; | ||
97 | |||
96 | /* | 98 | /* |
97 | * crypto related data | 99 | * crypto related data |
98 | */ | 100 | */ |
@@ -331,14 +333,7 @@ static void crypt_convert_init(struct crypt_config *cc, | |||
331 | ctx->idx_out = bio_out ? bio_out->bi_idx : 0; | 333 | ctx->idx_out = bio_out ? bio_out->bi_idx : 0; |
332 | ctx->sector = sector + cc->iv_offset; | 334 | ctx->sector = sector + cc->iv_offset; |
333 | init_completion(&ctx->restart); | 335 | init_completion(&ctx->restart); |
334 | /* | 336 | atomic_set(&ctx->pending, 1); |
335 | * Crypto operation can be asynchronous, | ||
336 | * ctx->pending is increased after request submission. | ||
337 | * We need to ensure that we don't call the crypt finish | ||
338 | * operation before pending got incremented | ||
339 | * (dependent on crypt submission return code). | ||
340 | */ | ||
341 | atomic_set(&ctx->pending, 2); | ||
342 | } | 337 | } |
343 | 338 | ||
344 | static int crypt_convert_block(struct crypt_config *cc, | 339 | static int crypt_convert_block(struct crypt_config *cc, |
@@ -411,43 +406,42 @@ static void crypt_alloc_req(struct crypt_config *cc, | |||
411 | static int crypt_convert(struct crypt_config *cc, | 406 | static int crypt_convert(struct crypt_config *cc, |
412 | struct convert_context *ctx) | 407 | struct convert_context *ctx) |
413 | { | 408 | { |
414 | int r = 0; | 409 | int r; |
415 | 410 | ||
416 | while(ctx->idx_in < ctx->bio_in->bi_vcnt && | 411 | while(ctx->idx_in < ctx->bio_in->bi_vcnt && |
417 | ctx->idx_out < ctx->bio_out->bi_vcnt) { | 412 | ctx->idx_out < ctx->bio_out->bi_vcnt) { |
418 | 413 | ||
419 | crypt_alloc_req(cc, ctx); | 414 | crypt_alloc_req(cc, ctx); |
420 | 415 | ||
416 | atomic_inc(&ctx->pending); | ||
417 | |||
421 | r = crypt_convert_block(cc, ctx, cc->req); | 418 | r = crypt_convert_block(cc, ctx, cc->req); |
422 | 419 | ||
423 | switch (r) { | 420 | switch (r) { |
421 | /* async */ | ||
424 | case -EBUSY: | 422 | case -EBUSY: |
425 | wait_for_completion(&ctx->restart); | 423 | wait_for_completion(&ctx->restart); |
426 | INIT_COMPLETION(ctx->restart); | 424 | INIT_COMPLETION(ctx->restart); |
427 | /* fall through*/ | 425 | /* fall through*/ |
428 | case -EINPROGRESS: | 426 | case -EINPROGRESS: |
429 | atomic_inc(&ctx->pending); | ||
430 | cc->req = NULL; | 427 | cc->req = NULL; |
431 | r = 0; | 428 | ctx->sector++; |
432 | /* fall through*/ | 429 | continue; |
430 | |||
431 | /* sync */ | ||
433 | case 0: | 432 | case 0: |
433 | atomic_dec(&ctx->pending); | ||
434 | ctx->sector++; | 434 | ctx->sector++; |
435 | continue; | 435 | continue; |
436 | } | ||
437 | 436 | ||
438 | break; | 437 | /* error */ |
438 | default: | ||
439 | atomic_dec(&ctx->pending); | ||
440 | return r; | ||
441 | } | ||
439 | } | 442 | } |
440 | 443 | ||
441 | /* | 444 | return 0; |
442 | * If there are pending crypto operation run async | ||
443 | * code. Otherwise process return code synchronously. | ||
444 | * The step of 2 ensures that async finish doesn't | ||
445 | * call crypto finish too early. | ||
446 | */ | ||
447 | if (atomic_sub_return(2, &ctx->pending)) | ||
448 | return -EINPROGRESS; | ||
449 | |||
450 | return r; | ||
451 | } | 445 | } |
452 | 446 | ||
453 | static void dm_crypt_bio_destructor(struct bio *bio) | 447 | static void dm_crypt_bio_destructor(struct bio *bio) |
@@ -624,8 +618,10 @@ static void kcryptd_io_read(struct dm_crypt_io *io) | |||
624 | static void kcryptd_io_write(struct dm_crypt_io *io) | 618 | static void kcryptd_io_write(struct dm_crypt_io *io) |
625 | { | 619 | { |
626 | struct bio *clone = io->ctx.bio_out; | 620 | struct bio *clone = io->ctx.bio_out; |
621 | struct crypt_config *cc = io->target->private; | ||
627 | 622 | ||
628 | generic_make_request(clone); | 623 | generic_make_request(clone); |
624 | wake_up(&cc->writeq); | ||
629 | } | 625 | } |
630 | 626 | ||
631 | static void kcryptd_io(struct work_struct *work) | 627 | static void kcryptd_io(struct work_struct *work) |
@@ -698,7 +694,8 @@ static void kcryptd_crypt_write_convert_loop(struct dm_crypt_io *io) | |||
698 | 694 | ||
699 | r = crypt_convert(cc, &io->ctx); | 695 | r = crypt_convert(cc, &io->ctx); |
700 | 696 | ||
701 | if (r != -EINPROGRESS) { | 697 | if (atomic_dec_and_test(&io->ctx.pending)) { |
698 | /* processed, no running async crypto */ | ||
702 | kcryptd_crypt_write_io_submit(io, r, 0); | 699 | kcryptd_crypt_write_io_submit(io, r, 0); |
703 | if (unlikely(r < 0)) | 700 | if (unlikely(r < 0)) |
704 | return; | 701 | return; |
@@ -706,8 +703,12 @@ static void kcryptd_crypt_write_convert_loop(struct dm_crypt_io *io) | |||
706 | atomic_inc(&io->pending); | 703 | atomic_inc(&io->pending); |
707 | 704 | ||
708 | /* out of memory -> run queues */ | 705 | /* out of memory -> run queues */ |
709 | if (unlikely(remaining)) | 706 | if (unlikely(remaining)) { |
707 | /* wait for async crypto then reinitialize pending */ | ||
708 | wait_event(cc->writeq, !atomic_read(&io->ctx.pending)); | ||
709 | atomic_set(&io->ctx.pending, 1); | ||
710 | congestion_wait(WRITE, HZ/100); | 710 | congestion_wait(WRITE, HZ/100); |
711 | } | ||
711 | } | 712 | } |
712 | } | 713 | } |
713 | 714 | ||
@@ -746,7 +747,7 @@ static void kcryptd_crypt_read_convert(struct dm_crypt_io *io) | |||
746 | 747 | ||
747 | r = crypt_convert(cc, &io->ctx); | 748 | r = crypt_convert(cc, &io->ctx); |
748 | 749 | ||
749 | if (r != -EINPROGRESS) | 750 | if (atomic_dec_and_test(&io->ctx.pending)) |
750 | kcryptd_crypt_read_done(io, r); | 751 | kcryptd_crypt_read_done(io, r); |
751 | 752 | ||
752 | crypt_dec_pending(io); | 753 | crypt_dec_pending(io); |
@@ -1047,6 +1048,7 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
1047 | goto bad_crypt_queue; | 1048 | goto bad_crypt_queue; |
1048 | } | 1049 | } |
1049 | 1050 | ||
1051 | init_waitqueue_head(&cc->writeq); | ||
1050 | ti->private = cc; | 1052 | ti->private = cc; |
1051 | return 0; | 1053 | return 0; |
1052 | 1054 | ||
diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c index b8e342fe7586..8f25f628ef16 100644 --- a/drivers/md/dm-io.c +++ b/drivers/md/dm-io.c | |||
@@ -114,7 +114,7 @@ static void dec_count(struct io *io, unsigned int region, int error) | |||
114 | wake_up_process(io->sleeper); | 114 | wake_up_process(io->sleeper); |
115 | 115 | ||
116 | else { | 116 | else { |
117 | int r = io->error; | 117 | unsigned long r = io->error; |
118 | io_notify_fn fn = io->callback; | 118 | io_notify_fn fn = io->callback; |
119 | void *context = io->context; | 119 | void *context = io->context; |
120 | 120 | ||
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 51605870f898..762cb086bb7f 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
@@ -753,7 +753,7 @@ out: | |||
753 | * are in the no-sync state. We have to recover these by | 753 | * are in the no-sync state. We have to recover these by |
754 | * recopying from the default mirror to all the others. | 754 | * recopying from the default mirror to all the others. |
755 | *---------------------------------------------------------------*/ | 755 | *---------------------------------------------------------------*/ |
756 | static void recovery_complete(int read_err, unsigned int write_err, | 756 | static void recovery_complete(int read_err, unsigned long write_err, |
757 | void *context) | 757 | void *context) |
758 | { | 758 | { |
759 | struct region *reg = (struct region *)context; | 759 | struct region *reg = (struct region *)context; |
@@ -767,7 +767,7 @@ static void recovery_complete(int read_err, unsigned int write_err, | |||
767 | } | 767 | } |
768 | 768 | ||
769 | if (write_err) { | 769 | if (write_err) { |
770 | DMERR_LIMIT("Write error during recovery (error = 0x%x)", | 770 | DMERR_LIMIT("Write error during recovery (error = 0x%lx)", |
771 | write_err); | 771 | write_err); |
772 | /* | 772 | /* |
773 | * Bits correspond to devices (excluding default mirror). | 773 | * Bits correspond to devices (excluding default mirror). |
diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index ae24eab8cd81..4dc8a43c034b 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c | |||
@@ -804,7 +804,7 @@ static void commit_callback(void *context, int success) | |||
804 | * Called when the copy I/O has finished. kcopyd actually runs | 804 | * Called when the copy I/O has finished. kcopyd actually runs |
805 | * this code so don't block. | 805 | * this code so don't block. |
806 | */ | 806 | */ |
807 | static void copy_callback(int read_err, unsigned int write_err, void *context) | 807 | static void copy_callback(int read_err, unsigned long write_err, void *context) |
808 | { | 808 | { |
809 | struct dm_snap_pending_exception *pe = context; | 809 | struct dm_snap_pending_exception *pe = context; |
810 | struct dm_snapshot *s = pe->snap; | 810 | struct dm_snapshot *s = pe->snap; |
diff --git a/drivers/md/kcopyd.c b/drivers/md/kcopyd.c index f3831f31223e..e76b52ade690 100644 --- a/drivers/md/kcopyd.c +++ b/drivers/md/kcopyd.c | |||
@@ -169,7 +169,7 @@ struct kcopyd_job { | |||
169 | * Error state of the job. | 169 | * Error state of the job. |
170 | */ | 170 | */ |
171 | int read_err; | 171 | int read_err; |
172 | unsigned int write_err; | 172 | unsigned long write_err; |
173 | 173 | ||
174 | /* | 174 | /* |
175 | * Either READ or WRITE | 175 | * Either READ or WRITE |
@@ -293,7 +293,7 @@ static int run_complete_job(struct kcopyd_job *job) | |||
293 | { | 293 | { |
294 | void *context = job->context; | 294 | void *context = job->context; |
295 | int read_err = job->read_err; | 295 | int read_err = job->read_err; |
296 | unsigned int write_err = job->write_err; | 296 | unsigned long write_err = job->write_err; |
297 | kcopyd_notify_fn fn = job->fn; | 297 | kcopyd_notify_fn fn = job->fn; |
298 | struct kcopyd_client *kc = job->kc; | 298 | struct kcopyd_client *kc = job->kc; |
299 | 299 | ||
@@ -396,7 +396,7 @@ static int process_jobs(struct list_head *jobs, int (*fn) (struct kcopyd_job *)) | |||
396 | if (r < 0) { | 396 | if (r < 0) { |
397 | /* error this rogue job */ | 397 | /* error this rogue job */ |
398 | if (job->rw == WRITE) | 398 | if (job->rw == WRITE) |
399 | job->write_err = (unsigned int) -1; | 399 | job->write_err = (unsigned long) -1L; |
400 | else | 400 | else |
401 | job->read_err = 1; | 401 | job->read_err = 1; |
402 | push(&_complete_jobs, job); | 402 | push(&_complete_jobs, job); |
@@ -448,8 +448,8 @@ static void dispatch_job(struct kcopyd_job *job) | |||
448 | } | 448 | } |
449 | 449 | ||
450 | #define SUB_JOB_SIZE 128 | 450 | #define SUB_JOB_SIZE 128 |
451 | static void segment_complete(int read_err, | 451 | static void segment_complete(int read_err, unsigned long write_err, |
452 | unsigned int write_err, void *context) | 452 | void *context) |
453 | { | 453 | { |
454 | /* FIXME: tidy this function */ | 454 | /* FIXME: tidy this function */ |
455 | sector_t progress = 0; | 455 | sector_t progress = 0; |
diff --git a/drivers/md/kcopyd.h b/drivers/md/kcopyd.h index 4621ea055c0e..4845f2a0c676 100644 --- a/drivers/md/kcopyd.h +++ b/drivers/md/kcopyd.h | |||
@@ -32,8 +32,8 @@ void kcopyd_client_destroy(struct kcopyd_client *kc); | |||
32 | * read_err is a boolean, | 32 | * read_err is a boolean, |
33 | * write_err is a bitset, with 1 bit for each destination region | 33 | * write_err is a bitset, with 1 bit for each destination region |
34 | */ | 34 | */ |
35 | typedef void (*kcopyd_notify_fn)(int read_err, | 35 | typedef void (*kcopyd_notify_fn)(int read_err, unsigned long write_err, |
36 | unsigned int write_err, void *context); | 36 | void *context); |
37 | 37 | ||
38 | int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from, | 38 | int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from, |
39 | unsigned int num_dests, struct io_region *dests, | 39 | unsigned int num_dests, struct io_region *dests, |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index c574cf5efb5c..b162b839a662 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -2348,25 +2348,15 @@ static void handle_issuing_new_write_requests6(raid5_conf_t *conf, | |||
2348 | static void handle_parity_checks5(raid5_conf_t *conf, struct stripe_head *sh, | 2348 | static void handle_parity_checks5(raid5_conf_t *conf, struct stripe_head *sh, |
2349 | struct stripe_head_state *s, int disks) | 2349 | struct stripe_head_state *s, int disks) |
2350 | { | 2350 | { |
2351 | int canceled_check = 0; | ||
2352 | |||
2351 | set_bit(STRIPE_HANDLE, &sh->state); | 2353 | set_bit(STRIPE_HANDLE, &sh->state); |
2352 | /* Take one of the following actions: | ||
2353 | * 1/ start a check parity operation if (uptodate == disks) | ||
2354 | * 2/ finish a check parity operation and act on the result | ||
2355 | * 3/ skip to the writeback section if we previously | ||
2356 | * initiated a recovery operation | ||
2357 | */ | ||
2358 | if (s->failed == 0 && | ||
2359 | !test_bit(STRIPE_OP_MOD_REPAIR_PD, &sh->ops.pending)) { | ||
2360 | if (!test_and_set_bit(STRIPE_OP_CHECK, &sh->ops.pending)) { | ||
2361 | BUG_ON(s->uptodate != disks); | ||
2362 | clear_bit(R5_UPTODATE, &sh->dev[sh->pd_idx].flags); | ||
2363 | sh->ops.count++; | ||
2364 | s->uptodate--; | ||
2365 | } else if ( | ||
2366 | test_and_clear_bit(STRIPE_OP_CHECK, &sh->ops.complete)) { | ||
2367 | clear_bit(STRIPE_OP_CHECK, &sh->ops.ack); | ||
2368 | clear_bit(STRIPE_OP_CHECK, &sh->ops.pending); | ||
2369 | 2354 | ||
2355 | /* complete a check operation */ | ||
2356 | if (test_and_clear_bit(STRIPE_OP_CHECK, &sh->ops.complete)) { | ||
2357 | clear_bit(STRIPE_OP_CHECK, &sh->ops.ack); | ||
2358 | clear_bit(STRIPE_OP_CHECK, &sh->ops.pending); | ||
2359 | if (s->failed == 0) { | ||
2370 | if (sh->ops.zero_sum_result == 0) | 2360 | if (sh->ops.zero_sum_result == 0) |
2371 | /* parity is correct (on disc, | 2361 | /* parity is correct (on disc, |
2372 | * not in buffer any more) | 2362 | * not in buffer any more) |
@@ -2391,7 +2381,8 @@ static void handle_parity_checks5(raid5_conf_t *conf, struct stripe_head *sh, | |||
2391 | s->uptodate++; | 2381 | s->uptodate++; |
2392 | } | 2382 | } |
2393 | } | 2383 | } |
2394 | } | 2384 | } else |
2385 | canceled_check = 1; /* STRIPE_INSYNC is not set */ | ||
2395 | } | 2386 | } |
2396 | 2387 | ||
2397 | /* check if we can clear a parity disk reconstruct */ | 2388 | /* check if we can clear a parity disk reconstruct */ |
@@ -2404,12 +2395,28 @@ static void handle_parity_checks5(raid5_conf_t *conf, struct stripe_head *sh, | |||
2404 | clear_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending); | 2395 | clear_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending); |
2405 | } | 2396 | } |
2406 | 2397 | ||
2398 | /* start a new check operation if there are no failures, the stripe is | ||
2399 | * not insync, and a repair is not in flight | ||
2400 | */ | ||
2401 | if (s->failed == 0 && | ||
2402 | !test_bit(STRIPE_INSYNC, &sh->state) && | ||
2403 | !test_bit(STRIPE_OP_MOD_REPAIR_PD, &sh->ops.pending)) { | ||
2404 | if (!test_and_set_bit(STRIPE_OP_CHECK, &sh->ops.pending)) { | ||
2405 | BUG_ON(s->uptodate != disks); | ||
2406 | clear_bit(R5_UPTODATE, &sh->dev[sh->pd_idx].flags); | ||
2407 | sh->ops.count++; | ||
2408 | s->uptodate--; | ||
2409 | } | ||
2410 | } | ||
2411 | |||
2407 | /* Wait for check parity and compute block operations to complete | 2412 | /* Wait for check parity and compute block operations to complete |
2408 | * before write-back | 2413 | * before write-back. If a failure occurred while the check operation |
2414 | * was in flight we need to cycle this stripe through handle_stripe | ||
2415 | * since the parity block may not be uptodate | ||
2409 | */ | 2416 | */ |
2410 | if (!test_bit(STRIPE_INSYNC, &sh->state) && | 2417 | if (!canceled_check && !test_bit(STRIPE_INSYNC, &sh->state) && |
2411 | !test_bit(STRIPE_OP_CHECK, &sh->ops.pending) && | 2418 | !test_bit(STRIPE_OP_CHECK, &sh->ops.pending) && |
2412 | !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending)) { | 2419 | !test_bit(STRIPE_OP_COMPUTE_BLK, &sh->ops.pending)) { |
2413 | struct r5dev *dev; | 2420 | struct r5dev *dev; |
2414 | /* either failed parity check, or recovery is happening */ | 2421 | /* either failed parity check, or recovery is happening */ |
2415 | if (s->failed == 0) | 2422 | if (s->failed == 0) |
diff --git a/drivers/media/Makefile b/drivers/media/Makefile index 8cf91353b56a..7b8bb6949f5e 100644 --- a/drivers/media/Makefile +++ b/drivers/media/Makefile | |||
@@ -6,3 +6,6 @@ obj-y := common/ | |||
6 | obj-y += video/ | 6 | obj-y += video/ |
7 | obj-$(CONFIG_VIDEO_DEV) += radio/ | 7 | obj-$(CONFIG_VIDEO_DEV) += radio/ |
8 | obj-$(CONFIG_DVB_CORE) += dvb/ | 8 | obj-$(CONFIG_DVB_CORE) += dvb/ |
9 | ifeq ($(CONFIG_DVB_CORE),) | ||
10 | obj-$(CONFIG_VIDEO_TUNER) += dvb/frontends/ | ||
11 | endif | ||
diff --git a/drivers/media/common/saa7146_core.c b/drivers/media/common/saa7146_core.c index 168a8d3a5e55..7707b8c7394b 100644 --- a/drivers/media/common/saa7146_core.c +++ b/drivers/media/common/saa7146_core.c | |||
@@ -306,25 +306,22 @@ static irqreturn_t interrupt_hw(int irq, void *dev_id) | |||
306 | return IRQ_NONE; | 306 | return IRQ_NONE; |
307 | } | 307 | } |
308 | 308 | ||
309 | if( 0 != (dev->ext)) { | 309 | if (dev->ext) { |
310 | if( 0 != (dev->ext->irq_mask & isr )) { | 310 | if (dev->ext->irq_mask & isr) { |
311 | if( 0 != dev->ext->irq_func ) { | 311 | if (dev->ext->irq_func) |
312 | dev->ext->irq_func(dev, &isr); | 312 | dev->ext->irq_func(dev, &isr); |
313 | } | ||
314 | isr &= ~dev->ext->irq_mask; | 313 | isr &= ~dev->ext->irq_mask; |
315 | } | 314 | } |
316 | } | 315 | } |
317 | if (0 != (isr & (MASK_27))) { | 316 | if (0 != (isr & (MASK_27))) { |
318 | DEB_INT(("irq: RPS0 (0x%08x).\n",isr)); | 317 | DEB_INT(("irq: RPS0 (0x%08x).\n",isr)); |
319 | if( 0 != dev->vv_data && 0 != dev->vv_callback) { | 318 | if (dev->vv_data && dev->vv_callback) |
320 | dev->vv_callback(dev,isr); | 319 | dev->vv_callback(dev,isr); |
321 | } | ||
322 | isr &= ~MASK_27; | 320 | isr &= ~MASK_27; |
323 | } | 321 | } |
324 | if (0 != (isr & (MASK_28))) { | 322 | if (0 != (isr & (MASK_28))) { |
325 | if( 0 != dev->vv_data && 0 != dev->vv_callback) { | 323 | if (dev->vv_data && dev->vv_callback) |
326 | dev->vv_callback(dev,isr); | 324 | dev->vv_callback(dev,isr); |
327 | } | ||
328 | isr &= ~MASK_28; | 325 | isr &= ~MASK_28; |
329 | } | 326 | } |
330 | if (0 != (isr & (MASK_16|MASK_17))) { | 327 | if (0 != (isr & (MASK_16|MASK_17))) { |
diff --git a/drivers/media/common/saa7146_fops.c b/drivers/media/common/saa7146_fops.c index f0703d8bc3e8..171afe7da6b6 100644 --- a/drivers/media/common/saa7146_fops.c +++ b/drivers/media/common/saa7146_fops.c | |||
@@ -272,7 +272,7 @@ static int fops_open(struct inode *inode, struct file *file) | |||
272 | 272 | ||
273 | result = 0; | 273 | result = 0; |
274 | out: | 274 | out: |
275 | if( fh != 0 && result != 0 ) { | 275 | if (fh && result != 0) { |
276 | kfree(fh); | 276 | kfree(fh); |
277 | file->private_data = NULL; | 277 | file->private_data = NULL; |
278 | } | 278 | } |
diff --git a/drivers/media/dvb/dvb-core/dvb_net.c b/drivers/media/dvb/dvb-core/dvb_net.c index ed3f8268ed11..4c8b62e2c035 100644 --- a/drivers/media/dvb/dvb-core/dvb_net.c +++ b/drivers/media/dvb/dvb-core/dvb_net.c | |||
@@ -784,8 +784,8 @@ static int dvb_net_ts_callback(const u8 *buffer1, size_t buffer1_len, | |||
784 | { | 784 | { |
785 | struct net_device *dev = feed->priv; | 785 | struct net_device *dev = feed->priv; |
786 | 786 | ||
787 | if (buffer2 != 0) | 787 | if (buffer2) |
788 | printk(KERN_WARNING "buffer2 not 0: %p.\n", buffer2); | 788 | printk(KERN_WARNING "buffer2 not NULL: %p.\n", buffer2); |
789 | if (buffer1_len > 32768) | 789 | if (buffer1_len > 32768) |
790 | printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len); | 790 | printk(KERN_WARNING "length > 32k: %zu.\n", buffer1_len); |
791 | /* printk("TS callback: %u bytes, %u TS cells @ %p.\n", | 791 | /* printk("TS callback: %u bytes, %u TS cells @ %p.\n", |
diff --git a/drivers/media/dvb/frontends/s5h1409.c b/drivers/media/dvb/frontends/s5h1409.c index 819433485d3b..1a4d8319773c 100644 --- a/drivers/media/dvb/frontends/s5h1409.c +++ b/drivers/media/dvb/frontends/s5h1409.c | |||
@@ -445,7 +445,7 @@ static int s5h1409_set_gpio(struct dvb_frontend* fe, int enable) | |||
445 | s5h1409_readreg(state, 0xe3) | 0x1100); | 445 | s5h1409_readreg(state, 0xe3) | 0x1100); |
446 | else | 446 | else |
447 | return s5h1409_writereg(state, 0xe3, | 447 | return s5h1409_writereg(state, 0xe3, |
448 | s5h1409_readreg(state, 0xe3) & 0xeeff); | 448 | s5h1409_readreg(state, 0xe3) & 0xfeff); |
449 | } | 449 | } |
450 | 450 | ||
451 | static int s5h1409_sleep(struct dvb_frontend* fe, int enable) | 451 | static int s5h1409_sleep(struct dvb_frontend* fe, int enable) |
diff --git a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c index 34e317ced5a3..57b9e3adc8f0 100644 --- a/drivers/media/radio/radio-cadet.c +++ b/drivers/media/radio/radio-cadet.c | |||
@@ -587,6 +587,8 @@ static struct video_device cadet_radio= | |||
587 | .vidioc_s_input = vidioc_s_input, | 587 | .vidioc_s_input = vidioc_s_input, |
588 | }; | 588 | }; |
589 | 589 | ||
590 | #ifdef CONFIG_PNP | ||
591 | |||
590 | static struct pnp_device_id cadet_pnp_devices[] = { | 592 | static struct pnp_device_id cadet_pnp_devices[] = { |
591 | /* ADS Cadet AM/FM Radio Card */ | 593 | /* ADS Cadet AM/FM Radio Card */ |
592 | {.id = "MSM0c24", .driver_data = 0}, | 594 | {.id = "MSM0c24", .driver_data = 0}, |
@@ -621,6 +623,10 @@ static struct pnp_driver cadet_pnp_driver = { | |||
621 | .remove = NULL, | 623 | .remove = NULL, |
622 | }; | 624 | }; |
623 | 625 | ||
626 | #else | ||
627 | static struct pnp_driver cadet_pnp_driver; | ||
628 | #endif | ||
629 | |||
624 | static int cadet_probe(void) | 630 | static int cadet_probe(void) |
625 | { | 631 | { |
626 | static int iovals[8]={0x330,0x332,0x334,0x336,0x338,0x33a,0x33c,0x33e}; | 632 | static int iovals[8]={0x330,0x332,0x334,0x336,0x338,0x33a,0x33c,0x33e}; |
diff --git a/drivers/media/video/adv7170.c b/drivers/media/video/adv7170.c index cbab53fc6243..fea2e723e34b 100644 --- a/drivers/media/video/adv7170.c +++ b/drivers/media/video/adv7170.c | |||
@@ -408,7 +408,7 @@ adv7170_detect_client (struct i2c_adapter *adapter, | |||
408 | return 0; | 408 | return 0; |
409 | 409 | ||
410 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 410 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
411 | if (client == 0) | 411 | if (!client) |
412 | return -ENOMEM; | 412 | return -ENOMEM; |
413 | client->addr = address; | 413 | client->addr = address; |
414 | client->adapter = adapter; | 414 | client->adapter = adapter; |
diff --git a/drivers/media/video/adv7175.c b/drivers/media/video/adv7175.c index 0d0c554bfdf7..10d4d89623f1 100644 --- a/drivers/media/video/adv7175.c +++ b/drivers/media/video/adv7175.c | |||
@@ -426,7 +426,7 @@ adv7175_detect_client (struct i2c_adapter *adapter, | |||
426 | return 0; | 426 | return 0; |
427 | 427 | ||
428 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 428 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
429 | if (client == 0) | 429 | if (!client) |
430 | return -ENOMEM; | 430 | return -ENOMEM; |
431 | client->addr = address; | 431 | client->addr = address; |
432 | client->adapter = adapter; | 432 | client->adapter = adapter; |
diff --git a/drivers/media/video/bt819.c b/drivers/media/video/bt819.c index 12d1b9248be5..e663cc045c41 100644 --- a/drivers/media/video/bt819.c +++ b/drivers/media/video/bt819.c | |||
@@ -524,7 +524,7 @@ bt819_detect_client (struct i2c_adapter *adapter, | |||
524 | return 0; | 524 | return 0; |
525 | 525 | ||
526 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 526 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
527 | if (client == 0) | 527 | if (!client) |
528 | return -ENOMEM; | 528 | return -ENOMEM; |
529 | client->addr = address; | 529 | client->addr = address; |
530 | client->adapter = adapter; | 530 | client->adapter = adapter; |
diff --git a/drivers/media/video/bt856.c b/drivers/media/video/bt856.c index e1028a76c042..7dee2e3235ad 100644 --- a/drivers/media/video/bt856.c +++ b/drivers/media/video/bt856.c | |||
@@ -311,7 +311,7 @@ bt856_detect_client (struct i2c_adapter *adapter, | |||
311 | return 0; | 311 | return 0; |
312 | 312 | ||
313 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 313 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
314 | if (client == 0) | 314 | if (!client) |
315 | return -ENOMEM; | 315 | return -ENOMEM; |
316 | client->addr = address; | 316 | client->addr = address; |
317 | client->adapter = adapter; | 317 | client->adapter = adapter; |
diff --git a/drivers/media/video/bt8xx/bt832.c b/drivers/media/video/bt8xx/bt832.c index a51876137880..f92f06dec0d0 100644 --- a/drivers/media/video/bt8xx/bt832.c +++ b/drivers/media/video/bt8xx/bt832.c | |||
@@ -97,6 +97,11 @@ int bt832_init(struct i2c_client *i2c_client_s) | |||
97 | int rc; | 97 | int rc; |
98 | 98 | ||
99 | buf=kmalloc(65,GFP_KERNEL); | 99 | buf=kmalloc(65,GFP_KERNEL); |
100 | if (!buf) { | ||
101 | v4l_err(&t->client, | ||
102 | "Unable to allocate memory. Detaching.\n"); | ||
103 | return 0; | ||
104 | } | ||
100 | bt832_hexdump(i2c_client_s,buf); | 105 | bt832_hexdump(i2c_client_s,buf); |
101 | 106 | ||
102 | if(buf[0x40] != 0x31) { | 107 | if(buf[0x40] != 0x31) { |
@@ -211,7 +216,12 @@ bt832_command(struct i2c_client *client, unsigned int cmd, void *arg) | |||
211 | switch (cmd) { | 216 | switch (cmd) { |
212 | case BT832_HEXDUMP: { | 217 | case BT832_HEXDUMP: { |
213 | unsigned char *buf; | 218 | unsigned char *buf; |
214 | buf=kmalloc(65,GFP_KERNEL); | 219 | buf = kmalloc(65, GFP_KERNEL); |
220 | if (!buf) { | ||
221 | v4l_err(&t->client, | ||
222 | "Unable to allocate memory\n"); | ||
223 | break; | ||
224 | } | ||
215 | bt832_hexdump(&t->client,buf); | 225 | bt832_hexdump(&t->client,buf); |
216 | kfree(buf); | 226 | kfree(buf); |
217 | } | 227 | } |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index a080c149cc6c..fcf8f2d208a8 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
@@ -1990,7 +1990,7 @@ static int bttv_g_frequency(struct file *file, void *priv, | |||
1990 | if (0 != err) | 1990 | if (0 != err) |
1991 | return err; | 1991 | return err; |
1992 | 1992 | ||
1993 | f->type = V4L2_TUNER_ANALOG_TV; | 1993 | f->type = btv->radio_user ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV; |
1994 | f->frequency = btv->freq; | 1994 | f->frequency = btv->freq; |
1995 | 1995 | ||
1996 | return 0; | 1996 | return 0; |
@@ -2009,7 +2009,8 @@ static int bttv_s_frequency(struct file *file, void *priv, | |||
2009 | 2009 | ||
2010 | if (unlikely(f->tuner != 0)) | 2010 | if (unlikely(f->tuner != 0)) |
2011 | return -EINVAL; | 2011 | return -EINVAL; |
2012 | if (unlikely(f->type != V4L2_TUNER_ANALOG_TV)) | 2012 | if (unlikely(f->type != (btv->radio_user |
2013 | ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV))) | ||
2013 | return -EINVAL; | 2014 | return -EINVAL; |
2014 | mutex_lock(&btv->lock); | 2015 | mutex_lock(&btv->lock); |
2015 | btv->freq = f->frequency; | 2016 | btv->freq = f->frequency; |
@@ -3415,6 +3416,7 @@ static int radio_open(struct inode *inode, struct file *file) | |||
3415 | { | 3416 | { |
3416 | int minor = iminor(inode); | 3417 | int minor = iminor(inode); |
3417 | struct bttv *btv = NULL; | 3418 | struct bttv *btv = NULL; |
3419 | struct bttv_fh *fh; | ||
3418 | unsigned int i; | 3420 | unsigned int i; |
3419 | 3421 | ||
3420 | dprintk("bttv: open minor=%d\n",minor); | 3422 | dprintk("bttv: open minor=%d\n",minor); |
@@ -3429,12 +3431,19 @@ static int radio_open(struct inode *inode, struct file *file) | |||
3429 | return -ENODEV; | 3431 | return -ENODEV; |
3430 | 3432 | ||
3431 | dprintk("bttv%d: open called (radio)\n",btv->c.nr); | 3433 | dprintk("bttv%d: open called (radio)\n",btv->c.nr); |
3434 | |||
3435 | /* allocate per filehandle data */ | ||
3436 | fh = kmalloc(sizeof(*fh), GFP_KERNEL); | ||
3437 | if (NULL == fh) | ||
3438 | return -ENOMEM; | ||
3439 | file->private_data = fh; | ||
3440 | *fh = btv->init; | ||
3441 | v4l2_prio_open(&btv->prio, &fh->prio); | ||
3442 | |||
3432 | mutex_lock(&btv->lock); | 3443 | mutex_lock(&btv->lock); |
3433 | 3444 | ||
3434 | btv->radio_user++; | 3445 | btv->radio_user++; |
3435 | 3446 | ||
3436 | file->private_data = btv; | ||
3437 | |||
3438 | bttv_call_i2c_clients(btv,AUDC_SET_RADIO,NULL); | 3447 | bttv_call_i2c_clients(btv,AUDC_SET_RADIO,NULL); |
3439 | audio_input(btv,TVAUDIO_INPUT_RADIO); | 3448 | audio_input(btv,TVAUDIO_INPUT_RADIO); |
3440 | 3449 | ||
@@ -3444,7 +3453,8 @@ static int radio_open(struct inode *inode, struct file *file) | |||
3444 | 3453 | ||
3445 | static int radio_release(struct inode *inode, struct file *file) | 3454 | static int radio_release(struct inode *inode, struct file *file) |
3446 | { | 3455 | { |
3447 | struct bttv *btv = file->private_data; | 3456 | struct bttv_fh *fh = file->private_data; |
3457 | struct bttv *btv = fh->btv; | ||
3448 | struct rds_command cmd; | 3458 | struct rds_command cmd; |
3449 | 3459 | ||
3450 | btv->radio_user--; | 3460 | btv->radio_user--; |
@@ -3508,8 +3518,12 @@ static int radio_enum_input(struct file *file, void *priv, | |||
3508 | static int radio_g_audio(struct file *file, void *priv, | 3518 | static int radio_g_audio(struct file *file, void *priv, |
3509 | struct v4l2_audio *a) | 3519 | struct v4l2_audio *a) |
3510 | { | 3520 | { |
3521 | if (a->index != 0) | ||
3522 | return -EINVAL; | ||
3523 | |||
3511 | memset(a, 0, sizeof(*a)); | 3524 | memset(a, 0, sizeof(*a)); |
3512 | strcpy(a->name, "Radio"); | 3525 | strcpy(a->name, "Radio"); |
3526 | |||
3513 | return 0; | 3527 | return 0; |
3514 | } | 3528 | } |
3515 | 3529 | ||
@@ -3569,7 +3583,8 @@ static int radio_g_input(struct file *filp, void *priv, unsigned int *i) | |||
3569 | static ssize_t radio_read(struct file *file, char __user *data, | 3583 | static ssize_t radio_read(struct file *file, char __user *data, |
3570 | size_t count, loff_t *ppos) | 3584 | size_t count, loff_t *ppos) |
3571 | { | 3585 | { |
3572 | struct bttv *btv = file->private_data; | 3586 | struct bttv_fh *fh = file->private_data; |
3587 | struct bttv *btv = fh->btv; | ||
3573 | struct rds_command cmd; | 3588 | struct rds_command cmd; |
3574 | cmd.block_count = count/3; | 3589 | cmd.block_count = count/3; |
3575 | cmd.buffer = data; | 3590 | cmd.buffer = data; |
@@ -3583,7 +3598,8 @@ static ssize_t radio_read(struct file *file, char __user *data, | |||
3583 | 3598 | ||
3584 | static unsigned int radio_poll(struct file *file, poll_table *wait) | 3599 | static unsigned int radio_poll(struct file *file, poll_table *wait) |
3585 | { | 3600 | { |
3586 | struct bttv *btv = file->private_data; | 3601 | struct bttv_fh *fh = file->private_data; |
3602 | struct bttv *btv = fh->btv; | ||
3587 | struct rds_command cmd; | 3603 | struct rds_command cmd; |
3588 | cmd.instance = file; | 3604 | cmd.instance = file; |
3589 | cmd.event_list = wait; | 3605 | cmd.event_list = wait; |
@@ -3599,6 +3615,7 @@ static const struct file_operations radio_fops = | |||
3599 | .open = radio_open, | 3615 | .open = radio_open, |
3600 | .read = radio_read, | 3616 | .read = radio_read, |
3601 | .release = radio_release, | 3617 | .release = radio_release, |
3618 | .compat_ioctl = v4l_compat_ioctl32, | ||
3602 | .ioctl = video_ioctl2, | 3619 | .ioctl = video_ioctl2, |
3603 | .llseek = no_llseek, | 3620 | .llseek = no_llseek, |
3604 | .poll = radio_poll, | 3621 | .poll = radio_poll, |
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c index 2d414dad5c31..dfa269838e01 100644 --- a/drivers/media/video/cx23885/cx23885-cards.c +++ b/drivers/media/video/cx23885/cx23885-cards.c | |||
@@ -232,6 +232,7 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data) | |||
232 | case 78631: /* WinTV-HVR1800 (PCIe, OEM, No IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */ | 232 | case 78631: /* WinTV-HVR1800 (PCIe, OEM, No IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */ |
233 | case 79001: /* WinTV-HVR1250 (PCIe, Retail, IR, full height, ATSC and Basic analog */ | 233 | case 79001: /* WinTV-HVR1250 (PCIe, Retail, IR, full height, ATSC and Basic analog */ |
234 | case 79101: /* WinTV-HVR1250 (PCIe, Retail, IR, half height, ATSC and Basic analog */ | 234 | case 79101: /* WinTV-HVR1250 (PCIe, Retail, IR, half height, ATSC and Basic analog */ |
235 | case 79561: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ | ||
235 | case 79571: /* WinTV-HVR1250 (PCIe, OEM, No IR, full height, ATSC and Basic analog */ | 236 | case 79571: /* WinTV-HVR1250 (PCIe, OEM, No IR, full height, ATSC and Basic analog */ |
236 | case 79671: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ | 237 | case 79671: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */ |
237 | break; | 238 | break; |
@@ -347,10 +348,13 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
347 | case CX23885_BOARD_HAUPPAUGE_HVR1250: | 348 | case CX23885_BOARD_HAUPPAUGE_HVR1250: |
348 | case CX23885_BOARD_HAUPPAUGE_HVR1500: | 349 | case CX23885_BOARD_HAUPPAUGE_HVR1500: |
349 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 350 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
351 | if (dev->i2c_bus[0].i2c_rc == 0) | ||
352 | hauppauge_eeprom(dev, eeprom+0x80); | ||
353 | break; | ||
350 | case CX23885_BOARD_HAUPPAUGE_HVR1800: | 354 | case CX23885_BOARD_HAUPPAUGE_HVR1800: |
351 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: | 355 | case CX23885_BOARD_HAUPPAUGE_HVR1800lp: |
352 | if (dev->i2c_bus[0].i2c_rc == 0) | 356 | if (dev->i2c_bus[0].i2c_rc == 0) |
353 | hauppauge_eeprom(dev, eeprom+0x80); | 357 | hauppauge_eeprom(dev, eeprom+0xc0); |
354 | break; | 358 | break; |
355 | } | 359 | } |
356 | 360 | ||
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c index 8e40c7bcc06d..7f10b273598f 100644 --- a/drivers/media/video/cx23885/cx23885-core.c +++ b/drivers/media/video/cx23885/cx23885-core.c | |||
@@ -56,137 +56,6 @@ LIST_HEAD(cx23885_devlist); | |||
56 | 56 | ||
57 | #define NO_SYNC_LINE (-1U) | 57 | #define NO_SYNC_LINE (-1U) |
58 | 58 | ||
59 | /* | ||
60 | * CX23885 Assumptions | ||
61 | * 1 line = 16 bytes of CDT | ||
62 | * cmds size = 80 | ||
63 | * cdt size = 16 * linesize | ||
64 | * iqsize = 64 | ||
65 | * maxlines = 6 | ||
66 | * | ||
67 | * Address Space: | ||
68 | * 0x00000000 0x00008fff FIFO clusters | ||
69 | * 0x00010000 0x000104af Channel Management Data Structures | ||
70 | * 0x000104b0 0x000104ff Free | ||
71 | * 0x00010500 0x000108bf 15 channels * iqsize | ||
72 | * 0x000108c0 0x000108ff Free | ||
73 | * 0x00010900 0x00010e9f IQ's + Cluster Descriptor Tables | ||
74 | * 15 channels * (iqsize + (maxlines * linesize)) | ||
75 | * 0x00010ea0 0x00010xxx Free | ||
76 | */ | ||
77 | |||
78 | static struct sram_channel cx23885_sram_channels[] = { | ||
79 | [SRAM_CH01] = { | ||
80 | .name = "VID A", | ||
81 | .cmds_start = 0x10000, | ||
82 | .ctrl_start = 0x105b0, | ||
83 | .cdt = 0x107b0, | ||
84 | .fifo_start = 0x40, | ||
85 | .fifo_size = 0x2800, | ||
86 | .ptr1_reg = DMA1_PTR1, | ||
87 | .ptr2_reg = DMA1_PTR2, | ||
88 | .cnt1_reg = DMA1_CNT1, | ||
89 | .cnt2_reg = DMA1_CNT2, | ||
90 | .jumponly = 1, | ||
91 | }, | ||
92 | [SRAM_CH02] = { | ||
93 | .name = "ch2", | ||
94 | .cmds_start = 0x0, | ||
95 | .ctrl_start = 0x0, | ||
96 | .cdt = 0x0, | ||
97 | .fifo_start = 0x0, | ||
98 | .fifo_size = 0x0, | ||
99 | .ptr1_reg = DMA2_PTR1, | ||
100 | .ptr2_reg = DMA2_PTR2, | ||
101 | .cnt1_reg = DMA2_CNT1, | ||
102 | .cnt2_reg = DMA2_CNT2, | ||
103 | }, | ||
104 | [SRAM_CH03] = { | ||
105 | .name = "TS1 B", | ||
106 | .cmds_start = 0x100A0, | ||
107 | .ctrl_start = 0x10630, | ||
108 | .cdt = 0x10870, | ||
109 | .fifo_start = 0x5000, | ||
110 | .fifo_size = 0x1000, | ||
111 | .ptr1_reg = DMA3_PTR1, | ||
112 | .ptr2_reg = DMA3_PTR2, | ||
113 | .cnt1_reg = DMA3_CNT1, | ||
114 | .cnt2_reg = DMA3_CNT2, | ||
115 | }, | ||
116 | [SRAM_CH04] = { | ||
117 | .name = "ch4", | ||
118 | .cmds_start = 0x0, | ||
119 | .ctrl_start = 0x0, | ||
120 | .cdt = 0x0, | ||
121 | .fifo_start = 0x0, | ||
122 | .fifo_size = 0x0, | ||
123 | .ptr1_reg = DMA4_PTR1, | ||
124 | .ptr2_reg = DMA4_PTR2, | ||
125 | .cnt1_reg = DMA4_CNT1, | ||
126 | .cnt2_reg = DMA4_CNT2, | ||
127 | }, | ||
128 | [SRAM_CH05] = { | ||
129 | .name = "ch5", | ||
130 | .cmds_start = 0x0, | ||
131 | .ctrl_start = 0x0, | ||
132 | .cdt = 0x0, | ||
133 | .fifo_start = 0x0, | ||
134 | .fifo_size = 0x0, | ||
135 | .ptr1_reg = DMA5_PTR1, | ||
136 | .ptr2_reg = DMA5_PTR2, | ||
137 | .cnt1_reg = DMA5_CNT1, | ||
138 | .cnt2_reg = DMA5_CNT2, | ||
139 | }, | ||
140 | [SRAM_CH06] = { | ||
141 | .name = "TS2 C", | ||
142 | .cmds_start = 0x10140, | ||
143 | .ctrl_start = 0x10680, | ||
144 | .cdt = 0x108d0, | ||
145 | .fifo_start = 0x6000, | ||
146 | .fifo_size = 0x1000, | ||
147 | .ptr1_reg = DMA5_PTR1, | ||
148 | .ptr2_reg = DMA5_PTR2, | ||
149 | .cnt1_reg = DMA5_CNT1, | ||
150 | .cnt2_reg = DMA5_CNT2, | ||
151 | }, | ||
152 | [SRAM_CH07] = { | ||
153 | .name = "ch7", | ||
154 | .cmds_start = 0x0, | ||
155 | .ctrl_start = 0x0, | ||
156 | .cdt = 0x0, | ||
157 | .fifo_start = 0x0, | ||
158 | .fifo_size = 0x0, | ||
159 | .ptr1_reg = DMA6_PTR1, | ||
160 | .ptr2_reg = DMA6_PTR2, | ||
161 | .cnt1_reg = DMA6_CNT1, | ||
162 | .cnt2_reg = DMA6_CNT2, | ||
163 | }, | ||
164 | [SRAM_CH08] = { | ||
165 | .name = "ch8", | ||
166 | .cmds_start = 0x0, | ||
167 | .ctrl_start = 0x0, | ||
168 | .cdt = 0x0, | ||
169 | .fifo_start = 0x0, | ||
170 | .fifo_size = 0x0, | ||
171 | .ptr1_reg = DMA7_PTR1, | ||
172 | .ptr2_reg = DMA7_PTR2, | ||
173 | .cnt1_reg = DMA7_CNT1, | ||
174 | .cnt2_reg = DMA7_CNT2, | ||
175 | }, | ||
176 | [SRAM_CH09] = { | ||
177 | .name = "ch9", | ||
178 | .cmds_start = 0x0, | ||
179 | .ctrl_start = 0x0, | ||
180 | .cdt = 0x0, | ||
181 | .fifo_start = 0x0, | ||
182 | .fifo_size = 0x0, | ||
183 | .ptr1_reg = DMA8_PTR1, | ||
184 | .ptr2_reg = DMA8_PTR2, | ||
185 | .cnt1_reg = DMA8_CNT1, | ||
186 | .cnt2_reg = DMA8_CNT2, | ||
187 | }, | ||
188 | }; | ||
189 | |||
190 | /* FIXME, these allocations will change when | 59 | /* FIXME, these allocations will change when |
191 | * analog arrives. The be reviewed. | 60 | * analog arrives. The be reviewed. |
192 | * CX23887 Assumptions | 61 | * CX23887 Assumptions |
@@ -754,6 +623,7 @@ static int cx23885_dev_setup(struct cx23885_dev *dev) | |||
754 | atomic_inc(&dev->refcount); | 623 | atomic_inc(&dev->refcount); |
755 | 624 | ||
756 | dev->nr = cx23885_devcount++; | 625 | dev->nr = cx23885_devcount++; |
626 | dev->sram_channels = cx23887_sram_channels; | ||
757 | sprintf(dev->name, "cx23885[%d]", dev->nr); | 627 | sprintf(dev->name, "cx23885[%d]", dev->nr); |
758 | 628 | ||
759 | mutex_lock(&devlist); | 629 | mutex_lock(&devlist); |
@@ -763,13 +633,11 @@ static int cx23885_dev_setup(struct cx23885_dev *dev) | |||
763 | /* Configure the internal memory */ | 633 | /* Configure the internal memory */ |
764 | if(dev->pci->device == 0x8880) { | 634 | if(dev->pci->device == 0x8880) { |
765 | dev->bridge = CX23885_BRIDGE_887; | 635 | dev->bridge = CX23885_BRIDGE_887; |
766 | dev->sram_channels = cx23887_sram_channels; | ||
767 | /* Apply a sensible clock frequency for the PCIe bridge */ | 636 | /* Apply a sensible clock frequency for the PCIe bridge */ |
768 | dev->clk_freq = 25000000; | 637 | dev->clk_freq = 25000000; |
769 | } else | 638 | } else |
770 | if(dev->pci->device == 0x8852) { | 639 | if(dev->pci->device == 0x8852) { |
771 | dev->bridge = CX23885_BRIDGE_885; | 640 | dev->bridge = CX23885_BRIDGE_885; |
772 | dev->sram_channels = cx23885_sram_channels; | ||
773 | /* Apply a sensible clock frequency for the PCIe bridge */ | 641 | /* Apply a sensible clock frequency for the PCIe bridge */ |
774 | dev->clk_freq = 28000000; | 642 | dev->clk_freq = 28000000; |
775 | } else | 643 | } else |
diff --git a/drivers/media/video/dpc7146.c b/drivers/media/video/dpc7146.c index 566e479e2629..9ceb6b2f3949 100644 --- a/drivers/media/video/dpc7146.c +++ b/drivers/media/video/dpc7146.c | |||
@@ -131,7 +131,7 @@ static int dpc_probe(struct saa7146_dev* dev) | |||
131 | device_for_each_child(&dpc->i2c_adapter.dev, dpc, dpc_check_clients); | 131 | device_for_each_child(&dpc->i2c_adapter.dev, dpc, dpc_check_clients); |
132 | 132 | ||
133 | /* check if all devices are present */ | 133 | /* check if all devices are present */ |
134 | if( 0 == dpc->saa7111a ) { | 134 | if (!dpc->saa7111a) { |
135 | DEB_D(("dpc_v4l2.o: dpc_attach failed for this device.\n")); | 135 | DEB_D(("dpc_v4l2.o: dpc_attach failed for this device.\n")); |
136 | i2c_del_adapter(&dpc->i2c_adapter); | 136 | i2c_del_adapter(&dpc->i2c_adapter); |
137 | kfree(dpc); | 137 | kfree(dpc); |
diff --git a/drivers/media/video/mt20xx.c b/drivers/media/video/mt20xx.c index 58bab653330f..74fd6a01d4c4 100644 --- a/drivers/media/video/mt20xx.c +++ b/drivers/media/video/mt20xx.c | |||
@@ -647,7 +647,7 @@ struct dvb_frontend *microtune_attach(struct dvb_frontend *fe, | |||
647 | default: | 647 | default: |
648 | tuner_info("microtune %s found, not (yet?) supported, sorry :-/\n", | 648 | tuner_info("microtune %s found, not (yet?) supported, sorry :-/\n", |
649 | name); | 649 | name); |
650 | return 0; | 650 | return NULL; |
651 | } | 651 | } |
652 | 652 | ||
653 | strlcpy(fe->ops.tuner_ops.info.name, name, | 653 | strlcpy(fe->ops.tuner_ops.info.name, name, |
diff --git a/drivers/media/video/mxb.c b/drivers/media/video/mxb.c index add6d0d680be..cb5a510f9251 100644 --- a/drivers/media/video/mxb.c +++ b/drivers/media/video/mxb.c | |||
@@ -221,9 +221,8 @@ static int mxb_probe(struct saa7146_dev* dev) | |||
221 | device_for_each_child(&mxb->i2c_adapter.dev, mxb, mxb_check_clients); | 221 | device_for_each_child(&mxb->i2c_adapter.dev, mxb, mxb_check_clients); |
222 | 222 | ||
223 | /* check if all devices are present */ | 223 | /* check if all devices are present */ |
224 | if( 0 == mxb->tea6420_1 || 0 == mxb->tea6420_2 || 0 == mxb->tea6415c | 224 | if (!mxb->tea6420_1 || !mxb->tea6420_2 || !mxb->tea6415c || |
225 | || 0 == mxb->tda9840 || 0 == mxb->saa7111a || 0 == mxb->tuner ) { | 225 | !mxb->tda9840 || !mxb->saa7111a || !mxb->tuner) { |
226 | |||
227 | printk("mxb: did not find all i2c devices. aborting\n"); | 226 | printk("mxb: did not find all i2c devices. aborting\n"); |
228 | i2c_del_adapter(&mxb->i2c_adapter); | 227 | i2c_del_adapter(&mxb->i2c_adapter); |
229 | kfree(mxb); | 228 | kfree(mxb); |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c index 46f156fb108c..5a3e8d21a38a 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-ctrl.c +++ b/drivers/media/video/pvrusb2/pvrusb2-ctrl.c | |||
@@ -60,7 +60,7 @@ int pvr2_ctrl_set_mask_value(struct pvr2_ctrl *cptr,int mask,int val) | |||
60 | int ret = 0; | 60 | int ret = 0; |
61 | if (!cptr) return -EINVAL; | 61 | if (!cptr) return -EINVAL; |
62 | LOCK_TAKE(cptr->hdw->big_lock); do { | 62 | LOCK_TAKE(cptr->hdw->big_lock); do { |
63 | if (cptr->info->set_value != 0) { | 63 | if (cptr->info->set_value) { |
64 | if (cptr->info->type == pvr2_ctl_bitmask) { | 64 | if (cptr->info->type == pvr2_ctl_bitmask) { |
65 | mask &= cptr->info->def.type_bitmask.valid_bits; | 65 | mask &= cptr->info->def.type_bitmask.valid_bits; |
66 | } else if (cptr->info->type == pvr2_ctl_int) { | 66 | } else if (cptr->info->type == pvr2_ctl_int) { |
@@ -265,7 +265,7 @@ unsigned int pvr2_ctrl_get_v4lflags(struct pvr2_ctrl *cptr) | |||
265 | int pvr2_ctrl_is_writable(struct pvr2_ctrl *cptr) | 265 | int pvr2_ctrl_is_writable(struct pvr2_ctrl *cptr) |
266 | { | 266 | { |
267 | if (!cptr) return 0; | 267 | if (!cptr) return 0; |
268 | return cptr->info->set_value != 0; | 268 | return cptr->info->set_value != NULL; |
269 | } | 269 | } |
270 | 270 | ||
271 | 271 | ||
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c index 4df6d6d936fc..fe9991c10cf4 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c | |||
@@ -155,6 +155,41 @@ static const struct pvr2_device_desc pvr2_device_onair_usb2 = { | |||
155 | 155 | ||
156 | 156 | ||
157 | /*------------------------------------------------------------------------*/ | 157 | /*------------------------------------------------------------------------*/ |
158 | /* Hauppauge PVR-USB2 Model 73xxx */ | ||
159 | |||
160 | static const char *pvr2_client_73xxx[] = { | ||
161 | "cx25840", | ||
162 | "tuner", | ||
163 | }; | ||
164 | |||
165 | static const char *pvr2_fw1_names_73xxx[] = { | ||
166 | "v4l-pvrusb2-73xxx-01.fw", | ||
167 | }; | ||
168 | |||
169 | static const struct pvr2_device_desc pvr2_device_73xxx = { | ||
170 | .description = "WinTV PVR USB2 Model Category 73xxxx", | ||
171 | .shortname = "73xxx", | ||
172 | .client_modules.lst = pvr2_client_73xxx, | ||
173 | .client_modules.cnt = ARRAY_SIZE(pvr2_client_73xxx), | ||
174 | .fx2_firmware.lst = pvr2_fw1_names_73xxx, | ||
175 | .fx2_firmware.cnt = ARRAY_SIZE(pvr2_fw1_names_73xxx), | ||
176 | .flag_has_cx25840 = !0, | ||
177 | .flag_has_hauppauge_rom = !0, | ||
178 | #if 0 | ||
179 | .flag_has_analogtuner = !0, | ||
180 | .flag_has_composite = !0, | ||
181 | .flag_has_svideo = !0, | ||
182 | .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, | ||
183 | .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE, | ||
184 | .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE, | ||
185 | #else | ||
186 | .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, | ||
187 | #endif | ||
188 | }; | ||
189 | |||
190 | |||
191 | |||
192 | /*------------------------------------------------------------------------*/ | ||
158 | /* Hauppauge PVR-USB2 Model 75xxx */ | 193 | /* Hauppauge PVR-USB2 Model 75xxx */ |
159 | 194 | ||
160 | static const char *pvr2_client_75xxx[] = { | 195 | static const char *pvr2_client_75xxx[] = { |
@@ -198,8 +233,12 @@ struct usb_device_id pvr2_device_table[] = { | |||
198 | { USB_DEVICE(0x11ba, 0x1001), | 233 | { USB_DEVICE(0x11ba, 0x1001), |
199 | .driver_info = (kernel_ulong_t)&pvr2_device_onair_usb2}, | 234 | .driver_info = (kernel_ulong_t)&pvr2_device_onair_usb2}, |
200 | #endif | 235 | #endif |
236 | { USB_DEVICE(0x2040, 0x7300), | ||
237 | .driver_info = (kernel_ulong_t)&pvr2_device_73xxx}, | ||
201 | { USB_DEVICE(0x2040, 0x7500), | 238 | { USB_DEVICE(0x2040, 0x7500), |
202 | .driver_info = (kernel_ulong_t)&pvr2_device_75xxx}, | 239 | .driver_info = (kernel_ulong_t)&pvr2_device_75xxx}, |
240 | { USB_DEVICE(0x2040, 0x7501), | ||
241 | .driver_info = (kernel_ulong_t)&pvr2_device_75xxx}, | ||
203 | { } | 242 | { } |
204 | }; | 243 | }; |
205 | 244 | ||
diff --git a/drivers/media/video/pvrusb2/pvrusb2-hdw.c b/drivers/media/video/pvrusb2/pvrusb2-hdw.c index 41ae980405ed..d6955fa39598 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-hdw.c +++ b/drivers/media/video/pvrusb2/pvrusb2-hdw.c | |||
@@ -2291,7 +2291,7 @@ static int pvr2_hdw_commit_setup(struct pvr2_hdw *hdw) | |||
2291 | 2291 | ||
2292 | for (idx = 0; idx < hdw->control_cnt; idx++) { | 2292 | for (idx = 0; idx < hdw->control_cnt; idx++) { |
2293 | cptr = hdw->controls + idx; | 2293 | cptr = hdw->controls + idx; |
2294 | if (cptr->info->is_dirty == 0) continue; | 2294 | if (!cptr->info->is_dirty) continue; |
2295 | if (!cptr->info->is_dirty(cptr)) continue; | 2295 | if (!cptr->info->is_dirty(cptr)) continue; |
2296 | commit_flag = !0; | 2296 | commit_flag = !0; |
2297 | 2297 | ||
@@ -2646,7 +2646,7 @@ void pvr2_hdw_cpufw_set_enabled(struct pvr2_hdw *hdw, | |||
2646 | u16 address; | 2646 | u16 address; |
2647 | unsigned int pipe; | 2647 | unsigned int pipe; |
2648 | LOCK_TAKE(hdw->big_lock); do { | 2648 | LOCK_TAKE(hdw->big_lock); do { |
2649 | if ((hdw->fw_buffer == 0) == !enable_flag) break; | 2649 | if ((hdw->fw_buffer == NULL) == !enable_flag) break; |
2650 | 2650 | ||
2651 | if (!enable_flag) { | 2651 | if (!enable_flag) { |
2652 | pvr2_trace(PVR2_TRACE_FIRMWARE, | 2652 | pvr2_trace(PVR2_TRACE_FIRMWARE, |
@@ -2715,7 +2715,7 @@ void pvr2_hdw_cpufw_set_enabled(struct pvr2_hdw *hdw, | |||
2715 | /* Return true if we're in a mode for retrieval CPU firmware */ | 2715 | /* Return true if we're in a mode for retrieval CPU firmware */ |
2716 | int pvr2_hdw_cpufw_get_enabled(struct pvr2_hdw *hdw) | 2716 | int pvr2_hdw_cpufw_get_enabled(struct pvr2_hdw *hdw) |
2717 | { | 2717 | { |
2718 | return hdw->fw_buffer != 0; | 2718 | return hdw->fw_buffer != NULL; |
2719 | } | 2719 | } |
2720 | 2720 | ||
2721 | 2721 | ||
diff --git a/drivers/media/video/pvrusb2/pvrusb2-io.c b/drivers/media/video/pvrusb2/pvrusb2-io.c index ce3c8982ffe0..a9889ff96ecc 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-io.c +++ b/drivers/media/video/pvrusb2/pvrusb2-io.c | |||
@@ -563,7 +563,7 @@ void pvr2_stream_kill(struct pvr2_stream *sp) | |||
563 | struct pvr2_buffer *bp; | 563 | struct pvr2_buffer *bp; |
564 | mutex_lock(&sp->mutex); do { | 564 | mutex_lock(&sp->mutex); do { |
565 | pvr2_stream_internal_flush(sp); | 565 | pvr2_stream_internal_flush(sp); |
566 | while ((bp = pvr2_stream_get_ready_buffer(sp)) != 0) { | 566 | while ((bp = pvr2_stream_get_ready_buffer(sp)) != NULL) { |
567 | pvr2_buffer_set_idle(bp); | 567 | pvr2_buffer_set_idle(bp); |
568 | } | 568 | } |
569 | if (sp->buffer_total_count != sp->buffer_target_count) { | 569 | if (sp->buffer_total_count != sp->buffer_target_count) { |
diff --git a/drivers/media/video/pvrusb2/pvrusb2-ioread.c b/drivers/media/video/pvrusb2/pvrusb2-ioread.c index f782418afa45..c572212c9f15 100644 --- a/drivers/media/video/pvrusb2/pvrusb2-ioread.c +++ b/drivers/media/video/pvrusb2/pvrusb2-ioread.c | |||
@@ -165,7 +165,7 @@ static int pvr2_ioread_start(struct pvr2_ioread *cp) | |||
165 | if (!(cp->stream)) return 0; | 165 | if (!(cp->stream)) return 0; |
166 | pvr2_trace(PVR2_TRACE_START_STOP, | 166 | pvr2_trace(PVR2_TRACE_START_STOP, |
167 | "/*---TRACE_READ---*/ pvr2_ioread_start id=%p",cp); | 167 | "/*---TRACE_READ---*/ pvr2_ioread_start id=%p",cp); |
168 | while ((bp = pvr2_stream_get_idle_buffer(cp->stream)) != 0) { | 168 | while ((bp = pvr2_stream_get_idle_buffer(cp->stream)) != NULL) { |
169 | stat = pvr2_buffer_queue(bp); | 169 | stat = pvr2_buffer_queue(bp); |
170 | if (stat < 0) { | 170 | if (stat < 0) { |
171 | pvr2_trace(PVR2_TRACE_DATA_FLOW, | 171 | pvr2_trace(PVR2_TRACE_DATA_FLOW, |
diff --git a/drivers/media/video/pwc/pwc-if.c b/drivers/media/video/pwc/pwc-if.c index f991d72fe108..e0a453a6543d 100644 --- a/drivers/media/video/pwc/pwc-if.c +++ b/drivers/media/video/pwc/pwc-if.c | |||
@@ -915,7 +915,7 @@ static void pwc_iso_stop(struct pwc_device *pdev) | |||
915 | struct urb *urb; | 915 | struct urb *urb; |
916 | 916 | ||
917 | urb = pdev->sbuf[i].urb; | 917 | urb = pdev->sbuf[i].urb; |
918 | if (urb != 0) { | 918 | if (urb) { |
919 | PWC_DEBUG_MEMORY("Unlinking URB %p\n", urb); | 919 | PWC_DEBUG_MEMORY("Unlinking URB %p\n", urb); |
920 | usb_kill_urb(urb); | 920 | usb_kill_urb(urb); |
921 | } | 921 | } |
@@ -931,7 +931,7 @@ static void pwc_iso_free(struct pwc_device *pdev) | |||
931 | struct urb *urb; | 931 | struct urb *urb; |
932 | 932 | ||
933 | urb = pdev->sbuf[i].urb; | 933 | urb = pdev->sbuf[i].urb; |
934 | if (urb != 0) { | 934 | if (urb) { |
935 | PWC_DEBUG_MEMORY("Freeing URB\n"); | 935 | PWC_DEBUG_MEMORY("Freeing URB\n"); |
936 | usb_free_urb(urb); | 936 | usb_free_urb(urb); |
937 | pdev->sbuf[i].urb = NULL; | 937 | pdev->sbuf[i].urb = NULL; |
@@ -1759,8 +1759,7 @@ static int usb_pwc_probe(struct usb_interface *intf, const struct usb_device_id | |||
1759 | 1759 | ||
1760 | /* Allocate video_device structure */ | 1760 | /* Allocate video_device structure */ |
1761 | pdev->vdev = video_device_alloc(); | 1761 | pdev->vdev = video_device_alloc(); |
1762 | if (pdev->vdev == 0) | 1762 | if (!pdev->vdev) { |
1763 | { | ||
1764 | PWC_ERROR("Err, cannot allocate video_device struture. Failing probe."); | 1763 | PWC_ERROR("Err, cannot allocate video_device struture. Failing probe."); |
1765 | kfree(pdev); | 1764 | kfree(pdev); |
1766 | return -ENOMEM; | 1765 | return -ENOMEM; |
diff --git a/drivers/media/video/saa7110.c b/drivers/media/video/saa7110.c index 061134a7ba9f..1df2602cd184 100644 --- a/drivers/media/video/saa7110.c +++ b/drivers/media/video/saa7110.c | |||
@@ -488,7 +488,7 @@ saa7110_detect_client (struct i2c_adapter *adapter, | |||
488 | return 0; | 488 | return 0; |
489 | 489 | ||
490 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 490 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
491 | if (client == 0) | 491 | if (!client) |
492 | return -ENOMEM; | 492 | return -ENOMEM; |
493 | client->addr = address; | 493 | client->addr = address; |
494 | client->adapter = adapter; | 494 | client->adapter = adapter; |
@@ -496,7 +496,7 @@ saa7110_detect_client (struct i2c_adapter *adapter, | |||
496 | strlcpy(I2C_NAME(client), "saa7110", sizeof(I2C_NAME(client))); | 496 | strlcpy(I2C_NAME(client), "saa7110", sizeof(I2C_NAME(client))); |
497 | 497 | ||
498 | decoder = kzalloc(sizeof(struct saa7110), GFP_KERNEL); | 498 | decoder = kzalloc(sizeof(struct saa7110), GFP_KERNEL); |
499 | if (decoder == 0) { | 499 | if (!decoder) { |
500 | kfree(client); | 500 | kfree(client); |
501 | return -ENOMEM; | 501 | return -ENOMEM; |
502 | } | 502 | } |
diff --git a/drivers/media/video/saa7111.c b/drivers/media/video/saa7111.c index 7ae2d646d000..a0772c53bb1f 100644 --- a/drivers/media/video/saa7111.c +++ b/drivers/media/video/saa7111.c | |||
@@ -502,7 +502,7 @@ saa7111_detect_client (struct i2c_adapter *adapter, | |||
502 | return 0; | 502 | return 0; |
503 | 503 | ||
504 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 504 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
505 | if (client == 0) | 505 | if (!client) |
506 | return -ENOMEM; | 506 | return -ENOMEM; |
507 | client->addr = address; | 507 | client->addr = address; |
508 | client->adapter = adapter; | 508 | client->adapter = adapter; |
diff --git a/drivers/media/video/saa7114.c b/drivers/media/video/saa7114.c index 677df51de1a9..bf91a4faa706 100644 --- a/drivers/media/video/saa7114.c +++ b/drivers/media/video/saa7114.c | |||
@@ -841,7 +841,7 @@ saa7114_detect_client (struct i2c_adapter *adapter, | |||
841 | return 0; | 841 | return 0; |
842 | 842 | ||
843 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 843 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
844 | if (client == 0) | 844 | if (!client) |
845 | return -ENOMEM; | 845 | return -ENOMEM; |
846 | client->addr = address; | 846 | client->addr = address; |
847 | client->adapter = adapter; | 847 | client->adapter = adapter; |
diff --git a/drivers/media/video/saa7185.c b/drivers/media/video/saa7185.c index 66cc92c0ea66..41f70440fd3b 100644 --- a/drivers/media/video/saa7185.c +++ b/drivers/media/video/saa7185.c | |||
@@ -403,7 +403,7 @@ saa7185_detect_client (struct i2c_adapter *adapter, | |||
403 | return 0; | 403 | return 0; |
404 | 404 | ||
405 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 405 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
406 | if (client == 0) | 406 | if (!client) |
407 | return -ENOMEM; | 407 | return -ENOMEM; |
408 | client->addr = address; | 408 | client->addr = address; |
409 | client->adapter = adapter; | 409 | client->adapter = adapter; |
diff --git a/drivers/media/video/tda9840.c b/drivers/media/video/tda9840.c index ef494febb5e4..bdca5d278978 100644 --- a/drivers/media/video/tda9840.c +++ b/drivers/media/video/tda9840.c | |||
@@ -172,7 +172,7 @@ static int detect(struct i2c_adapter *adapter, int address, int kind) | |||
172 | 172 | ||
173 | /* allocate memory for client structure */ | 173 | /* allocate memory for client structure */ |
174 | client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); | 174 | client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); |
175 | if (0 == client) { | 175 | if (!client) { |
176 | printk("not enough kernel memory\n"); | 176 | printk("not enough kernel memory\n"); |
177 | return -ENOMEM; | 177 | return -ENOMEM; |
178 | } | 178 | } |
diff --git a/drivers/media/video/tea6415c.c b/drivers/media/video/tea6415c.c index 523df0b8cc63..df2fad9f391e 100644 --- a/drivers/media/video/tea6415c.c +++ b/drivers/media/video/tea6415c.c | |||
@@ -64,7 +64,7 @@ static int detect(struct i2c_adapter *adapter, int address, int kind) | |||
64 | 64 | ||
65 | /* allocate memory for client structure */ | 65 | /* allocate memory for client structure */ |
66 | client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); | 66 | client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); |
67 | if (0 == client) { | 67 | if (!client) { |
68 | return -ENOMEM; | 68 | return -ENOMEM; |
69 | } | 69 | } |
70 | 70 | ||
diff --git a/drivers/media/video/tea6420.c b/drivers/media/video/tea6420.c index ca05cd655087..4ff6c63f7237 100644 --- a/drivers/media/video/tea6420.c +++ b/drivers/media/video/tea6420.c | |||
@@ -101,7 +101,7 @@ static int tea6420_detect(struct i2c_adapter *adapter, int address, int kind) | |||
101 | 101 | ||
102 | /* allocate memory for client structure */ | 102 | /* allocate memory for client structure */ |
103 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); | 103 | client = kzalloc(sizeof(struct i2c_client), GFP_KERNEL); |
104 | if (0 == client) { | 104 | if (!client) { |
105 | return -ENOMEM; | 105 | return -ENOMEM; |
106 | } | 106 | } |
107 | 107 | ||
diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c index d28318cb2b8d..b6e24e714a23 100644 --- a/drivers/media/video/tvp5150.c +++ b/drivers/media/video/tvp5150.c | |||
@@ -1072,12 +1072,12 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter, | |||
1072 | return 0; | 1072 | return 0; |
1073 | 1073 | ||
1074 | c = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); | 1074 | c = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); |
1075 | if (c == 0) | 1075 | if (!c) |
1076 | return -ENOMEM; | 1076 | return -ENOMEM; |
1077 | memcpy(c, &client_template, sizeof(struct i2c_client)); | 1077 | memcpy(c, &client_template, sizeof(struct i2c_client)); |
1078 | 1078 | ||
1079 | core = kzalloc(sizeof(struct tvp5150), GFP_KERNEL); | 1079 | core = kzalloc(sizeof(struct tvp5150), GFP_KERNEL); |
1080 | if (core == 0) { | 1080 | if (!core) { |
1081 | kfree(c); | 1081 | kfree(c); |
1082 | return -ENOMEM; | 1082 | return -ENOMEM; |
1083 | } | 1083 | } |
diff --git a/drivers/media/video/v4l2-int-device.c b/drivers/media/video/v4l2-int-device.c index a545dcaf857f..0e4549922f26 100644 --- a/drivers/media/video/v4l2-int-device.c +++ b/drivers/media/video/v4l2-int-device.c | |||
@@ -156,3 +156,5 @@ int v4l2_int_ioctl_1(struct v4l2_int_device *d, int cmd, void *arg) | |||
156 | find_ioctl(d->u.slave, cmd, | 156 | find_ioctl(d->u.slave, cmd, |
157 | (v4l2_int_ioctl_func *)no_such_ioctl_1))(d, arg); | 157 | (v4l2_int_ioctl_func *)no_such_ioctl_1))(d, arg); |
158 | } | 158 | } |
159 | |||
160 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/media/video/zoran_driver.c b/drivers/media/video/zoran_driver.c index dd3d7d2c8b0e..fea4946ee713 100644 --- a/drivers/media/video/zoran_driver.c +++ b/drivers/media/video/zoran_driver.c | |||
@@ -339,7 +339,7 @@ v4l_fbuffer_alloc (struct file *file) | |||
339 | /* Use kmalloc */ | 339 | /* Use kmalloc */ |
340 | 340 | ||
341 | mem = kmalloc(fh->v4l_buffers.buffer_size, GFP_KERNEL); | 341 | mem = kmalloc(fh->v4l_buffers.buffer_size, GFP_KERNEL); |
342 | if (mem == 0) { | 342 | if (!mem) { |
343 | dprintk(1, | 343 | dprintk(1, |
344 | KERN_ERR | 344 | KERN_ERR |
345 | "%s: v4l_fbuffer_alloc() - kmalloc for V4L buf %d failed\n", | 345 | "%s: v4l_fbuffer_alloc() - kmalloc for V4L buf %d failed\n", |
diff --git a/drivers/media/video/zr364xx.c b/drivers/media/video/zr364xx.c index 1b44784d0efb..04949c823654 100644 --- a/drivers/media/video/zr364xx.c +++ b/drivers/media/video/zr364xx.c | |||
@@ -390,7 +390,7 @@ static int read_frame(struct zr364xx_camera *cam, int framenum) | |||
390 | } | 390 | } |
391 | 391 | ||
392 | 392 | ||
393 | static ssize_t zr364xx_read(struct file *file, char *buf, size_t cnt, | 393 | static ssize_t zr364xx_read(struct file *file, char __user *buf, size_t cnt, |
394 | loff_t * ppos) | 394 | loff_t * ppos) |
395 | { | 395 | { |
396 | unsigned long count = cnt; | 396 | unsigned long count = cnt; |
diff --git a/drivers/memstick/host/tifm_ms.c b/drivers/memstick/host/tifm_ms.c index eb150dfb637f..8577de4ebb0e 100644 --- a/drivers/memstick/host/tifm_ms.c +++ b/drivers/memstick/host/tifm_ms.c | |||
@@ -182,7 +182,7 @@ static unsigned int tifm_ms_transfer_data(struct tifm_ms *host) | |||
182 | struct tifm_dev *sock = host->dev; | 182 | struct tifm_dev *sock = host->dev; |
183 | unsigned int length; | 183 | unsigned int length; |
184 | unsigned int off; | 184 | unsigned int off; |
185 | unsigned int t_size, p_off, p_cnt; | 185 | unsigned int t_size, p_cnt; |
186 | unsigned char *buf; | 186 | unsigned char *buf; |
187 | struct page *pg; | 187 | struct page *pg; |
188 | unsigned long flags = 0; | 188 | unsigned long flags = 0; |
@@ -198,6 +198,8 @@ static unsigned int tifm_ms_transfer_data(struct tifm_ms *host) | |||
198 | host->block_pos); | 198 | host->block_pos); |
199 | 199 | ||
200 | while (length) { | 200 | while (length) { |
201 | unsigned int uninitialized_var(p_off); | ||
202 | |||
201 | if (host->req->long_data) { | 203 | if (host->req->long_data) { |
202 | pg = nth_page(sg_page(&host->req->sg), | 204 | pg = nth_page(sg_page(&host->req->sg), |
203 | off >> PAGE_SHIFT); | 205 | off >> PAGE_SHIFT); |
diff --git a/drivers/mfd/asic3.c b/drivers/mfd/asic3.c index 63fb1ff3ad10..f6f2d960cadb 100644 --- a/drivers/mfd/asic3.c +++ b/drivers/mfd/asic3.c | |||
@@ -28,14 +28,14 @@ | |||
28 | static inline void asic3_write_register(struct asic3 *asic, | 28 | static inline void asic3_write_register(struct asic3 *asic, |
29 | unsigned int reg, u32 value) | 29 | unsigned int reg, u32 value) |
30 | { | 30 | { |
31 | iowrite16(value, (unsigned long)asic->mapping + | 31 | iowrite16(value, asic->mapping + |
32 | (reg >> asic->bus_shift)); | 32 | (reg >> asic->bus_shift)); |
33 | } | 33 | } |
34 | 34 | ||
35 | static inline u32 asic3_read_register(struct asic3 *asic, | 35 | static inline u32 asic3_read_register(struct asic3 *asic, |
36 | unsigned int reg) | 36 | unsigned int reg) |
37 | { | 37 | { |
38 | return ioread16((unsigned long)asic->mapping + | 38 | return ioread16(asic->mapping + |
39 | (reg >> asic->bus_shift)); | 39 | (reg >> asic->bus_shift)); |
40 | } | 40 | } |
41 | 41 | ||
diff --git a/drivers/misc/fujitsu-laptop.c b/drivers/misc/fujitsu-laptop.c index 1cfd7f3f1294..e2e7c05a147b 100644 --- a/drivers/misc/fujitsu-laptop.c +++ b/drivers/misc/fujitsu-laptop.c | |||
@@ -231,7 +231,7 @@ static int acpi_fujitsu_remove(struct acpi_device *device, int type) | |||
231 | 231 | ||
232 | if (!device || !acpi_driver_data(device)) | 232 | if (!device || !acpi_driver_data(device)) |
233 | return -EINVAL; | 233 | return -EINVAL; |
234 | fujitsu->acpi_handle = 0; | 234 | fujitsu->acpi_handle = NULL; |
235 | 235 | ||
236 | return 0; | 236 | return 0; |
237 | } | 237 | } |
diff --git a/drivers/misc/ibmasm/module.c b/drivers/misc/ibmasm/module.c index 4f9d4a9da983..b5f6add34b0b 100644 --- a/drivers/misc/ibmasm/module.c +++ b/drivers/misc/ibmasm/module.c | |||
@@ -106,7 +106,7 @@ static int __devinit ibmasm_init_one(struct pci_dev *pdev, const struct pci_devi | |||
106 | sp->irq = pdev->irq; | 106 | sp->irq = pdev->irq; |
107 | sp->base_address = ioremap(pci_resource_start(pdev, 0), | 107 | sp->base_address = ioremap(pci_resource_start(pdev, 0), |
108 | pci_resource_len(pdev, 0)); | 108 | pci_resource_len(pdev, 0)); |
109 | if (sp->base_address == 0) { | 109 | if (!sp->base_address) { |
110 | dev_err(sp->dev, "Failed to ioremap pci memory\n"); | 110 | dev_err(sp->dev, "Failed to ioremap pci memory\n"); |
111 | result = -ENODEV; | 111 | result = -ENODEV; |
112 | goto error_ioremap; | 112 | goto error_ioremap; |
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c index c884730c5eaf..1bfe5d16963b 100644 --- a/drivers/misc/lkdtm.c +++ b/drivers/misc/lkdtm.c | |||
@@ -197,7 +197,7 @@ static int lkdtm_parse_commandline(void) | |||
197 | { | 197 | { |
198 | int i; | 198 | int i; |
199 | 199 | ||
200 | if (cpoint_name == INVALID || cpoint_type == NONE || | 200 | if (cpoint_name == NULL || cpoint_type == NULL || |
201 | cpoint_count < 1 || recur_count < 1) | 201 | cpoint_count < 1 || recur_count < 1) |
202 | return -EINVAL; | 202 | return -EINVAL; |
203 | 203 | ||
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c index 47794d23a42e..0080452531d6 100644 --- a/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/drivers/mtd/chips/cfi_cmdset_0001.c | |||
@@ -718,7 +718,7 @@ static int chip_ready (struct map_info *map, struct flchip *chip, unsigned long | |||
718 | /* Someone else might have been playing with it. */ | 718 | /* Someone else might have been playing with it. */ |
719 | return -EAGAIN; | 719 | return -EAGAIN; |
720 | } | 720 | } |
721 | 721 | /* Fall through */ | |
722 | case FL_READY: | 722 | case FL_READY: |
723 | case FL_CFI_QUERY: | 723 | case FL_CFI_QUERY: |
724 | case FL_JEDEC_QUERY: | 724 | case FL_JEDEC_QUERY: |
@@ -778,14 +778,14 @@ static int chip_ready (struct map_info *map, struct flchip *chip, unsigned long | |||
778 | chip->state = FL_READY; | 778 | chip->state = FL_READY; |
779 | return 0; | 779 | return 0; |
780 | 780 | ||
781 | case FL_SHUTDOWN: | ||
782 | /* The machine is rebooting now,so no one can get chip anymore */ | ||
783 | return -EIO; | ||
781 | case FL_POINT: | 784 | case FL_POINT: |
782 | /* Only if there's no operation suspended... */ | 785 | /* Only if there's no operation suspended... */ |
783 | if (mode == FL_READY && chip->oldstate == FL_READY) | 786 | if (mode == FL_READY && chip->oldstate == FL_READY) |
784 | return 0; | 787 | return 0; |
785 | 788 | /* Fall through */ | |
786 | case FL_SHUTDOWN: | ||
787 | /* The machine is rebooting now,so no one can get chip anymore */ | ||
788 | return -EIO; | ||
789 | default: | 789 | default: |
790 | sleep: | 790 | sleep: |
791 | set_current_state(TASK_UNINTERRUPTIBLE); | 791 | set_current_state(TASK_UNINTERRUPTIBLE); |
diff --git a/drivers/mtd/chips/cfi_cmdset_0002.c b/drivers/mtd/chips/cfi_cmdset_0002.c index d072e87ce4e2..458d477614d6 100644 --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c | |||
@@ -1763,6 +1763,7 @@ static void cfi_amdstd_sync (struct mtd_info *mtd) | |||
1763 | 1763 | ||
1764 | default: | 1764 | default: |
1765 | /* Not an idle state */ | 1765 | /* Not an idle state */ |
1766 | set_current_state(TASK_UNINTERRUPTIBLE); | ||
1766 | add_wait_queue(&chip->wq, &wait); | 1767 | add_wait_queue(&chip->wq, &wait); |
1767 | 1768 | ||
1768 | spin_unlock(chip->mutex); | 1769 | spin_unlock(chip->mutex); |
diff --git a/drivers/mtd/chips/cfi_cmdset_0020.c b/drivers/mtd/chips/cfi_cmdset_0020.c index b344ff858b2d..492e2ab27420 100644 --- a/drivers/mtd/chips/cfi_cmdset_0020.c +++ b/drivers/mtd/chips/cfi_cmdset_0020.c | |||
@@ -1015,6 +1015,7 @@ static void cfi_staa_sync (struct mtd_info *mtd) | |||
1015 | 1015 | ||
1016 | default: | 1016 | default: |
1017 | /* Not an idle state */ | 1017 | /* Not an idle state */ |
1018 | set_current_state(TASK_UNINTERRUPTIBLE); | ||
1018 | add_wait_queue(&chip->wq, &wait); | 1019 | add_wait_queue(&chip->wq, &wait); |
1019 | 1020 | ||
1020 | spin_unlock_bh(chip->mutex); | 1021 | spin_unlock_bh(chip->mutex); |
diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c index f00e04efbe28..bc4649a17b9d 100644 --- a/drivers/mtd/maps/physmap.c +++ b/drivers/mtd/maps/physmap.c | |||
@@ -202,9 +202,8 @@ static int physmap_flash_suspend(struct platform_device *dev, pm_message_t state | |||
202 | int ret = 0; | 202 | int ret = 0; |
203 | int i; | 203 | int i; |
204 | 204 | ||
205 | if (info) | 205 | for (i = 0; i < MAX_RESOURCES && info->mtd[i]; i++) |
206 | for (i = 0; i < MAX_RESOURCES; i++) | 206 | ret |= info->mtd[i]->suspend(info->mtd[i]); |
207 | ret |= info->mtd[i]->suspend(info->mtd[i]); | ||
208 | 207 | ||
209 | return ret; | 208 | return ret; |
210 | } | 209 | } |
@@ -214,9 +213,9 @@ static int physmap_flash_resume(struct platform_device *dev) | |||
214 | struct physmap_flash_info *info = platform_get_drvdata(dev); | 213 | struct physmap_flash_info *info = platform_get_drvdata(dev); |
215 | int i; | 214 | int i; |
216 | 215 | ||
217 | if (info) | 216 | for (i = 0; i < MAX_RESOURCES && info->mtd[i]; i++) |
218 | for (i = 0; i < MAX_RESOURCES; i++) | 217 | info->mtd[i]->resume(info->mtd[i]); |
219 | info->mtd[i]->resume(info->mtd[i]); | 218 | |
220 | return 0; | 219 | return 0; |
221 | } | 220 | } |
222 | 221 | ||
@@ -225,8 +224,8 @@ static void physmap_flash_shutdown(struct platform_device *dev) | |||
225 | struct physmap_flash_info *info = platform_get_drvdata(dev); | 224 | struct physmap_flash_info *info = platform_get_drvdata(dev); |
226 | int i; | 225 | int i; |
227 | 226 | ||
228 | for (i = 0; i < MAX_RESOURCES; i++) | 227 | for (i = 0; i < MAX_RESOURCES && info->mtd[i]; i++) |
229 | if (info && info->mtd[i]->suspend(info->mtd[i]) == 0) | 228 | if (info->mtd[i]->suspend(info->mtd[i]) == 0) |
230 | info->mtd[i]->resume(info->mtd[i]); | 229 | info->mtd[i]->resume(info->mtd[i]); |
231 | } | 230 | } |
232 | #else | 231 | #else |
diff --git a/drivers/mtd/nand/rtc_from4.c b/drivers/mtd/nand/rtc_from4.c index 9189ec8f243e..0f6ac250f434 100644 --- a/drivers/mtd/nand/rtc_from4.c +++ b/drivers/mtd/nand/rtc_from4.c | |||
@@ -460,7 +460,7 @@ static int rtc_from4_errstat(struct mtd_info *mtd, struct nand_chip *this, | |||
460 | er_stat |= 1 << 1; | 460 | er_stat |= 1 << 1; |
461 | kfree(buf); | 461 | kfree(buf); |
462 | } | 462 | } |
463 | 463 | out: | |
464 | rtn = status; | 464 | rtn = status; |
465 | if (er_stat == 0) { /* if ECC is available */ | 465 | if (er_stat == 0) { /* if ECC is available */ |
466 | rtn = (status & ~NAND_STATUS_FAIL); /* clear the error bit */ | 466 | rtn = (status & ~NAND_STATUS_FAIL); /* clear the error bit */ |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 124d29f5fa0c..0b44daa36f91 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2635,7 +2635,7 @@ config NIU | |||
2635 | 2635 | ||
2636 | config PASEMI_MAC | 2636 | config PASEMI_MAC |
2637 | tristate "PA Semi 1/10Gbit MAC" | 2637 | tristate "PA Semi 1/10Gbit MAC" |
2638 | depends on PPC64 && PCI | 2638 | depends on PPC_PASEMI && PCI |
2639 | select PHYLIB | 2639 | select PHYLIB |
2640 | select INET_LRO | 2640 | select INET_LRO |
2641 | help | 2641 | help |
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index ea2a2b548e3c..25f1337cd02c 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -2082,6 +2082,11 @@ static int __devinit b44_get_invariants(struct b44 *bp) | |||
2082 | addr = sdev->bus->sprom.et0mac; | 2082 | addr = sdev->bus->sprom.et0mac; |
2083 | bp->phy_addr = sdev->bus->sprom.et0phyaddr; | 2083 | bp->phy_addr = sdev->bus->sprom.et0phyaddr; |
2084 | } | 2084 | } |
2085 | /* Some ROMs have buggy PHY addresses with the high | ||
2086 | * bits set (sign extension?). Truncate them to a | ||
2087 | * valid PHY address. */ | ||
2088 | bp->phy_addr &= 0x1F; | ||
2089 | |||
2085 | memcpy(bp->dev->dev_addr, addr, 6); | 2090 | memcpy(bp->dev->dev_addr, addr, 6); |
2086 | 2091 | ||
2087 | if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){ | 2092 | if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){ |
diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index c993a32b3f50..26b2dd5016cd 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c | |||
@@ -575,7 +575,6 @@ adjust_head: | |||
575 | static int bf537mac_hard_start_xmit(struct sk_buff *skb, | 575 | static int bf537mac_hard_start_xmit(struct sk_buff *skb, |
576 | struct net_device *dev) | 576 | struct net_device *dev) |
577 | { | 577 | { |
578 | struct bf537mac_local *lp = netdev_priv(dev); | ||
579 | unsigned int data; | 578 | unsigned int data; |
580 | 579 | ||
581 | current_tx_ptr->skb = skb; | 580 | current_tx_ptr->skb = skb; |
@@ -634,7 +633,6 @@ out: | |||
634 | static void bf537mac_rx(struct net_device *dev) | 633 | static void bf537mac_rx(struct net_device *dev) |
635 | { | 634 | { |
636 | struct sk_buff *skb, *new_skb; | 635 | struct sk_buff *skb, *new_skb; |
637 | struct bf537mac_local *lp = netdev_priv(dev); | ||
638 | unsigned short len; | 636 | unsigned short len; |
639 | 637 | ||
640 | /* allocate a new skb for next time receive */ | 638 | /* allocate a new skb for next time receive */ |
diff --git a/drivers/net/bnx2x.c b/drivers/net/bnx2x.c index de32b3fba322..7bdb5af35951 100644 --- a/drivers/net/bnx2x.c +++ b/drivers/net/bnx2x.c | |||
@@ -63,8 +63,8 @@ | |||
63 | #include "bnx2x.h" | 63 | #include "bnx2x.h" |
64 | #include "bnx2x_init.h" | 64 | #include "bnx2x_init.h" |
65 | 65 | ||
66 | #define DRV_MODULE_VERSION "1.42.3" | 66 | #define DRV_MODULE_VERSION "1.42.4" |
67 | #define DRV_MODULE_RELDATE "2008/3/9" | 67 | #define DRV_MODULE_RELDATE "2008/4/9" |
68 | #define BNX2X_BC_VER 0x040200 | 68 | #define BNX2X_BC_VER 0x040200 |
69 | 69 | ||
70 | /* Time in jiffies before concluding the transmitter is hung. */ | 70 | /* Time in jiffies before concluding the transmitter is hung. */ |
@@ -6153,7 +6153,7 @@ static int bnx2x_function_init(struct bnx2x *bp, int mode) | |||
6153 | func, mode); | 6153 | func, mode); |
6154 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, | 6154 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, |
6155 | 0xffffffff); | 6155 | 0xffffffff); |
6156 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, | 6156 | REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, |
6157 | 0xfffc); | 6157 | 0xfffc); |
6158 | bnx2x_init_block(bp, MISC_COMMON_START, MISC_COMMON_END); | 6158 | bnx2x_init_block(bp, MISC_COMMON_START, MISC_COMMON_END); |
6159 | 6159 | ||
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index cb3c6faa7888..d16e0e1d2b30 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
@@ -310,7 +310,7 @@ static inline int __check_agg_selection_timer(struct port *port) | |||
310 | */ | 310 | */ |
311 | static inline void __get_rx_machine_lock(struct port *port) | 311 | static inline void __get_rx_machine_lock(struct port *port) |
312 | { | 312 | { |
313 | spin_lock(&(SLAVE_AD_INFO(port->slave).rx_machine_lock)); | 313 | spin_lock_bh(&(SLAVE_AD_INFO(port->slave).rx_machine_lock)); |
314 | } | 314 | } |
315 | 315 | ||
316 | /** | 316 | /** |
@@ -320,7 +320,7 @@ static inline void __get_rx_machine_lock(struct port *port) | |||
320 | */ | 320 | */ |
321 | static inline void __release_rx_machine_lock(struct port *port) | 321 | static inline void __release_rx_machine_lock(struct port *port) |
322 | { | 322 | { |
323 | spin_unlock(&(SLAVE_AD_INFO(port->slave).rx_machine_lock)); | 323 | spin_unlock_bh(&(SLAVE_AD_INFO(port->slave).rx_machine_lock)); |
324 | } | 324 | } |
325 | 325 | ||
326 | /** | 326 | /** |
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index b57bc9467dbe..3f58c3d0b710 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c | |||
@@ -678,12 +678,8 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon | |||
678 | } | 678 | } |
679 | 679 | ||
680 | if (!list_empty(&bond->vlan_list)) { | 680 | if (!list_empty(&bond->vlan_list)) { |
681 | unsigned short vlan_id; | 681 | if (!vlan_get_tag(skb, &client_info->vlan_id)) |
682 | int res = vlan_get_tag(skb, &vlan_id); | ||
683 | if (!res) { | ||
684 | client_info->tag = 1; | 682 | client_info->tag = 1; |
685 | client_info->vlan_id = vlan_id; | ||
686 | } | ||
687 | } | 683 | } |
688 | 684 | ||
689 | if (!client_info->assigned) { | 685 | if (!client_info->assigned) { |
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 0942d82f7cbf..0f0675319e9c 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -383,7 +383,7 @@ struct vlan_entry *bond_next_vlan(struct bonding *bond, struct vlan_entry *curr) | |||
383 | */ | 383 | */ |
384 | int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev) | 384 | int bond_dev_queue_xmit(struct bonding *bond, struct sk_buff *skb, struct net_device *slave_dev) |
385 | { | 385 | { |
386 | unsigned short vlan_id; | 386 | unsigned short uninitialized_var(vlan_id); |
387 | 387 | ||
388 | if (!list_empty(&bond->vlan_list) && | 388 | if (!list_empty(&bond->vlan_list) && |
389 | !(slave_dev->features & NETIF_F_HW_VLAN_TX) && | 389 | !(slave_dev->features & NETIF_F_HW_VLAN_TX) && |
@@ -4528,8 +4528,7 @@ static void bond_free_all(void) | |||
4528 | netif_tx_unlock_bh(bond_dev); | 4528 | netif_tx_unlock_bh(bond_dev); |
4529 | /* Release the bonded slaves */ | 4529 | /* Release the bonded slaves */ |
4530 | bond_release_all(bond_dev); | 4530 | bond_release_all(bond_dev); |
4531 | bond_deinit(bond_dev); | 4531 | bond_destroy(bond); |
4532 | unregister_netdevice(bond_dev); | ||
4533 | } | 4532 | } |
4534 | 4533 | ||
4535 | #ifdef CONFIG_PROC_FS | 4534 | #ifdef CONFIG_PROC_FS |
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c index 90a1f31e8e63..979c2d05ff9c 100644 --- a/drivers/net/bonding/bond_sysfs.c +++ b/drivers/net/bonding/bond_sysfs.c | |||
@@ -341,6 +341,7 @@ static ssize_t bonding_store_slaves(struct device *d, | |||
341 | 341 | ||
342 | if (command[0] == '-') { | 342 | if (command[0] == '-') { |
343 | dev = NULL; | 343 | dev = NULL; |
344 | original_mtu = 0; | ||
344 | bond_for_each_slave(bond, slave, i) | 345 | bond_for_each_slave(bond, slave, i) |
345 | if (strnicmp(slave->dev->name, ifname, IFNAMSIZ) == 0) { | 346 | if (strnicmp(slave->dev->name, ifname, IFNAMSIZ) == 0) { |
346 | dev = slave->dev; | 347 | dev = slave->dev; |
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index 67ccad69d445..a3c74e20aa53 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h | |||
@@ -22,8 +22,8 @@ | |||
22 | #include "bond_3ad.h" | 22 | #include "bond_3ad.h" |
23 | #include "bond_alb.h" | 23 | #include "bond_alb.h" |
24 | 24 | ||
25 | #define DRV_VERSION "3.2.4" | 25 | #define DRV_VERSION "3.2.5" |
26 | #define DRV_RELDATE "January 28, 2008" | 26 | #define DRV_RELDATE "March 21, 2008" |
27 | #define DRV_NAME "bonding" | 27 | #define DRV_NAME "bonding" |
28 | #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" | 28 | #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" |
29 | 29 | ||
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index db586870c5f4..98a6bbd11d4c 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
@@ -557,9 +557,9 @@ static void t3_free_qset(struct adapter *adapter, struct sge_qset *q) | |||
557 | 557 | ||
558 | for (i = 0; i < SGE_RXQ_PER_SET; ++i) | 558 | for (i = 0; i < SGE_RXQ_PER_SET; ++i) |
559 | if (q->fl[i].desc) { | 559 | if (q->fl[i].desc) { |
560 | spin_lock(&adapter->sge.reg_lock); | 560 | spin_lock_irq(&adapter->sge.reg_lock); |
561 | t3_sge_disable_fl(adapter, q->fl[i].cntxt_id); | 561 | t3_sge_disable_fl(adapter, q->fl[i].cntxt_id); |
562 | spin_unlock(&adapter->sge.reg_lock); | 562 | spin_unlock_irq(&adapter->sge.reg_lock); |
563 | free_rx_bufs(pdev, &q->fl[i]); | 563 | free_rx_bufs(pdev, &q->fl[i]); |
564 | kfree(q->fl[i].sdesc); | 564 | kfree(q->fl[i].sdesc); |
565 | dma_free_coherent(&pdev->dev, | 565 | dma_free_coherent(&pdev->dev, |
@@ -570,9 +570,9 @@ static void t3_free_qset(struct adapter *adapter, struct sge_qset *q) | |||
570 | 570 | ||
571 | for (i = 0; i < SGE_TXQ_PER_SET; ++i) | 571 | for (i = 0; i < SGE_TXQ_PER_SET; ++i) |
572 | if (q->txq[i].desc) { | 572 | if (q->txq[i].desc) { |
573 | spin_lock(&adapter->sge.reg_lock); | 573 | spin_lock_irq(&adapter->sge.reg_lock); |
574 | t3_sge_enable_ecntxt(adapter, q->txq[i].cntxt_id, 0); | 574 | t3_sge_enable_ecntxt(adapter, q->txq[i].cntxt_id, 0); |
575 | spin_unlock(&adapter->sge.reg_lock); | 575 | spin_unlock_irq(&adapter->sge.reg_lock); |
576 | if (q->txq[i].sdesc) { | 576 | if (q->txq[i].sdesc) { |
577 | free_tx_desc(adapter, &q->txq[i], | 577 | free_tx_desc(adapter, &q->txq[i], |
578 | q->txq[i].in_use); | 578 | q->txq[i].in_use); |
@@ -586,9 +586,9 @@ static void t3_free_qset(struct adapter *adapter, struct sge_qset *q) | |||
586 | } | 586 | } |
587 | 587 | ||
588 | if (q->rspq.desc) { | 588 | if (q->rspq.desc) { |
589 | spin_lock(&adapter->sge.reg_lock); | 589 | spin_lock_irq(&adapter->sge.reg_lock); |
590 | t3_sge_disable_rspcntxt(adapter, q->rspq.cntxt_id); | 590 | t3_sge_disable_rspcntxt(adapter, q->rspq.cntxt_id); |
591 | spin_unlock(&adapter->sge.reg_lock); | 591 | spin_unlock_irq(&adapter->sge.reg_lock); |
592 | dma_free_coherent(&pdev->dev, | 592 | dma_free_coherent(&pdev->dev, |
593 | q->rspq.size * sizeof(struct rsp_desc), | 593 | q->rspq.size * sizeof(struct rsp_desc), |
594 | q->rspq.desc, q->rspq.phys_addr); | 594 | q->rspq.desc, q->rspq.phys_addr); |
@@ -2667,7 +2667,7 @@ int t3_sge_alloc_qset(struct adapter *adapter, unsigned int id, int nports, | |||
2667 | (16 * 1024) - SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) : | 2667 | (16 * 1024) - SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) : |
2668 | MAX_FRAME_SIZE + 2 + sizeof(struct cpl_rx_pkt); | 2668 | MAX_FRAME_SIZE + 2 + sizeof(struct cpl_rx_pkt); |
2669 | 2669 | ||
2670 | spin_lock(&adapter->sge.reg_lock); | 2670 | spin_lock_irq(&adapter->sge.reg_lock); |
2671 | 2671 | ||
2672 | /* FL threshold comparison uses < */ | 2672 | /* FL threshold comparison uses < */ |
2673 | ret = t3_sge_init_rspcntxt(adapter, q->rspq.cntxt_id, irq_vec_idx, | 2673 | ret = t3_sge_init_rspcntxt(adapter, q->rspq.cntxt_id, irq_vec_idx, |
@@ -2711,7 +2711,7 @@ int t3_sge_alloc_qset(struct adapter *adapter, unsigned int id, int nports, | |||
2711 | goto err_unlock; | 2711 | goto err_unlock; |
2712 | } | 2712 | } |
2713 | 2713 | ||
2714 | spin_unlock(&adapter->sge.reg_lock); | 2714 | spin_unlock_irq(&adapter->sge.reg_lock); |
2715 | 2715 | ||
2716 | q->adap = adapter; | 2716 | q->adap = adapter; |
2717 | q->netdev = dev; | 2717 | q->netdev = dev; |
@@ -2728,7 +2728,7 @@ int t3_sge_alloc_qset(struct adapter *adapter, unsigned int id, int nports, | |||
2728 | return 0; | 2728 | return 0; |
2729 | 2729 | ||
2730 | err_unlock: | 2730 | err_unlock: |
2731 | spin_unlock(&adapter->sge.reg_lock); | 2731 | spin_unlock_irq(&adapter->sge.reg_lock); |
2732 | err: | 2732 | err: |
2733 | t3_free_qset(adapter, q); | 2733 | t3_free_qset(adapter, q); |
2734 | return ret; | 2734 | return ret; |
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c index 1fe305ca2cf0..d63cc93f055d 100644 --- a/drivers/net/dm9000.c +++ b/drivers/net/dm9000.c | |||
@@ -798,8 +798,6 @@ dm9000_init_dm9000(struct net_device *dev) | |||
798 | /* Set address filter table */ | 798 | /* Set address filter table */ |
799 | dm9000_hash_table(dev); | 799 | dm9000_hash_table(dev); |
800 | 800 | ||
801 | /* Activate DM9000 */ | ||
802 | iow(db, DM9000_RCR, RCR_DIS_LONG | RCR_DIS_CRC | RCR_RXEN); | ||
803 | /* Enable TX/RX interrupt mask */ | 801 | /* Enable TX/RX interrupt mask */ |
804 | iow(db, DM9000_IMR, IMR_PAR | IMR_PTM | IMR_PRM); | 802 | iow(db, DM9000_IMR, IMR_PAR | IMR_PTM | IMR_PRM); |
805 | 803 | ||
@@ -970,7 +968,7 @@ dm9000_interrupt(int irq, void *dev_id) | |||
970 | struct dm9000_rxhdr { | 968 | struct dm9000_rxhdr { |
971 | u8 RxPktReady; | 969 | u8 RxPktReady; |
972 | u8 RxStatus; | 970 | u8 RxStatus; |
973 | u16 RxLen; | 971 | __le16 RxLen; |
974 | } __attribute__((__packed__)); | 972 | } __attribute__((__packed__)); |
975 | 973 | ||
976 | /* | 974 | /* |
@@ -1197,6 +1195,7 @@ dm9000_hash_table(struct net_device *dev) | |||
1197 | int i, oft; | 1195 | int i, oft; |
1198 | u32 hash_val; | 1196 | u32 hash_val; |
1199 | u16 hash_table[4]; | 1197 | u16 hash_table[4]; |
1198 | u8 rcr = RCR_DIS_LONG | RCR_DIS_CRC | RCR_RXEN; | ||
1200 | unsigned long flags; | 1199 | unsigned long flags; |
1201 | 1200 | ||
1202 | dm9000_dbg(db, 1, "entering %s\n", __func__); | 1201 | dm9000_dbg(db, 1, "entering %s\n", __func__); |
@@ -1213,6 +1212,12 @@ dm9000_hash_table(struct net_device *dev) | |||
1213 | /* broadcast address */ | 1212 | /* broadcast address */ |
1214 | hash_table[3] = 0x8000; | 1213 | hash_table[3] = 0x8000; |
1215 | 1214 | ||
1215 | if (dev->flags & IFF_PROMISC) | ||
1216 | rcr |= RCR_PRMSC; | ||
1217 | |||
1218 | if (dev->flags & IFF_ALLMULTI) | ||
1219 | rcr |= RCR_ALL; | ||
1220 | |||
1216 | /* the multicast address in Hash Table : 64 bits */ | 1221 | /* the multicast address in Hash Table : 64 bits */ |
1217 | for (i = 0; i < mc_cnt; i++, mcptr = mcptr->next) { | 1222 | for (i = 0; i < mc_cnt; i++, mcptr = mcptr->next) { |
1218 | hash_val = ether_crc_le(6, mcptr->dmi_addr) & 0x3f; | 1223 | hash_val = ether_crc_le(6, mcptr->dmi_addr) & 0x3f; |
@@ -1225,6 +1230,7 @@ dm9000_hash_table(struct net_device *dev) | |||
1225 | iow(db, oft++, hash_table[i] >> 8); | 1230 | iow(db, oft++, hash_table[i] >> 8); |
1226 | } | 1231 | } |
1227 | 1232 | ||
1233 | iow(db, DM9000_RCR, rcr); | ||
1228 | spin_unlock_irqrestore(&db->lock, flags); | 1234 | spin_unlock_irqrestore(&db->lock, flags); |
1229 | } | 1235 | } |
1230 | 1236 | ||
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index cdf3090a1885..2d139ec79777 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -960,7 +960,7 @@ static void e100_get_defaults(struct nic *nic) | |||
960 | 960 | ||
961 | /* Template for a freshly allocated RFD */ | 961 | /* Template for a freshly allocated RFD */ |
962 | nic->blank_rfd.command = 0; | 962 | nic->blank_rfd.command = 0; |
963 | nic->blank_rfd.rbd = 0xFFFFFFFF; | 963 | nic->blank_rfd.rbd = cpu_to_le32(0xFFFFFFFF); |
964 | nic->blank_rfd.size = cpu_to_le16(VLAN_ETH_FRAME_LEN); | 964 | nic->blank_rfd.size = cpu_to_le16(VLAN_ETH_FRAME_LEN); |
965 | 965 | ||
966 | /* MII setup */ | 966 | /* MII setup */ |
diff --git a/drivers/net/ehea/ehea.h b/drivers/net/ehea/ehea.h index 7c4ead35cfa2..93b7fb246960 100644 --- a/drivers/net/ehea/ehea.h +++ b/drivers/net/ehea/ehea.h | |||
@@ -40,7 +40,7 @@ | |||
40 | #include <asm/io.h> | 40 | #include <asm/io.h> |
41 | 41 | ||
42 | #define DRV_NAME "ehea" | 42 | #define DRV_NAME "ehea" |
43 | #define DRV_VERSION "EHEA_0087" | 43 | #define DRV_VERSION "EHEA_0089" |
44 | 44 | ||
45 | /* eHEA capability flags */ | 45 | /* eHEA capability flags */ |
46 | #define DLPAR_PORT_ADD_REM 1 | 46 | #define DLPAR_PORT_ADD_REM 1 |
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index 21af674b764e..07c742dd3f09 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c | |||
@@ -3108,7 +3108,7 @@ struct ehea_port *ehea_setup_single_port(struct ehea_adapter *adapter, | |||
3108 | dev->vlan_rx_add_vid = ehea_vlan_rx_add_vid; | 3108 | dev->vlan_rx_add_vid = ehea_vlan_rx_add_vid; |
3109 | dev->vlan_rx_kill_vid = ehea_vlan_rx_kill_vid; | 3109 | dev->vlan_rx_kill_vid = ehea_vlan_rx_kill_vid; |
3110 | dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO | 3110 | dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_TSO |
3111 | | NETIF_F_HIGHDMA | NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_TX | 3111 | | NETIF_F_HIGHDMA | NETIF_F_IP_CSUM | NETIF_F_HW_VLAN_TX |
3112 | | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER | 3112 | | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_FILTER |
3113 | | NETIF_F_LLTX; | 3113 | | NETIF_F_LLTX; |
3114 | dev->tx_timeout = &ehea_tx_watchdog; | 3114 | dev->tx_timeout = &ehea_tx_watchdog; |
diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c index 58b71e60204e..fe59c27c09e3 100644 --- a/drivers/net/fec_mpc52xx.c +++ b/drivers/net/fec_mpc52xx.c | |||
@@ -1057,6 +1057,7 @@ static int mpc52xx_fec_of_resume(struct of_device *op) | |||
1057 | #endif | 1057 | #endif |
1058 | 1058 | ||
1059 | static struct of_device_id mpc52xx_fec_match[] = { | 1059 | static struct of_device_id mpc52xx_fec_match[] = { |
1060 | { .type = "network", .compatible = "fsl,mpc5200b-fec", }, | ||
1060 | { .type = "network", .compatible = "fsl,mpc5200-fec", }, | 1061 | { .type = "network", .compatible = "fsl,mpc5200-fec", }, |
1061 | { .type = "network", .compatible = "mpc5200-fec", }, | 1062 | { .type = "network", .compatible = "mpc5200-fec", }, |
1062 | { } | 1063 | { } |
diff --git a/drivers/net/fec_mpc52xx_phy.c b/drivers/net/fec_mpc52xx_phy.c index 6a3ac4ea97e9..1d0cd1dd955e 100644 --- a/drivers/net/fec_mpc52xx_phy.c +++ b/drivers/net/fec_mpc52xx_phy.c | |||
@@ -179,6 +179,7 @@ static int mpc52xx_fec_mdio_remove(struct of_device *of) | |||
179 | 179 | ||
180 | static struct of_device_id mpc52xx_fec_mdio_match[] = { | 180 | static struct of_device_id mpc52xx_fec_mdio_match[] = { |
181 | { .compatible = "fsl,mpc5200b-mdio", }, | 181 | { .compatible = "fsl,mpc5200b-mdio", }, |
182 | { .compatible = "fsl,mpc5200-mdio", }, | ||
182 | { .compatible = "mpc5200b-fec-phy", }, | 183 | { .compatible = "mpc5200b-fec-phy", }, |
183 | {} | 184 | {} |
184 | }; | 185 | }; |
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 6f7e3fde9e7c..419f533006ab 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -1854,6 +1854,7 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1854 | struct ring_desc* start_tx; | 1854 | struct ring_desc* start_tx; |
1855 | struct ring_desc* prev_tx; | 1855 | struct ring_desc* prev_tx; |
1856 | struct nv_skb_map* prev_tx_ctx; | 1856 | struct nv_skb_map* prev_tx_ctx; |
1857 | unsigned long flags; | ||
1857 | 1858 | ||
1858 | /* add fragments to entries count */ | 1859 | /* add fragments to entries count */ |
1859 | for (i = 0; i < fragments; i++) { | 1860 | for (i = 0; i < fragments; i++) { |
@@ -1863,10 +1864,10 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1863 | 1864 | ||
1864 | empty_slots = nv_get_empty_tx_slots(np); | 1865 | empty_slots = nv_get_empty_tx_slots(np); |
1865 | if (unlikely(empty_slots <= entries)) { | 1866 | if (unlikely(empty_slots <= entries)) { |
1866 | spin_lock_irq(&np->lock); | 1867 | spin_lock_irqsave(&np->lock, flags); |
1867 | netif_stop_queue(dev); | 1868 | netif_stop_queue(dev); |
1868 | np->tx_stop = 1; | 1869 | np->tx_stop = 1; |
1869 | spin_unlock_irq(&np->lock); | 1870 | spin_unlock_irqrestore(&np->lock, flags); |
1870 | return NETDEV_TX_BUSY; | 1871 | return NETDEV_TX_BUSY; |
1871 | } | 1872 | } |
1872 | 1873 | ||
@@ -1929,13 +1930,13 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1929 | tx_flags_extra = skb->ip_summed == CHECKSUM_PARTIAL ? | 1930 | tx_flags_extra = skb->ip_summed == CHECKSUM_PARTIAL ? |
1930 | NV_TX2_CHECKSUM_L3 | NV_TX2_CHECKSUM_L4 : 0; | 1931 | NV_TX2_CHECKSUM_L3 | NV_TX2_CHECKSUM_L4 : 0; |
1931 | 1932 | ||
1932 | spin_lock_irq(&np->lock); | 1933 | spin_lock_irqsave(&np->lock, flags); |
1933 | 1934 | ||
1934 | /* set tx flags */ | 1935 | /* set tx flags */ |
1935 | start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); | 1936 | start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); |
1936 | np->put_tx.orig = put_tx; | 1937 | np->put_tx.orig = put_tx; |
1937 | 1938 | ||
1938 | spin_unlock_irq(&np->lock); | 1939 | spin_unlock_irqrestore(&np->lock, flags); |
1939 | 1940 | ||
1940 | dprintk(KERN_DEBUG "%s: nv_start_xmit: entries %d queued for transmission. tx_flags_extra: %x\n", | 1941 | dprintk(KERN_DEBUG "%s: nv_start_xmit: entries %d queued for transmission. tx_flags_extra: %x\n", |
1941 | dev->name, entries, tx_flags_extra); | 1942 | dev->name, entries, tx_flags_extra); |
@@ -1971,6 +1972,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
1971 | struct ring_desc_ex* prev_tx; | 1972 | struct ring_desc_ex* prev_tx; |
1972 | struct nv_skb_map* prev_tx_ctx; | 1973 | struct nv_skb_map* prev_tx_ctx; |
1973 | struct nv_skb_map* start_tx_ctx; | 1974 | struct nv_skb_map* start_tx_ctx; |
1975 | unsigned long flags; | ||
1974 | 1976 | ||
1975 | /* add fragments to entries count */ | 1977 | /* add fragments to entries count */ |
1976 | for (i = 0; i < fragments; i++) { | 1978 | for (i = 0; i < fragments; i++) { |
@@ -1980,10 +1982,10 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
1980 | 1982 | ||
1981 | empty_slots = nv_get_empty_tx_slots(np); | 1983 | empty_slots = nv_get_empty_tx_slots(np); |
1982 | if (unlikely(empty_slots <= entries)) { | 1984 | if (unlikely(empty_slots <= entries)) { |
1983 | spin_lock_irq(&np->lock); | 1985 | spin_lock_irqsave(&np->lock, flags); |
1984 | netif_stop_queue(dev); | 1986 | netif_stop_queue(dev); |
1985 | np->tx_stop = 1; | 1987 | np->tx_stop = 1; |
1986 | spin_unlock_irq(&np->lock); | 1988 | spin_unlock_irqrestore(&np->lock, flags); |
1987 | return NETDEV_TX_BUSY; | 1989 | return NETDEV_TX_BUSY; |
1988 | } | 1990 | } |
1989 | 1991 | ||
@@ -2059,7 +2061,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
2059 | start_tx->txvlan = 0; | 2061 | start_tx->txvlan = 0; |
2060 | } | 2062 | } |
2061 | 2063 | ||
2062 | spin_lock_irq(&np->lock); | 2064 | spin_lock_irqsave(&np->lock, flags); |
2063 | 2065 | ||
2064 | if (np->tx_limit) { | 2066 | if (np->tx_limit) { |
2065 | /* Limit the number of outstanding tx. Setup all fragments, but | 2067 | /* Limit the number of outstanding tx. Setup all fragments, but |
@@ -2085,7 +2087,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
2085 | start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); | 2087 | start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); |
2086 | np->put_tx.ex = put_tx; | 2088 | np->put_tx.ex = put_tx; |
2087 | 2089 | ||
2088 | spin_unlock_irq(&np->lock); | 2090 | spin_unlock_irqrestore(&np->lock, flags); |
2089 | 2091 | ||
2090 | dprintk(KERN_DEBUG "%s: nv_start_xmit_optimized: entries %d queued for transmission. tx_flags_extra: %x\n", | 2092 | dprintk(KERN_DEBUG "%s: nv_start_xmit_optimized: entries %d queued for transmission. tx_flags_extra: %x\n", |
2091 | dev->name, entries, tx_flags_extra); | 2093 | dev->name, entries, tx_flags_extra); |
@@ -2110,9 +2112,8 @@ static inline void nv_tx_flip_ownership(struct net_device *dev) | |||
2110 | 2112 | ||
2111 | np->tx_pkts_in_progress--; | 2113 | np->tx_pkts_in_progress--; |
2112 | if (np->tx_change_owner) { | 2114 | if (np->tx_change_owner) { |
2113 | __le32 flaglen = le32_to_cpu(np->tx_change_owner->first_tx_desc->flaglen); | 2115 | np->tx_change_owner->first_tx_desc->flaglen |= |
2114 | flaglen |= NV_TX2_VALID; | 2116 | cpu_to_le32(NV_TX2_VALID); |
2115 | np->tx_change_owner->first_tx_desc->flaglen = cpu_to_le32(flaglen); | ||
2116 | np->tx_pkts_in_progress++; | 2117 | np->tx_pkts_in_progress++; |
2117 | 2118 | ||
2118 | np->tx_change_owner = np->tx_change_owner->next_tx_ctx; | 2119 | np->tx_change_owner = np->tx_change_owner->next_tx_ctx; |
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c index 0789802d59ed..378a23963495 100644 --- a/drivers/net/ibm_newemac/core.c +++ b/drivers/net/ibm_newemac/core.c | |||
@@ -1242,8 +1242,8 @@ static int emac_close(struct net_device *ndev) | |||
1242 | static inline u16 emac_tx_csum(struct emac_instance *dev, | 1242 | static inline u16 emac_tx_csum(struct emac_instance *dev, |
1243 | struct sk_buff *skb) | 1243 | struct sk_buff *skb) |
1244 | { | 1244 | { |
1245 | if (emac_has_feature(dev, EMAC_FTR_HAS_TAH && | 1245 | if (emac_has_feature(dev, EMAC_FTR_HAS_TAH) && |
1246 | skb->ip_summed == CHECKSUM_PARTIAL)) { | 1246 | (skb->ip_summed == CHECKSUM_PARTIAL)) { |
1247 | ++dev->stats.tx_packets_csum; | 1247 | ++dev->stats.tx_packets_csum; |
1248 | return EMAC_TX_CTRL_TAH_CSUM; | 1248 | return EMAC_TX_CTRL_TAH_CSUM; |
1249 | } | 1249 | } |
diff --git a/drivers/net/igb/e1000_82575.h b/drivers/net/igb/e1000_82575.h index 6604d96bd567..76ea846663db 100644 --- a/drivers/net/igb/e1000_82575.h +++ b/drivers/net/igb/e1000_82575.h | |||
@@ -61,28 +61,28 @@ | |||
61 | /* Receive Descriptor - Advanced */ | 61 | /* Receive Descriptor - Advanced */ |
62 | union e1000_adv_rx_desc { | 62 | union e1000_adv_rx_desc { |
63 | struct { | 63 | struct { |
64 | u64 pkt_addr; /* Packet buffer address */ | 64 | __le64 pkt_addr; /* Packet buffer address */ |
65 | u64 hdr_addr; /* Header buffer address */ | 65 | __le64 hdr_addr; /* Header buffer address */ |
66 | } read; | 66 | } read; |
67 | struct { | 67 | struct { |
68 | struct { | 68 | struct { |
69 | struct { | 69 | struct { |
70 | u16 pkt_info; /* RSS type, Packet type */ | 70 | __le16 pkt_info; /* RSS type, Packet type */ |
71 | u16 hdr_info; /* Split Header, | 71 | __le16 hdr_info; /* Split Header, |
72 | * header buffer length */ | 72 | * header buffer length */ |
73 | } lo_dword; | 73 | } lo_dword; |
74 | union { | 74 | union { |
75 | u32 rss; /* RSS Hash */ | 75 | __le32 rss; /* RSS Hash */ |
76 | struct { | 76 | struct { |
77 | u16 ip_id; /* IP id */ | 77 | __le16 ip_id; /* IP id */ |
78 | u16 csum; /* Packet Checksum */ | 78 | __le16 csum; /* Packet Checksum */ |
79 | } csum_ip; | 79 | } csum_ip; |
80 | } hi_dword; | 80 | } hi_dword; |
81 | } lower; | 81 | } lower; |
82 | struct { | 82 | struct { |
83 | u32 status_error; /* ext status/error */ | 83 | __le32 status_error; /* ext status/error */ |
84 | u16 length; /* Packet length */ | 84 | __le16 length; /* Packet length */ |
85 | u16 vlan; /* VLAN tag */ | 85 | __le16 vlan; /* VLAN tag */ |
86 | } upper; | 86 | } upper; |
87 | } wb; /* writeback */ | 87 | } wb; /* writeback */ |
88 | }; | 88 | }; |
@@ -97,14 +97,14 @@ union e1000_adv_rx_desc { | |||
97 | /* Transmit Descriptor - Advanced */ | 97 | /* Transmit Descriptor - Advanced */ |
98 | union e1000_adv_tx_desc { | 98 | union e1000_adv_tx_desc { |
99 | struct { | 99 | struct { |
100 | u64 buffer_addr; /* Address of descriptor's data buf */ | 100 | __le64 buffer_addr; /* Address of descriptor's data buf */ |
101 | u32 cmd_type_len; | 101 | __le32 cmd_type_len; |
102 | u32 olinfo_status; | 102 | __le32 olinfo_status; |
103 | } read; | 103 | } read; |
104 | struct { | 104 | struct { |
105 | u64 rsvd; /* Reserved */ | 105 | __le64 rsvd; /* Reserved */ |
106 | u32 nxtseq_seed; | 106 | __le32 nxtseq_seed; |
107 | u32 status; | 107 | __le32 status; |
108 | } wb; | 108 | } wb; |
109 | }; | 109 | }; |
110 | 110 | ||
@@ -119,10 +119,10 @@ union e1000_adv_tx_desc { | |||
119 | 119 | ||
120 | /* Context descriptors */ | 120 | /* Context descriptors */ |
121 | struct e1000_adv_tx_context_desc { | 121 | struct e1000_adv_tx_context_desc { |
122 | u32 vlan_macip_lens; | 122 | __le32 vlan_macip_lens; |
123 | u32 seqnum_seed; | 123 | __le32 seqnum_seed; |
124 | u32 type_tucmd_mlhl; | 124 | __le32 type_tucmd_mlhl; |
125 | u32 mss_l4len_idx; | 125 | __le32 mss_l4len_idx; |
126 | }; | 126 | }; |
127 | 127 | ||
128 | #define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */ | 128 | #define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */ |
diff --git a/drivers/net/igb/e1000_hw.h b/drivers/net/igb/e1000_hw.h index 161fb68764af..7b2c70a3b8cc 100644 --- a/drivers/net/igb/e1000_hw.h +++ b/drivers/net/igb/e1000_hw.h | |||
@@ -143,35 +143,35 @@ enum e1000_fc_type { | |||
143 | 143 | ||
144 | /* Receive Descriptor */ | 144 | /* Receive Descriptor */ |
145 | struct e1000_rx_desc { | 145 | struct e1000_rx_desc { |
146 | u64 buffer_addr; /* Address of the descriptor's data buffer */ | 146 | __le64 buffer_addr; /* Address of the descriptor's data buffer */ |
147 | u16 length; /* Length of data DMAed into data buffer */ | 147 | __le16 length; /* Length of data DMAed into data buffer */ |
148 | u16 csum; /* Packet checksum */ | 148 | __le16 csum; /* Packet checksum */ |
149 | u8 status; /* Descriptor status */ | 149 | u8 status; /* Descriptor status */ |
150 | u8 errors; /* Descriptor Errors */ | 150 | u8 errors; /* Descriptor Errors */ |
151 | u16 special; | 151 | __le16 special; |
152 | }; | 152 | }; |
153 | 153 | ||
154 | /* Receive Descriptor - Extended */ | 154 | /* Receive Descriptor - Extended */ |
155 | union e1000_rx_desc_extended { | 155 | union e1000_rx_desc_extended { |
156 | struct { | 156 | struct { |
157 | u64 buffer_addr; | 157 | __le64 buffer_addr; |
158 | u64 reserved; | 158 | __le64 reserved; |
159 | } read; | 159 | } read; |
160 | struct { | 160 | struct { |
161 | struct { | 161 | struct { |
162 | u32 mrq; /* Multiple Rx Queues */ | 162 | __le32 mrq; /* Multiple Rx Queues */ |
163 | union { | 163 | union { |
164 | u32 rss; /* RSS Hash */ | 164 | __le32 rss; /* RSS Hash */ |
165 | struct { | 165 | struct { |
166 | u16 ip_id; /* IP id */ | 166 | __le16 ip_id; /* IP id */ |
167 | u16 csum; /* Packet Checksum */ | 167 | __le16 csum; /* Packet Checksum */ |
168 | } csum_ip; | 168 | } csum_ip; |
169 | } hi_dword; | 169 | } hi_dword; |
170 | } lower; | 170 | } lower; |
171 | struct { | 171 | struct { |
172 | u32 status_error; /* ext status/error */ | 172 | __le32 status_error; /* ext status/error */ |
173 | u16 length; | 173 | __le16 length; |
174 | u16 vlan; /* VLAN tag */ | 174 | __le16 vlan; /* VLAN tag */ |
175 | } upper; | 175 | } upper; |
176 | } wb; /* writeback */ | 176 | } wb; /* writeback */ |
177 | }; | 177 | }; |
@@ -181,49 +181,49 @@ union e1000_rx_desc_extended { | |||
181 | union e1000_rx_desc_packet_split { | 181 | union e1000_rx_desc_packet_split { |
182 | struct { | 182 | struct { |
183 | /* one buffer for protocol header(s), three data buffers */ | 183 | /* one buffer for protocol header(s), three data buffers */ |
184 | u64 buffer_addr[MAX_PS_BUFFERS]; | 184 | __le64 buffer_addr[MAX_PS_BUFFERS]; |
185 | } read; | 185 | } read; |
186 | struct { | 186 | struct { |
187 | struct { | 187 | struct { |
188 | u32 mrq; /* Multiple Rx Queues */ | 188 | __le32 mrq; /* Multiple Rx Queues */ |
189 | union { | 189 | union { |
190 | u32 rss; /* RSS Hash */ | 190 | __le32 rss; /* RSS Hash */ |
191 | struct { | 191 | struct { |
192 | u16 ip_id; /* IP id */ | 192 | __le16 ip_id; /* IP id */ |
193 | u16 csum; /* Packet Checksum */ | 193 | __le16 csum; /* Packet Checksum */ |
194 | } csum_ip; | 194 | } csum_ip; |
195 | } hi_dword; | 195 | } hi_dword; |
196 | } lower; | 196 | } lower; |
197 | struct { | 197 | struct { |
198 | u32 status_error; /* ext status/error */ | 198 | __le32 status_error; /* ext status/error */ |
199 | u16 length0; /* length of buffer 0 */ | 199 | __le16 length0; /* length of buffer 0 */ |
200 | u16 vlan; /* VLAN tag */ | 200 | __le16 vlan; /* VLAN tag */ |
201 | } middle; | 201 | } middle; |
202 | struct { | 202 | struct { |
203 | u16 header_status; | 203 | __le16 header_status; |
204 | u16 length[3]; /* length of buffers 1-3 */ | 204 | __le16 length[3]; /* length of buffers 1-3 */ |
205 | } upper; | 205 | } upper; |
206 | u64 reserved; | 206 | __le64 reserved; |
207 | } wb; /* writeback */ | 207 | } wb; /* writeback */ |
208 | }; | 208 | }; |
209 | 209 | ||
210 | /* Transmit Descriptor */ | 210 | /* Transmit Descriptor */ |
211 | struct e1000_tx_desc { | 211 | struct e1000_tx_desc { |
212 | u64 buffer_addr; /* Address of the descriptor's data buffer */ | 212 | __le64 buffer_addr; /* Address of the descriptor's data buffer */ |
213 | union { | 213 | union { |
214 | u32 data; | 214 | __le32 data; |
215 | struct { | 215 | struct { |
216 | u16 length; /* Data buffer length */ | 216 | __le16 length; /* Data buffer length */ |
217 | u8 cso; /* Checksum offset */ | 217 | u8 cso; /* Checksum offset */ |
218 | u8 cmd; /* Descriptor control */ | 218 | u8 cmd; /* Descriptor control */ |
219 | } flags; | 219 | } flags; |
220 | } lower; | 220 | } lower; |
221 | union { | 221 | union { |
222 | u32 data; | 222 | __le32 data; |
223 | struct { | 223 | struct { |
224 | u8 status; /* Descriptor status */ | 224 | u8 status; /* Descriptor status */ |
225 | u8 css; /* Checksum start */ | 225 | u8 css; /* Checksum start */ |
226 | u16 special; | 226 | __le16 special; |
227 | } fields; | 227 | } fields; |
228 | } upper; | 228 | } upper; |
229 | }; | 229 | }; |
@@ -231,49 +231,49 @@ struct e1000_tx_desc { | |||
231 | /* Offload Context Descriptor */ | 231 | /* Offload Context Descriptor */ |
232 | struct e1000_context_desc { | 232 | struct e1000_context_desc { |
233 | union { | 233 | union { |
234 | u32 ip_config; | 234 | __le32 ip_config; |
235 | struct { | 235 | struct { |
236 | u8 ipcss; /* IP checksum start */ | 236 | u8 ipcss; /* IP checksum start */ |
237 | u8 ipcso; /* IP checksum offset */ | 237 | u8 ipcso; /* IP checksum offset */ |
238 | u16 ipcse; /* IP checksum end */ | 238 | __le16 ipcse; /* IP checksum end */ |
239 | } ip_fields; | 239 | } ip_fields; |
240 | } lower_setup; | 240 | } lower_setup; |
241 | union { | 241 | union { |
242 | u32 tcp_config; | 242 | __le32 tcp_config; |
243 | struct { | 243 | struct { |
244 | u8 tucss; /* TCP checksum start */ | 244 | u8 tucss; /* TCP checksum start */ |
245 | u8 tucso; /* TCP checksum offset */ | 245 | u8 tucso; /* TCP checksum offset */ |
246 | u16 tucse; /* TCP checksum end */ | 246 | __le16 tucse; /* TCP checksum end */ |
247 | } tcp_fields; | 247 | } tcp_fields; |
248 | } upper_setup; | 248 | } upper_setup; |
249 | u32 cmd_and_length; | 249 | __le32 cmd_and_length; |
250 | union { | 250 | union { |
251 | u32 data; | 251 | __le32 data; |
252 | struct { | 252 | struct { |
253 | u8 status; /* Descriptor status */ | 253 | u8 status; /* Descriptor status */ |
254 | u8 hdr_len; /* Header length */ | 254 | u8 hdr_len; /* Header length */ |
255 | u16 mss; /* Maximum segment size */ | 255 | __le16 mss; /* Maximum segment size */ |
256 | } fields; | 256 | } fields; |
257 | } tcp_seg_setup; | 257 | } tcp_seg_setup; |
258 | }; | 258 | }; |
259 | 259 | ||
260 | /* Offload data descriptor */ | 260 | /* Offload data descriptor */ |
261 | struct e1000_data_desc { | 261 | struct e1000_data_desc { |
262 | u64 buffer_addr; /* Address of the descriptor's buffer address */ | 262 | __le64 buffer_addr; /* Address of the descriptor's buffer address */ |
263 | union { | 263 | union { |
264 | u32 data; | 264 | __le32 data; |
265 | struct { | 265 | struct { |
266 | u16 length; /* Data buffer length */ | 266 | __le16 length; /* Data buffer length */ |
267 | u8 typ_len_ext; | 267 | u8 typ_len_ext; |
268 | u8 cmd; | 268 | u8 cmd; |
269 | } flags; | 269 | } flags; |
270 | } lower; | 270 | } lower; |
271 | union { | 271 | union { |
272 | u32 data; | 272 | __le32 data; |
273 | struct { | 273 | struct { |
274 | u8 status; /* Descriptor status */ | 274 | u8 status; /* Descriptor status */ |
275 | u8 popts; /* Packet Options */ | 275 | u8 popts; /* Packet Options */ |
276 | u16 special; | 276 | __le16 special; |
277 | } fields; | 277 | } fields; |
278 | } upper; | 278 | } upper; |
279 | }; | 279 | }; |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 928ce8287e69..aaee02e9e3f0 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -3254,6 +3254,13 @@ quit_polling: | |||
3254 | 3254 | ||
3255 | return 1; | 3255 | return 1; |
3256 | } | 3256 | } |
3257 | |||
3258 | static inline u32 get_head(struct igb_ring *tx_ring) | ||
3259 | { | ||
3260 | void *end = (struct e1000_tx_desc *)tx_ring->desc + tx_ring->count; | ||
3261 | return le32_to_cpu(*(volatile __le32 *)end); | ||
3262 | } | ||
3263 | |||
3257 | /** | 3264 | /** |
3258 | * igb_clean_tx_irq - Reclaim resources after transmit completes | 3265 | * igb_clean_tx_irq - Reclaim resources after transmit completes |
3259 | * @adapter: board private structure | 3266 | * @adapter: board private structure |
@@ -3275,9 +3282,7 @@ static bool igb_clean_tx_irq(struct igb_adapter *adapter, | |||
3275 | unsigned int total_bytes = 0, total_packets = 0; | 3282 | unsigned int total_bytes = 0, total_packets = 0; |
3276 | 3283 | ||
3277 | rmb(); | 3284 | rmb(); |
3278 | head = *(volatile u32 *)((struct e1000_tx_desc *)tx_ring->desc | 3285 | head = get_head(tx_ring); |
3279 | + tx_ring->count); | ||
3280 | head = le32_to_cpu(head); | ||
3281 | i = tx_ring->next_to_clean; | 3286 | i = tx_ring->next_to_clean; |
3282 | while (1) { | 3287 | while (1) { |
3283 | while (i != head) { | 3288 | while (i != head) { |
@@ -3312,9 +3317,7 @@ static bool igb_clean_tx_irq(struct igb_adapter *adapter, | |||
3312 | } | 3317 | } |
3313 | oldhead = head; | 3318 | oldhead = head; |
3314 | rmb(); | 3319 | rmb(); |
3315 | head = *(volatile u32 *)((struct e1000_tx_desc *)tx_ring->desc | 3320 | head = get_head(tx_ring); |
3316 | + tx_ring->count); | ||
3317 | head = le32_to_cpu(head); | ||
3318 | if (head == oldhead) | 3321 | if (head == oldhead) |
3319 | goto done_cleaning; | 3322 | goto done_cleaning; |
3320 | } /* while (1) */ | 3323 | } /* while (1) */ |
@@ -3388,7 +3391,7 @@ done_cleaning: | |||
3388 | * @vlan: descriptor vlan field as written by hardware (no le/be conversion) | 3391 | * @vlan: descriptor vlan field as written by hardware (no le/be conversion) |
3389 | * @skb: pointer to sk_buff to be indicated to stack | 3392 | * @skb: pointer to sk_buff to be indicated to stack |
3390 | **/ | 3393 | **/ |
3391 | static void igb_receive_skb(struct igb_adapter *adapter, u8 status, u16 vlan, | 3394 | static void igb_receive_skb(struct igb_adapter *adapter, u8 status, __le16 vlan, |
3392 | struct sk_buff *skb) | 3395 | struct sk_buff *skb) |
3393 | { | 3396 | { |
3394 | if (adapter->vlgrp && (status & E1000_RXD_STAT_VP)) | 3397 | if (adapter->vlgrp && (status & E1000_RXD_STAT_VP)) |
@@ -3452,8 +3455,8 @@ static bool igb_clean_rx_irq_adv(struct igb_adapter *adapter, | |||
3452 | * that case, it fills the header buffer and spills the rest | 3455 | * that case, it fills the header buffer and spills the rest |
3453 | * into the page. | 3456 | * into the page. |
3454 | */ | 3457 | */ |
3455 | hlen = le16_to_cpu((rx_desc->wb.lower.lo_dword.hdr_info & | 3458 | hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hdr_info) & |
3456 | E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT); | 3459 | E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT; |
3457 | if (hlen > adapter->rx_ps_hdr_size) | 3460 | if (hlen > adapter->rx_ps_hdr_size) |
3458 | hlen = adapter->rx_ps_hdr_size; | 3461 | hlen = adapter->rx_ps_hdr_size; |
3459 | 3462 | ||
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c index 269e6f805f47..6738b4d097fe 100644 --- a/drivers/net/ixgb/ixgb_main.c +++ b/drivers/net/ixgb/ixgb_main.c | |||
@@ -2088,14 +2088,12 @@ ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter) | |||
2088 | struct ixgb_buffer *buffer_info; | 2088 | struct ixgb_buffer *buffer_info; |
2089 | struct sk_buff *skb; | 2089 | struct sk_buff *skb; |
2090 | unsigned int i; | 2090 | unsigned int i; |
2091 | int num_group_tail_writes; | ||
2092 | long cleancount; | 2091 | long cleancount; |
2093 | 2092 | ||
2094 | i = rx_ring->next_to_use; | 2093 | i = rx_ring->next_to_use; |
2095 | buffer_info = &rx_ring->buffer_info[i]; | 2094 | buffer_info = &rx_ring->buffer_info[i]; |
2096 | cleancount = IXGB_DESC_UNUSED(rx_ring); | 2095 | cleancount = IXGB_DESC_UNUSED(rx_ring); |
2097 | 2096 | ||
2098 | num_group_tail_writes = IXGB_RX_BUFFER_WRITE; | ||
2099 | 2097 | ||
2100 | /* leave three descriptors unused */ | 2098 | /* leave three descriptors unused */ |
2101 | while(--cleancount > 2) { | 2099 | while(--cleancount > 2) { |
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 2bc5eaae141f..7f20a03623a0 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h | |||
@@ -85,7 +85,7 @@ | |||
85 | (sizeof(struct netxen_cmd_buffer) * adapter->max_tx_desc_count) | 85 | (sizeof(struct netxen_cmd_buffer) * adapter->max_tx_desc_count) |
86 | #define RCV_BUFFSIZE \ | 86 | #define RCV_BUFFSIZE \ |
87 | (sizeof(struct netxen_rx_buffer) * rcv_desc->max_rx_desc_count) | 87 | (sizeof(struct netxen_rx_buffer) * rcv_desc->max_rx_desc_count) |
88 | #define find_diff_among(a,b,range) ((a)<=(b)?((b)-(a)):((b)+(range)-(a))) | 88 | #define find_diff_among(a,b,range) ((a)<(b)?((b)-(a)):((b)+(range)-(a))) |
89 | 89 | ||
90 | #define NETXEN_NETDEV_STATUS 0x1 | 90 | #define NETXEN_NETDEV_STATUS 0x1 |
91 | #define NETXEN_RCV_PRODUCER_OFFSET 0 | 91 | #define NETXEN_RCV_PRODUCER_OFFSET 0 |
@@ -204,7 +204,7 @@ enum { | |||
204 | ? RCV_DESC_LRO : \ | 204 | ? RCV_DESC_LRO : \ |
205 | (RCV_DESC_NORMAL))) | 205 | (RCV_DESC_NORMAL))) |
206 | 206 | ||
207 | #define MAX_CMD_DESCRIPTORS 1024 | 207 | #define MAX_CMD_DESCRIPTORS 4096 |
208 | #define MAX_RCV_DESCRIPTORS 16384 | 208 | #define MAX_RCV_DESCRIPTORS 16384 |
209 | #define MAX_CMD_DESCRIPTORS_HOST (MAX_CMD_DESCRIPTORS / 4) | 209 | #define MAX_CMD_DESCRIPTORS_HOST (MAX_CMD_DESCRIPTORS / 4) |
210 | #define MAX_RCV_DESCRIPTORS_1G (MAX_RCV_DESCRIPTORS / 4) | 210 | #define MAX_RCV_DESCRIPTORS_1G (MAX_RCV_DESCRIPTORS / 4) |
@@ -818,15 +818,8 @@ struct netxen_adapter_stats { | |||
818 | u64 badskblen; | 818 | u64 badskblen; |
819 | u64 nocmddescriptor; | 819 | u64 nocmddescriptor; |
820 | u64 polled; | 820 | u64 polled; |
821 | u64 uphappy; | 821 | u64 rxdropped; |
822 | u64 updropped; | ||
823 | u64 uplcong; | ||
824 | u64 uphcong; | ||
825 | u64 upmcong; | ||
826 | u64 updunno; | ||
827 | u64 skbfreed; | ||
828 | u64 txdropped; | 822 | u64 txdropped; |
829 | u64 txnullskb; | ||
830 | u64 csummed; | 823 | u64 csummed; |
831 | u64 no_rcv; | 824 | u64 no_rcv; |
832 | u64 rxbytes; | 825 | u64 rxbytes; |
@@ -842,7 +835,6 @@ struct netxen_rcv_desc_ctx { | |||
842 | u32 flags; | 835 | u32 flags; |
843 | u32 producer; | 836 | u32 producer; |
844 | u32 rcv_pending; /* Num of bufs posted in phantom */ | 837 | u32 rcv_pending; /* Num of bufs posted in phantom */ |
845 | u32 rcv_free; /* Num of bufs in free list */ | ||
846 | dma_addr_t phys_addr; | 838 | dma_addr_t phys_addr; |
847 | struct pci_dev *phys_pdev; | 839 | struct pci_dev *phys_pdev; |
848 | struct rcv_desc *desc_head; /* address of rx ring in Phantom */ | 840 | struct rcv_desc *desc_head; /* address of rx ring in Phantom */ |
@@ -889,8 +881,6 @@ struct netxen_adapter { | |||
889 | int mtu; | 881 | int mtu; |
890 | int portnum; | 882 | int portnum; |
891 | 883 | ||
892 | spinlock_t tx_lock; | ||
893 | spinlock_t lock; | ||
894 | struct work_struct watchdog_task; | 884 | struct work_struct watchdog_task; |
895 | struct timer_list watchdog_timer; | 885 | struct timer_list watchdog_timer; |
896 | struct work_struct tx_timeout_task; | 886 | struct work_struct tx_timeout_task; |
@@ -899,16 +889,12 @@ struct netxen_adapter { | |||
899 | 889 | ||
900 | u32 cmd_producer; | 890 | u32 cmd_producer; |
901 | __le32 *cmd_consumer; | 891 | __le32 *cmd_consumer; |
902 | |||
903 | u32 last_cmd_consumer; | 892 | u32 last_cmd_consumer; |
893 | |||
904 | u32 max_tx_desc_count; | 894 | u32 max_tx_desc_count; |
905 | u32 max_rx_desc_count; | 895 | u32 max_rx_desc_count; |
906 | u32 max_jumbo_rx_desc_count; | 896 | u32 max_jumbo_rx_desc_count; |
907 | u32 max_lro_rx_desc_count; | 897 | u32 max_lro_rx_desc_count; |
908 | /* Num of instances active on cmd buffer ring */ | ||
909 | u32 proc_cmd_buf_counter; | ||
910 | |||
911 | u32 num_threads, total_threads; /*Use to keep track of xmit threads */ | ||
912 | 898 | ||
913 | u32 flags; | 899 | u32 flags; |
914 | u32 irq; | 900 | u32 irq; |
@@ -942,6 +928,7 @@ struct netxen_adapter { | |||
942 | struct pci_dev *ctx_desc_pdev; | 928 | struct pci_dev *ctx_desc_pdev; |
943 | dma_addr_t ctx_desc_phys_addr; | 929 | dma_addr_t ctx_desc_phys_addr; |
944 | int intr_scheme; | 930 | int intr_scheme; |
931 | int msi_mode; | ||
945 | int (*enable_phy_interrupts) (struct netxen_adapter *); | 932 | int (*enable_phy_interrupts) (struct netxen_adapter *); |
946 | int (*disable_phy_interrupts) (struct netxen_adapter *); | 933 | int (*disable_phy_interrupts) (struct netxen_adapter *); |
947 | void (*handle_phy_intr) (struct netxen_adapter *); | 934 | void (*handle_phy_intr) (struct netxen_adapter *); |
@@ -1075,12 +1062,10 @@ void netxen_tso_check(struct netxen_adapter *adapter, | |||
1075 | struct cmd_desc_type0 *desc, struct sk_buff *skb); | 1062 | struct cmd_desc_type0 *desc, struct sk_buff *skb); |
1076 | int netxen_nic_hw_resources(struct netxen_adapter *adapter); | 1063 | int netxen_nic_hw_resources(struct netxen_adapter *adapter); |
1077 | void netxen_nic_clear_stats(struct netxen_adapter *adapter); | 1064 | void netxen_nic_clear_stats(struct netxen_adapter *adapter); |
1078 | int netxen_nic_rx_has_work(struct netxen_adapter *adapter); | ||
1079 | int netxen_nic_tx_has_work(struct netxen_adapter *adapter); | ||
1080 | void netxen_watchdog_task(struct work_struct *work); | 1065 | void netxen_watchdog_task(struct work_struct *work); |
1081 | void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, | 1066 | void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, |
1082 | u32 ringid); | 1067 | u32 ringid); |
1083 | int netxen_process_cmd_ring(unsigned long data); | 1068 | int netxen_process_cmd_ring(struct netxen_adapter *adapter); |
1084 | u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); | 1069 | u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max); |
1085 | void netxen_nic_set_multi(struct net_device *netdev); | 1070 | void netxen_nic_set_multi(struct net_device *netdev); |
1086 | int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu); | 1071 | int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu); |
diff --git a/drivers/net/netxen/netxen_nic_ethtool.c b/drivers/net/netxen/netxen_nic_ethtool.c index 7a876f4b8db2..6e98d830eefb 100644 --- a/drivers/net/netxen/netxen_nic_ethtool.c +++ b/drivers/net/netxen/netxen_nic_ethtool.c | |||
@@ -64,15 +64,7 @@ static const struct netxen_nic_stats netxen_nic_gstrings_stats[] = { | |||
64 | {"bad_skb_len", NETXEN_NIC_STAT(stats.badskblen)}, | 64 | {"bad_skb_len", NETXEN_NIC_STAT(stats.badskblen)}, |
65 | {"no_cmd_desc", NETXEN_NIC_STAT(stats.nocmddescriptor)}, | 65 | {"no_cmd_desc", NETXEN_NIC_STAT(stats.nocmddescriptor)}, |
66 | {"polled", NETXEN_NIC_STAT(stats.polled)}, | 66 | {"polled", NETXEN_NIC_STAT(stats.polled)}, |
67 | {"uphappy", NETXEN_NIC_STAT(stats.uphappy)}, | ||
68 | {"updropped", NETXEN_NIC_STAT(stats.updropped)}, | ||
69 | {"uplcong", NETXEN_NIC_STAT(stats.uplcong)}, | ||
70 | {"uphcong", NETXEN_NIC_STAT(stats.uphcong)}, | ||
71 | {"upmcong", NETXEN_NIC_STAT(stats.upmcong)}, | ||
72 | {"updunno", NETXEN_NIC_STAT(stats.updunno)}, | ||
73 | {"skb_freed", NETXEN_NIC_STAT(stats.skbfreed)}, | ||
74 | {"tx_dropped", NETXEN_NIC_STAT(stats.txdropped)}, | 67 | {"tx_dropped", NETXEN_NIC_STAT(stats.txdropped)}, |
75 | {"tx_null_skb", NETXEN_NIC_STAT(stats.txnullskb)}, | ||
76 | {"csummed", NETXEN_NIC_STAT(stats.csummed)}, | 68 | {"csummed", NETXEN_NIC_STAT(stats.csummed)}, |
77 | {"no_rcv", NETXEN_NIC_STAT(stats.no_rcv)}, | 69 | {"no_rcv", NETXEN_NIC_STAT(stats.no_rcv)}, |
78 | {"rx_bytes", NETXEN_NIC_STAT(stats.rxbytes)}, | 70 | {"rx_bytes", NETXEN_NIC_STAT(stats.rxbytes)}, |
diff --git a/drivers/net/netxen/netxen_nic_hdr.h b/drivers/net/netxen/netxen_nic_hdr.h index d72f8f8fcb50..160f605e58db 100644 --- a/drivers/net/netxen/netxen_nic_hdr.h +++ b/drivers/net/netxen/netxen_nic_hdr.h | |||
@@ -456,6 +456,12 @@ enum { | |||
456 | #define ISR_INT_MASK_SLOW (NETXEN_PCIX_PS_REG(PCIX_INT_MASK)) | 456 | #define ISR_INT_MASK_SLOW (NETXEN_PCIX_PS_REG(PCIX_INT_MASK)) |
457 | #define ISR_INT_TARGET_STATUS (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS)) | 457 | #define ISR_INT_TARGET_STATUS (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS)) |
458 | #define ISR_INT_TARGET_MASK (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK)) | 458 | #define ISR_INT_TARGET_MASK (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK)) |
459 | #define ISR_INT_TARGET_STATUS_F1 (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS_F1)) | ||
460 | #define ISR_INT_TARGET_MASK_F1 (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK_F1)) | ||
461 | #define ISR_INT_TARGET_STATUS_F2 (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS_F2)) | ||
462 | #define ISR_INT_TARGET_MASK_F2 (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK_F2)) | ||
463 | #define ISR_INT_TARGET_STATUS_F3 (NETXEN_PCIX_PS_REG(PCIX_TARGET_STATUS_F3)) | ||
464 | #define ISR_INT_TARGET_MASK_F3 (NETXEN_PCIX_PS_REG(PCIX_TARGET_MASK_F3)) | ||
459 | 465 | ||
460 | #define NETXEN_PCI_MAPSIZE 128 | 466 | #define NETXEN_PCI_MAPSIZE 128 |
461 | #define NETXEN_PCI_DDR_NET (0x00000000UL) | 467 | #define NETXEN_PCI_DDR_NET (0x00000000UL) |
@@ -662,6 +668,12 @@ enum { | |||
662 | 668 | ||
663 | #define PCIX_TARGET_STATUS (0x10118) | 669 | #define PCIX_TARGET_STATUS (0x10118) |
664 | #define PCIX_TARGET_MASK (0x10128) | 670 | #define PCIX_TARGET_MASK (0x10128) |
671 | #define PCIX_TARGET_STATUS_F1 (0x10160) | ||
672 | #define PCIX_TARGET_MASK_F1 (0x10170) | ||
673 | #define PCIX_TARGET_STATUS_F2 (0x10164) | ||
674 | #define PCIX_TARGET_MASK_F2 (0x10174) | ||
675 | #define PCIX_TARGET_STATUS_F3 (0x10168) | ||
676 | #define PCIX_TARGET_MASK_F3 (0x10178) | ||
665 | 677 | ||
666 | #define PCIX_MSI_F0 (0x13000) | 678 | #define PCIX_MSI_F0 (0x13000) |
667 | #define PCIX_MSI_F1 (0x13004) | 679 | #define PCIX_MSI_F1 (0x13004) |
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index 01355701bf8e..05748ca6f216 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
@@ -398,6 +398,8 @@ int netxen_nic_hw_resources(struct netxen_adapter *adapter) | |||
398 | NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_FW)); | 398 | NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_FW)); |
399 | printk(KERN_NOTICE "%s: FW capabilities:0x%x\n", netxen_nic_driver_name, | 399 | printk(KERN_NOTICE "%s: FW capabilities:0x%x\n", netxen_nic_driver_name, |
400 | adapter->intr_scheme); | 400 | adapter->intr_scheme); |
401 | adapter->msi_mode = readl( | ||
402 | NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_FW)); | ||
401 | DPRINTK(INFO, "Receive Peg ready too. starting stuff\n"); | 403 | DPRINTK(INFO, "Receive Peg ready too. starting stuff\n"); |
402 | 404 | ||
403 | addr = netxen_alloc(adapter->ahw.pdev, | 405 | addr = netxen_alloc(adapter->ahw.pdev, |
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 9e38bcb3fba9..45fa33e0cb90 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -145,6 +145,8 @@ int netxen_init_firmware(struct netxen_adapter *adapter) | |||
145 | /* Window 1 call */ | 145 | /* Window 1 call */ |
146 | writel(INTR_SCHEME_PERPORT, | 146 | writel(INTR_SCHEME_PERPORT, |
147 | NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_HOST)); | 147 | NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_HOST)); |
148 | writel(MSI_MODE_MULTIFUNC, | ||
149 | NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_HOST)); | ||
148 | writel(MPORT_MULTI_FUNCTION_MODE, | 150 | writel(MPORT_MULTI_FUNCTION_MODE, |
149 | NETXEN_CRB_NORMALIZE(adapter, CRB_MPORT_MODE)); | 151 | NETXEN_CRB_NORMALIZE(adapter, CRB_MPORT_MODE)); |
150 | writel(PHAN_INITIALIZE_ACK, | 152 | writel(PHAN_INITIALIZE_ACK, |
@@ -183,7 +185,6 @@ void netxen_initialize_adapter_sw(struct netxen_adapter *adapter) | |||
183 | for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) { | 185 | for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) { |
184 | struct netxen_rx_buffer *rx_buf; | 186 | struct netxen_rx_buffer *rx_buf; |
185 | rcv_desc = &adapter->recv_ctx[ctxid].rcv_desc[ring]; | 187 | rcv_desc = &adapter->recv_ctx[ctxid].rcv_desc[ring]; |
186 | rcv_desc->rcv_free = rcv_desc->max_rx_desc_count; | ||
187 | rcv_desc->begin_alloc = 0; | 188 | rcv_desc->begin_alloc = 0; |
188 | rx_buf = rcv_desc->rx_buf_arr; | 189 | rx_buf = rcv_desc->rx_buf_arr; |
189 | num_rx_bufs = rcv_desc->max_rx_desc_count; | 190 | num_rx_bufs = rcv_desc->max_rx_desc_count; |
@@ -974,28 +975,6 @@ int netxen_phantom_init(struct netxen_adapter *adapter, int pegtune_val) | |||
974 | return 0; | 975 | return 0; |
975 | } | 976 | } |
976 | 977 | ||
977 | int netxen_nic_rx_has_work(struct netxen_adapter *adapter) | ||
978 | { | ||
979 | int ctx; | ||
980 | |||
981 | for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) { | ||
982 | struct netxen_recv_context *recv_ctx = | ||
983 | &(adapter->recv_ctx[ctx]); | ||
984 | u32 consumer; | ||
985 | struct status_desc *desc_head; | ||
986 | struct status_desc *desc; | ||
987 | |||
988 | consumer = recv_ctx->status_rx_consumer; | ||
989 | desc_head = recv_ctx->rcv_status_desc_head; | ||
990 | desc = &desc_head[consumer]; | ||
991 | |||
992 | if (netxen_get_sts_owner(desc) & STATUS_OWNER_HOST) | ||
993 | return 1; | ||
994 | } | ||
995 | |||
996 | return 0; | ||
997 | } | ||
998 | |||
999 | static int netxen_nic_check_temp(struct netxen_adapter *adapter) | 978 | static int netxen_nic_check_temp(struct netxen_adapter *adapter) |
1000 | { | 979 | { |
1001 | struct net_device *netdev = adapter->netdev; | 980 | struct net_device *netdev = adapter->netdev; |
@@ -1038,7 +1017,6 @@ static int netxen_nic_check_temp(struct netxen_adapter *adapter) | |||
1038 | 1017 | ||
1039 | void netxen_watchdog_task(struct work_struct *work) | 1018 | void netxen_watchdog_task(struct work_struct *work) |
1040 | { | 1019 | { |
1041 | struct net_device *netdev; | ||
1042 | struct netxen_adapter *adapter = | 1020 | struct netxen_adapter *adapter = |
1043 | container_of(work, struct netxen_adapter, watchdog_task); | 1021 | container_of(work, struct netxen_adapter, watchdog_task); |
1044 | 1022 | ||
@@ -1048,20 +1026,6 @@ void netxen_watchdog_task(struct work_struct *work) | |||
1048 | if (adapter->handle_phy_intr) | 1026 | if (adapter->handle_phy_intr) |
1049 | adapter->handle_phy_intr(adapter); | 1027 | adapter->handle_phy_intr(adapter); |
1050 | 1028 | ||
1051 | netdev = adapter->netdev; | ||
1052 | if ((netif_running(netdev)) && !netif_carrier_ok(netdev) && | ||
1053 | netxen_nic_link_ok(adapter) ) { | ||
1054 | printk(KERN_INFO "%s %s (port %d), Link is up\n", | ||
1055 | netxen_nic_driver_name, netdev->name, adapter->portnum); | ||
1056 | netif_carrier_on(netdev); | ||
1057 | netif_wake_queue(netdev); | ||
1058 | } else if(!(netif_running(netdev)) && netif_carrier_ok(netdev)) { | ||
1059 | printk(KERN_ERR "%s %s Link is Down\n", | ||
1060 | netxen_nic_driver_name, netdev->name); | ||
1061 | netif_carrier_off(netdev); | ||
1062 | netif_stop_queue(netdev); | ||
1063 | } | ||
1064 | |||
1065 | mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); | 1029 | mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); |
1066 | } | 1030 | } |
1067 | 1031 | ||
@@ -1125,7 +1089,7 @@ static void netxen_process_rcv(struct netxen_adapter *adapter, int ctxid, | |||
1125 | skb = (struct sk_buff *)buffer->skb; | 1089 | skb = (struct sk_buff *)buffer->skb; |
1126 | 1090 | ||
1127 | if (likely(adapter->rx_csum && | 1091 | if (likely(adapter->rx_csum && |
1128 | netxen_get_sts_status(sts_data) == STATUS_CKSUM_OK)) { | 1092 | netxen_get_sts_status(sts_data) == STATUS_CKSUM_OK)) { |
1129 | adapter->stats.csummed++; | 1093 | adapter->stats.csummed++; |
1130 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1094 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
1131 | } else | 1095 | } else |
@@ -1142,40 +1106,8 @@ static void netxen_process_rcv(struct netxen_adapter *adapter, int ctxid, | |||
1142 | skb->protocol = eth_type_trans(skb, netdev); | 1106 | skb->protocol = eth_type_trans(skb, netdev); |
1143 | 1107 | ||
1144 | ret = netif_receive_skb(skb); | 1108 | ret = netif_receive_skb(skb); |
1145 | |||
1146 | /* | ||
1147 | * RH: Do we need these stats on a regular basis. Can we get it from | ||
1148 | * Linux stats. | ||
1149 | */ | ||
1150 | switch (ret) { | ||
1151 | case NET_RX_SUCCESS: | ||
1152 | adapter->stats.uphappy++; | ||
1153 | break; | ||
1154 | |||
1155 | case NET_RX_CN_LOW: | ||
1156 | adapter->stats.uplcong++; | ||
1157 | break; | ||
1158 | |||
1159 | case NET_RX_CN_MOD: | ||
1160 | adapter->stats.upmcong++; | ||
1161 | break; | ||
1162 | |||
1163 | case NET_RX_CN_HIGH: | ||
1164 | adapter->stats.uphcong++; | ||
1165 | break; | ||
1166 | |||
1167 | case NET_RX_DROP: | ||
1168 | adapter->stats.updropped++; | ||
1169 | break; | ||
1170 | |||
1171 | default: | ||
1172 | adapter->stats.updunno++; | ||
1173 | break; | ||
1174 | } | ||
1175 | |||
1176 | netdev->last_rx = jiffies; | 1109 | netdev->last_rx = jiffies; |
1177 | 1110 | ||
1178 | rcv_desc->rcv_free++; | ||
1179 | rcv_desc->rcv_pending--; | 1111 | rcv_desc->rcv_pending--; |
1180 | 1112 | ||
1181 | /* | 1113 | /* |
@@ -1200,13 +1132,6 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max) | |||
1200 | u32 producer = 0; | 1132 | u32 producer = 0; |
1201 | int count = 0, ring; | 1133 | int count = 0, ring; |
1202 | 1134 | ||
1203 | DPRINTK(INFO, "procesing receive\n"); | ||
1204 | /* | ||
1205 | * we assume in this case that there is only one port and that is | ||
1206 | * port #1...changes need to be done in firmware to indicate port | ||
1207 | * number as part of the descriptor. This way we will be able to get | ||
1208 | * the netdev which is associated with that device. | ||
1209 | */ | ||
1210 | while (count < max) { | 1135 | while (count < max) { |
1211 | desc = &desc_head[consumer]; | 1136 | desc = &desc_head[consumer]; |
1212 | if (!(netxen_get_sts_owner(desc) & STATUS_OWNER_HOST)) { | 1137 | if (!(netxen_get_sts_owner(desc) & STATUS_OWNER_HOST)) { |
@@ -1219,11 +1144,8 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max) | |||
1219 | consumer = (consumer + 1) & (adapter->max_rx_desc_count - 1); | 1144 | consumer = (consumer + 1) & (adapter->max_rx_desc_count - 1); |
1220 | count++; | 1145 | count++; |
1221 | } | 1146 | } |
1222 | if (count) { | 1147 | for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) |
1223 | for (ring = 0; ring < NUM_RCV_DESC_RINGS; ring++) { | 1148 | netxen_post_rx_buffers_nodb(adapter, ctxid, ring); |
1224 | netxen_post_rx_buffers_nodb(adapter, ctxid, ring); | ||
1225 | } | ||
1226 | } | ||
1227 | 1149 | ||
1228 | /* update the consumer index in phantom */ | 1150 | /* update the consumer index in phantom */ |
1229 | if (count) { | 1151 | if (count) { |
@@ -1233,108 +1155,60 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max) | |||
1233 | /* Window = 1 */ | 1155 | /* Window = 1 */ |
1234 | writel(consumer, | 1156 | writel(consumer, |
1235 | NETXEN_CRB_NORMALIZE(adapter, | 1157 | NETXEN_CRB_NORMALIZE(adapter, |
1236 | recv_crb_registers[adapter->portnum]. | 1158 | recv_crb_registers[adapter->portnum]. |
1237 | crb_rcv_status_consumer)); | 1159 | crb_rcv_status_consumer)); |
1238 | wmb(); | ||
1239 | } | 1160 | } |
1240 | 1161 | ||
1241 | return count; | 1162 | return count; |
1242 | } | 1163 | } |
1243 | 1164 | ||
1244 | /* Process Command status ring */ | 1165 | /* Process Command status ring */ |
1245 | int netxen_process_cmd_ring(unsigned long data) | 1166 | int netxen_process_cmd_ring(struct netxen_adapter *adapter) |
1246 | { | 1167 | { |
1247 | u32 last_consumer; | 1168 | u32 last_consumer, consumer; |
1248 | u32 consumer; | 1169 | int count = 0, i; |
1249 | struct netxen_adapter *adapter = (struct netxen_adapter *)data; | ||
1250 | int count1 = 0; | ||
1251 | int count2 = 0; | ||
1252 | struct netxen_cmd_buffer *buffer; | 1170 | struct netxen_cmd_buffer *buffer; |
1253 | struct pci_dev *pdev; | 1171 | struct pci_dev *pdev = adapter->pdev; |
1172 | struct net_device *netdev = adapter->netdev; | ||
1254 | struct netxen_skb_frag *frag; | 1173 | struct netxen_skb_frag *frag; |
1255 | u32 i; | 1174 | int done = 0; |
1256 | int done; | ||
1257 | 1175 | ||
1258 | spin_lock(&adapter->tx_lock); | ||
1259 | last_consumer = adapter->last_cmd_consumer; | 1176 | last_consumer = adapter->last_cmd_consumer; |
1260 | DPRINTK(INFO, "procesing xmit complete\n"); | ||
1261 | /* we assume in this case that there is only one port and that is | ||
1262 | * port #1...changes need to be done in firmware to indicate port | ||
1263 | * number as part of the descriptor. This way we will be able to get | ||
1264 | * the netdev which is associated with that device. | ||
1265 | */ | ||
1266 | |||
1267 | consumer = le32_to_cpu(*(adapter->cmd_consumer)); | 1177 | consumer = le32_to_cpu(*(adapter->cmd_consumer)); |
1268 | if (last_consumer == consumer) { /* Ring is empty */ | ||
1269 | DPRINTK(INFO, "last_consumer %d == consumer %d\n", | ||
1270 | last_consumer, consumer); | ||
1271 | spin_unlock(&adapter->tx_lock); | ||
1272 | return 1; | ||
1273 | } | ||
1274 | |||
1275 | adapter->proc_cmd_buf_counter++; | ||
1276 | /* | ||
1277 | * Not needed - does not seem to be used anywhere. | ||
1278 | * adapter->cmd_consumer = consumer; | ||
1279 | */ | ||
1280 | spin_unlock(&adapter->tx_lock); | ||
1281 | 1178 | ||
1282 | while ((last_consumer != consumer) && (count1 < MAX_STATUS_HANDLE)) { | 1179 | while (last_consumer != consumer) { |
1283 | buffer = &adapter->cmd_buf_arr[last_consumer]; | 1180 | buffer = &adapter->cmd_buf_arr[last_consumer]; |
1284 | pdev = adapter->pdev; | ||
1285 | if (buffer->skb) { | 1181 | if (buffer->skb) { |
1286 | frag = &buffer->frag_array[0]; | 1182 | frag = &buffer->frag_array[0]; |
1287 | pci_unmap_single(pdev, frag->dma, frag->length, | 1183 | pci_unmap_single(pdev, frag->dma, frag->length, |
1288 | PCI_DMA_TODEVICE); | 1184 | PCI_DMA_TODEVICE); |
1289 | frag->dma = 0ULL; | 1185 | frag->dma = 0ULL; |
1290 | for (i = 1; i < buffer->frag_count; i++) { | 1186 | for (i = 1; i < buffer->frag_count; i++) { |
1291 | DPRINTK(INFO, "getting fragment no %d\n", i); | ||
1292 | frag++; /* Get the next frag */ | 1187 | frag++; /* Get the next frag */ |
1293 | pci_unmap_page(pdev, frag->dma, frag->length, | 1188 | pci_unmap_page(pdev, frag->dma, frag->length, |
1294 | PCI_DMA_TODEVICE); | 1189 | PCI_DMA_TODEVICE); |
1295 | frag->dma = 0ULL; | 1190 | frag->dma = 0ULL; |
1296 | } | 1191 | } |
1297 | 1192 | ||
1298 | adapter->stats.skbfreed++; | 1193 | adapter->stats.xmitfinished++; |
1299 | dev_kfree_skb_any(buffer->skb); | 1194 | dev_kfree_skb_any(buffer->skb); |
1300 | buffer->skb = NULL; | 1195 | buffer->skb = NULL; |
1301 | } else if (adapter->proc_cmd_buf_counter == 1) { | ||
1302 | adapter->stats.txnullskb++; | ||
1303 | } | ||
1304 | if (unlikely(netif_queue_stopped(adapter->netdev) | ||
1305 | && netif_carrier_ok(adapter->netdev)) | ||
1306 | && ((jiffies - adapter->netdev->trans_start) > | ||
1307 | adapter->netdev->watchdog_timeo)) { | ||
1308 | SCHEDULE_WORK(&adapter->tx_timeout_task); | ||
1309 | } | 1196 | } |
1310 | 1197 | ||
1311 | last_consumer = get_next_index(last_consumer, | 1198 | last_consumer = get_next_index(last_consumer, |
1312 | adapter->max_tx_desc_count); | 1199 | adapter->max_tx_desc_count); |
1313 | count1++; | 1200 | if (++count >= MAX_STATUS_HANDLE) |
1201 | break; | ||
1314 | } | 1202 | } |
1315 | 1203 | ||
1316 | count2 = 0; | 1204 | if (count) { |
1317 | spin_lock(&adapter->tx_lock); | ||
1318 | if ((--adapter->proc_cmd_buf_counter) == 0) { | ||
1319 | adapter->last_cmd_consumer = last_consumer; | 1205 | adapter->last_cmd_consumer = last_consumer; |
1320 | while ((adapter->last_cmd_consumer != consumer) | 1206 | smp_mb(); |
1321 | && (count2 < MAX_STATUS_HANDLE)) { | 1207 | if (netif_queue_stopped(netdev) && netif_running(netdev)) { |
1322 | buffer = | 1208 | netif_tx_lock(netdev); |
1323 | &adapter->cmd_buf_arr[adapter->last_cmd_consumer]; | 1209 | netif_wake_queue(netdev); |
1324 | count2++; | 1210 | smp_mb(); |
1325 | if (buffer->skb) | 1211 | netif_tx_unlock(netdev); |
1326 | break; | ||
1327 | else | ||
1328 | adapter->last_cmd_consumer = | ||
1329 | get_next_index(adapter->last_cmd_consumer, | ||
1330 | adapter->max_tx_desc_count); | ||
1331 | } | ||
1332 | } | ||
1333 | if (count1 || count2) { | ||
1334 | if (netif_queue_stopped(adapter->netdev) | ||
1335 | && (adapter->flags & NETXEN_NETDEV_STATUS)) { | ||
1336 | netif_wake_queue(adapter->netdev); | ||
1337 | adapter->flags &= ~NETXEN_NETDEV_STATUS; | ||
1338 | } | 1212 | } |
1339 | } | 1213 | } |
1340 | /* | 1214 | /* |
@@ -1350,16 +1224,9 @@ int netxen_process_cmd_ring(unsigned long data) | |||
1350 | * There is still a possible race condition and the host could miss an | 1224 | * There is still a possible race condition and the host could miss an |
1351 | * interrupt. The card has to take care of this. | 1225 | * interrupt. The card has to take care of this. |
1352 | */ | 1226 | */ |
1353 | if (adapter->last_cmd_consumer == consumer && | 1227 | consumer = le32_to_cpu(*(adapter->cmd_consumer)); |
1354 | (((adapter->cmd_producer + 1) % | 1228 | done = (last_consumer == consumer); |
1355 | adapter->max_tx_desc_count) == adapter->last_cmd_consumer)) { | ||
1356 | consumer = le32_to_cpu(*(adapter->cmd_consumer)); | ||
1357 | } | ||
1358 | done = (adapter->last_cmd_consumer == consumer); | ||
1359 | 1229 | ||
1360 | spin_unlock(&adapter->tx_lock); | ||
1361 | DPRINTK(INFO, "last consumer is %d in %s\n", last_consumer, | ||
1362 | __FUNCTION__); | ||
1363 | return (done); | 1230 | return (done); |
1364 | } | 1231 | } |
1365 | 1232 | ||
@@ -1433,8 +1300,6 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid) | |||
1433 | rcv_desc->begin_alloc = index; | 1300 | rcv_desc->begin_alloc = index; |
1434 | rcv_desc->rcv_pending += count; | 1301 | rcv_desc->rcv_pending += count; |
1435 | rcv_desc->producer = producer; | 1302 | rcv_desc->producer = producer; |
1436 | if (rcv_desc->rcv_free >= 32) { | ||
1437 | rcv_desc->rcv_free = 0; | ||
1438 | /* Window = 1 */ | 1303 | /* Window = 1 */ |
1439 | writel((producer - 1) & | 1304 | writel((producer - 1) & |
1440 | (rcv_desc->max_rx_desc_count - 1), | 1305 | (rcv_desc->max_rx_desc_count - 1), |
@@ -1458,8 +1323,6 @@ void netxen_post_rx_buffers(struct netxen_adapter *adapter, u32 ctx, u32 ringid) | |||
1458 | writel(msg, | 1323 | writel(msg, |
1459 | DB_NORMALIZE(adapter, | 1324 | DB_NORMALIZE(adapter, |
1460 | NETXEN_RCV_PRODUCER_OFFSET)); | 1325 | NETXEN_RCV_PRODUCER_OFFSET)); |
1461 | wmb(); | ||
1462 | } | ||
1463 | } | 1326 | } |
1464 | } | 1327 | } |
1465 | 1328 | ||
@@ -1523,8 +1386,6 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter, | |||
1523 | rcv_desc->begin_alloc = index; | 1386 | rcv_desc->begin_alloc = index; |
1524 | rcv_desc->rcv_pending += count; | 1387 | rcv_desc->rcv_pending += count; |
1525 | rcv_desc->producer = producer; | 1388 | rcv_desc->producer = producer; |
1526 | if (rcv_desc->rcv_free >= 32) { | ||
1527 | rcv_desc->rcv_free = 0; | ||
1528 | /* Window = 1 */ | 1389 | /* Window = 1 */ |
1529 | writel((producer - 1) & | 1390 | writel((producer - 1) & |
1530 | (rcv_desc->max_rx_desc_count - 1), | 1391 | (rcv_desc->max_rx_desc_count - 1), |
@@ -1534,21 +1395,9 @@ static void netxen_post_rx_buffers_nodb(struct netxen_adapter *adapter, | |||
1534 | rcv_desc_crb[ringid]. | 1395 | rcv_desc_crb[ringid]. |
1535 | crb_rcv_producer_offset)); | 1396 | crb_rcv_producer_offset)); |
1536 | wmb(); | 1397 | wmb(); |
1537 | } | ||
1538 | } | 1398 | } |
1539 | } | 1399 | } |
1540 | 1400 | ||
1541 | int netxen_nic_tx_has_work(struct netxen_adapter *adapter) | ||
1542 | { | ||
1543 | if (find_diff_among(adapter->last_cmd_consumer, | ||
1544 | adapter->cmd_producer, | ||
1545 | adapter->max_tx_desc_count) > 0) | ||
1546 | return 1; | ||
1547 | |||
1548 | return 0; | ||
1549 | } | ||
1550 | |||
1551 | |||
1552 | void netxen_nic_clear_stats(struct netxen_adapter *adapter) | 1401 | void netxen_nic_clear_stats(struct netxen_adapter *adapter) |
1553 | { | 1402 | { |
1554 | memset(&adapter->stats, 0, sizeof(adapter->stats)); | 1403 | memset(&adapter->stats, 0, sizeof(adapter->stats)); |
diff --git a/drivers/net/netxen/netxen_nic_isr.c b/drivers/net/netxen/netxen_nic_isr.c index 48a404aa66ce..c81313b717bd 100644 --- a/drivers/net/netxen/netxen_nic_isr.c +++ b/drivers/net/netxen/netxen_nic_isr.c | |||
@@ -59,7 +59,7 @@ struct net_device_stats *netxen_nic_get_stats(struct net_device *netdev) | |||
59 | /* packet transmit problems */ | 59 | /* packet transmit problems */ |
60 | stats->tx_errors = adapter->stats.nocmddescriptor; | 60 | stats->tx_errors = adapter->stats.nocmddescriptor; |
61 | /* no space in linux buffers */ | 61 | /* no space in linux buffers */ |
62 | stats->rx_dropped = adapter->stats.updropped; | 62 | stats->rx_dropped = adapter->stats.rxdropped; |
63 | /* no space available in linux */ | 63 | /* no space available in linux */ |
64 | stats->tx_dropped = adapter->stats.txdropped; | 64 | stats->tx_dropped = adapter->stats.txdropped; |
65 | 65 | ||
@@ -193,14 +193,14 @@ int netxen_nic_link_ok(struct netxen_adapter *adapter) | |||
193 | void netxen_nic_xgbe_handle_phy_intr(struct netxen_adapter *adapter) | 193 | void netxen_nic_xgbe_handle_phy_intr(struct netxen_adapter *adapter) |
194 | { | 194 | { |
195 | struct net_device *netdev = adapter->netdev; | 195 | struct net_device *netdev = adapter->netdev; |
196 | u32 val, val1; | 196 | u32 val; |
197 | 197 | ||
198 | /* WINDOW = 1 */ | 198 | /* WINDOW = 1 */ |
199 | val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE)); | 199 | val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_XG_STATE)); |
200 | val >>= (physical_port[adapter->portnum] * 8); | 200 | val >>= (physical_port[adapter->portnum] * 8); |
201 | val1 = val & 0xff; | 201 | val &= 0xff; |
202 | 202 | ||
203 | if (adapter->ahw.xg_linkup == 1 && val1 != XG_LINK_UP) { | 203 | if (adapter->ahw.xg_linkup == 1 && val != XG_LINK_UP) { |
204 | printk(KERN_INFO "%s: %s NIC Link is down\n", | 204 | printk(KERN_INFO "%s: %s NIC Link is down\n", |
205 | netxen_nic_driver_name, netdev->name); | 205 | netxen_nic_driver_name, netdev->name); |
206 | adapter->ahw.xg_linkup = 0; | 206 | adapter->ahw.xg_linkup = 0; |
@@ -208,16 +208,7 @@ void netxen_nic_xgbe_handle_phy_intr(struct netxen_adapter *adapter) | |||
208 | netif_carrier_off(netdev); | 208 | netif_carrier_off(netdev); |
209 | netif_stop_queue(netdev); | 209 | netif_stop_queue(netdev); |
210 | } | 210 | } |
211 | /* read twice to clear sticky bits */ | 211 | } else if (adapter->ahw.xg_linkup == 0 && val == XG_LINK_UP) { |
212 | /* WINDOW = 0 */ | ||
213 | netxen_nic_read_w0(adapter, NETXEN_NIU_XG_STATUS, &val1); | ||
214 | netxen_nic_read_w0(adapter, NETXEN_NIU_XG_STATUS, &val1); | ||
215 | |||
216 | if ((val & 0xffb) != 0xffb) { | ||
217 | printk(KERN_INFO "%s ISR: Sync/Align BAD: 0x%08x\n", | ||
218 | netxen_nic_driver_name, val1); | ||
219 | } | ||
220 | } else if (adapter->ahw.xg_linkup == 0 && val1 == XG_LINK_UP) { | ||
221 | printk(KERN_INFO "%s: %s NIC Link is up\n", | 212 | printk(KERN_INFO "%s: %s NIC Link is up\n", |
222 | netxen_nic_driver_name, netdev->name); | 213 | netxen_nic_driver_name, netdev->name); |
223 | adapter->ahw.xg_linkup = 1; | 214 | adapter->ahw.xg_linkup = 1; |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 9737eae5ef11..a8fb439a4d03 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -63,12 +63,12 @@ static int netxen_nic_xmit_frame(struct sk_buff *, struct net_device *); | |||
63 | static void netxen_tx_timeout(struct net_device *netdev); | 63 | static void netxen_tx_timeout(struct net_device *netdev); |
64 | static void netxen_tx_timeout_task(struct work_struct *work); | 64 | static void netxen_tx_timeout_task(struct work_struct *work); |
65 | static void netxen_watchdog(unsigned long); | 65 | static void netxen_watchdog(unsigned long); |
66 | static int netxen_handle_int(struct netxen_adapter *, struct net_device *); | ||
67 | static int netxen_nic_poll(struct napi_struct *napi, int budget); | 66 | static int netxen_nic_poll(struct napi_struct *napi, int budget); |
68 | #ifdef CONFIG_NET_POLL_CONTROLLER | 67 | #ifdef CONFIG_NET_POLL_CONTROLLER |
69 | static void netxen_nic_poll_controller(struct net_device *netdev); | 68 | static void netxen_nic_poll_controller(struct net_device *netdev); |
70 | #endif | 69 | #endif |
71 | static irqreturn_t netxen_intr(int irq, void *data); | 70 | static irqreturn_t netxen_intr(int irq, void *data); |
71 | static irqreturn_t netxen_msi_intr(int irq, void *data); | ||
72 | 72 | ||
73 | int physical_port[] = {0, 1, 2, 3}; | 73 | int physical_port[] = {0, 1, 2, 3}; |
74 | 74 | ||
@@ -149,33 +149,30 @@ static void netxen_nic_update_cmd_consumer(struct netxen_adapter *adapter, | |||
149 | 149 | ||
150 | #define ADAPTER_LIST_SIZE 12 | 150 | #define ADAPTER_LIST_SIZE 12 |
151 | 151 | ||
152 | static uint32_t msi_tgt_status[4] = { | ||
153 | ISR_INT_TARGET_STATUS, ISR_INT_TARGET_STATUS_F1, | ||
154 | ISR_INT_TARGET_STATUS_F2, ISR_INT_TARGET_STATUS_F3 | ||
155 | }; | ||
156 | |||
157 | static uint32_t sw_int_mask[4] = { | ||
158 | CRB_SW_INT_MASK_0, CRB_SW_INT_MASK_1, | ||
159 | CRB_SW_INT_MASK_2, CRB_SW_INT_MASK_3 | ||
160 | }; | ||
161 | |||
152 | static void netxen_nic_disable_int(struct netxen_adapter *adapter) | 162 | static void netxen_nic_disable_int(struct netxen_adapter *adapter) |
153 | { | 163 | { |
154 | uint32_t mask = 0x7ff; | 164 | u32 mask = 0x7ff; |
155 | int retries = 32; | 165 | int retries = 32; |
166 | int port = adapter->portnum; | ||
167 | int pci_fn = adapter->ahw.pci_func; | ||
156 | 168 | ||
157 | DPRINTK(1, INFO, "Entered ISR Disable \n"); | 169 | if (adapter->msi_mode != MSI_MODE_MULTIFUNC) |
158 | 170 | writel(0x0, NETXEN_CRB_NORMALIZE(adapter, sw_int_mask[port])); | |
159 | switch (adapter->portnum) { | ||
160 | case 0: | ||
161 | writel(0x0, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_0)); | ||
162 | break; | ||
163 | case 1: | ||
164 | writel(0x0, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_1)); | ||
165 | break; | ||
166 | case 2: | ||
167 | writel(0x0, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_2)); | ||
168 | break; | ||
169 | case 3: | ||
170 | writel(0x0, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_3)); | ||
171 | break; | ||
172 | } | ||
173 | 171 | ||
174 | if (adapter->intr_scheme != -1 && | 172 | if (adapter->intr_scheme != -1 && |
175 | adapter->intr_scheme != INTR_SCHEME_PERPORT) | 173 | adapter->intr_scheme != INTR_SCHEME_PERPORT) |
176 | writel(mask,PCI_OFFSET_SECOND_RANGE(adapter, ISR_INT_MASK)); | 174 | writel(mask,PCI_OFFSET_SECOND_RANGE(adapter, ISR_INT_MASK)); |
177 | 175 | ||
178 | /* Window = 0 or 1 */ | ||
179 | if (!(adapter->flags & NETXEN_NIC_MSI_ENABLED)) { | 176 | if (!(adapter->flags & NETXEN_NIC_MSI_ENABLED)) { |
180 | do { | 177 | do { |
181 | writel(0xffffffff, | 178 | writel(0xffffffff, |
@@ -190,14 +187,18 @@ static void netxen_nic_disable_int(struct netxen_adapter *adapter) | |||
190 | printk(KERN_NOTICE "%s: Failed to disable interrupt completely\n", | 187 | printk(KERN_NOTICE "%s: Failed to disable interrupt completely\n", |
191 | netxen_nic_driver_name); | 188 | netxen_nic_driver_name); |
192 | } | 189 | } |
190 | } else { | ||
191 | if (adapter->msi_mode == MSI_MODE_MULTIFUNC) { | ||
192 | writel(0xffffffff, PCI_OFFSET_SECOND_RANGE(adapter, | ||
193 | msi_tgt_status[pci_fn])); | ||
194 | } | ||
193 | } | 195 | } |
194 | |||
195 | DPRINTK(1, INFO, "Done with Disable Int\n"); | ||
196 | } | 196 | } |
197 | 197 | ||
198 | static void netxen_nic_enable_int(struct netxen_adapter *adapter) | 198 | static void netxen_nic_enable_int(struct netxen_adapter *adapter) |
199 | { | 199 | { |
200 | u32 mask; | 200 | u32 mask; |
201 | int port = adapter->portnum; | ||
201 | 202 | ||
202 | DPRINTK(1, INFO, "Entered ISR Enable \n"); | 203 | DPRINTK(1, INFO, "Entered ISR Enable \n"); |
203 | 204 | ||
@@ -218,20 +219,7 @@ static void netxen_nic_enable_int(struct netxen_adapter *adapter) | |||
218 | writel(mask, PCI_OFFSET_SECOND_RANGE(adapter, ISR_INT_MASK)); | 219 | writel(mask, PCI_OFFSET_SECOND_RANGE(adapter, ISR_INT_MASK)); |
219 | } | 220 | } |
220 | 221 | ||
221 | switch (adapter->portnum) { | 222 | writel(0x1, NETXEN_CRB_NORMALIZE(adapter, sw_int_mask[port])); |
222 | case 0: | ||
223 | writel(0x1, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_0)); | ||
224 | break; | ||
225 | case 1: | ||
226 | writel(0x1, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_1)); | ||
227 | break; | ||
228 | case 2: | ||
229 | writel(0x1, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_2)); | ||
230 | break; | ||
231 | case 3: | ||
232 | writel(0x1, NETXEN_CRB_NORMALIZE(adapter, CRB_SW_INT_MASK_3)); | ||
233 | break; | ||
234 | } | ||
235 | 223 | ||
236 | if (!(adapter->flags & NETXEN_NIC_MSI_ENABLED)) { | 224 | if (!(adapter->flags & NETXEN_NIC_MSI_ENABLED)) { |
237 | mask = 0xbff; | 225 | mask = 0xbff; |
@@ -328,7 +316,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
328 | 316 | ||
329 | adapter->ahw.pdev = pdev; | 317 | adapter->ahw.pdev = pdev; |
330 | adapter->ahw.pci_func = pci_func_id; | 318 | adapter->ahw.pci_func = pci_func_id; |
331 | spin_lock_init(&adapter->tx_lock); | ||
332 | 319 | ||
333 | /* remap phys address */ | 320 | /* remap phys address */ |
334 | mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */ | 321 | mem_base = pci_resource_start(pdev, 0); /* 0 is for BAR 0 */ |
@@ -401,6 +388,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
401 | 388 | ||
402 | /* this will be read from FW later */ | 389 | /* this will be read from FW later */ |
403 | adapter->intr_scheme = -1; | 390 | adapter->intr_scheme = -1; |
391 | adapter->msi_mode = -1; | ||
404 | 392 | ||
405 | /* This will be reset for mezz cards */ | 393 | /* This will be reset for mezz cards */ |
406 | adapter->portnum = pci_func_id; | 394 | adapter->portnum = pci_func_id; |
@@ -415,7 +403,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
415 | netdev->set_mac_address = netxen_nic_set_mac; | 403 | netdev->set_mac_address = netxen_nic_set_mac; |
416 | netdev->change_mtu = netxen_nic_change_mtu; | 404 | netdev->change_mtu = netxen_nic_change_mtu; |
417 | netdev->tx_timeout = netxen_tx_timeout; | 405 | netdev->tx_timeout = netxen_tx_timeout; |
418 | netdev->watchdog_timeo = HZ; | 406 | netdev->watchdog_timeo = 2*HZ; |
419 | 407 | ||
420 | netxen_nic_change_mtu(netdev, netdev->mtu); | 408 | netxen_nic_change_mtu(netdev, netdev->mtu); |
421 | 409 | ||
@@ -543,7 +531,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
543 | adapter->watchdog_timer.data = (unsigned long)adapter; | 531 | adapter->watchdog_timer.data = (unsigned long)adapter; |
544 | INIT_WORK(&adapter->watchdog_task, netxen_watchdog_task); | 532 | INIT_WORK(&adapter->watchdog_task, netxen_watchdog_task); |
545 | adapter->ahw.pdev = pdev; | 533 | adapter->ahw.pdev = pdev; |
546 | adapter->proc_cmd_buf_counter = 0; | ||
547 | adapter->ahw.revision_id = pdev->revision; | 534 | adapter->ahw.revision_id = pdev->revision; |
548 | 535 | ||
549 | /* make sure Window == 1 */ | 536 | /* make sure Window == 1 */ |
@@ -833,6 +820,8 @@ static int netxen_nic_open(struct net_device *netdev) | |||
833 | struct netxen_adapter *adapter = (struct netxen_adapter *)netdev->priv; | 820 | struct netxen_adapter *adapter = (struct netxen_adapter *)netdev->priv; |
834 | int err = 0; | 821 | int err = 0; |
835 | int ctx, ring; | 822 | int ctx, ring; |
823 | irq_handler_t handler; | ||
824 | unsigned long flags = IRQF_SAMPLE_RANDOM; | ||
836 | 825 | ||
837 | if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) { | 826 | if (adapter->is_up != NETXEN_ADAPTER_UP_MAGIC) { |
838 | err = netxen_init_firmware(adapter); | 827 | err = netxen_init_firmware(adapter); |
@@ -856,9 +845,14 @@ static int netxen_nic_open(struct net_device *netdev) | |||
856 | netxen_post_rx_buffers(adapter, ctx, ring); | 845 | netxen_post_rx_buffers(adapter, ctx, ring); |
857 | } | 846 | } |
858 | adapter->irq = adapter->ahw.pdev->irq; | 847 | adapter->irq = adapter->ahw.pdev->irq; |
859 | err = request_irq(adapter->ahw.pdev->irq, netxen_intr, | 848 | if (adapter->flags & NETXEN_NIC_MSI_ENABLED) |
860 | IRQF_SHARED|IRQF_SAMPLE_RANDOM, netdev->name, | 849 | handler = netxen_msi_intr; |
861 | adapter); | 850 | else { |
851 | flags |= IRQF_SHARED; | ||
852 | handler = netxen_intr; | ||
853 | } | ||
854 | err = request_irq(adapter->irq, handler, | ||
855 | flags, netdev->name, adapter); | ||
862 | if (err) { | 856 | if (err) { |
863 | printk(KERN_ERR "request_irq failed with: %d\n", err); | 857 | printk(KERN_ERR "request_irq failed with: %d\n", err); |
864 | netxen_free_hw_resources(adapter); | 858 | netxen_free_hw_resources(adapter); |
@@ -867,21 +861,12 @@ static int netxen_nic_open(struct net_device *netdev) | |||
867 | 861 | ||
868 | adapter->is_up = NETXEN_ADAPTER_UP_MAGIC; | 862 | adapter->is_up = NETXEN_ADAPTER_UP_MAGIC; |
869 | } | 863 | } |
870 | if (!adapter->driver_mismatch) | ||
871 | mod_timer(&adapter->watchdog_timer, jiffies); | ||
872 | |||
873 | napi_enable(&adapter->napi); | ||
874 | |||
875 | netxen_nic_enable_int(adapter); | ||
876 | |||
877 | /* Done here again so that even if phantom sw overwrote it, | 864 | /* Done here again so that even if phantom sw overwrote it, |
878 | * we set it */ | 865 | * we set it */ |
879 | if (adapter->init_port | 866 | if (adapter->init_port |
880 | && adapter->init_port(adapter, adapter->portnum) != 0) { | 867 | && adapter->init_port(adapter, adapter->portnum) != 0) { |
881 | del_timer_sync(&adapter->watchdog_timer); | ||
882 | printk(KERN_ERR "%s: Failed to initialize port %d\n", | 868 | printk(KERN_ERR "%s: Failed to initialize port %d\n", |
883 | netxen_nic_driver_name, adapter->portnum); | 869 | netxen_nic_driver_name, adapter->portnum); |
884 | napi_disable(&adapter->napi); | ||
885 | return -EIO; | 870 | return -EIO; |
886 | } | 871 | } |
887 | if (adapter->macaddr_set) | 872 | if (adapter->macaddr_set) |
@@ -894,6 +879,12 @@ static int netxen_nic_open(struct net_device *netdev) | |||
894 | adapter->set_mtu(adapter, netdev->mtu); | 879 | adapter->set_mtu(adapter, netdev->mtu); |
895 | 880 | ||
896 | if (!adapter->driver_mismatch) | 881 | if (!adapter->driver_mismatch) |
882 | mod_timer(&adapter->watchdog_timer, jiffies); | ||
883 | |||
884 | napi_enable(&adapter->napi); | ||
885 | netxen_nic_enable_int(adapter); | ||
886 | |||
887 | if (!adapter->driver_mismatch) | ||
897 | netif_start_queue(netdev); | 888 | netif_start_queue(netdev); |
898 | 889 | ||
899 | return 0; | 890 | return 0; |
@@ -958,41 +949,17 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
958 | struct netxen_skb_frag *buffrag; | 949 | struct netxen_skb_frag *buffrag; |
959 | unsigned int i; | 950 | unsigned int i; |
960 | 951 | ||
961 | u32 producer = 0; | 952 | u32 producer, consumer; |
962 | u32 saved_producer = 0; | 953 | u32 saved_producer = 0; |
963 | struct cmd_desc_type0 *hwdesc; | 954 | struct cmd_desc_type0 *hwdesc; |
964 | int k; | 955 | int k; |
965 | struct netxen_cmd_buffer *pbuf = NULL; | 956 | struct netxen_cmd_buffer *pbuf = NULL; |
966 | static int dropped_packet = 0; | ||
967 | int frag_count; | 957 | int frag_count; |
968 | u32 local_producer = 0; | ||
969 | u32 max_tx_desc_count = 0; | ||
970 | u32 last_cmd_consumer = 0; | ||
971 | int no_of_desc; | 958 | int no_of_desc; |
959 | u32 num_txd = adapter->max_tx_desc_count; | ||
972 | 960 | ||
973 | adapter->stats.xmitcalled++; | ||
974 | frag_count = skb_shinfo(skb)->nr_frags + 1; | 961 | frag_count = skb_shinfo(skb)->nr_frags + 1; |
975 | 962 | ||
976 | if (unlikely(skb->len <= 0)) { | ||
977 | dev_kfree_skb_any(skb); | ||
978 | adapter->stats.badskblen++; | ||
979 | return NETDEV_TX_OK; | ||
980 | } | ||
981 | |||
982 | if (frag_count > MAX_BUFFERS_PER_CMD) { | ||
983 | printk("%s: %s netxen_nic_xmit_frame: frag_count (%d) " | ||
984 | "too large, can handle only %d frags\n", | ||
985 | netxen_nic_driver_name, netdev->name, | ||
986 | frag_count, MAX_BUFFERS_PER_CMD); | ||
987 | adapter->stats.txdropped++; | ||
988 | if ((++dropped_packet & 0xff) == 0xff) | ||
989 | printk("%s: %s droppped packets = %d\n", | ||
990 | netxen_nic_driver_name, netdev->name, | ||
991 | dropped_packet); | ||
992 | |||
993 | return NETDEV_TX_OK; | ||
994 | } | ||
995 | |||
996 | /* There 4 fragments per descriptor */ | 963 | /* There 4 fragments per descriptor */ |
997 | no_of_desc = (frag_count + 3) >> 2; | 964 | no_of_desc = (frag_count + 3) >> 2; |
998 | if (netdev->features & NETIF_F_TSO) { | 965 | if (netdev->features & NETIF_F_TSO) { |
@@ -1007,27 +974,16 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1007 | } | 974 | } |
1008 | } | 975 | } |
1009 | 976 | ||
1010 | spin_lock_bh(&adapter->tx_lock); | 977 | producer = adapter->cmd_producer; |
1011 | if (adapter->total_threads >= MAX_XMIT_PRODUCERS) { | 978 | smp_mb(); |
1012 | goto out_requeue; | 979 | consumer = adapter->last_cmd_consumer; |
1013 | } | 980 | if ((no_of_desc+2) > find_diff_among(producer, consumer, num_txd)) { |
1014 | local_producer = adapter->cmd_producer; | 981 | netif_stop_queue(netdev); |
1015 | k = adapter->cmd_producer; | 982 | smp_mb(); |
1016 | max_tx_desc_count = adapter->max_tx_desc_count; | 983 | return NETDEV_TX_BUSY; |
1017 | last_cmd_consumer = adapter->last_cmd_consumer; | ||
1018 | if ((k + no_of_desc) >= | ||
1019 | ((last_cmd_consumer <= k) ? last_cmd_consumer + max_tx_desc_count : | ||
1020 | last_cmd_consumer)) { | ||
1021 | goto out_requeue; | ||
1022 | } | 984 | } |
1023 | k = get_index_range(k, max_tx_desc_count, no_of_desc); | ||
1024 | adapter->cmd_producer = k; | ||
1025 | adapter->total_threads++; | ||
1026 | adapter->num_threads++; | ||
1027 | 985 | ||
1028 | spin_unlock_bh(&adapter->tx_lock); | ||
1029 | /* Copy the descriptors into the hardware */ | 986 | /* Copy the descriptors into the hardware */ |
1030 | producer = local_producer; | ||
1031 | saved_producer = producer; | 987 | saved_producer = producer; |
1032 | hwdesc = &hw->cmd_desc_head[producer]; | 988 | hwdesc = &hw->cmd_desc_head[producer]; |
1033 | memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); | 989 | memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); |
@@ -1067,8 +1023,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1067 | /* move to next desc. if there is a need */ | 1023 | /* move to next desc. if there is a need */ |
1068 | if ((i & 0x3) == 0) { | 1024 | if ((i & 0x3) == 0) { |
1069 | k = 0; | 1025 | k = 0; |
1070 | producer = get_next_index(producer, | 1026 | producer = get_next_index(producer, num_txd); |
1071 | adapter->max_tx_desc_count); | ||
1072 | hwdesc = &hw->cmd_desc_head[producer]; | 1027 | hwdesc = &hw->cmd_desc_head[producer]; |
1073 | memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); | 1028 | memset(hwdesc, 0, sizeof(struct cmd_desc_type0)); |
1074 | pbuf = &adapter->cmd_buf_arr[producer]; | 1029 | pbuf = &adapter->cmd_buf_arr[producer]; |
@@ -1086,7 +1041,6 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1086 | buffrag->dma = temp_dma; | 1041 | buffrag->dma = temp_dma; |
1087 | buffrag->length = temp_len; | 1042 | buffrag->length = temp_len; |
1088 | 1043 | ||
1089 | DPRINTK(INFO, "for loop. i=%d k=%d\n", i, k); | ||
1090 | switch (k) { | 1044 | switch (k) { |
1091 | case 0: | 1045 | case 0: |
1092 | hwdesc->buffer1_length = cpu_to_le16(temp_len); | 1046 | hwdesc->buffer1_length = cpu_to_le16(temp_len); |
@@ -1107,7 +1061,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1107 | } | 1061 | } |
1108 | frag++; | 1062 | frag++; |
1109 | } | 1063 | } |
1110 | producer = get_next_index(producer, adapter->max_tx_desc_count); | 1064 | producer = get_next_index(producer, num_txd); |
1111 | 1065 | ||
1112 | /* might change opcode to TX_TCP_LSO */ | 1066 | /* might change opcode to TX_TCP_LSO */ |
1113 | netxen_tso_check(adapter, &hw->cmd_desc_head[saved_producer], skb); | 1067 | netxen_tso_check(adapter, &hw->cmd_desc_head[saved_producer], skb); |
@@ -1134,7 +1088,7 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1134 | /* copy the first 64 bytes */ | 1088 | /* copy the first 64 bytes */ |
1135 | memcpy(((void *)hwdesc) + 2, | 1089 | memcpy(((void *)hwdesc) + 2, |
1136 | (void *)(skb->data), first_hdr_len); | 1090 | (void *)(skb->data), first_hdr_len); |
1137 | producer = get_next_index(producer, max_tx_desc_count); | 1091 | producer = get_next_index(producer, num_txd); |
1138 | 1092 | ||
1139 | if (more_hdr) { | 1093 | if (more_hdr) { |
1140 | hwdesc = &hw->cmd_desc_head[producer]; | 1094 | hwdesc = &hw->cmd_desc_head[producer]; |
@@ -1147,35 +1101,19 @@ static int netxen_nic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) | |||
1147 | hwdesc, | 1101 | hwdesc, |
1148 | (hdr_len - | 1102 | (hdr_len - |
1149 | first_hdr_len)); | 1103 | first_hdr_len)); |
1150 | producer = get_next_index(producer, max_tx_desc_count); | 1104 | producer = get_next_index(producer, num_txd); |
1151 | } | 1105 | } |
1152 | } | 1106 | } |
1153 | 1107 | ||
1154 | spin_lock_bh(&adapter->tx_lock); | 1108 | adapter->cmd_producer = producer; |
1155 | adapter->stats.txbytes += skb->len; | 1109 | adapter->stats.txbytes += skb->len; |
1156 | 1110 | ||
1157 | /* Code to update the adapter considering how many producer threads | 1111 | netxen_nic_update_cmd_producer(adapter, adapter->cmd_producer); |
1158 | are currently working */ | ||
1159 | if ((--adapter->num_threads) == 0) { | ||
1160 | /* This is the last thread */ | ||
1161 | u32 crb_producer = adapter->cmd_producer; | ||
1162 | netxen_nic_update_cmd_producer(adapter, crb_producer); | ||
1163 | wmb(); | ||
1164 | adapter->total_threads = 0; | ||
1165 | } | ||
1166 | 1112 | ||
1167 | adapter->stats.xmitfinished++; | 1113 | adapter->stats.xmitcalled++; |
1168 | netdev->trans_start = jiffies; | 1114 | netdev->trans_start = jiffies; |
1169 | 1115 | ||
1170 | spin_unlock_bh(&adapter->tx_lock); | ||
1171 | return NETDEV_TX_OK; | 1116 | return NETDEV_TX_OK; |
1172 | |||
1173 | out_requeue: | ||
1174 | netif_stop_queue(netdev); | ||
1175 | adapter->flags |= NETXEN_NETDEV_STATUS; | ||
1176 | |||
1177 | spin_unlock_bh(&adapter->tx_lock); | ||
1178 | return NETDEV_TX_BUSY; | ||
1179 | } | 1117 | } |
1180 | 1118 | ||
1181 | static void netxen_watchdog(unsigned long v) | 1119 | static void netxen_watchdog(unsigned long v) |
@@ -1200,87 +1138,60 @@ static void netxen_tx_timeout_task(struct work_struct *work) | |||
1200 | printk(KERN_ERR "%s %s: transmit timeout, resetting.\n", | 1138 | printk(KERN_ERR "%s %s: transmit timeout, resetting.\n", |
1201 | netxen_nic_driver_name, adapter->netdev->name); | 1139 | netxen_nic_driver_name, adapter->netdev->name); |
1202 | 1140 | ||
1203 | netxen_nic_close(adapter->netdev); | 1141 | netxen_nic_disable_int(adapter); |
1204 | netxen_nic_open(adapter->netdev); | 1142 | napi_disable(&adapter->napi); |
1143 | |||
1205 | adapter->netdev->trans_start = jiffies; | 1144 | adapter->netdev->trans_start = jiffies; |
1145 | |||
1146 | napi_enable(&adapter->napi); | ||
1147 | netxen_nic_enable_int(adapter); | ||
1206 | netif_wake_queue(adapter->netdev); | 1148 | netif_wake_queue(adapter->netdev); |
1207 | } | 1149 | } |
1208 | 1150 | ||
1209 | static int | 1151 | static inline void |
1210 | netxen_handle_int(struct netxen_adapter *adapter, struct net_device *netdev) | 1152 | netxen_handle_int(struct netxen_adapter *adapter) |
1211 | { | 1153 | { |
1212 | u32 ret = 0; | ||
1213 | |||
1214 | DPRINTK(INFO, "Entered handle ISR\n"); | ||
1215 | adapter->stats.ints++; | ||
1216 | |||
1217 | netxen_nic_disable_int(adapter); | 1154 | netxen_nic_disable_int(adapter); |
1218 | 1155 | napi_schedule(&adapter->napi); | |
1219 | if (netxen_nic_rx_has_work(adapter) || netxen_nic_tx_has_work(adapter)) { | ||
1220 | if (netif_rx_schedule_prep(netdev, &adapter->napi)) { | ||
1221 | /* | ||
1222 | * Interrupts are already disabled. | ||
1223 | */ | ||
1224 | __netif_rx_schedule(netdev, &adapter->napi); | ||
1225 | } else { | ||
1226 | static unsigned int intcount = 0; | ||
1227 | if ((++intcount & 0xfff) == 0xfff) | ||
1228 | DPRINTK(KERN_ERR | ||
1229 | "%s: %s interrupt %d while in poll\n", | ||
1230 | netxen_nic_driver_name, netdev->name, | ||
1231 | intcount); | ||
1232 | } | ||
1233 | ret = 1; | ||
1234 | } | ||
1235 | |||
1236 | if (ret == 0) { | ||
1237 | netxen_nic_enable_int(adapter); | ||
1238 | } | ||
1239 | |||
1240 | return ret; | ||
1241 | } | 1156 | } |
1242 | 1157 | ||
1243 | /* | ||
1244 | * netxen_intr - Interrupt Handler | ||
1245 | * @irq: interrupt number | ||
1246 | * data points to adapter stucture (which may be handling more than 1 port | ||
1247 | */ | ||
1248 | irqreturn_t netxen_intr(int irq, void *data) | 1158 | irqreturn_t netxen_intr(int irq, void *data) |
1249 | { | 1159 | { |
1250 | struct netxen_adapter *adapter = data; | 1160 | struct netxen_adapter *adapter = data; |
1251 | struct net_device *netdev = adapter->netdev; | ||
1252 | u32 our_int = 0; | 1161 | u32 our_int = 0; |
1253 | 1162 | ||
1254 | if (!(adapter->flags & NETXEN_NIC_MSI_ENABLED)) { | 1163 | our_int = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_INT_VECTOR)); |
1255 | our_int = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_INT_VECTOR)); | 1164 | /* not our interrupt */ |
1256 | /* not our interrupt */ | 1165 | if ((our_int & (0x80 << adapter->portnum)) == 0) |
1257 | if ((our_int & (0x80 << adapter->portnum)) == 0) | 1166 | return IRQ_NONE; |
1258 | return IRQ_NONE; | ||
1259 | } | ||
1260 | 1167 | ||
1261 | if (adapter->intr_scheme == INTR_SCHEME_PERPORT) { | 1168 | if (adapter->intr_scheme == INTR_SCHEME_PERPORT) { |
1262 | /* claim interrupt */ | 1169 | /* claim interrupt */ |
1263 | if (!(adapter->flags & NETXEN_NIC_MSI_ENABLED)) { | 1170 | writel(our_int & ~((u32)(0x80 << adapter->portnum)), |
1264 | writel(our_int & ~((u32)(0x80 << adapter->portnum)), | ||
1265 | NETXEN_CRB_NORMALIZE(adapter, CRB_INT_VECTOR)); | 1171 | NETXEN_CRB_NORMALIZE(adapter, CRB_INT_VECTOR)); |
1266 | } | ||
1267 | } | 1172 | } |
1268 | 1173 | ||
1269 | if (netif_running(netdev)) | 1174 | netxen_handle_int(adapter); |
1270 | netxen_handle_int(adapter, netdev); | ||
1271 | 1175 | ||
1272 | return IRQ_HANDLED; | 1176 | return IRQ_HANDLED; |
1273 | } | 1177 | } |
1274 | 1178 | ||
1179 | irqreturn_t netxen_msi_intr(int irq, void *data) | ||
1180 | { | ||
1181 | struct netxen_adapter *adapter = data; | ||
1182 | |||
1183 | netxen_handle_int(adapter); | ||
1184 | return IRQ_HANDLED; | ||
1185 | } | ||
1186 | |||
1275 | static int netxen_nic_poll(struct napi_struct *napi, int budget) | 1187 | static int netxen_nic_poll(struct napi_struct *napi, int budget) |
1276 | { | 1188 | { |
1277 | struct netxen_adapter *adapter = container_of(napi, struct netxen_adapter, napi); | 1189 | struct netxen_adapter *adapter = container_of(napi, struct netxen_adapter, napi); |
1278 | struct net_device *netdev = adapter->netdev; | 1190 | int tx_complete; |
1279 | int done = 1; | ||
1280 | int ctx; | 1191 | int ctx; |
1281 | int work_done; | 1192 | int work_done; |
1282 | 1193 | ||
1283 | DPRINTK(INFO, "polling for %d descriptors\n", *budget); | 1194 | tx_complete = netxen_process_cmd_ring(adapter); |
1284 | 1195 | ||
1285 | work_done = 0; | 1196 | work_done = 0; |
1286 | for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) { | 1197 | for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) { |
@@ -1300,16 +1211,8 @@ static int netxen_nic_poll(struct napi_struct *napi, int budget) | |||
1300 | budget / MAX_RCV_CTX); | 1211 | budget / MAX_RCV_CTX); |
1301 | } | 1212 | } |
1302 | 1213 | ||
1303 | if (work_done >= budget) | 1214 | if ((work_done < budget) && tx_complete) { |
1304 | done = 0; | 1215 | netif_rx_complete(adapter->netdev, &adapter->napi); |
1305 | |||
1306 | if (netxen_process_cmd_ring((unsigned long)adapter) == 0) | ||
1307 | done = 0; | ||
1308 | |||
1309 | DPRINTK(INFO, "new work_done: %d work_to_do: %d\n", | ||
1310 | work_done, work_to_do); | ||
1311 | if (done) { | ||
1312 | netif_rx_complete(netdev, napi); | ||
1313 | netxen_nic_enable_int(adapter); | 1216 | netxen_nic_enable_int(adapter); |
1314 | } | 1217 | } |
1315 | 1218 | ||
diff --git a/drivers/net/netxen/netxen_nic_phan_reg.h b/drivers/net/netxen/netxen_nic_phan_reg.h index ffa3b7215ce8..a566b50f36f5 100644 --- a/drivers/net/netxen/netxen_nic_phan_reg.h +++ b/drivers/net/netxen/netxen_nic_phan_reg.h | |||
@@ -126,8 +126,11 @@ | |||
126 | */ | 126 | */ |
127 | #define CRB_NIC_CAPABILITIES_HOST NETXEN_NIC_REG(0x1a8) | 127 | #define CRB_NIC_CAPABILITIES_HOST NETXEN_NIC_REG(0x1a8) |
128 | #define CRB_NIC_CAPABILITIES_FW NETXEN_NIC_REG(0x1dc) | 128 | #define CRB_NIC_CAPABILITIES_FW NETXEN_NIC_REG(0x1dc) |
129 | #define CRB_NIC_MSI_MODE_HOST NETXEN_NIC_REG(0x270) | ||
130 | #define CRB_NIC_MSI_MODE_FW NETXEN_NIC_REG(0x274) | ||
129 | 131 | ||
130 | #define INTR_SCHEME_PERPORT 0x1 | 132 | #define INTR_SCHEME_PERPORT 0x1 |
133 | #define MSI_MODE_MULTIFUNC 0x1 | ||
131 | 134 | ||
132 | /* used for ethtool tests */ | 135 | /* used for ethtool tests */ |
133 | #define CRB_SCRATCHPAD_TEST NETXEN_NIC_REG(0x280) | 136 | #define CRB_SCRATCHPAD_TEST NETXEN_NIC_REG(0x280) |
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c index f0574073a2a3..32a8503a7acd 100644 --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c | |||
@@ -58,9 +58,25 @@ | |||
58 | #define MII_M1111_RX_DELAY 0x80 | 58 | #define MII_M1111_RX_DELAY 0x80 |
59 | #define MII_M1111_TX_DELAY 0x2 | 59 | #define MII_M1111_TX_DELAY 0x2 |
60 | #define MII_M1111_PHY_EXT_SR 0x1b | 60 | #define MII_M1111_PHY_EXT_SR 0x1b |
61 | #define MII_M1111_HWCFG_MODE_MASK 0xf | 61 | |
62 | #define MII_M1111_HWCFG_MODE_RGMII 0xb | 62 | #define MII_M1111_HWCFG_MODE_MASK 0xf |
63 | #define MII_M1111_HWCFG_MODE_COPPER_RGMII 0xb | ||
64 | #define MII_M1111_HWCFG_MODE_FIBER_RGMII 0x3 | ||
63 | #define MII_M1111_HWCFG_MODE_SGMII_NO_CLK 0x4 | 65 | #define MII_M1111_HWCFG_MODE_SGMII_NO_CLK 0x4 |
66 | #define MII_M1111_HWCFG_FIBER_COPPER_AUTO 0x8000 | ||
67 | #define MII_M1111_HWCFG_FIBER_COPPER_RES 0x2000 | ||
68 | |||
69 | #define MII_M1111_COPPER 0 | ||
70 | #define MII_M1111_FIBER 1 | ||
71 | |||
72 | #define MII_M1011_PHY_STATUS 0x11 | ||
73 | #define MII_M1011_PHY_STATUS_1000 0x8000 | ||
74 | #define MII_M1011_PHY_STATUS_100 0x4000 | ||
75 | #define MII_M1011_PHY_STATUS_SPD_MASK 0xc000 | ||
76 | #define MII_M1011_PHY_STATUS_FULLDUPLEX 0x2000 | ||
77 | #define MII_M1011_PHY_STATUS_RESOLVED 0x0800 | ||
78 | #define MII_M1011_PHY_STATUS_LINK 0x0400 | ||
79 | |||
64 | 80 | ||
65 | MODULE_DESCRIPTION("Marvell PHY driver"); | 81 | MODULE_DESCRIPTION("Marvell PHY driver"); |
66 | MODULE_AUTHOR("Andy Fleming"); | 82 | MODULE_AUTHOR("Andy Fleming"); |
@@ -141,12 +157,22 @@ static int marvell_config_aneg(struct phy_device *phydev) | |||
141 | static int m88e1111_config_init(struct phy_device *phydev) | 157 | static int m88e1111_config_init(struct phy_device *phydev) |
142 | { | 158 | { |
143 | int err; | 159 | int err; |
160 | int temp; | ||
161 | int mode; | ||
162 | |||
163 | /* Enable Fiber/Copper auto selection */ | ||
164 | temp = phy_read(phydev, MII_M1111_PHY_EXT_SR); | ||
165 | temp |= MII_M1111_HWCFG_FIBER_COPPER_AUTO; | ||
166 | phy_write(phydev, MII_M1111_PHY_EXT_SR, temp); | ||
167 | |||
168 | temp = phy_read(phydev, MII_BMCR); | ||
169 | temp |= BMCR_RESET; | ||
170 | phy_write(phydev, MII_BMCR, temp); | ||
144 | 171 | ||
145 | if ((phydev->interface == PHY_INTERFACE_MODE_RGMII) || | 172 | if ((phydev->interface == PHY_INTERFACE_MODE_RGMII) || |
146 | (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) || | 173 | (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) || |
147 | (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) || | 174 | (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) || |
148 | (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) { | 175 | (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID)) { |
149 | int temp; | ||
150 | 176 | ||
151 | temp = phy_read(phydev, MII_M1111_PHY_EXT_CR); | 177 | temp = phy_read(phydev, MII_M1111_PHY_EXT_CR); |
152 | if (temp < 0) | 178 | if (temp < 0) |
@@ -171,7 +197,13 @@ static int m88e1111_config_init(struct phy_device *phydev) | |||
171 | return temp; | 197 | return temp; |
172 | 198 | ||
173 | temp &= ~(MII_M1111_HWCFG_MODE_MASK); | 199 | temp &= ~(MII_M1111_HWCFG_MODE_MASK); |
174 | temp |= MII_M1111_HWCFG_MODE_RGMII; | 200 | |
201 | mode = phy_read(phydev, MII_M1111_PHY_EXT_CR); | ||
202 | |||
203 | if (mode & MII_M1111_HWCFG_FIBER_COPPER_RES) | ||
204 | temp |= MII_M1111_HWCFG_MODE_FIBER_RGMII; | ||
205 | else | ||
206 | temp |= MII_M1111_HWCFG_MODE_COPPER_RGMII; | ||
175 | 207 | ||
176 | err = phy_write(phydev, MII_M1111_PHY_EXT_SR, temp); | 208 | err = phy_write(phydev, MII_M1111_PHY_EXT_SR, temp); |
177 | if (err < 0) | 209 | if (err < 0) |
@@ -179,8 +211,6 @@ static int m88e1111_config_init(struct phy_device *phydev) | |||
179 | } | 211 | } |
180 | 212 | ||
181 | if (phydev->interface == PHY_INTERFACE_MODE_SGMII) { | 213 | if (phydev->interface == PHY_INTERFACE_MODE_SGMII) { |
182 | int temp; | ||
183 | |||
184 | temp = phy_read(phydev, MII_M1111_PHY_EXT_SR); | 214 | temp = phy_read(phydev, MII_M1111_PHY_EXT_SR); |
185 | if (temp < 0) | 215 | if (temp < 0) |
186 | return temp; | 216 | return temp; |
@@ -262,6 +292,93 @@ static int m88e1145_config_init(struct phy_device *phydev) | |||
262 | return 0; | 292 | return 0; |
263 | } | 293 | } |
264 | 294 | ||
295 | /* marvell_read_status | ||
296 | * | ||
297 | * Generic status code does not detect Fiber correctly! | ||
298 | * Description: | ||
299 | * Check the link, then figure out the current state | ||
300 | * by comparing what we advertise with what the link partner | ||
301 | * advertises. Start by checking the gigabit possibilities, | ||
302 | * then move on to 10/100. | ||
303 | */ | ||
304 | static int marvell_read_status(struct phy_device *phydev) | ||
305 | { | ||
306 | int adv; | ||
307 | int err; | ||
308 | int lpa; | ||
309 | int status = 0; | ||
310 | |||
311 | /* Update the link, but return if there | ||
312 | * was an error */ | ||
313 | err = genphy_update_link(phydev); | ||
314 | if (err) | ||
315 | return err; | ||
316 | |||
317 | if (AUTONEG_ENABLE == phydev->autoneg) { | ||
318 | status = phy_read(phydev, MII_M1011_PHY_STATUS); | ||
319 | if (status < 0) | ||
320 | return status; | ||
321 | |||
322 | lpa = phy_read(phydev, MII_LPA); | ||
323 | if (lpa < 0) | ||
324 | return lpa; | ||
325 | |||
326 | adv = phy_read(phydev, MII_ADVERTISE); | ||
327 | if (adv < 0) | ||
328 | return adv; | ||
329 | |||
330 | lpa &= adv; | ||
331 | |||
332 | if (status & MII_M1011_PHY_STATUS_FULLDUPLEX) | ||
333 | phydev->duplex = DUPLEX_FULL; | ||
334 | else | ||
335 | phydev->duplex = DUPLEX_HALF; | ||
336 | |||
337 | status = status & MII_M1011_PHY_STATUS_SPD_MASK; | ||
338 | phydev->pause = phydev->asym_pause = 0; | ||
339 | |||
340 | switch (status) { | ||
341 | case MII_M1011_PHY_STATUS_1000: | ||
342 | phydev->speed = SPEED_1000; | ||
343 | break; | ||
344 | |||
345 | case MII_M1011_PHY_STATUS_100: | ||
346 | phydev->speed = SPEED_100; | ||
347 | break; | ||
348 | |||
349 | default: | ||
350 | phydev->speed = SPEED_10; | ||
351 | break; | ||
352 | } | ||
353 | |||
354 | if (phydev->duplex == DUPLEX_FULL) { | ||
355 | phydev->pause = lpa & LPA_PAUSE_CAP ? 1 : 0; | ||
356 | phydev->asym_pause = lpa & LPA_PAUSE_ASYM ? 1 : 0; | ||
357 | } | ||
358 | } else { | ||
359 | int bmcr = phy_read(phydev, MII_BMCR); | ||
360 | |||
361 | if (bmcr < 0) | ||
362 | return bmcr; | ||
363 | |||
364 | if (bmcr & BMCR_FULLDPLX) | ||
365 | phydev->duplex = DUPLEX_FULL; | ||
366 | else | ||
367 | phydev->duplex = DUPLEX_HALF; | ||
368 | |||
369 | if (bmcr & BMCR_SPEED1000) | ||
370 | phydev->speed = SPEED_1000; | ||
371 | else if (bmcr & BMCR_SPEED100) | ||
372 | phydev->speed = SPEED_100; | ||
373 | else | ||
374 | phydev->speed = SPEED_10; | ||
375 | |||
376 | phydev->pause = phydev->asym_pause = 0; | ||
377 | } | ||
378 | |||
379 | return 0; | ||
380 | } | ||
381 | |||
265 | static struct phy_driver marvell_drivers[] = { | 382 | static struct phy_driver marvell_drivers[] = { |
266 | { | 383 | { |
267 | .phy_id = 0x01410c60, | 384 | .phy_id = 0x01410c60, |
@@ -296,7 +413,7 @@ static struct phy_driver marvell_drivers[] = { | |||
296 | .flags = PHY_HAS_INTERRUPT, | 413 | .flags = PHY_HAS_INTERRUPT, |
297 | .config_init = &m88e1111_config_init, | 414 | .config_init = &m88e1111_config_init, |
298 | .config_aneg = &marvell_config_aneg, | 415 | .config_aneg = &marvell_config_aneg, |
299 | .read_status = &genphy_read_status, | 416 | .read_status = &marvell_read_status, |
300 | .ack_interrupt = &marvell_ack_interrupt, | 417 | .ack_interrupt = &marvell_ack_interrupt, |
301 | .config_intr = &marvell_config_intr, | 418 | .config_intr = &marvell_config_intr, |
302 | .driver = { .owner = THIS_MODULE }, | 419 | .driver = { .owner = THIS_MODULE }, |
diff --git a/drivers/net/plip.c b/drivers/net/plip.c index fee3d7b1feba..1e965427b0e9 100644 --- a/drivers/net/plip.c +++ b/drivers/net/plip.c | |||
@@ -903,17 +903,18 @@ plip_interrupt(void *dev_id) | |||
903 | struct net_local *nl; | 903 | struct net_local *nl; |
904 | struct plip_local *rcv; | 904 | struct plip_local *rcv; |
905 | unsigned char c0; | 905 | unsigned char c0; |
906 | unsigned long flags; | ||
906 | 907 | ||
907 | nl = netdev_priv(dev); | 908 | nl = netdev_priv(dev); |
908 | rcv = &nl->rcv_data; | 909 | rcv = &nl->rcv_data; |
909 | 910 | ||
910 | spin_lock_irq (&nl->lock); | 911 | spin_lock_irqsave (&nl->lock, flags); |
911 | 912 | ||
912 | c0 = read_status(dev); | 913 | c0 = read_status(dev); |
913 | if ((c0 & 0xf8) != 0xc0) { | 914 | if ((c0 & 0xf8) != 0xc0) { |
914 | if ((dev->irq != -1) && (net_debug > 1)) | 915 | if ((dev->irq != -1) && (net_debug > 1)) |
915 | printk(KERN_DEBUG "%s: spurious interrupt\n", dev->name); | 916 | printk(KERN_DEBUG "%s: spurious interrupt\n", dev->name); |
916 | spin_unlock_irq (&nl->lock); | 917 | spin_unlock_irqrestore (&nl->lock, flags); |
917 | return; | 918 | return; |
918 | } | 919 | } |
919 | 920 | ||
@@ -942,7 +943,7 @@ plip_interrupt(void *dev_id) | |||
942 | break; | 943 | break; |
943 | } | 944 | } |
944 | 945 | ||
945 | spin_unlock_irq(&nl->lock); | 946 | spin_unlock_irqrestore(&nl->lock, flags); |
946 | } | 947 | } |
947 | 948 | ||
948 | static int | 949 | static int |
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index c72787adeba3..c082cf0b1ac6 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -84,7 +84,7 @@ | |||
84 | #include "s2io.h" | 84 | #include "s2io.h" |
85 | #include "s2io-regs.h" | 85 | #include "s2io-regs.h" |
86 | 86 | ||
87 | #define DRV_VERSION "2.0.26.15-2" | 87 | #define DRV_VERSION "2.0.26.20" |
88 | 88 | ||
89 | /* S2io Driver name & version. */ | 89 | /* S2io Driver name & version. */ |
90 | static char s2io_driver_name[] = "Neterion"; | 90 | static char s2io_driver_name[] = "Neterion"; |
@@ -4172,6 +4172,9 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev) | |||
4172 | dev->trans_start = jiffies; | 4172 | dev->trans_start = jiffies; |
4173 | spin_unlock_irqrestore(&fifo->tx_lock, flags); | 4173 | spin_unlock_irqrestore(&fifo->tx_lock, flags); |
4174 | 4174 | ||
4175 | if (sp->config.intr_type == MSI_X) | ||
4176 | tx_intr_handler(fifo); | ||
4177 | |||
4175 | return 0; | 4178 | return 0; |
4176 | pci_map_failed: | 4179 | pci_map_failed: |
4177 | stats->pci_map_fail_cnt++; | 4180 | stats->pci_map_fail_cnt++; |
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 186eb8ebfda6..2e26dced13a1 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -3199,12 +3199,14 @@ static int skge_poll(struct napi_struct *napi, int to_do) | |||
3199 | skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR), CSR_START); | 3199 | skge_write8(hw, Q_ADDR(rxqaddr[skge->port], Q_CSR), CSR_START); |
3200 | 3200 | ||
3201 | if (work_done < to_do) { | 3201 | if (work_done < to_do) { |
3202 | spin_lock_irq(&hw->hw_lock); | 3202 | unsigned long flags; |
3203 | |||
3204 | spin_lock_irqsave(&hw->hw_lock, flags); | ||
3203 | __netif_rx_complete(dev, napi); | 3205 | __netif_rx_complete(dev, napi); |
3204 | hw->intr_mask |= napimask[skge->port]; | 3206 | hw->intr_mask |= napimask[skge->port]; |
3205 | skge_write32(hw, B0_IMSK, hw->intr_mask); | 3207 | skge_write32(hw, B0_IMSK, hw->intr_mask); |
3206 | skge_read32(hw, B0_IMSK); | 3208 | skge_read32(hw, B0_IMSK); |
3207 | spin_unlock_irq(&hw->hw_lock); | 3209 | spin_unlock_irqrestore(&hw->hw_lock, flags); |
3208 | } | 3210 | } |
3209 | 3211 | ||
3210 | return work_done; | 3212 | return work_done; |
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 54c662690f65..853bce0ac478 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c | |||
@@ -4329,10 +4329,14 @@ static int sky2_suspend(struct pci_dev *pdev, pm_message_t state) | |||
4329 | if (!hw) | 4329 | if (!hw) |
4330 | return 0; | 4330 | return 0; |
4331 | 4331 | ||
4332 | del_timer_sync(&hw->watchdog_timer); | ||
4333 | cancel_work_sync(&hw->restart_work); | ||
4334 | |||
4332 | for (i = 0; i < hw->ports; i++) { | 4335 | for (i = 0; i < hw->ports; i++) { |
4333 | struct net_device *dev = hw->dev[i]; | 4336 | struct net_device *dev = hw->dev[i]; |
4334 | struct sky2_port *sky2 = netdev_priv(dev); | 4337 | struct sky2_port *sky2 = netdev_priv(dev); |
4335 | 4338 | ||
4339 | netif_device_detach(dev); | ||
4336 | if (netif_running(dev)) | 4340 | if (netif_running(dev)) |
4337 | sky2_down(dev); | 4341 | sky2_down(dev); |
4338 | 4342 | ||
@@ -4383,6 +4387,8 @@ static int sky2_resume(struct pci_dev *pdev) | |||
4383 | 4387 | ||
4384 | for (i = 0; i < hw->ports; i++) { | 4388 | for (i = 0; i < hw->ports; i++) { |
4385 | struct net_device *dev = hw->dev[i]; | 4389 | struct net_device *dev = hw->dev[i]; |
4390 | |||
4391 | netif_device_attach(dev); | ||
4386 | if (netif_running(dev)) { | 4392 | if (netif_running(dev)) { |
4387 | err = sky2_up(dev); | 4393 | err = sky2_up(dev); |
4388 | if (err) { | 4394 | if (err) { |
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c index c49214feae91..7b7b1717b0d1 100644 --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c | |||
@@ -1472,13 +1472,12 @@ static int __netdev_rx(struct net_device *dev, int *quota) | |||
1472 | #ifndef final_version /* Remove after testing. */ | 1472 | #ifndef final_version /* Remove after testing. */ |
1473 | /* You will want this info for the initial debug. */ | 1473 | /* You will want this info for the initial debug. */ |
1474 | if (debug > 5) { | 1474 | if (debug > 5) { |
1475 | DECLARE_MAC_BUF(mac); | 1475 | printk(KERN_DEBUG " Rx data " MAC_FMT " " MAC_FMT |
1476 | DECLARE_MAC_BUF(mac2); | ||
1477 | |||
1478 | printk(KERN_DEBUG " Rx data %s %s" | ||
1479 | " %2.2x%2.2x.\n", | 1476 | " %2.2x%2.2x.\n", |
1480 | print_mac(mac, &skb->data[0]), | 1477 | skb->data[0], skb->data[1], skb->data[2], |
1481 | print_mac(mac2, &skb->data[6]), | 1478 | skb->data[3], skb->data[4], skb->data[5], |
1479 | skb->data[6], skb->data[7], skb->data[8], | ||
1480 | skb->data[9], skb->data[10], skb->data[11], | ||
1482 | skb->data[12], skb->data[13]); | 1481 | skb->data[12], skb->data[13]); |
1483 | } | 1482 | } |
1484 | #endif | 1483 | #endif |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index f9ef8bd8b11e..d4655b2d1f3f 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -64,8 +64,8 @@ | |||
64 | 64 | ||
65 | #define DRV_MODULE_NAME "tg3" | 65 | #define DRV_MODULE_NAME "tg3" |
66 | #define PFX DRV_MODULE_NAME ": " | 66 | #define PFX DRV_MODULE_NAME ": " |
67 | #define DRV_MODULE_VERSION "3.88" | 67 | #define DRV_MODULE_VERSION "3.89" |
68 | #define DRV_MODULE_RELDATE "March 20, 2008" | 68 | #define DRV_MODULE_RELDATE "April 03, 2008" |
69 | 69 | ||
70 | #define TG3_DEF_MAC_MODE 0 | 70 | #define TG3_DEF_MAC_MODE 0 |
71 | #define TG3_DEF_RX_MODE 0 | 71 | #define TG3_DEF_RX_MODE 0 |
@@ -804,6 +804,12 @@ static int tg3_writephy(struct tg3 *tp, int reg, u32 val) | |||
804 | return ret; | 804 | return ret; |
805 | } | 805 | } |
806 | 806 | ||
807 | static void tg3_phydsp_write(struct tg3 *tp, u32 reg, u32 val) | ||
808 | { | ||
809 | tg3_writephy(tp, MII_TG3_DSP_ADDRESS, reg); | ||
810 | tg3_writephy(tp, MII_TG3_DSP_RW_PORT, val); | ||
811 | } | ||
812 | |||
807 | static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable) | 813 | static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable) |
808 | { | 814 | { |
809 | u32 phy; | 815 | u32 phy; |
@@ -886,6 +892,49 @@ static int tg3_bmcr_reset(struct tg3 *tp) | |||
886 | return 0; | 892 | return 0; |
887 | } | 893 | } |
888 | 894 | ||
895 | static void tg3_phy_apply_otp(struct tg3 *tp) | ||
896 | { | ||
897 | u32 otp, phy; | ||
898 | |||
899 | if (!tp->phy_otp) | ||
900 | return; | ||
901 | |||
902 | otp = tp->phy_otp; | ||
903 | |||
904 | /* Enable SM_DSP clock and tx 6dB coding. */ | ||
905 | phy = MII_TG3_AUXCTL_SHDWSEL_AUXCTL | | ||
906 | MII_TG3_AUXCTL_ACTL_SMDSP_ENA | | ||
907 | MII_TG3_AUXCTL_ACTL_TX_6DB; | ||
908 | tg3_writephy(tp, MII_TG3_AUX_CTRL, phy); | ||
909 | |||
910 | phy = ((otp & TG3_OTP_AGCTGT_MASK) >> TG3_OTP_AGCTGT_SHIFT); | ||
911 | phy |= MII_TG3_DSP_TAP1_AGCTGT_DFLT; | ||
912 | tg3_phydsp_write(tp, MII_TG3_DSP_TAP1, phy); | ||
913 | |||
914 | phy = ((otp & TG3_OTP_HPFFLTR_MASK) >> TG3_OTP_HPFFLTR_SHIFT) | | ||
915 | ((otp & TG3_OTP_HPFOVER_MASK) >> TG3_OTP_HPFOVER_SHIFT); | ||
916 | tg3_phydsp_write(tp, MII_TG3_DSP_AADJ1CH0, phy); | ||
917 | |||
918 | phy = ((otp & TG3_OTP_LPFDIS_MASK) >> TG3_OTP_LPFDIS_SHIFT); | ||
919 | phy |= MII_TG3_DSP_AADJ1CH3_ADCCKADJ; | ||
920 | tg3_phydsp_write(tp, MII_TG3_DSP_AADJ1CH3, phy); | ||
921 | |||
922 | phy = ((otp & TG3_OTP_VDAC_MASK) >> TG3_OTP_VDAC_SHIFT); | ||
923 | tg3_phydsp_write(tp, MII_TG3_DSP_EXP75, phy); | ||
924 | |||
925 | phy = ((otp & TG3_OTP_10BTAMP_MASK) >> TG3_OTP_10BTAMP_SHIFT); | ||
926 | tg3_phydsp_write(tp, MII_TG3_DSP_EXP96, phy); | ||
927 | |||
928 | phy = ((otp & TG3_OTP_ROFF_MASK) >> TG3_OTP_ROFF_SHIFT) | | ||
929 | ((otp & TG3_OTP_RCOFF_MASK) >> TG3_OTP_RCOFF_SHIFT); | ||
930 | tg3_phydsp_write(tp, MII_TG3_DSP_EXP97, phy); | ||
931 | |||
932 | /* Turn off SM_DSP clock. */ | ||
933 | phy = MII_TG3_AUXCTL_SHDWSEL_AUXCTL | | ||
934 | MII_TG3_AUXCTL_ACTL_TX_6DB; | ||
935 | tg3_writephy(tp, MII_TG3_AUX_CTRL, phy); | ||
936 | } | ||
937 | |||
889 | static int tg3_wait_macro_done(struct tg3 *tp) | 938 | static int tg3_wait_macro_done(struct tg3 *tp) |
890 | { | 939 | { |
891 | int limit = 100; | 940 | int limit = 100; |
@@ -1073,6 +1122,7 @@ static void tg3_link_report(struct tg3 *); | |||
1073 | */ | 1122 | */ |
1074 | static int tg3_phy_reset(struct tg3 *tp) | 1123 | static int tg3_phy_reset(struct tg3 *tp) |
1075 | { | 1124 | { |
1125 | u32 cpmuctrl; | ||
1076 | u32 phy_status; | 1126 | u32 phy_status; |
1077 | int err; | 1127 | int err; |
1078 | 1128 | ||
@@ -1102,10 +1152,28 @@ static int tg3_phy_reset(struct tg3 *tp) | |||
1102 | goto out; | 1152 | goto out; |
1103 | } | 1153 | } |
1104 | 1154 | ||
1155 | cpmuctrl = 0; | ||
1156 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 && | ||
1157 | GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5784_AX) { | ||
1158 | cpmuctrl = tr32(TG3_CPMU_CTRL); | ||
1159 | if (cpmuctrl & CPMU_CTRL_GPHY_10MB_RXONLY) | ||
1160 | tw32(TG3_CPMU_CTRL, | ||
1161 | cpmuctrl & ~CPMU_CTRL_GPHY_10MB_RXONLY); | ||
1162 | } | ||
1163 | |||
1105 | err = tg3_bmcr_reset(tp); | 1164 | err = tg3_bmcr_reset(tp); |
1106 | if (err) | 1165 | if (err) |
1107 | return err; | 1166 | return err; |
1108 | 1167 | ||
1168 | if (cpmuctrl & CPMU_CTRL_GPHY_10MB_RXONLY) { | ||
1169 | u32 phy; | ||
1170 | |||
1171 | phy = MII_TG3_DSP_EXP8_AEDW | MII_TG3_DSP_EXP8_REJ2MHz; | ||
1172 | tg3_phydsp_write(tp, MII_TG3_DSP_EXP8, phy); | ||
1173 | |||
1174 | tw32(TG3_CPMU_CTRL, cpmuctrl); | ||
1175 | } | ||
1176 | |||
1109 | if (tp->tg3_flags3 & TG3_FLG3_5761_5784_AX_FIXES) { | 1177 | if (tp->tg3_flags3 & TG3_FLG3_5761_5784_AX_FIXES) { |
1110 | u32 val; | 1178 | u32 val; |
1111 | 1179 | ||
@@ -1124,6 +1192,8 @@ static int tg3_phy_reset(struct tg3 *tp) | |||
1124 | MII_TG3_MISC_SHDW_APD_WKTM_84MS); | 1192 | MII_TG3_MISC_SHDW_APD_WKTM_84MS); |
1125 | } | 1193 | } |
1126 | 1194 | ||
1195 | tg3_phy_apply_otp(tp); | ||
1196 | |||
1127 | out: | 1197 | out: |
1128 | if (tp->tg3_flags2 & TG3_FLG2_PHY_ADC_BUG) { | 1198 | if (tp->tg3_flags2 & TG3_FLG2_PHY_ADC_BUG) { |
1129 | tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0c00); | 1199 | tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x0c00); |
@@ -9464,7 +9534,8 @@ static int tg3_test_loopback(struct tg3 *tp) | |||
9464 | if (err) | 9534 | if (err) |
9465 | return TG3_LOOPBACK_FAILED; | 9535 | return TG3_LOOPBACK_FAILED; |
9466 | 9536 | ||
9467 | if (tp->tg3_flags3 & TG3_FLG3_5761_5784_AX_FIXES) { | 9537 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || |
9538 | GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761) { | ||
9468 | int i; | 9539 | int i; |
9469 | u32 status; | 9540 | u32 status; |
9470 | 9541 | ||
@@ -9481,17 +9552,23 @@ static int tg3_test_loopback(struct tg3 *tp) | |||
9481 | if (status != CPMU_MUTEX_GNT_DRIVER) | 9552 | if (status != CPMU_MUTEX_GNT_DRIVER) |
9482 | return TG3_LOOPBACK_FAILED; | 9553 | return TG3_LOOPBACK_FAILED; |
9483 | 9554 | ||
9484 | /* Turn off power management based on link speed. */ | 9555 | /* Turn off link-based power management. */ |
9485 | cpmuctrl = tr32(TG3_CPMU_CTRL); | 9556 | cpmuctrl = tr32(TG3_CPMU_CTRL); |
9486 | tw32(TG3_CPMU_CTRL, | 9557 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || |
9487 | cpmuctrl & ~(CPMU_CTRL_LINK_SPEED_MODE | | 9558 | GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5761_AX) |
9488 | CPMU_CTRL_LINK_AWARE_MODE)); | 9559 | tw32(TG3_CPMU_CTRL, |
9560 | cpmuctrl & ~(CPMU_CTRL_LINK_SPEED_MODE | | ||
9561 | CPMU_CTRL_LINK_AWARE_MODE)); | ||
9562 | else | ||
9563 | tw32(TG3_CPMU_CTRL, | ||
9564 | cpmuctrl & ~CPMU_CTRL_LINK_AWARE_MODE); | ||
9489 | } | 9565 | } |
9490 | 9566 | ||
9491 | if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK)) | 9567 | if (tg3_run_loopback(tp, TG3_MAC_LOOPBACK)) |
9492 | err |= TG3_MAC_LOOPBACK_FAILED; | 9568 | err |= TG3_MAC_LOOPBACK_FAILED; |
9493 | 9569 | ||
9494 | if (tp->tg3_flags3 & TG3_FLG3_5761_5784_AX_FIXES) { | 9570 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 || |
9571 | GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5761) { | ||
9495 | tw32(TG3_CPMU_CTRL, cpmuctrl); | 9572 | tw32(TG3_CPMU_CTRL, cpmuctrl); |
9496 | 9573 | ||
9497 | /* Release the mutex */ | 9574 | /* Release the mutex */ |
@@ -10724,9 +10801,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp) | |||
10724 | tp->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL) | 10801 | tp->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL) |
10725 | tp->led_ctrl = LED_CTRL_MODE_PHY_2; | 10802 | tp->led_ctrl = LED_CTRL_MODE_PHY_2; |
10726 | 10803 | ||
10727 | if (tp->pci_chip_rev_id == CHIPREV_ID_5784_A0 || | 10804 | if (GET_CHIP_REV(tp->pci_chip_rev_id) == CHIPREV_5784_AX) |
10728 | tp->pci_chip_rev_id == CHIPREV_ID_5784_A1) | 10805 | tp->led_ctrl = LED_CTRL_MODE_PHY_1; |
10729 | tp->led_ctrl = LED_CTRL_MODE_MAC; | ||
10730 | 10806 | ||
10731 | if (nic_cfg & NIC_SRAM_DATA_CFG_EEPROM_WP) { | 10807 | if (nic_cfg & NIC_SRAM_DATA_CFG_EEPROM_WP) { |
10732 | tp->tg3_flags |= TG3_FLAG_EEPROM_WRITE_PROT; | 10808 | tp->tg3_flags |= TG3_FLAG_EEPROM_WRITE_PROT; |
@@ -10773,6 +10849,55 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp) | |||
10773 | } | 10849 | } |
10774 | } | 10850 | } |
10775 | 10851 | ||
10852 | static int __devinit tg3_issue_otp_command(struct tg3 *tp, u32 cmd) | ||
10853 | { | ||
10854 | int i; | ||
10855 | u32 val; | ||
10856 | |||
10857 | tw32(OTP_CTRL, cmd | OTP_CTRL_OTP_CMD_START); | ||
10858 | tw32(OTP_CTRL, cmd); | ||
10859 | |||
10860 | /* Wait for up to 1 ms for command to execute. */ | ||
10861 | for (i = 0; i < 100; i++) { | ||
10862 | val = tr32(OTP_STATUS); | ||
10863 | if (val & OTP_STATUS_CMD_DONE) | ||
10864 | break; | ||
10865 | udelay(10); | ||
10866 | } | ||
10867 | |||
10868 | return (val & OTP_STATUS_CMD_DONE) ? 0 : -EBUSY; | ||
10869 | } | ||
10870 | |||
10871 | /* Read the gphy configuration from the OTP region of the chip. The gphy | ||
10872 | * configuration is a 32-bit value that straddles the alignment boundary. | ||
10873 | * We do two 32-bit reads and then shift and merge the results. | ||
10874 | */ | ||
10875 | static u32 __devinit tg3_read_otp_phycfg(struct tg3 *tp) | ||
10876 | { | ||
10877 | u32 bhalf_otp, thalf_otp; | ||
10878 | |||
10879 | tw32(OTP_MODE, OTP_MODE_OTP_THRU_GRC); | ||
10880 | |||
10881 | if (tg3_issue_otp_command(tp, OTP_CTRL_OTP_CMD_INIT)) | ||
10882 | return 0; | ||
10883 | |||
10884 | tw32(OTP_ADDRESS, OTP_ADDRESS_MAGIC1); | ||
10885 | |||
10886 | if (tg3_issue_otp_command(tp, OTP_CTRL_OTP_CMD_READ)) | ||
10887 | return 0; | ||
10888 | |||
10889 | thalf_otp = tr32(OTP_READ_DATA); | ||
10890 | |||
10891 | tw32(OTP_ADDRESS, OTP_ADDRESS_MAGIC2); | ||
10892 | |||
10893 | if (tg3_issue_otp_command(tp, OTP_CTRL_OTP_CMD_READ)) | ||
10894 | return 0; | ||
10895 | |||
10896 | bhalf_otp = tr32(OTP_READ_DATA); | ||
10897 | |||
10898 | return ((thalf_otp & 0x0000ffff) << 16) | (bhalf_otp >> 16); | ||
10899 | } | ||
10900 | |||
10776 | static int __devinit tg3_phy_probe(struct tg3 *tp) | 10901 | static int __devinit tg3_phy_probe(struct tg3 *tp) |
10777 | { | 10902 | { |
10778 | u32 hw_phy_id_1, hw_phy_id_2; | 10903 | u32 hw_phy_id_1, hw_phy_id_2; |
@@ -11586,6 +11711,13 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
11586 | tp->tg3_flags2 |= TG3_FLG2_PHY_BER_BUG; | 11711 | tp->tg3_flags2 |= TG3_FLG2_PHY_BER_BUG; |
11587 | } | 11712 | } |
11588 | 11713 | ||
11714 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5784 && | ||
11715 | GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5784_AX) { | ||
11716 | tp->phy_otp = tg3_read_otp_phycfg(tp); | ||
11717 | if (tp->phy_otp == 0) | ||
11718 | tp->phy_otp = TG3_OTP_DEFAULT; | ||
11719 | } | ||
11720 | |||
11589 | tp->coalesce_mode = 0; | 11721 | tp->coalesce_mode = 0; |
11590 | if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_AX && | 11722 | if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_AX && |
11591 | GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_BX) | 11723 | GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_5700_BX) |
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index 3938eb35ce8c..c1075a73d66c 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
@@ -138,6 +138,8 @@ | |||
138 | #define CHIPREV_5704_BX 0x21 | 138 | #define CHIPREV_5704_BX 0x21 |
139 | #define CHIPREV_5750_AX 0x40 | 139 | #define CHIPREV_5750_AX 0x40 |
140 | #define CHIPREV_5750_BX 0x41 | 140 | #define CHIPREV_5750_BX 0x41 |
141 | #define CHIPREV_5784_AX 0x57840 | ||
142 | #define CHIPREV_5761_AX 0x57610 | ||
141 | #define GET_METAL_REV(CHIP_REV_ID) ((CHIP_REV_ID) & 0xff) | 143 | #define GET_METAL_REV(CHIP_REV_ID) ((CHIP_REV_ID) & 0xff) |
142 | #define METAL_REV_A0 0x00 | 144 | #define METAL_REV_A0 0x00 |
143 | #define METAL_REV_A1 0x01 | 145 | #define METAL_REV_A1 0x01 |
@@ -866,6 +868,7 @@ | |||
866 | #define CPMU_CTRL_LINK_IDLE_MODE 0x00000200 | 868 | #define CPMU_CTRL_LINK_IDLE_MODE 0x00000200 |
867 | #define CPMU_CTRL_LINK_AWARE_MODE 0x00000400 | 869 | #define CPMU_CTRL_LINK_AWARE_MODE 0x00000400 |
868 | #define CPMU_CTRL_LINK_SPEED_MODE 0x00004000 | 870 | #define CPMU_CTRL_LINK_SPEED_MODE 0x00004000 |
871 | #define CPMU_CTRL_GPHY_10MB_RXONLY 0x00010000 | ||
869 | #define TG3_CPMU_LSPD_10MB_CLK 0x00003604 | 872 | #define TG3_CPMU_LSPD_10MB_CLK 0x00003604 |
870 | #define CPMU_LSPD_10MB_MACCLK_MASK 0x001f0000 | 873 | #define CPMU_LSPD_10MB_MACCLK_MASK 0x001f0000 |
871 | #define CPMU_LSPD_10MB_MACCLK_6_25 0x00130000 | 874 | #define CPMU_LSPD_10MB_MACCLK_6_25 0x00130000 |
@@ -1559,7 +1562,24 @@ | |||
1559 | /* 0x702c unused */ | 1562 | /* 0x702c unused */ |
1560 | 1563 | ||
1561 | #define NVRAM_ADDR_LOCKOUT 0x00007030 | 1564 | #define NVRAM_ADDR_LOCKOUT 0x00007030 |
1562 | /* 0x7034 --> 0x7c00 unused */ | 1565 | /* 0x7034 --> 0x7500 unused */ |
1566 | |||
1567 | #define OTP_MODE 0x00007500 | ||
1568 | #define OTP_MODE_OTP_THRU_GRC 0x00000001 | ||
1569 | #define OTP_CTRL 0x00007504 | ||
1570 | #define OTP_CTRL_OTP_PROG_ENABLE 0x00200000 | ||
1571 | #define OTP_CTRL_OTP_CMD_READ 0x00000000 | ||
1572 | #define OTP_CTRL_OTP_CMD_INIT 0x00000008 | ||
1573 | #define OTP_CTRL_OTP_CMD_START 0x00000001 | ||
1574 | #define OTP_STATUS 0x00007508 | ||
1575 | #define OTP_STATUS_CMD_DONE 0x00000001 | ||
1576 | #define OTP_ADDRESS 0x0000750c | ||
1577 | #define OTP_ADDRESS_MAGIC1 0x000000a0 | ||
1578 | #define OTP_ADDRESS_MAGIC2 0x00000080 | ||
1579 | /* 0x7510 unused */ | ||
1580 | |||
1581 | #define OTP_READ_DATA 0x00007514 | ||
1582 | /* 0x7518 --> 0x7c04 unused */ | ||
1563 | 1583 | ||
1564 | #define PCIE_TRANSACTION_CFG 0x00007c04 | 1584 | #define PCIE_TRANSACTION_CFG 0x00007c04 |
1565 | #define PCIE_TRANS_CFG_1SHOT_MSI 0x20000000 | 1585 | #define PCIE_TRANS_CFG_1SHOT_MSI 0x20000000 |
@@ -1568,6 +1588,28 @@ | |||
1568 | #define PCIE_PWR_MGMT_THRESH 0x00007d28 | 1588 | #define PCIE_PWR_MGMT_THRESH 0x00007d28 |
1569 | #define PCIE_PWR_MGMT_L1_THRESH_MSK 0x0000ff00 | 1589 | #define PCIE_PWR_MGMT_L1_THRESH_MSK 0x0000ff00 |
1570 | 1590 | ||
1591 | |||
1592 | /* OTP bit definitions */ | ||
1593 | #define TG3_OTP_AGCTGT_MASK 0x000000e0 | ||
1594 | #define TG3_OTP_AGCTGT_SHIFT 1 | ||
1595 | #define TG3_OTP_HPFFLTR_MASK 0x00000300 | ||
1596 | #define TG3_OTP_HPFFLTR_SHIFT 1 | ||
1597 | #define TG3_OTP_HPFOVER_MASK 0x00000400 | ||
1598 | #define TG3_OTP_HPFOVER_SHIFT 1 | ||
1599 | #define TG3_OTP_LPFDIS_MASK 0x00000800 | ||
1600 | #define TG3_OTP_LPFDIS_SHIFT 11 | ||
1601 | #define TG3_OTP_VDAC_MASK 0xff000000 | ||
1602 | #define TG3_OTP_VDAC_SHIFT 24 | ||
1603 | #define TG3_OTP_10BTAMP_MASK 0x0000f000 | ||
1604 | #define TG3_OTP_10BTAMP_SHIFT 8 | ||
1605 | #define TG3_OTP_ROFF_MASK 0x00e00000 | ||
1606 | #define TG3_OTP_ROFF_SHIFT 11 | ||
1607 | #define TG3_OTP_RCOFF_MASK 0x001c0000 | ||
1608 | #define TG3_OTP_RCOFF_SHIFT 16 | ||
1609 | |||
1610 | #define TG3_OTP_DEFAULT 0x286c1640 | ||
1611 | |||
1612 | |||
1571 | #define TG3_EEPROM_MAGIC 0x669955aa | 1613 | #define TG3_EEPROM_MAGIC 0x669955aa |
1572 | #define TG3_EEPROM_MAGIC_FW 0xa5000000 | 1614 | #define TG3_EEPROM_MAGIC_FW 0xa5000000 |
1573 | #define TG3_EEPROM_MAGIC_FW_MSK 0xff000000 | 1615 | #define TG3_EEPROM_MAGIC_FW_MSK 0xff000000 |
@@ -1705,15 +1747,31 @@ | |||
1705 | 1747 | ||
1706 | #define MII_TG3_DSP_RW_PORT 0x15 /* DSP coefficient read/write port */ | 1748 | #define MII_TG3_DSP_RW_PORT 0x15 /* DSP coefficient read/write port */ |
1707 | 1749 | ||
1708 | #define MII_TG3_DSP_ADDRESS 0x17 /* DSP address register */ | ||
1709 | #define MII_TG3_EPHY_PTEST 0x17 /* 5906 PHY register */ | 1750 | #define MII_TG3_EPHY_PTEST 0x17 /* 5906 PHY register */ |
1751 | #define MII_TG3_DSP_ADDRESS 0x17 /* DSP address register */ | ||
1752 | |||
1753 | #define MII_TG3_DSP_TAP1 0x0001 | ||
1754 | #define MII_TG3_DSP_TAP1_AGCTGT_DFLT 0x0007 | ||
1755 | #define MII_TG3_DSP_AADJ1CH0 0x001f | ||
1756 | #define MII_TG3_DSP_AADJ1CH3 0x601f | ||
1757 | #define MII_TG3_DSP_AADJ1CH3_ADCCKADJ 0x0002 | ||
1758 | #define MII_TG3_DSP_EXP8 0x0708 | ||
1759 | #define MII_TG3_DSP_EXP8_REJ2MHz 0x0001 | ||
1760 | #define MII_TG3_DSP_EXP8_AEDW 0x0200 | ||
1761 | #define MII_TG3_DSP_EXP75 0x0f75 | ||
1762 | #define MII_TG3_DSP_EXP96 0x0f96 | ||
1763 | #define MII_TG3_DSP_EXP97 0x0f97 | ||
1710 | 1764 | ||
1711 | #define MII_TG3_AUX_CTRL 0x18 /* auxilliary control register */ | 1765 | #define MII_TG3_AUX_CTRL 0x18 /* auxilliary control register */ |
1712 | 1766 | ||
1713 | #define MII_TG3_AUXCTL_MISC_WREN 0x8000 | 1767 | #define MII_TG3_AUXCTL_MISC_WREN 0x8000 |
1714 | #define MII_TG3_AUXCTL_MISC_FORCE_AMDIX 0x0200 | 1768 | #define MII_TG3_AUXCTL_MISC_FORCE_AMDIX 0x0200 |
1715 | #define MII_TG3_AUXCTL_MISC_RDSEL_MISC 0x7000 | 1769 | #define MII_TG3_AUXCTL_MISC_RDSEL_MISC 0x7000 |
1716 | #define MII_TG3_AUXCTL_SHDWSEL_MISC 0x0007 | 1770 | #define MII_TG3_AUXCTL_SHDWSEL_MISC 0x0007 |
1771 | |||
1772 | #define MII_TG3_AUXCTL_ACTL_SMDSP_ENA 0x0800 | ||
1773 | #define MII_TG3_AUXCTL_ACTL_TX_6DB 0x0400 | ||
1774 | #define MII_TG3_AUXCTL_SHDWSEL_AUXCTL 0x0000 | ||
1717 | 1775 | ||
1718 | #define MII_TG3_AUX_STAT 0x19 /* auxilliary status register */ | 1776 | #define MII_TG3_AUX_STAT 0x19 /* auxilliary status register */ |
1719 | #define MII_TG3_AUX_STAT_LPASS 0x0004 | 1777 | #define MII_TG3_AUX_STAT_LPASS 0x0004 |
@@ -1743,6 +1801,20 @@ | |||
1743 | #define MII_TG3_INT_DUPLEXCHG 0x0008 | 1801 | #define MII_TG3_INT_DUPLEXCHG 0x0008 |
1744 | #define MII_TG3_INT_ANEG_PAGE_RX 0x0400 | 1802 | #define MII_TG3_INT_ANEG_PAGE_RX 0x0400 |
1745 | 1803 | ||
1804 | #define MII_TG3_MISC_SHDW 0x1c | ||
1805 | #define MII_TG3_MISC_SHDW_WREN 0x8000 | ||
1806 | #define MII_TG3_MISC_SHDW_SCR5_SEL 0x1400 | ||
1807 | #define MII_TG3_MISC_SHDW_APD_SEL 0x2800 | ||
1808 | |||
1809 | #define MII_TG3_MISC_SHDW_SCR5_C125OE 0x0001 | ||
1810 | #define MII_TG3_MISC_SHDW_SCR5_DLLAPD 0x0002 | ||
1811 | #define MII_TG3_MISC_SHDW_SCR5_SDTL 0x0004 | ||
1812 | #define MII_TG3_MISC_SHDW_SCR5_DLPTLM 0x0008 | ||
1813 | #define MII_TG3_MISC_SHDW_SCR5_LPED 0x0010 | ||
1814 | |||
1815 | #define MII_TG3_MISC_SHDW_APD_WKTM_84MS 0x0001 | ||
1816 | #define MII_TG3_MISC_SHDW_APD_ENABLE 0x0020 | ||
1817 | |||
1746 | #define MII_TG3_EPHY_TEST 0x1f /* 5906 PHY register */ | 1818 | #define MII_TG3_EPHY_TEST 0x1f /* 5906 PHY register */ |
1747 | #define MII_TG3_EPHY_SHADOW_EN 0x80 | 1819 | #define MII_TG3_EPHY_SHADOW_EN 0x80 |
1748 | 1820 | ||
@@ -2473,6 +2545,7 @@ struct tg3 { | |||
2473 | #define PHY_REV_BCM5411_X0 0x1 /* Found on Netgear GA302T */ | 2545 | #define PHY_REV_BCM5411_X0 0x1 /* Found on Netgear GA302T */ |
2474 | 2546 | ||
2475 | u32 led_ctrl; | 2547 | u32 led_ctrl; |
2548 | u32 phy_otp; | ||
2476 | u16 pci_cmd; | 2549 | u16 pci_cmd; |
2477 | 2550 | ||
2478 | char board_part_number[24]; | 2551 | char board_part_number[24]; |
diff --git a/drivers/net/tokenring/olympic.c b/drivers/net/tokenring/olympic.c index 433c994ea9d8..0ab51a0f35fc 100644 --- a/drivers/net/tokenring/olympic.c +++ b/drivers/net/tokenring/olympic.c | |||
@@ -117,7 +117,7 @@ | |||
117 | * Official releases will only have an a.b.c version number format. | 117 | * Official releases will only have an a.b.c version number format. |
118 | */ | 118 | */ |
119 | 119 | ||
120 | static char version[] __devinitdata = | 120 | static char version[] = |
121 | "Olympic.c v1.0.5 6/04/02 - Peter De Schrijver & Mike Phillips" ; | 121 | "Olympic.c v1.0.5 6/04/02 - Peter De Schrijver & Mike Phillips" ; |
122 | 122 | ||
123 | static char *open_maj_error[] = {"No error", "Lobe Media Test", "Physical Insertion", | 123 | static char *open_maj_error[] = {"No error", "Lobe Media Test", "Physical Insertion", |
@@ -290,7 +290,7 @@ op_disable_dev: | |||
290 | return i; | 290 | return i; |
291 | } | 291 | } |
292 | 292 | ||
293 | static int __devinit olympic_init(struct net_device *dev) | 293 | static int olympic_init(struct net_device *dev) |
294 | { | 294 | { |
295 | struct olympic_private *olympic_priv; | 295 | struct olympic_private *olympic_priv; |
296 | u8 __iomem *olympic_mmio, *init_srb,*adapter_addr; | 296 | u8 __iomem *olympic_mmio, *init_srb,*adapter_addr; |
@@ -434,7 +434,7 @@ static int __devinit olympic_init(struct net_device *dev) | |||
434 | 434 | ||
435 | } | 435 | } |
436 | 436 | ||
437 | static int __devinit olympic_open(struct net_device *dev) | 437 | static int olympic_open(struct net_device *dev) |
438 | { | 438 | { |
439 | struct olympic_private *olympic_priv=netdev_priv(dev); | 439 | struct olympic_private *olympic_priv=netdev_priv(dev); |
440 | u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio,*init_srb; | 440 | u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio,*init_srb; |
@@ -1438,13 +1438,18 @@ static void olympic_arb_cmd(struct net_device *dev) | |||
1438 | 1438 | ||
1439 | if (olympic_priv->olympic_network_monitor) { | 1439 | if (olympic_priv->olympic_network_monitor) { |
1440 | struct trh_hdr *mac_hdr; | 1440 | struct trh_hdr *mac_hdr; |
1441 | DECLARE_MAC_BUF(mac); | ||
1442 | printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name); | 1441 | printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name); |
1443 | mac_hdr = tr_hdr(mac_frame); | 1442 | mac_hdr = tr_hdr(mac_frame); |
1444 | printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %s\n", | 1443 | printk(KERN_WARNING "%s: MAC Frame Dest. Addr: " |
1445 | dev->name, print_mac(mac, mac_hdr->daddr)); | 1444 | MAC_FMT " \n", dev->name, |
1446 | printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %s\n", | 1445 | mac_hdr->daddr[0], mac_hdr->daddr[1], |
1447 | dev->name, print_mac(mac, mac_hdr->saddr)); | 1446 | mac_hdr->daddr[2], mac_hdr->daddr[3], |
1447 | mac_hdr->daddr[4], mac_hdr->daddr[5]); | ||
1448 | printk(KERN_WARNING "%s: MAC Frame Srce. Addr: " | ||
1449 | MAC_FMT " \n", dev->name, | ||
1450 | mac_hdr->saddr[0], mac_hdr->saddr[1], | ||
1451 | mac_hdr->saddr[2], mac_hdr->saddr[3], | ||
1452 | mac_hdr->saddr[4], mac_hdr->saddr[5]); | ||
1448 | } | 1453 | } |
1449 | netif_rx(mac_frame); | 1454 | netif_rx(mac_frame); |
1450 | dev->last_rx = jiffies; | 1455 | dev->last_rx = jiffies; |
diff --git a/drivers/net/tokenring/smctr.c b/drivers/net/tokenring/smctr.c index 8909050b8ea7..5f1c5072b96f 100644 --- a/drivers/net/tokenring/smctr.c +++ b/drivers/net/tokenring/smctr.c | |||
@@ -3413,7 +3413,7 @@ static int smctr_make_tx_status_code(struct net_device *dev, | |||
3413 | tsv->svi = TRANSMIT_STATUS_CODE; | 3413 | tsv->svi = TRANSMIT_STATUS_CODE; |
3414 | tsv->svl = S_TRANSMIT_STATUS_CODE; | 3414 | tsv->svl = S_TRANSMIT_STATUS_CODE; |
3415 | 3415 | ||
3416 | tsv->svv[0] = ((tx_fstatus & 0x0100 >> 6) || IBM_PASS_SOURCE_ADDR); | 3416 | tsv->svv[0] = ((tx_fstatus & 0x0100 >> 6) | IBM_PASS_SOURCE_ADDR); |
3417 | 3417 | ||
3418 | /* Stripped frame status of Transmitted Frame */ | 3418 | /* Stripped frame status of Transmitted Frame */ |
3419 | tsv->svv[1] = tx_fstatus & 0xff; | 3419 | tsv->svv[1] = tx_fstatus & 0xff; |
diff --git a/drivers/net/tulip/eeprom.c b/drivers/net/tulip/eeprom.c index 206918bad539..da2206f6021d 100644 --- a/drivers/net/tulip/eeprom.c +++ b/drivers/net/tulip/eeprom.c | |||
@@ -343,6 +343,12 @@ int __devinit tulip_read_eeprom(struct net_device *dev, int location, int addr_l | |||
343 | void __iomem *ee_addr = tp->base_addr + CSR9; | 343 | void __iomem *ee_addr = tp->base_addr + CSR9; |
344 | int read_cmd = location | (EE_READ_CMD << addr_len); | 344 | int read_cmd = location | (EE_READ_CMD << addr_len); |
345 | 345 | ||
346 | /* If location is past the end of what we can address, don't | ||
347 | * read some other location (ie truncate). Just return zero. | ||
348 | */ | ||
349 | if (location > (1 << addr_len) - 1) | ||
350 | return 0; | ||
351 | |||
346 | iowrite32(EE_ENB & ~EE_CS, ee_addr); | 352 | iowrite32(EE_ENB & ~EE_CS, ee_addr); |
347 | iowrite32(EE_ENB, ee_addr); | 353 | iowrite32(EE_ENB, ee_addr); |
348 | 354 | ||
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c index ed600bf56e78..82f404b76d81 100644 --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c | |||
@@ -1437,6 +1437,7 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, | |||
1437 | EEPROM. | 1437 | EEPROM. |
1438 | */ | 1438 | */ |
1439 | ee_data = tp->eeprom; | 1439 | ee_data = tp->eeprom; |
1440 | memset(ee_data, 0, sizeof(tp->eeprom)); | ||
1440 | sum = 0; | 1441 | sum = 0; |
1441 | if (chip_idx == LC82C168) { | 1442 | if (chip_idx == LC82C168) { |
1442 | for (i = 0; i < 3; i++) { | 1443 | for (i = 0; i < 3; i++) { |
@@ -1458,8 +1459,12 @@ static int __devinit tulip_init_one (struct pci_dev *pdev, | |||
1458 | /* A serial EEPROM interface, we read now and sort it out later. */ | 1459 | /* A serial EEPROM interface, we read now and sort it out later. */ |
1459 | int sa_offset = 0; | 1460 | int sa_offset = 0; |
1460 | int ee_addr_size = tulip_read_eeprom(dev, 0xff, 8) & 0x40000 ? 8 : 6; | 1461 | int ee_addr_size = tulip_read_eeprom(dev, 0xff, 8) & 0x40000 ? 8 : 6; |
1462 | int ee_max_addr = ((1 << ee_addr_size) - 1) * sizeof(u16); | ||
1461 | 1463 | ||
1462 | for (i = 0; i < sizeof(tp->eeprom); i+=2) { | 1464 | if (ee_max_addr > sizeof(tp->eeprom)) |
1465 | ee_max_addr = sizeof(tp->eeprom); | ||
1466 | |||
1467 | for (i = 0; i < ee_max_addr ; i += sizeof(u16)) { | ||
1463 | u16 data = tulip_read_eeprom(dev, i/2, ee_addr_size); | 1468 | u16 data = tulip_read_eeprom(dev, i/2, ee_addr_size); |
1464 | ee_data[i] = data & 0xff; | 1469 | ee_data[i] = data & 0xff; |
1465 | ee_data[i + 1] = data >> 8; | 1470 | ee_data[i + 1] = data >> 8; |
diff --git a/drivers/net/usb/Kconfig b/drivers/net/usb/Kconfig index a12c9c41b217..0604f3faf043 100644 --- a/drivers/net/usb/Kconfig +++ b/drivers/net/usb/Kconfig | |||
@@ -129,7 +129,7 @@ config USB_USBNET | |||
129 | 129 | ||
130 | config USB_NET_AX8817X | 130 | config USB_NET_AX8817X |
131 | tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters" | 131 | tristate "ASIX AX88xxx Based USB 2.0 Ethernet Adapters" |
132 | depends on USB_USBNET && NET_ETHERNET | 132 | depends on USB_USBNET |
133 | select CRC32 | 133 | select CRC32 |
134 | default y | 134 | default y |
135 | help | 135 | help |
diff --git a/drivers/net/usb/dm9601.c b/drivers/net/usb/dm9601.c index 4b131a6c6b70..01660f68943a 100644 --- a/drivers/net/usb/dm9601.c +++ b/drivers/net/usb/dm9601.c | |||
@@ -341,7 +341,7 @@ static void dm9601_set_multicast(struct net_device *net) | |||
341 | /* We use the 20 byte dev->data for our 8 byte filter buffer | 341 | /* We use the 20 byte dev->data for our 8 byte filter buffer |
342 | * to avoid allocating memory that is tricky to free later */ | 342 | * to avoid allocating memory that is tricky to free later */ |
343 | u8 *hashes = (u8 *) & dev->data; | 343 | u8 *hashes = (u8 *) & dev->data; |
344 | u8 rx_ctl = 0x01; | 344 | u8 rx_ctl = 0x31; |
345 | 345 | ||
346 | memset(hashes, 0x00, DM_MCAST_SIZE); | 346 | memset(hashes, 0x00, DM_MCAST_SIZE); |
347 | hashes[DM_MCAST_SIZE - 1] |= 0x80; /* broadcast address */ | 347 | hashes[DM_MCAST_SIZE - 1] |= 0x80; /* broadcast address */ |
@@ -354,7 +354,7 @@ static void dm9601_set_multicast(struct net_device *net) | |||
354 | struct dev_mc_list *mc_list = net->mc_list; | 354 | struct dev_mc_list *mc_list = net->mc_list; |
355 | int i; | 355 | int i; |
356 | 356 | ||
357 | for (i = 0; i < net->mc_count; i++) { | 357 | for (i = 0; i < net->mc_count; i++, mc_list = mc_list->next) { |
358 | u32 crc = ether_crc(ETH_ALEN, mc_list->dmi_addr) >> 26; | 358 | u32 crc = ether_crc(ETH_ALEN, mc_list->dmi_addr) >> 26; |
359 | hashes[crc >> 3] |= 1 << (crc & 0x7); | 359 | hashes[crc >> 3] |= 1 << (crc & 0x7); |
360 | } | 360 | } |
@@ -562,6 +562,10 @@ static const struct usb_device_id products[] = { | |||
562 | USB_DEVICE(0x0a46, 0x8515), /* ADMtek ADM8515 USB NIC */ | 562 | USB_DEVICE(0x0a46, 0x8515), /* ADMtek ADM8515 USB NIC */ |
563 | .driver_info = (unsigned long)&dm9601_info, | 563 | .driver_info = (unsigned long)&dm9601_info, |
564 | }, | 564 | }, |
565 | { | ||
566 | USB_DEVICE(0x0a47, 0x9601), /* Hirose USB-100 */ | ||
567 | .driver_info = (unsigned long)&dm9601_info, | ||
568 | }, | ||
565 | {}, // END | 569 | {}, // END |
566 | }; | 570 | }; |
567 | 571 | ||
diff --git a/drivers/net/usb/pegasus.c b/drivers/net/usb/pegasus.c index d1ed68a11e70..b588c890ea70 100644 --- a/drivers/net/usb/pegasus.c +++ b/drivers/net/usb/pegasus.c | |||
@@ -1128,12 +1128,8 @@ pegasus_get_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
1128 | { | 1128 | { |
1129 | pegasus_t *pegasus; | 1129 | pegasus_t *pegasus; |
1130 | 1130 | ||
1131 | if (in_atomic()) | ||
1132 | return 0; | ||
1133 | |||
1134 | pegasus = netdev_priv(dev); | 1131 | pegasus = netdev_priv(dev); |
1135 | mii_ethtool_gset(&pegasus->mii, ecmd); | 1132 | mii_ethtool_gset(&pegasus->mii, ecmd); |
1136 | |||
1137 | return 0; | 1133 | return 0; |
1138 | } | 1134 | } |
1139 | 1135 | ||
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index 727547a28992..369c731114b3 100644 --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c | |||
@@ -283,7 +283,7 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) | |||
283 | struct rndis_set_c *set_c; | 283 | struct rndis_set_c *set_c; |
284 | struct rndis_halt *halt; | 284 | struct rndis_halt *halt; |
285 | } u; | 285 | } u; |
286 | u32 tmp, *phym; | 286 | u32 tmp, phym_unspec, *phym; |
287 | int reply_len; | 287 | int reply_len; |
288 | unsigned char *bp; | 288 | unsigned char *bp; |
289 | 289 | ||
@@ -363,12 +363,15 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) | |||
363 | goto halt_fail_and_release; | 363 | goto halt_fail_and_release; |
364 | 364 | ||
365 | /* Check physical medium */ | 365 | /* Check physical medium */ |
366 | phym = NULL; | ||
366 | reply_len = sizeof *phym; | 367 | reply_len = sizeof *phym; |
367 | retval = rndis_query(dev, intf, u.buf, OID_GEN_PHYSICAL_MEDIUM, | 368 | retval = rndis_query(dev, intf, u.buf, OID_GEN_PHYSICAL_MEDIUM, |
368 | 0, (void **) &phym, &reply_len); | 369 | 0, (void **) &phym, &reply_len); |
369 | if (retval != 0) | 370 | if (retval != 0 || !phym) { |
370 | /* OID is optional so don't fail here. */ | 371 | /* OID is optional so don't fail here. */ |
371 | *phym = RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED; | 372 | phym_unspec = RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED; |
373 | phym = &phym_unspec; | ||
374 | } | ||
372 | if ((flags & FLAG_RNDIS_PHYM_WIRELESS) && | 375 | if ((flags & FLAG_RNDIS_PHYM_WIRELESS) && |
373 | *phym != RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) { | 376 | *phym != RNDIS_PHYSICAL_MEDIUM_WIRELESS_LAN) { |
374 | if (netif_msg_probe(dev)) | 377 | if (netif_msg_probe(dev)) |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index b58472cf76f8..555b70c8b863 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -234,11 +234,12 @@ static int start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
234 | struct scatterlist sg[1+MAX_SKB_FRAGS]; | 234 | struct scatterlist sg[1+MAX_SKB_FRAGS]; |
235 | struct virtio_net_hdr *hdr; | 235 | struct virtio_net_hdr *hdr; |
236 | const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest; | 236 | const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest; |
237 | DECLARE_MAC_BUF(mac); | ||
238 | 237 | ||
239 | sg_init_table(sg, 1+MAX_SKB_FRAGS); | 238 | sg_init_table(sg, 1+MAX_SKB_FRAGS); |
240 | 239 | ||
241 | pr_debug("%s: xmit %p %s\n", dev->name, skb, print_mac(mac, dest)); | 240 | pr_debug("%s: xmit %p " MAC_FMT "\n", dev->name, skb, |
241 | dest[0], dest[1], dest[2], | ||
242 | dest[3], dest[4], dest[5]); | ||
242 | 243 | ||
243 | /* Encode metadata header at front. */ | 244 | /* Encode metadata header at front. */ |
244 | hdr = skb_vnet_hdr(skb); | 245 | hdr = skb_vnet_hdr(skb); |
@@ -284,7 +285,6 @@ again: | |||
284 | /* Activate callback for using skbs: if this returns false it | 285 | /* Activate callback for using skbs: if this returns false it |
285 | * means some were used in the meantime. */ | 286 | * means some were used in the meantime. */ |
286 | if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) { | 287 | if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) { |
287 | printk("Unlikely: restart svq race\n"); | ||
288 | vi->svq->vq_ops->disable_cb(vi->svq); | 288 | vi->svq->vq_ops->disable_cb(vi->svq); |
289 | netif_start_queue(dev); | 289 | netif_start_queue(dev); |
290 | goto again; | 290 | goto again; |
diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c index fb37b8095231..824df3b5ea49 100644 --- a/drivers/net/wan/lapbether.c +++ b/drivers/net/wan/lapbether.c | |||
@@ -58,7 +58,7 @@ struct lapbethdev { | |||
58 | struct net_device_stats stats; /* some statistics */ | 58 | struct net_device_stats stats; /* some statistics */ |
59 | }; | 59 | }; |
60 | 60 | ||
61 | static struct list_head lapbeth_devices = LIST_HEAD_INIT(lapbeth_devices); | 61 | static LIST_HEAD(lapbeth_devices); |
62 | 62 | ||
63 | /* ------------------------------------------------------------------------ */ | 63 | /* ------------------------------------------------------------------------ */ |
64 | 64 | ||
diff --git a/drivers/net/wireless/arlan-proc.c b/drivers/net/wireless/arlan-proc.c index c6e70dbc5de8..2ab1d59870f4 100644 --- a/drivers/net/wireless/arlan-proc.c +++ b/drivers/net/wireless/arlan-proc.c | |||
@@ -1202,13 +1202,6 @@ static ctl_table arlan_table[MAX_ARLANS + 1] = | |||
1202 | { .ctl_name = 0 } | 1202 | { .ctl_name = 0 } |
1203 | }; | 1203 | }; |
1204 | #endif | 1204 | #endif |
1205 | #else | ||
1206 | |||
1207 | static ctl_table arlan_table[MAX_ARLANS + 1] = | ||
1208 | { | ||
1209 | { .ctl_name = 0 } | ||
1210 | }; | ||
1211 | #endif | ||
1212 | 1205 | ||
1213 | 1206 | ||
1214 | // static int mmtu = 1234; | 1207 | // static int mmtu = 1234; |
@@ -1233,7 +1226,6 @@ static ctl_table arlan_root_table[] = | |||
1233 | //}; | 1226 | //}; |
1234 | 1227 | ||
1235 | 1228 | ||
1236 | #ifdef CONFIG_PROC_FS | ||
1237 | static struct ctl_table_header *arlan_device_sysctl_header; | 1229 | static struct ctl_table_header *arlan_device_sysctl_header; |
1238 | 1230 | ||
1239 | int __init init_arlan_proc(void) | 1231 | int __init init_arlan_proc(void) |
diff --git a/drivers/net/wireless/b43/debugfs.c b/drivers/net/wireless/b43/debugfs.c index e38ed0fe72e9..7fca2ebc747f 100644 --- a/drivers/net/wireless/b43/debugfs.c +++ b/drivers/net/wireless/b43/debugfs.c | |||
@@ -618,6 +618,7 @@ void b43_debugfs_remove_device(struct b43_wldev *dev) | |||
618 | kfree(e); | 618 | kfree(e); |
619 | } | 619 | } |
620 | 620 | ||
621 | /* Called with IRQs disabled. */ | ||
621 | void b43_debugfs_log_txstat(struct b43_wldev *dev, | 622 | void b43_debugfs_log_txstat(struct b43_wldev *dev, |
622 | const struct b43_txstatus *status) | 623 | const struct b43_txstatus *status) |
623 | { | 624 | { |
@@ -629,8 +630,7 @@ void b43_debugfs_log_txstat(struct b43_wldev *dev, | |||
629 | if (!e) | 630 | if (!e) |
630 | return; | 631 | return; |
631 | log = &e->txstatlog; | 632 | log = &e->txstatlog; |
632 | B43_WARN_ON(!irqs_disabled()); | 633 | spin_lock(&log->lock); /* IRQs are already disabled. */ |
633 | spin_lock(&log->lock); | ||
634 | i = log->end + 1; | 634 | i = log->end + 1; |
635 | if (i == B43_NR_LOGGED_TXSTATUS) | 635 | if (i == B43_NR_LOGGED_TXSTATUS) |
636 | i = 0; | 636 | i = 0; |
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index 3dfb28a34be9..948eb1fe916b 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
@@ -560,7 +560,7 @@ static int b43_dmacontroller_tx_reset(struct b43_wldev *dev, u16 mmio_base, | |||
560 | /* Check if a DMA mapping address is invalid. */ | 560 | /* Check if a DMA mapping address is invalid. */ |
561 | static bool b43_dma_mapping_error(struct b43_dmaring *ring, | 561 | static bool b43_dma_mapping_error(struct b43_dmaring *ring, |
562 | dma_addr_t addr, | 562 | dma_addr_t addr, |
563 | size_t buffersize) | 563 | size_t buffersize, bool dma_to_device) |
564 | { | 564 | { |
565 | if (unlikely(dma_mapping_error(addr))) | 565 | if (unlikely(dma_mapping_error(addr))) |
566 | return 1; | 566 | return 1; |
@@ -568,11 +568,11 @@ static bool b43_dma_mapping_error(struct b43_dmaring *ring, | |||
568 | switch (ring->type) { | 568 | switch (ring->type) { |
569 | case B43_DMA_30BIT: | 569 | case B43_DMA_30BIT: |
570 | if ((u64)addr + buffersize > (1ULL << 30)) | 570 | if ((u64)addr + buffersize > (1ULL << 30)) |
571 | return 1; | 571 | goto address_error; |
572 | break; | 572 | break; |
573 | case B43_DMA_32BIT: | 573 | case B43_DMA_32BIT: |
574 | if ((u64)addr + buffersize > (1ULL << 32)) | 574 | if ((u64)addr + buffersize > (1ULL << 32)) |
575 | return 1; | 575 | goto address_error; |
576 | break; | 576 | break; |
577 | case B43_DMA_64BIT: | 577 | case B43_DMA_64BIT: |
578 | /* Currently we can't have addresses beyond | 578 | /* Currently we can't have addresses beyond |
@@ -582,6 +582,12 @@ static bool b43_dma_mapping_error(struct b43_dmaring *ring, | |||
582 | 582 | ||
583 | /* The address is OK. */ | 583 | /* The address is OK. */ |
584 | return 0; | 584 | return 0; |
585 | |||
586 | address_error: | ||
587 | /* We can't support this address. Unmap it again. */ | ||
588 | unmap_descbuffer(ring, addr, buffersize, dma_to_device); | ||
589 | |||
590 | return 1; | ||
585 | } | 591 | } |
586 | 592 | ||
587 | static int setup_rx_descbuffer(struct b43_dmaring *ring, | 593 | static int setup_rx_descbuffer(struct b43_dmaring *ring, |
@@ -599,7 +605,7 @@ static int setup_rx_descbuffer(struct b43_dmaring *ring, | |||
599 | if (unlikely(!skb)) | 605 | if (unlikely(!skb)) |
600 | return -ENOMEM; | 606 | return -ENOMEM; |
601 | dmaaddr = map_descbuffer(ring, skb->data, ring->rx_buffersize, 0); | 607 | dmaaddr = map_descbuffer(ring, skb->data, ring->rx_buffersize, 0); |
602 | if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) { | 608 | if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { |
603 | /* ugh. try to realloc in zone_dma */ | 609 | /* ugh. try to realloc in zone_dma */ |
604 | gfp_flags |= GFP_DMA; | 610 | gfp_flags |= GFP_DMA; |
605 | 611 | ||
@@ -612,7 +618,8 @@ static int setup_rx_descbuffer(struct b43_dmaring *ring, | |||
612 | ring->rx_buffersize, 0); | 618 | ring->rx_buffersize, 0); |
613 | } | 619 | } |
614 | 620 | ||
615 | if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) { | 621 | if (b43_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { |
622 | b43err(ring->dev->wl, "RX DMA buffer allocation failed\n"); | ||
616 | dev_kfree_skb_any(skb); | 623 | dev_kfree_skb_any(skb); |
617 | return -EIO; | 624 | return -EIO; |
618 | } | 625 | } |
@@ -852,7 +859,8 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
852 | b43_txhdr_size(dev), | 859 | b43_txhdr_size(dev), |
853 | DMA_TO_DEVICE); | 860 | DMA_TO_DEVICE); |
854 | 861 | ||
855 | if (b43_dma_mapping_error(ring, dma_test, b43_txhdr_size(dev))) { | 862 | if (b43_dma_mapping_error(ring, dma_test, |
863 | b43_txhdr_size(dev), 1)) { | ||
856 | /* ugh realloc */ | 864 | /* ugh realloc */ |
857 | kfree(ring->txhdr_cache); | 865 | kfree(ring->txhdr_cache); |
858 | ring->txhdr_cache = kcalloc(nr_slots, | 866 | ring->txhdr_cache = kcalloc(nr_slots, |
@@ -867,8 +875,12 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
867 | DMA_TO_DEVICE); | 875 | DMA_TO_DEVICE); |
868 | 876 | ||
869 | if (b43_dma_mapping_error(ring, dma_test, | 877 | if (b43_dma_mapping_error(ring, dma_test, |
870 | b43_txhdr_size(dev))) | 878 | b43_txhdr_size(dev), 1)) { |
879 | |||
880 | b43err(dev->wl, | ||
881 | "TXHDR DMA allocation failed\n"); | ||
871 | goto err_kfree_txhdr_cache; | 882 | goto err_kfree_txhdr_cache; |
883 | } | ||
872 | } | 884 | } |
873 | 885 | ||
874 | dma_unmap_single(dev->dev->dev, | 886 | dma_unmap_single(dev->dev->dev, |
@@ -1189,7 +1201,7 @@ static int dma_tx_fragment(struct b43_dmaring *ring, | |||
1189 | 1201 | ||
1190 | meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header, | 1202 | meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header, |
1191 | hdrsize, 1); | 1203 | hdrsize, 1); |
1192 | if (b43_dma_mapping_error(ring, meta_hdr->dmaaddr, hdrsize)) { | 1204 | if (b43_dma_mapping_error(ring, meta_hdr->dmaaddr, hdrsize, 1)) { |
1193 | ring->current_slot = old_top_slot; | 1205 | ring->current_slot = old_top_slot; |
1194 | ring->used_slots = old_used_slots; | 1206 | ring->used_slots = old_used_slots; |
1195 | return -EIO; | 1207 | return -EIO; |
@@ -1208,7 +1220,7 @@ static int dma_tx_fragment(struct b43_dmaring *ring, | |||
1208 | 1220 | ||
1209 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1221 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
1210 | /* create a bounce buffer in zone_dma on mapping failure. */ | 1222 | /* create a bounce buffer in zone_dma on mapping failure. */ |
1211 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len)) { | 1223 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
1212 | bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); | 1224 | bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); |
1213 | if (!bounce_skb) { | 1225 | if (!bounce_skb) { |
1214 | ring->current_slot = old_top_slot; | 1226 | ring->current_slot = old_top_slot; |
@@ -1222,7 +1234,7 @@ static int dma_tx_fragment(struct b43_dmaring *ring, | |||
1222 | skb = bounce_skb; | 1234 | skb = bounce_skb; |
1223 | meta->skb = skb; | 1235 | meta->skb = skb; |
1224 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1236 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
1225 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len)) { | 1237 | if (b43_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
1226 | ring->current_slot = old_top_slot; | 1238 | ring->current_slot = old_top_slot; |
1227 | ring->used_slots = old_used_slots; | 1239 | ring->used_slots = old_used_slots; |
1228 | err = -EIO; | 1240 | err = -EIO; |
@@ -1337,6 +1349,7 @@ out_unlock: | |||
1337 | return err; | 1349 | return err; |
1338 | } | 1350 | } |
1339 | 1351 | ||
1352 | /* Called with IRQs disabled. */ | ||
1340 | void b43_dma_handle_txstatus(struct b43_wldev *dev, | 1353 | void b43_dma_handle_txstatus(struct b43_wldev *dev, |
1341 | const struct b43_txstatus *status) | 1354 | const struct b43_txstatus *status) |
1342 | { | 1355 | { |
@@ -1349,8 +1362,8 @@ void b43_dma_handle_txstatus(struct b43_wldev *dev, | |||
1349 | ring = parse_cookie(dev, status->cookie, &slot); | 1362 | ring = parse_cookie(dev, status->cookie, &slot); |
1350 | if (unlikely(!ring)) | 1363 | if (unlikely(!ring)) |
1351 | return; | 1364 | return; |
1352 | B43_WARN_ON(!irqs_disabled()); | 1365 | |
1353 | spin_lock(&ring->lock); | 1366 | spin_lock(&ring->lock); /* IRQs are already disabled. */ |
1354 | 1367 | ||
1355 | B43_WARN_ON(!ring->tx); | 1368 | B43_WARN_ON(!ring->tx); |
1356 | ops = ring->ops; | 1369 | ops = ring->ops; |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 51dfce16178a..c73a75b24cd6 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -2049,7 +2049,6 @@ void b43_mac_enable(struct b43_wldev *dev) | |||
2049 | { | 2049 | { |
2050 | dev->mac_suspended--; | 2050 | dev->mac_suspended--; |
2051 | B43_WARN_ON(dev->mac_suspended < 0); | 2051 | B43_WARN_ON(dev->mac_suspended < 0); |
2052 | B43_WARN_ON(irqs_disabled()); | ||
2053 | if (dev->mac_suspended == 0) { | 2052 | if (dev->mac_suspended == 0) { |
2054 | b43_write32(dev, B43_MMIO_MACCTL, | 2053 | b43_write32(dev, B43_MMIO_MACCTL, |
2055 | b43_read32(dev, B43_MMIO_MACCTL) | 2054 | b43_read32(dev, B43_MMIO_MACCTL) |
@@ -2075,7 +2074,6 @@ void b43_mac_suspend(struct b43_wldev *dev) | |||
2075 | u32 tmp; | 2074 | u32 tmp; |
2076 | 2075 | ||
2077 | might_sleep(); | 2076 | might_sleep(); |
2078 | B43_WARN_ON(irqs_disabled()); | ||
2079 | B43_WARN_ON(dev->mac_suspended < 0); | 2077 | B43_WARN_ON(dev->mac_suspended < 0); |
2080 | 2078 | ||
2081 | if (dev->mac_suspended == 0) { | 2079 | if (dev->mac_suspended == 0) { |
diff --git a/drivers/net/wireless/b43/pcmcia.c b/drivers/net/wireless/b43/pcmcia.c index b79a6bd5396d..371e4a119511 100644 --- a/drivers/net/wireless/b43/pcmcia.c +++ b/drivers/net/wireless/b43/pcmcia.c | |||
@@ -91,6 +91,8 @@ static int __devinit b43_pcmcia_probe(struct pcmcia_device *dev) | |||
91 | 91 | ||
92 | dev->conf.ConfigBase = parse.config.base; | 92 | dev->conf.ConfigBase = parse.config.base; |
93 | dev->conf.Present = parse.config.rmask[0]; | 93 | dev->conf.Present = parse.config.rmask[0]; |
94 | dev->conf.Attributes = CONF_ENABLE_IRQ; | ||
95 | dev->conf.IntType = INT_MEMORY_AND_IO; | ||
94 | 96 | ||
95 | dev->io.BasePort2 = 0; | 97 | dev->io.BasePort2 = 0; |
96 | dev->io.NumPorts2 = 0; | 98 | dev->io.NumPorts2 = 0; |
@@ -112,8 +114,8 @@ static int __devinit b43_pcmcia_probe(struct pcmcia_device *dev) | |||
112 | if (res != CS_SUCCESS) | 114 | if (res != CS_SUCCESS) |
113 | goto err_disable; | 115 | goto err_disable; |
114 | 116 | ||
115 | dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING | IRQ_FIRST_SHARED; | 117 | dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; |
116 | dev->irq.IRQInfo1 = IRQ_LEVEL_ID | IRQ_SHARE_ID; | 118 | dev->irq.IRQInfo1 = IRQ_LEVEL_ID; |
117 | dev->irq.Handler = NULL; /* The handler is registered later. */ | 119 | dev->irq.Handler = NULL; /* The handler is registered later. */ |
118 | dev->irq.Instance = NULL; | 120 | dev->irq.Instance = NULL; |
119 | res = pcmcia_request_irq(dev, &dev->irq); | 121 | res = pcmcia_request_irq(dev, &dev->irq); |
diff --git a/drivers/net/wireless/hostap/hostap_80211_rx.c b/drivers/net/wireless/hostap/hostap_80211_rx.c index 49978bdb4324..4fd73809602e 100644 --- a/drivers/net/wireless/hostap/hostap_80211_rx.c +++ b/drivers/net/wireless/hostap/hostap_80211_rx.c | |||
@@ -635,7 +635,6 @@ hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb, | |||
635 | { | 635 | { |
636 | struct ieee80211_hdr_4addr *hdr; | 636 | struct ieee80211_hdr_4addr *hdr; |
637 | int res, hdrlen; | 637 | int res, hdrlen; |
638 | DECLARE_MAC_BUF(mac); | ||
639 | 638 | ||
640 | if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) | 639 | if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) |
641 | return 0; | 640 | return 0; |
@@ -647,8 +646,10 @@ hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb, | |||
647 | strcmp(crypt->ops->name, "TKIP") == 0) { | 646 | strcmp(crypt->ops->name, "TKIP") == 0) { |
648 | if (net_ratelimit()) { | 647 | if (net_ratelimit()) { |
649 | printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " | 648 | printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " |
650 | "received packet from %s\n", | 649 | "received packet from " MAC_FMT "\n", |
651 | local->dev->name, print_mac(mac, hdr->addr2)); | 650 | local->dev->name, |
651 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
652 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
652 | } | 653 | } |
653 | return -1; | 654 | return -1; |
654 | } | 655 | } |
@@ -657,9 +658,12 @@ hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb, | |||
657 | res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv); | 658 | res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv); |
658 | atomic_dec(&crypt->refcnt); | 659 | atomic_dec(&crypt->refcnt); |
659 | if (res < 0) { | 660 | if (res < 0) { |
660 | printk(KERN_DEBUG "%s: decryption failed (SA=%s" | 661 | printk(KERN_DEBUG "%s: decryption failed (SA=" MAC_FMT |
661 | ") res=%d\n", | 662 | ") res=%d\n", |
662 | local->dev->name, print_mac(mac, hdr->addr2), res); | 663 | local->dev->name, |
664 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
665 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
666 | res); | ||
663 | local->comm_tallies.rx_discards_wep_undecryptable++; | 667 | local->comm_tallies.rx_discards_wep_undecryptable++; |
664 | return -1; | 668 | return -1; |
665 | } | 669 | } |
@@ -721,7 +725,6 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
721 | struct ieee80211_crypt_data *crypt = NULL; | 725 | struct ieee80211_crypt_data *crypt = NULL; |
722 | void *sta = NULL; | 726 | void *sta = NULL; |
723 | int keyidx = 0; | 727 | int keyidx = 0; |
724 | DECLARE_MAC_BUF(mac); | ||
725 | 728 | ||
726 | iface = netdev_priv(dev); | 729 | iface = netdev_priv(dev); |
727 | local = iface->local; | 730 | local = iface->local; |
@@ -798,8 +801,10 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
798 | * frames silently instead of filling system log with | 801 | * frames silently instead of filling system log with |
799 | * these reports. */ | 802 | * these reports. */ |
800 | printk(KERN_DEBUG "%s: WEP decryption failed (not set)" | 803 | printk(KERN_DEBUG "%s: WEP decryption failed (not set)" |
801 | " (SA=%s)\n", | 804 | " (SA=" MAC_FMT ")\n", |
802 | local->dev->name, print_mac(mac, hdr->addr2)); | 805 | local->dev->name, |
806 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
807 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
803 | #endif | 808 | #endif |
804 | local->comm_tallies.rx_discards_wep_undecryptable++; | 809 | local->comm_tallies.rx_discards_wep_undecryptable++; |
805 | goto rx_dropped; | 810 | goto rx_dropped; |
@@ -813,8 +818,9 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
813 | (keyidx = hostap_rx_frame_decrypt(local, skb, crypt)) < 0) | 818 | (keyidx = hostap_rx_frame_decrypt(local, skb, crypt)) < 0) |
814 | { | 819 | { |
815 | printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth " | 820 | printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth " |
816 | "from %s\n", dev->name, | 821 | "from " MAC_FMT "\n", dev->name, |
817 | print_mac(mac, hdr->addr2)); | 822 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
823 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
818 | /* TODO: could inform hostapd about this so that it | 824 | /* TODO: could inform hostapd about this so that it |
819 | * could send auth failure report */ | 825 | * could send auth failure report */ |
820 | goto rx_dropped; | 826 | goto rx_dropped; |
@@ -982,8 +988,10 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
982 | "unencrypted EAPOL frame\n", local->dev->name); | 988 | "unencrypted EAPOL frame\n", local->dev->name); |
983 | } else { | 989 | } else { |
984 | printk(KERN_DEBUG "%s: encryption configured, but RX " | 990 | printk(KERN_DEBUG "%s: encryption configured, but RX " |
985 | "frame not encrypted (SA=%s)\n", | 991 | "frame not encrypted (SA=" MAC_FMT ")\n", |
986 | local->dev->name, print_mac(mac, hdr->addr2)); | 992 | local->dev->name, |
993 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
994 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
987 | goto rx_dropped; | 995 | goto rx_dropped; |
988 | } | 996 | } |
989 | } | 997 | } |
@@ -992,9 +1000,10 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
992 | !hostap_is_eapol_frame(local, skb)) { | 1000 | !hostap_is_eapol_frame(local, skb)) { |
993 | if (net_ratelimit()) { | 1001 | if (net_ratelimit()) { |
994 | printk(KERN_DEBUG "%s: dropped unencrypted RX data " | 1002 | printk(KERN_DEBUG "%s: dropped unencrypted RX data " |
995 | "frame from %s" | 1003 | "frame from " MAC_FMT " (drop_unencrypted=1)\n", |
996 | " (drop_unencrypted=1)\n", | 1004 | dev->name, |
997 | dev->name, print_mac(mac, hdr->addr2)); | 1005 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1006 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
998 | } | 1007 | } |
999 | goto rx_dropped; | 1008 | goto rx_dropped; |
1000 | } | 1009 | } |
diff --git a/drivers/net/wireless/hostap/hostap_80211_tx.c b/drivers/net/wireless/hostap/hostap_80211_tx.c index e7afc3ec3e6d..921c984416f8 100644 --- a/drivers/net/wireless/hostap/hostap_80211_tx.c +++ b/drivers/net/wireless/hostap/hostap_80211_tx.c | |||
@@ -314,7 +314,6 @@ static struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, | |||
314 | struct ieee80211_hdr_4addr *hdr; | 314 | struct ieee80211_hdr_4addr *hdr; |
315 | u16 fc; | 315 | u16 fc; |
316 | int prefix_len, postfix_len, hdr_len, res; | 316 | int prefix_len, postfix_len, hdr_len, res; |
317 | DECLARE_MAC_BUF(mac); | ||
318 | 317 | ||
319 | iface = netdev_priv(skb->dev); | 318 | iface = netdev_priv(skb->dev); |
320 | local = iface->local; | 319 | local = iface->local; |
@@ -329,8 +328,10 @@ static struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, | |||
329 | hdr = (struct ieee80211_hdr_4addr *) skb->data; | 328 | hdr = (struct ieee80211_hdr_4addr *) skb->data; |
330 | if (net_ratelimit()) { | 329 | if (net_ratelimit()) { |
331 | printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " | 330 | printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " |
332 | "TX packet to %s\n", | 331 | "TX packet to " MAC_FMT "\n", |
333 | local->dev->name, print_mac(mac, hdr->addr1)); | 332 | local->dev->name, |
333 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], | ||
334 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]); | ||
334 | } | 335 | } |
335 | kfree_skb(skb); | 336 | kfree_skb(skb); |
336 | return NULL; | 337 | return NULL; |
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c index ad040a3bb8a7..0acd9589c48c 100644 --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c | |||
@@ -632,7 +632,6 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data) | |||
632 | __le16 *pos; | 632 | __le16 *pos; |
633 | struct sta_info *sta = NULL; | 633 | struct sta_info *sta = NULL; |
634 | char *txt = NULL; | 634 | char *txt = NULL; |
635 | DECLARE_MAC_BUF(mac); | ||
636 | 635 | ||
637 | if (ap->local->hostapd) { | 636 | if (ap->local->hostapd) { |
638 | dev_kfree_skb(skb); | 637 | dev_kfree_skb(skb); |
@@ -684,10 +683,12 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data) | |||
684 | if (sta) | 683 | if (sta) |
685 | atomic_dec(&sta->users); | 684 | atomic_dec(&sta->users); |
686 | if (txt) { | 685 | if (txt) { |
687 | PDEBUG(DEBUG_AP, "%s: %s auth_cb - alg=%d " | 686 | PDEBUG(DEBUG_AP, "%s: " MAC_FMT " auth_cb - alg=%d " |
688 | "trans#=%d status=%d - %s\n", | 687 | "trans#=%d status=%d - %s\n", |
689 | dev->name, print_mac(mac, hdr->addr1), auth_alg, | 688 | dev->name, |
690 | auth_transaction, status, txt); | 689 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], |
690 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5], | ||
691 | auth_alg, auth_transaction, status, txt); | ||
691 | } | 692 | } |
692 | dev_kfree_skb(skb); | 693 | dev_kfree_skb(skb); |
693 | } | 694 | } |
@@ -703,7 +704,6 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data) | |||
703 | __le16 *pos; | 704 | __le16 *pos; |
704 | struct sta_info *sta = NULL; | 705 | struct sta_info *sta = NULL; |
705 | char *txt = NULL; | 706 | char *txt = NULL; |
706 | DECLARE_MAC_BUF(mac); | ||
707 | 707 | ||
708 | if (ap->local->hostapd) { | 708 | if (ap->local->hostapd) { |
709 | dev_kfree_skb(skb); | 709 | dev_kfree_skb(skb); |
@@ -754,8 +754,11 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data) | |||
754 | if (sta) | 754 | if (sta) |
755 | atomic_dec(&sta->users); | 755 | atomic_dec(&sta->users); |
756 | if (txt) { | 756 | if (txt) { |
757 | PDEBUG(DEBUG_AP, "%s: %s assoc_cb - %s\n", | 757 | PDEBUG(DEBUG_AP, "%s: " MAC_FMT " assoc_cb - %s\n", |
758 | dev->name, print_mac(mac, hdr->addr1), txt); | 758 | dev->name, |
759 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], | ||
760 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5], | ||
761 | txt); | ||
759 | } | 762 | } |
760 | dev_kfree_skb(skb); | 763 | dev_kfree_skb(skb); |
761 | } | 764 | } |
@@ -767,7 +770,6 @@ static void hostap_ap_tx_cb_poll(struct sk_buff *skb, int ok, void *data) | |||
767 | struct ap_data *ap = data; | 770 | struct ap_data *ap = data; |
768 | struct ieee80211_hdr_4addr *hdr; | 771 | struct ieee80211_hdr_4addr *hdr; |
769 | struct sta_info *sta; | 772 | struct sta_info *sta; |
770 | DECLARE_MAC_BUF(mac); | ||
771 | 773 | ||
772 | if (skb->len < 24) | 774 | if (skb->len < 24) |
773 | goto fail; | 775 | goto fail; |
@@ -779,9 +781,11 @@ static void hostap_ap_tx_cb_poll(struct sk_buff *skb, int ok, void *data) | |||
779 | sta->flags &= ~WLAN_STA_PENDING_POLL; | 781 | sta->flags &= ~WLAN_STA_PENDING_POLL; |
780 | spin_unlock(&ap->sta_table_lock); | 782 | spin_unlock(&ap->sta_table_lock); |
781 | } else { | 783 | } else { |
782 | PDEBUG(DEBUG_AP, "%s: STA %s" | 784 | PDEBUG(DEBUG_AP, "%s: STA " MAC_FMT |
783 | " did not ACK activity poll frame\n", | 785 | " did not ACK activity poll frame\n", |
784 | ap->local->dev->name, print_mac(mac, hdr->addr1)); | 786 | ap->local->dev->name, |
787 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], | ||
788 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]); | ||
785 | } | 789 | } |
786 | 790 | ||
787 | fail: | 791 | fail: |
@@ -1306,7 +1310,6 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb, | |||
1306 | struct sta_info *sta = NULL; | 1310 | struct sta_info *sta = NULL; |
1307 | struct ieee80211_crypt_data *crypt; | 1311 | struct ieee80211_crypt_data *crypt; |
1308 | char *txt = ""; | 1312 | char *txt = ""; |
1309 | DECLARE_MAC_BUF(mac); | ||
1310 | 1313 | ||
1311 | len = skb->len - IEEE80211_MGMT_HDR_LEN; | 1314 | len = skb->len - IEEE80211_MGMT_HDR_LEN; |
1312 | 1315 | ||
@@ -1315,8 +1318,9 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb, | |||
1315 | 1318 | ||
1316 | if (len < 6) { | 1319 | if (len < 6) { |
1317 | PDEBUG(DEBUG_AP, "%s: handle_authen - too short payload " | 1320 | PDEBUG(DEBUG_AP, "%s: handle_authen - too short payload " |
1318 | "(len=%d) from %s\n", dev->name, len, | 1321 | "(len=%d) from " MAC_FMT "\n", dev->name, len, |
1319 | print_mac(mac, hdr->addr2)); | 1322 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1323 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
1320 | return; | 1324 | return; |
1321 | } | 1325 | } |
1322 | 1326 | ||
@@ -1381,8 +1385,10 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb, | |||
1381 | if (time_after(jiffies, sta->u.ap.last_beacon + | 1385 | if (time_after(jiffies, sta->u.ap.last_beacon + |
1382 | (10 * sta->listen_interval * HZ) / 1024)) { | 1386 | (10 * sta->listen_interval * HZ) / 1024)) { |
1383 | PDEBUG(DEBUG_AP, "%s: no beacons received for a while," | 1387 | PDEBUG(DEBUG_AP, "%s: no beacons received for a while," |
1384 | " assuming AP %s is now STA\n", | 1388 | " assuming AP " MAC_FMT " is now STA\n", |
1385 | dev->name, print_mac(mac, sta->addr)); | 1389 | dev->name, |
1390 | sta->addr[0], sta->addr[1], sta->addr[2], | ||
1391 | sta->addr[3], sta->addr[4], sta->addr[5]); | ||
1386 | sta->ap = 0; | 1392 | sta->ap = 0; |
1387 | sta->flags = 0; | 1393 | sta->flags = 0; |
1388 | sta->u.sta.challenge = NULL; | 1394 | sta->u.sta.challenge = NULL; |
@@ -1497,10 +1503,13 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb, | |||
1497 | } | 1503 | } |
1498 | 1504 | ||
1499 | if (resp) { | 1505 | if (resp) { |
1500 | PDEBUG(DEBUG_AP, "%s: %s auth (alg=%d " | 1506 | PDEBUG(DEBUG_AP, "%s: " MAC_FMT " auth (alg=%d " |
1501 | "trans#=%d stat=%d len=%d fc=%04x) ==> %d (%s)\n", | 1507 | "trans#=%d stat=%d len=%d fc=%04x) ==> %d (%s)\n", |
1502 | dev->name, print_mac(mac, hdr->addr2), auth_alg, | 1508 | dev->name, |
1503 | auth_transaction, status_code, len, fc, resp, txt); | 1509 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1510 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1511 | auth_alg, auth_transaction, status_code, len, | ||
1512 | fc, resp, txt); | ||
1504 | } | 1513 | } |
1505 | } | 1514 | } |
1506 | 1515 | ||
@@ -1519,14 +1528,15 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb, | |||
1519 | int send_deauth = 0; | 1528 | int send_deauth = 0; |
1520 | char *txt = ""; | 1529 | char *txt = ""; |
1521 | u8 prev_ap[ETH_ALEN]; | 1530 | u8 prev_ap[ETH_ALEN]; |
1522 | DECLARE_MAC_BUF(mac); | ||
1523 | 1531 | ||
1524 | left = len = skb->len - IEEE80211_MGMT_HDR_LEN; | 1532 | left = len = skb->len - IEEE80211_MGMT_HDR_LEN; |
1525 | 1533 | ||
1526 | if (len < (reassoc ? 10 : 4)) { | 1534 | if (len < (reassoc ? 10 : 4)) { |
1527 | PDEBUG(DEBUG_AP, "%s: handle_assoc - too short payload " | 1535 | PDEBUG(DEBUG_AP, "%s: handle_assoc - too short payload " |
1528 | "(len=%d, reassoc=%d) from %s\n", | 1536 | "(len=%d, reassoc=%d) from " MAC_FMT "\n", |
1529 | dev->name, len, reassoc, print_mac(mac, hdr->addr2)); | 1537 | dev->name, len, reassoc, |
1538 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
1539 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5]); | ||
1530 | return; | 1540 | return; |
1531 | } | 1541 | } |
1532 | 1542 | ||
@@ -1603,9 +1613,12 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb, | |||
1603 | } | 1613 | } |
1604 | 1614 | ||
1605 | if (left > 0) { | 1615 | if (left > 0) { |
1606 | PDEBUG(DEBUG_AP, "%s: assoc from %s" | 1616 | PDEBUG(DEBUG_AP, "%s: assoc from " MAC_FMT |
1607 | " with extra data (%d bytes) [", | 1617 | " with extra data (%d bytes) [", |
1608 | dev->name, print_mac(mac, hdr->addr2), left); | 1618 | dev->name, |
1619 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
1620 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1621 | left); | ||
1609 | while (left > 0) { | 1622 | while (left > 0) { |
1610 | PDEBUG2(DEBUG_AP, "<%02x>", *u); | 1623 | PDEBUG2(DEBUG_AP, "<%02x>", *u); |
1611 | u++; left--; | 1624 | u++; left--; |
@@ -1704,10 +1717,15 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb, | |||
1704 | } | 1717 | } |
1705 | 1718 | ||
1706 | #if 0 | 1719 | #if 0 |
1707 | PDEBUG(DEBUG_AP, "%s: %s %sassoc (len=%d " | 1720 | PDEBUG(DEBUG_AP, "%s: " MAC_FMT" %sassoc (len=%d " |
1708 | "prev_ap=%s) => %d(%d) (%s)\n", | 1721 | "prev_ap=" MAC_FMT") => %d(%d) (%s)\n", |
1709 | dev->name, print_mac(mac, hdr->addr2), reassoc ? "re" : "", len, | 1722 | dev->name, |
1710 | print_mac(mac, prev_ap), resp, send_deauth, txt); | 1723 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1724 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1725 | reassoc ? "re" : "", len, | ||
1726 | prev_ap[0], prev_ap[1], prev_ap[2], | ||
1727 | prev_ap[3], prev_ap[4], prev_ap[5], | ||
1728 | resp, send_deauth, txt); | ||
1711 | #endif | 1729 | #endif |
1712 | } | 1730 | } |
1713 | 1731 | ||
@@ -1735,9 +1753,11 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb, | |||
1735 | pos = (__le16 *) body; | 1753 | pos = (__le16 *) body; |
1736 | reason_code = le16_to_cpu(*pos); | 1754 | reason_code = le16_to_cpu(*pos); |
1737 | 1755 | ||
1738 | PDEBUG(DEBUG_AP, "%s: deauthentication: %s len=%d, " | 1756 | PDEBUG(DEBUG_AP, "%s: deauthentication: " MAC_FMT " len=%d, " |
1739 | "reason_code=%d\n", dev->name, print_mac(mac, hdr->addr2), len, | 1757 | "reason_code=%d\n", dev->name, |
1740 | reason_code); | 1758 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1759 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1760 | len, reason_code); | ||
1741 | 1761 | ||
1742 | spin_lock_bh(&local->ap->sta_table_lock); | 1762 | spin_lock_bh(&local->ap->sta_table_lock); |
1743 | sta = ap_get_sta(local->ap, hdr->addr2); | 1763 | sta = ap_get_sta(local->ap, hdr->addr2); |
@@ -1748,9 +1768,11 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb, | |||
1748 | } | 1768 | } |
1749 | spin_unlock_bh(&local->ap->sta_table_lock); | 1769 | spin_unlock_bh(&local->ap->sta_table_lock); |
1750 | if (sta == NULL) { | 1770 | if (sta == NULL) { |
1751 | printk("%s: deauthentication from %s, " | 1771 | printk("%s: deauthentication from " MAC_FMT ", " |
1752 | "reason_code=%d, but STA not authenticated\n", dev->name, | 1772 | "reason_code=%d, but STA not authenticated\n", dev->name, |
1753 | print_mac(mac, hdr->addr2), reason_code); | 1773 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1774 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1775 | reason_code); | ||
1754 | } | 1776 | } |
1755 | } | 1777 | } |
1756 | 1778 | ||
@@ -1766,7 +1788,6 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb, | |||
1766 | u16 reason_code; | 1788 | u16 reason_code; |
1767 | __le16 *pos; | 1789 | __le16 *pos; |
1768 | struct sta_info *sta = NULL; | 1790 | struct sta_info *sta = NULL; |
1769 | DECLARE_MAC_BUF(mac); | ||
1770 | 1791 | ||
1771 | len = skb->len - IEEE80211_MGMT_HDR_LEN; | 1792 | len = skb->len - IEEE80211_MGMT_HDR_LEN; |
1772 | 1793 | ||
@@ -1778,9 +1799,11 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb, | |||
1778 | pos = (__le16 *) body; | 1799 | pos = (__le16 *) body; |
1779 | reason_code = le16_to_cpu(*pos); | 1800 | reason_code = le16_to_cpu(*pos); |
1780 | 1801 | ||
1781 | PDEBUG(DEBUG_AP, "%s: disassociation: %s len=%d, " | 1802 | PDEBUG(DEBUG_AP, "%s: disassociation: " MAC_FMT " len=%d, " |
1782 | "reason_code=%d\n", dev->name, print_mac(mac, hdr->addr2), len, | 1803 | "reason_code=%d\n", dev->name, |
1783 | reason_code); | 1804 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], |
1805 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1806 | len, reason_code); | ||
1784 | 1807 | ||
1785 | spin_lock_bh(&local->ap->sta_table_lock); | 1808 | spin_lock_bh(&local->ap->sta_table_lock); |
1786 | sta = ap_get_sta(local->ap, hdr->addr2); | 1809 | sta = ap_get_sta(local->ap, hdr->addr2); |
@@ -1791,9 +1814,12 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb, | |||
1791 | } | 1814 | } |
1792 | spin_unlock_bh(&local->ap->sta_table_lock); | 1815 | spin_unlock_bh(&local->ap->sta_table_lock); |
1793 | if (sta == NULL) { | 1816 | if (sta == NULL) { |
1794 | printk("%s: disassociation from %s, " | 1817 | printk("%s: disassociation from " MAC_FMT ", " |
1795 | "reason_code=%d, but STA not authenticated\n", | 1818 | "reason_code=%d, but STA not authenticated\n", |
1796 | dev->name, print_mac(mac, hdr->addr2), reason_code); | 1819 | dev->name, |
1820 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
1821 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1822 | reason_code); | ||
1797 | } | 1823 | } |
1798 | } | 1824 | } |
1799 | 1825 | ||
@@ -1882,16 +1908,20 @@ static void handle_pspoll(local_info_t *local, | |||
1882 | struct sta_info *sta; | 1908 | struct sta_info *sta; |
1883 | u16 aid; | 1909 | u16 aid; |
1884 | struct sk_buff *skb; | 1910 | struct sk_buff *skb; |
1885 | DECLARE_MAC_BUF(mac); | ||
1886 | 1911 | ||
1887 | PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=%s" | 1912 | PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=" MAC_FMT |
1888 | ", TA=%s PWRMGT=%d\n", | 1913 | ", TA=" MAC_FMT " PWRMGT=%d\n", |
1889 | print_mac(mac, hdr->addr1), print_mac(mac, hdr->addr2), | 1914 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], |
1915 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5], | ||
1916 | hdr->addr2[0], hdr->addr2[1], hdr->addr2[2], | ||
1917 | hdr->addr2[3], hdr->addr2[4], hdr->addr2[5], | ||
1890 | !!(le16_to_cpu(hdr->frame_ctl) & IEEE80211_FCTL_PM)); | 1918 | !!(le16_to_cpu(hdr->frame_ctl) & IEEE80211_FCTL_PM)); |
1891 | 1919 | ||
1892 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { | 1920 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { |
1893 | PDEBUG(DEBUG_AP, "handle_pspoll - addr1(BSSID)=%s" | 1921 | PDEBUG(DEBUG_AP, "handle_pspoll - addr1(BSSID)=" MAC_FMT |
1894 | " not own MAC\n", print_mac(mac, hdr->addr1)); | 1922 | " not own MAC\n", |
1923 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], | ||
1924 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]); | ||
1895 | return; | 1925 | return; |
1896 | } | 1926 | } |
1897 | 1927 | ||
@@ -1969,7 +1999,6 @@ static void handle_wds_oper_queue(struct work_struct *work) | |||
1969 | wds_oper_queue); | 1999 | wds_oper_queue); |
1970 | local_info_t *local = ap->local; | 2000 | local_info_t *local = ap->local; |
1971 | struct wds_oper_data *entry, *prev; | 2001 | struct wds_oper_data *entry, *prev; |
1972 | DECLARE_MAC_BUF(mac); | ||
1973 | 2002 | ||
1974 | spin_lock_bh(&local->lock); | 2003 | spin_lock_bh(&local->lock); |
1975 | entry = local->ap->wds_oper_entries; | 2004 | entry = local->ap->wds_oper_entries; |
@@ -1978,10 +2007,11 @@ static void handle_wds_oper_queue(struct work_struct *work) | |||
1978 | 2007 | ||
1979 | while (entry) { | 2008 | while (entry) { |
1980 | PDEBUG(DEBUG_AP, "%s: %s automatic WDS connection " | 2009 | PDEBUG(DEBUG_AP, "%s: %s automatic WDS connection " |
1981 | "to AP %s\n", | 2010 | "to AP " MAC_FMT "\n", |
1982 | local->dev->name, | 2011 | local->dev->name, |
1983 | entry->type == WDS_ADD ? "adding" : "removing", | 2012 | entry->type == WDS_ADD ? "adding" : "removing", |
1984 | print_mac(mac, entry->addr)); | 2013 | entry->addr[0], entry->addr[1], entry->addr[2], |
2014 | entry->addr[3], entry->addr[4], entry->addr[5]); | ||
1985 | if (entry->type == WDS_ADD) | 2015 | if (entry->type == WDS_ADD) |
1986 | prism2_wds_add(local, entry->addr, 0); | 2016 | prism2_wds_add(local, entry->addr, 0); |
1987 | else if (entry->type == WDS_DEL) | 2017 | else if (entry->type == WDS_DEL) |
@@ -2158,7 +2188,6 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb, | |||
2158 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ | 2188 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ |
2159 | u16 fc, type, stype; | 2189 | u16 fc, type, stype; |
2160 | struct ieee80211_hdr_4addr *hdr; | 2190 | struct ieee80211_hdr_4addr *hdr; |
2161 | DECLARE_MAC_BUF(mac); | ||
2162 | 2191 | ||
2163 | /* FIX: should give skb->len to handler functions and check that the | 2192 | /* FIX: should give skb->len to handler functions and check that the |
2164 | * buffer is long enough */ | 2193 | * buffer is long enough */ |
@@ -2187,8 +2216,9 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb, | |||
2187 | 2216 | ||
2188 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { | 2217 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { |
2189 | PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)=" | 2218 | PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)=" |
2190 | "%s not own MAC\n", | 2219 | MAC_FMT " not own MAC\n", |
2191 | print_mac(mac, hdr->addr1)); | 2220 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], |
2221 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]); | ||
2192 | goto done; | 2222 | goto done; |
2193 | } | 2223 | } |
2194 | 2224 | ||
@@ -2224,14 +2254,18 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb, | |||
2224 | } | 2254 | } |
2225 | 2255 | ||
2226 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { | 2256 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { |
2227 | PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=%s" | 2257 | PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=" MAC_FMT |
2228 | " not own MAC\n", print_mac(mac, hdr->addr1)); | 2258 | " not own MAC\n", |
2259 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], | ||
2260 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]); | ||
2229 | goto done; | 2261 | goto done; |
2230 | } | 2262 | } |
2231 | 2263 | ||
2232 | if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN)) { | 2264 | if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN)) { |
2233 | PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=%s" | 2265 | PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=" MAC_FMT |
2234 | " not own MAC\n", print_mac(mac, hdr->addr3)); | 2266 | " not own MAC\n", |
2267 | hdr->addr3[0], hdr->addr3[1], hdr->addr3[2], | ||
2268 | hdr->addr3[3], hdr->addr3[4], hdr->addr3[5]); | ||
2235 | goto done; | 2269 | goto done; |
2236 | } | 2270 | } |
2237 | 2271 | ||
@@ -2312,7 +2346,6 @@ static void schedule_packet_send(local_info_t *local, struct sta_info *sta) | |||
2312 | struct sk_buff *skb; | 2346 | struct sk_buff *skb; |
2313 | struct ieee80211_hdr_4addr *hdr; | 2347 | struct ieee80211_hdr_4addr *hdr; |
2314 | struct hostap_80211_rx_status rx_stats; | 2348 | struct hostap_80211_rx_status rx_stats; |
2315 | DECLARE_MAC_BUF(mac); | ||
2316 | 2349 | ||
2317 | if (skb_queue_empty(&sta->tx_buf)) | 2350 | if (skb_queue_empty(&sta->tx_buf)) |
2318 | return; | 2351 | return; |
@@ -2334,7 +2367,9 @@ static void schedule_packet_send(local_info_t *local, struct sta_info *sta) | |||
2334 | hdr->duration_id = cpu_to_le16(sta->aid | BIT(15) | BIT(14)); | 2367 | hdr->duration_id = cpu_to_le16(sta->aid | BIT(15) | BIT(14)); |
2335 | 2368 | ||
2336 | PDEBUG(DEBUG_PS2, "%s: Scheduling buffered packet delivery for STA " | 2369 | PDEBUG(DEBUG_PS2, "%s: Scheduling buffered packet delivery for STA " |
2337 | "%s\n", local->dev->name, print_mac(mac, sta->addr)); | 2370 | MAC_FMT "\n", local->dev->name, |
2371 | sta->addr[0], sta->addr[1], sta->addr[2], | ||
2372 | sta->addr[3], sta->addr[4], sta->addr[5]); | ||
2338 | 2373 | ||
2339 | skb->dev = local->dev; | 2374 | skb->dev = local->dev; |
2340 | 2375 | ||
@@ -2661,7 +2696,6 @@ static int ap_update_sta_tx_rate(struct sta_info *sta, struct net_device *dev) | |||
2661 | int ret = sta->tx_rate; | 2696 | int ret = sta->tx_rate; |
2662 | struct hostap_interface *iface; | 2697 | struct hostap_interface *iface; |
2663 | local_info_t *local; | 2698 | local_info_t *local; |
2664 | DECLARE_MAC_BUF(mac); | ||
2665 | 2699 | ||
2666 | iface = netdev_priv(dev); | 2700 | iface = netdev_priv(dev); |
2667 | local = iface->local; | 2701 | local = iface->local; |
@@ -2689,9 +2723,12 @@ static int ap_update_sta_tx_rate(struct sta_info *sta, struct net_device *dev) | |||
2689 | case 3: sta->tx_rate = 110; break; | 2723 | case 3: sta->tx_rate = 110; break; |
2690 | default: sta->tx_rate = 0; break; | 2724 | default: sta->tx_rate = 0; break; |
2691 | } | 2725 | } |
2692 | PDEBUG(DEBUG_AP, "%s: STA %s" | 2726 | PDEBUG(DEBUG_AP, "%s: STA " MAC_FMT |
2693 | " TX rate raised to %d\n", | 2727 | " TX rate raised to %d\n", |
2694 | dev->name, print_mac(mac, sta->addr), sta->tx_rate); | 2728 | dev->name, |
2729 | sta->addr[0], sta->addr[1], sta->addr[2], | ||
2730 | sta->addr[3], sta->addr[4], sta->addr[5], | ||
2731 | sta->tx_rate); | ||
2695 | } | 2732 | } |
2696 | sta->tx_since_last_failure = 0; | 2733 | sta->tx_since_last_failure = 0; |
2697 | } | 2734 | } |
@@ -2709,7 +2746,6 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx) | |||
2709 | int set_tim, ret; | 2746 | int set_tim, ret; |
2710 | struct ieee80211_hdr_4addr *hdr; | 2747 | struct ieee80211_hdr_4addr *hdr; |
2711 | struct hostap_skb_tx_data *meta; | 2748 | struct hostap_skb_tx_data *meta; |
2712 | DECLARE_MAC_BUF(mac); | ||
2713 | 2749 | ||
2714 | meta = (struct hostap_skb_tx_data *) skb->cb; | 2750 | meta = (struct hostap_skb_tx_data *) skb->cb; |
2715 | ret = AP_TX_CONTINUE; | 2751 | ret = AP_TX_CONTINUE; |
@@ -2745,8 +2781,9 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx) | |||
2745 | * print out any errors here. */ | 2781 | * print out any errors here. */ |
2746 | if (net_ratelimit()) { | 2782 | if (net_ratelimit()) { |
2747 | printk(KERN_DEBUG "AP: drop packet to non-associated " | 2783 | printk(KERN_DEBUG "AP: drop packet to non-associated " |
2748 | "STA %s\n", | 2784 | "STA " MAC_FMT "\n", |
2749 | print_mac(mac, hdr->addr1)); | 2785 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], |
2786 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5]); | ||
2750 | } | 2787 | } |
2751 | #endif | 2788 | #endif |
2752 | local->ap->tx_drop_nonassoc++; | 2789 | local->ap->tx_drop_nonassoc++; |
@@ -2784,9 +2821,11 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx) | |||
2784 | } | 2821 | } |
2785 | 2822 | ||
2786 | if (skb_queue_len(&sta->tx_buf) >= STA_MAX_TX_BUFFER) { | 2823 | if (skb_queue_len(&sta->tx_buf) >= STA_MAX_TX_BUFFER) { |
2787 | PDEBUG(DEBUG_PS, "%s: No more space in STA (%s" | 2824 | PDEBUG(DEBUG_PS, "%s: No more space in STA (" MAC_FMT |
2788 | ")'s PS mode buffer\n", | 2825 | ")'s PS mode buffer\n", |
2789 | local->dev->name, print_mac(mac, sta->addr)); | 2826 | local->dev->name, |
2827 | sta->addr[0], sta->addr[1], sta->addr[2], | ||
2828 | sta->addr[3], sta->addr[4], sta->addr[5]); | ||
2790 | /* Make sure that TIM is set for the station (it might not be | 2829 | /* Make sure that TIM is set for the station (it might not be |
2791 | * after AP wlan hw reset). */ | 2830 | * after AP wlan hw reset). */ |
2792 | /* FIX: should fix hw reset to restore bits based on STA | 2831 | /* FIX: should fix hw reset to restore bits based on STA |
@@ -2850,7 +2889,6 @@ void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb) | |||
2850 | struct sta_info *sta; | 2889 | struct sta_info *sta; |
2851 | struct ieee80211_hdr_4addr *hdr; | 2890 | struct ieee80211_hdr_4addr *hdr; |
2852 | struct hostap_skb_tx_data *meta; | 2891 | struct hostap_skb_tx_data *meta; |
2853 | DECLARE_MAC_BUF(mac); | ||
2854 | 2892 | ||
2855 | hdr = (struct ieee80211_hdr_4addr *) skb->data; | 2893 | hdr = (struct ieee80211_hdr_4addr *) skb->data; |
2856 | meta = (struct hostap_skb_tx_data *) skb->cb; | 2894 | meta = (struct hostap_skb_tx_data *) skb->cb; |
@@ -2859,9 +2897,12 @@ void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb) | |||
2859 | sta = ap_get_sta(local->ap, hdr->addr1); | 2897 | sta = ap_get_sta(local->ap, hdr->addr1); |
2860 | if (!sta) { | 2898 | if (!sta) { |
2861 | spin_unlock(&local->ap->sta_table_lock); | 2899 | spin_unlock(&local->ap->sta_table_lock); |
2862 | PDEBUG(DEBUG_AP, "%s: Could not find STA %s" | 2900 | PDEBUG(DEBUG_AP, "%s: Could not find STA " MAC_FMT |
2863 | " for this TX error (@%lu)\n", | 2901 | " for this TX error (@%lu)\n", |
2864 | local->dev->name, print_mac(mac, hdr->addr1), jiffies); | 2902 | local->dev->name, |
2903 | hdr->addr1[0], hdr->addr1[1], hdr->addr1[2], | ||
2904 | hdr->addr1[3], hdr->addr1[4], hdr->addr1[5], | ||
2905 | jiffies); | ||
2865 | return; | 2906 | return; |
2866 | } | 2907 | } |
2867 | 2908 | ||
@@ -2888,9 +2929,11 @@ void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb) | |||
2888 | case 3: sta->tx_rate = 110; break; | 2929 | case 3: sta->tx_rate = 110; break; |
2889 | default: sta->tx_rate = 0; break; | 2930 | default: sta->tx_rate = 0; break; |
2890 | } | 2931 | } |
2891 | PDEBUG(DEBUG_AP, "%s: STA %s" | 2932 | PDEBUG(DEBUG_AP, "%s: STA " MAC_FMT |
2892 | " TX rate lowered to %d\n", | 2933 | " TX rate lowered to %d\n", |
2893 | local->dev->name, print_mac(mac, sta->addr), | 2934 | local->dev->name, |
2935 | sta->addr[0], sta->addr[1], sta->addr[2], | ||
2936 | sta->addr[3], sta->addr[4], sta->addr[5], | ||
2894 | sta->tx_rate); | 2937 | sta->tx_rate); |
2895 | } | 2938 | } |
2896 | sta->tx_consecutive_exc = 0; | 2939 | sta->tx_consecutive_exc = 0; |
@@ -2956,7 +2999,6 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
2956 | struct sta_info *sta; | 2999 | struct sta_info *sta; |
2957 | u16 fc, type, stype; | 3000 | u16 fc, type, stype; |
2958 | struct ieee80211_hdr_4addr *hdr; | 3001 | struct ieee80211_hdr_4addr *hdr; |
2959 | DECLARE_MAC_BUF(mac); | ||
2960 | 3002 | ||
2961 | if (local->ap == NULL) | 3003 | if (local->ap == NULL) |
2962 | return AP_RX_CONTINUE; | 3004 | return AP_RX_CONTINUE; |
@@ -2988,9 +3030,12 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
2988 | } else { | 3030 | } else { |
2989 | printk(KERN_DEBUG "%s: dropped received packet" | 3031 | printk(KERN_DEBUG "%s: dropped received packet" |
2990 | " from non-associated STA " | 3032 | " from non-associated STA " |
2991 | "%s" | 3033 | MAC_FMT |
2992 | " (type=0x%02x, subtype=0x%02x)\n", | 3034 | " (type=0x%02x, subtype=0x%02x)\n", |
2993 | dev->name, print_mac(mac, hdr->addr2), | 3035 | dev->name, |
3036 | hdr->addr2[0], hdr->addr2[1], | ||
3037 | hdr->addr2[2], hdr->addr2[3], | ||
3038 | hdr->addr2[4], hdr->addr2[5], | ||
2994 | type >> 2, stype >> 4); | 3039 | type >> 2, stype >> 4); |
2995 | hostap_rx(dev, skb, rx_stats); | 3040 | hostap_rx(dev, skb, rx_stats); |
2996 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ | 3041 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ |
@@ -3025,8 +3070,11 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
3025 | * being associated. */ | 3070 | * being associated. */ |
3026 | printk(KERN_DEBUG "%s: rejected received nullfunc " | 3071 | printk(KERN_DEBUG "%s: rejected received nullfunc " |
3027 | "frame without ToDS from not associated STA " | 3072 | "frame without ToDS from not associated STA " |
3028 | "%s\n", | 3073 | MAC_FMT "\n", |
3029 | dev->name, print_mac(mac, hdr->addr2)); | 3074 | dev->name, |
3075 | hdr->addr2[0], hdr->addr2[1], | ||
3076 | hdr->addr2[2], hdr->addr2[3], | ||
3077 | hdr->addr2[4], hdr->addr2[5]); | ||
3030 | hostap_rx(dev, skb, rx_stats); | 3078 | hostap_rx(dev, skb, rx_stats); |
3031 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ | 3079 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ |
3032 | } | 3080 | } |
@@ -3043,9 +3091,12 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
3043 | * If BSSID is own, report the dropping of this frame. */ | 3091 | * If BSSID is own, report the dropping of this frame. */ |
3044 | if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) { | 3092 | if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) { |
3045 | printk(KERN_DEBUG "%s: dropped received packet from " | 3093 | printk(KERN_DEBUG "%s: dropped received packet from " |
3046 | "%s with no ToDS flag " | 3094 | MAC_FMT " with no ToDS flag " |
3047 | "(type=0x%02x, subtype=0x%02x)\n", dev->name, | 3095 | "(type=0x%02x, subtype=0x%02x)\n", dev->name, |
3048 | print_mac(mac, hdr->addr2), type >> 2, stype >> 4); | 3096 | hdr->addr2[0], hdr->addr2[1], |
3097 | hdr->addr2[2], hdr->addr2[3], | ||
3098 | hdr->addr2[4], hdr->addr2[5], | ||
3099 | type >> 2, stype >> 4); | ||
3049 | hostap_dump_rx_80211(dev->name, skb, rx_stats); | 3100 | hostap_dump_rx_80211(dev->name, skb, rx_stats); |
3050 | } | 3101 | } |
3051 | ret = AP_RX_DROP; | 3102 | ret = AP_RX_DROP; |
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index a56d9fc6354f..98d6ff69d375 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
@@ -10192,7 +10192,6 @@ static int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, | |||
10192 | u8 id, hdr_len, unicast; | 10192 | u8 id, hdr_len, unicast; |
10193 | u16 remaining_bytes; | 10193 | u16 remaining_bytes; |
10194 | int fc; | 10194 | int fc; |
10195 | DECLARE_MAC_BUF(mac); | ||
10196 | 10195 | ||
10197 | hdr_len = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); | 10196 | hdr_len = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); |
10198 | switch (priv->ieee->iw_mode) { | 10197 | switch (priv->ieee->iw_mode) { |
@@ -10203,8 +10202,10 @@ static int ipw_tx_skb(struct ipw_priv *priv, struct ieee80211_txb *txb, | |||
10203 | id = ipw_add_station(priv, hdr->addr1); | 10202 | id = ipw_add_station(priv, hdr->addr1); |
10204 | if (id == IPW_INVALID_STATION) { | 10203 | if (id == IPW_INVALID_STATION) { |
10205 | IPW_WARNING("Attempt to send data to " | 10204 | IPW_WARNING("Attempt to send data to " |
10206 | "invalid cell: %s\n", | 10205 | "invalid cell: " MAC_FMT "\n", |
10207 | print_mac(mac, hdr->addr1)); | 10206 | hdr->addr1[0], hdr->addr1[1], |
10207 | hdr->addr1[2], hdr->addr1[3], | ||
10208 | hdr->addr1[4], hdr->addr1[5]); | ||
10208 | goto drop; | 10209 | goto drop; |
10209 | } | 10210 | } |
10210 | } | 10211 | } |
@@ -11576,6 +11577,7 @@ static int ipw_prom_alloc(struct ipw_priv *priv) | |||
11576 | priv->prom_priv->priv = priv; | 11577 | priv->prom_priv->priv = priv; |
11577 | 11578 | ||
11578 | strcpy(priv->prom_net_dev->name, "rtap%d"); | 11579 | strcpy(priv->prom_net_dev->name, "rtap%d"); |
11580 | memcpy(priv->prom_net_dev->dev_addr, priv->mac_addr, ETH_ALEN); | ||
11579 | 11581 | ||
11580 | priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP; | 11582 | priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP; |
11581 | priv->prom_net_dev->open = ipw_prom_open; | 11583 | priv->prom_net_dev->open = ipw_prom_open; |
diff --git a/drivers/net/wireless/iwlwifi/Kconfig b/drivers/net/wireless/iwlwifi/Kconfig index d1af938b9aa6..b54ff712e703 100644 --- a/drivers/net/wireless/iwlwifi/Kconfig +++ b/drivers/net/wireless/iwlwifi/Kconfig | |||
@@ -20,7 +20,7 @@ config IWL4965 | |||
20 | runs. | 20 | runs. |
21 | 21 | ||
22 | If you want to compile the driver as a module ( = code which can be | 22 | If you want to compile the driver as a module ( = code which can be |
23 | inserted in and remvoed from the running kernel whenever you want), | 23 | inserted in and removed from the running kernel whenever you want), |
24 | say M here and read <file:Documentation/kbuild/modules.txt>. The | 24 | say M here and read <file:Documentation/kbuild/modules.txt>. The |
25 | module will be called iwl4965.ko. | 25 | module will be called iwl4965.ko. |
26 | 26 | ||
@@ -35,7 +35,6 @@ config IWL4965_HT | |||
35 | bool "Enable 802.11n HT features in iwl4965 driver" | 35 | bool "Enable 802.11n HT features in iwl4965 driver" |
36 | depends on EXPERIMENTAL | 36 | depends on EXPERIMENTAL |
37 | depends on IWL4965 && IWL4965_QOS | 37 | depends on IWL4965 && IWL4965_QOS |
38 | depends on n | ||
39 | ---help--- | 38 | ---help--- |
40 | This option enables IEEE 802.11n High Throughput features | 39 | This option enables IEEE 802.11n High Throughput features |
41 | for the iwl4965 driver. | 40 | for the iwl4965 driver. |
@@ -101,7 +100,7 @@ config IWL3945 | |||
101 | runs. | 100 | runs. |
102 | 101 | ||
103 | If you want to compile the driver as a module ( = code which can be | 102 | If you want to compile the driver as a module ( = code which can be |
104 | inserted in and remvoed from the running kernel whenever you want), | 103 | inserted in and removed from the running kernel whenever you want), |
105 | say M here and read <file:Documentation/kbuild/modules.txt>. The | 104 | say M here and read <file:Documentation/kbuild/modules.txt>. The |
106 | module will be called iwl3945.ko. | 105 | module will be called iwl3945.ko. |
107 | 106 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index d727de8b96fe..65767570be68 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -4589,7 +4589,7 @@ static u8 iwl4965_is_fat_tx_allowed(struct iwl4965_priv *priv, | |||
4589 | 4589 | ||
4590 | if (sta_ht_inf) { | 4590 | if (sta_ht_inf) { |
4591 | if ((!sta_ht_inf->ht_supported) || | 4591 | if ((!sta_ht_inf->ht_supported) || |
4592 | (!sta_ht_inf->cap & IEEE80211_HT_CAP_SUP_WIDTH)) | 4592 | (!(sta_ht_inf->cap & IEEE80211_HT_CAP_SUP_WIDTH))) |
4593 | return 0; | 4593 | return 0; |
4594 | } | 4594 | } |
4595 | 4595 | ||
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 40b71bc2c4a4..cbaeaf186494 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -6206,11 +6206,11 @@ static void iwl3945_alive_start(struct iwl3945_priv *priv) | |||
6206 | 6206 | ||
6207 | /* At this point, the NIC is initialized and operational */ | 6207 | /* At this point, the NIC is initialized and operational */ |
6208 | priv->notif_missed_beacons = 0; | 6208 | priv->notif_missed_beacons = 0; |
6209 | set_bit(STATUS_READY, &priv->status); | ||
6210 | 6209 | ||
6211 | iwl3945_reg_txpower_periodic(priv); | 6210 | iwl3945_reg_txpower_periodic(priv); |
6212 | 6211 | ||
6213 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); | 6212 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); |
6213 | set_bit(STATUS_READY, &priv->status); | ||
6214 | wake_up_interruptible(&priv->wait_command_queue); | 6214 | wake_up_interruptible(&priv->wait_command_queue); |
6215 | 6215 | ||
6216 | if (priv->error_recovering) | 6216 | if (priv->error_recovering) |
@@ -8706,7 +8706,7 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
8706 | return err; | 8706 | return err; |
8707 | } | 8707 | } |
8708 | 8708 | ||
8709 | static void iwl3945_pci_remove(struct pci_dev *pdev) | 8709 | static void __devexit iwl3945_pci_remove(struct pci_dev *pdev) |
8710 | { | 8710 | { |
8711 | struct iwl3945_priv *priv = pci_get_drvdata(pdev); | 8711 | struct iwl3945_priv *priv = pci_get_drvdata(pdev); |
8712 | struct list_head *p, *q; | 8712 | struct list_head *p, *q; |
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index a23d4798653b..60ec29eab85a 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -6628,11 +6628,11 @@ static void iwl4965_alive_start(struct iwl4965_priv *priv) | |||
6628 | 6628 | ||
6629 | /* At this point, the NIC is initialized and operational */ | 6629 | /* At this point, the NIC is initialized and operational */ |
6630 | priv->notif_missed_beacons = 0; | 6630 | priv->notif_missed_beacons = 0; |
6631 | set_bit(STATUS_READY, &priv->status); | ||
6632 | 6631 | ||
6633 | iwl4965_rf_kill_ct_config(priv); | 6632 | iwl4965_rf_kill_ct_config(priv); |
6634 | 6633 | ||
6635 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); | 6634 | IWL_DEBUG_INFO("ALIVE processing complete.\n"); |
6635 | set_bit(STATUS_READY, &priv->status); | ||
6636 | wake_up_interruptible(&priv->wait_command_queue); | 6636 | wake_up_interruptible(&priv->wait_command_queue); |
6637 | 6637 | ||
6638 | if (priv->error_recovering) | 6638 | if (priv->error_recovering) |
@@ -9282,7 +9282,7 @@ static int iwl4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
9282 | return err; | 9282 | return err; |
9283 | } | 9283 | } |
9284 | 9284 | ||
9285 | static void iwl4965_pci_remove(struct pci_dev *pdev) | 9285 | static void __devexit iwl4965_pci_remove(struct pci_dev *pdev) |
9286 | { | 9286 | { |
9287 | struct iwl4965_priv *priv = pci_get_drvdata(pdev); | 9287 | struct iwl4965_priv *priv = pci_get_drvdata(pdev); |
9288 | struct list_head *p, *q; | 9288 | struct list_head *p, *q; |
diff --git a/drivers/net/wireless/libertas/assoc.c b/drivers/net/wireless/libertas/assoc.c index 87e145ffe8f1..6a24ed6067e0 100644 --- a/drivers/net/wireless/libertas/assoc.c +++ b/drivers/net/wireless/libertas/assoc.c | |||
@@ -541,7 +541,7 @@ void lbs_association_worker(struct work_struct *work) | |||
541 | } | 541 | } |
542 | 542 | ||
543 | if (find_any_ssid) { | 543 | if (find_any_ssid) { |
544 | u8 new_mode; | 544 | u8 new_mode = assoc_req->mode; |
545 | 545 | ||
546 | ret = lbs_find_best_network_ssid(priv, assoc_req->ssid, | 546 | ret = lbs_find_best_network_ssid(priv, assoc_req->ssid, |
547 | &assoc_req->ssid_len, assoc_req->mode, &new_mode); | 547 | &assoc_req->ssid_len, assoc_req->mode, &new_mode); |
diff --git a/drivers/net/wireless/libertas/if_cs.c b/drivers/net/wireless/libertas/if_cs.c index 5a9cadb97503..038c66a98f15 100644 --- a/drivers/net/wireless/libertas/if_cs.c +++ b/drivers/net/wireless/libertas/if_cs.c | |||
@@ -677,9 +677,7 @@ sbi_get_int_status_exit: | |||
677 | 677 | ||
678 | /* Card has a command result for us */ | 678 | /* Card has a command result for us */ |
679 | if (*ireg & IF_CS_C_S_CMD_UPLD_RDY) { | 679 | if (*ireg & IF_CS_C_S_CMD_UPLD_RDY) { |
680 | spin_lock(&priv->driver_lock); | ||
681 | ret = if_cs_receive_cmdres(priv, priv->upld_buf, &priv->upld_len); | 680 | ret = if_cs_receive_cmdres(priv, priv->upld_buf, &priv->upld_len); |
682 | spin_unlock(&priv->driver_lock); | ||
683 | if (ret < 0) | 681 | if (ret < 0) |
684 | lbs_pr_err("could not receive cmd from card\n"); | 682 | lbs_pr_err("could not receive cmd from card\n"); |
685 | } | 683 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index bd305f7f3efd..e873a39fcce3 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -1393,11 +1393,20 @@ int rt2x00lib_suspend(struct rt2x00_dev *rt2x00dev, pm_message_t state) | |||
1393 | 1393 | ||
1394 | exit: | 1394 | exit: |
1395 | /* | 1395 | /* |
1396 | * Set device mode to sleep for power management. | 1396 | * Set device mode to sleep for power management, |
1397 | * on some hardware this call seems to consistently fail. | ||
1398 | * From the specifications it is hard to tell why it fails, | ||
1399 | * and if this is a "bad thing". | ||
1400 | * Overall it is safe to just ignore the failure and | ||
1401 | * continue suspending. The only downside is that the | ||
1402 | * device will not be in optimal power save mode, but with | ||
1403 | * the radio and the other components already disabled the | ||
1404 | * device is as good as disabled. | ||
1397 | */ | 1405 | */ |
1398 | retval = rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_SLEEP); | 1406 | retval = rt2x00dev->ops->lib->set_device_state(rt2x00dev, STATE_SLEEP); |
1399 | if (retval) | 1407 | if (retval) |
1400 | return retval; | 1408 | WARNING(rt2x00dev, "Device failed to enter sleep state, " |
1409 | "continue suspending.\n"); | ||
1401 | 1410 | ||
1402 | return 0; | 1411 | return 0; |
1403 | } | 1412 | } |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index 93ea212fedd5..ad2e7d53b3da 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -2399,10 +2399,8 @@ static int rt61pci_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb, | |||
2399 | * beacon frame. | 2399 | * beacon frame. |
2400 | */ | 2400 | */ |
2401 | if (skb_headroom(skb) < TXD_DESC_SIZE) { | 2401 | if (skb_headroom(skb) < TXD_DESC_SIZE) { |
2402 | if (pskb_expand_head(skb, TXD_DESC_SIZE, 0, GFP_ATOMIC)) { | 2402 | if (pskb_expand_head(skb, TXD_DESC_SIZE, 0, GFP_ATOMIC)) |
2403 | dev_kfree_skb(skb); | ||
2404 | return -ENOMEM; | 2403 | return -ENOMEM; |
2405 | } | ||
2406 | } | 2404 | } |
2407 | 2405 | ||
2408 | /* | 2406 | /* |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 8103d41a1543..3909cf42f472 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -2095,6 +2095,8 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
2095 | { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) }, | 2095 | { USB_DEVICE(0x1371, 0x9032), USB_DEVICE_DATA(&rt73usb_ops) }, |
2096 | /* Conceptronic */ | 2096 | /* Conceptronic */ |
2097 | { USB_DEVICE(0x14b2, 0x3c22), USB_DEVICE_DATA(&rt73usb_ops) }, | 2097 | { USB_DEVICE(0x14b2, 0x3c22), USB_DEVICE_DATA(&rt73usb_ops) }, |
2098 | /* Corega */ | ||
2099 | { USB_DEVICE(0x07aa, 0x002e), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
2098 | /* D-Link */ | 2100 | /* D-Link */ |
2099 | { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) }, | 2101 | { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) }, |
2100 | { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, | 2102 | { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, |
diff --git a/drivers/net/wireless/wavelan_cs.h b/drivers/net/wireless/wavelan_cs.h index fabc63ee153c..2e4bfe4147c6 100644 --- a/drivers/net/wireless/wavelan_cs.h +++ b/drivers/net/wireless/wavelan_cs.h | |||
@@ -309,7 +309,7 @@ struct mmw_t | |||
309 | #define MMW_EXT_ANT_INTERNAL 0x00 /* Internal antenna */ | 309 | #define MMW_EXT_ANT_INTERNAL 0x00 /* Internal antenna */ |
310 | #define MMW_EXT_ANT_EXTERNAL 0x03 /* External antenna */ | 310 | #define MMW_EXT_ANT_EXTERNAL 0x03 /* External antenna */ |
311 | #define MMW_EXT_ANT_IQ_TEST 0x1C /* IQ test pattern (set to 0) */ | 311 | #define MMW_EXT_ANT_IQ_TEST 0x1C /* IQ test pattern (set to 0) */ |
312 | }; | 312 | } __attribute__((packed)); |
313 | 313 | ||
314 | /* Size for structure checking (if padding is correct) */ | 314 | /* Size for structure checking (if padding is correct) */ |
315 | #define MMW_SIZE 37 | 315 | #define MMW_SIZE 37 |
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c index d76d37bcb9cc..a85808938205 100644 --- a/drivers/parport/parport_pc.c +++ b/drivers/parport/parport_pc.c | |||
@@ -1568,9 +1568,8 @@ static void __devinit detect_and_report_it87(void) | |||
1568 | outb(r | 8, 0x2F); | 1568 | outb(r | 8, 0x2F); |
1569 | outb(0x02, 0x2E); /* Lock */ | 1569 | outb(0x02, 0x2E); /* Lock */ |
1570 | outb(0x02, 0x2F); | 1570 | outb(0x02, 0x2F); |
1571 | |||
1572 | release_region(0x2e, 1); | ||
1573 | } | 1571 | } |
1572 | release_region(0x2e, 1); | ||
1574 | } | 1573 | } |
1575 | #endif /* CONFIG_PARPORT_PC_SUPERIO */ | 1574 | #endif /* CONFIG_PARPORT_PC_SUPERIO */ |
1576 | 1575 | ||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index e9a333d98552..e887aa45c9cd 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -951,6 +951,12 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_e | |||
951 | * accesses to the SMBus registers, with potentially bad effects. Thus you | 951 | * accesses to the SMBus registers, with potentially bad effects. Thus you |
952 | * should be very careful when adding new entries: if SMM is accessing the | 952 | * should be very careful when adding new entries: if SMM is accessing the |
953 | * Intel SMBus, this is a very good reason to leave it hidden. | 953 | * Intel SMBus, this is a very good reason to leave it hidden. |
954 | * | ||
955 | * Likewise, many recent laptops use ACPI for thermal management. If the | ||
956 | * ACPI DSDT code accesses the SMBus, then Linux should not access it | ||
957 | * natively, and keeping the SMBus hidden is the right thing to do. If you | ||
958 | * are about to add an entry in the table below, please first disassemble | ||
959 | * the DSDT and double-check that there is no code accessing the SMBus. | ||
954 | */ | 960 | */ |
955 | static int asus_hides_smbus; | 961 | static int asus_hides_smbus; |
956 | 962 | ||
@@ -1028,11 +1034,6 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev) | |||
1028 | case 0x12bf: /* HP xw4100 */ | 1034 | case 0x12bf: /* HP xw4100 */ |
1029 | asus_hides_smbus = 1; | 1035 | asus_hides_smbus = 1; |
1030 | } | 1036 | } |
1031 | else if (dev->device == PCI_DEVICE_ID_INTEL_82915GM_HB) | ||
1032 | switch (dev->subsystem_device) { | ||
1033 | case 0x099c: /* HP Compaq nx6110 */ | ||
1034 | asus_hides_smbus = 1; | ||
1035 | } | ||
1036 | } else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG)) { | 1037 | } else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG)) { |
1037 | if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB) | 1038 | if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB) |
1038 | switch(dev->subsystem_device) { | 1039 | switch(dev->subsystem_device) { |
diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c index 6aa231ef642d..2dcd1960aca8 100644 --- a/drivers/pnp/pnpacpi/rsparser.c +++ b/drivers/pnp/pnpacpi/rsparser.c | |||
@@ -85,7 +85,7 @@ static void pnpacpi_parse_allocated_irqresource(struct pnp_resource_table *res, | |||
85 | i < PNP_MAX_IRQ) | 85 | i < PNP_MAX_IRQ) |
86 | i++; | 86 | i++; |
87 | if (i >= PNP_MAX_IRQ && !warned) { | 87 | if (i >= PNP_MAX_IRQ && !warned) { |
88 | printk(KERN_ERR "pnpacpi: exceeded the max number of IRQ " | 88 | printk(KERN_WARNING "pnpacpi: exceeded the max number of IRQ " |
89 | "resources: %d \n", PNP_MAX_IRQ); | 89 | "resources: %d \n", PNP_MAX_IRQ); |
90 | warned = 1; | 90 | warned = 1; |
91 | return; | 91 | return; |
@@ -187,7 +187,7 @@ static void pnpacpi_parse_allocated_dmaresource(struct pnp_resource_table *res, | |||
187 | res->dma_resource[i].start = dma; | 187 | res->dma_resource[i].start = dma; |
188 | res->dma_resource[i].end = dma; | 188 | res->dma_resource[i].end = dma; |
189 | } else if (!warned) { | 189 | } else if (!warned) { |
190 | printk(KERN_ERR "pnpacpi: exceeded the max number of DMA " | 190 | printk(KERN_WARNING "pnpacpi: exceeded the max number of DMA " |
191 | "resources: %d \n", PNP_MAX_DMA); | 191 | "resources: %d \n", PNP_MAX_DMA); |
192 | warned = 1; | 192 | warned = 1; |
193 | } | 193 | } |
@@ -213,7 +213,7 @@ static void pnpacpi_parse_allocated_ioresource(struct pnp_resource_table *res, | |||
213 | res->port_resource[i].start = io; | 213 | res->port_resource[i].start = io; |
214 | res->port_resource[i].end = io + len - 1; | 214 | res->port_resource[i].end = io + len - 1; |
215 | } else if (!warned) { | 215 | } else if (!warned) { |
216 | printk(KERN_ERR "pnpacpi: exceeded the max number of IO " | 216 | printk(KERN_WARNING "pnpacpi: exceeded the max number of IO " |
217 | "resources: %d \n", PNP_MAX_PORT); | 217 | "resources: %d \n", PNP_MAX_PORT); |
218 | warned = 1; | 218 | warned = 1; |
219 | } | 219 | } |
@@ -241,7 +241,7 @@ static void pnpacpi_parse_allocated_memresource(struct pnp_resource_table *res, | |||
241 | res->mem_resource[i].start = mem; | 241 | res->mem_resource[i].start = mem; |
242 | res->mem_resource[i].end = mem + len - 1; | 242 | res->mem_resource[i].end = mem + len - 1; |
243 | } else if (!warned) { | 243 | } else if (!warned) { |
244 | printk(KERN_ERR "pnpacpi: exceeded the max number of mem " | 244 | printk(KERN_WARNING "pnpacpi: exceeded the max number of mem " |
245 | "resources: %d\n", PNP_MAX_MEM); | 245 | "resources: %d\n", PNP_MAX_MEM); |
246 | warned = 1; | 246 | warned = 1; |
247 | } | 247 | } |
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 9e7de63b26ef..02a4c8cf2b2d 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig | |||
@@ -252,6 +252,7 @@ config RTC_DRV_TWL92330 | |||
252 | 252 | ||
253 | config RTC_DRV_S35390A | 253 | config RTC_DRV_S35390A |
254 | tristate "Seiko Instruments S-35390A" | 254 | tristate "Seiko Instruments S-35390A" |
255 | select BITREVERSE | ||
255 | help | 256 | help |
256 | If you say yes here you will get support for the Seiko | 257 | If you say yes here you will get support for the Seiko |
257 | Instruments S-35390A. | 258 | Instruments S-35390A. |
diff --git a/drivers/rtc/rtc-at32ap700x.c b/drivers/rtc/rtc-at32ap700x.c index d3b9b14267ab..42244f14b41c 100644 --- a/drivers/rtc/rtc-at32ap700x.c +++ b/drivers/rtc/rtc-at32ap700x.c | |||
@@ -290,7 +290,7 @@ static int __exit at32_rtc_remove(struct platform_device *pdev) | |||
290 | return 0; | 290 | return 0; |
291 | } | 291 | } |
292 | 292 | ||
293 | MODULE_ALIAS("at32ap700x_rtc"); | 293 | MODULE_ALIAS("platform:at32ap700x_rtc"); |
294 | 294 | ||
295 | static struct platform_driver at32_rtc_driver = { | 295 | static struct platform_driver at32_rtc_driver = { |
296 | .remove = __exit_p(at32_rtc_remove), | 296 | .remove = __exit_p(at32_rtc_remove), |
diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c index 33795e5a5595..52abffc86bcd 100644 --- a/drivers/rtc/rtc-at91rm9200.c +++ b/drivers/rtc/rtc-at91rm9200.c | |||
@@ -407,3 +407,4 @@ module_exit(at91_rtc_exit); | |||
407 | MODULE_AUTHOR("Rick Bronson"); | 407 | MODULE_AUTHOR("Rick Bronson"); |
408 | MODULE_DESCRIPTION("RTC driver for Atmel AT91RM9200"); | 408 | MODULE_DESCRIPTION("RTC driver for Atmel AT91RM9200"); |
409 | MODULE_LICENSE("GPL"); | 409 | MODULE_LICENSE("GPL"); |
410 | MODULE_ALIAS("platform:at91_rtc"); | ||
diff --git a/drivers/rtc/rtc-bfin.c b/drivers/rtc/rtc-bfin.c index d90ba860d216..4f28045d9ef2 100644 --- a/drivers/rtc/rtc-bfin.c +++ b/drivers/rtc/rtc-bfin.c | |||
@@ -470,3 +470,4 @@ module_exit(bfin_rtc_exit); | |||
470 | MODULE_DESCRIPTION("Blackfin On-Chip Real Time Clock Driver"); | 470 | MODULE_DESCRIPTION("Blackfin On-Chip Real Time Clock Driver"); |
471 | MODULE_AUTHOR("Mike Frysinger <vapier@gentoo.org>"); | 471 | MODULE_AUTHOR("Mike Frysinger <vapier@gentoo.org>"); |
472 | MODULE_LICENSE("GPL"); | 472 | MODULE_LICENSE("GPL"); |
473 | MODULE_ALIAS("platform:rtc-bfin"); | ||
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index f3ee2ad566b4..b48517021ee6 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c | |||
@@ -943,6 +943,9 @@ static void cmos_platform_shutdown(struct platform_device *pdev) | |||
943 | cmos_do_shutdown(); | 943 | cmos_do_shutdown(); |
944 | } | 944 | } |
945 | 945 | ||
946 | /* work with hotplug and coldplug */ | ||
947 | MODULE_ALIAS("platform:rtc_cmos"); | ||
948 | |||
946 | static struct platform_driver cmos_platform_driver = { | 949 | static struct platform_driver cmos_platform_driver = { |
947 | .remove = __exit_p(cmos_platform_remove), | 950 | .remove = __exit_p(cmos_platform_remove), |
948 | .shutdown = cmos_platform_shutdown, | 951 | .shutdown = cmos_platform_shutdown, |
diff --git a/drivers/rtc/rtc-ds1216.c b/drivers/rtc/rtc-ds1216.c index 83efb88f8f23..0b17770b032b 100644 --- a/drivers/rtc/rtc-ds1216.c +++ b/drivers/rtc/rtc-ds1216.c | |||
@@ -221,6 +221,7 @@ MODULE_AUTHOR("Thomas Bogendoerfer <tsbogend@alpha.franken.de>"); | |||
221 | MODULE_DESCRIPTION("DS1216 RTC driver"); | 221 | MODULE_DESCRIPTION("DS1216 RTC driver"); |
222 | MODULE_LICENSE("GPL"); | 222 | MODULE_LICENSE("GPL"); |
223 | MODULE_VERSION(DRV_VERSION); | 223 | MODULE_VERSION(DRV_VERSION); |
224 | MODULE_ALIAS("platform:rtc-ds1216"); | ||
224 | 225 | ||
225 | module_init(ds1216_rtc_init); | 226 | module_init(ds1216_rtc_init); |
226 | module_exit(ds1216_rtc_exit); | 227 | module_exit(ds1216_rtc_exit); |
diff --git a/drivers/rtc/rtc-ds1511.c b/drivers/rtc/rtc-ds1511.c index d74b8086fa31..d08912f18ddd 100644 --- a/drivers/rtc/rtc-ds1511.c +++ b/drivers/rtc/rtc-ds1511.c | |||
@@ -626,6 +626,9 @@ ds1511_rtc_remove(struct platform_device *pdev) | |||
626 | return 0; | 626 | return 0; |
627 | } | 627 | } |
628 | 628 | ||
629 | /* work with hotplug and coldplug */ | ||
630 | MODULE_ALIAS("platform:ds1511"); | ||
631 | |||
629 | static struct platform_driver ds1511_rtc_driver = { | 632 | static struct platform_driver ds1511_rtc_driver = { |
630 | .probe = ds1511_rtc_probe, | 633 | .probe = ds1511_rtc_probe, |
631 | .remove = __devexit_p(ds1511_rtc_remove), | 634 | .remove = __devexit_p(ds1511_rtc_remove), |
diff --git a/drivers/rtc/rtc-ds1553.c b/drivers/rtc/rtc-ds1553.c index d9e848dcd450..a19f11415540 100644 --- a/drivers/rtc/rtc-ds1553.c +++ b/drivers/rtc/rtc-ds1553.c | |||
@@ -391,6 +391,9 @@ static int __devexit ds1553_rtc_remove(struct platform_device *pdev) | |||
391 | return 0; | 391 | return 0; |
392 | } | 392 | } |
393 | 393 | ||
394 | /* work with hotplug and coldplug */ | ||
395 | MODULE_ALIAS("platform:rtc-ds1553"); | ||
396 | |||
394 | static struct platform_driver ds1553_rtc_driver = { | 397 | static struct platform_driver ds1553_rtc_driver = { |
395 | .probe = ds1553_rtc_probe, | 398 | .probe = ds1553_rtc_probe, |
396 | .remove = __devexit_p(ds1553_rtc_remove), | 399 | .remove = __devexit_p(ds1553_rtc_remove), |
diff --git a/drivers/rtc/rtc-ds1742.c b/drivers/rtc/rtc-ds1742.c index 2e73f0b183b2..24d35ede2dbf 100644 --- a/drivers/rtc/rtc-ds1742.c +++ b/drivers/rtc/rtc-ds1742.c | |||
@@ -276,3 +276,4 @@ MODULE_AUTHOR("Atsushi Nemoto <anemo@mba.ocn.ne.jp>"); | |||
276 | MODULE_DESCRIPTION("Dallas DS1742 RTC driver"); | 276 | MODULE_DESCRIPTION("Dallas DS1742 RTC driver"); |
277 | MODULE_LICENSE("GPL"); | 277 | MODULE_LICENSE("GPL"); |
278 | MODULE_VERSION(DRV_VERSION); | 278 | MODULE_VERSION(DRV_VERSION); |
279 | MODULE_ALIAS("platform:rtc-ds1742"); | ||
diff --git a/drivers/rtc/rtc-ep93xx.c b/drivers/rtc/rtc-ep93xx.c index ef4f147f3c0c..1e99325270df 100644 --- a/drivers/rtc/rtc-ep93xx.c +++ b/drivers/rtc/rtc-ep93xx.c | |||
@@ -132,6 +132,9 @@ static int __devexit ep93xx_rtc_remove(struct platform_device *dev) | |||
132 | return 0; | 132 | return 0; |
133 | } | 133 | } |
134 | 134 | ||
135 | /* work with hotplug and coldplug */ | ||
136 | MODULE_ALIAS("platform:ep93xx-rtc"); | ||
137 | |||
135 | static struct platform_driver ep93xx_rtc_platform_driver = { | 138 | static struct platform_driver ep93xx_rtc_platform_driver = { |
136 | .driver = { | 139 | .driver = { |
137 | .name = "ep93xx-rtc", | 140 | .name = "ep93xx-rtc", |
diff --git a/drivers/rtc/rtc-m48t59.c b/drivers/rtc/rtc-m48t59.c index cd0bbc0e8038..013e6c103b9c 100644 --- a/drivers/rtc/rtc-m48t59.c +++ b/drivers/rtc/rtc-m48t59.c | |||
@@ -465,6 +465,9 @@ static int __devexit m48t59_rtc_remove(struct platform_device *pdev) | |||
465 | return 0; | 465 | return 0; |
466 | } | 466 | } |
467 | 467 | ||
468 | /* work with hotplug and coldplug */ | ||
469 | MODULE_ALIAS("platform:rtc-m48t59"); | ||
470 | |||
468 | static struct platform_driver m48t59_rtc_driver = { | 471 | static struct platform_driver m48t59_rtc_driver = { |
469 | .driver = { | 472 | .driver = { |
470 | .name = "rtc-m48t59", | 473 | .name = "rtc-m48t59", |
diff --git a/drivers/rtc/rtc-m48t86.c b/drivers/rtc/rtc-m48t86.c index 8ff4a1221f59..3f7f99a5d96a 100644 --- a/drivers/rtc/rtc-m48t86.c +++ b/drivers/rtc/rtc-m48t86.c | |||
@@ -199,6 +199,7 @@ MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); | |||
199 | MODULE_DESCRIPTION("M48T86 RTC driver"); | 199 | MODULE_DESCRIPTION("M48T86 RTC driver"); |
200 | MODULE_LICENSE("GPL"); | 200 | MODULE_LICENSE("GPL"); |
201 | MODULE_VERSION(DRV_VERSION); | 201 | MODULE_VERSION(DRV_VERSION); |
202 | MODULE_ALIAS("platform:rtc-m48t86"); | ||
202 | 203 | ||
203 | module_init(m48t86_rtc_init); | 204 | module_init(m48t86_rtc_init); |
204 | module_exit(m48t86_rtc_exit); | 205 | module_exit(m48t86_rtc_exit); |
diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c index a2f84f169588..58f81c774943 100644 --- a/drivers/rtc/rtc-omap.c +++ b/drivers/rtc/rtc-omap.c | |||
@@ -497,7 +497,7 @@ static void omap_rtc_shutdown(struct platform_device *pdev) | |||
497 | rtc_write(0, OMAP_RTC_INTERRUPTS_REG); | 497 | rtc_write(0, OMAP_RTC_INTERRUPTS_REG); |
498 | } | 498 | } |
499 | 499 | ||
500 | MODULE_ALIAS("omap_rtc"); | 500 | MODULE_ALIAS("platform:omap_rtc"); |
501 | static struct platform_driver omap_rtc_driver = { | 501 | static struct platform_driver omap_rtc_driver = { |
502 | .probe = omap_rtc_probe, | 502 | .probe = omap_rtc_probe, |
503 | .remove = __devexit_p(omap_rtc_remove), | 503 | .remove = __devexit_p(omap_rtc_remove), |
diff --git a/drivers/rtc/rtc-rs5c313.c b/drivers/rtc/rtc-rs5c313.c index 66eb133bf5fd..664e89a817ed 100644 --- a/drivers/rtc/rtc-rs5c313.c +++ b/drivers/rtc/rtc-rs5c313.c | |||
@@ -421,3 +421,4 @@ MODULE_VERSION(DRV_VERSION); | |||
421 | MODULE_AUTHOR("kogiidena , Nobuhiro Iwamatsu <iwamatsu@nigauri.org>"); | 421 | MODULE_AUTHOR("kogiidena , Nobuhiro Iwamatsu <iwamatsu@nigauri.org>"); |
422 | MODULE_DESCRIPTION("Ricoh RS5C313 RTC device driver"); | 422 | MODULE_DESCRIPTION("Ricoh RS5C313 RTC device driver"); |
423 | MODULE_LICENSE("GPL"); | 423 | MODULE_LICENSE("GPL"); |
424 | MODULE_ALIAS("platform:" DRV_NAME); | ||
diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index 86766f1f2496..9f4d5129a496 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c | |||
@@ -592,3 +592,4 @@ module_exit(s3c_rtc_exit); | |||
592 | MODULE_DESCRIPTION("Samsung S3C RTC Driver"); | 592 | MODULE_DESCRIPTION("Samsung S3C RTC Driver"); |
593 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); | 593 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); |
594 | MODULE_LICENSE("GPL"); | 594 | MODULE_LICENSE("GPL"); |
595 | MODULE_ALIAS("platform:s3c2410-rtc"); | ||
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c index ee253cc45de1..82f62d25f921 100644 --- a/drivers/rtc/rtc-sa1100.c +++ b/drivers/rtc/rtc-sa1100.c | |||
@@ -399,3 +399,4 @@ module_exit(sa1100_rtc_exit); | |||
399 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); | 399 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); |
400 | MODULE_DESCRIPTION("SA11x0/PXA2xx Realtime Clock Driver (RTC)"); | 400 | MODULE_DESCRIPTION("SA11x0/PXA2xx Realtime Clock Driver (RTC)"); |
401 | MODULE_LICENSE("GPL"); | 401 | MODULE_LICENSE("GPL"); |
402 | MODULE_ALIAS("platform:sa1100-rtc"); | ||
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c index c1d6a1880ccf..9e9caa5d7f5f 100644 --- a/drivers/rtc/rtc-sh.c +++ b/drivers/rtc/rtc-sh.c | |||
@@ -664,3 +664,4 @@ MODULE_DESCRIPTION("SuperH on-chip RTC driver"); | |||
664 | MODULE_VERSION(DRV_VERSION); | 664 | MODULE_VERSION(DRV_VERSION); |
665 | MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, Jamie Lenehan <lenehan@twibble.org>"); | 665 | MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, Jamie Lenehan <lenehan@twibble.org>"); |
666 | MODULE_LICENSE("GPL"); | 666 | MODULE_LICENSE("GPL"); |
667 | MODULE_ALIAS("platform:" DRV_NAME); | ||
diff --git a/drivers/rtc/rtc-stk17ta8.c b/drivers/rtc/rtc-stk17ta8.c index a265da7c6ff8..31d3c8c28588 100644 --- a/drivers/rtc/rtc-stk17ta8.c +++ b/drivers/rtc/rtc-stk17ta8.c | |||
@@ -394,6 +394,9 @@ static int __devexit stk17ta8_rtc_remove(struct platform_device *pdev) | |||
394 | return 0; | 394 | return 0; |
395 | } | 395 | } |
396 | 396 | ||
397 | /* work with hotplug and coldplug */ | ||
398 | MODULE_ALIAS("platform:stk17ta8"); | ||
399 | |||
397 | static struct platform_driver stk17ta8_rtc_driver = { | 400 | static struct platform_driver stk17ta8_rtc_driver = { |
398 | .probe = stk17ta8_rtc_probe, | 401 | .probe = stk17ta8_rtc_probe, |
399 | .remove = __devexit_p(stk17ta8_rtc_remove), | 402 | .remove = __devexit_p(stk17ta8_rtc_remove), |
diff --git a/drivers/rtc/rtc-v3020.c b/drivers/rtc/rtc-v3020.c index a6b572978dc0..24203a06051a 100644 --- a/drivers/rtc/rtc-v3020.c +++ b/drivers/rtc/rtc-v3020.c | |||
@@ -264,3 +264,4 @@ module_exit(v3020_exit); | |||
264 | MODULE_DESCRIPTION("V3020 RTC"); | 264 | MODULE_DESCRIPTION("V3020 RTC"); |
265 | MODULE_AUTHOR("Raphael Assenat"); | 265 | MODULE_AUTHOR("Raphael Assenat"); |
266 | MODULE_LICENSE("GPL"); | 266 | MODULE_LICENSE("GPL"); |
267 | MODULE_ALIAS("platform:v3020"); | ||
diff --git a/drivers/rtc/rtc-vr41xx.c b/drivers/rtc/rtc-vr41xx.c index ce2f78de7a80..be9c70d0b193 100644 --- a/drivers/rtc/rtc-vr41xx.c +++ b/drivers/rtc/rtc-vr41xx.c | |||
@@ -422,6 +422,9 @@ static int __devexit rtc_remove(struct platform_device *pdev) | |||
422 | return 0; | 422 | return 0; |
423 | } | 423 | } |
424 | 424 | ||
425 | /* work with hotplug and coldplug */ | ||
426 | MODULE_ALIAS("platform:RTC"); | ||
427 | |||
425 | static struct platform_driver rtc_platform_driver = { | 428 | static struct platform_driver rtc_platform_driver = { |
426 | .probe = rtc_probe, | 429 | .probe = rtc_probe, |
427 | .remove = __devexit_p(rtc_remove), | 430 | .remove = __devexit_p(rtc_remove), |
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c index 880c78bff0e1..ed7e0a1fc34d 100644 --- a/drivers/scsi/hosts.c +++ b/drivers/scsi/hosts.c | |||
@@ -218,18 +218,24 @@ int scsi_add_host(struct Scsi_Host *shost, struct device *dev) | |||
218 | 218 | ||
219 | get_device(&shost->shost_gendev); | 219 | get_device(&shost->shost_gendev); |
220 | 220 | ||
221 | if (shost->transportt->host_size && | 221 | if (shost->transportt->host_size) { |
222 | (shost->shost_data = kzalloc(shost->transportt->host_size, | 222 | shost->shost_data = kzalloc(shost->transportt->host_size, |
223 | GFP_KERNEL)) == NULL) | 223 | GFP_KERNEL); |
224 | goto out_del_classdev; | 224 | if (shost->shost_data == NULL) { |
225 | error = -ENOMEM; | ||
226 | goto out_del_classdev; | ||
227 | } | ||
228 | } | ||
225 | 229 | ||
226 | if (shost->transportt->create_work_queue) { | 230 | if (shost->transportt->create_work_queue) { |
227 | snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsi_wq_%d", | 231 | snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsi_wq_%d", |
228 | shost->host_no); | 232 | shost->host_no); |
229 | shost->work_q = create_singlethread_workqueue( | 233 | shost->work_q = create_singlethread_workqueue( |
230 | shost->work_q_name); | 234 | shost->work_q_name); |
231 | if (!shost->work_q) | 235 | if (!shost->work_q) { |
236 | error = -EINVAL; | ||
232 | goto out_free_shost_data; | 237 | goto out_free_shost_data; |
238 | } | ||
233 | } | 239 | } |
234 | 240 | ||
235 | error = scsi_sysfs_add_host(shost); | 241 | error = scsi_sysfs_add_host(shost); |
diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c index 31b9af224243..709a6f75ca9d 100644 --- a/drivers/scsi/libsas/sas_discover.c +++ b/drivers/scsi/libsas/sas_discover.c | |||
@@ -295,11 +295,14 @@ static void sas_discover_domain(struct work_struct *work) | |||
295 | case FANOUT_DEV: | 295 | case FANOUT_DEV: |
296 | error = sas_discover_root_expander(dev); | 296 | error = sas_discover_root_expander(dev); |
297 | break; | 297 | break; |
298 | #ifdef CONFIG_SCSI_SAS_ATA | ||
299 | case SATA_DEV: | 298 | case SATA_DEV: |
300 | case SATA_PM: | 299 | case SATA_PM: |
300 | #ifdef CONFIG_SCSI_SAS_ATA | ||
301 | error = sas_discover_sata(dev); | 301 | error = sas_discover_sata(dev); |
302 | break; | 302 | break; |
303 | #else | ||
304 | SAS_DPRINTK("ATA device seen but CONFIG_SCSI_SAS_ATA=N so cannot attach\n"); | ||
305 | /* Fall through */ | ||
303 | #endif | 306 | #endif |
304 | default: | 307 | default: |
305 | error = -ENXIO; | 308 | error = -ENXIO; |
diff --git a/drivers/scsi/mvsas.c b/drivers/scsi/mvsas.c index 5ec0665b3a3d..e55b9037adb2 100644 --- a/drivers/scsi/mvsas.c +++ b/drivers/scsi/mvsas.c | |||
@@ -37,11 +37,13 @@ | |||
37 | #include <linux/dma-mapping.h> | 37 | #include <linux/dma-mapping.h> |
38 | #include <linux/ctype.h> | 38 | #include <linux/ctype.h> |
39 | #include <scsi/libsas.h> | 39 | #include <scsi/libsas.h> |
40 | #include <scsi/scsi_tcq.h> | ||
41 | #include <scsi/sas_ata.h> | ||
40 | #include <asm/io.h> | 42 | #include <asm/io.h> |
41 | 43 | ||
42 | #define DRV_NAME "mvsas" | 44 | #define DRV_NAME "mvsas" |
43 | #define DRV_VERSION "0.5.1" | 45 | #define DRV_VERSION "0.5.2" |
44 | #define _MV_DUMP 0 | 46 | #define _MV_DUMP 0 |
45 | #define MVS_DISABLE_NVRAM | 47 | #define MVS_DISABLE_NVRAM |
46 | #define MVS_DISABLE_MSI | 48 | #define MVS_DISABLE_MSI |
47 | 49 | ||
@@ -52,7 +54,7 @@ | |||
52 | readl(regs + MVS_##reg); \ | 54 | readl(regs + MVS_##reg); \ |
53 | } while (0) | 55 | } while (0) |
54 | 56 | ||
55 | #define MVS_ID_NOT_MAPPED 0xff | 57 | #define MVS_ID_NOT_MAPPED 0x7f |
56 | #define MVS_CHIP_SLOT_SZ (1U << mvi->chip->slot_width) | 58 | #define MVS_CHIP_SLOT_SZ (1U << mvi->chip->slot_width) |
57 | 59 | ||
58 | /* offset for D2H FIS in the Received FIS List Structure */ | 60 | /* offset for D2H FIS in the Received FIS List Structure */ |
@@ -84,6 +86,7 @@ enum driver_configuration { | |||
84 | MVS_RX_FIS_COUNT = 17, /* Optional rx'd FISs (max 17) */ | 86 | MVS_RX_FIS_COUNT = 17, /* Optional rx'd FISs (max 17) */ |
85 | 87 | ||
86 | MVS_QUEUE_SIZE = 30, /* Support Queue depth */ | 88 | MVS_QUEUE_SIZE = 30, /* Support Queue depth */ |
89 | MVS_CAN_QUEUE = MVS_SLOTS - 1, /* SCSI Queue depth */ | ||
87 | }; | 90 | }; |
88 | 91 | ||
89 | /* unchangeable hardware details */ | 92 | /* unchangeable hardware details */ |
@@ -358,7 +361,20 @@ enum hw_register_bits { | |||
358 | 361 | ||
359 | /* VSR */ | 362 | /* VSR */ |
360 | /* PHYMODE 6 (CDB) */ | 363 | /* PHYMODE 6 (CDB) */ |
361 | PHY_MODE6_DTL_SPEED = (1U << 27), | 364 | PHY_MODE6_LATECLK = (1U << 29), /* Lock Clock */ |
365 | PHY_MODE6_DTL_SPEED = (1U << 27), /* Digital Loop Speed */ | ||
366 | PHY_MODE6_FC_ORDER = (1U << 26), /* Fibre Channel Mode Order*/ | ||
367 | PHY_MODE6_MUCNT_EN = (1U << 24), /* u Count Enable */ | ||
368 | PHY_MODE6_SEL_MUCNT_LEN = (1U << 22), /* Training Length Select */ | ||
369 | PHY_MODE6_SELMUPI = (1U << 20), /* Phase Multi Select (init) */ | ||
370 | PHY_MODE6_SELMUPF = (1U << 18), /* Phase Multi Select (final) */ | ||
371 | PHY_MODE6_SELMUFF = (1U << 16), /* Freq Loop Multi Sel(final) */ | ||
372 | PHY_MODE6_SELMUFI = (1U << 14), /* Freq Loop Multi Sel(init) */ | ||
373 | PHY_MODE6_FREEZE_LOOP = (1U << 12), /* Freeze Rx CDR Loop */ | ||
374 | PHY_MODE6_INT_RXFOFFS = (1U << 3), /* Rx CDR Freq Loop Enable */ | ||
375 | PHY_MODE6_FRC_RXFOFFS = (1U << 2), /* Initial Rx CDR Offset */ | ||
376 | PHY_MODE6_STAU_0D8 = (1U << 1), /* Rx CDR Freq Loop Saturate */ | ||
377 | PHY_MODE6_RXSAT_DIS = (1U << 0), /* Saturate Ctl */ | ||
362 | }; | 378 | }; |
363 | 379 | ||
364 | enum mvs_info_flags { | 380 | enum mvs_info_flags { |
@@ -511,7 +527,43 @@ enum status_buffer { | |||
511 | }; | 527 | }; |
512 | 528 | ||
513 | enum error_info_rec { | 529 | enum error_info_rec { |
514 | CMD_ISS_STPD = (1U << 31), /* Cmd Issue Stopped */ | 530 | CMD_ISS_STPD = (1U << 31), /* Cmd Issue Stopped */ |
531 | CMD_PI_ERR = (1U << 30), /* Protection info error. see flags2 */ | ||
532 | RSP_OVER = (1U << 29), /* rsp buffer overflow */ | ||
533 | RETRY_LIM = (1U << 28), /* FIS/frame retry limit exceeded */ | ||
534 | UNK_FIS = (1U << 27), /* unknown FIS */ | ||
535 | DMA_TERM = (1U << 26), /* DMA terminate primitive rx'd */ | ||
536 | SYNC_ERR = (1U << 25), /* SYNC rx'd during frame xmit */ | ||
537 | TFILE_ERR = (1U << 24), /* SATA taskfile Error bit set */ | ||
538 | R_ERR = (1U << 23), /* SATA returned R_ERR prim */ | ||
539 | RD_OFS = (1U << 20), /* Read DATA frame invalid offset */ | ||
540 | XFER_RDY_OFS = (1U << 19), /* XFER_RDY offset error */ | ||
541 | UNEXP_XFER_RDY = (1U << 18), /* unexpected XFER_RDY error */ | ||
542 | DATA_OVER_UNDER = (1U << 16), /* data overflow/underflow */ | ||
543 | INTERLOCK = (1U << 15), /* interlock error */ | ||
544 | NAK = (1U << 14), /* NAK rx'd */ | ||
545 | ACK_NAK_TO = (1U << 13), /* ACK/NAK timeout */ | ||
546 | CXN_CLOSED = (1U << 12), /* cxn closed w/out ack/nak */ | ||
547 | OPEN_TO = (1U << 11), /* I_T nexus lost, open cxn timeout */ | ||
548 | PATH_BLOCKED = (1U << 10), /* I_T nexus lost, pathway blocked */ | ||
549 | NO_DEST = (1U << 9), /* I_T nexus lost, no destination */ | ||
550 | STP_RES_BSY = (1U << 8), /* STP resources busy */ | ||
551 | BREAK = (1U << 7), /* break received */ | ||
552 | BAD_DEST = (1U << 6), /* bad destination */ | ||
553 | BAD_PROTO = (1U << 5), /* protocol not supported */ | ||
554 | BAD_RATE = (1U << 4), /* cxn rate not supported */ | ||
555 | WRONG_DEST = (1U << 3), /* wrong destination error */ | ||
556 | CREDIT_TO = (1U << 2), /* credit timeout */ | ||
557 | WDOG_TO = (1U << 1), /* watchdog timeout */ | ||
558 | BUF_PAR = (1U << 0), /* buffer parity error */ | ||
559 | }; | ||
560 | |||
561 | enum error_info_rec_2 { | ||
562 | SLOT_BSY_ERR = (1U << 31), /* Slot Busy Error */ | ||
563 | GRD_CHK_ERR = (1U << 14), /* Guard Check Error */ | ||
564 | APP_CHK_ERR = (1U << 13), /* Application Check error */ | ||
565 | REF_CHK_ERR = (1U << 12), /* Reference Check Error */ | ||
566 | USR_BLK_NM = (1U << 0), /* User Block Number */ | ||
515 | }; | 567 | }; |
516 | 568 | ||
517 | struct mvs_chip_info { | 569 | struct mvs_chip_info { |
@@ -543,28 +595,12 @@ struct mvs_cmd_hdr { | |||
543 | __le32 reserved[4]; | 595 | __le32 reserved[4]; |
544 | }; | 596 | }; |
545 | 597 | ||
546 | struct mvs_slot_info { | ||
547 | struct sas_task *task; | ||
548 | u32 n_elem; | ||
549 | u32 tx; | ||
550 | |||
551 | /* DMA buffer for storing cmd tbl, open addr frame, status buffer, | ||
552 | * and PRD table | ||
553 | */ | ||
554 | void *buf; | ||
555 | dma_addr_t buf_dma; | ||
556 | #if _MV_DUMP | ||
557 | u32 cmd_size; | ||
558 | #endif | ||
559 | |||
560 | void *response; | ||
561 | }; | ||
562 | |||
563 | struct mvs_port { | 598 | struct mvs_port { |
564 | struct asd_sas_port sas_port; | 599 | struct asd_sas_port sas_port; |
565 | u8 port_attached; | 600 | u8 port_attached; |
566 | u8 taskfileset; | 601 | u8 taskfileset; |
567 | u8 wide_port_phymap; | 602 | u8 wide_port_phymap; |
603 | struct list_head list; | ||
568 | }; | 604 | }; |
569 | 605 | ||
570 | struct mvs_phy { | 606 | struct mvs_phy { |
@@ -582,6 +618,27 @@ struct mvs_phy { | |||
582 | u32 frame_rcvd_size; | 618 | u32 frame_rcvd_size; |
583 | u8 frame_rcvd[32]; | 619 | u8 frame_rcvd[32]; |
584 | u8 phy_attached; | 620 | u8 phy_attached; |
621 | enum sas_linkrate minimum_linkrate; | ||
622 | enum sas_linkrate maximum_linkrate; | ||
623 | }; | ||
624 | |||
625 | struct mvs_slot_info { | ||
626 | struct list_head list; | ||
627 | struct sas_task *task; | ||
628 | u32 n_elem; | ||
629 | u32 tx; | ||
630 | |||
631 | /* DMA buffer for storing cmd tbl, open addr frame, status buffer, | ||
632 | * and PRD table | ||
633 | */ | ||
634 | void *buf; | ||
635 | dma_addr_t buf_dma; | ||
636 | #if _MV_DUMP | ||
637 | u32 cmd_size; | ||
638 | #endif | ||
639 | |||
640 | void *response; | ||
641 | struct mvs_port *port; | ||
585 | }; | 642 | }; |
586 | 643 | ||
587 | struct mvs_info { | 644 | struct mvs_info { |
@@ -612,21 +669,14 @@ struct mvs_info { | |||
612 | 669 | ||
613 | const struct mvs_chip_info *chip; | 670 | const struct mvs_chip_info *chip; |
614 | 671 | ||
615 | unsigned long tags[MVS_SLOTS]; | 672 | u8 tags[MVS_SLOTS]; |
616 | struct mvs_slot_info slot_info[MVS_SLOTS]; | 673 | struct mvs_slot_info slot_info[MVS_SLOTS]; |
617 | /* further per-slot information */ | 674 | /* further per-slot information */ |
618 | struct mvs_phy phy[MVS_MAX_PHYS]; | 675 | struct mvs_phy phy[MVS_MAX_PHYS]; |
619 | struct mvs_port port[MVS_MAX_PHYS]; | 676 | struct mvs_port port[MVS_MAX_PHYS]; |
620 | 677 | #ifdef MVS_USE_TASKLET | |
621 | u32 can_queue; /* per adapter */ | 678 | struct tasklet_struct tasklet; |
622 | u32 tag_out; /*Get*/ | 679 | #endif |
623 | u32 tag_in; /*Give*/ | ||
624 | }; | ||
625 | |||
626 | struct mvs_queue_task { | ||
627 | struct list_head list; | ||
628 | |||
629 | void *uldd_task; | ||
630 | }; | 680 | }; |
631 | 681 | ||
632 | static int mvs_phy_control(struct asd_sas_phy *sas_phy, enum phy_func func, | 682 | static int mvs_phy_control(struct asd_sas_phy *sas_phy, enum phy_func func, |
@@ -641,10 +691,11 @@ static u32 mvs_read_port_irq_mask(struct mvs_info *mvi, u32 port); | |||
641 | static u32 mvs_is_phy_ready(struct mvs_info *mvi, int i); | 691 | static u32 mvs_is_phy_ready(struct mvs_info *mvi, int i); |
642 | static void mvs_detect_porttype(struct mvs_info *mvi, int i); | 692 | static void mvs_detect_porttype(struct mvs_info *mvi, int i); |
643 | static void mvs_update_phyinfo(struct mvs_info *mvi, int i, int get_st); | 693 | static void mvs_update_phyinfo(struct mvs_info *mvi, int i, int get_st); |
694 | static void mvs_release_task(struct mvs_info *mvi, int phy_no); | ||
644 | 695 | ||
645 | static int mvs_scan_finished(struct Scsi_Host *, unsigned long); | 696 | static int mvs_scan_finished(struct Scsi_Host *, unsigned long); |
646 | static void mvs_scan_start(struct Scsi_Host *); | 697 | static void mvs_scan_start(struct Scsi_Host *); |
647 | static int mvs_sas_slave_alloc(struct scsi_device *scsi_dev); | 698 | static int mvs_slave_configure(struct scsi_device *sdev); |
648 | 699 | ||
649 | static struct scsi_transport_template *mvs_stt; | 700 | static struct scsi_transport_template *mvs_stt; |
650 | 701 | ||
@@ -659,7 +710,7 @@ static struct scsi_host_template mvs_sht = { | |||
659 | .name = DRV_NAME, | 710 | .name = DRV_NAME, |
660 | .queuecommand = sas_queuecommand, | 711 | .queuecommand = sas_queuecommand, |
661 | .target_alloc = sas_target_alloc, | 712 | .target_alloc = sas_target_alloc, |
662 | .slave_configure = sas_slave_configure, | 713 | .slave_configure = mvs_slave_configure, |
663 | .slave_destroy = sas_slave_destroy, | 714 | .slave_destroy = sas_slave_destroy, |
664 | .scan_finished = mvs_scan_finished, | 715 | .scan_finished = mvs_scan_finished, |
665 | .scan_start = mvs_scan_start, | 716 | .scan_start = mvs_scan_start, |
@@ -674,7 +725,7 @@ static struct scsi_host_template mvs_sht = { | |||
674 | .use_clustering = ENABLE_CLUSTERING, | 725 | .use_clustering = ENABLE_CLUSTERING, |
675 | .eh_device_reset_handler = sas_eh_device_reset_handler, | 726 | .eh_device_reset_handler = sas_eh_device_reset_handler, |
676 | .eh_bus_reset_handler = sas_eh_bus_reset_handler, | 727 | .eh_bus_reset_handler = sas_eh_bus_reset_handler, |
677 | .slave_alloc = mvs_sas_slave_alloc, | 728 | .slave_alloc = sas_slave_alloc, |
678 | .target_destroy = sas_target_destroy, | 729 | .target_destroy = sas_target_destroy, |
679 | .ioctl = sas_ioctl, | 730 | .ioctl = sas_ioctl, |
680 | }; | 731 | }; |
@@ -709,10 +760,10 @@ static void mvs_hexdump(u32 size, u8 *data, u32 baseaddr) | |||
709 | printk("\n"); | 760 | printk("\n"); |
710 | } | 761 | } |
711 | 762 | ||
763 | #if _MV_DUMP | ||
712 | static void mvs_hba_sb_dump(struct mvs_info *mvi, u32 tag, | 764 | static void mvs_hba_sb_dump(struct mvs_info *mvi, u32 tag, |
713 | enum sas_protocol proto) | 765 | enum sas_protocol proto) |
714 | { | 766 | { |
715 | #if _MV_DUMP | ||
716 | u32 offset; | 767 | u32 offset; |
717 | struct pci_dev *pdev = mvi->pdev; | 768 | struct pci_dev *pdev = mvi->pdev; |
718 | struct mvs_slot_info *slot = &mvi->slot_info[tag]; | 769 | struct mvs_slot_info *slot = &mvi->slot_info[tag]; |
@@ -723,14 +774,14 @@ static void mvs_hba_sb_dump(struct mvs_info *mvi, u32 tag, | |||
723 | tag); | 774 | tag); |
724 | mvs_hexdump(32, (u8 *) slot->response, | 775 | mvs_hexdump(32, (u8 *) slot->response, |
725 | (u32) slot->buf_dma + offset); | 776 | (u32) slot->buf_dma + offset); |
726 | #endif | ||
727 | } | 777 | } |
778 | #endif | ||
728 | 779 | ||
729 | static void mvs_hba_memory_dump(struct mvs_info *mvi, u32 tag, | 780 | static void mvs_hba_memory_dump(struct mvs_info *mvi, u32 tag, |
730 | enum sas_protocol proto) | 781 | enum sas_protocol proto) |
731 | { | 782 | { |
732 | #if _MV_DUMP | 783 | #if _MV_DUMP |
733 | u32 sz, w_ptr, r_ptr; | 784 | u32 sz, w_ptr; |
734 | u64 addr; | 785 | u64 addr; |
735 | void __iomem *regs = mvi->regs; | 786 | void __iomem *regs = mvi->regs; |
736 | struct pci_dev *pdev = mvi->pdev; | 787 | struct pci_dev *pdev = mvi->pdev; |
@@ -738,12 +789,10 @@ static void mvs_hba_memory_dump(struct mvs_info *mvi, u32 tag, | |||
738 | 789 | ||
739 | /*Delivery Queue */ | 790 | /*Delivery Queue */ |
740 | sz = mr32(TX_CFG) & TX_RING_SZ_MASK; | 791 | sz = mr32(TX_CFG) & TX_RING_SZ_MASK; |
741 | w_ptr = mr32(TX_PROD_IDX) & TX_RING_SZ_MASK; | 792 | w_ptr = slot->tx; |
742 | r_ptr = mr32(TX_CONS_IDX) & TX_RING_SZ_MASK; | ||
743 | addr = mr32(TX_HI) << 16 << 16 | mr32(TX_LO); | 793 | addr = mr32(TX_HI) << 16 << 16 | mr32(TX_LO); |
744 | dev_printk(KERN_DEBUG, &pdev->dev, | 794 | dev_printk(KERN_DEBUG, &pdev->dev, |
745 | "Delivery Queue Size=%04d , WRT_PTR=%04X , RD_PTR=%04X\n", | 795 | "Delivery Queue Size=%04d , WRT_PTR=%04X\n", sz, w_ptr); |
746 | sz, w_ptr, r_ptr); | ||
747 | dev_printk(KERN_DEBUG, &pdev->dev, | 796 | dev_printk(KERN_DEBUG, &pdev->dev, |
748 | "Delivery Queue Base Address=0x%llX (PA)" | 797 | "Delivery Queue Base Address=0x%llX (PA)" |
749 | "(tx_dma=0x%llX), Entry=%04d\n", | 798 | "(tx_dma=0x%llX), Entry=%04d\n", |
@@ -751,11 +800,11 @@ static void mvs_hba_memory_dump(struct mvs_info *mvi, u32 tag, | |||
751 | mvs_hexdump(sizeof(u32), (u8 *)(&mvi->tx[mvi->tx_prod]), | 800 | mvs_hexdump(sizeof(u32), (u8 *)(&mvi->tx[mvi->tx_prod]), |
752 | (u32) mvi->tx_dma + sizeof(u32) * w_ptr); | 801 | (u32) mvi->tx_dma + sizeof(u32) * w_ptr); |
753 | /*Command List */ | 802 | /*Command List */ |
754 | addr = mr32(CMD_LIST_HI) << 16 << 16 | mr32(CMD_LIST_LO); | 803 | addr = mvi->slot_dma; |
755 | dev_printk(KERN_DEBUG, &pdev->dev, | 804 | dev_printk(KERN_DEBUG, &pdev->dev, |
756 | "Command List Base Address=0x%llX (PA)" | 805 | "Command List Base Address=0x%llX (PA)" |
757 | "(slot_dma=0x%llX), Header=%03d\n", | 806 | "(slot_dma=0x%llX), Header=%03d\n", |
758 | addr, mvi->slot_dma, tag); | 807 | addr, slot->buf_dma, tag); |
759 | dev_printk(KERN_DEBUG, &pdev->dev, "Command Header[%03d]:\n", tag); | 808 | dev_printk(KERN_DEBUG, &pdev->dev, "Command Header[%03d]:\n", tag); |
760 | /*mvs_cmd_hdr */ | 809 | /*mvs_cmd_hdr */ |
761 | mvs_hexdump(sizeof(struct mvs_cmd_hdr), (u8 *)(&mvi->slot[tag]), | 810 | mvs_hexdump(sizeof(struct mvs_cmd_hdr), (u8 *)(&mvi->slot[tag]), |
@@ -779,7 +828,7 @@ static void mvs_hba_memory_dump(struct mvs_info *mvi, u32 tag, | |||
779 | 828 | ||
780 | static void mvs_hba_cq_dump(struct mvs_info *mvi) | 829 | static void mvs_hba_cq_dump(struct mvs_info *mvi) |
781 | { | 830 | { |
782 | #if _MV_DUMP | 831 | #if (_MV_DUMP > 2) |
783 | u64 addr; | 832 | u64 addr; |
784 | void __iomem *regs = mvi->regs; | 833 | void __iomem *regs = mvi->regs; |
785 | struct pci_dev *pdev = mvi->pdev; | 834 | struct pci_dev *pdev = mvi->pdev; |
@@ -788,8 +837,8 @@ static void mvs_hba_cq_dump(struct mvs_info *mvi) | |||
788 | 837 | ||
789 | /*Completion Queue */ | 838 | /*Completion Queue */ |
790 | addr = mr32(RX_HI) << 16 << 16 | mr32(RX_LO); | 839 | addr = mr32(RX_HI) << 16 << 16 | mr32(RX_LO); |
791 | dev_printk(KERN_DEBUG, &pdev->dev, "Completion Task = 0x%08X\n", | 840 | dev_printk(KERN_DEBUG, &pdev->dev, "Completion Task = 0x%p\n", |
792 | (u32) mvi->slot_info[rx_desc & RXQ_SLOT_MASK].task); | 841 | mvi->slot_info[rx_desc & RXQ_SLOT_MASK].task); |
793 | dev_printk(KERN_DEBUG, &pdev->dev, | 842 | dev_printk(KERN_DEBUG, &pdev->dev, |
794 | "Completion List Base Address=0x%llX (PA), " | 843 | "Completion List Base Address=0x%llX (PA), " |
795 | "CQ_Entry=%04d, CQ_WP=0x%08X\n", | 844 | "CQ_Entry=%04d, CQ_WP=0x%08X\n", |
@@ -854,34 +903,53 @@ static int pci_go_64(struct pci_dev *pdev) | |||
854 | return rc; | 903 | return rc; |
855 | } | 904 | } |
856 | 905 | ||
906 | static int mvs_find_tag(struct mvs_info *mvi, struct sas_task *task, u32 *tag) | ||
907 | { | ||
908 | if (task->lldd_task) { | ||
909 | struct mvs_slot_info *slot; | ||
910 | slot = (struct mvs_slot_info *) task->lldd_task; | ||
911 | *tag = slot - mvi->slot_info; | ||
912 | return 1; | ||
913 | } | ||
914 | return 0; | ||
915 | } | ||
916 | |||
857 | static void mvs_tag_clear(struct mvs_info *mvi, u32 tag) | 917 | static void mvs_tag_clear(struct mvs_info *mvi, u32 tag) |
858 | { | 918 | { |
859 | mvi->tag_in = (mvi->tag_in + 1) & (MVS_SLOTS - 1); | 919 | void *bitmap = (void *) &mvi->tags; |
860 | mvi->tags[mvi->tag_in] = tag; | 920 | clear_bit(tag, bitmap); |
861 | } | 921 | } |
862 | 922 | ||
863 | static void mvs_tag_free(struct mvs_info *mvi, u32 tag) | 923 | static void mvs_tag_free(struct mvs_info *mvi, u32 tag) |
864 | { | 924 | { |
865 | mvi->tag_out = (mvi->tag_out - 1) & (MVS_SLOTS - 1); | 925 | mvs_tag_clear(mvi, tag); |
926 | } | ||
927 | |||
928 | static void mvs_tag_set(struct mvs_info *mvi, unsigned int tag) | ||
929 | { | ||
930 | void *bitmap = (void *) &mvi->tags; | ||
931 | set_bit(tag, bitmap); | ||
866 | } | 932 | } |
867 | 933 | ||
868 | static int mvs_tag_alloc(struct mvs_info *mvi, u32 *tag_out) | 934 | static int mvs_tag_alloc(struct mvs_info *mvi, u32 *tag_out) |
869 | { | 935 | { |
870 | if (mvi->tag_out != mvi->tag_in) { | 936 | unsigned int index, tag; |
871 | *tag_out = mvi->tags[mvi->tag_out]; | 937 | void *bitmap = (void *) &mvi->tags; |
872 | mvi->tag_out = (mvi->tag_out + 1) & (MVS_SLOTS - 1); | 938 | |
873 | return 0; | 939 | index = find_first_zero_bit(bitmap, MVS_SLOTS); |
874 | } | 940 | tag = index; |
875 | return -EBUSY; | 941 | if (tag >= MVS_SLOTS) |
942 | return -SAS_QUEUE_FULL; | ||
943 | mvs_tag_set(mvi, tag); | ||
944 | *tag_out = tag; | ||
945 | return 0; | ||
876 | } | 946 | } |
877 | 947 | ||
878 | static void mvs_tag_init(struct mvs_info *mvi) | 948 | static void mvs_tag_init(struct mvs_info *mvi) |
879 | { | 949 | { |
880 | int i; | 950 | int i; |
881 | for (i = 0; i < MVS_SLOTS; ++i) | 951 | for (i = 0; i < MVS_SLOTS; ++i) |
882 | mvi->tags[i] = i; | 952 | mvs_tag_clear(mvi, i); |
883 | mvi->tag_out = 0; | ||
884 | mvi->tag_in = MVS_SLOTS - 1; | ||
885 | } | 953 | } |
886 | 954 | ||
887 | #ifndef MVS_DISABLE_NVRAM | 955 | #ifndef MVS_DISABLE_NVRAM |
@@ -1013,10 +1081,21 @@ err_out: | |||
1013 | static void mvs_bytes_dmaed(struct mvs_info *mvi, int i) | 1081 | static void mvs_bytes_dmaed(struct mvs_info *mvi, int i) |
1014 | { | 1082 | { |
1015 | struct mvs_phy *phy = &mvi->phy[i]; | 1083 | struct mvs_phy *phy = &mvi->phy[i]; |
1084 | struct asd_sas_phy *sas_phy = mvi->sas.sas_phy[i]; | ||
1016 | 1085 | ||
1017 | if (!phy->phy_attached) | 1086 | if (!phy->phy_attached) |
1018 | return; | 1087 | return; |
1019 | 1088 | ||
1089 | if (sas_phy->phy) { | ||
1090 | struct sas_phy *sphy = sas_phy->phy; | ||
1091 | |||
1092 | sphy->negotiated_linkrate = sas_phy->linkrate; | ||
1093 | sphy->minimum_linkrate = phy->minimum_linkrate; | ||
1094 | sphy->minimum_linkrate_hw = SAS_LINK_RATE_1_5_GBPS; | ||
1095 | sphy->maximum_linkrate = phy->maximum_linkrate; | ||
1096 | sphy->maximum_linkrate_hw = SAS_LINK_RATE_3_0_GBPS; | ||
1097 | } | ||
1098 | |||
1020 | if (phy->phy_type & PORT_TYPE_SAS) { | 1099 | if (phy->phy_type & PORT_TYPE_SAS) { |
1021 | struct sas_identify_frame *id; | 1100 | struct sas_identify_frame *id; |
1022 | 1101 | ||
@@ -1053,80 +1132,149 @@ static void mvs_scan_start(struct Scsi_Host *shost) | |||
1053 | } | 1132 | } |
1054 | } | 1133 | } |
1055 | 1134 | ||
1056 | static int mvs_sas_slave_alloc(struct scsi_device *scsi_dev) | 1135 | static int mvs_slave_configure(struct scsi_device *sdev) |
1057 | { | 1136 | { |
1058 | int rc; | 1137 | struct domain_device *dev = sdev_to_domain_dev(sdev); |
1138 | int ret = sas_slave_configure(sdev); | ||
1059 | 1139 | ||
1060 | rc = sas_slave_alloc(scsi_dev); | 1140 | if (ret) |
1141 | return ret; | ||
1061 | 1142 | ||
1062 | return rc; | 1143 | if (dev_is_sata(dev)) { |
1144 | /* struct ata_port *ap = dev->sata_dev.ap; */ | ||
1145 | /* struct ata_device *adev = ap->link.device; */ | ||
1146 | |||
1147 | /* clamp at no NCQ for the time being */ | ||
1148 | /* adev->flags |= ATA_DFLAG_NCQ_OFF; */ | ||
1149 | scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, 1); | ||
1150 | } | ||
1151 | return 0; | ||
1063 | } | 1152 | } |
1064 | 1153 | ||
1065 | static void mvs_int_port(struct mvs_info *mvi, int port_no, u32 events) | 1154 | static void mvs_int_port(struct mvs_info *mvi, int phy_no, u32 events) |
1066 | { | 1155 | { |
1067 | struct pci_dev *pdev = mvi->pdev; | 1156 | struct pci_dev *pdev = mvi->pdev; |
1068 | struct sas_ha_struct *sas_ha = &mvi->sas; | 1157 | struct sas_ha_struct *sas_ha = &mvi->sas; |
1069 | struct mvs_phy *phy = &mvi->phy[port_no]; | 1158 | struct mvs_phy *phy = &mvi->phy[phy_no]; |
1070 | struct asd_sas_phy *sas_phy = &phy->sas_phy; | 1159 | struct asd_sas_phy *sas_phy = &phy->sas_phy; |
1071 | 1160 | ||
1072 | phy->irq_status = mvs_read_port_irq_stat(mvi, port_no); | 1161 | phy->irq_status = mvs_read_port_irq_stat(mvi, phy_no); |
1073 | /* | 1162 | /* |
1074 | * events is port event now , | 1163 | * events is port event now , |
1075 | * we need check the interrupt status which belongs to per port. | 1164 | * we need check the interrupt status which belongs to per port. |
1076 | */ | 1165 | */ |
1077 | dev_printk(KERN_DEBUG, &pdev->dev, | 1166 | dev_printk(KERN_DEBUG, &pdev->dev, |
1078 | "Port %d Event = %X\n", | 1167 | "Port %d Event = %X\n", |
1079 | port_no, phy->irq_status); | 1168 | phy_no, phy->irq_status); |
1080 | 1169 | ||
1081 | if (phy->irq_status & (PHYEV_POOF | PHYEV_DEC_ERR)) { | 1170 | if (phy->irq_status & (PHYEV_POOF | PHYEV_DEC_ERR)) { |
1082 | if (!mvs_is_phy_ready(mvi, port_no)) { | 1171 | mvs_release_task(mvi, phy_no); |
1172 | if (!mvs_is_phy_ready(mvi, phy_no)) { | ||
1083 | sas_phy_disconnected(sas_phy); | 1173 | sas_phy_disconnected(sas_phy); |
1084 | sas_ha->notify_phy_event(sas_phy, PHYE_LOSS_OF_SIGNAL); | 1174 | sas_ha->notify_phy_event(sas_phy, PHYE_LOSS_OF_SIGNAL); |
1175 | dev_printk(KERN_INFO, &pdev->dev, | ||
1176 | "Port %d Unplug Notice\n", phy_no); | ||
1177 | |||
1085 | } else | 1178 | } else |
1086 | mvs_phy_control(sas_phy, PHY_FUNC_LINK_RESET, NULL); | 1179 | mvs_phy_control(sas_phy, PHY_FUNC_LINK_RESET, NULL); |
1087 | } | 1180 | } |
1088 | if (!(phy->irq_status & PHYEV_DEC_ERR)) { | 1181 | if (!(phy->irq_status & PHYEV_DEC_ERR)) { |
1089 | if (phy->irq_status & PHYEV_COMWAKE) { | 1182 | if (phy->irq_status & PHYEV_COMWAKE) { |
1090 | u32 tmp = mvs_read_port_irq_mask(mvi, port_no); | 1183 | u32 tmp = mvs_read_port_irq_mask(mvi, phy_no); |
1091 | mvs_write_port_irq_mask(mvi, port_no, | 1184 | mvs_write_port_irq_mask(mvi, phy_no, |
1092 | tmp | PHYEV_SIG_FIS); | 1185 | tmp | PHYEV_SIG_FIS); |
1093 | } | 1186 | } |
1094 | if (phy->irq_status & (PHYEV_SIG_FIS | PHYEV_ID_DONE)) { | 1187 | if (phy->irq_status & (PHYEV_SIG_FIS | PHYEV_ID_DONE)) { |
1095 | phy->phy_status = mvs_is_phy_ready(mvi, port_no); | 1188 | phy->phy_status = mvs_is_phy_ready(mvi, phy_no); |
1096 | if (phy->phy_status) { | 1189 | if (phy->phy_status) { |
1097 | mvs_detect_porttype(mvi, port_no); | 1190 | mvs_detect_porttype(mvi, phy_no); |
1098 | 1191 | ||
1099 | if (phy->phy_type & PORT_TYPE_SATA) { | 1192 | if (phy->phy_type & PORT_TYPE_SATA) { |
1100 | u32 tmp = mvs_read_port_irq_mask(mvi, | 1193 | u32 tmp = mvs_read_port_irq_mask(mvi, |
1101 | port_no); | 1194 | phy_no); |
1102 | tmp &= ~PHYEV_SIG_FIS; | 1195 | tmp &= ~PHYEV_SIG_FIS; |
1103 | mvs_write_port_irq_mask(mvi, | 1196 | mvs_write_port_irq_mask(mvi, |
1104 | port_no, tmp); | 1197 | phy_no, tmp); |
1105 | } | 1198 | } |
1106 | 1199 | ||
1107 | mvs_update_phyinfo(mvi, port_no, 0); | 1200 | mvs_update_phyinfo(mvi, phy_no, 0); |
1108 | sas_ha->notify_phy_event(sas_phy, | 1201 | sas_ha->notify_phy_event(sas_phy, |
1109 | PHYE_OOB_DONE); | 1202 | PHYE_OOB_DONE); |
1110 | mvs_bytes_dmaed(mvi, port_no); | 1203 | mvs_bytes_dmaed(mvi, phy_no); |
1111 | } else { | 1204 | } else { |
1112 | dev_printk(KERN_DEBUG, &pdev->dev, | 1205 | dev_printk(KERN_DEBUG, &pdev->dev, |
1113 | "plugin interrupt but phy is gone\n"); | 1206 | "plugin interrupt but phy is gone\n"); |
1114 | mvs_phy_control(sas_phy, PHY_FUNC_LINK_RESET, | 1207 | mvs_phy_control(sas_phy, PHY_FUNC_LINK_RESET, |
1115 | NULL); | 1208 | NULL); |
1116 | } | 1209 | } |
1117 | } else if (phy->irq_status & PHYEV_BROAD_CH) | 1210 | } else if (phy->irq_status & PHYEV_BROAD_CH) { |
1211 | mvs_release_task(mvi, phy_no); | ||
1118 | sas_ha->notify_port_event(sas_phy, | 1212 | sas_ha->notify_port_event(sas_phy, |
1119 | PORTE_BROADCAST_RCVD); | 1213 | PORTE_BROADCAST_RCVD); |
1214 | } | ||
1120 | } | 1215 | } |
1121 | mvs_write_port_irq_stat(mvi, port_no, phy->irq_status); | 1216 | mvs_write_port_irq_stat(mvi, phy_no, phy->irq_status); |
1122 | } | 1217 | } |
1123 | 1218 | ||
1124 | static void mvs_int_sata(struct mvs_info *mvi) | 1219 | static void mvs_int_sata(struct mvs_info *mvi) |
1125 | { | 1220 | { |
1126 | /* FIXME */ | 1221 | u32 tmp; |
1222 | void __iomem *regs = mvi->regs; | ||
1223 | tmp = mr32(INT_STAT_SRS); | ||
1224 | mw32(INT_STAT_SRS, tmp & 0xFFFF); | ||
1225 | } | ||
1226 | |||
1227 | static void mvs_slot_reset(struct mvs_info *mvi, struct sas_task *task, | ||
1228 | u32 slot_idx) | ||
1229 | { | ||
1230 | void __iomem *regs = mvi->regs; | ||
1231 | struct domain_device *dev = task->dev; | ||
1232 | struct asd_sas_port *sas_port = dev->port; | ||
1233 | struct mvs_port *port = mvi->slot_info[slot_idx].port; | ||
1234 | u32 reg_set, phy_mask; | ||
1235 | |||
1236 | if (!sas_protocol_ata(task->task_proto)) { | ||
1237 | reg_set = 0; | ||
1238 | phy_mask = (port->wide_port_phymap) ? port->wide_port_phymap : | ||
1239 | sas_port->phy_mask; | ||
1240 | } else { | ||
1241 | reg_set = port->taskfileset; | ||
1242 | phy_mask = sas_port->phy_mask; | ||
1243 | } | ||
1244 | mvi->tx[mvi->tx_prod] = cpu_to_le32(TXQ_MODE_I | slot_idx | | ||
1245 | (TXQ_CMD_SLOT_RESET << TXQ_CMD_SHIFT) | | ||
1246 | (phy_mask << TXQ_PHY_SHIFT) | | ||
1247 | (reg_set << TXQ_SRS_SHIFT)); | ||
1248 | |||
1249 | mw32(TX_PROD_IDX, mvi->tx_prod); | ||
1250 | mvi->tx_prod = (mvi->tx_prod + 1) & (MVS_CHIP_SLOT_SZ - 1); | ||
1251 | } | ||
1252 | |||
1253 | static int mvs_sata_done(struct mvs_info *mvi, struct sas_task *task, | ||
1254 | u32 slot_idx, int err) | ||
1255 | { | ||
1256 | struct mvs_port *port = mvi->slot_info[slot_idx].port; | ||
1257 | struct task_status_struct *tstat = &task->task_status; | ||
1258 | struct ata_task_resp *resp = (struct ata_task_resp *)tstat->buf; | ||
1259 | int stat = SAM_GOOD; | ||
1260 | |||
1261 | resp->frame_len = sizeof(struct dev_to_host_fis); | ||
1262 | memcpy(&resp->ending_fis[0], | ||
1263 | SATA_RECEIVED_D2H_FIS(port->taskfileset), | ||
1264 | sizeof(struct dev_to_host_fis)); | ||
1265 | tstat->buf_valid_size = sizeof(*resp); | ||
1266 | if (unlikely(err)) | ||
1267 | stat = SAS_PROTO_RESPONSE; | ||
1268 | return stat; | ||
1127 | } | 1269 | } |
1128 | 1270 | ||
1129 | static void mvs_slot_free(struct mvs_info *mvi, struct sas_task *task, | 1271 | static void mvs_slot_free(struct mvs_info *mvi, u32 rx_desc) |
1272 | { | ||
1273 | u32 slot_idx = rx_desc & RXQ_SLOT_MASK; | ||
1274 | mvs_tag_clear(mvi, slot_idx); | ||
1275 | } | ||
1276 | |||
1277 | static void mvs_slot_task_free(struct mvs_info *mvi, struct sas_task *task, | ||
1130 | struct mvs_slot_info *slot, u32 slot_idx) | 1278 | struct mvs_slot_info *slot, u32 slot_idx) |
1131 | { | 1279 | { |
1132 | if (!sas_protocol_ata(task->task_proto)) | 1280 | if (!sas_protocol_ata(task->task_proto)) |
@@ -1149,38 +1297,58 @@ static void mvs_slot_free(struct mvs_info *mvi, struct sas_task *task, | |||
1149 | /* do nothing */ | 1297 | /* do nothing */ |
1150 | break; | 1298 | break; |
1151 | } | 1299 | } |
1152 | 1300 | list_del(&slot->list); | |
1301 | task->lldd_task = NULL; | ||
1153 | slot->task = NULL; | 1302 | slot->task = NULL; |
1154 | mvs_tag_clear(mvi, slot_idx); | 1303 | slot->port = NULL; |
1155 | } | 1304 | } |
1156 | 1305 | ||
1157 | static void mvs_slot_err(struct mvs_info *mvi, struct sas_task *task, | 1306 | static int mvs_slot_err(struct mvs_info *mvi, struct sas_task *task, |
1158 | u32 slot_idx) | 1307 | u32 slot_idx) |
1159 | { | 1308 | { |
1160 | struct mvs_slot_info *slot = &mvi->slot_info[slot_idx]; | 1309 | struct mvs_slot_info *slot = &mvi->slot_info[slot_idx]; |
1161 | u64 err_dw0 = *(u32 *) slot->response; | 1310 | u32 err_dw0 = le32_to_cpu(*(u32 *) (slot->response)); |
1162 | void __iomem *regs = mvi->regs; | 1311 | u32 err_dw1 = le32_to_cpu(*(u32 *) (slot->response + 4)); |
1163 | u32 tmp; | 1312 | int stat = SAM_CHECK_COND; |
1164 | 1313 | ||
1165 | if (err_dw0 & CMD_ISS_STPD) | 1314 | if (err_dw1 & SLOT_BSY_ERR) { |
1166 | if (sas_protocol_ata(task->task_proto)) { | 1315 | stat = SAS_QUEUE_FULL; |
1167 | tmp = mr32(INT_STAT_SRS); | 1316 | mvs_slot_reset(mvi, task, slot_idx); |
1168 | mw32(INT_STAT_SRS, tmp & 0xFFFF); | 1317 | } |
1169 | } | 1318 | switch (task->task_proto) { |
1319 | case SAS_PROTOCOL_SSP: | ||
1320 | break; | ||
1321 | case SAS_PROTOCOL_SMP: | ||
1322 | break; | ||
1323 | case SAS_PROTOCOL_SATA: | ||
1324 | case SAS_PROTOCOL_STP: | ||
1325 | case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP: | ||
1326 | if (err_dw0 & TFILE_ERR) | ||
1327 | stat = mvs_sata_done(mvi, task, slot_idx, 1); | ||
1328 | break; | ||
1329 | default: | ||
1330 | break; | ||
1331 | } | ||
1170 | 1332 | ||
1171 | mvs_hba_sb_dump(mvi, slot_idx, task->task_proto); | 1333 | mvs_hexdump(16, (u8 *) slot->response, 0); |
1334 | return stat; | ||
1172 | } | 1335 | } |
1173 | 1336 | ||
1174 | static int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc) | 1337 | static int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc, u32 flags) |
1175 | { | 1338 | { |
1176 | u32 slot_idx = rx_desc & RXQ_SLOT_MASK; | 1339 | u32 slot_idx = rx_desc & RXQ_SLOT_MASK; |
1177 | struct mvs_slot_info *slot = &mvi->slot_info[slot_idx]; | 1340 | struct mvs_slot_info *slot = &mvi->slot_info[slot_idx]; |
1178 | struct sas_task *task = slot->task; | 1341 | struct sas_task *task = slot->task; |
1179 | struct task_status_struct *tstat = &task->task_status; | 1342 | struct task_status_struct *tstat; |
1180 | struct mvs_port *port = &mvi->port[task->dev->port->id]; | 1343 | struct mvs_port *port; |
1181 | bool aborted; | 1344 | bool aborted; |
1182 | void *to; | 1345 | void *to; |
1183 | 1346 | ||
1347 | if (unlikely(!task || !task->lldd_task)) | ||
1348 | return -1; | ||
1349 | |||
1350 | mvs_hba_cq_dump(mvi); | ||
1351 | |||
1184 | spin_lock(&task->task_state_lock); | 1352 | spin_lock(&task->task_state_lock); |
1185 | aborted = task->task_state_flags & SAS_TASK_STATE_ABORTED; | 1353 | aborted = task->task_state_flags & SAS_TASK_STATE_ABORTED; |
1186 | if (!aborted) { | 1354 | if (!aborted) { |
@@ -1190,22 +1358,27 @@ static int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc) | |||
1190 | } | 1358 | } |
1191 | spin_unlock(&task->task_state_lock); | 1359 | spin_unlock(&task->task_state_lock); |
1192 | 1360 | ||
1193 | if (aborted) | 1361 | if (aborted) { |
1362 | mvs_slot_task_free(mvi, task, slot, slot_idx); | ||
1363 | mvs_slot_free(mvi, rx_desc); | ||
1194 | return -1; | 1364 | return -1; |
1365 | } | ||
1195 | 1366 | ||
1367 | port = slot->port; | ||
1368 | tstat = &task->task_status; | ||
1196 | memset(tstat, 0, sizeof(*tstat)); | 1369 | memset(tstat, 0, sizeof(*tstat)); |
1197 | tstat->resp = SAS_TASK_COMPLETE; | 1370 | tstat->resp = SAS_TASK_COMPLETE; |
1198 | 1371 | ||
1199 | 1372 | if (unlikely(!port->port_attached || flags)) { | |
1200 | if (unlikely(!port->port_attached)) { | 1373 | mvs_slot_err(mvi, task, slot_idx); |
1201 | tstat->stat = SAS_PHY_DOWN; | 1374 | if (!sas_protocol_ata(task->task_proto)) |
1375 | tstat->stat = SAS_PHY_DOWN; | ||
1202 | goto out; | 1376 | goto out; |
1203 | } | 1377 | } |
1204 | 1378 | ||
1205 | /* error info record present */ | 1379 | /* error info record present */ |
1206 | if ((rx_desc & RXQ_ERR) && (*(u64 *) slot->response)) { | 1380 | if (unlikely((rx_desc & RXQ_ERR) && (*(u64 *) slot->response))) { |
1207 | tstat->stat = SAM_CHECK_COND; | 1381 | tstat->stat = mvs_slot_err(mvi, task, slot_idx); |
1208 | mvs_slot_err(mvi, task, slot_idx); | ||
1209 | goto out; | 1382 | goto out; |
1210 | } | 1383 | } |
1211 | 1384 | ||
@@ -1242,21 +1415,7 @@ static int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc) | |||
1242 | case SAS_PROTOCOL_SATA: | 1415 | case SAS_PROTOCOL_SATA: |
1243 | case SAS_PROTOCOL_STP: | 1416 | case SAS_PROTOCOL_STP: |
1244 | case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP: { | 1417 | case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP: { |
1245 | struct ata_task_resp *resp = | 1418 | tstat->stat = mvs_sata_done(mvi, task, slot_idx, 0); |
1246 | (struct ata_task_resp *)tstat->buf; | ||
1247 | |||
1248 | if ((rx_desc & (RXQ_DONE | RXQ_ERR | RXQ_ATTN)) == | ||
1249 | RXQ_DONE) | ||
1250 | tstat->stat = SAM_GOOD; | ||
1251 | else | ||
1252 | tstat->stat = SAM_CHECK_COND; | ||
1253 | |||
1254 | resp->frame_len = sizeof(struct dev_to_host_fis); | ||
1255 | memcpy(&resp->ending_fis[0], | ||
1256 | SATA_RECEIVED_D2H_FIS(port->taskfileset), | ||
1257 | sizeof(struct dev_to_host_fis)); | ||
1258 | if (resp->ending_fis[2] & ATA_ERR) | ||
1259 | mvs_hexdump(16, resp->ending_fis, 0); | ||
1260 | break; | 1419 | break; |
1261 | } | 1420 | } |
1262 | 1421 | ||
@@ -1266,11 +1425,34 @@ static int mvs_slot_complete(struct mvs_info *mvi, u32 rx_desc) | |||
1266 | } | 1425 | } |
1267 | 1426 | ||
1268 | out: | 1427 | out: |
1269 | mvs_slot_free(mvi, task, slot, slot_idx); | 1428 | mvs_slot_task_free(mvi, task, slot, slot_idx); |
1429 | if (unlikely(tstat->stat != SAS_QUEUE_FULL)) | ||
1430 | mvs_slot_free(mvi, rx_desc); | ||
1431 | |||
1432 | spin_unlock(&mvi->lock); | ||
1270 | task->task_done(task); | 1433 | task->task_done(task); |
1434 | spin_lock(&mvi->lock); | ||
1271 | return tstat->stat; | 1435 | return tstat->stat; |
1272 | } | 1436 | } |
1273 | 1437 | ||
1438 | static void mvs_release_task(struct mvs_info *mvi, int phy_no) | ||
1439 | { | ||
1440 | struct list_head *pos, *n; | ||
1441 | struct mvs_slot_info *slot; | ||
1442 | struct mvs_phy *phy = &mvi->phy[phy_no]; | ||
1443 | struct mvs_port *port = phy->port; | ||
1444 | u32 rx_desc; | ||
1445 | |||
1446 | if (!port) | ||
1447 | return; | ||
1448 | |||
1449 | list_for_each_safe(pos, n, &port->list) { | ||
1450 | slot = container_of(pos, struct mvs_slot_info, list); | ||
1451 | rx_desc = (u32) (slot - mvi->slot_info); | ||
1452 | mvs_slot_complete(mvi, rx_desc, 1); | ||
1453 | } | ||
1454 | } | ||
1455 | |||
1274 | static void mvs_int_full(struct mvs_info *mvi) | 1456 | static void mvs_int_full(struct mvs_info *mvi) |
1275 | { | 1457 | { |
1276 | void __iomem *regs = mvi->regs; | 1458 | void __iomem *regs = mvi->regs; |
@@ -1305,40 +1487,43 @@ static int mvs_int_rx(struct mvs_info *mvi, bool self_clear) | |||
1305 | * we don't have to stall the CPU reading that register. | 1487 | * we don't have to stall the CPU reading that register. |
1306 | * The actual RX ring is offset by one dword, due to this. | 1488 | * The actual RX ring is offset by one dword, due to this. |
1307 | */ | 1489 | */ |
1308 | rx_prod_idx = mr32(RX_CONS_IDX) & RX_RING_SZ_MASK; | 1490 | rx_prod_idx = mvi->rx_cons; |
1309 | if (rx_prod_idx == 0xfff) { /* h/w hasn't touched RX ring yet */ | 1491 | mvi->rx_cons = le32_to_cpu(mvi->rx[0]); |
1310 | mvi->rx_cons = 0xfff; | 1492 | if (mvi->rx_cons == 0xfff) /* h/w hasn't touched RX ring yet */ |
1311 | return 0; | 1493 | return 0; |
1312 | } | ||
1313 | 1494 | ||
1314 | /* The CMPL_Q may come late, read from register and try again | 1495 | /* The CMPL_Q may come late, read from register and try again |
1315 | * note: if coalescing is enabled, | 1496 | * note: if coalescing is enabled, |
1316 | * it will need to read from register every time for sure | 1497 | * it will need to read from register every time for sure |
1317 | */ | 1498 | */ |
1318 | if (mvi->rx_cons == rx_prod_idx) | 1499 | if (mvi->rx_cons == rx_prod_idx) |
1319 | return 0; | 1500 | mvi->rx_cons = mr32(RX_CONS_IDX) & RX_RING_SZ_MASK; |
1320 | 1501 | ||
1321 | if (mvi->rx_cons == 0xfff) | 1502 | if (mvi->rx_cons == rx_prod_idx) |
1322 | mvi->rx_cons = MVS_RX_RING_SZ - 1; | 1503 | return 0; |
1323 | 1504 | ||
1324 | while (mvi->rx_cons != rx_prod_idx) { | 1505 | while (mvi->rx_cons != rx_prod_idx) { |
1325 | 1506 | ||
1326 | /* increment our internal RX consumer pointer */ | 1507 | /* increment our internal RX consumer pointer */ |
1327 | mvi->rx_cons = (mvi->rx_cons + 1) & (MVS_RX_RING_SZ - 1); | 1508 | rx_prod_idx = (rx_prod_idx + 1) & (MVS_RX_RING_SZ - 1); |
1328 | 1509 | ||
1329 | rx_desc = le32_to_cpu(mvi->rx[mvi->rx_cons + 1]); | 1510 | rx_desc = le32_to_cpu(mvi->rx[rx_prod_idx + 1]); |
1330 | |||
1331 | mvs_hba_cq_dump(mvi); | ||
1332 | 1511 | ||
1333 | if (likely(rx_desc & RXQ_DONE)) | 1512 | if (likely(rx_desc & RXQ_DONE)) |
1334 | mvs_slot_complete(mvi, rx_desc); | 1513 | mvs_slot_complete(mvi, rx_desc, 0); |
1335 | if (rx_desc & RXQ_ATTN) { | 1514 | if (rx_desc & RXQ_ATTN) { |
1336 | attn = true; | 1515 | attn = true; |
1337 | dev_printk(KERN_DEBUG, &pdev->dev, "ATTN %X\n", | 1516 | dev_printk(KERN_DEBUG, &pdev->dev, "ATTN %X\n", |
1338 | rx_desc); | 1517 | rx_desc); |
1339 | } else if (rx_desc & RXQ_ERR) { | 1518 | } else if (rx_desc & RXQ_ERR) { |
1519 | if (!(rx_desc & RXQ_DONE)) | ||
1520 | mvs_slot_complete(mvi, rx_desc, 0); | ||
1340 | dev_printk(KERN_DEBUG, &pdev->dev, "RXQ_ERR %X\n", | 1521 | dev_printk(KERN_DEBUG, &pdev->dev, "RXQ_ERR %X\n", |
1341 | rx_desc); | 1522 | rx_desc); |
1523 | } else if (rx_desc & RXQ_SLOT_RESET) { | ||
1524 | dev_printk(KERN_DEBUG, &pdev->dev, "Slot reset[%X]\n", | ||
1525 | rx_desc); | ||
1526 | mvs_slot_free(mvi, rx_desc); | ||
1342 | } | 1527 | } |
1343 | } | 1528 | } |
1344 | 1529 | ||
@@ -1348,6 +1533,23 @@ static int mvs_int_rx(struct mvs_info *mvi, bool self_clear) | |||
1348 | return 0; | 1533 | return 0; |
1349 | } | 1534 | } |
1350 | 1535 | ||
1536 | #ifdef MVS_USE_TASKLET | ||
1537 | static void mvs_tasklet(unsigned long data) | ||
1538 | { | ||
1539 | struct mvs_info *mvi = (struct mvs_info *) data; | ||
1540 | unsigned long flags; | ||
1541 | |||
1542 | spin_lock_irqsave(&mvi->lock, flags); | ||
1543 | |||
1544 | #ifdef MVS_DISABLE_MSI | ||
1545 | mvs_int_full(mvi); | ||
1546 | #else | ||
1547 | mvs_int_rx(mvi, true); | ||
1548 | #endif | ||
1549 | spin_unlock_irqrestore(&mvi->lock, flags); | ||
1550 | } | ||
1551 | #endif | ||
1552 | |||
1351 | static irqreturn_t mvs_interrupt(int irq, void *opaque) | 1553 | static irqreturn_t mvs_interrupt(int irq, void *opaque) |
1352 | { | 1554 | { |
1353 | struct mvs_info *mvi = opaque; | 1555 | struct mvs_info *mvi = opaque; |
@@ -1356,18 +1558,21 @@ static irqreturn_t mvs_interrupt(int irq, void *opaque) | |||
1356 | 1558 | ||
1357 | stat = mr32(GBL_INT_STAT); | 1559 | stat = mr32(GBL_INT_STAT); |
1358 | 1560 | ||
1359 | /* clear CMD_CMPLT ASAP */ | ||
1360 | mw32_f(INT_STAT, CINT_DONE); | ||
1361 | |||
1362 | if (stat == 0 || stat == 0xffffffff) | 1561 | if (stat == 0 || stat == 0xffffffff) |
1363 | return IRQ_NONE; | 1562 | return IRQ_NONE; |
1364 | 1563 | ||
1564 | /* clear CMD_CMPLT ASAP */ | ||
1565 | mw32_f(INT_STAT, CINT_DONE); | ||
1566 | |||
1567 | #ifndef MVS_USE_TASKLET | ||
1365 | spin_lock(&mvi->lock); | 1568 | spin_lock(&mvi->lock); |
1366 | 1569 | ||
1367 | mvs_int_full(mvi); | 1570 | mvs_int_full(mvi); |
1368 | 1571 | ||
1369 | spin_unlock(&mvi->lock); | 1572 | spin_unlock(&mvi->lock); |
1370 | 1573 | #else | |
1574 | tasklet_schedule(&mvi->tasklet); | ||
1575 | #endif | ||
1371 | return IRQ_HANDLED; | 1576 | return IRQ_HANDLED; |
1372 | } | 1577 | } |
1373 | 1578 | ||
@@ -1376,12 +1581,15 @@ static irqreturn_t mvs_msi_interrupt(int irq, void *opaque) | |||
1376 | { | 1581 | { |
1377 | struct mvs_info *mvi = opaque; | 1582 | struct mvs_info *mvi = opaque; |
1378 | 1583 | ||
1584 | #ifndef MVS_USE_TASKLET | ||
1379 | spin_lock(&mvi->lock); | 1585 | spin_lock(&mvi->lock); |
1380 | 1586 | ||
1381 | mvs_int_rx(mvi, true); | 1587 | mvs_int_rx(mvi, true); |
1382 | 1588 | ||
1383 | spin_unlock(&mvi->lock); | 1589 | spin_unlock(&mvi->lock); |
1384 | 1590 | #else | |
1591 | tasklet_schedule(&mvi->tasklet); | ||
1592 | #endif | ||
1385 | return IRQ_HANDLED; | 1593 | return IRQ_HANDLED; |
1386 | } | 1594 | } |
1387 | #endif | 1595 | #endif |
@@ -1576,15 +1784,19 @@ static u8 mvs_assign_reg_set(struct mvs_info *mvi, struct mvs_port *port) | |||
1576 | return MVS_ID_NOT_MAPPED; | 1784 | return MVS_ID_NOT_MAPPED; |
1577 | } | 1785 | } |
1578 | 1786 | ||
1579 | static u32 mvs_get_ncq_tag(struct sas_task *task) | 1787 | static u32 mvs_get_ncq_tag(struct sas_task *task, u32 *tag) |
1580 | { | 1788 | { |
1581 | u32 tag = 0; | ||
1582 | struct ata_queued_cmd *qc = task->uldd_task; | 1789 | struct ata_queued_cmd *qc = task->uldd_task; |
1583 | 1790 | ||
1584 | if (qc) | 1791 | if (qc) { |
1585 | tag = qc->tag; | 1792 | if (qc->tf.command == ATA_CMD_FPDMA_WRITE || |
1793 | qc->tf.command == ATA_CMD_FPDMA_READ) { | ||
1794 | *tag = qc->tag; | ||
1795 | return 1; | ||
1796 | } | ||
1797 | } | ||
1586 | 1798 | ||
1587 | return tag; | 1799 | return 0; |
1588 | } | 1800 | } |
1589 | 1801 | ||
1590 | static int mvs_task_prep_ata(struct mvs_info *mvi, | 1802 | static int mvs_task_prep_ata(struct mvs_info *mvi, |
@@ -1628,11 +1840,9 @@ static int mvs_task_prep_ata(struct mvs_info *mvi, | |||
1628 | hdr->flags = cpu_to_le32(flags); | 1840 | hdr->flags = cpu_to_le32(flags); |
1629 | 1841 | ||
1630 | /* FIXME: the low order order 5 bits for the TAG if enable NCQ */ | 1842 | /* FIXME: the low order order 5 bits for the TAG if enable NCQ */ |
1631 | if (task->ata_task.use_ncq) { | 1843 | if (task->ata_task.use_ncq && mvs_get_ncq_tag(task, &hdr->tags)) |
1632 | hdr->tags = cpu_to_le32(mvs_get_ncq_tag(task)); | 1844 | task->ata_task.fis.sector_count |= hdr->tags << 3; |
1633 | /*Fill in task file */ | 1845 | else |
1634 | task->ata_task.fis.sector_count = hdr->tags << 3; | ||
1635 | } else | ||
1636 | hdr->tags = cpu_to_le32(tag); | 1846 | hdr->tags = cpu_to_le32(tag); |
1637 | hdr->data_len = cpu_to_le32(task->total_xfer_len); | 1847 | hdr->data_len = cpu_to_le32(task->total_xfer_len); |
1638 | 1848 | ||
@@ -1725,13 +1935,16 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi, | |||
1725 | u32 flags; | 1935 | u32 flags; |
1726 | u32 resp_len, req_len, i, tag = tei->tag; | 1936 | u32 resp_len, req_len, i, tag = tei->tag; |
1727 | const u32 max_resp_len = SB_RFB_MAX; | 1937 | const u32 max_resp_len = SB_RFB_MAX; |
1938 | u8 phy_mask; | ||
1728 | 1939 | ||
1729 | slot = &mvi->slot_info[tag]; | 1940 | slot = &mvi->slot_info[tag]; |
1730 | 1941 | ||
1942 | phy_mask = (port->wide_port_phymap) ? port->wide_port_phymap : | ||
1943 | task->dev->port->phy_mask; | ||
1731 | slot->tx = mvi->tx_prod; | 1944 | slot->tx = mvi->tx_prod; |
1732 | mvi->tx[mvi->tx_prod] = cpu_to_le32(TXQ_MODE_I | tag | | 1945 | mvi->tx[mvi->tx_prod] = cpu_to_le32(TXQ_MODE_I | tag | |
1733 | (TXQ_CMD_SSP << TXQ_CMD_SHIFT) | | 1946 | (TXQ_CMD_SSP << TXQ_CMD_SHIFT) | |
1734 | (port->wide_port_phymap << TXQ_PHY_SHIFT)); | 1947 | (phy_mask << TXQ_PHY_SHIFT)); |
1735 | 1948 | ||
1736 | flags = MCH_RETRY; | 1949 | flags = MCH_RETRY; |
1737 | if (task->ssp_task.enable_first_burst) { | 1950 | if (task->ssp_task.enable_first_burst) { |
@@ -1832,22 +2045,32 @@ static int mvs_task_exec(struct sas_task *task, const int num, gfp_t gfp_flags) | |||
1832 | void __iomem *regs = mvi->regs; | 2045 | void __iomem *regs = mvi->regs; |
1833 | struct mvs_task_exec_info tei; | 2046 | struct mvs_task_exec_info tei; |
1834 | struct sas_task *t = task; | 2047 | struct sas_task *t = task; |
2048 | struct mvs_slot_info *slot; | ||
1835 | u32 tag = 0xdeadbeef, rc, n_elem = 0; | 2049 | u32 tag = 0xdeadbeef, rc, n_elem = 0; |
1836 | unsigned long flags; | 2050 | unsigned long flags; |
1837 | u32 n = num, pass = 0; | 2051 | u32 n = num, pass = 0; |
1838 | 2052 | ||
1839 | spin_lock_irqsave(&mvi->lock, flags); | 2053 | spin_lock_irqsave(&mvi->lock, flags); |
1840 | |||
1841 | do { | 2054 | do { |
2055 | dev = t->dev; | ||
1842 | tei.port = &mvi->port[dev->port->id]; | 2056 | tei.port = &mvi->port[dev->port->id]; |
1843 | 2057 | ||
1844 | if (!tei.port->port_attached) { | 2058 | if (!tei.port->port_attached) { |
1845 | struct task_status_struct *ts = &t->task_status; | 2059 | if (sas_protocol_ata(t->task_proto)) { |
1846 | ts->stat = SAS_PHY_DOWN; | 2060 | rc = SAS_PHY_DOWN; |
1847 | t->task_done(t); | 2061 | goto out_done; |
1848 | rc = 0; | 2062 | } else { |
1849 | goto exec_exit; | 2063 | struct task_status_struct *ts = &t->task_status; |
2064 | ts->resp = SAS_TASK_UNDELIVERED; | ||
2065 | ts->stat = SAS_PHY_DOWN; | ||
2066 | t->task_done(t); | ||
2067 | if (n > 1) | ||
2068 | t = list_entry(t->list.next, | ||
2069 | struct sas_task, list); | ||
2070 | continue; | ||
2071 | } | ||
1850 | } | 2072 | } |
2073 | |||
1851 | if (!sas_protocol_ata(t->task_proto)) { | 2074 | if (!sas_protocol_ata(t->task_proto)) { |
1852 | if (t->num_scatter) { | 2075 | if (t->num_scatter) { |
1853 | n_elem = pci_map_sg(mvi->pdev, t->scatter, | 2076 | n_elem = pci_map_sg(mvi->pdev, t->scatter, |
@@ -1866,9 +2089,10 @@ static int mvs_task_exec(struct sas_task *task, const int num, gfp_t gfp_flags) | |||
1866 | if (rc) | 2089 | if (rc) |
1867 | goto err_out; | 2090 | goto err_out; |
1868 | 2091 | ||
1869 | mvi->slot_info[tag].task = t; | 2092 | slot = &mvi->slot_info[tag]; |
1870 | mvi->slot_info[tag].n_elem = n_elem; | 2093 | t->lldd_task = NULL; |
1871 | memset(mvi->slot_info[tag].buf, 0, MVS_SLOT_BUF_SZ); | 2094 | slot->n_elem = n_elem; |
2095 | memset(slot->buf, 0, MVS_SLOT_BUF_SZ); | ||
1872 | tei.task = t; | 2096 | tei.task = t; |
1873 | tei.hdr = &mvi->slot[tag]; | 2097 | tei.hdr = &mvi->slot[tag]; |
1874 | tei.tag = tag; | 2098 | tei.tag = tag; |
@@ -1897,28 +2121,26 @@ static int mvs_task_exec(struct sas_task *task, const int num, gfp_t gfp_flags) | |||
1897 | if (rc) | 2121 | if (rc) |
1898 | goto err_out_tag; | 2122 | goto err_out_tag; |
1899 | 2123 | ||
2124 | slot->task = t; | ||
2125 | slot->port = tei.port; | ||
2126 | t->lldd_task = (void *) slot; | ||
2127 | list_add_tail(&slot->list, &slot->port->list); | ||
1900 | /* TODO: select normal or high priority */ | 2128 | /* TODO: select normal or high priority */ |
1901 | 2129 | ||
1902 | spin_lock(&t->task_state_lock); | 2130 | spin_lock(&t->task_state_lock); |
1903 | t->task_state_flags |= SAS_TASK_AT_INITIATOR; | 2131 | t->task_state_flags |= SAS_TASK_AT_INITIATOR; |
1904 | spin_unlock(&t->task_state_lock); | 2132 | spin_unlock(&t->task_state_lock); |
1905 | 2133 | ||
1906 | if (n == 1) { | ||
1907 | spin_unlock_irqrestore(&mvi->lock, flags); | ||
1908 | mw32(TX_PROD_IDX, mvi->tx_prod); | ||
1909 | } | ||
1910 | mvs_hba_memory_dump(mvi, tag, t->task_proto); | 2134 | mvs_hba_memory_dump(mvi, tag, t->task_proto); |
1911 | 2135 | ||
1912 | ++pass; | 2136 | ++pass; |
1913 | mvi->tx_prod = (mvi->tx_prod + 1) & (MVS_CHIP_SLOT_SZ - 1); | 2137 | mvi->tx_prod = (mvi->tx_prod + 1) & (MVS_CHIP_SLOT_SZ - 1); |
1914 | 2138 | if (n > 1) | |
1915 | if (n == 1) | 2139 | t = list_entry(t->list.next, struct sas_task, list); |
1916 | break; | ||
1917 | |||
1918 | t = list_entry(t->list.next, struct sas_task, list); | ||
1919 | } while (--n); | 2140 | } while (--n); |
1920 | 2141 | ||
1921 | return 0; | 2142 | rc = 0; |
2143 | goto out_done; | ||
1922 | 2144 | ||
1923 | err_out_tag: | 2145 | err_out_tag: |
1924 | mvs_tag_free(mvi, tag); | 2146 | mvs_tag_free(mvi, tag); |
@@ -1928,7 +2150,7 @@ err_out: | |||
1928 | if (n_elem) | 2150 | if (n_elem) |
1929 | pci_unmap_sg(mvi->pdev, t->scatter, n_elem, | 2151 | pci_unmap_sg(mvi->pdev, t->scatter, n_elem, |
1930 | t->data_dir); | 2152 | t->data_dir); |
1931 | exec_exit: | 2153 | out_done: |
1932 | if (pass) | 2154 | if (pass) |
1933 | mw32(TX_PROD_IDX, (mvi->tx_prod - 1) & (MVS_CHIP_SLOT_SZ - 1)); | 2155 | mw32(TX_PROD_IDX, (mvi->tx_prod - 1) & (MVS_CHIP_SLOT_SZ - 1)); |
1934 | spin_unlock_irqrestore(&mvi->lock, flags); | 2156 | spin_unlock_irqrestore(&mvi->lock, flags); |
@@ -1937,42 +2159,59 @@ exec_exit: | |||
1937 | 2159 | ||
1938 | static int mvs_task_abort(struct sas_task *task) | 2160 | static int mvs_task_abort(struct sas_task *task) |
1939 | { | 2161 | { |
1940 | int rc = 1; | 2162 | int rc; |
1941 | unsigned long flags; | 2163 | unsigned long flags; |
1942 | struct mvs_info *mvi = task->dev->port->ha->lldd_ha; | 2164 | struct mvs_info *mvi = task->dev->port->ha->lldd_ha; |
1943 | struct pci_dev *pdev = mvi->pdev; | 2165 | struct pci_dev *pdev = mvi->pdev; |
2166 | int tag; | ||
1944 | 2167 | ||
1945 | spin_lock_irqsave(&task->task_state_lock, flags); | 2168 | spin_lock_irqsave(&task->task_state_lock, flags); |
1946 | if (task->task_state_flags & SAS_TASK_STATE_DONE) { | 2169 | if (task->task_state_flags & SAS_TASK_STATE_DONE) { |
1947 | rc = TMF_RESP_FUNC_COMPLETE; | 2170 | rc = TMF_RESP_FUNC_COMPLETE; |
2171 | spin_unlock_irqrestore(&task->task_state_lock, flags); | ||
1948 | goto out_done; | 2172 | goto out_done; |
1949 | } | 2173 | } |
1950 | spin_unlock_irqrestore(&task->task_state_lock, flags); | 2174 | spin_unlock_irqrestore(&task->task_state_lock, flags); |
1951 | 2175 | ||
1952 | /*FIXME*/ | ||
1953 | rc = TMF_RESP_FUNC_COMPLETE; | ||
1954 | |||
1955 | switch (task->task_proto) { | 2176 | switch (task->task_proto) { |
1956 | case SAS_PROTOCOL_SMP: | 2177 | case SAS_PROTOCOL_SMP: |
1957 | dev_printk(KERN_DEBUG, &pdev->dev, "SMP Abort! "); | 2178 | dev_printk(KERN_DEBUG, &pdev->dev, "SMP Abort! \n"); |
1958 | break; | 2179 | break; |
1959 | case SAS_PROTOCOL_SSP: | 2180 | case SAS_PROTOCOL_SSP: |
1960 | dev_printk(KERN_DEBUG, &pdev->dev, "SSP Abort! "); | 2181 | dev_printk(KERN_DEBUG, &pdev->dev, "SSP Abort! \n"); |
1961 | break; | 2182 | break; |
1962 | case SAS_PROTOCOL_SATA: | 2183 | case SAS_PROTOCOL_SATA: |
1963 | case SAS_PROTOCOL_STP: | 2184 | case SAS_PROTOCOL_STP: |
1964 | case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:{ | 2185 | case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:{ |
1965 | dev_printk(KERN_DEBUG, &pdev->dev, "STP Abort! " | 2186 | dev_printk(KERN_DEBUG, &pdev->dev, "STP Abort! \n"); |
1966 | "Dump D2H FIS: \n"); | 2187 | #if _MV_DUMP |
2188 | dev_printk(KERN_DEBUG, &pdev->dev, "Dump D2H FIS: \n"); | ||
1967 | mvs_hexdump(sizeof(struct host_to_dev_fis), | 2189 | mvs_hexdump(sizeof(struct host_to_dev_fis), |
1968 | (void *)&task->ata_task.fis, 0); | 2190 | (void *)&task->ata_task.fis, 0); |
1969 | dev_printk(KERN_DEBUG, &pdev->dev, "Dump ATAPI Cmd : \n"); | 2191 | dev_printk(KERN_DEBUG, &pdev->dev, "Dump ATAPI Cmd : \n"); |
1970 | mvs_hexdump(16, task->ata_task.atapi_packet, 0); | 2192 | mvs_hexdump(16, task->ata_task.atapi_packet, 0); |
2193 | #endif | ||
2194 | spin_lock_irqsave(&task->task_state_lock, flags); | ||
2195 | if (task->task_state_flags & SAS_TASK_NEED_DEV_RESET) { | ||
2196 | /* TODO */ | ||
2197 | ; | ||
2198 | } | ||
2199 | spin_unlock_irqrestore(&task->task_state_lock, flags); | ||
1971 | break; | 2200 | break; |
1972 | } | 2201 | } |
1973 | default: | 2202 | default: |
1974 | break; | 2203 | break; |
1975 | } | 2204 | } |
2205 | |||
2206 | if (mvs_find_tag(mvi, task, &tag)) { | ||
2207 | spin_lock_irqsave(&mvi->lock, flags); | ||
2208 | mvs_slot_task_free(mvi, task, &mvi->slot_info[tag], tag); | ||
2209 | spin_unlock_irqrestore(&mvi->lock, flags); | ||
2210 | } | ||
2211 | if (!mvs_task_exec(task, 1, GFP_ATOMIC)) | ||
2212 | rc = TMF_RESP_FUNC_COMPLETE; | ||
2213 | else | ||
2214 | rc = TMF_RESP_FUNC_FAILED; | ||
1976 | out_done: | 2215 | out_done: |
1977 | return rc; | 2216 | return rc; |
1978 | } | 2217 | } |
@@ -2001,7 +2240,7 @@ static void mvs_free(struct mvs_info *mvi) | |||
2001 | mvi->rx_fis, mvi->rx_fis_dma); | 2240 | mvi->rx_fis, mvi->rx_fis_dma); |
2002 | if (mvi->rx) | 2241 | if (mvi->rx) |
2003 | dma_free_coherent(&mvi->pdev->dev, | 2242 | dma_free_coherent(&mvi->pdev->dev, |
2004 | sizeof(*mvi->rx) * MVS_RX_RING_SZ, | 2243 | sizeof(*mvi->rx) * (MVS_RX_RING_SZ + 1), |
2005 | mvi->rx, mvi->rx_dma); | 2244 | mvi->rx, mvi->rx_dma); |
2006 | if (mvi->slot) | 2245 | if (mvi->slot) |
2007 | dma_free_coherent(&mvi->pdev->dev, | 2246 | dma_free_coherent(&mvi->pdev->dev, |
@@ -2109,6 +2348,9 @@ static struct mvs_info *__devinit mvs_alloc(struct pci_dev *pdev, | |||
2109 | return NULL; | 2348 | return NULL; |
2110 | 2349 | ||
2111 | spin_lock_init(&mvi->lock); | 2350 | spin_lock_init(&mvi->lock); |
2351 | #ifdef MVS_USE_TASKLET | ||
2352 | tasklet_init(&mvi->tasklet, mvs_tasklet, (unsigned long)mvi); | ||
2353 | #endif | ||
2112 | mvi->pdev = pdev; | 2354 | mvi->pdev = pdev; |
2113 | mvi->chip = chip; | 2355 | mvi->chip = chip; |
2114 | 2356 | ||
@@ -2132,6 +2374,10 @@ static struct mvs_info *__devinit mvs_alloc(struct pci_dev *pdev, | |||
2132 | mvs_phy_init(mvi, i); | 2374 | mvs_phy_init(mvi, i); |
2133 | arr_phy[i] = &mvi->phy[i].sas_phy; | 2375 | arr_phy[i] = &mvi->phy[i].sas_phy; |
2134 | arr_port[i] = &mvi->port[i].sas_port; | 2376 | arr_port[i] = &mvi->port[i].sas_port; |
2377 | mvi->port[i].taskfileset = MVS_ID_NOT_MAPPED; | ||
2378 | mvi->port[i].wide_port_phymap = 0; | ||
2379 | mvi->port[i].port_attached = 0; | ||
2380 | INIT_LIST_HEAD(&mvi->port[i].list); | ||
2135 | } | 2381 | } |
2136 | 2382 | ||
2137 | SHOST_TO_SAS_HA(mvi->shost) = &mvi->sas; | 2383 | SHOST_TO_SAS_HA(mvi->shost) = &mvi->sas; |
@@ -2148,9 +2394,10 @@ static struct mvs_info *__devinit mvs_alloc(struct pci_dev *pdev, | |||
2148 | mvi->sas.sas_phy = arr_phy; | 2394 | mvi->sas.sas_phy = arr_phy; |
2149 | mvi->sas.sas_port = arr_port; | 2395 | mvi->sas.sas_port = arr_port; |
2150 | mvi->sas.num_phys = chip->n_phy; | 2396 | mvi->sas.num_phys = chip->n_phy; |
2151 | mvi->sas.lldd_max_execute_num = MVS_CHIP_SLOT_SZ - 1; | 2397 | mvi->sas.lldd_max_execute_num = 1; |
2152 | mvi->sas.lldd_queue_size = MVS_QUEUE_SIZE; | 2398 | mvi->sas.lldd_queue_size = MVS_QUEUE_SIZE; |
2153 | mvi->can_queue = (MVS_CHIP_SLOT_SZ >> 1) - 1; | 2399 | mvi->shost->can_queue = MVS_CAN_QUEUE; |
2400 | mvi->shost->cmd_per_lun = MVS_SLOTS / mvi->sas.num_phys; | ||
2154 | mvi->sas.lldd_ha = mvi; | 2401 | mvi->sas.lldd_ha = mvi; |
2155 | mvi->sas.core.shost = mvi->shost; | 2402 | mvi->sas.core.shost = mvi->shost; |
2156 | 2403 | ||
@@ -2203,11 +2450,11 @@ static struct mvs_info *__devinit mvs_alloc(struct pci_dev *pdev, | |||
2203 | memset(mvi->rx_fis, 0, MVS_RX_FISL_SZ); | 2450 | memset(mvi->rx_fis, 0, MVS_RX_FISL_SZ); |
2204 | 2451 | ||
2205 | mvi->rx = dma_alloc_coherent(&pdev->dev, | 2452 | mvi->rx = dma_alloc_coherent(&pdev->dev, |
2206 | sizeof(*mvi->rx) * MVS_RX_RING_SZ, | 2453 | sizeof(*mvi->rx) * (MVS_RX_RING_SZ + 1), |
2207 | &mvi->rx_dma, GFP_KERNEL); | 2454 | &mvi->rx_dma, GFP_KERNEL); |
2208 | if (!mvi->rx) | 2455 | if (!mvi->rx) |
2209 | goto err_out; | 2456 | goto err_out; |
2210 | memset(mvi->rx, 0, sizeof(*mvi->rx) * MVS_RX_RING_SZ); | 2457 | memset(mvi->rx, 0, sizeof(*mvi->rx) * (MVS_RX_RING_SZ + 1)); |
2211 | 2458 | ||
2212 | mvi->rx[0] = cpu_to_le32(0xfff); | 2459 | mvi->rx[0] = cpu_to_le32(0xfff); |
2213 | mvi->rx_cons = 0xfff; | 2460 | mvi->rx_cons = 0xfff; |
@@ -2357,7 +2604,7 @@ static void __devinit mvs_phy_hacks(struct mvs_info *mvi) | |||
2357 | mvs_cw32(regs, CMD_SAS_CTL0, tmp); | 2604 | mvs_cw32(regs, CMD_SAS_CTL0, tmp); |
2358 | 2605 | ||
2359 | /* workaround for WDTIMEOUT , set to 550 ms */ | 2606 | /* workaround for WDTIMEOUT , set to 550 ms */ |
2360 | mvs_cw32(regs, CMD_WD_TIMER, 0xffffff); | 2607 | mvs_cw32(regs, CMD_WD_TIMER, 0x86470); |
2361 | 2608 | ||
2362 | /* not to halt for different port op during wideport link change */ | 2609 | /* not to halt for different port op during wideport link change */ |
2363 | mvs_cw32(regs, CMD_APP_ERR_CONFIG, 0xffefbf7d); | 2610 | mvs_cw32(regs, CMD_APP_ERR_CONFIG, 0xffefbf7d); |
@@ -2465,17 +2712,16 @@ static u32 mvs_is_phy_ready(struct mvs_info *mvi, int i) | |||
2465 | { | 2712 | { |
2466 | u32 tmp; | 2713 | u32 tmp; |
2467 | struct mvs_phy *phy = &mvi->phy[i]; | 2714 | struct mvs_phy *phy = &mvi->phy[i]; |
2468 | struct mvs_port *port; | 2715 | struct mvs_port *port = phy->port;; |
2469 | 2716 | ||
2470 | tmp = mvs_read_phy_ctl(mvi, i); | 2717 | tmp = mvs_read_phy_ctl(mvi, i); |
2471 | 2718 | ||
2472 | if ((tmp & PHY_READY_MASK) && !(phy->irq_status & PHYEV_POOF)) { | 2719 | if ((tmp & PHY_READY_MASK) && !(phy->irq_status & PHYEV_POOF)) { |
2473 | if (!phy->port) | 2720 | if (!port) |
2474 | phy->phy_attached = 1; | 2721 | phy->phy_attached = 1; |
2475 | return tmp; | 2722 | return tmp; |
2476 | } | 2723 | } |
2477 | 2724 | ||
2478 | port = phy->port; | ||
2479 | if (port) { | 2725 | if (port) { |
2480 | if (phy->phy_type & PORT_TYPE_SAS) { | 2726 | if (phy->phy_type & PORT_TYPE_SAS) { |
2481 | port->wide_port_phymap &= ~(1U << i); | 2727 | port->wide_port_phymap &= ~(1U << i); |
@@ -2497,7 +2743,7 @@ static void mvs_update_phyinfo(struct mvs_info *mvi, int i, | |||
2497 | { | 2743 | { |
2498 | struct mvs_phy *phy = &mvi->phy[i]; | 2744 | struct mvs_phy *phy = &mvi->phy[i]; |
2499 | struct pci_dev *pdev = mvi->pdev; | 2745 | struct pci_dev *pdev = mvi->pdev; |
2500 | u32 tmp, j; | 2746 | u32 tmp; |
2501 | u64 tmp64; | 2747 | u64 tmp64; |
2502 | 2748 | ||
2503 | mvs_write_port_cfg_addr(mvi, i, PHYR_IDENTIFY); | 2749 | mvs_write_port_cfg_addr(mvi, i, PHYR_IDENTIFY); |
@@ -2524,46 +2770,20 @@ static void mvs_update_phyinfo(struct mvs_info *mvi, int i, | |||
2524 | sas_phy->linkrate = | 2770 | sas_phy->linkrate = |
2525 | (phy->phy_status & PHY_NEG_SPP_PHYS_LINK_RATE_MASK) >> | 2771 | (phy->phy_status & PHY_NEG_SPP_PHYS_LINK_RATE_MASK) >> |
2526 | PHY_NEG_SPP_PHYS_LINK_RATE_MASK_OFFSET; | 2772 | PHY_NEG_SPP_PHYS_LINK_RATE_MASK_OFFSET; |
2527 | 2773 | phy->minimum_linkrate = | |
2528 | /* Updated attached_sas_addr */ | 2774 | (phy->phy_status & |
2529 | mvs_write_port_cfg_addr(mvi, i, PHYR_ATT_ADDR_HI); | 2775 | PHY_MIN_SPP_PHYS_LINK_RATE_MASK) >> 8; |
2530 | phy->att_dev_sas_addr = | 2776 | phy->maximum_linkrate = |
2531 | (u64) mvs_read_port_cfg_data(mvi, i) << 32; | 2777 | (phy->phy_status & |
2532 | 2778 | PHY_MAX_SPP_PHYS_LINK_RATE_MASK) >> 12; | |
2533 | mvs_write_port_cfg_addr(mvi, i, PHYR_ATT_ADDR_LO); | ||
2534 | phy->att_dev_sas_addr |= mvs_read_port_cfg_data(mvi, i); | ||
2535 | |||
2536 | dev_printk(KERN_DEBUG, &pdev->dev, | ||
2537 | "phy[%d] Get Attached Address 0x%llX ," | ||
2538 | " SAS Address 0x%llX\n", | ||
2539 | i, phy->att_dev_sas_addr, phy->dev_sas_addr); | ||
2540 | dev_printk(KERN_DEBUG, &pdev->dev, | ||
2541 | "Rate = %x , type = %d\n", | ||
2542 | sas_phy->linkrate, phy->phy_type); | ||
2543 | |||
2544 | #if 1 | ||
2545 | /* | ||
2546 | * If the device is capable of supporting a wide port | ||
2547 | * on its phys, it may configure the phys as a wide port. | ||
2548 | */ | ||
2549 | if (phy->phy_type & PORT_TYPE_SAS) | ||
2550 | for (j = 0; j < mvi->chip->n_phy && j != i; ++j) { | ||
2551 | if ((mvi->phy[j].phy_attached) && | ||
2552 | (mvi->phy[j].phy_type & PORT_TYPE_SAS)) | ||
2553 | if (phy->att_dev_sas_addr == | ||
2554 | mvi->phy[j].att_dev_sas_addr - 1) { | ||
2555 | phy->att_dev_sas_addr = | ||
2556 | mvi->phy[j].att_dev_sas_addr; | ||
2557 | break; | ||
2558 | } | ||
2559 | } | ||
2560 | |||
2561 | #endif | ||
2562 | |||
2563 | tmp64 = cpu_to_be64(phy->att_dev_sas_addr); | ||
2564 | memcpy(sas_phy->attached_sas_addr, &tmp64, SAS_ADDR_SIZE); | ||
2565 | 2779 | ||
2566 | if (phy->phy_type & PORT_TYPE_SAS) { | 2780 | if (phy->phy_type & PORT_TYPE_SAS) { |
2781 | /* Updated attached_sas_addr */ | ||
2782 | mvs_write_port_cfg_addr(mvi, i, PHYR_ATT_ADDR_HI); | ||
2783 | phy->att_dev_sas_addr = | ||
2784 | (u64) mvs_read_port_cfg_data(mvi, i) << 32; | ||
2785 | mvs_write_port_cfg_addr(mvi, i, PHYR_ATT_ADDR_LO); | ||
2786 | phy->att_dev_sas_addr |= mvs_read_port_cfg_data(mvi, i); | ||
2567 | mvs_write_port_cfg_addr(mvi, i, PHYR_ATT_DEV_INFO); | 2787 | mvs_write_port_cfg_addr(mvi, i, PHYR_ATT_DEV_INFO); |
2568 | phy->att_dev_info = mvs_read_port_cfg_data(mvi, i); | 2788 | phy->att_dev_info = mvs_read_port_cfg_data(mvi, i); |
2569 | phy->identify.device_type = | 2789 | phy->identify.device_type = |
@@ -2582,6 +2802,7 @@ static void mvs_update_phyinfo(struct mvs_info *mvi, int i, | |||
2582 | } else if (phy->phy_type & PORT_TYPE_SATA) { | 2802 | } else if (phy->phy_type & PORT_TYPE_SATA) { |
2583 | phy->identify.target_port_protocols = SAS_PROTOCOL_STP; | 2803 | phy->identify.target_port_protocols = SAS_PROTOCOL_STP; |
2584 | if (mvs_is_sig_fis_received(phy->irq_status)) { | 2804 | if (mvs_is_sig_fis_received(phy->irq_status)) { |
2805 | phy->att_dev_sas_addr = i; /* temp */ | ||
2585 | if (phy_st & PHY_OOB_DTCTD) | 2806 | if (phy_st & PHY_OOB_DTCTD) |
2586 | sas_phy->oob_mode = SATA_OOB_MODE; | 2807 | sas_phy->oob_mode = SATA_OOB_MODE; |
2587 | phy->frame_rcvd_size = | 2808 | phy->frame_rcvd_size = |
@@ -2591,20 +2812,34 @@ static void mvs_update_phyinfo(struct mvs_info *mvi, int i, | |||
2591 | } else { | 2812 | } else { |
2592 | dev_printk(KERN_DEBUG, &pdev->dev, | 2813 | dev_printk(KERN_DEBUG, &pdev->dev, |
2593 | "No sig fis\n"); | 2814 | "No sig fis\n"); |
2815 | phy->phy_type &= ~(PORT_TYPE_SATA); | ||
2816 | goto out_done; | ||
2594 | } | 2817 | } |
2595 | } | 2818 | } |
2819 | tmp64 = cpu_to_be64(phy->att_dev_sas_addr); | ||
2820 | memcpy(sas_phy->attached_sas_addr, &tmp64, SAS_ADDR_SIZE); | ||
2821 | |||
2822 | dev_printk(KERN_DEBUG, &pdev->dev, | ||
2823 | "phy[%d] Get Attached Address 0x%llX ," | ||
2824 | " SAS Address 0x%llX\n", | ||
2825 | i, phy->att_dev_sas_addr, phy->dev_sas_addr); | ||
2826 | dev_printk(KERN_DEBUG, &pdev->dev, | ||
2827 | "Rate = %x , type = %d\n", | ||
2828 | sas_phy->linkrate, phy->phy_type); | ||
2829 | |||
2596 | /* workaround for HW phy decoding error on 1.5g disk drive */ | 2830 | /* workaround for HW phy decoding error on 1.5g disk drive */ |
2597 | mvs_write_port_vsr_addr(mvi, i, VSR_PHY_MODE6); | 2831 | mvs_write_port_vsr_addr(mvi, i, VSR_PHY_MODE6); |
2598 | tmp = mvs_read_port_vsr_data(mvi, i); | 2832 | tmp = mvs_read_port_vsr_data(mvi, i); |
2599 | if (((phy->phy_status & PHY_NEG_SPP_PHYS_LINK_RATE_MASK) >> | 2833 | if (((phy->phy_status & PHY_NEG_SPP_PHYS_LINK_RATE_MASK) >> |
2600 | PHY_NEG_SPP_PHYS_LINK_RATE_MASK_OFFSET) == | 2834 | PHY_NEG_SPP_PHYS_LINK_RATE_MASK_OFFSET) == |
2601 | SAS_LINK_RATE_1_5_GBPS) | 2835 | SAS_LINK_RATE_1_5_GBPS) |
2602 | tmp &= ~PHY_MODE6_DTL_SPEED; | 2836 | tmp &= ~PHY_MODE6_LATECLK; |
2603 | else | 2837 | else |
2604 | tmp |= PHY_MODE6_DTL_SPEED; | 2838 | tmp |= PHY_MODE6_LATECLK; |
2605 | mvs_write_port_vsr_data(mvi, i, tmp); | 2839 | mvs_write_port_vsr_data(mvi, i, tmp); |
2606 | 2840 | ||
2607 | } | 2841 | } |
2842 | out_done: | ||
2608 | if (get_st) | 2843 | if (get_st) |
2609 | mvs_write_port_irq_stat(mvi, i, phy->irq_status); | 2844 | mvs_write_port_irq_stat(mvi, i, phy->irq_status); |
2610 | } | 2845 | } |
@@ -2629,6 +2864,11 @@ static void mvs_port_formed(struct asd_sas_phy *sas_phy) | |||
2629 | spin_unlock_irqrestore(&mvi->lock, flags); | 2864 | spin_unlock_irqrestore(&mvi->lock, flags); |
2630 | } | 2865 | } |
2631 | 2866 | ||
2867 | static int mvs_I_T_nexus_reset(struct domain_device *dev) | ||
2868 | { | ||
2869 | return TMF_RESP_FUNC_FAILED; | ||
2870 | } | ||
2871 | |||
2632 | static int __devinit mvs_hw_init(struct mvs_info *mvi) | 2872 | static int __devinit mvs_hw_init(struct mvs_info *mvi) |
2633 | { | 2873 | { |
2634 | void __iomem *regs = mvi->regs; | 2874 | void __iomem *regs = mvi->regs; |
@@ -2790,13 +3030,12 @@ static int __devinit mvs_hw_init(struct mvs_info *mvi) | |||
2790 | /* enable CMD/CMPL_Q/RESP mode */ | 3030 | /* enable CMD/CMPL_Q/RESP mode */ |
2791 | mw32(PCS, PCS_SATA_RETRY | PCS_FIS_RX_EN | PCS_CMD_EN); | 3031 | mw32(PCS, PCS_SATA_RETRY | PCS_FIS_RX_EN | PCS_CMD_EN); |
2792 | 3032 | ||
2793 | /* re-enable interrupts globally */ | ||
2794 | mvs_hba_interrupt_enable(mvi); | ||
2795 | |||
2796 | /* enable completion queue interrupt */ | 3033 | /* enable completion queue interrupt */ |
2797 | tmp = (CINT_PORT_MASK | CINT_DONE | CINT_MEM); | 3034 | tmp = (CINT_PORT_MASK | CINT_DONE | CINT_MEM | CINT_SRS); |
2798 | mw32(INT_MASK, tmp); | 3035 | mw32(INT_MASK, tmp); |
2799 | 3036 | ||
3037 | /* Enable SRS interrupt */ | ||
3038 | mw32(INT_MASK_SRS, 0xFF); | ||
2800 | return 0; | 3039 | return 0; |
2801 | } | 3040 | } |
2802 | 3041 | ||
@@ -2870,6 +3109,8 @@ static int __devinit mvs_pci_init(struct pci_dev *pdev, | |||
2870 | 3109 | ||
2871 | mvs_print_info(mvi); | 3110 | mvs_print_info(mvi); |
2872 | 3111 | ||
3112 | mvs_hba_interrupt_enable(mvi); | ||
3113 | |||
2873 | scsi_scan_host(mvi->shost); | 3114 | scsi_scan_host(mvi->shost); |
2874 | 3115 | ||
2875 | return 0; | 3116 | return 0; |
@@ -2915,12 +3156,22 @@ static struct sas_domain_function_template mvs_transport_ops = { | |||
2915 | .lldd_execute_task = mvs_task_exec, | 3156 | .lldd_execute_task = mvs_task_exec, |
2916 | .lldd_control_phy = mvs_phy_control, | 3157 | .lldd_control_phy = mvs_phy_control, |
2917 | .lldd_abort_task = mvs_task_abort, | 3158 | .lldd_abort_task = mvs_task_abort, |
2918 | .lldd_port_formed = mvs_port_formed | 3159 | .lldd_port_formed = mvs_port_formed, |
3160 | .lldd_I_T_nexus_reset = mvs_I_T_nexus_reset, | ||
2919 | }; | 3161 | }; |
2920 | 3162 | ||
2921 | static struct pci_device_id __devinitdata mvs_pci_table[] = { | 3163 | static struct pci_device_id __devinitdata mvs_pci_table[] = { |
2922 | { PCI_VDEVICE(MARVELL, 0x6320), chip_6320 }, | 3164 | { PCI_VDEVICE(MARVELL, 0x6320), chip_6320 }, |
2923 | { PCI_VDEVICE(MARVELL, 0x6340), chip_6440 }, | 3165 | { PCI_VDEVICE(MARVELL, 0x6340), chip_6440 }, |
3166 | { | ||
3167 | .vendor = PCI_VENDOR_ID_MARVELL, | ||
3168 | .device = 0x6440, | ||
3169 | .subvendor = PCI_ANY_ID, | ||
3170 | .subdevice = 0x6480, | ||
3171 | .class = 0, | ||
3172 | .class_mask = 0, | ||
3173 | .driver_data = chip_6480, | ||
3174 | }, | ||
2924 | { PCI_VDEVICE(MARVELL, 0x6440), chip_6440 }, | 3175 | { PCI_VDEVICE(MARVELL, 0x6440), chip_6440 }, |
2925 | { PCI_VDEVICE(MARVELL, 0x6480), chip_6480 }, | 3176 | { PCI_VDEVICE(MARVELL, 0x6480), chip_6480 }, |
2926 | 3177 | ||
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c index e5c6f6af8765..c78b836f59dd 100644 --- a/drivers/scsi/scsi.c +++ b/drivers/scsi/scsi.c | |||
@@ -181,6 +181,18 @@ struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask) | |||
181 | cmd = kmem_cache_alloc(shost->cmd_pool->cmd_slab, | 181 | cmd = kmem_cache_alloc(shost->cmd_pool->cmd_slab, |
182 | gfp_mask | shost->cmd_pool->gfp_mask); | 182 | gfp_mask | shost->cmd_pool->gfp_mask); |
183 | 183 | ||
184 | if (likely(cmd)) { | ||
185 | buf = kmem_cache_alloc(shost->cmd_pool->sense_slab, | ||
186 | gfp_mask | shost->cmd_pool->gfp_mask); | ||
187 | if (likely(buf)) { | ||
188 | memset(cmd, 0, sizeof(*cmd)); | ||
189 | cmd->sense_buffer = buf; | ||
190 | } else { | ||
191 | kmem_cache_free(shost->cmd_pool->cmd_slab, cmd); | ||
192 | cmd = NULL; | ||
193 | } | ||
194 | } | ||
195 | |||
184 | if (unlikely(!cmd)) { | 196 | if (unlikely(!cmd)) { |
185 | unsigned long flags; | 197 | unsigned long flags; |
186 | 198 | ||
@@ -197,16 +209,6 @@ struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *shost, gfp_t gfp_mask) | |||
197 | memset(cmd, 0, sizeof(*cmd)); | 209 | memset(cmd, 0, sizeof(*cmd)); |
198 | cmd->sense_buffer = buf; | 210 | cmd->sense_buffer = buf; |
199 | } | 211 | } |
200 | } else { | ||
201 | buf = kmem_cache_alloc(shost->cmd_pool->sense_slab, | ||
202 | gfp_mask | shost->cmd_pool->gfp_mask); | ||
203 | if (likely(buf)) { | ||
204 | memset(cmd, 0, sizeof(*cmd)); | ||
205 | cmd->sense_buffer = buf; | ||
206 | } else { | ||
207 | kmem_cache_free(shost->cmd_pool->cmd_slab, cmd); | ||
208 | cmd = NULL; | ||
209 | } | ||
210 | } | 212 | } |
211 | 213 | ||
212 | return cmd; | 214 | return cmd; |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index b9b09a704584..ed83cdb6e67d 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -294,7 +294,6 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work) | |||
294 | } | 294 | } |
295 | 295 | ||
296 | if (sdev->request_queue) { | 296 | if (sdev->request_queue) { |
297 | bsg_unregister_queue(sdev->request_queue); | ||
298 | sdev->request_queue->queuedata = NULL; | 297 | sdev->request_queue->queuedata = NULL; |
299 | /* user context needed to free queue */ | 298 | /* user context needed to free queue */ |
300 | scsi_free_queue(sdev->request_queue); | 299 | scsi_free_queue(sdev->request_queue); |
@@ -858,6 +857,7 @@ void __scsi_remove_device(struct scsi_device *sdev) | |||
858 | if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) | 857 | if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) |
859 | return; | 858 | return; |
860 | 859 | ||
860 | bsg_unregister_queue(sdev->request_queue); | ||
861 | class_device_unregister(&sdev->sdev_classdev); | 861 | class_device_unregister(&sdev->sdev_classdev); |
862 | transport_remove_device(dev); | 862 | transport_remove_device(dev); |
863 | device_del(dev); | 863 | device_del(dev); |
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index a8bec498cad6..f97224ce59da 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -1214,13 +1214,6 @@ static struct pciserial_board pci_boards[] __devinitdata = { | |||
1214 | .base_baud = 115200, | 1214 | .base_baud = 115200, |
1215 | .uart_offset = 8, | 1215 | .uart_offset = 8, |
1216 | }, | 1216 | }, |
1217 | [pbn_b0_8_115200] = { | ||
1218 | .flags = FL_BASE0, | ||
1219 | .num_ports = 8, | ||
1220 | .base_baud = 115200, | ||
1221 | .uart_offset = 8, | ||
1222 | }, | ||
1223 | |||
1224 | [pbn_b0_1_921600] = { | 1217 | [pbn_b0_1_921600] = { |
1225 | .flags = FL_BASE0, | 1218 | .flags = FL_BASE0, |
1226 | .num_ports = 1, | 1219 | .num_ports = 1, |
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index d57bf3e708d8..430997e33fc4 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
@@ -96,6 +96,7 @@ | |||
96 | 96 | ||
97 | /* PDC registers */ | 97 | /* PDC registers */ |
98 | #define UART_PUT_PTCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_PTCR) | 98 | #define UART_PUT_PTCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_PTCR) |
99 | #define UART_GET_TCR(port) __raw_readl((port)->membase + ATMEL_PDC_TCR) | ||
99 | #define UART_GET_PTSR(port) __raw_readl((port)->membase + ATMEL_PDC_PTSR) | 100 | #define UART_GET_PTSR(port) __raw_readl((port)->membase + ATMEL_PDC_PTSR) |
100 | 101 | ||
101 | #define UART_PUT_RPR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_RPR) | 102 | #define UART_PUT_RPR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_RPR) |
@@ -106,6 +107,7 @@ | |||
106 | 107 | ||
107 | #define UART_PUT_TPR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_TPR) | 108 | #define UART_PUT_TPR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_TPR) |
108 | #define UART_PUT_TCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_TCR) | 109 | #define UART_PUT_TCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_TCR) |
110 | #define UART_GET_TCR(port) __raw_readl((port)->membase + ATMEL_PDC_TCR) | ||
109 | 111 | ||
110 | static int (*atmel_open_hook)(struct uart_port *); | 112 | static int (*atmel_open_hook)(struct uart_port *); |
111 | static void (*atmel_close_hook)(struct uart_port *); | 113 | static void (*atmel_close_hook)(struct uart_port *); |
@@ -562,17 +564,22 @@ static void atmel_tx_dma(struct uart_port *port) | |||
562 | struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; | 564 | struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx; |
563 | int count; | 565 | int count; |
564 | 566 | ||
567 | /* nothing left to transmit? */ | ||
568 | if (UART_GET_TCR(port)) | ||
569 | return; | ||
570 | |||
565 | xmit->tail += pdc->ofs; | 571 | xmit->tail += pdc->ofs; |
566 | xmit->tail &= UART_XMIT_SIZE - 1; | 572 | xmit->tail &= UART_XMIT_SIZE - 1; |
567 | 573 | ||
568 | port->icount.tx += pdc->ofs; | 574 | port->icount.tx += pdc->ofs; |
569 | pdc->ofs = 0; | 575 | pdc->ofs = 0; |
570 | 576 | ||
571 | if (!uart_circ_empty(xmit)) { | 577 | /* more to transmit - setup next transfer */ |
572 | /* more to transmit - setup next transfer */ | ||
573 | 578 | ||
574 | /* disable PDC transmit */ | 579 | /* disable PDC transmit */ |
575 | UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); | 580 | UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); |
581 | |||
582 | if (!uart_circ_empty(xmit)) { | ||
576 | dma_sync_single_for_device(port->dev, | 583 | dma_sync_single_for_device(port->dev, |
577 | pdc->dma_addr, | 584 | pdc->dma_addr, |
578 | pdc->dma_size, | 585 | pdc->dma_size, |
@@ -586,11 +593,6 @@ static void atmel_tx_dma(struct uart_port *port) | |||
586 | /* re-enable PDC transmit and interrupts */ | 593 | /* re-enable PDC transmit and interrupts */ |
587 | UART_PUT_PTCR(port, ATMEL_PDC_TXTEN); | 594 | UART_PUT_PTCR(port, ATMEL_PDC_TXTEN); |
588 | UART_PUT_IER(port, ATMEL_US_ENDTX | ATMEL_US_TXBUFE); | 595 | UART_PUT_IER(port, ATMEL_US_ENDTX | ATMEL_US_TXBUFE); |
589 | } else { | ||
590 | /* nothing left to transmit - disable the transmitter */ | ||
591 | |||
592 | /* disable PDC transmit */ | ||
593 | UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); | ||
594 | } | 596 | } |
595 | 597 | ||
596 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) | 598 | if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) |
@@ -1274,6 +1276,7 @@ static void atmel_console_write(struct console *co, const char *s, u_int count) | |||
1274 | { | 1276 | { |
1275 | struct uart_port *port = &atmel_ports[co->index].uart; | 1277 | struct uart_port *port = &atmel_ports[co->index].uart; |
1276 | unsigned int status, imr; | 1278 | unsigned int status, imr; |
1279 | unsigned int pdc_tx; | ||
1277 | 1280 | ||
1278 | /* | 1281 | /* |
1279 | * First, save IMR and then disable interrupts | 1282 | * First, save IMR and then disable interrupts |
@@ -1281,6 +1284,10 @@ static void atmel_console_write(struct console *co, const char *s, u_int count) | |||
1281 | imr = UART_GET_IMR(port); | 1284 | imr = UART_GET_IMR(port); |
1282 | UART_PUT_IDR(port, ATMEL_US_RXRDY | ATMEL_US_TXRDY); | 1285 | UART_PUT_IDR(port, ATMEL_US_RXRDY | ATMEL_US_TXRDY); |
1283 | 1286 | ||
1287 | /* Store PDC transmit status and disable it */ | ||
1288 | pdc_tx = UART_GET_PTSR(port) & ATMEL_PDC_TXTEN; | ||
1289 | UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS); | ||
1290 | |||
1284 | uart_console_write(port, s, count, atmel_console_putchar); | 1291 | uart_console_write(port, s, count, atmel_console_putchar); |
1285 | 1292 | ||
1286 | /* | 1293 | /* |
@@ -1290,6 +1297,11 @@ static void atmel_console_write(struct console *co, const char *s, u_int count) | |||
1290 | do { | 1297 | do { |
1291 | status = UART_GET_CSR(port); | 1298 | status = UART_GET_CSR(port); |
1292 | } while (!(status & ATMEL_US_TXRDY)); | 1299 | } while (!(status & ATMEL_US_TXRDY)); |
1300 | |||
1301 | /* Restore PDC transmit status */ | ||
1302 | if (pdc_tx) | ||
1303 | UART_PUT_PTCR(port, ATMEL_PDC_TXTEN); | ||
1304 | |||
1293 | /* set interrupts back the way they were */ | 1305 | /* set interrupts back the way they were */ |
1294 | UART_PUT_IER(port, imr); | 1306 | UART_PUT_IER(port, imr); |
1295 | } | 1307 | } |
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c index 85687aaf9cab..1749a27be066 100644 --- a/drivers/spi/atmel_spi.c +++ b/drivers/spi/atmel_spi.c | |||
@@ -863,3 +863,4 @@ module_exit(atmel_spi_exit); | |||
863 | MODULE_DESCRIPTION("Atmel AT32/AT91 SPI Controller driver"); | 863 | MODULE_DESCRIPTION("Atmel AT32/AT91 SPI Controller driver"); |
864 | MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>"); | 864 | MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>"); |
865 | MODULE_LICENSE("GPL"); | 865 | MODULE_LICENSE("GPL"); |
866 | MODULE_ALIAS("platform:atmel_spi"); | ||
diff --git a/drivers/spi/au1550_spi.c b/drivers/spi/au1550_spi.c index 41a3d00c4515..072c4a595334 100644 --- a/drivers/spi/au1550_spi.c +++ b/drivers/spi/au1550_spi.c | |||
@@ -958,6 +958,9 @@ static int __exit au1550_spi_remove(struct platform_device *pdev) | |||
958 | return 0; | 958 | return 0; |
959 | } | 959 | } |
960 | 960 | ||
961 | /* work with hotplug and coldplug */ | ||
962 | MODULE_ALIAS("platform:au1550-spi"); | ||
963 | |||
961 | static struct platform_driver au1550_spi_drv = { | 964 | static struct platform_driver au1550_spi_drv = { |
962 | .remove = __exit_p(au1550_spi_remove), | 965 | .remove = __exit_p(au1550_spi_remove), |
963 | .driver = { | 966 | .driver = { |
diff --git a/drivers/spi/mpc52xx_psc_spi.c b/drivers/spi/mpc52xx_psc_spi.c index a86315a0c5b8..90729469d481 100644 --- a/drivers/spi/mpc52xx_psc_spi.c +++ b/drivers/spi/mpc52xx_psc_spi.c | |||
@@ -500,6 +500,9 @@ static int __exit mpc52xx_psc_spi_remove(struct platform_device *dev) | |||
500 | return mpc52xx_psc_spi_do_remove(&dev->dev); | 500 | return mpc52xx_psc_spi_do_remove(&dev->dev); |
501 | } | 501 | } |
502 | 502 | ||
503 | /* work with hotplug and coldplug */ | ||
504 | MODULE_ALIAS("platform:mpc52xx-psc-spi"); | ||
505 | |||
503 | static struct platform_driver mpc52xx_psc_spi_platform_driver = { | 506 | static struct platform_driver mpc52xx_psc_spi_platform_driver = { |
504 | .remove = __exit_p(mpc52xx_psc_spi_remove), | 507 | .remove = __exit_p(mpc52xx_psc_spi_remove), |
505 | .driver = { | 508 | .driver = { |
diff --git a/drivers/spi/omap2_mcspi.c b/drivers/spi/omap2_mcspi.c index a6ba11afb03f..b1cc148036c1 100644 --- a/drivers/spi/omap2_mcspi.c +++ b/drivers/spi/omap2_mcspi.c | |||
@@ -1084,6 +1084,9 @@ static int __exit omap2_mcspi_remove(struct platform_device *pdev) | |||
1084 | return 0; | 1084 | return 0; |
1085 | } | 1085 | } |
1086 | 1086 | ||
1087 | /* work with hotplug and coldplug */ | ||
1088 | MODULE_ALIAS("platform:omap2_mcspi"); | ||
1089 | |||
1087 | static struct platform_driver omap2_mcspi_driver = { | 1090 | static struct platform_driver omap2_mcspi_driver = { |
1088 | .driver = { | 1091 | .driver = { |
1089 | .name = "omap2_mcspi", | 1092 | .name = "omap2_mcspi", |
diff --git a/drivers/spi/omap_uwire.c b/drivers/spi/omap_uwire.c index 8245b5153f30..5f00bd6500ef 100644 --- a/drivers/spi/omap_uwire.c +++ b/drivers/spi/omap_uwire.c | |||
@@ -537,10 +537,12 @@ static int __exit uwire_remove(struct platform_device *pdev) | |||
537 | return status; | 537 | return status; |
538 | } | 538 | } |
539 | 539 | ||
540 | /* work with hotplug and coldplug */ | ||
541 | MODULE_ALIAS("platform:omap_uwire"); | ||
542 | |||
540 | static struct platform_driver uwire_driver = { | 543 | static struct platform_driver uwire_driver = { |
541 | .driver = { | 544 | .driver = { |
542 | .name = "omap_uwire", | 545 | .name = "omap_uwire", |
543 | .bus = &platform_bus_type, | ||
544 | .owner = THIS_MODULE, | 546 | .owner = THIS_MODULE, |
545 | }, | 547 | }, |
546 | .remove = __exit_p(uwire_remove), | 548 | .remove = __exit_p(uwire_remove), |
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c index 59deed79e0ab..147e26a78d64 100644 --- a/drivers/spi/pxa2xx_spi.c +++ b/drivers/spi/pxa2xx_spi.c | |||
@@ -44,6 +44,7 @@ | |||
44 | MODULE_AUTHOR("Stephen Street"); | 44 | MODULE_AUTHOR("Stephen Street"); |
45 | MODULE_DESCRIPTION("PXA2xx SSP SPI Controller"); | 45 | MODULE_DESCRIPTION("PXA2xx SSP SPI Controller"); |
46 | MODULE_LICENSE("GPL"); | 46 | MODULE_LICENSE("GPL"); |
47 | MODULE_ALIAS("platform:pxa2xx-spi"); | ||
47 | 48 | ||
48 | #define MAX_BUSES 3 | 49 | #define MAX_BUSES 3 |
49 | 50 | ||
@@ -1581,7 +1582,6 @@ static int pxa2xx_spi_resume(struct platform_device *pdev) | |||
1581 | static struct platform_driver driver = { | 1582 | static struct platform_driver driver = { |
1582 | .driver = { | 1583 | .driver = { |
1583 | .name = "pxa2xx-spi", | 1584 | .name = "pxa2xx-spi", |
1584 | .bus = &platform_bus_type, | ||
1585 | .owner = THIS_MODULE, | 1585 | .owner = THIS_MODULE, |
1586 | }, | 1586 | }, |
1587 | .remove = pxa2xx_spi_remove, | 1587 | .remove = pxa2xx_spi_remove, |
diff --git a/drivers/spi/spi_bfin5xx.c b/drivers/spi/spi_bfin5xx.c index d853fceb6bf0..a9ac1fdb3094 100644 --- a/drivers/spi/spi_bfin5xx.c +++ b/drivers/spi/spi_bfin5xx.c | |||
@@ -713,8 +713,8 @@ static void pump_transfers(unsigned long data) | |||
713 | } else { | 713 | } else { |
714 | drv_data->len = transfer->len; | 714 | drv_data->len = transfer->len; |
715 | } | 715 | } |
716 | dev_dbg(&drv_data->pdev->dev, "transfer: ", | 716 | dev_dbg(&drv_data->pdev->dev, |
717 | "drv_data->write is %p, chip->write is %p, null_wr is %p\n", | 717 | "transfer: drv_data->write is %p, chip->write is %p, null_wr is %p\n", |
718 | drv_data->write, chip->write, null_writer); | 718 | drv_data->write, chip->write, null_writer); |
719 | 719 | ||
720 | /* speed and width has been set on per message */ | 720 | /* speed and width has been set on per message */ |
@@ -1294,6 +1294,12 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev) | |||
1294 | goto out_error_queue_alloc; | 1294 | goto out_error_queue_alloc; |
1295 | } | 1295 | } |
1296 | 1296 | ||
1297 | status = peripheral_request_list(drv_data->pin_req, DRV_NAME); | ||
1298 | if (status != 0) { | ||
1299 | dev_err(&pdev->dev, ": Requesting Peripherals failed\n"); | ||
1300 | goto out_error_queue_alloc; | ||
1301 | } | ||
1302 | |||
1297 | /* Register with the SPI framework */ | 1303 | /* Register with the SPI framework */ |
1298 | platform_set_drvdata(pdev, drv_data); | 1304 | platform_set_drvdata(pdev, drv_data); |
1299 | status = spi_register_master(master); | 1305 | status = spi_register_master(master); |
@@ -1302,12 +1308,6 @@ static int __init bfin5xx_spi_probe(struct platform_device *pdev) | |||
1302 | goto out_error_queue_alloc; | 1308 | goto out_error_queue_alloc; |
1303 | } | 1309 | } |
1304 | 1310 | ||
1305 | status = peripheral_request_list(drv_data->pin_req, DRV_NAME); | ||
1306 | if (status != 0) { | ||
1307 | dev_err(&pdev->dev, ": Requesting Peripherals failed\n"); | ||
1308 | goto out_error; | ||
1309 | } | ||
1310 | |||
1311 | dev_info(dev, "%s, Version %s, regs_base@%p, dma channel@%d\n", | 1311 | dev_info(dev, "%s, Version %s, regs_base@%p, dma channel@%d\n", |
1312 | DRV_DESC, DRV_VERSION, drv_data->regs_base, | 1312 | DRV_DESC, DRV_VERSION, drv_data->regs_base, |
1313 | drv_data->dma_channel); | 1313 | drv_data->dma_channel); |
@@ -1319,7 +1319,6 @@ out_error_no_dma_ch: | |||
1319 | iounmap((void *) drv_data->regs_base); | 1319 | iounmap((void *) drv_data->regs_base); |
1320 | out_error_ioremap: | 1320 | out_error_ioremap: |
1321 | out_error_get_res: | 1321 | out_error_get_res: |
1322 | out_error: | ||
1323 | spi_master_put(master); | 1322 | spi_master_put(master); |
1324 | 1323 | ||
1325 | return status; | 1324 | return status; |
@@ -1397,7 +1396,7 @@ static int bfin5xx_spi_resume(struct platform_device *pdev) | |||
1397 | #define bfin5xx_spi_resume NULL | 1396 | #define bfin5xx_spi_resume NULL |
1398 | #endif /* CONFIG_PM */ | 1397 | #endif /* CONFIG_PM */ |
1399 | 1398 | ||
1400 | MODULE_ALIAS("bfin-spi-master"); /* for platform bus hotplug */ | 1399 | MODULE_ALIAS("platform:bfin-spi"); |
1401 | static struct platform_driver bfin5xx_spi_driver = { | 1400 | static struct platform_driver bfin5xx_spi_driver = { |
1402 | .driver = { | 1401 | .driver = { |
1403 | .name = DRV_NAME, | 1402 | .name = DRV_NAME, |
diff --git a/drivers/spi/spi_imx.c b/drivers/spi/spi_imx.c index 1b0647124933..d4ba640366b6 100644 --- a/drivers/spi/spi_imx.c +++ b/drivers/spi/spi_imx.c | |||
@@ -1722,10 +1722,12 @@ static int spi_imx_resume(struct platform_device *pdev) | |||
1722 | #define spi_imx_resume NULL | 1722 | #define spi_imx_resume NULL |
1723 | #endif /* CONFIG_PM */ | 1723 | #endif /* CONFIG_PM */ |
1724 | 1724 | ||
1725 | /* work with hotplug and coldplug */ | ||
1726 | MODULE_ALIAS("platform:spi_imx"); | ||
1727 | |||
1725 | static struct platform_driver driver = { | 1728 | static struct platform_driver driver = { |
1726 | .driver = { | 1729 | .driver = { |
1727 | .name = "spi_imx", | 1730 | .name = "spi_imx", |
1728 | .bus = &platform_bus_type, | ||
1729 | .owner = THIS_MODULE, | 1731 | .owner = THIS_MODULE, |
1730 | }, | 1732 | }, |
1731 | .remove = __exit_p(spi_imx_remove), | 1733 | .remove = __exit_p(spi_imx_remove), |
diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c index 04f7cd9fc261..be15a6213205 100644 --- a/drivers/spi/spi_mpc83xx.c +++ b/drivers/spi/spi_mpc83xx.c | |||
@@ -523,11 +523,12 @@ static int __exit mpc83xx_spi_remove(struct platform_device *dev) | |||
523 | return 0; | 523 | return 0; |
524 | } | 524 | } |
525 | 525 | ||
526 | MODULE_ALIAS("mpc83xx_spi"); /* for platform bus hotplug */ | 526 | MODULE_ALIAS("platform:mpc83xx_spi"); |
527 | static struct platform_driver mpc83xx_spi_driver = { | 527 | static struct platform_driver mpc83xx_spi_driver = { |
528 | .remove = __exit_p(mpc83xx_spi_remove), | 528 | .remove = __exit_p(mpc83xx_spi_remove), |
529 | .driver = { | 529 | .driver = { |
530 | .name = "mpc83xx_spi", | 530 | .name = "mpc83xx_spi", |
531 | .owner = THIS_MODULE, | ||
531 | }, | 532 | }, |
532 | }; | 533 | }; |
533 | 534 | ||
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c index 6e834b8b9d27..e75103aac790 100644 --- a/drivers/spi/spi_s3c24xx.c +++ b/drivers/spi/spi_s3c24xx.c | |||
@@ -415,7 +415,7 @@ static int s3c24xx_spi_resume(struct platform_device *pdev) | |||
415 | #define s3c24xx_spi_resume NULL | 415 | #define s3c24xx_spi_resume NULL |
416 | #endif | 416 | #endif |
417 | 417 | ||
418 | MODULE_ALIAS("s3c2410_spi"); /* for platform bus hotplug */ | 418 | MODULE_ALIAS("platform:s3c2410-spi"); |
419 | static struct platform_driver s3c24xx_spidrv = { | 419 | static struct platform_driver s3c24xx_spidrv = { |
420 | .remove = __exit_p(s3c24xx_spi_remove), | 420 | .remove = __exit_p(s3c24xx_spi_remove), |
421 | .suspend = s3c24xx_spi_suspend, | 421 | .suspend = s3c24xx_spi_suspend, |
diff --git a/drivers/spi/spi_s3c24xx_gpio.c b/drivers/spi/spi_s3c24xx_gpio.c index 82ae7d7eca38..e33f6145c560 100644 --- a/drivers/spi/spi_s3c24xx_gpio.c +++ b/drivers/spi/spi_s3c24xx_gpio.c | |||
@@ -168,6 +168,8 @@ static int s3c2410_spigpio_remove(struct platform_device *dev) | |||
168 | #define s3c2410_spigpio_suspend NULL | 168 | #define s3c2410_spigpio_suspend NULL |
169 | #define s3c2410_spigpio_resume NULL | 169 | #define s3c2410_spigpio_resume NULL |
170 | 170 | ||
171 | /* work with hotplug and coldplug */ | ||
172 | MODULE_ALIAS("platform:spi_s3c24xx_gpio"); | ||
171 | 173 | ||
172 | static struct platform_driver s3c2410_spigpio_drv = { | 174 | static struct platform_driver s3c2410_spigpio_drv = { |
173 | .probe = s3c2410_spigpio_probe, | 175 | .probe = s3c2410_spigpio_probe, |
diff --git a/drivers/spi/spi_sh_sci.c b/drivers/spi/spi_sh_sci.c index 3dbe71b16d60..7d36720eb982 100644 --- a/drivers/spi/spi_sh_sci.c +++ b/drivers/spi/spi_sh_sci.c | |||
@@ -203,3 +203,4 @@ module_exit(sh_sci_spi_exit); | |||
203 | MODULE_DESCRIPTION("SH SCI SPI Driver"); | 203 | MODULE_DESCRIPTION("SH SCI SPI Driver"); |
204 | MODULE_AUTHOR("Magnus Damm <damm@opensource.se>"); | 204 | MODULE_AUTHOR("Magnus Damm <damm@opensource.se>"); |
205 | MODULE_LICENSE("GPL"); | 205 | MODULE_LICENSE("GPL"); |
206 | MODULE_ALIAS("platform:spi_sh_sci"); | ||
diff --git a/drivers/spi/spi_txx9.c b/drivers/spi/spi_txx9.c index 363ac8e68821..2296f37ea3c6 100644 --- a/drivers/spi/spi_txx9.c +++ b/drivers/spi/spi_txx9.c | |||
@@ -450,6 +450,9 @@ static int __exit txx9spi_remove(struct platform_device *dev) | |||
450 | return 0; | 450 | return 0; |
451 | } | 451 | } |
452 | 452 | ||
453 | /* work with hotplug and coldplug */ | ||
454 | MODULE_ALIAS("platform:spi_txx9"); | ||
455 | |||
453 | static struct platform_driver txx9spi_driver = { | 456 | static struct platform_driver txx9spi_driver = { |
454 | .remove = __exit_p(txx9spi_remove), | 457 | .remove = __exit_p(txx9spi_remove), |
455 | .driver = { | 458 | .driver = { |
diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c index 5d04f520c123..cf6aef34fe25 100644 --- a/drivers/spi/xilinx_spi.c +++ b/drivers/spi/xilinx_spi.c | |||
@@ -408,6 +408,9 @@ static int __devexit xilinx_spi_remove(struct platform_device *dev) | |||
408 | return 0; | 408 | return 0; |
409 | } | 409 | } |
410 | 410 | ||
411 | /* work with hotplug and coldplug */ | ||
412 | MODULE_ALIAS("platform:" XILINX_SPI_NAME); | ||
413 | |||
411 | static struct platform_driver xilinx_spi_driver = { | 414 | static struct platform_driver xilinx_spi_driver = { |
412 | .probe = xilinx_spi_probe, | 415 | .probe = xilinx_spi_probe, |
413 | .remove = __devexit_p(xilinx_spi_remove), | 416 | .remove = __devexit_p(xilinx_spi_remove), |
diff --git a/drivers/ssb/driver_mipscore.c b/drivers/ssb/driver_mipscore.c index 3d3dd32bf3ab..a9e7eb45b2e7 100644 --- a/drivers/ssb/driver_mipscore.c +++ b/drivers/ssb/driver_mipscore.c | |||
@@ -109,12 +109,13 @@ static void set_irq(struct ssb_device *dev, unsigned int irq) | |||
109 | clear_irq(bus, oldirq); | 109 | clear_irq(bus, oldirq); |
110 | 110 | ||
111 | /* assign the new one */ | 111 | /* assign the new one */ |
112 | if (irq == 0) | 112 | if (irq == 0) { |
113 | ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) & ssb_read32(mdev, SSB_INTVEC))); | 113 | ssb_write32(mdev, SSB_INTVEC, ((1 << irqflag) | ssb_read32(mdev, SSB_INTVEC))); |
114 | 114 | } else { | |
115 | irqflag <<= ipsflag_irq_shift[irq]; | 115 | irqflag <<= ipsflag_irq_shift[irq]; |
116 | irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]); | 116 | irqflag |= (ssb_read32(mdev, SSB_IPSFLAG) & ~ipsflag_irq_mask[irq]); |
117 | ssb_write32(mdev, SSB_IPSFLAG, irqflag); | 117 | ssb_write32(mdev, SSB_IPSFLAG, irqflag); |
118 | } | ||
118 | } | 119 | } |
119 | 120 | ||
120 | static void ssb_mips_serial_init(struct ssb_mipscore *mcore) | 121 | static void ssb_mips_serial_init(struct ssb_mipscore *mcore) |
diff --git a/drivers/ssb/driver_pcicore.c b/drivers/ssb/driver_pcicore.c index 74b9a8aea52b..5d777f211699 100644 --- a/drivers/ssb/driver_pcicore.c +++ b/drivers/ssb/driver_pcicore.c | |||
@@ -551,7 +551,7 @@ int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc, | |||
551 | } else { | 551 | } else { |
552 | tmp = ssb_read32(dev, SSB_TPSFLAG); | 552 | tmp = ssb_read32(dev, SSB_TPSFLAG); |
553 | tmp &= SSB_TPSFLAG_BPFLAG; | 553 | tmp &= SSB_TPSFLAG_BPFLAG; |
554 | intvec |= tmp; | 554 | intvec |= (1 << tmp); |
555 | } | 555 | } |
556 | ssb_write32(pdev, SSB_INTVEC, intvec); | 556 | ssb_write32(pdev, SSB_INTVEC, intvec); |
557 | } | 557 | } |
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index bedb2b4ee9d2..72017bf2e577 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c | |||
@@ -1044,6 +1044,12 @@ int ssb_bus_may_powerdown(struct ssb_bus *bus) | |||
1044 | goto out; | 1044 | goto out; |
1045 | 1045 | ||
1046 | cc = &bus->chipco; | 1046 | cc = &bus->chipco; |
1047 | |||
1048 | if (!cc->dev) | ||
1049 | goto out; | ||
1050 | if (cc->dev->id.revision < 5) | ||
1051 | goto out; | ||
1052 | |||
1047 | ssb_chipco_set_clockmode(cc, SSB_CLKMODE_SLOW); | 1053 | ssb_chipco_set_clockmode(cc, SSB_CLKMODE_SLOW); |
1048 | err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); | 1054 | err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); |
1049 | if (err) | 1055 | if (err) |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index a83e8b798ec9..fd15ced899d8 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
@@ -1884,3 +1884,4 @@ module_exit(udc_exit_module); | |||
1884 | MODULE_DESCRIPTION("AT91 udc driver"); | 1884 | MODULE_DESCRIPTION("AT91 udc driver"); |
1885 | MODULE_AUTHOR("Thomas Rathbone, David Brownell"); | 1885 | MODULE_AUTHOR("Thomas Rathbone, David Brownell"); |
1886 | MODULE_LICENSE("GPL"); | 1886 | MODULE_LICENSE("GPL"); |
1887 | MODULE_ALIAS("platform:at91_udc"); | ||
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index af8b2a3a2d4a..b0db4c31d018 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c | |||
@@ -2054,6 +2054,7 @@ static struct platform_driver udc_driver = { | |||
2054 | .remove = __exit_p(usba_udc_remove), | 2054 | .remove = __exit_p(usba_udc_remove), |
2055 | .driver = { | 2055 | .driver = { |
2056 | .name = "atmel_usba_udc", | 2056 | .name = "atmel_usba_udc", |
2057 | .owner = THIS_MODULE, | ||
2057 | }, | 2058 | }, |
2058 | }; | 2059 | }; |
2059 | 2060 | ||
@@ -2072,3 +2073,4 @@ module_exit(udc_exit); | |||
2072 | MODULE_DESCRIPTION("Atmel USBA UDC driver"); | 2073 | MODULE_DESCRIPTION("Atmel USBA UDC driver"); |
2073 | MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>"); | 2074 | MODULE_AUTHOR("Haavard Skinnemoen <hskinnemoen@atmel.com>"); |
2074 | MODULE_LICENSE("GPL"); | 2075 | MODULE_LICENSE("GPL"); |
2076 | MODULE_ALIAS("platform:atmel_usba_udc"); | ||
diff --git a/drivers/usb/gadget/fsl_usb2_udc.c b/drivers/usb/gadget/fsl_usb2_udc.c index 63e8fa3a69e1..254012ad2b91 100644 --- a/drivers/usb/gadget/fsl_usb2_udc.c +++ b/drivers/usb/gadget/fsl_usb2_udc.c | |||
@@ -2475,3 +2475,4 @@ module_exit(udc_exit); | |||
2475 | MODULE_DESCRIPTION(DRIVER_DESC); | 2475 | MODULE_DESCRIPTION(DRIVER_DESC); |
2476 | MODULE_AUTHOR(DRIVER_AUTHOR); | 2476 | MODULE_AUTHOR(DRIVER_AUTHOR); |
2477 | MODULE_LICENSE("GPL"); | 2477 | MODULE_LICENSE("GPL"); |
2478 | MODULE_ALIAS("platform:fsl-usb2-udc"); | ||
diff --git a/drivers/usb/gadget/lh7a40x_udc.c b/drivers/usb/gadget/lh7a40x_udc.c index 37243ef7104e..078f72467671 100644 --- a/drivers/usb/gadget/lh7a40x_udc.c +++ b/drivers/usb/gadget/lh7a40x_udc.c | |||
@@ -2146,3 +2146,4 @@ module_exit(udc_exit); | |||
2146 | MODULE_DESCRIPTION(DRIVER_DESC); | 2146 | MODULE_DESCRIPTION(DRIVER_DESC); |
2147 | MODULE_AUTHOR("Mikko Lahteenmaki, Bo Henriksen"); | 2147 | MODULE_AUTHOR("Mikko Lahteenmaki, Bo Henriksen"); |
2148 | MODULE_LICENSE("GPL"); | 2148 | MODULE_LICENSE("GPL"); |
2149 | MODULE_ALIAS("platform:lh7a40x_udc"); | ||
diff --git a/drivers/usb/gadget/m66592-udc.c b/drivers/usb/gadget/m66592-udc.c index 835948f0715a..ee6b35fa870f 100644 --- a/drivers/usb/gadget/m66592-udc.c +++ b/drivers/usb/gadget/m66592-udc.c | |||
@@ -35,6 +35,7 @@ | |||
35 | MODULE_DESCRIPTION("M66592 USB gadget driver"); | 35 | MODULE_DESCRIPTION("M66592 USB gadget driver"); |
36 | MODULE_LICENSE("GPL"); | 36 | MODULE_LICENSE("GPL"); |
37 | MODULE_AUTHOR("Yoshihiro Shimoda"); | 37 | MODULE_AUTHOR("Yoshihiro Shimoda"); |
38 | MODULE_ALIAS("platform:m66592_udc"); | ||
38 | 39 | ||
39 | #define DRIVER_VERSION "18 Oct 2007" | 40 | #define DRIVER_VERSION "18 Oct 2007" |
40 | 41 | ||
@@ -1671,6 +1672,7 @@ static struct platform_driver m66592_driver = { | |||
1671 | .remove = __exit_p(m66592_remove), | 1672 | .remove = __exit_p(m66592_remove), |
1672 | .driver = { | 1673 | .driver = { |
1673 | .name = (char *) udc_name, | 1674 | .name = (char *) udc_name, |
1675 | .owner = THIS_MODULE, | ||
1674 | }, | 1676 | }, |
1675 | }; | 1677 | }; |
1676 | 1678 | ||
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c index e6d68bda428a..ee1e9a314cd1 100644 --- a/drivers/usb/gadget/omap_udc.c +++ b/drivers/usb/gadget/omap_udc.c | |||
@@ -3109,4 +3109,4 @@ module_exit(udc_exit); | |||
3109 | 3109 | ||
3110 | MODULE_DESCRIPTION(DRIVER_DESC); | 3110 | MODULE_DESCRIPTION(DRIVER_DESC); |
3111 | MODULE_LICENSE("GPL"); | 3111 | MODULE_LICENSE("GPL"); |
3112 | 3112 | MODULE_ALIAS("platform:omap_udc"); | |
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c index 096c41cc40d1..c00cd8b9d3d1 100644 --- a/drivers/usb/gadget/pxa2xx_udc.c +++ b/drivers/usb/gadget/pxa2xx_udc.c | |||
@@ -2380,4 +2380,4 @@ module_exit(udc_exit); | |||
2380 | MODULE_DESCRIPTION(DRIVER_DESC); | 2380 | MODULE_DESCRIPTION(DRIVER_DESC); |
2381 | MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell"); | 2381 | MODULE_AUTHOR("Frank Becker, Robert Schwebel, David Brownell"); |
2382 | MODULE_LICENSE("GPL"); | 2382 | MODULE_LICENSE("GPL"); |
2383 | 2383 | MODULE_ALIAS("platform:pxa2xx-udc"); | |
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c index aadc4204d6f9..6b1ef488043b 100644 --- a/drivers/usb/gadget/s3c2410_udc.c +++ b/drivers/usb/gadget/s3c2410_udc.c | |||
@@ -2047,3 +2047,5 @@ MODULE_AUTHOR(DRIVER_AUTHOR); | |||
2047 | MODULE_DESCRIPTION(DRIVER_DESC); | 2047 | MODULE_DESCRIPTION(DRIVER_DESC); |
2048 | MODULE_VERSION(DRIVER_VERSION); | 2048 | MODULE_VERSION(DRIVER_VERSION); |
2049 | MODULE_LICENSE("GPL"); | 2049 | MODULE_LICENSE("GPL"); |
2050 | MODULE_ALIAS("platform:s3c2410-usbgadget"); | ||
2051 | MODULE_ALIAS("platform:s3c2440-usbgadget"); | ||
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 40e8240b7851..4e065e556e4b 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -135,8 +135,6 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) | |||
135 | hcd->state = HC_STATE_QUIESCING; | 135 | hcd->state = HC_STATE_QUIESCING; |
136 | } | 136 | } |
137 | ehci->command = ehci_readl(ehci, &ehci->regs->command); | 137 | ehci->command = ehci_readl(ehci, &ehci->regs->command); |
138 | if (ehci->reclaim) | ||
139 | end_unlink_async(ehci); | ||
140 | ehci_work(ehci); | 138 | ehci_work(ehci); |
141 | 139 | ||
142 | /* Unlike other USB host controller types, EHCI doesn't have | 140 | /* Unlike other USB host controller types, EHCI doesn't have |
@@ -180,6 +178,9 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) | |||
180 | ehci_halt (ehci); | 178 | ehci_halt (ehci); |
181 | hcd->state = HC_STATE_SUSPENDED; | 179 | hcd->state = HC_STATE_SUSPENDED; |
182 | 180 | ||
181 | if (ehci->reclaim) | ||
182 | end_unlink_async(ehci); | ||
183 | |||
183 | /* allow remote wakeup */ | 184 | /* allow remote wakeup */ |
184 | mask = INTR_MASK; | 185 | mask = INTR_MASK; |
185 | if (!device_may_wakeup(&hcd->self.root_hub->dev)) | 186 | if (!device_may_wakeup(&hcd->self.root_hub->dev)) |
diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index d7071c855758..203a3359a648 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c | |||
@@ -1684,14 +1684,18 @@ static int isp116x_resume(struct platform_device *dev) | |||
1684 | 1684 | ||
1685 | #endif | 1685 | #endif |
1686 | 1686 | ||
1687 | /* work with hotplug and coldplug */ | ||
1688 | MODULE_ALIAS("platform:isp116x-hcd"); | ||
1689 | |||
1687 | static struct platform_driver isp116x_driver = { | 1690 | static struct platform_driver isp116x_driver = { |
1688 | .probe = isp116x_probe, | 1691 | .probe = isp116x_probe, |
1689 | .remove = isp116x_remove, | 1692 | .remove = isp116x_remove, |
1690 | .suspend = isp116x_suspend, | 1693 | .suspend = isp116x_suspend, |
1691 | .resume = isp116x_resume, | 1694 | .resume = isp116x_resume, |
1692 | .driver = { | 1695 | .driver = { |
1693 | .name = (char *)hcd_name, | 1696 | .name = (char *)hcd_name, |
1694 | }, | 1697 | .owner = THIS_MODULE, |
1698 | }, | ||
1695 | }; | 1699 | }; |
1696 | 1700 | ||
1697 | /*-----------------------------------------------------------------*/ | 1701 | /*-----------------------------------------------------------------*/ |
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index 126fcbdd6408..d72dc07dda01 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c | |||
@@ -355,7 +355,7 @@ static int ohci_hcd_at91_drv_resume(struct platform_device *pdev) | |||
355 | #define ohci_hcd_at91_drv_resume NULL | 355 | #define ohci_hcd_at91_drv_resume NULL |
356 | #endif | 356 | #endif |
357 | 357 | ||
358 | MODULE_ALIAS("at91_ohci"); | 358 | MODULE_ALIAS("platform:at91_ohci"); |
359 | 359 | ||
360 | static struct platform_driver ohci_hcd_at91_driver = { | 360 | static struct platform_driver ohci_hcd_at91_driver = { |
361 | .probe = ohci_hcd_at91_drv_probe, | 361 | .probe = ohci_hcd_at91_drv_probe, |
@@ -368,4 +368,3 @@ static struct platform_driver ohci_hcd_at91_driver = { | |||
368 | .owner = THIS_MODULE, | 368 | .owner = THIS_MODULE, |
369 | }, | 369 | }, |
370 | }; | 370 | }; |
371 | |||
diff --git a/drivers/usb/host/ohci-au1xxx.c b/drivers/usb/host/ohci-au1xxx.c index 663a0600b6e7..f90fe0c7373f 100644 --- a/drivers/usb/host/ohci-au1xxx.c +++ b/drivers/usb/host/ohci-au1xxx.c | |||
@@ -345,3 +345,4 @@ static struct platform_driver ohci_hcd_au1xxx_driver = { | |||
345 | }, | 345 | }, |
346 | }; | 346 | }; |
347 | 347 | ||
348 | MODULE_ALIAS("platform:au1xxx-ohci"); | ||
diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c index a68ce9d3c525..156e93a9d0df 100644 --- a/drivers/usb/host/ohci-ep93xx.c +++ b/drivers/usb/host/ohci-ep93xx.c | |||
@@ -211,6 +211,8 @@ static struct platform_driver ohci_hcd_ep93xx_driver = { | |||
211 | #endif | 211 | #endif |
212 | .driver = { | 212 | .driver = { |
213 | .name = "ep93xx-ohci", | 213 | .name = "ep93xx-ohci", |
214 | .owner = THIS_MODULE, | ||
214 | }, | 215 | }, |
215 | }; | 216 | }; |
216 | 217 | ||
218 | MODULE_ALIAS("platform:ep93xx-ohci"); | ||
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index dd4798ee028e..33f1c1c32edf 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c | |||
@@ -467,7 +467,7 @@ static void unlink_watchdog_func(unsigned long _ohci) | |||
467 | out: | 467 | out: |
468 | kfree(seen); | 468 | kfree(seen); |
469 | if (ohci->eds_scheduled) | 469 | if (ohci->eds_scheduled) |
470 | mod_timer(&ohci->unlink_watchdog, round_jiffies_relative(HZ)); | 470 | mod_timer(&ohci->unlink_watchdog, round_jiffies(jiffies + HZ)); |
471 | done: | 471 | done: |
472 | spin_unlock_irqrestore(&ohci->lock, flags); | 472 | spin_unlock_irqrestore(&ohci->lock, flags); |
473 | } | 473 | } |
diff --git a/drivers/usb/host/ohci-lh7a404.c b/drivers/usb/host/ohci-lh7a404.c index 4a043abd85ea..13c12ed22252 100644 --- a/drivers/usb/host/ohci-lh7a404.c +++ b/drivers/usb/host/ohci-lh7a404.c | |||
@@ -251,3 +251,4 @@ static struct platform_driver ohci_hcd_lh7a404_driver = { | |||
251 | }, | 251 | }, |
252 | }; | 252 | }; |
253 | 253 | ||
254 | MODULE_ALIAS("platform:lh7a404-ohci"); | ||
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c index 74e1f4be10bb..7bfca1ed1b58 100644 --- a/drivers/usb/host/ohci-omap.c +++ b/drivers/usb/host/ohci-omap.c | |||
@@ -544,3 +544,4 @@ static struct platform_driver ohci_hcd_omap_driver = { | |||
544 | }, | 544 | }, |
545 | }; | 545 | }; |
546 | 546 | ||
547 | MODULE_ALIAS("platform:ohci"); | ||
diff --git a/drivers/usb/host/ohci-pnx4008.c b/drivers/usb/host/ohci-pnx4008.c index 6c52c66b659f..28b458f20cc3 100644 --- a/drivers/usb/host/ohci-pnx4008.c +++ b/drivers/usb/host/ohci-pnx4008.c | |||
@@ -456,9 +456,13 @@ static int usb_hcd_pnx4008_remove(struct platform_device *pdev) | |||
456 | return 0; | 456 | return 0; |
457 | } | 457 | } |
458 | 458 | ||
459 | /* work with hotplug and coldplug */ | ||
460 | MODULE_ALIAS("platform:usb-ohci"); | ||
461 | |||
459 | static struct platform_driver usb_hcd_pnx4008_driver = { | 462 | static struct platform_driver usb_hcd_pnx4008_driver = { |
460 | .driver = { | 463 | .driver = { |
461 | .name = "usb-ohci", | 464 | .name = "usb-ohci", |
465 | .owner = THIS_MODULE, | ||
462 | }, | 466 | }, |
463 | .probe = usb_hcd_pnx4008_probe, | 467 | .probe = usb_hcd_pnx4008_probe, |
464 | .remove = usb_hcd_pnx4008_remove, | 468 | .remove = usb_hcd_pnx4008_remove, |
diff --git a/drivers/usb/host/ohci-pnx8550.c b/drivers/usb/host/ohci-pnx8550.c index 85fdfd2a7ad0..605d59cba28e 100644 --- a/drivers/usb/host/ohci-pnx8550.c +++ b/drivers/usb/host/ohci-pnx8550.c | |||
@@ -230,11 +230,12 @@ static int ohci_hcd_pnx8550_drv_remove(struct platform_device *pdev) | |||
230 | return 0; | 230 | return 0; |
231 | } | 231 | } |
232 | 232 | ||
233 | MODULE_ALIAS("pnx8550-ohci"); | 233 | MODULE_ALIAS("platform:pnx8550-ohci"); |
234 | 234 | ||
235 | static struct platform_driver ohci_hcd_pnx8550_driver = { | 235 | static struct platform_driver ohci_hcd_pnx8550_driver = { |
236 | .driver = { | 236 | .driver = { |
237 | .name = "pnx8550-ohci", | 237 | .name = "pnx8550-ohci", |
238 | .owner = THIS_MODULE, | ||
238 | }, | 239 | }, |
239 | .probe = ohci_hcd_pnx8550_drv_probe, | 240 | .probe = ohci_hcd_pnx8550_drv_probe, |
240 | .remove = ohci_hcd_pnx8550_drv_remove, | 241 | .remove = ohci_hcd_pnx8550_drv_remove, |
diff --git a/drivers/usb/host/ohci-ppc-soc.c b/drivers/usb/host/ohci-ppc-soc.c index f95be1896b0d..523c30125577 100644 --- a/drivers/usb/host/ohci-ppc-soc.c +++ b/drivers/usb/host/ohci-ppc-soc.c | |||
@@ -213,3 +213,4 @@ static struct platform_driver ohci_hcd_ppc_soc_driver = { | |||
213 | }, | 213 | }, |
214 | }; | 214 | }; |
215 | 215 | ||
216 | MODULE_ALIAS("platform:ppc-soc-ohci"); | ||
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c index ff9a79843471..8ad9b3b604b5 100644 --- a/drivers/usb/host/ohci-pxa27x.c +++ b/drivers/usb/host/ohci-pxa27x.c | |||
@@ -364,6 +364,8 @@ static int ohci_hcd_pxa27x_drv_resume(struct platform_device *pdev) | |||
364 | } | 364 | } |
365 | #endif | 365 | #endif |
366 | 366 | ||
367 | /* work with hotplug and coldplug */ | ||
368 | MODULE_ALIAS("platform:pxa27x-ohci"); | ||
367 | 369 | ||
368 | static struct platform_driver ohci_hcd_pxa27x_driver = { | 370 | static struct platform_driver ohci_hcd_pxa27x_driver = { |
369 | .probe = ohci_hcd_pxa27x_drv_probe, | 371 | .probe = ohci_hcd_pxa27x_drv_probe, |
@@ -375,6 +377,7 @@ static struct platform_driver ohci_hcd_pxa27x_driver = { | |||
375 | #endif | 377 | #endif |
376 | .driver = { | 378 | .driver = { |
377 | .name = "pxa27x-ohci", | 379 | .name = "pxa27x-ohci", |
380 | .owner = THIS_MODULE, | ||
378 | }, | 381 | }, |
379 | }; | 382 | }; |
380 | 383 | ||
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c index 51817322232b..9c9f3b59186f 100644 --- a/drivers/usb/host/ohci-q.c +++ b/drivers/usb/host/ohci-q.c | |||
@@ -169,7 +169,7 @@ static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed) | |||
169 | if (quirk_zfmicro(ohci) | 169 | if (quirk_zfmicro(ohci) |
170 | && (ed->type == PIPE_INTERRUPT) | 170 | && (ed->type == PIPE_INTERRUPT) |
171 | && !(ohci->eds_scheduled++)) | 171 | && !(ohci->eds_scheduled++)) |
172 | mod_timer(&ohci->unlink_watchdog, round_jiffies_relative(HZ)); | 172 | mod_timer(&ohci->unlink_watchdog, round_jiffies(jiffies + HZ)); |
173 | wmb (); | 173 | wmb (); |
174 | 174 | ||
175 | /* we care about rm_list when setting CLE/BLE in case the HC was at | 175 | /* we care about rm_list when setting CLE/BLE in case the HC was at |
diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index 44b79e8a6e25..ead4772f0f27 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c | |||
@@ -501,3 +501,4 @@ static struct platform_driver ohci_hcd_s3c2410_driver = { | |||
501 | }, | 501 | }, |
502 | }; | 502 | }; |
503 | 503 | ||
504 | MODULE_ALIAS("platform:s3c2410-ohci"); | ||
diff --git a/drivers/usb/host/ohci-sh.c b/drivers/usb/host/ohci-sh.c index 5309ac039e15..e7ee607278fe 100644 --- a/drivers/usb/host/ohci-sh.c +++ b/drivers/usb/host/ohci-sh.c | |||
@@ -141,3 +141,4 @@ static struct platform_driver ohci_hcd_sh_driver = { | |||
141 | }, | 141 | }, |
142 | }; | 142 | }; |
143 | 143 | ||
144 | MODULE_ALIAS("platform:sh_ohci"); | ||
diff --git a/drivers/usb/host/ohci-sm501.c b/drivers/usb/host/ohci-sm501.c index a97070142869..4ea92762fb28 100644 --- a/drivers/usb/host/ohci-sm501.c +++ b/drivers/usb/host/ohci-sm501.c | |||
@@ -262,3 +262,4 @@ static struct platform_driver ohci_hcd_sm501_driver = { | |||
262 | .name = "sm501-usb", | 262 | .name = "sm501-usb", |
263 | }, | 263 | }, |
264 | }; | 264 | }; |
265 | MODULE_ALIAS("platform:sm501-usb"); | ||
diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c index 0ce2fc5e396b..9f80e5285575 100644 --- a/drivers/usb/host/r8a66597-hcd.c +++ b/drivers/usb/host/r8a66597-hcd.c | |||
@@ -44,6 +44,7 @@ | |||
44 | MODULE_DESCRIPTION("R8A66597 USB Host Controller Driver"); | 44 | MODULE_DESCRIPTION("R8A66597 USB Host Controller Driver"); |
45 | MODULE_LICENSE("GPL"); | 45 | MODULE_LICENSE("GPL"); |
46 | MODULE_AUTHOR("Yoshihiro Shimoda"); | 46 | MODULE_AUTHOR("Yoshihiro Shimoda"); |
47 | MODULE_ALIAS("platform:r8a66597_hcd"); | ||
47 | 48 | ||
48 | #define DRIVER_VERSION "29 May 2007" | 49 | #define DRIVER_VERSION "29 May 2007" |
49 | 50 | ||
@@ -2219,6 +2220,7 @@ static struct platform_driver r8a66597_driver = { | |||
2219 | .resume = r8a66597_resume, | 2220 | .resume = r8a66597_resume, |
2220 | .driver = { | 2221 | .driver = { |
2221 | .name = (char *) hcd_name, | 2222 | .name = (char *) hcd_name, |
2223 | .owner = THIS_MODULE, | ||
2222 | }, | 2224 | }, |
2223 | }; | 2225 | }; |
2224 | 2226 | ||
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c index 59be276ccd9d..629bca0ebe8f 100644 --- a/drivers/usb/host/sl811-hcd.c +++ b/drivers/usb/host/sl811-hcd.c | |||
@@ -58,6 +58,7 @@ | |||
58 | 58 | ||
59 | MODULE_DESCRIPTION("SL811HS USB Host Controller Driver"); | 59 | MODULE_DESCRIPTION("SL811HS USB Host Controller Driver"); |
60 | MODULE_LICENSE("GPL"); | 60 | MODULE_LICENSE("GPL"); |
61 | MODULE_ALIAS("platform:sl811-hcd"); | ||
61 | 62 | ||
62 | #define DRIVER_VERSION "19 May 2005" | 63 | #define DRIVER_VERSION "19 May 2005" |
63 | 64 | ||
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c index 3033d6945202..8e117a795e93 100644 --- a/drivers/usb/host/u132-hcd.c +++ b/drivers/usb/host/u132-hcd.c | |||
@@ -3316,3 +3316,4 @@ static void __exit u132_hcd_exit(void) | |||
3316 | 3316 | ||
3317 | module_exit(u132_hcd_exit); | 3317 | module_exit(u132_hcd_exit); |
3318 | MODULE_LICENSE("GPL"); | 3318 | MODULE_LICENSE("GPL"); |
3319 | MODULE_ALIAS("platform:u132_hcd"); | ||
diff --git a/drivers/usb/misc/usbtest.c b/drivers/usb/misc/usbtest.c index da922dfc0dcc..b6b5b2affad1 100644 --- a/drivers/usb/misc/usbtest.c +++ b/drivers/usb/misc/usbtest.c | |||
@@ -378,6 +378,7 @@ alloc_sglist (int nents, int max, int vary) | |||
378 | sg = kmalloc (nents * sizeof *sg, GFP_KERNEL); | 378 | sg = kmalloc (nents * sizeof *sg, GFP_KERNEL); |
379 | if (!sg) | 379 | if (!sg) |
380 | return NULL; | 380 | return NULL; |
381 | sg_init_table(sg, nents); | ||
381 | 382 | ||
382 | for (i = 0; i < nents; i++) { | 383 | for (i = 0; i < nents; i++) { |
383 | char *buf; | 384 | char *buf; |
@@ -390,7 +391,7 @@ alloc_sglist (int nents, int max, int vary) | |||
390 | } | 391 | } |
391 | 392 | ||
392 | /* kmalloc pages are always physically contiguous! */ | 393 | /* kmalloc pages are always physically contiguous! */ |
393 | sg_init_one(&sg[i], buf, size); | 394 | sg_set_buf(&sg[i], buf, size); |
394 | 395 | ||
395 | switch (pattern) { | 396 | switch (pattern) { |
396 | case 0: | 397 | case 0: |
diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c index f3ca66017a03..324bb61d68ff 100644 --- a/drivers/usb/serial/cp2101.c +++ b/drivers/usb/serial/cp2101.c | |||
@@ -75,6 +75,7 @@ static struct usb_device_id id_table [] = { | |||
75 | { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ | 75 | { USB_DEVICE(0x10C4, 0x81E2) }, /* Lipowsky Industrie Elektronik GmbH, Baby-LIN */ |
76 | { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */ | 76 | { USB_DEVICE(0x10C4, 0x81E7) }, /* Aerocomm Radio */ |
77 | { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ | 77 | { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ |
78 | { USB_DEVICE(0x10c4, 0x8293) }, /* Telegesys ETRX2USB */ | ||
78 | { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ | 79 | { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ |
79 | { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ | 80 | { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ |
80 | { USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */ | 81 | { USB_DEVICE(0x10C4, 0xF001) }, /* Elan Digital Systems USBscope50 */ |
diff --git a/drivers/usb/serial/keyspan.h b/drivers/usb/serial/keyspan.h index 8a0d17401529..74ce8bca3e66 100644 --- a/drivers/usb/serial/keyspan.h +++ b/drivers/usb/serial/keyspan.h | |||
@@ -637,6 +637,7 @@ static struct usb_serial_driver keyspan_pre_device = { | |||
637 | .description = "Keyspan - (without firmware)", | 637 | .description = "Keyspan - (without firmware)", |
638 | .id_table = keyspan_pre_ids, | 638 | .id_table = keyspan_pre_ids, |
639 | .num_interrupt_in = NUM_DONT_CARE, | 639 | .num_interrupt_in = NUM_DONT_CARE, |
640 | .num_interrupt_out = NUM_DONT_CARE, | ||
640 | .num_bulk_in = NUM_DONT_CARE, | 641 | .num_bulk_in = NUM_DONT_CARE, |
641 | .num_bulk_out = NUM_DONT_CARE, | 642 | .num_bulk_out = NUM_DONT_CARE, |
642 | .num_ports = 1, | 643 | .num_ports = 1, |
@@ -651,6 +652,7 @@ static struct usb_serial_driver keyspan_1port_device = { | |||
651 | .description = "Keyspan 1 port adapter", | 652 | .description = "Keyspan 1 port adapter", |
652 | .id_table = keyspan_1port_ids, | 653 | .id_table = keyspan_1port_ids, |
653 | .num_interrupt_in = NUM_DONT_CARE, | 654 | .num_interrupt_in = NUM_DONT_CARE, |
655 | .num_interrupt_out = NUM_DONT_CARE, | ||
654 | .num_bulk_in = NUM_DONT_CARE, | 656 | .num_bulk_in = NUM_DONT_CARE, |
655 | .num_bulk_out = NUM_DONT_CARE, | 657 | .num_bulk_out = NUM_DONT_CARE, |
656 | .num_ports = 1, | 658 | .num_ports = 1, |
@@ -678,6 +680,7 @@ static struct usb_serial_driver keyspan_2port_device = { | |||
678 | .description = "Keyspan 2 port adapter", | 680 | .description = "Keyspan 2 port adapter", |
679 | .id_table = keyspan_2port_ids, | 681 | .id_table = keyspan_2port_ids, |
680 | .num_interrupt_in = NUM_DONT_CARE, | 682 | .num_interrupt_in = NUM_DONT_CARE, |
683 | .num_interrupt_out = NUM_DONT_CARE, | ||
681 | .num_bulk_in = NUM_DONT_CARE, | 684 | .num_bulk_in = NUM_DONT_CARE, |
682 | .num_bulk_out = NUM_DONT_CARE, | 685 | .num_bulk_out = NUM_DONT_CARE, |
683 | .num_ports = 2, | 686 | .num_ports = 2, |
@@ -705,6 +708,7 @@ static struct usb_serial_driver keyspan_4port_device = { | |||
705 | .description = "Keyspan 4 port adapter", | 708 | .description = "Keyspan 4 port adapter", |
706 | .id_table = keyspan_4port_ids, | 709 | .id_table = keyspan_4port_ids, |
707 | .num_interrupt_in = NUM_DONT_CARE, | 710 | .num_interrupt_in = NUM_DONT_CARE, |
711 | .num_interrupt_out = NUM_DONT_CARE, | ||
708 | .num_bulk_in = NUM_DONT_CARE, | 712 | .num_bulk_in = NUM_DONT_CARE, |
709 | .num_bulk_out = NUM_DONT_CARE, | 713 | .num_bulk_out = NUM_DONT_CARE, |
710 | .num_ports = 4, | 714 | .num_ports = 4, |
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c index b517f93352ec..e3d241f67afc 100644 --- a/drivers/usb/serial/ti_usb_3410_5052.c +++ b/drivers/usb/serial/ti_usb_3410_5052.c | |||
@@ -265,8 +265,8 @@ static struct usb_serial_driver ti_1port_device = { | |||
265 | .description = "TI USB 3410 1 port adapter", | 265 | .description = "TI USB 3410 1 port adapter", |
266 | .usb_driver = &ti_usb_driver, | 266 | .usb_driver = &ti_usb_driver, |
267 | .id_table = ti_id_table_3410, | 267 | .id_table = ti_id_table_3410, |
268 | .num_interrupt_in = 1, | 268 | .num_interrupt_in = NUM_DONT_CARE, |
269 | .num_bulk_in = 1, | 269 | .num_bulk_in = NUM_DONT_CARE, |
270 | .num_bulk_out = 1, | 270 | .num_bulk_out = 1, |
271 | .num_ports = 1, | 271 | .num_ports = 1, |
272 | .attach = ti_startup, | 272 | .attach = ti_startup, |
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 22b3f78a388c..c2b01f7c3197 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c | |||
@@ -191,7 +191,7 @@ static struct usb_serial_driver handspring_device = { | |||
191 | .id_table = id_table, | 191 | .id_table = id_table, |
192 | .num_interrupt_in = NUM_DONT_CARE, | 192 | .num_interrupt_in = NUM_DONT_CARE, |
193 | .num_bulk_in = 2, | 193 | .num_bulk_in = 2, |
194 | .num_bulk_out = 2, | 194 | .num_bulk_out = NUM_DONT_CARE, |
195 | .num_ports = 2, | 195 | .num_ports = 2, |
196 | .open = visor_open, | 196 | .open = visor_open, |
197 | .close = visor_close, | 197 | .close = visor_close, |
diff --git a/drivers/video/bf54x-lq043fb.c b/drivers/video/bf54x-lq043fb.c index 986a550c0439..eefba3d0e4b9 100644 --- a/drivers/video/bf54x-lq043fb.c +++ b/drivers/video/bf54x-lq043fb.c | |||
@@ -384,7 +384,7 @@ static int bfin_bf54x_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) | |||
384 | * Other flags can be set, and are documented in | 384 | * Other flags can be set, and are documented in |
385 | * include/linux/mm.h | 385 | * include/linux/mm.h |
386 | */ | 386 | */ |
387 | vma->vm_flags |= VM_MAYSHARE; | 387 | vma->vm_flags |= VM_MAYSHARE | VM_SHARED; |
388 | 388 | ||
389 | return 0; | 389 | return 0; |
390 | } | 390 | } |
diff --git a/drivers/video/bfin-t350mcqb-fb.c b/drivers/video/bfin-t350mcqb-fb.c index a2bb2de9e020..135d6dd7e672 100644 --- a/drivers/video/bfin-t350mcqb-fb.c +++ b/drivers/video/bfin-t350mcqb-fb.c | |||
@@ -91,6 +91,7 @@ struct bfin_t350mcqbfb_info { | |||
91 | int lq043_open_cnt; | 91 | int lq043_open_cnt; |
92 | int irq; | 92 | int irq; |
93 | spinlock_t lock; /* lock */ | 93 | spinlock_t lock; /* lock */ |
94 | u32 pseudo_pal[16]; | ||
94 | }; | 95 | }; |
95 | 96 | ||
96 | static int nocursor; | 97 | static int nocursor; |
@@ -182,13 +183,13 @@ static void bfin_t350mcqb_config_dma(struct bfin_t350mcqbfb_info *fbi) | |||
182 | 183 | ||
183 | } | 184 | } |
184 | 185 | ||
185 | static int bfin_t350mcqb_request_ports(int action) | 186 | static u16 ppi0_req_8[] = {P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2, |
186 | { | ||
187 | u16 ppi0_req_8[] = {P_PPI0_CLK, P_PPI0_FS1, P_PPI0_FS2, | ||
188 | P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, | 187 | P_PPI0_D0, P_PPI0_D1, P_PPI0_D2, |
189 | P_PPI0_D3, P_PPI0_D4, P_PPI0_D5, | 188 | P_PPI0_D3, P_PPI0_D4, P_PPI0_D5, |
190 | P_PPI0_D6, P_PPI0_D7, 0}; | 189 | P_PPI0_D6, P_PPI0_D7, 0}; |
191 | 190 | ||
191 | static int bfin_t350mcqb_request_ports(int action) | ||
192 | { | ||
192 | if (action) { | 193 | if (action) { |
193 | if (peripheral_request_list(ppi0_req_8, DRIVER_NAME)) { | 194 | if (peripheral_request_list(ppi0_req_8, DRIVER_NAME)) { |
194 | printk(KERN_ERR "Requesting Peripherals faild\n"); | 195 | printk(KERN_ERR "Requesting Peripherals faild\n"); |
@@ -301,7 +302,7 @@ static int bfin_t350mcqb_fb_mmap(struct fb_info *info, struct vm_area_struct *vm | |||
301 | * Other flags can be set, and are documented in | 302 | * Other flags can be set, and are documented in |
302 | * include/linux/mm.h | 303 | * include/linux/mm.h |
303 | */ | 304 | */ |
304 | vma->vm_flags |= VM_MAYSHARE; | 305 | vma->vm_flags |= VM_MAYSHARE | VM_SHARED; |
305 | 306 | ||
306 | return 0; | 307 | return 0; |
307 | } | 308 | } |
@@ -520,16 +521,7 @@ static int __init bfin_t350mcqb_probe(struct platform_device *pdev) | |||
520 | 521 | ||
521 | fbinfo->fbops = &bfin_t350mcqb_fb_ops; | 522 | fbinfo->fbops = &bfin_t350mcqb_fb_ops; |
522 | 523 | ||
523 | fbinfo->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL); | 524 | fbinfo->pseudo_palette = &info->pseudo_pal; |
524 | if (!fbinfo->pseudo_palette) { | ||
525 | printk(KERN_ERR DRIVER_NAME | ||
526 | "Fail to allocate pseudo_palette\n"); | ||
527 | |||
528 | ret = -ENOMEM; | ||
529 | goto out4; | ||
530 | } | ||
531 | |||
532 | memset(fbinfo->pseudo_palette, 0, sizeof(u32) * 16); | ||
533 | 525 | ||
534 | if (fb_alloc_cmap(&fbinfo->cmap, BFIN_LCD_NBR_PALETTE_ENTRIES, 0) | 526 | if (fb_alloc_cmap(&fbinfo->cmap, BFIN_LCD_NBR_PALETTE_ENTRIES, 0) |
535 | < 0) { | 527 | < 0) { |
@@ -537,7 +529,7 @@ static int __init bfin_t350mcqb_probe(struct platform_device *pdev) | |||
537 | "Fail to allocate colormap (%d entries)\n", | 529 | "Fail to allocate colormap (%d entries)\n", |
538 | BFIN_LCD_NBR_PALETTE_ENTRIES); | 530 | BFIN_LCD_NBR_PALETTE_ENTRIES); |
539 | ret = -EFAULT; | 531 | ret = -EFAULT; |
540 | goto out5; | 532 | goto out4; |
541 | } | 533 | } |
542 | 534 | ||
543 | if (bfin_t350mcqb_request_ports(1)) { | 535 | if (bfin_t350mcqb_request_ports(1)) { |
@@ -552,11 +544,11 @@ static int __init bfin_t350mcqb_probe(struct platform_device *pdev) | |||
552 | goto out7; | 544 | goto out7; |
553 | } | 545 | } |
554 | 546 | ||
555 | if (request_irq(info->irq, (void *)bfin_t350mcqb_irq_error, IRQF_DISABLED, | 547 | ret = request_irq(info->irq, bfin_t350mcqb_irq_error, IRQF_DISABLED, |
556 | "PPI ERROR", info) < 0) { | 548 | "PPI ERROR", info); |
549 | if (ret < 0) { | ||
557 | printk(KERN_ERR DRIVER_NAME | 550 | printk(KERN_ERR DRIVER_NAME |
558 | ": unable to request PPI ERROR IRQ\n"); | 551 | ": unable to request PPI ERROR IRQ\n"); |
559 | ret = -EFAULT; | ||
560 | goto out7; | 552 | goto out7; |
561 | } | 553 | } |
562 | 554 | ||
@@ -584,8 +576,6 @@ out7: | |||
584 | bfin_t350mcqb_request_ports(0); | 576 | bfin_t350mcqb_request_ports(0); |
585 | out6: | 577 | out6: |
586 | fb_dealloc_cmap(&fbinfo->cmap); | 578 | fb_dealloc_cmap(&fbinfo->cmap); |
587 | out5: | ||
588 | kfree(fbinfo->pseudo_palette); | ||
589 | out4: | 579 | out4: |
590 | dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer, | 580 | dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer, |
591 | info->dma_handle); | 581 | info->dma_handle); |
@@ -605,6 +595,8 @@ static int bfin_t350mcqb_remove(struct platform_device *pdev) | |||
605 | struct fb_info *fbinfo = platform_get_drvdata(pdev); | 595 | struct fb_info *fbinfo = platform_get_drvdata(pdev); |
606 | struct bfin_t350mcqbfb_info *info = fbinfo->par; | 596 | struct bfin_t350mcqbfb_info *info = fbinfo->par; |
607 | 597 | ||
598 | unregister_framebuffer(fbinfo); | ||
599 | |||
608 | free_dma(CH_PPI); | 600 | free_dma(CH_PPI); |
609 | free_irq(info->irq, info); | 601 | free_irq(info->irq, info); |
610 | 602 | ||
@@ -612,7 +604,6 @@ static int bfin_t350mcqb_remove(struct platform_device *pdev) | |||
612 | dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer, | 604 | dma_free_coherent(NULL, fbinfo->fix.smem_len, info->fb_buffer, |
613 | info->dma_handle); | 605 | info->dma_handle); |
614 | 606 | ||
615 | kfree(fbinfo->pseudo_palette); | ||
616 | fb_dealloc_cmap(&fbinfo->cmap); | 607 | fb_dealloc_cmap(&fbinfo->cmap); |
617 | 608 | ||
618 | #ifndef NO_BL_SUPPORT | 609 | #ifndef NO_BL_SUPPORT |
@@ -620,10 +611,11 @@ static int bfin_t350mcqb_remove(struct platform_device *pdev) | |||
620 | backlight_device_unregister(bl_dev); | 611 | backlight_device_unregister(bl_dev); |
621 | #endif | 612 | #endif |
622 | 613 | ||
623 | unregister_framebuffer(fbinfo); | ||
624 | |||
625 | bfin_t350mcqb_request_ports(0); | 614 | bfin_t350mcqb_request_ports(0); |
626 | 615 | ||
616 | platform_set_drvdata(pdev, NULL); | ||
617 | framebuffer_release(fbinfo); | ||
618 | |||
627 | printk(KERN_INFO DRIVER_NAME ": Unregister LCD driver.\n"); | 619 | printk(KERN_INFO DRIVER_NAME ": Unregister LCD driver.\n"); |
628 | 620 | ||
629 | return 0; | 621 | return 0; |
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 59a8f73dec73..c0df924766a7 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c | |||
@@ -37,7 +37,7 @@ struct virtio_pci_device | |||
37 | struct pci_dev *pci_dev; | 37 | struct pci_dev *pci_dev; |
38 | 38 | ||
39 | /* the IO mapping for the PCI config space */ | 39 | /* the IO mapping for the PCI config space */ |
40 | void *ioaddr; | 40 | void __iomem *ioaddr; |
41 | 41 | ||
42 | /* a list of queues so we can dispatch IRQs */ | 42 | /* a list of queues so we can dispatch IRQs */ |
43 | spinlock_t lock; | 43 | spinlock_t lock; |
@@ -111,7 +111,7 @@ static void vp_get(struct virtio_device *vdev, unsigned offset, | |||
111 | void *buf, unsigned len) | 111 | void *buf, unsigned len) |
112 | { | 112 | { |
113 | struct virtio_pci_device *vp_dev = to_vp_device(vdev); | 113 | struct virtio_pci_device *vp_dev = to_vp_device(vdev); |
114 | void *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset; | 114 | void __iomem *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset; |
115 | u8 *ptr = buf; | 115 | u8 *ptr = buf; |
116 | int i; | 116 | int i; |
117 | 117 | ||
@@ -125,7 +125,7 @@ static void vp_set(struct virtio_device *vdev, unsigned offset, | |||
125 | const void *buf, unsigned len) | 125 | const void *buf, unsigned len) |
126 | { | 126 | { |
127 | struct virtio_pci_device *vp_dev = to_vp_device(vdev); | 127 | struct virtio_pci_device *vp_dev = to_vp_device(vdev); |
128 | void *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset; | 128 | void __iomem *ioaddr = vp_dev->ioaddr + VIRTIO_PCI_CONFIG + offset; |
129 | const u8 *ptr = buf; | 129 | const u8 *ptr = buf; |
130 | int i; | 130 | int i; |
131 | 131 | ||
@@ -388,6 +388,7 @@ static void __devexit virtio_pci_remove(struct pci_dev *pci_dev) | |||
388 | { | 388 | { |
389 | struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev); | 389 | struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev); |
390 | 390 | ||
391 | unregister_virtio_device(&vp_dev->vdev); | ||
391 | free_irq(pci_dev->irq, vp_dev); | 392 | free_irq(pci_dev->irq, vp_dev); |
392 | pci_set_drvdata(pci_dev, NULL); | 393 | pci_set_drvdata(pci_dev, NULL); |
393 | pci_iounmap(pci_dev, vp_dev->ioaddr); | 394 | pci_iounmap(pci_dev, vp_dev->ioaddr); |
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index aa714028641e..c2fa5c630813 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c | |||
@@ -214,10 +214,7 @@ static void vring_disable_cb(struct virtqueue *_vq) | |||
214 | { | 214 | { |
215 | struct vring_virtqueue *vq = to_vvq(_vq); | 215 | struct vring_virtqueue *vq = to_vvq(_vq); |
216 | 216 | ||
217 | START_USE(vq); | ||
218 | BUG_ON(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT); | ||
219 | vq->vring.avail->flags |= VRING_AVAIL_F_NO_INTERRUPT; | 217 | vq->vring.avail->flags |= VRING_AVAIL_F_NO_INTERRUPT; |
220 | END_USE(vq); | ||
221 | } | 218 | } |
222 | 219 | ||
223 | static bool vring_enable_cb(struct virtqueue *_vq) | 220 | static bool vring_enable_cb(struct virtqueue *_vq) |
diff --git a/drivers/watchdog/at32ap700x_wdt.c b/drivers/watchdog/at32ap700x_wdt.c index fb5ed6478f78..ae0fca5e8749 100644 --- a/drivers/watchdog/at32ap700x_wdt.c +++ b/drivers/watchdog/at32ap700x_wdt.c | |||
@@ -418,6 +418,9 @@ static int at32_wdt_resume(struct platform_device *pdev) | |||
418 | #define at32_wdt_resume NULL | 418 | #define at32_wdt_resume NULL |
419 | #endif | 419 | #endif |
420 | 420 | ||
421 | /* work with hotplug and coldplug */ | ||
422 | MODULE_ALIAS("platform:at32_wdt"); | ||
423 | |||
421 | static struct platform_driver at32_wdt_driver = { | 424 | static struct platform_driver at32_wdt_driver = { |
422 | .remove = __exit_p(at32_wdt_remove), | 425 | .remove = __exit_p(at32_wdt_remove), |
423 | .suspend = at32_wdt_suspend, | 426 | .suspend = at32_wdt_suspend, |
diff --git a/drivers/watchdog/at91rm9200_wdt.c b/drivers/watchdog/at91rm9200_wdt.c index a684b1e87372..9ff9a9565320 100644 --- a/drivers/watchdog/at91rm9200_wdt.c +++ b/drivers/watchdog/at91rm9200_wdt.c | |||
@@ -286,3 +286,4 @@ MODULE_AUTHOR("Andrew Victor"); | |||
286 | MODULE_DESCRIPTION("Watchdog driver for Atmel AT91RM9200"); | 286 | MODULE_DESCRIPTION("Watchdog driver for Atmel AT91RM9200"); |
287 | MODULE_LICENSE("GPL"); | 287 | MODULE_LICENSE("GPL"); |
288 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 288 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
289 | MODULE_ALIAS("platform:at91_wdt"); | ||
diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c index a61cbd48dc07..1782c79eff06 100644 --- a/drivers/watchdog/davinci_wdt.c +++ b/drivers/watchdog/davinci_wdt.c | |||
@@ -248,6 +248,7 @@ static int davinci_wdt_remove(struct platform_device *pdev) | |||
248 | static struct platform_driver platform_wdt_driver = { | 248 | static struct platform_driver platform_wdt_driver = { |
249 | .driver = { | 249 | .driver = { |
250 | .name = "watchdog", | 250 | .name = "watchdog", |
251 | .owner = THIS_MODULE, | ||
251 | }, | 252 | }, |
252 | .probe = davinci_wdt_probe, | 253 | .probe = davinci_wdt_probe, |
253 | .remove = davinci_wdt_remove, | 254 | .remove = davinci_wdt_remove, |
@@ -277,3 +278,4 @@ MODULE_PARM_DESC(heartbeat, | |||
277 | 278 | ||
278 | MODULE_LICENSE("GPL"); | 279 | MODULE_LICENSE("GPL"); |
279 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 280 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
281 | MODULE_ALIAS("platform:watchdog"); | ||
diff --git a/drivers/watchdog/it8712f_wdt.c b/drivers/watchdog/it8712f_wdt.c index 1efcad3b6fca..445b7e812112 100644 --- a/drivers/watchdog/it8712f_wdt.c +++ b/drivers/watchdog/it8712f_wdt.c | |||
@@ -111,15 +111,6 @@ superio_inw(int reg) | |||
111 | return val; | 111 | return val; |
112 | } | 112 | } |
113 | 113 | ||
114 | static void | ||
115 | superio_outw(int val, int reg) | ||
116 | { | ||
117 | outb(reg++, REG); | ||
118 | outb((val >> 8) & 0xff, VAL); | ||
119 | outb(reg, REG); | ||
120 | outb(val & 0xff, VAL); | ||
121 | } | ||
122 | |||
123 | static inline void | 114 | static inline void |
124 | superio_select(int ldn) | 115 | superio_select(int ldn) |
125 | { | 116 | { |
@@ -170,9 +161,8 @@ it8712f_wdt_update_margin(void) | |||
170 | superio_outb(config, WDT_CONFIG); | 161 | superio_outb(config, WDT_CONFIG); |
171 | 162 | ||
172 | if (revision >= 0x08) | 163 | if (revision >= 0x08) |
173 | superio_outw(units, WDT_TIMEOUT); | 164 | superio_outb(units >> 8, WDT_TIMEOUT + 1); |
174 | else | 165 | superio_outb(units, WDT_TIMEOUT); |
175 | superio_outb(units, WDT_TIMEOUT); | ||
176 | } | 166 | } |
177 | 167 | ||
178 | static int | 168 | static int |
@@ -210,6 +200,8 @@ it8712f_wdt_disable(void) | |||
210 | 200 | ||
211 | superio_outb(0, WDT_CONFIG); | 201 | superio_outb(0, WDT_CONFIG); |
212 | superio_outb(0, WDT_CONTROL); | 202 | superio_outb(0, WDT_CONTROL); |
203 | if (revision >= 0x08) | ||
204 | superio_outb(0, WDT_TIMEOUT + 1); | ||
213 | superio_outb(0, WDT_TIMEOUT); | 205 | superio_outb(0, WDT_TIMEOUT); |
214 | 206 | ||
215 | superio_exit(); | 207 | superio_exit(); |
diff --git a/drivers/watchdog/ks8695_wdt.c b/drivers/watchdog/ks8695_wdt.c index e3a29c302309..df5a6b811ccd 100644 --- a/drivers/watchdog/ks8695_wdt.c +++ b/drivers/watchdog/ks8695_wdt.c | |||
@@ -306,3 +306,4 @@ MODULE_AUTHOR("Andrew Victor"); | |||
306 | MODULE_DESCRIPTION("Watchdog driver for KS8695"); | 306 | MODULE_DESCRIPTION("Watchdog driver for KS8695"); |
307 | MODULE_LICENSE("GPL"); | 307 | MODULE_LICENSE("GPL"); |
308 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 308 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
309 | MODULE_ALIAS("platform:ks8695_wdt"); | ||
diff --git a/drivers/watchdog/mpc83xx_wdt.c b/drivers/watchdog/mpc83xx_wdt.c index 6369f569517f..b16c5cd972eb 100644 --- a/drivers/watchdog/mpc83xx_wdt.c +++ b/drivers/watchdog/mpc83xx_wdt.c | |||
@@ -206,6 +206,7 @@ static struct platform_driver mpc83xx_wdt_driver = { | |||
206 | .remove = __devexit_p(mpc83xx_wdt_remove), | 206 | .remove = __devexit_p(mpc83xx_wdt_remove), |
207 | .driver = { | 207 | .driver = { |
208 | .name = "mpc83xx_wdt", | 208 | .name = "mpc83xx_wdt", |
209 | .owner = THIS_MODULE, | ||
209 | }, | 210 | }, |
210 | }; | 211 | }; |
211 | 212 | ||
@@ -226,3 +227,4 @@ MODULE_AUTHOR("Dave Updegraff, Kumar Gala"); | |||
226 | MODULE_DESCRIPTION("Driver for watchdog timer in MPC83xx uProcessor"); | 227 | MODULE_DESCRIPTION("Driver for watchdog timer in MPC83xx uProcessor"); |
227 | MODULE_LICENSE("GPL"); | 228 | MODULE_LICENSE("GPL"); |
228 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 229 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
230 | MODULE_ALIAS("platform:mpc83xx_wdt"); | ||
diff --git a/drivers/watchdog/mpcore_wdt.c b/drivers/watchdog/mpcore_wdt.c index 0d2b27735419..009573b81496 100644 --- a/drivers/watchdog/mpcore_wdt.c +++ b/drivers/watchdog/mpcore_wdt.c | |||
@@ -392,6 +392,9 @@ static int __devexit mpcore_wdt_remove(struct platform_device *dev) | |||
392 | return 0; | 392 | return 0; |
393 | } | 393 | } |
394 | 394 | ||
395 | /* work with hotplug and coldplug */ | ||
396 | MODULE_ALIAS("platform:mpcore_wdt"); | ||
397 | |||
395 | static struct platform_driver mpcore_wdt_driver = { | 398 | static struct platform_driver mpcore_wdt_driver = { |
396 | .probe = mpcore_wdt_probe, | 399 | .probe = mpcore_wdt_probe, |
397 | .remove = __devexit_p(mpcore_wdt_remove), | 400 | .remove = __devexit_p(mpcore_wdt_remove), |
diff --git a/drivers/watchdog/mtx-1_wdt.c b/drivers/watchdog/mtx-1_wdt.c index 10b89f2703bd..a8e67383784e 100644 --- a/drivers/watchdog/mtx-1_wdt.c +++ b/drivers/watchdog/mtx-1_wdt.c | |||
@@ -243,6 +243,7 @@ static struct platform_driver mtx1_wdt = { | |||
243 | .probe = mtx1_wdt_probe, | 243 | .probe = mtx1_wdt_probe, |
244 | .remove = mtx1_wdt_remove, | 244 | .remove = mtx1_wdt_remove, |
245 | .driver.name = "mtx1-wdt", | 245 | .driver.name = "mtx1-wdt", |
246 | .driver.owner = THIS_MODULE, | ||
246 | }; | 247 | }; |
247 | 248 | ||
248 | static int __init mtx1_wdt_init(void) | 249 | static int __init mtx1_wdt_init(void) |
@@ -262,3 +263,4 @@ MODULE_AUTHOR("Michael Stickel, Florian Fainelli"); | |||
262 | MODULE_DESCRIPTION("Driver for the MTX-1 watchdog"); | 263 | MODULE_DESCRIPTION("Driver for the MTX-1 watchdog"); |
263 | MODULE_LICENSE("GPL"); | 264 | MODULE_LICENSE("GPL"); |
264 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 265 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
266 | MODULE_ALIAS("platform:mtx1-wdt"); | ||
diff --git a/drivers/watchdog/mv64x60_wdt.c b/drivers/watchdog/mv64x60_wdt.c index 0365c317f7e1..b59ca3273967 100644 --- a/drivers/watchdog/mv64x60_wdt.c +++ b/drivers/watchdog/mv64x60_wdt.c | |||
@@ -324,3 +324,4 @@ MODULE_AUTHOR("James Chapman <jchapman@katalix.com>"); | |||
324 | MODULE_DESCRIPTION("MV64x60 watchdog driver"); | 324 | MODULE_DESCRIPTION("MV64x60 watchdog driver"); |
325 | MODULE_LICENSE("GPL"); | 325 | MODULE_LICENSE("GPL"); |
326 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 326 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
327 | MODULE_ALIAS("platform:" MV64x60_WDT_NAME); | ||
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index 635ca454f56b..74bc39aa1ce8 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c | |||
@@ -387,3 +387,4 @@ module_exit(omap_wdt_exit); | |||
387 | MODULE_AUTHOR("George G. Davis"); | 387 | MODULE_AUTHOR("George G. Davis"); |
388 | MODULE_LICENSE("GPL"); | 388 | MODULE_LICENSE("GPL"); |
389 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 389 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
390 | MODULE_ALIAS("platform:omap_wdt"); | ||
diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c index b04aa096a10a..6b8483d3c783 100644 --- a/drivers/watchdog/pnx4008_wdt.c +++ b/drivers/watchdog/pnx4008_wdt.c | |||
@@ -321,6 +321,7 @@ static int pnx4008_wdt_remove(struct platform_device *pdev) | |||
321 | static struct platform_driver platform_wdt_driver = { | 321 | static struct platform_driver platform_wdt_driver = { |
322 | .driver = { | 322 | .driver = { |
323 | .name = "watchdog", | 323 | .name = "watchdog", |
324 | .owner = THIS_MODULE, | ||
324 | }, | 325 | }, |
325 | .probe = pnx4008_wdt_probe, | 326 | .probe = pnx4008_wdt_probe, |
326 | .remove = pnx4008_wdt_remove, | 327 | .remove = pnx4008_wdt_remove, |
@@ -354,3 +355,4 @@ MODULE_PARM_DESC(nowayout, | |||
354 | 355 | ||
355 | MODULE_LICENSE("GPL"); | 356 | MODULE_LICENSE("GPL"); |
356 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 357 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
358 | MODULE_ALIAS("platform:watchdog"); | ||
diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c index 7645e8812156..98532c0e0689 100644 --- a/drivers/watchdog/s3c2410_wdt.c +++ b/drivers/watchdog/s3c2410_wdt.c | |||
@@ -561,3 +561,4 @@ MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>, " | |||
561 | MODULE_DESCRIPTION("S3C2410 Watchdog Device Driver"); | 561 | MODULE_DESCRIPTION("S3C2410 Watchdog Device Driver"); |
562 | MODULE_LICENSE("GPL"); | 562 | MODULE_LICENSE("GPL"); |
563 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 563 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
564 | MODULE_ALIAS("platform:s3c2410-wdt"); | ||
diff --git a/drivers/watchdog/txx9wdt.c b/drivers/watchdog/txx9wdt.c index 328b3c7211ef..57cefef27ce3 100644 --- a/drivers/watchdog/txx9wdt.c +++ b/drivers/watchdog/txx9wdt.c | |||
@@ -274,3 +274,4 @@ module_exit(watchdog_exit); | |||
274 | MODULE_DESCRIPTION("TXx9 Watchdog Driver"); | 274 | MODULE_DESCRIPTION("TXx9 Watchdog Driver"); |
275 | MODULE_LICENSE("GPL"); | 275 | MODULE_LICENSE("GPL"); |
276 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | 276 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |
277 | MODULE_ALIAS("platform:txx9wdt"); | ||
diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c index ea94dbabf9a9..d85dc6d41c2a 100644 --- a/drivers/xen/grant-table.c +++ b/drivers/xen/grant-table.c | |||
@@ -381,11 +381,15 @@ EXPORT_SYMBOL_GPL(gnttab_cancel_free_callback); | |||
381 | static int grow_gnttab_list(unsigned int more_frames) | 381 | static int grow_gnttab_list(unsigned int more_frames) |
382 | { | 382 | { |
383 | unsigned int new_nr_grant_frames, extra_entries, i; | 383 | unsigned int new_nr_grant_frames, extra_entries, i; |
384 | unsigned int nr_glist_frames, new_nr_glist_frames; | ||
384 | 385 | ||
385 | new_nr_grant_frames = nr_grant_frames + more_frames; | 386 | new_nr_grant_frames = nr_grant_frames + more_frames; |
386 | extra_entries = more_frames * GREFS_PER_GRANT_FRAME; | 387 | extra_entries = more_frames * GREFS_PER_GRANT_FRAME; |
387 | 388 | ||
388 | for (i = nr_grant_frames; i < new_nr_grant_frames; i++) { | 389 | nr_glist_frames = (nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; |
390 | new_nr_glist_frames = | ||
391 | (new_nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; | ||
392 | for (i = nr_glist_frames; i < new_nr_glist_frames; i++) { | ||
389 | gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_ATOMIC); | 393 | gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_ATOMIC); |
390 | if (!gnttab_list[i]) | 394 | if (!gnttab_list[i]) |
391 | goto grow_nomem; | 395 | goto grow_nomem; |
@@ -407,7 +411,7 @@ static int grow_gnttab_list(unsigned int more_frames) | |||
407 | return 0; | 411 | return 0; |
408 | 412 | ||
409 | grow_nomem: | 413 | grow_nomem: |
410 | for ( ; i >= nr_grant_frames; i--) | 414 | for ( ; i >= nr_glist_frames; i--) |
411 | free_page((unsigned long) gnttab_list[i]); | 415 | free_page((unsigned long) gnttab_list[i]); |
412 | return -ENOMEM; | 416 | return -ENOMEM; |
413 | } | 417 | } |
@@ -530,7 +534,7 @@ static int gnttab_expand(unsigned int req_entries) | |||
530 | static int __devinit gnttab_init(void) | 534 | static int __devinit gnttab_init(void) |
531 | { | 535 | { |
532 | int i; | 536 | int i; |
533 | unsigned int max_nr_glist_frames; | 537 | unsigned int max_nr_glist_frames, nr_glist_frames; |
534 | unsigned int nr_init_grefs; | 538 | unsigned int nr_init_grefs; |
535 | 539 | ||
536 | if (!is_running_on_xen()) | 540 | if (!is_running_on_xen()) |
@@ -543,15 +547,15 @@ static int __devinit gnttab_init(void) | |||
543 | * grant reference free list on the current hypervisor. | 547 | * grant reference free list on the current hypervisor. |
544 | */ | 548 | */ |
545 | max_nr_glist_frames = (boot_max_nr_grant_frames * | 549 | max_nr_glist_frames = (boot_max_nr_grant_frames * |
546 | GREFS_PER_GRANT_FRAME / | 550 | GREFS_PER_GRANT_FRAME / RPP); |
547 | (PAGE_SIZE / sizeof(grant_ref_t))); | ||
548 | 551 | ||
549 | gnttab_list = kmalloc(max_nr_glist_frames * sizeof(grant_ref_t *), | 552 | gnttab_list = kmalloc(max_nr_glist_frames * sizeof(grant_ref_t *), |
550 | GFP_KERNEL); | 553 | GFP_KERNEL); |
551 | if (gnttab_list == NULL) | 554 | if (gnttab_list == NULL) |
552 | return -ENOMEM; | 555 | return -ENOMEM; |
553 | 556 | ||
554 | for (i = 0; i < nr_grant_frames; i++) { | 557 | nr_glist_frames = (nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; |
558 | for (i = 0; i < nr_glist_frames; i++) { | ||
555 | gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_KERNEL); | 559 | gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_KERNEL); |
556 | if (gnttab_list[i] == NULL) | 560 | if (gnttab_list[i] == NULL) |
557 | goto ini_nomem; | 561 | goto ini_nomem; |
diff --git a/fs/Kconfig b/fs/Kconfig index d7312825592b..c509123bea49 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
@@ -1744,10 +1744,10 @@ config ROOT_NFS | |||
1744 | If you want your Linux box to mount its whole root file system (the | 1744 | If you want your Linux box to mount its whole root file system (the |
1745 | one containing the directory /) from some other computer over the | 1745 | one containing the directory /) from some other computer over the |
1746 | net via NFS (presumably because your box doesn't have a hard disk), | 1746 | net via NFS (presumably because your box doesn't have a hard disk), |
1747 | say Y. Read <file:Documentation/nfsroot.txt> for details. It is | 1747 | say Y. Read <file:Documentation/filesystems/nfsroot.txt> for |
1748 | likely that in this case, you also want to say Y to "Kernel level IP | 1748 | details. It is likely that in this case, you also want to say Y to |
1749 | autoconfiguration" so that your box can discover its network address | 1749 | "Kernel level IP autoconfiguration" so that your box can discover |
1750 | at boot time. | 1750 | its network address at boot time. |
1751 | 1751 | ||
1752 | Most people say N here. | 1752 | Most people say N here. |
1753 | 1753 | ||
diff --git a/fs/afs/cell.c b/fs/afs/cell.c index 970d38f30565..584bb0f9c36a 100644 --- a/fs/afs/cell.c +++ b/fs/afs/cell.c | |||
@@ -127,14 +127,21 @@ struct afs_cell *afs_cell_create(const char *name, char *vllist) | |||
127 | 127 | ||
128 | _enter("%s,%s", name, vllist); | 128 | _enter("%s,%s", name, vllist); |
129 | 129 | ||
130 | down_write(&afs_cells_sem); | ||
131 | read_lock(&afs_cells_lock); | ||
132 | list_for_each_entry(cell, &afs_cells, link) { | ||
133 | if (strcasecmp(cell->name, name) == 0) | ||
134 | goto duplicate_name; | ||
135 | } | ||
136 | read_unlock(&afs_cells_lock); | ||
137 | |||
130 | cell = afs_cell_alloc(name, vllist); | 138 | cell = afs_cell_alloc(name, vllist); |
131 | if (IS_ERR(cell)) { | 139 | if (IS_ERR(cell)) { |
132 | _leave(" = %ld", PTR_ERR(cell)); | 140 | _leave(" = %ld", PTR_ERR(cell)); |
141 | up_write(&afs_cells_sem); | ||
133 | return cell; | 142 | return cell; |
134 | } | 143 | } |
135 | 144 | ||
136 | down_write(&afs_cells_sem); | ||
137 | |||
138 | /* add a proc directory for this cell */ | 145 | /* add a proc directory for this cell */ |
139 | ret = afs_proc_cell_setup(cell); | 146 | ret = afs_proc_cell_setup(cell); |
140 | if (ret < 0) | 147 | if (ret < 0) |
@@ -167,6 +174,11 @@ error: | |||
167 | kfree(cell); | 174 | kfree(cell); |
168 | _leave(" = %d", ret); | 175 | _leave(" = %d", ret); |
169 | return ERR_PTR(ret); | 176 | return ERR_PTR(ret); |
177 | |||
178 | duplicate_name: | ||
179 | read_unlock(&afs_cells_lock); | ||
180 | up_write(&afs_cells_sem); | ||
181 | return ERR_PTR(-EEXIST); | ||
170 | } | 182 | } |
171 | 183 | ||
172 | /* | 184 | /* |
diff --git a/fs/afs/internal.h b/fs/afs/internal.h index 5ca3625cd39e..eec41c76de72 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h | |||
@@ -573,7 +573,6 @@ extern const struct file_operations afs_mntpt_file_operations; | |||
573 | 573 | ||
574 | extern int afs_mntpt_check_symlink(struct afs_vnode *, struct key *); | 574 | extern int afs_mntpt_check_symlink(struct afs_vnode *, struct key *); |
575 | extern void afs_mntpt_kill_timer(void); | 575 | extern void afs_mntpt_kill_timer(void); |
576 | extern void afs_umount_begin(struct vfsmount *, int); | ||
577 | 576 | ||
578 | /* | 577 | /* |
579 | * proc.c | 578 | * proc.c |
@@ -750,7 +749,7 @@ extern int afs_fsync(struct file *, struct dentry *, int); | |||
750 | extern unsigned afs_debug; | 749 | extern unsigned afs_debug; |
751 | 750 | ||
752 | #define dbgprintk(FMT,...) \ | 751 | #define dbgprintk(FMT,...) \ |
753 | printk("[%x%-6.6s] "FMT"\n", smp_processor_id(), current->comm ,##__VA_ARGS__) | 752 | printk("[%-6.6s] "FMT"\n", current->comm ,##__VA_ARGS__) |
754 | 753 | ||
755 | /* make sure we maintain the format strings, even when debugging is disabled */ | 754 | /* make sure we maintain the format strings, even when debugging is disabled */ |
756 | static inline __attribute__((format(printf,1,2))) | 755 | static inline __attribute__((format(printf,1,2))) |
diff --git a/fs/afs/mntpt.c b/fs/afs/mntpt.c index a3510b8ba3e7..2f5503902c37 100644 --- a/fs/afs/mntpt.c +++ b/fs/afs/mntpt.c | |||
@@ -283,11 +283,3 @@ void afs_mntpt_kill_timer(void) | |||
283 | cancel_delayed_work(&afs_mntpt_expiry_timer); | 283 | cancel_delayed_work(&afs_mntpt_expiry_timer); |
284 | flush_scheduled_work(); | 284 | flush_scheduled_work(); |
285 | } | 285 | } |
286 | |||
287 | /* | ||
288 | * begin unmount by attempting to remove all automounted mountpoints we added | ||
289 | */ | ||
290 | void afs_umount_begin(struct vfsmount *vfsmnt, int flags) | ||
291 | { | ||
292 | shrink_submounts(vfsmnt, &afs_vfsmounts); | ||
293 | } | ||
diff --git a/fs/afs/super.c b/fs/afs/super.c index 36bbce45f44b..4b572b801d8d 100644 --- a/fs/afs/super.c +++ b/fs/afs/super.c | |||
@@ -50,7 +50,6 @@ static const struct super_operations afs_super_ops = { | |||
50 | .write_inode = afs_write_inode, | 50 | .write_inode = afs_write_inode, |
51 | .destroy_inode = afs_destroy_inode, | 51 | .destroy_inode = afs_destroy_inode, |
52 | .clear_inode = afs_clear_inode, | 52 | .clear_inode = afs_clear_inode, |
53 | .umount_begin = afs_umount_begin, | ||
54 | .put_super = afs_put_super, | 53 | .put_super = afs_put_super, |
55 | .show_options = generic_show_options, | 54 | .show_options = generic_show_options, |
56 | }; | 55 | }; |
@@ -936,14 +936,6 @@ int aio_complete(struct kiocb *iocb, long res, long res2) | |||
936 | return 1; | 936 | return 1; |
937 | } | 937 | } |
938 | 938 | ||
939 | /* | ||
940 | * Check if the user asked us to deliver the result through an | ||
941 | * eventfd. The eventfd_signal() function is safe to be called | ||
942 | * from IRQ context. | ||
943 | */ | ||
944 | if (!IS_ERR(iocb->ki_eventfd)) | ||
945 | eventfd_signal(iocb->ki_eventfd, 1); | ||
946 | |||
947 | info = &ctx->ring_info; | 939 | info = &ctx->ring_info; |
948 | 940 | ||
949 | /* add a completion event to the ring buffer. | 941 | /* add a completion event to the ring buffer. |
@@ -992,6 +984,15 @@ int aio_complete(struct kiocb *iocb, long res, long res2) | |||
992 | kunmap_atomic(ring, KM_IRQ1); | 984 | kunmap_atomic(ring, KM_IRQ1); |
993 | 985 | ||
994 | pr_debug("added to ring %p at [%lu]\n", iocb, tail); | 986 | pr_debug("added to ring %p at [%lu]\n", iocb, tail); |
987 | |||
988 | /* | ||
989 | * Check if the user asked us to deliver the result through an | ||
990 | * eventfd. The eventfd_signal() function is safe to be called | ||
991 | * from IRQ context. | ||
992 | */ | ||
993 | if (!IS_ERR(iocb->ki_eventfd)) | ||
994 | eventfd_signal(iocb->ki_eventfd, 1); | ||
995 | |||
995 | put_rq: | 996 | put_rq: |
996 | /* everything turned out well, dispose of the aiocb. */ | 997 | /* everything turned out well, dispose of the aiocb. */ |
997 | ret = __aio_put_req(ctx, iocb); | 998 | ret = __aio_put_req(ctx, iocb); |
@@ -1790,6 +1791,7 @@ asmlinkage long sys_io_getevents(aio_context_t ctx_id, | |||
1790 | put_ioctx(ioctx); | 1791 | put_ioctx(ioctx); |
1791 | } | 1792 | } |
1792 | 1793 | ||
1794 | asmlinkage_protect(5, ret, ctx_id, min_nr, nr, events, timeout); | ||
1793 | return ret; | 1795 | return ret; |
1794 | } | 1796 | } |
1795 | 1797 | ||
diff --git a/fs/buffer.c b/fs/buffer.c index 7ba58386beee..39ff14403d13 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -1181,7 +1181,20 @@ __getblk_slow(struct block_device *bdev, sector_t block, int size) | |||
1181 | void mark_buffer_dirty(struct buffer_head *bh) | 1181 | void mark_buffer_dirty(struct buffer_head *bh) |
1182 | { | 1182 | { |
1183 | WARN_ON_ONCE(!buffer_uptodate(bh)); | 1183 | WARN_ON_ONCE(!buffer_uptodate(bh)); |
1184 | if (!buffer_dirty(bh) && !test_set_buffer_dirty(bh)) | 1184 | |
1185 | /* | ||
1186 | * Very *carefully* optimize the it-is-already-dirty case. | ||
1187 | * | ||
1188 | * Don't let the final "is it dirty" escape to before we | ||
1189 | * perhaps modified the buffer. | ||
1190 | */ | ||
1191 | if (buffer_dirty(bh)) { | ||
1192 | smp_mb(); | ||
1193 | if (buffer_dirty(bh)) | ||
1194 | return; | ||
1195 | } | ||
1196 | |||
1197 | if (!test_set_buffer_dirty(bh)) | ||
1185 | __set_page_dirty(bh->b_page, page_mapping(bh->b_page), 0); | 1198 | __set_page_dirty(bh->b_page, page_mapping(bh->b_page), 0); |
1186 | } | 1199 | } |
1187 | 1200 | ||
@@ -2564,14 +2577,13 @@ int nobh_write_end(struct file *file, struct address_space *mapping, | |||
2564 | struct inode *inode = page->mapping->host; | 2577 | struct inode *inode = page->mapping->host; |
2565 | struct buffer_head *head = fsdata; | 2578 | struct buffer_head *head = fsdata; |
2566 | struct buffer_head *bh; | 2579 | struct buffer_head *bh; |
2580 | BUG_ON(fsdata != NULL && page_has_buffers(page)); | ||
2567 | 2581 | ||
2568 | if (!PageMappedToDisk(page)) { | 2582 | if (unlikely(copied < len) && !page_has_buffers(page)) |
2569 | if (unlikely(copied < len) && !page_has_buffers(page)) | 2583 | attach_nobh_buffers(page, head); |
2570 | attach_nobh_buffers(page, head); | 2584 | if (page_has_buffers(page)) |
2571 | if (page_has_buffers(page)) | 2585 | return generic_write_end(file, mapping, pos, len, |
2572 | return generic_write_end(file, mapping, pos, len, | 2586 | copied, page, fsdata); |
2573 | copied, page, fsdata); | ||
2574 | } | ||
2575 | 2587 | ||
2576 | SetPageUptodate(page); | 2588 | SetPageUptodate(page); |
2577 | set_page_dirty(page); | 2589 | set_page_dirty(page); |
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index a1a95b027136..56c924033b78 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c | |||
@@ -33,7 +33,6 @@ void dfs_shrink_umount_helper(struct vfsmount *vfsmnt) | |||
33 | { | 33 | { |
34 | mark_mounts_for_expiry(&cifs_dfs_automount_list); | 34 | mark_mounts_for_expiry(&cifs_dfs_automount_list); |
35 | mark_mounts_for_expiry(&cifs_dfs_automount_list); | 35 | mark_mounts_for_expiry(&cifs_dfs_automount_list); |
36 | shrink_submounts(vfsmnt, &cifs_dfs_automount_list); | ||
37 | } | 36 | } |
38 | 37 | ||
39 | /** | 38 | /** |
diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c index 1f5a4289b848..1cb5b0a9f2ac 100644 --- a/fs/cifs/cifsacl.c +++ b/fs/cifs/cifsacl.c | |||
@@ -261,7 +261,7 @@ static void mode_to_access_flags(umode_t mode, umode_t bits_to_use, | |||
261 | return; | 261 | return; |
262 | } | 262 | } |
263 | 263 | ||
264 | static __le16 fill_ace_for_sid(struct cifs_ace *pntace, | 264 | static __u16 fill_ace_for_sid(struct cifs_ace *pntace, |
265 | const struct cifs_sid *psid, __u64 nmode, umode_t bits) | 265 | const struct cifs_sid *psid, __u64 nmode, umode_t bits) |
266 | { | 266 | { |
267 | int i; | 267 | int i; |
@@ -411,7 +411,7 @@ static void parse_dacl(struct cifs_acl *pdacl, char *end_of_acl, | |||
411 | static int set_chmod_dacl(struct cifs_acl *pndacl, struct cifs_sid *pownersid, | 411 | static int set_chmod_dacl(struct cifs_acl *pndacl, struct cifs_sid *pownersid, |
412 | struct cifs_sid *pgrpsid, __u64 nmode) | 412 | struct cifs_sid *pgrpsid, __u64 nmode) |
413 | { | 413 | { |
414 | __le16 size = 0; | 414 | u16 size = 0; |
415 | struct cifs_acl *pnndacl; | 415 | struct cifs_acl *pnndacl; |
416 | 416 | ||
417 | pnndacl = (struct cifs_acl *)((char *)pndacl + sizeof(struct cifs_acl)); | 417 | pnndacl = (struct cifs_acl *)((char *)pndacl + sizeof(struct cifs_acl)); |
diff --git a/fs/efs/inode.c b/fs/efs/inode.c index 79e19e5958e1..a8e7797b9477 100644 --- a/fs/efs/inode.c +++ b/fs/efs/inode.c | |||
@@ -140,7 +140,7 @@ struct inode *efs_iget(struct super_block *super, unsigned long ino) | |||
140 | brelse(bh); | 140 | brelse(bh); |
141 | 141 | ||
142 | #ifdef DEBUG | 142 | #ifdef DEBUG |
143 | printk(KERN_DEBUG "EFS: read_inode(): inode %lu, extents %d, mode %o\n", | 143 | printk(KERN_DEBUG "EFS: efs_iget(): inode %lu, extents %d, mode %o\n", |
144 | inode->i_ino, in->numextents, inode->i_mode); | 144 | inode->i_ino, in->numextents, inode->i_mode); |
145 | #endif | 145 | #endif |
146 | 146 | ||
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c index 29683645fa0a..5f4023678251 100644 --- a/fs/hfsplus/dir.c +++ b/fs/hfsplus/dir.c | |||
@@ -340,16 +340,23 @@ static int hfsplus_unlink(struct inode *dir, struct dentry *dentry) | |||
340 | 340 | ||
341 | if (inode->i_nlink > 0) | 341 | if (inode->i_nlink > 0) |
342 | drop_nlink(inode); | 342 | drop_nlink(inode); |
343 | hfsplus_delete_inode(inode); | 343 | if (inode->i_ino == cnid) |
344 | if (inode->i_ino != cnid && !inode->i_nlink) { | 344 | clear_nlink(inode); |
345 | if (!atomic_read(&HFSPLUS_I(inode).opencnt)) { | 345 | if (!inode->i_nlink) { |
346 | res = hfsplus_delete_cat(inode->i_ino, HFSPLUS_SB(sb).hidden_dir, NULL); | 346 | if (inode->i_ino != cnid) { |
347 | if (!res) | 347 | HFSPLUS_SB(sb).file_count--; |
348 | hfsplus_delete_inode(inode); | 348 | if (!atomic_read(&HFSPLUS_I(inode).opencnt)) { |
349 | res = hfsplus_delete_cat(inode->i_ino, | ||
350 | HFSPLUS_SB(sb).hidden_dir, | ||
351 | NULL); | ||
352 | if (!res) | ||
353 | hfsplus_delete_inode(inode); | ||
354 | } else | ||
355 | inode->i_flags |= S_DEAD; | ||
349 | } else | 356 | } else |
350 | inode->i_flags |= S_DEAD; | 357 | hfsplus_delete_inode(inode); |
351 | } else | 358 | } else |
352 | clear_nlink(inode); | 359 | HFSPLUS_SB(sb).file_count--; |
353 | inode->i_ctime = CURRENT_TIME_SEC; | 360 | inode->i_ctime = CURRENT_TIME_SEC; |
354 | mark_inode_dirty(inode); | 361 | mark_inode_dirty(inode); |
355 | 362 | ||
diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c index 9816293442ab..0e081d5f32e8 100644 --- a/fs/jbd/journal.c +++ b/fs/jbd/journal.c | |||
@@ -1620,14 +1620,14 @@ static int journal_init_journal_head_cache(void) | |||
1620 | { | 1620 | { |
1621 | int retval; | 1621 | int retval; |
1622 | 1622 | ||
1623 | J_ASSERT(journal_head_cache == 0); | 1623 | J_ASSERT(journal_head_cache == NULL); |
1624 | journal_head_cache = kmem_cache_create("journal_head", | 1624 | journal_head_cache = kmem_cache_create("journal_head", |
1625 | sizeof(struct journal_head), | 1625 | sizeof(struct journal_head), |
1626 | 0, /* offset */ | 1626 | 0, /* offset */ |
1627 | SLAB_TEMPORARY, /* flags */ | 1627 | SLAB_TEMPORARY, /* flags */ |
1628 | NULL); /* ctor */ | 1628 | NULL); /* ctor */ |
1629 | retval = 0; | 1629 | retval = 0; |
1630 | if (journal_head_cache == 0) { | 1630 | if (!journal_head_cache) { |
1631 | retval = -ENOMEM; | 1631 | retval = -ENOMEM; |
1632 | printk(KERN_EMERG "JBD: no memory for journal_head cache\n"); | 1632 | printk(KERN_EMERG "JBD: no memory for journal_head cache\n"); |
1633 | } | 1633 | } |
diff --git a/fs/jbd/revoke.c b/fs/jbd/revoke.c index ad2eacf570c6..d5f8eee7c88c 100644 --- a/fs/jbd/revoke.c +++ b/fs/jbd/revoke.c | |||
@@ -173,13 +173,13 @@ int __init journal_init_revoke_caches(void) | |||
173 | 0, | 173 | 0, |
174 | SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY, | 174 | SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY, |
175 | NULL); | 175 | NULL); |
176 | if (revoke_record_cache == 0) | 176 | if (!revoke_record_cache) |
177 | return -ENOMEM; | 177 | return -ENOMEM; |
178 | 178 | ||
179 | revoke_table_cache = kmem_cache_create("revoke_table", | 179 | revoke_table_cache = kmem_cache_create("revoke_table", |
180 | sizeof(struct jbd_revoke_table_s), | 180 | sizeof(struct jbd_revoke_table_s), |
181 | 0, SLAB_TEMPORARY, NULL); | 181 | 0, SLAB_TEMPORARY, NULL); |
182 | if (revoke_table_cache == 0) { | 182 | if (!revoke_table_cache) { |
183 | kmem_cache_destroy(revoke_record_cache); | 183 | kmem_cache_destroy(revoke_record_cache); |
184 | revoke_record_cache = NULL; | 184 | revoke_record_cache = NULL; |
185 | return -ENOMEM; | 185 | return -ENOMEM; |
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 96ba846992e9..954cff001df6 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c | |||
@@ -219,7 +219,7 @@ static int jbd2_journal_start_thread(journal_t *journal) | |||
219 | if (IS_ERR(t)) | 219 | if (IS_ERR(t)) |
220 | return PTR_ERR(t); | 220 | return PTR_ERR(t); |
221 | 221 | ||
222 | wait_event(journal->j_wait_done_commit, journal->j_task != 0); | 222 | wait_event(journal->j_wait_done_commit, journal->j_task != NULL); |
223 | return 0; | 223 | return 0; |
224 | } | 224 | } |
225 | 225 | ||
@@ -231,7 +231,7 @@ static void journal_kill_thread(journal_t *journal) | |||
231 | while (journal->j_task) { | 231 | while (journal->j_task) { |
232 | wake_up(&journal->j_wait_commit); | 232 | wake_up(&journal->j_wait_commit); |
233 | spin_unlock(&journal->j_state_lock); | 233 | spin_unlock(&journal->j_state_lock); |
234 | wait_event(journal->j_wait_done_commit, journal->j_task == 0); | 234 | wait_event(journal->j_wait_done_commit, journal->j_task == NULL); |
235 | spin_lock(&journal->j_state_lock); | 235 | spin_lock(&journal->j_state_lock); |
236 | } | 236 | } |
237 | spin_unlock(&journal->j_state_lock); | 237 | spin_unlock(&journal->j_state_lock); |
@@ -1969,14 +1969,14 @@ static int journal_init_jbd2_journal_head_cache(void) | |||
1969 | { | 1969 | { |
1970 | int retval; | 1970 | int retval; |
1971 | 1971 | ||
1972 | J_ASSERT(jbd2_journal_head_cache == 0); | 1972 | J_ASSERT(jbd2_journal_head_cache == NULL); |
1973 | jbd2_journal_head_cache = kmem_cache_create("jbd2_journal_head", | 1973 | jbd2_journal_head_cache = kmem_cache_create("jbd2_journal_head", |
1974 | sizeof(struct journal_head), | 1974 | sizeof(struct journal_head), |
1975 | 0, /* offset */ | 1975 | 0, /* offset */ |
1976 | SLAB_TEMPORARY, /* flags */ | 1976 | SLAB_TEMPORARY, /* flags */ |
1977 | NULL); /* ctor */ | 1977 | NULL); /* ctor */ |
1978 | retval = 0; | 1978 | retval = 0; |
1979 | if (jbd2_journal_head_cache == 0) { | 1979 | if (!jbd2_journal_head_cache) { |
1980 | retval = -ENOMEM; | 1980 | retval = -ENOMEM; |
1981 | printk(KERN_EMERG "JBD: no memory for journal_head cache\n"); | 1981 | printk(KERN_EMERG "JBD: no memory for journal_head cache\n"); |
1982 | } | 1982 | } |
@@ -2002,14 +2002,14 @@ static struct journal_head *journal_alloc_journal_head(void) | |||
2002 | atomic_inc(&nr_journal_heads); | 2002 | atomic_inc(&nr_journal_heads); |
2003 | #endif | 2003 | #endif |
2004 | ret = kmem_cache_alloc(jbd2_journal_head_cache, GFP_NOFS); | 2004 | ret = kmem_cache_alloc(jbd2_journal_head_cache, GFP_NOFS); |
2005 | if (ret == 0) { | 2005 | if (!ret) { |
2006 | jbd_debug(1, "out of memory for journal_head\n"); | 2006 | jbd_debug(1, "out of memory for journal_head\n"); |
2007 | if (time_after(jiffies, last_warning + 5*HZ)) { | 2007 | if (time_after(jiffies, last_warning + 5*HZ)) { |
2008 | printk(KERN_NOTICE "ENOMEM in %s, retrying.\n", | 2008 | printk(KERN_NOTICE "ENOMEM in %s, retrying.\n", |
2009 | __FUNCTION__); | 2009 | __FUNCTION__); |
2010 | last_warning = jiffies; | 2010 | last_warning = jiffies; |
2011 | } | 2011 | } |
2012 | while (ret == 0) { | 2012 | while (!ret) { |
2013 | yield(); | 2013 | yield(); |
2014 | ret = kmem_cache_alloc(jbd2_journal_head_cache, GFP_NOFS); | 2014 | ret = kmem_cache_alloc(jbd2_journal_head_cache, GFP_NOFS); |
2015 | } | 2015 | } |
diff --git a/fs/jbd2/revoke.c b/fs/jbd2/revoke.c index df36f42e19e1..2e1453a5e998 100644 --- a/fs/jbd2/revoke.c +++ b/fs/jbd2/revoke.c | |||
@@ -174,13 +174,13 @@ int __init jbd2_journal_init_revoke_caches(void) | |||
174 | 0, | 174 | 0, |
175 | SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY, | 175 | SLAB_HWCACHE_ALIGN|SLAB_TEMPORARY, |
176 | NULL); | 176 | NULL); |
177 | if (jbd2_revoke_record_cache == 0) | 177 | if (!jbd2_revoke_record_cache) |
178 | return -ENOMEM; | 178 | return -ENOMEM; |
179 | 179 | ||
180 | jbd2_revoke_table_cache = kmem_cache_create("jbd2_revoke_table", | 180 | jbd2_revoke_table_cache = kmem_cache_create("jbd2_revoke_table", |
181 | sizeof(struct jbd2_revoke_table_s), | 181 | sizeof(struct jbd2_revoke_table_s), |
182 | 0, SLAB_TEMPORARY, NULL); | 182 | 0, SLAB_TEMPORARY, NULL); |
183 | if (jbd2_revoke_table_cache == 0) { | 183 | if (!jbd2_revoke_table_cache) { |
184 | kmem_cache_destroy(jbd2_revoke_record_cache); | 184 | kmem_cache_destroy(jbd2_revoke_record_cache); |
185 | jbd2_revoke_record_cache = NULL; | 185 | jbd2_revoke_record_cache = NULL; |
186 | return -ENOMEM; | 186 | return -ENOMEM; |
diff --git a/fs/namespace.c b/fs/namespace.c index 7953c96a2071..94f026ec990a 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -155,15 +155,15 @@ static void __touch_mnt_namespace(struct mnt_namespace *ns) | |||
155 | } | 155 | } |
156 | } | 156 | } |
157 | 157 | ||
158 | static void detach_mnt(struct vfsmount *mnt, struct nameidata *old_nd) | 158 | static void detach_mnt(struct vfsmount *mnt, struct path *old_path) |
159 | { | 159 | { |
160 | old_nd->path.dentry = mnt->mnt_mountpoint; | 160 | old_path->dentry = mnt->mnt_mountpoint; |
161 | old_nd->path.mnt = mnt->mnt_parent; | 161 | old_path->mnt = mnt->mnt_parent; |
162 | mnt->mnt_parent = mnt; | 162 | mnt->mnt_parent = mnt; |
163 | mnt->mnt_mountpoint = mnt->mnt_root; | 163 | mnt->mnt_mountpoint = mnt->mnt_root; |
164 | list_del_init(&mnt->mnt_child); | 164 | list_del_init(&mnt->mnt_child); |
165 | list_del_init(&mnt->mnt_hash); | 165 | list_del_init(&mnt->mnt_hash); |
166 | old_nd->path.dentry->d_mounted--; | 166 | old_path->dentry->d_mounted--; |
167 | } | 167 | } |
168 | 168 | ||
169 | void mnt_set_mountpoint(struct vfsmount *mnt, struct dentry *dentry, | 169 | void mnt_set_mountpoint(struct vfsmount *mnt, struct dentry *dentry, |
@@ -174,12 +174,12 @@ void mnt_set_mountpoint(struct vfsmount *mnt, struct dentry *dentry, | |||
174 | dentry->d_mounted++; | 174 | dentry->d_mounted++; |
175 | } | 175 | } |
176 | 176 | ||
177 | static void attach_mnt(struct vfsmount *mnt, struct nameidata *nd) | 177 | static void attach_mnt(struct vfsmount *mnt, struct path *path) |
178 | { | 178 | { |
179 | mnt_set_mountpoint(nd->path.mnt, nd->path.dentry, mnt); | 179 | mnt_set_mountpoint(path->mnt, path->dentry, mnt); |
180 | list_add_tail(&mnt->mnt_hash, mount_hashtable + | 180 | list_add_tail(&mnt->mnt_hash, mount_hashtable + |
181 | hash(nd->path.mnt, nd->path.dentry)); | 181 | hash(path->mnt, path->dentry)); |
182 | list_add_tail(&mnt->mnt_child, &nd->path.mnt->mnt_mounts); | 182 | list_add_tail(&mnt->mnt_child, &path->mnt->mnt_mounts); |
183 | } | 183 | } |
184 | 184 | ||
185 | /* | 185 | /* |
@@ -262,10 +262,8 @@ static struct vfsmount *clone_mnt(struct vfsmount *old, struct dentry *root, | |||
262 | /* stick the duplicate mount on the same expiry list | 262 | /* stick the duplicate mount on the same expiry list |
263 | * as the original if that was on one */ | 263 | * as the original if that was on one */ |
264 | if (flag & CL_EXPIRE) { | 264 | if (flag & CL_EXPIRE) { |
265 | spin_lock(&vfsmount_lock); | ||
266 | if (!list_empty(&old->mnt_expire)) | 265 | if (!list_empty(&old->mnt_expire)) |
267 | list_add(&mnt->mnt_expire, &old->mnt_expire); | 266 | list_add(&mnt->mnt_expire, &old->mnt_expire); |
268 | spin_unlock(&vfsmount_lock); | ||
269 | } | 267 | } |
270 | } | 268 | } |
271 | return mnt; | 269 | return mnt; |
@@ -548,6 +546,7 @@ void release_mounts(struct list_head *head) | |||
548 | m = mnt->mnt_parent; | 546 | m = mnt->mnt_parent; |
549 | mnt->mnt_mountpoint = mnt->mnt_root; | 547 | mnt->mnt_mountpoint = mnt->mnt_root; |
550 | mnt->mnt_parent = mnt; | 548 | mnt->mnt_parent = mnt; |
549 | m->mnt_ghosts--; | ||
551 | spin_unlock(&vfsmount_lock); | 550 | spin_unlock(&vfsmount_lock); |
552 | dput(dentry); | 551 | dput(dentry); |
553 | mntput(m); | 552 | mntput(m); |
@@ -572,12 +571,16 @@ void umount_tree(struct vfsmount *mnt, int propagate, struct list_head *kill) | |||
572 | __touch_mnt_namespace(p->mnt_ns); | 571 | __touch_mnt_namespace(p->mnt_ns); |
573 | p->mnt_ns = NULL; | 572 | p->mnt_ns = NULL; |
574 | list_del_init(&p->mnt_child); | 573 | list_del_init(&p->mnt_child); |
575 | if (p->mnt_parent != p) | 574 | if (p->mnt_parent != p) { |
575 | p->mnt_parent->mnt_ghosts++; | ||
576 | p->mnt_mountpoint->d_mounted--; | 576 | p->mnt_mountpoint->d_mounted--; |
577 | } | ||
577 | change_mnt_propagation(p, MS_PRIVATE); | 578 | change_mnt_propagation(p, MS_PRIVATE); |
578 | } | 579 | } |
579 | } | 580 | } |
580 | 581 | ||
582 | static void shrink_submounts(struct vfsmount *mnt, struct list_head *umounts); | ||
583 | |||
581 | static int do_umount(struct vfsmount *mnt, int flags) | 584 | static int do_umount(struct vfsmount *mnt, int flags) |
582 | { | 585 | { |
583 | struct super_block *sb = mnt->mnt_sb; | 586 | struct super_block *sb = mnt->mnt_sb; |
@@ -650,6 +653,9 @@ static int do_umount(struct vfsmount *mnt, int flags) | |||
650 | spin_lock(&vfsmount_lock); | 653 | spin_lock(&vfsmount_lock); |
651 | event++; | 654 | event++; |
652 | 655 | ||
656 | if (!(flags & MNT_DETACH)) | ||
657 | shrink_submounts(mnt, &umount_list); | ||
658 | |||
653 | retval = -EBUSY; | 659 | retval = -EBUSY; |
654 | if (flags & MNT_DETACH || !propagate_mount_busy(mnt, 2)) { | 660 | if (flags & MNT_DETACH || !propagate_mount_busy(mnt, 2)) { |
655 | if (!list_empty(&mnt->mnt_list)) | 661 | if (!list_empty(&mnt->mnt_list)) |
@@ -744,7 +750,7 @@ struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, | |||
744 | int flag) | 750 | int flag) |
745 | { | 751 | { |
746 | struct vfsmount *res, *p, *q, *r, *s; | 752 | struct vfsmount *res, *p, *q, *r, *s; |
747 | struct nameidata nd; | 753 | struct path path; |
748 | 754 | ||
749 | if (!(flag & CL_COPY_ALL) && IS_MNT_UNBINDABLE(mnt)) | 755 | if (!(flag & CL_COPY_ALL) && IS_MNT_UNBINDABLE(mnt)) |
750 | return NULL; | 756 | return NULL; |
@@ -769,14 +775,14 @@ struct vfsmount *copy_tree(struct vfsmount *mnt, struct dentry *dentry, | |||
769 | q = q->mnt_parent; | 775 | q = q->mnt_parent; |
770 | } | 776 | } |
771 | p = s; | 777 | p = s; |
772 | nd.path.mnt = q; | 778 | path.mnt = q; |
773 | nd.path.dentry = p->mnt_mountpoint; | 779 | path.dentry = p->mnt_mountpoint; |
774 | q = clone_mnt(p, p->mnt_root, flag); | 780 | q = clone_mnt(p, p->mnt_root, flag); |
775 | if (!q) | 781 | if (!q) |
776 | goto Enomem; | 782 | goto Enomem; |
777 | spin_lock(&vfsmount_lock); | 783 | spin_lock(&vfsmount_lock); |
778 | list_add_tail(&q->mnt_list, &res->mnt_list); | 784 | list_add_tail(&q->mnt_list, &res->mnt_list); |
779 | attach_mnt(q, &nd); | 785 | attach_mnt(q, &path); |
780 | spin_unlock(&vfsmount_lock); | 786 | spin_unlock(&vfsmount_lock); |
781 | } | 787 | } |
782 | } | 788 | } |
@@ -876,11 +882,11 @@ void drop_collected_mounts(struct vfsmount *mnt) | |||
876 | * in allocations. | 882 | * in allocations. |
877 | */ | 883 | */ |
878 | static int attach_recursive_mnt(struct vfsmount *source_mnt, | 884 | static int attach_recursive_mnt(struct vfsmount *source_mnt, |
879 | struct nameidata *nd, struct nameidata *parent_nd) | 885 | struct path *path, struct path *parent_path) |
880 | { | 886 | { |
881 | LIST_HEAD(tree_list); | 887 | LIST_HEAD(tree_list); |
882 | struct vfsmount *dest_mnt = nd->path.mnt; | 888 | struct vfsmount *dest_mnt = path->mnt; |
883 | struct dentry *dest_dentry = nd->path.dentry; | 889 | struct dentry *dest_dentry = path->dentry; |
884 | struct vfsmount *child, *p; | 890 | struct vfsmount *child, *p; |
885 | 891 | ||
886 | if (propagate_mnt(dest_mnt, dest_dentry, source_mnt, &tree_list)) | 892 | if (propagate_mnt(dest_mnt, dest_dentry, source_mnt, &tree_list)) |
@@ -892,9 +898,9 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt, | |||
892 | } | 898 | } |
893 | 899 | ||
894 | spin_lock(&vfsmount_lock); | 900 | spin_lock(&vfsmount_lock); |
895 | if (parent_nd) { | 901 | if (parent_path) { |
896 | detach_mnt(source_mnt, parent_nd); | 902 | detach_mnt(source_mnt, parent_path); |
897 | attach_mnt(source_mnt, nd); | 903 | attach_mnt(source_mnt, path); |
898 | touch_mnt_namespace(current->nsproxy->mnt_ns); | 904 | touch_mnt_namespace(current->nsproxy->mnt_ns); |
899 | } else { | 905 | } else { |
900 | mnt_set_mountpoint(dest_mnt, dest_dentry, source_mnt); | 906 | mnt_set_mountpoint(dest_mnt, dest_dentry, source_mnt); |
@@ -930,7 +936,7 @@ static int graft_tree(struct vfsmount *mnt, struct nameidata *nd) | |||
930 | 936 | ||
931 | err = -ENOENT; | 937 | err = -ENOENT; |
932 | if (IS_ROOT(nd->path.dentry) || !d_unhashed(nd->path.dentry)) | 938 | if (IS_ROOT(nd->path.dentry) || !d_unhashed(nd->path.dentry)) |
933 | err = attach_recursive_mnt(mnt, nd, NULL); | 939 | err = attach_recursive_mnt(mnt, &nd->path, NULL); |
934 | out_unlock: | 940 | out_unlock: |
935 | mutex_unlock(&nd->path.dentry->d_inode->i_mutex); | 941 | mutex_unlock(&nd->path.dentry->d_inode->i_mutex); |
936 | if (!err) | 942 | if (!err) |
@@ -1059,7 +1065,8 @@ static inline int tree_contains_unbindable(struct vfsmount *mnt) | |||
1059 | */ | 1065 | */ |
1060 | static noinline int do_move_mount(struct nameidata *nd, char *old_name) | 1066 | static noinline int do_move_mount(struct nameidata *nd, char *old_name) |
1061 | { | 1067 | { |
1062 | struct nameidata old_nd, parent_nd; | 1068 | struct nameidata old_nd; |
1069 | struct path parent_path; | ||
1063 | struct vfsmount *p; | 1070 | struct vfsmount *p; |
1064 | int err = 0; | 1071 | int err = 0; |
1065 | if (!capable(CAP_SYS_ADMIN)) | 1072 | if (!capable(CAP_SYS_ADMIN)) |
@@ -1114,21 +1121,19 @@ static noinline int do_move_mount(struct nameidata *nd, char *old_name) | |||
1114 | if (p == old_nd.path.mnt) | 1121 | if (p == old_nd.path.mnt) |
1115 | goto out1; | 1122 | goto out1; |
1116 | 1123 | ||
1117 | err = attach_recursive_mnt(old_nd.path.mnt, nd, &parent_nd); | 1124 | err = attach_recursive_mnt(old_nd.path.mnt, &nd->path, &parent_path); |
1118 | if (err) | 1125 | if (err) |
1119 | goto out1; | 1126 | goto out1; |
1120 | 1127 | ||
1121 | spin_lock(&vfsmount_lock); | ||
1122 | /* if the mount is moved, it should no longer be expire | 1128 | /* if the mount is moved, it should no longer be expire |
1123 | * automatically */ | 1129 | * automatically */ |
1124 | list_del_init(&old_nd.path.mnt->mnt_expire); | 1130 | list_del_init(&old_nd.path.mnt->mnt_expire); |
1125 | spin_unlock(&vfsmount_lock); | ||
1126 | out1: | 1131 | out1: |
1127 | mutex_unlock(&nd->path.dentry->d_inode->i_mutex); | 1132 | mutex_unlock(&nd->path.dentry->d_inode->i_mutex); |
1128 | out: | 1133 | out: |
1129 | up_write(&namespace_sem); | 1134 | up_write(&namespace_sem); |
1130 | if (!err) | 1135 | if (!err) |
1131 | path_put(&parent_nd.path); | 1136 | path_put(&parent_path); |
1132 | path_put(&old_nd.path); | 1137 | path_put(&old_nd.path); |
1133 | return err; | 1138 | return err; |
1134 | } | 1139 | } |
@@ -1189,12 +1194,9 @@ int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | |||
1189 | if ((err = graft_tree(newmnt, nd))) | 1194 | if ((err = graft_tree(newmnt, nd))) |
1190 | goto unlock; | 1195 | goto unlock; |
1191 | 1196 | ||
1192 | if (fslist) { | 1197 | if (fslist) /* add to the specified expiration list */ |
1193 | /* add to the specified expiration list */ | ||
1194 | spin_lock(&vfsmount_lock); | ||
1195 | list_add_tail(&newmnt->mnt_expire, fslist); | 1198 | list_add_tail(&newmnt->mnt_expire, fslist); |
1196 | spin_unlock(&vfsmount_lock); | 1199 | |
1197 | } | ||
1198 | up_write(&namespace_sem); | 1200 | up_write(&namespace_sem); |
1199 | return 0; | 1201 | return 0; |
1200 | 1202 | ||
@@ -1206,75 +1208,6 @@ unlock: | |||
1206 | 1208 | ||
1207 | EXPORT_SYMBOL_GPL(do_add_mount); | 1209 | EXPORT_SYMBOL_GPL(do_add_mount); |
1208 | 1210 | ||
1209 | static void expire_mount(struct vfsmount *mnt, struct list_head *mounts, | ||
1210 | struct list_head *umounts) | ||
1211 | { | ||
1212 | spin_lock(&vfsmount_lock); | ||
1213 | |||
1214 | /* | ||
1215 | * Check if mount is still attached, if not, let whoever holds it deal | ||
1216 | * with the sucker | ||
1217 | */ | ||
1218 | if (mnt->mnt_parent == mnt) { | ||
1219 | spin_unlock(&vfsmount_lock); | ||
1220 | return; | ||
1221 | } | ||
1222 | |||
1223 | /* | ||
1224 | * Check that it is still dead: the count should now be 2 - as | ||
1225 | * contributed by the vfsmount parent and the mntget above | ||
1226 | */ | ||
1227 | if (!propagate_mount_busy(mnt, 2)) { | ||
1228 | /* delete from the namespace */ | ||
1229 | touch_mnt_namespace(mnt->mnt_ns); | ||
1230 | list_del_init(&mnt->mnt_list); | ||
1231 | mnt->mnt_ns = NULL; | ||
1232 | umount_tree(mnt, 1, umounts); | ||
1233 | spin_unlock(&vfsmount_lock); | ||
1234 | } else { | ||
1235 | /* | ||
1236 | * Someone brought it back to life whilst we didn't have any | ||
1237 | * locks held so return it to the expiration list | ||
1238 | */ | ||
1239 | list_add_tail(&mnt->mnt_expire, mounts); | ||
1240 | spin_unlock(&vfsmount_lock); | ||
1241 | } | ||
1242 | } | ||
1243 | |||
1244 | /* | ||
1245 | * go through the vfsmounts we've just consigned to the graveyard to | ||
1246 | * - check that they're still dead | ||
1247 | * - delete the vfsmount from the appropriate namespace under lock | ||
1248 | * - dispose of the corpse | ||
1249 | */ | ||
1250 | static void expire_mount_list(struct list_head *graveyard, struct list_head *mounts) | ||
1251 | { | ||
1252 | struct mnt_namespace *ns; | ||
1253 | struct vfsmount *mnt; | ||
1254 | |||
1255 | while (!list_empty(graveyard)) { | ||
1256 | LIST_HEAD(umounts); | ||
1257 | mnt = list_first_entry(graveyard, struct vfsmount, mnt_expire); | ||
1258 | list_del_init(&mnt->mnt_expire); | ||
1259 | |||
1260 | /* don't do anything if the namespace is dead - all the | ||
1261 | * vfsmounts from it are going away anyway */ | ||
1262 | ns = mnt->mnt_ns; | ||
1263 | if (!ns || !ns->root) | ||
1264 | continue; | ||
1265 | get_mnt_ns(ns); | ||
1266 | |||
1267 | spin_unlock(&vfsmount_lock); | ||
1268 | down_write(&namespace_sem); | ||
1269 | expire_mount(mnt, mounts, &umounts); | ||
1270 | up_write(&namespace_sem); | ||
1271 | release_mounts(&umounts); | ||
1272 | mntput(mnt); | ||
1273 | put_mnt_ns(ns); | ||
1274 | spin_lock(&vfsmount_lock); | ||
1275 | } | ||
1276 | } | ||
1277 | |||
1278 | /* | 1211 | /* |
1279 | * process a list of expirable mountpoints with the intent of discarding any | 1212 | * process a list of expirable mountpoints with the intent of discarding any |
1280 | * mountpoints that aren't in use and haven't been touched since last we came | 1213 | * mountpoints that aren't in use and haven't been touched since last we came |
@@ -1284,10 +1217,12 @@ void mark_mounts_for_expiry(struct list_head *mounts) | |||
1284 | { | 1217 | { |
1285 | struct vfsmount *mnt, *next; | 1218 | struct vfsmount *mnt, *next; |
1286 | LIST_HEAD(graveyard); | 1219 | LIST_HEAD(graveyard); |
1220 | LIST_HEAD(umounts); | ||
1287 | 1221 | ||
1288 | if (list_empty(mounts)) | 1222 | if (list_empty(mounts)) |
1289 | return; | 1223 | return; |
1290 | 1224 | ||
1225 | down_write(&namespace_sem); | ||
1291 | spin_lock(&vfsmount_lock); | 1226 | spin_lock(&vfsmount_lock); |
1292 | 1227 | ||
1293 | /* extract from the expiration list every vfsmount that matches the | 1228 | /* extract from the expiration list every vfsmount that matches the |
@@ -1298,16 +1233,19 @@ void mark_mounts_for_expiry(struct list_head *mounts) | |||
1298 | */ | 1233 | */ |
1299 | list_for_each_entry_safe(mnt, next, mounts, mnt_expire) { | 1234 | list_for_each_entry_safe(mnt, next, mounts, mnt_expire) { |
1300 | if (!xchg(&mnt->mnt_expiry_mark, 1) || | 1235 | if (!xchg(&mnt->mnt_expiry_mark, 1) || |
1301 | atomic_read(&mnt->mnt_count) != 1) | 1236 | propagate_mount_busy(mnt, 1)) |
1302 | continue; | 1237 | continue; |
1303 | |||
1304 | mntget(mnt); | ||
1305 | list_move(&mnt->mnt_expire, &graveyard); | 1238 | list_move(&mnt->mnt_expire, &graveyard); |
1306 | } | 1239 | } |
1307 | 1240 | while (!list_empty(&graveyard)) { | |
1308 | expire_mount_list(&graveyard, mounts); | 1241 | mnt = list_first_entry(&graveyard, struct vfsmount, mnt_expire); |
1309 | 1242 | touch_mnt_namespace(mnt->mnt_ns); | |
1243 | umount_tree(mnt, 1, &umounts); | ||
1244 | } | ||
1310 | spin_unlock(&vfsmount_lock); | 1245 | spin_unlock(&vfsmount_lock); |
1246 | up_write(&namespace_sem); | ||
1247 | |||
1248 | release_mounts(&umounts); | ||
1311 | } | 1249 | } |
1312 | 1250 | ||
1313 | EXPORT_SYMBOL_GPL(mark_mounts_for_expiry); | 1251 | EXPORT_SYMBOL_GPL(mark_mounts_for_expiry); |
@@ -1343,7 +1281,6 @@ resume: | |||
1343 | } | 1281 | } |
1344 | 1282 | ||
1345 | if (!propagate_mount_busy(mnt, 1)) { | 1283 | if (!propagate_mount_busy(mnt, 1)) { |
1346 | mntget(mnt); | ||
1347 | list_move_tail(&mnt->mnt_expire, graveyard); | 1284 | list_move_tail(&mnt->mnt_expire, graveyard); |
1348 | found++; | 1285 | found++; |
1349 | } | 1286 | } |
@@ -1363,22 +1300,22 @@ resume: | |||
1363 | * process a list of expirable mountpoints with the intent of discarding any | 1300 | * process a list of expirable mountpoints with the intent of discarding any |
1364 | * submounts of a specific parent mountpoint | 1301 | * submounts of a specific parent mountpoint |
1365 | */ | 1302 | */ |
1366 | void shrink_submounts(struct vfsmount *mountpoint, struct list_head *mounts) | 1303 | static void shrink_submounts(struct vfsmount *mnt, struct list_head *umounts) |
1367 | { | 1304 | { |
1368 | LIST_HEAD(graveyard); | 1305 | LIST_HEAD(graveyard); |
1369 | int found; | 1306 | struct vfsmount *m; |
1370 | |||
1371 | spin_lock(&vfsmount_lock); | ||
1372 | 1307 | ||
1373 | /* extract submounts of 'mountpoint' from the expiration list */ | 1308 | /* extract submounts of 'mountpoint' from the expiration list */ |
1374 | while ((found = select_submounts(mountpoint, &graveyard)) != 0) | 1309 | while (select_submounts(mnt, &graveyard)) { |
1375 | expire_mount_list(&graveyard, mounts); | 1310 | while (!list_empty(&graveyard)) { |
1376 | 1311 | m = list_first_entry(&graveyard, struct vfsmount, | |
1377 | spin_unlock(&vfsmount_lock); | 1312 | mnt_expire); |
1313 | touch_mnt_namespace(mnt->mnt_ns); | ||
1314 | umount_tree(mnt, 1, umounts); | ||
1315 | } | ||
1316 | } | ||
1378 | } | 1317 | } |
1379 | 1318 | ||
1380 | EXPORT_SYMBOL_GPL(shrink_submounts); | ||
1381 | |||
1382 | /* | 1319 | /* |
1383 | * Some copy_from_user() implementations do not return the exact number of | 1320 | * Some copy_from_user() implementations do not return the exact number of |
1384 | * bytes remaining to copy on a fault. But copy_mount_options() requires that. | 1321 | * bytes remaining to copy on a fault. But copy_mount_options() requires that. |
@@ -1683,7 +1620,7 @@ void set_fs_pwd(struct fs_struct *fs, struct path *path) | |||
1683 | path_put(&old_pwd); | 1620 | path_put(&old_pwd); |
1684 | } | 1621 | } |
1685 | 1622 | ||
1686 | static void chroot_fs_refs(struct nameidata *old_nd, struct nameidata *new_nd) | 1623 | static void chroot_fs_refs(struct path *old_root, struct path *new_root) |
1687 | { | 1624 | { |
1688 | struct task_struct *g, *p; | 1625 | struct task_struct *g, *p; |
1689 | struct fs_struct *fs; | 1626 | struct fs_struct *fs; |
@@ -1695,12 +1632,12 @@ static void chroot_fs_refs(struct nameidata *old_nd, struct nameidata *new_nd) | |||
1695 | if (fs) { | 1632 | if (fs) { |
1696 | atomic_inc(&fs->count); | 1633 | atomic_inc(&fs->count); |
1697 | task_unlock(p); | 1634 | task_unlock(p); |
1698 | if (fs->root.dentry == old_nd->path.dentry | 1635 | if (fs->root.dentry == old_root->dentry |
1699 | && fs->root.mnt == old_nd->path.mnt) | 1636 | && fs->root.mnt == old_root->mnt) |
1700 | set_fs_root(fs, &new_nd->path); | 1637 | set_fs_root(fs, new_root); |
1701 | if (fs->pwd.dentry == old_nd->path.dentry | 1638 | if (fs->pwd.dentry == old_root->dentry |
1702 | && fs->pwd.mnt == old_nd->path.mnt) | 1639 | && fs->pwd.mnt == old_root->mnt) |
1703 | set_fs_pwd(fs, &new_nd->path); | 1640 | set_fs_pwd(fs, new_root); |
1704 | put_fs_struct(fs); | 1641 | put_fs_struct(fs); |
1705 | } else | 1642 | } else |
1706 | task_unlock(p); | 1643 | task_unlock(p); |
@@ -1737,7 +1674,8 @@ asmlinkage long sys_pivot_root(const char __user * new_root, | |||
1737 | const char __user * put_old) | 1674 | const char __user * put_old) |
1738 | { | 1675 | { |
1739 | struct vfsmount *tmp; | 1676 | struct vfsmount *tmp; |
1740 | struct nameidata new_nd, old_nd, parent_nd, root_parent, user_nd; | 1677 | struct nameidata new_nd, old_nd, user_nd; |
1678 | struct path parent_path, root_parent; | ||
1741 | int error; | 1679 | int error; |
1742 | 1680 | ||
1743 | if (!capable(CAP_SYS_ADMIN)) | 1681 | if (!capable(CAP_SYS_ADMIN)) |
@@ -1811,19 +1749,19 @@ asmlinkage long sys_pivot_root(const char __user * new_root, | |||
1811 | goto out3; | 1749 | goto out3; |
1812 | } else if (!is_subdir(old_nd.path.dentry, new_nd.path.dentry)) | 1750 | } else if (!is_subdir(old_nd.path.dentry, new_nd.path.dentry)) |
1813 | goto out3; | 1751 | goto out3; |
1814 | detach_mnt(new_nd.path.mnt, &parent_nd); | 1752 | detach_mnt(new_nd.path.mnt, &parent_path); |
1815 | detach_mnt(user_nd.path.mnt, &root_parent); | 1753 | detach_mnt(user_nd.path.mnt, &root_parent); |
1816 | /* mount old root on put_old */ | 1754 | /* mount old root on put_old */ |
1817 | attach_mnt(user_nd.path.mnt, &old_nd); | 1755 | attach_mnt(user_nd.path.mnt, &old_nd.path); |
1818 | /* mount new_root on / */ | 1756 | /* mount new_root on / */ |
1819 | attach_mnt(new_nd.path.mnt, &root_parent); | 1757 | attach_mnt(new_nd.path.mnt, &root_parent); |
1820 | touch_mnt_namespace(current->nsproxy->mnt_ns); | 1758 | touch_mnt_namespace(current->nsproxy->mnt_ns); |
1821 | spin_unlock(&vfsmount_lock); | 1759 | spin_unlock(&vfsmount_lock); |
1822 | chroot_fs_refs(&user_nd, &new_nd); | 1760 | chroot_fs_refs(&user_nd.path, &new_nd.path); |
1823 | security_sb_post_pivotroot(&user_nd, &new_nd); | 1761 | security_sb_post_pivotroot(&user_nd, &new_nd); |
1824 | error = 0; | 1762 | error = 0; |
1825 | path_put(&root_parent.path); | 1763 | path_put(&root_parent); |
1826 | path_put(&parent_nd.path); | 1764 | path_put(&parent_path); |
1827 | out2: | 1765 | out2: |
1828 | mutex_unlock(&old_nd.path.dentry->d_inode->i_mutex); | 1766 | mutex_unlock(&old_nd.path.dentry->d_inode->i_mutex); |
1829 | up_write(&namespace_sem); | 1767 | up_write(&namespace_sem); |
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index ef57a5ae5904..5d2e9d9a4e28 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c | |||
@@ -64,7 +64,11 @@ const struct file_operations nfs_file_operations = { | |||
64 | .write = do_sync_write, | 64 | .write = do_sync_write, |
65 | .aio_read = nfs_file_read, | 65 | .aio_read = nfs_file_read, |
66 | .aio_write = nfs_file_write, | 66 | .aio_write = nfs_file_write, |
67 | #ifdef CONFIG_MMU | ||
67 | .mmap = nfs_file_mmap, | 68 | .mmap = nfs_file_mmap, |
69 | #else | ||
70 | .mmap = generic_file_mmap, | ||
71 | #endif | ||
68 | .open = nfs_file_open, | 72 | .open = nfs_file_open, |
69 | .flush = nfs_file_flush, | 73 | .flush = nfs_file_flush, |
70 | .release = nfs_file_release, | 74 | .release = nfs_file_release, |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index a4c7cf2bff3a..6f88d7c77ac9 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -506,6 +506,7 @@ static struct nfs_open_context *alloc_nfs_open_context(struct vfsmount *mnt, str | |||
506 | ctx->cred = get_rpccred(cred); | 506 | ctx->cred = get_rpccred(cred); |
507 | ctx->state = NULL; | 507 | ctx->state = NULL; |
508 | ctx->lockowner = current->files; | 508 | ctx->lockowner = current->files; |
509 | ctx->flags = 0; | ||
509 | ctx->error = 0; | 510 | ctx->error = 0; |
510 | ctx->dir_cookie = 0; | 511 | ctx->dir_cookie = 0; |
511 | atomic_set(&ctx->count, 1); | 512 | atomic_set(&ctx->count, 1); |
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index dd4dfcd632ec..f9219024f31a 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -589,8 +589,6 @@ static void nfs_umount_begin(struct vfsmount *vfsmnt, int flags) | |||
589 | struct nfs_server *server = NFS_SB(vfsmnt->mnt_sb); | 589 | struct nfs_server *server = NFS_SB(vfsmnt->mnt_sb); |
590 | struct rpc_clnt *rpc; | 590 | struct rpc_clnt *rpc; |
591 | 591 | ||
592 | shrink_submounts(vfsmnt, &nfs_automount_list); | ||
593 | |||
594 | if (!(flags & MNT_FORCE)) | 592 | if (!(flags & MNT_FORCE)) |
595 | return; | 593 | return; |
596 | /* -EIO all pending I/O */ | 594 | /* -EIO all pending I/O */ |
@@ -335,7 +335,7 @@ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length) | |||
335 | { | 335 | { |
336 | long ret = do_sys_ftruncate(fd, length, 1); | 336 | long ret = do_sys_ftruncate(fd, length, 1); |
337 | /* avoid REGPARM breakage on x86: */ | 337 | /* avoid REGPARM breakage on x86: */ |
338 | prevent_tail_call(ret); | 338 | asmlinkage_protect(2, ret, fd, length); |
339 | return ret; | 339 | return ret; |
340 | } | 340 | } |
341 | 341 | ||
@@ -350,7 +350,7 @@ asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length) | |||
350 | { | 350 | { |
351 | long ret = do_sys_ftruncate(fd, length, 0); | 351 | long ret = do_sys_ftruncate(fd, length, 0); |
352 | /* avoid REGPARM breakage on x86: */ | 352 | /* avoid REGPARM breakage on x86: */ |
353 | prevent_tail_call(ret); | 353 | asmlinkage_protect(2, ret, fd, length); |
354 | return ret; | 354 | return ret; |
355 | } | 355 | } |
356 | #endif | 356 | #endif |
@@ -1067,7 +1067,7 @@ asmlinkage long sys_open(const char __user *filename, int flags, int mode) | |||
1067 | 1067 | ||
1068 | ret = do_sys_open(AT_FDCWD, filename, flags, mode); | 1068 | ret = do_sys_open(AT_FDCWD, filename, flags, mode); |
1069 | /* avoid REGPARM breakage on x86: */ | 1069 | /* avoid REGPARM breakage on x86: */ |
1070 | prevent_tail_call(ret); | 1070 | asmlinkage_protect(3, ret, filename, flags, mode); |
1071 | return ret; | 1071 | return ret; |
1072 | } | 1072 | } |
1073 | 1073 | ||
@@ -1081,7 +1081,7 @@ asmlinkage long sys_openat(int dfd, const char __user *filename, int flags, | |||
1081 | 1081 | ||
1082 | ret = do_sys_open(dfd, filename, flags, mode); | 1082 | ret = do_sys_open(dfd, filename, flags, mode); |
1083 | /* avoid REGPARM breakage on x86: */ | 1083 | /* avoid REGPARM breakage on x86: */ |
1084 | prevent_tail_call(ret); | 1084 | asmlinkage_protect(4, ret, dfd, filename, flags, mode); |
1085 | return ret; | 1085 | return ret; |
1086 | } | 1086 | } |
1087 | 1087 | ||
diff --git a/fs/pnode.c b/fs/pnode.c index 05ba692bc540..1d8f5447f3f7 100644 --- a/fs/pnode.c +++ b/fs/pnode.c | |||
@@ -225,7 +225,7 @@ out: | |||
225 | */ | 225 | */ |
226 | static inline int do_refcount_check(struct vfsmount *mnt, int count) | 226 | static inline int do_refcount_check(struct vfsmount *mnt, int count) |
227 | { | 227 | { |
228 | int mycount = atomic_read(&mnt->mnt_count); | 228 | int mycount = atomic_read(&mnt->mnt_count) - mnt->mnt_ghosts; |
229 | return (mycount > count); | 229 | return (mycount > count); |
230 | } | 230 | } |
231 | 231 | ||
diff --git a/fs/reiserfs/do_balan.c b/fs/reiserfs/do_balan.c index f85c5cf4934c..7ee4208793b6 100644 --- a/fs/reiserfs/do_balan.c +++ b/fs/reiserfs/do_balan.c | |||
@@ -283,7 +283,7 @@ static int balance_leaf(struct tree_balance *tb, struct item_head *ih, /* item h | |||
283 | return balance_leaf_when_delete(tb, flag); | 283 | return balance_leaf_when_delete(tb, flag); |
284 | 284 | ||
285 | zeros_num = 0; | 285 | zeros_num = 0; |
286 | if (flag == M_INSERT && body == 0) | 286 | if (flag == M_INSERT && !body) |
287 | zeros_num = ih_item_len(ih); | 287 | zeros_num = ih_item_len(ih); |
288 | 288 | ||
289 | pos_in_item = tb->tb_path->pos_in_item; | 289 | pos_in_item = tb->tb_path->pos_in_item; |
@@ -1728,7 +1728,7 @@ struct buffer_head *get_FEB(struct tree_balance *tb) | |||
1728 | struct buffer_info bi; | 1728 | struct buffer_info bi; |
1729 | 1729 | ||
1730 | for (i = 0; i < MAX_FEB_SIZE; i++) | 1730 | for (i = 0; i < MAX_FEB_SIZE; i++) |
1731 | if (tb->FEB[i] != 0) | 1731 | if (tb->FEB[i] != NULL) |
1732 | break; | 1732 | break; |
1733 | 1733 | ||
1734 | if (i == MAX_FEB_SIZE) | 1734 | if (i == MAX_FEB_SIZE) |
@@ -1827,7 +1827,7 @@ int get_left_neighbor_position(struct tree_balance *tb, int h) | |||
1827 | { | 1827 | { |
1828 | int Sh_position = PATH_H_POSITION(tb->tb_path, h + 1); | 1828 | int Sh_position = PATH_H_POSITION(tb->tb_path, h + 1); |
1829 | 1829 | ||
1830 | RFALSE(PATH_H_PPARENT(tb->tb_path, h) == 0 || tb->FL[h] == 0, | 1830 | RFALSE(PATH_H_PPARENT(tb->tb_path, h) == NULL || tb->FL[h] == NULL, |
1831 | "vs-12325: FL[%d](%p) or F[%d](%p) does not exist", | 1831 | "vs-12325: FL[%d](%p) or F[%d](%p) does not exist", |
1832 | h, tb->FL[h], h, PATH_H_PPARENT(tb->tb_path, h)); | 1832 | h, tb->FL[h], h, PATH_H_PPARENT(tb->tb_path, h)); |
1833 | 1833 | ||
@@ -1841,7 +1841,7 @@ int get_right_neighbor_position(struct tree_balance *tb, int h) | |||
1841 | { | 1841 | { |
1842 | int Sh_position = PATH_H_POSITION(tb->tb_path, h + 1); | 1842 | int Sh_position = PATH_H_POSITION(tb->tb_path, h + 1); |
1843 | 1843 | ||
1844 | RFALSE(PATH_H_PPARENT(tb->tb_path, h) == 0 || tb->FR[h] == 0, | 1844 | RFALSE(PATH_H_PPARENT(tb->tb_path, h) == NULL || tb->FR[h] == NULL, |
1845 | "vs-12330: F[%d](%p) or FR[%d](%p) does not exist", | 1845 | "vs-12330: F[%d](%p) or FR[%d](%p) does not exist", |
1846 | h, PATH_H_PPARENT(tb->tb_path, h), h, tb->FR[h]); | 1846 | h, PATH_H_PPARENT(tb->tb_path, h), h, tb->FR[h]); |
1847 | 1847 | ||
diff --git a/fs/reiserfs/fix_node.c b/fs/reiserfs/fix_node.c index 0ee35c6c9b72..07d05e0842b7 100644 --- a/fs/reiserfs/fix_node.c +++ b/fs/reiserfs/fix_node.c | |||
@@ -153,7 +153,7 @@ static void create_virtual_node(struct tree_balance *tb, int h) | |||
153 | if (vn->vn_mode == M_INSERT) { | 153 | if (vn->vn_mode == M_INSERT) { |
154 | struct virtual_item *vi = vn->vn_vi + vn->vn_affected_item_num; | 154 | struct virtual_item *vi = vn->vn_vi + vn->vn_affected_item_num; |
155 | 155 | ||
156 | RFALSE(vn->vn_ins_ih == 0, | 156 | RFALSE(vn->vn_ins_ih == NULL, |
157 | "vs-8040: item header of inserted item is not specified"); | 157 | "vs-8040: item header of inserted item is not specified"); |
158 | vi->vi_item_len = tb->insert_size[0]; | 158 | vi->vi_item_len = tb->insert_size[0]; |
159 | vi->vi_ih = vn->vn_ins_ih; | 159 | vi->vi_ih = vn->vn_ins_ih; |
@@ -857,7 +857,8 @@ static int get_lfree(struct tree_balance *tb, int h) | |||
857 | struct buffer_head *l, *f; | 857 | struct buffer_head *l, *f; |
858 | int order; | 858 | int order; |
859 | 859 | ||
860 | if ((f = PATH_H_PPARENT(tb->tb_path, h)) == 0 || (l = tb->FL[h]) == 0) | 860 | if ((f = PATH_H_PPARENT(tb->tb_path, h)) == NULL || |
861 | (l = tb->FL[h]) == NULL) | ||
861 | return 0; | 862 | return 0; |
862 | 863 | ||
863 | if (f == l) | 864 | if (f == l) |
@@ -878,7 +879,8 @@ static int get_rfree(struct tree_balance *tb, int h) | |||
878 | struct buffer_head *r, *f; | 879 | struct buffer_head *r, *f; |
879 | int order; | 880 | int order; |
880 | 881 | ||
881 | if ((f = PATH_H_PPARENT(tb->tb_path, h)) == 0 || (r = tb->FR[h]) == 0) | 882 | if ((f = PATH_H_PPARENT(tb->tb_path, h)) == NULL || |
883 | (r = tb->FR[h]) == NULL) | ||
882 | return 0; | 884 | return 0; |
883 | 885 | ||
884 | if (f == r) | 886 | if (f == r) |
diff --git a/fs/reiserfs/lbalance.c b/fs/reiserfs/lbalance.c index 281f8061ac58..6de060a6aa7f 100644 --- a/fs/reiserfs/lbalance.c +++ b/fs/reiserfs/lbalance.c | |||
@@ -626,7 +626,7 @@ static void leaf_define_dest_src_infos(int shift_mode, struct tree_balance *tb, | |||
626 | "vs-10250: leaf_define_dest_src_infos: shift type is unknown (%d)", | 626 | "vs-10250: leaf_define_dest_src_infos: shift type is unknown (%d)", |
627 | shift_mode); | 627 | shift_mode); |
628 | } | 628 | } |
629 | RFALSE(src_bi->bi_bh == 0 || dest_bi->bi_bh == 0, | 629 | RFALSE(!src_bi->bi_bh || !dest_bi->bi_bh, |
630 | "vs-10260: mode==%d, source (%p) or dest (%p) buffer is initialized incorrectly", | 630 | "vs-10260: mode==%d, source (%p) or dest (%p) buffer is initialized incorrectly", |
631 | shift_mode, src_bi->bi_bh, dest_bi->bi_bh); | 631 | shift_mode, src_bi->bi_bh, dest_bi->bi_bh); |
632 | } | 632 | } |
diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c index b378eea332ca..8867533cb727 100644 --- a/fs/reiserfs/namei.c +++ b/fs/reiserfs/namei.c | |||
@@ -452,7 +452,7 @@ static int reiserfs_add_entry(struct reiserfs_transaction_handle *th, | |||
452 | buflen = DEH_SIZE + ROUND_UP(namelen); | 452 | buflen = DEH_SIZE + ROUND_UP(namelen); |
453 | if (buflen > sizeof(small_buf)) { | 453 | if (buflen > sizeof(small_buf)) { |
454 | buffer = kmalloc(buflen, GFP_NOFS); | 454 | buffer = kmalloc(buflen, GFP_NOFS); |
455 | if (buffer == 0) | 455 | if (!buffer) |
456 | return -ENOMEM; | 456 | return -ENOMEM; |
457 | } else | 457 | } else |
458 | buffer = small_buf; | 458 | buffer = small_buf; |
diff --git a/fs/signalfd.c b/fs/signalfd.c index cb2b63ae0bf4..8ead0db35933 100644 --- a/fs/signalfd.c +++ b/fs/signalfd.c | |||
@@ -111,9 +111,14 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, | |||
111 | err |= __put_user(kinfo->si_uid, &uinfo->ssi_uid); | 111 | err |= __put_user(kinfo->si_uid, &uinfo->ssi_uid); |
112 | err |= __put_user((long) kinfo->si_ptr, &uinfo->ssi_ptr); | 112 | err |= __put_user((long) kinfo->si_ptr, &uinfo->ssi_ptr); |
113 | break; | 113 | break; |
114 | default: /* this is just in case for now ... */ | 114 | default: |
115 | /* | ||
116 | * This case catches also the signals queued by sigqueue(). | ||
117 | */ | ||
115 | err |= __put_user(kinfo->si_pid, &uinfo->ssi_pid); | 118 | err |= __put_user(kinfo->si_pid, &uinfo->ssi_pid); |
116 | err |= __put_user(kinfo->si_uid, &uinfo->ssi_uid); | 119 | err |= __put_user(kinfo->si_uid, &uinfo->ssi_uid); |
120 | err |= __put_user((long) kinfo->si_ptr, &uinfo->ssi_ptr); | ||
121 | err |= __put_user(kinfo->si_int, &uinfo->ssi_int); | ||
117 | break; | 122 | break; |
118 | } | 123 | } |
119 | 124 | ||
diff --git a/fs/smbfs/smbiod.c b/fs/smbfs/smbiod.c index fae8e85af0ed..6bd9b691a463 100644 --- a/fs/smbfs/smbiod.c +++ b/fs/smbfs/smbiod.c | |||
@@ -206,7 +206,7 @@ int smbiod_retry(struct smb_sb_info *server) | |||
206 | 206 | ||
207 | smb_close_socket(server); | 207 | smb_close_socket(server); |
208 | 208 | ||
209 | if (pid == 0) { | 209 | if (!pid) { |
210 | /* FIXME: this is fatal, umount? */ | 210 | /* FIXME: this is fatal, umount? */ |
211 | printk(KERN_ERR "smb_retry: no connection process\n"); | 211 | printk(KERN_ERR "smb_retry: no connection process\n"); |
212 | server->state = CONN_RETRIED; | 212 | server->state = CONN_RETRIED; |
diff --git a/fs/splice.c b/fs/splice.c index 0670c915cd35..eeb1a86a7014 100644 --- a/fs/splice.c +++ b/fs/splice.c | |||
@@ -320,7 +320,7 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, | |||
320 | break; | 320 | break; |
321 | 321 | ||
322 | error = add_to_page_cache_lru(page, mapping, index, | 322 | error = add_to_page_cache_lru(page, mapping, index, |
323 | GFP_KERNEL); | 323 | mapping_gfp_mask(mapping)); |
324 | if (unlikely(error)) { | 324 | if (unlikely(error)) { |
325 | page_cache_release(page); | 325 | page_cache_release(page); |
326 | if (error == -EEXIST) | 326 | if (error == -EEXIST) |
@@ -370,8 +370,10 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, | |||
370 | * for an in-flight io page | 370 | * for an in-flight io page |
371 | */ | 371 | */ |
372 | if (flags & SPLICE_F_NONBLOCK) { | 372 | if (flags & SPLICE_F_NONBLOCK) { |
373 | if (TestSetPageLocked(page)) | 373 | if (TestSetPageLocked(page)) { |
374 | error = -EAGAIN; | ||
374 | break; | 375 | break; |
376 | } | ||
375 | } else | 377 | } else |
376 | lock_page(page); | 378 | lock_page(page); |
377 | 379 | ||
@@ -479,9 +481,8 @@ ssize_t generic_file_splice_read(struct file *in, loff_t *ppos, | |||
479 | struct pipe_inode_info *pipe, size_t len, | 481 | struct pipe_inode_info *pipe, size_t len, |
480 | unsigned int flags) | 482 | unsigned int flags) |
481 | { | 483 | { |
482 | ssize_t spliced; | ||
483 | int ret; | ||
484 | loff_t isize, left; | 484 | loff_t isize, left; |
485 | int ret; | ||
485 | 486 | ||
486 | isize = i_size_read(in->f_mapping->host); | 487 | isize = i_size_read(in->f_mapping->host); |
487 | if (unlikely(*ppos >= isize)) | 488 | if (unlikely(*ppos >= isize)) |
@@ -491,29 +492,9 @@ ssize_t generic_file_splice_read(struct file *in, loff_t *ppos, | |||
491 | if (unlikely(left < len)) | 492 | if (unlikely(left < len)) |
492 | len = left; | 493 | len = left; |
493 | 494 | ||
494 | ret = 0; | 495 | ret = __generic_file_splice_read(in, ppos, pipe, len, flags); |
495 | spliced = 0; | 496 | if (ret > 0) |
496 | while (len && !spliced) { | ||
497 | ret = __generic_file_splice_read(in, ppos, pipe, len, flags); | ||
498 | |||
499 | if (ret < 0) | ||
500 | break; | ||
501 | else if (!ret) { | ||
502 | if (spliced) | ||
503 | break; | ||
504 | if (flags & SPLICE_F_NONBLOCK) { | ||
505 | ret = -EAGAIN; | ||
506 | break; | ||
507 | } | ||
508 | } | ||
509 | |||
510 | *ppos += ret; | 497 | *ppos += ret; |
511 | len -= ret; | ||
512 | spliced += ret; | ||
513 | } | ||
514 | |||
515 | if (spliced) | ||
516 | return spliced; | ||
517 | 498 | ||
518 | return ret; | 499 | return ret; |
519 | } | 500 | } |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index a9952e490ac9..f34bd010eb51 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c | |||
@@ -732,7 +732,7 @@ xfs_ioctl( | |||
732 | * Only allow the sys admin to reserve space unless | 732 | * Only allow the sys admin to reserve space unless |
733 | * unwritten extents are enabled. | 733 | * unwritten extents are enabled. |
734 | */ | 734 | */ |
735 | if (!XFS_SB_VERSION_HASEXTFLGBIT(&mp->m_sb) && | 735 | if (!xfs_sb_version_hasextflgbit(&mp->m_sb) && |
736 | !capable(CAP_SYS_ADMIN)) | 736 | !capable(CAP_SYS_ADMIN)) |
737 | return -EPERM; | 737 | return -EPERM; |
738 | 738 | ||
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 1f3da5b8657b..8e9c5ae6504d 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -1405,13 +1405,13 @@ xfs_qm_qino_alloc( | |||
1405 | #if defined(DEBUG) && defined(XFS_LOUD_RECOVERY) | 1405 | #if defined(DEBUG) && defined(XFS_LOUD_RECOVERY) |
1406 | unsigned oldv = mp->m_sb.sb_versionnum; | 1406 | unsigned oldv = mp->m_sb.sb_versionnum; |
1407 | #endif | 1407 | #endif |
1408 | ASSERT(!XFS_SB_VERSION_HASQUOTA(&mp->m_sb)); | 1408 | ASSERT(!xfs_sb_version_hasquota(&mp->m_sb)); |
1409 | ASSERT((sbfields & (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | | 1409 | ASSERT((sbfields & (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | |
1410 | XFS_SB_GQUOTINO | XFS_SB_QFLAGS)) == | 1410 | XFS_SB_GQUOTINO | XFS_SB_QFLAGS)) == |
1411 | (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | | 1411 | (XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | |
1412 | XFS_SB_GQUOTINO | XFS_SB_QFLAGS)); | 1412 | XFS_SB_GQUOTINO | XFS_SB_QFLAGS)); |
1413 | 1413 | ||
1414 | XFS_SB_VERSION_ADDQUOTA(&mp->m_sb); | 1414 | xfs_sb_version_addquota(&mp->m_sb); |
1415 | mp->m_sb.sb_uquotino = NULLFSINO; | 1415 | mp->m_sb.sb_uquotino = NULLFSINO; |
1416 | mp->m_sb.sb_gquotino = NULLFSINO; | 1416 | mp->m_sb.sb_gquotino = NULLFSINO; |
1417 | 1417 | ||
@@ -1954,7 +1954,7 @@ xfs_qm_init_quotainos( | |||
1954 | /* | 1954 | /* |
1955 | * Get the uquota and gquota inodes | 1955 | * Get the uquota and gquota inodes |
1956 | */ | 1956 | */ |
1957 | if (XFS_SB_VERSION_HASQUOTA(&mp->m_sb)) { | 1957 | if (xfs_sb_version_hasquota(&mp->m_sb)) { |
1958 | if (XFS_IS_UQUOTA_ON(mp) && | 1958 | if (XFS_IS_UQUOTA_ON(mp) && |
1959 | mp->m_sb.sb_uquotino != NULLFSINO) { | 1959 | mp->m_sb.sb_uquotino != NULLFSINO) { |
1960 | ASSERT(mp->m_sb.sb_uquotino > 0); | 1960 | ASSERT(mp->m_sb.sb_uquotino > 0); |
diff --git a/fs/xfs/quota/xfs_qm_bhv.c b/fs/xfs/quota/xfs_qm_bhv.c index 97bb32937585..f4f6c4c861d7 100644 --- a/fs/xfs/quota/xfs_qm_bhv.c +++ b/fs/xfs/quota/xfs_qm_bhv.c | |||
@@ -118,7 +118,7 @@ xfs_qm_newmount( | |||
118 | *quotaflags = 0; | 118 | *quotaflags = 0; |
119 | *needquotamount = B_FALSE; | 119 | *needquotamount = B_FALSE; |
120 | 120 | ||
121 | quotaondisk = XFS_SB_VERSION_HASQUOTA(&mp->m_sb) && | 121 | quotaondisk = xfs_sb_version_hasquota(&mp->m_sb) && |
122 | (mp->m_sb.sb_qflags & XFS_ALL_QUOTA_ACCT); | 122 | (mp->m_sb.sb_qflags & XFS_ALL_QUOTA_ACCT); |
123 | 123 | ||
124 | if (quotaondisk) { | 124 | if (quotaondisk) { |
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 2cc5886cfe85..d2b8be7e75f9 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c | |||
@@ -377,7 +377,7 @@ xfs_qm_scall_trunc_qfiles( | |||
377 | if (!capable(CAP_SYS_ADMIN)) | 377 | if (!capable(CAP_SYS_ADMIN)) |
378 | return XFS_ERROR(EPERM); | 378 | return XFS_ERROR(EPERM); |
379 | error = 0; | 379 | error = 0; |
380 | if (!XFS_SB_VERSION_HASQUOTA(&mp->m_sb) || flags == 0) { | 380 | if (!xfs_sb_version_hasquota(&mp->m_sb) || flags == 0) { |
381 | qdprintk("qtrunc flags=%x m_qflags=%x\n", flags, mp->m_qflags); | 381 | qdprintk("qtrunc flags=%x m_qflags=%x\n", flags, mp->m_qflags); |
382 | return XFS_ERROR(EINVAL); | 382 | return XFS_ERROR(EINVAL); |
383 | } | 383 | } |
@@ -522,7 +522,7 @@ xfs_qm_scall_getqstat( | |||
522 | memset(out, 0, sizeof(fs_quota_stat_t)); | 522 | memset(out, 0, sizeof(fs_quota_stat_t)); |
523 | 523 | ||
524 | out->qs_version = FS_QSTAT_VERSION; | 524 | out->qs_version = FS_QSTAT_VERSION; |
525 | if (! XFS_SB_VERSION_HASQUOTA(&mp->m_sb)) { | 525 | if (!xfs_sb_version_hasquota(&mp->m_sb)) { |
526 | out->qs_uquota.qfs_ino = NULLFSINO; | 526 | out->qs_uquota.qfs_ino = NULLFSINO; |
527 | out->qs_gquota.qfs_ino = NULLFSINO; | 527 | out->qs_gquota.qfs_ino = NULLFSINO; |
528 | return (0); | 528 | return (0); |
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index b08e2a2a8add..96ba6aa4ed8c 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c | |||
@@ -227,10 +227,10 @@ STATIC void | |||
227 | xfs_sbversion_add_attr2(xfs_mount_t *mp, xfs_trans_t *tp) | 227 | xfs_sbversion_add_attr2(xfs_mount_t *mp, xfs_trans_t *tp) |
228 | { | 228 | { |
229 | if ((mp->m_flags & XFS_MOUNT_ATTR2) && | 229 | if ((mp->m_flags & XFS_MOUNT_ATTR2) && |
230 | !(XFS_SB_VERSION_HASATTR2(&mp->m_sb))) { | 230 | !(xfs_sb_version_hasattr2(&mp->m_sb))) { |
231 | spin_lock(&mp->m_sb_lock); | 231 | spin_lock(&mp->m_sb_lock); |
232 | if (!XFS_SB_VERSION_HASATTR2(&mp->m_sb)) { | 232 | if (!xfs_sb_version_hasattr2(&mp->m_sb)) { |
233 | XFS_SB_VERSION_ADDATTR2(&mp->m_sb); | 233 | xfs_sb_version_addattr2(&mp->m_sb); |
234 | spin_unlock(&mp->m_sb_lock); | 234 | spin_unlock(&mp->m_sb_lock); |
235 | xfs_mod_sb(tp, XFS_SB_VERSIONNUM | XFS_SB_FEATURES2); | 235 | xfs_mod_sb(tp, XFS_SB_VERSIONNUM | XFS_SB_FEATURES2); |
236 | } else | 236 | } else |
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 1c0a5a585a82..2def273855a2 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -4047,17 +4047,17 @@ xfs_bmap_add_attrfork( | |||
4047 | xfs_trans_log_inode(tp, ip, logflags); | 4047 | xfs_trans_log_inode(tp, ip, logflags); |
4048 | if (error) | 4048 | if (error) |
4049 | goto error2; | 4049 | goto error2; |
4050 | if (!XFS_SB_VERSION_HASATTR(&mp->m_sb) || | 4050 | if (!xfs_sb_version_hasattr(&mp->m_sb) || |
4051 | (!XFS_SB_VERSION_HASATTR2(&mp->m_sb) && version == 2)) { | 4051 | (!xfs_sb_version_hasattr2(&mp->m_sb) && version == 2)) { |
4052 | __int64_t sbfields = 0; | 4052 | __int64_t sbfields = 0; |
4053 | 4053 | ||
4054 | spin_lock(&mp->m_sb_lock); | 4054 | spin_lock(&mp->m_sb_lock); |
4055 | if (!XFS_SB_VERSION_HASATTR(&mp->m_sb)) { | 4055 | if (!xfs_sb_version_hasattr(&mp->m_sb)) { |
4056 | XFS_SB_VERSION_ADDATTR(&mp->m_sb); | 4056 | xfs_sb_version_addattr(&mp->m_sb); |
4057 | sbfields |= XFS_SB_VERSIONNUM; | 4057 | sbfields |= XFS_SB_VERSIONNUM; |
4058 | } | 4058 | } |
4059 | if (!XFS_SB_VERSION_HASATTR2(&mp->m_sb) && version == 2) { | 4059 | if (!xfs_sb_version_hasattr2(&mp->m_sb) && version == 2) { |
4060 | XFS_SB_VERSION_ADDATTR2(&mp->m_sb); | 4060 | xfs_sb_version_addattr2(&mp->m_sb); |
4061 | sbfields |= (XFS_SB_VERSIONNUM | XFS_SB_FEATURES2); | 4061 | sbfields |= (XFS_SB_VERSIONNUM | XFS_SB_FEATURES2); |
4062 | } | 4062 | } |
4063 | if (sbfields) { | 4063 | if (sbfields) { |
@@ -5043,7 +5043,7 @@ xfs_bmapi( | |||
5043 | * A wasdelay extent has been initialized, so | 5043 | * A wasdelay extent has been initialized, so |
5044 | * shouldn't be flagged as unwritten. | 5044 | * shouldn't be flagged as unwritten. |
5045 | */ | 5045 | */ |
5046 | if (wr && XFS_SB_VERSION_HASEXTFLGBIT(&mp->m_sb)) { | 5046 | if (wr && xfs_sb_version_hasextflgbit(&mp->m_sb)) { |
5047 | if (!wasdelay && (flags & XFS_BMAPI_PREALLOC)) | 5047 | if (!wasdelay && (flags & XFS_BMAPI_PREALLOC)) |
5048 | got.br_state = XFS_EXT_UNWRITTEN; | 5048 | got.br_state = XFS_EXT_UNWRITTEN; |
5049 | } | 5049 | } |
@@ -5483,7 +5483,7 @@ xfs_bunmapi( | |||
5483 | * get rid of part of a realtime extent. | 5483 | * get rid of part of a realtime extent. |
5484 | */ | 5484 | */ |
5485 | if (del.br_state == XFS_EXT_UNWRITTEN || | 5485 | if (del.br_state == XFS_EXT_UNWRITTEN || |
5486 | !XFS_SB_VERSION_HASEXTFLGBIT(&mp->m_sb)) { | 5486 | !xfs_sb_version_hasextflgbit(&mp->m_sb)) { |
5487 | /* | 5487 | /* |
5488 | * This piece is unwritten, or we're not | 5488 | * This piece is unwritten, or we're not |
5489 | * using unwritten extents. Skip over it. | 5489 | * using unwritten extents. Skip over it. |
@@ -5535,7 +5535,7 @@ xfs_bunmapi( | |||
5535 | } else if ((del.br_startoff == start && | 5535 | } else if ((del.br_startoff == start && |
5536 | (del.br_state == XFS_EXT_UNWRITTEN || | 5536 | (del.br_state == XFS_EXT_UNWRITTEN || |
5537 | xfs_trans_get_block_res(tp) == 0)) || | 5537 | xfs_trans_get_block_res(tp) == 0)) || |
5538 | !XFS_SB_VERSION_HASEXTFLGBIT(&mp->m_sb)) { | 5538 | !xfs_sb_version_hasextflgbit(&mp->m_sb)) { |
5539 | /* | 5539 | /* |
5540 | * Can't make it unwritten. There isn't | 5540 | * Can't make it unwritten. There isn't |
5541 | * a full extent here so just skip it. | 5541 | * a full extent here so just skip it. |
diff --git a/fs/xfs/xfs_bmap_btree.h b/fs/xfs/xfs_bmap_btree.h index 2d950e975918..cd0d4b4bb816 100644 --- a/fs/xfs/xfs_bmap_btree.h +++ b/fs/xfs/xfs_bmap_btree.h | |||
@@ -120,7 +120,7 @@ typedef enum { | |||
120 | * Extent state and extent format macros. | 120 | * Extent state and extent format macros. |
121 | */ | 121 | */ |
122 | #define XFS_EXTFMT_INODE(x) \ | 122 | #define XFS_EXTFMT_INODE(x) \ |
123 | (XFS_SB_VERSION_HASEXTFLGBIT(&((x)->i_mount->m_sb)) ? \ | 123 | (xfs_sb_version_hasextflgbit(&((x)->i_mount->m_sb)) ? \ |
124 | XFS_EXTFMT_HASSTATE : XFS_EXTFMT_NOSTATE) | 124 | XFS_EXTFMT_HASSTATE : XFS_EXTFMT_NOSTATE) |
125 | #define ISUNWRITTEN(x) ((x)->br_state == XFS_EXT_UNWRITTEN) | 125 | #define ISUNWRITTEN(x) ((x)->br_state == XFS_EXT_UNWRITTEN) |
126 | 126 | ||
diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index be7c4251fa61..e92e73f0e6af 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c | |||
@@ -49,7 +49,7 @@ void | |||
49 | xfs_dir_mount( | 49 | xfs_dir_mount( |
50 | xfs_mount_t *mp) | 50 | xfs_mount_t *mp) |
51 | { | 51 | { |
52 | ASSERT(XFS_SB_VERSION_HASDIRV2(&mp->m_sb)); | 52 | ASSERT(xfs_sb_version_hasdirv2(&mp->m_sb)); |
53 | ASSERT((1 << (mp->m_sb.sb_blocklog + mp->m_sb.sb_dirblklog)) <= | 53 | ASSERT((1 << (mp->m_sb.sb_blocklog + mp->m_sb.sb_dirblklog)) <= |
54 | XFS_MAX_BLOCKSIZE); | 54 | XFS_MAX_BLOCKSIZE); |
55 | mp->m_dirblksize = 1 << (mp->m_sb.sb_blocklog + mp->m_sb.sb_dirblklog); | 55 | mp->m_dirblksize = 1 << (mp->m_sb.sb_blocklog + mp->m_sb.sb_dirblklog); |
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index eadc1591c795..d3a0f538d6a6 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
@@ -77,36 +77,36 @@ xfs_fs_geometry( | |||
77 | if (new_version >= 3) { | 77 | if (new_version >= 3) { |
78 | geo->version = XFS_FSOP_GEOM_VERSION; | 78 | geo->version = XFS_FSOP_GEOM_VERSION; |
79 | geo->flags = | 79 | geo->flags = |
80 | (XFS_SB_VERSION_HASATTR(&mp->m_sb) ? | 80 | (xfs_sb_version_hasattr(&mp->m_sb) ? |
81 | XFS_FSOP_GEOM_FLAGS_ATTR : 0) | | 81 | XFS_FSOP_GEOM_FLAGS_ATTR : 0) | |
82 | (XFS_SB_VERSION_HASNLINK(&mp->m_sb) ? | 82 | (xfs_sb_version_hasnlink(&mp->m_sb) ? |
83 | XFS_FSOP_GEOM_FLAGS_NLINK : 0) | | 83 | XFS_FSOP_GEOM_FLAGS_NLINK : 0) | |
84 | (XFS_SB_VERSION_HASQUOTA(&mp->m_sb) ? | 84 | (xfs_sb_version_hasquota(&mp->m_sb) ? |
85 | XFS_FSOP_GEOM_FLAGS_QUOTA : 0) | | 85 | XFS_FSOP_GEOM_FLAGS_QUOTA : 0) | |
86 | (XFS_SB_VERSION_HASALIGN(&mp->m_sb) ? | 86 | (xfs_sb_version_hasalign(&mp->m_sb) ? |
87 | XFS_FSOP_GEOM_FLAGS_IALIGN : 0) | | 87 | XFS_FSOP_GEOM_FLAGS_IALIGN : 0) | |
88 | (XFS_SB_VERSION_HASDALIGN(&mp->m_sb) ? | 88 | (xfs_sb_version_hasdalign(&mp->m_sb) ? |
89 | XFS_FSOP_GEOM_FLAGS_DALIGN : 0) | | 89 | XFS_FSOP_GEOM_FLAGS_DALIGN : 0) | |
90 | (XFS_SB_VERSION_HASSHARED(&mp->m_sb) ? | 90 | (xfs_sb_version_hasshared(&mp->m_sb) ? |
91 | XFS_FSOP_GEOM_FLAGS_SHARED : 0) | | 91 | XFS_FSOP_GEOM_FLAGS_SHARED : 0) | |
92 | (XFS_SB_VERSION_HASEXTFLGBIT(&mp->m_sb) ? | 92 | (xfs_sb_version_hasextflgbit(&mp->m_sb) ? |
93 | XFS_FSOP_GEOM_FLAGS_EXTFLG : 0) | | 93 | XFS_FSOP_GEOM_FLAGS_EXTFLG : 0) | |
94 | (XFS_SB_VERSION_HASDIRV2(&mp->m_sb) ? | 94 | (xfs_sb_version_hasdirv2(&mp->m_sb) ? |
95 | XFS_FSOP_GEOM_FLAGS_DIRV2 : 0) | | 95 | XFS_FSOP_GEOM_FLAGS_DIRV2 : 0) | |
96 | (XFS_SB_VERSION_HASSECTOR(&mp->m_sb) ? | 96 | (xfs_sb_version_hassector(&mp->m_sb) ? |
97 | XFS_FSOP_GEOM_FLAGS_SECTOR : 0) | | 97 | XFS_FSOP_GEOM_FLAGS_SECTOR : 0) | |
98 | (xfs_sb_version_haslazysbcount(&mp->m_sb) ? | 98 | (xfs_sb_version_haslazysbcount(&mp->m_sb) ? |
99 | XFS_FSOP_GEOM_FLAGS_LAZYSB : 0) | | 99 | XFS_FSOP_GEOM_FLAGS_LAZYSB : 0) | |
100 | (XFS_SB_VERSION_HASATTR2(&mp->m_sb) ? | 100 | (xfs_sb_version_hasattr2(&mp->m_sb) ? |
101 | XFS_FSOP_GEOM_FLAGS_ATTR2 : 0); | 101 | XFS_FSOP_GEOM_FLAGS_ATTR2 : 0); |
102 | geo->logsectsize = XFS_SB_VERSION_HASSECTOR(&mp->m_sb) ? | 102 | geo->logsectsize = xfs_sb_version_hassector(&mp->m_sb) ? |
103 | mp->m_sb.sb_logsectsize : BBSIZE; | 103 | mp->m_sb.sb_logsectsize : BBSIZE; |
104 | geo->rtsectsize = mp->m_sb.sb_blocksize; | 104 | geo->rtsectsize = mp->m_sb.sb_blocksize; |
105 | geo->dirblocksize = mp->m_dirblksize; | 105 | geo->dirblocksize = mp->m_dirblksize; |
106 | } | 106 | } |
107 | if (new_version >= 4) { | 107 | if (new_version >= 4) { |
108 | geo->flags |= | 108 | geo->flags |= |
109 | (XFS_SB_VERSION_HASLOGV2(&mp->m_sb) ? | 109 | (xfs_sb_version_haslogv2(&mp->m_sb) ? |
110 | XFS_FSOP_GEOM_FLAGS_LOGV2 : 0); | 110 | XFS_FSOP_GEOM_FLAGS_LOGV2 : 0); |
111 | geo->logsunit = mp->m_sb.sb_logsunit; | 111 | geo->logsunit = mp->m_sb.sb_logsunit; |
112 | } | 112 | } |
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index db9d5fa600af..5a146cb22980 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c | |||
@@ -191,7 +191,7 @@ xfs_ialloc_ag_alloc( | |||
191 | ASSERT(!(args.mp->m_flags & XFS_MOUNT_NOALIGN)); | 191 | ASSERT(!(args.mp->m_flags & XFS_MOUNT_NOALIGN)); |
192 | args.alignment = args.mp->m_dalign; | 192 | args.alignment = args.mp->m_dalign; |
193 | isaligned = 1; | 193 | isaligned = 1; |
194 | } else if (XFS_SB_VERSION_HASALIGN(&args.mp->m_sb) && | 194 | } else if (xfs_sb_version_hasalign(&args.mp->m_sb) && |
195 | args.mp->m_sb.sb_inoalignmt >= | 195 | args.mp->m_sb.sb_inoalignmt >= |
196 | XFS_B_TO_FSBT(args.mp, | 196 | XFS_B_TO_FSBT(args.mp, |
197 | XFS_INODE_CLUSTER_SIZE(args.mp))) | 197 | XFS_INODE_CLUSTER_SIZE(args.mp))) |
@@ -230,7 +230,7 @@ xfs_ialloc_ag_alloc( | |||
230 | args.agbno = be32_to_cpu(agi->agi_root); | 230 | args.agbno = be32_to_cpu(agi->agi_root); |
231 | args.fsbno = XFS_AGB_TO_FSB(args.mp, | 231 | args.fsbno = XFS_AGB_TO_FSB(args.mp, |
232 | be32_to_cpu(agi->agi_seqno), args.agbno); | 232 | be32_to_cpu(agi->agi_seqno), args.agbno); |
233 | if (XFS_SB_VERSION_HASALIGN(&args.mp->m_sb) && | 233 | if (xfs_sb_version_hasalign(&args.mp->m_sb) && |
234 | args.mp->m_sb.sb_inoalignmt >= | 234 | args.mp->m_sb.sb_inoalignmt >= |
235 | XFS_B_TO_FSBT(args.mp, XFS_INODE_CLUSTER_SIZE(args.mp))) | 235 | XFS_B_TO_FSBT(args.mp, XFS_INODE_CLUSTER_SIZE(args.mp))) |
236 | args.alignment = args.mp->m_sb.sb_inoalignmt; | 236 | args.alignment = args.mp->m_sb.sb_inoalignmt; |
@@ -271,7 +271,7 @@ xfs_ialloc_ag_alloc( | |||
271 | * use the old version so that old kernels will continue to be | 271 | * use the old version so that old kernels will continue to be |
272 | * able to use the file system. | 272 | * able to use the file system. |
273 | */ | 273 | */ |
274 | if (XFS_SB_VERSION_HASNLINK(&args.mp->m_sb)) | 274 | if (xfs_sb_version_hasnlink(&args.mp->m_sb)) |
275 | version = XFS_DINODE_VERSION_2; | 275 | version = XFS_DINODE_VERSION_2; |
276 | else | 276 | else |
277 | version = XFS_DINODE_VERSION_1; | 277 | version = XFS_DINODE_VERSION_1; |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index a550546a7083..f43a6e01d68f 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -1147,7 +1147,7 @@ xfs_ialloc( | |||
1147 | * the inode version number now. This way we only do the conversion | 1147 | * the inode version number now. This way we only do the conversion |
1148 | * here rather than here and in the flush/logging code. | 1148 | * here rather than here and in the flush/logging code. |
1149 | */ | 1149 | */ |
1150 | if (XFS_SB_VERSION_HASNLINK(&tp->t_mountp->m_sb) && | 1150 | if (xfs_sb_version_hasnlink(&tp->t_mountp->m_sb) && |
1151 | ip->i_d.di_version == XFS_DINODE_VERSION_1) { | 1151 | ip->i_d.di_version == XFS_DINODE_VERSION_1) { |
1152 | ip->i_d.di_version = XFS_DINODE_VERSION_2; | 1152 | ip->i_d.di_version = XFS_DINODE_VERSION_2; |
1153 | /* | 1153 | /* |
@@ -3434,9 +3434,9 @@ xfs_iflush_int( | |||
3434 | * has been updated, then make the conversion permanent. | 3434 | * has been updated, then make the conversion permanent. |
3435 | */ | 3435 | */ |
3436 | ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || | 3436 | ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || |
3437 | XFS_SB_VERSION_HASNLINK(&mp->m_sb)); | 3437 | xfs_sb_version_hasnlink(&mp->m_sb)); |
3438 | if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { | 3438 | if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { |
3439 | if (!XFS_SB_VERSION_HASNLINK(&mp->m_sb)) { | 3439 | if (!xfs_sb_version_hasnlink(&mp->m_sb)) { |
3440 | /* | 3440 | /* |
3441 | * Convert it back. | 3441 | * Convert it back. |
3442 | */ | 3442 | */ |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index 034ca7202295..2c775b4ae9e6 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -296,9 +296,9 @@ xfs_inode_item_format( | |||
296 | */ | 296 | */ |
297 | mp = ip->i_mount; | 297 | mp = ip->i_mount; |
298 | ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || | 298 | ASSERT(ip->i_d.di_version == XFS_DINODE_VERSION_1 || |
299 | XFS_SB_VERSION_HASNLINK(&mp->m_sb)); | 299 | xfs_sb_version_hasnlink(&mp->m_sb)); |
300 | if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { | 300 | if (ip->i_d.di_version == XFS_DINODE_VERSION_1) { |
301 | if (!XFS_SB_VERSION_HASNLINK(&mp->m_sb)) { | 301 | if (!xfs_sb_version_hasnlink(&mp->m_sb)) { |
302 | /* | 302 | /* |
303 | * Convert it back. | 303 | * Convert it back. |
304 | */ | 304 | */ |
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 658aab6b1bbf..f615e04364f4 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -45,7 +45,7 @@ xfs_internal_inum( | |||
45 | xfs_ino_t ino) | 45 | xfs_ino_t ino) |
46 | { | 46 | { |
47 | return (ino == mp->m_sb.sb_rbmino || ino == mp->m_sb.sb_rsumino || | 47 | return (ino == mp->m_sb.sb_rbmino || ino == mp->m_sb.sb_rsumino || |
48 | (XFS_SB_VERSION_HASQUOTA(&mp->m_sb) && | 48 | (xfs_sb_version_hasquota(&mp->m_sb) && |
49 | (ino == mp->m_sb.sb_uquotino || ino == mp->m_sb.sb_gquotino))); | 49 | (ino == mp->m_sb.sb_uquotino || ino == mp->m_sb.sb_gquotino))); |
50 | } | 50 | } |
51 | 51 | ||
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index a75edca1860f..31f2b04f2c97 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c | |||
@@ -1090,7 +1090,7 @@ xlog_get_iclog_buffer_size(xfs_mount_t *mp, | |||
1090 | size >>= 1; | 1090 | size >>= 1; |
1091 | } | 1091 | } |
1092 | 1092 | ||
1093 | if (XFS_SB_VERSION_HASLOGV2(&mp->m_sb)) { | 1093 | if (xfs_sb_version_haslogv2(&mp->m_sb)) { |
1094 | /* # headers = size / 32K | 1094 | /* # headers = size / 32K |
1095 | * one header holds cycles from 32K of data | 1095 | * one header holds cycles from 32K of data |
1096 | */ | 1096 | */ |
@@ -1186,13 +1186,13 @@ xlog_alloc_log(xfs_mount_t *mp, | |||
1186 | log->l_grant_reserve_cycle = 1; | 1186 | log->l_grant_reserve_cycle = 1; |
1187 | log->l_grant_write_cycle = 1; | 1187 | log->l_grant_write_cycle = 1; |
1188 | 1188 | ||
1189 | if (XFS_SB_VERSION_HASSECTOR(&mp->m_sb)) { | 1189 | if (xfs_sb_version_hassector(&mp->m_sb)) { |
1190 | log->l_sectbb_log = mp->m_sb.sb_logsectlog - BBSHIFT; | 1190 | log->l_sectbb_log = mp->m_sb.sb_logsectlog - BBSHIFT; |
1191 | ASSERT(log->l_sectbb_log <= mp->m_sectbb_log); | 1191 | ASSERT(log->l_sectbb_log <= mp->m_sectbb_log); |
1192 | /* for larger sector sizes, must have v2 or external log */ | 1192 | /* for larger sector sizes, must have v2 or external log */ |
1193 | ASSERT(log->l_sectbb_log == 0 || | 1193 | ASSERT(log->l_sectbb_log == 0 || |
1194 | log->l_logBBstart == 0 || | 1194 | log->l_logBBstart == 0 || |
1195 | XFS_SB_VERSION_HASLOGV2(&mp->m_sb)); | 1195 | xfs_sb_version_haslogv2(&mp->m_sb)); |
1196 | ASSERT(mp->m_sb.sb_logsectlog >= BBSHIFT); | 1196 | ASSERT(mp->m_sb.sb_logsectlog >= BBSHIFT); |
1197 | } | 1197 | } |
1198 | log->l_sectbb_mask = (1 << log->l_sectbb_log) - 1; | 1198 | log->l_sectbb_mask = (1 << log->l_sectbb_log) - 1; |
@@ -1247,7 +1247,7 @@ xlog_alloc_log(xfs_mount_t *mp, | |||
1247 | memset(head, 0, sizeof(xlog_rec_header_t)); | 1247 | memset(head, 0, sizeof(xlog_rec_header_t)); |
1248 | head->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); | 1248 | head->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); |
1249 | head->h_version = cpu_to_be32( | 1249 | head->h_version = cpu_to_be32( |
1250 | XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb) ? 2 : 1); | 1250 | xfs_sb_version_haslogv2(&log->l_mp->m_sb) ? 2 : 1); |
1251 | head->h_size = cpu_to_be32(log->l_iclog_size); | 1251 | head->h_size = cpu_to_be32(log->l_iclog_size); |
1252 | /* new fields */ | 1252 | /* new fields */ |
1253 | head->h_fmt = cpu_to_be32(XLOG_FMT); | 1253 | head->h_fmt = cpu_to_be32(XLOG_FMT); |
@@ -1402,7 +1402,7 @@ xlog_sync(xlog_t *log, | |||
1402 | int roundoff; /* roundoff to BB or stripe */ | 1402 | int roundoff; /* roundoff to BB or stripe */ |
1403 | int split = 0; /* split write into two regions */ | 1403 | int split = 0; /* split write into two regions */ |
1404 | int error; | 1404 | int error; |
1405 | int v2 = XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb); | 1405 | int v2 = xfs_sb_version_haslogv2(&log->l_mp->m_sb); |
1406 | 1406 | ||
1407 | XFS_STATS_INC(xs_log_writes); | 1407 | XFS_STATS_INC(xs_log_writes); |
1408 | ASSERT(iclog->ic_refcnt == 0); | 1408 | ASSERT(iclog->ic_refcnt == 0); |
@@ -2881,7 +2881,7 @@ xlog_state_switch_iclogs(xlog_t *log, | |||
2881 | log->l_curr_block += BTOBB(eventual_size)+BTOBB(log->l_iclog_hsize); | 2881 | log->l_curr_block += BTOBB(eventual_size)+BTOBB(log->l_iclog_hsize); |
2882 | 2882 | ||
2883 | /* Round up to next log-sunit */ | 2883 | /* Round up to next log-sunit */ |
2884 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb) && | 2884 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb) && |
2885 | log->l_mp->m_sb.sb_logsunit > 1) { | 2885 | log->l_mp->m_sb.sb_logsunit > 1) { |
2886 | __uint32_t sunit_bb = BTOBB(log->l_mp->m_sb.sb_logsunit); | 2886 | __uint32_t sunit_bb = BTOBB(log->l_mp->m_sb.sb_logsunit); |
2887 | log->l_curr_block = roundup(log->l_curr_block, sunit_bb); | 2887 | log->l_curr_block = roundup(log->l_curr_block, sunit_bb); |
@@ -3334,7 +3334,7 @@ xlog_ticket_get(xlog_t *log, | |||
3334 | unit_bytes += sizeof(xlog_op_header_t) * num_headers; | 3334 | unit_bytes += sizeof(xlog_op_header_t) * num_headers; |
3335 | 3335 | ||
3336 | /* for roundoff padding for transaction data and one for commit record */ | 3336 | /* for roundoff padding for transaction data and one for commit record */ |
3337 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb) && | 3337 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb) && |
3338 | log->l_mp->m_sb.sb_logsunit > 1) { | 3338 | log->l_mp->m_sb.sb_logsunit > 1) { |
3339 | /* log su roundoff */ | 3339 | /* log su roundoff */ |
3340 | unit_bytes += 2*log->l_mp->m_sb.sb_logsunit; | 3340 | unit_bytes += 2*log->l_mp->m_sb.sb_logsunit; |
diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h index e008233ee249..c6244cc733c0 100644 --- a/fs/xfs/xfs_log_priv.h +++ b/fs/xfs/xfs_log_priv.h | |||
@@ -49,10 +49,10 @@ struct xfs_mount; | |||
49 | #define XLOG_HEADER_SIZE 512 | 49 | #define XLOG_HEADER_SIZE 512 |
50 | 50 | ||
51 | #define XLOG_REC_SHIFT(log) \ | 51 | #define XLOG_REC_SHIFT(log) \ |
52 | BTOBB(1 << (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb) ? \ | 52 | BTOBB(1 << (xfs_sb_version_haslogv2(&log->l_mp->m_sb) ? \ |
53 | XLOG_MAX_RECORD_BSHIFT : XLOG_BIG_RECORD_BSHIFT)) | 53 | XLOG_MAX_RECORD_BSHIFT : XLOG_BIG_RECORD_BSHIFT)) |
54 | #define XLOG_TOTAL_REC_SHIFT(log) \ | 54 | #define XLOG_TOTAL_REC_SHIFT(log) \ |
55 | BTOBB(XLOG_MAX_ICLOGS << (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb) ? \ | 55 | BTOBB(XLOG_MAX_ICLOGS << (xfs_sb_version_haslogv2(&log->l_mp->m_sb) ? \ |
56 | XLOG_MAX_RECORD_BSHIFT : XLOG_BIG_RECORD_BSHIFT)) | 56 | XLOG_MAX_RECORD_BSHIFT : XLOG_BIG_RECORD_BSHIFT)) |
57 | 57 | ||
58 | 58 | ||
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index b82d5d4d2462..b2b70eba282c 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c | |||
@@ -478,7 +478,7 @@ xlog_find_verify_log_record( | |||
478 | * reset last_blk. Only when last_blk points in the middle of a log | 478 | * reset last_blk. Only when last_blk points in the middle of a log |
479 | * record do we update last_blk. | 479 | * record do we update last_blk. |
480 | */ | 480 | */ |
481 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb)) { | 481 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { |
482 | uint h_size = be32_to_cpu(head->h_size); | 482 | uint h_size = be32_to_cpu(head->h_size); |
483 | 483 | ||
484 | xhdrs = h_size / XLOG_HEADER_CYCLE_SIZE; | 484 | xhdrs = h_size / XLOG_HEADER_CYCLE_SIZE; |
@@ -888,7 +888,7 @@ xlog_find_tail( | |||
888 | * unmount record if there is one, so we pass the lsn of the | 888 | * unmount record if there is one, so we pass the lsn of the |
889 | * unmount record rather than the block after it. | 889 | * unmount record rather than the block after it. |
890 | */ | 890 | */ |
891 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb)) { | 891 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { |
892 | int h_size = be32_to_cpu(rhead->h_size); | 892 | int h_size = be32_to_cpu(rhead->h_size); |
893 | int h_version = be32_to_cpu(rhead->h_version); | 893 | int h_version = be32_to_cpu(rhead->h_version); |
894 | 894 | ||
@@ -1101,7 +1101,7 @@ xlog_add_record( | |||
1101 | recp->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); | 1101 | recp->h_magicno = cpu_to_be32(XLOG_HEADER_MAGIC_NUM); |
1102 | recp->h_cycle = cpu_to_be32(cycle); | 1102 | recp->h_cycle = cpu_to_be32(cycle); |
1103 | recp->h_version = cpu_to_be32( | 1103 | recp->h_version = cpu_to_be32( |
1104 | XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb) ? 2 : 1); | 1104 | xfs_sb_version_haslogv2(&log->l_mp->m_sb) ? 2 : 1); |
1105 | recp->h_lsn = cpu_to_be64(xlog_assign_lsn(cycle, block)); | 1105 | recp->h_lsn = cpu_to_be64(xlog_assign_lsn(cycle, block)); |
1106 | recp->h_tail_lsn = cpu_to_be64(xlog_assign_lsn(tail_cycle, tail_block)); | 1106 | recp->h_tail_lsn = cpu_to_be64(xlog_assign_lsn(tail_cycle, tail_block)); |
1107 | recp->h_fmt = cpu_to_be32(XLOG_FMT); | 1107 | recp->h_fmt = cpu_to_be32(XLOG_FMT); |
@@ -3348,7 +3348,7 @@ xlog_pack_data( | |||
3348 | dp += BBSIZE; | 3348 | dp += BBSIZE; |
3349 | } | 3349 | } |
3350 | 3350 | ||
3351 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb)) { | 3351 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { |
3352 | xhdr = (xlog_in_core_2_t *)&iclog->ic_header; | 3352 | xhdr = (xlog_in_core_2_t *)&iclog->ic_header; |
3353 | for ( ; i < BTOBB(size); i++) { | 3353 | for ( ; i < BTOBB(size); i++) { |
3354 | j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); | 3354 | j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); |
@@ -3388,7 +3388,7 @@ xlog_unpack_data_checksum( | |||
3388 | be32_to_cpu(rhead->h_chksum), chksum); | 3388 | be32_to_cpu(rhead->h_chksum), chksum); |
3389 | cmn_err(CE_DEBUG, | 3389 | cmn_err(CE_DEBUG, |
3390 | "XFS: Disregard message if filesystem was created with non-DEBUG kernel"); | 3390 | "XFS: Disregard message if filesystem was created with non-DEBUG kernel"); |
3391 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb)) { | 3391 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { |
3392 | cmn_err(CE_DEBUG, | 3392 | cmn_err(CE_DEBUG, |
3393 | "XFS: LogR this is a LogV2 filesystem\n"); | 3393 | "XFS: LogR this is a LogV2 filesystem\n"); |
3394 | } | 3394 | } |
@@ -3415,7 +3415,7 @@ xlog_unpack_data( | |||
3415 | dp += BBSIZE; | 3415 | dp += BBSIZE; |
3416 | } | 3416 | } |
3417 | 3417 | ||
3418 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb)) { | 3418 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { |
3419 | xhdr = (xlog_in_core_2_t *)rhead; | 3419 | xhdr = (xlog_in_core_2_t *)rhead; |
3420 | for ( ; i < BTOBB(be32_to_cpu(rhead->h_len)); i++) { | 3420 | for ( ; i < BTOBB(be32_to_cpu(rhead->h_len)); i++) { |
3421 | j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); | 3421 | j = i / (XLOG_HEADER_CYCLE_SIZE / BBSIZE); |
@@ -3494,7 +3494,7 @@ xlog_do_recovery_pass( | |||
3494 | * Read the header of the tail block and get the iclog buffer size from | 3494 | * Read the header of the tail block and get the iclog buffer size from |
3495 | * h_size. Use this to tell how many sectors make up the log header. | 3495 | * h_size. Use this to tell how many sectors make up the log header. |
3496 | */ | 3496 | */ |
3497 | if (XFS_SB_VERSION_HASLOGV2(&log->l_mp->m_sb)) { | 3497 | if (xfs_sb_version_haslogv2(&log->l_mp->m_sb)) { |
3498 | /* | 3498 | /* |
3499 | * When using variable length iclogs, read first sector of | 3499 | * When using variable length iclogs, read first sector of |
3500 | * iclog header and extract the header size from it. Get a | 3500 | * iclog header and extract the header size from it. Get a |
@@ -3838,7 +3838,7 @@ xlog_do_recover( | |||
3838 | sbp = &log->l_mp->m_sb; | 3838 | sbp = &log->l_mp->m_sb; |
3839 | xfs_sb_from_disk(sbp, XFS_BUF_TO_SBP(bp)); | 3839 | xfs_sb_from_disk(sbp, XFS_BUF_TO_SBP(bp)); |
3840 | ASSERT(sbp->sb_magicnum == XFS_SB_MAGIC); | 3840 | ASSERT(sbp->sb_magicnum == XFS_SB_MAGIC); |
3841 | ASSERT(XFS_SB_GOOD_VERSION(sbp)); | 3841 | ASSERT(xfs_sb_good_version(sbp)); |
3842 | xfs_buf_relse(bp); | 3842 | xfs_buf_relse(bp); |
3843 | 3843 | ||
3844 | /* We've re-read the superblock so re-initialize per-cpu counters */ | 3844 | /* We've re-read the superblock so re-initialize per-cpu counters */ |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 6409b3762995..8ed164eb9544 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -44,7 +44,7 @@ | |||
44 | #include "xfs_quota.h" | 44 | #include "xfs_quota.h" |
45 | #include "xfs_fsops.h" | 45 | #include "xfs_fsops.h" |
46 | 46 | ||
47 | STATIC void xfs_mount_log_sbunit(xfs_mount_t *, __int64_t); | 47 | STATIC void xfs_mount_log_sb(xfs_mount_t *, __int64_t); |
48 | STATIC int xfs_uuid_mount(xfs_mount_t *); | 48 | STATIC int xfs_uuid_mount(xfs_mount_t *); |
49 | STATIC void xfs_uuid_unmount(xfs_mount_t *mp); | 49 | STATIC void xfs_uuid_unmount(xfs_mount_t *mp); |
50 | STATIC void xfs_unmountfs_wait(xfs_mount_t *); | 50 | STATIC void xfs_unmountfs_wait(xfs_mount_t *); |
@@ -119,6 +119,7 @@ static const struct { | |||
119 | { offsetof(xfs_sb_t, sb_logsectsize),0 }, | 119 | { offsetof(xfs_sb_t, sb_logsectsize),0 }, |
120 | { offsetof(xfs_sb_t, sb_logsunit), 0 }, | 120 | { offsetof(xfs_sb_t, sb_logsunit), 0 }, |
121 | { offsetof(xfs_sb_t, sb_features2), 0 }, | 121 | { offsetof(xfs_sb_t, sb_features2), 0 }, |
122 | { offsetof(xfs_sb_t, sb_bad_features2), 0 }, | ||
122 | { sizeof(xfs_sb_t), 0 } | 123 | { sizeof(xfs_sb_t), 0 } |
123 | }; | 124 | }; |
124 | 125 | ||
@@ -225,7 +226,7 @@ xfs_mount_validate_sb( | |||
225 | return XFS_ERROR(EWRONGFS); | 226 | return XFS_ERROR(EWRONGFS); |
226 | } | 227 | } |
227 | 228 | ||
228 | if (!XFS_SB_GOOD_VERSION(sbp)) { | 229 | if (!xfs_sb_good_version(sbp)) { |
229 | xfs_fs_mount_cmn_err(flags, "bad version"); | 230 | xfs_fs_mount_cmn_err(flags, "bad version"); |
230 | return XFS_ERROR(EWRONGFS); | 231 | return XFS_ERROR(EWRONGFS); |
231 | } | 232 | } |
@@ -300,7 +301,7 @@ xfs_mount_validate_sb( | |||
300 | /* | 301 | /* |
301 | * Version 1 directory format has never worked on Linux. | 302 | * Version 1 directory format has never worked on Linux. |
302 | */ | 303 | */ |
303 | if (unlikely(!XFS_SB_VERSION_HASDIRV2(sbp))) { | 304 | if (unlikely(!xfs_sb_version_hasdirv2(sbp))) { |
304 | xfs_fs_mount_cmn_err(flags, | 305 | xfs_fs_mount_cmn_err(flags, |
305 | "file system using version 1 directory format"); | 306 | "file system using version 1 directory format"); |
306 | return XFS_ERROR(ENOSYS); | 307 | return XFS_ERROR(ENOSYS); |
@@ -449,6 +450,7 @@ xfs_sb_from_disk( | |||
449 | to->sb_logsectsize = be16_to_cpu(from->sb_logsectsize); | 450 | to->sb_logsectsize = be16_to_cpu(from->sb_logsectsize); |
450 | to->sb_logsunit = be32_to_cpu(from->sb_logsunit); | 451 | to->sb_logsunit = be32_to_cpu(from->sb_logsunit); |
451 | to->sb_features2 = be32_to_cpu(from->sb_features2); | 452 | to->sb_features2 = be32_to_cpu(from->sb_features2); |
453 | to->sb_bad_features2 = be32_to_cpu(from->sb_bad_features2); | ||
452 | } | 454 | } |
453 | 455 | ||
454 | /* | 456 | /* |
@@ -781,7 +783,7 @@ xfs_update_alignment(xfs_mount_t *mp, int mfsi_flags, __uint64_t *update_flags) | |||
781 | * Update superblock with new values | 783 | * Update superblock with new values |
782 | * and log changes | 784 | * and log changes |
783 | */ | 785 | */ |
784 | if (XFS_SB_VERSION_HASDALIGN(sbp)) { | 786 | if (xfs_sb_version_hasdalign(sbp)) { |
785 | if (sbp->sb_unit != mp->m_dalign) { | 787 | if (sbp->sb_unit != mp->m_dalign) { |
786 | sbp->sb_unit = mp->m_dalign; | 788 | sbp->sb_unit = mp->m_dalign; |
787 | *update_flags |= XFS_SB_UNIT; | 789 | *update_flags |= XFS_SB_UNIT; |
@@ -792,7 +794,7 @@ xfs_update_alignment(xfs_mount_t *mp, int mfsi_flags, __uint64_t *update_flags) | |||
792 | } | 794 | } |
793 | } | 795 | } |
794 | } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && | 796 | } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && |
795 | XFS_SB_VERSION_HASDALIGN(&mp->m_sb)) { | 797 | xfs_sb_version_hasdalign(&mp->m_sb)) { |
796 | mp->m_dalign = sbp->sb_unit; | 798 | mp->m_dalign = sbp->sb_unit; |
797 | mp->m_swidth = sbp->sb_width; | 799 | mp->m_swidth = sbp->sb_width; |
798 | } | 800 | } |
@@ -869,7 +871,7 @@ xfs_set_rw_sizes(xfs_mount_t *mp) | |||
869 | STATIC void | 871 | STATIC void |
870 | xfs_set_inoalignment(xfs_mount_t *mp) | 872 | xfs_set_inoalignment(xfs_mount_t *mp) |
871 | { | 873 | { |
872 | if (XFS_SB_VERSION_HASALIGN(&mp->m_sb) && | 874 | if (xfs_sb_version_hasalign(&mp->m_sb) && |
873 | mp->m_sb.sb_inoalignmt >= | 875 | mp->m_sb.sb_inoalignmt >= |
874 | XFS_B_TO_FSBT(mp, mp->m_inode_cluster_size)) | 876 | XFS_B_TO_FSBT(mp, mp->m_inode_cluster_size)) |
875 | mp->m_inoalign_mask = mp->m_sb.sb_inoalignmt - 1; | 877 | mp->m_inoalign_mask = mp->m_sb.sb_inoalignmt - 1; |
@@ -970,6 +972,38 @@ xfs_mountfs( | |||
970 | xfs_mount_common(mp, sbp); | 972 | xfs_mount_common(mp, sbp); |
971 | 973 | ||
972 | /* | 974 | /* |
975 | * Check for a mismatched features2 values. Older kernels | ||
976 | * read & wrote into the wrong sb offset for sb_features2 | ||
977 | * on some platforms due to xfs_sb_t not being 64bit size aligned | ||
978 | * when sb_features2 was added, which made older superblock | ||
979 | * reading/writing routines swap it as a 64-bit value. | ||
980 | * | ||
981 | * For backwards compatibility, we make both slots equal. | ||
982 | * | ||
983 | * If we detect a mismatched field, we OR the set bits into the | ||
984 | * existing features2 field in case it has already been modified; we | ||
985 | * don't want to lose any features. We then update the bad location | ||
986 | * with the ORed value so that older kernels will see any features2 | ||
987 | * flags, and mark the two fields as needing updates once the | ||
988 | * transaction subsystem is online. | ||
989 | */ | ||
990 | if (xfs_sb_has_mismatched_features2(sbp)) { | ||
991 | cmn_err(CE_WARN, | ||
992 | "XFS: correcting sb_features alignment problem"); | ||
993 | sbp->sb_features2 |= sbp->sb_bad_features2; | ||
994 | sbp->sb_bad_features2 = sbp->sb_features2; | ||
995 | update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; | ||
996 | |||
997 | /* | ||
998 | * Re-check for ATTR2 in case it was found in bad_features2 | ||
999 | * slot. | ||
1000 | */ | ||
1001 | if (xfs_sb_version_hasattr2(&mp->m_sb)) | ||
1002 | mp->m_flags |= XFS_MOUNT_ATTR2; | ||
1003 | |||
1004 | } | ||
1005 | |||
1006 | /* | ||
973 | * Check if sb_agblocks is aligned at stripe boundary | 1007 | * Check if sb_agblocks is aligned at stripe boundary |
974 | * If sb_agblocks is NOT aligned turn off m_dalign since | 1008 | * If sb_agblocks is NOT aligned turn off m_dalign since |
975 | * allocator alignment is within an ag, therefore ag has | 1009 | * allocator alignment is within an ag, therefore ag has |
@@ -1159,11 +1193,10 @@ xfs_mountfs( | |||
1159 | } | 1193 | } |
1160 | 1194 | ||
1161 | /* | 1195 | /* |
1162 | * If fs is not mounted readonly, then update the superblock | 1196 | * If fs is not mounted readonly, then update the superblock changes. |
1163 | * unit and width changes. | ||
1164 | */ | 1197 | */ |
1165 | if (update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) | 1198 | if (update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) |
1166 | xfs_mount_log_sbunit(mp, update_flags); | 1199 | xfs_mount_log_sb(mp, update_flags); |
1167 | 1200 | ||
1168 | /* | 1201 | /* |
1169 | * Initialise the XFS quota management subsystem for this mount | 1202 | * Initialise the XFS quota management subsystem for this mount |
@@ -1875,16 +1908,18 @@ xfs_uuid_unmount( | |||
1875 | 1908 | ||
1876 | /* | 1909 | /* |
1877 | * Used to log changes to the superblock unit and width fields which could | 1910 | * Used to log changes to the superblock unit and width fields which could |
1878 | * be altered by the mount options. Only the first superblock is updated. | 1911 | * be altered by the mount options, as well as any potential sb_features2 |
1912 | * fixup. Only the first superblock is updated. | ||
1879 | */ | 1913 | */ |
1880 | STATIC void | 1914 | STATIC void |
1881 | xfs_mount_log_sbunit( | 1915 | xfs_mount_log_sb( |
1882 | xfs_mount_t *mp, | 1916 | xfs_mount_t *mp, |
1883 | __int64_t fields) | 1917 | __int64_t fields) |
1884 | { | 1918 | { |
1885 | xfs_trans_t *tp; | 1919 | xfs_trans_t *tp; |
1886 | 1920 | ||
1887 | ASSERT(fields & (XFS_SB_UNIT|XFS_SB_WIDTH|XFS_SB_UUID)); | 1921 | ASSERT(fields & (XFS_SB_UNIT | XFS_SB_WIDTH | XFS_SB_UUID | |
1922 | XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2)); | ||
1888 | 1923 | ||
1889 | tp = xfs_trans_alloc(mp, XFS_TRANS_SB_UNIT); | 1924 | tp = xfs_trans_alloc(mp, XFS_TRANS_SB_UNIT); |
1890 | if (xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, | 1925 | if (xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, |
diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 94660b1a6ccc..d904efe7f871 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h | |||
@@ -89,6 +89,7 @@ struct xfs_mount; | |||
89 | 89 | ||
90 | /* | 90 | /* |
91 | * Superblock - in core version. Must match the ondisk version below. | 91 | * Superblock - in core version. Must match the ondisk version below. |
92 | * Must be padded to 64 bit alignment. | ||
92 | */ | 93 | */ |
93 | typedef struct xfs_sb { | 94 | typedef struct xfs_sb { |
94 | __uint32_t sb_magicnum; /* magic number == XFS_SB_MAGIC */ | 95 | __uint32_t sb_magicnum; /* magic number == XFS_SB_MAGIC */ |
@@ -145,10 +146,21 @@ typedef struct xfs_sb { | |||
145 | __uint16_t sb_logsectsize; /* sector size for the log, bytes */ | 146 | __uint16_t sb_logsectsize; /* sector size for the log, bytes */ |
146 | __uint32_t sb_logsunit; /* stripe unit size for the log */ | 147 | __uint32_t sb_logsunit; /* stripe unit size for the log */ |
147 | __uint32_t sb_features2; /* additional feature bits */ | 148 | __uint32_t sb_features2; /* additional feature bits */ |
149 | |||
150 | /* | ||
151 | * bad features2 field as a result of failing to pad the sb | ||
152 | * structure to 64 bits. Some machines will be using this field | ||
153 | * for features2 bits. Easiest just to mark it bad and not use | ||
154 | * it for anything else. | ||
155 | */ | ||
156 | __uint32_t sb_bad_features2; | ||
157 | |||
158 | /* must be padded to 64 bit alignment */ | ||
148 | } xfs_sb_t; | 159 | } xfs_sb_t; |
149 | 160 | ||
150 | /* | 161 | /* |
151 | * Superblock - on disk version. Must match the in core version below. | 162 | * Superblock - on disk version. Must match the in core version above. |
163 | * Must be padded to 64 bit alignment. | ||
152 | */ | 164 | */ |
153 | typedef struct xfs_dsb { | 165 | typedef struct xfs_dsb { |
154 | __be32 sb_magicnum; /* magic number == XFS_SB_MAGIC */ | 166 | __be32 sb_magicnum; /* magic number == XFS_SB_MAGIC */ |
@@ -205,6 +217,15 @@ typedef struct xfs_dsb { | |||
205 | __be16 sb_logsectsize; /* sector size for the log, bytes */ | 217 | __be16 sb_logsectsize; /* sector size for the log, bytes */ |
206 | __be32 sb_logsunit; /* stripe unit size for the log */ | 218 | __be32 sb_logsunit; /* stripe unit size for the log */ |
207 | __be32 sb_features2; /* additional feature bits */ | 219 | __be32 sb_features2; /* additional feature bits */ |
220 | /* | ||
221 | * bad features2 field as a result of failing to pad the sb | ||
222 | * structure to 64 bits. Some machines will be using this field | ||
223 | * for features2 bits. Easiest just to mark it bad and not use | ||
224 | * it for anything else. | ||
225 | */ | ||
226 | __be32 sb_bad_features2; | ||
227 | |||
228 | /* must be padded to 64 bit alignment */ | ||
208 | } xfs_dsb_t; | 229 | } xfs_dsb_t; |
209 | 230 | ||
210 | /* | 231 | /* |
@@ -223,7 +244,7 @@ typedef enum { | |||
223 | XFS_SBS_GQUOTINO, XFS_SBS_QFLAGS, XFS_SBS_FLAGS, XFS_SBS_SHARED_VN, | 244 | XFS_SBS_GQUOTINO, XFS_SBS_QFLAGS, XFS_SBS_FLAGS, XFS_SBS_SHARED_VN, |
224 | XFS_SBS_INOALIGNMT, XFS_SBS_UNIT, XFS_SBS_WIDTH, XFS_SBS_DIRBLKLOG, | 245 | XFS_SBS_INOALIGNMT, XFS_SBS_UNIT, XFS_SBS_WIDTH, XFS_SBS_DIRBLKLOG, |
225 | XFS_SBS_LOGSECTLOG, XFS_SBS_LOGSECTSIZE, XFS_SBS_LOGSUNIT, | 246 | XFS_SBS_LOGSECTLOG, XFS_SBS_LOGSECTSIZE, XFS_SBS_LOGSUNIT, |
226 | XFS_SBS_FEATURES2, | 247 | XFS_SBS_FEATURES2, XFS_SBS_BAD_FEATURES2, |
227 | XFS_SBS_FIELDCOUNT | 248 | XFS_SBS_FIELDCOUNT |
228 | } xfs_sb_field_t; | 249 | } xfs_sb_field_t; |
229 | 250 | ||
@@ -248,13 +269,15 @@ typedef enum { | |||
248 | #define XFS_SB_IFREE XFS_SB_MVAL(IFREE) | 269 | #define XFS_SB_IFREE XFS_SB_MVAL(IFREE) |
249 | #define XFS_SB_FDBLOCKS XFS_SB_MVAL(FDBLOCKS) | 270 | #define XFS_SB_FDBLOCKS XFS_SB_MVAL(FDBLOCKS) |
250 | #define XFS_SB_FEATURES2 XFS_SB_MVAL(FEATURES2) | 271 | #define XFS_SB_FEATURES2 XFS_SB_MVAL(FEATURES2) |
272 | #define XFS_SB_BAD_FEATURES2 XFS_SB_MVAL(BAD_FEATURES2) | ||
251 | #define XFS_SB_NUM_BITS ((int)XFS_SBS_FIELDCOUNT) | 273 | #define XFS_SB_NUM_BITS ((int)XFS_SBS_FIELDCOUNT) |
252 | #define XFS_SB_ALL_BITS ((1LL << XFS_SB_NUM_BITS) - 1) | 274 | #define XFS_SB_ALL_BITS ((1LL << XFS_SB_NUM_BITS) - 1) |
253 | #define XFS_SB_MOD_BITS \ | 275 | #define XFS_SB_MOD_BITS \ |
254 | (XFS_SB_UUID | XFS_SB_ROOTINO | XFS_SB_RBMINO | XFS_SB_RSUMINO | \ | 276 | (XFS_SB_UUID | XFS_SB_ROOTINO | XFS_SB_RBMINO | XFS_SB_RSUMINO | \ |
255 | XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | XFS_SB_GQUOTINO | \ | 277 | XFS_SB_VERSIONNUM | XFS_SB_UQUOTINO | XFS_SB_GQUOTINO | \ |
256 | XFS_SB_QFLAGS | XFS_SB_SHARED_VN | XFS_SB_UNIT | XFS_SB_WIDTH | \ | 278 | XFS_SB_QFLAGS | XFS_SB_SHARED_VN | XFS_SB_UNIT | XFS_SB_WIDTH | \ |
257 | XFS_SB_ICOUNT | XFS_SB_IFREE | XFS_SB_FDBLOCKS | XFS_SB_FEATURES2) | 279 | XFS_SB_ICOUNT | XFS_SB_IFREE | XFS_SB_FDBLOCKS | XFS_SB_FEATURES2 | \ |
280 | XFS_SB_BAD_FEATURES2) | ||
258 | 281 | ||
259 | 282 | ||
260 | /* | 283 | /* |
@@ -271,7 +294,6 @@ typedef enum { | |||
271 | 294 | ||
272 | #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) | 295 | #define XFS_SB_VERSION_NUM(sbp) ((sbp)->sb_versionnum & XFS_SB_VERSION_NUMBITS) |
273 | 296 | ||
274 | #define XFS_SB_GOOD_VERSION(sbp) xfs_sb_good_version(sbp) | ||
275 | #ifdef __KERNEL__ | 297 | #ifdef __KERNEL__ |
276 | static inline int xfs_sb_good_version(xfs_sb_t *sbp) | 298 | static inline int xfs_sb_good_version(xfs_sb_t *sbp) |
277 | { | 299 | { |
@@ -297,7 +319,15 @@ static inline int xfs_sb_good_version(xfs_sb_t *sbp) | |||
297 | } | 319 | } |
298 | #endif /* __KERNEL__ */ | 320 | #endif /* __KERNEL__ */ |
299 | 321 | ||
300 | #define XFS_SB_VERSION_TONEW(v) xfs_sb_version_tonew(v) | 322 | /* |
323 | * Detect a mismatched features2 field. Older kernels read/wrote | ||
324 | * this into the wrong slot, so to be safe we keep them in sync. | ||
325 | */ | ||
326 | static inline int xfs_sb_has_mismatched_features2(xfs_sb_t *sbp) | ||
327 | { | ||
328 | return (sbp->sb_bad_features2 != sbp->sb_features2); | ||
329 | } | ||
330 | |||
301 | static inline unsigned xfs_sb_version_tonew(unsigned v) | 331 | static inline unsigned xfs_sb_version_tonew(unsigned v) |
302 | { | 332 | { |
303 | return ((((v) == XFS_SB_VERSION_1) ? \ | 333 | return ((((v) == XFS_SB_VERSION_1) ? \ |
@@ -308,7 +338,6 @@ static inline unsigned xfs_sb_version_tonew(unsigned v) | |||
308 | XFS_SB_VERSION_4); | 338 | XFS_SB_VERSION_4); |
309 | } | 339 | } |
310 | 340 | ||
311 | #define XFS_SB_VERSION_TOOLD(v) xfs_sb_version_toold(v) | ||
312 | static inline unsigned xfs_sb_version_toold(unsigned v) | 341 | static inline unsigned xfs_sb_version_toold(unsigned v) |
313 | { | 342 | { |
314 | return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ | 343 | return (((v) & (XFS_SB_VERSION_QUOTABIT | XFS_SB_VERSION_ALIGNBIT)) ? \ |
@@ -320,7 +349,6 @@ static inline unsigned xfs_sb_version_toold(unsigned v) | |||
320 | XFS_SB_VERSION_1))); | 349 | XFS_SB_VERSION_1))); |
321 | } | 350 | } |
322 | 351 | ||
323 | #define XFS_SB_VERSION_HASATTR(sbp) xfs_sb_version_hasattr(sbp) | ||
324 | static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) | 352 | static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) |
325 | { | 353 | { |
326 | return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ | 354 | return ((sbp)->sb_versionnum == XFS_SB_VERSION_2) || \ |
@@ -329,7 +357,6 @@ static inline int xfs_sb_version_hasattr(xfs_sb_t *sbp) | |||
329 | ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); | 357 | ((sbp)->sb_versionnum & XFS_SB_VERSION_ATTRBIT)); |
330 | } | 358 | } |
331 | 359 | ||
332 | #define XFS_SB_VERSION_ADDATTR(sbp) xfs_sb_version_addattr(sbp) | ||
333 | static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) | 360 | static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) |
334 | { | 361 | { |
335 | (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ | 362 | (sbp)->sb_versionnum = (((sbp)->sb_versionnum == XFS_SB_VERSION_1) ? \ |
@@ -339,7 +366,6 @@ static inline void xfs_sb_version_addattr(xfs_sb_t *sbp) | |||
339 | (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))); | 366 | (XFS_SB_VERSION_4 | XFS_SB_VERSION_ATTRBIT))); |
340 | } | 367 | } |
341 | 368 | ||
342 | #define XFS_SB_VERSION_HASNLINK(sbp) xfs_sb_version_hasnlink(sbp) | ||
343 | static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) | 369 | static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) |
344 | { | 370 | { |
345 | return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ | 371 | return ((sbp)->sb_versionnum == XFS_SB_VERSION_3) || \ |
@@ -347,7 +373,6 @@ static inline int xfs_sb_version_hasnlink(xfs_sb_t *sbp) | |||
347 | ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); | 373 | ((sbp)->sb_versionnum & XFS_SB_VERSION_NLINKBIT)); |
348 | } | 374 | } |
349 | 375 | ||
350 | #define XFS_SB_VERSION_ADDNLINK(sbp) xfs_sb_version_addnlink(sbp) | ||
351 | static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) | 376 | static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) |
352 | { | 377 | { |
353 | (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ | 378 | (sbp)->sb_versionnum = ((sbp)->sb_versionnum <= XFS_SB_VERSION_2 ? \ |
@@ -355,115 +380,63 @@ static inline void xfs_sb_version_addnlink(xfs_sb_t *sbp) | |||
355 | ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)); | 380 | ((sbp)->sb_versionnum | XFS_SB_VERSION_NLINKBIT)); |
356 | } | 381 | } |
357 | 382 | ||
358 | #define XFS_SB_VERSION_HASQUOTA(sbp) xfs_sb_version_hasquota(sbp) | ||
359 | static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) | 383 | static inline int xfs_sb_version_hasquota(xfs_sb_t *sbp) |
360 | { | 384 | { |
361 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 385 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
362 | ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT); | 386 | ((sbp)->sb_versionnum & XFS_SB_VERSION_QUOTABIT); |
363 | } | 387 | } |
364 | 388 | ||
365 | #define XFS_SB_VERSION_ADDQUOTA(sbp) xfs_sb_version_addquota(sbp) | ||
366 | static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) | 389 | static inline void xfs_sb_version_addquota(xfs_sb_t *sbp) |
367 | { | 390 | { |
368 | (sbp)->sb_versionnum = \ | 391 | (sbp)->sb_versionnum = \ |
369 | (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ | 392 | (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4 ? \ |
370 | ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ | 393 | ((sbp)->sb_versionnum | XFS_SB_VERSION_QUOTABIT) : \ |
371 | (XFS_SB_VERSION_TONEW((sbp)->sb_versionnum) | \ | 394 | (xfs_sb_version_tonew((sbp)->sb_versionnum) | \ |
372 | XFS_SB_VERSION_QUOTABIT)); | 395 | XFS_SB_VERSION_QUOTABIT)); |
373 | } | 396 | } |
374 | 397 | ||
375 | #define XFS_SB_VERSION_HASALIGN(sbp) xfs_sb_version_hasalign(sbp) | ||
376 | static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) | 398 | static inline int xfs_sb_version_hasalign(xfs_sb_t *sbp) |
377 | { | 399 | { |
378 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 400 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
379 | ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); | 401 | ((sbp)->sb_versionnum & XFS_SB_VERSION_ALIGNBIT); |
380 | } | 402 | } |
381 | 403 | ||
382 | #define XFS_SB_VERSION_SUBALIGN(sbp) xfs_sb_version_subalign(sbp) | ||
383 | static inline void xfs_sb_version_subalign(xfs_sb_t *sbp) | ||
384 | { | ||
385 | (sbp)->sb_versionnum = \ | ||
386 | XFS_SB_VERSION_TOOLD((sbp)->sb_versionnum & ~XFS_SB_VERSION_ALIGNBIT); | ||
387 | } | ||
388 | |||
389 | #define XFS_SB_VERSION_HASDALIGN(sbp) xfs_sb_version_hasdalign(sbp) | ||
390 | static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) | 404 | static inline int xfs_sb_version_hasdalign(xfs_sb_t *sbp) |
391 | { | 405 | { |
392 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 406 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
393 | ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); | 407 | ((sbp)->sb_versionnum & XFS_SB_VERSION_DALIGNBIT); |
394 | } | 408 | } |
395 | 409 | ||
396 | #define XFS_SB_VERSION_ADDDALIGN(sbp) xfs_sb_version_adddalign(sbp) | ||
397 | static inline int xfs_sb_version_adddalign(xfs_sb_t *sbp) | ||
398 | { | ||
399 | return (sbp)->sb_versionnum = \ | ||
400 | ((sbp)->sb_versionnum | XFS_SB_VERSION_DALIGNBIT); | ||
401 | } | ||
402 | |||
403 | #define XFS_SB_VERSION_HASSHARED(sbp) xfs_sb_version_hasshared(sbp) | ||
404 | static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) | 410 | static inline int xfs_sb_version_hasshared(xfs_sb_t *sbp) |
405 | { | 411 | { |
406 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 412 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
407 | ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); | 413 | ((sbp)->sb_versionnum & XFS_SB_VERSION_SHAREDBIT); |
408 | } | 414 | } |
409 | 415 | ||
410 | #define XFS_SB_VERSION_ADDSHARED(sbp) xfs_sb_version_addshared(sbp) | ||
411 | static inline int xfs_sb_version_addshared(xfs_sb_t *sbp) | ||
412 | { | ||
413 | return (sbp)->sb_versionnum = \ | ||
414 | ((sbp)->sb_versionnum | XFS_SB_VERSION_SHAREDBIT); | ||
415 | } | ||
416 | |||
417 | #define XFS_SB_VERSION_SUBSHARED(sbp) xfs_sb_version_subshared(sbp) | ||
418 | static inline int xfs_sb_version_subshared(xfs_sb_t *sbp) | ||
419 | { | ||
420 | return (sbp)->sb_versionnum = \ | ||
421 | ((sbp)->sb_versionnum & ~XFS_SB_VERSION_SHAREDBIT); | ||
422 | } | ||
423 | |||
424 | #define XFS_SB_VERSION_HASDIRV2(sbp) xfs_sb_version_hasdirv2(sbp) | ||
425 | static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) | 416 | static inline int xfs_sb_version_hasdirv2(xfs_sb_t *sbp) |
426 | { | 417 | { |
427 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 418 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
428 | ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); | 419 | ((sbp)->sb_versionnum & XFS_SB_VERSION_DIRV2BIT); |
429 | } | 420 | } |
430 | 421 | ||
431 | #define XFS_SB_VERSION_HASLOGV2(sbp) xfs_sb_version_haslogv2(sbp) | ||
432 | static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) | 422 | static inline int xfs_sb_version_haslogv2(xfs_sb_t *sbp) |
433 | { | 423 | { |
434 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 424 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
435 | ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); | 425 | ((sbp)->sb_versionnum & XFS_SB_VERSION_LOGV2BIT); |
436 | } | 426 | } |
437 | 427 | ||
438 | #define XFS_SB_VERSION_HASEXTFLGBIT(sbp) xfs_sb_version_hasextflgbit(sbp) | ||
439 | static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) | 428 | static inline int xfs_sb_version_hasextflgbit(xfs_sb_t *sbp) |
440 | { | 429 | { |
441 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 430 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
442 | ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); | 431 | ((sbp)->sb_versionnum & XFS_SB_VERSION_EXTFLGBIT); |
443 | } | 432 | } |
444 | 433 | ||
445 | #define XFS_SB_VERSION_ADDEXTFLGBIT(sbp) xfs_sb_version_addextflgbit(sbp) | ||
446 | static inline int xfs_sb_version_addextflgbit(xfs_sb_t *sbp) | ||
447 | { | ||
448 | return (sbp)->sb_versionnum = \ | ||
449 | ((sbp)->sb_versionnum | XFS_SB_VERSION_EXTFLGBIT); | ||
450 | } | ||
451 | |||
452 | #define XFS_SB_VERSION_SUBEXTFLGBIT(sbp) xfs_sb_version_subextflgbit(sbp) | ||
453 | static inline int xfs_sb_version_subextflgbit(xfs_sb_t *sbp) | ||
454 | { | ||
455 | return (sbp)->sb_versionnum = \ | ||
456 | ((sbp)->sb_versionnum & ~XFS_SB_VERSION_EXTFLGBIT); | ||
457 | } | ||
458 | |||
459 | #define XFS_SB_VERSION_HASSECTOR(sbp) xfs_sb_version_hassector(sbp) | ||
460 | static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) | 434 | static inline int xfs_sb_version_hassector(xfs_sb_t *sbp) |
461 | { | 435 | { |
462 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 436 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
463 | ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT); | 437 | ((sbp)->sb_versionnum & XFS_SB_VERSION_SECTORBIT); |
464 | } | 438 | } |
465 | 439 | ||
466 | #define XFS_SB_VERSION_HASMOREBITS(sbp) xfs_sb_version_hasmorebits(sbp) | ||
467 | static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) | 440 | static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) |
468 | { | 441 | { |
469 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ | 442 | return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_4) && \ |
@@ -476,24 +449,22 @@ static inline int xfs_sb_version_hasmorebits(xfs_sb_t *sbp) | |||
476 | * For example, for a bit defined as XFS_SB_VERSION2_FUNBIT, has a macro: | 449 | * For example, for a bit defined as XFS_SB_VERSION2_FUNBIT, has a macro: |
477 | * | 450 | * |
478 | * SB_VERSION_HASFUNBIT(xfs_sb_t *sbp) | 451 | * SB_VERSION_HASFUNBIT(xfs_sb_t *sbp) |
479 | * ((XFS_SB_VERSION_HASMOREBITS(sbp) && | 452 | * ((xfs_sb_version_hasmorebits(sbp) && |
480 | * ((sbp)->sb_features2 & XFS_SB_VERSION2_FUNBIT) | 453 | * ((sbp)->sb_features2 & XFS_SB_VERSION2_FUNBIT) |
481 | */ | 454 | */ |
482 | 455 | ||
483 | static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) | 456 | static inline int xfs_sb_version_haslazysbcount(xfs_sb_t *sbp) |
484 | { | 457 | { |
485 | return (XFS_SB_VERSION_HASMOREBITS(sbp) && \ | 458 | return (xfs_sb_version_hasmorebits(sbp) && \ |
486 | ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); | 459 | ((sbp)->sb_features2 & XFS_SB_VERSION2_LAZYSBCOUNTBIT)); |
487 | } | 460 | } |
488 | 461 | ||
489 | #define XFS_SB_VERSION_HASATTR2(sbp) xfs_sb_version_hasattr2(sbp) | ||
490 | static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) | 462 | static inline int xfs_sb_version_hasattr2(xfs_sb_t *sbp) |
491 | { | 463 | { |
492 | return (XFS_SB_VERSION_HASMOREBITS(sbp)) && \ | 464 | return (xfs_sb_version_hasmorebits(sbp)) && \ |
493 | ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); | 465 | ((sbp)->sb_features2 & XFS_SB_VERSION2_ATTR2BIT); |
494 | } | 466 | } |
495 | 467 | ||
496 | #define XFS_SB_VERSION_ADDATTR2(sbp) xfs_sb_version_addattr2(sbp) | ||
497 | static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) | 468 | static inline void xfs_sb_version_addattr2(xfs_sb_t *sbp) |
498 | { | 469 | { |
499 | ((sbp)->sb_versionnum = \ | 470 | ((sbp)->sb_versionnum = \ |
diff --git a/fs/xfs/xfs_utils.c b/fs/xfs/xfs_utils.c index 45d740df53b7..18a85e746680 100644 --- a/fs/xfs/xfs_utils.c +++ b/fs/xfs/xfs_utils.c | |||
@@ -339,10 +339,10 @@ xfs_bump_ino_vers2( | |||
339 | ip->i_d.di_onlink = 0; | 339 | ip->i_d.di_onlink = 0; |
340 | memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); | 340 | memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad)); |
341 | mp = tp->t_mountp; | 341 | mp = tp->t_mountp; |
342 | if (!XFS_SB_VERSION_HASNLINK(&mp->m_sb)) { | 342 | if (!xfs_sb_version_hasnlink(&mp->m_sb)) { |
343 | spin_lock(&mp->m_sb_lock); | 343 | spin_lock(&mp->m_sb_lock); |
344 | if (!XFS_SB_VERSION_HASNLINK(&mp->m_sb)) { | 344 | if (!xfs_sb_version_hasnlink(&mp->m_sb)) { |
345 | XFS_SB_VERSION_ADDNLINK(&mp->m_sb); | 345 | xfs_sb_version_addnlink(&mp->m_sb); |
346 | spin_unlock(&mp->m_sb_lock); | 346 | spin_unlock(&mp->m_sb_lock); |
347 | xfs_mod_sb(tp, XFS_SB_VERSIONNUM); | 347 | xfs_mod_sb(tp, XFS_SB_VERSIONNUM); |
348 | } else { | 348 | } else { |
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c index 7321304a69cc..7094caff13cf 100644 --- a/fs/xfs/xfs_vfsops.c +++ b/fs/xfs/xfs_vfsops.c | |||
@@ -330,7 +330,7 @@ xfs_finish_flags( | |||
330 | int ronly = (mp->m_flags & XFS_MOUNT_RDONLY); | 330 | int ronly = (mp->m_flags & XFS_MOUNT_RDONLY); |
331 | 331 | ||
332 | /* Fail a mount where the logbuf is smaller then the log stripe */ | 332 | /* Fail a mount where the logbuf is smaller then the log stripe */ |
333 | if (XFS_SB_VERSION_HASLOGV2(&mp->m_sb)) { | 333 | if (xfs_sb_version_haslogv2(&mp->m_sb)) { |
334 | if ((ap->logbufsize <= 0) && | 334 | if ((ap->logbufsize <= 0) && |
335 | (mp->m_sb.sb_logsunit > XLOG_BIG_RECORD_BSIZE)) { | 335 | (mp->m_sb.sb_logsunit > XLOG_BIG_RECORD_BSIZE)) { |
336 | mp->m_logbsize = mp->m_sb.sb_logsunit; | 336 | mp->m_logbsize = mp->m_sb.sb_logsunit; |
@@ -349,9 +349,8 @@ xfs_finish_flags( | |||
349 | } | 349 | } |
350 | } | 350 | } |
351 | 351 | ||
352 | if (XFS_SB_VERSION_HASATTR2(&mp->m_sb)) { | 352 | if (xfs_sb_version_hasattr2(&mp->m_sb)) |
353 | mp->m_flags |= XFS_MOUNT_ATTR2; | 353 | mp->m_flags |= XFS_MOUNT_ATTR2; |
354 | } | ||
355 | 354 | ||
356 | /* | 355 | /* |
357 | * prohibit r/w mounts of read-only filesystems | 356 | * prohibit r/w mounts of read-only filesystems |
@@ -366,7 +365,7 @@ xfs_finish_flags( | |||
366 | * check for shared mount. | 365 | * check for shared mount. |
367 | */ | 366 | */ |
368 | if (ap->flags & XFSMNT_SHARED) { | 367 | if (ap->flags & XFSMNT_SHARED) { |
369 | if (!XFS_SB_VERSION_HASSHARED(&mp->m_sb)) | 368 | if (!xfs_sb_version_hasshared(&mp->m_sb)) |
370 | return XFS_ERROR(EINVAL); | 369 | return XFS_ERROR(EINVAL); |
371 | 370 | ||
372 | /* | 371 | /* |
@@ -512,7 +511,7 @@ xfs_mount( | |||
512 | if (!error && logdev && logdev != ddev) { | 511 | if (!error && logdev && logdev != ddev) { |
513 | unsigned int log_sector_size = BBSIZE; | 512 | unsigned int log_sector_size = BBSIZE; |
514 | 513 | ||
515 | if (XFS_SB_VERSION_HASSECTOR(&mp->m_sb)) | 514 | if (xfs_sb_version_hassector(&mp->m_sb)) |
516 | log_sector_size = mp->m_sb.sb_logsectsize; | 515 | log_sector_size = mp->m_sb.sb_logsectsize; |
517 | error = xfs_setsize_buftarg(mp->m_logdev_targp, | 516 | error = xfs_setsize_buftarg(mp->m_logdev_targp, |
518 | mp->m_sb.sb_blocksize, | 517 | mp->m_sb.sb_blocksize, |
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 51305242ff8c..64c5953feca4 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -4132,7 +4132,7 @@ xfs_free_file_space( | |||
4132 | * actually need to zero the extent edges. Otherwise xfs_bunmapi | 4132 | * actually need to zero the extent edges. Otherwise xfs_bunmapi |
4133 | * will take care of it for us. | 4133 | * will take care of it for us. |
4134 | */ | 4134 | */ |
4135 | if (rt && !XFS_SB_VERSION_HASEXTFLGBIT(&mp->m_sb)) { | 4135 | if (rt && !xfs_sb_version_hasextflgbit(&mp->m_sb)) { |
4136 | nimap = 1; | 4136 | nimap = 1; |
4137 | error = xfs_bmapi(NULL, ip, startoffset_fsb, | 4137 | error = xfs_bmapi(NULL, ip, startoffset_fsb, |
4138 | 1, 0, NULL, 0, &imap, &nimap, NULL, NULL); | 4138 | 1, 0, NULL, 0, &imap, &nimap, NULL, NULL); |
diff --git a/include/asm-alpha/current.h b/include/asm-alpha/current.h index 8d88a13c1bec..094d285a1b34 100644 --- a/include/asm-alpha/current.h +++ b/include/asm-alpha/current.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/thread_info.h> | 4 | #include <linux/thread_info.h> |
5 | 5 | ||
6 | #define get_current() (current_thread_info()->task + 0) | 6 | #define get_current() (current_thread_info()->task) |
7 | #define current get_current() | 7 | #define current get_current() |
8 | 8 | ||
9 | #endif /* _ALPHA_CURRENT_H */ | 9 | #endif /* _ALPHA_CURRENT_H */ |
diff --git a/include/asm-alpha/dma-mapping.h b/include/asm-alpha/dma-mapping.h index 75a1aff5b57b..db351d1296f4 100644 --- a/include/asm-alpha/dma-mapping.h +++ b/include/asm-alpha/dma-mapping.h | |||
@@ -11,7 +11,7 @@ | |||
11 | #define dma_unmap_single(dev, addr, size, dir) \ | 11 | #define dma_unmap_single(dev, addr, size, dir) \ |
12 | pci_unmap_single(alpha_gendev_to_pci(dev), addr, size, dir) | 12 | pci_unmap_single(alpha_gendev_to_pci(dev), addr, size, dir) |
13 | #define dma_alloc_coherent(dev, size, addr, gfp) \ | 13 | #define dma_alloc_coherent(dev, size, addr, gfp) \ |
14 | pci_alloc_consistent(alpha_gendev_to_pci(dev), size, addr) | 14 | __pci_alloc_consistent(alpha_gendev_to_pci(dev), size, addr, gfp) |
15 | #define dma_free_coherent(dev, size, va, addr) \ | 15 | #define dma_free_coherent(dev, size, va, addr) \ |
16 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) | 16 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) |
17 | #define dma_map_page(dev, page, off, size, dir) \ | 17 | #define dma_map_page(dev, page, off, size, dir) \ |
diff --git a/include/asm-alpha/kvm.h b/include/asm-alpha/kvm.h new file mode 100644 index 000000000000..b9daec429689 --- /dev/null +++ b/include/asm-alpha/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_ALPHA_H | ||
2 | #define __LINUX_KVM_ALPHA_H | ||
3 | |||
4 | /* alpha does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h index d5b10ef64364..d31fd49ff79a 100644 --- a/include/asm-alpha/pci.h +++ b/include/asm-alpha/pci.h | |||
@@ -76,7 +76,13 @@ extern inline void pcibios_penalize_isa_irq(int irq, int active) | |||
76 | successful and sets *DMA_ADDRP to the pci side dma address as well, | 76 | successful and sets *DMA_ADDRP to the pci side dma address as well, |
77 | else DMA_ADDRP is undefined. */ | 77 | else DMA_ADDRP is undefined. */ |
78 | 78 | ||
79 | extern void *pci_alloc_consistent(struct pci_dev *, size_t, dma_addr_t *); | 79 | extern void *__pci_alloc_consistent(struct pci_dev *, size_t, |
80 | dma_addr_t *, gfp_t); | ||
81 | static inline void * | ||
82 | pci_alloc_consistent(struct pci_dev *dev, size_t size, dma_addr_t *dma) | ||
83 | { | ||
84 | return __pci_alloc_consistent(dev, size, dma, GFP_ATOMIC); | ||
85 | } | ||
80 | 86 | ||
81 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must | 87 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must |
82 | be values that were returned from pci_alloc_consistent. SIZE must | 88 | be values that were returned from pci_alloc_consistent. SIZE must |
diff --git a/include/asm-arm/arch-omap/board-osk.h b/include/asm-arm/arch-omap/board-osk.h index 2b1a8a4fe44e..94926090e475 100644 --- a/include/asm-arm/arch-omap/board-osk.h +++ b/include/asm-arm/arch-omap/board-osk.h | |||
@@ -32,5 +32,16 @@ | |||
32 | /* At OMAP5912 OSK the Ethernet is directly connected to CS1 */ | 32 | /* At OMAP5912 OSK the Ethernet is directly connected to CS1 */ |
33 | #define OMAP_OSK_ETHR_START 0x04800300 | 33 | #define OMAP_OSK_ETHR_START 0x04800300 |
34 | 34 | ||
35 | /* TPS65010 has four GPIOs. nPG and LED2 can be treated like GPIOs with | ||
36 | * alternate pin configurations for hardware-controlled blinking. | ||
37 | */ | ||
38 | #define OSK_TPS_GPIO_BASE (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */) | ||
39 | # define OSK_TPS_GPIO_USB_PWR_EN (OSK_TPS_GPIO_BASE + 0) | ||
40 | # define OSK_TPS_GPIO_LED_D3 (OSK_TPS_GPIO_BASE + 1) | ||
41 | # define OSK_TPS_GPIO_LAN_RESET (OSK_TPS_GPIO_BASE + 2) | ||
42 | # define OSK_TPS_GPIO_DSP_PWR_EN (OSK_TPS_GPIO_BASE + 3) | ||
43 | # define OSK_TPS_GPIO_LED_D9 (OSK_TPS_GPIO_BASE + 4) | ||
44 | # define OSK_TPS_GPIO_LED_D2 (OSK_TPS_GPIO_BASE + 5) | ||
45 | |||
35 | #endif /* __ASM_ARCH_OMAP_OSK_H */ | 46 | #endif /* __ASM_ARCH_OMAP_OSK_H */ |
36 | 47 | ||
diff --git a/include/asm-arm/arch-omap/clock.h b/include/asm-arm/arch-omap/clock.h index fa6881049903..57523bdb642b 100644 --- a/include/asm-arm/arch-omap/clock.h +++ b/include/asm-arm/arch-omap/clock.h | |||
@@ -14,6 +14,35 @@ | |||
14 | #define __ARCH_ARM_OMAP_CLOCK_H | 14 | #define __ARCH_ARM_OMAP_CLOCK_H |
15 | 15 | ||
16 | struct module; | 16 | struct module; |
17 | struct clk; | ||
18 | |||
19 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
20 | |||
21 | struct clksel_rate { | ||
22 | u8 div; | ||
23 | u32 val; | ||
24 | u8 flags; | ||
25 | }; | ||
26 | |||
27 | struct clksel { | ||
28 | struct clk *parent; | ||
29 | const struct clksel_rate *rates; | ||
30 | }; | ||
31 | |||
32 | struct dpll_data { | ||
33 | void __iomem *mult_div1_reg; | ||
34 | u32 mult_mask; | ||
35 | u32 div1_mask; | ||
36 | # if defined(CONFIG_ARCH_OMAP3) | ||
37 | void __iomem *control_reg; | ||
38 | u32 enable_mask; | ||
39 | u8 auto_recal_bit; | ||
40 | u8 recal_en_bit; | ||
41 | u8 recal_st_bit; | ||
42 | # endif | ||
43 | }; | ||
44 | |||
45 | #endif | ||
17 | 46 | ||
18 | struct clk { | 47 | struct clk { |
19 | struct list_head node; | 48 | struct list_head node; |
@@ -25,8 +54,6 @@ struct clk { | |||
25 | __u32 flags; | 54 | __u32 flags; |
26 | void __iomem *enable_reg; | 55 | void __iomem *enable_reg; |
27 | __u8 enable_bit; | 56 | __u8 enable_bit; |
28 | __u8 rate_offset; | ||
29 | __u8 src_offset; | ||
30 | __s8 usecount; | 57 | __s8 usecount; |
31 | void (*recalc)(struct clk *); | 58 | void (*recalc)(struct clk *); |
32 | int (*set_rate)(struct clk *, unsigned long); | 59 | int (*set_rate)(struct clk *, unsigned long); |
@@ -34,6 +61,16 @@ struct clk { | |||
34 | void (*init)(struct clk *); | 61 | void (*init)(struct clk *); |
35 | int (*enable)(struct clk *); | 62 | int (*enable)(struct clk *); |
36 | void (*disable)(struct clk *); | 63 | void (*disable)(struct clk *); |
64 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
65 | u8 fixed_div; | ||
66 | void __iomem *clksel_reg; | ||
67 | u32 clksel_mask; | ||
68 | const struct clksel *clksel; | ||
69 | const struct dpll_data *dpll_data; | ||
70 | #else | ||
71 | __u8 rate_offset; | ||
72 | __u8 src_offset; | ||
73 | #endif | ||
37 | }; | 74 | }; |
38 | 75 | ||
39 | struct clk_functions { | 76 | struct clk_functions { |
@@ -54,10 +91,12 @@ extern int clk_init(struct clk_functions * custom_clocks); | |||
54 | extern int clk_register(struct clk *clk); | 91 | extern int clk_register(struct clk *clk); |
55 | extern void clk_unregister(struct clk *clk); | 92 | extern void clk_unregister(struct clk *clk); |
56 | extern void propagate_rate(struct clk *clk); | 93 | extern void propagate_rate(struct clk *clk); |
94 | extern void recalculate_root_clocks(void); | ||
57 | extern void followparent_recalc(struct clk * clk); | 95 | extern void followparent_recalc(struct clk * clk); |
58 | extern void clk_allow_idle(struct clk *clk); | 96 | extern void clk_allow_idle(struct clk *clk); |
59 | extern void clk_deny_idle(struct clk *clk); | 97 | extern void clk_deny_idle(struct clk *clk); |
60 | extern int clk_get_usecount(struct clk *clk); | 98 | extern int clk_get_usecount(struct clk *clk); |
99 | extern void clk_enable_init_clocks(void); | ||
61 | 100 | ||
62 | /* Clock flags */ | 101 | /* Clock flags */ |
63 | #define RATE_CKCTL (1 << 0) /* Main fixed ratio clocks */ | 102 | #define RATE_CKCTL (1 << 0) /* Main fixed ratio clocks */ |
@@ -71,21 +110,33 @@ extern int clk_get_usecount(struct clk *clk); | |||
71 | #define CLOCK_NO_IDLE_PARENT (1 << 8) | 110 | #define CLOCK_NO_IDLE_PARENT (1 << 8) |
72 | #define DELAYED_APP (1 << 9) /* Delay application of clock */ | 111 | #define DELAYED_APP (1 << 9) /* Delay application of clock */ |
73 | #define CONFIG_PARTICIPANT (1 << 10) /* Fundamental clock */ | 112 | #define CONFIG_PARTICIPANT (1 << 10) /* Fundamental clock */ |
74 | #define CM_MPU_SEL1 (1 << 11) /* Domain divider/source */ | 113 | #define ENABLE_ON_INIT (1 << 11) /* Enable upon framework init */ |
75 | #define CM_DSP_SEL1 (1 << 12) | 114 | #define INVERT_ENABLE (1 << 12) /* 0 enables, 1 disables */ |
76 | #define CM_GFX_SEL1 (1 << 13) | 115 | /* bits 13-20 are currently free */ |
77 | #define CM_MODEM_SEL1 (1 << 14) | ||
78 | #define CM_CORE_SEL1 (1 << 15) /* Sets divider for many */ | ||
79 | #define CM_CORE_SEL2 (1 << 16) /* sets parent for GPT */ | ||
80 | #define CM_WKUP_SEL1 (1 << 17) | ||
81 | #define CM_PLL_SEL1 (1 << 18) | ||
82 | #define CM_PLL_SEL2 (1 << 19) | ||
83 | #define CM_SYSCLKOUT_SEL1 (1 << 20) | ||
84 | #define CLOCK_IN_OMAP310 (1 << 21) | 116 | #define CLOCK_IN_OMAP310 (1 << 21) |
85 | #define CLOCK_IN_OMAP730 (1 << 22) | 117 | #define CLOCK_IN_OMAP730 (1 << 22) |
86 | #define CLOCK_IN_OMAP1510 (1 << 23) | 118 | #define CLOCK_IN_OMAP1510 (1 << 23) |
87 | #define CLOCK_IN_OMAP16XX (1 << 24) | 119 | #define CLOCK_IN_OMAP16XX (1 << 24) |
88 | #define CLOCK_IN_OMAP242X (1 << 25) | 120 | #define CLOCK_IN_OMAP242X (1 << 25) |
89 | #define CLOCK_IN_OMAP243X (1 << 26) | 121 | #define CLOCK_IN_OMAP243X (1 << 26) |
122 | #define CLOCK_IN_OMAP343X (1 << 27) /* clocks common to all 343X */ | ||
123 | #define PARENT_CONTROLS_CLOCK (1 << 28) | ||
124 | #define CLOCK_IN_OMAP3430ES1 (1 << 29) /* 3430ES1 clocks only */ | ||
125 | #define CLOCK_IN_OMAP3430ES2 (1 << 30) /* 3430ES2 clocks only */ | ||
126 | |||
127 | /* Clksel_rate flags */ | ||
128 | #define DEFAULT_RATE (1 << 0) | ||
129 | #define RATE_IN_242X (1 << 1) | ||
130 | #define RATE_IN_243X (1 << 2) | ||
131 | #define RATE_IN_343X (1 << 3) /* rates common to all 343X */ | ||
132 | #define RATE_IN_3430ES2 (1 << 4) /* 3430ES2 rates only */ | ||
133 | |||
134 | #define RATE_IN_24XX (RATE_IN_242X | RATE_IN_243X) | ||
135 | |||
136 | |||
137 | /* CM_CLKSEL2_PLL.CORE_CLK_SRC options (24XX) */ | ||
138 | #define CORE_CLK_SRC_32K 0 | ||
139 | #define CORE_CLK_SRC_DPLL 1 | ||
140 | #define CORE_CLK_SRC_DPLL_X2 2 | ||
90 | 141 | ||
91 | #endif | 142 | #endif |
diff --git a/include/asm-arm/arch-omap/control.h b/include/asm-arm/arch-omap/control.h new file mode 100644 index 000000000000..9944bb5d5330 --- /dev/null +++ b/include/asm-arm/arch-omap/control.h | |||
@@ -0,0 +1,191 @@ | |||
1 | #ifndef __ASM_ARCH_CONTROL_H | ||
2 | #define __ASM_ARCH_CONTROL_H | ||
3 | |||
4 | /* | ||
5 | * include/asm-arm/arch-omap/control.h | ||
6 | * | ||
7 | * OMAP2/3 System Control Module definitions | ||
8 | * | ||
9 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
10 | * Copyright (C) 2007 Nokia Corporation | ||
11 | * | ||
12 | * Written by Paul Walmsley | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License as published by | ||
16 | * the Free Software Foundation. | ||
17 | */ | ||
18 | |||
19 | #include <asm/arch/io.h> | ||
20 | |||
21 | #define OMAP242X_CTRL_REGADDR(reg) \ | ||
22 | (void __iomem *)IO_ADDRESS(OMAP242X_CTRL_BASE + (reg)) | ||
23 | #define OMAP243X_CTRL_REGADDR(reg) \ | ||
24 | (void __iomem *)IO_ADDRESS(OMAP243X_CTRL_BASE + (reg)) | ||
25 | #define OMAP343X_CTRL_REGADDR(reg) \ | ||
26 | (void __iomem *)IO_ADDRESS(OMAP343X_CTRL_BASE + (reg)) | ||
27 | |||
28 | /* | ||
29 | * As elsewhere, the "OMAP2_" prefix indicates that the macro is valid for | ||
30 | * OMAP24XX and OMAP34XX. | ||
31 | */ | ||
32 | |||
33 | /* Control submodule offsets */ | ||
34 | |||
35 | #define OMAP2_CONTROL_INTERFACE 0x000 | ||
36 | #define OMAP2_CONTROL_PADCONFS 0x030 | ||
37 | #define OMAP2_CONTROL_GENERAL 0x270 | ||
38 | #define OMAP343X_CONTROL_MEM_WKUP 0x600 | ||
39 | #define OMAP343X_CONTROL_PADCONFS_WKUP 0xa00 | ||
40 | #define OMAP343X_CONTROL_GENERAL_WKUP 0xa60 | ||
41 | |||
42 | /* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */ | ||
43 | |||
44 | #define OMAP2_CONTROL_SYSCONFIG (OMAP2_CONTROL_INTERFACE + 0x10) | ||
45 | |||
46 | /* CONTROL_GENERAL register offsets common to OMAP2 & 3 */ | ||
47 | #define OMAP2_CONTROL_DEVCONF0 (OMAP2_CONTROL_GENERAL + 0x0004) | ||
48 | #define OMAP2_CONTROL_MSUSPENDMUX_0 (OMAP2_CONTROL_GENERAL + 0x0020) | ||
49 | #define OMAP2_CONTROL_MSUSPENDMUX_1 (OMAP2_CONTROL_GENERAL + 0x0024) | ||
50 | #define OMAP2_CONTROL_MSUSPENDMUX_2 (OMAP2_CONTROL_GENERAL + 0x0028) | ||
51 | #define OMAP2_CONTROL_MSUSPENDMUX_3 (OMAP2_CONTROL_GENERAL + 0x002c) | ||
52 | #define OMAP2_CONTROL_MSUSPENDMUX_4 (OMAP2_CONTROL_GENERAL + 0x0030) | ||
53 | #define OMAP2_CONTROL_MSUSPENDMUX_5 (OMAP2_CONTROL_GENERAL + 0x0034) | ||
54 | #define OMAP2_CONTROL_SEC_CTRL (OMAP2_CONTROL_GENERAL + 0x0040) | ||
55 | #define OMAP2_CONTROL_RPUB_KEY_H_0 (OMAP2_CONTROL_GENERAL + 0x0090) | ||
56 | #define OMAP2_CONTROL_RPUB_KEY_H_1 (OMAP2_CONTROL_GENERAL + 0x0094) | ||
57 | #define OMAP2_CONTROL_RPUB_KEY_H_2 (OMAP2_CONTROL_GENERAL + 0x0098) | ||
58 | #define OMAP2_CONTROL_RPUB_KEY_H_3 (OMAP2_CONTROL_GENERAL + 0x009c) | ||
59 | |||
60 | /* 242x-only CONTROL_GENERAL register offsets */ | ||
61 | #define OMAP242X_CONTROL_DEVCONF OMAP2_CONTROL_DEVCONF0 /* match TRM */ | ||
62 | #define OMAP242X_CONTROL_OCM_RAM_PERM (OMAP2_CONTROL_GENERAL + 0x0068) | ||
63 | |||
64 | /* 243x-only CONTROL_GENERAL register offsets */ | ||
65 | /* CONTROL_IVA2_BOOT{ADDR,MOD} are at the same place on 343x - noted below */ | ||
66 | #define OMAP243X_CONTROL_DEVCONF1 (OMAP2_CONTROL_GENERAL + 0x0078) | ||
67 | #define OMAP243X_CONTROL_CSIRXFE (OMAP2_CONTROL_GENERAL + 0x007c) | ||
68 | #define OMAP243X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190) | ||
69 | #define OMAP243X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194) | ||
70 | #define OMAP243X_CONTROL_IVA2_GEMCFG (OMAP2_CONTROL_GENERAL + 0x0198) | ||
71 | |||
72 | /* 24xx-only CONTROL_GENERAL register offsets */ | ||
73 | #define OMAP24XX_CONTROL_DEBOBS (OMAP2_CONTROL_GENERAL + 0x0000) | ||
74 | #define OMAP24XX_CONTROL_EMU_SUPPORT (OMAP2_CONTROL_GENERAL + 0x0008) | ||
75 | #define OMAP24XX_CONTROL_SEC_TEST (OMAP2_CONTROL_GENERAL + 0x0044) | ||
76 | #define OMAP24XX_CONTROL_PSA_CTRL (OMAP2_CONTROL_GENERAL + 0x0048) | ||
77 | #define OMAP24XX_CONTROL_PSA_CMD (OMAP2_CONTROL_GENERAL + 0x004c) | ||
78 | #define OMAP24XX_CONTROL_PSA_VALUE (OMAP2_CONTROL_GENERAL + 0x0050) | ||
79 | #define OMAP24XX_CONTROL_SEC_EMU (OMAP2_CONTROL_GENERAL + 0x0060) | ||
80 | #define OMAP24XX_CONTROL_SEC_TAP (OMAP2_CONTROL_GENERAL + 0x0064) | ||
81 | #define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD (OMAP2_CONTROL_GENERAL + 0x006c) | ||
82 | #define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD (OMAP2_CONTROL_GENERAL + 0x0070) | ||
83 | #define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD (OMAP2_CONTROL_GENERAL + 0x0074 | ||
84 | #define OMAP24XX_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0080) | ||
85 | #define OMAP24XX_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0084) | ||
86 | #define OMAP24XX_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0088) | ||
87 | #define OMAP24XX_CONTROL_GENERAL_PURPOSE_STATUS (OMAP2_CONTROL_GENERAL + 0x008c) | ||
88 | #define OMAP24XX_CONTROL_RAND_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00a0) | ||
89 | #define OMAP24XX_CONTROL_RAND_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00a4) | ||
90 | #define OMAP24XX_CONTROL_RAND_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00a8) | ||
91 | #define OMAP24XX_CONTROL_RAND_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00ac) | ||
92 | #define OMAP24XX_CONTROL_CUST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00b0) | ||
93 | #define OMAP24XX_CONTROL_CUST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00b4) | ||
94 | #define OMAP24XX_CONTROL_TEST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00c0) | ||
95 | #define OMAP24XX_CONTROL_TEST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00c4) | ||
96 | #define OMAP24XX_CONTROL_TEST_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00c8) | ||
97 | #define OMAP24XX_CONTROL_TEST_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00cc) | ||
98 | #define OMAP24XX_CONTROL_TEST_KEY_4 (OMAP2_CONTROL_GENERAL + 0x00d0) | ||
99 | #define OMAP24XX_CONTROL_TEST_KEY_5 (OMAP2_CONTROL_GENERAL + 0x00d4) | ||
100 | #define OMAP24XX_CONTROL_TEST_KEY_6 (OMAP2_CONTROL_GENERAL + 0x00d8) | ||
101 | #define OMAP24XX_CONTROL_TEST_KEY_7 (OMAP2_CONTROL_GENERAL + 0x00dc) | ||
102 | #define OMAP24XX_CONTROL_TEST_KEY_8 (OMAP2_CONTROL_GENERAL + 0x00e0) | ||
103 | #define OMAP24XX_CONTROL_TEST_KEY_9 (OMAP2_CONTROL_GENERAL + 0x00e4) | ||
104 | |||
105 | /* 34xx-only CONTROL_GENERAL register offsets */ | ||
106 | #define OMAP343X_CONTROL_PADCONF_OFF (OMAP2_CONTROL_GENERAL + 0x0000) | ||
107 | #define OMAP343X_CONTROL_MEM_DFTRW0 (OMAP2_CONTROL_GENERAL + 0x0008) | ||
108 | #define OMAP343X_CONTROL_MEM_DFTRW1 (OMAP2_CONTROL_GENERAL + 0x000c) | ||
109 | #define OMAP343X_CONTROL_DEVCONF1 (OMAP2_CONTROL_GENERAL + 0x0068) | ||
110 | #define OMAP343X_CONTROL_CSIRXFE (OMAP2_CONTROL_GENERAL + 0x006c) | ||
111 | #define OMAP343X_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0070) | ||
112 | #define OMAP343X_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0074) | ||
113 | #define OMAP343X_CONTROL_SEC_ERR_STATUS_DEBUG (OMAP2_CONTROL_GENERAL + 0x0078) | ||
114 | #define OMAP343X_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0080) | ||
115 | #define OMAP343X_CONTROL_GENERAL_PURPOSE_STATUS (OMAP2_CONTROL_GENERAL + 0x0084) | ||
116 | #define OMAP343X_CONTROL_RPUB_KEY_H_4 (OMAP2_CONTROL_GENERAL + 0x00a0) | ||
117 | #define OMAP343X_CONTROL_RAND_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00a8) | ||
118 | #define OMAP343X_CONTROL_RAND_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00ac) | ||
119 | #define OMAP343X_CONTROL_RAND_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00b0) | ||
120 | #define OMAP343X_CONTROL_RAND_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00b4) | ||
121 | #define OMAP343X_CONTROL_TEST_KEY_0 (OMAP2_CONTROL_GENERAL + 0x00c8) | ||
122 | #define OMAP343X_CONTROL_TEST_KEY_1 (OMAP2_CONTROL_GENERAL + 0x00cc) | ||
123 | #define OMAP343X_CONTROL_TEST_KEY_2 (OMAP2_CONTROL_GENERAL + 0x00d0) | ||
124 | #define OMAP343X_CONTROL_TEST_KEY_3 (OMAP2_CONTROL_GENERAL + 0x00d4) | ||
125 | #define OMAP343X_CONTROL_TEST_KEY_4 (OMAP2_CONTROL_GENERAL + 0x00d8) | ||
126 | #define OMAP343X_CONTROL_TEST_KEY_5 (OMAP2_CONTROL_GENERAL + 0x00dc) | ||
127 | #define OMAP343X_CONTROL_TEST_KEY_6 (OMAP2_CONTROL_GENERAL + 0x00e0) | ||
128 | #define OMAP343X_CONTROL_TEST_KEY_7 (OMAP2_CONTROL_GENERAL + 0x00e4) | ||
129 | #define OMAP343X_CONTROL_TEST_KEY_8 (OMAP2_CONTROL_GENERAL + 0x00e8) | ||
130 | #define OMAP343X_CONTROL_TEST_KEY_9 (OMAP2_CONTROL_GENERAL + 0x00ec) | ||
131 | #define OMAP343X_CONTROL_TEST_KEY_10 (OMAP2_CONTROL_GENERAL + 0x00f0) | ||
132 | #define OMAP343X_CONTROL_TEST_KEY_11 (OMAP2_CONTROL_GENERAL + 0x00f4) | ||
133 | #define OMAP343X_CONTROL_TEST_KEY_12 (OMAP2_CONTROL_GENERAL + 0x00f8) | ||
134 | #define OMAP343X_CONTROL_TEST_KEY_13 (OMAP2_CONTROL_GENERAL + 0x00fc) | ||
135 | #define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190) | ||
136 | #define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194) | ||
137 | |||
138 | /* | ||
139 | * REVISIT: This list of registers is not comprehensive - there are more | ||
140 | * that should be added. | ||
141 | */ | ||
142 | |||
143 | /* | ||
144 | * Control module register bit defines - these should eventually go into | ||
145 | * their own regbits file. Some of these will be complicated, depending | ||
146 | * on the device type (general-purpose, emulator, test, secure, bad, other) | ||
147 | * and the security mode (secure, non-secure, don't care) | ||
148 | */ | ||
149 | /* CONTROL_DEVCONF0 bits */ | ||
150 | #define OMAP24XX_USBSTANDBYCTRL (1 << 15) | ||
151 | #define OMAP2_MCBSP2_CLKS_MASK (1 << 6) | ||
152 | #define OMAP2_MCBSP1_CLKS_MASK (1 << 2) | ||
153 | |||
154 | /* CONTROL_DEVCONF1 bits */ | ||
155 | #define OMAP2_MCBSP5_CLKS_MASK (1 << 4) /* > 242x */ | ||
156 | #define OMAP2_MCBSP4_CLKS_MASK (1 << 2) /* > 242x */ | ||
157 | #define OMAP2_MCBSP3_CLKS_MASK (1 << 0) /* > 242x */ | ||
158 | |||
159 | /* CONTROL_STATUS bits */ | ||
160 | #define OMAP2_DEVICETYPE_MASK (0x7 << 8) | ||
161 | #define OMAP2_SYSBOOT_5_MASK (1 << 5) | ||
162 | #define OMAP2_SYSBOOT_4_MASK (1 << 4) | ||
163 | #define OMAP2_SYSBOOT_3_MASK (1 << 3) | ||
164 | #define OMAP2_SYSBOOT_2_MASK (1 << 2) | ||
165 | #define OMAP2_SYSBOOT_1_MASK (1 << 1) | ||
166 | #define OMAP2_SYSBOOT_0_MASK (1 << 0) | ||
167 | |||
168 | #ifndef __ASSEMBLY__ | ||
169 | #if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3) | ||
170 | extern void omap_ctrl_base_set(u32 base); | ||
171 | extern u32 omap_ctrl_base_get(void); | ||
172 | extern u8 omap_ctrl_readb(u16 offset); | ||
173 | extern u16 omap_ctrl_readw(u16 offset); | ||
174 | extern u32 omap_ctrl_readl(u16 offset); | ||
175 | extern void omap_ctrl_writeb(u8 val, u16 offset); | ||
176 | extern void omap_ctrl_writew(u16 val, u16 offset); | ||
177 | extern void omap_ctrl_writel(u32 val, u16 offset); | ||
178 | #else | ||
179 | #define omap_ctrl_base_set(x) WARN_ON(1) | ||
180 | #define omap_ctrl_base_get() 0 | ||
181 | #define omap_ctrl_readb(x) 0 | ||
182 | #define omap_ctrl_readw(x) 0 | ||
183 | #define omap_ctrl_readl(x) 0 | ||
184 | #define omap_ctrl_writeb(x, y) WARN_ON(1) | ||
185 | #define omap_ctrl_writew(x, y) WARN_ON(1) | ||
186 | #define omap_ctrl_writel(x, y) WARN_ON(1) | ||
187 | #endif | ||
188 | #endif /* __ASSEMBLY__ */ | ||
189 | |||
190 | #endif /* __ASM_ARCH_CONTROL_H */ | ||
191 | |||
diff --git a/include/asm-arm/arch-omap/entry-macro.S b/include/asm-arm/arch-omap/entry-macro.S index f6967c8df323..74cd57221c8e 100644 --- a/include/asm-arm/arch-omap/entry-macro.S +++ b/include/asm-arm/arch-omap/entry-macro.S | |||
@@ -68,7 +68,7 @@ | |||
68 | .endm | 68 | .endm |
69 | 69 | ||
70 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | 70 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp |
71 | ldr \base, =VA_IC_BASE | 71 | ldr \base, =OMAP2_VA_IC_BASE |
72 | ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */ | 72 | ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */ |
73 | cmp \irqnr, #0x0 | 73 | cmp \irqnr, #0x0 |
74 | bne 2222f | 74 | bne 2222f |
diff --git a/include/asm-arm/arch-omap/gpio.h b/include/asm-arm/arch-omap/gpio.h index 164da09be095..86621a04cd8f 100644 --- a/include/asm-arm/arch-omap/gpio.h +++ b/include/asm-arm/arch-omap/gpio.h | |||
@@ -82,62 +82,35 @@ extern void omap_set_gpio_debounce_time(int gpio, int enable); | |||
82 | 82 | ||
83 | /*-------------------------------------------------------------------------*/ | 83 | /*-------------------------------------------------------------------------*/ |
84 | 84 | ||
85 | /* wrappers for "new style" GPIO calls. the old OMAP-specfic ones should | 85 | /* Wrappers for "new style" GPIO calls, using the new infrastructure |
86 | * eventually be removed (along with this errno.h inclusion), and maybe | 86 | * which lets us plug in FPGA, I2C, and other implementations. |
87 | * gpios should put MPUIOs last too. | 87 | * * |
88 | * The original OMAP-specfic calls should eventually be removed. | ||
88 | */ | 89 | */ |
89 | 90 | ||
90 | #include <asm/errno.h> | 91 | #include <linux/errno.h> |
91 | 92 | #include <asm-generic/gpio.h> | |
92 | static inline int gpio_request(unsigned gpio, const char *label) | ||
93 | { | ||
94 | return omap_request_gpio(gpio); | ||
95 | } | ||
96 | |||
97 | static inline void gpio_free(unsigned gpio) | ||
98 | { | ||
99 | omap_free_gpio(gpio); | ||
100 | } | ||
101 | |||
102 | static inline int __gpio_set_direction(unsigned gpio, int is_input) | ||
103 | { | ||
104 | if (cpu_class_is_omap2()) { | ||
105 | if (gpio > OMAP_MAX_GPIO_LINES) | ||
106 | return -EINVAL; | ||
107 | } else { | ||
108 | if (gpio > (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */)) | ||
109 | return -EINVAL; | ||
110 | } | ||
111 | omap_set_gpio_direction(gpio, is_input); | ||
112 | return 0; | ||
113 | } | ||
114 | |||
115 | static inline int gpio_direction_input(unsigned gpio) | ||
116 | { | ||
117 | return __gpio_set_direction(gpio, 1); | ||
118 | } | ||
119 | |||
120 | static inline int gpio_direction_output(unsigned gpio, int value) | ||
121 | { | ||
122 | omap_set_gpio_dataout(gpio, value); | ||
123 | return __gpio_set_direction(gpio, 0); | ||
124 | } | ||
125 | 93 | ||
126 | static inline int gpio_get_value(unsigned gpio) | 94 | static inline int gpio_get_value(unsigned gpio) |
127 | { | 95 | { |
128 | return omap_get_gpio_datain(gpio); | 96 | return __gpio_get_value(gpio); |
129 | } | 97 | } |
130 | 98 | ||
131 | static inline void gpio_set_value(unsigned gpio, int value) | 99 | static inline void gpio_set_value(unsigned gpio, int value) |
132 | { | 100 | { |
133 | omap_set_gpio_dataout(gpio, value); | 101 | __gpio_set_value(gpio, value); |
134 | } | 102 | } |
135 | 103 | ||
136 | #include <asm-generic/gpio.h> /* cansleep wrappers */ | 104 | static inline int gpio_cansleep(unsigned gpio) |
105 | { | ||
106 | return __gpio_cansleep(gpio); | ||
107 | } | ||
137 | 108 | ||
138 | static inline int gpio_to_irq(unsigned gpio) | 109 | static inline int gpio_to_irq(unsigned gpio) |
139 | { | 110 | { |
140 | return OMAP_GPIO_IRQ(gpio); | 111 | if (gpio < (OMAP_MAX_GPIO_LINES + 16)) |
112 | return OMAP_GPIO_IRQ(gpio); | ||
113 | return -EINVAL; | ||
141 | } | 114 | } |
142 | 115 | ||
143 | static inline int irq_to_gpio(unsigned irq) | 116 | static inline int irq_to_gpio(unsigned irq) |
diff --git a/include/asm-arm/arch-omap/io.h b/include/asm-arm/arch-omap/io.h index 289082d07f14..160578e1f557 100644 --- a/include/asm-arm/arch-omap/io.h +++ b/include/asm-arm/arch-omap/io.h | |||
@@ -80,6 +80,13 @@ | |||
80 | #define OMAP243X_GPMC_PHYS OMAP243X_GPMC_BASE /* 0x49000000 */ | 80 | #define OMAP243X_GPMC_PHYS OMAP243X_GPMC_BASE /* 0x49000000 */ |
81 | #define OMAP243X_GPMC_VIRT 0xFE000000 | 81 | #define OMAP243X_GPMC_VIRT 0xFE000000 |
82 | #define OMAP243X_GPMC_SIZE SZ_1M | 82 | #define OMAP243X_GPMC_SIZE SZ_1M |
83 | #define OMAP243X_SDRC_PHYS OMAP243X_SDRC_BASE | ||
84 | #define OMAP243X_SDRC_VIRT 0xFD000000 | ||
85 | #define OMAP243X_SDRC_SIZE SZ_1M | ||
86 | #define OMAP243X_SMS_PHYS OMAP243X_SMS_BASE | ||
87 | #define OMAP243X_SMS_VIRT 0xFC000000 | ||
88 | #define OMAP243X_SMS_SIZE SZ_1M | ||
89 | |||
83 | #endif | 90 | #endif |
84 | 91 | ||
85 | #define IO_OFFSET 0x90000000 | 92 | #define IO_OFFSET 0x90000000 |
@@ -88,16 +95,73 @@ | |||
88 | #define io_v2p(va) ((va) - IO_OFFSET) /* Works for L3 and L4 */ | 95 | #define io_v2p(va) ((va) - IO_OFFSET) /* Works for L3 and L4 */ |
89 | 96 | ||
90 | /* DSP */ | 97 | /* DSP */ |
91 | #define DSP_MEM_24XX_PHYS OMAP24XX_DSP_MEM_BASE /* 0x58000000 */ | 98 | #define DSP_MEM_24XX_PHYS OMAP2420_DSP_MEM_BASE /* 0x58000000 */ |
92 | #define DSP_MEM_24XX_VIRT 0xe0000000 | 99 | #define DSP_MEM_24XX_VIRT 0xe0000000 |
93 | #define DSP_MEM_24XX_SIZE 0x28000 | 100 | #define DSP_MEM_24XX_SIZE 0x28000 |
94 | #define DSP_IPI_24XX_PHYS OMAP24XX_DSP_IPI_BASE /* 0x59000000 */ | 101 | #define DSP_IPI_24XX_PHYS OMAP2420_DSP_IPI_BASE /* 0x59000000 */ |
95 | #define DSP_IPI_24XX_VIRT 0xe1000000 | 102 | #define DSP_IPI_24XX_VIRT 0xe1000000 |
96 | #define DSP_IPI_24XX_SIZE SZ_4K | 103 | #define DSP_IPI_24XX_SIZE SZ_4K |
97 | #define DSP_MMU_24XX_PHYS OMAP24XX_DSP_MMU_BASE /* 0x5a000000 */ | 104 | #define DSP_MMU_24XX_PHYS OMAP2420_DSP_MMU_BASE /* 0x5a000000 */ |
98 | #define DSP_MMU_24XX_VIRT 0xe2000000 | 105 | #define DSP_MMU_24XX_VIRT 0xe2000000 |
99 | #define DSP_MMU_24XX_SIZE SZ_4K | 106 | #define DSP_MMU_24XX_SIZE SZ_4K |
100 | 107 | ||
108 | #elif defined(CONFIG_ARCH_OMAP3) | ||
109 | |||
110 | /* We map both L3 and L4 on OMAP3 */ | ||
111 | #define L3_34XX_PHYS L3_34XX_BASE /* 0x68000000 */ | ||
112 | #define L3_34XX_VIRT 0xf8000000 | ||
113 | #define L3_34XX_SIZE SZ_1M /* 44kB of 128MB used, want 1MB sect */ | ||
114 | |||
115 | #define L4_34XX_PHYS L4_34XX_BASE /* 0x48000000 */ | ||
116 | #define L4_34XX_VIRT 0xd8000000 | ||
117 | #define L4_34XX_SIZE SZ_4M /* 1MB of 128MB used, want 1MB sect */ | ||
118 | |||
119 | /* | ||
120 | * Need to look at the Size 4M for L4. | ||
121 | * VPOM3430 was not working for Int controller | ||
122 | */ | ||
123 | |||
124 | #define L4_WK_34XX_PHYS L4_WK_34XX_BASE /* 0x48300000 */ | ||
125 | #define L4_WK_34XX_VIRT 0xd8300000 | ||
126 | #define L4_WK_34XX_SIZE SZ_1M | ||
127 | |||
128 | #define L4_PER_34XX_PHYS L4_PER_34XX_BASE /* 0x49000000 */ | ||
129 | #define L4_PER_34XX_VIRT 0xd9000000 | ||
130 | #define L4_PER_34XX_SIZE SZ_1M | ||
131 | |||
132 | #define L4_EMU_34XX_PHYS L4_EMU_34XX_BASE /* 0x54000000 */ | ||
133 | #define L4_EMU_34XX_VIRT 0xe4000000 | ||
134 | #define L4_EMU_34XX_SIZE SZ_64M | ||
135 | |||
136 | #define OMAP34XX_GPMC_PHYS OMAP34XX_GPMC_BASE /* 0x6E000000 */ | ||
137 | #define OMAP34XX_GPMC_VIRT 0xFE000000 | ||
138 | #define OMAP34XX_GPMC_SIZE SZ_1M | ||
139 | |||
140 | #define OMAP343X_SMS_PHYS OMAP343X_SMS_BASE /* 0x6C000000 */ | ||
141 | #define OMAP343X_SMS_VIRT 0xFC000000 | ||
142 | #define OMAP343X_SMS_SIZE SZ_1M | ||
143 | |||
144 | #define OMAP343X_SDRC_PHYS OMAP343X_SDRC_BASE /* 0x6D000000 */ | ||
145 | #define OMAP343X_SDRC_VIRT 0xFD000000 | ||
146 | #define OMAP343X_SDRC_SIZE SZ_1M | ||
147 | |||
148 | |||
149 | #define IO_OFFSET 0x90000000 | ||
150 | #define IO_ADDRESS(pa) ((pa) + IO_OFFSET)/* Works for L3 and L4 */ | ||
151 | #define io_p2v(pa) ((pa) + IO_OFFSET)/* Works for L3 and L4 */ | ||
152 | #define io_v2p(va) ((va) - IO_OFFSET)/* Works for L3 and L4 */ | ||
153 | |||
154 | /* DSP */ | ||
155 | #define DSP_MEM_34XX_PHYS OMAP34XX_DSP_MEM_BASE /* 0x58000000 */ | ||
156 | #define DSP_MEM_34XX_VIRT 0xe0000000 | ||
157 | #define DSP_MEM_34XX_SIZE 0x28000 | ||
158 | #define DSP_IPI_34XX_PHYS OMAP34XX_DSP_IPI_BASE /* 0x59000000 */ | ||
159 | #define DSP_IPI_34XX_VIRT 0xe1000000 | ||
160 | #define DSP_IPI_34XX_SIZE SZ_4K | ||
161 | #define DSP_MMU_34XX_PHYS OMAP34XX_DSP_MMU_BASE /* 0x5a000000 */ | ||
162 | #define DSP_MMU_34XX_VIRT 0xe2000000 | ||
163 | #define DSP_MMU_34XX_SIZE SZ_4K | ||
164 | |||
101 | #endif | 165 | #endif |
102 | 166 | ||
103 | #ifndef __ASSEMBLER__ | 167 | #ifndef __ASSEMBLER__ |
diff --git a/include/asm-arm/arch-omap/mux.h b/include/asm-arm/arch-omap/mux.h index b8fff50e6a87..ff9a5b5575fd 100644 --- a/include/asm-arm/arch-omap/mux.h +++ b/include/asm-arm/arch-omap/mux.h | |||
@@ -4,9 +4,10 @@ | |||
4 | * Table of the Omap register configurations for the FUNC_MUX and | 4 | * Table of the Omap register configurations for the FUNC_MUX and |
5 | * PULL_DWN combinations. | 5 | * PULL_DWN combinations. |
6 | * | 6 | * |
7 | * Copyright (C) 2003 - 2005 Nokia Corporation | 7 | * Copyright (C) 2004 - 2008 Texas Instruments Inc. |
8 | * Copyright (C) 2003 - 2008 Nokia Corporation | ||
8 | * | 9 | * |
9 | * Written by Tony Lindgren <tony.lindgren@nokia.com> | 10 | * Written by Tony Lindgren |
10 | * | 11 | * |
11 | * This program is free software; you can redistribute it and/or modify | 12 | * This program is free software; you can redistribute it and/or modify |
12 | * it under the terms of the GNU General Public License as published by | 13 | * it under the terms of the GNU General Public License as published by |
@@ -27,14 +28,6 @@ | |||
27 | * - W8 = ball | 28 | * - W8 = ball |
28 | * - 1610 = 1510 or 1610, none if common for both 1510 and 1610 | 29 | * - 1610 = 1510 or 1610, none if common for both 1510 and 1610 |
29 | * - MMC2_DAT0 = function | 30 | * - MMC2_DAT0 = function |
30 | * | ||
31 | * Change log: | ||
32 | * Added entry for the I2C interface. (02Feb 2004) | ||
33 | * Copyright (C) 2004 Texas Instruments | ||
34 | * | ||
35 | * Added entry for the keypad and uwire CS1. (09Mar 2004) | ||
36 | * Copyright (C) 2004 Texas Instruments | ||
37 | * | ||
38 | */ | 31 | */ |
39 | 32 | ||
40 | #ifndef __ASM_ARCH_MUX_H | 33 | #ifndef __ASM_ARCH_MUX_H |
@@ -469,7 +462,12 @@ enum omap24xx_index { | |||
469 | AA8_242X_GPIO58, | 462 | AA8_242X_GPIO58, |
470 | Y20_24XX_GPIO60, | 463 | Y20_24XX_GPIO60, |
471 | W4__24XX_GPIO74, | 464 | W4__24XX_GPIO74, |
465 | N15_24XX_GPIO85, | ||
472 | M15_24XX_GPIO92, | 466 | M15_24XX_GPIO92, |
467 | P20_24XX_GPIO93, | ||
468 | P18_24XX_GPIO95, | ||
469 | M18_24XX_GPIO96, | ||
470 | L14_24XX_GPIO97, | ||
473 | J15_24XX_GPIO99, | 471 | J15_24XX_GPIO99, |
474 | V14_24XX_GPIO117, | 472 | V14_24XX_GPIO117, |
475 | P14_24XX_GPIO125, | 473 | P14_24XX_GPIO125, |
@@ -494,8 +492,6 @@ enum omap24xx_index { | |||
494 | D3_242X_DMAREQ4, | 492 | D3_242X_DMAREQ4, |
495 | E3_242X_DMAREQ5, | 493 | E3_242X_DMAREQ5, |
496 | 494 | ||
497 | P20_24XX_TSC_IRQ, | ||
498 | |||
499 | /* UART3 */ | 495 | /* UART3 */ |
500 | K15_24XX_UART3_TX, | 496 | K15_24XX_UART3_TX, |
501 | K14_24XX_UART3_RX, | 497 | K14_24XX_UART3_RX, |
@@ -557,13 +553,57 @@ enum omap24xx_index { | |||
557 | B3__24XX_KBR5, | 553 | B3__24XX_KBR5, |
558 | AA4_24XX_KBC2, | 554 | AA4_24XX_KBC2, |
559 | B13_24XX_KBC6, | 555 | B13_24XX_KBC6, |
556 | |||
557 | /* 2430 USB */ | ||
558 | AD9_2430_USB0_PUEN, | ||
559 | Y11_2430_USB0_VP, | ||
560 | AD7_2430_USB0_VM, | ||
561 | AE7_2430_USB0_RCV, | ||
562 | AD4_2430_USB0_TXEN, | ||
563 | AF9_2430_USB0_SE0, | ||
564 | AE6_2430_USB0_DAT, | ||
565 | AD24_2430_USB1_SE0, | ||
566 | AB24_2430_USB1_RCV, | ||
567 | Y25_2430_USB1_TXEN, | ||
568 | AA26_2430_USB1_DAT, | ||
569 | |||
570 | /* 2430 HS-USB */ | ||
571 | AD9_2430_USB0HS_DATA3, | ||
572 | Y11_2430_USB0HS_DATA4, | ||
573 | AD7_2430_USB0HS_DATA5, | ||
574 | AE7_2430_USB0HS_DATA6, | ||
575 | AD4_2430_USB0HS_DATA2, | ||
576 | AF9_2430_USB0HS_DATA0, | ||
577 | AE6_2430_USB0HS_DATA1, | ||
578 | AE8_2430_USB0HS_CLK, | ||
579 | AD8_2430_USB0HS_DIR, | ||
580 | AE5_2430_USB0HS_STP, | ||
581 | AE9_2430_USB0HS_NXT, | ||
582 | AC7_2430_USB0HS_DATA7, | ||
583 | |||
584 | /* 2430 McBSP */ | ||
585 | AC10_2430_MCBSP2_FSX, | ||
586 | AD16_2430_MCBSP2_CLX, | ||
587 | AE13_2430_MCBSP2_DX, | ||
588 | AD13_2430_MCBSP2_DR, | ||
589 | AC10_2430_MCBSP2_FSX_OFF, | ||
590 | AD16_2430_MCBSP2_CLX_OFF, | ||
591 | AE13_2430_MCBSP2_DX_OFF, | ||
592 | AD13_2430_MCBSP2_DR_OFF, | ||
593 | |||
594 | }; | ||
595 | |||
596 | struct omap_mux_cfg { | ||
597 | struct pin_config *pins; | ||
598 | unsigned long size; | ||
599 | int (*cfg_reg)(const struct pin_config *cfg); | ||
560 | }; | 600 | }; |
561 | 601 | ||
562 | #ifdef CONFIG_OMAP_MUX | 602 | #ifdef CONFIG_OMAP_MUX |
563 | /* setup pin muxing in Linux */ | 603 | /* setup pin muxing in Linux */ |
564 | extern int omap1_mux_init(void); | 604 | extern int omap1_mux_init(void); |
565 | extern int omap2_mux_init(void); | 605 | extern int omap2_mux_init(void); |
566 | extern int omap_mux_register(struct pin_config * pins, unsigned long size); | 606 | extern int omap_mux_register(struct omap_mux_cfg *); |
567 | extern int omap_cfg_reg(unsigned long reg_cfg); | 607 | extern int omap_cfg_reg(unsigned long reg_cfg); |
568 | #else | 608 | #else |
569 | /* boot loader does it all (no warnings from CONFIG_OMAP_MUX_WARNINGS) */ | 609 | /* boot loader does it all (no warnings from CONFIG_OMAP_MUX_WARNINGS) */ |
diff --git a/include/asm-arm/arch-omap/omap24xx.h b/include/asm-arm/arch-omap/omap24xx.h index 14c0f9496579..b9fcaae287c8 100644 --- a/include/asm-arm/arch-omap/omap24xx.h +++ b/include/asm-arm/arch-omap/omap24xx.h | |||
@@ -1,3 +1,28 @@ | |||
1 | /* | ||
2 | * include/asm-arm/arch-omap/omap24xx.h | ||
3 | * | ||
4 | * This file contains the processor specific definitions | ||
5 | * of the TI OMAP24XX. | ||
6 | * | ||
7 | * Copyright (C) 2007 Texas Instruments. | ||
8 | * Copyright (C) 2007 Nokia Corporation. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License | ||
21 | * along with this program; if not, write to the Free Software | ||
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
23 | * | ||
24 | */ | ||
25 | |||
1 | #ifndef __ASM_ARCH_OMAP24XX_H | 26 | #ifndef __ASM_ARCH_OMAP24XX_H |
2 | #define __ASM_ARCH_OMAP24XX_H | 27 | #define __ASM_ARCH_OMAP24XX_H |
3 | 28 | ||
@@ -13,33 +38,70 @@ | |||
13 | 38 | ||
14 | /* interrupt controller */ | 39 | /* interrupt controller */ |
15 | #define OMAP24XX_IC_BASE (L4_24XX_BASE + 0xfe000) | 40 | #define OMAP24XX_IC_BASE (L4_24XX_BASE + 0xfe000) |
16 | #define VA_IC_BASE IO_ADDRESS(OMAP24XX_IC_BASE) | ||
17 | #define OMAP24XX_IVA_INTC_BASE 0x40000000 | 41 | #define OMAP24XX_IVA_INTC_BASE 0x40000000 |
18 | #define IRQ_SIR_IRQ 0x0040 | 42 | #define IRQ_SIR_IRQ 0x0040 |
19 | 43 | ||
20 | #ifdef CONFIG_ARCH_OMAP2420 | 44 | #define OMAP2420_CTRL_BASE L4_24XX_BASE |
21 | #define OMAP24XX_32KSYNCT_BASE (L4_24XX_BASE + 0x4000) | 45 | #define OMAP2420_32KSYNCT_BASE (L4_24XX_BASE + 0x4000) |
22 | #define OMAP24XX_PRCM_BASE (L4_24XX_BASE + 0x8000) | 46 | #define OMAP2420_PRCM_BASE (L4_24XX_BASE + 0x8000) |
23 | #define OMAP24XX_SDRC_BASE (L3_24XX_BASE + 0x9000) | 47 | #define OMAP2420_CM_BASE (L4_24XX_BASE + 0x8000) |
24 | #define OMAP242X_CONTROL_STATUS (L4_24XX_BASE + 0x2f8) | 48 | #define OMAP2420_PRM_BASE OMAP2420_CM_BASE |
25 | #endif | 49 | #define OMAP2420_SDRC_BASE (L3_24XX_BASE + 0x9000) |
50 | #define OMAP2420_SMS_BASE 0x68008000 | ||
26 | 51 | ||
27 | #ifdef CONFIG_ARCH_OMAP2430 | 52 | #define OMAP2430_32KSYNCT_BASE (L4_WK_243X_BASE + 0x20000) |
28 | #define OMAP24XX_32KSYNCT_BASE (L4_WK_243X_BASE + 0x20000) | 53 | #define OMAP2430_PRCM_BASE (L4_WK_243X_BASE + 0x6000) |
29 | #define OMAP24XX_PRCM_BASE (L4_WK_243X_BASE + 0x6000) | 54 | #define OMAP2430_CM_BASE (L4_WK_243X_BASE + 0x6000) |
30 | #define OMAP24XX_SDRC_BASE (0x6D000000) | 55 | #define OMAP2430_PRM_BASE OMAP2430_CM_BASE |
31 | #define OMAP242X_CONTROL_STATUS (L4_24XX_BASE + 0x2f8) | 56 | |
57 | #define OMAP243X_SMS_BASE 0x6C000000 | ||
58 | #define OMAP243X_SDRC_BASE 0x6D000000 | ||
32 | #define OMAP243X_GPMC_BASE 0x6E000000 | 59 | #define OMAP243X_GPMC_BASE 0x6E000000 |
33 | #endif | 60 | #define OMAP243X_SCM_BASE (L4_WK_243X_BASE + 0x2000) |
61 | #define OMAP243X_CTRL_BASE OMAP243X_SCM_BASE | ||
62 | #define OMAP243X_HS_BASE (L4_24XX_BASE + 0x000ac000) | ||
34 | 63 | ||
35 | /* DSP SS */ | 64 | /* DSP SS */ |
36 | #define OMAP24XX_DSP_BASE 0x58000000 | 65 | #define OMAP2420_DSP_BASE 0x58000000 |
37 | #define OMAP24XX_DSP_MEM_BASE (OMAP24XX_DSP_BASE + 0x0) | 66 | #define OMAP2420_DSP_MEM_BASE (OMAP2420_DSP_BASE + 0x0) |
38 | #define OMAP24XX_DSP_IPI_BASE (OMAP24XX_DSP_BASE + 0x1000000) | 67 | #define OMAP2420_DSP_IPI_BASE (OMAP2420_DSP_BASE + 0x1000000) |
39 | #define OMAP24XX_DSP_MMU_BASE (OMAP24XX_DSP_BASE + 0x2000000) | 68 | #define OMAP2420_DSP_MMU_BASE (OMAP2420_DSP_BASE + 0x2000000) |
69 | |||
70 | #define OMAP243X_DSP_BASE 0x5C000000 | ||
71 | #define OMAP243X_DSP_MEM_BASE (OMAP243X_DSP_BASE + 0x0) | ||
72 | #define OMAP243X_DSP_MMU_BASE (OMAP243X_DSP_BASE + 0x1000000) | ||
40 | 73 | ||
41 | /* Mailbox */ | 74 | /* Mailbox */ |
42 | #define OMAP24XX_MAILBOX_BASE (L4_24XX_BASE + 0x94000) | 75 | #define OMAP24XX_MAILBOX_BASE (L4_24XX_BASE + 0x94000) |
43 | 76 | ||
77 | /* Camera */ | ||
78 | #define OMAP24XX_CAMERA_BASE (L4_24XX_BASE + 0x52000) | ||
79 | |||
80 | /* Security */ | ||
81 | #define OMAP24XX_SEC_BASE (L4_24XX_BASE + 0xA0000) | ||
82 | #define OMAP24XX_SEC_RNG_BASE (OMAP24XX_SEC_BASE + 0x0000) | ||
83 | #define OMAP24XX_SEC_DES_BASE (OMAP24XX_SEC_BASE + 0x2000) | ||
84 | #define OMAP24XX_SEC_SHA1MD5_BASE (OMAP24XX_SEC_BASE + 0x4000) | ||
85 | #define OMAP24XX_SEC_AES_BASE (OMAP24XX_SEC_BASE + 0x6000) | ||
86 | #define OMAP24XX_SEC_PKA_BASE (OMAP24XX_SEC_BASE + 0x8000) | ||
87 | |||
88 | #if defined(CONFIG_ARCH_OMAP2420) | ||
89 | |||
90 | #define OMAP2_32KSYNCT_BASE OMAP2420_32KSYNCT_BASE | ||
91 | #define OMAP2_PRCM_BASE OMAP2420_PRCM_BASE | ||
92 | #define OMAP2_CM_BASE OMAP2420_CM_BASE | ||
93 | #define OMAP2_PRM_BASE OMAP2420_PRM_BASE | ||
94 | #define OMAP2_VA_IC_BASE IO_ADDRESS(OMAP24XX_IC_BASE) | ||
95 | |||
96 | #elif defined(CONFIG_ARCH_OMAP2430) | ||
97 | |||
98 | #define OMAP2_32KSYNCT_BASE OMAP2430_32KSYNCT_BASE | ||
99 | #define OMAP2_PRCM_BASE OMAP2430_PRCM_BASE | ||
100 | #define OMAP2_CM_BASE OMAP2430_CM_BASE | ||
101 | #define OMAP2_PRM_BASE OMAP2430_PRM_BASE | ||
102 | #define OMAP2_VA_IC_BASE IO_ADDRESS(OMAP24XX_IC_BASE) | ||
103 | |||
104 | #endif | ||
105 | |||
44 | #endif /* __ASM_ARCH_OMAP24XX_H */ | 106 | #endif /* __ASM_ARCH_OMAP24XX_H */ |
45 | 107 | ||
diff --git a/include/asm-arm/arch-omap/sdrc.h b/include/asm-arm/arch-omap/sdrc.h new file mode 100644 index 000000000000..673b3965befc --- /dev/null +++ b/include/asm-arm/arch-omap/sdrc.h | |||
@@ -0,0 +1,75 @@ | |||
1 | #ifndef ____ASM_ARCH_SDRC_H | ||
2 | #define ____ASM_ARCH_SDRC_H | ||
3 | |||
4 | /* | ||
5 | * OMAP2/3 SDRC/SMS register definitions | ||
6 | * | ||
7 | * Copyright (C) 2007 Texas Instruments, Inc. | ||
8 | * Copyright (C) 2007 Nokia Corporation | ||
9 | * | ||
10 | * Written by Paul Walmsley | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | */ | ||
16 | |||
17 | #include <asm/arch/io.h> | ||
18 | |||
19 | /* SDRC register offsets - read/write with sdrc_{read,write}_reg() */ | ||
20 | |||
21 | #define SDRC_SYSCONFIG 0x010 | ||
22 | #define SDRC_DLLA_CTRL 0x060 | ||
23 | #define SDRC_DLLA_STATUS 0x064 | ||
24 | #define SDRC_DLLB_CTRL 0x068 | ||
25 | #define SDRC_DLLB_STATUS 0x06C | ||
26 | #define SDRC_POWER 0x070 | ||
27 | #define SDRC_MR_0 0x084 | ||
28 | #define SDRC_RFR_CTRL_0 0x0a4 | ||
29 | |||
30 | /* | ||
31 | * These values represent the number of memory clock cycles between | ||
32 | * autorefresh initiation. They assume 1 refresh per 64 ms (JEDEC), 8192 | ||
33 | * rows per device, and include a subtraction of a 50 cycle window in the | ||
34 | * event that the autorefresh command is delayed due to other SDRC activity. | ||
35 | * The '| 1' sets the ARE field to send one autorefresh when the autorefresh | ||
36 | * counter reaches 0. | ||
37 | * | ||
38 | * These represent optimal values for common parts, it won't work for all. | ||
39 | * As long as you scale down, most parameters are still work, they just | ||
40 | * become sub-optimal. The RFR value goes in the opposite direction. If you | ||
41 | * don't adjust it down as your clock period increases the refresh interval | ||
42 | * will not be met. Setting all parameters for complete worst case may work, | ||
43 | * but may cut memory performance by 2x. Due to errata the DLLs need to be | ||
44 | * unlocked and their value needs run time calibration. A dynamic call is | ||
45 | * need for that as no single right value exists acorss production samples. | ||
46 | * | ||
47 | * Only the FULL speed values are given. Current code is such that rate | ||
48 | * changes must be made at DPLLoutx2. The actual value adjustment for low | ||
49 | * frequency operation will be handled by omap_set_performance() | ||
50 | * | ||
51 | * By having the boot loader boot up in the fastest L4 speed available likely | ||
52 | * will result in something which you can switch between. | ||
53 | */ | ||
54 | #define SDRC_RFR_CTRL_165MHz (0x00044c00 | 1) | ||
55 | #define SDRC_RFR_CTRL_133MHz (0x0003de00 | 1) | ||
56 | #define SDRC_RFR_CTRL_100MHz (0x0002da01 | 1) | ||
57 | #define SDRC_RFR_CTRL_110MHz (0x0002da01 | 1) /* Need to calc */ | ||
58 | #define SDRC_RFR_CTRL_BYPASS (0x00005000 | 1) /* Need to calc */ | ||
59 | |||
60 | |||
61 | /* | ||
62 | * SMS register access | ||
63 | */ | ||
64 | |||
65 | |||
66 | #define OMAP242X_SMS_REGADDR(reg) (void __iomem *)IO_ADDRESS(OMAP2420_SMS_BASE + reg) | ||
67 | #define OMAP243X_SMS_REGADDR(reg) (void __iomem *)IO_ADDRESS(OMAP243X_SMS_BASE + reg) | ||
68 | #define OMAP343X_SMS_REGADDR(reg) (void __iomem *)IO_ADDRESS(OMAP343X_SMS_BASE + reg) | ||
69 | |||
70 | /* SMS register offsets - read/write with sms_{read,write}_reg() */ | ||
71 | |||
72 | #define SMS_SYSCONFIG 0x010 | ||
73 | /* REVISIT: fill in other SMS registers here */ | ||
74 | |||
75 | #endif | ||
diff --git a/include/asm-arm/arch-omap/usb.h b/include/asm-arm/arch-omap/usb.h index 99ae9eabaf71..2147d18aaeae 100644 --- a/include/asm-arm/arch-omap/usb.h +++ b/include/asm-arm/arch-omap/usb.h | |||
@@ -132,14 +132,11 @@ | |||
132 | # define CONF_USB_PWRDN_DP_R (1 << 1) | 132 | # define CONF_USB_PWRDN_DP_R (1 << 1) |
133 | 133 | ||
134 | /* OMAP2 */ | 134 | /* OMAP2 */ |
135 | #define CONTROL_DEVCONF_REG __REG32(L4_24XX_BASE + 0x0274) | ||
136 | # define USB_UNIDIR 0x0 | 135 | # define USB_UNIDIR 0x0 |
137 | # define USB_UNIDIR_TLL 0x1 | 136 | # define USB_UNIDIR_TLL 0x1 |
138 | # define USB_BIDIR 0x2 | 137 | # define USB_BIDIR 0x2 |
139 | # define USB_BIDIR_TLL 0x3 | 138 | # define USB_BIDIR_TLL 0x3 |
140 | # define USBT0WRMODEI(x) ((x) << 22) | 139 | # define USBTXWRMODEI(port, x) ((x) << (22 - (port * 2))) |
141 | # define USBT1WRMODEI(x) ((x) << 20) | ||
142 | # define USBT2WRMODEI(x) ((x) << 18) | ||
143 | # define USBT2TLL5PI (1 << 17) | 140 | # define USBT2TLL5PI (1 << 17) |
144 | # define USB0PUENACTLOI (1 << 16) | 141 | # define USB0PUENACTLOI (1 << 16) |
145 | # define USBSTANDBYCTRL (1 << 15) | 142 | # define USBSTANDBYCTRL (1 << 15) |
diff --git a/include/asm-arm/kvm.h b/include/asm-arm/kvm.h new file mode 100644 index 000000000000..cb3c08cbcb9e --- /dev/null +++ b/include/asm-arm/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_ARM_H | ||
2 | #define __LINUX_KVM_ARM_H | ||
3 | |||
4 | /* arm does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-avr32/byteorder.h b/include/asm-avr32/byteorder.h index 402ff4125cdc..d77b48ba7338 100644 --- a/include/asm-avr32/byteorder.h +++ b/include/asm-avr32/byteorder.h | |||
@@ -12,8 +12,14 @@ extern unsigned long __builtin_bswap_32(unsigned long x); | |||
12 | extern unsigned short __builtin_bswap_16(unsigned short x); | 12 | extern unsigned short __builtin_bswap_16(unsigned short x); |
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | /* | ||
16 | * avr32-linux-gcc versions earlier than 4.2 improperly sign-extends | ||
17 | * the result. | ||
18 | */ | ||
19 | #if !(__GNUC__ == 4 && __GNUC_MINOR__ < 2) | ||
15 | #define __arch__swab32(x) __builtin_bswap_32(x) | 20 | #define __arch__swab32(x) __builtin_bswap_32(x) |
16 | #define __arch__swab16(x) __builtin_bswap_16(x) | 21 | #define __arch__swab16(x) __builtin_bswap_16(x) |
22 | #endif | ||
17 | 23 | ||
18 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) | 24 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) |
19 | # define __BYTEORDER_HAS_U64__ | 25 | # define __BYTEORDER_HAS_U64__ |
diff --git a/include/asm-avr32/kvm.h b/include/asm-avr32/kvm.h new file mode 100644 index 000000000000..8c5777020e2c --- /dev/null +++ b/include/asm-avr32/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_AVR32_H | ||
2 | #define __LINUX_KVM_AVR32_H | ||
3 | |||
4 | /* avr32 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-blackfin/kvm.h b/include/asm-blackfin/kvm.h new file mode 100644 index 000000000000..e3477d77c014 --- /dev/null +++ b/include/asm-blackfin/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_BLACKFIN_H | ||
2 | #define __LINUX_KVM_BLACKFIN_H | ||
3 | |||
4 | /* blackfin does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-cris/kvm.h b/include/asm-cris/kvm.h new file mode 100644 index 000000000000..c860f51149f0 --- /dev/null +++ b/include/asm-cris/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_CRIS_H | ||
2 | #define __LINUX_KVM_CRIS_H | ||
3 | |||
4 | /* cris does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-frv/kvm.h b/include/asm-frv/kvm.h new file mode 100644 index 000000000000..9c8a4f08d0a9 --- /dev/null +++ b/include/asm-frv/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_FRV_H | ||
2 | #define __LINUX_KVM_FRV_H | ||
3 | |||
4 | /* frv does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h index 83532252b8be..734a1d0583b6 100644 --- a/include/asm-frv/mem-layout.h +++ b/include/asm-frv/mem-layout.h | |||
@@ -60,7 +60,7 @@ | |||
60 | */ | 60 | */ |
61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) | 61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) |
62 | #define STACK_TOP __UL(2 * 1024 * 1024) | 62 | #define STACK_TOP __UL(2 * 1024 * 1024) |
63 | #define STACK_TOP_MAX STACK_TOP | 63 | #define STACK_TOP_MAX __UL(0xc0000000) |
64 | 64 | ||
65 | /* userspace process size */ | 65 | /* userspace process size */ |
66 | #ifdef CONFIG_MMU | 66 | #ifdef CONFIG_MMU |
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h index 6c0682ed5fc9..4e219046fe42 100644 --- a/include/asm-frv/pgtable.h +++ b/include/asm-frv/pgtable.h | |||
@@ -507,13 +507,22 @@ static inline int pte_file(pte_t pte) | |||
507 | */ | 507 | */ |
508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) |
509 | { | 509 | { |
510 | struct mm_struct *mm; | ||
510 | unsigned long ampr; | 511 | unsigned long ampr; |
511 | pgd_t *pge = pgd_offset(current->mm, address); | ||
512 | pud_t *pue = pud_offset(pge, address); | ||
513 | pmd_t *pme = pmd_offset(pue, address); | ||
514 | 512 | ||
515 | ampr = pme->ste[0] & 0xffffff00; | 513 | mm = current->mm; |
516 | ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | xAMPRx_V; | 514 | if (mm) { |
515 | pgd_t *pge = pgd_offset(mm, address); | ||
516 | pud_t *pue = pud_offset(pge, address); | ||
517 | pmd_t *pme = pmd_offset(pue, address); | ||
518 | |||
519 | ampr = pme->ste[0] & 0xffffff00; | ||
520 | ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | | ||
521 | xAMPRx_V; | ||
522 | } else { | ||
523 | address = ULONG_MAX; | ||
524 | ampr = 0; | ||
525 | } | ||
517 | 526 | ||
518 | asm volatile("movgs %0,scr0\n" | 527 | asm volatile("movgs %0,scr0\n" |
519 | "movgs %0,scr1\n" | 528 | "movgs %0,scr1\n" |
diff --git a/include/asm-frv/spr-regs.h b/include/asm-frv/spr-regs.h index c2a541ef828d..01e6af5e99b8 100644 --- a/include/asm-frv/spr-regs.h +++ b/include/asm-frv/spr-regs.h | |||
@@ -99,9 +99,23 @@ | |||
99 | #define TBR_TT_TRAP1 (0x81 << 4) | 99 | #define TBR_TT_TRAP1 (0x81 << 4) |
100 | #define TBR_TT_TRAP2 (0x82 << 4) | 100 | #define TBR_TT_TRAP2 (0x82 << 4) |
101 | #define TBR_TT_TRAP3 (0x83 << 4) | 101 | #define TBR_TT_TRAP3 (0x83 << 4) |
102 | #define TBR_TT_TRAP120 (0xf8 << 4) | ||
103 | #define TBR_TT_TRAP121 (0xf9 << 4) | ||
104 | #define TBR_TT_TRAP122 (0xfa << 4) | ||
105 | #define TBR_TT_TRAP123 (0xfb << 4) | ||
106 | #define TBR_TT_TRAP124 (0xfc << 4) | ||
107 | #define TBR_TT_TRAP125 (0xfd << 4) | ||
102 | #define TBR_TT_TRAP126 (0xfe << 4) | 108 | #define TBR_TT_TRAP126 (0xfe << 4) |
103 | #define TBR_TT_BREAK (0xff << 4) | 109 | #define TBR_TT_BREAK (0xff << 4) |
104 | 110 | ||
111 | #define TBR_TT_ATOMIC_CMPXCHG32 TBR_TT_TRAP120 | ||
112 | #define TBR_TT_ATOMIC_XCHG32 TBR_TT_TRAP121 | ||
113 | #define TBR_TT_ATOMIC_XOR TBR_TT_TRAP122 | ||
114 | #define TBR_TT_ATOMIC_OR TBR_TT_TRAP123 | ||
115 | #define TBR_TT_ATOMIC_AND TBR_TT_TRAP124 | ||
116 | #define TBR_TT_ATOMIC_SUB TBR_TT_TRAP125 | ||
117 | #define TBR_TT_ATOMIC_ADD TBR_TT_TRAP126 | ||
118 | |||
105 | #define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) | 119 | #define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) |
106 | 120 | ||
107 | /* | 121 | /* |
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h index b400cea81487..30a67a9da11a 100644 --- a/include/asm-frv/system.h +++ b/include/asm-frv/system.h | |||
@@ -179,14 +179,23 @@ do { \ | |||
179 | #define mb() asm volatile ("membar" : : :"memory") | 179 | #define mb() asm volatile ("membar" : : :"memory") |
180 | #define rmb() asm volatile ("membar" : : :"memory") | 180 | #define rmb() asm volatile ("membar" : : :"memory") |
181 | #define wmb() asm volatile ("membar" : : :"memory") | 181 | #define wmb() asm volatile ("membar" : : :"memory") |
182 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 182 | #define read_barrier_depends() barrier() |
183 | 183 | ||
184 | #define smp_mb() mb() | 184 | #ifdef CONFIG_SMP |
185 | #define smp_rmb() rmb() | 185 | #define smp_mb() mb() |
186 | #define smp_wmb() wmb() | 186 | #define smp_rmb() rmb() |
187 | 187 | #define smp_wmb() wmb() | |
188 | #define read_barrier_depends() do {} while(0) | ||
189 | #define smp_read_barrier_depends() read_barrier_depends() | 188 | #define smp_read_barrier_depends() read_barrier_depends() |
189 | #define set_mb(var, value) \ | ||
190 | do { xchg(&var, (value)); } while (0) | ||
191 | #else | ||
192 | #define smp_mb() barrier() | ||
193 | #define smp_rmb() barrier() | ||
194 | #define smp_wmb() barrier() | ||
195 | #define smp_read_barrier_depends() do {} while(0) | ||
196 | #define set_mb(var, value) \ | ||
197 | do { var = (value); barrier(); } while (0) | ||
198 | #endif | ||
190 | 199 | ||
191 | #define HARD_RESET_NOW() \ | 200 | #define HARD_RESET_NOW() \ |
192 | do { \ | 201 | do { \ |
@@ -234,7 +243,7 @@ extern void free_initmem(void); | |||
234 | break; \ | 243 | break; \ |
235 | \ | 244 | \ |
236 | default: \ | 245 | default: \ |
237 | __xg_orig = 0; \ | 246 | __xg_orig = (__typeof__(__xg_orig))0; \ |
238 | asm volatile("break"); \ | 247 | asm volatile("break"); \ |
239 | break; \ | 248 | break; \ |
240 | } \ | 249 | } \ |
@@ -259,7 +268,7 @@ extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new); | |||
259 | (__force uint32_t)__xg_test, \ | 268 | (__force uint32_t)__xg_test, \ |
260 | (__force uint32_t)__xg_new); break; \ | 269 | (__force uint32_t)__xg_new); break; \ |
261 | default: \ | 270 | default: \ |
262 | __xg_orig = 0; \ | 271 | __xg_orig = (__typeof__(__xg_orig))0; \ |
263 | asm volatile("break"); \ | 272 | asm volatile("break"); \ |
264 | break; \ | 273 | break; \ |
265 | } \ | 274 | } \ |
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm index fd9dcfd91c39..92a6d91d0c1a 100644 --- a/include/asm-generic/Kbuild.asm +++ b/include/asm-generic/Kbuild.asm | |||
@@ -1,3 +1,5 @@ | |||
1 | header-y += kvm.h | ||
2 | |||
1 | ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) | 3 | ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) |
2 | unifdef-y += a.out.h | 4 | unifdef-y += a.out.h |
3 | endif | 5 | endif |
diff --git a/include/asm-h8300/kvm.h b/include/asm-h8300/kvm.h new file mode 100644 index 000000000000..bdbed7b987e1 --- /dev/null +++ b/include/asm-h8300/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_H8300_H | ||
2 | #define __LINUX_KVM_H8300_H | ||
3 | |||
4 | /* h8300 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-ia64/kvm.h b/include/asm-ia64/kvm.h new file mode 100644 index 000000000000..030d29b4b26b --- /dev/null +++ b/include/asm-ia64/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_IA64_H | ||
2 | #define __LINUX_KVM_IA64_H | ||
3 | |||
4 | /* ia64 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m32r/kvm.h b/include/asm-m32r/kvm.h new file mode 100644 index 000000000000..99a40515b77e --- /dev/null +++ b/include/asm-m32r/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M32R_H | ||
2 | #define __LINUX_KVM_M32R_H | ||
3 | |||
4 | /* m32r does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68k/kvm.h b/include/asm-m68k/kvm.h new file mode 100644 index 000000000000..7ed27fce5240 --- /dev/null +++ b/include/asm-m68k/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M68K_H | ||
2 | #define __LINUX_KVM_M68K_H | ||
3 | |||
4 | /* m68k does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68knommu/kvm.h b/include/asm-m68knommu/kvm.h new file mode 100644 index 000000000000..b49d4258dabb --- /dev/null +++ b/include/asm-m68knommu/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M68KNOMMU_H | ||
2 | #define __LINUX_KVM_M68KNOMMU_H | ||
3 | |||
4 | /* m68knommu does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index 01e7eadc97e2..d5c0f2fda51b 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -63,8 +63,22 @@ static inline void flush_icache_page(struct vm_area_struct *vma, | |||
63 | } | 63 | } |
64 | 64 | ||
65 | extern void (*flush_icache_range)(unsigned long start, unsigned long end); | 65 | extern void (*flush_icache_range)(unsigned long start, unsigned long end); |
66 | #define flush_cache_vmap(start, end) flush_cache_all() | 66 | |
67 | #define flush_cache_vunmap(start, end) flush_cache_all() | 67 | extern void (*__flush_cache_vmap)(void); |
68 | |||
69 | static inline void flush_cache_vmap(unsigned long start, unsigned long end) | ||
70 | { | ||
71 | if (cpu_has_dc_aliases) | ||
72 | __flush_cache_vmap(); | ||
73 | } | ||
74 | |||
75 | extern void (*__flush_cache_vunmap)(void); | ||
76 | |||
77 | static inline void flush_cache_vunmap(unsigned long start, unsigned long end) | ||
78 | { | ||
79 | if (cpu_has_dc_aliases) | ||
80 | __flush_cache_vunmap(); | ||
81 | } | ||
68 | 82 | ||
69 | extern void copy_to_user_page(struct vm_area_struct *vma, | 83 | extern void copy_to_user_page(struct vm_area_struct *vma, |
70 | struct page *page, unsigned long vaddr, void *dst, const void *src, | 84 | struct page *page, unsigned long vaddr, void *dst, const void *src, |
diff --git a/include/asm-mips/kvm.h b/include/asm-mips/kvm.h new file mode 100644 index 000000000000..093a5b7f796b --- /dev/null +++ b/include/asm-mips/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_MIPS_H | ||
2 | #define __LINUX_KVM_MIPS_H | ||
3 | |||
4 | /* mips does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-mips/mach-au1x00/au1000.h b/include/asm-mips/mach-au1x00/au1000.h index cb18af989645..5bb57bf2b9d7 100644 --- a/include/asm-mips/mach-au1x00/au1000.h +++ b/include/asm-mips/mach-au1x00/au1000.h | |||
@@ -1786,6 +1786,7 @@ struct cpu_spec { | |||
1786 | char *cpu_name; | 1786 | char *cpu_name; |
1787 | unsigned char cpu_od; /* Set Config[OD] */ | 1787 | unsigned char cpu_od; /* Set Config[OD] */ |
1788 | unsigned char cpu_bclk; /* Enable BCLK switching */ | 1788 | unsigned char cpu_bclk; /* Enable BCLK switching */ |
1789 | unsigned char cpu_pll_wo; /* sys_cpupll reg. write-only */ | ||
1789 | }; | 1790 | }; |
1790 | 1791 | ||
1791 | extern struct cpu_spec cpu_specs[]; | 1792 | extern struct cpu_spec cpu_specs[]; |
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index ed5fd7390678..72213e3d02c7 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h | |||
@@ -245,7 +245,7 @@ enum external_pb1200_ints { | |||
245 | PB1200_SD1_INSERT_INT, | 245 | PB1200_SD1_INSERT_INT, |
246 | PB1200_SD1_EJECT_INT, | 246 | PB1200_SD1_EJECT_INT, |
247 | 247 | ||
248 | PB1200_INT_END (PB1200_INT_BEGIN + 15) | 248 | PB1200_INT_END = PB1200_INT_BEGIN + 15 |
249 | }; | 249 | }; |
250 | 250 | ||
251 | /* For drivers/pcmcia/au1000_db1x00.c */ | 251 | /* For drivers/pcmcia/au1000_db1x00.c */ |
diff --git a/include/asm-mn10300/kvm.h b/include/asm-mn10300/kvm.h new file mode 100644 index 000000000000..f6b609ff4a57 --- /dev/null +++ b/include/asm-mn10300/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_MN10300_H | ||
2 | #define __LINUX_KVM_MN10300_H | ||
3 | |||
4 | /* mn10300 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-parisc/kvm.h b/include/asm-parisc/kvm.h new file mode 100644 index 000000000000..00cc45812547 --- /dev/null +++ b/include/asm-parisc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_PARISC_H | ||
2 | #define __LINUX_KVM_PARISC_H | ||
3 | |||
4 | /* parisc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-powerpc/kvm.h b/include/asm-powerpc/kvm.h new file mode 100644 index 000000000000..d1b530fbf8dd --- /dev/null +++ b/include/asm-powerpc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_POWERPC_H | ||
2 | #define __LINUX_KVM_POWERPC_H | ||
3 | |||
4 | /* powerpc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-s390/kvm.h b/include/asm-s390/kvm.h new file mode 100644 index 000000000000..573f2a351386 --- /dev/null +++ b/include/asm-s390/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_S390_H | ||
2 | #define __LINUX_KVM_S390_H | ||
3 | |||
4 | /* s390 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sh/floppy.h b/include/asm-sh/floppy.h deleted file mode 100644 index 59fbfdc90dfb..000000000000 --- a/include/asm-sh/floppy.h +++ /dev/null | |||
@@ -1,268 +0,0 @@ | |||
1 | /* | ||
2 | * Architecture specific parts of the Floppy driver | ||
3 | * include/asm-i386/floppy.h | ||
4 | * | ||
5 | * This file is subject to the terms and conditions of the GNU General Public | ||
6 | * License. See the file "COPYING" in the main directory of this archive | ||
7 | * for more details. | ||
8 | * | ||
9 | * Copyright (C) 1995 | ||
10 | */ | ||
11 | #ifndef __ASM_SH_FLOPPY_H | ||
12 | #define __ASM_SH_FLOPPY_H | ||
13 | |||
14 | #include <linux/vmalloc.h> | ||
15 | |||
16 | |||
17 | /* | ||
18 | * The DMA channel used by the floppy controller cannot access data at | ||
19 | * addresses >= 16MB | ||
20 | * | ||
21 | * Went back to the 1MB limit, as some people had problems with the floppy | ||
22 | * driver otherwise. It doesn't matter much for performance anyway, as most | ||
23 | * floppy accesses go through the track buffer. | ||
24 | */ | ||
25 | #define _CROSS_64KB(a,s,vdma) \ | ||
26 | (!vdma && ((unsigned long)(a)/K_64 != ((unsigned long)(a) + (s) - 1) / K_64)) | ||
27 | |||
28 | #define CROSS_64KB(a,s) _CROSS_64KB(a,s,use_virtual_dma & 1) | ||
29 | |||
30 | |||
31 | #define SW fd_routine[use_virtual_dma&1] | ||
32 | #define CSW fd_routine[can_use_virtual_dma & 1] | ||
33 | |||
34 | |||
35 | #define fd_inb(port) inb_p(port) | ||
36 | #define fd_outb(value,port) outb_p(value,port) | ||
37 | |||
38 | #define fd_request_dma() CSW._request_dma(FLOPPY_DMA,"floppy") | ||
39 | #define fd_free_dma() CSW._free_dma(FLOPPY_DMA) | ||
40 | #define fd_enable_irq() enable_irq(FLOPPY_IRQ) | ||
41 | #define fd_disable_irq() disable_irq(FLOPPY_IRQ) | ||
42 | #define fd_free_irq() free_irq(FLOPPY_IRQ, NULL) | ||
43 | #define fd_get_dma_residue() SW._get_dma_residue(FLOPPY_DMA) | ||
44 | #define fd_dma_mem_alloc(size) SW._dma_mem_alloc(size) | ||
45 | #define fd_dma_setup(addr, size, mode, io) SW._dma_setup(addr, size, mode, io) | ||
46 | |||
47 | #define FLOPPY_CAN_FALLBACK_ON_NODMA | ||
48 | |||
49 | static int virtual_dma_count; | ||
50 | static int virtual_dma_residue; | ||
51 | static char *virtual_dma_addr; | ||
52 | static int virtual_dma_mode; | ||
53 | static int doing_pdma; | ||
54 | |||
55 | static void floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) | ||
56 | { | ||
57 | register unsigned char st; | ||
58 | |||
59 | #undef TRACE_FLPY_INT | ||
60 | |||
61 | #ifdef TRACE_FLPY_INT | ||
62 | static int calls=0; | ||
63 | static int bytes=0; | ||
64 | static int dma_wait=0; | ||
65 | #endif | ||
66 | if(!doing_pdma) { | ||
67 | floppy_interrupt(irq, dev_id, regs); | ||
68 | return; | ||
69 | } | ||
70 | |||
71 | #ifdef TRACE_FLPY_INT | ||
72 | if(!calls) | ||
73 | bytes = virtual_dma_count; | ||
74 | #endif | ||
75 | |||
76 | { | ||
77 | register int lcount; | ||
78 | register char *lptr; | ||
79 | |||
80 | st = 1; | ||
81 | for(lcount=virtual_dma_count, lptr=virtual_dma_addr; | ||
82 | lcount; lcount--, lptr++) { | ||
83 | st=inb(virtual_dma_port+4) & 0xa0 ; | ||
84 | if(st != 0xa0) | ||
85 | break; | ||
86 | if(virtual_dma_mode) | ||
87 | outb_p(*lptr, virtual_dma_port+5); | ||
88 | else | ||
89 | *lptr = inb_p(virtual_dma_port+5); | ||
90 | } | ||
91 | virtual_dma_count = lcount; | ||
92 | virtual_dma_addr = lptr; | ||
93 | st = inb(virtual_dma_port+4); | ||
94 | } | ||
95 | |||
96 | #ifdef TRACE_FLPY_INT | ||
97 | calls++; | ||
98 | #endif | ||
99 | if(st == 0x20) | ||
100 | return; | ||
101 | if(!(st & 0x20)) { | ||
102 | virtual_dma_residue += virtual_dma_count; | ||
103 | virtual_dma_count=0; | ||
104 | #ifdef TRACE_FLPY_INT | ||
105 | printk("count=%x, residue=%x calls=%d bytes=%d dma_wait=%d\n", | ||
106 | virtual_dma_count, virtual_dma_residue, calls, bytes, | ||
107 | dma_wait); | ||
108 | calls = 0; | ||
109 | dma_wait=0; | ||
110 | #endif | ||
111 | doing_pdma = 0; | ||
112 | floppy_interrupt(irq, dev_id, regs); | ||
113 | return; | ||
114 | } | ||
115 | #ifdef TRACE_FLPY_INT | ||
116 | if(!virtual_dma_count) | ||
117 | dma_wait++; | ||
118 | #endif | ||
119 | } | ||
120 | |||
121 | static void fd_disable_dma(void) | ||
122 | { | ||
123 | if(! (can_use_virtual_dma & 1)) | ||
124 | disable_dma(FLOPPY_DMA); | ||
125 | doing_pdma = 0; | ||
126 | virtual_dma_residue += virtual_dma_count; | ||
127 | virtual_dma_count=0; | ||
128 | } | ||
129 | |||
130 | static int vdma_request_dma(unsigned int dmanr, const char * device_id) | ||
131 | { | ||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | static void vdma_nop(unsigned int dummy) | ||
136 | { | ||
137 | } | ||
138 | |||
139 | |||
140 | static int vdma_get_dma_residue(unsigned int dummy) | ||
141 | { | ||
142 | return virtual_dma_count + virtual_dma_residue; | ||
143 | } | ||
144 | |||
145 | |||
146 | static int fd_request_irq(void) | ||
147 | { | ||
148 | if(can_use_virtual_dma) | ||
149 | return request_irq(FLOPPY_IRQ, floppy_hardint, | ||
150 | IRQF_DISABLED, "floppy", NULL); | ||
151 | else | ||
152 | return request_irq(FLOPPY_IRQ, floppy_interrupt, | ||
153 | IRQF_DISABLED, "floppy", NULL); | ||
154 | } | ||
155 | |||
156 | static unsigned long dma_mem_alloc(unsigned long size) | ||
157 | { | ||
158 | return __get_dma_pages(GFP_KERNEL,get_order(size)); | ||
159 | } | ||
160 | |||
161 | |||
162 | static unsigned long vdma_mem_alloc(unsigned long size) | ||
163 | { | ||
164 | return (unsigned long) vmalloc(size); | ||
165 | |||
166 | } | ||
167 | |||
168 | #define nodma_mem_alloc(size) vdma_mem_alloc(size) | ||
169 | |||
170 | static void _fd_dma_mem_free(unsigned long addr, unsigned long size) | ||
171 | { | ||
172 | if((unsigned int) addr >= (unsigned int) high_memory) | ||
173 | return vfree((void *)addr); | ||
174 | else | ||
175 | free_pages(addr, get_order(size)); | ||
176 | } | ||
177 | |||
178 | #define fd_dma_mem_free(addr, size) _fd_dma_mem_free(addr, size) | ||
179 | |||
180 | static void _fd_chose_dma_mode(char *addr, unsigned long size) | ||
181 | { | ||
182 | if(can_use_virtual_dma == 2) { | ||
183 | if((unsigned int) addr >= (unsigned int) high_memory || | ||
184 | virt_to_phys(addr) >= 0x10000000) | ||
185 | use_virtual_dma = 1; | ||
186 | else | ||
187 | use_virtual_dma = 0; | ||
188 | } else { | ||
189 | use_virtual_dma = can_use_virtual_dma & 1; | ||
190 | } | ||
191 | } | ||
192 | |||
193 | #define fd_chose_dma_mode(addr, size) _fd_chose_dma_mode(addr, size) | ||
194 | |||
195 | |||
196 | static int vdma_dma_setup(char *addr, unsigned long size, int mode, int io) | ||
197 | { | ||
198 | doing_pdma = 1; | ||
199 | virtual_dma_port = io; | ||
200 | virtual_dma_mode = (mode == DMA_MODE_WRITE); | ||
201 | virtual_dma_addr = addr; | ||
202 | virtual_dma_count = size; | ||
203 | virtual_dma_residue = 0; | ||
204 | return 0; | ||
205 | } | ||
206 | |||
207 | static int hard_dma_setup(char *addr, unsigned long size, int mode, int io) | ||
208 | { | ||
209 | #ifdef FLOPPY_SANITY_CHECK | ||
210 | if (CROSS_64KB(addr, size)) { | ||
211 | printk("DMA crossing 64-K boundary %p-%p\n", addr, addr+size); | ||
212 | return -1; | ||
213 | } | ||
214 | #endif | ||
215 | |||
216 | __flush_purge_region(addr, size); | ||
217 | |||
218 | /* actual, physical DMA */ | ||
219 | doing_pdma = 0; | ||
220 | clear_dma_ff(FLOPPY_DMA); | ||
221 | set_dma_mode(FLOPPY_DMA,mode); | ||
222 | set_dma_addr(FLOPPY_DMA,virt_to_phys(addr)); | ||
223 | set_dma_count(FLOPPY_DMA,size); | ||
224 | enable_dma(FLOPPY_DMA); | ||
225 | return 0; | ||
226 | } | ||
227 | |||
228 | static struct fd_routine_l { | ||
229 | int (*_request_dma)(unsigned int dmanr, const char * device_id); | ||
230 | void (*_free_dma)(unsigned int dmanr); | ||
231 | int (*_get_dma_residue)(unsigned int dummy); | ||
232 | unsigned long (*_dma_mem_alloc) (unsigned long size); | ||
233 | int (*_dma_setup)(char *addr, unsigned long size, int mode, int io); | ||
234 | } fd_routine[] = { | ||
235 | { | ||
236 | request_dma, | ||
237 | free_dma, | ||
238 | get_dma_residue, | ||
239 | dma_mem_alloc, | ||
240 | hard_dma_setup | ||
241 | }, | ||
242 | { | ||
243 | vdma_request_dma, | ||
244 | vdma_nop, | ||
245 | vdma_get_dma_residue, | ||
246 | vdma_mem_alloc, | ||
247 | vdma_dma_setup | ||
248 | } | ||
249 | }; | ||
250 | |||
251 | |||
252 | static int FDC1 = 0x3f0; | ||
253 | static int FDC2 = -1; | ||
254 | |||
255 | /* | ||
256 | * Floppy types are stored in the rtc's CMOS RAM and so rtc_lock | ||
257 | * is needed to prevent corrupted CMOS RAM in case "insmod floppy" | ||
258 | * coincides with another rtc CMOS user. Paul G. | ||
259 | */ | ||
260 | #define FLOPPY0_TYPE (4) | ||
261 | #define FLOPPY1_TYPE (0) | ||
262 | |||
263 | #define N_FDC 2 | ||
264 | #define N_DRIVE 8 | ||
265 | |||
266 | #define EXTRA_FLOPPY_PARAMS | ||
267 | |||
268 | #endif /* __ASM_SH_FLOPPY_H */ | ||
diff --git a/include/asm-sh/fpu.h b/include/asm-sh/fpu.h index f8429880a270..91462fea1507 100644 --- a/include/asm-sh/fpu.h +++ b/include/asm-sh/fpu.h | |||
@@ -1,9 +1,8 @@ | |||
1 | #ifndef __ASM_SH_FPU_H | 1 | #ifndef __ASM_SH_FPU_H |
2 | #define __ASM_SH_FPU_H | 2 | #define __ASM_SH_FPU_H |
3 | 3 | ||
4 | #define SR_FD 0x00008000 | ||
5 | |||
6 | #ifndef __ASSEMBLY__ | 4 | #ifndef __ASSEMBLY__ |
5 | #include <linux/preempt.h> | ||
7 | #include <asm/ptrace.h> | 6 | #include <asm/ptrace.h> |
8 | 7 | ||
9 | #ifdef CONFIG_SH_FPU | 8 | #ifdef CONFIG_SH_FPU |
@@ -21,25 +20,35 @@ struct task_struct; | |||
21 | 20 | ||
22 | extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); | 21 | extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); |
23 | #else | 22 | #else |
23 | |||
24 | #define release_fpu(regs) do { } while (0) | 24 | #define release_fpu(regs) do { } while (0) |
25 | #define grab_fpu(regs) do { } while (0) | 25 | #define grab_fpu(regs) do { } while (0) |
26 | #define save_fpu(tsk, regs) do { } while (0) | 26 | |
27 | static inline void save_fpu(struct task_struct *tsk, struct pt_regs *regs) | ||
28 | { | ||
29 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); | ||
30 | } | ||
27 | #endif | 31 | #endif |
28 | 32 | ||
29 | extern int do_fpu_inst(unsigned short, struct pt_regs *); | 33 | extern int do_fpu_inst(unsigned short, struct pt_regs *); |
30 | 34 | ||
31 | #define unlazy_fpu(tsk, regs) do { \ | 35 | static inline void unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs) |
32 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ | 36 | { |
33 | save_fpu(tsk, regs); \ | 37 | preempt_disable(); |
34 | } \ | 38 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) |
35 | } while (0) | 39 | save_fpu(tsk, regs); |
36 | 40 | preempt_enable(); | |
37 | #define clear_fpu(tsk, regs) do { \ | 41 | } |
38 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ | 42 | |
39 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); \ | 43 | static inline void clear_fpu(struct task_struct *tsk, struct pt_regs *regs) |
40 | release_fpu(regs); \ | 44 | { |
41 | } \ | 45 | preempt_disable(); |
42 | } while (0) | 46 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { |
47 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); | ||
48 | release_fpu(regs); | ||
49 | } | ||
50 | preempt_enable(); | ||
51 | } | ||
43 | 52 | ||
44 | #endif /* __ASSEMBLY__ */ | 53 | #endif /* __ASSEMBLY__ */ |
45 | 54 | ||
diff --git a/include/asm-sh/kvm.h b/include/asm-sh/kvm.h new file mode 100644 index 000000000000..6af51dbab2d0 --- /dev/null +++ b/include/asm-sh/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SH_H | ||
2 | #define __LINUX_KVM_SH_H | ||
3 | |||
4 | /* sh does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index 19fe47c1ca17..ec707b98e5b9 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define __ASM_SH_PROCESSOR_H | 2 | #define __ASM_SH_PROCESSOR_H |
3 | 3 | ||
4 | #include <asm/cpu-features.h> | 4 | #include <asm/cpu-features.h> |
5 | #include <asm/fpu.h> | ||
6 | 5 | ||
7 | #ifndef __ASSEMBLY__ | 6 | #ifndef __ASSEMBLY__ |
8 | /* | 7 | /* |
diff --git a/include/asm-sh/processor_32.h b/include/asm-sh/processor_32.h index df2d5b039ef4..c09305d6a9d9 100644 --- a/include/asm-sh/processor_32.h +++ b/include/asm-sh/processor_32.h | |||
@@ -70,6 +70,7 @@ extern struct sh_cpuinfo cpu_data[]; | |||
70 | */ | 70 | */ |
71 | #define SR_DSP 0x00001000 | 71 | #define SR_DSP 0x00001000 |
72 | #define SR_IMASK 0x000000f0 | 72 | #define SR_IMASK 0x000000f0 |
73 | #define SR_FD 0x00008000 | ||
73 | 74 | ||
74 | /* | 75 | /* |
75 | * FPU structure and data | 76 | * FPU structure and data |
diff --git a/include/asm-sh/processor_64.h b/include/asm-sh/processor_64.h index eda4bef448e9..88a2edf8fa5d 100644 --- a/include/asm-sh/processor_64.h +++ b/include/asm-sh/processor_64.h | |||
@@ -112,6 +112,7 @@ extern struct sh_cpuinfo cpu_data[]; | |||
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | #define SR_IMASK 0x000000f0 | 114 | #define SR_IMASK 0x000000f0 |
115 | #define SR_FD 0x00008000 | ||
115 | #define SR_SSTEP 0x08000000 | 116 | #define SR_SSTEP 0x08000000 |
116 | 117 | ||
117 | #ifndef __ASSEMBLY__ | 118 | #ifndef __ASSEMBLY__ |
diff --git a/include/asm-sparc/kvm.h b/include/asm-sparc/kvm.h new file mode 100644 index 000000000000..2e5478da3819 --- /dev/null +++ b/include/asm-sparc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SPARC_H | ||
2 | #define __LINUX_KVM_SPARC_H | ||
3 | |||
4 | /* sparc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index 542421460a12..532975ecfe10 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
@@ -86,6 +86,8 @@ extern struct trap_per_cpu trap_block[NR_CPUS]; | |||
86 | extern void init_cur_cpu_trap(struct thread_info *); | 86 | extern void init_cur_cpu_trap(struct thread_info *); |
87 | extern void setup_tba(void); | 87 | extern void setup_tba(void); |
88 | extern int ncpus_probed; | 88 | extern int ncpus_probed; |
89 | extern void __init cpu_probe(void); | ||
90 | extern const struct seq_operations cpuinfo_op; | ||
89 | 91 | ||
90 | extern unsigned long real_hard_smp_processor_id(void); | 92 | extern unsigned long real_hard_smp_processor_id(void); |
91 | 93 | ||
diff --git a/include/asm-sparc64/dcu.h b/include/asm-sparc64/dcu.h index ecbed2ae548f..0f704e106a1b 100644 --- a/include/asm-sparc64/dcu.h +++ b/include/asm-sparc64/dcu.h | |||
@@ -1,26 +1,27 @@ | |||
1 | /* $Id: dcu.h,v 1.2 2001/03/01 23:23:33 davem Exp $ */ | ||
2 | #ifndef _SPARC64_DCU_H | 1 | #ifndef _SPARC64_DCU_H |
3 | #define _SPARC64_DCU_H | 2 | #define _SPARC64_DCU_H |
4 | 3 | ||
4 | #include <linux/const.h> | ||
5 | |||
5 | /* UltraSparc-III Data Cache Unit Control Register */ | 6 | /* UltraSparc-III Data Cache Unit Control Register */ |
6 | #define DCU_CP 0x0002000000000000 /* Physical Cache Enable w/o mmu*/ | 7 | #define DCU_CP _AC(0x0002000000000000,UL) /* Phys Cache Enable w/o mmu */ |
7 | #define DCU_CV 0x0001000000000000 /* Virtual Cache Enable w/o mmu */ | 8 | #define DCU_CV _AC(0x0001000000000000,UL) /* Virt Cache Enable w/o mmu */ |
8 | #define DCU_ME 0x0000800000000000 /* NC-store Merging Enable */ | 9 | #define DCU_ME _AC(0x0000800000000000,UL) /* NC-store Merging Enable */ |
9 | #define DCU_RE 0x0000400000000000 /* RAW bypass Enable */ | 10 | #define DCU_RE _AC(0x0000400000000000,UL) /* RAW bypass Enable */ |
10 | #define DCU_PE 0x0000200000000000 /* PCache Enable */ | 11 | #define DCU_PE _AC(0x0000200000000000,UL) /* PCache Enable */ |
11 | #define DCU_HPE 0x0000100000000000 /* HW prefetch Enable */ | 12 | #define DCU_HPE _AC(0x0000100000000000,UL) /* HW prefetch Enable */ |
12 | #define DCU_SPE 0x0000080000000000 /* SW prefetch Enable */ | 13 | #define DCU_SPE _AC(0x0000080000000000,UL) /* SW prefetch Enable */ |
13 | #define DCU_SL 0x0000040000000000 /* Secondary load steering Enab */ | 14 | #define DCU_SL _AC(0x0000040000000000,UL) /* Secondary ld-steering Enab*/ |
14 | #define DCU_WE 0x0000020000000000 /* WCache enable */ | 15 | #define DCU_WE _AC(0x0000020000000000,UL) /* WCache enable */ |
15 | #define DCU_PM 0x000001fe00000000 /* PA Watchpoint Byte Mask */ | 16 | #define DCU_PM _AC(0x000001fe00000000,UL) /* PA Watchpoint Byte Mask */ |
16 | #define DCU_VM 0x00000001fe000000 /* VA Watchpoint Byte Mask */ | 17 | #define DCU_VM _AC(0x00000001fe000000,UL) /* VA Watchpoint Byte Mask */ |
17 | #define DCU_PR 0x0000000001000000 /* PA Watchpoint Read Enable */ | 18 | #define DCU_PR _AC(0x0000000001000000,UL) /* PA Watchpoint Read Enable */ |
18 | #define DCU_PW 0x0000000000800000 /* PA Watchpoint Write Enable */ | 19 | #define DCU_PW _AC(0x0000000000800000,UL) /* PA Watchpoint Write Enable*/ |
19 | #define DCU_VR 0x0000000000400000 /* VA Watchpoint Read Enable */ | 20 | #define DCU_VR _AC(0x0000000000400000,UL) /* VA Watchpoint Read Enable */ |
20 | #define DCU_VW 0x0000000000200000 /* VA Watchpoint Write Enable */ | 21 | #define DCU_VW _AC(0x0000000000200000,UL) /* VA Watchpoint Write Enable*/ |
21 | #define DCU_DM 0x0000000000000008 /* DMMU Enable */ | 22 | #define DCU_DM _AC(0x0000000000000008,UL) /* DMMU Enable */ |
22 | #define DCU_IM 0x0000000000000004 /* IMMU Enable */ | 23 | #define DCU_IM _AC(0x0000000000000004,UL) /* IMMU Enable */ |
23 | #define DCU_DC 0x0000000000000002 /* Data Cache Enable */ | 24 | #define DCU_DC _AC(0x0000000000000002,UL) /* Data Cache Enable */ |
24 | #define DCU_IC 0x0000000000000001 /* Instruction Cache Enable */ | 25 | #define DCU_IC _AC(0x0000000000000001,UL) /* Instruction Cache Enable */ |
25 | 26 | ||
26 | #endif /* _SPARC64_DCU_H */ | 27 | #endif /* _SPARC64_DCU_H */ |
diff --git a/include/asm-sparc64/irq.h b/include/asm-sparc64/irq.h index 30cb76b47be1..0bb9bf531745 100644 --- a/include/asm-sparc64/irq.h +++ b/include/asm-sparc64/irq.h | |||
@@ -64,6 +64,7 @@ extern unsigned char virt_irq_alloc(unsigned int dev_handle, | |||
64 | extern void virt_irq_free(unsigned int virt_irq); | 64 | extern void virt_irq_free(unsigned int virt_irq); |
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | extern void __init init_IRQ(void); | ||
67 | extern void fixup_irqs(void); | 68 | extern void fixup_irqs(void); |
68 | 69 | ||
69 | static inline void set_softint(unsigned long bits) | 70 | static inline void set_softint(unsigned long bits) |
diff --git a/include/asm-sparc64/kvm.h b/include/asm-sparc64/kvm.h new file mode 100644 index 000000000000..380537a77bf9 --- /dev/null +++ b/include/asm-sparc64/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SPARC64_H | ||
2 | #define __LINUX_KVM_SPARC64_H | ||
3 | |||
4 | /* sparc64 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 3167ccff64f8..549e45266b68 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
@@ -23,9 +23,9 @@ | |||
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
25 | 25 | ||
26 | /* The kernel image occupies 0x4000000 to 0x1000000 (4MB --> 32MB). | 26 | /* The kernel image occupies 0x4000000 to 0x6000000 (4MB --> 96MB). |
27 | * The page copy blockops can use 0x2000000 to 0x4000000. | 27 | * The page copy blockops can use 0x6000000 to 0x8000000. |
28 | * The TSB is mapped in the 0x4000000 to 0x6000000 range. | 28 | * The TSB is mapped in the 0x8000000 to 0xa000000 range. |
29 | * The PROM resides in an area spanning 0xf0000000 to 0x100000000. | 29 | * The PROM resides in an area spanning 0xf0000000 to 0x100000000. |
30 | * The vmalloc area spans 0x100000000 to 0x200000000. | 30 | * The vmalloc area spans 0x100000000 to 0x200000000. |
31 | * Since modules need to be in the lowest 32-bits of the address space, | 31 | * Since modules need to be in the lowest 32-bits of the address space, |
@@ -33,8 +33,8 @@ | |||
33 | * There is a single static kernel PMD which maps from 0x0 to address | 33 | * There is a single static kernel PMD which maps from 0x0 to address |
34 | * 0x400000000. | 34 | * 0x400000000. |
35 | */ | 35 | */ |
36 | #define TLBTEMP_BASE _AC(0x0000000002000000,UL) | 36 | #define TLBTEMP_BASE _AC(0x0000000006000000,UL) |
37 | #define TSBMAP_BASE _AC(0x0000000004000000,UL) | 37 | #define TSBMAP_BASE _AC(0x0000000008000000,UL) |
38 | #define MODULES_VADDR _AC(0x0000000010000000,UL) | 38 | #define MODULES_VADDR _AC(0x0000000010000000,UL) |
39 | #define MODULES_LEN _AC(0x00000000e0000000,UL) | 39 | #define MODULES_LEN _AC(0x00000000e0000000,UL) |
40 | #define MODULES_END _AC(0x00000000f0000000,UL) | 40 | #define MODULES_END _AC(0x00000000f0000000,UL) |
@@ -761,6 +761,8 @@ extern unsigned long get_fb_unmapped_area(struct file *filp, unsigned long, | |||
761 | extern void pgtable_cache_init(void); | 761 | extern void pgtable_cache_init(void); |
762 | extern void sun4v_register_fault_status(void); | 762 | extern void sun4v_register_fault_status(void); |
763 | extern void sun4v_ktsb_register(void); | 763 | extern void sun4v_ktsb_register(void); |
764 | extern void __init cheetah_ecache_flush_init(void); | ||
765 | extern void sun4v_patch_tlb_handlers(void); | ||
764 | 766 | ||
765 | extern unsigned long cmdline_memory_size; | 767 | extern unsigned long cmdline_memory_size; |
766 | 768 | ||
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h index 8da484c19822..885b6a1dcae4 100644 --- a/include/asm-sparc64/processor.h +++ b/include/asm-sparc64/processor.h | |||
@@ -37,6 +37,9 @@ | |||
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | #define TASK_SIZE ((unsigned long)-VPTE_SIZE) | 39 | #define TASK_SIZE ((unsigned long)-VPTE_SIZE) |
40 | #define TASK_SIZE_OF(tsk) \ | ||
41 | (test_tsk_thread_flag(tsk,TIF_32BIT) ? \ | ||
42 | (1UL << 32UL) : TASK_SIZE) | ||
40 | #ifdef __KERNEL__ | 43 | #ifdef __KERNEL__ |
41 | 44 | ||
42 | #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) | 45 | #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) |
diff --git a/include/asm-sparc64/stacktrace.h b/include/asm-sparc64/stacktrace.h new file mode 100644 index 000000000000..6cee39adf6d6 --- /dev/null +++ b/include/asm-sparc64/stacktrace.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _SPARC64_STACKTRACE_H | ||
2 | #define _SPARC64_STACKTRACE_H | ||
3 | |||
4 | extern void stack_trace_flush(void); | ||
5 | |||
6 | #endif /* _SPARC64_STACKTRACE_H */ | ||
diff --git a/include/asm-sparc64/timer.h b/include/asm-sparc64/timer.h index ccbd69448866..5b779fd1f788 100644 --- a/include/asm-sparc64/timer.h +++ b/include/asm-sparc64/timer.h | |||
@@ -1,14 +1,13 @@ | |||
1 | /* $Id: timer.h,v 1.3 2000/05/09 17:40:15 davem Exp $ | 1 | /* timer.h: System timer definitions for sun5. |
2 | * timer.h: System timer definitions for sun5. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1997, 2008 David S. Miller (davem@davemloft.net) |
5 | */ | 4 | */ |
6 | 5 | ||
7 | #ifndef _SPARC64_TIMER_H | 6 | #ifndef _SPARC64_TIMER_H |
8 | #define _SPARC64_TIMER_H | 7 | #define _SPARC64_TIMER_H |
9 | 8 | ||
10 | #include <linux/types.h> | 9 | #include <linux/types.h> |
11 | 10 | #include <linux/init.h> | |
12 | 11 | ||
13 | struct sparc64_tick_ops { | 12 | struct sparc64_tick_ops { |
14 | unsigned long (*get_tick)(void); | 13 | unsigned long (*get_tick)(void); |
@@ -25,5 +24,7 @@ struct sparc64_tick_ops { | |||
25 | extern struct sparc64_tick_ops *tick_ops; | 24 | extern struct sparc64_tick_ops *tick_ops; |
26 | 25 | ||
27 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); | 26 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); |
27 | extern void __devinit setup_sparc64_timer(void); | ||
28 | extern void __init time_init(void); | ||
28 | 29 | ||
29 | #endif /* _SPARC64_TIMER_H */ | 30 | #endif /* _SPARC64_TIMER_H */ |
diff --git a/include/asm-um/kvm.h b/include/asm-um/kvm.h new file mode 100644 index 000000000000..66aa77094551 --- /dev/null +++ b/include/asm-um/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_UM_H | ||
2 | #define __LINUX_KVM_UM_H | ||
3 | |||
4 | /* um does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-v850/kvm.h b/include/asm-v850/kvm.h new file mode 100644 index 000000000000..3f729b79febc --- /dev/null +++ b/include/asm-v850/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_V850_H | ||
2 | #define __LINUX_KVM_V850_H | ||
3 | |||
4 | /* v850 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h index 92021c1ffa3a..0e2292483b35 100644 --- a/include/asm-x86/irqflags.h +++ b/include/asm-x86/irqflags.h | |||
@@ -70,6 +70,26 @@ static inline void raw_local_irq_restore(unsigned long flags) | |||
70 | native_restore_fl(flags); | 70 | native_restore_fl(flags); |
71 | } | 71 | } |
72 | 72 | ||
73 | #ifdef CONFIG_X86_VSMP | ||
74 | |||
75 | /* | ||
76 | * Interrupt control for the VSMP architecture: | ||
77 | */ | ||
78 | |||
79 | static inline void raw_local_irq_disable(void) | ||
80 | { | ||
81 | unsigned long flags = __raw_local_save_flags(); | ||
82 | raw_local_irq_restore((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC); | ||
83 | } | ||
84 | |||
85 | static inline void raw_local_irq_enable(void) | ||
86 | { | ||
87 | unsigned long flags = __raw_local_save_flags(); | ||
88 | raw_local_irq_restore((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC)); | ||
89 | } | ||
90 | |||
91 | #else | ||
92 | |||
73 | static inline void raw_local_irq_disable(void) | 93 | static inline void raw_local_irq_disable(void) |
74 | { | 94 | { |
75 | native_irq_disable(); | 95 | native_irq_disable(); |
@@ -80,6 +100,8 @@ static inline void raw_local_irq_enable(void) | |||
80 | native_irq_enable(); | 100 | native_irq_enable(); |
81 | } | 101 | } |
82 | 102 | ||
103 | #endif | ||
104 | |||
83 | /* | 105 | /* |
84 | * Used in the idle loop; sti takes one instruction cycle | 106 | * Used in the idle loop; sti takes one instruction cycle |
85 | * to complete: | 107 | * to complete: |
@@ -137,10 +159,17 @@ static inline unsigned long __raw_local_irq_save(void) | |||
137 | #define raw_local_irq_save(flags) \ | 159 | #define raw_local_irq_save(flags) \ |
138 | do { (flags) = __raw_local_irq_save(); } while (0) | 160 | do { (flags) = __raw_local_irq_save(); } while (0) |
139 | 161 | ||
162 | #ifdef CONFIG_X86_VSMP | ||
163 | static inline int raw_irqs_disabled_flags(unsigned long flags) | ||
164 | { | ||
165 | return !(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC); | ||
166 | } | ||
167 | #else | ||
140 | static inline int raw_irqs_disabled_flags(unsigned long flags) | 168 | static inline int raw_irqs_disabled_flags(unsigned long flags) |
141 | { | 169 | { |
142 | return !(flags & X86_EFLAGS_IF); | 170 | return !(flags & X86_EFLAGS_IF); |
143 | } | 171 | } |
172 | #endif | ||
144 | 173 | ||
145 | static inline int raw_irqs_disabled(void) | 174 | static inline int raw_irqs_disabled(void) |
146 | { | 175 | { |
diff --git a/include/asm-x86/lguest_hcall.h b/include/asm-x86/lguest_hcall.h index 758b9a5d4539..f239e7069cab 100644 --- a/include/asm-x86/lguest_hcall.h +++ b/include/asm-x86/lguest_hcall.h | |||
@@ -27,7 +27,7 @@ | |||
27 | #ifndef __ASSEMBLY__ | 27 | #ifndef __ASSEMBLY__ |
28 | #include <asm/hw_irq.h> | 28 | #include <asm/hw_irq.h> |
29 | 29 | ||
30 | /*G:031 First, how does our Guest contact the Host to ask for privileged | 30 | /*G:031 But first, how does our Guest contact the Host to ask for privileged |
31 | * operations? There are two ways: the direct way is to make a "hypercall", | 31 | * operations? There are two ways: the direct way is to make a "hypercall", |
32 | * to make requests of the Host Itself. | 32 | * to make requests of the Host Itself. |
33 | * | 33 | * |
diff --git a/include/asm-x86/linkage.h b/include/asm-x86/linkage.h index 31739c7d66a9..c048353f4b85 100644 --- a/include/asm-x86/linkage.h +++ b/include/asm-x86/linkage.h | |||
@@ -8,12 +8,45 @@ | |||
8 | 8 | ||
9 | #ifdef CONFIG_X86_32 | 9 | #ifdef CONFIG_X86_32 |
10 | #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) | 10 | #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) |
11 | #define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret)) | ||
12 | /* | 11 | /* |
13 | * For 32-bit UML - mark functions implemented in assembly that use | 12 | * For 32-bit UML - mark functions implemented in assembly that use |
14 | * regparm input parameters: | 13 | * regparm input parameters: |
15 | */ | 14 | */ |
16 | #define asmregparm __attribute__((regparm(3))) | 15 | #define asmregparm __attribute__((regparm(3))) |
16 | |||
17 | /* | ||
18 | * Make sure the compiler doesn't do anything stupid with the | ||
19 | * arguments on the stack - they are owned by the *caller*, not | ||
20 | * the callee. This just fools gcc into not spilling into them, | ||
21 | * and keeps it from doing tailcall recursion and/or using the | ||
22 | * stack slots for temporaries, since they are live and "used" | ||
23 | * all the way to the end of the function. | ||
24 | * | ||
25 | * NOTE! On x86-64, all the arguments are in registers, so this | ||
26 | * only matters on a 32-bit kernel. | ||
27 | */ | ||
28 | #define asmlinkage_protect(n, ret, args...) \ | ||
29 | __asmlinkage_protect##n(ret, ##args) | ||
30 | #define __asmlinkage_protect_n(ret, args...) \ | ||
31 | __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args) | ||
32 | #define __asmlinkage_protect0(ret) \ | ||
33 | __asmlinkage_protect_n(ret) | ||
34 | #define __asmlinkage_protect1(ret, arg1) \ | ||
35 | __asmlinkage_protect_n(ret, "g" (arg1)) | ||
36 | #define __asmlinkage_protect2(ret, arg1, arg2) \ | ||
37 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2)) | ||
38 | #define __asmlinkage_protect3(ret, arg1, arg2, arg3) \ | ||
39 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3)) | ||
40 | #define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \ | ||
41 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
42 | "g" (arg4)) | ||
43 | #define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \ | ||
44 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
45 | "g" (arg4), "g" (arg5)) | ||
46 | #define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \ | ||
47 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
48 | "g" (arg4), "g" (arg5), "g" (arg6)) | ||
49 | |||
17 | #endif | 50 | #endif |
18 | 51 | ||
19 | #ifdef CONFIG_X86_ALIGNMENT_16 | 52 | #ifdef CONFIG_X86_ALIGNMENT_16 |
diff --git a/include/asm-x86/mach-rdc321x/gpio.h b/include/asm-x86/mach-rdc321x/gpio.h index db31b929b990..acce0b7d397b 100644 --- a/include/asm-x86/mach-rdc321x/gpio.h +++ b/include/asm-x86/mach-rdc321x/gpio.h | |||
@@ -5,19 +5,20 @@ extern int rdc_gpio_get_value(unsigned gpio); | |||
5 | extern void rdc_gpio_set_value(unsigned gpio, int value); | 5 | extern void rdc_gpio_set_value(unsigned gpio, int value); |
6 | extern int rdc_gpio_direction_input(unsigned gpio); | 6 | extern int rdc_gpio_direction_input(unsigned gpio); |
7 | extern int rdc_gpio_direction_output(unsigned gpio, int value); | 7 | extern int rdc_gpio_direction_output(unsigned gpio, int value); |
8 | 8 | extern int rdc_gpio_request(unsigned gpio, const char *label); | |
9 | extern void rdc_gpio_free(unsigned gpio); | ||
10 | extern void __init rdc321x_gpio_setup(void); | ||
9 | 11 | ||
10 | /* Wrappers for the arch-neutral GPIO API */ | 12 | /* Wrappers for the arch-neutral GPIO API */ |
11 | 13 | ||
12 | static inline int gpio_request(unsigned gpio, const char *label) | 14 | static inline int gpio_request(unsigned gpio, const char *label) |
13 | { | 15 | { |
14 | /* Not yet implemented */ | 16 | return rdc_gpio_request(gpio, label); |
15 | return 0; | ||
16 | } | 17 | } |
17 | 18 | ||
18 | static inline void gpio_free(unsigned gpio) | 19 | static inline void gpio_free(unsigned gpio) |
19 | { | 20 | { |
20 | /* Not yet implemented */ | 21 | rdc_gpio_free(gpio); |
21 | } | 22 | } |
22 | 23 | ||
23 | static inline int gpio_direction_input(unsigned gpio) | 24 | static inline int gpio_direction_input(unsigned gpio) |
diff --git a/include/asm-x86/mach-rdc321x/rdc321x_defs.h b/include/asm-x86/mach-rdc321x/rdc321x_defs.h index 838ba8f64fd3..c8e9c8bed3d0 100644 --- a/include/asm-x86/mach-rdc321x/rdc321x_defs.h +++ b/include/asm-x86/mach-rdc321x/rdc321x_defs.h | |||
@@ -3,4 +3,10 @@ | |||
3 | /* General purpose configuration and data registers */ | 3 | /* General purpose configuration and data registers */ |
4 | #define RDC3210_CFGREG_ADDR 0x0CF8 | 4 | #define RDC3210_CFGREG_ADDR 0x0CF8 |
5 | #define RDC3210_CFGREG_DATA 0x0CFC | 5 | #define RDC3210_CFGREG_DATA 0x0CFC |
6 | #define RDC_MAX_GPIO 0x3A | 6 | |
7 | #define RDC321X_GPIO_CTRL_REG1 0x48 | ||
8 | #define RDC321X_GPIO_CTRL_REG2 0x84 | ||
9 | #define RDC321X_GPIO_DATA_REG1 0x4c | ||
10 | #define RDC321X_GPIO_DATA_REG2 0x88 | ||
11 | |||
12 | #define RDC321X_MAX_GPIO 58 | ||
diff --git a/include/asm-x86/nops.h b/include/asm-x86/nops.h index e3b2bce0aff8..b3930ae539b3 100644 --- a/include/asm-x86/nops.h +++ b/include/asm-x86/nops.h | |||
@@ -73,16 +73,7 @@ | |||
73 | #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" | 73 | #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" |
74 | #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" | 74 | #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" |
75 | 75 | ||
76 | #if defined(CONFIG_MK8) | 76 | #if defined(CONFIG_MK7) |
77 | #define ASM_NOP1 K8_NOP1 | ||
78 | #define ASM_NOP2 K8_NOP2 | ||
79 | #define ASM_NOP3 K8_NOP3 | ||
80 | #define ASM_NOP4 K8_NOP4 | ||
81 | #define ASM_NOP5 K8_NOP5 | ||
82 | #define ASM_NOP6 K8_NOP6 | ||
83 | #define ASM_NOP7 K8_NOP7 | ||
84 | #define ASM_NOP8 K8_NOP8 | ||
85 | #elif defined(CONFIG_MK7) | ||
86 | #define ASM_NOP1 K7_NOP1 | 77 | #define ASM_NOP1 K7_NOP1 |
87 | #define ASM_NOP2 K7_NOP2 | 78 | #define ASM_NOP2 K7_NOP2 |
88 | #define ASM_NOP3 K7_NOP3 | 79 | #define ASM_NOP3 K7_NOP3 |
@@ -100,6 +91,15 @@ | |||
100 | #define ASM_NOP6 P6_NOP6 | 91 | #define ASM_NOP6 P6_NOP6 |
101 | #define ASM_NOP7 P6_NOP7 | 92 | #define ASM_NOP7 P6_NOP7 |
102 | #define ASM_NOP8 P6_NOP8 | 93 | #define ASM_NOP8 P6_NOP8 |
94 | #elif defined(CONFIG_X86_64) | ||
95 | #define ASM_NOP1 K8_NOP1 | ||
96 | #define ASM_NOP2 K8_NOP2 | ||
97 | #define ASM_NOP3 K8_NOP3 | ||
98 | #define ASM_NOP4 K8_NOP4 | ||
99 | #define ASM_NOP5 K8_NOP5 | ||
100 | #define ASM_NOP6 K8_NOP6 | ||
101 | #define ASM_NOP7 K8_NOP7 | ||
102 | #define ASM_NOP8 K8_NOP8 | ||
103 | #else | 103 | #else |
104 | #define ASM_NOP1 GENERIC_NOP1 | 104 | #define ASM_NOP1 GENERIC_NOP1 |
105 | #define ASM_NOP2 GENERIC_NOP2 | 105 | #define ASM_NOP2 GENERIC_NOP2 |
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index 174b87738714..9cf472aeb9ce 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h | |||
@@ -85,6 +85,7 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC; | |||
85 | #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW) | 85 | #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW) |
86 | #define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT) | 86 | #define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT) |
87 | #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) | 87 | #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) |
88 | #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD) | ||
88 | #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER) | 89 | #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER) |
89 | #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT) | 90 | #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT) |
90 | #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) | 91 | #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) |
@@ -101,6 +102,7 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC; | |||
101 | #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) | 102 | #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) |
102 | #define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX) | 103 | #define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX) |
103 | #define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE) | 104 | #define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE) |
105 | #define PAGE_KERNEL_UC_MINUS MAKE_GLOBAL(__PAGE_KERNEL_UC_MINUS) | ||
104 | #define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE) | 106 | #define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE) |
105 | #define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE) | 107 | #define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE) |
106 | #define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC) | 108 | #define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC) |
diff --git a/include/asm-xtensa/kvm.h b/include/asm-xtensa/kvm.h new file mode 100644 index 000000000000..bda4e331e98c --- /dev/null +++ b/include/asm-xtensa/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_XTENSA_H | ||
2 | #define __LINUX_KVM_XTENSA_H | ||
3 | |||
4 | /* xtensa does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 4108b38ebb16..9cdd12a9e843 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -195,7 +195,6 @@ unifdef-y += ethtool.h | |||
195 | unifdef-y += eventpoll.h | 195 | unifdef-y += eventpoll.h |
196 | unifdef-y += signalfd.h | 196 | unifdef-y += signalfd.h |
197 | unifdef-y += ext2_fs.h | 197 | unifdef-y += ext2_fs.h |
198 | unifdef-y += ext3_fs.h | ||
199 | unifdef-y += fb.h | 198 | unifdef-y += fb.h |
200 | unifdef-y += fcntl.h | 199 | unifdef-y += fcntl.h |
201 | unifdef-y += filter.h | 200 | unifdef-y += filter.h |
@@ -248,14 +247,13 @@ unifdef-y += isdn.h | |||
248 | unifdef-y += isdnif.h | 247 | unifdef-y += isdnif.h |
249 | unifdef-y += isdn_divertif.h | 248 | unifdef-y += isdn_divertif.h |
250 | unifdef-y += isdn_ppp.h | 249 | unifdef-y += isdn_ppp.h |
251 | unifdef-y += jbd.h | ||
252 | unifdef-y += joystick.h | 250 | unifdef-y += joystick.h |
253 | unifdef-y += kdev_t.h | 251 | unifdef-y += kdev_t.h |
254 | unifdef-y += kd.h | 252 | unifdef-y += kd.h |
255 | unifdef-y += kernelcapi.h | 253 | unifdef-y += kernelcapi.h |
256 | unifdef-y += kernel.h | 254 | unifdef-y += kernel.h |
257 | unifdef-y += keyboard.h | 255 | unifdef-y += keyboard.h |
258 | unifdef-$(CONFIG_HAVE_KVM) += kvm.h | 256 | unifdef-y += kvm.h |
259 | unifdef-y += llc.h | 257 | unifdef-y += llc.h |
260 | unifdef-y += loop.h | 258 | unifdef-y += loop.h |
261 | unifdef-y += lp.h | 259 | unifdef-y += lp.h |
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 69c1edb9fe54..40d54731de7e 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
@@ -65,6 +65,46 @@ static inline __u32 ror32(__u32 word, unsigned int shift) | |||
65 | return (word >> shift) | (word << (32 - shift)); | 65 | return (word >> shift) | (word << (32 - shift)); |
66 | } | 66 | } |
67 | 67 | ||
68 | /** | ||
69 | * rol16 - rotate a 16-bit value left | ||
70 | * @word: value to rotate | ||
71 | * @shift: bits to roll | ||
72 | */ | ||
73 | static inline __u16 rol16(__u16 word, unsigned int shift) | ||
74 | { | ||
75 | return (word << shift) | (word >> (16 - shift)); | ||
76 | } | ||
77 | |||
78 | /** | ||
79 | * ror16 - rotate a 16-bit value right | ||
80 | * @word: value to rotate | ||
81 | * @shift: bits to roll | ||
82 | */ | ||
83 | static inline __u16 ror16(__u16 word, unsigned int shift) | ||
84 | { | ||
85 | return (word >> shift) | (word << (16 - shift)); | ||
86 | } | ||
87 | |||
88 | /** | ||
89 | * rol8 - rotate an 8-bit value left | ||
90 | * @word: value to rotate | ||
91 | * @shift: bits to roll | ||
92 | */ | ||
93 | static inline __u8 rol8(__u8 word, unsigned int shift) | ||
94 | { | ||
95 | return (word << shift) | (word >> (8 - shift)); | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * ror8 - rotate an 8-bit value right | ||
100 | * @word: value to rotate | ||
101 | * @shift: bits to roll | ||
102 | */ | ||
103 | static inline __u8 ror8(__u8 word, unsigned int shift) | ||
104 | { | ||
105 | return (word >> shift) | (word << (8 - shift)); | ||
106 | } | ||
107 | |||
68 | static inline unsigned fls_long(unsigned long l) | 108 | static inline unsigned fls_long(unsigned long l) |
69 | { | 109 | { |
70 | if (sizeof(l) == 4) | 110 | if (sizeof(l) == 4) |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 028ba3b523b1..a6a6035a4e1e 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -256,6 +256,7 @@ struct cgroup_subsys { | |||
256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); | 256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); |
257 | int subsys_id; | 257 | int subsys_id; |
258 | int active; | 258 | int active; |
259 | int disabled; | ||
259 | int early_init; | 260 | int early_init; |
260 | #define MAX_CGROUP_TYPE_NAMELEN 32 | 261 | #define MAX_CGROUP_TYPE_NAMELEN 32 |
261 | const char *name; | 262 | const char *name; |
diff --git a/include/linux/compat.h b/include/linux/compat.h index a671dbff7a1f..8fa7857e153b 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -192,8 +192,8 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
192 | struct compat_timeval __user *tvp); | 192 | struct compat_timeval __user *tvp); |
193 | 193 | ||
194 | asmlinkage long compat_sys_wait4(compat_pid_t pid, | 194 | asmlinkage long compat_sys_wait4(compat_pid_t pid, |
195 | compat_uint_t *stat_addr, int options, | 195 | compat_uint_t __user *stat_addr, int options, |
196 | struct compat_rusage *ru); | 196 | struct compat_rusage __user *ru); |
197 | 197 | ||
198 | #define BITS_PER_COMPAT_LONG (8*sizeof(compat_long_t)) | 198 | #define BITS_PER_COMPAT_LONG (8*sizeof(compat_long_t)) |
199 | 199 | ||
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 6b72a4584086..51e6b1e520e6 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -38,8 +38,8 @@ struct cpuidle_state { | |||
38 | unsigned int power_usage; /* in mW */ | 38 | unsigned int power_usage; /* in mW */ |
39 | unsigned int target_residency; /* in US */ | 39 | unsigned int target_residency; /* in US */ |
40 | 40 | ||
41 | unsigned int usage; | 41 | unsigned long long usage; |
42 | unsigned int time; /* in US */ | 42 | unsigned long long time; /* in US */ |
43 | 43 | ||
44 | int (*enter) (struct cpuidle_device *dev, | 44 | int (*enter) (struct cpuidle_device *dev, |
45 | struct cpuidle_state *state); | 45 | struct cpuidle_state *state); |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 261e43a4c873..34d440698293 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -423,7 +423,7 @@ void dma_async_device_unregister(struct dma_device *device); | |||
423 | /* --- Helper iov-locking functions --- */ | 423 | /* --- Helper iov-locking functions --- */ |
424 | 424 | ||
425 | struct dma_page_list { | 425 | struct dma_page_list { |
426 | char *base_address; | 426 | char __user *base_address; |
427 | int nr_pages; | 427 | int nr_pages; |
428 | struct page **pages; | 428 | struct page **pages; |
429 | }; | 429 | }; |
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 49829988bfa0..897f723bd222 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -72,6 +72,13 @@ | |||
72 | #define in_softirq() (softirq_count()) | 72 | #define in_softirq() (softirq_count()) |
73 | #define in_interrupt() (irq_count()) | 73 | #define in_interrupt() (irq_count()) |
74 | 74 | ||
75 | /* | ||
76 | * Are we running in atomic context? WARNING: this macro cannot | ||
77 | * always detect atomic context; in particular, it cannot know about | ||
78 | * held spinlocks in non-preemptible kernels. Thus it should not be | ||
79 | * used in the general case to determine whether sleeping is possible. | ||
80 | * Do not use in_atomic() in driver code. | ||
81 | */ | ||
75 | #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0) | 82 | #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0) |
76 | 83 | ||
77 | #ifdef CONFIG_PREEMPT | 84 | #ifdef CONFIG_PREEMPT |
diff --git a/include/linux/hpet.h b/include/linux/hpet.h index 9cd94bfd07e5..2dc29ce6c8e4 100644 --- a/include/linux/hpet.h +++ b/include/linux/hpet.h | |||
@@ -64,7 +64,7 @@ struct hpet { | |||
64 | */ | 64 | */ |
65 | 65 | ||
66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) | 66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) |
67 | #define Tn_INT_ROUTE_CAP_SHIFT (32UL) | 67 | #define Tn_INI_ROUTE_CAP_SHIFT (32UL) |
68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) | 68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) |
69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) | 69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) |
70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) | 70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) |
diff --git a/include/linux/i2c/tps65010.h b/include/linux/i2c/tps65010.h index 7021635ed6a0..918c5354d9b8 100644 --- a/include/linux/i2c/tps65010.h +++ b/include/linux/i2c/tps65010.h | |||
@@ -152,5 +152,35 @@ extern int tps65010_config_vregs1(unsigned value); | |||
152 | */ | 152 | */ |
153 | extern int tps65013_set_low_pwr(unsigned mode); | 153 | extern int tps65013_set_low_pwr(unsigned mode); |
154 | 154 | ||
155 | |||
156 | struct i2c_client; | ||
157 | |||
158 | /** | ||
159 | * struct tps65010_board - packages GPIO and LED lines | ||
160 | * @base: the GPIO number to assign to GPIO-1 | ||
161 | * @outmask: bit (N-1) is set to allow GPIO-N to be used as an | ||
162 | * (open drain) output | ||
163 | * @setup: optional callback issued once the GPIOs are valid | ||
164 | * @teardown: optional callback issued before the GPIOs are invalidated | ||
165 | * @context: optional parameter passed to setup() and teardown() | ||
166 | * | ||
167 | * Board data may be used to package the GPIO (and LED) lines for use | ||
168 | * in by the generic GPIO and LED frameworks. The first four GPIOs | ||
169 | * starting at gpio_base are GPIO1..GPIO4. The next two are LED1/nPG | ||
170 | * and LED2 (with hardware blinking capability, not currently exposed). | ||
171 | * | ||
172 | * The @setup callback may be used with the kind of board-specific glue | ||
173 | * which hands the (now-valid) GPIOs to other drivers, or which puts | ||
174 | * devices in their initial states using these GPIOs. | ||
175 | */ | ||
176 | struct tps65010_board { | ||
177 | int base; | ||
178 | unsigned outmask; | ||
179 | |||
180 | int (*setup)(struct i2c_client *client, void *context); | ||
181 | int (*teardown)(struct i2c_client *client, void *context); | ||
182 | void *context; | ||
183 | }; | ||
184 | |||
155 | #endif /* __LINUX_I2C_TPS65010_H */ | 185 | #endif /* __LINUX_I2C_TPS65010_H */ |
156 | 186 | ||
diff --git a/include/linux/ide.h b/include/linux/ide.h index a3b69c10d667..bc26b2f27359 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
27 | #include <asm/mutex.h> | 27 | #include <asm/mutex.h> |
28 | 28 | ||
29 | #if defined(CRIS) || defined(FRV) | 29 | #if defined(CONFIG_CRIS) || defined(CONFIG_FRV) |
30 | # define SUPPORT_VLB_SYNC 0 | 30 | # define SUPPORT_VLB_SYNC 0 |
31 | #else | 31 | #else |
32 | # define SUPPORT_VLB_SYNC 1 | 32 | # define SUPPORT_VLB_SYNC 1 |
diff --git a/include/linux/input.h b/include/linux/input.h index 1bdc39a8c76c..cae2c35d1206 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -1227,12 +1227,13 @@ void input_free_device(struct input_dev *dev); | |||
1227 | 1227 | ||
1228 | static inline struct input_dev *input_get_device(struct input_dev *dev) | 1228 | static inline struct input_dev *input_get_device(struct input_dev *dev) |
1229 | { | 1229 | { |
1230 | return to_input_dev(get_device(&dev->dev)); | 1230 | return dev ? to_input_dev(get_device(&dev->dev)) : NULL; |
1231 | } | 1231 | } |
1232 | 1232 | ||
1233 | static inline void input_put_device(struct input_dev *dev) | 1233 | static inline void input_put_device(struct input_dev *dev) |
1234 | { | 1234 | { |
1235 | put_device(&dev->dev); | 1235 | if (dev) |
1236 | put_device(&dev->dev); | ||
1236 | } | 1237 | } |
1237 | 1238 | ||
1238 | static inline void *input_get_drvdata(struct input_dev *dev) | 1239 | static inline void *input_get_drvdata(struct input_dev *dev) |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 1b4ccf25b4d2..cac4b364cd40 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define IOCONTEXT_H | 2 | #define IOCONTEXT_H |
3 | 3 | ||
4 | #include <linux/radix-tree.h> | 4 | #include <linux/radix-tree.h> |
5 | #include <linux/rcupdate.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * This is the per-process anticipatory I/O scheduler state. | 8 | * This is the per-process anticipatory I/O scheduler state. |
@@ -54,6 +55,8 @@ struct cfq_io_context { | |||
54 | 55 | ||
55 | void (*dtor)(struct io_context *); /* destructor */ | 56 | void (*dtor)(struct io_context *); /* destructor */ |
56 | void (*exit)(struct io_context *); /* called on task exit */ | 57 | void (*exit)(struct io_context *); /* called on task exit */ |
58 | |||
59 | struct rcu_head rcu_head; | ||
57 | }; | 60 | }; |
58 | 61 | ||
59 | /* | 62 | /* |
diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h index 589be3e1f3ac..e7217dc58f39 100644 --- a/include/linux/lguest_launcher.h +++ b/include/linux/lguest_launcher.h | |||
@@ -16,6 +16,10 @@ | |||
16 | * a new device, we simply need to write a new virtio driver and create support | 16 | * a new device, we simply need to write a new virtio driver and create support |
17 | * for it in the Launcher: this code won't need to change. | 17 | * for it in the Launcher: this code won't need to change. |
18 | * | 18 | * |
19 | * Virtio devices are also used by kvm, so we can simply reuse their optimized | ||
20 | * device drivers. And one day when everyone uses virtio, my plan will be | ||
21 | * complete. Bwahahahah! | ||
22 | * | ||
19 | * Devices are described by a simplified ID, a status byte, and some "config" | 23 | * Devices are described by a simplified ID, a status byte, and some "config" |
20 | * bytes which describe this device's configuration. This is placed by the | 24 | * bytes which describe this device's configuration. This is placed by the |
21 | * Launcher just above the top of physical memory: | 25 | * Launcher just above the top of physical memory: |
@@ -26,7 +30,7 @@ struct lguest_device_desc { | |||
26 | /* The number of virtqueues (first in config array) */ | 30 | /* The number of virtqueues (first in config array) */ |
27 | __u8 num_vq; | 31 | __u8 num_vq; |
28 | /* The number of bytes of feature bits. Multiply by 2: one for host | 32 | /* The number of bytes of feature bits. Multiply by 2: one for host |
29 | * features and one for guest acknowledgements. */ | 33 | * features and one for Guest acknowledgements. */ |
30 | __u8 feature_len; | 34 | __u8 feature_len; |
31 | /* The number of bytes of the config array after virtqueues. */ | 35 | /* The number of bytes of the config array after virtqueues. */ |
32 | __u8 config_len; | 36 | __u8 config_len; |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 269cdba09578..37ee881c42ac 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -295,6 +295,7 @@ enum { | |||
295 | ATA_EH_SOFTRESET = (1 << 1), | 295 | ATA_EH_SOFTRESET = (1 << 1), |
296 | ATA_EH_HARDRESET = (1 << 2), | 296 | ATA_EH_HARDRESET = (1 << 2), |
297 | ATA_EH_ENABLE_LINK = (1 << 3), | 297 | ATA_EH_ENABLE_LINK = (1 << 3), |
298 | ATA_EH_LPM = (1 << 4), /* link power management action */ | ||
298 | 299 | ||
299 | ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, | 300 | ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, |
300 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, | 301 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, |
@@ -304,7 +305,6 @@ enum { | |||
304 | ATA_EHI_RESUME_LINK = (1 << 1), /* resume link (reset modifier) */ | 305 | ATA_EHI_RESUME_LINK = (1 << 1), /* resume link (reset modifier) */ |
305 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ | 306 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ |
306 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ | 307 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ |
307 | ATA_EHI_LPM = (1 << 4), /* link power management action */ | ||
308 | 308 | ||
309 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ | 309 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ |
310 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ | 310 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ |
@@ -350,7 +350,8 @@ enum { | |||
350 | ATAPI_READ = 0, /* READs */ | 350 | ATAPI_READ = 0, /* READs */ |
351 | ATAPI_WRITE = 1, /* WRITEs */ | 351 | ATAPI_WRITE = 1, /* WRITEs */ |
352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ | 352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ |
353 | ATAPI_MISC = 3, /* the rest */ | 353 | ATAPI_PASS_THRU = 3, /* SAT pass-thru */ |
354 | ATAPI_MISC = 4, /* the rest */ | ||
354 | }; | 355 | }; |
355 | 356 | ||
356 | enum ata_xfer_mask { | 357 | enum ata_xfer_mask { |
@@ -849,6 +850,7 @@ extern unsigned int ata_dev_try_classify(struct ata_device *dev, int present, | |||
849 | */ | 850 | */ |
850 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); | 851 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); |
851 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); | 852 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); |
853 | extern int atapi_cmd_type(u8 opcode); | ||
852 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, | 854 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, |
853 | u8 pmp, int is_cmd, u8 *fis); | 855 | u8 pmp, int is_cmd, u8 *fis); |
854 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); | 856 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); |
@@ -1379,27 +1381,6 @@ static inline int ata_try_flush_cache(const struct ata_device *dev) | |||
1379 | ata_id_has_flush_ext(dev->id); | 1381 | ata_id_has_flush_ext(dev->id); |
1380 | } | 1382 | } |
1381 | 1383 | ||
1382 | static inline int atapi_cmd_type(u8 opcode) | ||
1383 | { | ||
1384 | switch (opcode) { | ||
1385 | case GPCMD_READ_10: | ||
1386 | case GPCMD_READ_12: | ||
1387 | return ATAPI_READ; | ||
1388 | |||
1389 | case GPCMD_WRITE_10: | ||
1390 | case GPCMD_WRITE_12: | ||
1391 | case GPCMD_WRITE_AND_VERIFY_10: | ||
1392 | return ATAPI_WRITE; | ||
1393 | |||
1394 | case GPCMD_READ_CD: | ||
1395 | case GPCMD_READ_CD_MSF: | ||
1396 | return ATAPI_READ_CD; | ||
1397 | |||
1398 | default: | ||
1399 | return ATAPI_MISC; | ||
1400 | } | ||
1401 | } | ||
1402 | |||
1403 | static inline unsigned int ac_err_mask(u8 status) | 1384 | static inline unsigned int ac_err_mask(u8 status) |
1404 | { | 1385 | { |
1405 | if (status & (ATA_BUSY | ATA_DRQ)) | 1386 | if (status & (ATA_BUSY | ATA_DRQ)) |
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index 0592936344c4..2119610b24f8 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
@@ -17,8 +17,24 @@ | |||
17 | # define asmregparm | 17 | # define asmregparm |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #ifndef prevent_tail_call | 20 | /* |
21 | # define prevent_tail_call(ret) do { } while (0) | 21 | * This is used by architectures to keep arguments on the stack |
22 | * untouched by the compiler by keeping them live until the end. | ||
23 | * The argument stack may be owned by the assembly-language | ||
24 | * caller, not the callee, and gcc doesn't always understand | ||
25 | * that. | ||
26 | * | ||
27 | * We have the return value, and a maximum of six arguments. | ||
28 | * | ||
29 | * This should always be followed by a "return ret" for the | ||
30 | * protection to work (ie no more work that the compiler might | ||
31 | * end up needing stack temporaries for). | ||
32 | */ | ||
33 | /* Assembly files may be compiled with -traditional .. */ | ||
34 | #ifndef __ASSEMBLY__ | ||
35 | #ifndef asmlinkage_protect | ||
36 | # define asmlinkage_protect(n, ret, args...) do { } while (0) | ||
37 | #endif | ||
22 | #endif | 38 | #endif |
23 | 39 | ||
24 | #ifndef __ALIGN | 40 | #ifndef __ALIGN |
diff --git a/include/linux/mount.h b/include/linux/mount.h index 6d3047d8c91c..5ee2df217cdf 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h | |||
@@ -61,6 +61,7 @@ struct vfsmount { | |||
61 | atomic_t mnt_count; | 61 | atomic_t mnt_count; |
62 | int mnt_expiry_mark; /* true if marked for expiry */ | 62 | int mnt_expiry_mark; /* true if marked for expiry */ |
63 | int mnt_pinned; | 63 | int mnt_pinned; |
64 | int mnt_ghosts; | ||
64 | }; | 65 | }; |
65 | 66 | ||
66 | static inline struct vfsmount *mntget(struct vfsmount *mnt) | 67 | static inline struct vfsmount *mntget(struct vfsmount *mnt) |
@@ -98,7 +99,6 @@ extern int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | |||
98 | int mnt_flags, struct list_head *fslist); | 99 | int mnt_flags, struct list_head *fslist); |
99 | 100 | ||
100 | extern void mark_mounts_for_expiry(struct list_head *mounts); | 101 | extern void mark_mounts_for_expiry(struct list_head *mounts); |
101 | extern void shrink_submounts(struct vfsmount *mountpoint, struct list_head *mounts); | ||
102 | 102 | ||
103 | extern spinlock_t vfsmount_lock; | 103 | extern spinlock_t vfsmount_lock; |
104 | extern dev_t name_to_dev_t(char *name); | 104 | extern dev_t name_to_dev_t(char *name); |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a2f003239c85..ee81906b5164 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -383,9 +383,11 @@ static inline void __napi_complete(struct napi_struct *n) | |||
383 | 383 | ||
384 | static inline void napi_complete(struct napi_struct *n) | 384 | static inline void napi_complete(struct napi_struct *n) |
385 | { | 385 | { |
386 | local_irq_disable(); | 386 | unsigned long flags; |
387 | |||
388 | local_irq_save(flags); | ||
387 | __napi_complete(n); | 389 | __napi_complete(n); |
388 | local_irq_enable(); | 390 | local_irq_restore(flags); |
389 | } | 391 | } |
390 | 392 | ||
391 | /** | 393 | /** |
@@ -1072,12 +1074,14 @@ static inline int netif_is_multiqueue(const struct net_device *dev) | |||
1072 | } | 1074 | } |
1073 | 1075 | ||
1074 | /* Use this variant when it is known for sure that it | 1076 | /* Use this variant when it is known for sure that it |
1075 | * is executing from interrupt context. | 1077 | * is executing from hardware interrupt context or with hardware interrupts |
1078 | * disabled. | ||
1076 | */ | 1079 | */ |
1077 | extern void dev_kfree_skb_irq(struct sk_buff *skb); | 1080 | extern void dev_kfree_skb_irq(struct sk_buff *skb); |
1078 | 1081 | ||
1079 | /* Use this variant in places where it could be invoked | 1082 | /* Use this variant in places where it could be invoked |
1080 | * either from interrupt or non-interrupt context. | 1083 | * from either hardware interrupt or other context, with hardware interrupts |
1084 | * either disabled or enabled. | ||
1081 | */ | 1085 | */ |
1082 | extern void dev_kfree_skb_any(struct sk_buff *skb); | 1086 | extern void dev_kfree_skb_any(struct sk_buff *skb); |
1083 | 1087 | ||
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 29dd55838e84..b2f05c230f4b 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
@@ -175,7 +175,7 @@ static inline void pnp_set_card_drvdata(struct pnp_card_link *pcard, void *data) | |||
175 | struct pnp_dev { | 175 | struct pnp_dev { |
176 | struct device dev; /* Driver Model device interface */ | 176 | struct device dev; /* Driver Model device interface */ |
177 | u64 dma_mask; | 177 | u64 dma_mask; |
178 | unsigned char number; /* used as an index, must be unique */ | 178 | unsigned int number; /* used as an index, must be unique */ |
179 | int status; | 179 | int status; |
180 | 180 | ||
181 | struct list_head global_list; /* node in global list of devices */ | 181 | struct list_head global_list; /* node in global list of devices */ |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 576a5f77d3bd..1129ee0a7180 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
@@ -341,6 +341,9 @@ static inline void double_spin_unlock(spinlock_t *l1, spinlock_t *l2, | |||
341 | * atomic_dec_and_lock - lock on reaching reference count zero | 341 | * atomic_dec_and_lock - lock on reaching reference count zero |
342 | * @atomic: the atomic counter | 342 | * @atomic: the atomic counter |
343 | * @lock: the spinlock in question | 343 | * @lock: the spinlock in question |
344 | * | ||
345 | * Decrements @atomic by 1. If the result is 0, returns true and locks | ||
346 | * @lock. Returns false for all other cases. | ||
344 | */ | 347 | */ |
345 | extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); | 348 | extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); |
346 | #define atomic_dec_and_lock(atomic, lock) \ | 349 | #define atomic_dec_and_lock(atomic, lock) \ |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 12c18ac1b973..e7d10845b3c1 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -41,6 +41,8 @@ struct virtqueue | |||
41 | * Returns NULL or the "data" token handed to add_buf. | 41 | * Returns NULL or the "data" token handed to add_buf. |
42 | * @disable_cb: disable callbacks | 42 | * @disable_cb: disable callbacks |
43 | * vq: the struct virtqueue we're talking about. | 43 | * vq: the struct virtqueue we're talking about. |
44 | * Note that this is not necessarily synchronous, hence unreliable and only | ||
45 | * useful as an optimization. | ||
44 | * @enable_cb: restart callbacks after disable_cb. | 46 | * @enable_cb: restart callbacks after disable_cb. |
45 | * vq: the struct virtqueue we're talking about. | 47 | * vq: the struct virtqueue we're talking about. |
46 | * This re-enables callbacks; it returns "false" if there are pending | 48 | * This re-enables callbacks; it returns "false" if there are pending |
@@ -48,7 +50,8 @@ struct virtqueue | |||
48 | * checking for more work, and enabling callbacks. | 50 | * checking for more work, and enabling callbacks. |
49 | * | 51 | * |
50 | * Locking rules are straightforward: the driver is responsible for | 52 | * Locking rules are straightforward: the driver is responsible for |
51 | * locking. No two operations may be invoked simultaneously. | 53 | * locking. No two operations may be invoked simultaneously, with the exception |
54 | * of @disable_cb. | ||
52 | * | 55 | * |
53 | * All operations can be called in any context. | 56 | * All operations can be called in any context. |
54 | */ | 57 | */ |
diff --git a/include/net/llc.h b/include/net/llc.h index f5024583fc8b..7940da1606e7 100644 --- a/include/net/llc.h +++ b/include/net/llc.h | |||
@@ -65,7 +65,6 @@ struct llc_sap { | |||
65 | 65 | ||
66 | extern struct list_head llc_sap_list; | 66 | extern struct list_head llc_sap_list; |
67 | extern rwlock_t llc_sap_list_lock; | 67 | extern rwlock_t llc_sap_list_lock; |
68 | extern unsigned char llc_station_mac_sa[ETH_ALEN]; | ||
69 | 68 | ||
70 | extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, | 69 | extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, |
71 | struct packet_type *pt, struct net_device *orig_dev); | 70 | struct packet_type *pt, struct net_device *orig_dev); |
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index 4a8f58b17e43..75b8e2968c9b 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h | |||
@@ -381,7 +381,7 @@ static inline void llc_pdu_init_as_xid_cmd(struct sk_buff *skb, | |||
381 | xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ | 381 | xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ |
382 | xid_info->type = svcs_supported; | 382 | xid_info->type = svcs_supported; |
383 | xid_info->rw = rx_window << 1; /* size of receive window */ | 383 | xid_info->rw = rx_window << 1; /* size of receive window */ |
384 | skb_put(skb, 3); | 384 | skb_put(skb, sizeof(struct llc_xid_info)); |
385 | } | 385 | } |
386 | 386 | ||
387 | /** | 387 | /** |
@@ -406,7 +406,7 @@ static inline void llc_pdu_init_as_xid_rsp(struct sk_buff *skb, | |||
406 | xid_info->fmt_id = LLC_XID_FMT_ID; | 406 | xid_info->fmt_id = LLC_XID_FMT_ID; |
407 | xid_info->type = svcs_supported; | 407 | xid_info->type = svcs_supported; |
408 | xid_info->rw = rx_window << 1; | 408 | xid_info->rw = rx_window << 1; |
409 | skb_put(skb, 3); | 409 | skb_put(skb, sizeof(struct llc_xid_info)); |
410 | } | 410 | } |
411 | 411 | ||
412 | /* LLC Type 2 FRMR response information field format */ | 412 | /* LLC Type 2 FRMR response information field format */ |
diff --git a/include/net/llc_sap.h b/include/net/llc_sap.h index 2c56dbece729..ed25bec2f648 100644 --- a/include/net/llc_sap.h +++ b/include/net/llc_sap.h | |||
@@ -1,5 +1,8 @@ | |||
1 | #ifndef LLC_SAP_H | 1 | #ifndef LLC_SAP_H |
2 | #define LLC_SAP_H | 2 | #define LLC_SAP_H |
3 | |||
4 | #include <asm/types.h> | ||
5 | |||
3 | /* | 6 | /* |
4 | * Copyright (c) 1997 by Procom Technology,Inc. | 7 | * Copyright (c) 1997 by Procom Technology,Inc. |
5 | * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 8 | * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
@@ -19,8 +22,8 @@ struct sock; | |||
19 | extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); | 22 | extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); |
20 | extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb, | 23 | extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb, |
21 | unsigned char prim); | 24 | unsigned char prim); |
22 | extern struct sk_buff *llc_alloc_frame(struct sock *sk, | 25 | extern struct sk_buff *llc_alloc_frame(struct sock *sk, struct net_device *dev, |
23 | struct net_device *dev); | 26 | u8 type, u32 data_size); |
24 | 27 | ||
25 | extern void llc_build_and_send_test_pkt(struct llc_sap *sap, | 28 | extern void llc_build_and_send_test_pkt(struct llc_sap *sap, |
26 | struct sk_buff *skb, | 29 | struct sk_buff *skb, |
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index ebbfb509822e..64a5f0120b52 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h | |||
@@ -218,6 +218,10 @@ extern unsigned long neigh_rand_reach_time(unsigned long base); | |||
218 | extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, | 218 | extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, |
219 | struct sk_buff *skb); | 219 | struct sk_buff *skb); |
220 | extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); | 220 | extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); |
221 | extern struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl, | ||
222 | struct net *net, | ||
223 | const void *key, | ||
224 | struct net_device *dev); | ||
221 | extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); | 225 | extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); |
222 | 226 | ||
223 | extern void neigh_app_ns(struct neighbour *n); | 227 | extern void neigh_app_ns(struct neighbour *n); |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 7de4ea3a04d9..4fd3eb2f8ec2 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -752,6 +752,8 @@ static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp) | |||
752 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; | 752 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; |
753 | } | 753 | } |
754 | 754 | ||
755 | extern int tcp_limit_reno_sacked(struct tcp_sock *tp); | ||
756 | |||
755 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. | 757 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. |
756 | * The exception is rate halving phase, when cwnd is decreasing towards | 758 | * The exception is rate halving phase, when cwnd is decreasing towards |
757 | * ssthresh. | 759 | * ssthresh. |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 619c53bc3cd2..0d255ae008b6 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -204,6 +204,7 @@ struct xfrm_state | |||
204 | * transformer. */ | 204 | * transformer. */ |
205 | const struct xfrm_type *type; | 205 | const struct xfrm_type *type; |
206 | struct xfrm_mode *inner_mode; | 206 | struct xfrm_mode *inner_mode; |
207 | struct xfrm_mode *inner_mode_iaf; | ||
207 | struct xfrm_mode *outer_mode; | 208 | struct xfrm_mode *outer_mode; |
208 | 209 | ||
209 | /* Security context */ | 210 | /* Security context */ |
@@ -387,6 +388,27 @@ enum { | |||
387 | extern int xfrm_register_mode(struct xfrm_mode *mode, int family); | 388 | extern int xfrm_register_mode(struct xfrm_mode *mode, int family); |
388 | extern int xfrm_unregister_mode(struct xfrm_mode *mode, int family); | 389 | extern int xfrm_unregister_mode(struct xfrm_mode *mode, int family); |
389 | 390 | ||
391 | static inline int xfrm_af2proto(unsigned int family) | ||
392 | { | ||
393 | switch(family) { | ||
394 | case AF_INET: | ||
395 | return IPPROTO_IPIP; | ||
396 | case AF_INET6: | ||
397 | return IPPROTO_IPV6; | ||
398 | default: | ||
399 | return 0; | ||
400 | } | ||
401 | } | ||
402 | |||
403 | static inline struct xfrm_mode *xfrm_ip2inner_mode(struct xfrm_state *x, int ipproto) | ||
404 | { | ||
405 | if ((ipproto == IPPROTO_IPIP && x->props.family == AF_INET) || | ||
406 | (ipproto == IPPROTO_IPV6 && x->props.family == AF_INET6)) | ||
407 | return x->inner_mode; | ||
408 | else | ||
409 | return x->inner_mode_iaf; | ||
410 | } | ||
411 | |||
390 | struct xfrm_tmpl | 412 | struct xfrm_tmpl |
391 | { | 413 | { |
392 | /* id in template is interpreted as: | 414 | /* id in template is interpreted as: |
@@ -530,6 +552,9 @@ struct xfrm_mode_skb_cb { | |||
530 | __be16 id; | 552 | __be16 id; |
531 | __be16 frag_off; | 553 | __be16 frag_off; |
532 | 554 | ||
555 | /* IP header length (excluding options or extension headers). */ | ||
556 | u8 ihl; | ||
557 | |||
533 | /* TOS for IPv4, class for IPv6. */ | 558 | /* TOS for IPv4, class for IPv6. */ |
534 | u8 tos; | 559 | u8 tos; |
535 | 560 | ||
@@ -539,6 +564,9 @@ struct xfrm_mode_skb_cb { | |||
539 | /* Protocol for IPv4, NH for IPv6. */ | 564 | /* Protocol for IPv4, NH for IPv6. */ |
540 | u8 protocol; | 565 | u8 protocol; |
541 | 566 | ||
567 | /* Option length for IPv4, zero for IPv6. */ | ||
568 | u8 optlen; | ||
569 | |||
542 | /* Used by IPv6 only, zero for IPv4. */ | 570 | /* Used by IPv6 only, zero for IPv4. */ |
543 | u8 flow_lbl[3]; | 571 | u8 flow_lbl[3]; |
544 | }; | 572 | }; |
@@ -1253,6 +1281,7 @@ extern int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, | |||
1253 | extern int xfrm_input_resume(struct sk_buff *skb, int nexthdr); | 1281 | extern int xfrm_input_resume(struct sk_buff *skb, int nexthdr); |
1254 | extern int xfrm_output_resume(struct sk_buff *skb, int err); | 1282 | extern int xfrm_output_resume(struct sk_buff *skb, int err); |
1255 | extern int xfrm_output(struct sk_buff *skb); | 1283 | extern int xfrm_output(struct sk_buff *skb); |
1284 | extern int xfrm_inner_extract_output(struct xfrm_state *x, struct sk_buff *skb); | ||
1256 | extern int xfrm4_extract_header(struct sk_buff *skb); | 1285 | extern int xfrm4_extract_header(struct sk_buff *skb); |
1257 | extern int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb); | 1286 | extern int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb); |
1258 | extern int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi, | 1287 | extern int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi, |
diff --git a/kernel/audit.c b/kernel/audit.c index be55cb503633..b782b046543d 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -1269,8 +1269,8 @@ static void audit_log_n_string(struct audit_buffer *ab, size_t slen, | |||
1269 | 1269 | ||
1270 | /** | 1270 | /** |
1271 | * audit_string_contains_control - does a string need to be logged in hex | 1271 | * audit_string_contains_control - does a string need to be logged in hex |
1272 | * @string - string to be checked | 1272 | * @string: string to be checked |
1273 | * @len - max length of the string to check | 1273 | * @len: max length of the string to check |
1274 | */ | 1274 | */ |
1275 | int audit_string_contains_control(const char *string, size_t len) | 1275 | int audit_string_contains_control(const char *string, size_t len) |
1276 | { | 1276 | { |
@@ -1285,7 +1285,7 @@ int audit_string_contains_control(const char *string, size_t len) | |||
1285 | /** | 1285 | /** |
1286 | * audit_log_n_untrustedstring - log a string that may contain random characters | 1286 | * audit_log_n_untrustedstring - log a string that may contain random characters |
1287 | * @ab: audit_buffer | 1287 | * @ab: audit_buffer |
1288 | * @len: lenth of string (not including trailing null) | 1288 | * @len: length of string (not including trailing null) |
1289 | * @string: string to be logged | 1289 | * @string: string to be logged |
1290 | * | 1290 | * |
1291 | * This code will escape a string that is passed to it if the string | 1291 | * This code will escape a string that is passed to it if the string |
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index e9c2fb01e89b..2727f9238359 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
@@ -782,7 +782,14 @@ static int parse_cgroupfs_options(char *data, | |||
782 | if (!*token) | 782 | if (!*token) |
783 | return -EINVAL; | 783 | return -EINVAL; |
784 | if (!strcmp(token, "all")) { | 784 | if (!strcmp(token, "all")) { |
785 | opts->subsys_bits = (1 << CGROUP_SUBSYS_COUNT) - 1; | 785 | /* Add all non-disabled subsystems */ |
786 | int i; | ||
787 | opts->subsys_bits = 0; | ||
788 | for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) { | ||
789 | struct cgroup_subsys *ss = subsys[i]; | ||
790 | if (!ss->disabled) | ||
791 | opts->subsys_bits |= 1ul << i; | ||
792 | } | ||
786 | } else if (!strcmp(token, "noprefix")) { | 793 | } else if (!strcmp(token, "noprefix")) { |
787 | set_bit(ROOT_NOPREFIX, &opts->flags); | 794 | set_bit(ROOT_NOPREFIX, &opts->flags); |
788 | } else if (!strncmp(token, "release_agent=", 14)) { | 795 | } else if (!strncmp(token, "release_agent=", 14)) { |
@@ -800,7 +807,8 @@ static int parse_cgroupfs_options(char *data, | |||
800 | for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) { | 807 | for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) { |
801 | ss = subsys[i]; | 808 | ss = subsys[i]; |
802 | if (!strcmp(token, ss->name)) { | 809 | if (!strcmp(token, ss->name)) { |
803 | set_bit(i, &opts->subsys_bits); | 810 | if (!ss->disabled) |
811 | set_bit(i, &opts->subsys_bits); | ||
804 | break; | 812 | break; |
805 | } | 813 | } |
806 | } | 814 | } |
@@ -2082,7 +2090,7 @@ static int cgroup_tasks_open(struct inode *unused, struct file *file) | |||
2082 | 2090 | ||
2083 | kfree(pidarray); | 2091 | kfree(pidarray); |
2084 | } else { | 2092 | } else { |
2085 | ctr->buf = 0; | 2093 | ctr->buf = NULL; |
2086 | ctr->bufsz = 0; | 2094 | ctr->bufsz = 0; |
2087 | } | 2095 | } |
2088 | file->private_data = ctr; | 2096 | file->private_data = ctr; |
@@ -2561,6 +2569,7 @@ static int proc_cgroup_show(struct seq_file *m, void *v) | |||
2561 | /* Skip this hierarchy if it has no active subsystems */ | 2569 | /* Skip this hierarchy if it has no active subsystems */ |
2562 | if (!root->actual_subsys_bits) | 2570 | if (!root->actual_subsys_bits) |
2563 | continue; | 2571 | continue; |
2572 | seq_printf(m, "%lu:", root->subsys_bits); | ||
2564 | for_each_subsys(root, ss) | 2573 | for_each_subsys(root, ss) |
2565 | seq_printf(m, "%s%s", count++ ? "," : "", ss->name); | 2574 | seq_printf(m, "%s%s", count++ ? "," : "", ss->name); |
2566 | seq_putc(m, ':'); | 2575 | seq_putc(m, ':'); |
@@ -2600,13 +2609,13 @@ static int proc_cgroupstats_show(struct seq_file *m, void *v) | |||
2600 | { | 2609 | { |
2601 | int i; | 2610 | int i; |
2602 | 2611 | ||
2603 | seq_puts(m, "#subsys_name\thierarchy\tnum_cgroups\n"); | 2612 | seq_puts(m, "#subsys_name\thierarchy\tnum_cgroups\tenabled\n"); |
2604 | mutex_lock(&cgroup_mutex); | 2613 | mutex_lock(&cgroup_mutex); |
2605 | for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) { | 2614 | for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) { |
2606 | struct cgroup_subsys *ss = subsys[i]; | 2615 | struct cgroup_subsys *ss = subsys[i]; |
2607 | seq_printf(m, "%s\t%lu\t%d\n", | 2616 | seq_printf(m, "%s\t%lu\t%d\t%d\n", |
2608 | ss->name, ss->root->subsys_bits, | 2617 | ss->name, ss->root->subsys_bits, |
2609 | ss->root->number_of_cgroups); | 2618 | ss->root->number_of_cgroups, !ss->disabled); |
2610 | } | 2619 | } |
2611 | mutex_unlock(&cgroup_mutex); | 2620 | mutex_unlock(&cgroup_mutex); |
2612 | return 0; | 2621 | return 0; |
@@ -2614,7 +2623,7 @@ static int proc_cgroupstats_show(struct seq_file *m, void *v) | |||
2614 | 2623 | ||
2615 | static int cgroupstats_open(struct inode *inode, struct file *file) | 2624 | static int cgroupstats_open(struct inode *inode, struct file *file) |
2616 | { | 2625 | { |
2617 | return single_open(file, proc_cgroupstats_show, 0); | 2626 | return single_open(file, proc_cgroupstats_show, NULL); |
2618 | } | 2627 | } |
2619 | 2628 | ||
2620 | static struct file_operations proc_cgroupstats_operations = { | 2629 | static struct file_operations proc_cgroupstats_operations = { |
@@ -3010,3 +3019,27 @@ static void cgroup_release_agent(struct work_struct *work) | |||
3010 | spin_unlock(&release_list_lock); | 3019 | spin_unlock(&release_list_lock); |
3011 | mutex_unlock(&cgroup_mutex); | 3020 | mutex_unlock(&cgroup_mutex); |
3012 | } | 3021 | } |
3022 | |||
3023 | static int __init cgroup_disable(char *str) | ||
3024 | { | ||
3025 | int i; | ||
3026 | char *token; | ||
3027 | |||
3028 | while ((token = strsep(&str, ",")) != NULL) { | ||
3029 | if (!*token) | ||
3030 | continue; | ||
3031 | |||
3032 | for (i = 0; i < CGROUP_SUBSYS_COUNT; i++) { | ||
3033 | struct cgroup_subsys *ss = subsys[i]; | ||
3034 | |||
3035 | if (!strcmp(token, ss->name)) { | ||
3036 | ss->disabled = 1; | ||
3037 | printk(KERN_INFO "Disabling %s control group" | ||
3038 | " subsystem\n", ss->name); | ||
3039 | break; | ||
3040 | } | ||
3041 | } | ||
3042 | } | ||
3043 | return 1; | ||
3044 | } | ||
3045 | __setup("cgroup_disable=", cgroup_disable); | ||
diff --git a/kernel/exit.c b/kernel/exit.c index 53872bf993fa..073005b1cfb2 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -1608,7 +1608,7 @@ asmlinkage long sys_waitid(int which, pid_t upid, | |||
1608 | put_pid(pid); | 1608 | put_pid(pid); |
1609 | 1609 | ||
1610 | /* avoid REGPARM breakage on x86: */ | 1610 | /* avoid REGPARM breakage on x86: */ |
1611 | prevent_tail_call(ret); | 1611 | asmlinkage_protect(5, ret, which, upid, infop, options, ru); |
1612 | return ret; | 1612 | return ret; |
1613 | } | 1613 | } |
1614 | 1614 | ||
@@ -1640,7 +1640,7 @@ asmlinkage long sys_wait4(pid_t upid, int __user *stat_addr, | |||
1640 | put_pid(pid); | 1640 | put_pid(pid); |
1641 | 1641 | ||
1642 | /* avoid REGPARM breakage on x86: */ | 1642 | /* avoid REGPARM breakage on x86: */ |
1643 | prevent_tail_call(ret); | 1643 | asmlinkage_protect(4, ret, upid, stat_addr, options, ru); |
1644 | return ret; | 1644 | return ret; |
1645 | } | 1645 | } |
1646 | 1646 | ||
diff --git a/kernel/fork.c b/kernel/fork.c index dd249c37b3a3..9c042f901570 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -394,7 +394,6 @@ void __mmdrop(struct mm_struct *mm) | |||
394 | { | 394 | { |
395 | BUG_ON(mm == &init_mm); | 395 | BUG_ON(mm == &init_mm); |
396 | mm_free_pgd(mm); | 396 | mm_free_pgd(mm); |
397 | mm_free_cgroup(mm); | ||
398 | destroy_context(mm); | 397 | destroy_context(mm); |
399 | free_mm(mm); | 398 | free_mm(mm); |
400 | } | 399 | } |
@@ -416,6 +415,7 @@ void mmput(struct mm_struct *mm) | |||
416 | spin_unlock(&mmlist_lock); | 415 | spin_unlock(&mmlist_lock); |
417 | } | 416 | } |
418 | put_swap_token(mm); | 417 | put_swap_token(mm); |
418 | mm_free_cgroup(mm); | ||
419 | mmdrop(mm); | 419 | mmdrop(mm); |
420 | } | 420 | } |
421 | } | 421 | } |
diff --git a/kernel/futex.c b/kernel/futex.c index 06968cd79200..e43945e995f5 100644 --- a/kernel/futex.c +++ b/kernel/futex.c | |||
@@ -281,7 +281,7 @@ static int get_futex_key(u32 __user *uaddr, struct rw_semaphore *fshared, | |||
281 | */ | 281 | */ |
282 | static void get_futex_key_refs(union futex_key *key) | 282 | static void get_futex_key_refs(union futex_key *key) |
283 | { | 283 | { |
284 | if (key->both.ptr == 0) | 284 | if (key->both.ptr == NULL) |
285 | return; | 285 | return; |
286 | switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) { | 286 | switch (key->both.offset & (FUT_OFF_INODE|FUT_OFF_MMSHARED)) { |
287 | case FUT_OFF_INODE: | 287 | case FUT_OFF_INODE: |
@@ -2158,7 +2158,7 @@ static struct file_system_type futex_fs_type = { | |||
2158 | .kill_sb = kill_anon_super, | 2158 | .kill_sb = kill_anon_super, |
2159 | }; | 2159 | }; |
2160 | 2160 | ||
2161 | static int __init init(void) | 2161 | static int __init futex_init(void) |
2162 | { | 2162 | { |
2163 | u32 curval; | 2163 | u32 curval; |
2164 | int i; | 2164 | int i; |
@@ -2194,4 +2194,4 @@ static int __init init(void) | |||
2194 | 2194 | ||
2195 | return 0; | 2195 | return 0; |
2196 | } | 2196 | } |
2197 | __initcall(init); | 2197 | __initcall(futex_init); |
diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c index ff90f049f8f6..04ac3a9e42cf 100644 --- a/kernel/futex_compat.c +++ b/kernel/futex_compat.c | |||
@@ -30,7 +30,7 @@ fetch_robust_entry(compat_uptr_t *uentry, struct robust_list __user **entry, | |||
30 | return 0; | 30 | return 0; |
31 | } | 31 | } |
32 | 32 | ||
33 | static void __user *futex_uaddr(struct robust_list *entry, | 33 | static void __user *futex_uaddr(struct robust_list __user *entry, |
34 | compat_long_t futex_offset) | 34 | compat_long_t futex_offset) |
35 | { | 35 | { |
36 | compat_uptr_t base = ptr_to_compat(entry); | 36 | compat_uptr_t base = ptr_to_compat(entry); |
diff --git a/kernel/marker.c b/kernel/marker.c index 041c33e3e95c..005b95954593 100644 --- a/kernel/marker.c +++ b/kernel/marker.c | |||
@@ -671,6 +671,9 @@ int marker_probe_register(const char *name, const char *format, | |||
671 | entry->rcu_pending = 1; | 671 | entry->rcu_pending = 1; |
672 | /* write rcu_pending before calling the RCU callback */ | 672 | /* write rcu_pending before calling the RCU callback */ |
673 | smp_wmb(); | 673 | smp_wmb(); |
674 | #ifdef CONFIG_PREEMPT_RCU | ||
675 | synchronize_sched(); /* Until we have the call_rcu_sched() */ | ||
676 | #endif | ||
674 | call_rcu(&entry->rcu, free_old_closure); | 677 | call_rcu(&entry->rcu, free_old_closure); |
675 | end: | 678 | end: |
676 | mutex_unlock(&markers_mutex); | 679 | mutex_unlock(&markers_mutex); |
@@ -714,6 +717,9 @@ int marker_probe_unregister(const char *name, | |||
714 | entry->rcu_pending = 1; | 717 | entry->rcu_pending = 1; |
715 | /* write rcu_pending before calling the RCU callback */ | 718 | /* write rcu_pending before calling the RCU callback */ |
716 | smp_wmb(); | 719 | smp_wmb(); |
720 | #ifdef CONFIG_PREEMPT_RCU | ||
721 | synchronize_sched(); /* Until we have the call_rcu_sched() */ | ||
722 | #endif | ||
717 | call_rcu(&entry->rcu, free_old_closure); | 723 | call_rcu(&entry->rcu, free_old_closure); |
718 | remove_marker(name); /* Ignore busy error message */ | 724 | remove_marker(name); /* Ignore busy error message */ |
719 | ret = 0; | 725 | ret = 0; |
@@ -792,6 +798,9 @@ int marker_probe_unregister_private_data(marker_probe_func *probe, | |||
792 | entry->rcu_pending = 1; | 798 | entry->rcu_pending = 1; |
793 | /* write rcu_pending before calling the RCU callback */ | 799 | /* write rcu_pending before calling the RCU callback */ |
794 | smp_wmb(); | 800 | smp_wmb(); |
801 | #ifdef CONFIG_PREEMPT_RCU | ||
802 | synchronize_sched(); /* Until we have the call_rcu_sched() */ | ||
803 | #endif | ||
795 | call_rcu(&entry->rcu, free_old_closure); | 804 | call_rcu(&entry->rcu, free_old_closure); |
796 | remove_marker(entry->name); /* Ignore busy error message */ | 805 | remove_marker(entry->name); /* Ignore busy error message */ |
797 | end: | 806 | end: |
diff --git a/kernel/uid16.c b/kernel/uid16.c index dd308ba4e03b..3e41c1673e2f 100644 --- a/kernel/uid16.c +++ b/kernel/uid16.c | |||
@@ -21,7 +21,7 @@ asmlinkage long sys_chown16(const char __user * filename, old_uid_t user, old_gi | |||
21 | { | 21 | { |
22 | long ret = sys_chown(filename, low2highuid(user), low2highgid(group)); | 22 | long ret = sys_chown(filename, low2highuid(user), low2highgid(group)); |
23 | /* avoid REGPARM breakage on x86: */ | 23 | /* avoid REGPARM breakage on x86: */ |
24 | prevent_tail_call(ret); | 24 | asmlinkage_protect(3, ret, filename, user, group); |
25 | return ret; | 25 | return ret; |
26 | } | 26 | } |
27 | 27 | ||
@@ -29,7 +29,7 @@ asmlinkage long sys_lchown16(const char __user * filename, old_uid_t user, old_g | |||
29 | { | 29 | { |
30 | long ret = sys_lchown(filename, low2highuid(user), low2highgid(group)); | 30 | long ret = sys_lchown(filename, low2highuid(user), low2highgid(group)); |
31 | /* avoid REGPARM breakage on x86: */ | 31 | /* avoid REGPARM breakage on x86: */ |
32 | prevent_tail_call(ret); | 32 | asmlinkage_protect(3, ret, filename, user, group); |
33 | return ret; | 33 | return ret; |
34 | } | 34 | } |
35 | 35 | ||
@@ -37,7 +37,7 @@ asmlinkage long sys_fchown16(unsigned int fd, old_uid_t user, old_gid_t group) | |||
37 | { | 37 | { |
38 | long ret = sys_fchown(fd, low2highuid(user), low2highgid(group)); | 38 | long ret = sys_fchown(fd, low2highuid(user), low2highgid(group)); |
39 | /* avoid REGPARM breakage on x86: */ | 39 | /* avoid REGPARM breakage on x86: */ |
40 | prevent_tail_call(ret); | 40 | asmlinkage_protect(3, ret, fd, user, group); |
41 | return ret; | 41 | return ret; |
42 | } | 42 | } |
43 | 43 | ||
@@ -45,7 +45,7 @@ asmlinkage long sys_setregid16(old_gid_t rgid, old_gid_t egid) | |||
45 | { | 45 | { |
46 | long ret = sys_setregid(low2highgid(rgid), low2highgid(egid)); | 46 | long ret = sys_setregid(low2highgid(rgid), low2highgid(egid)); |
47 | /* avoid REGPARM breakage on x86: */ | 47 | /* avoid REGPARM breakage on x86: */ |
48 | prevent_tail_call(ret); | 48 | asmlinkage_protect(2, ret, rgid, egid); |
49 | return ret; | 49 | return ret; |
50 | } | 50 | } |
51 | 51 | ||
@@ -53,7 +53,7 @@ asmlinkage long sys_setgid16(old_gid_t gid) | |||
53 | { | 53 | { |
54 | long ret = sys_setgid(low2highgid(gid)); | 54 | long ret = sys_setgid(low2highgid(gid)); |
55 | /* avoid REGPARM breakage on x86: */ | 55 | /* avoid REGPARM breakage on x86: */ |
56 | prevent_tail_call(ret); | 56 | asmlinkage_protect(1, ret, gid); |
57 | return ret; | 57 | return ret; |
58 | } | 58 | } |
59 | 59 | ||
@@ -61,7 +61,7 @@ asmlinkage long sys_setreuid16(old_uid_t ruid, old_uid_t euid) | |||
61 | { | 61 | { |
62 | long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid)); | 62 | long ret = sys_setreuid(low2highuid(ruid), low2highuid(euid)); |
63 | /* avoid REGPARM breakage on x86: */ | 63 | /* avoid REGPARM breakage on x86: */ |
64 | prevent_tail_call(ret); | 64 | asmlinkage_protect(2, ret, ruid, euid); |
65 | return ret; | 65 | return ret; |
66 | } | 66 | } |
67 | 67 | ||
@@ -69,7 +69,7 @@ asmlinkage long sys_setuid16(old_uid_t uid) | |||
69 | { | 69 | { |
70 | long ret = sys_setuid(low2highuid(uid)); | 70 | long ret = sys_setuid(low2highuid(uid)); |
71 | /* avoid REGPARM breakage on x86: */ | 71 | /* avoid REGPARM breakage on x86: */ |
72 | prevent_tail_call(ret); | 72 | asmlinkage_protect(1, ret, uid); |
73 | return ret; | 73 | return ret; |
74 | } | 74 | } |
75 | 75 | ||
@@ -78,7 +78,7 @@ asmlinkage long sys_setresuid16(old_uid_t ruid, old_uid_t euid, old_uid_t suid) | |||
78 | long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid), | 78 | long ret = sys_setresuid(low2highuid(ruid), low2highuid(euid), |
79 | low2highuid(suid)); | 79 | low2highuid(suid)); |
80 | /* avoid REGPARM breakage on x86: */ | 80 | /* avoid REGPARM breakage on x86: */ |
81 | prevent_tail_call(ret); | 81 | asmlinkage_protect(3, ret, ruid, euid, suid); |
82 | return ret; | 82 | return ret; |
83 | } | 83 | } |
84 | 84 | ||
@@ -98,7 +98,7 @@ asmlinkage long sys_setresgid16(old_gid_t rgid, old_gid_t egid, old_gid_t sgid) | |||
98 | long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid), | 98 | long ret = sys_setresgid(low2highgid(rgid), low2highgid(egid), |
99 | low2highgid(sgid)); | 99 | low2highgid(sgid)); |
100 | /* avoid REGPARM breakage on x86: */ | 100 | /* avoid REGPARM breakage on x86: */ |
101 | prevent_tail_call(ret); | 101 | asmlinkage_protect(3, ret, rgid, egid, sgid); |
102 | return ret; | 102 | return ret; |
103 | } | 103 | } |
104 | 104 | ||
@@ -117,7 +117,7 @@ asmlinkage long sys_setfsuid16(old_uid_t uid) | |||
117 | { | 117 | { |
118 | long ret = sys_setfsuid(low2highuid(uid)); | 118 | long ret = sys_setfsuid(low2highuid(uid)); |
119 | /* avoid REGPARM breakage on x86: */ | 119 | /* avoid REGPARM breakage on x86: */ |
120 | prevent_tail_call(ret); | 120 | asmlinkage_protect(1, ret, uid); |
121 | return ret; | 121 | return ret; |
122 | } | 122 | } |
123 | 123 | ||
@@ -125,7 +125,7 @@ asmlinkage long sys_setfsgid16(old_gid_t gid) | |||
125 | { | 125 | { |
126 | long ret = sys_setfsgid(low2highgid(gid)); | 126 | long ret = sys_setfsgid(low2highgid(gid)); |
127 | /* avoid REGPARM breakage on x86: */ | 127 | /* avoid REGPARM breakage on x86: */ |
128 | prevent_tail_call(ret); | 128 | asmlinkage_protect(1, ret, gid); |
129 | return ret; | 129 | return ret; |
130 | } | 130 | } |
131 | 131 | ||
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index 5a402e2982af..5b6d7f6956b9 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c | |||
@@ -55,7 +55,7 @@ int kobject_action_type(const char *buf, size_t count, | |||
55 | enum kobject_action action; | 55 | enum kobject_action action; |
56 | int ret = -EINVAL; | 56 | int ret = -EINVAL; |
57 | 57 | ||
58 | if (count && buf[count-1] == '\n') | 58 | if (count && (buf[count-1] == '\n' || buf[count-1] == '\0')) |
59 | count--; | 59 | count--; |
60 | 60 | ||
61 | if (!count) | 61 | if (!count) |
diff --git a/lib/lzo/lzo1x_decompress.c b/lib/lzo/lzo1x_decompress.c index 9dc7056e5520..77f0f9b775a9 100644 --- a/lib/lzo/lzo1x_decompress.c +++ b/lib/lzo/lzo1x_decompress.c | |||
@@ -158,7 +158,7 @@ match: | |||
158 | t += 7 + *ip++; | 158 | t += 7 + *ip++; |
159 | } | 159 | } |
160 | m_pos -= le16_to_cpu(get_unaligned( | 160 | m_pos -= le16_to_cpu(get_unaligned( |
161 | (const unsigned short *)ip) >> 2); | 161 | (const unsigned short *)ip)) >> 2; |
162 | ip += 2; | 162 | ip += 2; |
163 | if (m_pos == op) | 163 | if (m_pos == op) |
164 | goto eof_found; | 164 | goto eof_found; |
diff --git a/lib/random32.c b/lib/random32.c index ec7f81d3fb18..ca87d86992bd 100644 --- a/lib/random32.c +++ b/lib/random32.c | |||
@@ -97,13 +97,18 @@ EXPORT_SYMBOL(random32); | |||
97 | * @seed: seed value | 97 | * @seed: seed value |
98 | * | 98 | * |
99 | * Add some additional seeding to the random32() pool. | 99 | * Add some additional seeding to the random32() pool. |
100 | * Note: this pool is per cpu so it only affects current CPU. | ||
101 | */ | 100 | */ |
102 | void srandom32(u32 entropy) | 101 | void srandom32(u32 entropy) |
103 | { | 102 | { |
104 | struct rnd_state *state = &get_cpu_var(net_rand_state); | 103 | int i; |
105 | __set_random32(state, state->s1 ^ entropy); | 104 | /* |
106 | put_cpu_var(state); | 105 | * No locking on the CPUs, but then somewhat random results are, well, |
106 | * expected. | ||
107 | */ | ||
108 | for_each_possible_cpu (i) { | ||
109 | struct rnd_state *state = &per_cpu(net_rand_state, i); | ||
110 | __set_random32(state, state->s1 ^ entropy); | ||
111 | } | ||
107 | } | 112 | } |
108 | EXPORT_SYMBOL(srandom32); | 113 | EXPORT_SYMBOL(srandom32); |
109 | 114 | ||
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 74c1b6b0b37b..51c9e2c01640 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
@@ -401,12 +401,20 @@ static void return_unused_surplus_pages(unsigned long unused_resv_pages) | |||
401 | struct page *page; | 401 | struct page *page; |
402 | unsigned long nr_pages; | 402 | unsigned long nr_pages; |
403 | 403 | ||
404 | /* | ||
405 | * We want to release as many surplus pages as possible, spread | ||
406 | * evenly across all nodes. Iterate across all nodes until we | ||
407 | * can no longer free unreserved surplus pages. This occurs when | ||
408 | * the nodes with surplus pages have no free pages. | ||
409 | */ | ||
410 | unsigned long remaining_iterations = num_online_nodes(); | ||
411 | |||
404 | /* Uncommit the reservation */ | 412 | /* Uncommit the reservation */ |
405 | resv_huge_pages -= unused_resv_pages; | 413 | resv_huge_pages -= unused_resv_pages; |
406 | 414 | ||
407 | nr_pages = min(unused_resv_pages, surplus_huge_pages); | 415 | nr_pages = min(unused_resv_pages, surplus_huge_pages); |
408 | 416 | ||
409 | while (nr_pages) { | 417 | while (remaining_iterations-- && nr_pages) { |
410 | nid = next_node(nid, node_online_map); | 418 | nid = next_node(nid, node_online_map); |
411 | if (nid == MAX_NUMNODES) | 419 | if (nid == MAX_NUMNODES) |
412 | nid = first_node(node_online_map); | 420 | nid = first_node(node_online_map); |
@@ -424,6 +432,7 @@ static void return_unused_surplus_pages(unsigned long unused_resv_pages) | |||
424 | surplus_huge_pages--; | 432 | surplus_huge_pages--; |
425 | surplus_huge_pages_node[nid]--; | 433 | surplus_huge_pages_node[nid]--; |
426 | nr_pages--; | 434 | nr_pages--; |
435 | remaining_iterations = num_online_nodes(); | ||
427 | } | 436 | } |
428 | } | 437 | } |
429 | } | 438 | } |
@@ -671,9 +680,11 @@ int hugetlb_report_node_meminfo(int nid, char *buf) | |||
671 | { | 680 | { |
672 | return sprintf(buf, | 681 | return sprintf(buf, |
673 | "Node %d HugePages_Total: %5u\n" | 682 | "Node %d HugePages_Total: %5u\n" |
674 | "Node %d HugePages_Free: %5u\n", | 683 | "Node %d HugePages_Free: %5u\n" |
684 | "Node %d HugePages_Surp: %5u\n", | ||
675 | nid, nr_huge_pages_node[nid], | 685 | nid, nr_huge_pages_node[nid], |
676 | nid, free_huge_pages_node[nid]); | 686 | nid, free_huge_pages_node[nid], |
687 | nid, surplus_huge_pages_node[nid]); | ||
677 | } | 688 | } |
678 | 689 | ||
679 | /* Return the number pages of memory we physically have, in PAGE_SIZE units. */ | 690 | /* Return the number pages of memory we physically have, in PAGE_SIZE units. */ |
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 9b648bd63451..2e0bfc93484b 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -533,6 +533,9 @@ static int mem_cgroup_charge_common(struct page *page, struct mm_struct *mm, | |||
533 | unsigned long nr_retries = MEM_CGROUP_RECLAIM_RETRIES; | 533 | unsigned long nr_retries = MEM_CGROUP_RECLAIM_RETRIES; |
534 | struct mem_cgroup_per_zone *mz; | 534 | struct mem_cgroup_per_zone *mz; |
535 | 535 | ||
536 | if (mem_cgroup_subsys.disabled) | ||
537 | return 0; | ||
538 | |||
536 | /* | 539 | /* |
537 | * Should page_cgroup's go to their own slab? | 540 | * Should page_cgroup's go to their own slab? |
538 | * One could optimize the performance of the charging routine | 541 | * One could optimize the performance of the charging routine |
@@ -665,6 +668,9 @@ void mem_cgroup_uncharge_page(struct page *page) | |||
665 | struct mem_cgroup_per_zone *mz; | 668 | struct mem_cgroup_per_zone *mz; |
666 | unsigned long flags; | 669 | unsigned long flags; |
667 | 670 | ||
671 | if (mem_cgroup_subsys.disabled) | ||
672 | return; | ||
673 | |||
668 | /* | 674 | /* |
669 | * Check if our page_cgroup is valid | 675 | * Check if our page_cgroup is valid |
670 | */ | 676 | */ |
@@ -705,6 +711,9 @@ int mem_cgroup_prepare_migration(struct page *page) | |||
705 | { | 711 | { |
706 | struct page_cgroup *pc; | 712 | struct page_cgroup *pc; |
707 | 713 | ||
714 | if (mem_cgroup_subsys.disabled) | ||
715 | return 0; | ||
716 | |||
708 | lock_page_cgroup(page); | 717 | lock_page_cgroup(page); |
709 | pc = page_get_page_cgroup(page); | 718 | pc = page_get_page_cgroup(page); |
710 | if (pc) | 719 | if (pc) |
@@ -803,6 +812,9 @@ static int mem_cgroup_force_empty(struct mem_cgroup *mem) | |||
803 | int ret = -EBUSY; | 812 | int ret = -EBUSY; |
804 | int node, zid; | 813 | int node, zid; |
805 | 814 | ||
815 | if (mem_cgroup_subsys.disabled) | ||
816 | return 0; | ||
817 | |||
806 | css_get(&mem->css); | 818 | css_get(&mem->css); |
807 | /* | 819 | /* |
808 | * page reclaim code (kswapd etc..) will move pages between | 820 | * page reclaim code (kswapd etc..) will move pages between |
@@ -966,7 +978,7 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) | |||
966 | { | 978 | { |
967 | struct mem_cgroup_per_node *pn; | 979 | struct mem_cgroup_per_node *pn; |
968 | struct mem_cgroup_per_zone *mz; | 980 | struct mem_cgroup_per_zone *mz; |
969 | int zone; | 981 | int zone, tmp = node; |
970 | /* | 982 | /* |
971 | * This routine is called against possible nodes. | 983 | * This routine is called against possible nodes. |
972 | * But it's BUG to call kmalloc() against offline node. | 984 | * But it's BUG to call kmalloc() against offline node. |
@@ -975,10 +987,9 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *mem, int node) | |||
975 | * never be onlined. It's better to use memory hotplug callback | 987 | * never be onlined. It's better to use memory hotplug callback |
976 | * function. | 988 | * function. |
977 | */ | 989 | */ |
978 | if (node_state(node, N_HIGH_MEMORY)) | 990 | if (!node_state(node, N_NORMAL_MEMORY)) |
979 | pn = kmalloc_node(sizeof(*pn), GFP_KERNEL, node); | 991 | tmp = -1; |
980 | else | 992 | pn = kmalloc_node(sizeof(*pn), GFP_KERNEL, tmp); |
981 | pn = kmalloc(sizeof(*pn), GFP_KERNEL); | ||
982 | if (!pn) | 993 | if (!pn) |
983 | return 1; | 994 | return 1; |
984 | 995 | ||
@@ -1053,6 +1064,8 @@ static void mem_cgroup_destroy(struct cgroup_subsys *ss, | |||
1053 | static int mem_cgroup_populate(struct cgroup_subsys *ss, | 1064 | static int mem_cgroup_populate(struct cgroup_subsys *ss, |
1054 | struct cgroup *cont) | 1065 | struct cgroup *cont) |
1055 | { | 1066 | { |
1067 | if (mem_cgroup_subsys.disabled) | ||
1068 | return 0; | ||
1056 | return cgroup_add_files(cont, ss, mem_cgroup_files, | 1069 | return cgroup_add_files(cont, ss, mem_cgroup_files, |
1057 | ARRAY_SIZE(mem_cgroup_files)); | 1070 | ARRAY_SIZE(mem_cgroup_files)); |
1058 | } | 1071 | } |
@@ -1065,6 +1078,9 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss, | |||
1065 | struct mm_struct *mm; | 1078 | struct mm_struct *mm; |
1066 | struct mem_cgroup *mem, *old_mem; | 1079 | struct mem_cgroup *mem, *old_mem; |
1067 | 1080 | ||
1081 | if (mem_cgroup_subsys.disabled) | ||
1082 | return; | ||
1083 | |||
1068 | mm = get_task_mm(p); | 1084 | mm = get_task_mm(p); |
1069 | if (mm == NULL) | 1085 | if (mm == NULL) |
1070 | return; | 1086 | return; |
@@ -1470,6 +1470,9 @@ static void *__slab_alloc(struct kmem_cache *s, | |||
1470 | void **object; | 1470 | void **object; |
1471 | struct page *new; | 1471 | struct page *new; |
1472 | 1472 | ||
1473 | /* We handle __GFP_ZERO in the caller */ | ||
1474 | gfpflags &= ~__GFP_ZERO; | ||
1475 | |||
1473 | if (!c->page) | 1476 | if (!c->page) |
1474 | goto new_slab; | 1477 | goto new_slab; |
1475 | 1478 | ||
@@ -2685,7 +2688,7 @@ void kfree(const void *x) | |||
2685 | } | 2688 | } |
2686 | EXPORT_SYMBOL(kfree); | 2689 | EXPORT_SYMBOL(kfree); |
2687 | 2690 | ||
2688 | #if defined(SLUB_DEBUG) || defined(CONFIG_SLABINFO) | 2691 | #if defined(CONFIG_SLUB_DEBUG) || defined(CONFIG_SLABINFO) |
2689 | static unsigned long count_partial(struct kmem_cache_node *n) | 2692 | static unsigned long count_partial(struct kmem_cache_node *n) |
2690 | { | 2693 | { |
2691 | unsigned long flags; | 2694 | unsigned long flags; |
diff --git a/mm/sparse-vmemmap.c b/mm/sparse-vmemmap.c index cd75b21dd4c3..99c4f36eb8a3 100644 --- a/mm/sparse-vmemmap.c +++ b/mm/sparse-vmemmap.c | |||
@@ -76,7 +76,7 @@ pte_t * __meminit vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node) | |||
76 | pte_t entry; | 76 | pte_t entry; |
77 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); | 77 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); |
78 | if (!p) | 78 | if (!p) |
79 | return 0; | 79 | return NULL; |
80 | entry = pfn_pte(__pa(p) >> PAGE_SHIFT, PAGE_KERNEL); | 80 | entry = pfn_pte(__pa(p) >> PAGE_SHIFT, PAGE_KERNEL); |
81 | set_pte_at(&init_mm, addr, pte, entry); | 81 | set_pte_at(&init_mm, addr, pte, entry); |
82 | } | 82 | } |
@@ -89,7 +89,7 @@ pmd_t * __meminit vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node) | |||
89 | if (pmd_none(*pmd)) { | 89 | if (pmd_none(*pmd)) { |
90 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); | 90 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); |
91 | if (!p) | 91 | if (!p) |
92 | return 0; | 92 | return NULL; |
93 | pmd_populate_kernel(&init_mm, pmd, p); | 93 | pmd_populate_kernel(&init_mm, pmd, p); |
94 | } | 94 | } |
95 | return pmd; | 95 | return pmd; |
@@ -101,7 +101,7 @@ pud_t * __meminit vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node) | |||
101 | if (pud_none(*pud)) { | 101 | if (pud_none(*pud)) { |
102 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); | 102 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); |
103 | if (!p) | 103 | if (!p) |
104 | return 0; | 104 | return NULL; |
105 | pud_populate(&init_mm, pud, p); | 105 | pud_populate(&init_mm, pud, p); |
106 | } | 106 | } |
107 | return pud; | 107 | return pud; |
@@ -113,7 +113,7 @@ pgd_t * __meminit vmemmap_pgd_populate(unsigned long addr, int node) | |||
113 | if (pgd_none(*pgd)) { | 113 | if (pgd_none(*pgd)) { |
114 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); | 114 | void *p = vmemmap_alloc_block(PAGE_SIZE, node); |
115 | if (!p) | 115 | if (!p) |
116 | return 0; | 116 | return NULL; |
117 | pgd_populate(&init_mm, pgd, p); | 117 | pgd_populate(&init_mm, pgd, p); |
118 | } | 118 | } |
119 | return pgd; | 119 | return pgd; |
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c index dbc81b965096..b33410abfd6b 100644 --- a/net/8021q/vlan.c +++ b/net/8021q/vlan.c | |||
@@ -374,17 +374,35 @@ static void vlan_sync_address(struct net_device *dev, | |||
374 | memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN); | 374 | memcpy(vlan->real_dev_addr, dev->dev_addr, ETH_ALEN); |
375 | } | 375 | } |
376 | 376 | ||
377 | static void __vlan_device_event(struct net_device *dev, unsigned long event) | ||
378 | { | ||
379 | switch (event) { | ||
380 | case NETDEV_CHANGENAME: | ||
381 | vlan_proc_rem_dev(dev); | ||
382 | if (vlan_proc_add_dev(dev) < 0) | ||
383 | pr_warning("8021q: failed to change proc name for %s\n", | ||
384 | dev->name); | ||
385 | break; | ||
386 | } | ||
387 | } | ||
388 | |||
377 | static int vlan_device_event(struct notifier_block *unused, unsigned long event, | 389 | static int vlan_device_event(struct notifier_block *unused, unsigned long event, |
378 | void *ptr) | 390 | void *ptr) |
379 | { | 391 | { |
380 | struct net_device *dev = ptr; | 392 | struct net_device *dev = ptr; |
381 | struct vlan_group *grp = __vlan_find_group(dev->ifindex); | 393 | struct vlan_group *grp; |
382 | int i, flgs; | 394 | int i, flgs; |
383 | struct net_device *vlandev; | 395 | struct net_device *vlandev; |
384 | 396 | ||
385 | if (dev->nd_net != &init_net) | 397 | if (dev->nd_net != &init_net) |
386 | return NOTIFY_DONE; | 398 | return NOTIFY_DONE; |
387 | 399 | ||
400 | if (is_vlan_dev(dev)) { | ||
401 | __vlan_device_event(dev, event); | ||
402 | goto out; | ||
403 | } | ||
404 | |||
405 | grp = __vlan_find_group(dev->ifindex); | ||
388 | if (!grp) | 406 | if (!grp) |
389 | goto out; | 407 | goto out; |
390 | 408 | ||
diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h index 73efcc715ccb..51271aea402b 100644 --- a/net/8021q/vlan.h +++ b/net/8021q/vlan.h | |||
@@ -45,4 +45,9 @@ void vlan_netlink_fini(void); | |||
45 | 45 | ||
46 | extern struct rtnl_link_ops vlan_link_ops; | 46 | extern struct rtnl_link_ops vlan_link_ops; |
47 | 47 | ||
48 | static inline int is_vlan_dev(struct net_device *dev) | ||
49 | { | ||
50 | return dev->priv_flags & IFF_802_1Q_VLAN; | ||
51 | } | ||
52 | |||
48 | #endif /* !(__BEN_VLAN_802_1Q_INC__) */ | 53 | #endif /* !(__BEN_VLAN_802_1Q_INC__) */ |
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 8fbcefe10c9f..41a76a05e6fd 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -660,7 +660,7 @@ static int vlan_dev_init(struct net_device *dev) | |||
660 | int subclass = 0; | 660 | int subclass = 0; |
661 | 661 | ||
662 | /* IFF_BROADCAST|IFF_MULTICAST; ??? */ | 662 | /* IFF_BROADCAST|IFF_MULTICAST; ??? */ |
663 | dev->flags = real_dev->flags & ~IFF_UP; | 663 | dev->flags = real_dev->flags & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI); |
664 | dev->iflink = real_dev->ifindex; | 664 | dev->iflink = real_dev->ifindex; |
665 | dev->state = (real_dev->state & ((1<<__LINK_STATE_NOCARRIER) | | 665 | dev->state = (real_dev->state & ((1<<__LINK_STATE_NOCARRIER) | |
666 | (1<<__LINK_STATE_DORMANT))) | | 666 | (1<<__LINK_STATE_DORMANT))) | |
@@ -692,6 +692,20 @@ static int vlan_dev_init(struct net_device *dev) | |||
692 | return 0; | 692 | return 0; |
693 | } | 693 | } |
694 | 694 | ||
695 | static void vlan_dev_uninit(struct net_device *dev) | ||
696 | { | ||
697 | struct vlan_priority_tci_mapping *pm; | ||
698 | struct vlan_dev_info *vlan = vlan_dev_info(dev); | ||
699 | int i; | ||
700 | |||
701 | for (i = 0; i < ARRAY_SIZE(vlan->egress_priority_map); i++) { | ||
702 | while ((pm = vlan->egress_priority_map[i]) != NULL) { | ||
703 | vlan->egress_priority_map[i] = pm->next; | ||
704 | kfree(pm); | ||
705 | } | ||
706 | } | ||
707 | } | ||
708 | |||
695 | void vlan_setup(struct net_device *dev) | 709 | void vlan_setup(struct net_device *dev) |
696 | { | 710 | { |
697 | ether_setup(dev); | 711 | ether_setup(dev); |
@@ -701,6 +715,7 @@ void vlan_setup(struct net_device *dev) | |||
701 | 715 | ||
702 | dev->change_mtu = vlan_dev_change_mtu; | 716 | dev->change_mtu = vlan_dev_change_mtu; |
703 | dev->init = vlan_dev_init; | 717 | dev->init = vlan_dev_init; |
718 | dev->uninit = vlan_dev_uninit; | ||
704 | dev->open = vlan_dev_open; | 719 | dev->open = vlan_dev_open; |
705 | dev->stop = vlan_dev_stop; | 720 | dev->stop = vlan_dev_stop; |
706 | dev->set_mac_address = vlan_dev_set_mac_address; | 721 | dev->set_mac_address = vlan_dev_set_mac_address; |
diff --git a/net/8021q/vlanproc.c b/net/8021q/vlanproc.c index 146cfb0e9882..9671aa51af2c 100644 --- a/net/8021q/vlanproc.c +++ b/net/8021q/vlanproc.c | |||
@@ -210,11 +210,6 @@ int vlan_proc_rem_dev(struct net_device *vlandev) | |||
210 | * The following few functions build the content of /proc/net/vlan/config | 210 | * The following few functions build the content of /proc/net/vlan/config |
211 | */ | 211 | */ |
212 | 212 | ||
213 | static inline int is_vlan_dev(struct net_device *dev) | ||
214 | { | ||
215 | return dev->priv_flags & IFF_802_1Q_VLAN; | ||
216 | } | ||
217 | |||
218 | /* start read of /proc/net/vlan/config */ | 213 | /* start read of /proc/net/vlan/config */ |
219 | static void *vlan_seq_start(struct seq_file *seq, loff_t *pos) | 214 | static void *vlan_seq_start(struct seq_file *seq, loff_t *pos) |
220 | __acquires(dev_base_lock) | 215 | __acquires(dev_base_lock) |
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index 4e8d4e724b96..f624dff76852 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c | |||
@@ -1520,7 +1520,7 @@ static int __init p9_trans_fd_init(void) | |||
1520 | v9fs_register_trans(&p9_unix_trans); | 1520 | v9fs_register_trans(&p9_unix_trans); |
1521 | v9fs_register_trans(&p9_fd_trans); | 1521 | v9fs_register_trans(&p9_fd_trans); |
1522 | 1522 | ||
1523 | return 1; | 1523 | return 0; |
1524 | } | 1524 | } |
1525 | 1525 | ||
1526 | module_init(p9_trans_fd_init); | 1526 | module_init(p9_trans_fd_init); |
diff --git a/net/atm/lec.c b/net/atm/lec.c index a2efa7ff41f1..3235c57615e4 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c | |||
@@ -266,7 +266,6 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
266 | char buf[300]; | 266 | char buf[300]; |
267 | int i = 0; | 267 | int i = 0; |
268 | #endif /* DUMP_PACKETS >0 */ | 268 | #endif /* DUMP_PACKETS >0 */ |
269 | DECLARE_MAC_BUF(mac); | ||
270 | 269 | ||
271 | pr_debug("lec_start_xmit called\n"); | 270 | pr_debug("lec_start_xmit called\n"); |
272 | if (!priv->lecd) { | 271 | if (!priv->lecd) { |
@@ -374,15 +373,19 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
374 | if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) { | 373 | if (entry && (entry->tx_wait.qlen < LEC_UNRES_QUE_LEN)) { |
375 | pr_debug("%s:lec_start_xmit: queuing packet, ", | 374 | pr_debug("%s:lec_start_xmit: queuing packet, ", |
376 | dev->name); | 375 | dev->name); |
377 | pr_debug("MAC address %s\n", | 376 | pr_debug("MAC address " MAC_FMT "\n", |
378 | print_mac(mac, lec_h->h_dest)); | 377 | lec_h->h_dest[0], lec_h->h_dest[1], |
378 | lec_h->h_dest[2], lec_h->h_dest[3], | ||
379 | lec_h->h_dest[4], lec_h->h_dest[5]); | ||
379 | skb_queue_tail(&entry->tx_wait, skb); | 380 | skb_queue_tail(&entry->tx_wait, skb); |
380 | } else { | 381 | } else { |
381 | pr_debug | 382 | pr_debug |
382 | ("%s:lec_start_xmit: tx queue full or no arp entry, dropping, ", | 383 | ("%s:lec_start_xmit: tx queue full or no arp entry, dropping, ", |
383 | dev->name); | 384 | dev->name); |
384 | pr_debug("MAC address %s\n", | 385 | pr_debug("MAC address " MAC_FMT "\n", |
385 | print_mac(mac, lec_h->h_dest)); | 386 | lec_h->h_dest[0], lec_h->h_dest[1], |
387 | lec_h->h_dest[2], lec_h->h_dest[3], | ||
388 | lec_h->h_dest[4], lec_h->h_dest[5]); | ||
386 | priv->stats.tx_dropped++; | 389 | priv->stats.tx_dropped++; |
387 | dev_kfree_skb(skb); | 390 | dev_kfree_skb(skb); |
388 | } | 391 | } |
@@ -394,8 +397,10 @@ static int lec_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
394 | 397 | ||
395 | while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) { | 398 | while (entry && (skb2 = skb_dequeue(&entry->tx_wait))) { |
396 | pr_debug("lec.c: emptying tx queue, "); | 399 | pr_debug("lec.c: emptying tx queue, "); |
397 | pr_debug("MAC address %s\n", | 400 | pr_debug("MAC address " MAC_FMT "\n", |
398 | print_mac(mac, lec_h->h_dest)); | 401 | lec_h->h_dest[0], lec_h->h_dest[1], |
402 | lec_h->h_dest[2], lec_h->h_dest[3], | ||
403 | lec_h->h_dest[4], lec_h->h_dest[5]); | ||
399 | lec_send(vcc, skb2, priv); | 404 | lec_send(vcc, skb2, priv); |
400 | } | 405 | } |
401 | 406 | ||
@@ -449,7 +454,6 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb) | |||
449 | struct lec_arp_table *entry; | 454 | struct lec_arp_table *entry; |
450 | int i; | 455 | int i; |
451 | char *tmp; /* FIXME */ | 456 | char *tmp; /* FIXME */ |
452 | DECLARE_MAC_BUF(mac); | ||
453 | 457 | ||
454 | atomic_sub(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); | 458 | atomic_sub(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc); |
455 | mesg = (struct atmlec_msg *)skb->data; | 459 | mesg = (struct atmlec_msg *)skb->data; |
@@ -536,9 +540,14 @@ static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb) | |||
536 | struct net_bridge_fdb_entry *f; | 540 | struct net_bridge_fdb_entry *f; |
537 | 541 | ||
538 | pr_debug | 542 | pr_debug |
539 | ("%s: bridge zeppelin asks about %s\n", | 543 | ("%s: bridge zeppelin asks about " MAC_FMT "\n", |
540 | dev->name, | 544 | dev->name, |
541 | print_mac(mac, mesg->content.proxy.mac_addr)); | 545 | mesg->content.proxy.mac_addr[0], |
546 | mesg->content.proxy.mac_addr[1], | ||
547 | mesg->content.proxy.mac_addr[2], | ||
548 | mesg->content.proxy.mac_addr[3], | ||
549 | mesg->content.proxy.mac_addr[4], | ||
550 | mesg->content.proxy.mac_addr[5]); | ||
542 | 551 | ||
543 | if (br_fdb_get_hook == NULL || dev->br_port == NULL) | 552 | if (br_fdb_get_hook == NULL || dev->br_port == NULL) |
544 | break; | 553 | break; |
diff --git a/net/ax25/TODO b/net/ax25/TODO index 4089c49e45cc..69fb4e368d92 100644 --- a/net/ax25/TODO +++ b/net/ax25/TODO | |||
@@ -9,10 +9,6 @@ being used. | |||
9 | Routes to a device being taken down might be deleted by ax25_rt_device_down | 9 | Routes to a device being taken down might be deleted by ax25_rt_device_down |
10 | but added by somebody else before the device has been deleted fully. | 10 | but added by somebody else before the device has been deleted fully. |
11 | 11 | ||
12 | Massive amounts of lock_kernel / unlock_kernel are just a temporary solution to | ||
13 | get around the removal of SOCKOPS_WRAP. A serious locking strategy has to be | ||
14 | implemented. | ||
15 | |||
16 | The ax25_rt_find_route synopsys is pervert but I somehow had to deal with | 12 | The ax25_rt_find_route synopsys is pervert but I somehow had to deal with |
17 | the race caused by the static variable in it's previous implementation. | 13 | the race caused by the static variable in it's previous implementation. |
18 | 14 | ||
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c index 1220d8a41eb5..d366423c8392 100644 --- a/net/bluetooth/af_bluetooth.c +++ b/net/bluetooth/af_bluetooth.c | |||
@@ -53,6 +53,30 @@ | |||
53 | /* Bluetooth sockets */ | 53 | /* Bluetooth sockets */ |
54 | #define BT_MAX_PROTO 8 | 54 | #define BT_MAX_PROTO 8 |
55 | static struct net_proto_family *bt_proto[BT_MAX_PROTO]; | 55 | static struct net_proto_family *bt_proto[BT_MAX_PROTO]; |
56 | |||
57 | static struct lock_class_key bt_slock_key[BT_MAX_PROTO]; | ||
58 | static struct lock_class_key bt_lock_key[BT_MAX_PROTO]; | ||
59 | static const char *bt_key_strings[BT_MAX_PROTO] = { | ||
60 | "sk_lock-AF_BLUETOOTH-BTPROTO_L2CAP", | ||
61 | "sk_lock-AF_BLUETOOTH-BTPROTO_HCI", | ||
62 | "sk_lock-AF_BLUETOOTH-BTPROTO_SCO", | ||
63 | "sk_lock-AF_BLUETOOTH-BTPROTO_RFCOMM", | ||
64 | "sk_lock-AF_BLUETOOTH-BTPROTO_BNEP", | ||
65 | "sk_lock-AF_BLUETOOTH-BTPROTO_CMTP", | ||
66 | "sk_lock-AF_BLUETOOTH-BTPROTO_HIDP", | ||
67 | "sk_lock-AF_BLUETOOTH-BTPROTO_AVDTP", | ||
68 | }; | ||
69 | |||
70 | static const char *bt_slock_key_strings[BT_MAX_PROTO] = { | ||
71 | "slock-AF_BLUETOOTH-BTPROTO_L2CAP", | ||
72 | "slock-AF_BLUETOOTH-BTPROTO_HCI", | ||
73 | "slock-AF_BLUETOOTH-BTPROTO_SCO", | ||
74 | "slock-AF_BLUETOOTH-BTPROTO_RFCOMM", | ||
75 | "slock-AF_BLUETOOTH-BTPROTO_BNEP", | ||
76 | "slock-AF_BLUETOOTH-BTPROTO_CMTP", | ||
77 | "slock-AF_BLUETOOTH-BTPROTO_HIDP", | ||
78 | "slock-AF_BLUETOOTH-BTPROTO_AVDTP", | ||
79 | }; | ||
56 | static DEFINE_RWLOCK(bt_proto_lock); | 80 | static DEFINE_RWLOCK(bt_proto_lock); |
57 | 81 | ||
58 | int bt_sock_register(int proto, struct net_proto_family *ops) | 82 | int bt_sock_register(int proto, struct net_proto_family *ops) |
@@ -95,6 +119,21 @@ int bt_sock_unregister(int proto) | |||
95 | } | 119 | } |
96 | EXPORT_SYMBOL(bt_sock_unregister); | 120 | EXPORT_SYMBOL(bt_sock_unregister); |
97 | 121 | ||
122 | static void bt_reclassify_sock_lock(struct socket *sock, int proto) | ||
123 | { | ||
124 | struct sock *sk = sock->sk; | ||
125 | |||
126 | if (!sk) | ||
127 | return; | ||
128 | BUG_ON(sock_owned_by_user(sk)); | ||
129 | |||
130 | sock_lock_init_class_and_name(sk, | ||
131 | bt_slock_key_strings[proto], | ||
132 | &bt_slock_key[proto], | ||
133 | bt_key_strings[proto], | ||
134 | &bt_lock_key[proto]); | ||
135 | } | ||
136 | |||
98 | static int bt_sock_create(struct net *net, struct socket *sock, int proto) | 137 | static int bt_sock_create(struct net *net, struct socket *sock, int proto) |
99 | { | 138 | { |
100 | int err; | 139 | int err; |
@@ -117,6 +156,7 @@ static int bt_sock_create(struct net *net, struct socket *sock, int proto) | |||
117 | 156 | ||
118 | if (bt_proto[proto] && try_module_get(bt_proto[proto]->owner)) { | 157 | if (bt_proto[proto] && try_module_get(bt_proto[proto]->owner)) { |
119 | err = bt_proto[proto]->create(net, sock, proto); | 158 | err = bt_proto[proto]->create(net, sock, proto); |
159 | bt_reclassify_sock_lock(sock, proto); | ||
120 | module_put(bt_proto[proto]->owner); | 160 | module_put(bt_proto[proto]->owner); |
121 | } | 161 | } |
122 | 162 | ||
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index b5d4019d3572..1d36c093523b 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c | |||
@@ -84,7 +84,7 @@ static struct hci_sec_filter hci_sec_filter = { | |||
84 | }; | 84 | }; |
85 | 85 | ||
86 | static struct bt_sock_list hci_sk_list = { | 86 | static struct bt_sock_list hci_sk_list = { |
87 | .lock = RW_LOCK_UNLOCKED | 87 | .lock = __RW_LOCK_UNLOCKED(hci_sk_list.lock) |
88 | }; | 88 | }; |
89 | 89 | ||
90 | /* Send frame to RAW socket */ | 90 | /* Send frame to RAW socket */ |
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 34f8bf98bc05..2957df4b6c0b 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
@@ -62,7 +62,7 @@ static u32 l2cap_feat_mask = 0x0000; | |||
62 | static const struct proto_ops l2cap_sock_ops; | 62 | static const struct proto_ops l2cap_sock_ops; |
63 | 63 | ||
64 | static struct bt_sock_list l2cap_sk_list = { | 64 | static struct bt_sock_list l2cap_sk_list = { |
65 | .lock = RW_LOCK_UNLOCKED | 65 | .lock = __RW_LOCK_UNLOCKED(l2cap_sk_list.lock) |
66 | }; | 66 | }; |
67 | 67 | ||
68 | static void __l2cap_sock_close(struct sock *sk, int reason); | 68 | static void __l2cap_sock_close(struct sock *sk, int reason); |
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 0c2c93735e93..eb62558e9b09 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
@@ -423,8 +423,8 @@ static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err) | |||
423 | 423 | ||
424 | rfcomm_dlc_lock(d); | 424 | rfcomm_dlc_lock(d); |
425 | d->state = BT_CLOSED; | 425 | d->state = BT_CLOSED; |
426 | d->state_change(d, err); | ||
427 | rfcomm_dlc_unlock(d); | 426 | rfcomm_dlc_unlock(d); |
427 | d->state_change(d, err); | ||
428 | 428 | ||
429 | skb_queue_purge(&d->tx_queue); | 429 | skb_queue_purge(&d->tx_queue); |
430 | rfcomm_dlc_unlink(d); | 430 | rfcomm_dlc_unlink(d); |
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index c46d51035e77..af4e3934ee84 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c | |||
@@ -60,7 +60,7 @@ | |||
60 | static const struct proto_ops rfcomm_sock_ops; | 60 | static const struct proto_ops rfcomm_sock_ops; |
61 | 61 | ||
62 | static struct bt_sock_list rfcomm_sk_list = { | 62 | static struct bt_sock_list rfcomm_sk_list = { |
63 | .lock = RW_LOCK_UNLOCKED | 63 | .lock = __RW_LOCK_UNLOCKED(rfcomm_sk_list.lock) |
64 | }; | 64 | }; |
65 | 65 | ||
66 | static void rfcomm_sock_close(struct sock *sk); | 66 | static void rfcomm_sock_close(struct sock *sk); |
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index e4c779bb8d76..c3f749abb2d0 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
@@ -570,12 +570,7 @@ static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err) | |||
570 | return; | 570 | return; |
571 | 571 | ||
572 | rfcomm_dev_del(dev); | 572 | rfcomm_dev_del(dev); |
573 | /* We have to drop DLC lock here, otherwise | ||
574 | rfcomm_dev_put() will dead lock if it's | ||
575 | the last reference. */ | ||
576 | rfcomm_dlc_unlock(dlc); | ||
577 | rfcomm_dev_put(dev); | 573 | rfcomm_dev_put(dev); |
578 | rfcomm_dlc_lock(dlc); | ||
579 | } | 574 | } |
580 | } else | 575 | } else |
581 | tty_hangup(dev->tty); | 576 | tty_hangup(dev->tty); |
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index b91d3c81a73c..cd887cdca426 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c | |||
@@ -58,7 +58,7 @@ | |||
58 | static const struct proto_ops sco_sock_ops; | 58 | static const struct proto_ops sco_sock_ops; |
59 | 59 | ||
60 | static struct bt_sock_list sco_sk_list = { | 60 | static struct bt_sock_list sco_sk_list = { |
61 | .lock = RW_LOCK_UNLOCKED | 61 | .lock = __RW_LOCK_UNLOCKED(sco_sk_list.lock) |
62 | }; | 62 | }; |
63 | 63 | ||
64 | static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent); | 64 | static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent); |
diff --git a/net/core/dev.c b/net/core/dev.c index fcdf03cf3b3f..460e7f99ce3e 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -3329,7 +3329,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) | |||
3329 | return -EOPNOTSUPP; | 3329 | return -EOPNOTSUPP; |
3330 | 3330 | ||
3331 | case SIOCADDMULTI: | 3331 | case SIOCADDMULTI: |
3332 | if (!dev->set_multicast_list || | 3332 | if ((!dev->set_multicast_list && !dev->set_rx_mode) || |
3333 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) | 3333 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) |
3334 | return -EINVAL; | 3334 | return -EINVAL; |
3335 | if (!netif_device_present(dev)) | 3335 | if (!netif_device_present(dev)) |
@@ -3338,7 +3338,7 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) | |||
3338 | dev->addr_len, 1); | 3338 | dev->addr_len, 1); |
3339 | 3339 | ||
3340 | case SIOCDELMULTI: | 3340 | case SIOCDELMULTI: |
3341 | if (!dev->set_multicast_list || | 3341 | if ((!dev->set_multicast_list && !dev->set_rx_mode) || |
3342 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) | 3342 | ifr->ifr_hwaddr.sa_family != AF_UNSPEC) |
3343 | return -EINVAL; | 3343 | return -EINVAL; |
3344 | if (!netif_device_present(dev)) | 3344 | if (!netif_device_present(dev)) |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index d9a02b2cc289..19b8e003f150 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -466,6 +466,28 @@ out_neigh_release: | |||
466 | goto out; | 466 | goto out; |
467 | } | 467 | } |
468 | 468 | ||
469 | struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl, | ||
470 | struct net *net, const void *pkey, struct net_device *dev) | ||
471 | { | ||
472 | struct pneigh_entry *n; | ||
473 | int key_len = tbl->key_len; | ||
474 | u32 hash_val = *(u32 *)(pkey + key_len - 4); | ||
475 | |||
476 | hash_val ^= (hash_val >> 16); | ||
477 | hash_val ^= hash_val >> 8; | ||
478 | hash_val ^= hash_val >> 4; | ||
479 | hash_val &= PNEIGH_HASHMASK; | ||
480 | |||
481 | for (n = tbl->phash_buckets[hash_val]; n; n = n->next) { | ||
482 | if (!memcmp(n->key, pkey, key_len) && | ||
483 | (n->net == net) && | ||
484 | (n->dev == dev || !n->dev)) | ||
485 | break; | ||
486 | } | ||
487 | |||
488 | return n; | ||
489 | } | ||
490 | |||
469 | struct pneigh_entry * pneigh_lookup(struct neigh_table *tbl, | 491 | struct pneigh_entry * pneigh_lookup(struct neigh_table *tbl, |
470 | struct net *net, const void *pkey, | 492 | struct net *net, const void *pkey, |
471 | struct net_device *dev, int creat) | 493 | struct net_device *dev, int creat) |
@@ -2803,6 +2825,7 @@ EXPORT_SYMBOL(neigh_table_init_no_netlink); | |||
2803 | EXPORT_SYMBOL(neigh_update); | 2825 | EXPORT_SYMBOL(neigh_update); |
2804 | EXPORT_SYMBOL(pneigh_enqueue); | 2826 | EXPORT_SYMBOL(pneigh_enqueue); |
2805 | EXPORT_SYMBOL(pneigh_lookup); | 2827 | EXPORT_SYMBOL(pneigh_lookup); |
2828 | EXPORT_SYMBOL_GPL(__pneigh_lookup); | ||
2806 | 2829 | ||
2807 | #ifdef CONFIG_ARPD | 2830 | #ifdef CONFIG_ARPD |
2808 | EXPORT_SYMBOL(neigh_app_ns); | 2831 | EXPORT_SYMBOL(neigh_app_ns); |
diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c index 1e3f87c8c012..200ee1e63728 100644 --- a/net/ieee80211/ieee80211_rx.c +++ b/net/ieee80211/ieee80211_rx.c | |||
@@ -271,7 +271,6 @@ ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
271 | { | 271 | { |
272 | struct ieee80211_hdr_3addr *hdr; | 272 | struct ieee80211_hdr_3addr *hdr; |
273 | int res, hdrlen; | 273 | int res, hdrlen; |
274 | DECLARE_MAC_BUF(mac); | ||
275 | 274 | ||
276 | if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) | 275 | if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) |
277 | return 0; | 276 | return 0; |
@@ -283,8 +282,12 @@ ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
283 | res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv); | 282 | res = crypt->ops->decrypt_mpdu(skb, hdrlen, crypt->priv); |
284 | atomic_dec(&crypt->refcnt); | 283 | atomic_dec(&crypt->refcnt); |
285 | if (res < 0) { | 284 | if (res < 0) { |
286 | IEEE80211_DEBUG_DROP("decryption failed (SA=%s" | 285 | IEEE80211_DEBUG_DROP("decryption failed (SA=" MAC_FMT |
287 | ") res=%d\n", print_mac(mac, hdr->addr2), res); | 286 | ") res=%d\n", |
287 | hdr->addr2[0], hdr->addr2[1], | ||
288 | hdr->addr2[2], hdr->addr2[3], | ||
289 | hdr->addr2[4], hdr->addr2[5], | ||
290 | res); | ||
288 | if (res == -2) | 291 | if (res == -2) |
289 | IEEE80211_DEBUG_DROP("Decryption failed ICV " | 292 | IEEE80211_DEBUG_DROP("Decryption failed ICV " |
290 | "mismatch (key %d)\n", | 293 | "mismatch (key %d)\n", |
@@ -304,7 +307,6 @@ ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, | |||
304 | { | 307 | { |
305 | struct ieee80211_hdr_3addr *hdr; | 308 | struct ieee80211_hdr_3addr *hdr; |
306 | int res, hdrlen; | 309 | int res, hdrlen; |
307 | DECLARE_MAC_BUF(mac); | ||
308 | 310 | ||
309 | if (crypt == NULL || crypt->ops->decrypt_msdu == NULL) | 311 | if (crypt == NULL || crypt->ops->decrypt_msdu == NULL) |
310 | return 0; | 312 | return 0; |
@@ -317,8 +319,12 @@ ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, | |||
317 | atomic_dec(&crypt->refcnt); | 319 | atomic_dec(&crypt->refcnt); |
318 | if (res < 0) { | 320 | if (res < 0) { |
319 | printk(KERN_DEBUG "%s: MSDU decryption/MIC verification failed" | 321 | printk(KERN_DEBUG "%s: MSDU decryption/MIC verification failed" |
320 | " (SA=%s keyidx=%d)\n", | 322 | " (SA=" MAC_FMT " keyidx=%d)\n", |
321 | ieee->dev->name, print_mac(mac, hdr->addr2), keyidx); | 323 | ieee->dev->name, |
324 | hdr->addr2[0], hdr->addr2[1], | ||
325 | hdr->addr2[2], hdr->addr2[3], | ||
326 | hdr->addr2[4], hdr->addr2[5], | ||
327 | keyidx); | ||
322 | return -1; | 328 | return -1; |
323 | } | 329 | } |
324 | 330 | ||
@@ -462,8 +468,10 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
462 | * frames silently instead of filling system log with | 468 | * frames silently instead of filling system log with |
463 | * these reports. */ | 469 | * these reports. */ |
464 | IEEE80211_DEBUG_DROP("Decryption failed (not set)" | 470 | IEEE80211_DEBUG_DROP("Decryption failed (not set)" |
465 | " (SA=%s)\n", | 471 | " (SA=" MAC_FMT ")\n", |
466 | print_mac(mac, hdr->addr2)); | 472 | hdr->addr2[0], hdr->addr2[1], |
473 | hdr->addr2[2], hdr->addr2[3], | ||
474 | hdr->addr2[4], hdr->addr2[5]); | ||
467 | ieee->ieee_stats.rx_discards_undecryptable++; | 475 | ieee->ieee_stats.rx_discards_undecryptable++; |
468 | goto rx_dropped; | 476 | goto rx_dropped; |
469 | } | 477 | } |
@@ -474,8 +482,10 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
474 | fc & IEEE80211_FCTL_PROTECTED && ieee->host_decrypt && | 482 | fc & IEEE80211_FCTL_PROTECTED && ieee->host_decrypt && |
475 | (keyidx = hostap_rx_frame_decrypt(ieee, skb, crypt)) < 0) { | 483 | (keyidx = hostap_rx_frame_decrypt(ieee, skb, crypt)) < 0) { |
476 | printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth " | 484 | printk(KERN_DEBUG "%s: failed to decrypt mgmt::auth " |
477 | "from %s\n", dev->name, | 485 | "from " MAC_FMT "\n", dev->name, |
478 | print_mac(mac, hdr->addr2)); | 486 | hdr->addr2[0], hdr->addr2[1], |
487 | hdr->addr2[2], hdr->addr2[3], | ||
488 | hdr->addr2[4], hdr->addr2[5]); | ||
479 | /* TODO: could inform hostapd about this so that it | 489 | /* TODO: could inform hostapd about this so that it |
480 | * could send auth failure report */ | 490 | * could send auth failure report */ |
481 | goto rx_dropped; | 491 | goto rx_dropped; |
@@ -653,8 +663,11 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
653 | * configured */ | 663 | * configured */ |
654 | } else { | 664 | } else { |
655 | IEEE80211_DEBUG_DROP("encryption configured, but RX " | 665 | IEEE80211_DEBUG_DROP("encryption configured, but RX " |
656 | "frame not encrypted (SA=%s" | 666 | "frame not encrypted (SA=" |
657 | ")\n", print_mac(mac, hdr->addr2)); | 667 | MAC_FMT ")\n", |
668 | hdr->addr2[0], hdr->addr2[1], | ||
669 | hdr->addr2[2], hdr->addr2[3], | ||
670 | hdr->addr2[4], hdr->addr2[5]); | ||
658 | goto rx_dropped; | 671 | goto rx_dropped; |
659 | } | 672 | } |
660 | } | 673 | } |
@@ -662,9 +675,11 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
662 | if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep && | 675 | if (crypt && !(fc & IEEE80211_FCTL_PROTECTED) && !ieee->open_wep && |
663 | !ieee80211_is_eapol_frame(ieee, skb)) { | 676 | !ieee80211_is_eapol_frame(ieee, skb)) { |
664 | IEEE80211_DEBUG_DROP("dropped unencrypted RX data " | 677 | IEEE80211_DEBUG_DROP("dropped unencrypted RX data " |
665 | "frame from %s" | 678 | "frame from " MAC_FMT |
666 | " (drop_unencrypted=1)\n", | 679 | " (drop_unencrypted=1)\n", |
667 | print_mac(mac, hdr->addr2)); | 680 | hdr->addr2[0], hdr->addr2[1], |
681 | hdr->addr2[2], hdr->addr2[3], | ||
682 | hdr->addr2[4], hdr->addr2[5]); | ||
668 | goto rx_dropped; | 683 | goto rx_dropped; |
669 | } | 684 | } |
670 | 685 | ||
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index 9c7e5ffb223d..4670683b4688 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig | |||
@@ -160,7 +160,7 @@ config IP_PNP_DHCP | |||
160 | 160 | ||
161 | If unsure, say Y. Note that if you want to use DHCP, a DHCP server | 161 | If unsure, say Y. Note that if you want to use DHCP, a DHCP server |
162 | must be operating on your network. Read | 162 | must be operating on your network. Read |
163 | <file:Documentation/nfsroot.txt> for details. | 163 | <file:Documentation/filesystems/nfsroot.txt> for details. |
164 | 164 | ||
165 | config IP_PNP_BOOTP | 165 | config IP_PNP_BOOTP |
166 | bool "IP: BOOTP support" | 166 | bool "IP: BOOTP support" |
@@ -175,7 +175,7 @@ config IP_PNP_BOOTP | |||
175 | does BOOTP itself, providing all necessary information on the kernel | 175 | does BOOTP itself, providing all necessary information on the kernel |
176 | command line, you can say N here. If unsure, say Y. Note that if you | 176 | command line, you can say N here. If unsure, say Y. Note that if you |
177 | want to use BOOTP, a BOOTP server must be operating on your network. | 177 | want to use BOOTP, a BOOTP server must be operating on your network. |
178 | Read <file:Documentation/nfsroot.txt> for details. | 178 | Read <file:Documentation/filesystems/nfsroot.txt> for details. |
179 | 179 | ||
180 | config IP_PNP_RARP | 180 | config IP_PNP_RARP |
181 | bool "IP: RARP support" | 181 | bool "IP: RARP support" |
@@ -187,8 +187,8 @@ config IP_PNP_RARP | |||
187 | discovered automatically at boot time using the RARP protocol (an | 187 | discovered automatically at boot time using the RARP protocol (an |
188 | older protocol which is being obsoleted by BOOTP and DHCP), say Y | 188 | older protocol which is being obsoleted by BOOTP and DHCP), say Y |
189 | here. Note that if you want to use RARP, a RARP server must be | 189 | here. Note that if you want to use RARP, a RARP server must be |
190 | operating on your network. Read <file:Documentation/nfsroot.txt> for | 190 | operating on your network. Read |
191 | details. | 191 | <file:Documentation/filesystems/nfsroot.txt> for details. |
192 | 192 | ||
193 | # not yet ready.. | 193 | # not yet ready.. |
194 | # bool ' IP: ARP support' CONFIG_IP_PNP_ARP | 194 | # bool ' IP: ARP support' CONFIG_IP_PNP_ARP |
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index f3ceca31aa45..4e73e5708e70 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c | |||
@@ -336,7 +336,7 @@ static int esp_input(struct xfrm_state *x, struct sk_buff *skb) | |||
336 | struct scatterlist *asg; | 336 | struct scatterlist *asg; |
337 | int err = -EINVAL; | 337 | int err = -EINVAL; |
338 | 338 | ||
339 | if (!pskb_may_pull(skb, sizeof(*esph))) | 339 | if (!pskb_may_pull(skb, sizeof(*esph) + crypto_aead_ivsize(aead))) |
340 | goto out; | 340 | goto out; |
341 | 341 | ||
342 | if (elen <= 0) | 342 | if (elen <= 0) |
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index a13c074dac09..40508babad8c 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c | |||
@@ -591,7 +591,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) | |||
591 | } | 591 | } |
592 | 592 | ||
593 | if (xfrm_decode_session_reverse(skb_in, &fl, AF_INET)) | 593 | if (xfrm_decode_session_reverse(skb_in, &fl, AF_INET)) |
594 | goto out_unlock; | 594 | goto relookup_failed; |
595 | 595 | ||
596 | if (inet_addr_type(net, fl.fl4_src) == RTN_LOCAL) | 596 | if (inet_addr_type(net, fl.fl4_src) == RTN_LOCAL) |
597 | err = __ip_route_output_key(net, &rt2, &fl); | 597 | err = __ip_route_output_key(net, &rt2, &fl); |
@@ -601,7 +601,7 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) | |||
601 | 601 | ||
602 | fl2.fl4_dst = fl.fl4_src; | 602 | fl2.fl4_dst = fl.fl4_src; |
603 | if (ip_route_output_key(net, &rt2, &fl2)) | 603 | if (ip_route_output_key(net, &rt2, &fl2)) |
604 | goto out_unlock; | 604 | goto relookup_failed; |
605 | 605 | ||
606 | /* Ugh! */ | 606 | /* Ugh! */ |
607 | odst = skb_in->dst; | 607 | odst = skb_in->dst; |
@@ -614,21 +614,23 @@ void icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info) | |||
614 | } | 614 | } |
615 | 615 | ||
616 | if (err) | 616 | if (err) |
617 | goto out_unlock; | 617 | goto relookup_failed; |
618 | 618 | ||
619 | err = xfrm_lookup((struct dst_entry **)&rt2, &fl, NULL, | 619 | err = xfrm_lookup((struct dst_entry **)&rt2, &fl, NULL, |
620 | XFRM_LOOKUP_ICMP); | 620 | XFRM_LOOKUP_ICMP); |
621 | if (err == -ENOENT) { | 621 | switch (err) { |
622 | case 0: | ||
623 | dst_release(&rt->u.dst); | ||
624 | rt = rt2; | ||
625 | break; | ||
626 | case -EPERM: | ||
627 | goto ende; | ||
628 | default: | ||
629 | relookup_failed: | ||
622 | if (!rt) | 630 | if (!rt) |
623 | goto out_unlock; | 631 | goto out_unlock; |
624 | goto route_done; | 632 | break; |
625 | } | 633 | } |
626 | |||
627 | dst_release(&rt->u.dst); | ||
628 | rt = rt2; | ||
629 | |||
630 | if (err) | ||
631 | goto out_unlock; | ||
632 | } | 634 | } |
633 | 635 | ||
634 | route_done: | 636 | route_done: |
diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c index 724d69aed031..a0a3c78cb5e0 100644 --- a/net/ipv4/inet_fragment.c +++ b/net/ipv4/inet_fragment.c | |||
@@ -86,7 +86,10 @@ EXPORT_SYMBOL(inet_frags_fini); | |||
86 | void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f) | 86 | void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f) |
87 | { | 87 | { |
88 | nf->low_thresh = 0; | 88 | nf->low_thresh = 0; |
89 | |||
90 | local_bh_disable(); | ||
89 | inet_frag_evictor(nf, f); | 91 | inet_frag_evictor(nf, f); |
92 | local_bh_enable(); | ||
90 | } | 93 | } |
91 | EXPORT_SYMBOL(inet_frags_exit_net); | 94 | EXPORT_SYMBOL(inet_frags_exit_net); |
92 | 95 | ||
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c index 876169f3a528..717c411a5c6b 100644 --- a/net/ipv4/inet_timewait_sock.c +++ b/net/ipv4/inet_timewait_sock.c | |||
@@ -124,6 +124,7 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk, const int stat | |||
124 | tw->tw_hash = sk->sk_hash; | 124 | tw->tw_hash = sk->sk_hash; |
125 | tw->tw_ipv6only = 0; | 125 | tw->tw_ipv6only = 0; |
126 | tw->tw_prot = sk->sk_prot_creator; | 126 | tw->tw_prot = sk->sk_prot_creator; |
127 | tw->tw_net = sk->sk_net; | ||
127 | atomic_set(&tw->tw_refcnt, 1); | 128 | atomic_set(&tw->tw_refcnt, 1); |
128 | inet_twsk_dead_node_init(tw); | 129 | inet_twsk_dead_node_init(tw); |
129 | __module_get(tw->tw_prot->owner); | 130 | __module_get(tw->tw_prot->owner); |
diff --git a/net/ipv4/ip_forward.c b/net/ipv4/ip_forward.c index 0b3b328d82db..a4506c8cfef0 100644 --- a/net/ipv4/ip_forward.c +++ b/net/ipv4/ip_forward.c | |||
@@ -85,7 +85,7 @@ int ip_forward(struct sk_buff *skb) | |||
85 | if (opt->is_strictroute && rt->rt_dst != rt->rt_gateway) | 85 | if (opt->is_strictroute && rt->rt_dst != rt->rt_gateway) |
86 | goto sr_failed; | 86 | goto sr_failed; |
87 | 87 | ||
88 | if (unlikely(skb->len > dst_mtu(&rt->u.dst) && | 88 | if (unlikely(skb->len > dst_mtu(&rt->u.dst) && !skb_is_gso(skb) && |
89 | (ip_hdr(skb)->frag_off & htons(IP_DF))) && !skb->local_df) { | 89 | (ip_hdr(skb)->frag_off & htons(IP_DF))) && !skb->local_df) { |
90 | IP_INC_STATS(IPSTATS_MIB_FRAGFAILS); | 90 | IP_INC_STATS(IPSTATS_MIB_FRAGFAILS); |
91 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, | 91 | icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, |
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index f72457b4b0a7..c2921d01e925 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c | |||
@@ -1132,7 +1132,7 @@ static int do_ip_getsockopt(struct sock *sk, int level, int optname, | |||
1132 | } | 1132 | } |
1133 | release_sock(sk); | 1133 | release_sock(sk); |
1134 | 1134 | ||
1135 | if (len < sizeof(int) && len > 0 && val>=0 && val<255) { | 1135 | if (len < sizeof(int) && len > 0 && val>=0 && val<=255) { |
1136 | unsigned char ucval = (unsigned char)val; | 1136 | unsigned char ucval = (unsigned char)val; |
1137 | len = 1; | 1137 | len = 1; |
1138 | if (put_user(len, optlen)) | 1138 | if (put_user(len, optlen)) |
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 7c992fbbc2c3..4824fe8996bf 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
@@ -1411,7 +1411,7 @@ late_initcall(ip_auto_config); | |||
1411 | 1411 | ||
1412 | /* | 1412 | /* |
1413 | * Decode any IP configuration options in the "ip=" or "nfsaddrs=" kernel | 1413 | * Decode any IP configuration options in the "ip=" or "nfsaddrs=" kernel |
1414 | * command line parameter. See Documentation/nfsroot.txt. | 1414 | * command line parameter. See Documentation/filesystems/nfsroot.txt. |
1415 | */ | 1415 | */ |
1416 | static int __init ic_proto_name(char *name) | 1416 | static int __init ic_proto_name(char *name) |
1417 | { | 1417 | { |
diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c index fe05da41d6ba..4dc162894cb2 100644 --- a/net/ipv4/netfilter/ip_queue.c +++ b/net/ipv4/netfilter/ip_queue.c | |||
@@ -588,11 +588,9 @@ static int __init ip_queue_init(void) | |||
588 | } | 588 | } |
589 | 589 | ||
590 | #ifdef CONFIG_PROC_FS | 590 | #ifdef CONFIG_PROC_FS |
591 | proc = create_proc_entry(IPQ_PROC_FS_NAME, 0, init_net.proc_net); | 591 | proc = proc_create(IPQ_PROC_FS_NAME, 0, init_net.proc_net, |
592 | if (proc) { | 592 | &ip_queue_proc_fops); |
593 | proc->owner = THIS_MODULE; | 593 | if (!proc) { |
594 | proc->proc_fops = &ip_queue_proc_fops; | ||
595 | } else { | ||
596 | printk(KERN_ERR "ip_queue: failed to create proc entry\n"); | 594 | printk(KERN_ERR "ip_queue: failed to create proc entry\n"); |
597 | goto cleanup_ipqnl; | 595 | goto cleanup_ipqnl; |
598 | } | 596 | } |
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c index c6cf84c77611..52926c8e3cc1 100644 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c | |||
@@ -167,14 +167,13 @@ clusterip_config_init(struct ipt_clusterip_tgt_info *i, __be32 ip, | |||
167 | 167 | ||
168 | /* create proc dir entry */ | 168 | /* create proc dir entry */ |
169 | sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(ip)); | 169 | sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(ip)); |
170 | c->pde = create_proc_entry(buffer, S_IWUSR|S_IRUSR, | 170 | c->pde = proc_create(buffer, S_IWUSR|S_IRUSR, |
171 | clusterip_procdir); | 171 | clusterip_procdir, &clusterip_proc_fops); |
172 | if (!c->pde) { | 172 | if (!c->pde) { |
173 | kfree(c); | 173 | kfree(c); |
174 | return NULL; | 174 | return NULL; |
175 | } | 175 | } |
176 | } | 176 | } |
177 | c->pde->proc_fops = &clusterip_proc_fops; | ||
178 | c->pde->data = c; | 177 | c->pde->data = c; |
179 | #endif | 178 | #endif |
180 | 179 | ||
diff --git a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c index 8e8f0425a8ed..50e06690eb5b 100644 --- a/net/ipv4/netfilter/ipt_recent.c +++ b/net/ipv4/netfilter/ipt_recent.c | |||
@@ -276,12 +276,11 @@ recent_mt_check(const char *tablename, const void *ip, | |||
276 | for (i = 0; i < ip_list_hash_size; i++) | 276 | for (i = 0; i < ip_list_hash_size; i++) |
277 | INIT_LIST_HEAD(&t->iphash[i]); | 277 | INIT_LIST_HEAD(&t->iphash[i]); |
278 | #ifdef CONFIG_PROC_FS | 278 | #ifdef CONFIG_PROC_FS |
279 | t->proc = create_proc_entry(t->name, ip_list_perms, proc_dir); | 279 | t->proc = proc_create(t->name, ip_list_perms, proc_dir, &recent_fops); |
280 | if (t->proc == NULL) { | 280 | if (t->proc == NULL) { |
281 | kfree(t); | 281 | kfree(t); |
282 | goto out; | 282 | goto out; |
283 | } | 283 | } |
284 | t->proc->proc_fops = &recent_fops; | ||
285 | t->proc->uid = ip_list_uid; | 284 | t->proc->uid = ip_list_uid; |
286 | t->proc->gid = ip_list_gid; | 285 | t->proc->gid = ip_list_gid; |
287 | t->proc->data = t; | 286 | t->proc->data = t; |
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c index 089252e82c01..f500b0fdaef4 100644 --- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c +++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c | |||
@@ -395,13 +395,10 @@ int __init nf_conntrack_ipv4_compat_init(void) | |||
395 | if (!proc_exp) | 395 | if (!proc_exp) |
396 | goto err2; | 396 | goto err2; |
397 | 397 | ||
398 | proc_stat = create_proc_entry("ip_conntrack", S_IRUGO, init_net.proc_net_stat); | 398 | proc_stat = proc_create("ip_conntrack", S_IRUGO, |
399 | init_net.proc_net_stat, &ct_cpu_seq_fops); | ||
399 | if (!proc_stat) | 400 | if (!proc_stat) |
400 | goto err3; | 401 | goto err3; |
401 | |||
402 | proc_stat->proc_fops = &ct_cpu_seq_fops; | ||
403 | proc_stat->owner = THIS_MODULE; | ||
404 | |||
405 | return 0; | 402 | return 0; |
406 | 403 | ||
407 | err3: | 404 | err3: |
diff --git a/net/ipv4/netfilter/nf_nat_core.c b/net/ipv4/netfilter/nf_nat_core.c index 0d5fa3a54d04..36b4e3bb056f 100644 --- a/net/ipv4/netfilter/nf_nat_core.c +++ b/net/ipv4/netfilter/nf_nat_core.c | |||
@@ -629,6 +629,8 @@ static int __init nf_nat_init(void) | |||
629 | size_t i; | 629 | size_t i; |
630 | int ret; | 630 | int ret; |
631 | 631 | ||
632 | need_ipv4_conntrack(); | ||
633 | |||
632 | ret = nf_ct_extend_register(&nat_extend); | 634 | ret = nf_ct_extend_register(&nat_extend); |
633 | if (ret < 0) { | 635 | if (ret < 0) { |
634 | printk(KERN_ERR "nf_nat_core: Unable to register extension\n"); | 636 | printk(KERN_ERR "nf_nat_core: Unable to register extension\n"); |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 7facdb0f6960..5119856017ab 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1625,13 +1625,11 @@ out: | |||
1625 | return flag; | 1625 | return flag; |
1626 | } | 1626 | } |
1627 | 1627 | ||
1628 | /* If we receive more dupacks than we expected counting segments | 1628 | /* Limits sacked_out so that sum with lost_out isn't ever larger than |
1629 | * in assumption of absent reordering, interpret this as reordering. | 1629 | * packets_out. Returns zero if sacked_out adjustement wasn't necessary. |
1630 | * The only another reason could be bug in receiver TCP. | ||
1631 | */ | 1630 | */ |
1632 | static void tcp_check_reno_reordering(struct sock *sk, const int addend) | 1631 | int tcp_limit_reno_sacked(struct tcp_sock *tp) |
1633 | { | 1632 | { |
1634 | struct tcp_sock *tp = tcp_sk(sk); | ||
1635 | u32 holes; | 1633 | u32 holes; |
1636 | 1634 | ||
1637 | holes = max(tp->lost_out, 1U); | 1635 | holes = max(tp->lost_out, 1U); |
@@ -1639,8 +1637,20 @@ static void tcp_check_reno_reordering(struct sock *sk, const int addend) | |||
1639 | 1637 | ||
1640 | if ((tp->sacked_out + holes) > tp->packets_out) { | 1638 | if ((tp->sacked_out + holes) > tp->packets_out) { |
1641 | tp->sacked_out = tp->packets_out - holes; | 1639 | tp->sacked_out = tp->packets_out - holes; |
1642 | tcp_update_reordering(sk, tp->packets_out + addend, 0); | 1640 | return 1; |
1643 | } | 1641 | } |
1642 | return 0; | ||
1643 | } | ||
1644 | |||
1645 | /* If we receive more dupacks than we expected counting segments | ||
1646 | * in assumption of absent reordering, interpret this as reordering. | ||
1647 | * The only another reason could be bug in receiver TCP. | ||
1648 | */ | ||
1649 | static void tcp_check_reno_reordering(struct sock *sk, const int addend) | ||
1650 | { | ||
1651 | struct tcp_sock *tp = tcp_sk(sk); | ||
1652 | if (tcp_limit_reno_sacked(tp)) | ||
1653 | tcp_update_reordering(sk, tp->packets_out + addend, 0); | ||
1644 | } | 1654 | } |
1645 | 1655 | ||
1646 | /* Emulate SACKs for SACKless connection: account for a new dupack. */ | 1656 | /* Emulate SACKs for SACKless connection: account for a new dupack. */ |
@@ -1681,11 +1691,16 @@ static inline void tcp_reset_reno_sack(struct tcp_sock *tp) | |||
1681 | int tcp_use_frto(struct sock *sk) | 1691 | int tcp_use_frto(struct sock *sk) |
1682 | { | 1692 | { |
1683 | const struct tcp_sock *tp = tcp_sk(sk); | 1693 | const struct tcp_sock *tp = tcp_sk(sk); |
1694 | const struct inet_connection_sock *icsk = inet_csk(sk); | ||
1684 | struct sk_buff *skb; | 1695 | struct sk_buff *skb; |
1685 | 1696 | ||
1686 | if (!sysctl_tcp_frto) | 1697 | if (!sysctl_tcp_frto) |
1687 | return 0; | 1698 | return 0; |
1688 | 1699 | ||
1700 | /* MTU probe and F-RTO won't really play nicely along currently */ | ||
1701 | if (icsk->icsk_mtup.probe_size) | ||
1702 | return 0; | ||
1703 | |||
1689 | if (IsSackFrto()) | 1704 | if (IsSackFrto()) |
1690 | return 1; | 1705 | return 1; |
1691 | 1706 | ||
@@ -2134,11 +2149,13 @@ static void tcp_verify_retransmit_hint(struct tcp_sock *tp, struct sk_buff *skb) | |||
2134 | /* Mark head of queue up as lost. With RFC3517 SACK, the packets is | 2149 | /* Mark head of queue up as lost. With RFC3517 SACK, the packets is |
2135 | * is against sacked "cnt", otherwise it's against facked "cnt" | 2150 | * is against sacked "cnt", otherwise it's against facked "cnt" |
2136 | */ | 2151 | */ |
2137 | static void tcp_mark_head_lost(struct sock *sk, int packets, int fast_rexmit) | 2152 | static void tcp_mark_head_lost(struct sock *sk, int packets) |
2138 | { | 2153 | { |
2139 | struct tcp_sock *tp = tcp_sk(sk); | 2154 | struct tcp_sock *tp = tcp_sk(sk); |
2140 | struct sk_buff *skb; | 2155 | struct sk_buff *skb; |
2141 | int cnt; | 2156 | int cnt, oldcnt; |
2157 | int err; | ||
2158 | unsigned int mss; | ||
2142 | 2159 | ||
2143 | BUG_TRAP(packets <= tp->packets_out); | 2160 | BUG_TRAP(packets <= tp->packets_out); |
2144 | if (tp->lost_skb_hint) { | 2161 | if (tp->lost_skb_hint) { |
@@ -2157,13 +2174,25 @@ static void tcp_mark_head_lost(struct sock *sk, int packets, int fast_rexmit) | |||
2157 | tp->lost_skb_hint = skb; | 2174 | tp->lost_skb_hint = skb; |
2158 | tp->lost_cnt_hint = cnt; | 2175 | tp->lost_cnt_hint = cnt; |
2159 | 2176 | ||
2177 | if (after(TCP_SKB_CB(skb)->end_seq, tp->high_seq)) | ||
2178 | break; | ||
2179 | |||
2180 | oldcnt = cnt; | ||
2160 | if (tcp_is_fack(tp) || tcp_is_reno(tp) || | 2181 | if (tcp_is_fack(tp) || tcp_is_reno(tp) || |
2161 | (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)) | 2182 | (TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)) |
2162 | cnt += tcp_skb_pcount(skb); | 2183 | cnt += tcp_skb_pcount(skb); |
2163 | 2184 | ||
2164 | if (((!fast_rexmit || (tp->lost_out > 0)) && (cnt > packets)) || | 2185 | if (cnt > packets) { |
2165 | after(TCP_SKB_CB(skb)->end_seq, tp->high_seq)) | 2186 | if (tcp_is_sack(tp) || (oldcnt >= packets)) |
2166 | break; | 2187 | break; |
2188 | |||
2189 | mss = skb_shinfo(skb)->gso_size; | ||
2190 | err = tcp_fragment(sk, skb, (packets - oldcnt) * mss, mss); | ||
2191 | if (err < 0) | ||
2192 | break; | ||
2193 | cnt = packets; | ||
2194 | } | ||
2195 | |||
2167 | if (!(TCP_SKB_CB(skb)->sacked & (TCPCB_SACKED_ACKED|TCPCB_LOST))) { | 2196 | if (!(TCP_SKB_CB(skb)->sacked & (TCPCB_SACKED_ACKED|TCPCB_LOST))) { |
2168 | TCP_SKB_CB(skb)->sacked |= TCPCB_LOST; | 2197 | TCP_SKB_CB(skb)->sacked |= TCPCB_LOST; |
2169 | tp->lost_out += tcp_skb_pcount(skb); | 2198 | tp->lost_out += tcp_skb_pcount(skb); |
@@ -2180,17 +2209,17 @@ static void tcp_update_scoreboard(struct sock *sk, int fast_rexmit) | |||
2180 | struct tcp_sock *tp = tcp_sk(sk); | 2209 | struct tcp_sock *tp = tcp_sk(sk); |
2181 | 2210 | ||
2182 | if (tcp_is_reno(tp)) { | 2211 | if (tcp_is_reno(tp)) { |
2183 | tcp_mark_head_lost(sk, 1, fast_rexmit); | 2212 | tcp_mark_head_lost(sk, 1); |
2184 | } else if (tcp_is_fack(tp)) { | 2213 | } else if (tcp_is_fack(tp)) { |
2185 | int lost = tp->fackets_out - tp->reordering; | 2214 | int lost = tp->fackets_out - tp->reordering; |
2186 | if (lost <= 0) | 2215 | if (lost <= 0) |
2187 | lost = 1; | 2216 | lost = 1; |
2188 | tcp_mark_head_lost(sk, lost, fast_rexmit); | 2217 | tcp_mark_head_lost(sk, lost); |
2189 | } else { | 2218 | } else { |
2190 | int sacked_upto = tp->sacked_out - tp->reordering; | 2219 | int sacked_upto = tp->sacked_out - tp->reordering; |
2191 | if (sacked_upto < 0) | 2220 | if (sacked_upto < fast_rexmit) |
2192 | sacked_upto = 0; | 2221 | sacked_upto = fast_rexmit; |
2193 | tcp_mark_head_lost(sk, sacked_upto, fast_rexmit); | 2222 | tcp_mark_head_lost(sk, sacked_upto); |
2194 | } | 2223 | } |
2195 | 2224 | ||
2196 | /* New heuristics: it is possible only after we switched | 2225 | /* New heuristics: it is possible only after we switched |
@@ -2524,7 +2553,7 @@ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, int flag) | |||
2524 | before(tp->snd_una, tp->high_seq) && | 2553 | before(tp->snd_una, tp->high_seq) && |
2525 | icsk->icsk_ca_state != TCP_CA_Open && | 2554 | icsk->icsk_ca_state != TCP_CA_Open && |
2526 | tp->fackets_out > tp->reordering) { | 2555 | tp->fackets_out > tp->reordering) { |
2527 | tcp_mark_head_lost(sk, tp->fackets_out - tp->reordering, 0); | 2556 | tcp_mark_head_lost(sk, tp->fackets_out - tp->reordering); |
2528 | NET_INC_STATS_BH(LINUX_MIB_TCPLOSS); | 2557 | NET_INC_STATS_BH(LINUX_MIB_TCPLOSS); |
2529 | } | 2558 | } |
2530 | 2559 | ||
@@ -2586,6 +2615,8 @@ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, int flag) | |||
2586 | case TCP_CA_Loss: | 2615 | case TCP_CA_Loss: |
2587 | if (flag & FLAG_DATA_ACKED) | 2616 | if (flag & FLAG_DATA_ACKED) |
2588 | icsk->icsk_retransmits = 0; | 2617 | icsk->icsk_retransmits = 0; |
2618 | if (tcp_is_reno(tp) && flag & FLAG_SND_UNA_ADVANCED) | ||
2619 | tcp_reset_reno_sack(tp); | ||
2589 | if (!tcp_try_undo_loss(sk)) { | 2620 | if (!tcp_try_undo_loss(sk)) { |
2590 | tcp_moderate_cwnd(tp); | 2621 | tcp_moderate_cwnd(tp); |
2591 | tcp_xmit_retransmit_queue(sk); | 2622 | tcp_xmit_retransmit_queue(sk); |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 72b9350006fe..d29ef79c00ca 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1808,6 +1808,9 @@ void tcp_simple_retransmit(struct sock *sk) | |||
1808 | if (!lost) | 1808 | if (!lost) |
1809 | return; | 1809 | return; |
1810 | 1810 | ||
1811 | if (tcp_is_reno(tp)) | ||
1812 | tcp_limit_reno_sacked(tp); | ||
1813 | |||
1811 | tcp_verify_left_out(tp); | 1814 | tcp_verify_left_out(tp); |
1812 | 1815 | ||
1813 | /* Don't muck with the congestion window here. | 1816 | /* Don't muck with the congestion window here. |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 7ea1b67b6de1..1704c1474ea1 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -1556,14 +1556,14 @@ static void *udp_seq_start(struct seq_file *seq, loff_t *pos) | |||
1556 | __acquires(udp_hash_lock) | 1556 | __acquires(udp_hash_lock) |
1557 | { | 1557 | { |
1558 | read_lock(&udp_hash_lock); | 1558 | read_lock(&udp_hash_lock); |
1559 | return *pos ? udp_get_idx(seq, *pos-1) : (void *)1; | 1559 | return *pos ? udp_get_idx(seq, *pos-1) : SEQ_START_TOKEN; |
1560 | } | 1560 | } |
1561 | 1561 | ||
1562 | static void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos) | 1562 | static void *udp_seq_next(struct seq_file *seq, void *v, loff_t *pos) |
1563 | { | 1563 | { |
1564 | struct sock *sk; | 1564 | struct sock *sk; |
1565 | 1565 | ||
1566 | if (v == (void *)1) | 1566 | if (v == SEQ_START_TOKEN) |
1567 | sk = udp_get_idx(seq, 0); | 1567 | sk = udp_get_idx(seq, 0); |
1568 | else | 1568 | else |
1569 | sk = udp_get_next(seq, v); | 1569 | sk = udp_get_next(seq, v); |
diff --git a/net/ipv4/xfrm4_mode_beet.c b/net/ipv4/xfrm4_mode_beet.c index b47030ba162b..9c798abce736 100644 --- a/net/ipv4/xfrm4_mode_beet.c +++ b/net/ipv4/xfrm4_mode_beet.c | |||
@@ -39,13 +39,11 @@ static void xfrm4_beet_make_header(struct sk_buff *skb) | |||
39 | static int xfrm4_beet_output(struct xfrm_state *x, struct sk_buff *skb) | 39 | static int xfrm4_beet_output(struct xfrm_state *x, struct sk_buff *skb) |
40 | { | 40 | { |
41 | struct ip_beet_phdr *ph; | 41 | struct ip_beet_phdr *ph; |
42 | struct iphdr *iph, *top_iph; | 42 | struct iphdr *top_iph; |
43 | int hdrlen, optlen; | 43 | int hdrlen, optlen; |
44 | 44 | ||
45 | iph = ip_hdr(skb); | ||
46 | |||
47 | hdrlen = 0; | 45 | hdrlen = 0; |
48 | optlen = iph->ihl * 4 - sizeof(*iph); | 46 | optlen = XFRM_MODE_SKB_CB(skb)->optlen; |
49 | if (unlikely(optlen)) | 47 | if (unlikely(optlen)) |
50 | hdrlen += IPV4_BEET_PHMAXLEN - (optlen & 4); | 48 | hdrlen += IPV4_BEET_PHMAXLEN - (optlen & 4); |
51 | 49 | ||
@@ -53,11 +51,12 @@ static int xfrm4_beet_output(struct xfrm_state *x, struct sk_buff *skb) | |||
53 | hdrlen); | 51 | hdrlen); |
54 | skb->mac_header = skb->network_header + | 52 | skb->mac_header = skb->network_header + |
55 | offsetof(struct iphdr, protocol); | 53 | offsetof(struct iphdr, protocol); |
56 | skb->transport_header = skb->network_header + sizeof(*iph); | 54 | skb->transport_header = skb->network_header + sizeof(*top_iph); |
57 | 55 | ||
58 | xfrm4_beet_make_header(skb); | 56 | xfrm4_beet_make_header(skb); |
59 | 57 | ||
60 | ph = (struct ip_beet_phdr *)__skb_pull(skb, sizeof(*iph) - hdrlen); | 58 | ph = (struct ip_beet_phdr *) |
59 | __skb_pull(skb, XFRM_MODE_SKB_CB(skb)->ihl - hdrlen); | ||
61 | 60 | ||
62 | top_iph = ip_hdr(skb); | 61 | top_iph = ip_hdr(skb); |
63 | 62 | ||
diff --git a/net/ipv4/xfrm4_mode_tunnel.c b/net/ipv4/xfrm4_mode_tunnel.c index 8dee617ee900..584e6d74e3a9 100644 --- a/net/ipv4/xfrm4_mode_tunnel.c +++ b/net/ipv4/xfrm4_mode_tunnel.c | |||
@@ -41,7 +41,7 @@ static int xfrm4_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) | |||
41 | top_iph->ihl = 5; | 41 | top_iph->ihl = 5; |
42 | top_iph->version = 4; | 42 | top_iph->version = 4; |
43 | 43 | ||
44 | top_iph->protocol = x->inner_mode->afinfo->proto; | 44 | top_iph->protocol = xfrm_af2proto(skb->dst->ops->family); |
45 | 45 | ||
46 | /* DS disclosed */ | 46 | /* DS disclosed */ |
47 | top_iph->tos = INET_ECN_encapsulate(XFRM_MODE_SKB_CB(skb)->tos, | 47 | top_iph->tos = INET_ECN_encapsulate(XFRM_MODE_SKB_CB(skb)->tos, |
diff --git a/net/ipv4/xfrm4_output.c b/net/ipv4/xfrm4_output.c index d5a58a818021..8c3180adddbf 100644 --- a/net/ipv4/xfrm4_output.c +++ b/net/ipv4/xfrm4_output.c | |||
@@ -56,7 +56,7 @@ int xfrm4_prepare_output(struct xfrm_state *x, struct sk_buff *skb) | |||
56 | { | 56 | { |
57 | int err; | 57 | int err; |
58 | 58 | ||
59 | err = x->inner_mode->afinfo->extract_output(x, skb); | 59 | err = xfrm_inner_extract_output(x, skb); |
60 | if (err) | 60 | if (err) |
61 | return err; | 61 | return err; |
62 | 62 | ||
diff --git a/net/ipv4/xfrm4_state.c b/net/ipv4/xfrm4_state.c index fdeebe68a379..07735ed280d7 100644 --- a/net/ipv4/xfrm4_state.c +++ b/net/ipv4/xfrm4_state.c | |||
@@ -52,10 +52,12 @@ int xfrm4_extract_header(struct sk_buff *skb) | |||
52 | { | 52 | { |
53 | struct iphdr *iph = ip_hdr(skb); | 53 | struct iphdr *iph = ip_hdr(skb); |
54 | 54 | ||
55 | XFRM_MODE_SKB_CB(skb)->ihl = sizeof(*iph); | ||
55 | XFRM_MODE_SKB_CB(skb)->id = iph->id; | 56 | XFRM_MODE_SKB_CB(skb)->id = iph->id; |
56 | XFRM_MODE_SKB_CB(skb)->frag_off = iph->frag_off; | 57 | XFRM_MODE_SKB_CB(skb)->frag_off = iph->frag_off; |
57 | XFRM_MODE_SKB_CB(skb)->tos = iph->tos; | 58 | XFRM_MODE_SKB_CB(skb)->tos = iph->tos; |
58 | XFRM_MODE_SKB_CB(skb)->ttl = iph->ttl; | 59 | XFRM_MODE_SKB_CB(skb)->ttl = iph->ttl; |
60 | XFRM_MODE_SKB_CB(skb)->optlen = iph->ihl * 4 - sizeof(*iph); | ||
59 | memset(XFRM_MODE_SKB_CB(skb)->flow_lbl, 0, | 61 | memset(XFRM_MODE_SKB_CB(skb)->flow_lbl, 0, |
60 | sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl)); | 62 | sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl)); |
61 | 63 | ||
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 101e0e70ba27..a65935a9afd9 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -776,6 +776,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i | |||
776 | struct inet6_dev *idev = ifp->idev; | 776 | struct inet6_dev *idev = ifp->idev; |
777 | struct in6_addr addr, *tmpaddr; | 777 | struct in6_addr addr, *tmpaddr; |
778 | unsigned long tmp_prefered_lft, tmp_valid_lft, tmp_cstamp, tmp_tstamp; | 778 | unsigned long tmp_prefered_lft, tmp_valid_lft, tmp_cstamp, tmp_tstamp; |
779 | unsigned long regen_advance; | ||
779 | int tmp_plen; | 780 | int tmp_plen; |
780 | int ret = 0; | 781 | int ret = 0; |
781 | int max_addresses; | 782 | int max_addresses; |
@@ -836,8 +837,23 @@ retry: | |||
836 | tmp_tstamp = ifp->tstamp; | 837 | tmp_tstamp = ifp->tstamp; |
837 | spin_unlock_bh(&ifp->lock); | 838 | spin_unlock_bh(&ifp->lock); |
838 | 839 | ||
840 | regen_advance = idev->cnf.regen_max_retry * | ||
841 | idev->cnf.dad_transmits * | ||
842 | idev->nd_parms->retrans_time / HZ; | ||
839 | write_unlock(&idev->lock); | 843 | write_unlock(&idev->lock); |
840 | 844 | ||
845 | /* A temporary address is created only if this calculated Preferred | ||
846 | * Lifetime is greater than REGEN_ADVANCE time units. In particular, | ||
847 | * an implementation must not create a temporary address with a zero | ||
848 | * Preferred Lifetime. | ||
849 | */ | ||
850 | if (tmp_prefered_lft <= regen_advance) { | ||
851 | in6_ifa_put(ifp); | ||
852 | in6_dev_put(idev); | ||
853 | ret = -1; | ||
854 | goto out; | ||
855 | } | ||
856 | |||
841 | addr_flags = IFA_F_TEMPORARY; | 857 | addr_flags = IFA_F_TEMPORARY; |
842 | /* set in addrconf_prefix_rcv() */ | 858 | /* set in addrconf_prefix_rcv() */ |
843 | if (ifp->flags & IFA_F_OPTIMISTIC) | 859 | if (ifp->flags & IFA_F_OPTIMISTIC) |
@@ -1831,6 +1847,9 @@ ok: | |||
1831 | * lifetimes of an existing temporary address | 1847 | * lifetimes of an existing temporary address |
1832 | * when processing a Prefix Information Option. | 1848 | * when processing a Prefix Information Option. |
1833 | */ | 1849 | */ |
1850 | if (ifp != ift->ifpub) | ||
1851 | continue; | ||
1852 | |||
1834 | spin_lock(&ift->lock); | 1853 | spin_lock(&ift->lock); |
1835 | flags = ift->flags; | 1854 | flags = ift->flags; |
1836 | if (ift->valid_lft > valid_lft && | 1855 | if (ift->valid_lft > valid_lft && |
@@ -2437,7 +2456,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2437 | 2456 | ||
2438 | ASSERT_RTNL(); | 2457 | ASSERT_RTNL(); |
2439 | 2458 | ||
2440 | if (dev == init_net.loopback_dev && how == 1) | 2459 | if ((dev->flags & IFF_LOOPBACK) && how == 1) |
2441 | how = 0; | 2460 | how = 0; |
2442 | 2461 | ||
2443 | rt6_ifdown(dev); | 2462 | rt6_ifdown(dev); |
@@ -2450,7 +2469,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2450 | /* Step 1: remove reference to ipv6 device from parent device. | 2469 | /* Step 1: remove reference to ipv6 device from parent device. |
2451 | Do not dev_put! | 2470 | Do not dev_put! |
2452 | */ | 2471 | */ |
2453 | if (how == 1) { | 2472 | if (how) { |
2454 | idev->dead = 1; | 2473 | idev->dead = 1; |
2455 | 2474 | ||
2456 | /* protected by rtnl_lock */ | 2475 | /* protected by rtnl_lock */ |
@@ -2482,12 +2501,12 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2482 | write_lock_bh(&idev->lock); | 2501 | write_lock_bh(&idev->lock); |
2483 | 2502 | ||
2484 | /* Step 3: clear flags for stateless addrconf */ | 2503 | /* Step 3: clear flags for stateless addrconf */ |
2485 | if (how != 1) | 2504 | if (!how) |
2486 | idev->if_flags &= ~(IF_RS_SENT|IF_RA_RCVD|IF_READY); | 2505 | idev->if_flags &= ~(IF_RS_SENT|IF_RA_RCVD|IF_READY); |
2487 | 2506 | ||
2488 | /* Step 4: clear address list */ | 2507 | /* Step 4: clear address list */ |
2489 | #ifdef CONFIG_IPV6_PRIVACY | 2508 | #ifdef CONFIG_IPV6_PRIVACY |
2490 | if (how == 1 && del_timer(&idev->regen_timer)) | 2509 | if (how && del_timer(&idev->regen_timer)) |
2491 | in6_dev_put(idev); | 2510 | in6_dev_put(idev); |
2492 | 2511 | ||
2493 | /* clear tempaddr list */ | 2512 | /* clear tempaddr list */ |
@@ -2524,7 +2543,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2524 | 2543 | ||
2525 | /* Step 5: Discard multicast list */ | 2544 | /* Step 5: Discard multicast list */ |
2526 | 2545 | ||
2527 | if (how == 1) | 2546 | if (how) |
2528 | ipv6_mc_destroy_dev(idev); | 2547 | ipv6_mc_destroy_dev(idev); |
2529 | else | 2548 | else |
2530 | ipv6_mc_down(idev); | 2549 | ipv6_mc_down(idev); |
@@ -2533,7 +2552,7 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2533 | 2552 | ||
2534 | /* Shot the device (if unregistered) */ | 2553 | /* Shot the device (if unregistered) */ |
2535 | 2554 | ||
2536 | if (how == 1) { | 2555 | if (how) { |
2537 | addrconf_sysctl_unregister(idev); | 2556 | addrconf_sysctl_unregister(idev); |
2538 | neigh_parms_release(&nd_tbl, idev->nd_parms); | 2557 | neigh_parms_release(&nd_tbl, idev->nd_parms); |
2539 | neigh_ifdown(&nd_tbl, dev); | 2558 | neigh_ifdown(&nd_tbl, dev); |
diff --git a/net/ipv6/anycast.c b/net/ipv6/anycast.c index 9c7f83fbc3a1..e5f56c953b58 100644 --- a/net/ipv6/anycast.c +++ b/net/ipv6/anycast.c | |||
@@ -334,9 +334,7 @@ int ipv6_dev_ac_inc(struct net_device *dev, struct in6_addr *addr) | |||
334 | idev->ac_list = aca; | 334 | idev->ac_list = aca; |
335 | write_unlock_bh(&idev->lock); | 335 | write_unlock_bh(&idev->lock); |
336 | 336 | ||
337 | dst_hold(&rt->u.dst); | 337 | ip6_ins_rt(rt); |
338 | if (ip6_ins_rt(rt)) | ||
339 | dst_release(&rt->u.dst); | ||
340 | 338 | ||
341 | addrconf_join_solict(dev, &aca->aca_addr); | 339 | addrconf_join_solict(dev, &aca->aca_addr); |
342 | 340 | ||
@@ -378,10 +376,7 @@ int __ipv6_dev_ac_dec(struct inet6_dev *idev, struct in6_addr *addr) | |||
378 | addrconf_leave_solict(idev, &aca->aca_addr); | 376 | addrconf_leave_solict(idev, &aca->aca_addr); |
379 | 377 | ||
380 | dst_hold(&aca->aca_rt->u.dst); | 378 | dst_hold(&aca->aca_rt->u.dst); |
381 | if (ip6_del_rt(aca->aca_rt)) | 379 | ip6_del_rt(aca->aca_rt); |
382 | dst_free(&aca->aca_rt->u.dst); | ||
383 | else | ||
384 | dst_release(&aca->aca_rt->u.dst); | ||
385 | 380 | ||
386 | aca_put(aca); | 381 | aca_put(aca); |
387 | return 0; | 382 | return 0; |
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 0ec1402320ea..c6bb4c6d24b3 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
@@ -282,7 +282,7 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb) | |||
282 | struct scatterlist *sg; | 282 | struct scatterlist *sg; |
283 | struct scatterlist *asg; | 283 | struct scatterlist *asg; |
284 | 284 | ||
285 | if (!pskb_may_pull(skb, sizeof(*esph))) { | 285 | if (!pskb_may_pull(skb, sizeof(*esph) + crypto_aead_ivsize(aead))) { |
286 | ret = -EINVAL; | 286 | ret = -EINVAL; |
287 | goto out; | 287 | goto out; |
288 | } | 288 | } |
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c index 121d517bf91c..893287ecc628 100644 --- a/net/ipv6/icmp.c +++ b/net/ipv6/icmp.c | |||
@@ -436,24 +436,26 @@ void icmpv6_send(struct sk_buff *skb, int type, int code, __u32 info, | |||
436 | } | 436 | } |
437 | 437 | ||
438 | if (xfrm_decode_session_reverse(skb, &fl2, AF_INET6)) | 438 | if (xfrm_decode_session_reverse(skb, &fl2, AF_INET6)) |
439 | goto out; | 439 | goto relookup_failed; |
440 | 440 | ||
441 | if (ip6_dst_lookup(sk, &dst2, &fl)) | 441 | if (ip6_dst_lookup(sk, &dst2, &fl)) |
442 | goto out; | 442 | goto relookup_failed; |
443 | 443 | ||
444 | err = xfrm_lookup(&dst2, &fl, sk, XFRM_LOOKUP_ICMP); | 444 | err = xfrm_lookup(&dst2, &fl, sk, XFRM_LOOKUP_ICMP); |
445 | if (err == -ENOENT) { | 445 | switch (err) { |
446 | case 0: | ||
447 | dst_release(dst); | ||
448 | dst = dst2; | ||
449 | break; | ||
450 | case -EPERM: | ||
451 | goto out_dst_release; | ||
452 | default: | ||
453 | relookup_failed: | ||
446 | if (!dst) | 454 | if (!dst) |
447 | goto out; | 455 | goto out; |
448 | goto route_done; | 456 | break; |
449 | } | 457 | } |
450 | 458 | ||
451 | dst_release(dst); | ||
452 | dst = dst2; | ||
453 | |||
454 | if (err) | ||
455 | goto out; | ||
456 | |||
457 | route_done: | 459 | route_done: |
458 | if (ipv6_addr_is_multicast(&fl.fl6_dst)) | 460 | if (ipv6_addr_is_multicast(&fl.fl6_dst)) |
459 | hlimit = np->mcast_hops; | 461 | hlimit = np->mcast_hops; |
diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c index 178aebc0427a..98ab4f459905 100644 --- a/net/ipv6/ip6_input.c +++ b/net/ipv6/ip6_input.c | |||
@@ -239,8 +239,7 @@ int ip6_mc_input(struct sk_buff *skb) | |||
239 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS); | 239 | IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS); |
240 | 240 | ||
241 | hdr = ipv6_hdr(skb); | 241 | hdr = ipv6_hdr(skb); |
242 | deliver = unlikely(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI)) || | 242 | deliver = ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL); |
243 | ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL); | ||
244 | 243 | ||
245 | /* | 244 | /* |
246 | * IPv6 multicast router mode isnt currently supported. | 245 | * IPv6 multicast router mode isnt currently supported. |
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 51557c27a0cd..452a2ac4eec8 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -676,6 +676,20 @@ static void ndisc_solicit(struct neighbour *neigh, struct sk_buff *skb) | |||
676 | } | 676 | } |
677 | } | 677 | } |
678 | 678 | ||
679 | static struct pneigh_entry *pndisc_check_router(struct net_device *dev, | ||
680 | struct in6_addr *addr, int *is_router) | ||
681 | { | ||
682 | struct pneigh_entry *n; | ||
683 | |||
684 | read_lock_bh(&nd_tbl.lock); | ||
685 | n = __pneigh_lookup(&nd_tbl, &init_net, addr, dev); | ||
686 | if (n != NULL) | ||
687 | *is_router = (n->flags & NTF_ROUTER); | ||
688 | read_unlock_bh(&nd_tbl.lock); | ||
689 | |||
690 | return n; | ||
691 | } | ||
692 | |||
679 | static void ndisc_recv_ns(struct sk_buff *skb) | 693 | static void ndisc_recv_ns(struct sk_buff *skb) |
680 | { | 694 | { |
681 | struct nd_msg *msg = (struct nd_msg *)skb_transport_header(skb); | 695 | struct nd_msg *msg = (struct nd_msg *)skb_transport_header(skb); |
@@ -692,7 +706,7 @@ static void ndisc_recv_ns(struct sk_buff *skb) | |||
692 | struct pneigh_entry *pneigh = NULL; | 706 | struct pneigh_entry *pneigh = NULL; |
693 | int dad = ipv6_addr_any(saddr); | 707 | int dad = ipv6_addr_any(saddr); |
694 | int inc; | 708 | int inc; |
695 | int is_router; | 709 | int is_router = 0; |
696 | 710 | ||
697 | if (ipv6_addr_is_multicast(&msg->target)) { | 711 | if (ipv6_addr_is_multicast(&msg->target)) { |
698 | ND_PRINTK2(KERN_WARNING | 712 | ND_PRINTK2(KERN_WARNING |
@@ -790,8 +804,8 @@ static void ndisc_recv_ns(struct sk_buff *skb) | |||
790 | if (ipv6_chk_acast_addr(dev, &msg->target) || | 804 | if (ipv6_chk_acast_addr(dev, &msg->target) || |
791 | (idev->cnf.forwarding && | 805 | (idev->cnf.forwarding && |
792 | (ipv6_devconf.proxy_ndp || idev->cnf.proxy_ndp) && | 806 | (ipv6_devconf.proxy_ndp || idev->cnf.proxy_ndp) && |
793 | (pneigh = pneigh_lookup(&nd_tbl, &init_net, | 807 | (pneigh = pndisc_check_router(dev, &msg->target, |
794 | &msg->target, dev, 0)) != NULL)) { | 808 | &is_router)) != NULL)) { |
795 | if (!(NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED) && | 809 | if (!(NEIGH_CB(skb)->flags & LOCALLY_ENQUEUED) && |
796 | skb->pkt_type != PACKET_HOST && | 810 | skb->pkt_type != PACKET_HOST && |
797 | inc != 0 && | 811 | inc != 0 && |
@@ -812,7 +826,7 @@ static void ndisc_recv_ns(struct sk_buff *skb) | |||
812 | goto out; | 826 | goto out; |
813 | } | 827 | } |
814 | 828 | ||
815 | is_router = !!(pneigh ? pneigh->flags & NTF_ROUTER : idev->cnf.forwarding); | 829 | is_router = !!(pneigh ? is_router : idev->cnf.forwarding); |
816 | 830 | ||
817 | if (dad) { | 831 | if (dad) { |
818 | struct in6_addr maddr; | 832 | struct in6_addr maddr; |
diff --git a/net/ipv6/netfilter/ip6_queue.c b/net/ipv6/netfilter/ip6_queue.c index cc2f9afcf808..8d366f7f2a9a 100644 --- a/net/ipv6/netfilter/ip6_queue.c +++ b/net/ipv6/netfilter/ip6_queue.c | |||
@@ -591,11 +591,9 @@ static int __init ip6_queue_init(void) | |||
591 | } | 591 | } |
592 | 592 | ||
593 | #ifdef CONFIG_PROC_FS | 593 | #ifdef CONFIG_PROC_FS |
594 | proc = create_proc_entry(IPQ_PROC_FS_NAME, 0, init_net.proc_net); | 594 | proc = proc_create(IPQ_PROC_FS_NAME, 0, init_net.proc_net, |
595 | if (proc) { | 595 | &ip6_queue_proc_fops); |
596 | proc->owner = THIS_MODULE; | 596 | if (!proc) { |
597 | proc->proc_fops = &ip6_queue_proc_fops; | ||
598 | } else { | ||
599 | printk(KERN_ERR "ip6_queue: failed to create proc entry\n"); | 597 | printk(KERN_ERR "ip6_queue: failed to create proc entry\n"); |
600 | goto cleanup_ipqnl; | 598 | goto cleanup_ipqnl; |
601 | } | 599 | } |
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c index 2a0d698b24d5..24c0d03095bf 100644 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c | |||
@@ -171,7 +171,9 @@ static __inline__ void fq_kill(struct nf_ct_frag6_queue *fq) | |||
171 | 171 | ||
172 | static void nf_ct_frag6_evictor(void) | 172 | static void nf_ct_frag6_evictor(void) |
173 | { | 173 | { |
174 | local_bh_disable(); | ||
174 | inet_frag_evictor(&nf_init_frags, &nf_frags); | 175 | inet_frag_evictor(&nf_init_frags, &nf_frags); |
176 | local_bh_enable(); | ||
175 | } | 177 | } |
176 | 178 | ||
177 | static void nf_ct_frag6_expire(unsigned long data) | 179 | static void nf_ct_frag6_expire(unsigned long data) |
diff --git a/net/ipv6/xfrm6_mode_beet.c b/net/ipv6/xfrm6_mode_beet.c index 0527d11c1ae3..d6ce400f585f 100644 --- a/net/ipv6/xfrm6_mode_beet.c +++ b/net/ipv6/xfrm6_mode_beet.c | |||
@@ -45,6 +45,7 @@ static int xfrm6_beet_output(struct xfrm_state *x, struct sk_buff *skb) | |||
45 | skb->mac_header = skb->network_header + | 45 | skb->mac_header = skb->network_header + |
46 | offsetof(struct ipv6hdr, nexthdr); | 46 | offsetof(struct ipv6hdr, nexthdr); |
47 | skb->transport_header = skb->network_header + sizeof(*top_iph); | 47 | skb->transport_header = skb->network_header + sizeof(*top_iph); |
48 | __skb_pull(skb, XFRM_MODE_SKB_CB(skb)->ihl); | ||
48 | 49 | ||
49 | xfrm6_beet_make_header(skb); | 50 | xfrm6_beet_make_header(skb); |
50 | 51 | ||
diff --git a/net/ipv6/xfrm6_mode_tunnel.c b/net/ipv6/xfrm6_mode_tunnel.c index 0c742faaa30b..e20529b4c825 100644 --- a/net/ipv6/xfrm6_mode_tunnel.c +++ b/net/ipv6/xfrm6_mode_tunnel.c | |||
@@ -45,7 +45,7 @@ static int xfrm6_mode_tunnel_output(struct xfrm_state *x, struct sk_buff *skb) | |||
45 | 45 | ||
46 | memcpy(top_iph->flow_lbl, XFRM_MODE_SKB_CB(skb)->flow_lbl, | 46 | memcpy(top_iph->flow_lbl, XFRM_MODE_SKB_CB(skb)->flow_lbl, |
47 | sizeof(top_iph->flow_lbl)); | 47 | sizeof(top_iph->flow_lbl)); |
48 | top_iph->nexthdr = x->inner_mode->afinfo->proto; | 48 | top_iph->nexthdr = xfrm_af2proto(skb->dst->ops->family); |
49 | 49 | ||
50 | dsfield = XFRM_MODE_SKB_CB(skb)->tos; | 50 | dsfield = XFRM_MODE_SKB_CB(skb)->tos; |
51 | dsfield = INET_ECN_encapsulate(dsfield, dsfield); | 51 | dsfield = INET_ECN_encapsulate(dsfield, dsfield); |
diff --git a/net/ipv6/xfrm6_output.c b/net/ipv6/xfrm6_output.c index 79ccfb080733..0af823cf7f1f 100644 --- a/net/ipv6/xfrm6_output.c +++ b/net/ipv6/xfrm6_output.c | |||
@@ -62,7 +62,7 @@ int xfrm6_prepare_output(struct xfrm_state *x, struct sk_buff *skb) | |||
62 | { | 62 | { |
63 | int err; | 63 | int err; |
64 | 64 | ||
65 | err = x->inner_mode->afinfo->extract_output(x, skb); | 65 | err = xfrm_inner_extract_output(x, skb); |
66 | if (err) | 66 | if (err) |
67 | return err; | 67 | return err; |
68 | 68 | ||
diff --git a/net/ipv6/xfrm6_state.c b/net/ipv6/xfrm6_state.c index dc817e035e23..ff1e1db8e236 100644 --- a/net/ipv6/xfrm6_state.c +++ b/net/ipv6/xfrm6_state.c | |||
@@ -174,10 +174,12 @@ int xfrm6_extract_header(struct sk_buff *skb) | |||
174 | { | 174 | { |
175 | struct ipv6hdr *iph = ipv6_hdr(skb); | 175 | struct ipv6hdr *iph = ipv6_hdr(skb); |
176 | 176 | ||
177 | XFRM_MODE_SKB_CB(skb)->ihl = sizeof(*iph); | ||
177 | XFRM_MODE_SKB_CB(skb)->id = 0; | 178 | XFRM_MODE_SKB_CB(skb)->id = 0; |
178 | XFRM_MODE_SKB_CB(skb)->frag_off = htons(IP_DF); | 179 | XFRM_MODE_SKB_CB(skb)->frag_off = htons(IP_DF); |
179 | XFRM_MODE_SKB_CB(skb)->tos = ipv6_get_dsfield(iph); | 180 | XFRM_MODE_SKB_CB(skb)->tos = ipv6_get_dsfield(iph); |
180 | XFRM_MODE_SKB_CB(skb)->ttl = iph->hop_limit; | 181 | XFRM_MODE_SKB_CB(skb)->ttl = iph->hop_limit; |
182 | XFRM_MODE_SKB_CB(skb)->optlen = 0; | ||
181 | memcpy(XFRM_MODE_SKB_CB(skb)->flow_lbl, iph->flow_lbl, | 183 | memcpy(XFRM_MODE_SKB_CB(skb)->flow_lbl, iph->flow_lbl, |
182 | sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl)); | 184 | sizeof(XFRM_MODE_SKB_CB(skb)->flow_lbl)); |
183 | 185 | ||
diff --git a/net/irda/irnet/irnet.h b/net/irda/irnet/irnet.h index bc2e15ce7004..7873c392ab4c 100644 --- a/net/irda/irnet/irnet.h +++ b/net/irda/irnet/irnet.h | |||
@@ -405,7 +405,7 @@ typedef struct irnet_socket | |||
405 | /* "pppd" interact directly with us on a /dev/ file */ | 405 | /* "pppd" interact directly with us on a /dev/ file */ |
406 | struct file * file; /* File descriptor of this instance */ | 406 | struct file * file; /* File descriptor of this instance */ |
407 | /* TTY stuff - to keep "pppd" happy */ | 407 | /* TTY stuff - to keep "pppd" happy */ |
408 | struct termios termios; /* Various tty flags */ | 408 | struct ktermios termios; /* Various tty flags */ |
409 | /* Stuff for the control channel */ | 409 | /* Stuff for the control channel */ |
410 | int event_index; /* Last read in the event log */ | 410 | int event_index; /* Last read in the event log */ |
411 | 411 | ||
diff --git a/net/key/af_key.c b/net/key/af_key.c index 8b5f486ac80f..e9ef9af4a53b 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c | |||
@@ -1219,7 +1219,7 @@ static struct xfrm_state * pfkey_msg2xfrm_state(struct sadb_msg *hdr, | |||
1219 | x->sel.prefixlen_s = addr->sadb_address_prefixlen; | 1219 | x->sel.prefixlen_s = addr->sadb_address_prefixlen; |
1220 | } | 1220 | } |
1221 | 1221 | ||
1222 | if (!x->sel.family) | 1222 | if (x->props.mode == XFRM_MODE_TRANSPORT) |
1223 | x->sel.family = x->props.family; | 1223 | x->sel.family = x->props.family; |
1224 | 1224 | ||
1225 | if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) { | 1225 | if (ext_hdrs[SADB_X_EXT_NAT_T_TYPE-1]) { |
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c index 46cf962f7f88..8c50eb430c19 100644 --- a/net/llc/af_llc.c +++ b/net/llc/af_llc.c | |||
@@ -155,6 +155,9 @@ static int llc_ui_create(struct net *net, struct socket *sock, int protocol) | |||
155 | struct sock *sk; | 155 | struct sock *sk; |
156 | int rc = -ESOCKTNOSUPPORT; | 156 | int rc = -ESOCKTNOSUPPORT; |
157 | 157 | ||
158 | if (!capable(CAP_NET_RAW)) | ||
159 | return -EPERM; | ||
160 | |||
158 | if (net != &init_net) | 161 | if (net != &init_net) |
159 | return -EAFNOSUPPORT; | 162 | return -EAFNOSUPPORT; |
160 | 163 | ||
diff --git a/net/llc/llc_c_ac.c b/net/llc/llc_c_ac.c index 860140caa6e0..71a00225bdb3 100644 --- a/net/llc/llc_c_ac.c +++ b/net/llc/llc_c_ac.c | |||
@@ -198,7 +198,7 @@ int llc_conn_ac_send_disc_cmd_p_set_x(struct sock *sk, struct sk_buff *skb) | |||
198 | { | 198 | { |
199 | int rc = -ENOBUFS; | 199 | int rc = -ENOBUFS; |
200 | struct llc_sock *llc = llc_sk(sk); | 200 | struct llc_sock *llc = llc_sk(sk); |
201 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 201 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, 0); |
202 | 202 | ||
203 | if (nskb) { | 203 | if (nskb) { |
204 | struct llc_sap *sap = llc->sap; | 204 | struct llc_sap *sap = llc->sap; |
@@ -223,7 +223,7 @@ int llc_conn_ac_send_dm_rsp_f_set_p(struct sock *sk, struct sk_buff *skb) | |||
223 | { | 223 | { |
224 | int rc = -ENOBUFS; | 224 | int rc = -ENOBUFS; |
225 | struct llc_sock *llc = llc_sk(sk); | 225 | struct llc_sock *llc = llc_sk(sk); |
226 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 226 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, 0); |
227 | 227 | ||
228 | if (nskb) { | 228 | if (nskb) { |
229 | struct llc_sap *sap = llc->sap; | 229 | struct llc_sap *sap = llc->sap; |
@@ -249,7 +249,7 @@ int llc_conn_ac_send_dm_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) | |||
249 | { | 249 | { |
250 | int rc = -ENOBUFS; | 250 | int rc = -ENOBUFS; |
251 | struct llc_sock *llc = llc_sk(sk); | 251 | struct llc_sock *llc = llc_sk(sk); |
252 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 252 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, 0); |
253 | 253 | ||
254 | if (nskb) { | 254 | if (nskb) { |
255 | struct llc_sap *sap = llc->sap; | 255 | struct llc_sap *sap = llc->sap; |
@@ -282,7 +282,8 @@ int llc_conn_ac_send_frmr_rsp_f_set_x(struct sock *sk, struct sk_buff *skb) | |||
282 | llc_pdu_decode_pf_bit(skb, &f_bit); | 282 | llc_pdu_decode_pf_bit(skb, &f_bit); |
283 | else | 283 | else |
284 | f_bit = 0; | 284 | f_bit = 0; |
285 | nskb = llc_alloc_frame(sk, llc->dev); | 285 | nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, |
286 | sizeof(struct llc_frmr_info)); | ||
286 | if (nskb) { | 287 | if (nskb) { |
287 | struct llc_sap *sap = llc->sap; | 288 | struct llc_sap *sap = llc->sap; |
288 | 289 | ||
@@ -306,7 +307,8 @@ int llc_conn_ac_resend_frmr_rsp_f_set_0(struct sock *sk, struct sk_buff *skb) | |||
306 | { | 307 | { |
307 | int rc = -ENOBUFS; | 308 | int rc = -ENOBUFS; |
308 | struct llc_sock *llc = llc_sk(sk); | 309 | struct llc_sock *llc = llc_sk(sk); |
309 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 310 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, |
311 | sizeof(struct llc_frmr_info)); | ||
310 | 312 | ||
311 | if (nskb) { | 313 | if (nskb) { |
312 | struct llc_sap *sap = llc->sap; | 314 | struct llc_sap *sap = llc->sap; |
@@ -336,7 +338,8 @@ int llc_conn_ac_resend_frmr_rsp_f_set_p(struct sock *sk, struct sk_buff *skb) | |||
336 | struct llc_sock *llc = llc_sk(sk); | 338 | struct llc_sock *llc = llc_sk(sk); |
337 | 339 | ||
338 | llc_pdu_decode_pf_bit(skb, &f_bit); | 340 | llc_pdu_decode_pf_bit(skb, &f_bit); |
339 | nskb = llc_alloc_frame(sk, llc->dev); | 341 | nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, |
342 | sizeof(struct llc_frmr_info)); | ||
340 | if (nskb) { | 343 | if (nskb) { |
341 | struct llc_sap *sap = llc->sap; | 344 | struct llc_sap *sap = llc->sap; |
342 | struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); | 345 | struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); |
@@ -424,7 +427,7 @@ int llc_conn_ac_resend_i_xxx_x_set_0_or_send_rr(struct sock *sk, | |||
424 | struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); | 427 | struct llc_pdu_sn *pdu = llc_pdu_sn_hdr(skb); |
425 | int rc = -ENOBUFS; | 428 | int rc = -ENOBUFS; |
426 | struct llc_sock *llc = llc_sk(sk); | 429 | struct llc_sock *llc = llc_sk(sk); |
427 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 430 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, 0); |
428 | 431 | ||
429 | if (nskb) { | 432 | if (nskb) { |
430 | struct llc_sap *sap = llc->sap; | 433 | struct llc_sap *sap = llc->sap; |
@@ -459,7 +462,7 @@ int llc_conn_ac_send_rej_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) | |||
459 | { | 462 | { |
460 | int rc = -ENOBUFS; | 463 | int rc = -ENOBUFS; |
461 | struct llc_sock *llc = llc_sk(sk); | 464 | struct llc_sock *llc = llc_sk(sk); |
462 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 465 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
463 | 466 | ||
464 | if (nskb) { | 467 | if (nskb) { |
465 | struct llc_sap *sap = llc->sap; | 468 | struct llc_sap *sap = llc->sap; |
@@ -483,7 +486,7 @@ int llc_conn_ac_send_rej_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) | |||
483 | { | 486 | { |
484 | int rc = -ENOBUFS; | 487 | int rc = -ENOBUFS; |
485 | struct llc_sock *llc = llc_sk(sk); | 488 | struct llc_sock *llc = llc_sk(sk); |
486 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 489 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
487 | 490 | ||
488 | if (nskb) { | 491 | if (nskb) { |
489 | struct llc_sap *sap = llc->sap; | 492 | struct llc_sap *sap = llc->sap; |
@@ -507,7 +510,7 @@ int llc_conn_ac_send_rej_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) | |||
507 | { | 510 | { |
508 | int rc = -ENOBUFS; | 511 | int rc = -ENOBUFS; |
509 | struct llc_sock *llc = llc_sk(sk); | 512 | struct llc_sock *llc = llc_sk(sk); |
510 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 513 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
511 | 514 | ||
512 | if (nskb) { | 515 | if (nskb) { |
513 | struct llc_sap *sap = llc->sap; | 516 | struct llc_sap *sap = llc->sap; |
@@ -531,7 +534,7 @@ int llc_conn_ac_send_rnr_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) | |||
531 | { | 534 | { |
532 | int rc = -ENOBUFS; | 535 | int rc = -ENOBUFS; |
533 | struct llc_sock *llc = llc_sk(sk); | 536 | struct llc_sock *llc = llc_sk(sk); |
534 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 537 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
535 | 538 | ||
536 | if (nskb) { | 539 | if (nskb) { |
537 | struct llc_sap *sap = llc->sap; | 540 | struct llc_sap *sap = llc->sap; |
@@ -555,7 +558,7 @@ int llc_conn_ac_send_rnr_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) | |||
555 | { | 558 | { |
556 | int rc = -ENOBUFS; | 559 | int rc = -ENOBUFS; |
557 | struct llc_sock *llc = llc_sk(sk); | 560 | struct llc_sock *llc = llc_sk(sk); |
558 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 561 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
559 | 562 | ||
560 | if (nskb) { | 563 | if (nskb) { |
561 | struct llc_sap *sap = llc->sap; | 564 | struct llc_sap *sap = llc->sap; |
@@ -579,7 +582,7 @@ int llc_conn_ac_send_rnr_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) | |||
579 | { | 582 | { |
580 | int rc = -ENOBUFS; | 583 | int rc = -ENOBUFS; |
581 | struct llc_sock *llc = llc_sk(sk); | 584 | struct llc_sock *llc = llc_sk(sk); |
582 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 585 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
583 | 586 | ||
584 | if (nskb) { | 587 | if (nskb) { |
585 | struct llc_sap *sap = llc->sap; | 588 | struct llc_sap *sap = llc->sap; |
@@ -615,7 +618,7 @@ int llc_conn_ac_opt_send_rnr_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) | |||
615 | { | 618 | { |
616 | int rc = -ENOBUFS; | 619 | int rc = -ENOBUFS; |
617 | struct llc_sock *llc = llc_sk(sk); | 620 | struct llc_sock *llc = llc_sk(sk); |
618 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 621 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
619 | 622 | ||
620 | if (nskb) { | 623 | if (nskb) { |
621 | struct llc_sap *sap = llc->sap; | 624 | struct llc_sap *sap = llc->sap; |
@@ -639,7 +642,7 @@ int llc_conn_ac_send_rr_cmd_p_set_1(struct sock *sk, struct sk_buff *skb) | |||
639 | { | 642 | { |
640 | int rc = -ENOBUFS; | 643 | int rc = -ENOBUFS; |
641 | struct llc_sock *llc = llc_sk(sk); | 644 | struct llc_sock *llc = llc_sk(sk); |
642 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 645 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
643 | 646 | ||
644 | if (nskb) { | 647 | if (nskb) { |
645 | struct llc_sap *sap = llc->sap; | 648 | struct llc_sap *sap = llc->sap; |
@@ -663,7 +666,7 @@ int llc_conn_ac_send_rr_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) | |||
663 | { | 666 | { |
664 | int rc = -ENOBUFS; | 667 | int rc = -ENOBUFS; |
665 | struct llc_sock *llc = llc_sk(sk); | 668 | struct llc_sock *llc = llc_sk(sk); |
666 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 669 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
667 | 670 | ||
668 | if (nskb) { | 671 | if (nskb) { |
669 | struct llc_sap *sap = llc->sap; | 672 | struct llc_sap *sap = llc->sap; |
@@ -688,7 +691,7 @@ int llc_conn_ac_send_ack_rsp_f_set_1(struct sock *sk, struct sk_buff *skb) | |||
688 | { | 691 | { |
689 | int rc = -ENOBUFS; | 692 | int rc = -ENOBUFS; |
690 | struct llc_sock *llc = llc_sk(sk); | 693 | struct llc_sock *llc = llc_sk(sk); |
691 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 694 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
692 | 695 | ||
693 | if (nskb) { | 696 | if (nskb) { |
694 | struct llc_sap *sap = llc->sap; | 697 | struct llc_sap *sap = llc->sap; |
@@ -712,7 +715,7 @@ int llc_conn_ac_send_rr_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) | |||
712 | { | 715 | { |
713 | int rc = -ENOBUFS; | 716 | int rc = -ENOBUFS; |
714 | struct llc_sock *llc = llc_sk(sk); | 717 | struct llc_sock *llc = llc_sk(sk); |
715 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 718 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
716 | 719 | ||
717 | if (nskb) { | 720 | if (nskb) { |
718 | struct llc_sap *sap = llc->sap; | 721 | struct llc_sap *sap = llc->sap; |
@@ -736,7 +739,7 @@ int llc_conn_ac_send_ack_xxx_x_set_0(struct sock *sk, struct sk_buff *skb) | |||
736 | { | 739 | { |
737 | int rc = -ENOBUFS; | 740 | int rc = -ENOBUFS; |
738 | struct llc_sock *llc = llc_sk(sk); | 741 | struct llc_sock *llc = llc_sk(sk); |
739 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 742 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
740 | 743 | ||
741 | if (nskb) { | 744 | if (nskb) { |
742 | struct llc_sap *sap = llc->sap; | 745 | struct llc_sap *sap = llc->sap; |
@@ -770,7 +773,7 @@ int llc_conn_ac_send_sabme_cmd_p_set_x(struct sock *sk, struct sk_buff *skb) | |||
770 | { | 773 | { |
771 | int rc = -ENOBUFS; | 774 | int rc = -ENOBUFS; |
772 | struct llc_sock *llc = llc_sk(sk); | 775 | struct llc_sock *llc = llc_sk(sk); |
773 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 776 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, 0); |
774 | 777 | ||
775 | if (nskb) { | 778 | if (nskb) { |
776 | struct llc_sap *sap = llc->sap; | 779 | struct llc_sap *sap = llc->sap; |
@@ -799,7 +802,7 @@ int llc_conn_ac_send_ua_rsp_f_set_p(struct sock *sk, struct sk_buff *skb) | |||
799 | u8 f_bit; | 802 | u8 f_bit; |
800 | int rc = -ENOBUFS; | 803 | int rc = -ENOBUFS; |
801 | struct llc_sock *llc = llc_sk(sk); | 804 | struct llc_sock *llc = llc_sk(sk); |
802 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 805 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_U, 0); |
803 | 806 | ||
804 | llc_pdu_decode_pf_bit(skb, &f_bit); | 807 | llc_pdu_decode_pf_bit(skb, &f_bit); |
805 | if (nskb) { | 808 | if (nskb) { |
@@ -956,7 +959,7 @@ static int llc_conn_ac_send_rr_rsp_f_set_ackpf(struct sock *sk, | |||
956 | { | 959 | { |
957 | int rc = -ENOBUFS; | 960 | int rc = -ENOBUFS; |
958 | struct llc_sock *llc = llc_sk(sk); | 961 | struct llc_sock *llc = llc_sk(sk); |
959 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev); | 962 | struct sk_buff *nskb = llc_alloc_frame(sk, llc->dev, LLC_PDU_TYPE_S, 0); |
960 | 963 | ||
961 | if (nskb) { | 964 | if (nskb) { |
962 | struct llc_sap *sap = llc->sap; | 965 | struct llc_sap *sap = llc->sap; |
diff --git a/net/llc/llc_core.c b/net/llc/llc_core.c index 248b5903bb13..50d5b10e23a2 100644 --- a/net/llc/llc_core.c +++ b/net/llc/llc_core.c | |||
@@ -25,8 +25,6 @@ | |||
25 | LIST_HEAD(llc_sap_list); | 25 | LIST_HEAD(llc_sap_list); |
26 | DEFINE_RWLOCK(llc_sap_list_lock); | 26 | DEFINE_RWLOCK(llc_sap_list_lock); |
27 | 27 | ||
28 | unsigned char llc_station_mac_sa[ETH_ALEN]; | ||
29 | |||
30 | /** | 28 | /** |
31 | * llc_sap_alloc - allocates and initializes sap. | 29 | * llc_sap_alloc - allocates and initializes sap. |
32 | * | 30 | * |
@@ -37,8 +35,8 @@ static struct llc_sap *llc_sap_alloc(void) | |||
37 | struct llc_sap *sap = kzalloc(sizeof(*sap), GFP_ATOMIC); | 35 | struct llc_sap *sap = kzalloc(sizeof(*sap), GFP_ATOMIC); |
38 | 36 | ||
39 | if (sap) { | 37 | if (sap) { |
38 | /* sap->laddr.mac - leave as a null, it's filled by bind */ | ||
40 | sap->state = LLC_SAP_STATE_ACTIVE; | 39 | sap->state = LLC_SAP_STATE_ACTIVE; |
41 | memcpy(sap->laddr.mac, llc_station_mac_sa, ETH_ALEN); | ||
42 | rwlock_init(&sap->sk_list.lock); | 40 | rwlock_init(&sap->sk_list.lock); |
43 | atomic_set(&sap->refcnt, 1); | 41 | atomic_set(&sap->refcnt, 1); |
44 | } | 42 | } |
@@ -167,10 +165,6 @@ static int __init llc_init(void) | |||
167 | if (dev != NULL) | 165 | if (dev != NULL) |
168 | dev = next_net_device(dev); | 166 | dev = next_net_device(dev); |
169 | 167 | ||
170 | if (dev != NULL) | ||
171 | memcpy(llc_station_mac_sa, dev->dev_addr, ETH_ALEN); | ||
172 | else | ||
173 | memset(llc_station_mac_sa, 0, ETH_ALEN); | ||
174 | dev_add_pack(&llc_packet_type); | 168 | dev_add_pack(&llc_packet_type); |
175 | dev_add_pack(&llc_tr_packet_type); | 169 | dev_add_pack(&llc_tr_packet_type); |
176 | return 0; | 170 | return 0; |
@@ -185,7 +179,6 @@ static void __exit llc_exit(void) | |||
185 | module_init(llc_init); | 179 | module_init(llc_init); |
186 | module_exit(llc_exit); | 180 | module_exit(llc_exit); |
187 | 181 | ||
188 | EXPORT_SYMBOL(llc_station_mac_sa); | ||
189 | EXPORT_SYMBOL(llc_sap_list); | 182 | EXPORT_SYMBOL(llc_sap_list); |
190 | EXPORT_SYMBOL(llc_sap_list_lock); | 183 | EXPORT_SYMBOL(llc_sap_list_lock); |
191 | EXPORT_SYMBOL(llc_sap_find); | 184 | EXPORT_SYMBOL(llc_sap_find); |
diff --git a/net/llc/llc_input.c b/net/llc/llc_input.c index c40c9b2a345a..bfd2567dd365 100644 --- a/net/llc/llc_input.c +++ b/net/llc/llc_input.c | |||
@@ -117,8 +117,12 @@ static inline int llc_fixup_skb(struct sk_buff *skb) | |||
117 | skb_pull(skb, llc_len); | 117 | skb_pull(skb, llc_len); |
118 | if (skb->protocol == htons(ETH_P_802_2)) { | 118 | if (skb->protocol == htons(ETH_P_802_2)) { |
119 | __be16 pdulen = eth_hdr(skb)->h_proto; | 119 | __be16 pdulen = eth_hdr(skb)->h_proto; |
120 | u16 data_size = ntohs(pdulen) - llc_len; | 120 | s32 data_size = ntohs(pdulen) - llc_len; |
121 | 121 | ||
122 | if (data_size < 0 || | ||
123 | ((skb_tail_pointer(skb) - | ||
124 | (u8 *)pdu) - llc_len) < data_size) | ||
125 | return 0; | ||
122 | if (unlikely(pskb_trim_rcsum(skb, data_size))) | 126 | if (unlikely(pskb_trim_rcsum(skb, data_size))) |
123 | return 0; | 127 | return 0; |
124 | } | 128 | } |
diff --git a/net/llc/llc_pdu.c b/net/llc/llc_pdu.c index fa8324396db3..2e6cb79196bb 100644 --- a/net/llc/llc_pdu.c +++ b/net/llc/llc_pdu.c | |||
@@ -241,7 +241,7 @@ void llc_pdu_init_as_frmr_rsp(struct sk_buff *skb, struct llc_pdu_sn *prev_pdu, | |||
241 | FRMR_INFO_SET_PDU_INFO_2LONG_IND(frmr_info, vzyxw); | 241 | FRMR_INFO_SET_PDU_INFO_2LONG_IND(frmr_info, vzyxw); |
242 | FRMR_INFO_SET_PDU_INVALID_Nr_IND(frmr_info, vzyxw); | 242 | FRMR_INFO_SET_PDU_INVALID_Nr_IND(frmr_info, vzyxw); |
243 | FRMR_INFO_SET_PDU_INVALID_Ns_IND(frmr_info, vzyxw); | 243 | FRMR_INFO_SET_PDU_INVALID_Ns_IND(frmr_info, vzyxw); |
244 | skb_put(skb, 5); | 244 | skb_put(skb, sizeof(struct llc_frmr_info)); |
245 | } | 245 | } |
246 | 246 | ||
247 | /** | 247 | /** |
diff --git a/net/llc/llc_s_ac.c b/net/llc/llc_s_ac.c index ac3d93b210d2..a94bd56bcac6 100644 --- a/net/llc/llc_s_ac.c +++ b/net/llc/llc_s_ac.c | |||
@@ -103,7 +103,8 @@ int llc_sap_action_send_xid_r(struct llc_sap *sap, struct sk_buff *skb) | |||
103 | llc_pdu_decode_sa(skb, mac_da); | 103 | llc_pdu_decode_sa(skb, mac_da); |
104 | llc_pdu_decode_da(skb, mac_sa); | 104 | llc_pdu_decode_da(skb, mac_sa); |
105 | llc_pdu_decode_ssap(skb, &dsap); | 105 | llc_pdu_decode_ssap(skb, &dsap); |
106 | nskb = llc_alloc_frame(NULL, skb->dev); | 106 | nskb = llc_alloc_frame(NULL, skb->dev, LLC_PDU_TYPE_U, |
107 | sizeof(struct llc_xid_info)); | ||
107 | if (!nskb) | 108 | if (!nskb) |
108 | goto out; | 109 | goto out; |
109 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, dsap, | 110 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, dsap, |
@@ -144,11 +145,15 @@ int llc_sap_action_send_test_r(struct llc_sap *sap, struct sk_buff *skb) | |||
144 | u8 mac_da[ETH_ALEN], mac_sa[ETH_ALEN], dsap; | 145 | u8 mac_da[ETH_ALEN], mac_sa[ETH_ALEN], dsap; |
145 | struct sk_buff *nskb; | 146 | struct sk_buff *nskb; |
146 | int rc = 1; | 147 | int rc = 1; |
148 | u32 data_size; | ||
147 | 149 | ||
148 | llc_pdu_decode_sa(skb, mac_da); | 150 | llc_pdu_decode_sa(skb, mac_da); |
149 | llc_pdu_decode_da(skb, mac_sa); | 151 | llc_pdu_decode_da(skb, mac_sa); |
150 | llc_pdu_decode_ssap(skb, &dsap); | 152 | llc_pdu_decode_ssap(skb, &dsap); |
151 | nskb = llc_alloc_frame(NULL, skb->dev); | 153 | |
154 | /* The test request command is type U (llc_len = 3) */ | ||
155 | data_size = ntohs(eth_hdr(skb)->h_proto) - 3; | ||
156 | nskb = llc_alloc_frame(NULL, skb->dev, LLC_PDU_TYPE_U, data_size); | ||
152 | if (!nskb) | 157 | if (!nskb) |
153 | goto out; | 158 | goto out; |
154 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, dsap, | 159 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, sap->laddr.lsap, dsap, |
diff --git a/net/llc/llc_sap.c b/net/llc/llc_sap.c index 2525165e2e8f..e2ddde755019 100644 --- a/net/llc/llc_sap.c +++ b/net/llc/llc_sap.c | |||
@@ -24,20 +24,41 @@ | |||
24 | #include <net/tcp_states.h> | 24 | #include <net/tcp_states.h> |
25 | #include <linux/llc.h> | 25 | #include <linux/llc.h> |
26 | 26 | ||
27 | static int llc_mac_header_len(unsigned short devtype) | ||
28 | { | ||
29 | switch (devtype) { | ||
30 | case ARPHRD_ETHER: | ||
31 | case ARPHRD_LOOPBACK: | ||
32 | return sizeof(struct ethhdr); | ||
33 | #ifdef CONFIG_TR | ||
34 | case ARPHRD_IEEE802_TR: | ||
35 | return sizeof(struct trh_hdr); | ||
36 | #endif | ||
37 | } | ||
38 | return 0; | ||
39 | } | ||
40 | |||
27 | /** | 41 | /** |
28 | * llc_alloc_frame - allocates sk_buff for frame | 42 | * llc_alloc_frame - allocates sk_buff for frame |
29 | * @dev: network device this skb will be sent over | 43 | * @dev: network device this skb will be sent over |
44 | * @type: pdu type to allocate | ||
45 | * @data_size: data size to allocate | ||
30 | * | 46 | * |
31 | * Allocates an sk_buff for frame and initializes sk_buff fields. | 47 | * Allocates an sk_buff for frame and initializes sk_buff fields. |
32 | * Returns allocated skb or %NULL when out of memory. | 48 | * Returns allocated skb or %NULL when out of memory. |
33 | */ | 49 | */ |
34 | struct sk_buff *llc_alloc_frame(struct sock *sk, struct net_device *dev) | 50 | struct sk_buff *llc_alloc_frame(struct sock *sk, struct net_device *dev, |
51 | u8 type, u32 data_size) | ||
35 | { | 52 | { |
36 | struct sk_buff *skb = alloc_skb(128, GFP_ATOMIC); | 53 | int hlen = type == LLC_PDU_TYPE_U ? 3 : 4; |
54 | struct sk_buff *skb; | ||
55 | |||
56 | hlen += llc_mac_header_len(dev->type); | ||
57 | skb = alloc_skb(hlen + data_size, GFP_ATOMIC); | ||
37 | 58 | ||
38 | if (skb) { | 59 | if (skb) { |
39 | skb_reset_mac_header(skb); | 60 | skb_reset_mac_header(skb); |
40 | skb_reserve(skb, 50); | 61 | skb_reserve(skb, hlen); |
41 | skb_reset_network_header(skb); | 62 | skb_reset_network_header(skb); |
42 | skb_reset_transport_header(skb); | 63 | skb_reset_transport_header(skb); |
43 | skb->protocol = htons(ETH_P_802_2); | 64 | skb->protocol = htons(ETH_P_802_2); |
diff --git a/net/llc/llc_station.c b/net/llc/llc_station.c index 6f2ea2090322..83da13339490 100644 --- a/net/llc/llc_station.c +++ b/net/llc/llc_station.c | |||
@@ -253,13 +253,14 @@ static int llc_station_ac_inc_xid_r_cnt_by_1(struct sk_buff *skb) | |||
253 | static int llc_station_ac_send_null_dsap_xid_c(struct sk_buff *skb) | 253 | static int llc_station_ac_send_null_dsap_xid_c(struct sk_buff *skb) |
254 | { | 254 | { |
255 | int rc = 1; | 255 | int rc = 1; |
256 | struct sk_buff *nskb = llc_alloc_frame(NULL, skb->dev); | 256 | struct sk_buff *nskb = llc_alloc_frame(NULL, skb->dev, LLC_PDU_TYPE_U, |
257 | sizeof(struct llc_xid_info)); | ||
257 | 258 | ||
258 | if (!nskb) | 259 | if (!nskb) |
259 | goto out; | 260 | goto out; |
260 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, 0, LLC_PDU_CMD); | 261 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, 0, LLC_PDU_CMD); |
261 | llc_pdu_init_as_xid_cmd(nskb, LLC_XID_NULL_CLASS_2, 127); | 262 | llc_pdu_init_as_xid_cmd(nskb, LLC_XID_NULL_CLASS_2, 127); |
262 | rc = llc_mac_hdr_init(nskb, llc_station_mac_sa, llc_station_mac_sa); | 263 | rc = llc_mac_hdr_init(nskb, skb->dev->dev_addr, skb->dev->dev_addr); |
263 | if (unlikely(rc)) | 264 | if (unlikely(rc)) |
264 | goto free; | 265 | goto free; |
265 | llc_station_send_pdu(nskb); | 266 | llc_station_send_pdu(nskb); |
@@ -274,7 +275,8 @@ static int llc_station_ac_send_xid_r(struct sk_buff *skb) | |||
274 | { | 275 | { |
275 | u8 mac_da[ETH_ALEN], dsap; | 276 | u8 mac_da[ETH_ALEN], dsap; |
276 | int rc = 1; | 277 | int rc = 1; |
277 | struct sk_buff* nskb = llc_alloc_frame(NULL, skb->dev); | 278 | struct sk_buff *nskb = llc_alloc_frame(NULL, skb->dev, LLC_PDU_TYPE_U, |
279 | sizeof(struct llc_xid_info)); | ||
278 | 280 | ||
279 | if (!nskb) | 281 | if (!nskb) |
280 | goto out; | 282 | goto out; |
@@ -283,7 +285,7 @@ static int llc_station_ac_send_xid_r(struct sk_buff *skb) | |||
283 | llc_pdu_decode_ssap(skb, &dsap); | 285 | llc_pdu_decode_ssap(skb, &dsap); |
284 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); | 286 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); |
285 | llc_pdu_init_as_xid_rsp(nskb, LLC_XID_NULL_CLASS_2, 127); | 287 | llc_pdu_init_as_xid_rsp(nskb, LLC_XID_NULL_CLASS_2, 127); |
286 | rc = llc_mac_hdr_init(nskb, llc_station_mac_sa, mac_da); | 288 | rc = llc_mac_hdr_init(nskb, skb->dev->dev_addr, mac_da); |
287 | if (unlikely(rc)) | 289 | if (unlikely(rc)) |
288 | goto free; | 290 | goto free; |
289 | llc_station_send_pdu(nskb); | 291 | llc_station_send_pdu(nskb); |
@@ -298,7 +300,12 @@ static int llc_station_ac_send_test_r(struct sk_buff *skb) | |||
298 | { | 300 | { |
299 | u8 mac_da[ETH_ALEN], dsap; | 301 | u8 mac_da[ETH_ALEN], dsap; |
300 | int rc = 1; | 302 | int rc = 1; |
301 | struct sk_buff *nskb = llc_alloc_frame(NULL, skb->dev); | 303 | u32 data_size; |
304 | struct sk_buff *nskb; | ||
305 | |||
306 | /* The test request command is type U (llc_len = 3) */ | ||
307 | data_size = ntohs(eth_hdr(skb)->h_proto) - 3; | ||
308 | nskb = llc_alloc_frame(NULL, skb->dev, LLC_PDU_TYPE_U, data_size); | ||
302 | 309 | ||
303 | if (!nskb) | 310 | if (!nskb) |
304 | goto out; | 311 | goto out; |
@@ -307,7 +314,7 @@ static int llc_station_ac_send_test_r(struct sk_buff *skb) | |||
307 | llc_pdu_decode_ssap(skb, &dsap); | 314 | llc_pdu_decode_ssap(skb, &dsap); |
308 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); | 315 | llc_pdu_header_init(nskb, LLC_PDU_TYPE_U, 0, dsap, LLC_PDU_RSP); |
309 | llc_pdu_init_as_test_rsp(nskb, skb); | 316 | llc_pdu_init_as_test_rsp(nskb, skb); |
310 | rc = llc_mac_hdr_init(nskb, llc_station_mac_sa, mac_da); | 317 | rc = llc_mac_hdr_init(nskb, skb->dev->dev_addr, mac_da); |
311 | if (unlikely(rc)) | 318 | if (unlikely(rc)) |
312 | goto free; | 319 | goto free; |
313 | llc_station_send_pdu(nskb); | 320 | llc_station_send_pdu(nskb); |
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c index 28bcdf9fc3df..8e586390a2ef 100644 --- a/net/mac80211/ieee80211.c +++ b/net/mac80211/ieee80211.c | |||
@@ -286,6 +286,18 @@ static int ieee80211_open(struct net_device *dev) | |||
286 | if (need_hw_reconfig) | 286 | if (need_hw_reconfig) |
287 | ieee80211_hw_config(local); | 287 | ieee80211_hw_config(local); |
288 | 288 | ||
289 | /* | ||
290 | * ieee80211_sta_work is disabled while network interface | ||
291 | * is down. Therefore, some configuration changes may not | ||
292 | * yet be effective. Trigger execution of ieee80211_sta_work | ||
293 | * to fix this. | ||
294 | */ | ||
295 | if(sdata->vif.type == IEEE80211_IF_TYPE_STA || | ||
296 | sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { | ||
297 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; | ||
298 | queue_work(local->hw.workqueue, &ifsta->work); | ||
299 | } | ||
300 | |||
289 | netif_start_queue(dev); | 301 | netif_start_queue(dev); |
290 | 302 | ||
291 | return 0; | 303 | return 0; |
diff --git a/net/mac80211/ieee80211_sta.c b/net/mac80211/ieee80211_sta.c index 9aeed5320228..c1706855460a 100644 --- a/net/mac80211/ieee80211_sta.c +++ b/net/mac80211/ieee80211_sta.c | |||
@@ -312,14 +312,12 @@ static void ieee80211_sta_wmm_params(struct net_device *dev, | |||
312 | } | 312 | } |
313 | } | 313 | } |
314 | 314 | ||
315 | 315 | static u32 ieee80211_handle_protect_preamb(struct ieee80211_sub_if_data *sdata, | |
316 | static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata, | 316 | bool use_protection, |
317 | u8 erp_value) | 317 | bool use_short_preamble) |
318 | { | 318 | { |
319 | struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; | 319 | struct ieee80211_bss_conf *bss_conf = &sdata->bss_conf; |
320 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; | 320 | struct ieee80211_if_sta *ifsta = &sdata->u.sta; |
321 | bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0; | ||
322 | bool preamble_mode = (erp_value & WLAN_ERP_BARKER_PREAMBLE) != 0; | ||
323 | DECLARE_MAC_BUF(mac); | 321 | DECLARE_MAC_BUF(mac); |
324 | u32 changed = 0; | 322 | u32 changed = 0; |
325 | 323 | ||
@@ -335,22 +333,47 @@ static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata, | |||
335 | changed |= BSS_CHANGED_ERP_CTS_PROT; | 333 | changed |= BSS_CHANGED_ERP_CTS_PROT; |
336 | } | 334 | } |
337 | 335 | ||
338 | if (preamble_mode != bss_conf->use_short_preamble) { | 336 | if (use_short_preamble != bss_conf->use_short_preamble) { |
339 | if (net_ratelimit()) { | 337 | if (net_ratelimit()) { |
340 | printk(KERN_DEBUG "%s: switched to %s barker preamble" | 338 | printk(KERN_DEBUG "%s: switched to %s barker preamble" |
341 | " (BSSID=%s)\n", | 339 | " (BSSID=%s)\n", |
342 | sdata->dev->name, | 340 | sdata->dev->name, |
343 | (preamble_mode == WLAN_ERP_PREAMBLE_SHORT) ? | 341 | use_short_preamble ? "short" : "long", |
344 | "short" : "long", | ||
345 | print_mac(mac, ifsta->bssid)); | 342 | print_mac(mac, ifsta->bssid)); |
346 | } | 343 | } |
347 | bss_conf->use_short_preamble = preamble_mode; | 344 | bss_conf->use_short_preamble = use_short_preamble; |
348 | changed |= BSS_CHANGED_ERP_PREAMBLE; | 345 | changed |= BSS_CHANGED_ERP_PREAMBLE; |
349 | } | 346 | } |
350 | 347 | ||
351 | return changed; | 348 | return changed; |
352 | } | 349 | } |
353 | 350 | ||
351 | static u32 ieee80211_handle_erp_ie(struct ieee80211_sub_if_data *sdata, | ||
352 | u8 erp_value) | ||
353 | { | ||
354 | bool use_protection = (erp_value & WLAN_ERP_USE_PROTECTION) != 0; | ||
355 | bool use_short_preamble = (erp_value & WLAN_ERP_BARKER_PREAMBLE) == 0; | ||
356 | |||
357 | return ieee80211_handle_protect_preamb(sdata, | ||
358 | use_protection, use_short_preamble); | ||
359 | } | ||
360 | |||
361 | static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata, | ||
362 | struct ieee80211_sta_bss *bss) | ||
363 | { | ||
364 | u32 changed = 0; | ||
365 | |||
366 | if (bss->has_erp_value) | ||
367 | changed |= ieee80211_handle_erp_ie(sdata, bss->erp_value); | ||
368 | else { | ||
369 | u16 capab = bss->capability; | ||
370 | changed |= ieee80211_handle_protect_preamb(sdata, false, | ||
371 | (capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0); | ||
372 | } | ||
373 | |||
374 | return changed; | ||
375 | } | ||
376 | |||
354 | int ieee80211_ht_cap_ie_to_ht_info(struct ieee80211_ht_cap *ht_cap_ie, | 377 | int ieee80211_ht_cap_ie_to_ht_info(struct ieee80211_ht_cap *ht_cap_ie, |
355 | struct ieee80211_ht_info *ht_info) | 378 | struct ieee80211_ht_info *ht_info) |
356 | { | 379 | { |
@@ -469,9 +492,7 @@ static void ieee80211_set_associated(struct net_device *dev, | |||
469 | local->hw.conf.channel, | 492 | local->hw.conf.channel, |
470 | ifsta->ssid, ifsta->ssid_len); | 493 | ifsta->ssid, ifsta->ssid_len); |
471 | if (bss) { | 494 | if (bss) { |
472 | if (bss->has_erp_value) | 495 | changed |= ieee80211_handle_bss_capability(sdata, bss); |
473 | changed |= ieee80211_handle_erp_ie( | ||
474 | sdata, bss->erp_value); | ||
475 | ieee80211_rx_bss_put(dev, bss); | 496 | ieee80211_rx_bss_put(dev, bss); |
476 | } | 497 | } |
477 | 498 | ||
@@ -2117,6 +2138,11 @@ static void ieee80211_rx_mgmt_beacon(struct net_device *dev, | |||
2117 | 2138 | ||
2118 | if (elems.erp_info && elems.erp_info_len >= 1) | 2139 | if (elems.erp_info && elems.erp_info_len >= 1) |
2119 | changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); | 2140 | changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); |
2141 | else { | ||
2142 | u16 capab = le16_to_cpu(mgmt->u.beacon.capab_info); | ||
2143 | changed |= ieee80211_handle_protect_preamb(sdata, false, | ||
2144 | (capab & WLAN_CAPABILITY_SHORT_PREAMBLE) != 0); | ||
2145 | } | ||
2120 | 2146 | ||
2121 | if (elems.ht_cap_elem && elems.ht_info_elem && | 2147 | if (elems.ht_cap_elem && elems.ht_info_elem && |
2122 | elems.wmm_param && local->ops->conf_ht && | 2148 | elems.wmm_param && local->ops->conf_ht && |
diff --git a/net/netfilter/nf_conntrack_standalone.c b/net/netfilter/nf_conntrack_standalone.c index e88e96af613d..8599068050ec 100644 --- a/net/netfilter/nf_conntrack_standalone.c +++ b/net/netfilter/nf_conntrack_standalone.c | |||
@@ -395,7 +395,7 @@ EXPORT_SYMBOL_GPL(nf_ct_log_invalid); | |||
395 | static int __init nf_conntrack_standalone_init(void) | 395 | static int __init nf_conntrack_standalone_init(void) |
396 | { | 396 | { |
397 | #ifdef CONFIG_PROC_FS | 397 | #ifdef CONFIG_PROC_FS |
398 | struct proc_dir_entry *proc, *proc_stat; | 398 | struct proc_dir_entry *proc; |
399 | #endif | 399 | #endif |
400 | int ret = 0; | 400 | int ret = 0; |
401 | 401 | ||
@@ -407,12 +407,9 @@ static int __init nf_conntrack_standalone_init(void) | |||
407 | proc = proc_net_fops_create(&init_net, "nf_conntrack", 0440, &ct_file_ops); | 407 | proc = proc_net_fops_create(&init_net, "nf_conntrack", 0440, &ct_file_ops); |
408 | if (!proc) goto cleanup_init; | 408 | if (!proc) goto cleanup_init; |
409 | 409 | ||
410 | proc_stat = create_proc_entry("nf_conntrack", S_IRUGO, init_net.proc_net_stat); | 410 | if (!proc_create("nf_conntrack", S_IRUGO, |
411 | if (!proc_stat) | 411 | init_net.proc_net_stat, &ct_cpu_seq_fops)) |
412 | goto cleanup_proc; | 412 | goto cleanup_proc; |
413 | |||
414 | proc_stat->proc_fops = &ct_cpu_seq_fops; | ||
415 | proc_stat->owner = THIS_MODULE; | ||
416 | #endif | 413 | #endif |
417 | #ifdef CONFIG_SYSCTL | 414 | #ifdef CONFIG_SYSCTL |
418 | nf_ct_sysctl_header = register_sysctl_paths(nf_ct_path, | 415 | nf_ct_sysctl_header = register_sysctl_paths(nf_ct_path, |
diff --git a/net/netfilter/nf_log.c b/net/netfilter/nf_log.c index cec9976aecbf..bc11d7092032 100644 --- a/net/netfilter/nf_log.c +++ b/net/netfilter/nf_log.c | |||
@@ -168,13 +168,9 @@ static const struct file_operations nflog_file_ops = { | |||
168 | int __init netfilter_log_init(void) | 168 | int __init netfilter_log_init(void) |
169 | { | 169 | { |
170 | #ifdef CONFIG_PROC_FS | 170 | #ifdef CONFIG_PROC_FS |
171 | struct proc_dir_entry *pde; | 171 | if (!proc_create("nf_log", S_IRUGO, |
172 | 172 | proc_net_netfilter, &nflog_file_ops)) | |
173 | pde = create_proc_entry("nf_log", S_IRUGO, proc_net_netfilter); | ||
174 | if (!pde) | ||
175 | return -1; | 173 | return -1; |
176 | |||
177 | pde->proc_fops = &nflog_file_ops; | ||
178 | #endif | 174 | #endif |
179 | return 0; | 175 | return 0; |
180 | } | 176 | } |
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c index ddc80ea114cd..bbd26893c0c4 100644 --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c | |||
@@ -348,12 +348,9 @@ static const struct file_operations nfqueue_file_ops = { | |||
348 | int __init netfilter_queue_init(void) | 348 | int __init netfilter_queue_init(void) |
349 | { | 349 | { |
350 | #ifdef CONFIG_PROC_FS | 350 | #ifdef CONFIG_PROC_FS |
351 | struct proc_dir_entry *pde; | 351 | if (!proc_create("nf_queue", S_IRUGO, |
352 | 352 | proc_net_netfilter, &nfqueue_file_ops)) | |
353 | pde = create_proc_entry("nf_queue", S_IRUGO, proc_net_netfilter); | ||
354 | if (!pde) | ||
355 | return -1; | 353 | return -1; |
356 | pde->proc_fops = &nfqueue_file_ops; | ||
357 | #endif | 354 | #endif |
358 | return 0; | 355 | return 0; |
359 | } | 356 | } |
diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c index bf3f19b21fe4..b8173af8c24a 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c | |||
@@ -923,9 +923,6 @@ static const struct file_operations nful_file_ops = { | |||
923 | static int __init nfnetlink_log_init(void) | 923 | static int __init nfnetlink_log_init(void) |
924 | { | 924 | { |
925 | int i, status = -ENOMEM; | 925 | int i, status = -ENOMEM; |
926 | #ifdef CONFIG_PROC_FS | ||
927 | struct proc_dir_entry *proc_nful; | ||
928 | #endif | ||
929 | 926 | ||
930 | for (i = 0; i < INSTANCE_BUCKETS; i++) | 927 | for (i = 0; i < INSTANCE_BUCKETS; i++) |
931 | INIT_HLIST_HEAD(&instance_table[i]); | 928 | INIT_HLIST_HEAD(&instance_table[i]); |
@@ -943,11 +940,9 @@ static int __init nfnetlink_log_init(void) | |||
943 | } | 940 | } |
944 | 941 | ||
945 | #ifdef CONFIG_PROC_FS | 942 | #ifdef CONFIG_PROC_FS |
946 | proc_nful = create_proc_entry("nfnetlink_log", 0440, | 943 | if (!proc_create("nfnetlink_log", 0440, |
947 | proc_net_netfilter); | 944 | proc_net_netfilter, &nful_file_ops)) |
948 | if (!proc_nful) | ||
949 | goto cleanup_subsys; | 945 | goto cleanup_subsys; |
950 | proc_nful->proc_fops = &nful_file_ops; | ||
951 | #endif | 946 | #endif |
952 | return status; | 947 | return status; |
953 | 948 | ||
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c index 012cb6910820..10522c04ed24 100644 --- a/net/netfilter/nfnetlink_queue.c +++ b/net/netfilter/nfnetlink_queue.c | |||
@@ -896,9 +896,6 @@ static const struct file_operations nfqnl_file_ops = { | |||
896 | static int __init nfnetlink_queue_init(void) | 896 | static int __init nfnetlink_queue_init(void) |
897 | { | 897 | { |
898 | int i, status = -ENOMEM; | 898 | int i, status = -ENOMEM; |
899 | #ifdef CONFIG_PROC_FS | ||
900 | struct proc_dir_entry *proc_nfqueue; | ||
901 | #endif | ||
902 | 899 | ||
903 | for (i = 0; i < INSTANCE_BUCKETS; i++) | 900 | for (i = 0; i < INSTANCE_BUCKETS; i++) |
904 | INIT_HLIST_HEAD(&instance_table[i]); | 901 | INIT_HLIST_HEAD(&instance_table[i]); |
@@ -911,11 +908,9 @@ static int __init nfnetlink_queue_init(void) | |||
911 | } | 908 | } |
912 | 909 | ||
913 | #ifdef CONFIG_PROC_FS | 910 | #ifdef CONFIG_PROC_FS |
914 | proc_nfqueue = create_proc_entry("nfnetlink_queue", 0440, | 911 | if (!proc_create("nfnetlink_queue", 0440, |
915 | proc_net_netfilter); | 912 | proc_net_netfilter, &nfqnl_file_ops)) |
916 | if (!proc_nfqueue) | ||
917 | goto cleanup_subsys; | 913 | goto cleanup_subsys; |
918 | proc_nfqueue->proc_fops = &nfqnl_file_ops; | ||
919 | #endif | 914 | #endif |
920 | 915 | ||
921 | register_netdevice_notifier(&nfqnl_dev_notifier); | 916 | register_netdevice_notifier(&nfqnl_dev_notifier); |
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c index 5418ce59ac3a..40d344b21453 100644 --- a/net/netfilter/xt_hashlimit.c +++ b/net/netfilter/xt_hashlimit.c | |||
@@ -237,14 +237,14 @@ static int htable_create_v0(struct xt_hashlimit_info *minfo, int family) | |||
237 | hinfo->family = family; | 237 | hinfo->family = family; |
238 | hinfo->rnd_initialized = 0; | 238 | hinfo->rnd_initialized = 0; |
239 | spin_lock_init(&hinfo->lock); | 239 | spin_lock_init(&hinfo->lock); |
240 | hinfo->pde = create_proc_entry(minfo->name, 0, | 240 | hinfo->pde = proc_create(minfo->name, 0, |
241 | family == AF_INET ? hashlimit_procdir4 : | 241 | family == AF_INET ? hashlimit_procdir4 : |
242 | hashlimit_procdir6); | 242 | hashlimit_procdir6, |
243 | &dl_file_ops); | ||
243 | if (!hinfo->pde) { | 244 | if (!hinfo->pde) { |
244 | vfree(hinfo); | 245 | vfree(hinfo); |
245 | return -1; | 246 | return -1; |
246 | } | 247 | } |
247 | hinfo->pde->proc_fops = &dl_file_ops; | ||
248 | hinfo->pde->data = hinfo; | 248 | hinfo->pde->data = hinfo; |
249 | 249 | ||
250 | setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo); | 250 | setup_timer(&hinfo->timer, htable_gc, (unsigned long )hinfo); |
@@ -301,14 +301,14 @@ static int htable_create(struct xt_hashlimit_mtinfo1 *minfo, | |||
301 | hinfo->rnd_initialized = 0; | 301 | hinfo->rnd_initialized = 0; |
302 | spin_lock_init(&hinfo->lock); | 302 | spin_lock_init(&hinfo->lock); |
303 | 303 | ||
304 | hinfo->pde = create_proc_entry(minfo->name, 0, | 304 | hinfo->pde = proc_create(minfo->name, 0, |
305 | family == AF_INET ? hashlimit_procdir4 : | 305 | family == AF_INET ? hashlimit_procdir4 : |
306 | hashlimit_procdir6); | 306 | hashlimit_procdir6, |
307 | &dl_file_ops); | ||
307 | if (hinfo->pde == NULL) { | 308 | if (hinfo->pde == NULL) { |
308 | vfree(hinfo); | 309 | vfree(hinfo); |
309 | return -1; | 310 | return -1; |
310 | } | 311 | } |
311 | hinfo->pde->proc_fops = &dl_file_ops; | ||
312 | hinfo->pde->data = hinfo; | 312 | hinfo->pde->data = hinfo; |
313 | 313 | ||
314 | setup_timer(&hinfo->timer, htable_gc, (unsigned long)hinfo); | 314 | setup_timer(&hinfo->timer, htable_gc, (unsigned long)hinfo); |
@@ -466,38 +466,25 @@ static inline void rateinfo_recalc(struct dsthash_ent *dh, unsigned long now) | |||
466 | 466 | ||
467 | static inline __be32 maskl(__be32 a, unsigned int l) | 467 | static inline __be32 maskl(__be32 a, unsigned int l) |
468 | { | 468 | { |
469 | return htonl(ntohl(a) & ~(~(u_int32_t)0 >> l)); | 469 | return l ? htonl(ntohl(a) & ~0 << (32 - l)) : 0; |
470 | } | 470 | } |
471 | 471 | ||
472 | #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE) | 472 | #if defined(CONFIG_IP6_NF_IPTABLES) || defined(CONFIG_IP6_NF_IPTABLES_MODULE) |
473 | static void hashlimit_ipv6_mask(__be32 *i, unsigned int p) | 473 | static void hashlimit_ipv6_mask(__be32 *i, unsigned int p) |
474 | { | 474 | { |
475 | switch (p) { | 475 | switch (p) { |
476 | case 0: | 476 | case 0 ... 31: |
477 | i[0] = i[1] = 0; | ||
478 | i[2] = i[3] = 0; | ||
479 | break; | ||
480 | case 1 ... 31: | ||
481 | i[0] = maskl(i[0], p); | 477 | i[0] = maskl(i[0], p); |
482 | i[1] = i[2] = i[3] = 0; | 478 | i[1] = i[2] = i[3] = 0; |
483 | break; | 479 | break; |
484 | case 32: | 480 | case 32 ... 63: |
485 | i[1] = i[2] = i[3] = 0; | ||
486 | break; | ||
487 | case 33 ... 63: | ||
488 | i[1] = maskl(i[1], p - 32); | 481 | i[1] = maskl(i[1], p - 32); |
489 | i[2] = i[3] = 0; | 482 | i[2] = i[3] = 0; |
490 | break; | 483 | break; |
491 | case 64: | 484 | case 64 ... 95: |
492 | i[2] = i[3] = 0; | ||
493 | break; | ||
494 | case 65 ... 95: | ||
495 | i[2] = maskl(i[2], p - 64); | 485 | i[2] = maskl(i[2], p - 64); |
496 | i[3] = 0; | 486 | i[3] = 0; |
497 | case 96: | 487 | case 96 ... 127: |
498 | i[3] = 0; | ||
499 | break; | ||
500 | case 97 ... 127: | ||
501 | i[3] = maskl(i[3], p - 96); | 488 | i[3] = maskl(i[3], p - 96); |
502 | break; | 489 | break; |
503 | case 128: | 490 | case 128: |
diff --git a/net/rose/af_rose.c b/net/rose/af_rose.c index 4a31a81059ab..063cbc5c26b1 100644 --- a/net/rose/af_rose.c +++ b/net/rose/af_rose.c | |||
@@ -598,17 +598,24 @@ static int rose_release(struct socket *sock) | |||
598 | 598 | ||
599 | if (sk == NULL) return 0; | 599 | if (sk == NULL) return 0; |
600 | 600 | ||
601 | sock_hold(sk); | ||
602 | sock_orphan(sk); | ||
603 | lock_sock(sk); | ||
601 | rose = rose_sk(sk); | 604 | rose = rose_sk(sk); |
602 | 605 | ||
603 | switch (rose->state) { | 606 | switch (rose->state) { |
604 | case ROSE_STATE_0: | 607 | case ROSE_STATE_0: |
608 | release_sock(sk); | ||
605 | rose_disconnect(sk, 0, -1, -1); | 609 | rose_disconnect(sk, 0, -1, -1); |
610 | lock_sock(sk); | ||
606 | rose_destroy_socket(sk); | 611 | rose_destroy_socket(sk); |
607 | break; | 612 | break; |
608 | 613 | ||
609 | case ROSE_STATE_2: | 614 | case ROSE_STATE_2: |
610 | rose->neighbour->use--; | 615 | rose->neighbour->use--; |
616 | release_sock(sk); | ||
611 | rose_disconnect(sk, 0, -1, -1); | 617 | rose_disconnect(sk, 0, -1, -1); |
618 | lock_sock(sk); | ||
612 | rose_destroy_socket(sk); | 619 | rose_destroy_socket(sk); |
613 | break; | 620 | break; |
614 | 621 | ||
@@ -633,6 +640,8 @@ static int rose_release(struct socket *sock) | |||
633 | } | 640 | } |
634 | 641 | ||
635 | sock->sk = NULL; | 642 | sock->sk = NULL; |
643 | release_sock(sk); | ||
644 | sock_put(sk); | ||
636 | 645 | ||
637 | return 0; | 646 | return 0; |
638 | } | 647 | } |
diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h index 1aaa2e804b0d..53fe94c9d36b 100644 --- a/net/rxrpc/ar-internal.h +++ b/net/rxrpc/ar-internal.h | |||
@@ -23,7 +23,7 @@ | |||
23 | struct rxrpc_crypt { | 23 | struct rxrpc_crypt { |
24 | union { | 24 | union { |
25 | u8 x[FCRYPT_BSIZE]; | 25 | u8 x[FCRYPT_BSIZE]; |
26 | u32 n[2]; | 26 | __be32 n[2]; |
27 | }; | 27 | }; |
28 | } __attribute__((aligned(8))); | 28 | } __attribute__((aligned(8))); |
29 | 29 | ||
@@ -611,7 +611,7 @@ extern struct rxrpc_transport *rxrpc_find_transport(struct rxrpc_local *, | |||
611 | extern unsigned rxrpc_debug; | 611 | extern unsigned rxrpc_debug; |
612 | 612 | ||
613 | #define dbgprintk(FMT,...) \ | 613 | #define dbgprintk(FMT,...) \ |
614 | printk("[%x%-6.6s] "FMT"\n", smp_processor_id(), current->comm ,##__VA_ARGS__) | 614 | printk("[%-6.6s] "FMT"\n", current->comm ,##__VA_ARGS__) |
615 | 615 | ||
616 | /* make sure we maintain the format strings, even when debugging is disabled */ | 616 | /* make sure we maintain the format strings, even when debugging is disabled */ |
617 | static inline __attribute__((format(printf,1,2))) | 617 | static inline __attribute__((format(printf,1,2))) |
diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c index f48434adb7c2..d1c296f2d617 100644 --- a/net/rxrpc/rxkad.c +++ b/net/rxrpc/rxkad.c | |||
@@ -261,6 +261,7 @@ static int rxkad_secure_packet(const struct rxrpc_call *call, | |||
261 | __be32 x[2]; | 261 | __be32 x[2]; |
262 | } tmpbuf __attribute__((aligned(8))); /* must all be in same page */ | 262 | } tmpbuf __attribute__((aligned(8))); /* must all be in same page */ |
263 | __be32 x; | 263 | __be32 x; |
264 | u32 y; | ||
264 | int ret; | 265 | int ret; |
265 | 266 | ||
266 | sp = rxrpc_skb(skb); | 267 | sp = rxrpc_skb(skb); |
@@ -292,11 +293,11 @@ static int rxkad_secure_packet(const struct rxrpc_call *call, | |||
292 | sg_init_one(&sg[1], &tmpbuf, sizeof(tmpbuf)); | 293 | sg_init_one(&sg[1], &tmpbuf, sizeof(tmpbuf)); |
293 | crypto_blkcipher_encrypt_iv(&desc, &sg[0], &sg[1], sizeof(tmpbuf)); | 294 | crypto_blkcipher_encrypt_iv(&desc, &sg[0], &sg[1], sizeof(tmpbuf)); |
294 | 295 | ||
295 | x = ntohl(tmpbuf.x[1]); | 296 | y = ntohl(tmpbuf.x[1]); |
296 | x = (x >> 16) & 0xffff; | 297 | y = (y >> 16) & 0xffff; |
297 | if (x == 0) | 298 | if (y == 0) |
298 | x = 1; /* zero checksums are not permitted */ | 299 | y = 1; /* zero checksums are not permitted */ |
299 | sp->hdr.cksum = htons(x); | 300 | sp->hdr.cksum = htons(y); |
300 | 301 | ||
301 | switch (call->conn->security_level) { | 302 | switch (call->conn->security_level) { |
302 | case RXRPC_SECURITY_PLAIN: | 303 | case RXRPC_SECURITY_PLAIN: |
@@ -314,7 +315,7 @@ static int rxkad_secure_packet(const struct rxrpc_call *call, | |||
314 | break; | 315 | break; |
315 | } | 316 | } |
316 | 317 | ||
317 | _leave(" = %d [set %hx]", ret, x); | 318 | _leave(" = %d [set %hx]", ret, y); |
318 | return ret; | 319 | return ret; |
319 | } | 320 | } |
320 | 321 | ||
@@ -492,6 +493,7 @@ static int rxkad_verify_packet(const struct rxrpc_call *call, | |||
492 | __be32 x[2]; | 493 | __be32 x[2]; |
493 | } tmpbuf __attribute__((aligned(8))); /* must all be in same page */ | 494 | } tmpbuf __attribute__((aligned(8))); /* must all be in same page */ |
494 | __be32 x; | 495 | __be32 x; |
496 | u16 y; | ||
495 | __be16 cksum; | 497 | __be16 cksum; |
496 | int ret; | 498 | int ret; |
497 | 499 | ||
@@ -526,12 +528,12 @@ static int rxkad_verify_packet(const struct rxrpc_call *call, | |||
526 | sg_init_one(&sg[1], &tmpbuf, sizeof(tmpbuf)); | 528 | sg_init_one(&sg[1], &tmpbuf, sizeof(tmpbuf)); |
527 | crypto_blkcipher_encrypt_iv(&desc, &sg[0], &sg[1], sizeof(tmpbuf)); | 529 | crypto_blkcipher_encrypt_iv(&desc, &sg[0], &sg[1], sizeof(tmpbuf)); |
528 | 530 | ||
529 | x = ntohl(tmpbuf.x[1]); | 531 | y = ntohl(tmpbuf.x[1]); |
530 | x = (x >> 16) & 0xffff; | 532 | y = (y >> 16) & 0xffff; |
531 | if (x == 0) | 533 | if (y == 0) |
532 | x = 1; /* zero checksums are not permitted */ | 534 | y = 1; /* zero checksums are not permitted */ |
533 | 535 | ||
534 | cksum = htons(x); | 536 | cksum = htons(y); |
535 | if (sp->hdr.cksum != cksum) { | 537 | if (sp->hdr.cksum != cksum) { |
536 | *_abort_code = RXKADSEALEDINCON; | 538 | *_abort_code = RXKADSEALEDINCON; |
537 | _leave(" = -EPROTO [csum failed]"); | 539 | _leave(" = -EPROTO [csum failed]"); |
@@ -1001,7 +1003,8 @@ static int rxkad_verify_response(struct rxrpc_connection *conn, | |||
1001 | struct rxrpc_crypt session_key; | 1003 | struct rxrpc_crypt session_key; |
1002 | time_t expiry; | 1004 | time_t expiry; |
1003 | void *ticket; | 1005 | void *ticket; |
1004 | u32 abort_code, version, kvno, ticket_len, csum, level; | 1006 | u32 abort_code, version, kvno, ticket_len, level; |
1007 | __be32 csum; | ||
1005 | int ret; | 1008 | int ret; |
1006 | 1009 | ||
1007 | _enter("{%d,%x}", conn->debug_id, key_serial(conn->server_key)); | 1010 | _enter("{%d,%x}", conn->debug_id, key_serial(conn->server_key)); |
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 10b5c0887fff..b741618e4d54 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -184,10 +184,22 @@ static inline int qdisc_restart(struct net_device *dev) | |||
184 | 184 | ||
185 | void __qdisc_run(struct net_device *dev) | 185 | void __qdisc_run(struct net_device *dev) |
186 | { | 186 | { |
187 | do { | 187 | unsigned long start_time = jiffies; |
188 | if (!qdisc_restart(dev)) | 188 | |
189 | while (qdisc_restart(dev)) { | ||
190 | if (netif_queue_stopped(dev)) | ||
191 | break; | ||
192 | |||
193 | /* | ||
194 | * Postpone processing if | ||
195 | * 1. another process needs the CPU; | ||
196 | * 2. we've been doing it for too long. | ||
197 | */ | ||
198 | if (need_resched() || jiffies != start_time) { | ||
199 | netif_schedule(dev); | ||
189 | break; | 200 | break; |
190 | } while (!netif_queue_stopped(dev)); | 201 | } |
202 | } | ||
191 | 203 | ||
192 | clear_bit(__LINK_STATE_QDISC_RUNNING, &dev->state); | 204 | clear_bit(__LINK_STATE_QDISC_RUNNING, &dev->state); |
193 | } | 205 | } |
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 8c6a7f1a25e9..8834d68972cb 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -261,10 +261,6 @@ struct rpc_clnt *rpc_create(struct rpc_create_args *args) | |||
261 | }; | 261 | }; |
262 | char servername[48]; | 262 | char servername[48]; |
263 | 263 | ||
264 | xprt = xprt_create_transport(&xprtargs); | ||
265 | if (IS_ERR(xprt)) | ||
266 | return (struct rpc_clnt *)xprt; | ||
267 | |||
268 | /* | 264 | /* |
269 | * If the caller chooses not to specify a hostname, whip | 265 | * If the caller chooses not to specify a hostname, whip |
270 | * up a string representation of the passed-in address. | 266 | * up a string representation of the passed-in address. |
diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index 995c3fdc16c2..79a55d56cc98 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c | |||
@@ -244,7 +244,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len) | |||
244 | pgto = pages + (pgbase >> PAGE_CACHE_SHIFT); | 244 | pgto = pages + (pgbase >> PAGE_CACHE_SHIFT); |
245 | pgbase &= ~PAGE_CACHE_MASK; | 245 | pgbase &= ~PAGE_CACHE_MASK; |
246 | 246 | ||
247 | do { | 247 | for (;;) { |
248 | copy = PAGE_CACHE_SIZE - pgbase; | 248 | copy = PAGE_CACHE_SIZE - pgbase; |
249 | if (copy > len) | 249 | if (copy > len) |
250 | copy = len; | 250 | copy = len; |
@@ -253,6 +253,10 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len) | |||
253 | memcpy(vto + pgbase, p, copy); | 253 | memcpy(vto + pgbase, p, copy); |
254 | kunmap_atomic(vto, KM_USER0); | 254 | kunmap_atomic(vto, KM_USER0); |
255 | 255 | ||
256 | len -= copy; | ||
257 | if (len == 0) | ||
258 | break; | ||
259 | |||
256 | pgbase += copy; | 260 | pgbase += copy; |
257 | if (pgbase == PAGE_CACHE_SIZE) { | 261 | if (pgbase == PAGE_CACHE_SIZE) { |
258 | flush_dcache_page(*pgto); | 262 | flush_dcache_page(*pgto); |
@@ -260,8 +264,7 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len) | |||
260 | pgto++; | 264 | pgto++; |
261 | } | 265 | } |
262 | p += copy; | 266 | p += copy; |
263 | 267 | } | |
264 | } while ((len -= copy) != 0); | ||
265 | flush_dcache_page(*pgto); | 268 | flush_dcache_page(*pgto); |
266 | } | 269 | } |
267 | 270 | ||
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index e3a214f63f91..f68a5c8f2147 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -945,7 +945,7 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info) | |||
945 | nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); | 945 | nla_len(info->attrs[NL80211_ATTR_STA_SUPPORTED_RATES]); |
946 | params.listen_interval = | 946 | params.listen_interval = |
947 | nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); | 947 | nla_get_u16(info->attrs[NL80211_ATTR_STA_LISTEN_INTERVAL]); |
948 | params.listen_interval = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); | 948 | params.aid = nla_get_u16(info->attrs[NL80211_ATTR_STA_AID]); |
949 | 949 | ||
950 | if (parse_station_flags(info->attrs[NL80211_ATTR_STA_FLAGS], | 950 | if (parse_station_flags(info->attrs[NL80211_ATTR_STA_FLAGS], |
951 | ¶ms.station_flags)) | 951 | ¶ms.station_flags)) |
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index 62188c6a06dd..75279402ccf4 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c | |||
@@ -84,14 +84,21 @@ int xfrm_parse_spi(struct sk_buff *skb, u8 nexthdr, __be32 *spi, __be32 *seq) | |||
84 | 84 | ||
85 | int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb) | 85 | int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb) |
86 | { | 86 | { |
87 | struct xfrm_mode *inner_mode = x->inner_mode; | ||
87 | int err; | 88 | int err; |
88 | 89 | ||
89 | err = x->outer_mode->afinfo->extract_input(x, skb); | 90 | err = x->outer_mode->afinfo->extract_input(x, skb); |
90 | if (err) | 91 | if (err) |
91 | return err; | 92 | return err; |
92 | 93 | ||
93 | skb->protocol = x->inner_mode->afinfo->eth_proto; | 94 | if (x->sel.family == AF_UNSPEC) { |
94 | return x->inner_mode->input2(x, skb); | 95 | inner_mode = xfrm_ip2inner_mode(x, XFRM_MODE_SKB_CB(skb)->protocol); |
96 | if (inner_mode == NULL) | ||
97 | return -EAFNOSUPPORT; | ||
98 | } | ||
99 | |||
100 | skb->protocol = inner_mode->afinfo->eth_proto; | ||
101 | return inner_mode->input2(x, skb); | ||
95 | } | 102 | } |
96 | EXPORT_SYMBOL(xfrm_prepare_input); | 103 | EXPORT_SYMBOL(xfrm_prepare_input); |
97 | 104 | ||
@@ -101,6 +108,7 @@ int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type) | |||
101 | __be32 seq; | 108 | __be32 seq; |
102 | struct xfrm_state *x; | 109 | struct xfrm_state *x; |
103 | xfrm_address_t *daddr; | 110 | xfrm_address_t *daddr; |
111 | struct xfrm_mode *inner_mode; | ||
104 | unsigned int family; | 112 | unsigned int family; |
105 | int decaps = 0; | 113 | int decaps = 0; |
106 | int async = 0; | 114 | int async = 0; |
@@ -207,7 +215,15 @@ resume: | |||
207 | 215 | ||
208 | XFRM_MODE_SKB_CB(skb)->protocol = nexthdr; | 216 | XFRM_MODE_SKB_CB(skb)->protocol = nexthdr; |
209 | 217 | ||
210 | if (x->inner_mode->input(x, skb)) { | 218 | inner_mode = x->inner_mode; |
219 | |||
220 | if (x->sel.family == AF_UNSPEC) { | ||
221 | inner_mode = xfrm_ip2inner_mode(x, XFRM_MODE_SKB_CB(skb)->protocol); | ||
222 | if (inner_mode == NULL) | ||
223 | goto drop; | ||
224 | } | ||
225 | |||
226 | if (inner_mode->input(x, skb)) { | ||
211 | XFRM_INC_STATS(LINUX_MIB_XFRMINSTATEMODEERROR); | 227 | XFRM_INC_STATS(LINUX_MIB_XFRMINSTATEMODEERROR); |
212 | goto drop; | 228 | goto drop; |
213 | } | 229 | } |
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c index 569d377932c4..2519129c6d21 100644 --- a/net/xfrm/xfrm_output.c +++ b/net/xfrm/xfrm_output.c | |||
@@ -124,7 +124,7 @@ int xfrm_output_resume(struct sk_buff *skb, int err) | |||
124 | if (!x) | 124 | if (!x) |
125 | return dst_output(skb); | 125 | return dst_output(skb); |
126 | 126 | ||
127 | err = nf_hook(x->inner_mode->afinfo->family, | 127 | err = nf_hook(skb->dst->ops->family, |
128 | NF_INET_POST_ROUTING, skb, | 128 | NF_INET_POST_ROUTING, skb, |
129 | NULL, skb->dst->dev, xfrm_output2); | 129 | NULL, skb->dst->dev, xfrm_output2); |
130 | if (unlikely(err != 1)) | 130 | if (unlikely(err != 1)) |
@@ -193,4 +193,20 @@ int xfrm_output(struct sk_buff *skb) | |||
193 | 193 | ||
194 | return xfrm_output2(skb); | 194 | return xfrm_output2(skb); |
195 | } | 195 | } |
196 | |||
197 | int xfrm_inner_extract_output(struct xfrm_state *x, struct sk_buff *skb) | ||
198 | { | ||
199 | struct xfrm_mode *inner_mode; | ||
200 | if (x->sel.family == AF_UNSPEC) | ||
201 | inner_mode = xfrm_ip2inner_mode(x, | ||
202 | xfrm_af2proto(skb->dst->ops->family)); | ||
203 | else | ||
204 | inner_mode = x->inner_mode; | ||
205 | |||
206 | if (inner_mode == NULL) | ||
207 | return -EAFNOSUPPORT; | ||
208 | return inner_mode->afinfo->extract_output(x, skb); | ||
209 | } | ||
210 | |||
196 | EXPORT_SYMBOL_GPL(xfrm_output); | 211 | EXPORT_SYMBOL_GPL(xfrm_output); |
212 | EXPORT_SYMBOL_GPL(xfrm_inner_extract_output); | ||
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 7ba65e82941c..58f1f9347b54 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c | |||
@@ -388,6 +388,8 @@ static void xfrm_state_gc_destroy(struct xfrm_state *x) | |||
388 | kfree(x->coaddr); | 388 | kfree(x->coaddr); |
389 | if (x->inner_mode) | 389 | if (x->inner_mode) |
390 | xfrm_put_mode(x->inner_mode); | 390 | xfrm_put_mode(x->inner_mode); |
391 | if (x->inner_mode_iaf) | ||
392 | xfrm_put_mode(x->inner_mode_iaf); | ||
391 | if (x->outer_mode) | 393 | if (x->outer_mode) |
392 | xfrm_put_mode(x->outer_mode); | 394 | xfrm_put_mode(x->outer_mode); |
393 | if (x->type) { | 395 | if (x->type) { |
@@ -523,6 +525,8 @@ struct xfrm_state *xfrm_state_alloc(void) | |||
523 | x->lft.hard_packet_limit = XFRM_INF; | 525 | x->lft.hard_packet_limit = XFRM_INF; |
524 | x->replay_maxage = 0; | 526 | x->replay_maxage = 0; |
525 | x->replay_maxdiff = 0; | 527 | x->replay_maxdiff = 0; |
528 | x->inner_mode = NULL; | ||
529 | x->inner_mode_iaf = NULL; | ||
526 | spin_lock_init(&x->lock); | 530 | spin_lock_init(&x->lock); |
527 | } | 531 | } |
528 | return x; | 532 | return x; |
@@ -796,7 +800,7 @@ xfrm_state_find(xfrm_address_t *daddr, xfrm_address_t *saddr, | |||
796 | selector. | 800 | selector. |
797 | */ | 801 | */ |
798 | if (x->km.state == XFRM_STATE_VALID) { | 802 | if (x->km.state == XFRM_STATE_VALID) { |
799 | if (!xfrm_selector_match(&x->sel, fl, x->sel.family) || | 803 | if ((x->sel.family && !xfrm_selector_match(&x->sel, fl, x->sel.family)) || |
800 | !security_xfrm_state_pol_flow_match(x, pol, fl)) | 804 | !security_xfrm_state_pol_flow_match(x, pol, fl)) |
801 | continue; | 805 | continue; |
802 | if (!best || | 806 | if (!best || |
@@ -1944,6 +1948,7 @@ int xfrm_state_mtu(struct xfrm_state *x, int mtu) | |||
1944 | int xfrm_init_state(struct xfrm_state *x) | 1948 | int xfrm_init_state(struct xfrm_state *x) |
1945 | { | 1949 | { |
1946 | struct xfrm_state_afinfo *afinfo; | 1950 | struct xfrm_state_afinfo *afinfo; |
1951 | struct xfrm_mode *inner_mode; | ||
1947 | int family = x->props.family; | 1952 | int family = x->props.family; |
1948 | int err; | 1953 | int err; |
1949 | 1954 | ||
@@ -1962,13 +1967,48 @@ int xfrm_init_state(struct xfrm_state *x) | |||
1962 | goto error; | 1967 | goto error; |
1963 | 1968 | ||
1964 | err = -EPROTONOSUPPORT; | 1969 | err = -EPROTONOSUPPORT; |
1965 | x->inner_mode = xfrm_get_mode(x->props.mode, x->sel.family); | ||
1966 | if (x->inner_mode == NULL) | ||
1967 | goto error; | ||
1968 | 1970 | ||
1969 | if (!(x->inner_mode->flags & XFRM_MODE_FLAG_TUNNEL) && | 1971 | if (x->sel.family != AF_UNSPEC) { |
1970 | family != x->sel.family) | 1972 | inner_mode = xfrm_get_mode(x->props.mode, x->sel.family); |
1971 | goto error; | 1973 | if (inner_mode == NULL) |
1974 | goto error; | ||
1975 | |||
1976 | if (!(inner_mode->flags & XFRM_MODE_FLAG_TUNNEL) && | ||
1977 | family != x->sel.family) { | ||
1978 | xfrm_put_mode(inner_mode); | ||
1979 | goto error; | ||
1980 | } | ||
1981 | |||
1982 | x->inner_mode = inner_mode; | ||
1983 | } else { | ||
1984 | struct xfrm_mode *inner_mode_iaf; | ||
1985 | |||
1986 | inner_mode = xfrm_get_mode(x->props.mode, AF_INET); | ||
1987 | if (inner_mode == NULL) | ||
1988 | goto error; | ||
1989 | |||
1990 | if (!(inner_mode->flags & XFRM_MODE_FLAG_TUNNEL)) { | ||
1991 | xfrm_put_mode(inner_mode); | ||
1992 | goto error; | ||
1993 | } | ||
1994 | |||
1995 | inner_mode_iaf = xfrm_get_mode(x->props.mode, AF_INET6); | ||
1996 | if (inner_mode_iaf == NULL) | ||
1997 | goto error; | ||
1998 | |||
1999 | if (!(inner_mode_iaf->flags & XFRM_MODE_FLAG_TUNNEL)) { | ||
2000 | xfrm_put_mode(inner_mode_iaf); | ||
2001 | goto error; | ||
2002 | } | ||
2003 | |||
2004 | if (x->props.family == AF_INET) { | ||
2005 | x->inner_mode = inner_mode; | ||
2006 | x->inner_mode_iaf = inner_mode_iaf; | ||
2007 | } else { | ||
2008 | x->inner_mode = inner_mode_iaf; | ||
2009 | x->inner_mode_iaf = inner_mode; | ||
2010 | } | ||
2011 | } | ||
1972 | 2012 | ||
1973 | x->type = xfrm_get_type(x->id.proto, family); | 2013 | x->type = xfrm_get_type(x->id.proto, family); |
1974 | if (x->type == NULL) | 2014 | if (x->type == NULL) |
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index f971ca5645f8..019d21de19b3 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c | |||
@@ -288,12 +288,9 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info * | |||
288 | memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr)); | 288 | memcpy(&x->props.saddr, &p->saddr, sizeof(x->props.saddr)); |
289 | x->props.flags = p->flags; | 289 | x->props.flags = p->flags; |
290 | 290 | ||
291 | /* | ||
292 | * Set inner address family if the KM left it as zero. | ||
293 | * See comment in validate_tmpl. | ||
294 | */ | ||
295 | if (!x->sel.family) | 291 | if (!x->sel.family) |
296 | x->sel.family = p->family; | 292 | x->sel.family = p->family; |
293 | |||
297 | } | 294 | } |
298 | 295 | ||
299 | /* | 296 | /* |
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 2a7cef9726e4..58a94947d655 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
@@ -9,7 +9,7 @@ use strict; | |||
9 | my $P = $0; | 9 | my $P = $0; |
10 | $P =~ s@.*/@@g; | 10 | $P =~ s@.*/@@g; |
11 | 11 | ||
12 | my $V = '0.15'; | 12 | my $V = '0.16'; |
13 | 13 | ||
14 | use Getopt::Long qw(:config no_auto_abbrev); | 14 | use Getopt::Long qw(:config no_auto_abbrev); |
15 | 15 | ||
@@ -18,6 +18,7 @@ my $tree = 1; | |||
18 | my $chk_signoff = 1; | 18 | my $chk_signoff = 1; |
19 | my $chk_patch = 1; | 19 | my $chk_patch = 1; |
20 | my $tst_type = 0; | 20 | my $tst_type = 0; |
21 | my $tst_only; | ||
21 | my $emacs = 0; | 22 | my $emacs = 0; |
22 | my $terse = 0; | 23 | my $terse = 0; |
23 | my $file = 0; | 24 | my $file = 0; |
@@ -44,6 +45,7 @@ GetOptions( | |||
44 | 45 | ||
45 | 'debug=s' => \%debug, | 46 | 'debug=s' => \%debug, |
46 | 'test-type!' => \$tst_type, | 47 | 'test-type!' => \$tst_type, |
48 | 'test-only=s' => \$tst_only, | ||
47 | ) or exit; | 49 | ) or exit; |
48 | 50 | ||
49 | my $exit = 0; | 51 | my $exit = 0; |
@@ -263,17 +265,7 @@ sub expand_tabs { | |||
263 | return $res; | 265 | return $res; |
264 | } | 266 | } |
265 | sub copy_spacing { | 267 | sub copy_spacing { |
266 | my ($str) = @_; | 268 | (my $res = shift) =~ tr/\t/ /c; |
267 | |||
268 | my $res = ''; | ||
269 | for my $c (split(//, $str)) { | ||
270 | if ($c eq "\t") { | ||
271 | $res .= $c; | ||
272 | } else { | ||
273 | $res .= ' '; | ||
274 | } | ||
275 | } | ||
276 | |||
277 | return $res; | 269 | return $res; |
278 | } | 270 | } |
279 | 271 | ||
@@ -290,53 +282,76 @@ sub line_stats { | |||
290 | return (length($line), length($white)); | 282 | return (length($line), length($white)); |
291 | } | 283 | } |
292 | 284 | ||
285 | my $sanitise_quote = ''; | ||
286 | |||
287 | sub sanitise_line_reset { | ||
288 | my ($in_comment) = @_; | ||
289 | |||
290 | if ($in_comment) { | ||
291 | $sanitise_quote = '*/'; | ||
292 | } else { | ||
293 | $sanitise_quote = ''; | ||
294 | } | ||
295 | } | ||
293 | sub sanitise_line { | 296 | sub sanitise_line { |
294 | my ($line) = @_; | 297 | my ($line) = @_; |
295 | 298 | ||
296 | my $res = ''; | 299 | my $res = ''; |
297 | my $l = ''; | 300 | my $l = ''; |
298 | 301 | ||
299 | my $quote = ''; | ||
300 | my $qlen = 0; | 302 | my $qlen = 0; |
303 | my $off = 0; | ||
304 | my $c; | ||
301 | 305 | ||
302 | foreach my $c (split(//, $line)) { | 306 | # Always copy over the diff marker. |
303 | # The second backslash of a pair is not a "quote". | 307 | $res = substr($line, 0, 1); |
304 | if ($l eq "\\" && $c eq "\\") { | 308 | |
305 | $c = 'X'; | 309 | for ($off = 1; $off < length($line); $off++) { |
306 | } | 310 | $c = substr($line, $off, 1); |
307 | if ($l ne "\\" && ($c eq "'" || $c eq '"')) { | 311 | |
308 | if ($quote eq '') { | 312 | # Comments we are wacking completly including the begin |
309 | $quote = $c; | 313 | # and end, all to $;. |
310 | $res .= $c; | 314 | if ($sanitise_quote eq '' && substr($line, $off, 2) eq '/*') { |
311 | $l = $c; | 315 | $sanitise_quote = '*/'; |
312 | $qlen = 0; | 316 | |
313 | next; | 317 | substr($res, $off, 2, "$;$;"); |
314 | } elsif ($quote eq $c) { | 318 | $off++; |
315 | $quote = ''; | 319 | next; |
316 | } | ||
317 | } | 320 | } |
318 | if ($quote eq "'" && $qlen > 1) { | 321 | if (substr($line, $off, 2) eq $sanitise_quote) { |
319 | $quote = ''; | 322 | $sanitise_quote = ''; |
323 | substr($res, $off, 2, "$;$;"); | ||
324 | $off++; | ||
325 | next; | ||
320 | } | 326 | } |
321 | if ($quote && $c ne "\t") { | 327 | |
322 | $res .= "X"; | 328 | # A \ in a string means ignore the next character. |
323 | $qlen++; | 329 | if (($sanitise_quote eq "'" || $sanitise_quote eq '"') && |
324 | } else { | 330 | $c eq "\\") { |
325 | $res .= $c; | 331 | substr($res, $off, 2, 'XX'); |
332 | $off++; | ||
333 | next; | ||
326 | } | 334 | } |
335 | # Regular quotes. | ||
336 | if ($c eq "'" || $c eq '"') { | ||
337 | if ($sanitise_quote eq '') { | ||
338 | $sanitise_quote = $c; | ||
327 | 339 | ||
328 | $l = $c; | 340 | substr($res, $off, 1, $c); |
329 | } | 341 | next; |
342 | } elsif ($sanitise_quote eq $c) { | ||
343 | $sanitise_quote = ''; | ||
344 | } | ||
345 | } | ||
330 | 346 | ||
331 | # Clear out the comments. | 347 | #print "SQ:$sanitise_quote\n"; |
332 | while ($res =~ m@(/\*.*?\*/)@g) { | 348 | if ($off != 0 && $sanitise_quote eq '*/' && $c ne "\t") { |
333 | substr($res, $-[1], $+[1] - $-[1]) = $; x ($+[1] - $-[1]); | 349 | substr($res, $off, 1, $;); |
334 | } | 350 | } elsif ($off != 0 && $sanitise_quote && $c ne "\t") { |
335 | if ($res =~ m@(/\*.*)@) { | 351 | substr($res, $off, 1, 'X'); |
336 | substr($res, $-[1], $+[1] - $-[1]) = $; x ($+[1] - $-[1]); | 352 | } else { |
337 | } | 353 | substr($res, $off, 1, $c); |
338 | if ($res =~ m@^.(.*\*/)@) { | 354 | } |
339 | substr($res, $-[1], $+[1] - $-[1]) = $; x ($+[1] - $-[1]); | ||
340 | } | 355 | } |
341 | 356 | ||
342 | # The pathname on a #include may be surrounded by '<' and '>'. | 357 | # The pathname on a #include may be surrounded by '<' and '>'. |
@@ -359,6 +374,7 @@ sub ctx_statement_block { | |||
359 | my $blk = ''; | 374 | my $blk = ''; |
360 | my $soff = $off; | 375 | my $soff = $off; |
361 | my $coff = $off - 1; | 376 | my $coff = $off - 1; |
377 | my $coff_set = 0; | ||
362 | 378 | ||
363 | my $loff = 0; | 379 | my $loff = 0; |
364 | 380 | ||
@@ -370,7 +386,7 @@ sub ctx_statement_block { | |||
370 | 386 | ||
371 | my $remainder; | 387 | my $remainder; |
372 | while (1) { | 388 | while (1) { |
373 | #warn "CSB: blk<$blk>\n"; | 389 | #warn "CSB: blk<$blk> remain<$remain>\n"; |
374 | # If we are about to drop off the end, pull in more | 390 | # If we are about to drop off the end, pull in more |
375 | # context. | 391 | # context. |
376 | if ($off >= $len) { | 392 | if ($off >= $len) { |
@@ -393,7 +409,7 @@ sub ctx_statement_block { | |||
393 | $c = substr($blk, $off, 1); | 409 | $c = substr($blk, $off, 1); |
394 | $remainder = substr($blk, $off); | 410 | $remainder = substr($blk, $off); |
395 | 411 | ||
396 | #warn "CSB: c<$c> type<$type> level<$level>\n"; | 412 | #warn "CSB: c<$c> type<$type> level<$level> remainder<$remainder> coff_set<$coff_set>\n"; |
397 | # Statement ends at the ';' or a close '}' at the | 413 | # Statement ends at the ';' or a close '}' at the |
398 | # outermost level. | 414 | # outermost level. |
399 | if ($level == 0 && $c eq ';') { | 415 | if ($level == 0 && $c eq ';') { |
@@ -401,10 +417,14 @@ sub ctx_statement_block { | |||
401 | } | 417 | } |
402 | 418 | ||
403 | # An else is really a conditional as long as its not else if | 419 | # An else is really a conditional as long as its not else if |
404 | if ($level == 0 && (!defined($p) || $p =~ /(?:\s|\})/) && | 420 | if ($level == 0 && $coff_set == 0 && |
405 | $remainder =~ /(else)(?:\s|{)/ && | 421 | (!defined($p) || $p =~ /(?:\s|\}|\+)/) && |
406 | $remainder !~ /else\s+if\b/) { | 422 | $remainder =~ /^(else)(?:\s|{)/ && |
407 | $coff = $off + length($1); | 423 | $remainder !~ /^else\s+if\b/) { |
424 | $coff = $off + length($1) - 1; | ||
425 | $coff_set = 1; | ||
426 | #warn "CSB: mark coff<$coff> soff<$soff> 1<$1>\n"; | ||
427 | #warn "[" . substr($blk, $soff, $coff - $soff + 1) . "]\n"; | ||
408 | } | 428 | } |
409 | 429 | ||
410 | if (($type eq '' || $type eq '(') && $c eq '(') { | 430 | if (($type eq '' || $type eq '(') && $c eq '(') { |
@@ -417,6 +437,8 @@ sub ctx_statement_block { | |||
417 | 437 | ||
418 | if ($level == 0 && $coff < $soff) { | 438 | if ($level == 0 && $coff < $soff) { |
419 | $coff = $off; | 439 | $coff = $off; |
440 | $coff_set = 1; | ||
441 | #warn "CSB: mark coff<$coff>\n"; | ||
420 | } | 442 | } |
421 | } | 443 | } |
422 | if (($type eq '' || $type eq '{') && $c eq '{') { | 444 | if (($type eq '' || $type eq '{') && $c eq '{') { |
@@ -444,7 +466,7 @@ sub ctx_statement_block { | |||
444 | #warn "STATEMENT<$statement>\n"; | 466 | #warn "STATEMENT<$statement>\n"; |
445 | #warn "CONDITION<$condition>\n"; | 467 | #warn "CONDITION<$condition>\n"; |
446 | 468 | ||
447 | #print "off<$off> loff<$loff>\n"; | 469 | #print "coff<$coff> soff<$off> loff<$loff>\n"; |
448 | 470 | ||
449 | return ($statement, $condition, | 471 | return ($statement, $condition, |
450 | $line, $remain + 1, $off - $loff + 1, $level); | 472 | $line, $remain + 1, $off - $loff + 1, $level); |
@@ -502,7 +524,7 @@ sub ctx_statement_full { | |||
502 | # Grab the first conditional/block pair. | 524 | # Grab the first conditional/block pair. |
503 | ($statement, $condition, $linenr, $remain, $off, $level) = | 525 | ($statement, $condition, $linenr, $remain, $off, $level) = |
504 | ctx_statement_block($linenr, $remain, $off); | 526 | ctx_statement_block($linenr, $remain, $off); |
505 | #print "F: c<$condition> s<$statement>\n"; | 527 | #print "F: c<$condition> s<$statement> remain<$remain>\n"; |
506 | push(@chunks, [ $condition, $statement ]); | 528 | push(@chunks, [ $condition, $statement ]); |
507 | if (!($remain > 0 && $condition =~ /^\s*(?:\n[+-])?\s*(?:if|else|do)\b/s)) { | 529 | if (!($remain > 0 && $condition =~ /^\s*(?:\n[+-])?\s*(?:if|else|do)\b/s)) { |
508 | return ($level, $linenr, @chunks); | 530 | return ($level, $linenr, @chunks); |
@@ -514,7 +536,7 @@ sub ctx_statement_full { | |||
514 | ($statement, $condition, $linenr, $remain, $off, $level) = | 536 | ($statement, $condition, $linenr, $remain, $off, $level) = |
515 | ctx_statement_block($linenr, $remain, $off); | 537 | ctx_statement_block($linenr, $remain, $off); |
516 | #print "C: c<$condition> s<$statement> remain<$remain>\n"; | 538 | #print "C: c<$condition> s<$statement> remain<$remain>\n"; |
517 | last if (!($remain > 0 && $condition =~ /^\s*(?:\n[+-])?\s*(?:else|do)\b/s)); | 539 | last if (!($remain > 0 && $condition =~ /^(?:\s*\n[+-])*\s*(?:else|do)\b/s)); |
518 | #print "C: push\n"; | 540 | #print "C: push\n"; |
519 | push(@chunks, [ $condition, $statement ]); | 541 | push(@chunks, [ $condition, $statement ]); |
520 | } | 542 | } |
@@ -668,6 +690,7 @@ sub annotate_values { | |||
668 | print "$stream\n" if ($dbg_values > 1); | 690 | print "$stream\n" if ($dbg_values > 1); |
669 | 691 | ||
670 | while (length($cur)) { | 692 | while (length($cur)) { |
693 | @av_paren_type = ('E') if ($#av_paren_type < 0); | ||
671 | print " <" . join('', @av_paren_type) . | 694 | print " <" . join('', @av_paren_type) . |
672 | "> <$type> " if ($dbg_values > 1); | 695 | "> <$type> " if ($dbg_values > 1); |
673 | if ($cur =~ /^(\s+)/o) { | 696 | if ($cur =~ /^(\s+)/o) { |
@@ -804,28 +827,34 @@ sub possible { | |||
804 | my $prefix = ''; | 827 | my $prefix = ''; |
805 | 828 | ||
806 | sub report { | 829 | sub report { |
830 | if (defined $tst_only && $_[0] !~ /\Q$tst_only\E/) { | ||
831 | return 0; | ||
832 | } | ||
807 | my $line = $prefix . $_[0]; | 833 | my $line = $prefix . $_[0]; |
808 | 834 | ||
809 | $line = (split('\n', $line))[0] . "\n" if ($terse); | 835 | $line = (split('\n', $line))[0] . "\n" if ($terse); |
810 | 836 | ||
811 | push(our @report, $line); | 837 | push(our @report, $line); |
838 | |||
839 | return 1; | ||
812 | } | 840 | } |
813 | sub report_dump { | 841 | sub report_dump { |
814 | our @report; | 842 | our @report; |
815 | } | 843 | } |
816 | sub ERROR { | 844 | sub ERROR { |
817 | report("ERROR: $_[0]\n"); | 845 | if (report("ERROR: $_[0]\n")) { |
818 | our $clean = 0; | 846 | our $clean = 0; |
819 | our $cnt_error++; | 847 | our $cnt_error++; |
848 | } | ||
820 | } | 849 | } |
821 | sub WARN { | 850 | sub WARN { |
822 | report("WARNING: $_[0]\n"); | 851 | if (report("WARNING: $_[0]\n")) { |
823 | our $clean = 0; | 852 | our $clean = 0; |
824 | our $cnt_warn++; | 853 | our $cnt_warn++; |
854 | } | ||
825 | } | 855 | } |
826 | sub CHK { | 856 | sub CHK { |
827 | if ($check) { | 857 | if ($check && report("CHECK: $_[0]\n")) { |
828 | report("CHECK: $_[0]\n"); | ||
829 | our $clean = 0; | 858 | our $clean = 0; |
830 | our $cnt_chk++; | 859 | our $cnt_chk++; |
831 | } | 860 | } |
@@ -867,30 +896,76 @@ sub process { | |||
867 | my $prev_values = 'E'; | 896 | my $prev_values = 'E'; |
868 | 897 | ||
869 | # suppression flags | 898 | # suppression flags |
870 | my $suppress_ifbraces = 0; | 899 | my %suppress_ifbraces; |
871 | 900 | ||
872 | # Pre-scan the patch sanitizing the lines. | 901 | # Pre-scan the patch sanitizing the lines. |
873 | # Pre-scan the patch looking for any __setup documentation. | 902 | # Pre-scan the patch looking for any __setup documentation. |
874 | # | 903 | # |
875 | my @setup_docs = (); | 904 | my @setup_docs = (); |
876 | my $setup_docs = 0; | 905 | my $setup_docs = 0; |
906 | |||
907 | sanitise_line_reset(); | ||
877 | my $line; | 908 | my $line; |
878 | foreach my $rawline (@rawlines) { | 909 | foreach my $rawline (@rawlines) { |
879 | # Standardise the strings and chars within the input to | 910 | $linenr++; |
880 | # simplify matching. | 911 | $line = $rawline; |
881 | $line = sanitise_line($rawline); | ||
882 | push(@lines, $line); | ||
883 | |||
884 | ##print "==>$rawline\n"; | ||
885 | ##print "-->$line\n"; | ||
886 | 912 | ||
887 | if ($line=~/^\+\+\+\s+(\S+)/) { | 913 | if ($rawline=~/^\+\+\+\s+(\S+)/) { |
888 | $setup_docs = 0; | 914 | $setup_docs = 0; |
889 | if ($1 =~ m@Documentation/kernel-parameters.txt$@) { | 915 | if ($1 =~ m@Documentation/kernel-parameters.txt$@) { |
890 | $setup_docs = 1; | 916 | $setup_docs = 1; |
891 | } | 917 | } |
892 | next; | 918 | #next; |
919 | } | ||
920 | if ($rawline=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { | ||
921 | $realline=$1-1; | ||
922 | if (defined $2) { | ||
923 | $realcnt=$3+1; | ||
924 | } else { | ||
925 | $realcnt=1+1; | ||
926 | } | ||
927 | |||
928 | # Guestimate if this is a continuing comment. Run | ||
929 | # the context looking for a comment "edge". If this | ||
930 | # edge is a close comment then we must be in a comment | ||
931 | # at context start. | ||
932 | my $edge; | ||
933 | for (my $ln = $linenr; $ln < ($linenr + $realcnt); $ln++) { | ||
934 | next if ($line =~ /^-/); | ||
935 | ($edge) = ($rawlines[$ln - 1] =~ m@(/\*|\*/)@); | ||
936 | last if (defined $edge); | ||
937 | } | ||
938 | if (defined $edge && $edge eq '*/') { | ||
939 | $in_comment = 1; | ||
940 | } | ||
941 | |||
942 | # Guestimate if this is a continuing comment. If this | ||
943 | # is the start of a diff block and this line starts | ||
944 | # ' *' then it is very likely a comment. | ||
945 | if (!defined $edge && | ||
946 | $rawlines[$linenr] =~ m@^.\s* \*(?:\s|$)@) | ||
947 | { | ||
948 | $in_comment = 1; | ||
949 | } | ||
950 | |||
951 | ##print "COMMENT:$in_comment edge<$edge> $rawline\n"; | ||
952 | sanitise_line_reset($in_comment); | ||
953 | |||
954 | } elsif ($realcnt) { | ||
955 | # Standardise the strings and chars within the input to | ||
956 | # simplify matching. | ||
957 | $line = sanitise_line($rawline); | ||
893 | } | 958 | } |
959 | push(@lines, $line); | ||
960 | |||
961 | if ($realcnt > 1) { | ||
962 | $realcnt-- if ($line =~ /^(?:\+| |$)/); | ||
963 | } else { | ||
964 | $realcnt = 0; | ||
965 | } | ||
966 | |||
967 | #print "==>$rawline\n"; | ||
968 | #print "-->$line\n"; | ||
894 | 969 | ||
895 | if ($setup_docs && $line =~ /^\+/) { | 970 | if ($setup_docs && $line =~ /^\+/) { |
896 | push(@setup_docs, $line); | 971 | push(@setup_docs, $line); |
@@ -899,23 +974,17 @@ sub process { | |||
899 | 974 | ||
900 | $prefix = ''; | 975 | $prefix = ''; |
901 | 976 | ||
977 | $realcnt = 0; | ||
978 | $linenr = 0; | ||
902 | foreach my $line (@lines) { | 979 | foreach my $line (@lines) { |
903 | $linenr++; | 980 | $linenr++; |
904 | 981 | ||
905 | my $rawline = $rawlines[$linenr - 1]; | 982 | my $rawline = $rawlines[$linenr - 1]; |
906 | 983 | ||
907 | #extract the filename as it passes | ||
908 | if ($line=~/^\+\+\+\s+(\S+)/) { | ||
909 | $realfile=$1; | ||
910 | $realfile =~ s@^[^/]*/@@; | ||
911 | $in_comment = 0; | ||
912 | next; | ||
913 | } | ||
914 | #extract the line range in the file after the patch is applied | 984 | #extract the line range in the file after the patch is applied |
915 | if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { | 985 | if ($line=~/^\@\@ -\d+(?:,\d+)? \+(\d+)(,(\d+))? \@\@/) { |
916 | $is_patch = 1; | 986 | $is_patch = 1; |
917 | $first_line = $linenr + 1; | 987 | $first_line = $linenr + 1; |
918 | $in_comment = 0; | ||
919 | $realline=$1-1; | 988 | $realline=$1-1; |
920 | if (defined $2) { | 989 | if (defined $2) { |
921 | $realcnt=$3+1; | 990 | $realcnt=$3+1; |
@@ -925,50 +994,16 @@ sub process { | |||
925 | annotate_reset(); | 994 | annotate_reset(); |
926 | $prev_values = 'E'; | 995 | $prev_values = 'E'; |
927 | 996 | ||
928 | $suppress_ifbraces = $linenr - 1; | 997 | %suppress_ifbraces = (); |
929 | next; | 998 | next; |
930 | } | ||
931 | 999 | ||
932 | # track the line number as we move through the hunk, note that | 1000 | # track the line number as we move through the hunk, note that |
933 | # new versions of GNU diff omit the leading space on completely | 1001 | # new versions of GNU diff omit the leading space on completely |
934 | # blank context lines so we need to count that too. | 1002 | # blank context lines so we need to count that too. |
935 | if ($line =~ /^( |\+|$)/) { | 1003 | } elsif ($line =~ /^( |\+|$)/) { |
936 | $realline++; | 1004 | $realline++; |
937 | $realcnt-- if ($realcnt != 0); | 1005 | $realcnt-- if ($realcnt != 0); |
938 | 1006 | ||
939 | # Guestimate if this is a continuing comment. Run | ||
940 | # the context looking for a comment "edge". If this | ||
941 | # edge is a close comment then we must be in a comment | ||
942 | # at context start. | ||
943 | if ($linenr == $first_line) { | ||
944 | my $edge; | ||
945 | for (my $ln = $first_line; $ln < ($linenr + $realcnt); $ln++) { | ||
946 | ($edge) = ($rawlines[$ln - 1] =~ m@(/\*|\*/)@); | ||
947 | last if (defined $edge); | ||
948 | } | ||
949 | if (defined $edge && $edge eq '*/') { | ||
950 | $in_comment = 1; | ||
951 | } | ||
952 | } | ||
953 | |||
954 | # Guestimate if this is a continuing comment. If this | ||
955 | # is the start of a diff block and this line starts | ||
956 | # ' *' then it is very likely a comment. | ||
957 | if ($linenr == $first_line and $rawline =~ m@^.\s* \*(?:\s|$)@) { | ||
958 | $in_comment = 1; | ||
959 | } | ||
960 | |||
961 | # Find the last comment edge on _this_ line. | ||
962 | $comment_edge = 0; | ||
963 | while (($rawline =~ m@(/\*|\*/)@g)) { | ||
964 | if ($1 eq '/*') { | ||
965 | $in_comment = 1; | ||
966 | } else { | ||
967 | $in_comment = 0; | ||
968 | } | ||
969 | $comment_edge = 1; | ||
970 | } | ||
971 | |||
972 | # Measure the line length and indent. | 1007 | # Measure the line length and indent. |
973 | ($length, $indent) = line_stats($rawline); | 1008 | ($length, $indent) = line_stats($rawline); |
974 | 1009 | ||
@@ -977,23 +1012,36 @@ sub process { | |||
977 | ($previndent, $stashindent) = ($stashindent, $indent); | 1012 | ($previndent, $stashindent) = ($stashindent, $indent); |
978 | ($prevrawline, $stashrawline) = ($stashrawline, $rawline); | 1013 | ($prevrawline, $stashrawline) = ($stashrawline, $rawline); |
979 | 1014 | ||
980 | #warn "ic<$in_comment> ce<$comment_edge> line<$line>\n"; | 1015 | #warn "line<$line>\n"; |
981 | 1016 | ||
982 | } elsif ($realcnt == 1) { | 1017 | } elsif ($realcnt == 1) { |
983 | $realcnt--; | 1018 | $realcnt--; |
984 | } | 1019 | } |
985 | 1020 | ||
986 | #make up the handle for any error we report on this line | 1021 | #make up the handle for any error we report on this line |
1022 | $prefix = "$filename:$realline: " if ($emacs && $file); | ||
1023 | $prefix = "$filename:$linenr: " if ($emacs && !$file); | ||
1024 | |||
987 | $here = "#$linenr: " if (!$file); | 1025 | $here = "#$linenr: " if (!$file); |
988 | $here = "#$realline: " if ($file); | 1026 | $here = "#$realline: " if ($file); |
1027 | |||
1028 | # extract the filename as it passes | ||
1029 | if ($line=~/^\+\+\+\s+(\S+)/) { | ||
1030 | $realfile = $1; | ||
1031 | $realfile =~ s@^[^/]*/@@; | ||
1032 | |||
1033 | if ($realfile =~ m@include/asm/@) { | ||
1034 | ERROR("do not modify files in include/asm, change architecture specific files in include/asm-<architecture>\n" . "$here$rawline\n"); | ||
1035 | } | ||
1036 | next; | ||
1037 | } | ||
1038 | |||
989 | $here .= "FILE: $realfile:$realline:" if ($realcnt != 0); | 1039 | $here .= "FILE: $realfile:$realline:" if ($realcnt != 0); |
990 | 1040 | ||
991 | my $hereline = "$here\n$rawline\n"; | 1041 | my $hereline = "$here\n$rawline\n"; |
992 | my $herecurr = "$here\n$rawline\n"; | 1042 | my $herecurr = "$here\n$rawline\n"; |
993 | my $hereprev = "$here\n$prevrawline\n$rawline\n"; | 1043 | my $hereprev = "$here\n$prevrawline\n$rawline\n"; |
994 | 1044 | ||
995 | $prefix = "$filename:$realline: " if ($emacs && $file); | ||
996 | $prefix = "$filename:$linenr: " if ($emacs && !$file); | ||
997 | $cnt_lines++ if ($realcnt != 0); | 1045 | $cnt_lines++ if ($realcnt != 0); |
998 | 1046 | ||
999 | #check the patch for a signoff: | 1047 | #check the patch for a signoff: |
@@ -1005,7 +1053,7 @@ sub process { | |||
1005 | $herecurr); | 1053 | $herecurr); |
1006 | } | 1054 | } |
1007 | if ($line =~ /^\s*signed-off-by:\S/i) { | 1055 | if ($line =~ /^\s*signed-off-by:\S/i) { |
1008 | WARN("need space after Signed-off-by:\n" . | 1056 | WARN("space required after Signed-off-by:\n" . |
1009 | $herecurr); | 1057 | $herecurr); |
1010 | } | 1058 | } |
1011 | } | 1059 | } |
@@ -1072,11 +1120,6 @@ sub process { | |||
1072 | WARN("CVS style keyword markers, these will _not_ be updated\n". $herecurr); | 1120 | WARN("CVS style keyword markers, these will _not_ be updated\n". $herecurr); |
1073 | } | 1121 | } |
1074 | 1122 | ||
1075 | # The rest of our checks refer specifically to C style | ||
1076 | # only apply those _outside_ comments. Only skip | ||
1077 | # lines in the middle of comments. | ||
1078 | next if (!$comment_edge && $in_comment); | ||
1079 | |||
1080 | # Check for potential 'bare' types | 1123 | # Check for potential 'bare' types |
1081 | if ($realcnt) { | 1124 | if ($realcnt) { |
1082 | my ($s, $c) = ctx_statement_block($linenr, $realcnt, 0); | 1125 | my ($s, $c) = ctx_statement_block($linenr, $realcnt, 0); |
@@ -1110,7 +1153,7 @@ sub process { | |||
1110 | my ($name_len) = length($1); | 1153 | my ($name_len) = length($1); |
1111 | 1154 | ||
1112 | my $ctx = $s; | 1155 | my $ctx = $s; |
1113 | substr($ctx, 0, $name_len + 1) = ''; | 1156 | substr($ctx, 0, $name_len + 1, ''); |
1114 | $ctx =~ s/\)[^\)]*$//; | 1157 | $ctx =~ s/\)[^\)]*$//; |
1115 | 1158 | ||
1116 | for my $arg (split(/\s*,\s*/, $ctx)) { | 1159 | for my $arg (split(/\s*,\s*/, $ctx)) { |
@@ -1151,27 +1194,33 @@ sub process { | |||
1151 | 1194 | ||
1152 | # if/while/etc brace do not go on next line, unless defining a do while loop, | 1195 | # if/while/etc brace do not go on next line, unless defining a do while loop, |
1153 | # or if that brace on the next line is for something else | 1196 | # or if that brace on the next line is for something else |
1154 | if ($line =~ /\b(?:(if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.#/) { | 1197 | if ($line =~ /(.*)\b((?:if|while|for|switch)\s*\(|do\b|else\b)/ && $line !~ /^.#/) { |
1198 | my $pre_ctx = "$1$2"; | ||
1199 | |||
1155 | my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0); | 1200 | my ($level, @ctx) = ctx_statement_level($linenr, $realcnt, 0); |
1156 | my $ctx_ln = $linenr + $#ctx + 1; | 1201 | my $ctx_ln = $linenr + $#ctx + 1; |
1157 | my $ctx_cnt = $realcnt - $#ctx - 1; | 1202 | my $ctx_cnt = $realcnt - $#ctx - 1; |
1158 | my $ctx = join("\n", @ctx); | 1203 | my $ctx = join("\n", @ctx); |
1159 | 1204 | ||
1205 | ##warn "realcnt<$realcnt> ctx_cnt<$ctx_cnt>\n"; | ||
1206 | |||
1160 | # Skip over any removed lines in the context following statement. | 1207 | # Skip over any removed lines in the context following statement. |
1161 | while ($ctx_cnt > 0 && $lines[$ctx_ln - 1] =~ /^-/) { | 1208 | while (defined($lines[$ctx_ln - 1]) && $lines[$ctx_ln - 1] =~ /^-/) { |
1162 | $ctx_ln++; | 1209 | $ctx_ln++; |
1163 | $ctx_cnt--; | ||
1164 | } | 1210 | } |
1165 | ##warn "line<$line>\nctx<$ctx>\nnext<$lines[$ctx_ln - 1]>"; | 1211 | ##warn "pre<$pre_ctx>\nline<$line>\nctx<$ctx>\nnext<$lines[$ctx_ln - 1]>\n"; |
1166 | 1212 | ||
1167 | if ($ctx !~ /{\s*/ && $ctx_cnt > 0 && $lines[$ctx_ln - 1] =~ /^\+\s*{/) { | 1213 | if ($ctx !~ /{\s*/ && defined($lines[$ctx_ln -1]) && $lines[$ctx_ln - 1] =~ /^\+\s*{/) { |
1168 | ERROR("That open brace { should be on the previous line\n" . | 1214 | ERROR("that open brace { should be on the previous line\n" . |
1169 | "$here\n$ctx\n$lines[$ctx_ln - 1]"); | 1215 | "$here\n$ctx\n$lines[$ctx_ln - 1]"); |
1170 | } | 1216 | } |
1171 | if ($level == 0 && $ctx =~ /\)\s*\;\s*$/ && defined $lines[$ctx_ln - 1]) { | 1217 | if ($level == 0 && $pre_ctx !~ /}\s*while\s*\($/ && |
1218 | $ctx =~ /\)\s*\;\s*$/ && | ||
1219 | defined $lines[$ctx_ln - 1]) | ||
1220 | { | ||
1172 | my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]); | 1221 | my ($nlength, $nindent) = line_stats($lines[$ctx_ln - 1]); |
1173 | if ($nindent > $indent) { | 1222 | if ($nindent > $indent) { |
1174 | WARN("Trailing semicolon indicates no statements, indent implies otherwise\n" . | 1223 | WARN("trailing semicolon indicates no statements, indent implies otherwise\n" . |
1175 | "$here\n$ctx\n$lines[$ctx_ln - 1]"); | 1224 | "$here\n$ctx\n$lines[$ctx_ln - 1]"); |
1176 | } | 1225 | } |
1177 | } | 1226 | } |
@@ -1200,7 +1249,7 @@ sub process { | |||
1200 | # check for initialisation to aggregates open brace on the next line | 1249 | # check for initialisation to aggregates open brace on the next line |
1201 | if ($prevline =~ /$Declare\s*$Ident\s*=\s*$/ && | 1250 | if ($prevline =~ /$Declare\s*$Ident\s*=\s*$/ && |
1202 | $line =~ /^.\s*{/) { | 1251 | $line =~ /^.\s*{/) { |
1203 | ERROR("That open brace { should be on the previous line\n" . $hereprev); | 1252 | ERROR("that open brace { should be on the previous line\n" . $hereprev); |
1204 | } | 1253 | } |
1205 | 1254 | ||
1206 | # | 1255 | # |
@@ -1325,22 +1374,31 @@ sub process { | |||
1325 | # check for spaces between functions and their parentheses. | 1374 | # check for spaces between functions and their parentheses. |
1326 | while ($line =~ /($Ident)\s+\(/g) { | 1375 | while ($line =~ /($Ident)\s+\(/g) { |
1327 | my $name = $1; | 1376 | my $name = $1; |
1328 | my $ctx = substr($line, 0, $-[1]); | 1377 | my $ctx_before = substr($line, 0, $-[1]); |
1378 | my $ctx = "$ctx_before$name"; | ||
1329 | 1379 | ||
1330 | # Ignore those directives where spaces _are_ permitted. | 1380 | # Ignore those directives where spaces _are_ permitted. |
1331 | if ($name =~ /^(?:if|for|while|switch|return|volatile|__volatile__|__attribute__|format|__extension__|Copyright|case|__asm__)$/) { | 1381 | if ($name =~ /^(?: |
1382 | if|for|while|switch|return|case| | ||
1383 | volatile|__volatile__| | ||
1384 | __attribute__|format|__extension__| | ||
1385 | asm|__asm__)$/x) | ||
1386 | { | ||
1332 | 1387 | ||
1333 | # cpp #define statements have non-optional spaces, ie | 1388 | # cpp #define statements have non-optional spaces, ie |
1334 | # if there is a space between the name and the open | 1389 | # if there is a space between the name and the open |
1335 | # parenthesis it is simply not a parameter group. | 1390 | # parenthesis it is simply not a parameter group. |
1336 | } elsif ($ctx =~ /^.\#\s*define\s*$/) { | 1391 | } elsif ($ctx_before =~ /^.\#\s*define\s*$/) { |
1392 | |||
1393 | # cpp #elif statement condition may start with a ( | ||
1394 | } elsif ($ctx =~ /^.\#\s*elif\s*$/) { | ||
1337 | 1395 | ||
1338 | # If this whole things ends with a type its most | 1396 | # If this whole things ends with a type its most |
1339 | # likely a typedef for a function. | 1397 | # likely a typedef for a function. |
1340 | } elsif ("$ctx$name" =~ /$Type$/) { | 1398 | } elsif ($ctx =~ /$Type$/) { |
1341 | 1399 | ||
1342 | } else { | 1400 | } else { |
1343 | WARN("no space between function name and open parenthesis '('\n" . $herecurr); | 1401 | WARN("space prohibited between function name and open parenthesis '('\n" . $herecurr); |
1344 | } | 1402 | } |
1345 | } | 1403 | } |
1346 | # Check operator spacing. | 1404 | # Check operator spacing. |
@@ -1359,13 +1417,21 @@ sub process { | |||
1359 | for (my $n = 0; $n < $#elements; $n += 2) { | 1417 | for (my $n = 0; $n < $#elements; $n += 2) { |
1360 | $off += length($elements[$n]); | 1418 | $off += length($elements[$n]); |
1361 | 1419 | ||
1420 | # Pick up the preceeding and succeeding characters. | ||
1421 | my $ca = substr($opline, 0, $off); | ||
1422 | my $cc = ''; | ||
1423 | if (length($opline) >= ($off + length($elements[$n + 1]))) { | ||
1424 | $cc = substr($opline, $off + length($elements[$n + 1])); | ||
1425 | } | ||
1426 | my $cb = "$ca$;$cc"; | ||
1427 | |||
1362 | my $a = ''; | 1428 | my $a = ''; |
1363 | $a = 'V' if ($elements[$n] ne ''); | 1429 | $a = 'V' if ($elements[$n] ne ''); |
1364 | $a = 'W' if ($elements[$n] =~ /\s$/); | 1430 | $a = 'W' if ($elements[$n] =~ /\s$/); |
1365 | $a = 'C' if ($elements[$n] =~ /$;$/); | 1431 | $a = 'C' if ($elements[$n] =~ /$;$/); |
1366 | $a = 'B' if ($elements[$n] =~ /(\[|\()$/); | 1432 | $a = 'B' if ($elements[$n] =~ /(\[|\()$/); |
1367 | $a = 'O' if ($elements[$n] eq ''); | 1433 | $a = 'O' if ($elements[$n] eq ''); |
1368 | $a = 'E' if ($elements[$n] eq '' && $n == 0); | 1434 | $a = 'E' if ($ca =~ /^\s*$/); |
1369 | 1435 | ||
1370 | my $op = $elements[$n + 1]; | 1436 | my $op = $elements[$n + 1]; |
1371 | 1437 | ||
@@ -1381,14 +1447,6 @@ sub process { | |||
1381 | $c = 'E'; | 1447 | $c = 'E'; |
1382 | } | 1448 | } |
1383 | 1449 | ||
1384 | # Pick up the preceeding and succeeding characters. | ||
1385 | my $ca = substr($opline, 0, $off); | ||
1386 | my $cc = ''; | ||
1387 | if (length($opline) >= ($off + length($elements[$n + 1]))) { | ||
1388 | $cc = substr($opline, $off + length($elements[$n + 1])); | ||
1389 | } | ||
1390 | my $cb = "$ca$;$cc"; | ||
1391 | |||
1392 | my $ctx = "${a}x${c}"; | 1450 | my $ctx = "${a}x${c}"; |
1393 | 1451 | ||
1394 | my $at = "(ctx:$ctx)"; | 1452 | my $at = "(ctx:$ctx)"; |
@@ -1424,7 +1482,7 @@ sub process { | |||
1424 | } elsif ($op eq ';') { | 1482 | } elsif ($op eq ';') { |
1425 | if ($ctx !~ /.x[WEBC]/ && | 1483 | if ($ctx !~ /.x[WEBC]/ && |
1426 | $cc !~ /^\\/ && $cc !~ /^;/) { | 1484 | $cc !~ /^\\/ && $cc !~ /^;/) { |
1427 | ERROR("need space after that '$op' $at\n" . $hereptr); | 1485 | ERROR("space required after that '$op' $at\n" . $hereptr); |
1428 | } | 1486 | } |
1429 | 1487 | ||
1430 | # // is a comment | 1488 | # // is a comment |
@@ -1433,13 +1491,13 @@ sub process { | |||
1433 | # -> should have no spaces | 1491 | # -> should have no spaces |
1434 | } elsif ($op eq '->') { | 1492 | } elsif ($op eq '->') { |
1435 | if ($ctx =~ /Wx.|.xW/) { | 1493 | if ($ctx =~ /Wx.|.xW/) { |
1436 | ERROR("no spaces around that '$op' $at\n" . $hereptr); | 1494 | ERROR("spaces prohibited around that '$op' $at\n" . $hereptr); |
1437 | } | 1495 | } |
1438 | 1496 | ||
1439 | # , must have a space on the right. | 1497 | # , must have a space on the right. |
1440 | } elsif ($op eq ',') { | 1498 | } elsif ($op eq ',') { |
1441 | if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/) { | 1499 | if ($ctx !~ /.x[WEC]/ && $cc !~ /^}/) { |
1442 | ERROR("need space after that '$op' $at\n" . $hereptr); | 1500 | ERROR("space required after that '$op' $at\n" . $hereptr); |
1443 | } | 1501 | } |
1444 | 1502 | ||
1445 | # '*' as part of a type definition -- reported already. | 1503 | # '*' as part of a type definition -- reported already. |
@@ -1452,21 +1510,26 @@ sub process { | |||
1452 | } elsif ($op eq '!' || $op eq '~' || | 1510 | } elsif ($op eq '!' || $op eq '~' || |
1453 | ($is_unary && ($op eq '*' || $op eq '-' || $op eq '&'))) { | 1511 | ($is_unary && ($op eq '*' || $op eq '-' || $op eq '&'))) { |
1454 | if ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) { | 1512 | if ($ctx !~ /[WEBC]x./ && $ca !~ /(?:\)|!|~|\*|-|\&|\||\+\+|\-\-|\{)$/) { |
1455 | ERROR("need space before that '$op' $at\n" . $hereptr); | 1513 | ERROR("space required before that '$op' $at\n" . $hereptr); |
1456 | } | 1514 | } |
1457 | if ($ctx =~ /.xW/) { | 1515 | if ($ctx =~ /.xW/) { |
1458 | ERROR("no space after that '$op' $at\n" . $hereptr); | 1516 | ERROR("space prohibited after that '$op' $at\n" . $hereptr); |
1459 | } | 1517 | } |
1460 | 1518 | ||
1461 | # unary ++ and unary -- are allowed no space on one side. | 1519 | # unary ++ and unary -- are allowed no space on one side. |
1462 | } elsif ($op eq '++' or $op eq '--') { | 1520 | } elsif ($op eq '++' or $op eq '--') { |
1463 | if ($ctx !~ /[WOBC]x[^W]/ && $ctx !~ /[^W]x[WOBEC]/) { | 1521 | if ($ctx !~ /[WEOBC]x[^W]/ && $ctx !~ /[^W]x[WOBEC]/) { |
1464 | ERROR("need space one side of that '$op' $at\n" . $hereptr); | 1522 | ERROR("space required one side of that '$op' $at\n" . $hereptr); |
1523 | } | ||
1524 | if ($ctx =~ /Wx[BE]/ || | ||
1525 | ($ctx =~ /Wx./ && $cc =~ /^;/)) { | ||
1526 | ERROR("space prohibited before that '$op' $at\n" . $hereptr); | ||
1465 | } | 1527 | } |
1466 | if ($ctx =~ /WxB/ || ($ctx =~ /Wx./ && $cc =~ /^;/)) { | 1528 | if ($ctx =~ /ExW/) { |
1467 | ERROR("no space before that '$op' $at\n" . $hereptr); | 1529 | ERROR("space prohibited after that '$op' $at\n" . $hereptr); |
1468 | } | 1530 | } |
1469 | 1531 | ||
1532 | |||
1470 | # << and >> may either have or not have spaces both sides | 1533 | # << and >> may either have or not have spaces both sides |
1471 | } elsif ($op eq '<<' or $op eq '>>' or | 1534 | } elsif ($op eq '<<' or $op eq '>>' or |
1472 | $op eq '&' or $op eq '^' or $op eq '|' or | 1535 | $op eq '&' or $op eq '^' or $op eq '|' or |
@@ -1474,7 +1537,7 @@ sub process { | |||
1474 | $op eq '*' or $op eq '/' or | 1537 | $op eq '*' or $op eq '/' or |
1475 | $op eq '%') | 1538 | $op eq '%') |
1476 | { | 1539 | { |
1477 | if ($ctx !~ /VxV|WxW|VxE|WxE|VxO|Cx.|.xC/) { | 1540 | if ($ctx =~ /Wx[^WCE]|[^WCE]xW/) { |
1478 | ERROR("need consistent spacing around '$op' $at\n" . | 1541 | ERROR("need consistent spacing around '$op' $at\n" . |
1479 | $hereptr); | 1542 | $hereptr); |
1480 | } | 1543 | } |
@@ -1484,7 +1547,7 @@ sub process { | |||
1484 | # Ignore email addresses <foo@bar> | 1547 | # Ignore email addresses <foo@bar> |
1485 | if (!($op eq '<' && $cb =~ /$;\S+\@\S+>/) && | 1548 | if (!($op eq '<' && $cb =~ /$;\S+\@\S+>/) && |
1486 | !($op eq '>' && $cb =~ /<\S+\@\S+$;/)) { | 1549 | !($op eq '>' && $cb =~ /<\S+\@\S+$;/)) { |
1487 | ERROR("need spaces around that '$op' $at\n" . $hereptr); | 1550 | ERROR("spaces required around that '$op' $at\n" . $hereptr); |
1488 | } | 1551 | } |
1489 | } | 1552 | } |
1490 | $off += length($elements[$n + 1]); | 1553 | $off += length($elements[$n + 1]); |
@@ -1514,31 +1577,31 @@ sub process { | |||
1514 | #need space before brace following if, while, etc | 1577 | #need space before brace following if, while, etc |
1515 | if (($line =~ /\(.*\){/ && $line !~ /\($Type\){/) || | 1578 | if (($line =~ /\(.*\){/ && $line !~ /\($Type\){/) || |
1516 | $line =~ /do{/) { | 1579 | $line =~ /do{/) { |
1517 | ERROR("need a space before the open brace '{'\n" . $herecurr); | 1580 | ERROR("space required before the open brace '{'\n" . $herecurr); |
1518 | } | 1581 | } |
1519 | 1582 | ||
1520 | # closing brace should have a space following it when it has anything | 1583 | # closing brace should have a space following it when it has anything |
1521 | # on the line | 1584 | # on the line |
1522 | if ($line =~ /}(?!(?:,|;|\)))\S/) { | 1585 | if ($line =~ /}(?!(?:,|;|\)))\S/) { |
1523 | ERROR("need a space after that close brace '}'\n" . $herecurr); | 1586 | ERROR("space required after that close brace '}'\n" . $herecurr); |
1524 | } | 1587 | } |
1525 | 1588 | ||
1526 | # check spacing on square brackets | 1589 | # check spacing on square brackets |
1527 | if ($line =~ /\[\s/ && $line !~ /\[\s*$/) { | 1590 | if ($line =~ /\[\s/ && $line !~ /\[\s*$/) { |
1528 | ERROR("no space after that open square bracket '['\n" . $herecurr); | 1591 | ERROR("space prohibited after that open square bracket '['\n" . $herecurr); |
1529 | } | 1592 | } |
1530 | if ($line =~ /\s\]/) { | 1593 | if ($line =~ /\s\]/) { |
1531 | ERROR("no space before that close square bracket ']'\n" . $herecurr); | 1594 | ERROR("space prohibited before that close square bracket ']'\n" . $herecurr); |
1532 | } | 1595 | } |
1533 | 1596 | ||
1534 | # check spacing on paretheses | 1597 | # check spacing on paretheses |
1535 | if ($line =~ /\(\s/ && $line !~ /\(\s*(?:\\)?$/ && | 1598 | if ($line =~ /\(\s/ && $line !~ /\(\s*(?:\\)?$/ && |
1536 | $line !~ /for\s*\(\s+;/) { | 1599 | $line !~ /for\s*\(\s+;/) { |
1537 | ERROR("no space after that open parenthesis '('\n" . $herecurr); | 1600 | ERROR("space prohibited after that open parenthesis '('\n" . $herecurr); |
1538 | } | 1601 | } |
1539 | if ($line =~ /(\s+)\)/ && $line !~ /^.\s*\)/ && | 1602 | if ($line =~ /(\s+)\)/ && $line !~ /^.\s*\)/ && |
1540 | $line !~ /for\s*\(.*;\s+\)/) { | 1603 | $line !~ /for\s*\(.*;\s+\)/) { |
1541 | ERROR("no space before that close parenthesis ')'\n" . $herecurr); | 1604 | ERROR("space prohibited before that close parenthesis ')'\n" . $herecurr); |
1542 | } | 1605 | } |
1543 | 1606 | ||
1544 | #goto labels aren't indented, allow a single space however | 1607 | #goto labels aren't indented, allow a single space however |
@@ -1549,7 +1612,7 @@ sub process { | |||
1549 | 1612 | ||
1550 | # Need a space before open parenthesis after if, while etc | 1613 | # Need a space before open parenthesis after if, while etc |
1551 | if ($line=~/\b(if|while|for|switch)\(/) { | 1614 | if ($line=~/\b(if|while|for|switch)\(/) { |
1552 | ERROR("need a space before the open parenthesis '('\n" . $herecurr); | 1615 | ERROR("space required before the open parenthesis '('\n" . $herecurr); |
1553 | } | 1616 | } |
1554 | 1617 | ||
1555 | # Check for illegal assignment in if conditional. | 1618 | # Check for illegal assignment in if conditional. |
@@ -1562,10 +1625,12 @@ sub process { | |||
1562 | 1625 | ||
1563 | # Find out what is on the end of the line after the | 1626 | # Find out what is on the end of the line after the |
1564 | # conditional. | 1627 | # conditional. |
1565 | substr($s, 0, length($c)) = ''; | 1628 | substr($s, 0, length($c), ''); |
1566 | $s =~ s/\n.*//g; | 1629 | $s =~ s/\n.*//g; |
1567 | $s =~ s/$;//g; # Remove any comments | 1630 | $s =~ s/$;//g; # Remove any comments |
1568 | if (length($c) && $s !~ /^\s*({|;|)\s*\\*\s*$/) { | 1631 | if (length($c) && $s !~ /^\s*({|;|)\s*\\*\s*$/ && |
1632 | $c !~ /^.\#\s*if/) | ||
1633 | { | ||
1569 | ERROR("trailing statements should be on next line\n" . $herecurr); | 1634 | ERROR("trailing statements should be on next line\n" . $herecurr); |
1570 | } | 1635 | } |
1571 | } | 1636 | } |
@@ -1607,7 +1672,7 @@ sub process { | |||
1607 | 1672 | ||
1608 | # Find out what is on the end of the line after the | 1673 | # Find out what is on the end of the line after the |
1609 | # conditional. | 1674 | # conditional. |
1610 | substr($s, 0, length($c)) = ''; | 1675 | substr($s, 0, length($c), ''); |
1611 | $s =~ s/\n.*//g; | 1676 | $s =~ s/\n.*//g; |
1612 | 1677 | ||
1613 | if ($s =~ /^\s*;/) { | 1678 | if ($s =~ /^\s*;/) { |
@@ -1631,7 +1696,7 @@ sub process { | |||
1631 | if ($tree && $rawline =~ m{^.\#\s*include\s*\<asm\/(.*)\.h\>}) { | 1696 | if ($tree && $rawline =~ m{^.\#\s*include\s*\<asm\/(.*)\.h\>}) { |
1632 | my $checkfile = "$root/include/linux/$1.h"; | 1697 | my $checkfile = "$root/include/linux/$1.h"; |
1633 | if (-f $checkfile && $1 ne 'irq.h') { | 1698 | if (-f $checkfile && $1 ne 'irq.h') { |
1634 | CHK("Use #include <linux/$1.h> instead of <asm/$1.h>\n" . | 1699 | WARN("Use #include <linux/$1.h> instead of <asm/$1.h>\n" . |
1635 | $herecurr); | 1700 | $herecurr); |
1636 | } | 1701 | } |
1637 | } | 1702 | } |
@@ -1692,15 +1757,24 @@ sub process { | |||
1692 | if ($#chunks > 0 && $level == 0) { | 1757 | if ($#chunks > 0 && $level == 0) { |
1693 | my $allowed = 0; | 1758 | my $allowed = 0; |
1694 | my $seen = 0; | 1759 | my $seen = 0; |
1695 | my $herectx = $here . "\n";; | 1760 | my $herectx = $here . "\n"; |
1696 | my $ln = $linenr - 1; | 1761 | my $ln = $linenr - 1; |
1697 | for my $chunk (@chunks) { | 1762 | for my $chunk (@chunks) { |
1698 | my ($cond, $block) = @{$chunk}; | 1763 | my ($cond, $block) = @{$chunk}; |
1699 | 1764 | ||
1700 | $herectx .= "$rawlines[$ln]\n[...]\n"; | 1765 | # If the condition carries leading newlines, then count those as offsets. |
1766 | my ($whitespace) = ($cond =~ /^((?:\s*\n[+-])*\s*)/s); | ||
1767 | my $offset = statement_rawlines($whitespace) - 1; | ||
1768 | |||
1769 | #print "COND<$cond> whitespace<$whitespace> offset<$offset>\n"; | ||
1770 | |||
1771 | # We have looked at and allowed this specific line. | ||
1772 | $suppress_ifbraces{$ln + $offset} = 1; | ||
1773 | |||
1774 | $herectx .= "$rawlines[$ln + $offset]\n[...]\n"; | ||
1701 | $ln += statement_rawlines($block) - 1; | 1775 | $ln += statement_rawlines($block) - 1; |
1702 | 1776 | ||
1703 | substr($block, 0, length($cond)) = ''; | 1777 | substr($block, 0, length($cond), ''); |
1704 | 1778 | ||
1705 | $seen++ if ($block =~ /^\s*{/); | 1779 | $seen++ if ($block =~ /^\s*{/); |
1706 | 1780 | ||
@@ -1721,16 +1795,10 @@ sub process { | |||
1721 | if ($seen && !$allowed) { | 1795 | if ($seen && !$allowed) { |
1722 | WARN("braces {} are not necessary for any arm of this statement\n" . $herectx); | 1796 | WARN("braces {} are not necessary for any arm of this statement\n" . $herectx); |
1723 | } | 1797 | } |
1724 | # Either way we have looked over this whole | ||
1725 | # statement and said what needs to be said. | ||
1726 | $suppress_ifbraces = $endln; | ||
1727 | } | 1798 | } |
1728 | } | 1799 | } |
1729 | if ($linenr > $suppress_ifbraces && | 1800 | if (!defined $suppress_ifbraces{$linenr - 1} && |
1730 | $line =~ /\b(if|while|for|else)\b/) { | 1801 | $line =~ /\b(if|while|for|else)\b/) { |
1731 | my ($level, $endln, @chunks) = | ||
1732 | ctx_statement_full($linenr, $realcnt, $-[0]); | ||
1733 | |||
1734 | my $allowed = 0; | 1802 | my $allowed = 0; |
1735 | 1803 | ||
1736 | # Check the pre-context. | 1804 | # Check the pre-context. |
@@ -1738,10 +1806,15 @@ sub process { | |||
1738 | #print "APW: ALLOWED: pre<$1>\n"; | 1806 | #print "APW: ALLOWED: pre<$1>\n"; |
1739 | $allowed = 1; | 1807 | $allowed = 1; |
1740 | } | 1808 | } |
1809 | |||
1810 | my ($level, $endln, @chunks) = | ||
1811 | ctx_statement_full($linenr, $realcnt, $-[0]); | ||
1812 | |||
1741 | # Check the condition. | 1813 | # Check the condition. |
1742 | my ($cond, $block) = @{$chunks[0]}; | 1814 | my ($cond, $block) = @{$chunks[0]}; |
1815 | #print "CHECKING<$linenr> cond<$cond> block<$block>\n"; | ||
1743 | if (defined $cond) { | 1816 | if (defined $cond) { |
1744 | substr($block, 0, length($cond)) = ''; | 1817 | substr($block, 0, length($cond), ''); |
1745 | } | 1818 | } |
1746 | if (statement_lines($cond) > 1) { | 1819 | if (statement_lines($cond) > 1) { |
1747 | #print "APW: ALLOWED: cond<$cond>\n"; | 1820 | #print "APW: ALLOWED: cond<$cond>\n"; |
@@ -1759,7 +1832,7 @@ sub process { | |||
1759 | if (defined $chunks[1]) { | 1832 | if (defined $chunks[1]) { |
1760 | my ($cond, $block) = @{$chunks[1]}; | 1833 | my ($cond, $block) = @{$chunks[1]}; |
1761 | if (defined $cond) { | 1834 | if (defined $cond) { |
1762 | substr($block, 0, length($cond)) = ''; | 1835 | substr($block, 0, length($cond), ''); |
1763 | } | 1836 | } |
1764 | if ($block =~ /^\s*\{/) { | 1837 | if ($block =~ /^\s*\{/) { |
1765 | #print "APW: ALLOWED: chunk-1 block<$block>\n"; | 1838 | #print "APW: ALLOWED: chunk-1 block<$block>\n"; |
@@ -1882,6 +1955,28 @@ sub process { | |||
1882 | if ($line =~ /__FUNCTION__/) { | 1955 | if ($line =~ /__FUNCTION__/) { |
1883 | WARN("__func__ should be used instead of gcc specific __FUNCTION__\n" . $herecurr); | 1956 | WARN("__func__ should be used instead of gcc specific __FUNCTION__\n" . $herecurr); |
1884 | } | 1957 | } |
1958 | |||
1959 | # check for semaphores used as mutexes | ||
1960 | if ($line =~ /\b(DECLARE_MUTEX|init_MUTEX)\s*\(/) { | ||
1961 | WARN("mutexes are preferred for single holder semaphores\n" . $herecurr); | ||
1962 | } | ||
1963 | # check for semaphores used as mutexes | ||
1964 | if ($line =~ /\binit_MUTEX_LOCKED\s*\(/) { | ||
1965 | WARN("consider using a completion\n" . $herecurr); | ||
1966 | } | ||
1967 | # recommend strict_strto* over simple_strto* | ||
1968 | if ($line =~ /\bsimple_(strto.*?)\s*\(/) { | ||
1969 | WARN("consider using strict_$1 in preference to simple_$1\n" . $herecurr); | ||
1970 | } | ||
1971 | |||
1972 | # use of NR_CPUS is usually wrong | ||
1973 | # ignore definitions of NR_CPUS and usage to define arrays as likely right | ||
1974 | if ($line =~ /\bNR_CPUS\b/ && | ||
1975 | $line !~ /^.#\s*define\s+NR_CPUS\s+/ && | ||
1976 | $line !~ /^.\s*$Declare\s.*\[[^\]]*NR_CPUS[^\]]*\]/) | ||
1977 | { | ||
1978 | WARN("usage of NR_CPUS is often wrong - consider using cpu_possible(), num_possible_cpus(), for_each_possible_cpu(), etc\n" . $herecurr); | ||
1979 | } | ||
1885 | } | 1980 | } |
1886 | 1981 | ||
1887 | # If we have no input at all, then there is nothing to report on | 1982 | # If we have no input at all, then there is nothing to report on |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 41a049f50f58..d39b59cf8a08 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -180,7 +180,7 @@ static int inode_alloc_security(struct inode *inode) | |||
180 | struct task_security_struct *tsec = current->security; | 180 | struct task_security_struct *tsec = current->security; |
181 | struct inode_security_struct *isec; | 181 | struct inode_security_struct *isec; |
182 | 182 | ||
183 | isec = kmem_cache_zalloc(sel_inode_cache, GFP_KERNEL); | 183 | isec = kmem_cache_zalloc(sel_inode_cache, GFP_NOFS); |
184 | if (!isec) | 184 | if (!isec) |
185 | return -ENOMEM; | 185 | return -ENOMEM; |
186 | 186 | ||
@@ -760,13 +760,13 @@ static void selinux_sb_clone_mnt_opts(const struct super_block *oldsb, | |||
760 | * this early in the boot process. */ | 760 | * this early in the boot process. */ |
761 | BUG_ON(!ss_initialized); | 761 | BUG_ON(!ss_initialized); |
762 | 762 | ||
763 | /* this might go away sometime down the line if there is a new user | ||
764 | * of clone, but for now, nfs better not get here... */ | ||
765 | BUG_ON(newsbsec->initialized); | ||
766 | |||
767 | /* how can we clone if the old one wasn't set up?? */ | 763 | /* how can we clone if the old one wasn't set up?? */ |
768 | BUG_ON(!oldsbsec->initialized); | 764 | BUG_ON(!oldsbsec->initialized); |
769 | 765 | ||
766 | /* if fs is reusing a sb, just let its options stand... */ | ||
767 | if (newsbsec->initialized) | ||
768 | return; | ||
769 | |||
770 | mutex_lock(&newsbsec->lock); | 770 | mutex_lock(&newsbsec->lock); |
771 | 771 | ||
772 | newsbsec->flags = oldsbsec->flags; | 772 | newsbsec->flags = oldsbsec->flags; |
@@ -1143,7 +1143,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent | |||
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | len = INITCONTEXTLEN; | 1145 | len = INITCONTEXTLEN; |
1146 | context = kmalloc(len, GFP_KERNEL); | 1146 | context = kmalloc(len, GFP_NOFS); |
1147 | if (!context) { | 1147 | if (!context) { |
1148 | rc = -ENOMEM; | 1148 | rc = -ENOMEM; |
1149 | dput(dentry); | 1149 | dput(dentry); |
@@ -1161,7 +1161,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent | |||
1161 | } | 1161 | } |
1162 | kfree(context); | 1162 | kfree(context); |
1163 | len = rc; | 1163 | len = rc; |
1164 | context = kmalloc(len, GFP_KERNEL); | 1164 | context = kmalloc(len, GFP_NOFS); |
1165 | if (!context) { | 1165 | if (!context) { |
1166 | rc = -ENOMEM; | 1166 | rc = -ENOMEM; |
1167 | dput(dentry); | 1167 | dput(dentry); |
@@ -1185,7 +1185,8 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent | |||
1185 | rc = 0; | 1185 | rc = 0; |
1186 | } else { | 1186 | } else { |
1187 | rc = security_context_to_sid_default(context, rc, &sid, | 1187 | rc = security_context_to_sid_default(context, rc, &sid, |
1188 | sbsec->def_sid); | 1188 | sbsec->def_sid, |
1189 | GFP_NOFS); | ||
1189 | if (rc) { | 1190 | if (rc) { |
1190 | printk(KERN_WARNING "%s: context_to_sid(%s) " | 1191 | printk(KERN_WARNING "%s: context_to_sid(%s) " |
1191 | "returned %d for dev=%s ino=%ld\n", | 1192 | "returned %d for dev=%s ino=%ld\n", |
@@ -1630,6 +1631,12 @@ static inline u32 file_to_av(struct file *file) | |||
1630 | else | 1631 | else |
1631 | av |= FILE__WRITE; | 1632 | av |= FILE__WRITE; |
1632 | } | 1633 | } |
1634 | if (!av) { | ||
1635 | /* | ||
1636 | * Special file opened with flags 3 for ioctl-only use. | ||
1637 | */ | ||
1638 | av = FILE__IOCTL; | ||
1639 | } | ||
1633 | 1640 | ||
1634 | return av; | 1641 | return av; |
1635 | } | 1642 | } |
@@ -2423,7 +2430,7 @@ static int selinux_inode_init_security(struct inode *inode, struct inode *dir, | |||
2423 | return -EOPNOTSUPP; | 2430 | return -EOPNOTSUPP; |
2424 | 2431 | ||
2425 | if (name) { | 2432 | if (name) { |
2426 | namep = kstrdup(XATTR_SELINUX_SUFFIX, GFP_KERNEL); | 2433 | namep = kstrdup(XATTR_SELINUX_SUFFIX, GFP_NOFS); |
2427 | if (!namep) | 2434 | if (!namep) |
2428 | return -ENOMEM; | 2435 | return -ENOMEM; |
2429 | *name = namep; | 2436 | *name = namep; |
diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h index f7d2f03781f2..44e12ec88090 100644 --- a/security/selinux/include/security.h +++ b/security/selinux/include/security.h | |||
@@ -86,7 +86,8 @@ int security_sid_to_context(u32 sid, char **scontext, | |||
86 | int security_context_to_sid(char *scontext, u32 scontext_len, | 86 | int security_context_to_sid(char *scontext, u32 scontext_len, |
87 | u32 *out_sid); | 87 | u32 *out_sid); |
88 | 88 | ||
89 | int security_context_to_sid_default(char *scontext, u32 scontext_len, u32 *out_sid, u32 def_sid); | 89 | int security_context_to_sid_default(char *scontext, u32 scontext_len, |
90 | u32 *out_sid, u32 def_sid, gfp_t gfp_flags); | ||
90 | 91 | ||
91 | int security_get_user_sids(u32 callsid, char *username, | 92 | int security_get_user_sids(u32 callsid, char *username, |
92 | u32 **sids, u32 *nel); | 93 | u32 **sids, u32 *nel); |
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c index f37418601215..3f2bad28ee7b 100644 --- a/security/selinux/ss/services.c +++ b/security/selinux/ss/services.c | |||
@@ -680,7 +680,8 @@ out: | |||
680 | 680 | ||
681 | } | 681 | } |
682 | 682 | ||
683 | static int security_context_to_sid_core(char *scontext, u32 scontext_len, u32 *sid, u32 def_sid) | 683 | static int security_context_to_sid_core(char *scontext, u32 scontext_len, |
684 | u32 *sid, u32 def_sid, gfp_t gfp_flags) | ||
684 | { | 685 | { |
685 | char *scontext2; | 686 | char *scontext2; |
686 | struct context context; | 687 | struct context context; |
@@ -709,7 +710,7 @@ static int security_context_to_sid_core(char *scontext, u32 scontext_len, u32 *s | |||
709 | null suffix to the copy to avoid problems with the existing | 710 | null suffix to the copy to avoid problems with the existing |
710 | attr package, which doesn't view the null terminator as part | 711 | attr package, which doesn't view the null terminator as part |
711 | of the attribute value. */ | 712 | of the attribute value. */ |
712 | scontext2 = kmalloc(scontext_len+1,GFP_KERNEL); | 713 | scontext2 = kmalloc(scontext_len+1, gfp_flags); |
713 | if (!scontext2) { | 714 | if (!scontext2) { |
714 | rc = -ENOMEM; | 715 | rc = -ENOMEM; |
715 | goto out; | 716 | goto out; |
@@ -809,7 +810,7 @@ out: | |||
809 | int security_context_to_sid(char *scontext, u32 scontext_len, u32 *sid) | 810 | int security_context_to_sid(char *scontext, u32 scontext_len, u32 *sid) |
810 | { | 811 | { |
811 | return security_context_to_sid_core(scontext, scontext_len, | 812 | return security_context_to_sid_core(scontext, scontext_len, |
812 | sid, SECSID_NULL); | 813 | sid, SECSID_NULL, GFP_KERNEL); |
813 | } | 814 | } |
814 | 815 | ||
815 | /** | 816 | /** |
@@ -829,10 +830,11 @@ int security_context_to_sid(char *scontext, u32 scontext_len, u32 *sid) | |||
829 | * Returns -%EINVAL if the context is invalid, -%ENOMEM if insufficient | 830 | * Returns -%EINVAL if the context is invalid, -%ENOMEM if insufficient |
830 | * memory is available, or 0 on success. | 831 | * memory is available, or 0 on success. |
831 | */ | 832 | */ |
832 | int security_context_to_sid_default(char *scontext, u32 scontext_len, u32 *sid, u32 def_sid) | 833 | int security_context_to_sid_default(char *scontext, u32 scontext_len, u32 *sid, |
834 | u32 def_sid, gfp_t gfp_flags) | ||
833 | { | 835 | { |
834 | return security_context_to_sid_core(scontext, scontext_len, | 836 | return security_context_to_sid_core(scontext, scontext_len, |
835 | sid, def_sid); | 837 | sid, def_sid, gfp_flags); |
836 | } | 838 | } |
837 | 839 | ||
838 | static int compute_sid_handle_invalid_context( | 840 | static int compute_sid_handle_invalid_context( |
diff --git a/sound/oss/ac97_codec.c b/sound/oss/ac97_codec.c index 87a672680761..b63839e8f9bd 100644 --- a/sound/oss/ac97_codec.c +++ b/sound/oss/ac97_codec.c | |||
@@ -1202,3 +1202,5 @@ static int pt101_init(struct ac97_codec * codec) | |||
1202 | 1202 | ||
1203 | EXPORT_SYMBOL(ac97_probe_codec); | 1203 | EXPORT_SYMBOL(ac97_probe_codec); |
1204 | 1204 | ||
1205 | MODULE_LICENSE("GPL"); | ||
1206 | |||
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c index 25ccfce45759..7d911a18c082 100644 --- a/sound/pci/es1968.c +++ b/sound/pci/es1968.c | |||
@@ -617,6 +617,18 @@ static int snd_es1968_ac97_wait(struct es1968 *chip) | |||
617 | return 1; /* timeout */ | 617 | return 1; /* timeout */ |
618 | } | 618 | } |
619 | 619 | ||
620 | static int snd_es1968_ac97_wait_poll(struct es1968 *chip) | ||
621 | { | ||
622 | int timeout = 100000; | ||
623 | |||
624 | while (timeout-- > 0) { | ||
625 | if (!(inb(chip->io_port + ESM_AC97_INDEX) & 1)) | ||
626 | return 0; | ||
627 | } | ||
628 | snd_printd("es1968: ac97 timeout\n"); | ||
629 | return 1; /* timeout */ | ||
630 | } | ||
631 | |||
620 | static void snd_es1968_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val) | 632 | static void snd_es1968_ac97_write(struct snd_ac97 *ac97, unsigned short reg, unsigned short val) |
621 | { | 633 | { |
622 | struct es1968 *chip = ac97->private_data; | 634 | struct es1968 *chip = ac97->private_data; |
@@ -645,7 +657,7 @@ static unsigned short snd_es1968_ac97_read(struct snd_ac97 *ac97, unsigned short | |||
645 | outb(reg | 0x80, chip->io_port + ESM_AC97_INDEX); | 657 | outb(reg | 0x80, chip->io_port + ESM_AC97_INDEX); |
646 | /*msleep(1);*/ | 658 | /*msleep(1);*/ |
647 | 659 | ||
648 | if (! snd_es1968_ac97_wait(chip)) { | 660 | if (!snd_es1968_ac97_wait_poll(chip)) { |
649 | data = inw(chip->io_port + ESM_AC97_DATA); | 661 | data = inw(chip->io_port + ESM_AC97_DATA); |
650 | /*msleep(1);*/ | 662 | /*msleep(1);*/ |
651 | } | 663 | } |