diff options
Diffstat (limited to 'include')
45 files changed, 656 insertions, 225 deletions
diff --git a/include/asm-alpha/scatterlist.h b/include/asm-alpha/scatterlist.h index 6afb8bd3aaf9..917365405e83 100644 --- a/include/asm-alpha/scatterlist.h +++ b/include/asm-alpha/scatterlist.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _ALPHA_SCATTERLIST_H | 2 | #define _ALPHA_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/page.h> | 4 | #include <asm/page.h> |
5 | #include <asm/types.h> | ||
5 | 6 | ||
6 | struct scatterlist { | 7 | struct scatterlist { |
7 | struct page *page; | 8 | struct page *page; |
diff --git a/include/asm-arm/arch-ixp4xx/dma.h b/include/asm-arm/arch-ixp4xx/dma.h index 789f7f53c357..2c7f5327d80f 100644 --- a/include/asm-arm/arch-ixp4xx/dma.h +++ b/include/asm-arm/arch-ixp4xx/dma.h | |||
@@ -12,7 +12,6 @@ | |||
12 | #define __ASM_ARCH_DMA_H | 12 | #define __ASM_ARCH_DMA_H |
13 | 13 | ||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/pci.h> | ||
16 | #include <asm/page.h> | 15 | #include <asm/page.h> |
17 | #include <asm/sizes.h> | 16 | #include <asm/sizes.h> |
18 | #include <asm/hardware.h> | 17 | #include <asm/hardware.h> |
diff --git a/include/asm-avr32/scatterlist.h b/include/asm-avr32/scatterlist.h index bfe7d753423c..c6d5ce3b3a25 100644 --- a/include/asm-avr32/scatterlist.h +++ b/include/asm-avr32/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_AVR32_SCATTERLIST_H | 1 | #ifndef __ASM_AVR32_SCATTERLIST_H |
2 | #define __ASM_AVR32_SCATTERLIST_H | 2 | #define __ASM_AVR32_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | struct page *page; | 7 | struct page *page; |
6 | unsigned int offset; | 8 | unsigned int offset; |
diff --git a/include/asm-frv/scatterlist.h b/include/asm-frv/scatterlist.h index fb38fd329a5f..8e827fa853f1 100644 --- a/include/asm-frv/scatterlist.h +++ b/include/asm-frv/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ASM_SCATTERLIST_H | 1 | #ifndef _ASM_SCATTERLIST_H |
2 | #define _ASM_SCATTERLIST_H | 2 | #define _ASM_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | /* | 6 | /* |
5 | * Drivers must set either ->address or (preferred) ->page and ->offset | 7 | * Drivers must set either ->address or (preferred) ->page and ->offset |
6 | * to indicate where data must be transferred to/from. | 8 | * to indicate where data must be transferred to/from. |
diff --git a/include/asm-h8300/scatterlist.h b/include/asm-h8300/scatterlist.h index 7627f0cd1a2f..985fdf54eaca 100644 --- a/include/asm-h8300/scatterlist.h +++ b/include/asm-h8300/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _H8300_SCATTERLIST_H | 1 | #ifndef _H8300_SCATTERLIST_H |
2 | #define _H8300_SCATTERLIST_H | 2 | #define _H8300_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | struct page *page; | 7 | struct page *page; |
6 | unsigned int offset; | 8 | unsigned int offset; |
diff --git a/include/asm-i386/agp.h b/include/asm-i386/agp.h index 9075083bab76..6af173dbf123 100644 --- a/include/asm-i386/agp.h +++ b/include/asm-i386/agp.h | |||
@@ -12,8 +12,10 @@ | |||
12 | * data corruption on some CPUs. | 12 | * data corruption on some CPUs. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | int map_page_into_agp(struct page *page); | 15 | /* Caller's responsibility to call global_flush_tlb() for |
16 | int unmap_page_from_agp(struct page *page); | 16 | * performance reasons */ |
17 | #define map_page_into_agp(page) change_page_attr(page, 1, PAGE_KERNEL_NOCACHE) | ||
18 | #define unmap_page_from_agp(page) change_page_attr(page, 1, PAGE_KERNEL) | ||
17 | #define flush_agp_mappings() global_flush_tlb() | 19 | #define flush_agp_mappings() global_flush_tlb() |
18 | 20 | ||
19 | /* Could use CLFLUSH here if the cpu supports it. But then it would | 21 | /* Could use CLFLUSH here if the cpu supports it. But then it would |
diff --git a/include/asm-i386/scatterlist.h b/include/asm-i386/scatterlist.h index 55d6c953a76e..d7e45a8f1aae 100644 --- a/include/asm-i386/scatterlist.h +++ b/include/asm-i386/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _I386_SCATTERLIST_H | 1 | #ifndef _I386_SCATTERLIST_H |
2 | #define _I386_SCATTERLIST_H | 2 | #define _I386_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | struct page *page; | 7 | struct page *page; |
6 | unsigned int offset; | 8 | unsigned int offset; |
diff --git a/include/asm-ia64/scatterlist.h b/include/asm-ia64/scatterlist.h index 9dbea8844d5e..a452ea24205a 100644 --- a/include/asm-ia64/scatterlist.h +++ b/include/asm-ia64/scatterlist.h | |||
@@ -6,6 +6,8 @@ | |||
6 | * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co | 6 | * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <asm/types.h> | ||
10 | |||
9 | struct scatterlist { | 11 | struct scatterlist { |
10 | struct page *page; | 12 | struct page *page; |
11 | unsigned int offset; | 13 | unsigned int offset; |
diff --git a/include/asm-m32r/scatterlist.h b/include/asm-m32r/scatterlist.h index c2de96cb69ed..352415ff5eb9 100644 --- a/include/asm-m32r/scatterlist.h +++ b/include/asm-m32r/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ASM_M32R_SCATTERLIST_H | 1 | #ifndef _ASM_M32R_SCATTERLIST_H |
2 | #define _ASM_M32R_SCATTERLIST_H | 2 | #define _ASM_M32R_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | char * address; /* Location data is to be transferred to, NULL for | 7 | char * address; /* Location data is to be transferred to, NULL for |
6 | * highmem page */ | 8 | * highmem page */ |
diff --git a/include/asm-m68k/adb.h b/include/asm-m68k/adb.h deleted file mode 100644 index 9176b55185bb..000000000000 --- a/include/asm-m68k/adb.h +++ /dev/null | |||
@@ -1,75 +0,0 @@ | |||
1 | /* | ||
2 | * Definitions for talking to ADB and CUDA. The CUDA is a microcontroller | ||
3 | * which controls the ADB, system power, RTC, and various other things on | ||
4 | * later Macintoshes | ||
5 | * | ||
6 | * Copyright (C) 1996 Paul Mackerras. | ||
7 | */ | ||
8 | |||
9 | /* First byte sent to or received from CUDA */ | ||
10 | #define ADB_PACKET 0 | ||
11 | #define CUDA_PACKET 1 | ||
12 | #define ERROR_PACKET 2 | ||
13 | #define TIMER_PACKET 3 | ||
14 | #define POWER_PACKET 4 | ||
15 | #define MACIIC_PACKET 5 | ||
16 | |||
17 | /* ADB commands (2nd byte) */ | ||
18 | #define ADB_BUSRESET 0 | ||
19 | #define ADB_FLUSH(id) (1 + ((id) << 4)) | ||
20 | #define ADB_WRITEREG(id, reg) (8 + (reg) + ((id) << 4)) | ||
21 | #define ADB_READREG(id, reg) (0xc + (reg) + ((id) << 4)) | ||
22 | |||
23 | /* ADB default device IDs (upper 4 bits of 2nd byte) */ | ||
24 | #define ADB_DONGLE 1 /* "software execution control" devices */ | ||
25 | #define ADB_KEYBOARD 2 | ||
26 | #define ADB_MOUSE 3 | ||
27 | #define ADB_TABLET 4 | ||
28 | #define ADB_MODEM 5 | ||
29 | #define ADB_MISC 7 /* maybe a monitor */ | ||
30 | |||
31 | /* CUDA commands (2nd byte) */ | ||
32 | #define CUDA_WARM_START 0 | ||
33 | #define CUDA_AUTOPOLL 1 | ||
34 | #define CUDA_GET_6805_ADDR 2 | ||
35 | #define CUDA_GET_TIME 3 | ||
36 | #define CUDA_GET_PRAM 7 | ||
37 | #define CUDA_SET_6805_ADDR 8 | ||
38 | #define CUDA_SET_TIME 9 | ||
39 | #define CUDA_POWERDOWN 0xa | ||
40 | #define CUDA_POWERUP_TIME 0xb | ||
41 | #define CUDA_SET_PRAM 0xc | ||
42 | #define CUDA_MS_RESET 0xd | ||
43 | #define CUDA_SEND_DFAC 0xe | ||
44 | #define CUDA_RESET_SYSTEM 0x11 | ||
45 | #define CUDA_SET_IPL 0x12 | ||
46 | #define CUDA_SET_AUTO_RATE 0x14 | ||
47 | #define CUDA_GET_AUTO_RATE 0x16 | ||
48 | #define CUDA_SET_DEVICE_LIST 0x19 | ||
49 | #define CUDA_GET_DEVICE_LIST 0x1a | ||
50 | #define CUDA_GET_SET_IIC 0x22 | ||
51 | |||
52 | #ifdef __KERNEL__ | ||
53 | |||
54 | struct adb_request { | ||
55 | unsigned char data[16]; | ||
56 | int nbytes; | ||
57 | unsigned char reply[16]; | ||
58 | int reply_len; | ||
59 | unsigned char reply_expected; | ||
60 | unsigned char sent; | ||
61 | unsigned char got_reply; | ||
62 | void (*done)(struct adb_request *); | ||
63 | void *arg; | ||
64 | struct adb_request *next; | ||
65 | }; | ||
66 | |||
67 | void via_adb_init(void); | ||
68 | int adb_request(struct adb_request *req, | ||
69 | void (*done)(struct adb_request *), int nbytes, ...); | ||
70 | int adb_send_request(struct adb_request *req); | ||
71 | void adb_poll(void); | ||
72 | int adb_register(int default_id, | ||
73 | void (*handler)(unsigned char *, int, struct pt_regs *)); | ||
74 | |||
75 | #endif /* __KERNEL */ | ||
diff --git a/include/asm-m68k/atarikb.h b/include/asm-m68k/atarikb.h index 18926058fde7..546e7da5804f 100644 --- a/include/asm-m68k/atarikb.h +++ b/include/asm-m68k/atarikb.h | |||
@@ -36,5 +36,11 @@ void ikbd_joystick_disable(void); | |||
36 | extern void (*atari_MIDI_interrupt_hook) (void); | 36 | extern void (*atari_MIDI_interrupt_hook) (void); |
37 | /* Hook for mouse driver */ | 37 | /* Hook for mouse driver */ |
38 | extern void (*atari_mouse_interrupt_hook) (char *); | 38 | extern void (*atari_mouse_interrupt_hook) (char *); |
39 | /* Hook for keyboard inputdev driver */ | ||
40 | extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char); | ||
41 | /* Hook for mouse inputdev driver */ | ||
42 | extern void (*atari_input_mouse_interrupt_hook) (char *); | ||
43 | |||
44 | int atari_keyb_init(void); | ||
39 | 45 | ||
40 | #endif /* _LINUX_ATARIKB_H */ | 46 | #endif /* _LINUX_ATARIKB_H */ |
diff --git a/include/asm-m68knommu/scatterlist.h b/include/asm-m68knommu/scatterlist.h index 2085d6ff8782..4da79d3d3f34 100644 --- a/include/asm-m68knommu/scatterlist.h +++ b/include/asm-m68knommu/scatterlist.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _M68KNOMMU_SCATTERLIST_H | 2 | #define _M68KNOMMU_SCATTERLIST_H |
3 | 3 | ||
4 | #include <linux/mm.h> | 4 | #include <linux/mm.h> |
5 | #include <asm/types.h> | ||
5 | 6 | ||
6 | struct scatterlist { | 7 | struct scatterlist { |
7 | struct page *page; | 8 | struct page *page; |
diff --git a/include/asm-mips/scatterlist.h b/include/asm-mips/scatterlist.h index 22634706e9d5..7af104c95b20 100644 --- a/include/asm-mips/scatterlist.h +++ b/include/asm-mips/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SCATTERLIST_H | 1 | #ifndef __ASM_SCATTERLIST_H |
2 | #define __ASM_SCATTERLIST_H | 2 | #define __ASM_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | struct page * page; | 7 | struct page * page; |
6 | unsigned int offset; | 8 | unsigned int offset; |
diff --git a/include/asm-parisc/scatterlist.h b/include/asm-parisc/scatterlist.h index 236c1d0fba33..e7211c748446 100644 --- a/include/asm-parisc/scatterlist.h +++ b/include/asm-parisc/scatterlist.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _ASM_PARISC_SCATTERLIST_H | 2 | #define _ASM_PARISC_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/page.h> | 4 | #include <asm/page.h> |
5 | #include <asm/types.h> | ||
5 | 6 | ||
6 | struct scatterlist { | 7 | struct scatterlist { |
7 | struct page *page; | 8 | struct page *page; |
diff --git a/include/asm-powerpc/ps3av.h b/include/asm-powerpc/ps3av.h index 43e90ea96136..9efc40f1c778 100644 --- a/include/asm-powerpc/ps3av.h +++ b/include/asm-powerpc/ps3av.h | |||
@@ -18,8 +18,6 @@ | |||
18 | #ifndef _ASM_POWERPC_PS3AV_H_ | 18 | #ifndef _ASM_POWERPC_PS3AV_H_ |
19 | #define _ASM_POWERPC_PS3AV_H_ | 19 | #define _ASM_POWERPC_PS3AV_H_ |
20 | 20 | ||
21 | #include <linux/mutex.h> | ||
22 | |||
23 | /** command for ioctl() **/ | 21 | /** command for ioctl() **/ |
24 | #define PS3AV_VERSION 0x205 /* version of ps3av command */ | 22 | #define PS3AV_VERSION 0x205 /* version of ps3av command */ |
25 | 23 | ||
@@ -643,24 +641,6 @@ struct ps3av_pkt_avb_param { | |||
643 | u8 buf[PS3AV_PKT_AVB_PARAM_MAX_BUF_SIZE]; | 641 | u8 buf[PS3AV_PKT_AVB_PARAM_MAX_BUF_SIZE]; |
644 | }; | 642 | }; |
645 | 643 | ||
646 | struct ps3av { | ||
647 | int available; | ||
648 | struct semaphore sem; | ||
649 | struct semaphore ping; | ||
650 | struct semaphore pong; | ||
651 | struct mutex mutex; | ||
652 | int open_count; | ||
653 | struct ps3_vuart_port_device *dev; | ||
654 | |||
655 | int region; | ||
656 | struct ps3av_pkt_av_get_hw_conf av_hw_conf; | ||
657 | u32 av_port[PS3AV_AV_PORT_MAX + PS3AV_OPT_PORT_MAX]; | ||
658 | u32 opt_port[PS3AV_OPT_PORT_MAX]; | ||
659 | u32 head[PS3AV_HEAD_MAX]; | ||
660 | u32 audio_port; | ||
661 | int ps3av_mode; | ||
662 | int ps3av_mode_old; | ||
663 | }; | ||
664 | 644 | ||
665 | /** command status **/ | 645 | /** command status **/ |
666 | #define PS3AV_STATUS_SUCCESS 0x0000 /* success */ | 646 | #define PS3AV_STATUS_SUCCESS 0x0000 /* success */ |
@@ -718,6 +698,7 @@ static inline void ps3av_cmd_av_monitor_info_dump(const struct ps3av_pkt_av_get_ | |||
718 | extern int ps3av_cmd_video_get_monitor_info(struct ps3av_pkt_av_get_monitor_info *, | 698 | extern int ps3av_cmd_video_get_monitor_info(struct ps3av_pkt_av_get_monitor_info *, |
719 | u32); | 699 | u32); |
720 | 700 | ||
701 | struct ps3_vuart_port_device; | ||
721 | extern int ps3av_vuart_write(struct ps3_vuart_port_device *dev, | 702 | extern int ps3av_vuart_write(struct ps3_vuart_port_device *dev, |
722 | const void *buf, unsigned long size); | 703 | const void *buf, unsigned long size); |
723 | extern int ps3av_vuart_read(struct ps3_vuart_port_device *dev, void *buf, | 704 | extern int ps3av_vuart_read(struct ps3_vuart_port_device *dev, void *buf, |
@@ -725,6 +706,7 @@ extern int ps3av_vuart_read(struct ps3_vuart_port_device *dev, void *buf, | |||
725 | 706 | ||
726 | extern int ps3av_set_video_mode(u32, int); | 707 | extern int ps3av_set_video_mode(u32, int); |
727 | extern int ps3av_set_audio_mode(u32, u32, u32, u32, u32); | 708 | extern int ps3av_set_audio_mode(u32, u32, u32, u32, u32); |
709 | extern int ps3av_get_auto_mode(int); | ||
728 | extern int ps3av_set_mode(u32, int); | 710 | extern int ps3av_set_mode(u32, int); |
729 | extern int ps3av_get_mode(void); | 711 | extern int ps3av_get_mode(void); |
730 | extern int ps3av_get_scanmode(int); | 712 | extern int ps3av_get_scanmode(int); |
diff --git a/include/asm-s390/ccwdev.h b/include/asm-s390/ccwdev.h index cfc81533b9ba..6795ecefd15b 100644 --- a/include/asm-s390/ccwdev.h +++ b/include/asm-s390/ccwdev.h | |||
@@ -164,9 +164,9 @@ extern int ccw_device_resume(struct ccw_device *); | |||
164 | extern int ccw_device_halt(struct ccw_device *, unsigned long); | 164 | extern int ccw_device_halt(struct ccw_device *, unsigned long); |
165 | extern int ccw_device_clear(struct ccw_device *, unsigned long); | 165 | extern int ccw_device_clear(struct ccw_device *, unsigned long); |
166 | 166 | ||
167 | extern int read_dev_chars(struct ccw_device *cdev, void **buffer, int length); | 167 | extern int __deprecated read_dev_chars(struct ccw_device *cdev, void **buffer, int length); |
168 | extern int read_conf_data(struct ccw_device *cdev, void **buffer, int *length); | 168 | extern int __deprecated read_conf_data(struct ccw_device *cdev, void **buffer, int *length); |
169 | extern int read_conf_data_lpm(struct ccw_device *cdev, void **buffer, | 169 | extern int __deprecated read_conf_data_lpm(struct ccw_device *cdev, void **buffer, |
170 | int *length, __u8 lpm); | 170 | int *length, __u8 lpm); |
171 | 171 | ||
172 | extern int ccw_device_set_online(struct ccw_device *cdev); | 172 | extern int ccw_device_set_online(struct ccw_device *cdev); |
diff --git a/include/asm-s390/elf.h b/include/asm-s390/elf.h index c0d629d61d3e..91d06325cc79 100644 --- a/include/asm-s390/elf.h +++ b/include/asm-s390/elf.h | |||
@@ -188,7 +188,8 @@ static inline int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpregs) | |||
188 | /* This yields a mask that user programs can use to figure out what | 188 | /* This yields a mask that user programs can use to figure out what |
189 | instruction set this CPU supports. */ | 189 | instruction set this CPU supports. */ |
190 | 190 | ||
191 | #define ELF_HWCAP (0) | 191 | extern unsigned long elf_hwcap; |
192 | #define ELF_HWCAP (elf_hwcap) | ||
192 | 193 | ||
193 | /* This yields a string that ld.so will use to load implementation | 194 | /* This yields a string that ld.so will use to load implementation |
194 | specific libraries for optimization. This is more specific in | 195 | specific libraries for optimization. This is more specific in |
@@ -197,7 +198,9 @@ static inline int dump_task_fpu(struct task_struct *tsk, elf_fpregset_t *fpregs) | |||
197 | For the moment, we have only optimizations for the Intel generations, | 198 | For the moment, we have only optimizations for the Intel generations, |
198 | but that could change... */ | 199 | but that could change... */ |
199 | 200 | ||
200 | #define ELF_PLATFORM (NULL) | 201 | #define ELF_PLATFORM_SIZE 8 |
202 | extern char elf_platform[]; | ||
203 | #define ELF_PLATFORM (elf_platform) | ||
201 | 204 | ||
202 | #ifndef __s390x__ | 205 | #ifndef __s390x__ |
203 | #define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX) | 206 | #define SET_PERSONALITY(ex, ibcs2) set_personality((ibcs2)?PER_SVR4:PER_LINUX) |
diff --git a/include/asm-s390/kdebug.h b/include/asm-s390/kdebug.h index 1b50f89819a4..d2d7ad276148 100644 --- a/include/asm-s390/kdebug.h +++ b/include/asm-s390/kdebug.h | |||
@@ -22,8 +22,21 @@ struct die_args { | |||
22 | */ | 22 | */ |
23 | extern int register_die_notifier(struct notifier_block *); | 23 | extern int register_die_notifier(struct notifier_block *); |
24 | extern int unregister_die_notifier(struct notifier_block *); | 24 | extern int unregister_die_notifier(struct notifier_block *); |
25 | extern int register_page_fault_notifier(struct notifier_block *); | 25 | |
26 | extern int unregister_page_fault_notifier(struct notifier_block *); | 26 | /* |
27 | * These are only here because kprobes.c wants them to implement a | ||
28 | * blatant layering violation. Will hopefully go away soon once all | ||
29 | * architectures are updated. | ||
30 | */ | ||
31 | static inline int register_page_fault_notifier(struct notifier_block *nb) | ||
32 | { | ||
33 | return 0; | ||
34 | } | ||
35 | static inline int unregister_page_fault_notifier(struct notifier_block *nb) | ||
36 | { | ||
37 | return 0; | ||
38 | } | ||
39 | |||
27 | extern struct atomic_notifier_head s390die_chain; | 40 | extern struct atomic_notifier_head s390die_chain; |
28 | 41 | ||
29 | enum die_val { | 42 | enum die_val { |
@@ -39,7 +52,6 @@ enum die_val { | |||
39 | DIE_GPF, | 52 | DIE_GPF, |
40 | DIE_CALL, | 53 | DIE_CALL, |
41 | DIE_NMI_IPI, | 54 | DIE_NMI_IPI, |
42 | DIE_PAGE_FAULT, | ||
43 | }; | 55 | }; |
44 | 56 | ||
45 | static inline int notify_die(enum die_val val, const char *str, | 57 | static inline int notify_die(enum die_val val, const char *str, |
diff --git a/include/asm-s390/kprobes.h b/include/asm-s390/kprobes.h index b847ff0ec3fa..830fe4c4eea6 100644 --- a/include/asm-s390/kprobes.h +++ b/include/asm-s390/kprobes.h | |||
@@ -97,18 +97,10 @@ void kretprobe_trampoline(void); | |||
97 | int is_prohibited_opcode(kprobe_opcode_t *instruction); | 97 | int is_prohibited_opcode(kprobe_opcode_t *instruction); |
98 | void get_instruction_type(struct arch_specific_insn *ainsn); | 98 | void get_instruction_type(struct arch_specific_insn *ainsn); |
99 | 99 | ||
100 | int kprobe_fault_handler(struct pt_regs *regs, int trapnr); | ||
101 | int kprobe_exceptions_notify(struct notifier_block *self, | ||
102 | unsigned long val, void *data); | ||
103 | |||
100 | #define flush_insn_slot(p) do { } while (0) | 104 | #define flush_insn_slot(p) do { } while (0) |
101 | 105 | ||
102 | #endif /* _ASM_S390_KPROBES_H */ | 106 | #endif /* _ASM_S390_KPROBES_H */ |
103 | |||
104 | #ifdef CONFIG_KPROBES | ||
105 | |||
106 | extern int kprobe_exceptions_notify(struct notifier_block *self, | ||
107 | unsigned long val, void *data); | ||
108 | #else /* !CONFIG_KPROBES */ | ||
109 | static inline int kprobe_exceptions_notify(struct notifier_block *self, | ||
110 | unsigned long val, void *data) | ||
111 | { | ||
112 | return 0; | ||
113 | } | ||
114 | #endif | ||
diff --git a/include/asm-s390/lowcore.h b/include/asm-s390/lowcore.h index ffc9788a21a7..801a6fd35b5b 100644 --- a/include/asm-s390/lowcore.h +++ b/include/asm-s390/lowcore.h | |||
@@ -229,17 +229,19 @@ struct _lowcore | |||
229 | __u16 subchannel_nr; /* 0x0ba */ | 229 | __u16 subchannel_nr; /* 0x0ba */ |
230 | __u32 io_int_parm; /* 0x0bc */ | 230 | __u32 io_int_parm; /* 0x0bc */ |
231 | __u32 io_int_word; /* 0x0c0 */ | 231 | __u32 io_int_word; /* 0x0c0 */ |
232 | __u8 pad3[0xD4-0xC4]; /* 0x0c4 */ | 232 | __u8 pad3[0xc8-0xc4]; /* 0x0c4 */ |
233 | __u32 stfl_fac_list; /* 0x0c8 */ | ||
234 | __u8 pad4[0xd4-0xcc]; /* 0x0cc */ | ||
233 | __u32 extended_save_area_addr; /* 0x0d4 */ | 235 | __u32 extended_save_area_addr; /* 0x0d4 */ |
234 | __u32 cpu_timer_save_area[2]; /* 0x0d8 */ | 236 | __u32 cpu_timer_save_area[2]; /* 0x0d8 */ |
235 | __u32 clock_comp_save_area[2]; /* 0x0e0 */ | 237 | __u32 clock_comp_save_area[2]; /* 0x0e0 */ |
236 | __u32 mcck_interruption_code[2]; /* 0x0e8 */ | 238 | __u32 mcck_interruption_code[2]; /* 0x0e8 */ |
237 | __u8 pad4[0xf4-0xf0]; /* 0x0f0 */ | 239 | __u8 pad5[0xf4-0xf0]; /* 0x0f0 */ |
238 | __u32 external_damage_code; /* 0x0f4 */ | 240 | __u32 external_damage_code; /* 0x0f4 */ |
239 | __u32 failing_storage_address; /* 0x0f8 */ | 241 | __u32 failing_storage_address; /* 0x0f8 */ |
240 | __u8 pad5[0x100-0xfc]; /* 0x0fc */ | 242 | __u8 pad6[0x100-0xfc]; /* 0x0fc */ |
241 | __u32 st_status_fixed_logout[4];/* 0x100 */ | 243 | __u32 st_status_fixed_logout[4];/* 0x100 */ |
242 | __u8 pad6[0x120-0x110]; /* 0x110 */ | 244 | __u8 pad7[0x120-0x110]; /* 0x110 */ |
243 | __u32 access_regs_save_area[16];/* 0x120 */ | 245 | __u32 access_regs_save_area[16];/* 0x120 */ |
244 | __u32 floating_pt_save_area[8]; /* 0x160 */ | 246 | __u32 floating_pt_save_area[8]; /* 0x160 */ |
245 | __u32 gpregs_save_area[16]; /* 0x180 */ | 247 | __u32 gpregs_save_area[16]; /* 0x180 */ |
diff --git a/include/asm-sh/scatterlist.h b/include/asm-sh/scatterlist.h index d19e7cd3b023..b9ae53c38365 100644 --- a/include/asm-sh/scatterlist.h +++ b/include/asm-sh/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_SCATTERLIST_H | 1 | #ifndef __ASM_SH_SCATTERLIST_H |
2 | #define __ASM_SH_SCATTERLIST_H | 2 | #define __ASM_SH_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | struct page * page; /* Location for highmem page, if any */ | 7 | struct page * page; /* Location for highmem page, if any */ |
6 | unsigned int offset;/* for highmem, page offset */ | 8 | unsigned int offset;/* for highmem, page offset */ |
diff --git a/include/asm-sh64/scatterlist.h b/include/asm-sh64/scatterlist.h index 5d8fa32d2e9d..1c723f2d7a95 100644 --- a/include/asm-sh64/scatterlist.h +++ b/include/asm-sh64/scatterlist.h | |||
@@ -11,6 +11,8 @@ | |||
11 | #ifndef __ASM_SH64_SCATTERLIST_H | 11 | #ifndef __ASM_SH64_SCATTERLIST_H |
12 | #define __ASM_SH64_SCATTERLIST_H | 12 | #define __ASM_SH64_SCATTERLIST_H |
13 | 13 | ||
14 | #include <asm/types.h> | ||
15 | |||
14 | struct scatterlist { | 16 | struct scatterlist { |
15 | struct page * page; /* Location for highmem page, if any */ | 17 | struct page * page; /* Location for highmem page, if any */ |
16 | unsigned int offset;/* for highmem, page offset */ | 18 | unsigned int offset;/* for highmem, page offset */ |
diff --git a/include/asm-sparc64/scatterlist.h b/include/asm-sparc64/scatterlist.h index ec4f3c63fe98..048fdb40e81d 100644 --- a/include/asm-sparc64/scatterlist.h +++ b/include/asm-sparc64/scatterlist.h | |||
@@ -3,6 +3,7 @@ | |||
3 | #define _SPARC64_SCATTERLIST_H | 3 | #define _SPARC64_SCATTERLIST_H |
4 | 4 | ||
5 | #include <asm/page.h> | 5 | #include <asm/page.h> |
6 | #include <asm/types.h> | ||
6 | 7 | ||
7 | struct scatterlist { | 8 | struct scatterlist { |
8 | struct page *page; | 9 | struct page *page; |
diff --git a/include/asm-v850/scatterlist.h b/include/asm-v850/scatterlist.h index af1cba69a526..56f402920db9 100644 --- a/include/asm-v850/scatterlist.h +++ b/include/asm-v850/scatterlist.h | |||
@@ -14,6 +14,8 @@ | |||
14 | #ifndef __V850_SCATTERLIST_H__ | 14 | #ifndef __V850_SCATTERLIST_H__ |
15 | #define __V850_SCATTERLIST_H__ | 15 | #define __V850_SCATTERLIST_H__ |
16 | 16 | ||
17 | #include <asm/types.h> | ||
18 | |||
17 | struct scatterlist { | 19 | struct scatterlist { |
18 | struct page *page; | 20 | struct page *page; |
19 | unsigned offset; | 21 | unsigned offset; |
diff --git a/include/asm-x86_64/agp.h b/include/asm-x86_64/agp.h index 06c52ee9c06b..de338666f3f9 100644 --- a/include/asm-x86_64/agp.h +++ b/include/asm-x86_64/agp.h | |||
@@ -10,8 +10,10 @@ | |||
10 | * with different cachability attributes for the same page. | 10 | * with different cachability attributes for the same page. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | int map_page_into_agp(struct page *page); | 13 | /* Caller's responsibility to call global_flush_tlb() for |
14 | int unmap_page_from_agp(struct page *page); | 14 | * performance reasons */ |
15 | #define map_page_into_agp(page) change_page_attr(page, 1, PAGE_KERNEL_NOCACHE) | ||
16 | #define unmap_page_from_agp(page) change_page_attr(page, 1, PAGE_KERNEL) | ||
15 | #define flush_agp_mappings() global_flush_tlb() | 17 | #define flush_agp_mappings() global_flush_tlb() |
16 | 18 | ||
17 | /* Could use CLFLUSH here if the cpu supports it. But then it would | 19 | /* Could use CLFLUSH here if the cpu supports it. But then it would |
diff --git a/include/asm-x86_64/scatterlist.h b/include/asm-x86_64/scatterlist.h index 49d89f8129cd..eaf7ada27e14 100644 --- a/include/asm-x86_64/scatterlist.h +++ b/include/asm-x86_64/scatterlist.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _X8664_SCATTERLIST_H | 1 | #ifndef _X8664_SCATTERLIST_H |
2 | #define _X8664_SCATTERLIST_H | 2 | #define _X8664_SCATTERLIST_H |
3 | 3 | ||
4 | #include <asm/types.h> | ||
5 | |||
4 | struct scatterlist { | 6 | struct scatterlist { |
5 | struct page *page; | 7 | struct page *page; |
6 | unsigned int offset; | 8 | unsigned int offset; |
diff --git a/include/asm-xtensa/scatterlist.h b/include/asm-xtensa/scatterlist.h index 38a2b9acd658..ca337a294290 100644 --- a/include/asm-xtensa/scatterlist.h +++ b/include/asm-xtensa/scatterlist.h | |||
@@ -11,6 +11,8 @@ | |||
11 | #ifndef _XTENSA_SCATTERLIST_H | 11 | #ifndef _XTENSA_SCATTERLIST_H |
12 | #define _XTENSA_SCATTERLIST_H | 12 | #define _XTENSA_SCATTERLIST_H |
13 | 13 | ||
14 | #include <asm/types.h> | ||
15 | |||
14 | struct scatterlist { | 16 | struct scatterlist { |
15 | struct page *page; | 17 | struct page *page; |
16 | unsigned int offset; | 18 | unsigned int offset; |
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h index 4e05e93ff681..b2b1e6efd812 100644 --- a/include/crypto/algapi.h +++ b/include/crypto/algapi.h | |||
@@ -13,8 +13,11 @@ | |||
13 | #define _CRYPTO_ALGAPI_H | 13 | #define _CRYPTO_ALGAPI_H |
14 | 14 | ||
15 | #include <linux/crypto.h> | 15 | #include <linux/crypto.h> |
16 | #include <linux/list.h> | ||
17 | #include <linux/kernel.h> | ||
16 | 18 | ||
17 | struct module; | 19 | struct module; |
20 | struct rtattr; | ||
18 | struct seq_file; | 21 | struct seq_file; |
19 | 22 | ||
20 | struct crypto_type { | 23 | struct crypto_type { |
@@ -38,7 +41,7 @@ struct crypto_template { | |||
38 | struct hlist_head instances; | 41 | struct hlist_head instances; |
39 | struct module *module; | 42 | struct module *module; |
40 | 43 | ||
41 | struct crypto_instance *(*alloc)(void *param, unsigned int len); | 44 | struct crypto_instance *(*alloc)(struct rtattr **tb); |
42 | void (*free)(struct crypto_instance *inst); | 45 | void (*free)(struct crypto_instance *inst); |
43 | 46 | ||
44 | char name[CRYPTO_MAX_ALG_NAME]; | 47 | char name[CRYPTO_MAX_ALG_NAME]; |
@@ -48,6 +51,15 @@ struct crypto_spawn { | |||
48 | struct list_head list; | 51 | struct list_head list; |
49 | struct crypto_alg *alg; | 52 | struct crypto_alg *alg; |
50 | struct crypto_instance *inst; | 53 | struct crypto_instance *inst; |
54 | u32 mask; | ||
55 | }; | ||
56 | |||
57 | struct crypto_queue { | ||
58 | struct list_head list; | ||
59 | struct list_head *backlog; | ||
60 | |||
61 | unsigned int qlen; | ||
62 | unsigned int max_qlen; | ||
51 | }; | 63 | }; |
52 | 64 | ||
53 | struct scatter_walk { | 65 | struct scatter_walk { |
@@ -81,6 +93,7 @@ struct blkcipher_walk { | |||
81 | int flags; | 93 | int flags; |
82 | }; | 94 | }; |
83 | 95 | ||
96 | extern const struct crypto_type crypto_ablkcipher_type; | ||
84 | extern const struct crypto_type crypto_blkcipher_type; | 97 | extern const struct crypto_type crypto_blkcipher_type; |
85 | extern const struct crypto_type crypto_hash_type; | 98 | extern const struct crypto_type crypto_hash_type; |
86 | 99 | ||
@@ -91,16 +104,23 @@ void crypto_unregister_template(struct crypto_template *tmpl); | |||
91 | struct crypto_template *crypto_lookup_template(const char *name); | 104 | struct crypto_template *crypto_lookup_template(const char *name); |
92 | 105 | ||
93 | int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg, | 106 | int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg, |
94 | struct crypto_instance *inst); | 107 | struct crypto_instance *inst, u32 mask); |
95 | void crypto_drop_spawn(struct crypto_spawn *spawn); | 108 | void crypto_drop_spawn(struct crypto_spawn *spawn); |
96 | struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type, | 109 | struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type, |
97 | u32 mask); | 110 | u32 mask); |
98 | 111 | ||
99 | struct crypto_alg *crypto_get_attr_alg(void *param, unsigned int len, | 112 | struct crypto_attr_type *crypto_get_attr_type(struct rtattr **tb); |
100 | u32 type, u32 mask); | 113 | int crypto_check_attr_type(struct rtattr **tb, u32 type); |
114 | struct crypto_alg *crypto_get_attr_alg(struct rtattr **tb, u32 type, u32 mask); | ||
101 | struct crypto_instance *crypto_alloc_instance(const char *name, | 115 | struct crypto_instance *crypto_alloc_instance(const char *name, |
102 | struct crypto_alg *alg); | 116 | struct crypto_alg *alg); |
103 | 117 | ||
118 | void crypto_init_queue(struct crypto_queue *queue, unsigned int max_qlen); | ||
119 | int crypto_enqueue_request(struct crypto_queue *queue, | ||
120 | struct crypto_async_request *request); | ||
121 | struct crypto_async_request *crypto_dequeue_request(struct crypto_queue *queue); | ||
122 | int crypto_tfm_in_queue(struct crypto_queue *queue, struct crypto_tfm *tfm); | ||
123 | |||
104 | int blkcipher_walk_done(struct blkcipher_desc *desc, | 124 | int blkcipher_walk_done(struct blkcipher_desc *desc, |
105 | struct blkcipher_walk *walk, int err); | 125 | struct blkcipher_walk *walk, int err); |
106 | int blkcipher_walk_virt(struct blkcipher_desc *desc, | 126 | int blkcipher_walk_virt(struct blkcipher_desc *desc, |
@@ -118,11 +138,37 @@ static inline void *crypto_tfm_ctx_aligned(struct crypto_tfm *tfm) | |||
118 | return (void *)ALIGN(addr, align); | 138 | return (void *)ALIGN(addr, align); |
119 | } | 139 | } |
120 | 140 | ||
141 | static inline struct crypto_instance *crypto_tfm_alg_instance( | ||
142 | struct crypto_tfm *tfm) | ||
143 | { | ||
144 | return container_of(tfm->__crt_alg, struct crypto_instance, alg); | ||
145 | } | ||
146 | |||
121 | static inline void *crypto_instance_ctx(struct crypto_instance *inst) | 147 | static inline void *crypto_instance_ctx(struct crypto_instance *inst) |
122 | { | 148 | { |
123 | return inst->__ctx; | 149 | return inst->__ctx; |
124 | } | 150 | } |
125 | 151 | ||
152 | static inline struct ablkcipher_alg *crypto_ablkcipher_alg( | ||
153 | struct crypto_ablkcipher *tfm) | ||
154 | { | ||
155 | return &crypto_ablkcipher_tfm(tfm)->__crt_alg->cra_ablkcipher; | ||
156 | } | ||
157 | |||
158 | static inline void *crypto_ablkcipher_ctx(struct crypto_ablkcipher *tfm) | ||
159 | { | ||
160 | return crypto_tfm_ctx(&tfm->base); | ||
161 | } | ||
162 | |||
163 | static inline struct crypto_blkcipher *crypto_spawn_blkcipher( | ||
164 | struct crypto_spawn *spawn) | ||
165 | { | ||
166 | u32 type = CRYPTO_ALG_TYPE_BLKCIPHER; | ||
167 | u32 mask = CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC; | ||
168 | |||
169 | return __crypto_blkcipher_cast(crypto_spawn_tfm(spawn, type, mask)); | ||
170 | } | ||
171 | |||
126 | static inline void *crypto_blkcipher_ctx(struct crypto_blkcipher *tfm) | 172 | static inline void *crypto_blkcipher_ctx(struct crypto_blkcipher *tfm) |
127 | { | 173 | { |
128 | return crypto_tfm_ctx(&tfm->base); | 174 | return crypto_tfm_ctx(&tfm->base); |
@@ -170,5 +216,35 @@ static inline void blkcipher_walk_init(struct blkcipher_walk *walk, | |||
170 | walk->total = nbytes; | 216 | walk->total = nbytes; |
171 | } | 217 | } |
172 | 218 | ||
219 | static inline struct crypto_async_request *crypto_get_backlog( | ||
220 | struct crypto_queue *queue) | ||
221 | { | ||
222 | return queue->backlog == &queue->list ? NULL : | ||
223 | container_of(queue->backlog, struct crypto_async_request, list); | ||
224 | } | ||
225 | |||
226 | static inline int ablkcipher_enqueue_request(struct ablkcipher_alg *alg, | ||
227 | struct ablkcipher_request *request) | ||
228 | { | ||
229 | return crypto_enqueue_request(alg->queue, &request->base); | ||
230 | } | ||
231 | |||
232 | static inline struct ablkcipher_request *ablkcipher_dequeue_request( | ||
233 | struct ablkcipher_alg *alg) | ||
234 | { | ||
235 | return ablkcipher_request_cast(crypto_dequeue_request(alg->queue)); | ||
236 | } | ||
237 | |||
238 | static inline void *ablkcipher_request_ctx(struct ablkcipher_request *req) | ||
239 | { | ||
240 | return req->__ctx; | ||
241 | } | ||
242 | |||
243 | static inline int ablkcipher_tfm_in_queue(struct crypto_ablkcipher *tfm) | ||
244 | { | ||
245 | return crypto_tfm_in_queue(crypto_ablkcipher_alg(tfm)->queue, | ||
246 | crypto_ablkcipher_tfm(tfm)); | ||
247 | } | ||
248 | |||
173 | #endif /* _CRYPTO_ALGAPI_H */ | 249 | #endif /* _CRYPTO_ALGAPI_H */ |
174 | 250 | ||
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 0899e2cdcdd1..3ec6e7ff5fbd 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
@@ -257,7 +257,6 @@ struct freq_attr { | |||
257 | /********************************************************************* | 257 | /********************************************************************* |
258 | * CPUFREQ 2.6. INTERFACE * | 258 | * CPUFREQ 2.6. INTERFACE * |
259 | *********************************************************************/ | 259 | *********************************************************************/ |
260 | int cpufreq_set_policy(struct cpufreq_policy *policy); | ||
261 | int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu); | 260 | int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu); |
262 | int cpufreq_update_policy(unsigned int cpu); | 261 | int cpufreq_update_policy(unsigned int cpu); |
263 | 262 | ||
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 779aa78ee643..0de7e2ace822 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
@@ -56,6 +56,7 @@ | |||
56 | 56 | ||
57 | #define CRYPTO_TFM_REQ_WEAK_KEY 0x00000100 | 57 | #define CRYPTO_TFM_REQ_WEAK_KEY 0x00000100 |
58 | #define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200 | 58 | #define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200 |
59 | #define CRYPTO_TFM_REQ_MAY_BACKLOG 0x00000400 | ||
59 | #define CRYPTO_TFM_RES_WEAK_KEY 0x00100000 | 60 | #define CRYPTO_TFM_RES_WEAK_KEY 0x00100000 |
60 | #define CRYPTO_TFM_RES_BAD_KEY_LEN 0x00200000 | 61 | #define CRYPTO_TFM_RES_BAD_KEY_LEN 0x00200000 |
61 | #define CRYPTO_TFM_RES_BAD_KEY_SCHED 0x00400000 | 62 | #define CRYPTO_TFM_RES_BAD_KEY_SCHED 0x00400000 |
@@ -88,11 +89,38 @@ | |||
88 | #endif | 89 | #endif |
89 | 90 | ||
90 | struct scatterlist; | 91 | struct scatterlist; |
92 | struct crypto_ablkcipher; | ||
93 | struct crypto_async_request; | ||
91 | struct crypto_blkcipher; | 94 | struct crypto_blkcipher; |
92 | struct crypto_hash; | 95 | struct crypto_hash; |
96 | struct crypto_queue; | ||
93 | struct crypto_tfm; | 97 | struct crypto_tfm; |
94 | struct crypto_type; | 98 | struct crypto_type; |
95 | 99 | ||
100 | typedef void (*crypto_completion_t)(struct crypto_async_request *req, int err); | ||
101 | |||
102 | struct crypto_async_request { | ||
103 | struct list_head list; | ||
104 | crypto_completion_t complete; | ||
105 | void *data; | ||
106 | struct crypto_tfm *tfm; | ||
107 | |||
108 | u32 flags; | ||
109 | }; | ||
110 | |||
111 | struct ablkcipher_request { | ||
112 | struct crypto_async_request base; | ||
113 | |||
114 | unsigned int nbytes; | ||
115 | |||
116 | void *info; | ||
117 | |||
118 | struct scatterlist *src; | ||
119 | struct scatterlist *dst; | ||
120 | |||
121 | void *__ctx[] CRYPTO_MINALIGN_ATTR; | ||
122 | }; | ||
123 | |||
96 | struct blkcipher_desc { | 124 | struct blkcipher_desc { |
97 | struct crypto_blkcipher *tfm; | 125 | struct crypto_blkcipher *tfm; |
98 | void *info; | 126 | void *info; |
@@ -116,6 +144,19 @@ struct hash_desc { | |||
116 | * Algorithms: modular crypto algorithm implementations, managed | 144 | * Algorithms: modular crypto algorithm implementations, managed |
117 | * via crypto_register_alg() and crypto_unregister_alg(). | 145 | * via crypto_register_alg() and crypto_unregister_alg(). |
118 | */ | 146 | */ |
147 | struct ablkcipher_alg { | ||
148 | int (*setkey)(struct crypto_ablkcipher *tfm, const u8 *key, | ||
149 | unsigned int keylen); | ||
150 | int (*encrypt)(struct ablkcipher_request *req); | ||
151 | int (*decrypt)(struct ablkcipher_request *req); | ||
152 | |||
153 | struct crypto_queue *queue; | ||
154 | |||
155 | unsigned int min_keysize; | ||
156 | unsigned int max_keysize; | ||
157 | unsigned int ivsize; | ||
158 | }; | ||
159 | |||
119 | struct blkcipher_alg { | 160 | struct blkcipher_alg { |
120 | int (*setkey)(struct crypto_tfm *tfm, const u8 *key, | 161 | int (*setkey)(struct crypto_tfm *tfm, const u8 *key, |
121 | unsigned int keylen); | 162 | unsigned int keylen); |
@@ -170,6 +211,7 @@ struct compress_alg { | |||
170 | unsigned int slen, u8 *dst, unsigned int *dlen); | 211 | unsigned int slen, u8 *dst, unsigned int *dlen); |
171 | }; | 212 | }; |
172 | 213 | ||
214 | #define cra_ablkcipher cra_u.ablkcipher | ||
173 | #define cra_blkcipher cra_u.blkcipher | 215 | #define cra_blkcipher cra_u.blkcipher |
174 | #define cra_cipher cra_u.cipher | 216 | #define cra_cipher cra_u.cipher |
175 | #define cra_digest cra_u.digest | 217 | #define cra_digest cra_u.digest |
@@ -194,6 +236,7 @@ struct crypto_alg { | |||
194 | const struct crypto_type *cra_type; | 236 | const struct crypto_type *cra_type; |
195 | 237 | ||
196 | union { | 238 | union { |
239 | struct ablkcipher_alg ablkcipher; | ||
197 | struct blkcipher_alg blkcipher; | 240 | struct blkcipher_alg blkcipher; |
198 | struct cipher_alg cipher; | 241 | struct cipher_alg cipher; |
199 | struct digest_alg digest; | 242 | struct digest_alg digest; |
@@ -232,6 +275,15 @@ static inline int crypto_has_alg(const char *name, u32 type, u32 mask) | |||
232 | * crypto_free_*(), as well as the various helpers below. | 275 | * crypto_free_*(), as well as the various helpers below. |
233 | */ | 276 | */ |
234 | 277 | ||
278 | struct ablkcipher_tfm { | ||
279 | int (*setkey)(struct crypto_ablkcipher *tfm, const u8 *key, | ||
280 | unsigned int keylen); | ||
281 | int (*encrypt)(struct ablkcipher_request *req); | ||
282 | int (*decrypt)(struct ablkcipher_request *req); | ||
283 | unsigned int ivsize; | ||
284 | unsigned int reqsize; | ||
285 | }; | ||
286 | |||
235 | struct blkcipher_tfm { | 287 | struct blkcipher_tfm { |
236 | void *iv; | 288 | void *iv; |
237 | int (*setkey)(struct crypto_tfm *tfm, const u8 *key, | 289 | int (*setkey)(struct crypto_tfm *tfm, const u8 *key, |
@@ -290,6 +342,7 @@ struct compress_tfm { | |||
290 | u8 *dst, unsigned int *dlen); | 342 | u8 *dst, unsigned int *dlen); |
291 | }; | 343 | }; |
292 | 344 | ||
345 | #define crt_ablkcipher crt_u.ablkcipher | ||
293 | #define crt_blkcipher crt_u.blkcipher | 346 | #define crt_blkcipher crt_u.blkcipher |
294 | #define crt_cipher crt_u.cipher | 347 | #define crt_cipher crt_u.cipher |
295 | #define crt_hash crt_u.hash | 348 | #define crt_hash crt_u.hash |
@@ -300,6 +353,7 @@ struct crypto_tfm { | |||
300 | u32 crt_flags; | 353 | u32 crt_flags; |
301 | 354 | ||
302 | union { | 355 | union { |
356 | struct ablkcipher_tfm ablkcipher; | ||
303 | struct blkcipher_tfm blkcipher; | 357 | struct blkcipher_tfm blkcipher; |
304 | struct cipher_tfm cipher; | 358 | struct cipher_tfm cipher; |
305 | struct hash_tfm hash; | 359 | struct hash_tfm hash; |
@@ -311,6 +365,10 @@ struct crypto_tfm { | |||
311 | void *__crt_ctx[] CRYPTO_MINALIGN_ATTR; | 365 | void *__crt_ctx[] CRYPTO_MINALIGN_ATTR; |
312 | }; | 366 | }; |
313 | 367 | ||
368 | struct crypto_ablkcipher { | ||
369 | struct crypto_tfm base; | ||
370 | }; | ||
371 | |||
314 | struct crypto_blkcipher { | 372 | struct crypto_blkcipher { |
315 | struct crypto_tfm base; | 373 | struct crypto_tfm base; |
316 | }; | 374 | }; |
@@ -330,12 +388,21 @@ struct crypto_hash { | |||
330 | enum { | 388 | enum { |
331 | CRYPTOA_UNSPEC, | 389 | CRYPTOA_UNSPEC, |
332 | CRYPTOA_ALG, | 390 | CRYPTOA_ALG, |
391 | CRYPTOA_TYPE, | ||
392 | __CRYPTOA_MAX, | ||
333 | }; | 393 | }; |
334 | 394 | ||
395 | #define CRYPTOA_MAX (__CRYPTOA_MAX - 1) | ||
396 | |||
335 | struct crypto_attr_alg { | 397 | struct crypto_attr_alg { |
336 | char name[CRYPTO_MAX_ALG_NAME]; | 398 | char name[CRYPTO_MAX_ALG_NAME]; |
337 | }; | 399 | }; |
338 | 400 | ||
401 | struct crypto_attr_type { | ||
402 | u32 type; | ||
403 | u32 mask; | ||
404 | }; | ||
405 | |||
339 | /* | 406 | /* |
340 | * Transform user interface. | 407 | * Transform user interface. |
341 | */ | 408 | */ |
@@ -411,6 +478,167 @@ static inline unsigned int crypto_tfm_ctx_alignment(void) | |||
411 | /* | 478 | /* |
412 | * API wrappers. | 479 | * API wrappers. |
413 | */ | 480 | */ |
481 | static inline struct crypto_ablkcipher *__crypto_ablkcipher_cast( | ||
482 | struct crypto_tfm *tfm) | ||
483 | { | ||
484 | return (struct crypto_ablkcipher *)tfm; | ||
485 | } | ||
486 | |||
487 | static inline struct crypto_ablkcipher *crypto_alloc_ablkcipher( | ||
488 | const char *alg_name, u32 type, u32 mask) | ||
489 | { | ||
490 | type &= ~CRYPTO_ALG_TYPE_MASK; | ||
491 | type |= CRYPTO_ALG_TYPE_BLKCIPHER; | ||
492 | mask |= CRYPTO_ALG_TYPE_MASK; | ||
493 | |||
494 | return __crypto_ablkcipher_cast( | ||
495 | crypto_alloc_base(alg_name, type, mask)); | ||
496 | } | ||
497 | |||
498 | static inline struct crypto_tfm *crypto_ablkcipher_tfm( | ||
499 | struct crypto_ablkcipher *tfm) | ||
500 | { | ||
501 | return &tfm->base; | ||
502 | } | ||
503 | |||
504 | static inline void crypto_free_ablkcipher(struct crypto_ablkcipher *tfm) | ||
505 | { | ||
506 | crypto_free_tfm(crypto_ablkcipher_tfm(tfm)); | ||
507 | } | ||
508 | |||
509 | static inline int crypto_has_ablkcipher(const char *alg_name, u32 type, | ||
510 | u32 mask) | ||
511 | { | ||
512 | type &= ~CRYPTO_ALG_TYPE_MASK; | ||
513 | type |= CRYPTO_ALG_TYPE_BLKCIPHER; | ||
514 | mask |= CRYPTO_ALG_TYPE_MASK; | ||
515 | |||
516 | return crypto_has_alg(alg_name, type, mask); | ||
517 | } | ||
518 | |||
519 | static inline struct ablkcipher_tfm *crypto_ablkcipher_crt( | ||
520 | struct crypto_ablkcipher *tfm) | ||
521 | { | ||
522 | return &crypto_ablkcipher_tfm(tfm)->crt_ablkcipher; | ||
523 | } | ||
524 | |||
525 | static inline unsigned int crypto_ablkcipher_ivsize( | ||
526 | struct crypto_ablkcipher *tfm) | ||
527 | { | ||
528 | return crypto_ablkcipher_crt(tfm)->ivsize; | ||
529 | } | ||
530 | |||
531 | static inline unsigned int crypto_ablkcipher_blocksize( | ||
532 | struct crypto_ablkcipher *tfm) | ||
533 | { | ||
534 | return crypto_tfm_alg_blocksize(crypto_ablkcipher_tfm(tfm)); | ||
535 | } | ||
536 | |||
537 | static inline unsigned int crypto_ablkcipher_alignmask( | ||
538 | struct crypto_ablkcipher *tfm) | ||
539 | { | ||
540 | return crypto_tfm_alg_alignmask(crypto_ablkcipher_tfm(tfm)); | ||
541 | } | ||
542 | |||
543 | static inline u32 crypto_ablkcipher_get_flags(struct crypto_ablkcipher *tfm) | ||
544 | { | ||
545 | return crypto_tfm_get_flags(crypto_ablkcipher_tfm(tfm)); | ||
546 | } | ||
547 | |||
548 | static inline void crypto_ablkcipher_set_flags(struct crypto_ablkcipher *tfm, | ||
549 | u32 flags) | ||
550 | { | ||
551 | crypto_tfm_set_flags(crypto_ablkcipher_tfm(tfm), flags); | ||
552 | } | ||
553 | |||
554 | static inline void crypto_ablkcipher_clear_flags(struct crypto_ablkcipher *tfm, | ||
555 | u32 flags) | ||
556 | { | ||
557 | crypto_tfm_clear_flags(crypto_ablkcipher_tfm(tfm), flags); | ||
558 | } | ||
559 | |||
560 | static inline int crypto_ablkcipher_setkey(struct crypto_ablkcipher *tfm, | ||
561 | const u8 *key, unsigned int keylen) | ||
562 | { | ||
563 | return crypto_ablkcipher_crt(tfm)->setkey(tfm, key, keylen); | ||
564 | } | ||
565 | |||
566 | static inline struct crypto_ablkcipher *crypto_ablkcipher_reqtfm( | ||
567 | struct ablkcipher_request *req) | ||
568 | { | ||
569 | return __crypto_ablkcipher_cast(req->base.tfm); | ||
570 | } | ||
571 | |||
572 | static inline int crypto_ablkcipher_encrypt(struct ablkcipher_request *req) | ||
573 | { | ||
574 | struct ablkcipher_tfm *crt = | ||
575 | crypto_ablkcipher_crt(crypto_ablkcipher_reqtfm(req)); | ||
576 | return crt->encrypt(req); | ||
577 | } | ||
578 | |||
579 | static inline int crypto_ablkcipher_decrypt(struct ablkcipher_request *req) | ||
580 | { | ||
581 | struct ablkcipher_tfm *crt = | ||
582 | crypto_ablkcipher_crt(crypto_ablkcipher_reqtfm(req)); | ||
583 | return crt->decrypt(req); | ||
584 | } | ||
585 | |||
586 | static inline int crypto_ablkcipher_reqsize(struct crypto_ablkcipher *tfm) | ||
587 | { | ||
588 | return crypto_ablkcipher_crt(tfm)->reqsize; | ||
589 | } | ||
590 | |||
591 | static inline void ablkcipher_request_set_tfm( | ||
592 | struct ablkcipher_request *req, struct crypto_ablkcipher *tfm) | ||
593 | { | ||
594 | req->base.tfm = crypto_ablkcipher_tfm(tfm); | ||
595 | } | ||
596 | |||
597 | static inline struct ablkcipher_request *ablkcipher_request_cast( | ||
598 | struct crypto_async_request *req) | ||
599 | { | ||
600 | return container_of(req, struct ablkcipher_request, base); | ||
601 | } | ||
602 | |||
603 | static inline struct ablkcipher_request *ablkcipher_request_alloc( | ||
604 | struct crypto_ablkcipher *tfm, gfp_t gfp) | ||
605 | { | ||
606 | struct ablkcipher_request *req; | ||
607 | |||
608 | req = kmalloc(sizeof(struct ablkcipher_request) + | ||
609 | crypto_ablkcipher_reqsize(tfm), gfp); | ||
610 | |||
611 | if (likely(req)) | ||
612 | ablkcipher_request_set_tfm(req, tfm); | ||
613 | |||
614 | return req; | ||
615 | } | ||
616 | |||
617 | static inline void ablkcipher_request_free(struct ablkcipher_request *req) | ||
618 | { | ||
619 | kfree(req); | ||
620 | } | ||
621 | |||
622 | static inline void ablkcipher_request_set_callback( | ||
623 | struct ablkcipher_request *req, | ||
624 | u32 flags, crypto_completion_t complete, void *data) | ||
625 | { | ||
626 | req->base.complete = complete; | ||
627 | req->base.data = data; | ||
628 | req->base.flags = flags; | ||
629 | } | ||
630 | |||
631 | static inline void ablkcipher_request_set_crypt( | ||
632 | struct ablkcipher_request *req, | ||
633 | struct scatterlist *src, struct scatterlist *dst, | ||
634 | unsigned int nbytes, void *iv) | ||
635 | { | ||
636 | req->src = src; | ||
637 | req->dst = dst; | ||
638 | req->nbytes = nbytes; | ||
639 | req->info = iv; | ||
640 | } | ||
641 | |||
414 | static inline struct crypto_blkcipher *__crypto_blkcipher_cast( | 642 | static inline struct crypto_blkcipher *__crypto_blkcipher_cast( |
415 | struct crypto_tfm *tfm) | 643 | struct crypto_tfm *tfm) |
416 | { | 644 | { |
@@ -427,9 +655,9 @@ static inline struct crypto_blkcipher *crypto_blkcipher_cast( | |||
427 | static inline struct crypto_blkcipher *crypto_alloc_blkcipher( | 655 | static inline struct crypto_blkcipher *crypto_alloc_blkcipher( |
428 | const char *alg_name, u32 type, u32 mask) | 656 | const char *alg_name, u32 type, u32 mask) |
429 | { | 657 | { |
430 | type &= ~CRYPTO_ALG_TYPE_MASK; | 658 | type &= ~(CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC); |
431 | type |= CRYPTO_ALG_TYPE_BLKCIPHER; | 659 | type |= CRYPTO_ALG_TYPE_BLKCIPHER; |
432 | mask |= CRYPTO_ALG_TYPE_MASK; | 660 | mask |= CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC; |
433 | 661 | ||
434 | return __crypto_blkcipher_cast(crypto_alloc_base(alg_name, type, mask)); | 662 | return __crypto_blkcipher_cast(crypto_alloc_base(alg_name, type, mask)); |
435 | } | 663 | } |
@@ -447,9 +675,9 @@ static inline void crypto_free_blkcipher(struct crypto_blkcipher *tfm) | |||
447 | 675 | ||
448 | static inline int crypto_has_blkcipher(const char *alg_name, u32 type, u32 mask) | 676 | static inline int crypto_has_blkcipher(const char *alg_name, u32 type, u32 mask) |
449 | { | 677 | { |
450 | type &= ~CRYPTO_ALG_TYPE_MASK; | 678 | type &= ~(CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC); |
451 | type |= CRYPTO_ALG_TYPE_BLKCIPHER; | 679 | type |= CRYPTO_ALG_TYPE_BLKCIPHER; |
452 | mask |= CRYPTO_ALG_TYPE_MASK; | 680 | mask |= CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC; |
453 | 681 | ||
454 | return crypto_has_alg(alg_name, type, mask); | 682 | return crypto_has_alg(alg_name, type, mask); |
455 | } | 683 | } |
diff --git a/include/linux/device.h b/include/linux/device.h index ee292fe87cb2..6579068134d1 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -80,7 +80,6 @@ struct bus_type { | |||
80 | int (*resume)(struct device * dev); | 80 | int (*resume)(struct device * dev); |
81 | 81 | ||
82 | unsigned int drivers_autoprobe:1; | 82 | unsigned int drivers_autoprobe:1; |
83 | unsigned int multithread_probe:1; | ||
84 | }; | 83 | }; |
85 | 84 | ||
86 | extern int __must_check bus_register(struct bus_type * bus); | 85 | extern int __must_check bus_register(struct bus_type * bus); |
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 645d440807c2..7bab8eae2341 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h | |||
@@ -42,8 +42,14 @@ static inline void *kmap(struct page *page) | |||
42 | 42 | ||
43 | #define kunmap(page) do { (void) (page); } while (0) | 43 | #define kunmap(page) do { (void) (page); } while (0) |
44 | 44 | ||
45 | #define kmap_atomic(page, idx) \ | 45 | #include <asm/kmap_types.h> |
46 | ({ pagefault_disable(); page_address(page); }) | 46 | |
47 | static inline void *kmap_atomic(struct page *page, enum km_type idx) | ||
48 | { | ||
49 | pagefault_disable(); | ||
50 | return page_address(page); | ||
51 | } | ||
52 | |||
47 | #define kunmap_atomic(addr, idx) do { pagefault_enable(); } while (0) | 53 | #define kunmap_atomic(addr, idx) do { pagefault_enable(); } while (0) |
48 | #define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx)) | 54 | #define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx)) |
49 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) | 55 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) |
diff --git a/include/linux/i2c-algo-bit.h b/include/linux/i2c-algo-bit.h index 937da70cb4c4..9ee0f800592f 100644 --- a/include/linux/i2c-algo-bit.h +++ b/include/linux/i2c-algo-bit.h | |||
@@ -38,11 +38,14 @@ struct i2c_algo_bit_data { | |||
38 | int (*getscl) (void *data); | 38 | int (*getscl) (void *data); |
39 | 39 | ||
40 | /* local settings */ | 40 | /* local settings */ |
41 | int udelay; /* half-clock-cycle time in microsecs */ | 41 | int udelay; /* half clock cycle time in us, |
42 | /* i.e. clock is (500 / udelay) KHz */ | 42 | minimum 2 us for fast-mode I2C, |
43 | minimum 5 us for standard-mode I2C and SMBus, | ||
44 | maximum 50 us for SMBus */ | ||
43 | int timeout; /* in jiffies */ | 45 | int timeout; /* in jiffies */ |
44 | }; | 46 | }; |
45 | 47 | ||
46 | int i2c_bit_add_bus(struct i2c_adapter *); | 48 | int i2c_bit_add_bus(struct i2c_adapter *); |
49 | int i2c_bit_add_numbered_bus(struct i2c_adapter *); | ||
47 | 50 | ||
48 | #endif /* _LINUX_I2C_ALGO_BIT_H */ | 51 | #endif /* _LINUX_I2C_ALGO_BIT_H */ |
diff --git a/include/linux/i2c-gpio.h b/include/linux/i2c-gpio.h new file mode 100644 index 000000000000..c1bcb1f1d73b --- /dev/null +++ b/include/linux/i2c-gpio.h | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | * i2c-gpio interface to platform code | ||
3 | * | ||
4 | * Copyright (C) 2007 Atmel Corporation | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef _LINUX_I2C_GPIO_H | ||
11 | #define _LINUX_I2C_GPIO_H | ||
12 | |||
13 | /** | ||
14 | * struct i2c_gpio_platform_data - Platform-dependent data for i2c-gpio | ||
15 | * @sda_pin: GPIO pin ID to use for SDA | ||
16 | * @scl_pin: GPIO pin ID to use for SCL | ||
17 | * @udelay: signal toggle delay. SCL frequency is (500 / udelay) kHz | ||
18 | * @timeout: clock stretching timeout in jiffies. If the slave keeps | ||
19 | * SCL low for longer than this, the transfer will time out. | ||
20 | * @sda_is_open_drain: SDA is configured as open drain, i.e. the pin | ||
21 | * isn't actively driven high when setting the output value high. | ||
22 | * gpio_get_value() must return the actual pin state even if the | ||
23 | * pin is configured as an output. | ||
24 | * @scl_is_open_drain: SCL is set up as open drain. Same requirements | ||
25 | * as for sda_is_open_drain apply. | ||
26 | * @scl_is_output_only: SCL output drivers cannot be turned off. | ||
27 | */ | ||
28 | struct i2c_gpio_platform_data { | ||
29 | unsigned int sda_pin; | ||
30 | unsigned int scl_pin; | ||
31 | int udelay; | ||
32 | int timeout; | ||
33 | unsigned int sda_is_open_drain:1; | ||
34 | unsigned int scl_is_open_drain:1; | ||
35 | unsigned int scl_is_output_only:1; | ||
36 | }; | ||
37 | |||
38 | #endif /* _LINUX_I2C_GPIO_H */ | ||
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index 9c21dc793d7b..0e8da684ce68 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h | |||
@@ -258,8 +258,9 @@ | |||
258 | /* --- MCP107 adapter */ | 258 | /* --- MCP107 adapter */ |
259 | #define I2C_HW_MPC107 0x0d0000 | 259 | #define I2C_HW_MPC107 0x0d0000 |
260 | 260 | ||
261 | /* --- Marvell mv64xxx i2c adapter */ | 261 | /* --- Embedded adapters */ |
262 | #define I2C_HW_MV64XXX 0x190000 | 262 | #define I2C_HW_MV64XXX 0x190000 |
263 | #define I2C_HW_BLACKFIN 0x190001 /* ADI Blackfin I2C TWI driver */ | ||
263 | 264 | ||
264 | /* --- Miscellaneous adapters */ | 265 | /* --- Miscellaneous adapters */ |
265 | #define I2C_HW_SAA7146 0x060000 /* SAA7146 video decoder bus */ | 266 | #define I2C_HW_SAA7146 0x060000 /* SAA7146 video decoder bus */ |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 9428092017e3..cae7d618030c 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -35,11 +35,6 @@ | |||
35 | #include <linux/sched.h> /* for completion */ | 35 | #include <linux/sched.h> /* for completion */ |
36 | #include <linux/mutex.h> | 36 | #include <linux/mutex.h> |
37 | 37 | ||
38 | /* --- For i2c-isa ---------------------------------------------------- */ | ||
39 | |||
40 | extern void i2c_adapter_dev_release(struct device *dev); | ||
41 | extern struct device_driver i2c_adapter_driver; | ||
42 | extern struct class i2c_adapter_class; | ||
43 | extern struct bus_type i2c_bus_type; | 38 | extern struct bus_type i2c_bus_type; |
44 | 39 | ||
45 | /* --- General options ------------------------------------------------ */ | 40 | /* --- General options ------------------------------------------------ */ |
@@ -87,6 +82,9 @@ extern s32 i2c_smbus_write_byte_data(struct i2c_client * client, | |||
87 | extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); | 82 | extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); |
88 | extern s32 i2c_smbus_write_word_data(struct i2c_client * client, | 83 | extern s32 i2c_smbus_write_word_data(struct i2c_client * client, |
89 | u8 command, u16 value); | 84 | u8 command, u16 value); |
85 | /* Returns the number of read bytes */ | ||
86 | extern s32 i2c_smbus_read_block_data(struct i2c_client *client, | ||
87 | u8 command, u8 *values); | ||
90 | extern s32 i2c_smbus_write_block_data(struct i2c_client * client, | 88 | extern s32 i2c_smbus_write_block_data(struct i2c_client * client, |
91 | u8 command, u8 length, | 89 | u8 command, u8 length, |
92 | const u8 *values); | 90 | const u8 *values); |
@@ -114,7 +112,7 @@ struct i2c_driver { | |||
114 | * can be used by the driver to test if the bus meets its conditions | 112 | * can be used by the driver to test if the bus meets its conditions |
115 | * & seek for the presence of the chip(s) it supports. If found, it | 113 | * & seek for the presence of the chip(s) it supports. If found, it |
116 | * registers the client(s) that are on the bus to the i2c admin. via | 114 | * registers the client(s) that are on the bus to the i2c admin. via |
117 | * i2c_attach_client. | 115 | * i2c_attach_client. (LEGACY I2C DRIVERS ONLY) |
118 | */ | 116 | */ |
119 | int (*attach_adapter)(struct i2c_adapter *); | 117 | int (*attach_adapter)(struct i2c_adapter *); |
120 | int (*detach_adapter)(struct i2c_adapter *); | 118 | int (*detach_adapter)(struct i2c_adapter *); |
@@ -122,10 +120,17 @@ struct i2c_driver { | |||
122 | /* tells the driver that a client is about to be deleted & gives it | 120 | /* tells the driver that a client is about to be deleted & gives it |
123 | * the chance to remove its private data. Also, if the client struct | 121 | * the chance to remove its private data. Also, if the client struct |
124 | * has been dynamically allocated by the driver in the function above, | 122 | * has been dynamically allocated by the driver in the function above, |
125 | * it must be freed here. | 123 | * it must be freed here. (LEGACY I2C DRIVERS ONLY) |
126 | */ | 124 | */ |
127 | int (*detach_client)(struct i2c_client *); | 125 | int (*detach_client)(struct i2c_client *); |
128 | 126 | ||
127 | /* Standard driver model interfaces, for "new style" i2c drivers. | ||
128 | * With the driver model, device enumeration is NEVER done by drivers; | ||
129 | * it's done by infrastructure. (NEW STYLE DRIVERS ONLY) | ||
130 | */ | ||
131 | int (*probe)(struct i2c_client *); | ||
132 | int (*remove)(struct i2c_client *); | ||
133 | |||
129 | /* driver model interfaces that don't relate to enumeration */ | 134 | /* driver model interfaces that don't relate to enumeration */ |
130 | void (*shutdown)(struct i2c_client *); | 135 | void (*shutdown)(struct i2c_client *); |
131 | int (*suspend)(struct i2c_client *, pm_message_t mesg); | 136 | int (*suspend)(struct i2c_client *, pm_message_t mesg); |
@@ -141,25 +146,34 @@ struct i2c_driver { | |||
141 | }; | 146 | }; |
142 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) | 147 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) |
143 | 148 | ||
144 | #define I2C_NAME_SIZE 50 | 149 | #define I2C_NAME_SIZE 20 |
145 | 150 | ||
146 | /* | 151 | /** |
147 | * i2c_client identifies a single device (i.e. chip) that is connected to an | 152 | * struct i2c_client - represent an I2C slave device |
148 | * i2c bus. The behaviour is defined by the routines of the driver. This | 153 | * @addr: Address used on the I2C bus connected to the parent adapter. |
149 | * function is mainly used for lookup & other admin. functions. | 154 | * @name: Indicates the type of the device, usually a chip name that's |
155 | * generic enough to hide second-sourcing and compatible revisions. | ||
156 | * @dev: Driver model device node for the slave. | ||
157 | * @driver_name: Identifies new-style driver used with this device; also | ||
158 | * used as the module name for hotplug/coldplug modprobe support. | ||
159 | * | ||
160 | * An i2c_client identifies a single device (i.e. chip) connected to an | ||
161 | * i2c bus. The behaviour is defined by the routines of the driver. | ||
150 | */ | 162 | */ |
151 | struct i2c_client { | 163 | struct i2c_client { |
152 | unsigned int flags; /* div., see below */ | 164 | unsigned short flags; /* div., see below */ |
153 | unsigned short addr; /* chip address - NOTE: 7bit */ | 165 | unsigned short addr; /* chip address - NOTE: 7bit */ |
154 | /* addresses are stored in the */ | 166 | /* addresses are stored in the */ |
155 | /* _LOWER_ 7 bits */ | 167 | /* _LOWER_ 7 bits */ |
168 | char name[I2C_NAME_SIZE]; | ||
156 | struct i2c_adapter *adapter; /* the adapter we sit on */ | 169 | struct i2c_adapter *adapter; /* the adapter we sit on */ |
157 | struct i2c_driver *driver; /* and our access routines */ | 170 | struct i2c_driver *driver; /* and our access routines */ |
158 | int usage_count; /* How many accesses currently */ | 171 | int usage_count; /* How many accesses currently */ |
159 | /* to the client */ | 172 | /* to the client */ |
160 | struct device dev; /* the device structure */ | 173 | struct device dev; /* the device structure */ |
174 | int irq; /* irq issued by device (or -1) */ | ||
175 | char driver_name[KOBJ_NAME_LEN]; | ||
161 | struct list_head list; | 176 | struct list_head list; |
162 | char name[I2C_NAME_SIZE]; | ||
163 | struct completion released; | 177 | struct completion released; |
164 | }; | 178 | }; |
165 | #define to_i2c_client(d) container_of(d, struct i2c_client, dev) | 179 | #define to_i2c_client(d) container_of(d, struct i2c_client, dev) |
@@ -179,6 +193,76 @@ static inline void i2c_set_clientdata (struct i2c_client *dev, void *data) | |||
179 | dev_set_drvdata (&dev->dev, data); | 193 | dev_set_drvdata (&dev->dev, data); |
180 | } | 194 | } |
181 | 195 | ||
196 | /** | ||
197 | * struct i2c_board_info - template for device creation | ||
198 | * @driver_name: identifies the driver to be bound to the device | ||
199 | * @type: optional chip type information, to initialize i2c_client.name | ||
200 | * @flags: to initialize i2c_client.flags | ||
201 | * @addr: stored in i2c_client.addr | ||
202 | * @platform_data: stored in i2c_client.dev.platform_data | ||
203 | * @irq: stored in i2c_client.irq | ||
204 | |||
205 | * I2C doesn't actually support hardware probing, although controllers and | ||
206 | * devices may be able to use I2C_SMBUS_QUICK to tell whether or not there's | ||
207 | * a device at a given address. Drivers commonly need more information than | ||
208 | * that, such as chip type, configuration, associated IRQ, and so on. | ||
209 | * | ||
210 | * i2c_board_info is used to build tables of information listing I2C devices | ||
211 | * that are present. This information is used to grow the driver model tree | ||
212 | * for "new style" I2C drivers. For mainboards this is done statically using | ||
213 | * i2c_register_board_info(), where @bus_num represents an adapter that isn't | ||
214 | * yet available. For add-on boards, i2c_new_device() does this dynamically | ||
215 | * with the adapter already known. | ||
216 | */ | ||
217 | struct i2c_board_info { | ||
218 | char driver_name[KOBJ_NAME_LEN]; | ||
219 | char type[I2C_NAME_SIZE]; | ||
220 | unsigned short flags; | ||
221 | unsigned short addr; | ||
222 | void *platform_data; | ||
223 | int irq; | ||
224 | }; | ||
225 | |||
226 | /** | ||
227 | * I2C_BOARD_INFO - macro used to list an i2c device and its driver | ||
228 | * @driver: identifies the driver to use with the device | ||
229 | * @dev_addr: the device's address on the bus. | ||
230 | * | ||
231 | * This macro initializes essential fields of a struct i2c_board_info, | ||
232 | * declaring what has been provided on a particular board. Optional | ||
233 | * fields (such as the chip type, its associated irq, or device-specific | ||
234 | * platform_data) are provided using conventional syntax. | ||
235 | */ | ||
236 | #define I2C_BOARD_INFO(driver,dev_addr) \ | ||
237 | .driver_name = (driver), .addr = (dev_addr) | ||
238 | |||
239 | |||
240 | /* Add-on boards should register/unregister their devices; e.g. a board | ||
241 | * with integrated I2C, a config eeprom, sensors, and a codec that's | ||
242 | * used in conjunction with the primary hardware. | ||
243 | */ | ||
244 | extern struct i2c_client * | ||
245 | i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info); | ||
246 | |||
247 | /* If you don't know the exact address of an I2C device, use this variant | ||
248 | * instead, which can probe for device presence in a list of possible | ||
249 | * addresses. | ||
250 | */ | ||
251 | extern struct i2c_client * | ||
252 | i2c_new_probed_device(struct i2c_adapter *adap, | ||
253 | struct i2c_board_info *info, | ||
254 | unsigned short const *addr_list); | ||
255 | |||
256 | extern void i2c_unregister_device(struct i2c_client *); | ||
257 | |||
258 | /* Mainboard arch_initcall() code should register all its I2C devices. | ||
259 | * This is done at arch_initcall time, before declaring any i2c adapters. | ||
260 | * Modules for add-on boards must use other calls. | ||
261 | */ | ||
262 | extern int | ||
263 | i2c_register_board_info(int busnum, struct i2c_board_info const *info, unsigned n); | ||
264 | |||
265 | |||
182 | /* | 266 | /* |
183 | * The following structs are for those who like to implement new bus drivers: | 267 | * The following structs are for those who like to implement new bus drivers: |
184 | * i2c_algorithm is the interface to a class of hardware solutions which can | 268 | * i2c_algorithm is the interface to a class of hardware solutions which can |
@@ -228,17 +312,14 @@ struct i2c_adapter { | |||
228 | int timeout; | 312 | int timeout; |
229 | int retries; | 313 | int retries; |
230 | struct device dev; /* the adapter device */ | 314 | struct device dev; /* the adapter device */ |
231 | struct class_device class_dev; /* the class device */ | ||
232 | 315 | ||
233 | int nr; | 316 | int nr; |
234 | struct list_head clients; | 317 | struct list_head clients; |
235 | struct list_head list; | 318 | struct list_head list; |
236 | char name[I2C_NAME_SIZE]; | 319 | char name[48]; |
237 | struct completion dev_released; | 320 | struct completion dev_released; |
238 | struct completion class_dev_released; | ||
239 | }; | 321 | }; |
240 | #define dev_to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev) | 322 | #define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev) |
241 | #define class_dev_to_i2c_adapter(d) container_of(d, struct i2c_adapter, class_dev) | ||
242 | 323 | ||
243 | static inline void *i2c_get_adapdata (struct i2c_adapter *dev) | 324 | static inline void *i2c_get_adapdata (struct i2c_adapter *dev) |
244 | { | 325 | { |
@@ -290,9 +371,10 @@ struct i2c_client_address_data { | |||
290 | */ | 371 | */ |
291 | extern int i2c_add_adapter(struct i2c_adapter *); | 372 | extern int i2c_add_adapter(struct i2c_adapter *); |
292 | extern int i2c_del_adapter(struct i2c_adapter *); | 373 | extern int i2c_del_adapter(struct i2c_adapter *); |
374 | extern int i2c_add_numbered_adapter(struct i2c_adapter *); | ||
293 | 375 | ||
294 | extern int i2c_register_driver(struct module *, struct i2c_driver *); | 376 | extern int i2c_register_driver(struct module *, struct i2c_driver *); |
295 | extern int i2c_del_driver(struct i2c_driver *); | 377 | extern void i2c_del_driver(struct i2c_driver *); |
296 | 378 | ||
297 | static inline int i2c_add_driver(struct i2c_driver *driver) | 379 | static inline int i2c_add_driver(struct i2c_driver *driver) |
298 | { | 380 | { |
@@ -365,6 +447,7 @@ struct i2c_msg { | |||
365 | #define I2C_M_REV_DIR_ADDR 0x2000 | 447 | #define I2C_M_REV_DIR_ADDR 0x2000 |
366 | #define I2C_M_IGNORE_NAK 0x1000 | 448 | #define I2C_M_IGNORE_NAK 0x1000 |
367 | #define I2C_M_NO_RD_ACK 0x0800 | 449 | #define I2C_M_NO_RD_ACK 0x0800 |
450 | #define I2C_M_RECV_LEN 0x0400 /* length will be first received byte */ | ||
368 | __u16 len; /* msg length */ | 451 | __u16 len; /* msg length */ |
369 | __u8 *buf; /* pointer to msg data */ | 452 | __u8 *buf; /* pointer to msg data */ |
370 | }; | 453 | }; |
diff --git a/include/linux/input.h b/include/linux/input.h index bde65c8a3519..327122548c4d 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -676,6 +676,7 @@ struct input_absinfo { | |||
676 | #define BUS_I2C 0x18 | 676 | #define BUS_I2C 0x18 |
677 | #define BUS_HOST 0x19 | 677 | #define BUS_HOST 0x19 |
678 | #define BUS_GSC 0x1A | 678 | #define BUS_GSC 0x1A |
679 | #define BUS_ATARI 0x1B | ||
679 | 680 | ||
680 | /* | 681 | /* |
681 | * Values describing the status of a force-feedback effect | 682 | * Values describing the status of a force-feedback effect |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 838cf5a5bd7f..0319f665dd3f 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -185,10 +185,14 @@ static inline int disable_irq_wake(unsigned int irq) | |||
185 | * validator need to define the methods below in their asm/irq.h | 185 | * validator need to define the methods below in their asm/irq.h |
186 | * files, under an #ifdef CONFIG_LOCKDEP section. | 186 | * files, under an #ifdef CONFIG_LOCKDEP section. |
187 | */ | 187 | */ |
188 | # ifndef CONFIG_LOCKDEP | 188 | #ifndef CONFIG_LOCKDEP |
189 | # define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq) | 189 | # define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq) |
190 | # define disable_irq_nosync_lockdep_irqsave(irq, flags) \ | ||
191 | disable_irq_nosync(irq) | ||
190 | # define disable_irq_lockdep(irq) disable_irq(irq) | 192 | # define disable_irq_lockdep(irq) disable_irq(irq) |
191 | # define enable_irq_lockdep(irq) enable_irq(irq) | 193 | # define enable_irq_lockdep(irq) enable_irq(irq) |
194 | # define enable_irq_lockdep_irqrestore(irq, flags) \ | ||
195 | enable_irq(irq) | ||
192 | # endif | 196 | # endif |
193 | 197 | ||
194 | #endif /* CONFIG_GENERIC_HARDIRQS */ | 198 | #endif /* CONFIG_GENERIC_HARDIRQS */ |
diff --git a/include/linux/msi.h b/include/linux/msi.h index e38fe6822cb4..94bb46d82efd 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef LINUX_MSI_H | 1 | #ifndef LINUX_MSI_H |
2 | #define LINUX_MSI_H | 2 | #define LINUX_MSI_H |
3 | 3 | ||
4 | #include <linux/list.h> | ||
5 | |||
4 | struct msi_msg { | 6 | struct msi_msg { |
5 | u32 address_lo; /* low 32 bits of msi message address */ | 7 | u32 address_lo; /* low 32 bits of msi message address */ |
6 | u32 address_hi; /* high 32 bits of msi message address */ | 8 | u32 address_hi; /* high 32 bits of msi message address */ |
@@ -24,10 +26,8 @@ struct msi_desc { | |||
24 | unsigned default_irq; /* default pre-assigned irq */ | 26 | unsigned default_irq; /* default pre-assigned irq */ |
25 | }msi_attrib; | 27 | }msi_attrib; |
26 | 28 | ||
27 | struct { | 29 | unsigned int irq; |
28 | __u16 head; | 30 | struct list_head list; |
29 | __u16 tail; | ||
30 | }link; | ||
31 | 31 | ||
32 | void __iomem *mask_base; | 32 | void __iomem *mask_base; |
33 | struct pci_dev *dev; | 33 | struct pci_dev *dev; |
@@ -41,6 +41,9 @@ struct msi_desc { | |||
41 | */ | 41 | */ |
42 | int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc); | 42 | int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc); |
43 | void arch_teardown_msi_irq(unsigned int irq); | 43 | void arch_teardown_msi_irq(unsigned int irq); |
44 | extern int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); | ||
45 | extern void arch_teardown_msi_irqs(struct pci_dev *dev); | ||
46 | extern int arch_msi_check_device(struct pci_dev* dev, int nvec, int type); | ||
44 | 47 | ||
45 | 48 | ||
46 | #endif /* LINUX_MSI_H */ | 49 | #endif /* LINUX_MSI_H */ |
diff --git a/include/linux/nubus.h b/include/linux/nubus.h index 870e66a96286..cdb3e9b8db54 100644 --- a/include/linux/nubus.h +++ b/include/linux/nubus.h | |||
@@ -28,18 +28,18 @@ enum nubus_category { | |||
28 | }; | 28 | }; |
29 | 29 | ||
30 | enum nubus_type_network { | 30 | enum nubus_type_network { |
31 | NUBUS_TYPE_ETHERNET = 0x0001, | 31 | NUBUS_TYPE_ETHERNET = 0x0001, |
32 | NUBUS_TYPE_RS232 = 0x0002 | 32 | NUBUS_TYPE_RS232 = 0x0002 |
33 | }; | 33 | }; |
34 | 34 | ||
35 | enum nubus_type_display { | 35 | enum nubus_type_display { |
36 | NUBUS_TYPE_VIDEO = 0x0001 | 36 | NUBUS_TYPE_VIDEO = 0x0001 |
37 | }; | 37 | }; |
38 | 38 | ||
39 | enum nubus_type_cpu { | 39 | enum nubus_type_cpu { |
40 | NUBUS_TYPE_68020 = 0x0003, | 40 | NUBUS_TYPE_68020 = 0x0003, |
41 | NUBUS_TYPE_68030 = 0x0004, | 41 | NUBUS_TYPE_68030 = 0x0004, |
42 | NUBUS_TYPE_68040 = 0x0005 | 42 | NUBUS_TYPE_68040 = 0x0005 |
43 | }; | 43 | }; |
44 | 44 | ||
45 | /* Known <Cat,Type,SW,HW> tuples: (according to TattleTech and Slots) | 45 | /* Known <Cat,Type,SW,HW> tuples: (according to TattleTech and Slots) |
@@ -56,6 +56,7 @@ enum nubus_type_cpu { | |||
56 | * | 56 | * |
57 | * SONIC comm-slot/on-board and DuoDock Ethernet: <4,1,1,272> | 57 | * SONIC comm-slot/on-board and DuoDock Ethernet: <4,1,1,272> |
58 | * SONIC LC-PDS Ethernet (Dayna, but like Apple 16-bit, sort of): <4,1,1,271> | 58 | * SONIC LC-PDS Ethernet (Dayna, but like Apple 16-bit, sort of): <4,1,1,271> |
59 | * Apple SONIC LC-PDS Ethernet ("Apple Ethernet LC Twisted-Pair Card"): <4,1,0,281> | ||
59 | * Sonic Systems Ethernet A-Series Card: <4,1,268,256> | 60 | * Sonic Systems Ethernet A-Series Card: <4,1,268,256> |
60 | * Asante MacCon NuBus-A: <4,1,260,256> (alpha-1.0,1.1 revision) | 61 | * Asante MacCon NuBus-A: <4,1,260,256> (alpha-1.0,1.1 revision) |
61 | * ROM on the above card: <2,1,0,0> | 62 | * ROM on the above card: <2,1,0,0> |
@@ -80,24 +81,26 @@ enum nubus_type_cpu { | |||
80 | /* Add known DrSW values here */ | 81 | /* Add known DrSW values here */ |
81 | enum nubus_drsw { | 82 | enum nubus_drsw { |
82 | /* NUBUS_CAT_DISPLAY */ | 83 | /* NUBUS_CAT_DISPLAY */ |
83 | NUBUS_DRSW_APPLE = 0x0001, | 84 | NUBUS_DRSW_APPLE = 0x0001, |
84 | NUBUS_DRSW_APPLE_HIRES = 0x0013, /* MacII HiRes card driver */ | 85 | NUBUS_DRSW_APPLE_HIRES = 0x0013, /* MacII HiRes card driver */ |
85 | 86 | ||
86 | /* NUBUS_CAT_NETWORK */ | 87 | /* NUBUS_CAT_NETWORK */ |
87 | NUBUS_DRSW_CABLETRON = 0x0001, | 88 | NUBUS_DRSW_3COM = 0x0000, |
88 | NUBUS_DRSW_SONIC_LC = 0x0001, | 89 | NUBUS_DRSW_CABLETRON = 0x0001, |
89 | NUBUS_DRSW_KINETICS = 0x0103, | 90 | NUBUS_DRSW_SONIC_LC = 0x0001, |
90 | NUBUS_DRSW_ASANTE = 0x0104, | 91 | NUBUS_DRSW_KINETICS = 0x0103, |
91 | NUBUS_DRSW_DAYNA = 0x010b, | 92 | NUBUS_DRSW_ASANTE = 0x0104, |
92 | NUBUS_DRSW_FARALLON = 0x010c, | 93 | NUBUS_DRSW_TECHWORKS = 0x0109, |
93 | NUBUS_DRSW_APPLE_SN = 0x010f, | 94 | NUBUS_DRSW_DAYNA = 0x010b, |
94 | NUBUS_DRSW_DAYNA2 = 0x0115, | 95 | NUBUS_DRSW_FARALLON = 0x010c, |
96 | NUBUS_DRSW_APPLE_SN = 0x010f, | ||
97 | NUBUS_DRSW_DAYNA2 = 0x0115, | ||
95 | NUBUS_DRSW_FOCUS = 0x011a, | 98 | NUBUS_DRSW_FOCUS = 0x011a, |
96 | NUBUS_DRSW_ASANTE_CS = 0x011d, /* use asante SMC9194 driver */ | 99 | NUBUS_DRSW_ASANTE_CS = 0x011d, /* use asante SMC9194 driver */ |
97 | NUBUS_DRSW_DAYNA_LC = 0x011e, | 100 | NUBUS_DRSW_DAYNA_LC = 0x011e, |
98 | 101 | ||
99 | /* NUBUS_CAT_CPU */ | 102 | /* NUBUS_CAT_CPU */ |
100 | NUBUS_DRSW_NONE = 0x0000, | 103 | NUBUS_DRSW_NONE = 0x0000, |
101 | }; | 104 | }; |
102 | 105 | ||
103 | /* DrHW: Uniquely identifies the hardware interface to a board (or at | 106 | /* DrHW: Uniquely identifies the hardware interface to a board (or at |
@@ -107,27 +110,48 @@ enum nubus_drsw { | |||
107 | /* Add known DrHW values here */ | 110 | /* Add known DrHW values here */ |
108 | enum nubus_drhw { | 111 | enum nubus_drhw { |
109 | /* NUBUS_CAT_DISPLAY */ | 112 | /* NUBUS_CAT_DISPLAY */ |
110 | NUBUS_DRHW_APPLE_TFB = 0x0001, /* Toby frame buffer card */ | 113 | NUBUS_DRHW_APPLE_TFB = 0x0001, /* Toby frame buffer card */ |
111 | NUBUS_DRHW_APPLE_HRVC = 0x0013, /* Mac II High Res Video card */ | 114 | NUBUS_DRHW_APPLE_WVC = 0x0006, /* Apple Workstation Video Card */ |
112 | NUBUS_DRHW_APPLE_RBV1 = 0x0018, /* IIci RBV video */ | 115 | NUBUS_DRHW_SIGMA_CLRMAX = 0x0007, /* Sigma Design ColorMax */ |
113 | NUBUS_DRHW_APPLE_MDC = 0x0019, /* Macintosh Display Card */ | 116 | NUBUS_DRHW_APPLE_SE30 = 0x0009, /* Apple SE/30 video */ |
114 | NUBUS_DRHW_APPLE_SONORA = 0x0022, /* Sonora built-in video */ | 117 | NUBUS_DRHW_APPLE_HRVC = 0x0013, /* Mac II High-Res Video Card */ |
115 | NUBUS_DRHW_APPLE_JET = 0x0029, /* Jet framebuffer (DuoDock) */ | 118 | NUBUS_DRHW_APPLE_PVC = 0x0017, /* Mac II Portrait Video Card */ |
119 | NUBUS_DRHW_APPLE_RBV1 = 0x0018, /* IIci RBV video */ | ||
120 | NUBUS_DRHW_APPLE_MDC = 0x0019, /* Macintosh Display Card */ | ||
121 | NUBUS_DRHW_APPLE_SONORA = 0x0022, /* Sonora built-in video */ | ||
122 | NUBUS_DRHW_APPLE_24AC = 0x002b, /* Mac 24AC Video Card */ | ||
116 | NUBUS_DRHW_APPLE_VALKYRIE = 0x002e, | 123 | NUBUS_DRHW_APPLE_VALKYRIE = 0x002e, |
117 | NUBUS_DRHW_THUNDER24 = 0x02cb, /* SuperMac Thunder/24 */ | 124 | NUBUS_DRHW_APPLE_JET = 0x0029, /* Jet framebuffer (DuoDock) */ |
125 | NUBUS_DRHW_SMAC_GFX = 0x0105, /* SuperMac GFX */ | ||
126 | NUBUS_DRHW_RASTER_CB264 = 0x013B, /* RasterOps ColorBoard 264 */ | ||
127 | NUBUS_DRHW_MICRON_XCEED = 0x0146, /* Micron Exceed color */ | ||
128 | NUBUS_DRHW_RDIUS_GSC = 0x0153, /* Radius GS/C */ | ||
129 | NUBUS_DRHW_SMAC_SPEC8 = 0x017B, /* SuperMac Spectrum/8 */ | ||
130 | NUBUS_DRHW_SMAC_SPEC24 = 0x017C, /* SuperMac Spectrum/24 */ | ||
131 | NUBUS_DRHW_RASTER_CB364 = 0x026F, /* RasterOps ColorBoard 364 */ | ||
132 | NUBUS_DRHW_RDIUS_DCGX = 0x027C, /* Radius DirectColor/GX */ | ||
133 | NUBUS_DRHW_RDIUS_PC8 = 0x0291, /* Radius PrecisionColor 8 */ | ||
134 | NUBUS_DRHW_LAPIS_PCS8 = 0x0292, /* Lapis ProColorServer 8 */ | ||
135 | NUBUS_DRHW_RASTER_24LXI = 0x02A0, /* RasterOps 8/24 XLi */ | ||
136 | NUBUS_DRHW_RASTER_PBPGT = 0x02A5, /* RasterOps PaintBoard Prism GT */ | ||
137 | NUBUS_DRHW_EMACH_FSX = 0x02AE, /* E-Machines Futura SX */ | ||
138 | NUBUS_DRHW_SMAC_THUND24 = 0x02CB, /* SuperMac Thunder/24 */ | ||
139 | NUBUS_DRHW_RDIUS_PC24XP = 0x0406, /* Radius PrecisionColor 24Xp */ | ||
140 | NUBUS_DRHW_RDIUS_PC24X = 0x040A, /* Radius PrecisionColor 24X */ | ||
141 | NUBUS_DRHW_RDIUS_PC8XJ = 0x040B, /* Radius PrecisionColor 8XJ */ | ||
118 | 142 | ||
119 | /* NUBUS_CAT_NETWORK */ | 143 | /* NUBUS_CAT_NETWORK */ |
120 | NUBUS_DRHW_INTERLAN = 0x0100, | 144 | NUBUS_DRHW_INTERLAN = 0x0100, |
121 | NUBUS_DRHW_SMC9194 = 0x0101, | 145 | NUBUS_DRHW_SMC9194 = 0x0101, |
122 | NUBUS_DRHW_KINETICS = 0x0106, | 146 | NUBUS_DRHW_KINETICS = 0x0106, |
123 | NUBUS_DRHW_CABLETRON = 0x0109, | 147 | NUBUS_DRHW_CABLETRON = 0x0109, |
124 | NUBUS_DRHW_ASANTE_LC = 0x010f, | 148 | NUBUS_DRHW_ASANTE_LC = 0x010f, |
125 | NUBUS_DRHW_SONIC = 0x0110, | 149 | NUBUS_DRHW_SONIC = 0x0110, |
126 | NUBUS_DRHW_SONIC_NB = 0x0118, | 150 | NUBUS_DRHW_TECHWORKS = 0x0112, |
127 | NUBUS_DRHW_SONIC_LC = 0x0119, | 151 | NUBUS_DRHW_APPLE_SONIC_NB = 0x0118, |
128 | 152 | NUBUS_DRHW_APPLE_SONIC_LC = 0x0119, | |
129 | /* NUBUS_CAT_COMMUNICATIONS */ | 153 | NUBUS_DRHW_FOCUS = 0x011c, |
130 | NUBUS_DRHW_DOVEFAX = 0x0100, | 154 | NUBUS_DRHW_SONNET = 0x011d, |
131 | }; | 155 | }; |
132 | 156 | ||
133 | /* Resource IDs: These are the identifiers for the various weird and | 157 | /* Resource IDs: These are the identifiers for the various weird and |
@@ -153,17 +177,17 @@ enum nubus_res_id { | |||
153 | 177 | ||
154 | /* Category-specific resources. */ | 178 | /* Category-specific resources. */ |
155 | enum nubus_board_res_id { | 179 | enum nubus_board_res_id { |
156 | NUBUS_RESID_BOARDID = 0x0020, | 180 | NUBUS_RESID_BOARDID = 0x0020, |
157 | NUBUS_RESID_PRAMINITDATA = 0x0021, | 181 | NUBUS_RESID_PRAMINITDATA = 0x0021, |
158 | NUBUS_RESID_PRIMARYINIT = 0x0022, | 182 | NUBUS_RESID_PRIMARYINIT = 0x0022, |
159 | NUBUS_RESID_TIMEOUTCONST = 0x0023, | 183 | NUBUS_RESID_TIMEOUTCONST = 0x0023, |
160 | NUBUS_RESID_VENDORINFO = 0x0024, | 184 | NUBUS_RESID_VENDORINFO = 0x0024, |
161 | NUBUS_RESID_BOARDFLAGS = 0x0025, | 185 | NUBUS_RESID_BOARDFLAGS = 0x0025, |
162 | NUBUS_RESID_SECONDINIT = 0x0026, | 186 | NUBUS_RESID_SECONDINIT = 0x0026, |
163 | 187 | ||
164 | /* Not sure why Apple put these next two in here */ | 188 | /* Not sure why Apple put these next two in here */ |
165 | NUBUS_RESID_VIDNAMES = 0x0041, | 189 | NUBUS_RESID_VIDNAMES = 0x0041, |
166 | NUBUS_RESID_VIDMODES = 0x007e | 190 | NUBUS_RESID_VIDMODES = 0x007e |
167 | }; | 191 | }; |
168 | 192 | ||
169 | /* Fields within the vendor info directory */ | 193 | /* Fields within the vendor info directory */ |
@@ -185,13 +209,13 @@ enum nubus_cpu_res_id { | |||
185 | }; | 209 | }; |
186 | 210 | ||
187 | enum nubus_display_res_id { | 211 | enum nubus_display_res_id { |
188 | NUBUS_RESID_GAMMADIR = 0x0040, | 212 | NUBUS_RESID_GAMMADIR = 0x0040, |
189 | NUBUS_RESID_FIRSTMODE = 0x0080, | 213 | NUBUS_RESID_FIRSTMODE = 0x0080, |
190 | NUBUS_RESID_SECONDMODE = 0x0081, | 214 | NUBUS_RESID_SECONDMODE = 0x0081, |
191 | NUBUS_RESID_THIRDMODE = 0x0082, | 215 | NUBUS_RESID_THIRDMODE = 0x0082, |
192 | NUBUS_RESID_FOURTHMODE = 0x0083, | 216 | NUBUS_RESID_FOURTHMODE = 0x0083, |
193 | NUBUS_RESID_FIFTHMODE = 0x0084, | 217 | NUBUS_RESID_FIFTHMODE = 0x0084, |
194 | NUBUS_RESID_SIXTHMODE = 0x0085 | 218 | NUBUS_RESID_SIXTHMODE = 0x0085 |
195 | }; | 219 | }; |
196 | 220 | ||
197 | struct nubus_dir | 221 | struct nubus_dir |
@@ -214,7 +238,7 @@ struct nubus_board { | |||
214 | struct nubus_board* next; | 238 | struct nubus_board* next; |
215 | struct nubus_dev* first_dev; | 239 | struct nubus_dev* first_dev; |
216 | 240 | ||
217 | /* Only 9-E actually exist, though 0-8 are also theoretically | 241 | /* Only 9-E actually exist, though 0-8 are also theoretically |
218 | possible, and 0 is a special case which represents the | 242 | possible, and 0 is a special case which represents the |
219 | motherboard and onboard peripherals (Ethernet, video) */ | 243 | motherboard and onboard peripherals (Ethernet, video) */ |
220 | int slot; | 244 | int slot; |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 972491089ac9..fbf3766dac1e 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -96,6 +96,19 @@ enum pci_channel_state { | |||
96 | pci_channel_io_perm_failure = (__force pci_channel_state_t) 3, | 96 | pci_channel_io_perm_failure = (__force pci_channel_state_t) 3, |
97 | }; | 97 | }; |
98 | 98 | ||
99 | typedef unsigned int __bitwise pcie_reset_state_t; | ||
100 | |||
101 | enum pcie_reset_state { | ||
102 | /* Reset is NOT asserted (Use to deassert reset) */ | ||
103 | pcie_deassert_reset = (__force pcie_reset_state_t) 1, | ||
104 | |||
105 | /* Use #PERST to reset PCI-E device */ | ||
106 | pcie_warm_reset = (__force pcie_reset_state_t) 2, | ||
107 | |||
108 | /* Use PCI-E Hot Reset to reset device */ | ||
109 | pcie_hot_reset = (__force pcie_reset_state_t) 3 | ||
110 | }; | ||
111 | |||
99 | typedef unsigned short __bitwise pci_bus_flags_t; | 112 | typedef unsigned short __bitwise pci_bus_flags_t; |
100 | enum pci_bus_flags { | 113 | enum pci_bus_flags { |
101 | PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, | 114 | PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, |
@@ -176,10 +189,12 @@ struct pci_dev { | |||
176 | int rom_attr_enabled; /* has display of the rom attribute been enabled? */ | 189 | int rom_attr_enabled; /* has display of the rom attribute been enabled? */ |
177 | struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; /* sysfs file for resources */ | 190 | struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; /* sysfs file for resources */ |
178 | #ifdef CONFIG_PCI_MSI | 191 | #ifdef CONFIG_PCI_MSI |
179 | unsigned int first_msi_irq; | 192 | struct list_head msi_list; |
180 | #endif | 193 | #endif |
181 | }; | 194 | }; |
182 | 195 | ||
196 | extern struct pci_dev *alloc_pci_dev(void); | ||
197 | |||
183 | #define pci_dev_g(n) list_entry(n, struct pci_dev, global_list) | 198 | #define pci_dev_g(n) list_entry(n, struct pci_dev, global_list) |
184 | #define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) | 199 | #define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) |
185 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) | 200 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) |
@@ -392,12 +407,6 @@ struct pci_driver { | |||
392 | .vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \ | 407 | .vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \ |
393 | .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID | 408 | .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID |
394 | 409 | ||
395 | /* | ||
396 | * pci_module_init is obsolete, this stays here till we fix up all usages of it | ||
397 | * in the tree. | ||
398 | */ | ||
399 | #define pci_module_init pci_register_driver | ||
400 | |||
401 | /** | 410 | /** |
402 | * PCI_VDEVICE - macro used to describe a specific pci device in short form | 411 | * PCI_VDEVICE - macro used to describe a specific pci device in short form |
403 | * @vend: the vendor name | 412 | * @vend: the vendor name |
@@ -532,6 +541,7 @@ static inline int pci_is_managed(struct pci_dev *pdev) | |||
532 | 541 | ||
533 | void pci_disable_device(struct pci_dev *dev); | 542 | void pci_disable_device(struct pci_dev *dev); |
534 | void pci_set_master(struct pci_dev *dev); | 543 | void pci_set_master(struct pci_dev *dev); |
544 | int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); | ||
535 | #define HAVE_PCI_SET_MWI | 545 | #define HAVE_PCI_SET_MWI |
536 | int __must_check pci_set_mwi(struct pci_dev *dev); | 546 | int __must_check pci_set_mwi(struct pci_dev *dev); |
537 | void pci_clear_mwi(struct pci_dev *dev); | 547 | void pci_clear_mwi(struct pci_dev *dev); |
@@ -730,6 +740,9 @@ static inline int pci_set_power_state(struct pci_dev *dev, pci_power_t state) { | |||
730 | static inline pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state) { return PCI_D0; } | 740 | static inline pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state) { return PCI_D0; } |
731 | static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable) { return 0; } | 741 | static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable) { return 0; } |
732 | 742 | ||
743 | static inline int pci_request_regions(struct pci_dev *dev, const char *res_name) { return -EIO; } | ||
744 | static inline void pci_release_regions(struct pci_dev *dev) { } | ||
745 | |||
733 | #define pci_dma_burst_advice(pdev, strat, strategy_parameter) do { } while (0) | 746 | #define pci_dma_burst_advice(pdev, strat, strategy_parameter) do { } while (0) |
734 | 747 | ||
735 | static inline void pci_block_user_cfg_access(struct pci_dev *dev) { } | 748 | static inline void pci_block_user_cfg_access(struct pci_dev *dev) { } |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 1b0ddbb8a804..5a48e963d06b 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1213,11 +1213,13 @@ | |||
1213 | #define PCI_DEVICE_ID_NVIDIA_NVENET_16 0x03E5 | 1213 | #define PCI_DEVICE_ID_NVIDIA_NVENET_16 0x03E5 |
1214 | #define PCI_DEVICE_ID_NVIDIA_NVENET_17 0x03E6 | 1214 | #define PCI_DEVICE_ID_NVIDIA_NVENET_17 0x03E6 |
1215 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA 0x03E7 | 1215 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA 0x03E7 |
1216 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SMBUS 0x03EB | ||
1216 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE 0x03EC | 1217 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE 0x03EC |
1217 | #define PCI_DEVICE_ID_NVIDIA_NVENET_18 0x03EE | 1218 | #define PCI_DEVICE_ID_NVIDIA_NVENET_18 0x03EE |
1218 | #define PCI_DEVICE_ID_NVIDIA_NVENET_19 0x03EF | 1219 | #define PCI_DEVICE_ID_NVIDIA_NVENET_19 0x03EF |
1219 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2 0x03F6 | 1220 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2 0x03F6 |
1220 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3 0x03F7 | 1221 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3 0x03F7 |
1222 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SMBUS 0x0446 | ||
1221 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448 | 1223 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448 |
1222 | #define PCI_DEVICE_ID_NVIDIA_NVENET_20 0x0450 | 1224 | #define PCI_DEVICE_ID_NVIDIA_NVENET_20 0x0450 |
1223 | #define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451 | 1225 | #define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451 |
diff --git a/include/media/ovcamchip.h b/include/media/ovcamchip.h index 0f43451f8bb3..05b9569ef1c8 100644 --- a/include/media/ovcamchip.h +++ b/include/media/ovcamchip.h | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <linux/videodev.h> | 17 | #include <linux/videodev.h> |
18 | #include <media/v4l2-common.h> | 18 | #include <media/v4l2-common.h> |
19 | #include <linux/i2c.h> | ||
20 | 19 | ||
21 | /* --------------------------------- */ | 20 | /* --------------------------------- */ |
22 | /* ENUMERATIONS */ | 21 | /* ENUMERATIONS */ |
diff --git a/include/media/tuner.h b/include/media/tuner.h index a41ac41113ac..6dcf3c45707d 100644 --- a/include/media/tuner.h +++ b/include/media/tuner.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #define _TUNER_H | 23 | #define _TUNER_H |
24 | 24 | ||
25 | #include <linux/videodev2.h> | 25 | #include <linux/videodev2.h> |
26 | #include <linux/i2c.h> | ||
26 | #include <media/tuner-types.h> | 27 | #include <media/tuner-types.h> |
27 | 28 | ||
28 | extern int tuner_debug; | 29 | extern int tuner_debug; |
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index 585d28e960dd..739fa4d0e539 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h | |||
@@ -39,8 +39,6 @@ | |||
39 | #if !defined( IB_MAD_H ) | 39 | #if !defined( IB_MAD_H ) |
40 | #define IB_MAD_H | 40 | #define IB_MAD_H |
41 | 41 | ||
42 | #include <linux/pci.h> | ||
43 | |||
44 | #include <rdma/ib_verbs.h> | 42 | #include <rdma/ib_verbs.h> |
45 | 43 | ||
46 | /* Management base version */ | 44 | /* Management base version */ |