diff options
Diffstat (limited to 'include')
304 files changed, 4561 insertions, 3862 deletions
diff --git a/include/asm-alpha/unistd.h b/include/asm-alpha/unistd.h index bc6e6a9259dc..2cabbd465c0c 100644 --- a/include/asm-alpha/unistd.h +++ b/include/asm-alpha/unistd.h | |||
@@ -580,75 +580,6 @@ type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5, type6 arg6)\ | |||
580 | #define __ARCH_WANT_SYS_OLDUMOUNT | 580 | #define __ARCH_WANT_SYS_OLDUMOUNT |
581 | #define __ARCH_WANT_SYS_SIGPENDING | 581 | #define __ARCH_WANT_SYS_SIGPENDING |
582 | 582 | ||
583 | #ifdef __KERNEL_SYSCALLS__ | ||
584 | |||
585 | #include <linux/compiler.h> | ||
586 | #include <linux/types.h> | ||
587 | #include <linux/string.h> | ||
588 | #include <linux/signal.h> | ||
589 | #include <linux/syscalls.h> | ||
590 | #include <asm/ptrace.h> | ||
591 | |||
592 | static inline long open(const char * name, int mode, int flags) | ||
593 | { | ||
594 | return sys_open(name, mode, flags); | ||
595 | } | ||
596 | |||
597 | static inline long dup(int fd) | ||
598 | { | ||
599 | return sys_dup(fd); | ||
600 | } | ||
601 | |||
602 | static inline long close(int fd) | ||
603 | { | ||
604 | return sys_close(fd); | ||
605 | } | ||
606 | |||
607 | static inline off_t lseek(int fd, off_t off, int whence) | ||
608 | { | ||
609 | return sys_lseek(fd, off, whence); | ||
610 | } | ||
611 | |||
612 | static inline void _exit(int value) | ||
613 | { | ||
614 | sys_exit(value); | ||
615 | } | ||
616 | |||
617 | #define exit(x) _exit(x) | ||
618 | |||
619 | static inline long write(int fd, const char * buf, size_t nr) | ||
620 | { | ||
621 | return sys_write(fd, buf, nr); | ||
622 | } | ||
623 | |||
624 | static inline long read(int fd, char * buf, size_t nr) | ||
625 | { | ||
626 | return sys_read(fd, buf, nr); | ||
627 | } | ||
628 | |||
629 | extern int execve(char *, char **, char **); | ||
630 | |||
631 | static inline long setsid(void) | ||
632 | { | ||
633 | return sys_setsid(); | ||
634 | } | ||
635 | |||
636 | static inline pid_t waitpid(int pid, int * wait_stat, int flags) | ||
637 | { | ||
638 | return sys_wait4(pid, wait_stat, flags, NULL); | ||
639 | } | ||
640 | |||
641 | asmlinkage int sys_execve(char *ufilename, char **argv, char **envp, | ||
642 | unsigned long a3, unsigned long a4, unsigned long a5, | ||
643 | struct pt_regs regs); | ||
644 | asmlinkage long sys_rt_sigaction(int sig, | ||
645 | const struct sigaction __user *act, | ||
646 | struct sigaction __user *oact, | ||
647 | size_t sigsetsize, | ||
648 | void *restorer); | ||
649 | |||
650 | #endif /* __KERNEL_SYSCALLS__ */ | ||
651 | |||
652 | /* "Conditional" syscalls. What we want is | 583 | /* "Conditional" syscalls. What we want is |
653 | 584 | ||
654 | __attribute__((weak,alias("sys_ni_syscall"))) | 585 | __attribute__((weak,alias("sys_ni_syscall"))) |
diff --git a/include/asm-arm/arch-clps711x/entry-macro.S b/include/asm-arm/arch-clps711x/entry-macro.S index 21f6ee485819..de4481dd8ba0 100644 --- a/include/asm-arm/arch-clps711x/entry-macro.S +++ b/include/asm-arm/arch-clps711x/entry-macro.S | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-arm/arch-CLPS711x/entry-macro.S | 2 | * include/asm-arm/arch-clps711x/entry-macro.S |
3 | * | 3 | * |
4 | * Low-level IRQ helper macros for CLPS711X-based platforms | 4 | * Low-level IRQ helper macros for CLPS711X-based platforms |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-ebsa285/entry-macro.S b/include/asm-arm/arch-ebsa285/entry-macro.S index cf10ac96fdde..ce812d4f4a33 100644 --- a/include/asm-arm/arch-ebsa285/entry-macro.S +++ b/include/asm-arm/arch-ebsa285/entry-macro.S | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-arm/arch-footbridge/entry-macro.S | 2 | * include/asm-arm/arch-ebsa285/entry-macro.S |
3 | * | 3 | * |
4 | * Low-level IRQ helper macros for footbridge-based platforms | 4 | * Low-level IRQ helper macros for footbridge-based platforms |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-h720x/system.h b/include/asm-arm/arch-h720x/system.h index 09eda84592ff..8dc1460b2305 100644 --- a/include/asm-arm/arch-h720x/system.h +++ b/include/asm-arm/arch-h720x/system.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-h720x/system.h | 2 | * linux/include/asm-arm/arch-h720x/system.h |
3 | * | 3 | * |
4 | * Copyright (C) 2001-2002 Jungjun Kim, Hynix Semiconductor Inc. | 4 | * Copyright (C) 2001-2002 Jungjun Kim, Hynix Semiconductor Inc. |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-ixp4xx/system.h b/include/asm-arm/arch-ixp4xx/system.h index 73589aad8dd6..8e1db423b1cc 100644 --- a/include/asm-arm/arch-ixp4xx/system.h +++ b/include/asm-arm/arch-ixp4xx/system.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-arm/arch-ixp4x//system.h | 2 | * include/asm-arm/arch-ixp4xx/system.h |
3 | * | 3 | * |
4 | * Copyright (C) 2002 Intel Corporation. | 4 | * Copyright (C) 2002 Intel Corporation. |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-omap/dmtimer.h b/include/asm-arm/arch-omap/dmtimer.h index b5f3a71b899d..fefb276ed402 100644 --- a/include/asm-arm/arch-omap/dmtimer.h +++ b/include/asm-arm/arch-omap/dmtimer.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/arm/arch-omap/dmtimer.h | 2 | * linux/include/asm-arm/arch-omap/dmtimer.h |
3 | * | 3 | * |
4 | * OMAP Dual-Mode Timers | 4 | * OMAP Dual-Mode Timers |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-omap/mcbsp.h b/include/asm-arm/arch-omap/mcbsp.h index ed0dde4f7219..c7a0cc1c4e93 100644 --- a/include/asm-arm/arch-omap/mcbsp.h +++ b/include/asm-arm/arch-omap/mcbsp.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/arch-omap/gpio.h | 2 | * linux/include/asm-arm/arch-omap/mcbsp.h |
3 | * | 3 | * |
4 | * Defines for Multi-Channel Buffered Serial Port | 4 | * Defines for Multi-Channel Buffered Serial Port |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-omap/pm.h b/include/asm-arm/arch-omap/pm.h index e46623c61a72..14588059981f 100644 --- a/include/asm-arm/arch-omap/pm.h +++ b/include/asm-arm/arch-omap/pm.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm/arch-omap/pm.h | 2 | * linux/include/asm-arm/arch-omap/pm.h |
3 | * | 3 | * |
4 | * Header file for OMAP Power Management Routines | 4 | * Header file for OMAP Power Management Routines |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-pnx4008/clock.h b/include/asm-arm/arch-pnx4008/clock.h index 91ae0030fdf2..ce155e161269 100644 --- a/include/asm-arm/arch-pnx4008/clock.h +++ b/include/asm-arm/arch-pnx4008/clock.h | |||
@@ -32,6 +32,7 @@ struct clk; | |||
32 | #define KEYCLKCTRL_REG (PWRMAN_VA_BASE + 0xb0) | 32 | #define KEYCLKCTRL_REG (PWRMAN_VA_BASE + 0xb0) |
33 | #define TSCLKCTRL_REG (PWRMAN_VA_BASE + 0xb4) | 33 | #define TSCLKCTRL_REG (PWRMAN_VA_BASE + 0xb4) |
34 | #define PWMCLKCTRL_REG (PWRMAN_VA_BASE + 0xb8) | 34 | #define PWMCLKCTRL_REG (PWRMAN_VA_BASE + 0xb8) |
35 | #define TIMCLKCTRL_REG (PWRMAN_VA_BASE + 0xbc) | ||
35 | #define SPICTRL_REG (PWRMAN_VA_BASE + 0xc4) | 36 | #define SPICTRL_REG (PWRMAN_VA_BASE + 0xc4) |
36 | #define FLASHCLKCTRL_REG (PWRMAN_VA_BASE + 0xc8) | 37 | #define FLASHCLKCTRL_REG (PWRMAN_VA_BASE + 0xc8) |
37 | #define UART3CLK_REG (PWRMAN_VA_BASE + 0xd0) | 38 | #define UART3CLK_REG (PWRMAN_VA_BASE + 0xd0) |
diff --git a/include/asm-arm/arch-pnx4008/platform.h b/include/asm-arm/arch-pnx4008/platform.h index 485a3651b4d7..2613c7c669b1 100644 --- a/include/asm-arm/arch-pnx4008/platform.h +++ b/include/asm-arm/arch-pnx4008/platform.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-arm/arch-pnx4008/platfrom.h | 2 | * include/asm-arm/arch-pnx4008/platform.h |
3 | * | 3 | * |
4 | * PNX4008 Base addresses - header file | 4 | * PNX4008 Base addresses - header file |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-pxa/pxafb.h b/include/asm-arm/arch-pxa/pxafb.h index aba9b30f4249..81c3928d608c 100644 --- a/include/asm-arm/arch-pxa/pxafb.h +++ b/include/asm-arm/arch-pxa/pxafb.h | |||
@@ -12,12 +12,14 @@ | |||
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/fb.h> | ||
16 | |||
15 | /* | 17 | /* |
16 | * This structure describes the machine which we are running on. | 18 | * This structure describes the machine which we are running on. |
17 | * It is set in linux/arch/arm/mach-pxa/machine_name.c and used in the probe routine | 19 | * It is set in linux/arch/arm/mach-pxa/machine_name.c and used in the probe routine |
18 | * of linux/drivers/video/pxafb.c | 20 | * of linux/drivers/video/pxafb.c |
19 | */ | 21 | */ |
20 | struct pxafb_mach_info { | 22 | struct pxafb_mode_info { |
21 | u_long pixclock; | 23 | u_long pixclock; |
22 | 24 | ||
23 | u_short xres; | 25 | u_short xres; |
@@ -34,6 +36,14 @@ struct pxafb_mach_info { | |||
34 | u_char sync; | 36 | u_char sync; |
35 | 37 | ||
36 | u_int cmap_greyscale:1, | 38 | u_int cmap_greyscale:1, |
39 | unused:31; | ||
40 | }; | ||
41 | |||
42 | struct pxafb_mach_info { | ||
43 | struct pxafb_mode_info *modes; | ||
44 | unsigned int num_modes; | ||
45 | |||
46 | u_int fixed_modes:1, | ||
37 | cmap_inverse:1, | 47 | cmap_inverse:1, |
38 | cmap_static:1, | 48 | cmap_static:1, |
39 | unused:29; | 49 | unused:29; |
@@ -62,7 +72,7 @@ struct pxafb_mach_info { | |||
62 | u_int lccr3; | 72 | u_int lccr3; |
63 | 73 | ||
64 | void (*pxafb_backlight_power)(int); | 74 | void (*pxafb_backlight_power)(int); |
65 | void (*pxafb_lcd_power)(int); | 75 | void (*pxafb_lcd_power)(int, struct fb_var_screeninfo *); |
66 | 76 | ||
67 | }; | 77 | }; |
68 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); | 78 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); |
diff --git a/include/asm-arm/arch-pxa/spitz.h b/include/asm-arm/arch-pxa/spitz.h index 62e1fe4d025f..4953dd324d4d 100644 --- a/include/asm-arm/arch-pxa/spitz.h +++ b/include/asm-arm/arch-pxa/spitz.h | |||
@@ -15,6 +15,8 @@ | |||
15 | #define __ASM_ARCH_SPITZ_H 1 | 15 | #define __ASM_ARCH_SPITZ_H 1 |
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | #include <linux/fb.h> | ||
19 | |||
18 | /* Spitz/Akita GPIOs */ | 20 | /* Spitz/Akita GPIOs */ |
19 | 21 | ||
20 | #define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */ | 22 | #define SPITZ_GPIO_KEY_INT (0) /* Key Interrupt */ |
@@ -155,4 +157,4 @@ extern struct platform_device spitzscoop2_device; | |||
155 | extern struct platform_device spitzssp_device; | 157 | extern struct platform_device spitzssp_device; |
156 | extern struct sharpsl_charger_machinfo spitz_pm_machinfo; | 158 | extern struct sharpsl_charger_machinfo spitz_pm_machinfo; |
157 | 159 | ||
158 | extern void spitz_lcd_power(int on); | 160 | extern void spitz_lcd_power(int on, struct fb_var_screeninfo *var); |
diff --git a/include/asm-arm/arch-s3c2410/fb.h b/include/asm-arm/arch-s3c2410/fb.h index 71161797bc89..90894214cace 100644 --- a/include/asm-arm/arch-s3c2410/fb.h +++ b/include/asm-arm/arch-s3c2410/fb.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/fb.h | 1 | /* linux/include/asm-arm/arch-s3c2410/fb.h |
2 | * | 2 | * |
3 | * Copyright (c) 2004 Arnaud Patard <arnaud.patard@rtp-net.org> | 3 | * Copyright (c) 2004 Arnaud Patard <arnaud.patard@rtp-net.org> |
4 | * | 4 | * |
diff --git a/include/asm-arm/arch-s3c2410/regs-adc.h b/include/asm-arm/arch-s3c2410/regs-adc.h index c7b90b3ecc9e..3196a2849e8a 100644 --- a/include/asm-arm/arch-s3c2410/regs-adc.h +++ b/include/asm-arm/arch-s3c2410/regs-adc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-adc.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-adc.h |
2 | * | 2 | * |
3 | * Copyright (c) 2004 Shannon Holland <holland@loser.net> | 3 | * Copyright (c) 2004 Shannon Holland <holland@loser.net> |
4 | * | 4 | * |
diff --git a/include/asm-arm/arch-s3c2410/regs-clock.h b/include/asm-arm/arch-s3c2410/regs-clock.h index b2f4690c0791..e39656b7a086 100644 --- a/include/asm-arm/arch-s3c2410/regs-clock.h +++ b/include/asm-arm/arch-s3c2410/regs-clock.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-clock.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-clock.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003,2004,2005,2006 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003,2004,2005,2006 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://armlinux.simtec.co.uk/ | 4 | * http://armlinux.simtec.co.uk/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-dsc.h b/include/asm-arm/arch-s3c2410/regs-dsc.h index a0a124875164..c0748511edbc 100644 --- a/include/asm-arm/arch-s3c2410/regs-dsc.h +++ b/include/asm-arm/arch-s3c2410/regs-dsc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/hardware/s3c2410/regs-dsc.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-dsc.h |
2 | * | 2 | * |
3 | * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-gpio.h b/include/asm-arm/arch-s3c2410/regs-gpio.h index 93c49432db95..b2893e32a236 100644 --- a/include/asm-arm/arch-s3c2410/regs-gpio.h +++ b/include/asm-arm/arch-s3c2410/regs-gpio.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/hardware/s3c2410/regs-gpio.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-gpio.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003,2004 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003,2004 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-gpioj.h b/include/asm-arm/arch-s3c2410/regs-gpioj.h index 91cefa260497..02131a5a1d3a 100644 --- a/include/asm-arm/arch-s3c2410/regs-gpioj.h +++ b/include/asm-arm/arch-s3c2410/regs-gpioj.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/hardware/s3c2410/regs-gpioj.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-gpioj.h |
2 | * | 2 | * |
3 | * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-iis.h b/include/asm-arm/arch-s3c2410/regs-iis.h index 72cd2509822e..eaf77916a602 100644 --- a/include/asm-arm/arch-s3c2410/regs-iis.h +++ b/include/asm-arm/arch-s3c2410/regs-iis.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-iis.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-iis.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-irq.h b/include/asm-arm/arch-s3c2410/regs-irq.h index 29fb8ef670f0..498184cb8adc 100644 --- a/include/asm-arm/arch-s3c2410/regs-irq.h +++ b/include/asm-arm/arch-s3c2410/regs-irq.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-irq.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-irq.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-lcd.h b/include/asm-arm/arch-s3c2410/regs-lcd.h index 6d7881c8cfc8..b7faeb04c0ff 100644 --- a/include/asm-arm/arch-s3c2410/regs-lcd.h +++ b/include/asm-arm/arch-s3c2410/regs-lcd.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-lcd.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-lcd.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-rtc.h b/include/asm-arm/arch-s3c2410/regs-rtc.h index cd88fd634d12..93b03c49710a 100644 --- a/include/asm-arm/arch-s3c2410/regs-rtc.h +++ b/include/asm-arm/arch-s3c2410/regs-rtc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-rtc.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-rtc.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-sdi.h b/include/asm-arm/arch-s3c2410/regs-sdi.h index 06e716e5b46d..bb9d30b72952 100644 --- a/include/asm-arm/arch-s3c2410/regs-sdi.h +++ b/include/asm-arm/arch-s3c2410/regs-sdi.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-sdi.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-sdi.h |
2 | * | 2 | * |
3 | * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2004 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-timer.h b/include/asm-arm/arch-s3c2410/regs-timer.h index 731918e77831..6f8fe432fe3a 100644 --- a/include/asm-arm/arch-s3c2410/regs-timer.h +++ b/include/asm-arm/arch-s3c2410/regs-timer.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-timer.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-timer.h |
2 | * | 2 | * |
3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> | 3 | * Copyright (c) 2003 Simtec Electronics <linux@simtec.co.uk> |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/asm-arm/arch-s3c2410/regs-udc.h b/include/asm-arm/arch-s3c2410/regs-udc.h index 3aa31a27da1a..487861d5b49a 100644 --- a/include/asm-arm/arch-s3c2410/regs-udc.h +++ b/include/asm-arm/arch-s3c2410/regs-udc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm/arch-s3c2410/regs-udc.h | 1 | /* linux/include/asm-arm/arch-s3c2410/regs-udc.h |
2 | * | 2 | * |
3 | * Copyright (C) 2004 Herbert Poetzl <herbert@13thfloor.at> | 3 | * Copyright (C) 2004 Herbert Poetzl <herbert@13thfloor.at> |
4 | * | 4 | * |
diff --git a/include/asm-arm/arch-s3c2410/spi-gpio.h b/include/asm-arm/arch-s3c2410/spi-gpio.h index 258c00bca270..c1e4db7c9710 100644 --- a/include/asm-arm/arch-s3c2410/spi-gpio.h +++ b/include/asm-arm/arch-s3c2410/spi-gpio.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/spi.h | 1 | /* linux/include/asm-arm/arch-s3c2410/spi-gpio.h |
2 | * | 2 | * |
3 | * Copyright (c) 2006 Simtec Electronics | 3 | * Copyright (c) 2006 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
diff --git a/include/asm-arm/arch-sa1100/neponset.h b/include/asm-arm/arch-sa1100/neponset.h index 8051fd73a80b..09ec9e2bd182 100644 --- a/include/asm-arm/arch-sa1100/neponset.h +++ b/include/asm-arm/arch-sa1100/neponset.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/arch-sa1100/assabet.h | 2 | * linux/include/asm-arm/arch-sa1100/neponset.h |
3 | * | 3 | * |
4 | * Created 2000/06/05 by Nicolas Pitre <nico@cam.org> | 4 | * Created 2000/06/05 by Nicolas Pitre <nico@cam.org> |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-sa1100/uncompress.h b/include/asm-arm/arch-sa1100/uncompress.h index 2601a77a6dda..17e64d232e7d 100644 --- a/include/asm-arm/arch-sa1100/uncompress.h +++ b/include/asm-arm/arch-sa1100/uncompress.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/arch-brutus/uncompress.h | 2 | * linux/include/asm-arm/arch-sa1100/uncompress.h |
3 | * | 3 | * |
4 | * (C) 1999 Nicolas Pitre <nico@cam.org> | 4 | * (C) 1999 Nicolas Pitre <nico@cam.org> |
5 | * | 5 | * |
diff --git a/include/asm-arm/arch-shark/vmalloc.h b/include/asm-arm/arch-shark/vmalloc.h index 10db5d188231..fac37c636b38 100644 --- a/include/asm-arm/arch-shark/vmalloc.h +++ b/include/asm-arm/arch-shark/vmalloc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/arch-rpc/vmalloc.h | 2 | * linux/include/asm-arm/arch-shark/vmalloc.h |
3 | */ | 3 | */ |
4 | #define VMALLOC_END (PAGE_OFFSET + 0x10000000) | 4 | #define VMALLOC_END (PAGE_OFFSET + 0x10000000) |
diff --git a/include/asm-arm/hardware/debug-8250.S b/include/asm-arm/hardware/debug-8250.S index 4594fea91ec1..07c97fb233fc 100644 --- a/include/asm-arm/hardware/debug-8250.S +++ b/include/asm-arm/hardware/debug-8250.S | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/hardware/debug-8250.h | 2 | * linux/include/asm-arm/hardware/debug-8250.S |
3 | * | 3 | * |
4 | * Copyright (C) 1994-1999 Russell King | 4 | * Copyright (C) 1994-1999 Russell King |
5 | * | 5 | * |
diff --git a/include/asm-arm/hardware/debug-pl01x.S b/include/asm-arm/hardware/debug-pl01x.S index db0d0f7de5e9..23c541a9e89a 100644 --- a/include/asm-arm/hardware/debug-pl01x.S +++ b/include/asm-arm/hardware/debug-pl01x.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/asm-arm/arch-integrator/debug-macro.S | 1 | /* linux/include/asm-arm/hardware/debug-pl01x.S |
2 | * | 2 | * |
3 | * Debugging macro include header | 3 | * Debugging macro include header |
4 | * | 4 | * |
diff --git a/include/asm-arm/hardware/entry-macro-iomd.S b/include/asm-arm/hardware/entry-macro-iomd.S index 30c7b92c2416..fbed08f298d0 100644 --- a/include/asm-arm/hardware/entry-macro-iomd.S +++ b/include/asm-arm/hardware/entry-macro-iomd.S | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * arch/arm/commond/entry-macro-iomd.S | 2 | * include/asm-arm/hardware/entry-macro-iomd.S |
3 | * | 3 | * |
4 | * Low-level IRQ helper macros for IOC/IOMD based platforms | 4 | * Low-level IRQ helper macros for IOC/IOMD based platforms |
5 | * | 5 | * |
diff --git a/include/asm-arm/hardware/sa1111.h b/include/asm-arm/hardware/sa1111.h index 319aea064c36..6aa0a5b75b69 100644 --- a/include/asm-arm/hardware/sa1111.h +++ b/include/asm-arm/hardware/sa1111.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/hardware/SA-1111.h | 2 | * linux/include/asm-arm/hardware/sa1111.h |
3 | * | 3 | * |
4 | * Copyright (C) 2000 John G Dorsey <john+@cs.cmu.edu> | 4 | * Copyright (C) 2000 John G Dorsey <john+@cs.cmu.edu> |
5 | * | 5 | * |
diff --git a/include/asm-arm/timeofday.h b/include/asm-arm/timeofday.h deleted file mode 100644 index 27254bd5b94f..000000000000 --- a/include/asm-arm/timeofday.h +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | #ifndef _ASM_ARM_TIMEOFDAY_H | ||
2 | #define _ASM_ARM_TIMEOFDAY_H | ||
3 | #include <asm-generic/timeofday.h> | ||
4 | #endif | ||
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h index 2ab4078334bf..14a87eec5a2d 100644 --- a/include/asm-arm/unistd.h +++ b/include/asm-arm/unistd.h | |||
@@ -549,30 +549,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
549 | #define __ARCH_WANT_SYS_SOCKETCALL | 549 | #define __ARCH_WANT_SYS_SOCKETCALL |
550 | #endif | 550 | #endif |
551 | 551 | ||
552 | #ifdef __KERNEL_SYSCALLS__ | ||
553 | |||
554 | #include <linux/compiler.h> | ||
555 | #include <linux/types.h> | ||
556 | #include <linux/syscalls.h> | ||
557 | |||
558 | extern long execve(const char *file, char **argv, char **envp); | ||
559 | |||
560 | struct pt_regs; | ||
561 | asmlinkage int sys_execve(char *filenamei, char **argv, char **envp, | ||
562 | struct pt_regs *regs); | ||
563 | asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, | ||
564 | struct pt_regs *regs); | ||
565 | asmlinkage int sys_fork(struct pt_regs *regs); | ||
566 | asmlinkage int sys_vfork(struct pt_regs *regs); | ||
567 | asmlinkage int sys_pipe(unsigned long *fildes); | ||
568 | struct sigaction; | ||
569 | asmlinkage long sys_rt_sigaction(int sig, | ||
570 | const struct sigaction __user *act, | ||
571 | struct sigaction __user *oact, | ||
572 | size_t sigsetsize); | ||
573 | |||
574 | #endif /* __KERNEL_SYSCALLS__ */ | ||
575 | |||
576 | /* | 552 | /* |
577 | * "Conditional" syscalls | 553 | * "Conditional" syscalls |
578 | * | 554 | * |
diff --git a/include/asm-arm26/assembler.h b/include/asm-arm26/assembler.h index 83f9aec55e4f..bb507a9a4a55 100644 --- a/include/asm-arm26/assembler.h +++ b/include/asm-arm26/assembler.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/asm/assembler.h | 2 | * linux/include/asm-arm26/assembler.h |
3 | * | 3 | * |
4 | * This file contains arm architecture specific defines | 4 | * This file contains arm architecture specific defines |
5 | * for the different processors. | 5 | * for the different processors. |
diff --git a/include/asm-arm26/namei.h b/include/asm-arm26/namei.h index a402d3b9d0f7..3f5d340110eb 100644 --- a/include/asm-arm26/namei.h +++ b/include/asm-arm26/namei.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/namei.h | 2 | * linux/include/asm-arm26/namei.h |
3 | * | 3 | * |
4 | * Routines to handle famous /usr/gnemul | 4 | * Routines to handle famous /usr/gnemul |
5 | * Derived from the Sparc version of this file | 5 | * Derived from the Sparc version of this file |
diff --git a/include/asm-arm26/semaphore.h b/include/asm-arm26/semaphore.h index ccf15e704109..1fda54375ed8 100644 --- a/include/asm-arm26/semaphore.h +++ b/include/asm-arm26/semaphore.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-arm/semaphore.h | 2 | * linux/include/asm-arm26/semaphore.h |
3 | */ | 3 | */ |
4 | #ifndef __ASM_ARM_SEMAPHORE_H | 4 | #ifndef __ASM_ARM_SEMAPHORE_H |
5 | #define __ASM_ARM_SEMAPHORE_H | 5 | #define __ASM_ARM_SEMAPHORE_H |
diff --git a/include/asm-arm26/unistd.h b/include/asm-arm26/unistd.h index c6d2436c9d34..25a5eead85be 100644 --- a/include/asm-arm26/unistd.h +++ b/include/asm-arm26/unistd.h | |||
@@ -464,30 +464,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
464 | #define __ARCH_WANT_SYS_SIGPROCMASK | 464 | #define __ARCH_WANT_SYS_SIGPROCMASK |
465 | #define __ARCH_WANT_SYS_RT_SIGACTION | 465 | #define __ARCH_WANT_SYS_RT_SIGACTION |
466 | 466 | ||
467 | #ifdef __KERNEL_SYSCALLS__ | ||
468 | |||
469 | #include <linux/compiler.h> | ||
470 | #include <linux/types.h> | ||
471 | #include <linux/syscalls.h> | ||
472 | |||
473 | extern long execve(const char *file, char **argv, char **envp); | ||
474 | |||
475 | struct pt_regs; | ||
476 | asmlinkage int sys_execve(char *filenamei, char **argv, char **envp, | ||
477 | struct pt_regs *regs); | ||
478 | asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, | ||
479 | struct pt_regs *regs); | ||
480 | asmlinkage int sys_fork(struct pt_regs *regs); | ||
481 | asmlinkage int sys_vfork(struct pt_regs *regs); | ||
482 | asmlinkage int sys_pipe(unsigned long *fildes); | ||
483 | struct sigaction; | ||
484 | asmlinkage long sys_rt_sigaction(int sig, | ||
485 | const struct sigaction __user *act, | ||
486 | struct sigaction __user *oact, | ||
487 | size_t sigsetsize); | ||
488 | |||
489 | #endif /* __KERNEL_SYSCALLS__ */ | ||
490 | |||
491 | /* | 467 | /* |
492 | * "Conditional" syscalls | 468 | * "Conditional" syscalls |
493 | * | 469 | * |
diff --git a/include/asm-avr32/unistd.h b/include/asm-avr32/unistd.h index 1f528f92690d..a50e5004550c 100644 --- a/include/asm-avr32/unistd.h +++ b/include/asm-avr32/unistd.h | |||
@@ -281,30 +281,10 @@ | |||
281 | #define __NR_tee 263 | 281 | #define __NR_tee 263 |
282 | #define __NR_vmsplice 264 | 282 | #define __NR_vmsplice 264 |
283 | 283 | ||
284 | #ifdef __KERNEL__ | ||
284 | #define NR_syscalls 265 | 285 | #define NR_syscalls 265 |
285 | 286 | ||
286 | 287 | ||
287 | /* | ||
288 | * AVR32 calling convention for system calls: | ||
289 | * - System call number in r8 | ||
290 | * - Parameters in r12 and downwards to r9 as well as r6 and r5. | ||
291 | * - Return value in r12 | ||
292 | */ | ||
293 | |||
294 | /* | ||
295 | * user-visible error numbers are in the range -1 - -124: see | ||
296 | * <asm-generic/errno.h> | ||
297 | */ | ||
298 | |||
299 | #define __syscall_return(type, res) do { \ | ||
300 | if ((unsigned long)(res) >= (unsigned long)(-125)) { \ | ||
301 | errno = -(res); \ | ||
302 | res = -1; \ | ||
303 | } \ | ||
304 | return (type) (res); \ | ||
305 | } while (0) | ||
306 | |||
307 | #ifdef __KERNEL__ | ||
308 | #define __ARCH_WANT_IPC_PARSE_VERSION | 288 | #define __ARCH_WANT_IPC_PARSE_VERSION |
309 | #define __ARCH_WANT_STAT64 | 289 | #define __ARCH_WANT_STAT64 |
310 | #define __ARCH_WANT_SYS_ALARM | 290 | #define __ARCH_WANT_SYS_ALARM |
@@ -319,62 +299,6 @@ | |||
319 | #define __ARCH_WANT_SYS_GETPGRP | 299 | #define __ARCH_WANT_SYS_GETPGRP |
320 | #define __ARCH_WANT_SYS_RT_SIGACTION | 300 | #define __ARCH_WANT_SYS_RT_SIGACTION |
321 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 301 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
322 | #endif | ||
323 | |||
324 | #if defined(__KERNEL_SYSCALLS__) || defined(__CHECKER__) | ||
325 | |||
326 | #include <linux/types.h> | ||
327 | #include <linux/linkage.h> | ||
328 | #include <asm/signal.h> | ||
329 | |||
330 | struct pt_regs; | ||
331 | |||
332 | /* | ||
333 | * we need this inline - forking from kernel space will result | ||
334 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
335 | * is no problem, but for the stack. This is handled by not letting | ||
336 | * main() use the stack at all after fork(). Thus, no function | ||
337 | * calls - which means inline code for fork too, as otherwise we | ||
338 | * would use the stack upon exit from 'fork()'. | ||
339 | * | ||
340 | * Actually only pause and fork are needed inline, so that there | ||
341 | * won't be any messing with the stack from main(), but we define | ||
342 | * some others too. | ||
343 | */ | ||
344 | static inline int execve(const char *file, char **argv, char **envp) | ||
345 | { | ||
346 | register long scno asm("r8") = __NR_execve; | ||
347 | register long sc1 asm("r12") = (long)file; | ||
348 | register long sc2 asm("r11") = (long)argv; | ||
349 | register long sc3 asm("r10") = (long)envp; | ||
350 | int res; | ||
351 | |||
352 | asm volatile("scall" | ||
353 | : "=r"(sc1) | ||
354 | : "r"(scno), "0"(sc1), "r"(sc2), "r"(sc3) | ||
355 | : "lr", "memory"); | ||
356 | res = sc1; | ||
357 | __syscall_return(int, res); | ||
358 | } | ||
359 | |||
360 | asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize); | ||
361 | asmlinkage int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss, | ||
362 | struct pt_regs *regs); | ||
363 | asmlinkage int sys_rt_sigreturn(struct pt_regs *regs); | ||
364 | asmlinkage int sys_pipe(unsigned long __user *filedes); | ||
365 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
366 | unsigned long prot, unsigned long flags, | ||
367 | unsigned long fd, off_t offset); | ||
368 | asmlinkage int sys_cacheflush(int operation, void __user *addr, size_t len); | ||
369 | asmlinkage int sys_fork(struct pt_regs *regs); | ||
370 | asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, | ||
371 | unsigned long parent_tidptr, | ||
372 | unsigned long child_tidptr, struct pt_regs *regs); | ||
373 | asmlinkage int sys_vfork(struct pt_regs *regs); | ||
374 | asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv, | ||
375 | char __user *__user *uenvp, struct pt_regs *regs); | ||
376 | |||
377 | #endif | ||
378 | 302 | ||
379 | /* | 303 | /* |
380 | * "Conditional" syscalls | 304 | * "Conditional" syscalls |
@@ -384,4 +308,6 @@ asmlinkage int sys_execve(char __user *ufilename, char __user *__user *uargv, | |||
384 | */ | 308 | */ |
385 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall"); | 309 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall"); |
386 | 310 | ||
311 | #endif /* __KERNEL__ */ | ||
312 | |||
387 | #endif /* __ASM_AVR32_UNISTD_H */ | 313 | #endif /* __ASM_AVR32_UNISTD_H */ |
diff --git a/include/asm-cris/unistd.h b/include/asm-cris/unistd.h index 7372efae0516..7c90fa970c38 100644 --- a/include/asm-cris/unistd.h +++ b/include/asm-cris/unistd.h | |||
@@ -322,67 +322,6 @@ | |||
322 | #define __ARCH_WANT_SYS_SIGPROCMASK | 322 | #define __ARCH_WANT_SYS_SIGPROCMASK |
323 | #define __ARCH_WANT_SYS_RT_SIGACTION | 323 | #define __ARCH_WANT_SYS_RT_SIGACTION |
324 | 324 | ||
325 | #ifdef __KERNEL_SYSCALLS__ | ||
326 | |||
327 | #include <linux/compiler.h> | ||
328 | #include <linux/types.h> | ||
329 | #include <linux/linkage.h> | ||
330 | |||
331 | /* | ||
332 | * we need this inline - forking from kernel space will result | ||
333 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
334 | * is no problem, but for the stack. This is handled by not letting | ||
335 | * main() use the stack at all after fork(). Thus, no function | ||
336 | * calls - which means inline code for fork too, as otherwise we | ||
337 | * would use the stack upon exit from 'fork()'. | ||
338 | * | ||
339 | * Actually only pause and fork are needed inline, so that there | ||
340 | * won't be any messing with the stack from main(), but we define | ||
341 | * some others too. | ||
342 | */ | ||
343 | #define __NR__exit __NR_exit | ||
344 | static inline _syscall0(pid_t,setsid) | ||
345 | static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
346 | static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
347 | static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
348 | static inline _syscall1(int,dup,int,fd) | ||
349 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
350 | static inline _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
351 | static inline _syscall1(int,close,int,fd) | ||
352 | |||
353 | struct pt_regs; | ||
354 | asmlinkage long sys_mmap2( | ||
355 | unsigned long addr, unsigned long len, | ||
356 | unsigned long prot, unsigned long flags, | ||
357 | unsigned long fd, unsigned long pgoff); | ||
358 | asmlinkage int sys_execve(const char *fname, char **argv, char **envp, | ||
359 | long r13, long mof, long srp, struct pt_regs *regs); | ||
360 | asmlinkage int sys_clone(unsigned long newusp, unsigned long flags, | ||
361 | int* parent_tid, int* child_tid, long mof, long srp, | ||
362 | struct pt_regs *regs); | ||
363 | asmlinkage int sys_fork(long r10, long r11, long r12, long r13, | ||
364 | long mof, long srp, struct pt_regs *regs); | ||
365 | asmlinkage int sys_vfork(long r10, long r11, long r12, long r13, | ||
366 | long mof, long srp, struct pt_regs *regs); | ||
367 | asmlinkage int sys_pipe(unsigned long __user *fildes); | ||
368 | struct sigaction; | ||
369 | asmlinkage long sys_rt_sigaction(int sig, | ||
370 | const struct sigaction __user *act, | ||
371 | struct sigaction __user *oact, | ||
372 | size_t sigsetsize); | ||
373 | |||
374 | /* | ||
375 | * Since we define it "external", it collides with the built-in | ||
376 | * definition, which has the "noreturn" attribute and will cause | ||
377 | * complaints. We don't want to use -fno-builtin, so just use a | ||
378 | * different name when in the kernel. | ||
379 | */ | ||
380 | #define _exit kernel_syscall_exit | ||
381 | static inline _syscall1(int,_exit,int,exitcode) | ||
382 | static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
383 | #endif /* __KERNEL_SYSCALLS__ */ | ||
384 | |||
385 | |||
386 | /* | 325 | /* |
387 | * "Conditional" syscalls | 326 | * "Conditional" syscalls |
388 | * | 327 | * |
diff --git a/include/asm-frv/namei.h b/include/asm-frv/namei.h index 84ddd6445f23..4ea57171d951 100644 --- a/include/asm-frv/namei.h +++ b/include/asm-frv/namei.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * asm/namei.h | 2 | * include/asm-frv/namei.h |
3 | * | 3 | * |
4 | * Included from linux/fs/namei.c | 4 | * Included from linux/fs/namei.c |
5 | */ | 5 | */ |
diff --git a/include/asm-frv/unistd.h b/include/asm-frv/unistd.h index d104d1b91d39..725e854928cf 100644 --- a/include/asm-frv/unistd.h +++ b/include/asm-frv/unistd.h | |||
@@ -440,31 +440,6 @@ type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg | |||
440 | __syscall_return(type, __sc0); \ | 440 | __syscall_return(type, __sc0); \ |
441 | } | 441 | } |
442 | 442 | ||
443 | |||
444 | #ifdef __KERNEL_SYSCALLS__ | ||
445 | |||
446 | #include <linux/compiler.h> | ||
447 | #include <linux/types.h> | ||
448 | #include <linux/linkage.h> | ||
449 | #include <asm/ptrace.h> | ||
450 | |||
451 | /* | ||
452 | * we need this inline - forking from kernel space will result | ||
453 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
454 | * is no problem, but for the stack. This is handled by not letting | ||
455 | * main() use the stack at all after fork(). Thus, no function | ||
456 | * calls - which means inline code for fork too, as otherwise we | ||
457 | * would use the stack upon exit from 'fork()'. | ||
458 | * | ||
459 | * Actually only pause and fork are needed inline, so that there | ||
460 | * won't be any messing with the stack from main(), but we define | ||
461 | * some others too. | ||
462 | */ | ||
463 | #define __NR__exit __NR_exit | ||
464 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
465 | |||
466 | #endif /* __KERNEL_SYSCALLS__ */ | ||
467 | |||
468 | #define __ARCH_WANT_IPC_PARSE_VERSION | 443 | #define __ARCH_WANT_IPC_PARSE_VERSION |
469 | /* #define __ARCH_WANT_OLD_READDIR */ | 444 | /* #define __ARCH_WANT_OLD_READDIR */ |
470 | #define __ARCH_WANT_OLD_STAT | 445 | #define __ARCH_WANT_OLD_STAT |
diff --git a/include/asm-generic/mutex-dec.h b/include/asm-generic/mutex-dec.h index 29c6ac34e236..0134151656af 100644 --- a/include/asm-generic/mutex-dec.h +++ b/include/asm-generic/mutex-dec.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * asm-generic/mutex-dec.h | 2 | * include/asm-generic/mutex-dec.h |
3 | * | 3 | * |
4 | * Generic implementation of the mutex fastpath, based on atomic | 4 | * Generic implementation of the mutex fastpath, based on atomic |
5 | * decrement/increment. | 5 | * decrement/increment. |
diff --git a/include/asm-generic/mutex-null.h b/include/asm-generic/mutex-null.h index 254a126ede5c..e1bbbc72b6a2 100644 --- a/include/asm-generic/mutex-null.h +++ b/include/asm-generic/mutex-null.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * asm-generic/mutex-null.h | 2 | * include/asm-generic/mutex-null.h |
3 | * | 3 | * |
4 | * Generic implementation of the mutex fastpath, based on NOP :-) | 4 | * Generic implementation of the mutex fastpath, based on NOP :-) |
5 | * | 5 | * |
diff --git a/include/asm-generic/mutex-xchg.h b/include/asm-generic/mutex-xchg.h index 32a2100c1aeb..6a7e8c141b53 100644 --- a/include/asm-generic/mutex-xchg.h +++ b/include/asm-generic/mutex-xchg.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * asm-generic/mutex-xchg.h | 2 | * include/asm-generic/mutex-xchg.h |
3 | * | 3 | * |
4 | * Generic implementation of the mutex fastpath, based on xchg(). | 4 | * Generic implementation of the mutex fastpath, based on xchg(). |
5 | * | 5 | * |
diff --git a/include/asm-generic/rtc.h b/include/asm-generic/rtc.h index 4087037a4225..d3238f1f70a6 100644 --- a/include/asm-generic/rtc.h +++ b/include/asm-generic/rtc.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * inclue/asm-generic/rtc.h | 2 | * include/asm-generic/rtc.h |
3 | * | 3 | * |
4 | * Author: Tom Rini <trini@mvista.com> | 4 | * Author: Tom Rini <trini@mvista.com> |
5 | * | 5 | * |
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h index 867d9008fafa..f490e43a90b9 100644 --- a/include/asm-generic/tlb.h +++ b/include/asm-generic/tlb.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* asm-generic/tlb.h | 1 | /* include/asm-generic/tlb.h |
2 | * | 2 | * |
3 | * Generic TLB shootdown code | 3 | * Generic TLB shootdown code |
4 | * | 4 | * |
diff --git a/include/asm-h8300/unistd.h b/include/asm-h8300/unistd.h index a2dd90462d80..747788d629ae 100644 --- a/include/asm-h8300/unistd.h +++ b/include/asm-h8300/unistd.h | |||
@@ -485,57 +485,6 @@ type name(atype a, btype b, ctype c, dtype d, etype e, ftype f) \ | |||
485 | #define __ARCH_WANT_SYS_SIGPROCMASK | 485 | #define __ARCH_WANT_SYS_SIGPROCMASK |
486 | #define __ARCH_WANT_SYS_RT_SIGACTION | 486 | #define __ARCH_WANT_SYS_RT_SIGACTION |
487 | 487 | ||
488 | #ifdef __KERNEL_SYSCALLS__ | ||
489 | |||
490 | #include <linux/compiler.h> | ||
491 | #include <linux/types.h> | ||
492 | |||
493 | /* | ||
494 | * we need this inline - forking from kernel space will result | ||
495 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
496 | * is no problem, but for the stack. This is handled by not letting | ||
497 | * main() use the stack at all after fork(). Thus, no function | ||
498 | * calls - which means inline code for fork too, as otherwise we | ||
499 | * would use the stack upon exit from 'fork()'. | ||
500 | * | ||
501 | * Actually only pause and fork are needed inline, so that there | ||
502 | * won't be any messing with the stack from main(), but we define | ||
503 | * some others too. | ||
504 | */ | ||
505 | #define __NR__exit __NR_exit | ||
506 | static inline _syscall0(int,pause) | ||
507 | static inline _syscall0(int,sync) | ||
508 | static inline _syscall0(pid_t,setsid) | ||
509 | static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
510 | static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
511 | static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
512 | static inline _syscall1(int,dup,int,fd) | ||
513 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
514 | static inline _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
515 | static inline _syscall1(int,close,int,fd) | ||
516 | static inline _syscall1(int,_exit,int,exitcode) | ||
517 | static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
518 | static inline _syscall1(int,delete_module,const char *,name) | ||
519 | |||
520 | static inline pid_t wait(int * wait_stat) | ||
521 | { | ||
522 | return waitpid(-1,wait_stat,0); | ||
523 | } | ||
524 | |||
525 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
526 | unsigned long prot, unsigned long flags, | ||
527 | unsigned long fd, unsigned long pgoff); | ||
528 | asmlinkage int sys_execve(char *name, char **argv, char **envp, | ||
529 | int dummy, ...); | ||
530 | asmlinkage int sys_pipe(unsigned long *fildes); | ||
531 | struct sigaction; | ||
532 | asmlinkage long sys_rt_sigaction(int sig, | ||
533 | const struct sigaction __user *act, | ||
534 | struct sigaction __user *oact, | ||
535 | size_t sigsetsize); | ||
536 | |||
537 | #endif /* __KERNEL_SYSCALLS__ */ | ||
538 | |||
539 | /* | 488 | /* |
540 | * "Conditional" syscalls | 489 | * "Conditional" syscalls |
541 | */ | 490 | */ |
diff --git a/include/asm-i386/bugs.h b/include/asm-i386/bugs.h index 2a9e4ee5904d..592ffeeda45e 100644 --- a/include/asm-i386/bugs.h +++ b/include/asm-i386/bugs.h | |||
@@ -189,6 +189,6 @@ static void __init check_bugs(void) | |||
189 | check_fpu(); | 189 | check_fpu(); |
190 | check_hlt(); | 190 | check_hlt(); |
191 | check_popad(); | 191 | check_popad(); |
192 | system_utsname.machine[1] = '0' + (boot_cpu_data.x86 > 6 ? 6 : boot_cpu_data.x86); | 192 | init_utsname()->machine[1] = '0' + (boot_cpu_data.x86 > 6 ? 6 : boot_cpu_data.x86); |
193 | alternative_instructions(); | 193 | alternative_instructions(); |
194 | } | 194 | } |
diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h index db4344d9f73f..3a05436f31c0 100644 --- a/include/asm-i386/elf.h +++ b/include/asm-i386/elf.h | |||
@@ -112,7 +112,7 @@ typedef struct user_fxsr_struct elf_fpxregset_t; | |||
112 | For the moment, we have only optimizations for the Intel generations, | 112 | For the moment, we have only optimizations for the Intel generations, |
113 | but that could change... */ | 113 | but that could change... */ |
114 | 114 | ||
115 | #define ELF_PLATFORM (system_utsname.machine) | 115 | #define ELF_PLATFORM (utsname()->machine) |
116 | 116 | ||
117 | #define SET_PERSONALITY(ex, ibcs2) do { } while (0) | 117 | #define SET_PERSONALITY(ex, ibcs2) do { } while (0) |
118 | 118 | ||
diff --git a/include/asm-i386/hw_irq.h b/include/asm-i386/hw_irq.h index 87e5a351d881..88f02a073561 100644 --- a/include/asm-i386/hw_irq.h +++ b/include/asm-i386/hw_irq.h | |||
@@ -17,8 +17,6 @@ | |||
17 | #include <asm/irq.h> | 17 | #include <asm/irq.h> |
18 | #include <asm/sections.h> | 18 | #include <asm/sections.h> |
19 | 19 | ||
20 | struct hw_interrupt_type; | ||
21 | |||
22 | #define NMI_VECTOR 0x02 | 20 | #define NMI_VECTOR 0x02 |
23 | 21 | ||
24 | /* | 22 | /* |
@@ -30,7 +28,6 @@ struct hw_interrupt_type; | |||
30 | 28 | ||
31 | extern u8 irq_vector[NR_IRQ_VECTORS]; | 29 | extern u8 irq_vector[NR_IRQ_VECTORS]; |
32 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) | 30 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) |
33 | #define AUTO_ASSIGN -1 | ||
34 | 31 | ||
35 | extern void (*interrupt[NR_IRQS])(void); | 32 | extern void (*interrupt[NR_IRQS])(void); |
36 | 33 | ||
diff --git a/include/asm-i386/hypertransport.h b/include/asm-i386/hypertransport.h new file mode 100644 index 000000000000..c16c6ff4bdd7 --- /dev/null +++ b/include/asm-i386/hypertransport.h | |||
@@ -0,0 +1,42 @@ | |||
1 | #ifndef ASM_HYPERTRANSPORT_H | ||
2 | #define ASM_HYPERTRANSPORT_H | ||
3 | |||
4 | /* | ||
5 | * Constants for x86 Hypertransport Interrupts. | ||
6 | */ | ||
7 | |||
8 | #define HT_IRQ_LOW_BASE 0xf8000000 | ||
9 | |||
10 | #define HT_IRQ_LOW_VECTOR_SHIFT 16 | ||
11 | #define HT_IRQ_LOW_VECTOR_MASK 0x00ff0000 | ||
12 | #define HT_IRQ_LOW_VECTOR(v) (((v) << HT_IRQ_LOW_VECTOR_SHIFT) & HT_IRQ_LOW_VECTOR_MASK) | ||
13 | |||
14 | #define HT_IRQ_LOW_DEST_ID_SHIFT 8 | ||
15 | #define HT_IRQ_LOW_DEST_ID_MASK 0x0000ff00 | ||
16 | #define HT_IRQ_LOW_DEST_ID(v) (((v) << HT_IRQ_LOW_DEST_ID_SHIFT) & HT_IRQ_LOW_DEST_ID_MASK) | ||
17 | |||
18 | #define HT_IRQ_LOW_DM_PHYSICAL 0x0000000 | ||
19 | #define HT_IRQ_LOW_DM_LOGICAL 0x0000040 | ||
20 | |||
21 | #define HT_IRQ_LOW_RQEOI_EDGE 0x0000000 | ||
22 | #define HT_IRQ_LOW_RQEOI_LEVEL 0x0000020 | ||
23 | |||
24 | |||
25 | #define HT_IRQ_LOW_MT_FIXED 0x0000000 | ||
26 | #define HT_IRQ_LOW_MT_ARBITRATED 0x0000004 | ||
27 | #define HT_IRQ_LOW_MT_SMI 0x0000008 | ||
28 | #define HT_IRQ_LOW_MT_NMI 0x000000c | ||
29 | #define HT_IRQ_LOW_MT_INIT 0x0000010 | ||
30 | #define HT_IRQ_LOW_MT_STARTUP 0x0000014 | ||
31 | #define HT_IRQ_LOW_MT_EXTINT 0x0000018 | ||
32 | #define HT_IRQ_LOW_MT_LINT1 0x000008c | ||
33 | #define HT_IRQ_LOW_MT_LINT0 0x0000098 | ||
34 | |||
35 | #define HT_IRQ_LOW_IRQ_MASKED 0x0000001 | ||
36 | |||
37 | |||
38 | #define HT_IRQ_HIGH_DEST_ID_SHIFT 0 | ||
39 | #define HT_IRQ_HIGH_DEST_ID_MASK 0x00ffffff | ||
40 | #define HT_IRQ_HIGH_DEST_ID(v) ((((v) >> 8) << HT_IRQ_HIGH_DEST_ID_SHIFT) & HT_IRQ_HIGH_DEST_ID_MASK) | ||
41 | |||
42 | #endif /* ASM_HYPERTRANSPORT_H */ | ||
diff --git a/include/asm-i386/io_apic.h b/include/asm-i386/io_apic.h index 5d309275a1dc..276ea7e8144a 100644 --- a/include/asm-i386/io_apic.h +++ b/include/asm-i386/io_apic.h | |||
@@ -12,46 +12,6 @@ | |||
12 | 12 | ||
13 | #ifdef CONFIG_X86_IO_APIC | 13 | #ifdef CONFIG_X86_IO_APIC |
14 | 14 | ||
15 | #ifdef CONFIG_PCI_MSI | ||
16 | static inline int use_pci_vector(void) {return 1;} | ||
17 | static inline void disable_edge_ioapic_vector(unsigned int vector) { } | ||
18 | static inline void mask_and_ack_level_ioapic_vector(unsigned int vector) { } | ||
19 | static inline void end_edge_ioapic_vector (unsigned int vector) { } | ||
20 | #define startup_level_ioapic startup_level_ioapic_vector | ||
21 | #define shutdown_level_ioapic mask_IO_APIC_vector | ||
22 | #define enable_level_ioapic unmask_IO_APIC_vector | ||
23 | #define disable_level_ioapic mask_IO_APIC_vector | ||
24 | #define mask_and_ack_level_ioapic mask_and_ack_level_ioapic_vector | ||
25 | #define end_level_ioapic end_level_ioapic_vector | ||
26 | #define set_ioapic_affinity set_ioapic_affinity_vector | ||
27 | |||
28 | #define startup_edge_ioapic startup_edge_ioapic_vector | ||
29 | #define shutdown_edge_ioapic disable_edge_ioapic_vector | ||
30 | #define enable_edge_ioapic unmask_IO_APIC_vector | ||
31 | #define disable_edge_ioapic disable_edge_ioapic_vector | ||
32 | #define ack_edge_ioapic ack_edge_ioapic_vector | ||
33 | #define end_edge_ioapic end_edge_ioapic_vector | ||
34 | #else | ||
35 | static inline int use_pci_vector(void) {return 0;} | ||
36 | static inline void disable_edge_ioapic_irq(unsigned int irq) { } | ||
37 | static inline void mask_and_ack_level_ioapic_irq(unsigned int irq) { } | ||
38 | static inline void end_edge_ioapic_irq (unsigned int irq) { } | ||
39 | #define startup_level_ioapic startup_level_ioapic_irq | ||
40 | #define shutdown_level_ioapic mask_IO_APIC_irq | ||
41 | #define enable_level_ioapic unmask_IO_APIC_irq | ||
42 | #define disable_level_ioapic mask_IO_APIC_irq | ||
43 | #define mask_and_ack_level_ioapic mask_and_ack_level_ioapic_irq | ||
44 | #define end_level_ioapic end_level_ioapic_irq | ||
45 | #define set_ioapic_affinity set_ioapic_affinity_irq | ||
46 | |||
47 | #define startup_edge_ioapic startup_edge_ioapic_irq | ||
48 | #define shutdown_edge_ioapic disable_edge_ioapic_irq | ||
49 | #define enable_edge_ioapic unmask_IO_APIC_irq | ||
50 | #define disable_edge_ioapic disable_edge_ioapic_irq | ||
51 | #define ack_edge_ioapic ack_edge_ioapic_irq | ||
52 | #define end_edge_ioapic end_edge_ioapic_irq | ||
53 | #endif | ||
54 | |||
55 | #define IO_APIC_BASE(idx) \ | 15 | #define IO_APIC_BASE(idx) \ |
56 | ((volatile int *)(__fix_to_virt(FIX_IO_APIC_BASE_0 + idx) \ | 16 | ((volatile int *)(__fix_to_virt(FIX_IO_APIC_BASE_0 + idx) \ |
57 | + (mp_ioapics[idx].mpc_apicaddr & ~PAGE_MASK))) | 17 | + (mp_ioapics[idx].mpc_apicaddr & ~PAGE_MASK))) |
@@ -219,6 +179,4 @@ extern int (*ioapic_renumber_irq)(int ioapic, int irq); | |||
219 | static inline void disable_ioapic_setup(void) { } | 179 | static inline void disable_ioapic_setup(void) { } |
220 | #endif | 180 | #endif |
221 | 181 | ||
222 | extern int assign_irq_vector(int irq); | ||
223 | |||
224 | #endif | 182 | #endif |
diff --git a/include/asm-i386/mach-default/irq_vectors_limits.h b/include/asm-i386/mach-default/irq_vectors_limits.h index b330026e6f7f..7f161e760be6 100644 --- a/include/asm-i386/mach-default/irq_vectors_limits.h +++ b/include/asm-i386/mach-default/irq_vectors_limits.h | |||
@@ -1,10 +1,6 @@ | |||
1 | #ifndef _ASM_IRQ_VECTORS_LIMITS_H | 1 | #ifndef _ASM_IRQ_VECTORS_LIMITS_H |
2 | #define _ASM_IRQ_VECTORS_LIMITS_H | 2 | #define _ASM_IRQ_VECTORS_LIMITS_H |
3 | 3 | ||
4 | #ifdef CONFIG_PCI_MSI | ||
5 | #define NR_IRQS FIRST_SYSTEM_VECTOR | ||
6 | #define NR_IRQ_VECTORS NR_IRQS | ||
7 | #else | ||
8 | #ifdef CONFIG_X86_IO_APIC | 4 | #ifdef CONFIG_X86_IO_APIC |
9 | #define NR_IRQS 224 | 5 | #define NR_IRQS 224 |
10 | # if (224 >= 32 * NR_CPUS) | 6 | # if (224 >= 32 * NR_CPUS) |
@@ -16,6 +12,5 @@ | |||
16 | #define NR_IRQS 16 | 12 | #define NR_IRQS 16 |
17 | #define NR_IRQ_VECTORS NR_IRQS | 13 | #define NR_IRQ_VECTORS NR_IRQS |
18 | #endif | 14 | #endif |
19 | #endif | ||
20 | 15 | ||
21 | #endif /* _ASM_IRQ_VECTORS_LIMITS_H */ | 16 | #endif /* _ASM_IRQ_VECTORS_LIMITS_H */ |
diff --git a/include/asm-i386/mach-summit/mach_apic.h b/include/asm-i386/mach-summit/mach_apic.h index 254a0fe01c6a..ef0671e5d5c5 100644 --- a/include/asm-i386/mach-summit/mach_apic.h +++ b/include/asm-i386/mach-summit/mach_apic.h | |||
@@ -88,7 +88,7 @@ static inline void clustered_apic_check(void) | |||
88 | 88 | ||
89 | static inline int apicid_to_node(int logical_apicid) | 89 | static inline int apicid_to_node(int logical_apicid) |
90 | { | 90 | { |
91 | return apicid_2_node[logical_apicid]; | 91 | return apicid_2_node[hard_smp_processor_id()]; |
92 | } | 92 | } |
93 | 93 | ||
94 | /* Mapping from cpu number to logical apicid */ | 94 | /* Mapping from cpu number to logical apicid */ |
diff --git a/include/asm-i386/mca_dma.h b/include/asm-i386/mca_dma.h index 4b3b526c5a3f..fbb1f3b71279 100644 --- a/include/asm-i386/mca_dma.h +++ b/include/asm-i386/mca_dma.h | |||
@@ -181,7 +181,7 @@ static __inline__ void mca_set_dma_io(unsigned int dmanr, unsigned int io_addr) | |||
181 | * @mode: mode to set | 181 | * @mode: mode to set |
182 | * | 182 | * |
183 | * The DMA controller supports several modes. The mode values you can | 183 | * The DMA controller supports several modes. The mode values you can |
184 | * set are : | 184 | * set are- |
185 | * | 185 | * |
186 | * %MCA_DMA_MODE_READ when reading from the DMA device. | 186 | * %MCA_DMA_MODE_READ when reading from the DMA device. |
187 | * | 187 | * |
@@ -190,7 +190,6 @@ static __inline__ void mca_set_dma_io(unsigned int dmanr, unsigned int io_addr) | |||
190 | * %MCA_DMA_MODE_IO to do DMA to or from an I/O port. | 190 | * %MCA_DMA_MODE_IO to do DMA to or from an I/O port. |
191 | * | 191 | * |
192 | * %MCA_DMA_MODE_16 to do 16bit transfers. | 192 | * %MCA_DMA_MODE_16 to do 16bit transfers. |
193 | * | ||
194 | */ | 193 | */ |
195 | 194 | ||
196 | static __inline__ void mca_set_dma_mode(unsigned int dmanr, unsigned int mode) | 195 | static __inline__ void mca_set_dma_mode(unsigned int dmanr, unsigned int mode) |
diff --git a/include/asm-i386/msi.h b/include/asm-i386/msi.h deleted file mode 100644 index b11c4b7dfaef..000000000000 --- a/include/asm-i386/msi.h +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2003-2004 Intel | ||
3 | * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) | ||
4 | */ | ||
5 | |||
6 | #ifndef ASM_MSI_H | ||
7 | #define ASM_MSI_H | ||
8 | |||
9 | #include <asm/desc.h> | ||
10 | #include <mach_apic.h> | ||
11 | |||
12 | #define LAST_DEVICE_VECTOR (FIRST_SYSTEM_VECTOR - 1) | ||
13 | #define MSI_TARGET_CPU_SHIFT 12 | ||
14 | |||
15 | extern struct msi_ops msi_apic_ops; | ||
16 | |||
17 | static inline int msi_arch_init(void) | ||
18 | { | ||
19 | msi_register(&msi_apic_ops); | ||
20 | return 0; | ||
21 | } | ||
22 | |||
23 | #endif /* ASM_MSI_H */ | ||
diff --git a/include/asm-i386/msidef.h b/include/asm-i386/msidef.h new file mode 100644 index 000000000000..5b8acddb70fb --- /dev/null +++ b/include/asm-i386/msidef.h | |||
@@ -0,0 +1,47 @@ | |||
1 | #ifndef ASM_MSIDEF_H | ||
2 | #define ASM_MSIDEF_H | ||
3 | |||
4 | /* | ||
5 | * Constants for Intel APIC based MSI messages. | ||
6 | */ | ||
7 | |||
8 | /* | ||
9 | * Shifts for MSI data | ||
10 | */ | ||
11 | |||
12 | #define MSI_DATA_VECTOR_SHIFT 0 | ||
13 | #define MSI_DATA_VECTOR_MASK 0x000000ff | ||
14 | #define MSI_DATA_VECTOR(v) (((v) << MSI_DATA_VECTOR_SHIFT) & MSI_DATA_VECTOR_MASK) | ||
15 | |||
16 | #define MSI_DATA_DELIVERY_MODE_SHIFT 8 | ||
17 | #define MSI_DATA_DELIVERY_FIXED (0 << MSI_DATA_DELIVERY_MODE_SHIFT) | ||
18 | #define MSI_DATA_DELIVERY_LOWPRI (1 << MSI_DATA_DELIVERY_MODE_SHIFT) | ||
19 | |||
20 | #define MSI_DATA_LEVEL_SHIFT 14 | ||
21 | #define MSI_DATA_LEVEL_DEASSERT (0 << MSI_DATA_LEVEL_SHIFT) | ||
22 | #define MSI_DATA_LEVEL_ASSERT (1 << MSI_DATA_LEVEL_SHIFT) | ||
23 | |||
24 | #define MSI_DATA_TRIGGER_SHIFT 15 | ||
25 | #define MSI_DATA_TRIGGER_EDGE (0 << MSI_DATA_TRIGGER_SHIFT) | ||
26 | #define MSI_DATA_TRIGGER_LEVEL (1 << MSI_DATA_TRIGGER_SHIFT) | ||
27 | |||
28 | /* | ||
29 | * Shift/mask fields for msi address | ||
30 | */ | ||
31 | |||
32 | #define MSI_ADDR_BASE_HI 0 | ||
33 | #define MSI_ADDR_BASE_LO 0xfee00000 | ||
34 | |||
35 | #define MSI_ADDR_DEST_MODE_SHIFT 2 | ||
36 | #define MSI_ADDR_DEST_MODE_PHYSICAL (0 << MSI_ADDR_DEST_MODE_SHIFT) | ||
37 | #define MSI_ADDR_DEST_MODE_LOGICAL (1 << MSI_ADDR_DEST_MODE_SHIFT) | ||
38 | |||
39 | #define MSI_ADDR_REDIRECTION_SHIFT 3 | ||
40 | #define MSI_ADDR_REDIRECTION_CPU (0 << MSI_ADDR_REDIRECTION_SHIFT) /* dedicated cpu */ | ||
41 | #define MSI_ADDR_REDIRECTION_LOWPRI (1 << MSI_ADDR_REDIRECTION_SHIFT) /* lowest priority */ | ||
42 | |||
43 | #define MSI_ADDR_DEST_ID_SHIFT 12 | ||
44 | #define MSI_ADDR_DEST_ID_MASK 0x00ffff0 | ||
45 | #define MSI_ADDR_DEST_ID(dest) (((dest) << MSI_ADDR_DEST_ID_SHIFT) & MSI_ADDR_DEST_ID_MASK) | ||
46 | |||
47 | #endif /* ASM_MSIDEF_H */ | ||
diff --git a/include/asm-i386/ptrace.h b/include/asm-i386/ptrace.h index a4a0e5207db5..d505f501077a 100644 --- a/include/asm-i386/ptrace.h +++ b/include/asm-i386/ptrace.h | |||
@@ -47,7 +47,10 @@ static inline int user_mode_vm(struct pt_regs *regs) | |||
47 | { | 47 | { |
48 | return ((regs->xcs & SEGMENT_RPL_MASK) | (regs->eflags & VM_MASK)) >= USER_RPL; | 48 | return ((regs->xcs & SEGMENT_RPL_MASK) | (regs->eflags & VM_MASK)) >= USER_RPL; |
49 | } | 49 | } |
50 | |||
50 | #define instruction_pointer(regs) ((regs)->eip) | 51 | #define instruction_pointer(regs) ((regs)->eip) |
52 | #define regs_return_value(regs) ((regs)->eax) | ||
53 | |||
51 | extern unsigned long profile_pc(struct pt_regs *regs); | 54 | extern unsigned long profile_pc(struct pt_regs *regs); |
52 | #endif /* __KERNEL__ */ | 55 | #endif /* __KERNEL__ */ |
53 | 56 | ||
diff --git a/include/asm-i386/topology.h b/include/asm-i386/topology.h index 6adbd9b1ae88..978d09596130 100644 --- a/include/asm-i386/topology.h +++ b/include/asm-i386/topology.h | |||
@@ -74,6 +74,7 @@ static inline int node_to_first_cpu(int node) | |||
74 | #define SD_NODE_INIT (struct sched_domain) { \ | 74 | #define SD_NODE_INIT (struct sched_domain) { \ |
75 | .span = CPU_MASK_NONE, \ | 75 | .span = CPU_MASK_NONE, \ |
76 | .parent = NULL, \ | 76 | .parent = NULL, \ |
77 | .child = NULL, \ | ||
77 | .groups = NULL, \ | 78 | .groups = NULL, \ |
78 | .min_interval = 8, \ | 79 | .min_interval = 8, \ |
79 | .max_interval = 32, \ | 80 | .max_interval = 32, \ |
diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index bd9987087adc..3ca7ab963d7d 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h | |||
@@ -451,45 +451,6 @@ __syscall_return(type,__res); \ | |||
451 | #define __ARCH_WANT_SYS_RT_SIGACTION | 451 | #define __ARCH_WANT_SYS_RT_SIGACTION |
452 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 452 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
453 | 453 | ||
454 | #ifdef __KERNEL_SYSCALLS__ | ||
455 | |||
456 | #include <linux/compiler.h> | ||
457 | #include <linux/types.h> | ||
458 | #include <linux/linkage.h> | ||
459 | #include <asm/ptrace.h> | ||
460 | |||
461 | /* | ||
462 | * we need this inline - forking from kernel space will result | ||
463 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
464 | * is no problem, but for the stack. This is handled by not letting | ||
465 | * main() use the stack at all after fork(). Thus, no function | ||
466 | * calls - which means inline code for fork too, as otherwise we | ||
467 | * would use the stack upon exit from 'fork()'. | ||
468 | * | ||
469 | * Actually only pause and fork are needed inline, so that there | ||
470 | * won't be any messing with the stack from main(), but we define | ||
471 | * some others too. | ||
472 | */ | ||
473 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
474 | |||
475 | asmlinkage int sys_modify_ldt(int func, void __user *ptr, unsigned long bytecount); | ||
476 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
477 | unsigned long prot, unsigned long flags, | ||
478 | unsigned long fd, unsigned long pgoff); | ||
479 | asmlinkage int sys_execve(struct pt_regs regs); | ||
480 | asmlinkage int sys_clone(struct pt_regs regs); | ||
481 | asmlinkage int sys_fork(struct pt_regs regs); | ||
482 | asmlinkage int sys_vfork(struct pt_regs regs); | ||
483 | asmlinkage int sys_pipe(unsigned long __user *fildes); | ||
484 | asmlinkage long sys_iopl(unsigned long unused); | ||
485 | struct sigaction; | ||
486 | asmlinkage long sys_rt_sigaction(int sig, | ||
487 | const struct sigaction __user *act, | ||
488 | struct sigaction __user *oact, | ||
489 | size_t sigsetsize); | ||
490 | |||
491 | #endif /* __KERNEL_SYSCALLS__ */ | ||
492 | |||
493 | /* | 454 | /* |
494 | * "Conditional" syscalls | 455 | * "Conditional" syscalls |
495 | * | 456 | * |
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h index 15b545a897a4..90cba967df35 100644 --- a/include/asm-ia64/machvec.h +++ b/include/asm-ia64/machvec.h | |||
@@ -20,6 +20,7 @@ struct page; | |||
20 | struct mm_struct; | 20 | struct mm_struct; |
21 | struct pci_bus; | 21 | struct pci_bus; |
22 | struct task_struct; | 22 | struct task_struct; |
23 | struct pci_dev; | ||
23 | 24 | ||
24 | typedef void ia64_mv_setup_t (char **); | 25 | typedef void ia64_mv_setup_t (char **); |
25 | typedef void ia64_mv_cpu_init_t (void); | 26 | typedef void ia64_mv_cpu_init_t (void); |
@@ -75,7 +76,9 @@ typedef unsigned char ia64_mv_readb_relaxed_t (const volatile void __iomem *); | |||
75 | typedef unsigned short ia64_mv_readw_relaxed_t (const volatile void __iomem *); | 76 | typedef unsigned short ia64_mv_readw_relaxed_t (const volatile void __iomem *); |
76 | typedef unsigned int ia64_mv_readl_relaxed_t (const volatile void __iomem *); | 77 | typedef unsigned int ia64_mv_readl_relaxed_t (const volatile void __iomem *); |
77 | typedef unsigned long ia64_mv_readq_relaxed_t (const volatile void __iomem *); | 78 | typedef unsigned long ia64_mv_readq_relaxed_t (const volatile void __iomem *); |
78 | typedef int ia64_mv_msi_init_t (void); | 79 | |
80 | typedef int ia64_mv_setup_msi_irq_t (unsigned int irq, struct pci_dev *pdev); | ||
81 | typedef void ia64_mv_teardown_msi_irq_t (unsigned int irq); | ||
79 | 82 | ||
80 | static inline void | 83 | static inline void |
81 | machvec_noop (void) | 84 | machvec_noop (void) |
@@ -154,7 +157,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
154 | # define platform_readl_relaxed ia64_mv.readl_relaxed | 157 | # define platform_readl_relaxed ia64_mv.readl_relaxed |
155 | # define platform_readq_relaxed ia64_mv.readq_relaxed | 158 | # define platform_readq_relaxed ia64_mv.readq_relaxed |
156 | # define platform_migrate ia64_mv.migrate | 159 | # define platform_migrate ia64_mv.migrate |
157 | # define platform_msi_init ia64_mv.msi_init | 160 | # define platform_setup_msi_irq ia64_mv.setup_msi_irq |
161 | # define platform_teardown_msi_irq ia64_mv.teardown_msi_irq | ||
158 | # endif | 162 | # endif |
159 | 163 | ||
160 | /* __attribute__((__aligned__(16))) is required to make size of the | 164 | /* __attribute__((__aligned__(16))) is required to make size of the |
@@ -204,7 +208,8 @@ struct ia64_machine_vector { | |||
204 | ia64_mv_readl_relaxed_t *readl_relaxed; | 208 | ia64_mv_readl_relaxed_t *readl_relaxed; |
205 | ia64_mv_readq_relaxed_t *readq_relaxed; | 209 | ia64_mv_readq_relaxed_t *readq_relaxed; |
206 | ia64_mv_migrate_t *migrate; | 210 | ia64_mv_migrate_t *migrate; |
207 | ia64_mv_msi_init_t *msi_init; | 211 | ia64_mv_setup_msi_irq_t *setup_msi_irq; |
212 | ia64_mv_teardown_msi_irq_t *teardown_msi_irq; | ||
208 | } __attribute__((__aligned__(16))); /* align attrib? see above comment */ | 213 | } __attribute__((__aligned__(16))); /* align attrib? see above comment */ |
209 | 214 | ||
210 | #define MACHVEC_INIT(name) \ | 215 | #define MACHVEC_INIT(name) \ |
@@ -250,7 +255,8 @@ struct ia64_machine_vector { | |||
250 | platform_readl_relaxed, \ | 255 | platform_readl_relaxed, \ |
251 | platform_readq_relaxed, \ | 256 | platform_readq_relaxed, \ |
252 | platform_migrate, \ | 257 | platform_migrate, \ |
253 | platform_msi_init, \ | 258 | platform_setup_msi_irq, \ |
259 | platform_teardown_msi_irq, \ | ||
254 | } | 260 | } |
255 | 261 | ||
256 | extern struct ia64_machine_vector ia64_mv; | 262 | extern struct ia64_machine_vector ia64_mv; |
@@ -404,8 +410,11 @@ extern int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size | |||
404 | #ifndef platform_migrate | 410 | #ifndef platform_migrate |
405 | # define platform_migrate machvec_noop_task | 411 | # define platform_migrate machvec_noop_task |
406 | #endif | 412 | #endif |
407 | #ifndef platform_msi_init | 413 | #ifndef platform_setup_msi_irq |
408 | # define platform_msi_init ((ia64_mv_msi_init_t*)NULL) | 414 | # define platform_setup_msi_irq ((ia64_mv_setup_msi_irq_t*)NULL) |
415 | #endif | ||
416 | #ifndef platform_teardown_msi_irq | ||
417 | # define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL) | ||
409 | #endif | 418 | #endif |
410 | 419 | ||
411 | #endif /* _ASM_IA64_MACHVEC_H */ | 420 | #endif /* _ASM_IA64_MACHVEC_H */ |
diff --git a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h index cf724dc79d8c..c54b165b1c17 100644 --- a/include/asm-ia64/machvec_sn2.h +++ b/include/asm-ia64/machvec_sn2.h | |||
@@ -67,7 +67,8 @@ extern ia64_mv_dma_sync_sg_for_device sn_dma_sync_sg_for_device; | |||
67 | extern ia64_mv_dma_mapping_error sn_dma_mapping_error; | 67 | extern ia64_mv_dma_mapping_error sn_dma_mapping_error; |
68 | extern ia64_mv_dma_supported sn_dma_supported; | 68 | extern ia64_mv_dma_supported sn_dma_supported; |
69 | extern ia64_mv_migrate_t sn_migrate; | 69 | extern ia64_mv_migrate_t sn_migrate; |
70 | extern ia64_mv_msi_init_t sn_msi_init; | 70 | extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq; |
71 | extern ia64_mv_teardown_msi_irq_t sn_teardown_msi_irq; | ||
71 | 72 | ||
72 | 73 | ||
73 | /* | 74 | /* |
@@ -120,9 +121,11 @@ extern ia64_mv_msi_init_t sn_msi_init; | |||
120 | #define platform_dma_supported sn_dma_supported | 121 | #define platform_dma_supported sn_dma_supported |
121 | #define platform_migrate sn_migrate | 122 | #define platform_migrate sn_migrate |
122 | #ifdef CONFIG_PCI_MSI | 123 | #ifdef CONFIG_PCI_MSI |
123 | #define platform_msi_init sn_msi_init | 124 | #define platform_setup_msi_irq sn_setup_msi_irq |
125 | #define platform_teardown_msi_irq sn_teardown_msi_irq | ||
124 | #else | 126 | #else |
125 | #define platform_msi_init ((ia64_mv_msi_init_t*)NULL) | 127 | #define platform_setup_msi_irq ((ia64_mv_setup_msi_irq_t*)NULL) |
128 | #define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL) | ||
126 | #endif | 129 | #endif |
127 | 130 | ||
128 | #include <asm/sn/io.h> | 131 | #include <asm/sn/io.h> |
diff --git a/include/asm-ia64/msi.h b/include/asm-ia64/msi.h deleted file mode 100644 index bb92b0dbde2f..000000000000 --- a/include/asm-ia64/msi.h +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2003-2004 Intel | ||
3 | * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) | ||
4 | */ | ||
5 | |||
6 | #ifndef ASM_MSI_H | ||
7 | #define ASM_MSI_H | ||
8 | |||
9 | #define NR_VECTORS NR_IRQS | ||
10 | #define FIRST_DEVICE_VECTOR IA64_FIRST_DEVICE_VECTOR | ||
11 | #define LAST_DEVICE_VECTOR IA64_LAST_DEVICE_VECTOR | ||
12 | static inline void set_intr_gate (int nr, void *func) {} | ||
13 | #define IO_APIC_VECTOR(irq) (irq) | ||
14 | #define ack_APIC_irq ia64_eoi | ||
15 | #define MSI_TARGET_CPU_SHIFT 4 | ||
16 | |||
17 | extern struct msi_ops msi_apic_ops; | ||
18 | |||
19 | static inline int msi_arch_init(void) | ||
20 | { | ||
21 | if (platform_msi_init) | ||
22 | return platform_msi_init(); | ||
23 | |||
24 | /* default ops for most ia64 platforms */ | ||
25 | msi_register(&msi_apic_ops); | ||
26 | return 0; | ||
27 | } | ||
28 | |||
29 | #endif /* ASM_MSI_H */ | ||
diff --git a/include/asm-ia64/ptrace.h b/include/asm-ia64/ptrace.h index 1414316efd40..f4ef87a36236 100644 --- a/include/asm-ia64/ptrace.h +++ b/include/asm-ia64/ptrace.h | |||
@@ -241,6 +241,9 @@ struct switch_stack { | |||
241 | * the canonical representation by adding to instruction pointer. | 241 | * the canonical representation by adding to instruction pointer. |
242 | */ | 242 | */ |
243 | # define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri) | 243 | # define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri) |
244 | |||
245 | #define regs_return_value(regs) ((regs)->r8) | ||
246 | |||
244 | /* Conserve space in histogram by encoding slot bits in address | 247 | /* Conserve space in histogram by encoding slot bits in address |
245 | * bits 2 and 3 rather than bits 0 and 1. | 248 | * bits 2 and 3 rather than bits 0 and 1. |
246 | */ | 249 | */ |
diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h index 937c21257523..a6e38565ab4c 100644 --- a/include/asm-ia64/topology.h +++ b/include/asm-ia64/topology.h | |||
@@ -59,6 +59,7 @@ void build_cpu_to_node_map(void); | |||
59 | #define SD_CPU_INIT (struct sched_domain) { \ | 59 | #define SD_CPU_INIT (struct sched_domain) { \ |
60 | .span = CPU_MASK_NONE, \ | 60 | .span = CPU_MASK_NONE, \ |
61 | .parent = NULL, \ | 61 | .parent = NULL, \ |
62 | .child = NULL, \ | ||
62 | .groups = NULL, \ | 63 | .groups = NULL, \ |
63 | .min_interval = 1, \ | 64 | .min_interval = 1, \ |
64 | .max_interval = 4, \ | 65 | .max_interval = 4, \ |
@@ -84,6 +85,7 @@ void build_cpu_to_node_map(void); | |||
84 | #define SD_NODE_INIT (struct sched_domain) { \ | 85 | #define SD_NODE_INIT (struct sched_domain) { \ |
85 | .span = CPU_MASK_NONE, \ | 86 | .span = CPU_MASK_NONE, \ |
86 | .parent = NULL, \ | 87 | .parent = NULL, \ |
88 | .child = NULL, \ | ||
87 | .groups = NULL, \ | 89 | .groups = NULL, \ |
88 | .min_interval = 8, \ | 90 | .min_interval = 8, \ |
89 | .max_interval = 8*(min(num_online_cpus(), 32)), \ | 91 | .max_interval = 8*(min(num_online_cpus(), 32)), \ |
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h index bb0eb727dcd0..53c5c0ee122c 100644 --- a/include/asm-ia64/unistd.h +++ b/include/asm-ia64/unistd.h | |||
@@ -319,78 +319,6 @@ | |||
319 | 319 | ||
320 | extern long __ia64_syscall (long a0, long a1, long a2, long a3, long a4, long nr); | 320 | extern long __ia64_syscall (long a0, long a1, long a2, long a3, long a4, long nr); |
321 | 321 | ||
322 | #ifdef __KERNEL_SYSCALLS__ | ||
323 | |||
324 | #include <linux/compiler.h> | ||
325 | #include <linux/string.h> | ||
326 | #include <linux/signal.h> | ||
327 | #include <asm/ptrace.h> | ||
328 | #include <linux/stringify.h> | ||
329 | #include <linux/syscalls.h> | ||
330 | |||
331 | static inline long | ||
332 | open (const char * name, int mode, int flags) | ||
333 | { | ||
334 | return sys_open(name, mode, flags); | ||
335 | } | ||
336 | |||
337 | static inline long | ||
338 | dup (int fd) | ||
339 | { | ||
340 | return sys_dup(fd); | ||
341 | } | ||
342 | |||
343 | static inline long | ||
344 | close (int fd) | ||
345 | { | ||
346 | return sys_close(fd); | ||
347 | } | ||
348 | |||
349 | static inline off_t | ||
350 | lseek (int fd, off_t off, int whence) | ||
351 | { | ||
352 | return sys_lseek(fd, off, whence); | ||
353 | } | ||
354 | |||
355 | static inline void | ||
356 | _exit (int value) | ||
357 | { | ||
358 | sys_exit(value); | ||
359 | } | ||
360 | |||
361 | #define exit(x) _exit(x) | ||
362 | |||
363 | static inline long | ||
364 | write (int fd, const char * buf, size_t nr) | ||
365 | { | ||
366 | return sys_write(fd, buf, nr); | ||
367 | } | ||
368 | |||
369 | static inline long | ||
370 | read (int fd, char * buf, size_t nr) | ||
371 | { | ||
372 | return sys_read(fd, buf, nr); | ||
373 | } | ||
374 | |||
375 | |||
376 | static inline long | ||
377 | setsid (void) | ||
378 | { | ||
379 | return sys_setsid(); | ||
380 | } | ||
381 | |||
382 | static inline pid_t | ||
383 | waitpid (int pid, int * wait_stat, int flags) | ||
384 | { | ||
385 | return sys_wait4(pid, wait_stat, flags, NULL); | ||
386 | } | ||
387 | |||
388 | |||
389 | extern int execve (const char *filename, char *const av[], char *const ep[]); | ||
390 | extern pid_t clone (unsigned long flags, void *sp); | ||
391 | |||
392 | #endif /* __KERNEL_SYSCALLS__ */ | ||
393 | |||
394 | asmlinkage unsigned long sys_mmap( | 322 | asmlinkage unsigned long sys_mmap( |
395 | unsigned long addr, unsigned long len, | 323 | unsigned long addr, unsigned long len, |
396 | int prot, int flags, | 324 | int prot, int flags, |
diff --git a/include/asm-m32r/m32104ut/m32104ut_pld.h b/include/asm-m32r/m32104ut/m32104ut_pld.h index 6ba4ddf7dcf7..cbdbc5891445 100644 --- a/include/asm-m32r/m32104ut/m32104ut_pld.h +++ b/include/asm-m32r/m32104ut/m32104ut_pld.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/m32104ut/m32104ut_pld.h | 2 | * include/asm-m32r/m32104ut/m32104ut_pld.h |
3 | * | 3 | * |
4 | * Definitions for Programable Logic Device(PLD) on M32104UT board. | 4 | * Definitions for Programable Logic Device(PLD) on M32104UT board. |
5 | * Based on m32700ut_pld.h | 5 | * Based on m32700ut_pld.h |
diff --git a/include/asm-m32r/m32700ut/m32700ut_lan.h b/include/asm-m32r/m32700ut/m32700ut_lan.h index c050b19e8101..f1e47ae1f891 100644 --- a/include/asm-m32r/m32700ut/m32700ut_lan.h +++ b/include/asm-m32r/m32700ut/m32700ut_lan.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/m32700ut_lan.h | 2 | * include/asm-m32r/m32700ut/m32700ut_lan.h |
3 | * | 3 | * |
4 | * M32700UT-LAN board | 4 | * M32700UT-LAN board |
5 | * | 5 | * |
diff --git a/include/asm-m32r/m32700ut/m32700ut_lcd.h b/include/asm-m32r/m32700ut/m32700ut_lcd.h index 4da4e822e2f3..e41c4aa48b4c 100644 --- a/include/asm-m32r/m32700ut/m32700ut_lcd.h +++ b/include/asm-m32r/m32700ut/m32700ut_lcd.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/m32700ut_lcd.h | 2 | * include/asm-m32r/m32700ut/m32700ut_lcd.h |
3 | * | 3 | * |
4 | * M32700UT-LCD board | 4 | * M32700UT-LCD board |
5 | * | 5 | * |
diff --git a/include/asm-m32r/m32700ut/m32700ut_pld.h b/include/asm-m32r/m32700ut/m32700ut_pld.h index f35f9159acff..a48c22c978ca 100644 --- a/include/asm-m32r/m32700ut/m32700ut_pld.h +++ b/include/asm-m32r/m32700ut/m32700ut_pld.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/m32700ut/m32700ut_pld.h | 2 | * include/asm-m32r/m32700ut/m32700ut_pld.h |
3 | * | 3 | * |
4 | * Definitions for Programable Logic Device(PLD) on M32700UT board. | 4 | * Definitions for Programable Logic Device(PLD) on M32700UT board. |
5 | * | 5 | * |
diff --git a/include/asm-m32r/mappi2/mappi2_pld.h b/include/asm-m32r/mappi2/mappi2_pld.h index 01dcdd19dbe6..56a2b12f2bfc 100644 --- a/include/asm-m32r/mappi2/mappi2_pld.h +++ b/include/asm-m32r/mappi2/mappi2_pld.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/mappi2/mappi2_pld.h | 2 | * include/asm-m32r/mappi2/mappi2_pld.h |
3 | * | 3 | * |
4 | * Definitions for Extended IO Logic on MAPPI2 board. | 4 | * Definitions for Extended IO Logic on MAPPI2 board. |
5 | * based on m32700ut_pld.h by | 5 | * based on m32700ut_pld.h by |
diff --git a/include/asm-m32r/mappi3/mappi3_pld.h b/include/asm-m32r/mappi3/mappi3_pld.h index 031369a7afc8..92f10defaef8 100644 --- a/include/asm-m32r/mappi3/mappi3_pld.h +++ b/include/asm-m32r/mappi3/mappi3_pld.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/mappi3/mappi3_pld.h | 2 | * include/asm-m32r/mappi3/mappi3_pld.h |
3 | * | 3 | * |
4 | * Definitions for Extended IO Logic on MAPPI3 board. | 4 | * Definitions for Extended IO Logic on MAPPI3 board. |
5 | * based on m32700ut_pld.h | 5 | * based on m32700ut_pld.h |
diff --git a/include/asm-m32r/opsput/opsput_lan.h b/include/asm-m32r/opsput/opsput_lan.h index 61948296f445..f53e10187c03 100644 --- a/include/asm-m32r/opsput/opsput_lan.h +++ b/include/asm-m32r/opsput/opsput_lan.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/opsput_lan.h | 2 | * include/asm-m32r/opsput/opsput_lan.h |
3 | * | 3 | * |
4 | * OPSPUT-LAN board | 4 | * OPSPUT-LAN board |
5 | * | 5 | * |
diff --git a/include/asm-m32r/opsput/opsput_lcd.h b/include/asm-m32r/opsput/opsput_lcd.h index 44cfd7fe2d88..99f296e1b61b 100644 --- a/include/asm-m32r/opsput/opsput_lcd.h +++ b/include/asm-m32r/opsput/opsput_lcd.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/opsput_lcd.h | 2 | * include/asm-m32r/opsput/opsput_lcd.h |
3 | * | 3 | * |
4 | * OPSPUT-LCD board | 4 | * OPSPUT-LCD board |
5 | * | 5 | * |
diff --git a/include/asm-m32r/opsput/opsput_pld.h b/include/asm-m32r/opsput/opsput_pld.h index 46296fe1ec1a..a8d6452076f1 100644 --- a/include/asm-m32r/opsput/opsput_pld.h +++ b/include/asm-m32r/opsput/opsput_pld.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm/opsput/opsput_pld.h | 2 | * include/asm-m32r/opsput/opsput_pld.h |
3 | * | 3 | * |
4 | * Definitions for Programable Logic Device(PLD) on OPSPUT board. | 4 | * Definitions for Programable Logic Device(PLD) on OPSPUT board. |
5 | * | 5 | * |
diff --git a/include/asm-m32r/unistd.h b/include/asm-m32r/unistd.h index 5c6a9ac6cf1a..95aa34298d82 100644 --- a/include/asm-m32r/unistd.h +++ b/include/asm-m32r/unistd.h | |||
@@ -424,43 +424,6 @@ __syscall_return(type,__res); \ | |||
424 | #define __ARCH_WANT_SYS_OLDUMOUNT | 424 | #define __ARCH_WANT_SYS_OLDUMOUNT |
425 | #define __ARCH_WANT_SYS_RT_SIGACTION | 425 | #define __ARCH_WANT_SYS_RT_SIGACTION |
426 | 426 | ||
427 | #ifdef __KERNEL_SYSCALLS__ | ||
428 | |||
429 | #include <linux/compiler.h> | ||
430 | #include <linux/types.h> | ||
431 | #include <linux/linkage.h> | ||
432 | #include <asm/ptrace.h> | ||
433 | |||
434 | /* | ||
435 | * we need this inline - forking from kernel space will result | ||
436 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
437 | * is no problem, but for the stack. This is handled by not letting | ||
438 | * main() use the stack at all after fork(). Thus, no function | ||
439 | * calls - which means inline code for fork too, as otherwise we | ||
440 | * would use the stack upon exit from 'fork()'. | ||
441 | * | ||
442 | * Actually only pause and fork are needed inline, so that there | ||
443 | * won't be any messing with the stack from main(), but we define | ||
444 | * some others too. | ||
445 | */ | ||
446 | static __inline__ _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
447 | |||
448 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
449 | unsigned long prot, unsigned long flags, | ||
450 | unsigned long fd, unsigned long pgoff); | ||
451 | asmlinkage int sys_execve(struct pt_regs regs); | ||
452 | asmlinkage int sys_clone(struct pt_regs regs); | ||
453 | asmlinkage int sys_fork(struct pt_regs regs); | ||
454 | asmlinkage int sys_vfork(struct pt_regs regs); | ||
455 | asmlinkage int sys_pipe(unsigned long __user *fildes); | ||
456 | struct sigaction; | ||
457 | asmlinkage long sys_rt_sigaction(int sig, | ||
458 | const struct sigaction __user *act, | ||
459 | struct sigaction __user *oact, | ||
460 | size_t sigsetsize); | ||
461 | |||
462 | #endif /* __KERNEL_SYSCALLS__ */ | ||
463 | |||
464 | /* | 427 | /* |
465 | * "Conditional" syscalls | 428 | * "Conditional" syscalls |
466 | * | 429 | * |
diff --git a/include/asm-m68k/rtc.h b/include/asm-m68k/rtc.h index 71406fc4e599..5d3e03859844 100644 --- a/include/asm-m68k/rtc.h +++ b/include/asm-m68k/rtc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* asm-m68k/rtc.h | 1 | /* include/asm-m68k/rtc.h |
2 | * | 2 | * |
3 | * Copyright Richard Zidlicky | 3 | * Copyright Richard Zidlicky |
4 | * implementation details for genrtc/q40rtc driver | 4 | * implementation details for genrtc/q40rtc driver |
diff --git a/include/asm-m68k/unistd.h b/include/asm-m68k/unistd.h index 751632b904db..3ab716f0fc18 100644 --- a/include/asm-m68k/unistd.h +++ b/include/asm-m68k/unistd.h | |||
@@ -409,12 +409,6 @@ __syscall_return(type,__res); \ | |||
409 | #define __ARCH_WANT_SYS_SIGPROCMASK | 409 | #define __ARCH_WANT_SYS_SIGPROCMASK |
410 | #define __ARCH_WANT_SYS_RT_SIGACTION | 410 | #define __ARCH_WANT_SYS_RT_SIGACTION |
411 | 411 | ||
412 | #ifdef __KERNEL_SYSCALLS__ | ||
413 | |||
414 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
415 | |||
416 | #endif /* __KERNEL_SYSCALLS__ */ | ||
417 | |||
418 | /* | 412 | /* |
419 | * "Conditional" syscalls | 413 | * "Conditional" syscalls |
420 | * | 414 | * |
diff --git a/include/asm-m68knommu/processor.h b/include/asm-m68knommu/processor.h index 9d3a1bf41231..91cba18acdd3 100644 --- a/include/asm-m68knommu/processor.h +++ b/include/asm-m68knommu/processor.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-m68k/processor.h | 2 | * include/asm-m68knommu/processor.h |
3 | * | 3 | * |
4 | * Copyright (C) 1995 Hamish Macdonald | 4 | * Copyright (C) 1995 Hamish Macdonald |
5 | */ | 5 | */ |
diff --git a/include/asm-m68knommu/unistd.h b/include/asm-m68knommu/unistd.h index 21fdc37c5c2c..daafb5d43ef1 100644 --- a/include/asm-m68knommu/unistd.h +++ b/include/asm-m68knommu/unistd.h | |||
@@ -463,61 +463,6 @@ type name(atype a, btype b, ctype c, dtype d, etype e) \ | |||
463 | #define __ARCH_WANT_SYS_SIGPROCMASK | 463 | #define __ARCH_WANT_SYS_SIGPROCMASK |
464 | #define __ARCH_WANT_SYS_RT_SIGACTION | 464 | #define __ARCH_WANT_SYS_RT_SIGACTION |
465 | 465 | ||
466 | #ifdef __KERNEL_SYSCALLS__ | ||
467 | |||
468 | #include <linux/compiler.h> | ||
469 | #include <linux/interrupt.h> | ||
470 | #include <linux/types.h> | ||
471 | |||
472 | /* | ||
473 | * we need this inline - forking from kernel space will result | ||
474 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
475 | * is no problem, but for the stack. This is handled by not letting | ||
476 | * main() use the stack at all after fork(). Thus, no function | ||
477 | * calls - which means inline code for fork too, as otherwise we | ||
478 | * would use the stack upon exit from 'fork()'. | ||
479 | * | ||
480 | * Actually only pause and fork are needed inline, so that there | ||
481 | * won't be any messing with the stack from main(), but we define | ||
482 | * some others too. | ||
483 | */ | ||
484 | #define __NR__exit __NR_exit | ||
485 | static inline _syscall0(int,pause) | ||
486 | static inline _syscall0(int,sync) | ||
487 | static inline _syscall0(pid_t,setsid) | ||
488 | static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
489 | static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
490 | static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
491 | static inline _syscall1(int,dup,int,fd) | ||
492 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
493 | static inline _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
494 | static inline _syscall1(int,close,int,fd) | ||
495 | static inline _syscall1(int,_exit,int,exitcode) | ||
496 | static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
497 | static inline _syscall1(int,delete_module,const char *,name) | ||
498 | |||
499 | static inline pid_t wait(int * wait_stat) | ||
500 | { | ||
501 | return waitpid(-1,wait_stat,0); | ||
502 | } | ||
503 | asmlinkage long sys_mmap2(unsigned long addr, unsigned long len, | ||
504 | unsigned long prot, unsigned long flags, | ||
505 | unsigned long fd, unsigned long pgoff); | ||
506 | asmlinkage int sys_execve(char *name, char **argv, char **envp); | ||
507 | asmlinkage int sys_pipe(unsigned long *fildes); | ||
508 | struct pt_regs; | ||
509 | int sys_request_irq(unsigned int, | ||
510 | irqreturn_t (*)(int, void *, struct pt_regs *), | ||
511 | unsigned long, const char *, void *); | ||
512 | void sys_free_irq(unsigned int, void *); | ||
513 | struct sigaction; | ||
514 | asmlinkage long sys_rt_sigaction(int sig, | ||
515 | const struct sigaction __user *act, | ||
516 | struct sigaction __user *oact, | ||
517 | size_t sigsetsize); | ||
518 | |||
519 | #endif /* __KERNEL_SYSCALLS__ */ | ||
520 | |||
521 | /* | 466 | /* |
522 | * "Conditional" syscalls | 467 | * "Conditional" syscalls |
523 | * | 468 | * |
diff --git a/include/asm-mips/bootinfo.h b/include/asm-mips/bootinfo.h index 78c35ec46362..1e5ccdad3b02 100644 --- a/include/asm-mips/bootinfo.h +++ b/include/asm-mips/bootinfo.h | |||
@@ -125,12 +125,6 @@ | |||
125 | #define MACH_MOMENCO_OCELOT_3 4 | 125 | #define MACH_MOMENCO_OCELOT_3 4 |
126 | 126 | ||
127 | /* | 127 | /* |
128 | * Valid machtype for group ITE | ||
129 | */ | ||
130 | #define MACH_GROUP_ITE 13 /* ITE Semi Eval Boards */ | ||
131 | #define MACH_QED_4N_S01B 0 /* ITE8172 based eval board */ | ||
132 | |||
133 | /* | ||
134 | * Valid machtype for group PHILIPS | 128 | * Valid machtype for group PHILIPS |
135 | */ | 129 | */ |
136 | #define MACH_GROUP_PHILIPS 14 | 130 | #define MACH_GROUP_PHILIPS 14 |
@@ -139,12 +133,6 @@ | |||
139 | #define MACH_PHILIPS_JBS 2 /* JBS */ | 133 | #define MACH_PHILIPS_JBS 2 /* JBS */ |
140 | 134 | ||
141 | /* | 135 | /* |
142 | * Valid machtype for group Globespan | ||
143 | */ | ||
144 | #define MACH_GROUP_GLOBESPAN 15 /* Globespan */ | ||
145 | #define MACH_IVR 0 /* IVR eval board */ | ||
146 | |||
147 | /* | ||
148 | * Valid machtype for group SIBYTE | 136 | * Valid machtype for group SIBYTE |
149 | */ | 137 | */ |
150 | #define MACH_GROUP_SIBYTE 16 /* Sibyte / Broadcom */ | 138 | #define MACH_GROUP_SIBYTE 16 /* Sibyte / Broadcom */ |
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index 36416fdfcf68..9ab59e2bb233 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -46,8 +46,6 @@ static inline void flush_dcache_page(struct page *page) | |||
46 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 46 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
47 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 47 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
48 | 48 | ||
49 | extern void (*__flush_icache_page)(struct vm_area_struct *vma, | ||
50 | struct page *page); | ||
51 | static inline void flush_icache_page(struct vm_area_struct *vma, | 49 | static inline void flush_icache_page(struct vm_area_struct *vma, |
52 | struct page *page) | 50 | struct page *page) |
53 | { | 51 | { |
diff --git a/include/asm-mips/galileo-boards/ev96100.h b/include/asm-mips/galileo-boards/ev96100.h deleted file mode 100644 index 070dfd84a8e8..000000000000 --- a/include/asm-mips/galileo-boards/ev96100.h +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | */ | ||
4 | #ifndef _MIPS_EV96100_H | ||
5 | #define _MIPS_EV96100_H | ||
6 | |||
7 | #include <asm/addrspace.h> | ||
8 | |||
9 | /* | ||
10 | * GT64120 config space base address | ||
11 | */ | ||
12 | #define GT64120_BASE (KSEG1ADDR(0x14000000)) | ||
13 | #define MIPS_GT_BASE GT64120_BASE | ||
14 | |||
15 | /* | ||
16 | * PCI Bus allocation | ||
17 | */ | ||
18 | #define GT_PCI_MEM_BASE 0x12000000UL | ||
19 | #define GT_PCI_MEM_SIZE 0x02000000UL | ||
20 | #define GT_PCI_IO_BASE 0x10000000UL | ||
21 | #define GT_PCI_IO_SIZE 0x02000000UL | ||
22 | #define GT_ISA_IO_BASE PCI_IO_BASE | ||
23 | |||
24 | /* | ||
25 | * Duart I/O ports. | ||
26 | */ | ||
27 | #define EV96100_COM1_BASE_ADDR (0xBD000000 + 0x20) | ||
28 | #define EV96100_COM2_BASE_ADDR (0xBD000000 + 0x00) | ||
29 | |||
30 | |||
31 | /* | ||
32 | * EV96100 interrupt controller register base. | ||
33 | */ | ||
34 | #define EV96100_ICTRL_REGS_BASE (KSEG1ADDR(0x1f000000)) | ||
35 | |||
36 | /* | ||
37 | * EV96100 UART register base. | ||
38 | */ | ||
39 | #define EV96100_UART0_REGS_BASE EV96100_COM1_BASE_ADDR | ||
40 | #define EV96100_UART1_REGS_BASE EV96100_COM2_BASE_ADDR | ||
41 | #define EV96100_BASE_BAUD ( 3686400 / 16 ) | ||
42 | |||
43 | |||
44 | /* | ||
45 | * Because of an error/peculiarity in the Galileo chip, we need to swap the | ||
46 | * bytes when running bigendian. | ||
47 | */ | ||
48 | #define __GT_READ(ofs) \ | ||
49 | (*(volatile u32 *)(GT64120_BASE+(ofs))) | ||
50 | #define __GT_WRITE(ofs, data) \ | ||
51 | do { *(volatile u32 *)(GT64120_BASE+(ofs)) = (data); } while (0) | ||
52 | #define GT_READ(ofs) le32_to_cpu(__GT_READ(ofs)) | ||
53 | #define GT_WRITE(ofs, data) __GT_WRITE(ofs, cpu_to_le32(data)) | ||
54 | |||
55 | #endif /* !(_MIPS_EV96100_H) */ | ||
diff --git a/include/asm-mips/galileo-boards/ev96100int.h b/include/asm-mips/galileo-boards/ev96100int.h deleted file mode 100644 index c58b16d06d6e..000000000000 --- a/include/asm-mips/galileo-boards/ev96100int.h +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | */ | ||
4 | #ifndef _MIPS_EV96100INT_H | ||
5 | #define _MIPS_EV96100INT_H | ||
6 | |||
7 | #define EV96100INT_UART_0 6 /* IP 6 */ | ||
8 | #define EV96100INT_TIMER 7 /* IP 7 */ | ||
9 | |||
10 | extern void ev96100int_init(void); | ||
11 | |||
12 | #endif /* !(_MIPS_EV96100_H) */ | ||
diff --git a/include/asm-mips/irqflags.h b/include/asm-mips/irqflags.h index 43ca09a3a3d0..46bf5de5ac72 100644 --- a/include/asm-mips/irqflags.h +++ b/include/asm-mips/irqflags.h | |||
@@ -213,12 +213,37 @@ static inline int raw_irqs_disabled_flags(unsigned long flags) | |||
213 | * Do the CPU's IRQ-state tracing from assembly code. | 213 | * Do the CPU's IRQ-state tracing from assembly code. |
214 | */ | 214 | */ |
215 | #ifdef CONFIG_TRACE_IRQFLAGS | 215 | #ifdef CONFIG_TRACE_IRQFLAGS |
216 | /* Reload some registers clobbered by trace_hardirqs_on */ | ||
217 | #ifdef CONFIG_64BIT | ||
218 | # define TRACE_IRQS_RELOAD_REGS \ | ||
219 | LONG_L $11, PT_R11(sp); \ | ||
220 | LONG_L $10, PT_R10(sp); \ | ||
221 | LONG_L $9, PT_R9(sp); \ | ||
222 | LONG_L $8, PT_R8(sp); \ | ||
223 | LONG_L $7, PT_R7(sp); \ | ||
224 | LONG_L $6, PT_R6(sp); \ | ||
225 | LONG_L $5, PT_R5(sp); \ | ||
226 | LONG_L $4, PT_R4(sp); \ | ||
227 | LONG_L $2, PT_R2(sp) | ||
228 | #else | ||
229 | # define TRACE_IRQS_RELOAD_REGS \ | ||
230 | LONG_L $7, PT_R7(sp); \ | ||
231 | LONG_L $6, PT_R6(sp); \ | ||
232 | LONG_L $5, PT_R5(sp); \ | ||
233 | LONG_L $4, PT_R4(sp); \ | ||
234 | LONG_L $2, PT_R2(sp) | ||
235 | #endif | ||
216 | # define TRACE_IRQS_ON \ | 236 | # define TRACE_IRQS_ON \ |
237 | CLI; /* make sure trace_hardirqs_on() is called in kernel level */ \ | ||
217 | jal trace_hardirqs_on | 238 | jal trace_hardirqs_on |
239 | # define TRACE_IRQS_ON_RELOAD \ | ||
240 | TRACE_IRQS_ON; \ | ||
241 | TRACE_IRQS_RELOAD_REGS | ||
218 | # define TRACE_IRQS_OFF \ | 242 | # define TRACE_IRQS_OFF \ |
219 | jal trace_hardirqs_off | 243 | jal trace_hardirqs_off |
220 | #else | 244 | #else |
221 | # define TRACE_IRQS_ON | 245 | # define TRACE_IRQS_ON |
246 | # define TRACE_IRQS_ON_RELOAD | ||
222 | # define TRACE_IRQS_OFF | 247 | # define TRACE_IRQS_OFF |
223 | #endif | 248 | #endif |
224 | 249 | ||
diff --git a/include/asm-mips/it8172/it8172.h b/include/asm-mips/it8172/it8172.h deleted file mode 100644 index 8f23af0a1ee8..000000000000 --- a/include/asm-mips/it8172/it8172.h +++ /dev/null | |||
@@ -1,348 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * BRIEF MODULE DESCRIPTION | ||
4 | * IT8172 system controller defines. | ||
5 | * | ||
6 | * Copyright 2000 MontaVista Software Inc. | ||
7 | * Author: MontaVista Software, Inc. | ||
8 | * ppopov@mvista.com or source@mvista.com | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | * | ||
15 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
16 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
17 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
18 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
21 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
22 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License along | ||
27 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
28 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
29 | */ | ||
30 | |||
31 | #ifndef __IT8172__H__ | ||
32 | #define __IT8172__H__ | ||
33 | |||
34 | #include <asm/addrspace.h> | ||
35 | |||
36 | #define IT8172_BASE 0x18000000 | ||
37 | #define IT8172_PCI_IO_BASE 0x14000000 | ||
38 | #define IT8172_PCI_MEM_BASE 0x10000000 | ||
39 | |||
40 | // System registers offsets from IT8172_BASE | ||
41 | #define IT_CMFPCR 0x0 | ||
42 | #define IT_DSRR 0x2 | ||
43 | #define IT_PCDCR 0x4 | ||
44 | #define IT_SPLLCR 0x6 | ||
45 | #define IT_CIDR 0x10 | ||
46 | #define IT_CRNR 0x12 | ||
47 | #define IT_CPUTR 0x14 | ||
48 | #define IT_CTCR 0x16 | ||
49 | #define IT_SDPR 0xF0 | ||
50 | |||
51 | // Power management register offset from IT8172_PCI_IO_BASE | ||
52 | // Power Management Device Standby Register | ||
53 | #define IT_PM_DSR 0x15800 | ||
54 | |||
55 | #define IT_PM_DSR_TMR0SB 0x0001 | ||
56 | #define IT_PM_DSR_TMR1SB 0x0002 | ||
57 | #define IT_PM_DSR_CIR0SB 0x0004 | ||
58 | #define IT_PM_DSR_CIR1SB 0x0008 | ||
59 | #define IT_PM_DSR_SCR0SB 0x0010 | ||
60 | #define IT_PM_DSR_SCR1SB 0x0020 | ||
61 | #define IT_PM_DSR_PPSB 0x0040 | ||
62 | #define IT_PM_DSR_I2CSB 0x0080 | ||
63 | #define IT_PM_DSR_UARTSB 0x0100 | ||
64 | #define IT_PM_DSR_IDESB 0x0200 | ||
65 | #define IT_PM_DSR_ACSB 0x0400 | ||
66 | #define IT_PM_DSR_M68KSB 0x0800 | ||
67 | |||
68 | // Power Management PCI Device Software Reset Register | ||
69 | #define IT_PM_PCISR 0x15802 | ||
70 | |||
71 | #define IT_PM_PCISR_IDESR 0x0001 | ||
72 | #define IT_PM_PCISR_CDMASR 0x0002 | ||
73 | #define IT_PM_PCISR_USBSR 0x0004 | ||
74 | #define IT_PM_PCISR_DMASR 0x0008 | ||
75 | #define IT_PM_PCISR_ACSR 0x0010 | ||
76 | #define IT_PM_PCISR_MEMSR 0x0020 | ||
77 | #define IT_PM_PCISR_68KSR 0x0040 | ||
78 | |||
79 | |||
80 | // PCI Configuration address and data register offsets | ||
81 | // from IT8172_BASE | ||
82 | #define IT_CONFADDR 0x4000 | ||
83 | #define IT_BUSNUM_SHF 16 | ||
84 | #define IT_DEVNUM_SHF 11 | ||
85 | #define IT_FUNCNUM_SHF 8 | ||
86 | #define IT_REGNUM_SHF 2 | ||
87 | |||
88 | #define IT_CONFDATA 0x4004 | ||
89 | |||
90 | // PCI configuration header common register offsets | ||
91 | #define IT_VID 0x00 | ||
92 | #define IT_DID 0x02 | ||
93 | #define IT_PCICMD 0x04 | ||
94 | #define IT_PCISTS 0x06 | ||
95 | #define IT_RID 0x08 | ||
96 | #define IT_CLASSC 0x09 | ||
97 | #define IT_HEADT 0x0E | ||
98 | #define IT_SERIRQC 0x49 | ||
99 | |||
100 | // PCI to Internal/LPC Bus Bridge configuration header register offset | ||
101 | #define IT_P2I_BCR 0x4C | ||
102 | #define IT_P2I_D0IOSC 0x50 | ||
103 | #define IT_P2I_D1IOSC 0x54 | ||
104 | #define IT_P2I_D2IOSC 0x58 | ||
105 | #define IT_P2I_D3IOSC 0x5C | ||
106 | #define IT_P2I_D4IOSC 0x60 | ||
107 | #define IT_P2I_D5IOSC 0x64 | ||
108 | #define IT_P2I_D6IOSC 0x68 | ||
109 | #define IT_P2I_D7IOSC 0x6C | ||
110 | #define IT_P2I_D8IOSC 0x70 | ||
111 | #define IT_P2I_D9IOSC 0x74 | ||
112 | #define IT_P2I_D10IOSC 0x78 | ||
113 | #define IT_P2I_D11IOSC 0x7C | ||
114 | |||
115 | // Memory controller register offsets from IT8172_BASE | ||
116 | #define IT_MC_SDRMR 0x1000 | ||
117 | #define IT_MC_SDRTR 0x1004 | ||
118 | #define IT_MC_MCR 0x1008 | ||
119 | #define IT_MC_SDTYPE 0x100C | ||
120 | #define IT_MC_WPBA 0x1010 | ||
121 | #define IT_MC_WPTA 0x1014 | ||
122 | #define IT_MC_HATR 0x1018 | ||
123 | #define IT_MC_PCICR 0x101C | ||
124 | |||
125 | // Flash/ROM control register offsets from IT8172_BASE | ||
126 | #define IT_FC_BRCR 0x2000 | ||
127 | #define IT_FC_FCR 0x2004 | ||
128 | #define IT_FC_DCR 0x2008 | ||
129 | |||
130 | // M68K interface bridge configuration header register offset | ||
131 | #define IT_M68K_MBCSR 0x54 | ||
132 | #define IT_M68K_TMR 0x58 | ||
133 | #define IT_M68K_BCR 0x5C | ||
134 | #define IT_M68K_BSR 0x5D | ||
135 | #define IT_M68K_DTR 0x5F | ||
136 | |||
137 | // Register offset from IT8172_PCI_IO_BASE | ||
138 | // These registers are accessible through 8172 PCI IO window. | ||
139 | |||
140 | // INTC | ||
141 | #define IT_INTC_BASE 0x10000 | ||
142 | #define IT_INTC_LBDNIRR 0x10000 | ||
143 | #define IT_INTC_LBDNIMR 0x10002 | ||
144 | #define IT_INTC_LBDNITR 0x10004 | ||
145 | #define IT_INTC_LBDNIAR 0x10006 | ||
146 | #define IT_INTC_LPCNIRR 0x10010 | ||
147 | #define IT_INTC_LPCNIMR 0x10012 | ||
148 | #define IT_INTC_LPCNITR 0x10014 | ||
149 | #define IT_INTC_LPCNIAR 0x10016 | ||
150 | #define IT_INTC_PDNIRR 0x10020 | ||
151 | #define IT_INTC_PDNIMR 0x10022 | ||
152 | #define IT_INTC_PDNITR 0x10024 | ||
153 | #define IT_INTC_PDNIAR 0x10026 | ||
154 | #define IT_INTC_UMNIRR 0x10030 | ||
155 | #define IT_INTC_UMNITR 0x10034 | ||
156 | #define IT_INTC_UMNIAR 0x10036 | ||
157 | #define IT_INTC_TYPER 0x107FE | ||
158 | |||
159 | // IT8172 PCI device number | ||
160 | #define IT_C2P_DEVICE 0 | ||
161 | #define IT_AUDIO_DEVICE 1 | ||
162 | #define IT_DMAC_DEVICE 1 | ||
163 | #define IT_CDMAC_DEVICE 1 | ||
164 | #define IT_USB_DEVICE 1 | ||
165 | #define IT_P2I_DEVICE 1 | ||
166 | #define IT_IDE_DEVICE 1 | ||
167 | #define IT_M68K_DEVICE 1 | ||
168 | |||
169 | // IT8172 PCI function number | ||
170 | #define IT_C2P_FUNCION 0 | ||
171 | #define IT_AUDIO_FUNCTION 0 | ||
172 | #define IT_DMAC_FUNCTION 1 | ||
173 | #define IT_CDMAC_FUNCTION 2 | ||
174 | #define IT_USB_FUNCTION 3 | ||
175 | #define IT_P2I_FUNCTION 4 | ||
176 | #define IT_IDE_FUNCTION 5 | ||
177 | #define IT_M68K_FUNCTION 6 | ||
178 | |||
179 | // IT8172 GPIO | ||
180 | #define IT_GPADR 0x13800 | ||
181 | #define IT_GPBDR 0x13808 | ||
182 | #define IT_GPCDR 0x13810 | ||
183 | #define IT_GPACR 0x13802 | ||
184 | #define IT_GPBCR 0x1380A | ||
185 | #define IT_GPCCR 0x13812 | ||
186 | #define IT_GPAICR 0x13804 | ||
187 | #define IT_GPBICR 0x1380C | ||
188 | #define IT_GPCICR 0x13814 | ||
189 | #define IT_GPAISR 0x13806 | ||
190 | #define IT_GPBISR 0x1380E | ||
191 | #define IT_GPCISR 0x13816 | ||
192 | #define IT_GCR 0x13818 | ||
193 | |||
194 | // IT8172 RTC | ||
195 | #define IT_RTC_BASE 0x14800 | ||
196 | #define IT_RTC_CENTURY 0x14808 | ||
197 | |||
198 | #define IT_RTC_RIR0 0x00 | ||
199 | #define IT_RTC_RTR0 0x01 | ||
200 | #define IT_RTC_RIR1 0x02 | ||
201 | #define IT_RTC_RTR1 0x03 | ||
202 | #define IT_RTC_RIR2 0x04 | ||
203 | #define IT_RTC_RTR2 0x05 | ||
204 | #define IT_RTC_RCTR 0x08 | ||
205 | #define IT_RTC_RA 0x0A | ||
206 | #define IT_RTC_RB 0x0B | ||
207 | #define IT_RTC_RC 0x0C | ||
208 | #define IT_RTC_RD 0x0D | ||
209 | |||
210 | #define RTC_SEC_INDEX 0x00 | ||
211 | #define RTC_MIN_INDEX 0x02 | ||
212 | #define RTC_HOUR_INDEX 0x04 | ||
213 | #define RTC_DAY_INDEX 0x06 | ||
214 | #define RTC_DATE_INDEX 0x07 | ||
215 | #define RTC_MONTH_INDEX 0x08 | ||
216 | #define RTC_YEAR_INDEX 0x09 | ||
217 | |||
218 | // IT8172 internal device registers | ||
219 | #define IT_TIMER_BASE 0x10800 | ||
220 | #define IT_CIR0_BASE 0x11000 | ||
221 | #define IT_UART_BASE 0x11800 | ||
222 | #define IT_SCR0_BASE 0x12000 | ||
223 | #define IT_SCR1_BASE 0x12800 | ||
224 | #define IT_PP_BASE 0x13000 | ||
225 | #define IT_I2C_BASE 0x14000 | ||
226 | #define IT_CIR1_BASE 0x15000 | ||
227 | |||
228 | // IT8172 Smart Card Reader offsets from IT_SCR*_BASE | ||
229 | #define IT_SCR_SFR 0x08 | ||
230 | #define IT_SCR_SCDR 0x09 | ||
231 | |||
232 | // IT8172 IT_SCR_SFR bit definition & mask | ||
233 | #define IT_SCR_SFR_GATE_UART 0x40 | ||
234 | #define IT_SCR_SFR_GATE_UART_BIT 6 | ||
235 | #define IT_SCR_SFR_GATE_UART_OFF 0 | ||
236 | #define IT_SCR_SFR_GATE_UART_ON 1 | ||
237 | #define IT_SCR_SFR_FET_CHARGE 0x30 | ||
238 | #define IT_SCR_SFR_FET_CHARGE_BIT 4 | ||
239 | #define IT_SCR_SFR_FET_CHARGE_3_3_US 3 | ||
240 | #define IT_SCR_SFR_FET_CHARGE_13_US 2 | ||
241 | #define IT_SCR_SFR_FET_CHARGE_53_US 1 | ||
242 | #define IT_SCR_SFR_FET_CHARGE_213_US 0 | ||
243 | #define IT_SCR_SFR_CARD_FREQ 0x0C | ||
244 | #define IT_SCR_SFR_CARD_FREQ_BIT 2 | ||
245 | #define IT_SCR_SFR_CARD_FREQ_STOP 3 | ||
246 | #define IT_SCR_SFR_CARD_FREQ_3_5_MHZ 0 | ||
247 | #define IT_SCR_SFR_CARD_FREQ_7_1_MHZ 2 | ||
248 | #define IT_SCR_SFR_CARD_FREQ_96_DIV_MHZ 1 | ||
249 | #define IT_SCR_SFR_FET_ACTIVE 0x02 | ||
250 | #define IT_SCR_SFR_FET_ACTIVE_BIT 1 | ||
251 | #define IT_SCR_SFR_FET_ACTIVE_INVERT 0 | ||
252 | #define IT_SCR_SFR_FET_ACTIVE_NONINVERT 1 | ||
253 | #define IT_SCR_SFR_ENABLE 0x01 | ||
254 | #define IT_SCR_SFR_ENABLE_BIT 0 | ||
255 | #define IT_SCR_SFR_ENABLE_OFF 0 | ||
256 | #define IT_SCR_SFR_ENABLE_ON 1 | ||
257 | |||
258 | // IT8172 IT_SCR_SCDR bit definition & mask | ||
259 | #define IT_SCR_SCDR_RESET_MODE 0x80 | ||
260 | #define IT_SCR_SCDR_RESET_MODE_BIT 7 | ||
261 | #define IT_SCR_SCDR_RESET_MODE_ASYNC 0 | ||
262 | #define IT_SCR_SCDR_RESET_MODE_SYNC 1 | ||
263 | #define IT_SCR_SCDR_DIVISOR 0x7F | ||
264 | #define IT_SCR_SCDR_DIVISOR_BIT 0 | ||
265 | #define IT_SCR_SCDR_DIVISOR_STOP_VAL_1 0x00 | ||
266 | #define IT_SCR_SCDR_DIVISOR_STOP_VAL_2 0x01 | ||
267 | #define IT_SCR_SCDR_DIVISOR_STOP_VAL_3 0x7F | ||
268 | |||
269 | // IT8172 DMA | ||
270 | #define IT_DMAC_BASE 0x16000 | ||
271 | #define IT_DMAC_BCAR0 0x00 | ||
272 | #define IT_DMAC_BCAR1 0x04 | ||
273 | #define IT_DMAC_BCAR2 0x08 | ||
274 | #define IT_DMAC_BCAR3 0x0C | ||
275 | #define IT_DMAC_BCCR0 0x02 | ||
276 | #define IT_DMAC_BCCR1 0x06 | ||
277 | #define IT_DMAC_BCCR2 0x0a | ||
278 | #define IT_DMAC_BCCR3 0x0e | ||
279 | #define IT_DMAC_CR 0x10 | ||
280 | #define IT_DMAC_SR 0x12 | ||
281 | #define IT_DMAC_ESR 0x13 | ||
282 | #define IT_DMAC_RQR 0x14 | ||
283 | #define IT_DMAC_MR 0x16 | ||
284 | #define IT_DMAC_EMR 0x17 | ||
285 | #define IT_DMAC_MKR 0x18 | ||
286 | #define IT_DMAC_PAR0 0x20 | ||
287 | #define IT_DMAC_PAR1 0x22 | ||
288 | #define IT_DMAC_PAR2 0x24 | ||
289 | #define IT_DMAC_PAR3 0x26 | ||
290 | |||
291 | // IT8172 IDE | ||
292 | #define IT_IDE_BASE 0x17800 | ||
293 | #define IT_IDE_STATUS 0x1F7 | ||
294 | |||
295 | // IT8172 Audio Controller | ||
296 | #define IT_AC_BASE 0x17000 | ||
297 | #define IT_AC_PCMOV 0x00 | ||
298 | #define IT_AC_FMOV 0x02 | ||
299 | #define IT_AC_I2SV 0x04 | ||
300 | #define IT_AC_DRSS 0x06 | ||
301 | #define IT_AC_PCC 0x08 | ||
302 | #define IT_AC_PCDL 0x0A | ||
303 | #define IT_AC_PCB1STA 0x0C | ||
304 | #define IT_AC_PCB2STA 0x10 | ||
305 | #define IT_AC_CAPCC 0x14 | ||
306 | #define IT_AC_CAPCDL 0x16 | ||
307 | #define IT_AC_CAPB1STA 0x18 | ||
308 | #define IT_AC_CAPB2STA 0x1C | ||
309 | #define IT_AC_CODECC 0x22 | ||
310 | #define IT_AC_I2SMC 0x24 | ||
311 | #define IT_AC_VS 0x26 | ||
312 | #define IT_AC_SRCS 0x28 | ||
313 | #define IT_AC_CIRCP 0x2A | ||
314 | #define IT_AC_CIRDP 0x2C | ||
315 | #define IT_AC_TM 0x4A | ||
316 | #define IT_AC_PFDP 0x4C | ||
317 | #define IT_AC_GC 0x54 | ||
318 | #define IT_AC_IMC 0x56 | ||
319 | #define IT_AC_ISC 0x5B | ||
320 | #define IT_AC_OPL3SR 0x68 | ||
321 | #define IT_AC_OPL3DWDR 0x69 | ||
322 | #define IT_AC_OPL3AB1W 0x6A | ||
323 | #define IT_AC_OPL3DW 0x6B | ||
324 | #define IT_AC_BPDC 0x70 | ||
325 | |||
326 | |||
327 | // IT8172 Timer | ||
328 | #define IT_TIMER_BASE 0x10800 | ||
329 | #define TIMER_TCVR0 0x00 | ||
330 | #define TIMER_TRVR0 0x02 | ||
331 | #define TIMER_TCR0 0x04 | ||
332 | #define TIMER_TIRR 0x06 | ||
333 | #define TIMER_TCVR1 0x08 | ||
334 | #define TIMER_TRVR1 0x0A | ||
335 | #define TIMER_TCR1 0x0C | ||
336 | #define TIMER_TIDR 0x0E | ||
337 | |||
338 | |||
339 | #define IT_WRITE(ofs, data) *(volatile u32 *)KSEG1ADDR((IT8172_BASE+ofs)) = data | ||
340 | #define IT_READ(ofs, data) data = *(volatile u32 *)KSEG1ADDR((IT8172_BASE+ofs)) | ||
341 | |||
342 | #define IT_IO_WRITE(ofs, data) *(volatile u32 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) = data | ||
343 | #define IT_IO_READ(ofs, data) data = *(volatile u32 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) | ||
344 | |||
345 | #define IT_IO_WRITE16(ofs, data) *(volatile u16 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) = data | ||
346 | #define IT_IO_READ16(ofs, data) data = *(volatile u16 *)KSEG1ADDR((IT8172_PCI_IO_BASE+ofs)) | ||
347 | |||
348 | #endif | ||
diff --git a/include/asm-mips/it8172/it8172_cir.h b/include/asm-mips/it8172/it8172_cir.h deleted file mode 100644 index 6a1dbd29f6d1..000000000000 --- a/include/asm-mips/it8172/it8172_cir.h +++ /dev/null | |||
@@ -1,140 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * BRIEF MODULE DESCRIPTION | ||
4 | * IT8172 Consumer IR port defines. | ||
5 | * | ||
6 | * Copyright 2001 MontaVista Software Inc. | ||
7 | * Author: MontaVista Software, Inc. | ||
8 | * ppopov@mvista.com or source@mvista.com | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | * | ||
15 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
16 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
17 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
18 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
21 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
22 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License along | ||
27 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
28 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
29 | */ | ||
30 | |||
31 | #define NUM_CIR_PORTS 2 | ||
32 | |||
33 | /* Master Control Register */ | ||
34 | #define CIR_RESET 0x1 | ||
35 | #define CIR_FIFO_CLEAR 0x2 | ||
36 | #define CIR_SET_FIFO_TL(x) (((x)&0x3)<<2) | ||
37 | #define CIR_ILE 0x10 | ||
38 | #define CIR_ILSEL 0x20 | ||
39 | |||
40 | /* Interrupt Enable Register */ | ||
41 | #define CIR_TLDLIE 0x1 | ||
42 | #define CIR_RDAIE 0x2 | ||
43 | #define CIR_RFOIE 0x4 | ||
44 | #define CIR_IEC 0x80 | ||
45 | |||
46 | /* Interrupt Identification Register */ | ||
47 | #define CIR_TLDLI 0x1 | ||
48 | #define CIR_RDAI 0x2 | ||
49 | #define CIR_RFOI 0x4 | ||
50 | #define CIR_NIP 0x80 | ||
51 | |||
52 | /* Carrier Frequency Register */ | ||
53 | #define CIR_SET_CF(x) ((x)&0x1f) | ||
54 | #define CFQ_38_480 0xB /* 38 KHz low, 480 KHz high */ | ||
55 | #define CIR_HCFS 0x20 | ||
56 | #define CIR_SET_HS(x) (((x)&0x1)<<5) | ||
57 | |||
58 | |||
59 | /* Receiver Control Register */ | ||
60 | #define CIR_SET_RXDCR(x) ((x)&0x7) | ||
61 | #define CIR_RXACT 0x8 | ||
62 | #define CIR_RXEND 0x10 | ||
63 | #define CIR_RDWOS 0x20 | ||
64 | #define CIR_SET_RDWOS(x) (((x)&0x1)<<5) | ||
65 | #define CIR_RXEN 0x80 | ||
66 | |||
67 | /* Transmitter Control Register */ | ||
68 | #define CIR_SET_TXMPW(x) ((x)&0x7) | ||
69 | #define CIR_SET_TXMPM(x) (((x)&0x3)<<3) | ||
70 | #define CIR_TXENDF 0x20 | ||
71 | #define CIR_TXRLE 0x40 | ||
72 | |||
73 | /* Receiver FIFO Status Register */ | ||
74 | #define CIR_RXFBC_MASK 0x3f | ||
75 | #define CIR_RXFTO 0x80 | ||
76 | |||
77 | /* Wakeup Code Length Register */ | ||
78 | #define CIR_SET_WCL ((x)&0x3f) | ||
79 | #define CIR_WCL_MASK(x) ((x)&0x3f) | ||
80 | |||
81 | /* Wakeup Power Control/Status Register */ | ||
82 | #define CIR_BTMON 0x2 | ||
83 | #define CIR_CIRON 0x4 | ||
84 | #define CIR_RCRST 0x10 | ||
85 | #define CIR_WCRST 0x20 | ||
86 | |||
87 | struct cir_port { | ||
88 | int port; | ||
89 | unsigned short baud_rate; | ||
90 | unsigned char fifo_tl; | ||
91 | unsigned char cfq; | ||
92 | unsigned char hcfs; | ||
93 | unsigned char rdwos; | ||
94 | unsigned char rxdcr; | ||
95 | }; | ||
96 | |||
97 | struct it8172_cir_regs { | ||
98 | unsigned char dr; /* data */ | ||
99 | char pad; | ||
100 | unsigned char mstcr; /* master control */ | ||
101 | char pad1; | ||
102 | unsigned char ier; /* interrupt enable */ | ||
103 | char pad2; | ||
104 | unsigned char iir; /* interrupt identification */ | ||
105 | char pad3; | ||
106 | unsigned char cfr; /* carrier frequency */ | ||
107 | char pad4; | ||
108 | unsigned char rcr; /* receiver control */ | ||
109 | char pad5; | ||
110 | unsigned char tcr; /* transmitter control */ | ||
111 | char pad6; | ||
112 | char pad7; | ||
113 | char pad8; | ||
114 | unsigned char bdlr; /* baud rate divisor low byte */ | ||
115 | char pad9; | ||
116 | unsigned char bdhr; /* baud rate divisor high byte */ | ||
117 | char pad10; | ||
118 | unsigned char tfsr; /* tx fifo byte count */ | ||
119 | char pad11; | ||
120 | unsigned char rfsr; /* rx fifo status */ | ||
121 | char pad12; | ||
122 | unsigned char wcl; /* wakeup code length */ | ||
123 | char pad13; | ||
124 | unsigned char wcr; /* wakeup code read/write */ | ||
125 | char pad14; | ||
126 | unsigned char wps; /* wakeup power control/status */ | ||
127 | }; | ||
128 | |||
129 | int cir_port_init(struct cir_port *cir); | ||
130 | extern void clear_fifo(struct cir_port *cir); | ||
131 | extern void enable_receiver(struct cir_port *cir); | ||
132 | extern void disable_receiver(struct cir_port *cir); | ||
133 | extern void enable_rx_demodulation(struct cir_port *cir); | ||
134 | extern void disable_rx_demodulation(struct cir_port *cir); | ||
135 | extern void set_rx_active(struct cir_port *cir); | ||
136 | extern void int_enable(struct cir_port *cir); | ||
137 | extern void rx_int_enable(struct cir_port *cir); | ||
138 | extern char get_int_status(struct cir_port *cir); | ||
139 | extern int cir_get_rx_count(struct cir_port *cir); | ||
140 | extern char cir_read_data(struct cir_port *cir); | ||
diff --git a/include/asm-mips/it8172/it8172_dbg.h b/include/asm-mips/it8172/it8172_dbg.h deleted file mode 100644 index f404ec7c03ac..000000000000 --- a/include/asm-mips/it8172/it8172_dbg.h +++ /dev/null | |||
@@ -1,38 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * BRIEF MODULE DESCRIPTION | ||
4 | * Function prototypes for low level uart routines to | ||
5 | * directly access a 16550 uart. | ||
6 | * | ||
7 | * Copyright 2000 MontaVista Software Inc. | ||
8 | * Author: MontaVista Software, Inc. | ||
9 | * ppopov@mvista.com or source@mvista.com | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify it | ||
12 | * under the terms of the GNU General Public License as published by the | ||
13 | * Free Software Foundation; either version 2 of the License, or (at your | ||
14 | * option) any later version. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
17 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
18 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
19 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
20 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
21 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
22 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
23 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
25 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | * | ||
27 | * You should have received a copy of the GNU General Public License along | ||
28 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
29 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
30 | */ | ||
31 | |||
32 | #include <linux/types.h> | ||
33 | |||
34 | extern void putch(const unsigned char c); | ||
35 | extern void puts(unsigned char *cp); | ||
36 | extern void fputs(unsigned char *cp); | ||
37 | extern void put64(uint64_t ul); | ||
38 | extern void put32(unsigned u); | ||
diff --git a/include/asm-mips/it8172/it8172_int.h b/include/asm-mips/it8172/it8172_int.h deleted file mode 100644 index 837e83ac25f5..000000000000 --- a/include/asm-mips/it8172/it8172_int.h +++ /dev/null | |||
@@ -1,144 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * BRIEF MODULE DESCRIPTION | ||
4 | * ITE 8172 Interrupt Numbering | ||
5 | * | ||
6 | * Copyright 2000 MontaVista Software Inc. | ||
7 | * Author: MontaVista Software, Inc. | ||
8 | * ppopov@mvista.com or source@mvista.com | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | * | ||
15 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
16 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
17 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
18 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
21 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
22 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License along | ||
27 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
28 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
29 | */ | ||
30 | |||
31 | #ifndef _MIPS_ITEINT_H | ||
32 | #define _MIPS_ITEINT_H | ||
33 | |||
34 | /* | ||
35 | * Here's the "strategy": | ||
36 | * We number the LPC serial irqs from 0 to 15, | ||
37 | * the local bus irqs from 16 to 31, | ||
38 | * the pci dev register interrupts from 32 to 47, | ||
39 | * and the non-maskable ints from 48 to 53. | ||
40 | */ | ||
41 | |||
42 | #define IT8172_LPC_IRQ_BASE 0 /* first LPC int number */ | ||
43 | #define IT8172_SERIRQ_0 (IT8172_LPC_IRQ_BASE + 0) | ||
44 | #define IT8172_SERIRQ_1 (IT8172_LPC_IRQ_BASE + 1) | ||
45 | #define IT8172_SERIRQ_2 (IT8172_LPC_IRQ_BASE + 2) | ||
46 | #define IT8172_SERIRQ_3 (IT8172_LPC_IRQ_BASE + 3) | ||
47 | #define IT8172_SERIRQ_4 (IT8172_LPC_IRQ_BASE + 4) | ||
48 | #define IT8172_SERIRQ_5 (IT8172_LPC_IRQ_BASE + 5) | ||
49 | #define IT8172_SERIRQ_6 (IT8172_LPC_IRQ_BASE + 6) | ||
50 | #define IT8172_SERIRQ_7 (IT8172_LPC_IRQ_BASE + 7) | ||
51 | #define IT8172_SERIRQ_8 (IT8172_LPC_IRQ_BASE + 8) | ||
52 | #define IT8172_SERIRQ_9 (IT8172_LPC_IRQ_BASE + 9) | ||
53 | #define IT8172_SERIRQ_10 (IT8172_LPC_IRQ_BASE + 10) | ||
54 | #define IT8172_SERIRQ_11 (IT8172_LPC_IRQ_BASE + 11) | ||
55 | #define IT8172_SERIRQ_12 (IT8172_LPC_IRQ_BASE + 12) | ||
56 | #define IT8172_SERIRQ_13 (IT8172_LPC_IRQ_BASE + 13) | ||
57 | #define IT8172_SERIRQ_14 (IT8172_LPC_IRQ_BASE + 14) | ||
58 | #define IT8172_SERIRQ_15 (IT8172_LPC_IRQ_BASE + 15) | ||
59 | |||
60 | #define IT8172_LB_IRQ_BASE 16 /* first local bus int number */ | ||
61 | #define IT8172_PPR_IRQ (IT8172_LB_IRQ_BASE + 0) /* parallel port */ | ||
62 | #define IT8172_TIMER0_IRQ (IT8172_LB_IRQ_BASE + 1) | ||
63 | #define IT8172_TIMER1_IRQ (IT8172_LB_IRQ_BASE + 2) | ||
64 | #define IT8172_I2C_IRQ (IT8172_LB_IRQ_BASE + 3) | ||
65 | #define IT8172_GPIO_IRQ (IT8172_LB_IRQ_BASE + 4) | ||
66 | #define IT8172_CIR0_IRQ (IT8172_LB_IRQ_BASE + 5) | ||
67 | #define IT8172_CIR1_IRQ (IT8172_LB_IRQ_BASE + 6) | ||
68 | #define IT8172_UART_IRQ (IT8172_LB_IRQ_BASE + 7) | ||
69 | #define IT8172_SCR0_IRQ (IT8172_LB_IRQ_BASE + 8) | ||
70 | #define IT8172_SCR1_IRQ (IT8172_LB_IRQ_BASE + 9) | ||
71 | #define IT8172_RTC_IRQ (IT8172_LB_IRQ_BASE + 10) | ||
72 | #define IT8172_IOCHK_IRQ (IT8172_LB_IRQ_BASE + 11) | ||
73 | /* 12 - 15 reserved */ | ||
74 | |||
75 | /* | ||
76 | * Note here that the pci dev registers includes bits for more than | ||
77 | * just the pci devices. | ||
78 | */ | ||
79 | #define IT8172_PCI_DEV_IRQ_BASE 32 /* first pci dev irq */ | ||
80 | #define IT8172_AC97_IRQ (IT8172_PCI_DEV_IRQ_BASE + 0) | ||
81 | #define IT8172_MC68K_IRQ (IT8172_PCI_DEV_IRQ_BASE + 1) | ||
82 | #define IT8172_IDE_IRQ (IT8172_PCI_DEV_IRQ_BASE + 2) | ||
83 | #define IT8172_USB_IRQ (IT8172_PCI_DEV_IRQ_BASE + 3) | ||
84 | #define IT8172_BRIDGE_MASTER_IRQ (IT8172_PCI_DEV_IRQ_BASE + 4) | ||
85 | #define IT8172_BRIDGE_TARGET_IRQ (IT8172_PCI_DEV_IRQ_BASE + 5) | ||
86 | #define IT8172_PCI_INTA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 6) | ||
87 | #define IT8172_PCI_INTB_IRQ (IT8172_PCI_DEV_IRQ_BASE + 7) | ||
88 | #define IT8172_PCI_INTC_IRQ (IT8172_PCI_DEV_IRQ_BASE + 8) | ||
89 | #define IT8172_PCI_INTD_IRQ (IT8172_PCI_DEV_IRQ_BASE + 9) | ||
90 | #define IT8172_S_INTA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 10) | ||
91 | #define IT8172_S_INTB_IRQ (IT8172_PCI_DEV_IRQ_BASE + 11) | ||
92 | #define IT8172_S_INTC_IRQ (IT8172_PCI_DEV_IRQ_BASE + 12) | ||
93 | #define IT8172_S_INTD_IRQ (IT8172_PCI_DEV_IRQ_BASE + 13) | ||
94 | #define IT8172_CDMA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 14) | ||
95 | #define IT8172_DMA_IRQ (IT8172_PCI_DEV_IRQ_BASE + 15) | ||
96 | |||
97 | #define IT8172_NMI_IRQ_BASE 48 | ||
98 | #define IT8172_SER_NMI_IRQ (IT8172_NMI_IRQ_BASE + 0) | ||
99 | #define IT8172_PCI_NMI_IRQ (IT8172_NMI_IRQ_BASE + 1) | ||
100 | #define IT8172_RTC_NMI_IRQ (IT8172_NMI_IRQ_BASE + 2) | ||
101 | #define IT8172_CPUIF_NMI_IRQ (IT8172_NMI_IRQ_BASE + 3) | ||
102 | #define IT8172_PMER_NMI_IRQ (IT8172_NMI_IRQ_BASE + 4) | ||
103 | #define IT8172_POWER_NMI_IRQ (IT8172_NMI_IRQ_BASE + 5) | ||
104 | |||
105 | #define IT8172_LAST_IRQ (IT8172_POWER_NMI_IRQ) | ||
106 | /* Finally, let's move over here the mips cpu timer interrupt. | ||
107 | */ | ||
108 | #define MIPS_CPU_TIMER_IRQ (NR_IRQS-1) | ||
109 | |||
110 | /* | ||
111 | * IT8172 Interrupt Controller Registers | ||
112 | */ | ||
113 | struct it8172_intc_regs { | ||
114 | volatile unsigned short lb_req; /* offset 0 */ | ||
115 | volatile unsigned short lb_mask; | ||
116 | volatile unsigned short lb_trigger; | ||
117 | volatile unsigned short lb_level; | ||
118 | unsigned char pad0[8]; | ||
119 | |||
120 | volatile unsigned short lpc_req; /* offset 0x10 */ | ||
121 | volatile unsigned short lpc_mask; | ||
122 | volatile unsigned short lpc_trigger; | ||
123 | volatile unsigned short lpc_level; | ||
124 | unsigned char pad1[8]; | ||
125 | |||
126 | volatile unsigned short pci_req; /* offset 0x20 */ | ||
127 | volatile unsigned short pci_mask; | ||
128 | volatile unsigned short pci_trigger; | ||
129 | volatile unsigned short pci_level; | ||
130 | unsigned char pad2[8]; | ||
131 | |||
132 | volatile unsigned short nmi_req; /* offset 0x30 */ | ||
133 | volatile unsigned short nmi_mask; | ||
134 | volatile unsigned short nmi_trigger; | ||
135 | volatile unsigned short nmi_level; | ||
136 | unsigned char pad3[6]; | ||
137 | |||
138 | volatile unsigned short nmi_redir; /* offset 0x3E */ | ||
139 | unsigned char pad4[0xBE]; | ||
140 | |||
141 | volatile unsigned short intstatus; /* offset 0xFE */ | ||
142 | }; | ||
143 | |||
144 | #endif /* _MIPS_ITEINT_H */ | ||
diff --git a/include/asm-mips/it8172/it8172_pci.h b/include/asm-mips/it8172/it8172_pci.h deleted file mode 100644 index 42c61f56eeba..000000000000 --- a/include/asm-mips/it8172/it8172_pci.h +++ /dev/null | |||
@@ -1,108 +0,0 @@ | |||
1 | /* | ||
2 | * | ||
3 | * BRIEF MODULE DESCRIPTION | ||
4 | * IT8172 system controller specific pci defines. | ||
5 | * | ||
6 | * Copyright 2000 MontaVista Software Inc. | ||
7 | * Author: MontaVista Software, Inc. | ||
8 | * ppopov@mvista.com or source@mvista.com | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | * | ||
15 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
16 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
17 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
18 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
19 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
20 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
21 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
22 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | * | ||
26 | * You should have received a copy of the GNU General Public License along | ||
27 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
28 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
29 | */ | ||
30 | |||
31 | #ifndef _8172PCI_H_ | ||
32 | #define _8172PCI_H_ | ||
33 | |||
34 | // PCI configuration space Type0 | ||
35 | #define PCI_IDREG 0x00 | ||
36 | #define PCI_CMDSTSREG 0x04 | ||
37 | #define PCI_CLASSREG 0x08 | ||
38 | #define PCI_BHLCREG 0x0C | ||
39 | #define PCI_BASE1REG 0x10 | ||
40 | #define PCI_BASE2REG 0x14 | ||
41 | #define PCI_BASE3REG 0x18 | ||
42 | #define PCI_BASE4REG 0x1C | ||
43 | #define PCI_BASE5REG 0x20 | ||
44 | #define PCI_BASE6REG 0x24 | ||
45 | #define PCI_ROMBASEREG 0x30 | ||
46 | #define PCI_INTRREG 0x3C | ||
47 | |||
48 | // PCI configuration space Type1 | ||
49 | #define PCI_BUSNOREG 0x18 | ||
50 | |||
51 | #define IT_PCI_VENDORID(x) ((x) & 0xFFFF) | ||
52 | #define IT_PCI_DEVICEID(x) (((x)>>16) & 0xFFFF) | ||
53 | |||
54 | // Command register | ||
55 | #define PCI_CMD_IOEN 0x00000001 | ||
56 | #define PCI_CMD_MEMEN 0x00000002 | ||
57 | #define PCI_CMD_BUSMASTER 0x00000004 | ||
58 | #define PCI_CMD_SPCYCLE 0x00000008 | ||
59 | #define PCI_CMD_WRINV 0x00000010 | ||
60 | #define PCI_CMD_VGASNOOP 0x00000020 | ||
61 | #define PCI_CMD_PERR 0x00000040 | ||
62 | #define PCI_CMD_WAITCTRL 0x00000080 | ||
63 | #define PCI_CMD_SERR 0x00000100 | ||
64 | #define PCI_CMD_FAST_BACKTOBACK 0x00000200 | ||
65 | |||
66 | // Status register | ||
67 | #define PCI_STS_66MHZ 0x00200000 | ||
68 | #define PCI_STS_SUPPORT_UDF 0x00400000 | ||
69 | #define PCI_STS_FAST_BACKTOBACK 0x00800000 | ||
70 | #define PCI_STS_DATA_PERR 0x01000000 | ||
71 | #define PCI_STS_DEVSEL0 0x02000000 | ||
72 | #define PCI_STS_DEVSEL1 0x04000000 | ||
73 | #define PCI_STS_SIG_TGTABORT 0x08000000 | ||
74 | #define PCI_STS_RCV_TGTABORT 0x10000000 | ||
75 | #define PCI_STS_RCV_MSTABORT 0x20000000 | ||
76 | #define PCI_STS_SYSERR 0x40000000 | ||
77 | #define PCI_STS_DETCT_PERR 0x80000000 | ||
78 | |||
79 | #define IT_PCI_CLASS(x) (((x)>>24) & 0xFF) | ||
80 | #define IT_PCI_SUBCLASS(x) (((x)>>16) & 0xFF) | ||
81 | #define IT_PCI_INTERFACE(x) (((x)>>8) & 0xFF) | ||
82 | #define IT_PCI_REVISION(x) ((x) & 0xFF) | ||
83 | |||
84 | // PCI class code | ||
85 | #define PCI_CLASS_BRIDGE 0x06 | ||
86 | |||
87 | // bridge subclass | ||
88 | #define PCI_SUBCLASS_BRIDGE_HOST 0x00 | ||
89 | #define PCI_SUBCLASS_BRIDGE_PCI 0x04 | ||
90 | |||
91 | // BHLCREG | ||
92 | #define IT_PCI_BIST(x) (((x)>>24) & 0xFF) | ||
93 | #define IT_PCI_HEADERTYPE(x) (((x)>>16) & 0xFF) | ||
94 | #define IT_PCI_LATENCYTIMER(x) (((x)>>8) & 0xFF) | ||
95 | #define IT_PCI_CACHELINESIZE(x) ((x) & 0xFF) | ||
96 | |||
97 | #define PCI_MULTIFUNC 0x80 | ||
98 | |||
99 | // INTRREG | ||
100 | #define IT_PCI_MAXLAT(x) (((x)>>24) & 0xFF) | ||
101 | #define IT_PCI_MINGNT(x) (((x)>>16) & 0xFF) | ||
102 | #define IT_PCI_INTRPIN(x) (((x)>>8) & 0xFF) | ||
103 | #define IT_PCI_INTRLINE(x) ((x) & 0xFF) | ||
104 | |||
105 | #define PCI_VENDOR_NEC 0x1033 | ||
106 | #define PCI_VENDOR_DEC 0x1101 | ||
107 | |||
108 | #endif // _8172PCI_H_ | ||
diff --git a/include/asm-mips/it8712.h b/include/asm-mips/it8712.h deleted file mode 100644 index ca2dee02a011..000000000000 --- a/include/asm-mips/it8712.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | |||
2 | #ifndef __IT8712_H__ | ||
3 | #define __IT8712_H__ | ||
4 | |||
5 | #define LPC_BASE_ADDR 0x14000000 | ||
6 | |||
7 | // MB PnP configuration register | ||
8 | #define LPC_KEY_ADDR 0x1400002E | ||
9 | #define LPC_DATA_ADDR 0x1400002F | ||
10 | |||
11 | // Device LDN | ||
12 | #define LDN_SERIAL1 0x01 | ||
13 | #define LDN_SERIAL2 0x02 | ||
14 | #define LDN_PARALLEL 0x03 | ||
15 | #define LDN_KEYBOARD 0x05 | ||
16 | #define LDN_MOUSE 0x06 | ||
17 | |||
18 | #define IT8712_UART1_PORT 0x3F8 | ||
19 | #define IT8712_UART2_PORT 0x2F8 | ||
20 | |||
21 | #ifndef ASM_ONLY | ||
22 | |||
23 | void LPCSetConfig(char LdnNumber, char Index, char data); | ||
24 | char LPCGetConfig(char LdnNumber, char Index); | ||
25 | |||
26 | #endif | ||
27 | |||
28 | #endif | ||
diff --git a/include/asm-mips/mach-ev64120/mach-gt64120.h b/include/asm-mips/mach-ev64120/mach-gt64120.h index 13b1443a7a65..7e272ce57ea3 100644 --- a/include/asm-mips/mach-ev64120/mach-gt64120.h +++ b/include/asm-mips/mach-ev64120/mach-gt64120.h | |||
@@ -42,6 +42,7 @@ extern unsigned long gt64120_base; | |||
42 | #define EV64120_UART0_REGS_BASE (KSEG1ADDR(EV64120_COM1_BASE_ADDR)) | 42 | #define EV64120_UART0_REGS_BASE (KSEG1ADDR(EV64120_COM1_BASE_ADDR)) |
43 | #define EV64120_UART1_REGS_BASE (KSEG1ADDR(EV64120_COM2_BASE_ADDR)) | 43 | #define EV64120_UART1_REGS_BASE (KSEG1ADDR(EV64120_COM2_BASE_ADDR)) |
44 | #define EV64120_BASE_BAUD ( 3686400 / 16 ) | 44 | #define EV64120_BASE_BAUD ( 3686400 / 16 ) |
45 | #define EV64120_UART_IRQ 6 | ||
45 | 46 | ||
46 | /* | 47 | /* |
47 | * PCI interrupts will come in on either the INTA or INTD interrups lines, | 48 | * PCI interrupts will come in on either the INTA or INTD interrups lines, |
diff --git a/include/asm-mips/mach-ip27/topology.h b/include/asm-mips/mach-ip27/topology.h index 59d26b52ba32..a13b715fd9ca 100644 --- a/include/asm-mips/mach-ip27/topology.h +++ b/include/asm-mips/mach-ip27/topology.h | |||
@@ -22,6 +22,7 @@ extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES]; | |||
22 | #define SD_NODE_INIT (struct sched_domain) { \ | 22 | #define SD_NODE_INIT (struct sched_domain) { \ |
23 | .span = CPU_MASK_NONE, \ | 23 | .span = CPU_MASK_NONE, \ |
24 | .parent = NULL, \ | 24 | .parent = NULL, \ |
25 | .child = NULL, \ | ||
25 | .groups = NULL, \ | 26 | .groups = NULL, \ |
26 | .min_interval = 8, \ | 27 | .min_interval = 8, \ |
27 | .max_interval = 32, \ | 28 | .max_interval = 32, \ |
diff --git a/include/asm-mips/ptrace.h b/include/asm-mips/ptrace.h index 4fb0fc43ffd7..5f3a9075cd28 100644 --- a/include/asm-mips/ptrace.h +++ b/include/asm-mips/ptrace.h | |||
@@ -44,9 +44,8 @@ struct pt_regs { | |||
44 | unsigned long cp0_epc; | 44 | unsigned long cp0_epc; |
45 | #ifdef CONFIG_MIPS_MT_SMTC | 45 | #ifdef CONFIG_MIPS_MT_SMTC |
46 | unsigned long cp0_tcstatus; | 46 | unsigned long cp0_tcstatus; |
47 | unsigned long smtc_pad; | ||
48 | #endif /* CONFIG_MIPS_MT_SMTC */ | 47 | #endif /* CONFIG_MIPS_MT_SMTC */ |
49 | }; | 48 | } __attribute__ ((aligned (8))); |
50 | 49 | ||
51 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ | 50 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ |
52 | #define PTRACE_GETREGS 12 | 51 | #define PTRACE_GETREGS 12 |
diff --git a/include/asm-mips/serial.h b/include/asm-mips/serial.h index 035637c67e7c..d7a65135d837 100644 --- a/include/asm-mips/serial.h +++ b/include/asm-mips/serial.h | |||
@@ -55,51 +55,18 @@ | |||
55 | * Galileo EV64120 evaluation board | 55 | * Galileo EV64120 evaluation board |
56 | */ | 56 | */ |
57 | #ifdef CONFIG_MIPS_EV64120 | 57 | #ifdef CONFIG_MIPS_EV64120 |
58 | #include <asm/galileo-boards/ev96100.h> | 58 | #include <mach-gt64120.h> |
59 | #include <asm/galileo-boards/ev96100int.h> | 59 | #define EV64120_SERIAL_PORT_DEFNS \ |
60 | #define EV96100_SERIAL_PORT_DEFNS \ | 60 | { .baud_base = EV64120_BASE_BAUD, .irq = EV64120_UART_IRQ, \ |
61 | { .baud_base = EV96100_BASE_BAUD, .irq = EV96100INT_UART_0, \ | ||
62 | .flags = STD_COM_FLAGS, \ | 61 | .flags = STD_COM_FLAGS, \ |
63 | .iomem_base = EV96100_UART0_REGS_BASE, .iomem_reg_shift = 2, \ | 62 | .iomem_base = EV64120_UART0_REGS_BASE, .iomem_reg_shift = 2, \ |
64 | .io_type = SERIAL_IO_MEM }, \ | 63 | .io_type = SERIAL_IO_MEM }, \ |
65 | { .baud_base = EV96100_BASE_BAUD, .irq = EV96100INT_UART_0, \ | 64 | { .baud_base = EV64120_BASE_BAUD, .irq = EV64120_UART_IRQ, \ |
66 | .flags = STD_COM_FLAGS, \ | 65 | .flags = STD_COM_FLAGS, \ |
67 | .iomem_base = EV96100_UART1_REGS_BASE, .iomem_reg_shift = 2, \ | 66 | .iomem_base = EV64120_UART1_REGS_BASE, .iomem_reg_shift = 2, \ |
68 | .io_type = SERIAL_IO_MEM }, | 67 | .io_type = SERIAL_IO_MEM }, |
69 | #else | 68 | #else |
70 | #define EV96100_SERIAL_PORT_DEFNS | 69 | #define EV64120_SERIAL_PORT_DEFNS |
71 | #endif | ||
72 | |||
73 | #ifdef CONFIG_MIPS_ITE8172 | ||
74 | #include <asm/it8172/it8172.h> | ||
75 | #include <asm/it8172/it8172_int.h> | ||
76 | #include <asm/it8712.h> | ||
77 | #define ITE_SERIAL_PORT_DEFNS \ | ||
78 | { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_UART_BASE), \ | ||
79 | .irq = IT8172_UART_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ | ||
80 | { .baud_base = (24000000/(16*13)), .port = (IT8172_PCI_IO_BASE + IT8712_UART1_PORT), \ | ||
81 | .irq = IT8172_SERIRQ_4, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ | ||
82 | /* Smart Card Reader 0 */ \ | ||
83 | { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_SCR0_BASE), \ | ||
84 | .irq = IT8172_SCR0_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ | ||
85 | /* Smart Card Reader 1 */ \ | ||
86 | { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_SCR1_BASE), \ | ||
87 | .irq = IT8172_SCR1_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, | ||
88 | #else | ||
89 | #define ITE_SERIAL_PORT_DEFNS | ||
90 | #endif | ||
91 | |||
92 | #ifdef CONFIG_MIPS_IVR | ||
93 | #include <asm/it8172/it8172.h> | ||
94 | #include <asm/it8172/it8172_int.h> | ||
95 | #define IVR_SERIAL_PORT_DEFNS \ | ||
96 | { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_UART_BASE), \ | ||
97 | .irq = IT8172_UART_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, \ | ||
98 | /* Smart Card Reader 1 */ \ | ||
99 | { .baud_base = BASE_BAUD, .port = (IT8172_PCI_IO_BASE + IT_SCR1_BASE), \ | ||
100 | .irq = IT8172_SCR1_IRQ, .flags = STD_COM_FLAGS, .port = PORT_16550 }, | ||
101 | #else | ||
102 | #define IVR_SERIAL_PORT_DEFNS | ||
103 | #endif | 70 | #endif |
104 | 71 | ||
105 | #ifdef CONFIG_HAVE_STD_PC_SERIAL_PORT | 72 | #ifdef CONFIG_HAVE_STD_PC_SERIAL_PORT |
@@ -239,10 +206,8 @@ | |||
239 | 206 | ||
240 | #define SERIAL_PORT_DFNS \ | 207 | #define SERIAL_PORT_DFNS \ |
241 | DDB5477_SERIAL_PORT_DEFNS \ | 208 | DDB5477_SERIAL_PORT_DEFNS \ |
242 | EV96100_SERIAL_PORT_DEFNS \ | 209 | EV64120_SERIAL_PORT_DEFNS \ |
243 | IP32_SERIAL_PORT_DEFNS \ | 210 | IP32_SERIAL_PORT_DEFNS \ |
244 | ITE_SERIAL_PORT_DEFNS \ | ||
245 | IVR_SERIAL_PORT_DEFNS \ | ||
246 | JAZZ_SERIAL_PORT_DEFNS \ | 211 | JAZZ_SERIAL_PORT_DEFNS \ |
247 | STD_SERIAL_PORT_DEFNS \ | 212 | STD_SERIAL_PORT_DEFNS \ |
248 | MOMENCO_OCELOT_G_SERIAL_PORT_DEFNS \ | 213 | MOMENCO_OCELOT_G_SERIAL_PORT_DEFNS \ |
diff --git a/include/asm-mips/stacktrace.h b/include/asm-mips/stacktrace.h new file mode 100644 index 000000000000..07f873351a86 --- /dev/null +++ b/include/asm-mips/stacktrace.h | |||
@@ -0,0 +1,44 @@ | |||
1 | #ifndef _ASM_STACKTRACE_H | ||
2 | #define _ASM_STACKTRACE_H | ||
3 | |||
4 | #include <asm/ptrace.h> | ||
5 | |||
6 | #ifdef CONFIG_KALLSYMS | ||
7 | extern int raw_show_trace; | ||
8 | extern unsigned long unwind_stack(struct task_struct *task, unsigned long *sp, | ||
9 | unsigned long pc, unsigned long *ra); | ||
10 | #else | ||
11 | #define raw_show_trace 1 | ||
12 | #define unwind_stack(task, sp, pc, ra) 0 | ||
13 | #endif | ||
14 | |||
15 | static __always_inline void prepare_frametrace(struct pt_regs *regs) | ||
16 | { | ||
17 | #ifndef CONFIG_KALLSYMS | ||
18 | /* | ||
19 | * Remove any garbage that may be in regs (specially func | ||
20 | * addresses) to avoid show_raw_backtrace() to report them | ||
21 | */ | ||
22 | memset(regs, 0, sizeof(*regs)); | ||
23 | #endif | ||
24 | __asm__ __volatile__( | ||
25 | ".set push\n\t" | ||
26 | ".set noat\n\t" | ||
27 | #ifdef CONFIG_64BIT | ||
28 | "1: dla $1, 1b\n\t" | ||
29 | "sd $1, %0\n\t" | ||
30 | "sd $29, %1\n\t" | ||
31 | "sd $31, %2\n\t" | ||
32 | #else | ||
33 | "1: la $1, 1b\n\t" | ||
34 | "sw $1, %0\n\t" | ||
35 | "sw $29, %1\n\t" | ||
36 | "sw $31, %2\n\t" | ||
37 | #endif | ||
38 | ".set pop\n\t" | ||
39 | : "=m" (regs->cp0_epc), | ||
40 | "=m" (regs->regs[29]), "=m" (regs->regs[31]) | ||
41 | : : "memory"); | ||
42 | } | ||
43 | |||
44 | #endif /* _ASM_STACKTRACE_H */ | ||
diff --git a/include/asm-mips/tx4938/tx4938_mips.h b/include/asm-mips/tx4938/tx4938_mips.h index cf89b205f103..5f8498fef005 100644 --- a/include/asm-mips/tx4938/tx4938_mips.h +++ b/include/asm-mips/tx4938/tx4938_mips.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-mips/tx4938/tx4938_bitmask.h | 2 | * linux/include/asm-mips/tx4938/tx4938_mips.h |
3 | * Generic bitmask definitions | 3 | * Generic bitmask definitions |
4 | * | 4 | * |
5 | * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the | 5 | * 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the |
diff --git a/include/asm-mips/unistd.h b/include/asm-mips/unistd.h index c39142920fe6..685c91467e63 100644 --- a/include/asm-mips/unistd.h +++ b/include/asm-mips/unistd.h | |||
@@ -1212,45 +1212,6 @@ type name (atype a,btype b,ctype c,dtype d,etype e,ftype f) \ | |||
1212 | # define __ARCH_WANT_COMPAT_SYS_TIME | 1212 | # define __ARCH_WANT_COMPAT_SYS_TIME |
1213 | # endif | 1213 | # endif |
1214 | 1214 | ||
1215 | #ifdef __KERNEL_SYSCALLS__ | ||
1216 | |||
1217 | #include <linux/compiler.h> | ||
1218 | #include <linux/types.h> | ||
1219 | #include <linux/linkage.h> | ||
1220 | #include <asm/ptrace.h> | ||
1221 | #include <asm/sim.h> | ||
1222 | |||
1223 | /* | ||
1224 | * we need this inline - forking from kernel space will result | ||
1225 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
1226 | * is no problem, but for the stack. This is handled by not letting | ||
1227 | * main() use the stack at all after fork(). Thus, no function | ||
1228 | * calls - which means inline code for fork too, as otherwise we | ||
1229 | * would use the stack upon exit from 'fork()'. | ||
1230 | * | ||
1231 | * Actually only pause and fork are needed inline, so that there | ||
1232 | * won't be any messing with the stack from main(), but we define | ||
1233 | * some others too. | ||
1234 | */ | ||
1235 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
1236 | |||
1237 | asmlinkage unsigned long sys_mmap( | ||
1238 | unsigned long addr, size_t len, | ||
1239 | int prot, int flags, | ||
1240 | int fd, off_t offset); | ||
1241 | asmlinkage long sys_mmap2( | ||
1242 | unsigned long addr, unsigned long len, | ||
1243 | unsigned long prot, unsigned long flags, | ||
1244 | unsigned long fd, unsigned long pgoff); | ||
1245 | asmlinkage int sys_execve(nabi_no_regargs struct pt_regs regs); | ||
1246 | asmlinkage int sys_pipe(nabi_no_regargs struct pt_regs regs); | ||
1247 | struct sigaction; | ||
1248 | asmlinkage long sys_rt_sigaction(int sig, | ||
1249 | const struct sigaction __user *act, | ||
1250 | struct sigaction __user *oact, | ||
1251 | size_t sigsetsize); | ||
1252 | |||
1253 | #endif /* __KERNEL_SYSCALLS__ */ | ||
1254 | #endif /* !__ASSEMBLY__ */ | 1215 | #endif /* !__ASSEMBLY__ */ |
1255 | 1216 | ||
1256 | /* | 1217 | /* |
diff --git a/include/asm-parisc/agp.h b/include/asm-parisc/agp.h new file mode 100644 index 000000000000..9f61d4eb6c01 --- /dev/null +++ b/include/asm-parisc/agp.h | |||
@@ -0,0 +1,25 @@ | |||
1 | #ifndef _ASM_PARISC_AGP_H | ||
2 | #define _ASM_PARISC_AGP_H | ||
3 | |||
4 | /* | ||
5 | * PARISC specific AGP definitions. | ||
6 | * Copyright (c) 2006 Kyle McMartin <kyle@parisc-linux.org> | ||
7 | * | ||
8 | */ | ||
9 | |||
10 | #define map_page_into_agp(page) /* nothing */ | ||
11 | #define unmap_page_from_agp(page) /* nothing */ | ||
12 | #define flush_agp_mappings() /* nothing */ | ||
13 | #define flush_agp_cache() mb() | ||
14 | |||
15 | /* Convert a physical address to an address suitable for the GART. */ | ||
16 | #define phys_to_gart(x) (x) | ||
17 | #define gart_to_phys(x) (x) | ||
18 | |||
19 | /* GATT allocation. Returns/accepts GATT kernel virtual address. */ | ||
20 | #define alloc_gatt_pages(order) \ | ||
21 | ((char *)__get_free_pages(GFP_KERNEL, (order))) | ||
22 | #define free_gatt_pages(table, order) \ | ||
23 | free_pages((unsigned long)(table), (order)) | ||
24 | |||
25 | #endif /* _ASM_PARISC_AGP_H */ | ||
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 1a7bfe699e0c..5a1e0e8b1c32 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
@@ -29,7 +29,8 @@ | |||
29 | #define LDREGX ldd,s | 29 | #define LDREGX ldd,s |
30 | #define LDREGM ldd,mb | 30 | #define LDREGM ldd,mb |
31 | #define STREGM std,ma | 31 | #define STREGM std,ma |
32 | #define SHRREG shrd | 32 | #define SHRREG shrd |
33 | #define SHLREG shld | ||
33 | #define RP_OFFSET 16 | 34 | #define RP_OFFSET 16 |
34 | #define FRAME_SIZE 128 | 35 | #define FRAME_SIZE 128 |
35 | #define CALLEE_REG_FRAME_SIZE 144 | 36 | #define CALLEE_REG_FRAME_SIZE 144 |
@@ -39,7 +40,8 @@ | |||
39 | #define LDREGX ldwx,s | 40 | #define LDREGX ldwx,s |
40 | #define LDREGM ldwm | 41 | #define LDREGM ldwm |
41 | #define STREGM stwm | 42 | #define STREGM stwm |
42 | #define SHRREG shr | 43 | #define SHRREG shr |
44 | #define SHLREG shlw | ||
43 | #define RP_OFFSET 20 | 45 | #define RP_OFFSET 20 |
44 | #define FRAME_SIZE 64 | 46 | #define FRAME_SIZE 64 |
45 | #define CALLEE_REG_FRAME_SIZE 128 | 47 | #define CALLEE_REG_FRAME_SIZE 128 |
diff --git a/include/asm-parisc/cacheflush.h b/include/asm-parisc/cacheflush.h index 0b459cdfbd6f..2bc41f2e0271 100644 --- a/include/asm-parisc/cacheflush.h +++ b/include/asm-parisc/cacheflush.h | |||
@@ -191,16 +191,38 @@ flush_anon_page(struct page *page, unsigned long vmaddr) | |||
191 | } | 191 | } |
192 | #define ARCH_HAS_FLUSH_ANON_PAGE | 192 | #define ARCH_HAS_FLUSH_ANON_PAGE |
193 | 193 | ||
194 | static inline void | 194 | #define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE |
195 | flush_kernel_dcache_page(struct page *page) | 195 | void flush_kernel_dcache_page_addr(void *addr); |
196 | static inline void flush_kernel_dcache_page(struct page *page) | ||
196 | { | 197 | { |
197 | flush_kernel_dcache_page_asm(page_address(page)); | 198 | flush_kernel_dcache_page_addr(page_address(page)); |
198 | } | 199 | } |
199 | #define ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE | ||
200 | 200 | ||
201 | #ifdef CONFIG_DEBUG_RODATA | 201 | #ifdef CONFIG_DEBUG_RODATA |
202 | void mark_rodata_ro(void); | 202 | void mark_rodata_ro(void); |
203 | #endif | 203 | #endif |
204 | 204 | ||
205 | #ifdef CONFIG_PA8X00 | ||
206 | /* Only pa8800, pa8900 needs this */ | ||
207 | #define ARCH_HAS_KMAP | ||
208 | |||
209 | void kunmap_parisc(void *addr); | ||
210 | |||
211 | static inline void *kmap(struct page *page) | ||
212 | { | ||
213 | might_sleep(); | ||
214 | return page_address(page); | ||
215 | } | ||
216 | |||
217 | #define kunmap(page) kunmap_parisc(page_address(page)) | ||
218 | |||
219 | #define kmap_atomic(page, idx) page_address(page) | ||
220 | |||
221 | #define kunmap_atomic(addr, idx) kunmap_parisc(addr) | ||
222 | |||
223 | #define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn)) | ||
224 | #define kmap_atomic_to_page(ptr) virt_to_page(ptr) | ||
225 | #endif | ||
226 | |||
205 | #endif /* _PARISC_CACHEFLUSH_H */ | 227 | #endif /* _PARISC_CACHEFLUSH_H */ |
206 | 228 | ||
diff --git a/include/asm-parisc/compat.h b/include/asm-parisc/compat.h index 71b4eeea205a..fe8579023531 100644 --- a/include/asm-parisc/compat.h +++ b/include/asm-parisc/compat.h | |||
@@ -5,7 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | #include <linux/types.h> | 6 | #include <linux/types.h> |
7 | #include <linux/sched.h> | 7 | #include <linux/sched.h> |
8 | #include <linux/personality.h> | 8 | #include <linux/thread_info.h> |
9 | 9 | ||
10 | #define COMPAT_USER_HZ 100 | 10 | #define COMPAT_USER_HZ 100 |
11 | 11 | ||
@@ -152,7 +152,7 @@ static __inline__ void __user *compat_alloc_user_space(long len) | |||
152 | 152 | ||
153 | static inline int __is_compat_task(struct task_struct *t) | 153 | static inline int __is_compat_task(struct task_struct *t) |
154 | { | 154 | { |
155 | return personality(t->personality) == PER_LINUX32; | 155 | return test_ti_thread_flag(t->thread_info, TIF_32BIT); |
156 | } | 156 | } |
157 | 157 | ||
158 | static inline int is_compat_task(void) | 158 | static inline int is_compat_task(void) |
diff --git a/include/asm-parisc/dma.h b/include/asm-parisc/dma.h index 9979c3cb3745..da2cf373e31c 100644 --- a/include/asm-parisc/dma.h +++ b/include/asm-parisc/dma.h | |||
@@ -72,18 +72,13 @@ | |||
72 | #define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */ | 72 | #define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */ |
73 | #define DMA2_EXT_MODE_REG (0x400 | DMA2_MODE_REG) | 73 | #define DMA2_EXT_MODE_REG (0x400 | DMA2_MODE_REG) |
74 | 74 | ||
75 | extern spinlock_t dma_spin_lock; | ||
76 | |||
77 | static __inline__ unsigned long claim_dma_lock(void) | 75 | static __inline__ unsigned long claim_dma_lock(void) |
78 | { | 76 | { |
79 | unsigned long flags; | 77 | return 0; |
80 | spin_lock_irqsave(&dma_spin_lock, flags); | ||
81 | return flags; | ||
82 | } | 78 | } |
83 | 79 | ||
84 | static __inline__ void release_dma_lock(unsigned long flags) | 80 | static __inline__ void release_dma_lock(unsigned long flags) |
85 | { | 81 | { |
86 | spin_unlock_irqrestore(&dma_spin_lock, flags); | ||
87 | } | 82 | } |
88 | 83 | ||
89 | 84 | ||
diff --git a/include/asm-parisc/futex.h b/include/asm-parisc/futex.h index 6a332a9f099c..d84bbb283fd1 100644 --- a/include/asm-parisc/futex.h +++ b/include/asm-parisc/futex.h | |||
@@ -1,6 +1,71 @@ | |||
1 | #ifndef _ASM_FUTEX_H | 1 | #ifndef _ASM_PARISC_FUTEX_H |
2 | #define _ASM_FUTEX_H | 2 | #define _ASM_PARISC_FUTEX_H |
3 | 3 | ||
4 | #include <asm-generic/futex.h> | 4 | #ifdef __KERNEL__ |
5 | 5 | ||
6 | #include <linux/futex.h> | ||
7 | #include <asm/errno.h> | ||
8 | #include <asm/uaccess.h> | ||
9 | |||
10 | static inline int | ||
11 | futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | ||
12 | { | ||
13 | int op = (encoded_op >> 28) & 7; | ||
14 | int cmp = (encoded_op >> 24) & 15; | ||
15 | int oparg = (encoded_op << 8) >> 20; | ||
16 | int cmparg = (encoded_op << 20) >> 20; | ||
17 | int oldval = 0, ret; | ||
18 | if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) | ||
19 | oparg = 1 << oparg; | ||
20 | |||
21 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | ||
22 | return -EFAULT; | ||
23 | |||
24 | inc_preempt_count(); | ||
25 | |||
26 | switch (op) { | ||
27 | case FUTEX_OP_SET: | ||
28 | case FUTEX_OP_ADD: | ||
29 | case FUTEX_OP_OR: | ||
30 | case FUTEX_OP_ANDN: | ||
31 | case FUTEX_OP_XOR: | ||
32 | default: | ||
33 | ret = -ENOSYS; | ||
34 | } | ||
35 | |||
36 | dec_preempt_count(); | ||
37 | |||
38 | if (!ret) { | ||
39 | switch (cmp) { | ||
40 | case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; | ||
41 | case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; | ||
42 | case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; | ||
43 | case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; | ||
44 | case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; | ||
45 | case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; | ||
46 | default: ret = -ENOSYS; | ||
47 | } | ||
48 | } | ||
49 | return ret; | ||
50 | } | ||
51 | |||
52 | /* Non-atomic version */ | ||
53 | static inline int | ||
54 | futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | ||
55 | { | ||
56 | int err = 0; | ||
57 | int uval; | ||
58 | |||
59 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) | ||
60 | return -EFAULT; | ||
61 | |||
62 | err = get_user(uval, uaddr); | ||
63 | if (err) return -EFAULT; | ||
64 | if (uval == oldval) | ||
65 | err = put_user(newval, uaddr); | ||
66 | if (err) return -EFAULT; | ||
67 | return uval; | ||
68 | } | ||
69 | |||
70 | #endif | ||
6 | #endif | 71 | #endif |
diff --git a/include/asm-parisc/io.h b/include/asm-parisc/io.h index b9eb245b8874..c1963ce19dd2 100644 --- a/include/asm-parisc/io.h +++ b/include/asm-parisc/io.h | |||
@@ -134,7 +134,7 @@ extern inline void __iomem * ioremap(unsigned long offset, unsigned long size) | |||
134 | } | 134 | } |
135 | #define ioremap_nocache(off, sz) ioremap((off), (sz)) | 135 | #define ioremap_nocache(off, sz) ioremap((off), (sz)) |
136 | 136 | ||
137 | extern void iounmap(void __iomem *addr); | 137 | extern void iounmap(const volatile void __iomem *addr); |
138 | 138 | ||
139 | static inline unsigned char __raw_readb(const volatile void __iomem *addr) | 139 | static inline unsigned char __raw_readb(const volatile void __iomem *addr) |
140 | { | 140 | { |
diff --git a/include/asm-parisc/iosapic.h b/include/asm-parisc/iosapic.h deleted file mode 100644 index 613390e6805c..000000000000 --- a/include/asm-parisc/iosapic.h +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | /* | ||
2 | ** This file is private to iosapic driver. | ||
3 | ** If stuff needs to be used by another driver, move it to a common file. | ||
4 | ** | ||
5 | ** WARNING: fields most data structures here are ordered to make sure | ||
6 | ** they pack nicely for 64-bit compilation. (ie sizeof(long) == 8) | ||
7 | */ | ||
8 | |||
9 | |||
10 | /* | ||
11 | ** I/O SAPIC init function | ||
12 | ** Caller knows where an I/O SAPIC is. LBA has an integrated I/O SAPIC. | ||
13 | ** Call setup as part of per instance initialization. | ||
14 | ** (ie *not* init_module() function unless only one is present.) | ||
15 | ** fixup_irq is to initialize PCI IRQ line support and | ||
16 | ** virtualize pcidev->irq value. To be called by pci_fixup_bus(). | ||
17 | */ | ||
18 | extern void *iosapic_register(unsigned long hpa); | ||
19 | extern int iosapic_fixup_irq(void *obj, struct pci_dev *pcidev); | ||
20 | |||
21 | |||
22 | #ifdef __IA64__ | ||
23 | /* | ||
24 | ** PA: PIB (Processor Interrupt Block) is handled by Runway bus adapter. | ||
25 | ** and is hardcoded to 0xfeeNNNN0 where NNNN is id_eid field. | ||
26 | ** | ||
27 | ** IA64: PIB is handled by "Local SAPIC" (integrated in the processor). | ||
28 | */ | ||
29 | struct local_sapic_info { | ||
30 | struct local_sapic_info *lsi_next; /* point to next CPU info */ | ||
31 | int *lsi_cpu_id; /* point to logical CPU id */ | ||
32 | unsigned long *lsi_id_eid; /* point to IA-64 CPU id */ | ||
33 | int *lsi_status; /* point to CPU status */ | ||
34 | void *lsi_private; /* point to special info */ | ||
35 | }; | ||
36 | |||
37 | /* | ||
38 | ** "root" data structure which ties everything together. | ||
39 | ** Should always be able to start with sapic_root and locate | ||
40 | ** the desired information. | ||
41 | */ | ||
42 | struct sapic_info { | ||
43 | struct sapic_info *si_next; /* info is per cell */ | ||
44 | int si_cellid; /* cell id */ | ||
45 | unsigned int si_status; /* status */ | ||
46 | char *si_pib_base; /* intr blk base address */ | ||
47 | local_sapic_info_t *si_local_info; | ||
48 | io_sapic_info_t *si_io_info; | ||
49 | extint_info_t *si_extint_info;/* External Intr info */ | ||
50 | }; | ||
51 | |||
52 | #endif /* IA64 */ | ||
53 | |||
diff --git a/include/asm-parisc/irq.h b/include/asm-parisc/irq.h index 5cae260615a2..399c81981ed5 100644 --- a/include/asm-parisc/irq.h +++ b/include/asm-parisc/irq.h | |||
@@ -31,7 +31,7 @@ static __inline__ int irq_canonicalize(int irq) | |||
31 | return (irq == 2) ? 9 : irq; | 31 | return (irq == 2) ? 9 : irq; |
32 | } | 32 | } |
33 | 33 | ||
34 | struct hw_interrupt_type; | 34 | struct irq_chip; |
35 | 35 | ||
36 | /* | 36 | /* |
37 | * Some useful "we don't have to do anything here" handlers. Should | 37 | * Some useful "we don't have to do anything here" handlers. Should |
@@ -39,6 +39,8 @@ struct hw_interrupt_type; | |||
39 | */ | 39 | */ |
40 | void no_ack_irq(unsigned int irq); | 40 | void no_ack_irq(unsigned int irq); |
41 | void no_end_irq(unsigned int irq); | 41 | void no_end_irq(unsigned int irq); |
42 | void cpu_ack_irq(unsigned int irq); | ||
43 | void cpu_end_irq(unsigned int irq); | ||
42 | 44 | ||
43 | extern int txn_alloc_irq(unsigned int nbits); | 45 | extern int txn_alloc_irq(unsigned int nbits); |
44 | extern int txn_claim_irq(int); | 46 | extern int txn_claim_irq(int); |
@@ -46,7 +48,7 @@ extern unsigned int txn_alloc_data(unsigned int); | |||
46 | extern unsigned long txn_alloc_addr(unsigned int); | 48 | extern unsigned long txn_alloc_addr(unsigned int); |
47 | extern unsigned long txn_affinity_addr(unsigned int irq, int cpu); | 49 | extern unsigned long txn_affinity_addr(unsigned int irq, int cpu); |
48 | 50 | ||
49 | extern int cpu_claim_irq(unsigned int irq, struct hw_interrupt_type *, void *); | 51 | extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *); |
50 | extern int cpu_check_affinity(unsigned int irq, cpumask_t *dest); | 52 | extern int cpu_check_affinity(unsigned int irq, cpumask_t *dest); |
51 | 53 | ||
52 | /* soft power switch support (power.c) */ | 54 | /* soft power switch support (power.c) */ |
diff --git a/include/asm-parisc/mckinley.h b/include/asm-parisc/mckinley.h new file mode 100644 index 000000000000..d1ea6f12915e --- /dev/null +++ b/include/asm-parisc/mckinley.h | |||
@@ -0,0 +1,9 @@ | |||
1 | #ifndef ASM_PARISC_MCKINLEY_H | ||
2 | #define ASM_PARISC_MCKINLEY_H | ||
3 | #ifdef __KERNEL__ | ||
4 | |||
5 | /* declared in arch/parisc/kernel/setup.c */ | ||
6 | extern struct proc_dir_entry * proc_mckinley_root; | ||
7 | |||
8 | #endif /*__KERNEL__*/ | ||
9 | #endif /*ASM_PARISC_MCKINLEY_H*/ | ||
diff --git a/include/asm-parisc/page.h b/include/asm-parisc/page.h index 57d6d82756dd..3567208191e3 100644 --- a/include/asm-parisc/page.h +++ b/include/asm-parisc/page.h | |||
@@ -26,24 +26,10 @@ | |||
26 | 26 | ||
27 | struct page; | 27 | struct page; |
28 | 28 | ||
29 | extern void purge_kernel_dcache_page(unsigned long); | 29 | void copy_user_page_asm(void *to, void *from); |
30 | extern void copy_user_page_asm(void *to, void *from); | 30 | void copy_user_page(void *vto, void *vfrom, unsigned long vaddr, |
31 | extern void clear_user_page_asm(void *page, unsigned long vaddr); | 31 | struct page *pg); |
32 | 32 | void clear_user_page(void *page, unsigned long vaddr, struct page *pg); | |
33 | static inline void | ||
34 | copy_user_page(void *vto, void *vfrom, unsigned long vaddr, struct page *pg) | ||
35 | { | ||
36 | copy_user_page_asm(vto, vfrom); | ||
37 | flush_kernel_dcache_page_asm(vto); | ||
38 | /* XXX: ppc flushes icache too, should we? */ | ||
39 | } | ||
40 | |||
41 | static inline void | ||
42 | clear_user_page(void *page, unsigned long vaddr, struct page *pg) | ||
43 | { | ||
44 | purge_kernel_dcache_page((unsigned long)page); | ||
45 | clear_user_page_asm(page, vaddr); | ||
46 | } | ||
47 | 33 | ||
48 | /* | 34 | /* |
49 | * These are used to make use of C type-checking.. | 35 | * These are used to make use of C type-checking.. |
diff --git a/include/asm-parisc/param.h b/include/asm-parisc/param.h index 07cb9b93cfe2..32e03d877858 100644 --- a/include/asm-parisc/param.h +++ b/include/asm-parisc/param.h | |||
@@ -2,13 +2,9 @@ | |||
2 | #define _ASMPARISC_PARAM_H | 2 | #define _ASMPARISC_PARAM_H |
3 | 3 | ||
4 | #ifdef __KERNEL__ | 4 | #ifdef __KERNEL__ |
5 | # ifdef CONFIG_PA20 | 5 | #define HZ CONFIG_HZ |
6 | # define HZ 1000 /* Faster machines */ | 6 | #define USER_HZ 100 /* some user API use "ticks" */ |
7 | # else | 7 | #define CLOCKS_PER_SEC (USER_HZ) /* like times() */ |
8 | # define HZ 100 /* Internal kernel timer frequency */ | ||
9 | # endif | ||
10 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | ||
11 | # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ | ||
12 | #endif | 8 | #endif |
13 | 9 | ||
14 | #ifndef HZ | 10 | #ifndef HZ |
diff --git a/include/asm-parisc/parisc-device.h b/include/asm-parisc/parisc-device.h index 1d247e32a608..e12624d8941d 100644 --- a/include/asm-parisc/parisc-device.h +++ b/include/asm-parisc/parisc-device.h | |||
@@ -1,3 +1,6 @@ | |||
1 | #ifndef _ASM_PARISC_PARISC_DEVICE_H_ | ||
2 | #define _ASM_PARISC_PARISC_DEVICE_H_ | ||
3 | |||
1 | #include <linux/device.h> | 4 | #include <linux/device.h> |
2 | 5 | ||
3 | struct parisc_device { | 6 | struct parisc_device { |
@@ -57,3 +60,5 @@ parisc_get_drvdata(struct parisc_device *d) | |||
57 | } | 60 | } |
58 | 61 | ||
59 | extern struct bus_type parisc_bus_type; | 62 | extern struct bus_type parisc_bus_type; |
63 | |||
64 | #endif /*_ASM_PARISC_PARISC_DEVICE_H_*/ | ||
diff --git a/include/asm-parisc/pci.h b/include/asm-parisc/pci.h index 8b631f47eb25..7b8ad118d2fe 100644 --- a/include/asm-parisc/pci.h +++ b/include/asm-parisc/pci.h | |||
@@ -293,4 +293,9 @@ static inline void pcibios_penalize_isa_irq(int irq, int active) | |||
293 | /* We don't need to penalize isa irq's */ | 293 | /* We don't need to penalize isa irq's */ |
294 | } | 294 | } |
295 | 295 | ||
296 | static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | ||
297 | { | ||
298 | return channel ? 15 : 14; | ||
299 | } | ||
300 | |||
296 | #endif /* __ASM_PARISC_PCI_H */ | 301 | #endif /* __ASM_PARISC_PCI_H */ |
diff --git a/include/asm-parisc/prefetch.h b/include/asm-parisc/prefetch.h new file mode 100644 index 000000000000..5d021726fa33 --- /dev/null +++ b/include/asm-parisc/prefetch.h | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * include/asm-parisc/prefetch.h | ||
3 | * | ||
4 | * PA 2.0 defines data prefetch instructions on page 6-11 of the Kane book. | ||
5 | * In addition, many implementations do hardware prefetching of both | ||
6 | * instructions and data. | ||
7 | * | ||
8 | * PA7300LC (page 14-4 of the ERS) also implements prefetching by a load | ||
9 | * to gr0 but not in a way that Linux can use. If the load would cause an | ||
10 | * interruption (eg due to prefetching 0), it is suppressed on PA2.0 | ||
11 | * processors, but not on 7300LC. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #ifndef __ASM_PARISC_PREFETCH_H | ||
16 | #define __ASM_PARISC_PREFETCH_H | ||
17 | |||
18 | #ifndef __ASSEMBLY__ | ||
19 | #ifdef CONFIG_PREFETCH | ||
20 | |||
21 | #define ARCH_HAS_PREFETCH | ||
22 | extern inline void prefetch(const void *addr) | ||
23 | { | ||
24 | __asm__("ldw 0(%0), %%r0" : : "r" (addr)); | ||
25 | } | ||
26 | |||
27 | /* LDD is a PA2.0 addition. */ | ||
28 | #ifdef CONFIG_PA20 | ||
29 | #define ARCH_HAS_PREFETCHW | ||
30 | extern inline void prefetchw(const void *addr) | ||
31 | { | ||
32 | __asm__("ldd 0(%0), %%r0" : : "r" (addr)); | ||
33 | } | ||
34 | #endif /* CONFIG_PA20 */ | ||
35 | |||
36 | #endif /* CONFIG_PREFETCH */ | ||
37 | #endif /* __ASSEMBLY__ */ | ||
38 | |||
39 | #endif /* __ASM_PARISC_PROCESSOR_H */ | ||
diff --git a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h index b73626f040da..fd7866dc8c83 100644 --- a/include/asm-parisc/processor.h +++ b/include/asm-parisc/processor.h | |||
@@ -9,6 +9,8 @@ | |||
9 | #define __ASM_PARISC_PROCESSOR_H | 9 | #define __ASM_PARISC_PROCESSOR_H |
10 | 10 | ||
11 | #ifndef __ASSEMBLY__ | 11 | #ifndef __ASSEMBLY__ |
12 | #include <asm/prefetch.h> /* lockdep.h needs <linux/prefetch.h> */ | ||
13 | |||
12 | #include <linux/threads.h> | 14 | #include <linux/threads.h> |
13 | #include <linux/spinlock_types.h> | 15 | #include <linux/spinlock_types.h> |
14 | 16 | ||
@@ -276,7 +278,7 @@ on downward growing arches, it looks like this: | |||
276 | */ | 278 | */ |
277 | 279 | ||
278 | #ifdef __LP64__ | 280 | #ifdef __LP64__ |
279 | #define USER_WIDE_MODE (personality(current->personality) == PER_LINUX) | 281 | #define USER_WIDE_MODE (!test_thread_flag(TIF_32BIT)) |
280 | #else | 282 | #else |
281 | #define USER_WIDE_MODE 0 | 283 | #define USER_WIDE_MODE 0 |
282 | #endif | 284 | #endif |
@@ -328,33 +330,20 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
328 | #define KSTK_EIP(tsk) ((tsk)->thread.regs.iaoq[0]) | 330 | #define KSTK_EIP(tsk) ((tsk)->thread.regs.iaoq[0]) |
329 | #define KSTK_ESP(tsk) ((tsk)->thread.regs.gr[30]) | 331 | #define KSTK_ESP(tsk) ((tsk)->thread.regs.gr[30]) |
330 | 332 | ||
333 | #define cpu_relax() barrier() | ||
331 | 334 | ||
332 | /* | 335 | /* Used as a macro to identify the combined VIPT/PIPT cached |
333 | * PA 2.0 defines data prefetch instructions on page 6-11 of the Kane book. | 336 | * CPUs which require a guarantee of coherency (no inequivalent |
334 | * In addition, many implementations do hardware prefetching of both | 337 | * aliases with different data, whether clean or not) to operate */ |
335 | * instructions and data. | 338 | static inline int parisc_requires_coherency(void) |
336 | * | ||
337 | * PA7300LC (page 14-4 of the ERS) also implements prefetching by a load | ||
338 | * to gr0 but not in a way that Linux can use. If the load would cause an | ||
339 | * interruption (eg due to prefetching 0), it is suppressed on PA2.0 | ||
340 | * processors, but not on 7300LC. | ||
341 | */ | ||
342 | #ifdef CONFIG_PREFETCH | ||
343 | #define ARCH_HAS_PREFETCH | ||
344 | #define ARCH_HAS_PREFETCHW | ||
345 | |||
346 | extern inline void prefetch(const void *addr) | ||
347 | { | ||
348 | __asm__("ldw 0(%0), %%r0" : : "r" (addr)); | ||
349 | } | ||
350 | |||
351 | extern inline void prefetchw(const void *addr) | ||
352 | { | 339 | { |
353 | __asm__("ldd 0(%0), %%r0" : : "r" (addr)); | 340 | #ifdef CONFIG_PA8X00 |
354 | } | 341 | /* FIXME: also pa8900 - when we see one */ |
342 | return boot_cpu_data.cpu_type == mako; | ||
343 | #else | ||
344 | return 0; | ||
355 | #endif | 345 | #endif |
356 | 346 | } | |
357 | #define cpu_relax() barrier() | ||
358 | 347 | ||
359 | #endif /* __ASSEMBLY__ */ | 348 | #endif /* __ASSEMBLY__ */ |
360 | 349 | ||
diff --git a/include/asm-parisc/ropes.h b/include/asm-parisc/ropes.h new file mode 100644 index 000000000000..5542dd00472b --- /dev/null +++ b/include/asm-parisc/ropes.h | |||
@@ -0,0 +1,322 @@ | |||
1 | #ifndef _ASM_PARISC_ROPES_H_ | ||
2 | #define _ASM_PARISC_ROPES_H_ | ||
3 | |||
4 | #include <asm-parisc/parisc-device.h> | ||
5 | |||
6 | #ifdef CONFIG_64BIT | ||
7 | /* "low end" PA8800 machines use ZX1 chipset: PAT PDC and only run 64-bit */ | ||
8 | #define ZX1_SUPPORT | ||
9 | #endif | ||
10 | |||
11 | #ifdef CONFIG_PROC_FS | ||
12 | /* depends on proc fs support. But costs CPU performance */ | ||
13 | #undef SBA_COLLECT_STATS | ||
14 | #endif | ||
15 | |||
16 | /* | ||
17 | ** The number of pdir entries to "free" before issueing | ||
18 | ** a read to PCOM register to flush out PCOM writes. | ||
19 | ** Interacts with allocation granularity (ie 4 or 8 entries | ||
20 | ** allocated and free'd/purged at a time might make this | ||
21 | ** less interesting). | ||
22 | */ | ||
23 | #define DELAYED_RESOURCE_CNT 16 | ||
24 | |||
25 | #define MAX_IOC 2 /* per Ike. Pluto/Astro only have 1. */ | ||
26 | #define ROPES_PER_IOC 8 /* per Ike half or Pluto/Astro */ | ||
27 | |||
28 | struct ioc { | ||
29 | void __iomem *ioc_hpa; /* I/O MMU base address */ | ||
30 | char *res_map; /* resource map, bit == pdir entry */ | ||
31 | u64 *pdir_base; /* physical base address */ | ||
32 | unsigned long ibase; /* pdir IOV Space base - shared w/lba_pci */ | ||
33 | unsigned long imask; /* pdir IOV Space mask - shared w/lba_pci */ | ||
34 | #ifdef ZX1_SUPPORT | ||
35 | unsigned long iovp_mask; /* help convert IOVA to IOVP */ | ||
36 | #endif | ||
37 | unsigned long *res_hint; /* next avail IOVP - circular search */ | ||
38 | spinlock_t res_lock; | ||
39 | unsigned int res_bitshift; /* from the LEFT! */ | ||
40 | unsigned int res_size; /* size of resource map in bytes */ | ||
41 | #ifdef SBA_HINT_SUPPORT | ||
42 | /* FIXME : DMA HINTs not used */ | ||
43 | unsigned long hint_mask_pdir; /* bits used for DMA hints */ | ||
44 | unsigned int hint_shift_pdir; | ||
45 | #endif | ||
46 | #if DELAYED_RESOURCE_CNT > 0 | ||
47 | int saved_cnt; | ||
48 | struct sba_dma_pair { | ||
49 | dma_addr_t iova; | ||
50 | size_t size; | ||
51 | } saved[DELAYED_RESOURCE_CNT]; | ||
52 | #endif | ||
53 | |||
54 | #ifdef SBA_COLLECT_STATS | ||
55 | #define SBA_SEARCH_SAMPLE 0x100 | ||
56 | unsigned long avg_search[SBA_SEARCH_SAMPLE]; | ||
57 | unsigned long avg_idx; /* current index into avg_search */ | ||
58 | unsigned long used_pages; | ||
59 | unsigned long msingle_calls; | ||
60 | unsigned long msingle_pages; | ||
61 | unsigned long msg_calls; | ||
62 | unsigned long msg_pages; | ||
63 | unsigned long usingle_calls; | ||
64 | unsigned long usingle_pages; | ||
65 | unsigned long usg_calls; | ||
66 | unsigned long usg_pages; | ||
67 | #endif | ||
68 | /* STUFF We don't need in performance path */ | ||
69 | unsigned int pdir_size; /* in bytes, determined by IOV Space size */ | ||
70 | }; | ||
71 | |||
72 | struct sba_device { | ||
73 | struct sba_device *next; /* list of SBA's in system */ | ||
74 | struct parisc_device *dev; /* dev found in bus walk */ | ||
75 | const char *name; | ||
76 | void __iomem *sba_hpa; /* base address */ | ||
77 | spinlock_t sba_lock; | ||
78 | unsigned int flags; /* state/functionality enabled */ | ||
79 | unsigned int hw_rev; /* HW revision of chip */ | ||
80 | |||
81 | struct resource chip_resv; /* MMIO reserved for chip */ | ||
82 | struct resource iommu_resv; /* MMIO reserved for iommu */ | ||
83 | |||
84 | unsigned int num_ioc; /* number of on-board IOC's */ | ||
85 | struct ioc ioc[MAX_IOC]; | ||
86 | }; | ||
87 | |||
88 | #define ASTRO_RUNWAY_PORT 0x582 | ||
89 | #define IKE_MERCED_PORT 0x803 | ||
90 | #define REO_MERCED_PORT 0x804 | ||
91 | #define REOG_MERCED_PORT 0x805 | ||
92 | #define PLUTO_MCKINLEY_PORT 0x880 | ||
93 | |||
94 | static inline int IS_ASTRO(struct parisc_device *d) { | ||
95 | return d->id.hversion == ASTRO_RUNWAY_PORT; | ||
96 | } | ||
97 | |||
98 | static inline int IS_IKE(struct parisc_device *d) { | ||
99 | return d->id.hversion == IKE_MERCED_PORT; | ||
100 | } | ||
101 | |||
102 | static inline int IS_PLUTO(struct parisc_device *d) { | ||
103 | return d->id.hversion == PLUTO_MCKINLEY_PORT; | ||
104 | } | ||
105 | |||
106 | #define PLUTO_IOVA_BASE (1UL*1024*1024*1024) /* 1GB */ | ||
107 | #define PLUTO_IOVA_SIZE (1UL*1024*1024*1024) /* 1GB */ | ||
108 | #define PLUTO_GART_SIZE (PLUTO_IOVA_SIZE / 2) | ||
109 | |||
110 | #define SBA_PDIR_VALID_BIT 0x8000000000000000ULL | ||
111 | |||
112 | #define SBA_AGPGART_COOKIE 0x0000badbadc0ffeeULL | ||
113 | |||
114 | #define SBA_FUNC_ID 0x0000 /* function id */ | ||
115 | #define SBA_FCLASS 0x0008 /* function class, bist, header, rev... */ | ||
116 | |||
117 | #define SBA_FUNC_SIZE 4096 /* SBA configuration function reg set */ | ||
118 | |||
119 | #define ASTRO_IOC_OFFSET (32 * SBA_FUNC_SIZE) | ||
120 | #define PLUTO_IOC_OFFSET (1 * SBA_FUNC_SIZE) | ||
121 | /* Ike's IOC's occupy functions 2 and 3 */ | ||
122 | #define IKE_IOC_OFFSET(p) ((p+2) * SBA_FUNC_SIZE) | ||
123 | |||
124 | #define IOC_CTRL 0x8 /* IOC_CTRL offset */ | ||
125 | #define IOC_CTRL_TC (1 << 0) /* TOC Enable */ | ||
126 | #define IOC_CTRL_CE (1 << 1) /* Coalesce Enable */ | ||
127 | #define IOC_CTRL_DE (1 << 2) /* Dillon Enable */ | ||
128 | #define IOC_CTRL_RM (1 << 8) /* Real Mode */ | ||
129 | #define IOC_CTRL_NC (1 << 9) /* Non Coherent Mode */ | ||
130 | #define IOC_CTRL_D4 (1 << 11) /* Disable 4-byte coalescing */ | ||
131 | #define IOC_CTRL_DD (1 << 13) /* Disable distr. LMMIO range coalescing */ | ||
132 | |||
133 | /* | ||
134 | ** Offsets into MBIB (Function 0 on Ike and hopefully Astro) | ||
135 | ** Firmware programs this stuff. Don't touch it. | ||
136 | */ | ||
137 | #define LMMIO_DIRECT0_BASE 0x300 | ||
138 | #define LMMIO_DIRECT0_MASK 0x308 | ||
139 | #define LMMIO_DIRECT0_ROUTE 0x310 | ||
140 | |||
141 | #define LMMIO_DIST_BASE 0x360 | ||
142 | #define LMMIO_DIST_MASK 0x368 | ||
143 | #define LMMIO_DIST_ROUTE 0x370 | ||
144 | |||
145 | #define IOS_DIST_BASE 0x390 | ||
146 | #define IOS_DIST_MASK 0x398 | ||
147 | #define IOS_DIST_ROUTE 0x3A0 | ||
148 | |||
149 | #define IOS_DIRECT_BASE 0x3C0 | ||
150 | #define IOS_DIRECT_MASK 0x3C8 | ||
151 | #define IOS_DIRECT_ROUTE 0x3D0 | ||
152 | |||
153 | /* | ||
154 | ** Offsets into I/O TLB (Function 2 and 3 on Ike) | ||
155 | */ | ||
156 | #define ROPE0_CTL 0x200 /* "regbus pci0" */ | ||
157 | #define ROPE1_CTL 0x208 | ||
158 | #define ROPE2_CTL 0x210 | ||
159 | #define ROPE3_CTL 0x218 | ||
160 | #define ROPE4_CTL 0x220 | ||
161 | #define ROPE5_CTL 0x228 | ||
162 | #define ROPE6_CTL 0x230 | ||
163 | #define ROPE7_CTL 0x238 | ||
164 | |||
165 | #define IOC_ROPE0_CFG 0x500 /* pluto only */ | ||
166 | #define IOC_ROPE_AO 0x10 /* Allow "Relaxed Ordering" */ | ||
167 | |||
168 | #define HF_ENABLE 0x40 | ||
169 | |||
170 | #define IOC_IBASE 0x300 /* IO TLB */ | ||
171 | #define IOC_IMASK 0x308 | ||
172 | #define IOC_PCOM 0x310 | ||
173 | #define IOC_TCNFG 0x318 | ||
174 | #define IOC_PDIR_BASE 0x320 | ||
175 | |||
176 | /* | ||
177 | ** IOC supports 4/8/16/64KB page sizes (see TCNFG register) | ||
178 | ** It's safer (avoid memory corruption) to keep DMA page mappings | ||
179 | ** equivalently sized to VM PAGE_SIZE. | ||
180 | ** | ||
181 | ** We really can't avoid generating a new mapping for each | ||
182 | ** page since the Virtual Coherence Index has to be generated | ||
183 | ** and updated for each page. | ||
184 | ** | ||
185 | ** PAGE_SIZE could be greater than IOVP_SIZE. But not the inverse. | ||
186 | */ | ||
187 | #define IOVP_SIZE PAGE_SIZE | ||
188 | #define IOVP_SHIFT PAGE_SHIFT | ||
189 | #define IOVP_MASK PAGE_MASK | ||
190 | |||
191 | #define SBA_PERF_CFG 0x708 /* Performance Counter stuff */ | ||
192 | #define SBA_PERF_MASK1 0x718 | ||
193 | #define SBA_PERF_MASK2 0x730 | ||
194 | |||
195 | /* | ||
196 | ** Offsets into PCI Performance Counters (functions 12 and 13) | ||
197 | ** Controlled by PERF registers in function 2 & 3 respectively. | ||
198 | */ | ||
199 | #define SBA_PERF_CNT1 0x200 | ||
200 | #define SBA_PERF_CNT2 0x208 | ||
201 | #define SBA_PERF_CNT3 0x210 | ||
202 | |||
203 | /* | ||
204 | ** lba_device: Per instance Elroy data structure | ||
205 | */ | ||
206 | struct lba_device { | ||
207 | struct pci_hba_data hba; | ||
208 | |||
209 | spinlock_t lba_lock; | ||
210 | void *iosapic_obj; | ||
211 | |||
212 | #ifdef CONFIG_64BIT | ||
213 | void __iomem *iop_base; /* PA_VIEW - for IO port accessor funcs */ | ||
214 | #endif | ||
215 | |||
216 | int flags; /* state/functionality enabled */ | ||
217 | int hw_rev; /* HW revision of chip */ | ||
218 | }; | ||
219 | |||
220 | #define ELROY_HVERS 0x782 | ||
221 | #define MERCURY_HVERS 0x783 | ||
222 | #define QUICKSILVER_HVERS 0x784 | ||
223 | |||
224 | static inline int IS_ELROY(struct parisc_device *d) { | ||
225 | return (d->id.hversion == ELROY_HVERS); | ||
226 | } | ||
227 | |||
228 | static inline int IS_MERCURY(struct parisc_device *d) { | ||
229 | return (d->id.hversion == MERCURY_HVERS); | ||
230 | } | ||
231 | |||
232 | static inline int IS_QUICKSILVER(struct parisc_device *d) { | ||
233 | return (d->id.hversion == QUICKSILVER_HVERS); | ||
234 | } | ||
235 | |||
236 | static inline int agp_mode_mercury(void __iomem *hpa) { | ||
237 | u64 bus_mode; | ||
238 | |||
239 | bus_mode = readl(hpa + 0x0620); | ||
240 | if (bus_mode & 1) | ||
241 | return 1; | ||
242 | |||
243 | return 0; | ||
244 | } | ||
245 | |||
246 | /* | ||
247 | ** I/O SAPIC init function | ||
248 | ** Caller knows where an I/O SAPIC is. LBA has an integrated I/O SAPIC. | ||
249 | ** Call setup as part of per instance initialization. | ||
250 | ** (ie *not* init_module() function unless only one is present.) | ||
251 | ** fixup_irq is to initialize PCI IRQ line support and | ||
252 | ** virtualize pcidev->irq value. To be called by pci_fixup_bus(). | ||
253 | */ | ||
254 | extern void *iosapic_register(unsigned long hpa); | ||
255 | extern int iosapic_fixup_irq(void *obj, struct pci_dev *pcidev); | ||
256 | |||
257 | #define LBA_FUNC_ID 0x0000 /* function id */ | ||
258 | #define LBA_FCLASS 0x0008 /* function class, bist, header, rev... */ | ||
259 | #define LBA_CAPABLE 0x0030 /* capabilities register */ | ||
260 | |||
261 | #define LBA_PCI_CFG_ADDR 0x0040 /* poke CFG address here */ | ||
262 | #define LBA_PCI_CFG_DATA 0x0048 /* read or write data here */ | ||
263 | |||
264 | #define LBA_PMC_MTLT 0x0050 /* Firmware sets this - read only. */ | ||
265 | #define LBA_FW_SCRATCH 0x0058 /* Firmware writes the PCI bus number here. */ | ||
266 | #define LBA_ERROR_ADDR 0x0070 /* On error, address gets logged here */ | ||
267 | |||
268 | #define LBA_ARB_MASK 0x0080 /* bit 0 enable arbitration. PAT/PDC enables */ | ||
269 | #define LBA_ARB_PRI 0x0088 /* firmware sets this. */ | ||
270 | #define LBA_ARB_MODE 0x0090 /* firmware sets this. */ | ||
271 | #define LBA_ARB_MTLT 0x0098 /* firmware sets this. */ | ||
272 | |||
273 | #define LBA_MOD_ID 0x0100 /* Module ID. PDC_PAT_CELL reports 4 */ | ||
274 | |||
275 | #define LBA_STAT_CTL 0x0108 /* Status & Control */ | ||
276 | #define LBA_BUS_RESET 0x01 /* Deassert PCI Bus Reset Signal */ | ||
277 | #define CLEAR_ERRLOG 0x10 /* "Clear Error Log" cmd */ | ||
278 | #define CLEAR_ERRLOG_ENABLE 0x20 /* "Clear Error Log" Enable */ | ||
279 | #define HF_ENABLE 0x40 /* enable HF mode (default is -1 mode) */ | ||
280 | |||
281 | #define LBA_LMMIO_BASE 0x0200 /* < 4GB I/O address range */ | ||
282 | #define LBA_LMMIO_MASK 0x0208 | ||
283 | |||
284 | #define LBA_GMMIO_BASE 0x0210 /* > 4GB I/O address range */ | ||
285 | #define LBA_GMMIO_MASK 0x0218 | ||
286 | |||
287 | #define LBA_WLMMIO_BASE 0x0220 /* All < 4GB ranges under the same *SBA* */ | ||
288 | #define LBA_WLMMIO_MASK 0x0228 | ||
289 | |||
290 | #define LBA_WGMMIO_BASE 0x0230 /* All > 4GB ranges under the same *SBA* */ | ||
291 | #define LBA_WGMMIO_MASK 0x0238 | ||
292 | |||
293 | #define LBA_IOS_BASE 0x0240 /* I/O port space for this LBA */ | ||
294 | #define LBA_IOS_MASK 0x0248 | ||
295 | |||
296 | #define LBA_ELMMIO_BASE 0x0250 /* Extra LMMIO range */ | ||
297 | #define LBA_ELMMIO_MASK 0x0258 | ||
298 | |||
299 | #define LBA_EIOS_BASE 0x0260 /* Extra I/O port space */ | ||
300 | #define LBA_EIOS_MASK 0x0268 | ||
301 | |||
302 | #define LBA_GLOBAL_MASK 0x0270 /* Mercury only: Global Address Mask */ | ||
303 | #define LBA_DMA_CTL 0x0278 /* firmware sets this */ | ||
304 | |||
305 | #define LBA_IBASE 0x0300 /* SBA DMA support */ | ||
306 | #define LBA_IMASK 0x0308 | ||
307 | |||
308 | /* FIXME: ignore DMA Hint stuff until we can measure performance */ | ||
309 | #define LBA_HINT_CFG 0x0310 | ||
310 | #define LBA_HINT_BASE 0x0380 /* 14 registers at every 8 bytes. */ | ||
311 | |||
312 | #define LBA_BUS_MODE 0x0620 | ||
313 | |||
314 | /* ERROR regs are needed for config cycle kluges */ | ||
315 | #define LBA_ERROR_CONFIG 0x0680 | ||
316 | #define LBA_SMART_MODE 0x20 | ||
317 | #define LBA_ERROR_STATUS 0x0688 | ||
318 | #define LBA_ROPE_CTL 0x06A0 | ||
319 | |||
320 | #define LBA_IOSAPIC_BASE 0x800 /* Offset of IRQ logic */ | ||
321 | |||
322 | #endif /*_ASM_PARISC_ROPES_H_*/ | ||
diff --git a/include/asm-parisc/rtc.h b/include/asm-parisc/rtc.h index f3d3d6b110ba..f4ebff11dcbd 100644 --- a/include/asm-parisc/rtc.h +++ b/include/asm-parisc/rtc.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * inclue/asm-parisc/rtc.h | 2 | * include/asm-parisc/rtc.h |
3 | * | 3 | * |
4 | * Copyright 2002 Randolph CHung <tausq@debian.org> | 4 | * Copyright 2002 Randolph CHung <tausq@debian.org> |
5 | * | 5 | * |
diff --git a/include/asm-parisc/serial.h b/include/asm-parisc/serial.h index 82fd820d684f..d7e3cc60dbc3 100644 --- a/include/asm-parisc/serial.h +++ b/include/asm-parisc/serial.h | |||
@@ -3,20 +3,8 @@ | |||
3 | */ | 3 | */ |
4 | 4 | ||
5 | /* | 5 | /* |
6 | * This assumes you have a 7.272727 MHz clock for your UART. | 6 | * This is used for 16550-compatible UARTs |
7 | * The documentation implies a 40Mhz clock, and elsewhere a 7Mhz clock | ||
8 | * Clarified: 7.2727MHz on LASI. Not yet clarified for DINO | ||
9 | */ | 7 | */ |
8 | #define BASE_BAUD ( 1843200 / 16 ) | ||
10 | 9 | ||
11 | #define LASI_BASE_BAUD ( 7272727 / 16 ) | ||
12 | #define BASE_BAUD LASI_BASE_BAUD | ||
13 | |||
14 | /* | ||
15 | * We don't use the ISA probing code, so these entries are just to reserve | ||
16 | * space. Some example (maximal) configurations: | ||
17 | * - 712 w/ additional Lasi & RJ16 ports: 4 | ||
18 | * - J5k w/ PCI serial cards: 2 + 4 * card ~= 34 | ||
19 | * A500 w/ PCI serial cards: 5 + 4 * card ~= 17 | ||
20 | */ | ||
21 | |||
22 | #define SERIAL_PORT_DFNS | 10 | #define SERIAL_PORT_DFNS |
diff --git a/include/asm-parisc/spinlock.h b/include/asm-parisc/spinlock.h index e1825530365d..f3d2090a18dc 100644 --- a/include/asm-parisc/spinlock.h +++ b/include/asm-parisc/spinlock.h | |||
@@ -56,50 +56,79 @@ static inline int __raw_spin_trylock(raw_spinlock_t *x) | |||
56 | } | 56 | } |
57 | 57 | ||
58 | /* | 58 | /* |
59 | * Read-write spinlocks, allowing multiple readers | 59 | * Read-write spinlocks, allowing multiple readers but only one writer. |
60 | * but only one writer. | 60 | * Linux rwlocks are unfair to writers; they can be starved for an indefinite |
61 | * time by readers. With care, they can also be taken in interrupt context. | ||
62 | * | ||
63 | * In the PA-RISC implementation, we have a spinlock and a counter. | ||
64 | * Readers use the lock to serialise their access to the counter (which | ||
65 | * records how many readers currently hold the lock). | ||
66 | * Writers hold the spinlock, preventing any readers or other writers from | ||
67 | * grabbing the rwlock. | ||
61 | */ | 68 | */ |
62 | 69 | ||
63 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) | 70 | /* Note that we have to ensure interrupts are disabled in case we're |
64 | 71 | * interrupted by some other code that wants to grab the same read lock */ | |
65 | /* read_lock, read_unlock are pretty straightforward. Of course it somehow | ||
66 | * sucks we end up saving/restoring flags twice for read_lock_irqsave aso. */ | ||
67 | |||
68 | static __inline__ void __raw_read_lock(raw_rwlock_t *rw) | 72 | static __inline__ void __raw_read_lock(raw_rwlock_t *rw) |
69 | { | 73 | { |
70 | __raw_spin_lock(&rw->lock); | 74 | unsigned long flags; |
71 | 75 | local_irq_save(flags); | |
76 | __raw_spin_lock_flags(&rw->lock, flags); | ||
72 | rw->counter++; | 77 | rw->counter++; |
73 | |||
74 | __raw_spin_unlock(&rw->lock); | 78 | __raw_spin_unlock(&rw->lock); |
79 | local_irq_restore(flags); | ||
75 | } | 80 | } |
76 | 81 | ||
82 | /* Note that we have to ensure interrupts are disabled in case we're | ||
83 | * interrupted by some other code that wants to grab the same read lock */ | ||
77 | static __inline__ void __raw_read_unlock(raw_rwlock_t *rw) | 84 | static __inline__ void __raw_read_unlock(raw_rwlock_t *rw) |
78 | { | 85 | { |
79 | __raw_spin_lock(&rw->lock); | 86 | unsigned long flags; |
80 | 87 | local_irq_save(flags); | |
88 | __raw_spin_lock_flags(&rw->lock, flags); | ||
81 | rw->counter--; | 89 | rw->counter--; |
82 | |||
83 | __raw_spin_unlock(&rw->lock); | 90 | __raw_spin_unlock(&rw->lock); |
91 | local_irq_restore(flags); | ||
84 | } | 92 | } |
85 | 93 | ||
86 | /* write_lock is less trivial. We optimistically grab the lock and check | 94 | /* Note that we have to ensure interrupts are disabled in case we're |
87 | * if we surprised any readers. If so we release the lock and wait till | 95 | * interrupted by some other code that wants to grab the same read lock */ |
88 | * they're all gone before trying again | 96 | static __inline__ int __raw_read_trylock(raw_rwlock_t *rw) |
89 | * | 97 | { |
90 | * Also note that we don't use the _irqsave / _irqrestore suffixes here. | 98 | unsigned long flags; |
91 | * If we're called with interrupts enabled and we've got readers (or other | 99 | retry: |
92 | * writers) in interrupt handlers someone fucked up and we'd dead-lock | 100 | local_irq_save(flags); |
93 | * sooner or later anyway. prumpf */ | 101 | if (__raw_spin_trylock(&rw->lock)) { |
102 | rw->counter++; | ||
103 | __raw_spin_unlock(&rw->lock); | ||
104 | local_irq_restore(flags); | ||
105 | return 1; | ||
106 | } | ||
94 | 107 | ||
95 | static __inline__ void __raw_write_lock(raw_rwlock_t *rw) | 108 | local_irq_restore(flags); |
109 | /* If write-locked, we fail to acquire the lock */ | ||
110 | if (rw->counter < 0) | ||
111 | return 0; | ||
112 | |||
113 | /* Wait until we have a realistic chance at the lock */ | ||
114 | while (__raw_spin_is_locked(&rw->lock) && rw->counter >= 0) | ||
115 | cpu_relax(); | ||
116 | |||
117 | goto retry; | ||
118 | } | ||
119 | |||
120 | /* Note that we have to ensure interrupts are disabled in case we're | ||
121 | * interrupted by some other code that wants to read_trylock() this lock */ | ||
122 | static __inline__ void __raw_write_lock(raw_rwlock_t *rw) | ||
96 | { | 123 | { |
124 | unsigned long flags; | ||
97 | retry: | 125 | retry: |
98 | __raw_spin_lock(&rw->lock); | 126 | local_irq_save(flags); |
127 | __raw_spin_lock_flags(&rw->lock, flags); | ||
99 | 128 | ||
100 | if(rw->counter != 0) { | 129 | if (rw->counter != 0) { |
101 | /* this basically never happens */ | ||
102 | __raw_spin_unlock(&rw->lock); | 130 | __raw_spin_unlock(&rw->lock); |
131 | local_irq_restore(flags); | ||
103 | 132 | ||
104 | while (rw->counter != 0) | 133 | while (rw->counter != 0) |
105 | cpu_relax(); | 134 | cpu_relax(); |
@@ -107,31 +136,37 @@ retry: | |||
107 | goto retry; | 136 | goto retry; |
108 | } | 137 | } |
109 | 138 | ||
110 | /* got it. now leave without unlocking */ | 139 | rw->counter = -1; /* mark as write-locked */ |
111 | rw->counter = -1; /* remember we are locked */ | 140 | mb(); |
141 | local_irq_restore(flags); | ||
112 | } | 142 | } |
113 | 143 | ||
114 | /* write_unlock is absolutely trivial - we don't have to wait for anything */ | 144 | static __inline__ void __raw_write_unlock(raw_rwlock_t *rw) |
115 | |||
116 | static __inline__ void __raw_write_unlock(raw_rwlock_t *rw) | ||
117 | { | 145 | { |
118 | rw->counter = 0; | 146 | rw->counter = 0; |
119 | __raw_spin_unlock(&rw->lock); | 147 | __raw_spin_unlock(&rw->lock); |
120 | } | 148 | } |
121 | 149 | ||
122 | static __inline__ int __raw_write_trylock(raw_rwlock_t *rw) | 150 | /* Note that we have to ensure interrupts are disabled in case we're |
151 | * interrupted by some other code that wants to read_trylock() this lock */ | ||
152 | static __inline__ int __raw_write_trylock(raw_rwlock_t *rw) | ||
123 | { | 153 | { |
124 | __raw_spin_lock(&rw->lock); | 154 | unsigned long flags; |
125 | if (rw->counter != 0) { | 155 | int result = 0; |
126 | /* this basically never happens */ | 156 | |
127 | __raw_spin_unlock(&rw->lock); | 157 | local_irq_save(flags); |
128 | 158 | if (__raw_spin_trylock(&rw->lock)) { | |
129 | return 0; | 159 | if (rw->counter == 0) { |
160 | rw->counter = -1; | ||
161 | result = 1; | ||
162 | } else { | ||
163 | /* Read-locked. Oh well. */ | ||
164 | __raw_spin_unlock(&rw->lock); | ||
165 | } | ||
130 | } | 166 | } |
167 | local_irq_restore(flags); | ||
131 | 168 | ||
132 | /* got it. now leave without unlocking */ | 169 | return result; |
133 | rw->counter = -1; /* remember we are locked */ | ||
134 | return 1; | ||
135 | } | 170 | } |
136 | 171 | ||
137 | /* | 172 | /* |
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h index 27bcfad1c3e3..53b0f5d290e4 100644 --- a/include/asm-parisc/unistd.h +++ b/include/asm-parisc/unistd.h | |||
@@ -952,92 +952,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ | |||
952 | #define __ARCH_WANT_SYS_SIGPROCMASK | 952 | #define __ARCH_WANT_SYS_SIGPROCMASK |
953 | #define __ARCH_WANT_SYS_RT_SIGACTION | 953 | #define __ARCH_WANT_SYS_RT_SIGACTION |
954 | 954 | ||
955 | /* mmap & mmap2 take 6 arguments */ | ||
956 | #define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5,type6,arg6) \ | ||
957 | type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \ | ||
958 | { \ | ||
959 | return K_INLINE_SYSCALL(name, 6, arg1, arg2, arg3, arg4, arg5, arg6); \ | ||
960 | } | ||
961 | |||
962 | #ifdef __KERNEL_SYSCALLS__ | ||
963 | |||
964 | #include <asm/current.h> | ||
965 | #include <linux/compiler.h> | ||
966 | #include <linux/types.h> | ||
967 | #include <linux/syscalls.h> | ||
968 | |||
969 | static inline pid_t setsid(void) | ||
970 | { | ||
971 | return sys_setsid(); | ||
972 | } | ||
973 | |||
974 | static inline int write(int fd, const char *buf, off_t count) | ||
975 | { | ||
976 | return sys_write(fd, buf, count); | ||
977 | } | ||
978 | |||
979 | static inline int read(int fd, char *buf, off_t count) | ||
980 | { | ||
981 | return sys_read(fd, buf, count); | ||
982 | } | ||
983 | |||
984 | static inline off_t lseek(int fd, off_t offset, int count) | ||
985 | { | ||
986 | return sys_lseek(fd, offset, count); | ||
987 | } | ||
988 | |||
989 | static inline int dup(int fd) | ||
990 | { | ||
991 | return sys_dup(fd); | ||
992 | } | ||
993 | |||
994 | static inline int execve(char *filename, char * argv [], | ||
995 | char * envp[]) | ||
996 | { | ||
997 | extern int __execve(char *, char **, char **, struct task_struct *); | ||
998 | return __execve(filename, argv, envp, current); | ||
999 | } | ||
1000 | |||
1001 | static inline int open(const char *file, int flag, int mode) | ||
1002 | { | ||
1003 | return sys_open(file, flag, mode); | ||
1004 | } | ||
1005 | |||
1006 | static inline int close(int fd) | ||
1007 | { | ||
1008 | return sys_close(fd); | ||
1009 | } | ||
1010 | |||
1011 | static inline void _exit(int exitcode) | ||
1012 | { | ||
1013 | sys_exit(exitcode); | ||
1014 | } | ||
1015 | |||
1016 | static inline pid_t waitpid(pid_t pid, int *wait_stat, int options) | ||
1017 | { | ||
1018 | return sys_wait4(pid, wait_stat, options, NULL); | ||
1019 | } | ||
1020 | |||
1021 | asmlinkage unsigned long sys_mmap(unsigned long addr, unsigned long len, | ||
1022 | unsigned long prot, unsigned long flags, | ||
1023 | unsigned long fd, unsigned long offset); | ||
1024 | asmlinkage unsigned long sys_mmap2(unsigned long addr, unsigned long len, | ||
1025 | unsigned long prot, unsigned long flags, | ||
1026 | unsigned long fd, unsigned long pgoff); | ||
1027 | struct pt_regs; | ||
1028 | asmlinkage int sys_execve(struct pt_regs *regs); | ||
1029 | int sys_clone(unsigned long clone_flags, unsigned long usp, | ||
1030 | struct pt_regs *regs); | ||
1031 | int sys_vfork(struct pt_regs *regs); | ||
1032 | int sys_pipe(int *fildes); | ||
1033 | struct sigaction; | ||
1034 | asmlinkage long sys_rt_sigaction(int sig, | ||
1035 | const struct sigaction __user *act, | ||
1036 | struct sigaction __user *oact, | ||
1037 | size_t sigsetsize); | ||
1038 | |||
1039 | #endif /* __KERNEL_SYSCALLS__ */ | ||
1040 | |||
1041 | #endif /* __ASSEMBLY__ */ | 955 | #endif /* __ASSEMBLY__ */ |
1042 | 956 | ||
1043 | #undef STR | 957 | #undef STR |
diff --git a/include/asm-powerpc/firmware.h b/include/asm-powerpc/firmware.h index 77069df92bf8..1022737f4f34 100644 --- a/include/asm-powerpc/firmware.h +++ b/include/asm-powerpc/firmware.h | |||
@@ -14,34 +14,36 @@ | |||
14 | 14 | ||
15 | #ifdef __KERNEL__ | 15 | #ifdef __KERNEL__ |
16 | 16 | ||
17 | #ifndef __ASSEMBLY__ | 17 | #include <asm/asm-compat.h> |
18 | 18 | ||
19 | /* firmware feature bitmask values */ | 19 | /* firmware feature bitmask values */ |
20 | #define FIRMWARE_MAX_FEATURES 63 | 20 | #define FIRMWARE_MAX_FEATURES 63 |
21 | 21 | ||
22 | #define FW_FEATURE_PFT (1UL<<0) | 22 | #define FW_FEATURE_PFT ASM_CONST(0x0000000000000001) |
23 | #define FW_FEATURE_TCE (1UL<<1) | 23 | #define FW_FEATURE_TCE ASM_CONST(0x0000000000000002) |
24 | #define FW_FEATURE_SPRG0 (1UL<<2) | 24 | #define FW_FEATURE_SPRG0 ASM_CONST(0x0000000000000004) |
25 | #define FW_FEATURE_DABR (1UL<<3) | 25 | #define FW_FEATURE_DABR ASM_CONST(0x0000000000000008) |
26 | #define FW_FEATURE_COPY (1UL<<4) | 26 | #define FW_FEATURE_COPY ASM_CONST(0x0000000000000010) |
27 | #define FW_FEATURE_ASR (1UL<<5) | 27 | #define FW_FEATURE_ASR ASM_CONST(0x0000000000000020) |
28 | #define FW_FEATURE_DEBUG (1UL<<6) | 28 | #define FW_FEATURE_DEBUG ASM_CONST(0x0000000000000040) |
29 | #define FW_FEATURE_TERM (1UL<<7) | 29 | #define FW_FEATURE_TERM ASM_CONST(0x0000000000000080) |
30 | #define FW_FEATURE_PERF (1UL<<8) | 30 | #define FW_FEATURE_PERF ASM_CONST(0x0000000000000100) |
31 | #define FW_FEATURE_DUMP (1UL<<9) | 31 | #define FW_FEATURE_DUMP ASM_CONST(0x0000000000000200) |
32 | #define FW_FEATURE_INTERRUPT (1UL<<10) | 32 | #define FW_FEATURE_INTERRUPT ASM_CONST(0x0000000000000400) |
33 | #define FW_FEATURE_MIGRATE (1UL<<11) | 33 | #define FW_FEATURE_MIGRATE ASM_CONST(0x0000000000000800) |
34 | #define FW_FEATURE_PERFMON (1UL<<12) | 34 | #define FW_FEATURE_PERFMON ASM_CONST(0x0000000000001000) |
35 | #define FW_FEATURE_CRQ (1UL<<13) | 35 | #define FW_FEATURE_CRQ ASM_CONST(0x0000000000002000) |
36 | #define FW_FEATURE_VIO (1UL<<14) | 36 | #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) |
37 | #define FW_FEATURE_RDMA (1UL<<15) | 37 | #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) |
38 | #define FW_FEATURE_LLAN (1UL<<16) | 38 | #define FW_FEATURE_LLAN ASM_CONST(0x0000000000010000) |
39 | #define FW_FEATURE_BULK (1UL<<17) | 39 | #define FW_FEATURE_BULK ASM_CONST(0x0000000000020000) |
40 | #define FW_FEATURE_XDABR (1UL<<18) | 40 | #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) |
41 | #define FW_FEATURE_MULTITCE (1UL<<19) | 41 | #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) |
42 | #define FW_FEATURE_SPLPAR (1UL<<20) | 42 | #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) |
43 | #define FW_FEATURE_ISERIES (1UL<<21) | 43 | #define FW_FEATURE_ISERIES ASM_CONST(0x0000000000200000) |
44 | #define FW_FEATURE_LPAR (1UL<<22) | 44 | #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) |
45 | |||
46 | #ifndef __ASSEMBLY__ | ||
45 | 47 | ||
46 | enum { | 48 | enum { |
47 | #ifdef CONFIG_PPC64 | 49 | #ifdef CONFIG_PPC64 |
@@ -94,6 +96,23 @@ extern void machine_check_fwnmi(void); | |||
94 | /* This is true if we are using the firmware NMI handler (typically LPAR) */ | 96 | /* This is true if we are using the firmware NMI handler (typically LPAR) */ |
95 | extern int fwnmi_active; | 97 | extern int fwnmi_active; |
96 | 98 | ||
99 | #else /* __ASSEMBLY__ */ | ||
100 | |||
101 | #define BEGIN_FW_FTR_SECTION 96: | ||
102 | |||
103 | #define END_FW_FTR_SECTION(msk, val) \ | ||
104 | 97: \ | ||
105 | .section __fw_ftr_fixup,"a"; \ | ||
106 | .align 3; \ | ||
107 | .llong msk; \ | ||
108 | .llong val; \ | ||
109 | .llong 96b; \ | ||
110 | .llong 97b; \ | ||
111 | .previous | ||
112 | |||
113 | #define END_FW_FTR_SECTION_IFSET(msk) END_FW_FTR_SECTION((msk), (msk)) | ||
114 | #define END_FW_FTR_SECTION_IFCLR(msk) END_FW_FTR_SECTION((msk), 0) | ||
115 | |||
97 | #endif /* __ASSEMBLY__ */ | 116 | #endif /* __ASSEMBLY__ */ |
98 | #endif /* __KERNEL__ */ | 117 | #endif /* __KERNEL__ */ |
99 | #endif /* __ASM_POWERPC_FIRMWARE_H */ | 118 | #endif /* __ASM_POWERPC_FIRMWARE_H */ |
diff --git a/include/asm-powerpc/fs_pd.h b/include/asm-powerpc/fs_pd.h new file mode 100644 index 000000000000..3d0e819d37f1 --- /dev/null +++ b/include/asm-powerpc/fs_pd.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Platform information definitions. | ||
3 | * | ||
4 | * 2006 (c) MontaVista Software, Inc. | ||
5 | * Vitaly Bordug <vbordug@ru.mvista.com> | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public License | ||
8 | * version 2. This program is licensed "as is" without any warranty of any | ||
9 | * kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | #ifndef FS_PD_H | ||
13 | #define FS_PD_H | ||
14 | #include <asm/cpm2.h> | ||
15 | #include <sysdev/fsl_soc.h> | ||
16 | #include <asm/time.h> | ||
17 | |||
18 | static inline int uart_baudrate(void) | ||
19 | { | ||
20 | return get_baudrate(); | ||
21 | } | ||
22 | |||
23 | static inline int uart_clock(void) | ||
24 | { | ||
25 | return ppc_proc_freq; | ||
26 | } | ||
27 | |||
28 | #define cpm2_map(member) \ | ||
29 | ({ \ | ||
30 | u32 offset = offsetof(cpm2_map_t, member); \ | ||
31 | void *addr = ioremap (CPM_MAP_ADDR + offset, \ | ||
32 | sizeof( ((cpm2_map_t*)0)->member)); \ | ||
33 | addr; \ | ||
34 | }) | ||
35 | |||
36 | #define cpm2_map_size(member, size) \ | ||
37 | ({ \ | ||
38 | u32 offset = offsetof(cpm2_map_t, member); \ | ||
39 | void *addr = ioremap (CPM_MAP_ADDR + offset, size); \ | ||
40 | addr; \ | ||
41 | }) | ||
42 | |||
43 | #define cpm2_unmap(addr) iounmap(addr) | ||
44 | |||
45 | #endif | ||
diff --git a/include/asm-powerpc/immap_qe.h b/include/asm-powerpc/immap_qe.h new file mode 100644 index 000000000000..ce12f85fff9b --- /dev/null +++ b/include/asm-powerpc/immap_qe.h | |||
@@ -0,0 +1,477 @@ | |||
1 | /* | ||
2 | * include/asm-powerpc/immap_qe.h | ||
3 | * | ||
4 | * QUICC Engine (QE) Internal Memory Map. | ||
5 | * The Internal Memory Map for devices with QE on them. This | ||
6 | * is the superset of all QE devices (8360, etc.). | ||
7 | |||
8 | * Copyright (C) 2006. Freescale Semicondutor, Inc. All rights reserved. | ||
9 | * | ||
10 | * Authors: Shlomi Gridish <gridish@freescale.com> | ||
11 | * Li Yang <leoli@freescale.com> | ||
12 | * | ||
13 | * This program is free software; you can redistribute it and/or modify it | ||
14 | * under the terms of the GNU General Public License as published by the | ||
15 | * Free Software Foundation; either version 2 of the License, or (at your | ||
16 | * option) any later version. | ||
17 | */ | ||
18 | #ifndef _ASM_POWERPC_IMMAP_QE_H | ||
19 | #define _ASM_POWERPC_IMMAP_QE_H | ||
20 | #ifdef __KERNEL__ | ||
21 | |||
22 | #include <linux/kernel.h> | ||
23 | |||
24 | #define QE_IMMAP_SIZE (1024 * 1024) /* 1MB from 1MB+IMMR */ | ||
25 | |||
26 | /* QE I-RAM */ | ||
27 | struct qe_iram { | ||
28 | __be32 iadd; /* I-RAM Address Register */ | ||
29 | __be32 idata; /* I-RAM Data Register */ | ||
30 | u8 res0[0x78]; | ||
31 | } __attribute__ ((packed)); | ||
32 | |||
33 | /* QE Interrupt Controller */ | ||
34 | struct qe_ic_regs { | ||
35 | __be32 qicr; | ||
36 | __be32 qivec; | ||
37 | __be32 qripnr; | ||
38 | __be32 qipnr; | ||
39 | __be32 qipxcc; | ||
40 | __be32 qipycc; | ||
41 | __be32 qipwcc; | ||
42 | __be32 qipzcc; | ||
43 | __be32 qimr; | ||
44 | __be32 qrimr; | ||
45 | __be32 qicnr; | ||
46 | u8 res0[0x4]; | ||
47 | __be32 qiprta; | ||
48 | __be32 qiprtb; | ||
49 | u8 res1[0x4]; | ||
50 | __be32 qricr; | ||
51 | u8 res2[0x20]; | ||
52 | __be32 qhivec; | ||
53 | u8 res3[0x1C]; | ||
54 | } __attribute__ ((packed)); | ||
55 | |||
56 | /* Communications Processor */ | ||
57 | struct cp_qe { | ||
58 | __be32 cecr; /* QE command register */ | ||
59 | __be32 ceccr; /* QE controller configuration register */ | ||
60 | __be32 cecdr; /* QE command data register */ | ||
61 | u8 res0[0xA]; | ||
62 | __be16 ceter; /* QE timer event register */ | ||
63 | u8 res1[0x2]; | ||
64 | __be16 cetmr; /* QE timers mask register */ | ||
65 | __be32 cetscr; /* QE time-stamp timer control register */ | ||
66 | __be32 cetsr1; /* QE time-stamp register 1 */ | ||
67 | __be32 cetsr2; /* QE time-stamp register 2 */ | ||
68 | u8 res2[0x8]; | ||
69 | __be32 cevter; /* QE virtual tasks event register */ | ||
70 | __be32 cevtmr; /* QE virtual tasks mask register */ | ||
71 | __be16 cercr; /* QE RAM control register */ | ||
72 | u8 res3[0x2]; | ||
73 | u8 res4[0x24]; | ||
74 | __be16 ceexe1; /* QE external request 1 event register */ | ||
75 | u8 res5[0x2]; | ||
76 | __be16 ceexm1; /* QE external request 1 mask register */ | ||
77 | u8 res6[0x2]; | ||
78 | __be16 ceexe2; /* QE external request 2 event register */ | ||
79 | u8 res7[0x2]; | ||
80 | __be16 ceexm2; /* QE external request 2 mask register */ | ||
81 | u8 res8[0x2]; | ||
82 | __be16 ceexe3; /* QE external request 3 event register */ | ||
83 | u8 res9[0x2]; | ||
84 | __be16 ceexm3; /* QE external request 3 mask register */ | ||
85 | u8 res10[0x2]; | ||
86 | __be16 ceexe4; /* QE external request 4 event register */ | ||
87 | u8 res11[0x2]; | ||
88 | __be16 ceexm4; /* QE external request 4 mask register */ | ||
89 | u8 res12[0x2]; | ||
90 | u8 res13[0x280]; | ||
91 | } __attribute__ ((packed)); | ||
92 | |||
93 | /* QE Multiplexer */ | ||
94 | struct qe_mux { | ||
95 | __be32 cmxgcr; /* CMX general clock route register */ | ||
96 | __be32 cmxsi1cr_l; /* CMX SI1 clock route low register */ | ||
97 | __be32 cmxsi1cr_h; /* CMX SI1 clock route high register */ | ||
98 | __be32 cmxsi1syr; /* CMX SI1 SYNC route register */ | ||
99 | __be32 cmxucr1; /* CMX UCC1, UCC3 clock route register */ | ||
100 | __be32 cmxucr2; /* CMX UCC5, UCC7 clock route register */ | ||
101 | __be32 cmxucr3; /* CMX UCC2, UCC4 clock route register */ | ||
102 | __be32 cmxucr4; /* CMX UCC6, UCC8 clock route register */ | ||
103 | __be32 cmxupcr; /* CMX UPC clock route register */ | ||
104 | u8 res0[0x1C]; | ||
105 | } __attribute__ ((packed)); | ||
106 | |||
107 | /* QE Timers */ | ||
108 | struct qe_timers { | ||
109 | u8 gtcfr1; /* Timer 1 and Timer 2 global config register*/ | ||
110 | u8 res0[0x3]; | ||
111 | u8 gtcfr2; /* Timer 3 and timer 4 global config register*/ | ||
112 | u8 res1[0xB]; | ||
113 | __be16 gtmdr1; /* Timer 1 mode register */ | ||
114 | __be16 gtmdr2; /* Timer 2 mode register */ | ||
115 | __be16 gtrfr1; /* Timer 1 reference register */ | ||
116 | __be16 gtrfr2; /* Timer 2 reference register */ | ||
117 | __be16 gtcpr1; /* Timer 1 capture register */ | ||
118 | __be16 gtcpr2; /* Timer 2 capture register */ | ||
119 | __be16 gtcnr1; /* Timer 1 counter */ | ||
120 | __be16 gtcnr2; /* Timer 2 counter */ | ||
121 | __be16 gtmdr3; /* Timer 3 mode register */ | ||
122 | __be16 gtmdr4; /* Timer 4 mode register */ | ||
123 | __be16 gtrfr3; /* Timer 3 reference register */ | ||
124 | __be16 gtrfr4; /* Timer 4 reference register */ | ||
125 | __be16 gtcpr3; /* Timer 3 capture register */ | ||
126 | __be16 gtcpr4; /* Timer 4 capture register */ | ||
127 | __be16 gtcnr3; /* Timer 3 counter */ | ||
128 | __be16 gtcnr4; /* Timer 4 counter */ | ||
129 | __be16 gtevr1; /* Timer 1 event register */ | ||
130 | __be16 gtevr2; /* Timer 2 event register */ | ||
131 | __be16 gtevr3; /* Timer 3 event register */ | ||
132 | __be16 gtevr4; /* Timer 4 event register */ | ||
133 | __be16 gtps; /* Timer 1 prescale register */ | ||
134 | u8 res2[0x46]; | ||
135 | } __attribute__ ((packed)); | ||
136 | |||
137 | /* BRG */ | ||
138 | struct qe_brg { | ||
139 | __be32 brgc1; /* BRG1 configuration register */ | ||
140 | __be32 brgc2; /* BRG2 configuration register */ | ||
141 | __be32 brgc3; /* BRG3 configuration register */ | ||
142 | __be32 brgc4; /* BRG4 configuration register */ | ||
143 | __be32 brgc5; /* BRG5 configuration register */ | ||
144 | __be32 brgc6; /* BRG6 configuration register */ | ||
145 | __be32 brgc7; /* BRG7 configuration register */ | ||
146 | __be32 brgc8; /* BRG8 configuration register */ | ||
147 | __be32 brgc9; /* BRG9 configuration register */ | ||
148 | __be32 brgc10; /* BRG10 configuration register */ | ||
149 | __be32 brgc11; /* BRG11 configuration register */ | ||
150 | __be32 brgc12; /* BRG12 configuration register */ | ||
151 | __be32 brgc13; /* BRG13 configuration register */ | ||
152 | __be32 brgc14; /* BRG14 configuration register */ | ||
153 | __be32 brgc15; /* BRG15 configuration register */ | ||
154 | __be32 brgc16; /* BRG16 configuration register */ | ||
155 | u8 res0[0x40]; | ||
156 | } __attribute__ ((packed)); | ||
157 | |||
158 | /* SPI */ | ||
159 | struct spi { | ||
160 | u8 res0[0x20]; | ||
161 | __be32 spmode; /* SPI mode register */ | ||
162 | u8 res1[0x2]; | ||
163 | u8 spie; /* SPI event register */ | ||
164 | u8 res2[0x1]; | ||
165 | u8 res3[0x2]; | ||
166 | u8 spim; /* SPI mask register */ | ||
167 | u8 res4[0x1]; | ||
168 | u8 res5[0x1]; | ||
169 | u8 spcom; /* SPI command register */ | ||
170 | u8 res6[0x2]; | ||
171 | __be32 spitd; /* SPI transmit data register (cpu mode) */ | ||
172 | __be32 spird; /* SPI receive data register (cpu mode) */ | ||
173 | u8 res7[0x8]; | ||
174 | } __attribute__ ((packed)); | ||
175 | |||
176 | /* SI */ | ||
177 | struct si1 { | ||
178 | __be16 siamr1; /* SI1 TDMA mode register */ | ||
179 | __be16 sibmr1; /* SI1 TDMB mode register */ | ||
180 | __be16 sicmr1; /* SI1 TDMC mode register */ | ||
181 | __be16 sidmr1; /* SI1 TDMD mode register */ | ||
182 | u8 siglmr1_h; /* SI1 global mode register high */ | ||
183 | u8 res0[0x1]; | ||
184 | u8 sicmdr1_h; /* SI1 command register high */ | ||
185 | u8 res2[0x1]; | ||
186 | u8 sistr1_h; /* SI1 status register high */ | ||
187 | u8 res3[0x1]; | ||
188 | __be16 sirsr1_h; /* SI1 RAM shadow address register high */ | ||
189 | u8 sitarc1; /* SI1 RAM counter Tx TDMA */ | ||
190 | u8 sitbrc1; /* SI1 RAM counter Tx TDMB */ | ||
191 | u8 sitcrc1; /* SI1 RAM counter Tx TDMC */ | ||
192 | u8 sitdrc1; /* SI1 RAM counter Tx TDMD */ | ||
193 | u8 sirarc1; /* SI1 RAM counter Rx TDMA */ | ||
194 | u8 sirbrc1; /* SI1 RAM counter Rx TDMB */ | ||
195 | u8 sircrc1; /* SI1 RAM counter Rx TDMC */ | ||
196 | u8 sirdrc1; /* SI1 RAM counter Rx TDMD */ | ||
197 | u8 res4[0x8]; | ||
198 | __be16 siemr1; /* SI1 TDME mode register 16 bits */ | ||
199 | __be16 sifmr1; /* SI1 TDMF mode register 16 bits */ | ||
200 | __be16 sigmr1; /* SI1 TDMG mode register 16 bits */ | ||
201 | __be16 sihmr1; /* SI1 TDMH mode register 16 bits */ | ||
202 | u8 siglmg1_l; /* SI1 global mode register low 8 bits */ | ||
203 | u8 res5[0x1]; | ||
204 | u8 sicmdr1_l; /* SI1 command register low 8 bits */ | ||
205 | u8 res6[0x1]; | ||
206 | u8 sistr1_l; /* SI1 status register low 8 bits */ | ||
207 | u8 res7[0x1]; | ||
208 | __be16 sirsr1_l; /* SI1 RAM shadow address register low 16 bits*/ | ||
209 | u8 siterc1; /* SI1 RAM counter Tx TDME 8 bits */ | ||
210 | u8 sitfrc1; /* SI1 RAM counter Tx TDMF 8 bits */ | ||
211 | u8 sitgrc1; /* SI1 RAM counter Tx TDMG 8 bits */ | ||
212 | u8 sithrc1; /* SI1 RAM counter Tx TDMH 8 bits */ | ||
213 | u8 sirerc1; /* SI1 RAM counter Rx TDME 8 bits */ | ||
214 | u8 sirfrc1; /* SI1 RAM counter Rx TDMF 8 bits */ | ||
215 | u8 sirgrc1; /* SI1 RAM counter Rx TDMG 8 bits */ | ||
216 | u8 sirhrc1; /* SI1 RAM counter Rx TDMH 8 bits */ | ||
217 | u8 res8[0x8]; | ||
218 | __be32 siml1; /* SI1 multiframe limit register */ | ||
219 | u8 siedm1; /* SI1 extended diagnostic mode register */ | ||
220 | u8 res9[0xBB]; | ||
221 | } __attribute__ ((packed)); | ||
222 | |||
223 | /* SI Routing Tables */ | ||
224 | struct sir { | ||
225 | u8 tx[0x400]; | ||
226 | u8 rx[0x400]; | ||
227 | u8 res0[0x800]; | ||
228 | } __attribute__ ((packed)); | ||
229 | |||
230 | /* USB Controller */ | ||
231 | struct usb_ctlr { | ||
232 | u8 usb_usmod; | ||
233 | u8 usb_usadr; | ||
234 | u8 usb_uscom; | ||
235 | u8 res1[1]; | ||
236 | __be16 usb_usep1; | ||
237 | __be16 usb_usep2; | ||
238 | __be16 usb_usep3; | ||
239 | __be16 usb_usep4; | ||
240 | u8 res2[4]; | ||
241 | __be16 usb_usber; | ||
242 | u8 res3[2]; | ||
243 | __be16 usb_usbmr; | ||
244 | u8 res4[1]; | ||
245 | u8 usb_usbs; | ||
246 | __be16 usb_ussft; | ||
247 | u8 res5[2]; | ||
248 | __be16 usb_usfrn; | ||
249 | u8 res6[0x22]; | ||
250 | } __attribute__ ((packed)); | ||
251 | |||
252 | /* MCC */ | ||
253 | struct mcc { | ||
254 | __be32 mcce; /* MCC event register */ | ||
255 | __be32 mccm; /* MCC mask register */ | ||
256 | __be32 mccf; /* MCC configuration register */ | ||
257 | __be32 merl; /* MCC emergency request level register */ | ||
258 | u8 res0[0xF0]; | ||
259 | } __attribute__ ((packed)); | ||
260 | |||
261 | /* QE UCC Slow */ | ||
262 | struct ucc_slow { | ||
263 | __be32 gumr_l; /* UCCx general mode register (low) */ | ||
264 | __be32 gumr_h; /* UCCx general mode register (high) */ | ||
265 | __be16 upsmr; /* UCCx protocol-specific mode register */ | ||
266 | u8 res0[0x2]; | ||
267 | __be16 utodr; /* UCCx transmit on demand register */ | ||
268 | __be16 udsr; /* UCCx data synchronization register */ | ||
269 | __be16 ucce; /* UCCx event register */ | ||
270 | u8 res1[0x2]; | ||
271 | __be16 uccm; /* UCCx mask register */ | ||
272 | u8 res2[0x1]; | ||
273 | u8 uccs; /* UCCx status register */ | ||
274 | u8 res3[0x24]; | ||
275 | __be16 utpt; | ||
276 | u8 guemr; /* UCC general extended mode register */ | ||
277 | u8 res4[0x200 - 0x091]; | ||
278 | } __attribute__ ((packed)); | ||
279 | |||
280 | /* QE UCC Fast */ | ||
281 | struct ucc_fast { | ||
282 | __be32 gumr; /* UCCx general mode register */ | ||
283 | __be32 upsmr; /* UCCx protocol-specific mode register */ | ||
284 | __be16 utodr; /* UCCx transmit on demand register */ | ||
285 | u8 res0[0x2]; | ||
286 | __be16 udsr; /* UCCx data synchronization register */ | ||
287 | u8 res1[0x2]; | ||
288 | __be32 ucce; /* UCCx event register */ | ||
289 | __be32 uccm; /* UCCx mask register */ | ||
290 | u8 uccs; /* UCCx status register */ | ||
291 | u8 res2[0x7]; | ||
292 | __be32 urfb; /* UCC receive FIFO base */ | ||
293 | __be16 urfs; /* UCC receive FIFO size */ | ||
294 | u8 res3[0x2]; | ||
295 | __be16 urfet; /* UCC receive FIFO emergency threshold */ | ||
296 | __be16 urfset; /* UCC receive FIFO special emergency | ||
297 | threshold */ | ||
298 | __be32 utfb; /* UCC transmit FIFO base */ | ||
299 | __be16 utfs; /* UCC transmit FIFO size */ | ||
300 | u8 res4[0x2]; | ||
301 | __be16 utfet; /* UCC transmit FIFO emergency threshold */ | ||
302 | u8 res5[0x2]; | ||
303 | __be16 utftt; /* UCC transmit FIFO transmit threshold */ | ||
304 | u8 res6[0x2]; | ||
305 | __be16 utpt; /* UCC transmit polling timer */ | ||
306 | u8 res7[0x2]; | ||
307 | __be32 urtry; /* UCC retry counter register */ | ||
308 | u8 res8[0x4C]; | ||
309 | u8 guemr; /* UCC general extended mode register */ | ||
310 | u8 res9[0x100 - 0x091]; | ||
311 | } __attribute__ ((packed)); | ||
312 | |||
313 | /* QE UCC */ | ||
314 | struct ucc_common { | ||
315 | u8 res1[0x90]; | ||
316 | u8 guemr; | ||
317 | u8 res2[0x200 - 0x091]; | ||
318 | } __attribute__ ((packed)); | ||
319 | |||
320 | struct ucc { | ||
321 | union { | ||
322 | struct ucc_slow slow; | ||
323 | struct ucc_fast fast; | ||
324 | struct ucc_common common; | ||
325 | }; | ||
326 | } __attribute__ ((packed)); | ||
327 | |||
328 | /* MultiPHY UTOPIA POS Controllers (UPC) */ | ||
329 | struct upc { | ||
330 | __be32 upgcr; /* UTOPIA/POS general configuration register */ | ||
331 | __be32 uplpa; /* UTOPIA/POS last PHY address */ | ||
332 | __be32 uphec; /* ATM HEC register */ | ||
333 | __be32 upuc; /* UTOPIA/POS UCC configuration */ | ||
334 | __be32 updc1; /* UTOPIA/POS device 1 configuration */ | ||
335 | __be32 updc2; /* UTOPIA/POS device 2 configuration */ | ||
336 | __be32 updc3; /* UTOPIA/POS device 3 configuration */ | ||
337 | __be32 updc4; /* UTOPIA/POS device 4 configuration */ | ||
338 | __be32 upstpa; /* UTOPIA/POS STPA threshold */ | ||
339 | u8 res0[0xC]; | ||
340 | __be32 updrs1_h; /* UTOPIA/POS device 1 rate select */ | ||
341 | __be32 updrs1_l; /* UTOPIA/POS device 1 rate select */ | ||
342 | __be32 updrs2_h; /* UTOPIA/POS device 2 rate select */ | ||
343 | __be32 updrs2_l; /* UTOPIA/POS device 2 rate select */ | ||
344 | __be32 updrs3_h; /* UTOPIA/POS device 3 rate select */ | ||
345 | __be32 updrs3_l; /* UTOPIA/POS device 3 rate select */ | ||
346 | __be32 updrs4_h; /* UTOPIA/POS device 4 rate select */ | ||
347 | __be32 updrs4_l; /* UTOPIA/POS device 4 rate select */ | ||
348 | __be32 updrp1; /* UTOPIA/POS device 1 receive priority low */ | ||
349 | __be32 updrp2; /* UTOPIA/POS device 2 receive priority low */ | ||
350 | __be32 updrp3; /* UTOPIA/POS device 3 receive priority low */ | ||
351 | __be32 updrp4; /* UTOPIA/POS device 4 receive priority low */ | ||
352 | __be32 upde1; /* UTOPIA/POS device 1 event */ | ||
353 | __be32 upde2; /* UTOPIA/POS device 2 event */ | ||
354 | __be32 upde3; /* UTOPIA/POS device 3 event */ | ||
355 | __be32 upde4; /* UTOPIA/POS device 4 event */ | ||
356 | __be16 uprp1; | ||
357 | __be16 uprp2; | ||
358 | __be16 uprp3; | ||
359 | __be16 uprp4; | ||
360 | u8 res1[0x8]; | ||
361 | __be16 uptirr1_0; /* Device 1 transmit internal rate 0 */ | ||
362 | __be16 uptirr1_1; /* Device 1 transmit internal rate 1 */ | ||
363 | __be16 uptirr1_2; /* Device 1 transmit internal rate 2 */ | ||
364 | __be16 uptirr1_3; /* Device 1 transmit internal rate 3 */ | ||
365 | __be16 uptirr2_0; /* Device 2 transmit internal rate 0 */ | ||
366 | __be16 uptirr2_1; /* Device 2 transmit internal rate 1 */ | ||
367 | __be16 uptirr2_2; /* Device 2 transmit internal rate 2 */ | ||
368 | __be16 uptirr2_3; /* Device 2 transmit internal rate 3 */ | ||
369 | __be16 uptirr3_0; /* Device 3 transmit internal rate 0 */ | ||
370 | __be16 uptirr3_1; /* Device 3 transmit internal rate 1 */ | ||
371 | __be16 uptirr3_2; /* Device 3 transmit internal rate 2 */ | ||
372 | __be16 uptirr3_3; /* Device 3 transmit internal rate 3 */ | ||
373 | __be16 uptirr4_0; /* Device 4 transmit internal rate 0 */ | ||
374 | __be16 uptirr4_1; /* Device 4 transmit internal rate 1 */ | ||
375 | __be16 uptirr4_2; /* Device 4 transmit internal rate 2 */ | ||
376 | __be16 uptirr4_3; /* Device 4 transmit internal rate 3 */ | ||
377 | __be32 uper1; /* Device 1 port enable register */ | ||
378 | __be32 uper2; /* Device 2 port enable register */ | ||
379 | __be32 uper3; /* Device 3 port enable register */ | ||
380 | __be32 uper4; /* Device 4 port enable register */ | ||
381 | u8 res2[0x150]; | ||
382 | } __attribute__ ((packed)); | ||
383 | |||
384 | /* SDMA */ | ||
385 | struct sdma { | ||
386 | __be32 sdsr; /* Serial DMA status register */ | ||
387 | __be32 sdmr; /* Serial DMA mode register */ | ||
388 | __be32 sdtr1; /* SDMA system bus threshold register */ | ||
389 | __be32 sdtr2; /* SDMA secondary bus threshold register */ | ||
390 | __be32 sdhy1; /* SDMA system bus hysteresis register */ | ||
391 | __be32 sdhy2; /* SDMA secondary bus hysteresis register */ | ||
392 | __be32 sdta1; /* SDMA system bus address register */ | ||
393 | __be32 sdta2; /* SDMA secondary bus address register */ | ||
394 | __be32 sdtm1; /* SDMA system bus MSNUM register */ | ||
395 | __be32 sdtm2; /* SDMA secondary bus MSNUM register */ | ||
396 | u8 res0[0x10]; | ||
397 | __be32 sdaqr; /* SDMA address bus qualify register */ | ||
398 | __be32 sdaqmr; /* SDMA address bus qualify mask register */ | ||
399 | u8 res1[0x4]; | ||
400 | __be32 sdebcr; /* SDMA CAM entries base register */ | ||
401 | u8 res2[0x38]; | ||
402 | } __attribute__ ((packed)); | ||
403 | |||
404 | /* Debug Space */ | ||
405 | struct dbg { | ||
406 | __be32 bpdcr; /* Breakpoint debug command register */ | ||
407 | __be32 bpdsr; /* Breakpoint debug status register */ | ||
408 | __be32 bpdmr; /* Breakpoint debug mask register */ | ||
409 | __be32 bprmrr0; /* Breakpoint request mode risc register 0 */ | ||
410 | __be32 bprmrr1; /* Breakpoint request mode risc register 1 */ | ||
411 | u8 res0[0x8]; | ||
412 | __be32 bprmtr0; /* Breakpoint request mode trb register 0 */ | ||
413 | __be32 bprmtr1; /* Breakpoint request mode trb register 1 */ | ||
414 | u8 res1[0x8]; | ||
415 | __be32 bprmir; /* Breakpoint request mode immediate register */ | ||
416 | __be32 bprmsr; /* Breakpoint request mode serial register */ | ||
417 | __be32 bpemr; /* Breakpoint exit mode register */ | ||
418 | u8 res2[0x48]; | ||
419 | } __attribute__ ((packed)); | ||
420 | |||
421 | /* RISC Special Registers (Trap and Breakpoint) */ | ||
422 | struct rsp { | ||
423 | u8 fixme[0x100]; | ||
424 | } __attribute__ ((packed)); | ||
425 | |||
426 | struct qe_immap { | ||
427 | struct qe_iram iram; /* I-RAM */ | ||
428 | struct qe_ic_regs ic; /* Interrupt Controller */ | ||
429 | struct cp_qe cp; /* Communications Processor */ | ||
430 | struct qe_mux qmx; /* QE Multiplexer */ | ||
431 | struct qe_timers qet; /* QE Timers */ | ||
432 | struct spi spi[0x2]; /* spi */ | ||
433 | struct mcc mcc; /* mcc */ | ||
434 | struct qe_brg brg; /* brg */ | ||
435 | struct usb_ctlr usb; /* USB */ | ||
436 | struct si1 si1; /* SI */ | ||
437 | u8 res11[0x800]; | ||
438 | struct sir sir; /* SI Routing Tables */ | ||
439 | struct ucc ucc1; /* ucc1 */ | ||
440 | struct ucc ucc3; /* ucc3 */ | ||
441 | struct ucc ucc5; /* ucc5 */ | ||
442 | struct ucc ucc7; /* ucc7 */ | ||
443 | u8 res12[0x600]; | ||
444 | struct upc upc1; /* MultiPHY UTOPIA POS Ctrlr 1*/ | ||
445 | struct ucc ucc2; /* ucc2 */ | ||
446 | struct ucc ucc4; /* ucc4 */ | ||
447 | struct ucc ucc6; /* ucc6 */ | ||
448 | struct ucc ucc8; /* ucc8 */ | ||
449 | u8 res13[0x600]; | ||
450 | struct upc upc2; /* MultiPHY UTOPIA POS Ctrlr 2*/ | ||
451 | struct sdma sdma; /* SDMA */ | ||
452 | struct dbg dbg; /* Debug Space */ | ||
453 | struct rsp rsp[0x2]; /* RISC Special Registers | ||
454 | (Trap and Breakpoint) */ | ||
455 | u8 res14[0x300]; | ||
456 | u8 res15[0x3A00]; | ||
457 | u8 res16[0x8000]; /* 0x108000 - 0x110000 */ | ||
458 | u8 muram[0xC000]; /* 0x110000 - 0x11C000 | ||
459 | Multi-user RAM */ | ||
460 | u8 res17[0x24000]; /* 0x11C000 - 0x140000 */ | ||
461 | u8 res18[0xC0000]; /* 0x140000 - 0x200000 */ | ||
462 | } __attribute__ ((packed)); | ||
463 | |||
464 | extern struct qe_immap *qe_immr; | ||
465 | extern phys_addr_t get_qe_base(void); | ||
466 | |||
467 | static inline unsigned long immrbar_virt_to_phys(volatile void * address) | ||
468 | { | ||
469 | if ( ((u32)address >= (u32)qe_immr) && | ||
470 | ((u32)address < ((u32)qe_immr + QE_IMMAP_SIZE)) ) | ||
471 | return (unsigned long)(address - (u32)qe_immr + | ||
472 | (u32)get_qe_base()); | ||
473 | return (unsigned long)virt_to_phys(address); | ||
474 | } | ||
475 | |||
476 | #endif /* __KERNEL__ */ | ||
477 | #endif /* _ASM_POWERPC_IMMAP_QE_H */ | ||
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h index 19b2ec1ec665..cbbd8c648df1 100644 --- a/include/asm-powerpc/io.h +++ b/include/asm-powerpc/io.h | |||
@@ -11,7 +11,6 @@ | |||
11 | 11 | ||
12 | /* Check of existence of legacy devices */ | 12 | /* Check of existence of legacy devices */ |
13 | extern int check_legacy_ioport(unsigned long base_port); | 13 | extern int check_legacy_ioport(unsigned long base_port); |
14 | #define PARALLEL_BASE 0x378 | ||
15 | #define PNPBIOS_BASE 0xf000 /* only relevant for PReP */ | 14 | #define PNPBIOS_BASE 0xf000 /* only relevant for PReP */ |
16 | 15 | ||
17 | #ifndef CONFIG_PPC64 | 16 | #ifndef CONFIG_PPC64 |
diff --git a/include/asm-powerpc/ipic.h b/include/asm-powerpc/ipic.h index 53079ec3a515..1ce09a35906e 100644 --- a/include/asm-powerpc/ipic.h +++ b/include/asm-powerpc/ipic.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-ppc/ipic.h | 2 | * include/asm-powerpc/ipic.h |
3 | * | 3 | * |
4 | * IPIC external definitions and structure. | 4 | * IPIC external definitions and structure. |
5 | * | 5 | * |
diff --git a/include/asm-powerpc/kprobes.h b/include/asm-powerpc/kprobes.h index 34e1f89a5fa0..2dafa376a63f 100644 --- a/include/asm-powerpc/kprobes.h +++ b/include/asm-powerpc/kprobes.h | |||
@@ -44,6 +44,28 @@ typedef unsigned int kprobe_opcode_t; | |||
44 | #define IS_TDI(instr) (((instr) & 0xfc000000) == 0x08000000) | 44 | #define IS_TDI(instr) (((instr) & 0xfc000000) == 0x08000000) |
45 | #define IS_TWI(instr) (((instr) & 0xfc000000) == 0x0c000000) | 45 | #define IS_TWI(instr) (((instr) & 0xfc000000) == 0x0c000000) |
46 | 46 | ||
47 | /* | ||
48 | * 64bit powerpc uses function descriptors. | ||
49 | * Handle cases where: | ||
50 | * - User passes a <.symbol> or <module:.symbol> | ||
51 | * - User passes a <symbol> or <module:symbol> | ||
52 | * - User passes a non-existant symbol, kallsyms_lookup_name | ||
53 | * returns 0. Don't deref the NULL pointer in that case | ||
54 | */ | ||
55 | #define kprobe_lookup_name(name, addr) \ | ||
56 | { \ | ||
57 | addr = (kprobe_opcode_t *)kallsyms_lookup_name(name); \ | ||
58 | if (addr) { \ | ||
59 | char *colon; \ | ||
60 | if ((colon = strchr(name, ':')) != NULL) { \ | ||
61 | colon++; \ | ||
62 | if (*colon != '\0' && *colon != '.') \ | ||
63 | addr = *(kprobe_opcode_t **)addr; \ | ||
64 | } else if (name[0] != '.') \ | ||
65 | addr = *(kprobe_opcode_t **)addr; \ | ||
66 | } \ | ||
67 | } | ||
68 | |||
47 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)((func_descr_t *)pentry) | 69 | #define JPROBE_ENTRY(pentry) (kprobe_opcode_t *)((func_descr_t *)pentry) |
48 | 70 | ||
49 | #define is_trap(instr) (IS_TW(instr) || IS_TD(instr) || \ | 71 | #define is_trap(instr) (IS_TW(instr) || IS_TD(instr) || \ |
diff --git a/include/asm-powerpc/mpc85xx.h b/include/asm-powerpc/mpc85xx.h new file mode 100644 index 000000000000..ccdb8a21138f --- /dev/null +++ b/include/asm-powerpc/mpc85xx.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * include/asm-powerpc/mpc85xx.h | ||
3 | * | ||
4 | * MPC85xx definitions | ||
5 | * | ||
6 | * Maintainer: Kumar Gala <galak@kernel.crashing.org> | ||
7 | * | ||
8 | * Copyright 2004 Freescale Semiconductor, Inc | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | |||
16 | #ifdef __KERNEL__ | ||
17 | #ifndef __ASM_MPC85xx_H__ | ||
18 | #define __ASM_MPC85xx_H__ | ||
19 | |||
20 | #include <asm/mmu.h> | ||
21 | |||
22 | #ifdef CONFIG_85xx | ||
23 | |||
24 | #if defined(CONFIG_MPC8540_ADS) || defined(CONFIG_MPC8560_ADS) | ||
25 | #include <platforms/85xx/mpc85xx_ads.h> | ||
26 | #endif | ||
27 | #if defined(CONFIG_MPC8555_CDS) || defined(CONFIG_MPC8548_CDS) | ||
28 | #include <platforms/85xx/mpc8555_cds.h> | ||
29 | #endif | ||
30 | #ifdef CONFIG_MPC85xx_CDS | ||
31 | #include <platforms/85xx/mpc85xx_cds.h> | ||
32 | #endif | ||
33 | |||
34 | #define _IO_BASE isa_io_base | ||
35 | #define _ISA_MEM_BASE isa_mem_base | ||
36 | #ifdef CONFIG_PCI | ||
37 | #define PCI_DRAM_OFFSET pci_dram_offset | ||
38 | #else | ||
39 | #define PCI_DRAM_OFFSET 0 | ||
40 | #endif | ||
41 | |||
42 | /* Let modules/drivers get at CCSRBAR */ | ||
43 | extern phys_addr_t get_ccsrbar(void); | ||
44 | |||
45 | #ifdef MODULE | ||
46 | #define CCSRBAR get_ccsrbar() | ||
47 | #else | ||
48 | #define CCSRBAR BOARD_CCSRBAR | ||
49 | #endif | ||
50 | |||
51 | #endif /* CONFIG_85xx */ | ||
52 | #endif /* __ASM_MPC85xx_H__ */ | ||
53 | #endif /* __KERNEL__ */ | ||
diff --git a/include/asm-powerpc/ptrace.h b/include/asm-powerpc/ptrace.h index 4435efe85d0e..4ad77a13f865 100644 --- a/include/asm-powerpc/ptrace.h +++ b/include/asm-powerpc/ptrace.h | |||
@@ -73,6 +73,8 @@ struct pt_regs { | |||
73 | #ifndef __ASSEMBLY__ | 73 | #ifndef __ASSEMBLY__ |
74 | 74 | ||
75 | #define instruction_pointer(regs) ((regs)->nip) | 75 | #define instruction_pointer(regs) ((regs)->nip) |
76 | #define regs_return_value(regs) ((regs)->gpr[3]) | ||
77 | |||
76 | #ifdef CONFIG_SMP | 78 | #ifdef CONFIG_SMP |
77 | extern unsigned long profile_pc(struct pt_regs *regs); | 79 | extern unsigned long profile_pc(struct pt_regs *regs); |
78 | #else | 80 | #else |
diff --git a/include/asm-powerpc/qe.h b/include/asm-powerpc/qe.h new file mode 100644 index 000000000000..a62168ec535f --- /dev/null +++ b/include/asm-powerpc/qe.h | |||
@@ -0,0 +1,457 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Freescale Semicondutor, Inc. All rights reserved. | ||
3 | * | ||
4 | * Authors: Shlomi Gridish <gridish@freescale.com> | ||
5 | * Li Yang <leoli@freescale.com> | ||
6 | * | ||
7 | * Description: | ||
8 | * QUICC Engine (QE) external definitions and structure. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | #ifndef _ASM_POWERPC_QE_H | ||
16 | #define _ASM_POWERPC_QE_H | ||
17 | #ifdef __KERNEL__ | ||
18 | |||
19 | #include <asm/immap_qe.h> | ||
20 | |||
21 | #define QE_NUM_OF_SNUM 28 | ||
22 | #define QE_NUM_OF_BRGS 16 | ||
23 | #define QE_NUM_OF_PORTS 1024 | ||
24 | |||
25 | /* Memory partitions | ||
26 | */ | ||
27 | #define MEM_PART_SYSTEM 0 | ||
28 | #define MEM_PART_SECONDARY 1 | ||
29 | #define MEM_PART_MURAM 2 | ||
30 | |||
31 | /* Export QE common operations */ | ||
32 | extern void qe_reset(void); | ||
33 | extern int par_io_init(struct device_node *np); | ||
34 | extern int par_io_of_config(struct device_node *np); | ||
35 | |||
36 | /* QE internal API */ | ||
37 | int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); | ||
38 | void qe_setbrg(u32 brg, u32 rate); | ||
39 | int qe_get_snum(void); | ||
40 | void qe_put_snum(u8 snum); | ||
41 | u32 qe_muram_alloc(u32 size, u32 align); | ||
42 | int qe_muram_free(u32 offset); | ||
43 | u32 qe_muram_alloc_fixed(u32 offset, u32 size); | ||
44 | void qe_muram_dump(void); | ||
45 | void *qe_muram_addr(u32 offset); | ||
46 | |||
47 | /* Buffer descriptors */ | ||
48 | struct qe_bd { | ||
49 | u16 status; | ||
50 | u16 length; | ||
51 | u32 buf; | ||
52 | } __attribute__ ((packed)); | ||
53 | |||
54 | #define BD_STATUS_MASK 0xffff0000 | ||
55 | #define BD_LENGTH_MASK 0x0000ffff | ||
56 | |||
57 | /* Alignment */ | ||
58 | #define QE_INTR_TABLE_ALIGN 16 /* ??? */ | ||
59 | #define QE_ALIGNMENT_OF_BD 8 | ||
60 | #define QE_ALIGNMENT_OF_PRAM 64 | ||
61 | |||
62 | /* RISC allocation */ | ||
63 | enum qe_risc_allocation { | ||
64 | QE_RISC_ALLOCATION_RISC1 = 1, /* RISC 1 */ | ||
65 | QE_RISC_ALLOCATION_RISC2 = 2, /* RISC 2 */ | ||
66 | QE_RISC_ALLOCATION_RISC1_AND_RISC2 = 3 /* Dynamically choose | ||
67 | RISC 1 or RISC 2 */ | ||
68 | }; | ||
69 | |||
70 | /* QE extended filtering Table Lookup Key Size */ | ||
71 | enum qe_fltr_tbl_lookup_key_size { | ||
72 | QE_FLTR_TABLE_LOOKUP_KEY_SIZE_8_BYTES | ||
73 | = 0x3f, /* LookupKey parsed by the Generate LookupKey | ||
74 | CMD is truncated to 8 bytes */ | ||
75 | QE_FLTR_TABLE_LOOKUP_KEY_SIZE_16_BYTES | ||
76 | = 0x5f, /* LookupKey parsed by the Generate LookupKey | ||
77 | CMD is truncated to 16 bytes */ | ||
78 | }; | ||
79 | |||
80 | /* QE FLTR extended filtering Largest External Table Lookup Key Size */ | ||
81 | enum qe_fltr_largest_external_tbl_lookup_key_size { | ||
82 | QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_NONE | ||
83 | = 0x0,/* not used */ | ||
84 | QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_8_BYTES | ||
85 | = QE_FLTR_TABLE_LOOKUP_KEY_SIZE_8_BYTES, /* 8 bytes */ | ||
86 | QE_FLTR_LARGEST_EXTERNAL_TABLE_LOOKUP_KEY_SIZE_16_BYTES | ||
87 | = QE_FLTR_TABLE_LOOKUP_KEY_SIZE_16_BYTES, /* 16 bytes */ | ||
88 | }; | ||
89 | |||
90 | /* structure representing QE parameter RAM */ | ||
91 | struct qe_timer_tables { | ||
92 | u16 tm_base; /* QE timer table base adr */ | ||
93 | u16 tm_ptr; /* QE timer table pointer */ | ||
94 | u16 r_tmr; /* QE timer mode register */ | ||
95 | u16 r_tmv; /* QE timer valid register */ | ||
96 | u32 tm_cmd; /* QE timer cmd register */ | ||
97 | u32 tm_cnt; /* QE timer internal cnt */ | ||
98 | } __attribute__ ((packed)); | ||
99 | |||
100 | #define QE_FLTR_TAD_SIZE 8 | ||
101 | |||
102 | /* QE extended filtering Termination Action Descriptor (TAD) */ | ||
103 | struct qe_fltr_tad { | ||
104 | u8 serialized[QE_FLTR_TAD_SIZE]; | ||
105 | } __attribute__ ((packed)); | ||
106 | |||
107 | /* Communication Direction */ | ||
108 | enum comm_dir { | ||
109 | COMM_DIR_NONE = 0, | ||
110 | COMM_DIR_RX = 1, | ||
111 | COMM_DIR_TX = 2, | ||
112 | COMM_DIR_RX_AND_TX = 3 | ||
113 | }; | ||
114 | |||
115 | /* Clocks and BRGs */ | ||
116 | enum qe_clock { | ||
117 | QE_CLK_NONE = 0, | ||
118 | QE_BRG1, /* Baud Rate Generator 1 */ | ||
119 | QE_BRG2, /* Baud Rate Generator 2 */ | ||
120 | QE_BRG3, /* Baud Rate Generator 3 */ | ||
121 | QE_BRG4, /* Baud Rate Generator 4 */ | ||
122 | QE_BRG5, /* Baud Rate Generator 5 */ | ||
123 | QE_BRG6, /* Baud Rate Generator 6 */ | ||
124 | QE_BRG7, /* Baud Rate Generator 7 */ | ||
125 | QE_BRG8, /* Baud Rate Generator 8 */ | ||
126 | QE_BRG9, /* Baud Rate Generator 9 */ | ||
127 | QE_BRG10, /* Baud Rate Generator 10 */ | ||
128 | QE_BRG11, /* Baud Rate Generator 11 */ | ||
129 | QE_BRG12, /* Baud Rate Generator 12 */ | ||
130 | QE_BRG13, /* Baud Rate Generator 13 */ | ||
131 | QE_BRG14, /* Baud Rate Generator 14 */ | ||
132 | QE_BRG15, /* Baud Rate Generator 15 */ | ||
133 | QE_BRG16, /* Baud Rate Generator 16 */ | ||
134 | QE_CLK1, /* Clock 1 */ | ||
135 | QE_CLK2, /* Clock 2 */ | ||
136 | QE_CLK3, /* Clock 3 */ | ||
137 | QE_CLK4, /* Clock 4 */ | ||
138 | QE_CLK5, /* Clock 5 */ | ||
139 | QE_CLK6, /* Clock 6 */ | ||
140 | QE_CLK7, /* Clock 7 */ | ||
141 | QE_CLK8, /* Clock 8 */ | ||
142 | QE_CLK9, /* Clock 9 */ | ||
143 | QE_CLK10, /* Clock 10 */ | ||
144 | QE_CLK11, /* Clock 11 */ | ||
145 | QE_CLK12, /* Clock 12 */ | ||
146 | QE_CLK13, /* Clock 13 */ | ||
147 | QE_CLK14, /* Clock 14 */ | ||
148 | QE_CLK15, /* Clock 15 */ | ||
149 | QE_CLK16, /* Clock 16 */ | ||
150 | QE_CLK17, /* Clock 17 */ | ||
151 | QE_CLK18, /* Clock 18 */ | ||
152 | QE_CLK19, /* Clock 19 */ | ||
153 | QE_CLK20, /* Clock 20 */ | ||
154 | QE_CLK21, /* Clock 21 */ | ||
155 | QE_CLK22, /* Clock 22 */ | ||
156 | QE_CLK23, /* Clock 23 */ | ||
157 | QE_CLK24, /* Clock 24 */ | ||
158 | QE_CLK_DUMMY, | ||
159 | }; | ||
160 | |||
161 | /* QE CMXUCR Registers. | ||
162 | * There are two UCCs represented in each of the four CMXUCR registers. | ||
163 | * These values are for the UCC in the LSBs | ||
164 | */ | ||
165 | #define QE_CMXUCR_MII_ENET_MNG 0x00007000 | ||
166 | #define QE_CMXUCR_MII_ENET_MNG_SHIFT 12 | ||
167 | #define QE_CMXUCR_GRANT 0x00008000 | ||
168 | #define QE_CMXUCR_TSA 0x00004000 | ||
169 | #define QE_CMXUCR_BKPT 0x00000100 | ||
170 | #define QE_CMXUCR_TX_CLK_SRC_MASK 0x0000000F | ||
171 | |||
172 | /* QE CMXGCR Registers. | ||
173 | */ | ||
174 | #define QE_CMXGCR_MII_ENET_MNG 0x00007000 | ||
175 | #define QE_CMXGCR_MII_ENET_MNG_SHIFT 12 | ||
176 | #define QE_CMXGCR_USBCS 0x0000000f | ||
177 | |||
178 | /* QE CECR Commands. | ||
179 | */ | ||
180 | #define QE_CR_FLG 0x00010000 | ||
181 | #define QE_RESET 0x80000000 | ||
182 | #define QE_INIT_TX_RX 0x00000000 | ||
183 | #define QE_INIT_RX 0x00000001 | ||
184 | #define QE_INIT_TX 0x00000002 | ||
185 | #define QE_ENTER_HUNT_MODE 0x00000003 | ||
186 | #define QE_STOP_TX 0x00000004 | ||
187 | #define QE_GRACEFUL_STOP_TX 0x00000005 | ||
188 | #define QE_RESTART_TX 0x00000006 | ||
189 | #define QE_CLOSE_RX_BD 0x00000007 | ||
190 | #define QE_SWITCH_COMMAND 0x00000007 | ||
191 | #define QE_SET_GROUP_ADDRESS 0x00000008 | ||
192 | #define QE_START_IDMA 0x00000009 | ||
193 | #define QE_MCC_STOP_RX 0x00000009 | ||
194 | #define QE_ATM_TRANSMIT 0x0000000a | ||
195 | #define QE_HPAC_CLEAR_ALL 0x0000000b | ||
196 | #define QE_GRACEFUL_STOP_RX 0x0000001a | ||
197 | #define QE_RESTART_RX 0x0000001b | ||
198 | #define QE_HPAC_SET_PRIORITY 0x0000010b | ||
199 | #define QE_HPAC_STOP_TX 0x0000020b | ||
200 | #define QE_HPAC_STOP_RX 0x0000030b | ||
201 | #define QE_HPAC_GRACEFUL_STOP_TX 0x0000040b | ||
202 | #define QE_HPAC_GRACEFUL_STOP_RX 0x0000050b | ||
203 | #define QE_HPAC_START_TX 0x0000060b | ||
204 | #define QE_HPAC_START_RX 0x0000070b | ||
205 | #define QE_USB_STOP_TX 0x0000000a | ||
206 | #define QE_USB_RESTART_TX 0x0000000b | ||
207 | #define QE_QMC_STOP_TX 0x0000000c | ||
208 | #define QE_QMC_STOP_RX 0x0000000d | ||
209 | #define QE_SS7_SU_FIL_RESET 0x0000000e | ||
210 | /* jonathbr added from here down for 83xx */ | ||
211 | #define QE_RESET_BCS 0x0000000a | ||
212 | #define QE_MCC_INIT_TX_RX_16 0x00000003 | ||
213 | #define QE_MCC_STOP_TX 0x00000004 | ||
214 | #define QE_MCC_INIT_TX_1 0x00000005 | ||
215 | #define QE_MCC_INIT_RX_1 0x00000006 | ||
216 | #define QE_MCC_RESET 0x00000007 | ||
217 | #define QE_SET_TIMER 0x00000008 | ||
218 | #define QE_RANDOM_NUMBER 0x0000000c | ||
219 | #define QE_ATM_MULTI_THREAD_INIT 0x00000011 | ||
220 | #define QE_ASSIGN_PAGE 0x00000012 | ||
221 | #define QE_ADD_REMOVE_HASH_ENTRY 0x00000013 | ||
222 | #define QE_START_FLOW_CONTROL 0x00000014 | ||
223 | #define QE_STOP_FLOW_CONTROL 0x00000015 | ||
224 | #define QE_ASSIGN_PAGE_TO_DEVICE 0x00000016 | ||
225 | |||
226 | #define QE_ASSIGN_RISC 0x00000010 | ||
227 | #define QE_CR_MCN_NORMAL_SHIFT 6 | ||
228 | #define QE_CR_MCN_USB_SHIFT 4 | ||
229 | #define QE_CR_MCN_RISC_ASSIGN_SHIFT 8 | ||
230 | #define QE_CR_SNUM_SHIFT 17 | ||
231 | |||
232 | /* QE CECR Sub Block - sub block of QE command. | ||
233 | */ | ||
234 | #define QE_CR_SUBBLOCK_INVALID 0x00000000 | ||
235 | #define QE_CR_SUBBLOCK_USB 0x03200000 | ||
236 | #define QE_CR_SUBBLOCK_UCCFAST1 0x02000000 | ||
237 | #define QE_CR_SUBBLOCK_UCCFAST2 0x02200000 | ||
238 | #define QE_CR_SUBBLOCK_UCCFAST3 0x02400000 | ||
239 | #define QE_CR_SUBBLOCK_UCCFAST4 0x02600000 | ||
240 | #define QE_CR_SUBBLOCK_UCCFAST5 0x02800000 | ||
241 | #define QE_CR_SUBBLOCK_UCCFAST6 0x02a00000 | ||
242 | #define QE_CR_SUBBLOCK_UCCFAST7 0x02c00000 | ||
243 | #define QE_CR_SUBBLOCK_UCCFAST8 0x02e00000 | ||
244 | #define QE_CR_SUBBLOCK_UCCSLOW1 0x00000000 | ||
245 | #define QE_CR_SUBBLOCK_UCCSLOW2 0x00200000 | ||
246 | #define QE_CR_SUBBLOCK_UCCSLOW3 0x00400000 | ||
247 | #define QE_CR_SUBBLOCK_UCCSLOW4 0x00600000 | ||
248 | #define QE_CR_SUBBLOCK_UCCSLOW5 0x00800000 | ||
249 | #define QE_CR_SUBBLOCK_UCCSLOW6 0x00a00000 | ||
250 | #define QE_CR_SUBBLOCK_UCCSLOW7 0x00c00000 | ||
251 | #define QE_CR_SUBBLOCK_UCCSLOW8 0x00e00000 | ||
252 | #define QE_CR_SUBBLOCK_MCC1 0x03800000 | ||
253 | #define QE_CR_SUBBLOCK_MCC2 0x03a00000 | ||
254 | #define QE_CR_SUBBLOCK_MCC3 0x03000000 | ||
255 | #define QE_CR_SUBBLOCK_IDMA1 0x02800000 | ||
256 | #define QE_CR_SUBBLOCK_IDMA2 0x02a00000 | ||
257 | #define QE_CR_SUBBLOCK_IDMA3 0x02c00000 | ||
258 | #define QE_CR_SUBBLOCK_IDMA4 0x02e00000 | ||
259 | #define QE_CR_SUBBLOCK_HPAC 0x01e00000 | ||
260 | #define QE_CR_SUBBLOCK_SPI1 0x01400000 | ||
261 | #define QE_CR_SUBBLOCK_SPI2 0x01600000 | ||
262 | #define QE_CR_SUBBLOCK_RAND 0x01c00000 | ||
263 | #define QE_CR_SUBBLOCK_TIMER 0x01e00000 | ||
264 | #define QE_CR_SUBBLOCK_GENERAL 0x03c00000 | ||
265 | |||
266 | /* QE CECR Protocol - For non-MCC, specifies mode for QE CECR command */ | ||
267 | #define QE_CR_PROTOCOL_UNSPECIFIED 0x00 /* For all other protocols */ | ||
268 | #define QE_CR_PROTOCOL_HDLC_TRANSPARENT 0x00 | ||
269 | #define QE_CR_PROTOCOL_ATM_POS 0x0A | ||
270 | #define QE_CR_PROTOCOL_ETHERNET 0x0C | ||
271 | #define QE_CR_PROTOCOL_L2_SWITCH 0x0D | ||
272 | |||
273 | /* BMR byte order */ | ||
274 | #define QE_BMR_BYTE_ORDER_BO_PPC 0x08 /* powerpc little endian */ | ||
275 | #define QE_BMR_BYTE_ORDER_BO_MOT 0x10 /* motorola big endian */ | ||
276 | #define QE_BMR_BYTE_ORDER_BO_MAX 0x18 | ||
277 | |||
278 | /* BRG configuration register */ | ||
279 | #define QE_BRGC_ENABLE 0x00010000 | ||
280 | #define QE_BRGC_DIVISOR_SHIFT 1 | ||
281 | #define QE_BRGC_DIVISOR_MAX 0xFFF | ||
282 | #define QE_BRGC_DIV16 1 | ||
283 | |||
284 | /* QE Timers registers */ | ||
285 | #define QE_GTCFR1_PCAS 0x80 | ||
286 | #define QE_GTCFR1_STP2 0x20 | ||
287 | #define QE_GTCFR1_RST2 0x10 | ||
288 | #define QE_GTCFR1_GM2 0x08 | ||
289 | #define QE_GTCFR1_GM1 0x04 | ||
290 | #define QE_GTCFR1_STP1 0x02 | ||
291 | #define QE_GTCFR1_RST1 0x01 | ||
292 | |||
293 | /* SDMA registers */ | ||
294 | #define QE_SDSR_BER1 0x02000000 | ||
295 | #define QE_SDSR_BER2 0x01000000 | ||
296 | |||
297 | #define QE_SDMR_GLB_1_MSK 0x80000000 | ||
298 | #define QE_SDMR_ADR_SEL 0x20000000 | ||
299 | #define QE_SDMR_BER1_MSK 0x02000000 | ||
300 | #define QE_SDMR_BER2_MSK 0x01000000 | ||
301 | #define QE_SDMR_EB1_MSK 0x00800000 | ||
302 | #define QE_SDMR_ER1_MSK 0x00080000 | ||
303 | #define QE_SDMR_ER2_MSK 0x00040000 | ||
304 | #define QE_SDMR_CEN_MASK 0x0000E000 | ||
305 | #define QE_SDMR_SBER_1 0x00000200 | ||
306 | #define QE_SDMR_SBER_2 0x00000200 | ||
307 | #define QE_SDMR_EB1_PR_MASK 0x000000C0 | ||
308 | #define QE_SDMR_ER1_PR 0x00000008 | ||
309 | |||
310 | #define QE_SDMR_CEN_SHIFT 13 | ||
311 | #define QE_SDMR_EB1_PR_SHIFT 6 | ||
312 | |||
313 | #define QE_SDTM_MSNUM_SHIFT 24 | ||
314 | |||
315 | #define QE_SDEBCR_BA_MASK 0x01FFFFFF | ||
316 | |||
317 | /* UPC */ | ||
318 | #define UPGCR_PROTOCOL 0x80000000 /* protocol ul2 or pl2 */ | ||
319 | #define UPGCR_TMS 0x40000000 /* Transmit master/slave mode */ | ||
320 | #define UPGCR_RMS 0x20000000 /* Receive master/slave mode */ | ||
321 | #define UPGCR_ADDR 0x10000000 /* Master MPHY Addr multiplexing */ | ||
322 | #define UPGCR_DIAG 0x01000000 /* Diagnostic mode */ | ||
323 | |||
324 | /* UCC */ | ||
325 | #define UCC_GUEMR_MODE_MASK_RX 0x02 | ||
326 | #define UCC_GUEMR_MODE_MASK_TX 0x01 | ||
327 | #define UCC_GUEMR_MODE_FAST_RX 0x02 | ||
328 | #define UCC_GUEMR_MODE_FAST_TX 0x01 | ||
329 | #define UCC_GUEMR_MODE_SLOW_RX 0x00 | ||
330 | #define UCC_GUEMR_MODE_SLOW_TX 0x00 | ||
331 | #define UCC_GUEMR_SET_RESERVED3 0x10 /* Bit 3 in the guemr is reserved but | ||
332 | must be set 1 */ | ||
333 | |||
334 | /* structure representing UCC SLOW parameter RAM */ | ||
335 | struct ucc_slow_pram { | ||
336 | u16 rbase; /* RX BD base address */ | ||
337 | u16 tbase; /* TX BD base address */ | ||
338 | u8 rfcr; /* Rx function code */ | ||
339 | u8 tfcr; /* Tx function code */ | ||
340 | u16 mrblr; /* Rx buffer length */ | ||
341 | u32 rstate; /* Rx internal state */ | ||
342 | u32 rptr; /* Rx internal data pointer */ | ||
343 | u16 rbptr; /* rb BD Pointer */ | ||
344 | u16 rcount; /* Rx internal byte count */ | ||
345 | u32 rtemp; /* Rx temp */ | ||
346 | u32 tstate; /* Tx internal state */ | ||
347 | u32 tptr; /* Tx internal data pointer */ | ||
348 | u16 tbptr; /* Tx BD pointer */ | ||
349 | u16 tcount; /* Tx byte count */ | ||
350 | u32 ttemp; /* Tx temp */ | ||
351 | u32 rcrc; /* temp receive CRC */ | ||
352 | u32 tcrc; /* temp transmit CRC */ | ||
353 | } __attribute__ ((packed)); | ||
354 | |||
355 | /* General UCC SLOW Mode Register (GUMRH & GUMRL) */ | ||
356 | #define UCC_SLOW_GUMR_H_CRC16 0x00004000 | ||
357 | #define UCC_SLOW_GUMR_H_CRC16CCITT 0x00000000 | ||
358 | #define UCC_SLOW_GUMR_H_CRC32CCITT 0x00008000 | ||
359 | #define UCC_SLOW_GUMR_H_REVD 0x00002000 | ||
360 | #define UCC_SLOW_GUMR_H_TRX 0x00001000 | ||
361 | #define UCC_SLOW_GUMR_H_TTX 0x00000800 | ||
362 | #define UCC_SLOW_GUMR_H_CDP 0x00000400 | ||
363 | #define UCC_SLOW_GUMR_H_CTSP 0x00000200 | ||
364 | #define UCC_SLOW_GUMR_H_CDS 0x00000100 | ||
365 | #define UCC_SLOW_GUMR_H_CTSS 0x00000080 | ||
366 | #define UCC_SLOW_GUMR_H_TFL 0x00000040 | ||
367 | #define UCC_SLOW_GUMR_H_RFW 0x00000020 | ||
368 | #define UCC_SLOW_GUMR_H_TXSY 0x00000010 | ||
369 | #define UCC_SLOW_GUMR_H_4SYNC 0x00000004 | ||
370 | #define UCC_SLOW_GUMR_H_8SYNC 0x00000008 | ||
371 | #define UCC_SLOW_GUMR_H_16SYNC 0x0000000c | ||
372 | #define UCC_SLOW_GUMR_H_RTSM 0x00000002 | ||
373 | #define UCC_SLOW_GUMR_H_RSYN 0x00000001 | ||
374 | |||
375 | #define UCC_SLOW_GUMR_L_TCI 0x10000000 | ||
376 | #define UCC_SLOW_GUMR_L_RINV 0x02000000 | ||
377 | #define UCC_SLOW_GUMR_L_TINV 0x01000000 | ||
378 | #define UCC_SLOW_GUMR_L_TEND 0x00020000 | ||
379 | #define UCC_SLOW_GUMR_L_ENR 0x00000020 | ||
380 | #define UCC_SLOW_GUMR_L_ENT 0x00000010 | ||
381 | |||
382 | /* General UCC FAST Mode Register */ | ||
383 | #define UCC_FAST_GUMR_TCI 0x20000000 | ||
384 | #define UCC_FAST_GUMR_TRX 0x10000000 | ||
385 | #define UCC_FAST_GUMR_TTX 0x08000000 | ||
386 | #define UCC_FAST_GUMR_CDP 0x04000000 | ||
387 | #define UCC_FAST_GUMR_CTSP 0x02000000 | ||
388 | #define UCC_FAST_GUMR_CDS 0x01000000 | ||
389 | #define UCC_FAST_GUMR_CTSS 0x00800000 | ||
390 | #define UCC_FAST_GUMR_TXSY 0x00020000 | ||
391 | #define UCC_FAST_GUMR_RSYN 0x00010000 | ||
392 | #define UCC_FAST_GUMR_RTSM 0x00002000 | ||
393 | #define UCC_FAST_GUMR_REVD 0x00000400 | ||
394 | #define UCC_FAST_GUMR_ENR 0x00000020 | ||
395 | #define UCC_FAST_GUMR_ENT 0x00000010 | ||
396 | |||
397 | /* Slow UCC Event Register (UCCE) */ | ||
398 | #define UCC_SLOW_UCCE_GLR 0x1000 | ||
399 | #define UCC_SLOW_UCCE_GLT 0x0800 | ||
400 | #define UCC_SLOW_UCCE_DCC 0x0400 | ||
401 | #define UCC_SLOW_UCCE_FLG 0x0200 | ||
402 | #define UCC_SLOW_UCCE_AB 0x0200 | ||
403 | #define UCC_SLOW_UCCE_IDLE 0x0100 | ||
404 | #define UCC_SLOW_UCCE_GRA 0x0080 | ||
405 | #define UCC_SLOW_UCCE_TXE 0x0010 | ||
406 | #define UCC_SLOW_UCCE_RXF 0x0008 | ||
407 | #define UCC_SLOW_UCCE_CCR 0x0008 | ||
408 | #define UCC_SLOW_UCCE_RCH 0x0008 | ||
409 | #define UCC_SLOW_UCCE_BSY 0x0004 | ||
410 | #define UCC_SLOW_UCCE_TXB 0x0002 | ||
411 | #define UCC_SLOW_UCCE_TX 0x0002 | ||
412 | #define UCC_SLOW_UCCE_RX 0x0001 | ||
413 | #define UCC_SLOW_UCCE_GOV 0x0001 | ||
414 | #define UCC_SLOW_UCCE_GUN 0x0002 | ||
415 | #define UCC_SLOW_UCCE_GINT 0x0004 | ||
416 | #define UCC_SLOW_UCCE_IQOV 0x0008 | ||
417 | |||
418 | #define UCC_SLOW_UCCE_HDLC_SET (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | ||
419 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_TXB | UCC_SLOW_UCCE_RXF | \ | ||
420 | UCC_SLOW_UCCE_DCC | UCC_SLOW_UCCE_GLT | UCC_SLOW_UCCE_GLR) | ||
421 | #define UCC_SLOW_UCCE_ENET_SET (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | ||
422 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_TXB | UCC_SLOW_UCCE_RXF) | ||
423 | #define UCC_SLOW_UCCE_TRANS_SET (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | ||
424 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_TX | UCC_SLOW_UCCE_RX | \ | ||
425 | UCC_SLOW_UCCE_DCC | UCC_SLOW_UCCE_GLT | UCC_SLOW_UCCE_GLR) | ||
426 | #define UCC_SLOW_UCCE_UART_SET (UCC_SLOW_UCCE_BSY | UCC_SLOW_UCCE_GRA | \ | ||
427 | UCC_SLOW_UCCE_TXB | UCC_SLOW_UCCE_TX | UCC_SLOW_UCCE_RX | \ | ||
428 | UCC_SLOW_UCCE_GLT | UCC_SLOW_UCCE_GLR) | ||
429 | #define UCC_SLOW_UCCE_QMC_SET (UCC_SLOW_UCCE_IQOV | UCC_SLOW_UCCE_GINT | \ | ||
430 | UCC_SLOW_UCCE_GUN | UCC_SLOW_UCCE_GOV) | ||
431 | |||
432 | #define UCC_SLOW_UCCE_OTHER (UCC_SLOW_UCCE_TXE | UCC_SLOW_UCCE_BSY | \ | ||
433 | UCC_SLOW_UCCE_GRA | UCC_SLOW_UCCE_DCC | UCC_SLOW_UCCE_GLT | \ | ||
434 | UCC_SLOW_UCCE_GLR) | ||
435 | |||
436 | #define UCC_SLOW_INTR_TX UCC_SLOW_UCCE_TXB | ||
437 | #define UCC_SLOW_INTR_RX (UCC_SLOW_UCCE_RXF | UCC_SLOW_UCCE_RX) | ||
438 | #define UCC_SLOW_INTR (UCC_SLOW_INTR_TX | UCC_SLOW_INTR_RX) | ||
439 | |||
440 | /* UCC Transmit On Demand Register (UTODR) */ | ||
441 | #define UCC_SLOW_TOD 0x8000 | ||
442 | #define UCC_FAST_TOD 0x8000 | ||
443 | |||
444 | /* Function code masks */ | ||
445 | #define FC_GBL 0x20 | ||
446 | #define FC_DTB_LCL 0x02 | ||
447 | #define UCC_FAST_FUNCTION_CODE_GBL 0x20 | ||
448 | #define UCC_FAST_FUNCTION_CODE_DTB_LCL 0x02 | ||
449 | #define UCC_FAST_FUNCTION_CODE_BDB_LCL 0x01 | ||
450 | |||
451 | static inline long IS_MURAM_ERR(const u32 offset) | ||
452 | { | ||
453 | return offset > (u32) - 1000L; | ||
454 | } | ||
455 | |||
456 | #endif /* __KERNEL__ */ | ||
457 | #endif /* _ASM_POWERPC_QE_H */ | ||
diff --git a/include/asm-powerpc/qe_ic.h b/include/asm-powerpc/qe_ic.h new file mode 100644 index 000000000000..e386fb7e44b0 --- /dev/null +++ b/include/asm-powerpc/qe_ic.h | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | * include/asm-powerpc/qe_ic.h | ||
3 | * | ||
4 | * Copyright (C) 2006 Freescale Semicondutor, Inc. All rights reserved. | ||
5 | * | ||
6 | * Authors: Shlomi Gridish <gridish@freescale.com> | ||
7 | * Li Yang <leoli@freescale.com> | ||
8 | * | ||
9 | * Description: | ||
10 | * QE IC external definitions and structure. | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify it | ||
13 | * under the terms of the GNU General Public License as published by the | ||
14 | * Free Software Foundation; either version 2 of the License, or (at your | ||
15 | * option) any later version. | ||
16 | */ | ||
17 | #ifndef _ASM_POWERPC_QE_IC_H | ||
18 | #define _ASM_POWERPC_QE_IC_H | ||
19 | |||
20 | #include <linux/irq.h> | ||
21 | |||
22 | #define NUM_OF_QE_IC_GROUPS 6 | ||
23 | |||
24 | /* Flags when we init the QE IC */ | ||
25 | #define QE_IC_SPREADMODE_GRP_W 0x00000001 | ||
26 | #define QE_IC_SPREADMODE_GRP_X 0x00000002 | ||
27 | #define QE_IC_SPREADMODE_GRP_Y 0x00000004 | ||
28 | #define QE_IC_SPREADMODE_GRP_Z 0x00000008 | ||
29 | #define QE_IC_SPREADMODE_GRP_RISCA 0x00000010 | ||
30 | #define QE_IC_SPREADMODE_GRP_RISCB 0x00000020 | ||
31 | |||
32 | #define QE_IC_LOW_SIGNAL 0x00000100 | ||
33 | #define QE_IC_HIGH_SIGNAL 0x00000200 | ||
34 | |||
35 | #define QE_IC_GRP_W_PRI0_DEST_SIGNAL_HIGH 0x00001000 | ||
36 | #define QE_IC_GRP_W_PRI1_DEST_SIGNAL_HIGH 0x00002000 | ||
37 | #define QE_IC_GRP_X_PRI0_DEST_SIGNAL_HIGH 0x00004000 | ||
38 | #define QE_IC_GRP_X_PRI1_DEST_SIGNAL_HIGH 0x00008000 | ||
39 | #define QE_IC_GRP_Y_PRI0_DEST_SIGNAL_HIGH 0x00010000 | ||
40 | #define QE_IC_GRP_Y_PRI1_DEST_SIGNAL_HIGH 0x00020000 | ||
41 | #define QE_IC_GRP_Z_PRI0_DEST_SIGNAL_HIGH 0x00040000 | ||
42 | #define QE_IC_GRP_Z_PRI1_DEST_SIGNAL_HIGH 0x00080000 | ||
43 | #define QE_IC_GRP_RISCA_PRI0_DEST_SIGNAL_HIGH 0x00100000 | ||
44 | #define QE_IC_GRP_RISCA_PRI1_DEST_SIGNAL_HIGH 0x00200000 | ||
45 | #define QE_IC_GRP_RISCB_PRI0_DEST_SIGNAL_HIGH 0x00400000 | ||
46 | #define QE_IC_GRP_RISCB_PRI1_DEST_SIGNAL_HIGH 0x00800000 | ||
47 | #define QE_IC_GRP_W_DEST_SIGNAL_SHIFT (12) | ||
48 | |||
49 | /* QE interrupt sources groups */ | ||
50 | enum qe_ic_grp_id { | ||
51 | QE_IC_GRP_W = 0, /* QE interrupt controller group W */ | ||
52 | QE_IC_GRP_X, /* QE interrupt controller group X */ | ||
53 | QE_IC_GRP_Y, /* QE interrupt controller group Y */ | ||
54 | QE_IC_GRP_Z, /* QE interrupt controller group Z */ | ||
55 | QE_IC_GRP_RISCA, /* QE interrupt controller RISC group A */ | ||
56 | QE_IC_GRP_RISCB /* QE interrupt controller RISC group B */ | ||
57 | }; | ||
58 | |||
59 | void qe_ic_init(struct device_node *node, unsigned int flags); | ||
60 | void qe_ic_set_highest_priority(unsigned int virq, int high); | ||
61 | int qe_ic_set_priority(unsigned int virq, unsigned int priority); | ||
62 | int qe_ic_set_high_priority(unsigned int virq, unsigned int priority, int high); | ||
63 | |||
64 | #endif /* _ASM_POWERPC_QE_IC_H */ | ||
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index 4b41deaa8d8d..43627596003b 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
@@ -91,10 +91,6 @@ DEBUGGER_BOILERPLATE(debugger_iabr_match) | |||
91 | DEBUGGER_BOILERPLATE(debugger_dabr_match) | 91 | DEBUGGER_BOILERPLATE(debugger_dabr_match) |
92 | DEBUGGER_BOILERPLATE(debugger_fault_handler) | 92 | DEBUGGER_BOILERPLATE(debugger_fault_handler) |
93 | 93 | ||
94 | #ifdef CONFIG_XMON | ||
95 | extern void xmon_init(int enable); | ||
96 | #endif | ||
97 | |||
98 | #else | 94 | #else |
99 | static inline int debugger(struct pt_regs *regs) { return 0; } | 95 | static inline int debugger(struct pt_regs *regs) { return 0; } |
100 | static inline int debugger_ipi(struct pt_regs *regs) { return 0; } | 96 | static inline int debugger_ipi(struct pt_regs *regs) { return 0; } |
diff --git a/include/asm-powerpc/time.h b/include/asm-powerpc/time.h index 5785ac4737b5..b051d4c88c3b 100644 --- a/include/asm-powerpc/time.h +++ b/include/asm-powerpc/time.h | |||
@@ -39,6 +39,10 @@ extern void generic_calibrate_decr(void); | |||
39 | extern void wakeup_decrementer(void); | 39 | extern void wakeup_decrementer(void); |
40 | extern void snapshot_timebase(void); | 40 | extern void snapshot_timebase(void); |
41 | 41 | ||
42 | #ifdef CONFIG_RTC_CLASS | ||
43 | extern int __init rtc_class_hookup(void); | ||
44 | #endif | ||
45 | |||
42 | /* Some sane defaults: 125 MHz timebase, 1GHz processor */ | 46 | /* Some sane defaults: 125 MHz timebase, 1GHz processor */ |
43 | extern unsigned long ppc_proc_freq; | 47 | extern unsigned long ppc_proc_freq; |
44 | #define DEFAULT_PROC_FREQ (DEFAULT_TB_FREQ * 8) | 48 | #define DEFAULT_PROC_FREQ (DEFAULT_TB_FREQ * 8) |
@@ -234,4 +238,4 @@ extern void snapshot_timebases(void); | |||
234 | #endif | 238 | #endif |
235 | 239 | ||
236 | #endif /* __KERNEL__ */ | 240 | #endif /* __KERNEL__ */ |
237 | #endif /* __PPC64_TIME_H */ | 241 | #endif /* __POWERPC_TIME_H */ |
diff --git a/include/asm-powerpc/topology.h b/include/asm-powerpc/topology.h index bbc3844b086f..8f7ee16781a4 100644 --- a/include/asm-powerpc/topology.h +++ b/include/asm-powerpc/topology.h | |||
@@ -43,6 +43,7 @@ extern int pcibus_to_node(struct pci_bus *bus); | |||
43 | #define SD_NODE_INIT (struct sched_domain) { \ | 43 | #define SD_NODE_INIT (struct sched_domain) { \ |
44 | .span = CPU_MASK_NONE, \ | 44 | .span = CPU_MASK_NONE, \ |
45 | .parent = NULL, \ | 45 | .parent = NULL, \ |
46 | .child = NULL, \ | ||
46 | .groups = NULL, \ | 47 | .groups = NULL, \ |
47 | .min_interval = 8, \ | 48 | .min_interval = 8, \ |
48 | .max_interval = 32, \ | 49 | .max_interval = 32, \ |
diff --git a/include/asm-powerpc/ucc.h b/include/asm-powerpc/ucc.h new file mode 100644 index 000000000000..afe3076bdc03 --- /dev/null +++ b/include/asm-powerpc/ucc.h | |||
@@ -0,0 +1,84 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Freescale Semicondutor, Inc. All rights reserved. | ||
3 | * | ||
4 | * Authors: Shlomi Gridish <gridish@freescale.com> | ||
5 | * Li Yang <leoli@freescale.com> | ||
6 | * | ||
7 | * Description: | ||
8 | * Internal header file for UCC unit routines. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | #ifndef __UCC_H__ | ||
16 | #define __UCC_H__ | ||
17 | |||
18 | #include <asm/immap_qe.h> | ||
19 | #include <asm/qe.h> | ||
20 | |||
21 | #define STATISTICS | ||
22 | |||
23 | #define UCC_MAX_NUM 8 | ||
24 | |||
25 | /* Slow or fast type for UCCs. | ||
26 | */ | ||
27 | enum ucc_speed_type { | ||
28 | UCC_SPEED_TYPE_FAST, UCC_SPEED_TYPE_SLOW | ||
29 | }; | ||
30 | |||
31 | /* Initial UCCs Parameter RAM address relative to: MEM_MAP_BASE (IMMR). | ||
32 | */ | ||
33 | enum ucc_pram_initial_offset { | ||
34 | UCC_PRAM_OFFSET_UCC1 = 0x8400, | ||
35 | UCC_PRAM_OFFSET_UCC2 = 0x8500, | ||
36 | UCC_PRAM_OFFSET_UCC3 = 0x8600, | ||
37 | UCC_PRAM_OFFSET_UCC4 = 0x9000, | ||
38 | UCC_PRAM_OFFSET_UCC5 = 0x8000, | ||
39 | UCC_PRAM_OFFSET_UCC6 = 0x8100, | ||
40 | UCC_PRAM_OFFSET_UCC7 = 0x8200, | ||
41 | UCC_PRAM_OFFSET_UCC8 = 0x8300 | ||
42 | }; | ||
43 | |||
44 | /* ucc_set_type | ||
45 | * Sets UCC to slow or fast mode. | ||
46 | * | ||
47 | * ucc_num - (In) number of UCC (0-7). | ||
48 | * regs - (In) pointer to registers base for the UCC. | ||
49 | * speed - (In) slow or fast mode for UCC. | ||
50 | */ | ||
51 | int ucc_set_type(int ucc_num, struct ucc_common *regs, | ||
52 | enum ucc_speed_type speed); | ||
53 | |||
54 | /* ucc_init_guemr | ||
55 | * Init the Guemr register. | ||
56 | * | ||
57 | * regs - (In) pointer to registers base for the UCC. | ||
58 | */ | ||
59 | int ucc_init_guemr(struct ucc_common *regs); | ||
60 | |||
61 | int ucc_set_qe_mux_mii_mng(int ucc_num); | ||
62 | |||
63 | int ucc_set_qe_mux_rxtx(int ucc_num, enum qe_clock clock, enum comm_dir mode); | ||
64 | |||
65 | int ucc_mux_set_grant_tsa_bkpt(int ucc_num, int set, u32 mask); | ||
66 | |||
67 | /* QE MUX clock routing for UCC | ||
68 | */ | ||
69 | static inline int ucc_set_qe_mux_grant(int ucc_num, int set) | ||
70 | { | ||
71 | return ucc_mux_set_grant_tsa_bkpt(ucc_num, set, QE_CMXUCR_GRANT); | ||
72 | } | ||
73 | |||
74 | static inline int ucc_set_qe_mux_tsa(int ucc_num, int set) | ||
75 | { | ||
76 | return ucc_mux_set_grant_tsa_bkpt(ucc_num, set, QE_CMXUCR_TSA); | ||
77 | } | ||
78 | |||
79 | static inline int ucc_set_qe_mux_bkpt(int ucc_num, int set) | ||
80 | { | ||
81 | return ucc_mux_set_grant_tsa_bkpt(ucc_num, set, QE_CMXUCR_BKPT); | ||
82 | } | ||
83 | |||
84 | #endif /* __UCC_H__ */ | ||
diff --git a/include/asm-powerpc/ucc_fast.h b/include/asm-powerpc/ucc_fast.h new file mode 100644 index 000000000000..39d1c90fd2ca --- /dev/null +++ b/include/asm-powerpc/ucc_fast.h | |||
@@ -0,0 +1,243 @@ | |||
1 | /* | ||
2 | * include/asm-powerpc/ucc_fast.h | ||
3 | * | ||
4 | * Internal header file for UCC FAST unit routines. | ||
5 | * | ||
6 | * Copyright (C) 2006 Freescale Semicondutor, Inc. All rights reserved. | ||
7 | * | ||
8 | * Authors: Shlomi Gridish <gridish@freescale.com> | ||
9 | * Li Yang <leoli@freescale.com> | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify it | ||
12 | * under the terms of the GNU General Public License as published by the | ||
13 | * Free Software Foundation; either version 2 of the License, or (at your | ||
14 | * option) any later version. | ||
15 | */ | ||
16 | #ifndef __UCC_FAST_H__ | ||
17 | #define __UCC_FAST_H__ | ||
18 | |||
19 | #include <linux/kernel.h> | ||
20 | |||
21 | #include <asm/immap_qe.h> | ||
22 | #include <asm/qe.h> | ||
23 | |||
24 | #include "ucc.h" | ||
25 | |||
26 | /* Receive BD's status */ | ||
27 | #define R_E 0x80000000 /* buffer empty */ | ||
28 | #define R_W 0x20000000 /* wrap bit */ | ||
29 | #define R_I 0x10000000 /* interrupt on reception */ | ||
30 | #define R_L 0x08000000 /* last */ | ||
31 | #define R_F 0x04000000 /* first */ | ||
32 | |||
33 | /* transmit BD's status */ | ||
34 | #define T_R 0x80000000 /* ready bit */ | ||
35 | #define T_W 0x20000000 /* wrap bit */ | ||
36 | #define T_I 0x10000000 /* interrupt on completion */ | ||
37 | #define T_L 0x08000000 /* last */ | ||
38 | |||
39 | /* Rx Data buffer must be 4 bytes aligned in most cases */ | ||
40 | #define UCC_FAST_RX_ALIGN 4 | ||
41 | #define UCC_FAST_MRBLR_ALIGNMENT 4 | ||
42 | #define UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT 8 | ||
43 | |||
44 | /* Sizes */ | ||
45 | #define UCC_FAST_URFS_MIN_VAL 0x88 | ||
46 | #define UCC_FAST_RECEIVE_VIRTUAL_FIFO_SIZE_FUDGE_FACTOR 8 | ||
47 | |||
48 | /* ucc_fast_channel_protocol_mode - UCC FAST mode */ | ||
49 | enum ucc_fast_channel_protocol_mode { | ||
50 | UCC_FAST_PROTOCOL_MODE_HDLC = 0x00000000, | ||
51 | UCC_FAST_PROTOCOL_MODE_RESERVED01 = 0x00000001, | ||
52 | UCC_FAST_PROTOCOL_MODE_RESERVED_QMC = 0x00000002, | ||
53 | UCC_FAST_PROTOCOL_MODE_RESERVED02 = 0x00000003, | ||
54 | UCC_FAST_PROTOCOL_MODE_RESERVED_UART = 0x00000004, | ||
55 | UCC_FAST_PROTOCOL_MODE_RESERVED03 = 0x00000005, | ||
56 | UCC_FAST_PROTOCOL_MODE_RESERVED_EX_MAC_1 = 0x00000006, | ||
57 | UCC_FAST_PROTOCOL_MODE_RESERVED_EX_MAC_2 = 0x00000007, | ||
58 | UCC_FAST_PROTOCOL_MODE_RESERVED_BISYNC = 0x00000008, | ||
59 | UCC_FAST_PROTOCOL_MODE_RESERVED04 = 0x00000009, | ||
60 | UCC_FAST_PROTOCOL_MODE_ATM = 0x0000000A, | ||
61 | UCC_FAST_PROTOCOL_MODE_RESERVED05 = 0x0000000B, | ||
62 | UCC_FAST_PROTOCOL_MODE_ETHERNET = 0x0000000C, | ||
63 | UCC_FAST_PROTOCOL_MODE_RESERVED06 = 0x0000000D, | ||
64 | UCC_FAST_PROTOCOL_MODE_POS = 0x0000000E, | ||
65 | UCC_FAST_PROTOCOL_MODE_RESERVED07 = 0x0000000F | ||
66 | }; | ||
67 | |||
68 | /* ucc_fast_transparent_txrx - UCC Fast Transparent TX & RX */ | ||
69 | enum ucc_fast_transparent_txrx { | ||
70 | UCC_FAST_GUMR_TRANSPARENT_TTX_TRX_NORMAL = 0x00000000, | ||
71 | UCC_FAST_GUMR_TRANSPARENT_TTX_TRX_TRANSPARENT = 0x18000000 | ||
72 | }; | ||
73 | |||
74 | /* UCC fast diagnostic mode */ | ||
75 | enum ucc_fast_diag_mode { | ||
76 | UCC_FAST_DIAGNOSTIC_NORMAL = 0x0, | ||
77 | UCC_FAST_DIAGNOSTIC_LOCAL_LOOP_BACK = 0x40000000, | ||
78 | UCC_FAST_DIAGNOSTIC_AUTO_ECHO = 0x80000000, | ||
79 | UCC_FAST_DIAGNOSTIC_LOOP_BACK_AND_ECHO = 0xC0000000 | ||
80 | }; | ||
81 | |||
82 | /* UCC fast Sync length (transparent mode only) */ | ||
83 | enum ucc_fast_sync_len { | ||
84 | UCC_FAST_SYNC_LEN_NOT_USED = 0x0, | ||
85 | UCC_FAST_SYNC_LEN_AUTOMATIC = 0x00004000, | ||
86 | UCC_FAST_SYNC_LEN_8_BIT = 0x00008000, | ||
87 | UCC_FAST_SYNC_LEN_16_BIT = 0x0000C000 | ||
88 | }; | ||
89 | |||
90 | /* UCC fast RTS mode */ | ||
91 | enum ucc_fast_ready_to_send { | ||
92 | UCC_FAST_SEND_IDLES_BETWEEN_FRAMES = 0x00000000, | ||
93 | UCC_FAST_SEND_FLAGS_BETWEEN_FRAMES = 0x00002000 | ||
94 | }; | ||
95 | |||
96 | /* UCC fast receiver decoding mode */ | ||
97 | enum ucc_fast_rx_decoding_method { | ||
98 | UCC_FAST_RX_ENCODING_NRZ = 0x00000000, | ||
99 | UCC_FAST_RX_ENCODING_NRZI = 0x00000800, | ||
100 | UCC_FAST_RX_ENCODING_RESERVED0 = 0x00001000, | ||
101 | UCC_FAST_RX_ENCODING_RESERVED1 = 0x00001800 | ||
102 | }; | ||
103 | |||
104 | /* UCC fast transmitter encoding mode */ | ||
105 | enum ucc_fast_tx_encoding_method { | ||
106 | UCC_FAST_TX_ENCODING_NRZ = 0x00000000, | ||
107 | UCC_FAST_TX_ENCODING_NRZI = 0x00000100, | ||
108 | UCC_FAST_TX_ENCODING_RESERVED0 = 0x00000200, | ||
109 | UCC_FAST_TX_ENCODING_RESERVED1 = 0x00000300 | ||
110 | }; | ||
111 | |||
112 | /* UCC fast CRC length */ | ||
113 | enum ucc_fast_transparent_tcrc { | ||
114 | UCC_FAST_16_BIT_CRC = 0x00000000, | ||
115 | UCC_FAST_CRC_RESERVED0 = 0x00000040, | ||
116 | UCC_FAST_32_BIT_CRC = 0x00000080, | ||
117 | UCC_FAST_CRC_RESERVED1 = 0x000000C0 | ||
118 | }; | ||
119 | |||
120 | /* Fast UCC initialization structure */ | ||
121 | struct ucc_fast_info { | ||
122 | int ucc_num; | ||
123 | enum qe_clock rx_clock; | ||
124 | enum qe_clock tx_clock; | ||
125 | u32 regs; | ||
126 | int irq; | ||
127 | u32 uccm_mask; | ||
128 | int bd_mem_part; | ||
129 | int brkpt_support; | ||
130 | int grant_support; | ||
131 | int tsa; | ||
132 | int cdp; | ||
133 | int cds; | ||
134 | int ctsp; | ||
135 | int ctss; | ||
136 | int tci; | ||
137 | int txsy; | ||
138 | int rtsm; | ||
139 | int revd; | ||
140 | int rsyn; | ||
141 | u16 max_rx_buf_length; | ||
142 | u16 urfs; | ||
143 | u16 urfet; | ||
144 | u16 urfset; | ||
145 | u16 utfs; | ||
146 | u16 utfet; | ||
147 | u16 utftt; | ||
148 | u16 ufpt; | ||
149 | enum ucc_fast_channel_protocol_mode mode; | ||
150 | enum ucc_fast_transparent_txrx ttx_trx; | ||
151 | enum ucc_fast_tx_encoding_method tenc; | ||
152 | enum ucc_fast_rx_decoding_method renc; | ||
153 | enum ucc_fast_transparent_tcrc tcrc; | ||
154 | enum ucc_fast_sync_len synl; | ||
155 | }; | ||
156 | |||
157 | struct ucc_fast_private { | ||
158 | struct ucc_fast_info *uf_info; | ||
159 | struct ucc_fast *uf_regs; /* a pointer to memory map of UCC regs. */ | ||
160 | u32 *p_ucce; /* a pointer to the event register in memory. */ | ||
161 | u32 *p_uccm; /* a pointer to the mask register in memory. */ | ||
162 | int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ | ||
163 | int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ | ||
164 | int stopped_tx; /* Whether channel has been stopped for Tx | ||
165 | (STOP_TX, etc.) */ | ||
166 | int stopped_rx; /* Whether channel has been stopped for Rx */ | ||
167 | u32 ucc_fast_tx_virtual_fifo_base_offset;/* pointer to base of Tx | ||
168 | virtual fifo */ | ||
169 | u32 ucc_fast_rx_virtual_fifo_base_offset;/* pointer to base of Rx | ||
170 | virtual fifo */ | ||
171 | #ifdef STATISTICS | ||
172 | u32 tx_frames; /* Transmitted frames counter. */ | ||
173 | u32 rx_frames; /* Received frames counter (only frames | ||
174 | passed to application). */ | ||
175 | u32 tx_discarded; /* Discarded tx frames counter (frames that | ||
176 | were discarded by the driver due to errors). | ||
177 | */ | ||
178 | u32 rx_discarded; /* Discarded rx frames counter (frames that | ||
179 | were discarded by the driver due to errors). | ||
180 | */ | ||
181 | #endif /* STATISTICS */ | ||
182 | u16 mrblr; /* maximum receive buffer length */ | ||
183 | }; | ||
184 | |||
185 | /* ucc_fast_init | ||
186 | * Initializes Fast UCC according to user provided parameters. | ||
187 | * | ||
188 | * uf_info - (In) pointer to the fast UCC info structure. | ||
189 | * uccf_ret - (Out) pointer to the fast UCC structure. | ||
190 | */ | ||
191 | int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** uccf_ret); | ||
192 | |||
193 | /* ucc_fast_free | ||
194 | * Frees all resources for fast UCC. | ||
195 | * | ||
196 | * uccf - (In) pointer to the fast UCC structure. | ||
197 | */ | ||
198 | void ucc_fast_free(struct ucc_fast_private * uccf); | ||
199 | |||
200 | /* ucc_fast_enable | ||
201 | * Enables a fast UCC port. | ||
202 | * This routine enables Tx and/or Rx through the General UCC Mode Register. | ||
203 | * | ||
204 | * uccf - (In) pointer to the fast UCC structure. | ||
205 | * mode - (In) TX, RX, or both. | ||
206 | */ | ||
207 | void ucc_fast_enable(struct ucc_fast_private * uccf, enum comm_dir mode); | ||
208 | |||
209 | /* ucc_fast_disable | ||
210 | * Disables a fast UCC port. | ||
211 | * This routine disables Tx and/or Rx through the General UCC Mode Register. | ||
212 | * | ||
213 | * uccf - (In) pointer to the fast UCC structure. | ||
214 | * mode - (In) TX, RX, or both. | ||
215 | */ | ||
216 | void ucc_fast_disable(struct ucc_fast_private * uccf, enum comm_dir mode); | ||
217 | |||
218 | /* ucc_fast_irq | ||
219 | * Handles interrupts on fast UCC. | ||
220 | * Called from the general interrupt routine to handle interrupts on fast UCC. | ||
221 | * | ||
222 | * uccf - (In) pointer to the fast UCC structure. | ||
223 | */ | ||
224 | void ucc_fast_irq(struct ucc_fast_private * uccf); | ||
225 | |||
226 | /* ucc_fast_transmit_on_demand | ||
227 | * Immediately forces a poll of the transmitter for data to be sent. | ||
228 | * Typically, the hardware performs a periodic poll for data that the | ||
229 | * transmit routine has set up to be transmitted. In cases where | ||
230 | * this polling cycle is not soon enough, this optional routine can | ||
231 | * be invoked to force a poll right away, instead. Proper use for | ||
232 | * each transmission for which this functionality is desired is to | ||
233 | * call the transmit routine and then this routine right after. | ||
234 | * | ||
235 | * uccf - (In) pointer to the fast UCC structure. | ||
236 | */ | ||
237 | void ucc_fast_transmit_on_demand(struct ucc_fast_private * uccf); | ||
238 | |||
239 | u32 ucc_fast_get_qe_cr_subblock(int uccf_num); | ||
240 | |||
241 | void ucc_fast_dump_regs(struct ucc_fast_private * uccf); | ||
242 | |||
243 | #endif /* __UCC_FAST_H__ */ | ||
diff --git a/include/asm-powerpc/ucc_slow.h b/include/asm-powerpc/ucc_slow.h new file mode 100644 index 000000000000..ca93bc99237e --- /dev/null +++ b/include/asm-powerpc/ucc_slow.h | |||
@@ -0,0 +1,289 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Freescale Semicondutor, Inc. All rights reserved. | ||
3 | * | ||
4 | * Authors: Shlomi Gridish <gridish@freescale.com> | ||
5 | * Li Yang <leoli@freescale.com> | ||
6 | * | ||
7 | * Description: | ||
8 | * Internal header file for UCC SLOW unit routines. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify it | ||
11 | * under the terms of the GNU General Public License as published by the | ||
12 | * Free Software Foundation; either version 2 of the License, or (at your | ||
13 | * option) any later version. | ||
14 | */ | ||
15 | #ifndef __UCC_SLOW_H__ | ||
16 | #define __UCC_SLOW_H__ | ||
17 | |||
18 | #include <linux/kernel.h> | ||
19 | |||
20 | #include <asm/immap_qe.h> | ||
21 | #include <asm/qe.h> | ||
22 | |||
23 | #include "ucc.h" | ||
24 | |||
25 | /* transmit BD's status */ | ||
26 | #define T_R 0x80000000 /* ready bit */ | ||
27 | #define T_PAD 0x40000000 /* add pads to short frames */ | ||
28 | #define T_W 0x20000000 /* wrap bit */ | ||
29 | #define T_I 0x10000000 /* interrupt on completion */ | ||
30 | #define T_L 0x08000000 /* last */ | ||
31 | |||
32 | #define T_A 0x04000000 /* Address - the data transmitted as address | ||
33 | chars */ | ||
34 | #define T_TC 0x04000000 /* transmit CRC */ | ||
35 | #define T_CM 0x02000000 /* continuous mode */ | ||
36 | #define T_DEF 0x02000000 /* collision on previous attempt to transmit */ | ||
37 | #define T_P 0x01000000 /* Preamble - send Preamble sequence before | ||
38 | data */ | ||
39 | #define T_HB 0x01000000 /* heartbeat */ | ||
40 | #define T_NS 0x00800000 /* No Stop */ | ||
41 | #define T_LC 0x00800000 /* late collision */ | ||
42 | #define T_RL 0x00400000 /* retransmission limit */ | ||
43 | #define T_UN 0x00020000 /* underrun */ | ||
44 | #define T_CT 0x00010000 /* CTS lost */ | ||
45 | #define T_CSL 0x00010000 /* carrier sense lost */ | ||
46 | #define T_RC 0x003c0000 /* retry count */ | ||
47 | |||
48 | /* Receive BD's status */ | ||
49 | #define R_E 0x80000000 /* buffer empty */ | ||
50 | #define R_W 0x20000000 /* wrap bit */ | ||
51 | #define R_I 0x10000000 /* interrupt on reception */ | ||
52 | #define R_L 0x08000000 /* last */ | ||
53 | #define R_C 0x08000000 /* the last byte in this buffer is a cntl | ||
54 | char */ | ||
55 | #define R_F 0x04000000 /* first */ | ||
56 | #define R_A 0x04000000 /* the first byte in this buffer is address | ||
57 | byte */ | ||
58 | #define R_CM 0x02000000 /* continuous mode */ | ||
59 | #define R_ID 0x01000000 /* buffer close on reception of idles */ | ||
60 | #define R_M 0x01000000 /* Frame received because of promiscuous | ||
61 | mode */ | ||
62 | #define R_AM 0x00800000 /* Address match */ | ||
63 | #define R_DE 0x00800000 /* Address match */ | ||
64 | #define R_LG 0x00200000 /* Break received */ | ||
65 | #define R_BR 0x00200000 /* Frame length violation */ | ||
66 | #define R_NO 0x00100000 /* Rx Non Octet Aligned Packet */ | ||
67 | #define R_FR 0x00100000 /* Framing Error (no stop bit) character | ||
68 | received */ | ||
69 | #define R_PR 0x00080000 /* Parity Error character received */ | ||
70 | #define R_AB 0x00080000 /* Frame Aborted */ | ||
71 | #define R_SH 0x00080000 /* frame is too short */ | ||
72 | #define R_CR 0x00040000 /* CRC Error */ | ||
73 | #define R_OV 0x00020000 /* Overrun */ | ||
74 | #define R_CD 0x00010000 /* CD lost */ | ||
75 | #define R_CL 0x00010000 /* this frame is closed because of a | ||
76 | collision */ | ||
77 | |||
78 | /* Rx Data buffer must be 4 bytes aligned in most cases.*/ | ||
79 | #define UCC_SLOW_RX_ALIGN 4 | ||
80 | #define UCC_SLOW_MRBLR_ALIGNMENT 4 | ||
81 | #define UCC_SLOW_PRAM_SIZE 0x100 | ||
82 | #define ALIGNMENT_OF_UCC_SLOW_PRAM 64 | ||
83 | |||
84 | /* UCC Slow Channel Protocol Mode */ | ||
85 | enum ucc_slow_channel_protocol_mode { | ||
86 | UCC_SLOW_CHANNEL_PROTOCOL_MODE_QMC = 0x00000002, | ||
87 | UCC_SLOW_CHANNEL_PROTOCOL_MODE_UART = 0x00000004, | ||
88 | UCC_SLOW_CHANNEL_PROTOCOL_MODE_BISYNC = 0x00000008, | ||
89 | }; | ||
90 | |||
91 | /* UCC Slow Transparent Transmit CRC (TCRC) */ | ||
92 | enum ucc_slow_transparent_tcrc { | ||
93 | /* 16-bit CCITT CRC (HDLC). (X16 + X12 + X5 + 1) */ | ||
94 | UCC_SLOW_TRANSPARENT_TCRC_CCITT_CRC16 = 0x00000000, | ||
95 | /* CRC16 (BISYNC). (X16 + X15 + X2 + 1) */ | ||
96 | UCC_SLOW_TRANSPARENT_TCRC_CRC16 = 0x00004000, | ||
97 | /* 32-bit CCITT CRC (Ethernet and HDLC) */ | ||
98 | UCC_SLOW_TRANSPARENT_TCRC_CCITT_CRC32 = 0x00008000, | ||
99 | }; | ||
100 | |||
101 | /* UCC Slow oversampling rate for transmitter (TDCR) */ | ||
102 | enum ucc_slow_tx_oversampling_rate { | ||
103 | /* 1x clock mode */ | ||
104 | UCC_SLOW_OVERSAMPLING_RATE_TX_TDCR_1 = 0x00000000, | ||
105 | /* 8x clock mode */ | ||
106 | UCC_SLOW_OVERSAMPLING_RATE_TX_TDCR_8 = 0x00010000, | ||
107 | /* 16x clock mode */ | ||
108 | UCC_SLOW_OVERSAMPLING_RATE_TX_TDCR_16 = 0x00020000, | ||
109 | /* 32x clock mode */ | ||
110 | UCC_SLOW_OVERSAMPLING_RATE_TX_TDCR_32 = 0x00030000, | ||
111 | }; | ||
112 | |||
113 | /* UCC Slow Oversampling rate for receiver (RDCR) | ||
114 | */ | ||
115 | enum ucc_slow_rx_oversampling_rate { | ||
116 | /* 1x clock mode */ | ||
117 | UCC_SLOW_OVERSAMPLING_RATE_RX_RDCR_1 = 0x00000000, | ||
118 | /* 8x clock mode */ | ||
119 | UCC_SLOW_OVERSAMPLING_RATE_RX_RDCR_8 = 0x00004000, | ||
120 | /* 16x clock mode */ | ||
121 | UCC_SLOW_OVERSAMPLING_RATE_RX_RDCR_16 = 0x00008000, | ||
122 | /* 32x clock mode */ | ||
123 | UCC_SLOW_OVERSAMPLING_RATE_RX_RDCR_32 = 0x0000c000, | ||
124 | }; | ||
125 | |||
126 | /* UCC Slow Transmitter encoding method (TENC) | ||
127 | */ | ||
128 | enum ucc_slow_tx_encoding_method { | ||
129 | UCC_SLOW_TRANSMITTER_ENCODING_METHOD_TENC_NRZ = 0x00000000, | ||
130 | UCC_SLOW_TRANSMITTER_ENCODING_METHOD_TENC_NRZI = 0x00000100 | ||
131 | }; | ||
132 | |||
133 | /* UCC Slow Receiver decoding method (RENC) | ||
134 | */ | ||
135 | enum ucc_slow_rx_decoding_method { | ||
136 | UCC_SLOW_RECEIVER_DECODING_METHOD_RENC_NRZ = 0x00000000, | ||
137 | UCC_SLOW_RECEIVER_DECODING_METHOD_RENC_NRZI = 0x00000800 | ||
138 | }; | ||
139 | |||
140 | /* UCC Slow Diagnostic mode (DIAG) | ||
141 | */ | ||
142 | enum ucc_slow_diag_mode { | ||
143 | UCC_SLOW_DIAG_MODE_NORMAL = 0x00000000, | ||
144 | UCC_SLOW_DIAG_MODE_LOOPBACK = 0x00000040, | ||
145 | UCC_SLOW_DIAG_MODE_ECHO = 0x00000080, | ||
146 | UCC_SLOW_DIAG_MODE_LOOPBACK_ECHO = 0x000000c0 | ||
147 | }; | ||
148 | |||
149 | struct ucc_slow_info { | ||
150 | int ucc_num; | ||
151 | enum qe_clock rx_clock; | ||
152 | enum qe_clock tx_clock; | ||
153 | struct ucc_slow *us_regs; | ||
154 | int irq; | ||
155 | u16 uccm_mask; | ||
156 | int data_mem_part; | ||
157 | int init_tx; | ||
158 | int init_rx; | ||
159 | u32 tx_bd_ring_len; | ||
160 | u32 rx_bd_ring_len; | ||
161 | int rx_interrupts; | ||
162 | int brkpt_support; | ||
163 | int grant_support; | ||
164 | int tsa; | ||
165 | int cdp; | ||
166 | int cds; | ||
167 | int ctsp; | ||
168 | int ctss; | ||
169 | int rinv; | ||
170 | int tinv; | ||
171 | int rtsm; | ||
172 | int rfw; | ||
173 | int tci; | ||
174 | int tend; | ||
175 | int tfl; | ||
176 | int txsy; | ||
177 | u16 max_rx_buf_length; | ||
178 | enum ucc_slow_transparent_tcrc tcrc; | ||
179 | enum ucc_slow_channel_protocol_mode mode; | ||
180 | enum ucc_slow_diag_mode diag; | ||
181 | enum ucc_slow_tx_oversampling_rate tdcr; | ||
182 | enum ucc_slow_rx_oversampling_rate rdcr; | ||
183 | enum ucc_slow_tx_encoding_method tenc; | ||
184 | enum ucc_slow_rx_decoding_method renc; | ||
185 | }; | ||
186 | |||
187 | struct ucc_slow_private { | ||
188 | struct ucc_slow_info *us_info; | ||
189 | struct ucc_slow *us_regs; /* a pointer to memory map of UCC regs */ | ||
190 | struct ucc_slow_pram *us_pram; /* a pointer to the parameter RAM */ | ||
191 | u32 us_pram_offset; | ||
192 | int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ | ||
193 | int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ | ||
194 | int stopped_tx; /* Whether channel has been stopped for Tx | ||
195 | (STOP_TX, etc.) */ | ||
196 | int stopped_rx; /* Whether channel has been stopped for Rx */ | ||
197 | struct list_head confQ; /* frames passed to chip waiting for tx */ | ||
198 | u32 first_tx_bd_mask; /* mask is used in Tx routine to save status | ||
199 | and length for first BD in a frame */ | ||
200 | u32 tx_base_offset; /* first BD in Tx BD table offset (In MURAM) */ | ||
201 | u32 rx_base_offset; /* first BD in Rx BD table offset (In MURAM) */ | ||
202 | u8 *confBd; /* next BD for confirm after Tx */ | ||
203 | u8 *tx_bd; /* next BD for new Tx request */ | ||
204 | u8 *rx_bd; /* next BD to collect after Rx */ | ||
205 | void *p_rx_frame; /* accumulating receive frame */ | ||
206 | u16 *p_ucce; /* a pointer to the event register in memory. | ||
207 | */ | ||
208 | u16 *p_uccm; /* a pointer to the mask register in memory */ | ||
209 | u16 saved_uccm; /* a saved mask for the RX Interrupt bits */ | ||
210 | #ifdef STATISTICS | ||
211 | u32 tx_frames; /* Transmitted frames counters */ | ||
212 | u32 rx_frames; /* Received frames counters (only frames | ||
213 | passed to application) */ | ||
214 | u32 rx_discarded; /* Discarded frames counters (frames that | ||
215 | were discarded by the driver due to | ||
216 | errors) */ | ||
217 | #endif /* STATISTICS */ | ||
218 | }; | ||
219 | |||
220 | /* ucc_slow_init | ||
221 | * Initializes Slow UCC according to provided parameters. | ||
222 | * | ||
223 | * us_info - (In) pointer to the slow UCC info structure. | ||
224 | * uccs_ret - (Out) pointer to the slow UCC structure. | ||
225 | */ | ||
226 | int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** uccs_ret); | ||
227 | |||
228 | /* ucc_slow_free | ||
229 | * Frees all resources for slow UCC. | ||
230 | * | ||
231 | * uccs - (In) pointer to the slow UCC structure. | ||
232 | */ | ||
233 | void ucc_slow_free(struct ucc_slow_private * uccs); | ||
234 | |||
235 | /* ucc_slow_enable | ||
236 | * Enables a fast UCC port. | ||
237 | * This routine enables Tx and/or Rx through the General UCC Mode Register. | ||
238 | * | ||
239 | * uccs - (In) pointer to the slow UCC structure. | ||
240 | * mode - (In) TX, RX, or both. | ||
241 | */ | ||
242 | void ucc_slow_enable(struct ucc_slow_private * uccs, enum comm_dir mode); | ||
243 | |||
244 | /* ucc_slow_disable | ||
245 | * Disables a fast UCC port. | ||
246 | * This routine disables Tx and/or Rx through the General UCC Mode Register. | ||
247 | * | ||
248 | * uccs - (In) pointer to the slow UCC structure. | ||
249 | * mode - (In) TX, RX, or both. | ||
250 | */ | ||
251 | void ucc_slow_disable(struct ucc_slow_private * uccs, enum comm_dir mode); | ||
252 | |||
253 | /* ucc_slow_poll_transmitter_now | ||
254 | * Immediately forces a poll of the transmitter for data to be sent. | ||
255 | * Typically, the hardware performs a periodic poll for data that the | ||
256 | * transmit routine has set up to be transmitted. In cases where | ||
257 | * this polling cycle is not soon enough, this optional routine can | ||
258 | * be invoked to force a poll right away, instead. Proper use for | ||
259 | * each transmission for which this functionality is desired is to | ||
260 | * call the transmit routine and then this routine right after. | ||
261 | * | ||
262 | * uccs - (In) pointer to the slow UCC structure. | ||
263 | */ | ||
264 | void ucc_slow_poll_transmitter_now(struct ucc_slow_private * uccs); | ||
265 | |||
266 | /* ucc_slow_graceful_stop_tx | ||
267 | * Smoothly stops transmission on a specified slow UCC. | ||
268 | * | ||
269 | * uccs - (In) pointer to the slow UCC structure. | ||
270 | */ | ||
271 | void ucc_slow_graceful_stop_tx(struct ucc_slow_private * uccs); | ||
272 | |||
273 | /* ucc_slow_stop_tx | ||
274 | * Stops transmission on a specified slow UCC. | ||
275 | * | ||
276 | * uccs - (In) pointer to the slow UCC structure. | ||
277 | */ | ||
278 | void ucc_slow_stop_tx(struct ucc_slow_private * uccs); | ||
279 | |||
280 | /* ucc_slow_restart_x | ||
281 | * Restarts transmitting on a specified slow UCC. | ||
282 | * | ||
283 | * uccs - (In) pointer to the slow UCC structure. | ||
284 | */ | ||
285 | void ucc_slow_restart_x(struct ucc_slow_private * uccs); | ||
286 | |||
287 | u32 ucc_slow_get_qe_cr_subblock(int uccs_num); | ||
288 | |||
289 | #endif /* __UCC_SLOW_H__ */ | ||
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h index eb66eae6616f..464a48cce7f5 100644 --- a/include/asm-powerpc/unistd.h +++ b/include/asm-powerpc/unistd.h | |||
@@ -479,13 +479,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
479 | #endif | 479 | #endif |
480 | 480 | ||
481 | /* | 481 | /* |
482 | * System call prototypes. | ||
483 | */ | ||
484 | #ifdef __KERNEL_SYSCALLS__ | ||
485 | extern int execve(const char *file, char **argv, char **envp); | ||
486 | #endif /* __KERNEL_SYSCALLS__ */ | ||
487 | |||
488 | /* | ||
489 | * "Conditional" syscalls | 482 | * "Conditional" syscalls |
490 | * | 483 | * |
491 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | 484 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), |
diff --git a/include/asm-powerpc/xmon.h b/include/asm-powerpc/xmon.h index 43f7129984c7..f1d337ed68d5 100644 --- a/include/asm-powerpc/xmon.h +++ b/include/asm-powerpc/xmon.h | |||
@@ -1,12 +1,22 @@ | |||
1 | #ifndef __PPC_XMON_H | 1 | #ifndef __ASM_POWERPC_XMON_H |
2 | #define __PPC_XMON_H | 2 | #define __ASM_POWERPC_XMON_H |
3 | #ifdef __KERNEL__ | ||
4 | 3 | ||
5 | struct pt_regs; | 4 | /* |
5 | * Copyrignt (C) 2006 IBM Corp | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | */ | ||
6 | 12 | ||
7 | extern int xmon(struct pt_regs *excp); | 13 | #ifdef __KERNEL__ |
8 | extern void xmon_printf(const char *fmt, ...); | ||
9 | extern void xmon_init(int); | ||
10 | 14 | ||
15 | #ifdef CONFIG_XMON | ||
16 | extern void xmon_setup(void); | ||
17 | #else | ||
18 | static inline void xmon_setup(void) { }; | ||
11 | #endif | 19 | #endif |
12 | #endif | 20 | |
21 | #endif /* __KERNEL __ */ | ||
22 | #endif /* __ASM_POWERPC_XMON_H */ | ||
diff --git a/include/asm-ppc/cpm2.h b/include/asm-ppc/cpm2.h index f6a7ff04ffe5..220cc2debe08 100644 --- a/include/asm-ppc/cpm2.h +++ b/include/asm-ppc/cpm2.h | |||
@@ -42,6 +42,8 @@ | |||
42 | #define CPM_CR_IDMA4_SBLOCK (0x17) | 42 | #define CPM_CR_IDMA4_SBLOCK (0x17) |
43 | #define CPM_CR_MCC1_SBLOCK (0x1c) | 43 | #define CPM_CR_MCC1_SBLOCK (0x1c) |
44 | 44 | ||
45 | #define CPM_CR_FCC_SBLOCK(x) (x + 0x10) | ||
46 | |||
45 | #define CPM_CR_SCC1_PAGE (0x00) | 47 | #define CPM_CR_SCC1_PAGE (0x00) |
46 | #define CPM_CR_SCC2_PAGE (0x01) | 48 | #define CPM_CR_SCC2_PAGE (0x01) |
47 | #define CPM_CR_SCC3_PAGE (0x02) | 49 | #define CPM_CR_SCC3_PAGE (0x02) |
@@ -62,6 +64,8 @@ | |||
62 | #define CPM_CR_MCC1_PAGE (0x07) | 64 | #define CPM_CR_MCC1_PAGE (0x07) |
63 | #define CPM_CR_MCC2_PAGE (0x08) | 65 | #define CPM_CR_MCC2_PAGE (0x08) |
64 | 66 | ||
67 | #define CPM_CR_FCC_PAGE(x) (x + 0x04) | ||
68 | |||
65 | /* Some opcodes (there are more...later) | 69 | /* Some opcodes (there are more...later) |
66 | */ | 70 | */ |
67 | #define CPM_CR_INIT_TRX ((ushort)0x0000) | 71 | #define CPM_CR_INIT_TRX ((ushort)0x0000) |
@@ -173,6 +177,10 @@ typedef struct cpm_buf_desc { | |||
173 | #define PROFF_I2C_BASE ((uint)0x8afc) | 177 | #define PROFF_I2C_BASE ((uint)0x8afc) |
174 | #define PROFF_IDMA4_BASE ((uint)0x8afe) | 178 | #define PROFF_IDMA4_BASE ((uint)0x8afe) |
175 | 179 | ||
180 | #define PROFF_SCC_SIZE ((uint)0x100) | ||
181 | #define PROFF_FCC_SIZE ((uint)0x100) | ||
182 | #define PROFF_SMC_SIZE ((uint)64) | ||
183 | |||
176 | /* The SMCs are relocated to any of the first eight DPRAM pages. | 184 | /* The SMCs are relocated to any of the first eight DPRAM pages. |
177 | * We will fix these at the first locations of DPRAM, until we | 185 | * We will fix these at the first locations of DPRAM, until we |
178 | * get some microcode patches :-). | 186 | * get some microcode patches :-). |
@@ -1186,7 +1194,60 @@ typedef struct im_idma { | |||
1186 | #define FCC_MEM_OFFSET(x) (CPM_FCC_SPECIAL_BASE + (x*128)) | 1194 | #define FCC_MEM_OFFSET(x) (CPM_FCC_SPECIAL_BASE + (x*128)) |
1187 | #define FCC1_MEM_OFFSET FCC_MEM_OFFSET(0) | 1195 | #define FCC1_MEM_OFFSET FCC_MEM_OFFSET(0) |
1188 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(1) | 1196 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(1) |
1189 | #define FCC2_MEM_OFFSET FCC_MEM_OFFSET(2) | 1197 | #define FCC3_MEM_OFFSET FCC_MEM_OFFSET(2) |
1198 | |||
1199 | /* Clocks and GRG's */ | ||
1200 | |||
1201 | enum cpm_clk_dir { | ||
1202 | CPM_CLK_RX, | ||
1203 | CPM_CLK_TX, | ||
1204 | CPM_CLK_RTX | ||
1205 | }; | ||
1206 | |||
1207 | enum cpm_clk_target { | ||
1208 | CPM_CLK_SCC1, | ||
1209 | CPM_CLK_SCC2, | ||
1210 | CPM_CLK_SCC3, | ||
1211 | CPM_CLK_SCC4, | ||
1212 | CPM_CLK_FCC1, | ||
1213 | CPM_CLK_FCC2, | ||
1214 | CPM_CLK_FCC3 | ||
1215 | }; | ||
1216 | |||
1217 | enum cpm_clk { | ||
1218 | CPM_CLK_NONE = 0, | ||
1219 | CPM_BRG1, /* Baud Rate Generator 1 */ | ||
1220 | CPM_BRG2, /* Baud Rate Generator 2 */ | ||
1221 | CPM_BRG3, /* Baud Rate Generator 3 */ | ||
1222 | CPM_BRG4, /* Baud Rate Generator 4 */ | ||
1223 | CPM_BRG5, /* Baud Rate Generator 5 */ | ||
1224 | CPM_BRG6, /* Baud Rate Generator 6 */ | ||
1225 | CPM_BRG7, /* Baud Rate Generator 7 */ | ||
1226 | CPM_BRG8, /* Baud Rate Generator 8 */ | ||
1227 | CPM_CLK1, /* Clock 1 */ | ||
1228 | CPM_CLK2, /* Clock 2 */ | ||
1229 | CPM_CLK3, /* Clock 3 */ | ||
1230 | CPM_CLK4, /* Clock 4 */ | ||
1231 | CPM_CLK5, /* Clock 5 */ | ||
1232 | CPM_CLK6, /* Clock 6 */ | ||
1233 | CPM_CLK7, /* Clock 7 */ | ||
1234 | CPM_CLK8, /* Clock 8 */ | ||
1235 | CPM_CLK9, /* Clock 9 */ | ||
1236 | CPM_CLK10, /* Clock 10 */ | ||
1237 | CPM_CLK11, /* Clock 11 */ | ||
1238 | CPM_CLK12, /* Clock 12 */ | ||
1239 | CPM_CLK13, /* Clock 13 */ | ||
1240 | CPM_CLK14, /* Clock 14 */ | ||
1241 | CPM_CLK15, /* Clock 15 */ | ||
1242 | CPM_CLK16, /* Clock 16 */ | ||
1243 | CPM_CLK17, /* Clock 17 */ | ||
1244 | CPM_CLK18, /* Clock 18 */ | ||
1245 | CPM_CLK19, /* Clock 19 */ | ||
1246 | CPM_CLK20, /* Clock 20 */ | ||
1247 | CPM_CLK_DUMMY | ||
1248 | }; | ||
1249 | |||
1250 | extern int cpm2_clk_setup(enum cpm_clk_target target, int clock, int mode); | ||
1190 | 1251 | ||
1191 | #endif /* __CPM2__ */ | 1252 | #endif /* __CPM2__ */ |
1192 | #endif /* __KERNEL__ */ | 1253 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-ppc/fs_pd.h b/include/asm-ppc/fs_pd.h new file mode 100644 index 000000000000..8691327653af --- /dev/null +++ b/include/asm-ppc/fs_pd.h | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * Platform information definitions. | ||
3 | * | ||
4 | * 2006 (c) MontaVista Software, Inc. | ||
5 | * Vitaly Bordug <vbordug@ru.mvista.com> | ||
6 | * | ||
7 | * This file is licensed under the terms of the GNU General Public License | ||
8 | * version 2. This program is licensed "as is" without any warranty of any | ||
9 | * kind, whether express or implied. | ||
10 | */ | ||
11 | |||
12 | #ifndef FS_PD_H | ||
13 | #define FS_PD_H | ||
14 | |||
15 | static inline int uart_baudrate(void) | ||
16 | { | ||
17 | int baud; | ||
18 | bd_t *bd = (bd_t *) __res; | ||
19 | |||
20 | if (bd->bi_baudrate) | ||
21 | baud = bd->bi_baudrate; | ||
22 | else | ||
23 | baud = -1; | ||
24 | return baud; | ||
25 | } | ||
26 | |||
27 | static inline int uart_clock(void) | ||
28 | { | ||
29 | return (((bd_t *) __res)->bi_intfreq); | ||
30 | } | ||
31 | |||
32 | #define cpm2_map(member) (&cpm2_immr->member) | ||
33 | #define cpm2_map_size(member, size) (&cpm2_immr->member) | ||
34 | #define cpm2_unmap(addr) do {} while(0) | ||
35 | |||
36 | #endif | ||
diff --git a/include/asm-ppc/mv64x60_defs.h b/include/asm-ppc/mv64x60_defs.h index f8f7f16b9b53..5b0704a3e6ea 100644 --- a/include/asm-ppc/mv64x60_defs.h +++ b/include/asm-ppc/mv64x60_defs.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-ppc/gt64260_defs.h | 2 | * include/asm-ppc/mv64x60_defs.h |
3 | * | 3 | * |
4 | * Register definitions for the Marvell/Galileo GT64260, MV64360, etc. | 4 | * Register definitions for the Marvell/Galileo GT64260, MV64360, etc. |
5 | * host bridges. | 5 | * host bridges. |
diff --git a/include/asm-ppc/rheap.h b/include/asm-ppc/rheap.h index e6ca1f67cedc..39a10d862244 100644 --- a/include/asm-ppc/rheap.h +++ b/include/asm-ppc/rheap.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-ppc/rheap.c | 2 | * include/asm-ppc/rheap.h |
3 | * | 3 | * |
4 | * Header file for the implementation of a remote heap. | 4 | * Header file for the implementation of a remote heap. |
5 | * | 5 | * |
@@ -62,6 +62,10 @@ extern int rh_attach_region(rh_info_t * info, void *start, int size); | |||
62 | /* Detach a free region */ | 62 | /* Detach a free region */ |
63 | extern void *rh_detach_region(rh_info_t * info, void *start, int size); | 63 | extern void *rh_detach_region(rh_info_t * info, void *start, int size); |
64 | 64 | ||
65 | /* Allocate the given size from the remote heap (with alignment) */ | ||
66 | extern void *rh_alloc_align(rh_info_t * info, int size, int alignment, | ||
67 | const char *owner); | ||
68 | |||
65 | /* Allocate the given size from the remote heap */ | 69 | /* Allocate the given size from the remote heap */ |
66 | extern void *rh_alloc(rh_info_t * info, int size, const char *owner); | 70 | extern void *rh_alloc(rh_info_t * info, int size, const char *owner); |
67 | 71 | ||
diff --git a/include/asm-ppc/rtc.h b/include/asm-ppc/rtc.h index 05fbf912ab4d..6025b46d0a2a 100644 --- a/include/asm-ppc/rtc.h +++ b/include/asm-ppc/rtc.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * inclue/asm-ppc/rtc.h | 2 | * include/asm-ppc/rtc.h |
3 | * | 3 | * |
4 | * Author: Tom Rini <trini@mvista.com> | 4 | * Author: Tom Rini <trini@mvista.com> |
5 | * | 5 | * |
diff --git a/include/asm-s390/ptrace.h b/include/asm-s390/ptrace.h index 8d2bf65b0b64..7b768c5c68a8 100644 --- a/include/asm-s390/ptrace.h +++ b/include/asm-s390/ptrace.h | |||
@@ -472,6 +472,7 @@ struct user_regs_struct | |||
472 | 472 | ||
473 | #define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0) | 473 | #define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0) |
474 | #define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN) | 474 | #define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN) |
475 | #define regs_return_value(regs)((regs)->gprs[2]) | ||
475 | #define profile_pc(regs) instruction_pointer(regs) | 476 | #define profile_pc(regs) instruction_pointer(regs) |
476 | extern void show_regs(struct pt_regs * regs); | 477 | extern void show_regs(struct pt_regs * regs); |
477 | #endif | 478 | #endif |
diff --git a/include/asm-s390/qdio.h b/include/asm-s390/qdio.h index a2f37a9353d3..7189c79bc673 100644 --- a/include/asm-s390/qdio.h +++ b/include/asm-s390/qdio.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm/qdio.h | 2 | * linux/include/asm-s390/qdio.h |
3 | * | 3 | * |
4 | * Linux for S/390 QDIO base support, Hipersocket base support | 4 | * Linux for S/390 QDIO base support, Hipersocket base support |
5 | * version 2 | 5 | * version 2 |
diff --git a/include/asm-s390/unistd.h b/include/asm-s390/unistd.h index 0361ac5dcde3..0cccfd83c457 100644 --- a/include/asm-s390/unistd.h +++ b/include/asm-s390/unistd.h | |||
@@ -523,57 +523,6 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ | |||
523 | # define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND | 523 | # define __ARCH_WANT_COMPAT_SYS_RT_SIGSUSPEND |
524 | # endif | 524 | # endif |
525 | 525 | ||
526 | #ifdef __KERNEL_SYSCALLS__ | ||
527 | |||
528 | #include <linux/compiler.h> | ||
529 | #include <linux/types.h> | ||
530 | #include <asm/ptrace.h> | ||
531 | #include <asm/stat.h> | ||
532 | #include <linux/syscalls.h> | ||
533 | |||
534 | /* | ||
535 | * we need this inline - forking from kernel space will result | ||
536 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
537 | * is no problem, but for the stack. This is handled by not letting | ||
538 | * main() use the stack at all after fork(). Thus, no function | ||
539 | * calls - which means inline code for fork too, as otherwise we | ||
540 | * would use the stack upon exit from 'fork()'. | ||
541 | * | ||
542 | * Actually only pause and fork are needed inline, so that there | ||
543 | * won't be any messing with the stack from main(), but we define | ||
544 | * some others too. | ||
545 | */ | ||
546 | #define __NR__exit __NR_exit | ||
547 | static inline _syscall0(pid_t,setsid) | ||
548 | static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
549 | static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
550 | static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
551 | static inline _syscall1(int,dup,int,fd) | ||
552 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
553 | static inline _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
554 | static inline _syscall1(int,close,int,fd) | ||
555 | static inline _syscall2(long,stat,char *,filename,struct stat *,statbuf) | ||
556 | |||
557 | static inline pid_t waitpid(int pid, int *wait_stat, int flags) | ||
558 | { | ||
559 | return sys_wait4(pid, wait_stat, flags, NULL); | ||
560 | } | ||
561 | struct mmap_arg_struct; | ||
562 | asmlinkage long sys_mmap2(struct mmap_arg_struct __user *arg); | ||
563 | |||
564 | asmlinkage long sys_execve(struct pt_regs regs); | ||
565 | asmlinkage long sys_clone(struct pt_regs regs); | ||
566 | asmlinkage long sys_fork(struct pt_regs regs); | ||
567 | asmlinkage long sys_vfork(struct pt_regs regs); | ||
568 | asmlinkage long sys_pipe(unsigned long __user *fildes); | ||
569 | struct sigaction; | ||
570 | asmlinkage long sys_rt_sigaction(int sig, | ||
571 | const struct sigaction __user *act, | ||
572 | struct sigaction __user *oact, | ||
573 | size_t sigsetsize); | ||
574 | |||
575 | #endif /* __KERNEL_SYSCALLS__ */ | ||
576 | |||
577 | /* | 526 | /* |
578 | * "Conditional" syscalls | 527 | * "Conditional" syscalls |
579 | * | 528 | * |
diff --git a/include/asm-sh/.gitignore b/include/asm-sh/.gitignore new file mode 100644 index 000000000000..9218ef82b698 --- /dev/null +++ b/include/asm-sh/.gitignore | |||
@@ -0,0 +1,3 @@ | |||
1 | cpu | ||
2 | mach | ||
3 | machtypes.h | ||
diff --git a/include/asm-sh/bigsur/io.h b/include/asm-sh/bigsur/io.h index 939735ee8dc5..1470ac8d4a39 100644 --- a/include/asm-sh/bigsur/io.h +++ b/include/asm-sh/bigsur/io.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-sh/io_bigsur.h | 2 | * include/asm-sh/bigsur/io.h |
3 | * | 3 | * |
4 | * By Dustin McIntire (dustin@sensoria.com) (c)2001 | 4 | * By Dustin McIntire (dustin@sensoria.com) (c)2001 |
5 | * Derived from io_hd64465.h, which bore the message: | 5 | * Derived from io_hd64465.h, which bore the message: |
diff --git a/include/asm-sh/bigsur/serial.h b/include/asm-sh/bigsur/serial.h index 7233af42f755..a08fa82fe45a 100644 --- a/include/asm-sh/bigsur/serial.h +++ b/include/asm-sh/bigsur/serial.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-sh/serial-bigsur.h | 2 | * include/asm-sh/bigsur/serial.h |
3 | * | 3 | * |
4 | * Configuration details for Big Sur 16550 based serial ports | 4 | * Configuration details for Big Sur 16550 based serial ports |
5 | * i.e. HD64465, PCMCIA, etc. | 5 | * i.e. HD64465, PCMCIA, etc. |
diff --git a/include/asm-sh/bugs.h b/include/asm-sh/bugs.h index b4000c8bf31b..beeea40f549e 100644 --- a/include/asm-sh/bugs.h +++ b/include/asm-sh/bugs.h | |||
@@ -18,7 +18,7 @@ static void __init check_bugs(void) | |||
18 | { | 18 | { |
19 | extern char *get_cpu_subtype(void); | 19 | extern char *get_cpu_subtype(void); |
20 | extern unsigned long loops_per_jiffy; | 20 | extern unsigned long loops_per_jiffy; |
21 | char *p= &system_utsname.machine[2]; /* "sh" */ | 21 | char *p= &init_utsname()->machine[2]; /* "sh" */ |
22 | 22 | ||
23 | cpu_data->loops_per_jiffy = loops_per_jiffy; | 23 | cpu_data->loops_per_jiffy = loops_per_jiffy; |
24 | 24 | ||
diff --git a/include/asm-sh/cpu-sh3/rtc.h b/include/asm-sh/cpu-sh3/rtc.h deleted file mode 100644 index 2d926671115a..000000000000 --- a/include/asm-sh/cpu-sh3/rtc.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | #ifndef __ASM_CPU_SH3_RTC_H | ||
2 | #define __ASM_CPU_SH3_RTC_H | ||
3 | |||
4 | /* SH-3 RTC */ | ||
5 | #define R64CNT 0xfffffec0 | ||
6 | #define RSECCNT 0xfffffec2 | ||
7 | #define RMINCNT 0xfffffec4 | ||
8 | #define RHRCNT 0xfffffec6 | ||
9 | #define RWKCNT 0xfffffec8 | ||
10 | #define RDAYCNT 0xfffffeca | ||
11 | #define RMONCNT 0xfffffecc | ||
12 | #define RYRCNT 0xfffffece | ||
13 | #define RSECAR 0xfffffed0 | ||
14 | #define RMINAR 0xfffffed2 | ||
15 | #define RHRAR 0xfffffed4 | ||
16 | #define RWKAR 0xfffffed6 | ||
17 | #define RDAYAR 0xfffffed8 | ||
18 | #define RMONAR 0xfffffeda | ||
19 | #define RCR1 0xfffffedc | ||
20 | #define RCR2 0xfffffede | ||
21 | |||
22 | #define RTC_BIT_INVERTED 0 /* No bug on SH7708, SH7709A */ | ||
23 | |||
24 | #endif /* __ASM_CPU_SH3_RTC_H */ | ||
25 | |||
diff --git a/include/asm-sh/cpu-sh4/rtc.h b/include/asm-sh/cpu-sh4/rtc.h deleted file mode 100644 index e091e32a67b7..000000000000 --- a/include/asm-sh/cpu-sh4/rtc.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | #ifndef __ASM_CPU_SH4_RTC_H | ||
2 | #define __ASM_CPU_SH4_RTC_H | ||
3 | |||
4 | /* SH-4 RTC */ | ||
5 | #define R64CNT 0xffc80000 | ||
6 | #define RSECCNT 0xffc80004 | ||
7 | #define RMINCNT 0xffc80008 | ||
8 | #define RHRCNT 0xffc8000c | ||
9 | #define RWKCNT 0xffc80010 | ||
10 | #define RDAYCNT 0xffc80014 | ||
11 | #define RMONCNT 0xffc80018 | ||
12 | #define RYRCNT 0xffc8001c /* 16bit */ | ||
13 | #define RSECAR 0xffc80020 | ||
14 | #define RMINAR 0xffc80024 | ||
15 | #define RHRAR 0xffc80028 | ||
16 | #define RWKAR 0xffc8002c | ||
17 | #define RDAYAR 0xffc80030 | ||
18 | #define RMONAR 0xffc80034 | ||
19 | #define RCR1 0xffc80038 | ||
20 | #define RCR2 0xffc8003c | ||
21 | |||
22 | #define RTC_BIT_INVERTED 0x40 /* bug on SH7750, SH7750S */ | ||
23 | |||
24 | #endif /* __ASM_CPU_SH4_RTC_H */ | ||
25 | |||
diff --git a/include/asm-sh/dreamcast/sysasic.h b/include/asm-sh/dreamcast/sysasic.h index c8858537803c..7874e3dac736 100644 --- a/include/asm-sh/dreamcast/sysasic.h +++ b/include/asm-sh/dreamcast/sysasic.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* include/asm-sh/dc_sysasic.h | 1 | /* include/asm-sh/dreamcast/sysasic.h |
2 | * | 2 | * |
3 | * Definitions for the Dreamcast System ASIC and related peripherals. | 3 | * Definitions for the Dreamcast System ASIC and related peripherals. |
4 | * | 4 | * |
diff --git a/include/asm-sh/elf.h b/include/asm-sh/elf.h index 3a07ab40ac4d..fc050fd7645e 100644 --- a/include/asm-sh/elf.h +++ b/include/asm-sh/elf.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __ASM_SH_ELF_H | 1 | #ifndef __ASM_SH_ELF_H |
2 | #define __ASM_SH_ELF_H | 2 | #define __ASM_SH_ELF_H |
3 | 3 | ||
4 | #include <asm/processor.h> | ||
5 | #include <asm/auxvec.h> | 4 | #include <asm/auxvec.h> |
6 | #include <asm/ptrace.h> | 5 | #include <asm/ptrace.h> |
7 | #include <asm/user.h> | 6 | #include <asm/user.h> |
diff --git a/include/asm-sh/hd64465/io.h b/include/asm-sh/hd64465/io.h index 1100bcf4968e..139f1472e5bb 100644 --- a/include/asm-sh/hd64465/io.h +++ b/include/asm-sh/hd64465/io.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-sh/io_hd64465.h | 2 | * include/asm-sh/hd64465/io.h |
3 | * | 3 | * |
4 | * By Greg Banks <gbanks@pocketpenguins.com> | 4 | * By Greg Banks <gbanks@pocketpenguins.com> |
5 | * (c) 2000 PocketPenguins Inc. | 5 | * (c) 2000 PocketPenguins Inc. |
diff --git a/include/asm-sh/hs7751rvoip/io.h b/include/asm-sh/hs7751rvoip/io.h deleted file mode 100644 index 513c8514001b..000000000000 --- a/include/asm-sh/hs7751rvoip/io.h +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-sh/hs7751rvoip/hs7751rvoip.h | ||
3 | * | ||
4 | * Modified version of io_se.h for the hs7751rvoip-specific functions. | ||
5 | * | ||
6 | * May be copied or modified under the terms of the GNU General Public | ||
7 | * License. See linux/COPYING for more information. | ||
8 | * | ||
9 | * IO functions for an Renesas Technology sales HS7751RVOIP | ||
10 | */ | ||
11 | |||
12 | #ifndef _ASM_SH_IO_HS7751RVOIP_H | ||
13 | #define _ASM_SH_IO_HS7751RVOIP_H | ||
14 | |||
15 | #include <asm/io_generic.h> | ||
16 | |||
17 | extern unsigned char hs7751rvoip_inb(unsigned long port); | ||
18 | extern unsigned short hs7751rvoip_inw(unsigned long port); | ||
19 | extern unsigned int hs7751rvoip_inl(unsigned long port); | ||
20 | |||
21 | extern void hs7751rvoip_outb(unsigned char value, unsigned long port); | ||
22 | extern void hs7751rvoip_outw(unsigned short value, unsigned long port); | ||
23 | extern void hs7751rvoip_outl(unsigned int value, unsigned long port); | ||
24 | |||
25 | extern unsigned char hs7751rvoip_inb_p(unsigned long port); | ||
26 | extern void hs7751rvoip_outb_p(unsigned char value, unsigned long port); | ||
27 | |||
28 | extern void hs7751rvoip_insb(unsigned long port, void *addr, unsigned long count); | ||
29 | extern void hs7751rvoip_insw(unsigned long port, void *addr, unsigned long count); | ||
30 | extern void hs7751rvoip_insl(unsigned long port, void *addr, unsigned long count); | ||
31 | extern void hs7751rvoip_outsb(unsigned long port, const void *addr, unsigned long count); | ||
32 | extern void hs7751rvoip_outsw(unsigned long port, const void *addr, unsigned long count); | ||
33 | extern void hs7751rvoip_outsl(unsigned long port, const void *addr, unsigned long count); | ||
34 | |||
35 | extern void *hs7751rvoip_ioremap(unsigned long offset, unsigned long size); | ||
36 | |||
37 | extern unsigned long hs7751rvoip_isa_port2addr(unsigned long offset); | ||
38 | |||
39 | #endif /* _ASM_SH_IO_HS7751RVOIP_H */ | ||
diff --git a/include/asm-sh/mpc1211/io.h b/include/asm-sh/mpc1211/io.h index eba8a0b5fd7b..6298370bec2d 100644 --- a/include/asm-sh/mpc1211/io.h +++ b/include/asm-sh/mpc1211/io.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-sh/io_mpc1211.h | 2 | * include/asm-sh/mpc1211/io.h |
3 | * | 3 | * |
4 | * Copyright 2001 Saito.K & Jeanne | 4 | * Copyright 2001 Saito.K & Jeanne |
5 | * | 5 | * |
diff --git a/include/asm-sh/rts7751r2d/io.h b/include/asm-sh/rts7751r2d/io.h deleted file mode 100644 index 241094020567..000000000000 --- a/include/asm-sh/rts7751r2d/io.h +++ /dev/null | |||
@@ -1,37 +0,0 @@ | |||
1 | /* | ||
2 | * include/asm-sh/io_rts7751r2d.h | ||
3 | * | ||
4 | * Modified version of io_se.h for the rts7751r2d-specific functions. | ||
5 | * | ||
6 | * May be copied or modified under the terms of the GNU General Public | ||
7 | * License. See linux/COPYING for more information. | ||
8 | * | ||
9 | * IO functions for an Renesas Technology sales RTS7751R2D | ||
10 | */ | ||
11 | |||
12 | #ifndef _ASM_SH_IO_RTS7751R2D_H | ||
13 | #define _ASM_SH_IO_RTS7751R2D_H | ||
14 | |||
15 | extern unsigned char rts7751r2d_inb(unsigned long port); | ||
16 | extern unsigned short rts7751r2d_inw(unsigned long port); | ||
17 | extern unsigned int rts7751r2d_inl(unsigned long port); | ||
18 | |||
19 | extern void rts7751r2d_outb(unsigned char value, unsigned long port); | ||
20 | extern void rts7751r2d_outw(unsigned short value, unsigned long port); | ||
21 | extern void rts7751r2d_outl(unsigned int value, unsigned long port); | ||
22 | |||
23 | extern unsigned char rts7751r2d_inb_p(unsigned long port); | ||
24 | extern void rts7751r2d_outb_p(unsigned char value, unsigned long port); | ||
25 | |||
26 | extern void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count); | ||
27 | extern void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count); | ||
28 | extern void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count); | ||
29 | extern void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count); | ||
30 | extern void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count); | ||
31 | extern void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count); | ||
32 | |||
33 | extern void *rts7751r2d_ioremap(unsigned long offset, unsigned long size); | ||
34 | |||
35 | extern unsigned long rts7751r2d_isa_port2addr(unsigned long offset); | ||
36 | |||
37 | #endif /* _ASM_SH_IO_RTS7751R2D_H */ | ||
diff --git a/include/asm-sh/rts7751r2d/rts7751r2d.h b/include/asm-sh/rts7751r2d/rts7751r2d.h index b112ae221fd1..796b8fcb81a8 100644 --- a/include/asm-sh/rts7751r2d/rts7751r2d.h +++ b/include/asm-sh/rts7751r2d/rts7751r2d.h | |||
@@ -68,4 +68,7 @@ | |||
68 | #define IRQ_PCISLOT2 10 /* PCI Slot #2 IRQ */ | 68 | #define IRQ_PCISLOT2 10 /* PCI Slot #2 IRQ */ |
69 | #define IRQ_EXTENTION 11 /* EXTn IRQ */ | 69 | #define IRQ_EXTENTION 11 /* EXTn IRQ */ |
70 | 70 | ||
71 | #define __IO_PREFIX rts7751r2d | ||
72 | #include <asm/io_generic.h> | ||
73 | |||
71 | #endif /* __ASM_SH_RENESAS_RTS7751R2D */ | 74 | #endif /* __ASM_SH_RENESAS_RTS7751R2D */ |
diff --git a/include/asm-sh/sfp-machine.h b/include/asm-sh/sfp-machine.h index 8a6399a8cfe0..d3c548443f2a 100644 --- a/include/asm-sh/sfp-machine.h +++ b/include/asm-sh/sfp-machine.h | |||
@@ -25,8 +25,6 @@ | |||
25 | #ifndef _SFP_MACHINE_H | 25 | #ifndef _SFP_MACHINE_H |
26 | #define _SFP_MACHINE_H | 26 | #define _SFP_MACHINE_H |
27 | 27 | ||
28 | #include <linux/config.h> | ||
29 | |||
30 | #define _FP_W_TYPE_SIZE 32 | 28 | #define _FP_W_TYPE_SIZE 32 |
31 | #define _FP_W_TYPE unsigned long | 29 | #define _FP_W_TYPE unsigned long |
32 | #define _FP_WS_TYPE signed long | 30 | #define _FP_WS_TYPE signed long |
diff --git a/include/asm-sh/spinlock.h b/include/asm-sh/spinlock.h index 54458fd24981..2586eef07d57 100644 --- a/include/asm-sh/spinlock.h +++ b/include/asm-sh/spinlock.h | |||
@@ -88,7 +88,14 @@ static inline void __raw_write_unlock(raw_rwlock_t *rw) | |||
88 | __raw_spin_unlock(&rw->lock); | 88 | __raw_spin_unlock(&rw->lock); |
89 | } | 89 | } |
90 | 90 | ||
91 | #define __raw_read_trylock(lock) generic__raw_read_trylock(lock) | 91 | static inline int __raw_read_trylock(raw_rwlock_t *lock) |
92 | { | ||
93 | atomic_t *count = (atomic_t*)lock; | ||
94 | if (atomic_dec_return(count) >= 0) | ||
95 | return 1; | ||
96 | atomic_inc(count); | ||
97 | return 0; | ||
98 | } | ||
92 | 99 | ||
93 | static inline int __raw_write_trylock(raw_rwlock_t *rw) | 100 | static inline int __raw_write_trylock(raw_rwlock_t *rw) |
94 | { | 101 | { |
diff --git a/include/asm-sh/string.h b/include/asm-sh/string.h index 3e0cff04caec..95bc7db006b0 100644 --- a/include/asm-sh/string.h +++ b/include/asm-sh/string.h | |||
@@ -1,13 +1,15 @@ | |||
1 | #ifndef __ASM_SH_STRING_H | 1 | #ifndef __ASM_SH_STRING_H |
2 | #define __ASM_SH_STRING_H | 2 | #define __ASM_SH_STRING_H |
3 | 3 | ||
4 | #ifdef __KERNEL__ | ||
5 | |||
4 | /* | 6 | /* |
5 | * Copyright (C) 1999 Niibe Yutaka | 7 | * Copyright (C) 1999 Niibe Yutaka |
6 | * But consider these trivial functions to be public domain. | 8 | * But consider these trivial functions to be public domain. |
7 | */ | 9 | */ |
8 | 10 | ||
9 | #define __HAVE_ARCH_STRCPY | 11 | #define __HAVE_ARCH_STRCPY |
10 | static __inline__ char *strcpy(char *__dest, const char *__src) | 12 | static inline char *strcpy(char *__dest, const char *__src) |
11 | { | 13 | { |
12 | register char *__xdest = __dest; | 14 | register char *__xdest = __dest; |
13 | unsigned long __dummy; | 15 | unsigned long __dummy; |
@@ -26,7 +28,7 @@ static __inline__ char *strcpy(char *__dest, const char *__src) | |||
26 | } | 28 | } |
27 | 29 | ||
28 | #define __HAVE_ARCH_STRNCPY | 30 | #define __HAVE_ARCH_STRNCPY |
29 | static __inline__ char *strncpy(char *__dest, const char *__src, size_t __n) | 31 | static inline char *strncpy(char *__dest, const char *__src, size_t __n) |
30 | { | 32 | { |
31 | register char *__xdest = __dest; | 33 | register char *__xdest = __dest; |
32 | unsigned long __dummy; | 34 | unsigned long __dummy; |
@@ -52,7 +54,7 @@ static __inline__ char *strncpy(char *__dest, const char *__src, size_t __n) | |||
52 | } | 54 | } |
53 | 55 | ||
54 | #define __HAVE_ARCH_STRCMP | 56 | #define __HAVE_ARCH_STRCMP |
55 | static __inline__ int strcmp(const char *__cs, const char *__ct) | 57 | static inline int strcmp(const char *__cs, const char *__ct) |
56 | { | 58 | { |
57 | register int __res; | 59 | register int __res; |
58 | unsigned long __dummy; | 60 | unsigned long __dummy; |
@@ -78,7 +80,7 @@ static __inline__ int strcmp(const char *__cs, const char *__ct) | |||
78 | } | 80 | } |
79 | 81 | ||
80 | #define __HAVE_ARCH_STRNCMP | 82 | #define __HAVE_ARCH_STRNCMP |
81 | static __inline__ int strncmp(const char *__cs, const char *__ct, size_t __n) | 83 | static inline int strncmp(const char *__cs, const char *__ct, size_t __n) |
82 | { | 84 | { |
83 | register int __res; | 85 | register int __res; |
84 | unsigned long __dummy; | 86 | unsigned long __dummy; |
@@ -124,4 +126,9 @@ extern void *memchr(const void *__s, int __c, size_t __n); | |||
124 | #define __HAVE_ARCH_STRLEN | 126 | #define __HAVE_ARCH_STRLEN |
125 | extern size_t strlen(const char *); | 127 | extern size_t strlen(const char *); |
126 | 128 | ||
129 | /* arch/sh/lib/strcasecmp.c */ | ||
130 | extern int strcasecmp(const char *, const char *); | ||
131 | |||
132 | #endif /* __KERNEL__ */ | ||
133 | |||
127 | #endif /* __ASM_SH_STRING_H */ | 134 | #endif /* __ASM_SH_STRING_H */ |
diff --git a/include/asm-sh/unistd.h b/include/asm-sh/unistd.h index 5d5e9f94def5..f1a0cbc966be 100644 --- a/include/asm-sh/unistd.h +++ b/include/asm-sh/unistd.h | |||
@@ -472,76 +472,6 @@ __syscall_return(type,__sc0); \ | |||
472 | #define __ARCH_WANT_SYS_RT_SIGACTION | 472 | #define __ARCH_WANT_SYS_RT_SIGACTION |
473 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 473 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
474 | 474 | ||
475 | #ifdef __KERNEL_SYSCALLS__ | ||
476 | |||
477 | #include <linux/compiler.h> | ||
478 | #include <linux/types.h> | ||
479 | #include <linux/linkage.h> | ||
480 | #include <asm/ptrace.h> | ||
481 | |||
482 | /* | ||
483 | * we need this inline - forking from kernel space will result | ||
484 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
485 | * is no problem, but for the stack. This is handled by not letting | ||
486 | * main() use the stack at all after fork(). Thus, no function | ||
487 | * calls - which means inline code for fork too, as otherwise we | ||
488 | * would use the stack upon exit from 'fork()'. | ||
489 | * | ||
490 | * Actually only pause and fork are needed inline, so that there | ||
491 | * won't be any messing with the stack from main(), but we define | ||
492 | * some others too. | ||
493 | */ | ||
494 | #define __NR__exit __NR_exit | ||
495 | static __inline__ _syscall0(int,pause) | ||
496 | static __inline__ _syscall0(int,sync) | ||
497 | static __inline__ _syscall0(pid_t,setsid) | ||
498 | static __inline__ _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
499 | static __inline__ _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
500 | static __inline__ _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
501 | static __inline__ _syscall1(int,dup,int,fd) | ||
502 | static __inline__ _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
503 | static __inline__ _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
504 | static __inline__ _syscall1(int,close,int,fd) | ||
505 | static __inline__ _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
506 | static __inline__ _syscall1(int,delete_module,const char *,name) | ||
507 | |||
508 | static __inline__ pid_t wait(int * wait_stat) | ||
509 | { | ||
510 | return waitpid(-1,wait_stat,0); | ||
511 | } | ||
512 | |||
513 | asmlinkage long sys_mmap2( | ||
514 | unsigned long addr, unsigned long len, | ||
515 | unsigned long prot, unsigned long flags, | ||
516 | unsigned long fd, unsigned long pgoff); | ||
517 | asmlinkage int sys_execve(char *ufilename, char **uargv, | ||
518 | char **uenvp, unsigned long r7, | ||
519 | struct pt_regs regs); | ||
520 | asmlinkage int sys_clone(unsigned long clone_flags, unsigned long newsp, | ||
521 | unsigned long parent_tidptr, | ||
522 | unsigned long child_tidptr, | ||
523 | struct pt_regs regs); | ||
524 | asmlinkage int sys_fork(unsigned long r4, unsigned long r5, | ||
525 | unsigned long r6, unsigned long r7, | ||
526 | struct pt_regs regs); | ||
527 | asmlinkage int sys_vfork(unsigned long r4, unsigned long r5, | ||
528 | unsigned long r6, unsigned long r7, | ||
529 | struct pt_regs regs); | ||
530 | asmlinkage int sys_pipe(unsigned long r4, unsigned long r5, | ||
531 | unsigned long r6, unsigned long r7, | ||
532 | struct pt_regs regs); | ||
533 | asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char *buf, | ||
534 | size_t count, long dummy, loff_t pos); | ||
535 | asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char *buf, | ||
536 | size_t count, long dummy, loff_t pos); | ||
537 | struct sigaction; | ||
538 | asmlinkage long sys_rt_sigaction(int sig, | ||
539 | const struct sigaction __user *act, | ||
540 | struct sigaction __user *oact, | ||
541 | size_t sigsetsize); | ||
542 | |||
543 | #endif /* __KERNEL_SYSCALLS__ */ | ||
544 | |||
545 | /* | 475 | /* |
546 | * "Conditional" syscalls | 476 | * "Conditional" syscalls |
547 | * | 477 | * |
diff --git a/include/asm-sh64/serial.h b/include/asm-sh64/serial.h index 29c9be15112b..e8d7b3f2da57 100644 --- a/include/asm-sh64/serial.h +++ b/include/asm-sh64/serial.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-sh/serial.h | 2 | * include/asm-sh64/serial.h |
3 | * | 3 | * |
4 | * Configuration details for 8250, 16450, 16550, etc. serial ports | 4 | * Configuration details for 8250, 16450, 16550, etc. serial ports |
5 | */ | 5 | */ |
diff --git a/include/asm-sh64/unistd.h b/include/asm-sh64/unistd.h index c113566bef33..ee7828b27ad1 100644 --- a/include/asm-sh64/unistd.h +++ b/include/asm-sh64/unistd.h | |||
@@ -513,47 +513,6 @@ __syscall_return(type,__sc0); \ | |||
513 | #define __ARCH_WANT_SYS_SIGPROCMASK | 513 | #define __ARCH_WANT_SYS_SIGPROCMASK |
514 | #define __ARCH_WANT_SYS_RT_SIGACTION | 514 | #define __ARCH_WANT_SYS_RT_SIGACTION |
515 | 515 | ||
516 | #ifdef __KERNEL_SYSCALLS__ | ||
517 | |||
518 | /* Copy from sh */ | ||
519 | #include <linux/compiler.h> | ||
520 | #include <linux/types.h> | ||
521 | #include <asm/ptrace.h> | ||
522 | |||
523 | /* | ||
524 | * we need this inline - forking from kernel space will result | ||
525 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
526 | * is no problem, but for the stack. This is handled by not letting | ||
527 | * main() use the stack at all after fork(). Thus, no function | ||
528 | * calls - which means inline code for fork too, as otherwise we | ||
529 | * would use the stack upon exit from 'fork()'. | ||
530 | * | ||
531 | * Actually only pause and fork are needed inline, so that there | ||
532 | * won't be any messing with the stack from main(), but we define | ||
533 | * some others too. | ||
534 | */ | ||
535 | #define __NR__exit __NR_exit | ||
536 | static inline _syscall0(int,pause) | ||
537 | static inline _syscall1(int,setup,int,magic) | ||
538 | static inline _syscall0(int,sync) | ||
539 | static inline _syscall0(pid_t,setsid) | ||
540 | static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
541 | static inline _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
542 | static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
543 | static inline _syscall1(int,dup,int,fd) | ||
544 | static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
545 | static inline _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
546 | static inline _syscall1(int,close,int,fd) | ||
547 | static inline _syscall1(int,_exit,int,exitcode) | ||
548 | static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
549 | static inline _syscall1(int,delete_module,const char *,name) | ||
550 | |||
551 | static inline pid_t wait(int * wait_stat) | ||
552 | { | ||
553 | return waitpid(-1,wait_stat,0); | ||
554 | } | ||
555 | #endif /* __KERNEL_SYSCALLS__ */ | ||
556 | |||
557 | /* | 516 | /* |
558 | * "Conditional" syscalls | 517 | * "Conditional" syscalls |
559 | * | 518 | * |
diff --git a/include/asm-sparc/reg.h b/include/asm-sparc/reg.h index ed60ebec5930..ea0a7e590bb3 100644 --- a/include/asm-sparc/reg.h +++ b/include/asm-sparc/reg.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/asm-sparc/reg.h | 2 | * linux/include/asm-sparc/reg.h |
3 | * Layout of the registers as expected by gdb on the Sparc | 3 | * Layout of the registers as expected by gdb on the Sparc |
4 | * we should replace the user.h definitions with those in | 4 | * we should replace the user.h definitions with those in |
5 | * this file, we don't even use the other | 5 | * this file, we don't even use the other |
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h index 2553762465ca..c7a495afc82e 100644 --- a/include/asm-sparc/unistd.h +++ b/include/asm-sparc/unistd.h | |||
@@ -478,53 +478,6 @@ return -1; \ | |||
478 | #define __ARCH_WANT_SYS_SIGPROCMASK | 478 | #define __ARCH_WANT_SYS_SIGPROCMASK |
479 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 479 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
480 | 480 | ||
481 | #ifdef __KERNEL_SYSCALLS__ | ||
482 | |||
483 | #include <linux/compiler.h> | ||
484 | #include <linux/types.h> | ||
485 | |||
486 | /* | ||
487 | * we need this inline - forking from kernel space will result | ||
488 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
489 | * is no problem, but for the stack. This is handled by not letting | ||
490 | * main() use the stack at all after fork(). Thus, no function | ||
491 | * calls - which means inline code for fork too, as otherwise we | ||
492 | * would use the stack upon exit from 'fork()'. | ||
493 | * | ||
494 | * Actually only pause and fork are needed inline, so that there | ||
495 | * won't be any messing with the stack from main(), but we define | ||
496 | * some others too. | ||
497 | */ | ||
498 | #define __NR__exit __NR_exit | ||
499 | static __inline__ _syscall0(pid_t,setsid) | ||
500 | static __inline__ _syscall3(int,write,int,fd,__const__ char *,buf,off_t,count) | ||
501 | static __inline__ _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
502 | static __inline__ _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
503 | static __inline__ _syscall1(int,dup,int,fd) | ||
504 | static __inline__ _syscall3(int,execve,__const__ char *,file,char **,argv,char **,envp) | ||
505 | static __inline__ _syscall3(int,open,__const__ char *,file,int,flag,int,mode) | ||
506 | static __inline__ _syscall1(int,close,int,fd) | ||
507 | static __inline__ _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
508 | |||
509 | #include <linux/linkage.h> | ||
510 | |||
511 | asmlinkage unsigned long sys_mmap( | ||
512 | unsigned long addr, unsigned long len, | ||
513 | unsigned long prot, unsigned long flags, | ||
514 | unsigned long fd, unsigned long off); | ||
515 | asmlinkage unsigned long sys_mmap2( | ||
516 | unsigned long addr, unsigned long len, | ||
517 | unsigned long prot, unsigned long flags, | ||
518 | unsigned long fd, unsigned long pgoff); | ||
519 | struct sigaction; | ||
520 | asmlinkage long sys_rt_sigaction(int sig, | ||
521 | const struct sigaction __user *act, | ||
522 | struct sigaction __user *oact, | ||
523 | void __user *restorer, | ||
524 | size_t sigsetsize); | ||
525 | |||
526 | #endif /* __KERNEL_SYSCALLS__ */ | ||
527 | |||
528 | /* | 481 | /* |
529 | * "Conditional" syscalls | 482 | * "Conditional" syscalls |
530 | * | 483 | * |
diff --git a/include/asm-sparc64/compat_signal.h b/include/asm-sparc64/compat_signal.h new file mode 100644 index 000000000000..7aefa301321e --- /dev/null +++ b/include/asm-sparc64/compat_signal.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef _COMPAT_SIGNAL_H | ||
2 | #define _COMPAT_SIGNAL_H | ||
3 | |||
4 | #include <linux/config.h> | ||
5 | #include <linux/compat.h> | ||
6 | #include <asm/signal.h> | ||
7 | |||
8 | #ifdef CONFIG_COMPAT | ||
9 | struct __new_sigaction32 { | ||
10 | unsigned sa_handler; | ||
11 | unsigned int sa_flags; | ||
12 | unsigned sa_restorer; /* not used by Linux/SPARC yet */ | ||
13 | compat_sigset_t sa_mask; | ||
14 | }; | ||
15 | |||
16 | struct __old_sigaction32 { | ||
17 | unsigned sa_handler; | ||
18 | compat_old_sigset_t sa_mask; | ||
19 | unsigned int sa_flags; | ||
20 | unsigned sa_restorer; /* not used by Linux/SPARC yet */ | ||
21 | }; | ||
22 | |||
23 | typedef struct sigaltstack32 { | ||
24 | u32 ss_sp; | ||
25 | int ss_flags; | ||
26 | compat_size_t ss_size; | ||
27 | } stack_t32; | ||
28 | #endif | ||
29 | |||
30 | #endif /* !(_COMPAT_SIGNAL_H) */ | ||
diff --git a/include/asm-sparc64/signal.h b/include/asm-sparc64/signal.h index 9968871103bc..fa6f467389db 100644 --- a/include/asm-sparc64/signal.h +++ b/include/asm-sparc64/signal.h | |||
@@ -8,7 +8,6 @@ | |||
8 | #ifndef __ASSEMBLY__ | 8 | #ifndef __ASSEMBLY__ |
9 | #include <linux/personality.h> | 9 | #include <linux/personality.h> |
10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
11 | #include <linux/compat.h> | ||
12 | #endif | 11 | #endif |
13 | #endif | 12 | #endif |
14 | 13 | ||
@@ -167,23 +166,6 @@ struct __new_sigaction { | |||
167 | __new_sigset_t sa_mask; | 166 | __new_sigset_t sa_mask; |
168 | }; | 167 | }; |
169 | 168 | ||
170 | #ifdef __KERNEL__ | ||
171 | |||
172 | #ifdef CONFIG_COMPAT | ||
173 | struct __new_sigaction32 { | ||
174 | unsigned sa_handler; | ||
175 | unsigned int sa_flags; | ||
176 | unsigned sa_restorer; /* not used by Linux/SPARC yet */ | ||
177 | compat_sigset_t sa_mask; | ||
178 | }; | ||
179 | #endif | ||
180 | |||
181 | struct k_sigaction { | ||
182 | struct __new_sigaction sa; | ||
183 | void __user *ka_restorer; | ||
184 | }; | ||
185 | #endif | ||
186 | |||
187 | struct __old_sigaction { | 169 | struct __old_sigaction { |
188 | __sighandler_t sa_handler; | 170 | __sighandler_t sa_handler; |
189 | __old_sigset_t sa_mask; | 171 | __old_sigset_t sa_mask; |
@@ -191,19 +173,6 @@ struct __old_sigaction { | |||
191 | void (*sa_restorer)(void); /* not used by Linux/SPARC yet */ | 173 | void (*sa_restorer)(void); /* not used by Linux/SPARC yet */ |
192 | }; | 174 | }; |
193 | 175 | ||
194 | #ifdef __KERNEL__ | ||
195 | |||
196 | #ifdef CONFIG_COMPAT | ||
197 | struct __old_sigaction32 { | ||
198 | unsigned sa_handler; | ||
199 | compat_old_sigset_t sa_mask; | ||
200 | unsigned int sa_flags; | ||
201 | unsigned sa_restorer; /* not used by Linux/SPARC yet */ | ||
202 | }; | ||
203 | #endif | ||
204 | |||
205 | #endif | ||
206 | |||
207 | typedef struct sigaltstack { | 176 | typedef struct sigaltstack { |
208 | void __user *ss_sp; | 177 | void __user *ss_sp; |
209 | int ss_flags; | 178 | int ss_flags; |
@@ -212,13 +181,10 @@ typedef struct sigaltstack { | |||
212 | 181 | ||
213 | #ifdef __KERNEL__ | 182 | #ifdef __KERNEL__ |
214 | 183 | ||
215 | #ifdef CONFIG_COMPAT | 184 | struct k_sigaction { |
216 | typedef struct sigaltstack32 { | 185 | struct __new_sigaction sa; |
217 | u32 ss_sp; | 186 | void __user *ka_restorer; |
218 | int ss_flags; | 187 | }; |
219 | compat_size_t ss_size; | ||
220 | } stack_t32; | ||
221 | #endif | ||
222 | 188 | ||
223 | struct signal_deliver_cookie { | 189 | struct signal_deliver_cookie { |
224 | int restart_syscall; | 190 | int restart_syscall; |
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h index badc73fdcb97..124cf076717f 100644 --- a/include/asm-sparc64/unistd.h +++ b/include/asm-sparc64/unistd.h | |||
@@ -445,48 +445,6 @@ if (__res>=0) \ | |||
445 | errno = -__res; \ | 445 | errno = -__res; \ |
446 | return -1; \ | 446 | return -1; \ |
447 | } | 447 | } |
448 | #ifdef __KERNEL_SYSCALLS__ | ||
449 | |||
450 | #include <linux/compiler.h> | ||
451 | #include <linux/types.h> | ||
452 | |||
453 | /* | ||
454 | * we need this inline - forking from kernel space will result | ||
455 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
456 | * is no problem, but for the stack. This is handled by not letting | ||
457 | * main() use the stack at all after fork(). Thus, no function | ||
458 | * calls - which means inline code for fork too, as otherwise we | ||
459 | * would use the stack upon exit from 'fork()'. | ||
460 | * | ||
461 | * Actually only pause and fork are needed inline, so that there | ||
462 | * won't be any messing with the stack from main(), but we define | ||
463 | * some others too. | ||
464 | */ | ||
465 | #define __NR__exit __NR_exit | ||
466 | static __inline__ _syscall0(pid_t,setsid) | ||
467 | static __inline__ _syscall3(int,write,int,fd,__const__ char *,buf,off_t,count) | ||
468 | static __inline__ _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
469 | static __inline__ _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
470 | static __inline__ _syscall1(int,dup,int,fd) | ||
471 | static __inline__ _syscall3(int,execve,__const__ char *,file,char **,argv,char **,envp) | ||
472 | static __inline__ _syscall3(int,open,__const__ char *,file,int,flag,int,mode) | ||
473 | static __inline__ _syscall1(int,close,int,fd) | ||
474 | static __inline__ _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
475 | |||
476 | #include <linux/linkage.h> | ||
477 | |||
478 | asmlinkage unsigned long sys_mmap( | ||
479 | unsigned long addr, unsigned long len, | ||
480 | unsigned long prot, unsigned long flags, | ||
481 | unsigned long fd, unsigned long off); | ||
482 | struct sigaction; | ||
483 | asmlinkage long sys_rt_sigaction(int sig, | ||
484 | const struct sigaction __user *act, | ||
485 | struct sigaction __user *oact, | ||
486 | void __user *restorer, | ||
487 | size_t sigsetsize); | ||
488 | |||
489 | #endif /* __KERNEL_SYSCALLS__ */ | ||
490 | 448 | ||
491 | /* sysconf options, for SunOS compatibility */ | 449 | /* sysconf options, for SunOS compatibility */ |
492 | #define _SC_ARG_MAX 1 | 450 | #define _SC_ARG_MAX 1 |
diff --git a/include/asm-um/unistd.h b/include/asm-um/unistd.h index afccfcaa9ea9..732c83f04c3d 100644 --- a/include/asm-um/unistd.h +++ b/include/asm-um/unistd.h | |||
@@ -37,34 +37,6 @@ extern int um_execve(const char *file, char *const argv[], char *const env[]); | |||
37 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND | 37 | #define __ARCH_WANT_SYS_RT_SIGSUSPEND |
38 | #endif | 38 | #endif |
39 | 39 | ||
40 | #ifdef __KERNEL_SYSCALLS__ | ||
41 | |||
42 | #include <linux/compiler.h> | ||
43 | #include <linux/types.h> | ||
44 | |||
45 | static inline int execve(const char *filename, char *const argv[], | ||
46 | char *const envp[]) | ||
47 | { | ||
48 | mm_segment_t fs; | ||
49 | int ret; | ||
50 | |||
51 | fs = get_fs(); | ||
52 | set_fs(KERNEL_DS); | ||
53 | ret = um_execve(filename, argv, envp); | ||
54 | set_fs(fs); | ||
55 | |||
56 | if (ret >= 0) | ||
57 | return ret; | ||
58 | |||
59 | errno = -(long)ret; | ||
60 | return -1; | ||
61 | } | ||
62 | |||
63 | int sys_execve(char *file, char **argv, char **env); | ||
64 | |||
65 | #endif /* __KERNEL_SYSCALLS__ */ | ||
66 | |||
67 | #undef __KERNEL_SYSCALLS__ | ||
68 | #include "asm/arch/unistd.h" | 40 | #include "asm/arch/unistd.h" |
69 | 41 | ||
70 | #endif /* _UM_UNISTD_H_*/ | 42 | #endif /* _UM_UNISTD_H_*/ |
diff --git a/include/asm-v850/unistd.h b/include/asm-v850/unistd.h index 552b7c873a57..737401e7d3ad 100644 --- a/include/asm-v850/unistd.h +++ b/include/asm-v850/unistd.h | |||
@@ -387,57 +387,6 @@ type name (atype a, btype b, ctype c, dtype d, etype e, ftype f) \ | |||
387 | #define __ARCH_WANT_SYS_SIGPROCMASK | 387 | #define __ARCH_WANT_SYS_SIGPROCMASK |
388 | #define __ARCH_WANT_SYS_RT_SIGACTION | 388 | #define __ARCH_WANT_SYS_RT_SIGACTION |
389 | 389 | ||
390 | #ifdef __KERNEL_SYSCALLS__ | ||
391 | |||
392 | #include <linux/compiler.h> | ||
393 | #include <linux/types.h> | ||
394 | |||
395 | /* | ||
396 | * we need this inline - forking from kernel space will result | ||
397 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
398 | * is no problem, but for the stack. This is handled by not letting | ||
399 | * main() use the stack at all after fork(). Thus, no function | ||
400 | * calls - which means inline code for fork too, as otherwise we | ||
401 | * would use the stack upon exit from 'fork()'. | ||
402 | * | ||
403 | * Actually only pause and fork are needed inline, so that there | ||
404 | * won't be any messing with the stack from main(), but we define | ||
405 | * some others too. | ||
406 | */ | ||
407 | #define __NR__exit __NR_exit | ||
408 | extern inline _syscall0(pid_t,setsid) | ||
409 | extern inline _syscall3(int,write,int,fd,const char *,buf,off_t,count) | ||
410 | extern inline _syscall3(int,read,int,fd,char *,buf,off_t,count) | ||
411 | extern inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,count) | ||
412 | extern inline _syscall1(int,dup,int,fd) | ||
413 | extern inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp) | ||
414 | extern inline _syscall3(int,open,const char *,file,int,flag,int,mode) | ||
415 | extern inline _syscall1(int,close,int,fd) | ||
416 | extern inline _syscall1(int,_exit,int,exitcode) | ||
417 | extern inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options) | ||
418 | |||
419 | extern inline pid_t wait(int * wait_stat) | ||
420 | { | ||
421 | return waitpid (-1, wait_stat, 0); | ||
422 | } | ||
423 | |||
424 | unsigned long sys_mmap(unsigned long addr, size_t len, | ||
425 | unsigned long prot, unsigned long flags, | ||
426 | unsigned long fd, off_t offset); | ||
427 | unsigned long sys_mmap2(unsigned long addr, size_t len, | ||
428 | unsigned long prot, unsigned long flags, | ||
429 | unsigned long fd, unsigned long pgoff); | ||
430 | struct pt_regs; | ||
431 | int sys_execve (char *name, char **argv, char **envp, struct pt_regs *regs); | ||
432 | int sys_pipe (int *fildes); | ||
433 | struct sigaction; | ||
434 | asmlinkage long sys_rt_sigaction(int sig, | ||
435 | const struct sigaction __user *act, | ||
436 | struct sigaction __user *oact, | ||
437 | size_t sigsetsize); | ||
438 | |||
439 | #endif /* __KERNEL_SYSCALLS__ */ | ||
440 | |||
441 | /* | 390 | /* |
442 | * "Conditional" syscalls | 391 | * "Conditional" syscalls |
443 | */ | 392 | */ |
diff --git a/include/asm-x86_64/cache.h b/include/asm-x86_64/cache.h index ed8a9d25272d..052df758ae61 100644 --- a/include/asm-x86_64/cache.h +++ b/include/asm-x86_64/cache.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-x8664/cache.h | 2 | * include/asm-x86_64/cache.h |
3 | */ | 3 | */ |
4 | #ifndef __ARCH_X8664_CACHE_H | 4 | #ifndef __ARCH_X8664_CACHE_H |
5 | #define __ARCH_X8664_CACHE_H | 5 | #define __ARCH_X8664_CACHE_H |
diff --git a/include/asm-x86_64/hardirq.h b/include/asm-x86_64/hardirq.h index 64a65ce2f41f..95d5e090ed89 100644 --- a/include/asm-x86_64/hardirq.h +++ b/include/asm-x86_64/hardirq.h | |||
@@ -6,6 +6,9 @@ | |||
6 | #include <asm/pda.h> | 6 | #include <asm/pda.h> |
7 | #include <asm/apic.h> | 7 | #include <asm/apic.h> |
8 | 8 | ||
9 | /* We can have at most NR_VECTORS irqs routed to a cpu at a time */ | ||
10 | #define MAX_HARDIRQS_PER_CPU NR_VECTORS | ||
11 | |||
9 | #define __ARCH_IRQ_STAT 1 | 12 | #define __ARCH_IRQ_STAT 1 |
10 | 13 | ||
11 | #define local_softirq_pending() read_pda(__softirq_pending) | 14 | #define local_softirq_pending() read_pda(__softirq_pending) |
diff --git a/include/asm-x86_64/hw_irq.h b/include/asm-x86_64/hw_irq.h index 48a4a5364e85..53d0d9fd10d6 100644 --- a/include/asm-x86_64/hw_irq.h +++ b/include/asm-x86_64/hw_irq.h | |||
@@ -19,8 +19,7 @@ | |||
19 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
20 | #include <linux/profile.h> | 20 | #include <linux/profile.h> |
21 | #include <linux/smp.h> | 21 | #include <linux/smp.h> |
22 | 22 | #include <linux/percpu.h> | |
23 | struct hw_interrupt_type; | ||
24 | #endif | 23 | #endif |
25 | 24 | ||
26 | #define NMI_VECTOR 0x02 | 25 | #define NMI_VECTOR 0x02 |
@@ -75,9 +74,10 @@ struct hw_interrupt_type; | |||
75 | 74 | ||
76 | 75 | ||
77 | #ifndef __ASSEMBLY__ | 76 | #ifndef __ASSEMBLY__ |
78 | extern u8 irq_vector[NR_IRQ_VECTORS]; | 77 | extern unsigned int irq_vector[NR_IRQ_VECTORS]; |
78 | typedef int vector_irq_t[NR_VECTORS]; | ||
79 | DECLARE_PER_CPU(vector_irq_t, vector_irq); | ||
79 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) | 80 | #define IO_APIC_VECTOR(irq) (irq_vector[irq]) |
80 | #define AUTO_ASSIGN -1 | ||
81 | 81 | ||
82 | /* | 82 | /* |
83 | * Various low-level irq details needed by irq.c, process.c, | 83 | * Various low-level irq details needed by irq.c, process.c, |
diff --git a/include/asm-x86_64/hypertransport.h b/include/asm-x86_64/hypertransport.h new file mode 100644 index 000000000000..c16c6ff4bdd7 --- /dev/null +++ b/include/asm-x86_64/hypertransport.h | |||
@@ -0,0 +1,42 @@ | |||
1 | #ifndef ASM_HYPERTRANSPORT_H | ||
2 | #define ASM_HYPERTRANSPORT_H | ||
3 | |||
4 | /* | ||
5 | * Constants for x86 Hypertransport Interrupts. | ||
6 | */ | ||
7 | |||
8 | #define HT_IRQ_LOW_BASE 0xf8000000 | ||
9 | |||
10 | #define HT_IRQ_LOW_VECTOR_SHIFT 16 | ||
11 | #define HT_IRQ_LOW_VECTOR_MASK 0x00ff0000 | ||
12 | #define HT_IRQ_LOW_VECTOR(v) (((v) << HT_IRQ_LOW_VECTOR_SHIFT) & HT_IRQ_LOW_VECTOR_MASK) | ||
13 | |||
14 | #define HT_IRQ_LOW_DEST_ID_SHIFT 8 | ||
15 | #define HT_IRQ_LOW_DEST_ID_MASK 0x0000ff00 | ||
16 | #define HT_IRQ_LOW_DEST_ID(v) (((v) << HT_IRQ_LOW_DEST_ID_SHIFT) & HT_IRQ_LOW_DEST_ID_MASK) | ||
17 | |||
18 | #define HT_IRQ_LOW_DM_PHYSICAL 0x0000000 | ||
19 | #define HT_IRQ_LOW_DM_LOGICAL 0x0000040 | ||
20 | |||
21 | #define HT_IRQ_LOW_RQEOI_EDGE 0x0000000 | ||
22 | #define HT_IRQ_LOW_RQEOI_LEVEL 0x0000020 | ||
23 | |||
24 | |||
25 | #define HT_IRQ_LOW_MT_FIXED 0x0000000 | ||
26 | #define HT_IRQ_LOW_MT_ARBITRATED 0x0000004 | ||
27 | #define HT_IRQ_LOW_MT_SMI 0x0000008 | ||
28 | #define HT_IRQ_LOW_MT_NMI 0x000000c | ||
29 | #define HT_IRQ_LOW_MT_INIT 0x0000010 | ||
30 | #define HT_IRQ_LOW_MT_STARTUP 0x0000014 | ||
31 | #define HT_IRQ_LOW_MT_EXTINT 0x0000018 | ||
32 | #define HT_IRQ_LOW_MT_LINT1 0x000008c | ||
33 | #define HT_IRQ_LOW_MT_LINT0 0x0000098 | ||
34 | |||
35 | #define HT_IRQ_LOW_IRQ_MASKED 0x0000001 | ||
36 | |||
37 | |||
38 | #define HT_IRQ_HIGH_DEST_ID_SHIFT 0 | ||
39 | #define HT_IRQ_HIGH_DEST_ID_MASK 0x00ffffff | ||
40 | #define HT_IRQ_HIGH_DEST_ID(v) ((((v) >> 8) << HT_IRQ_HIGH_DEST_ID_SHIFT) & HT_IRQ_HIGH_DEST_ID_MASK) | ||
41 | |||
42 | #endif /* ASM_HYPERTRANSPORT_H */ | ||
diff --git a/include/asm-x86_64/io_apic.h b/include/asm-x86_64/io_apic.h index 5d1b5c68e36e..171ec2dc8c04 100644 --- a/include/asm-x86_64/io_apic.h +++ b/include/asm-x86_64/io_apic.h | |||
@@ -10,46 +10,6 @@ | |||
10 | * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar | 10 | * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #ifdef CONFIG_PCI_MSI | ||
14 | static inline int use_pci_vector(void) {return 1;} | ||
15 | static inline void disable_edge_ioapic_vector(unsigned int vector) { } | ||
16 | static inline void mask_and_ack_level_ioapic_vector(unsigned int vector) { } | ||
17 | static inline void end_edge_ioapic_vector (unsigned int vector) { } | ||
18 | #define startup_level_ioapic startup_level_ioapic_vector | ||
19 | #define shutdown_level_ioapic mask_IO_APIC_vector | ||
20 | #define enable_level_ioapic unmask_IO_APIC_vector | ||
21 | #define disable_level_ioapic mask_IO_APIC_vector | ||
22 | #define mask_and_ack_level_ioapic mask_and_ack_level_ioapic_vector | ||
23 | #define end_level_ioapic end_level_ioapic_vector | ||
24 | #define set_ioapic_affinity set_ioapic_affinity_vector | ||
25 | |||
26 | #define startup_edge_ioapic startup_edge_ioapic_vector | ||
27 | #define shutdown_edge_ioapic disable_edge_ioapic_vector | ||
28 | #define enable_edge_ioapic unmask_IO_APIC_vector | ||
29 | #define disable_edge_ioapic disable_edge_ioapic_vector | ||
30 | #define ack_edge_ioapic ack_edge_ioapic_vector | ||
31 | #define end_edge_ioapic end_edge_ioapic_vector | ||
32 | #else | ||
33 | static inline int use_pci_vector(void) {return 0;} | ||
34 | static inline void disable_edge_ioapic_irq(unsigned int irq) { } | ||
35 | static inline void mask_and_ack_level_ioapic_irq(unsigned int irq) { } | ||
36 | static inline void end_edge_ioapic_irq (unsigned int irq) { } | ||
37 | #define startup_level_ioapic startup_level_ioapic_irq | ||
38 | #define shutdown_level_ioapic mask_IO_APIC_irq | ||
39 | #define enable_level_ioapic unmask_IO_APIC_irq | ||
40 | #define disable_level_ioapic mask_IO_APIC_irq | ||
41 | #define mask_and_ack_level_ioapic mask_and_ack_level_ioapic_irq | ||
42 | #define end_level_ioapic end_level_ioapic_irq | ||
43 | #define set_ioapic_affinity set_ioapic_affinity_irq | ||
44 | |||
45 | #define startup_edge_ioapic startup_edge_ioapic_irq | ||
46 | #define shutdown_edge_ioapic disable_edge_ioapic_irq | ||
47 | #define enable_edge_ioapic unmask_IO_APIC_irq | ||
48 | #define disable_edge_ioapic disable_edge_ioapic_irq | ||
49 | #define ack_edge_ioapic ack_edge_ioapic_irq | ||
50 | #define end_edge_ioapic end_edge_ioapic_irq | ||
51 | #endif | ||
52 | |||
53 | #define APIC_MISMATCH_DEBUG | 13 | #define APIC_MISMATCH_DEBUG |
54 | 14 | ||
55 | #define IO_APIC_BASE(idx) \ | 15 | #define IO_APIC_BASE(idx) \ |
@@ -202,13 +162,10 @@ extern int skip_ioapic_setup; | |||
202 | extern int io_apic_get_version (int ioapic); | 162 | extern int io_apic_get_version (int ioapic); |
203 | extern int io_apic_get_redir_entries (int ioapic); | 163 | extern int io_apic_get_redir_entries (int ioapic); |
204 | extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int, int); | 164 | extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int, int); |
205 | extern int timer_uses_ioapic_pin_0; | ||
206 | #endif | 165 | #endif |
207 | 166 | ||
208 | extern int sis_apic_bug; /* dummy */ | 167 | extern int sis_apic_bug; /* dummy */ |
209 | 168 | ||
210 | extern int assign_irq_vector(int irq); | ||
211 | |||
212 | void enable_NMI_through_LVT0 (void * dummy); | 169 | void enable_NMI_through_LVT0 (void * dummy); |
213 | 170 | ||
214 | extern spinlock_t i8259A_lock; | 171 | extern spinlock_t i8259A_lock; |
diff --git a/include/asm-x86_64/irq.h b/include/asm-x86_64/irq.h index 43469d8ab71a..5006c6e75656 100644 --- a/include/asm-x86_64/irq.h +++ b/include/asm-x86_64/irq.h | |||
@@ -31,13 +31,8 @@ | |||
31 | 31 | ||
32 | #define FIRST_SYSTEM_VECTOR 0xef /* duplicated in hw_irq.h */ | 32 | #define FIRST_SYSTEM_VECTOR 0xef /* duplicated in hw_irq.h */ |
33 | 33 | ||
34 | #ifdef CONFIG_PCI_MSI | 34 | #define NR_IRQS (NR_VECTORS + (32 *NR_CPUS)) |
35 | #define NR_IRQS FIRST_SYSTEM_VECTOR | ||
36 | #define NR_IRQ_VECTORS NR_IRQS | 35 | #define NR_IRQ_VECTORS NR_IRQS |
37 | #else | ||
38 | #define NR_IRQS 224 | ||
39 | #define NR_IRQ_VECTORS (32 * NR_CPUS) | ||
40 | #endif | ||
41 | 36 | ||
42 | static __inline__ int irq_canonicalize(int irq) | 37 | static __inline__ int irq_canonicalize(int irq) |
43 | { | 38 | { |
diff --git a/include/asm-x86_64/msi.h b/include/asm-x86_64/msi.h deleted file mode 100644 index 3ad2346624b2..000000000000 --- a/include/asm-x86_64/msi.h +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2003-2004 Intel | ||
3 | * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) | ||
4 | */ | ||
5 | |||
6 | #ifndef ASM_MSI_H | ||
7 | #define ASM_MSI_H | ||
8 | |||
9 | #include <asm/desc.h> | ||
10 | #include <asm/mach_apic.h> | ||
11 | #include <asm/smp.h> | ||
12 | |||
13 | #define LAST_DEVICE_VECTOR (FIRST_SYSTEM_VECTOR - 1) | ||
14 | #define MSI_TARGET_CPU_SHIFT 12 | ||
15 | |||
16 | extern struct msi_ops msi_apic_ops; | ||
17 | |||
18 | static inline int msi_arch_init(void) | ||
19 | { | ||
20 | msi_register(&msi_apic_ops); | ||
21 | return 0; | ||
22 | } | ||
23 | |||
24 | #endif /* ASM_MSI_H */ | ||
diff --git a/include/asm-x86_64/msidef.h b/include/asm-x86_64/msidef.h new file mode 100644 index 000000000000..5b8acddb70fb --- /dev/null +++ b/include/asm-x86_64/msidef.h | |||
@@ -0,0 +1,47 @@ | |||
1 | #ifndef ASM_MSIDEF_H | ||
2 | #define ASM_MSIDEF_H | ||
3 | |||
4 | /* | ||
5 | * Constants for Intel APIC based MSI messages. | ||
6 | */ | ||
7 | |||
8 | /* | ||
9 | * Shifts for MSI data | ||
10 | */ | ||
11 | |||
12 | #define MSI_DATA_VECTOR_SHIFT 0 | ||
13 | #define MSI_DATA_VECTOR_MASK 0x000000ff | ||
14 | #define MSI_DATA_VECTOR(v) (((v) << MSI_DATA_VECTOR_SHIFT) & MSI_DATA_VECTOR_MASK) | ||
15 | |||
16 | #define MSI_DATA_DELIVERY_MODE_SHIFT 8 | ||
17 | #define MSI_DATA_DELIVERY_FIXED (0 << MSI_DATA_DELIVERY_MODE_SHIFT) | ||
18 | #define MSI_DATA_DELIVERY_LOWPRI (1 << MSI_DATA_DELIVERY_MODE_SHIFT) | ||
19 | |||
20 | #define MSI_DATA_LEVEL_SHIFT 14 | ||
21 | #define MSI_DATA_LEVEL_DEASSERT (0 << MSI_DATA_LEVEL_SHIFT) | ||
22 | #define MSI_DATA_LEVEL_ASSERT (1 << MSI_DATA_LEVEL_SHIFT) | ||
23 | |||
24 | #define MSI_DATA_TRIGGER_SHIFT 15 | ||
25 | #define MSI_DATA_TRIGGER_EDGE (0 << MSI_DATA_TRIGGER_SHIFT) | ||
26 | #define MSI_DATA_TRIGGER_LEVEL (1 << MSI_DATA_TRIGGER_SHIFT) | ||
27 | |||
28 | /* | ||
29 | * Shift/mask fields for msi address | ||
30 | */ | ||
31 | |||
32 | #define MSI_ADDR_BASE_HI 0 | ||
33 | #define MSI_ADDR_BASE_LO 0xfee00000 | ||
34 | |||
35 | #define MSI_ADDR_DEST_MODE_SHIFT 2 | ||
36 | #define MSI_ADDR_DEST_MODE_PHYSICAL (0 << MSI_ADDR_DEST_MODE_SHIFT) | ||
37 | #define MSI_ADDR_DEST_MODE_LOGICAL (1 << MSI_ADDR_DEST_MODE_SHIFT) | ||
38 | |||
39 | #define MSI_ADDR_REDIRECTION_SHIFT 3 | ||
40 | #define MSI_ADDR_REDIRECTION_CPU (0 << MSI_ADDR_REDIRECTION_SHIFT) /* dedicated cpu */ | ||
41 | #define MSI_ADDR_REDIRECTION_LOWPRI (1 << MSI_ADDR_REDIRECTION_SHIFT) /* lowest priority */ | ||
42 | |||
43 | #define MSI_ADDR_DEST_ID_SHIFT 12 | ||
44 | #define MSI_ADDR_DEST_ID_MASK 0x00ffff0 | ||
45 | #define MSI_ADDR_DEST_ID(dest) (((dest) << MSI_ADDR_DEST_ID_SHIFT) & MSI_ADDR_DEST_ID_MASK) | ||
46 | |||
47 | #endif /* ASM_MSIDEF_H */ | ||
diff --git a/include/asm-x86_64/ptrace.h b/include/asm-x86_64/ptrace.h index ab827dc381d7..5ea84dbb1e9c 100644 --- a/include/asm-x86_64/ptrace.h +++ b/include/asm-x86_64/ptrace.h | |||
@@ -39,6 +39,8 @@ struct pt_regs { | |||
39 | #define user_mode(regs) (!!((regs)->cs & 3)) | 39 | #define user_mode(regs) (!!((regs)->cs & 3)) |
40 | #define user_mode_vm(regs) user_mode(regs) | 40 | #define user_mode_vm(regs) user_mode(regs) |
41 | #define instruction_pointer(regs) ((regs)->rip) | 41 | #define instruction_pointer(regs) ((regs)->rip) |
42 | #define regs_return_value(regs) ((regs)->rax) | ||
43 | |||
42 | extern unsigned long profile_pc(struct pt_regs *regs); | 44 | extern unsigned long profile_pc(struct pt_regs *regs); |
43 | void signal_fault(struct pt_regs *regs, void __user *frame, char *where); | 45 | void signal_fault(struct pt_regs *regs, void __user *frame, char *where); |
44 | 46 | ||
diff --git a/include/asm-x86_64/topology.h b/include/asm-x86_64/topology.h index 6e7a2e976b04..5c8f49280dbc 100644 --- a/include/asm-x86_64/topology.h +++ b/include/asm-x86_64/topology.h | |||
@@ -31,6 +31,7 @@ extern int __node_distance(int, int); | |||
31 | #define SD_NODE_INIT (struct sched_domain) { \ | 31 | #define SD_NODE_INIT (struct sched_domain) { \ |
32 | .span = CPU_MASK_NONE, \ | 32 | .span = CPU_MASK_NONE, \ |
33 | .parent = NULL, \ | 33 | .parent = NULL, \ |
34 | .child = NULL, \ | ||
34 | .groups = NULL, \ | 35 | .groups = NULL, \ |
35 | .min_interval = 8, \ | 36 | .min_interval = 8, \ |
36 | .max_interval = 32, \ | 37 | .max_interval = 32, \ |
diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h index 6137146516d3..777288eb7e75 100644 --- a/include/asm-x86_64/unistd.h +++ b/include/asm-x86_64/unistd.h | |||
@@ -620,10 +620,11 @@ __SYSCALL(__NR_vmsplice, sys_vmsplice) | |||
620 | #define __NR_move_pages 279 | 620 | #define __NR_move_pages 279 |
621 | __SYSCALL(__NR_move_pages, sys_move_pages) | 621 | __SYSCALL(__NR_move_pages, sys_move_pages) |
622 | 622 | ||
623 | #ifdef __KERNEL__ | ||
624 | |||
625 | #define __NR_syscall_max __NR_move_pages | 623 | #define __NR_syscall_max __NR_move_pages |
624 | |||
625 | #ifdef __KERNEL__ | ||
626 | #include <linux/err.h> | 626 | #include <linux/err.h> |
627 | #endif | ||
627 | 628 | ||
628 | #ifndef __NO_STUBS | 629 | #ifndef __NO_STUBS |
629 | 630 | ||
@@ -663,8 +664,6 @@ do { \ | |||
663 | #define __ARCH_WANT_SYS_TIME | 664 | #define __ARCH_WANT_SYS_TIME |
664 | #define __ARCH_WANT_COMPAT_SYS_TIME | 665 | #define __ARCH_WANT_COMPAT_SYS_TIME |
665 | 666 | ||
666 | #ifndef __KERNEL_SYSCALLS__ | ||
667 | |||
668 | #define __syscall "syscall" | 667 | #define __syscall "syscall" |
669 | 668 | ||
670 | #define _syscall0(type,name) \ | 669 | #define _syscall0(type,name) \ |
@@ -746,83 +745,7 @@ __asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; movq %7,%%r9 ; " __syscall \ | |||
746 | __syscall_return(type,__res); \ | 745 | __syscall_return(type,__res); \ |
747 | } | 746 | } |
748 | 747 | ||
749 | #else /* __KERNEL_SYSCALLS__ */ | 748 | #ifdef __KERNEL__ |
750 | |||
751 | #include <linux/syscalls.h> | ||
752 | #include <asm/ptrace.h> | ||
753 | |||
754 | /* | ||
755 | * we need this inline - forking from kernel space will result | ||
756 | * in NO COPY ON WRITE (!!!), until an execve is executed. This | ||
757 | * is no problem, but for the stack. This is handled by not letting | ||
758 | * main() use the stack at all after fork(). Thus, no function | ||
759 | * calls - which means inline code for fork too, as otherwise we | ||
760 | * would use the stack upon exit from 'fork()'. | ||
761 | * | ||
762 | * Actually only pause and fork are needed inline, so that there | ||
763 | * won't be any messing with the stack from main(), but we define | ||
764 | * some others too. | ||
765 | */ | ||
766 | #define __NR__exit __NR_exit | ||
767 | |||
768 | static inline pid_t setsid(void) | ||
769 | { | ||
770 | return sys_setsid(); | ||
771 | } | ||
772 | |||
773 | static inline ssize_t write(unsigned int fd, char * buf, size_t count) | ||
774 | { | ||
775 | return sys_write(fd, buf, count); | ||
776 | } | ||
777 | |||
778 | static inline ssize_t read(unsigned int fd, char * buf, size_t count) | ||
779 | { | ||
780 | return sys_read(fd, buf, count); | ||
781 | } | ||
782 | |||
783 | static inline off_t lseek(unsigned int fd, off_t offset, unsigned int origin) | ||
784 | { | ||
785 | return sys_lseek(fd, offset, origin); | ||
786 | } | ||
787 | |||
788 | static inline long dup(unsigned int fd) | ||
789 | { | ||
790 | return sys_dup(fd); | ||
791 | } | ||
792 | |||
793 | /* implemented in asm in arch/x86_64/kernel/entry.S */ | ||
794 | extern int execve(const char *, char * const *, char * const *); | ||
795 | |||
796 | static inline long open(const char * filename, int flags, int mode) | ||
797 | { | ||
798 | return sys_open(filename, flags, mode); | ||
799 | } | ||
800 | |||
801 | static inline long close(unsigned int fd) | ||
802 | { | ||
803 | return sys_close(fd); | ||
804 | } | ||
805 | |||
806 | static inline pid_t waitpid(int pid, int * wait_stat, int flags) | ||
807 | { | ||
808 | return sys_wait4(pid, wait_stat, flags, NULL); | ||
809 | } | ||
810 | |||
811 | extern long sys_mmap(unsigned long addr, unsigned long len, | ||
812 | unsigned long prot, unsigned long flags, | ||
813 | unsigned long fd, unsigned long off); | ||
814 | |||
815 | extern int sys_modify_ldt(int func, void *ptr, unsigned long bytecount); | ||
816 | |||
817 | asmlinkage long sys_execve(char *name, char **argv, char **envp, | ||
818 | struct pt_regs regs); | ||
819 | asmlinkage long sys_clone(unsigned long clone_flags, unsigned long newsp, | ||
820 | void *parent_tid, void *child_tid, | ||
821 | struct pt_regs regs); | ||
822 | asmlinkage long sys_fork(struct pt_regs regs); | ||
823 | asmlinkage long sys_vfork(struct pt_regs regs); | ||
824 | asmlinkage long sys_pipe(int *fildes); | ||
825 | |||
826 | #ifndef __ASSEMBLY__ | 749 | #ifndef __ASSEMBLY__ |
827 | 750 | ||
828 | #include <linux/linkage.h> | 751 | #include <linux/linkage.h> |
@@ -839,8 +762,8 @@ asmlinkage long sys_rt_sigaction(int sig, | |||
839 | size_t sigsetsize); | 762 | size_t sigsetsize); |
840 | 763 | ||
841 | #endif /* __ASSEMBLY__ */ | 764 | #endif /* __ASSEMBLY__ */ |
842 | 765 | #endif /* __KERNEL__ */ | |
843 | #endif /* __KERNEL_SYSCALLS__ */ | 766 | #endif /* __NO_STUBS */ |
844 | 767 | ||
845 | /* | 768 | /* |
846 | * "Conditional" syscalls | 769 | * "Conditional" syscalls |
@@ -850,8 +773,4 @@ asmlinkage long sys_rt_sigaction(int sig, | |||
850 | */ | 773 | */ |
851 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | 774 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") |
852 | 775 | ||
853 | #endif /* __NO_STUBS */ | ||
854 | |||
855 | #endif /* __KERNEL__ */ | ||
856 | |||
857 | #endif /* _ASM_X86_64_UNISTD_H_ */ | 776 | #endif /* _ASM_X86_64_UNISTD_H_ */ |
diff --git a/include/asm-xtensa/a.out.h b/include/asm-xtensa/a.out.h index 3be701dfe098..ffc4dcfd6ac1 100644 --- a/include/asm-xtensa/a.out.h +++ b/include/asm-xtensa/a.out.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/addrspace.h | 2 | * include/asm-xtensa/a.out.h |
3 | * | 3 | * |
4 | * Dummy a.out file. Xtensa does not support the a.out format, but the kernel | 4 | * Dummy a.out file. Xtensa does not support the a.out format, but the kernel |
5 | * seems to depend on it. | 5 | * seems to depend on it. |
diff --git a/include/asm-xtensa/cache.h b/include/asm-xtensa/cache.h index 5aae3f12407c..1e79c0e27460 100644 --- a/include/asm-xtensa/cache.h +++ b/include/asm-xtensa/cache.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/cacheflush.h | 2 | * include/asm-xtensa/cache.h |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
diff --git a/include/asm-xtensa/coprocessor.h b/include/asm-xtensa/coprocessor.h index a91b96dc0efe..5093034723be 100644 --- a/include/asm-xtensa/coprocessor.h +++ b/include/asm-xtensa/coprocessor.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/cpextra.h | 2 | * include/asm-xtensa/coprocessor.h |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
diff --git a/include/asm-xtensa/dma-mapping.h b/include/asm-xtensa/dma-mapping.h index c425f10d086a..c39c91dfcc69 100644 --- a/include/asm-xtensa/dma-mapping.h +++ b/include/asm-xtensa/dma-mapping.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/dma_mapping.h | 2 | * include/asm-xtensa/dma-mapping.h |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
diff --git a/include/asm-xtensa/ioctls.h b/include/asm-xtensa/ioctls.h index 3b89a772d0a0..39e6f23921bb 100644 --- a/include/asm-xtensa/ioctls.h +++ b/include/asm-xtensa/ioctls.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/ioctl.h | 2 | * include/asm-xtensa/ioctls.h |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
diff --git a/include/asm-xtensa/pgtable.h b/include/asm-xtensa/pgtable.h index a47cc734c20c..b4318934b10d 100644 --- a/include/asm-xtensa/pgtable.h +++ b/include/asm-xtensa/pgtable.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/asm-xtensa/page.h | 2 | * linux/include/asm-xtensa/pgtable.h |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License version2 as | 5 | * it under the terms of the GNU General Public License version2 as |
diff --git a/include/asm-xtensa/siginfo.h b/include/asm-xtensa/siginfo.h index 44f0ae77b539..6916248295df 100644 --- a/include/asm-xtensa/siginfo.h +++ b/include/asm-xtensa/siginfo.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/processor.h | 2 | * include/asm-xtensa/siginfo.h |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
diff --git a/include/asm-xtensa/unistd.h b/include/asm-xtensa/unistd.h index 5e1b99dc4ab3..411f810a55c6 100644 --- a/include/asm-xtensa/unistd.h +++ b/include/asm-xtensa/unistd.h | |||
@@ -402,11 +402,6 @@ __asm__ __volatile__ ( \ | |||
402 | __syscall_return(type,__res); \ | 402 | __syscall_return(type,__res); \ |
403 | } | 403 | } |
404 | 404 | ||
405 | |||
406 | #ifdef __KERNEL_SYSCALLS__ | ||
407 | static __inline__ _syscall3(int,execve,const char*,file,char**,argv,char**,envp) | ||
408 | #endif | ||
409 | |||
410 | /* | 405 | /* |
411 | * "Conditional" syscalls | 406 | * "Conditional" syscalls |
412 | * | 407 | * |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 15667cc947d5..ea005c0a79fd 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -158,12 +158,10 @@ header-y += toshiba.h | |||
158 | header-y += ultrasound.h | 158 | header-y += ultrasound.h |
159 | header-y += un.h | 159 | header-y += un.h |
160 | header-y += utime.h | 160 | header-y += utime.h |
161 | header-y += utsname.h | ||
162 | header-y += video_decoder.h | 161 | header-y += video_decoder.h |
163 | header-y += video_encoder.h | 162 | header-y += video_encoder.h |
164 | header-y += videotext.h | 163 | header-y += videotext.h |
165 | header-y += vt.h | 164 | header-y += vt.h |
166 | header-y += wavefront.h | ||
167 | header-y += wireless.h | 165 | header-y += wireless.h |
168 | header-y += xattr.h | 166 | header-y += xattr.h |
169 | header-y += x25.h | 167 | header-y += x25.h |
@@ -337,6 +335,7 @@ unifdef-y += unistd.h | |||
337 | unifdef-y += usb_ch9.h | 335 | unifdef-y += usb_ch9.h |
338 | unifdef-y += usbdevice_fs.h | 336 | unifdef-y += usbdevice_fs.h |
339 | unifdef-y += user.h | 337 | unifdef-y += user.h |
338 | unifdef-y += utsname.h | ||
340 | unifdef-y += videodev2.h | 339 | unifdef-y += videodev2.h |
341 | unifdef-y += videodev.h | 340 | unifdef-y += videodev.h |
342 | unifdef-y += wait.h | 341 | unifdef-y += wait.h |
diff --git a/include/linux/ac97_codec.h b/include/linux/ac97_codec.h index 2ed2fd855133..22eb9367235a 100644 --- a/include/linux/ac97_codec.h +++ b/include/linux/ac97_codec.h | |||
@@ -331,8 +331,6 @@ extern int ac97_read_proc (char *page_out, char **start, off_t off, | |||
331 | extern int ac97_probe_codec(struct ac97_codec *); | 331 | extern int ac97_probe_codec(struct ac97_codec *); |
332 | extern unsigned int ac97_set_adc_rate(struct ac97_codec *codec, unsigned int rate); | 332 | extern unsigned int ac97_set_adc_rate(struct ac97_codec *codec, unsigned int rate); |
333 | extern unsigned int ac97_set_dac_rate(struct ac97_codec *codec, unsigned int rate); | 333 | extern unsigned int ac97_set_dac_rate(struct ac97_codec *codec, unsigned int rate); |
334 | extern int ac97_save_state(struct ac97_codec *codec); | ||
335 | extern int ac97_restore_state(struct ac97_codec *codec); | ||
336 | 334 | ||
337 | extern struct ac97_codec *ac97_alloc_codec(void); | 335 | extern struct ac97_codec *ac97_alloc_codec(void); |
338 | extern void ac97_release_codec(struct ac97_codec *codec); | 336 | extern void ac97_release_codec(struct ac97_codec *codec); |
@@ -346,9 +344,6 @@ struct ac97_driver { | |||
346 | void (*remove) (struct ac97_codec *codec, struct ac97_driver *driver); | 344 | void (*remove) (struct ac97_codec *codec, struct ac97_driver *driver); |
347 | }; | 345 | }; |
348 | 346 | ||
349 | extern int ac97_register_driver(struct ac97_driver *driver); | ||
350 | extern void ac97_unregister_driver(struct ac97_driver *driver); | ||
351 | |||
352 | /* quirk types */ | 347 | /* quirk types */ |
353 | enum { | 348 | enum { |
354 | AC97_TUNE_DEFAULT = -1, /* use default from quirk list (not valid in list) */ | 349 | AC97_TUNE_DEFAULT = -1, /* use default from quirk list (not valid in list) */ |
diff --git a/include/linux/aio_abi.h b/include/linux/aio_abi.h index 3466b1d0ffd2..e3ca0a485cc6 100644 --- a/include/linux/aio_abi.h +++ b/include/linux/aio_abi.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/aio_abi.h | 1 | /* include/linux/aio_abi.h |
2 | * | 2 | * |
3 | * Copyright 2000,2001,2002 Red Hat. | 3 | * Copyright 2000,2001,2002 Red Hat. |
4 | * | 4 | * |
diff --git a/include/linux/audit.h b/include/linux/audit.h index c3aa09751814..b2ca666d9997 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -75,7 +75,7 @@ | |||
75 | #define AUDIT_DAEMON_CONFIG 1203 /* Daemon config change */ | 75 | #define AUDIT_DAEMON_CONFIG 1203 /* Daemon config change */ |
76 | 76 | ||
77 | #define AUDIT_SYSCALL 1300 /* Syscall event */ | 77 | #define AUDIT_SYSCALL 1300 /* Syscall event */ |
78 | #define AUDIT_FS_WATCH 1301 /* Filesystem watch event */ | 78 | /* #define AUDIT_FS_WATCH 1301 * Deprecated */ |
79 | #define AUDIT_PATH 1302 /* Filename path information */ | 79 | #define AUDIT_PATH 1302 /* Filename path information */ |
80 | #define AUDIT_IPC 1303 /* IPC record */ | 80 | #define AUDIT_IPC 1303 /* IPC record */ |
81 | #define AUDIT_SOCKETCALL 1304 /* sys_socketcall arguments */ | 81 | #define AUDIT_SOCKETCALL 1304 /* sys_socketcall arguments */ |
@@ -88,6 +88,7 @@ | |||
88 | #define AUDIT_MQ_SENDRECV 1313 /* POSIX MQ send/receive record type */ | 88 | #define AUDIT_MQ_SENDRECV 1313 /* POSIX MQ send/receive record type */ |
89 | #define AUDIT_MQ_NOTIFY 1314 /* POSIX MQ notify record type */ | 89 | #define AUDIT_MQ_NOTIFY 1314 /* POSIX MQ notify record type */ |
90 | #define AUDIT_MQ_GETSETATTR 1315 /* POSIX MQ get/set attribute record type */ | 90 | #define AUDIT_MQ_GETSETATTR 1315 /* POSIX MQ get/set attribute record type */ |
91 | #define AUDIT_KERNEL_OTHER 1316 /* For use by 3rd party modules */ | ||
91 | 92 | ||
92 | #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ | 93 | #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ |
93 | #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ | 94 | #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ |
diff --git a/include/linux/awe_voice.h b/include/linux/awe_voice.h index 4bf9f33048e2..bf33f17bea99 100644 --- a/include/linux/awe_voice.h +++ b/include/linux/awe_voice.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * sound/awe_voice.h | 2 | * include/linux/awe_voice.h |
3 | * | 3 | * |
4 | * Voice information definitions for the low level driver for the | 4 | * Voice information definitions for the low level driver for the |
5 | * AWE32/SB32/AWE64 wave table synth. | 5 | * AWE32/SB32/AWE64 wave table synth. |
diff --git a/include/linux/compat.h b/include/linux/compat.h index 9760753e662b..ef5cd192784c 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <asm/compat.h> | 14 | #include <asm/compat.h> |
15 | #include <asm/siginfo.h> | 15 | #include <asm/siginfo.h> |
16 | #include <asm/signal.h> | ||
16 | 17 | ||
17 | #define compat_jiffies_to_clock_t(x) \ | 18 | #define compat_jiffies_to_clock_t(x) \ |
18 | (((unsigned long)(x) * COMPAT_USER_HZ) / HZ) | 19 | (((unsigned long)(x) * COMPAT_USER_HZ) / HZ) |
@@ -227,6 +228,7 @@ static inline int compat_timespec_compare(struct compat_timespec *lhs, | |||
227 | asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp); | 228 | asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp); |
228 | 229 | ||
229 | extern int compat_printk(const char *fmt, ...); | 230 | extern int compat_printk(const char *fmt, ...); |
231 | extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat); | ||
230 | 232 | ||
231 | #endif /* CONFIG_COMPAT */ | 233 | #endif /* CONFIG_COMPAT */ |
232 | #endif /* _LINUX_COMPAT_H */ | 234 | #endif /* _LINUX_COMPAT_H */ |
diff --git a/include/linux/compat_ioctl.h b/include/linux/compat_ioctl.h index d5b7abc4f409..4e1663d7691e 100644 --- a/include/linux/compat_ioctl.h +++ b/include/linux/compat_ioctl.h | |||
@@ -122,10 +122,10 @@ COMPATIBLE_IOCTL(PROTECT_ARRAY) | |||
122 | ULONG_IOCTL(HOT_ADD_DISK) | 122 | ULONG_IOCTL(HOT_ADD_DISK) |
123 | ULONG_IOCTL(SET_DISK_FAULTY) | 123 | ULONG_IOCTL(SET_DISK_FAULTY) |
124 | COMPATIBLE_IOCTL(RUN_ARRAY) | 124 | COMPATIBLE_IOCTL(RUN_ARRAY) |
125 | ULONG_IOCTL(START_ARRAY) | ||
126 | COMPATIBLE_IOCTL(STOP_ARRAY) | 125 | COMPATIBLE_IOCTL(STOP_ARRAY) |
127 | COMPATIBLE_IOCTL(STOP_ARRAY_RO) | 126 | COMPATIBLE_IOCTL(STOP_ARRAY_RO) |
128 | COMPATIBLE_IOCTL(RESTART_ARRAY_RW) | 127 | COMPATIBLE_IOCTL(RESTART_ARRAY_RW) |
128 | ULONG_IOCTL(SET_BITMAP_FILE) | ||
129 | /* DM */ | 129 | /* DM */ |
130 | COMPATIBLE_IOCTL(DM_VERSION_32) | 130 | COMPATIBLE_IOCTL(DM_VERSION_32) |
131 | COMPATIBLE_IOCTL(DM_REMOVE_ALL_32) | 131 | COMPATIBLE_IOCTL(DM_REMOVE_ALL_32) |
diff --git a/include/linux/console.h b/include/linux/console.h index 76a1807726eb..7d0420274de0 100644 --- a/include/linux/console.h +++ b/include/linux/console.h | |||
@@ -129,6 +129,9 @@ static inline void suspend_console(void) {} | |||
129 | static inline void resume_console(void) {} | 129 | static inline void resume_console(void) {} |
130 | #endif /* CONFIG_DISABLE_CONSOLE_SUSPEND */ | 130 | #endif /* CONFIG_DISABLE_CONSOLE_SUSPEND */ |
131 | 131 | ||
132 | int mda_console_init(void); | ||
133 | void prom_con_init(void); | ||
134 | |||
132 | /* Some debug stub to catch some of the obvious races in the VT code */ | 135 | /* Some debug stub to catch some of the obvious races in the VT code */ |
133 | #if 1 | 136 | #if 1 |
134 | #define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() && !oops_in_progress) | 137 | #define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() && !oops_in_progress) |
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h index 25423f79bf9f..ed6c0fee1ac7 100644 --- a/include/linux/console_struct.h +++ b/include/linux/console_struct.h | |||
@@ -54,7 +54,7 @@ struct vc_data { | |||
54 | struct tty_struct *vc_tty; /* TTY we are attached to */ | 54 | struct tty_struct *vc_tty; /* TTY we are attached to */ |
55 | /* data for manual vt switching */ | 55 | /* data for manual vt switching */ |
56 | struct vt_mode vt_mode; | 56 | struct vt_mode vt_mode; |
57 | int vt_pid; | 57 | struct pid *vt_pid; |
58 | int vt_newvt; | 58 | int vt_newvt; |
59 | wait_queue_head_t paste_wait; | 59 | wait_queue_head_t paste_wait; |
60 | /* mode flags */ | 60 | /* mode flags */ |
diff --git a/include/linux/consolemap.h b/include/linux/consolemap.h index 65842efc1b70..82c9a1f11020 100644 --- a/include/linux/consolemap.h +++ b/include/linux/consolemap.h | |||
@@ -13,3 +13,4 @@ struct vc_data; | |||
13 | extern unsigned char inverse_translate(struct vc_data *conp, int glyph); | 13 | extern unsigned char inverse_translate(struct vc_data *conp, int glyph); |
14 | extern unsigned short *set_translate(int m, struct vc_data *vc); | 14 | extern unsigned short *set_translate(int m, struct vc_data *vc); |
15 | extern int conv_uni_to_pc(struct vc_data *conp, long ucs); | 15 | extern int conv_uni_to_pc(struct vc_data *conp, long ucs); |
16 | void console_map_init(void); | ||
diff --git a/include/linux/debug_locks.h b/include/linux/debug_locks.h index 88dafa246d87..952bee79a8f3 100644 --- a/include/linux/debug_locks.h +++ b/include/linux/debug_locks.h | |||
@@ -43,6 +43,8 @@ extern int debug_locks_off(void); | |||
43 | # define locking_selftest() do { } while (0) | 43 | # define locking_selftest() do { } while (0) |
44 | #endif | 44 | #endif |
45 | 45 | ||
46 | struct task_struct; | ||
47 | |||
46 | #ifdef CONFIG_LOCKDEP | 48 | #ifdef CONFIG_LOCKDEP |
47 | extern void debug_show_all_locks(void); | 49 | extern void debug_show_all_locks(void); |
48 | extern void debug_show_held_locks(struct task_struct *task); | 50 | extern void debug_show_held_locks(struct task_struct *task); |
diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index e3d1c33d1558..03ef41c1eaac 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
@@ -55,8 +55,10 @@ typedef int (*dm_endio_fn) (struct dm_target *ti, | |||
55 | struct bio *bio, int error, | 55 | struct bio *bio, int error, |
56 | union map_info *map_context); | 56 | union map_info *map_context); |
57 | 57 | ||
58 | typedef void (*dm_flush_fn) (struct dm_target *ti); | ||
58 | typedef void (*dm_presuspend_fn) (struct dm_target *ti); | 59 | typedef void (*dm_presuspend_fn) (struct dm_target *ti); |
59 | typedef void (*dm_postsuspend_fn) (struct dm_target *ti); | 60 | typedef void (*dm_postsuspend_fn) (struct dm_target *ti); |
61 | typedef int (*dm_preresume_fn) (struct dm_target *ti); | ||
60 | typedef void (*dm_resume_fn) (struct dm_target *ti); | 62 | typedef void (*dm_resume_fn) (struct dm_target *ti); |
61 | 63 | ||
62 | typedef int (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, | 64 | typedef int (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, |
@@ -64,9 +66,18 @@ typedef int (*dm_status_fn) (struct dm_target *ti, status_type_t status_type, | |||
64 | 66 | ||
65 | typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv); | 67 | typedef int (*dm_message_fn) (struct dm_target *ti, unsigned argc, char **argv); |
66 | 68 | ||
69 | typedef int (*dm_ioctl_fn) (struct dm_target *ti, struct inode *inode, | ||
70 | struct file *filp, unsigned int cmd, | ||
71 | unsigned long arg); | ||
72 | |||
67 | void dm_error(const char *message); | 73 | void dm_error(const char *message); |
68 | 74 | ||
69 | /* | 75 | /* |
76 | * Combine device limits. | ||
77 | */ | ||
78 | void dm_set_device_limits(struct dm_target *ti, struct block_device *bdev); | ||
79 | |||
80 | /* | ||
70 | * Constructors should call these functions to ensure destination devices | 81 | * Constructors should call these functions to ensure destination devices |
71 | * are opened/closed correctly. | 82 | * are opened/closed correctly. |
72 | * FIXME: too many arguments. | 83 | * FIXME: too many arguments. |
@@ -86,11 +97,14 @@ struct target_type { | |||
86 | dm_dtr_fn dtr; | 97 | dm_dtr_fn dtr; |
87 | dm_map_fn map; | 98 | dm_map_fn map; |
88 | dm_endio_fn end_io; | 99 | dm_endio_fn end_io; |
100 | dm_flush_fn flush; | ||
89 | dm_presuspend_fn presuspend; | 101 | dm_presuspend_fn presuspend; |
90 | dm_postsuspend_fn postsuspend; | 102 | dm_postsuspend_fn postsuspend; |
103 | dm_preresume_fn preresume; | ||
91 | dm_resume_fn resume; | 104 | dm_resume_fn resume; |
92 | dm_status_fn status; | 105 | dm_status_fn status; |
93 | dm_message_fn message; | 106 | dm_message_fn message; |
107 | dm_ioctl_fn ioctl; | ||
94 | }; | 108 | }; |
95 | 109 | ||
96 | struct io_restrictions { | 110 | struct io_restrictions { |
diff --git a/include/linux/dm-ioctl.h b/include/linux/dm-ioctl.h index 9623bb625090..8853fc4d1c5e 100644 --- a/include/linux/dm-ioctl.h +++ b/include/linux/dm-ioctl.h | |||
@@ -285,9 +285,9 @@ typedef char ioctl_struct[308]; | |||
285 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) | 285 | #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) |
286 | 286 | ||
287 | #define DM_VERSION_MAJOR 4 | 287 | #define DM_VERSION_MAJOR 4 |
288 | #define DM_VERSION_MINOR 7 | 288 | #define DM_VERSION_MINOR 10 |
289 | #define DM_VERSION_PATCHLEVEL 0 | 289 | #define DM_VERSION_PATCHLEVEL 0 |
290 | #define DM_VERSION_EXTRA "-ioctl (2006-06-24)" | 290 | #define DM_VERSION_EXTRA "-ioctl (2006-09-14)" |
291 | 291 | ||
292 | /* Status bits */ | 292 | /* Status bits */ |
293 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ | 293 | #define DM_READONLY_FLAG (1 << 0) /* In/Out */ |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 2f335e966011..3e69241e6a81 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define _LINUX_FB_H | 2 | #define _LINUX_FB_H |
3 | 3 | ||
4 | #include <asm/types.h> | 4 | #include <asm/types.h> |
5 | #include <linux/i2c.h> | ||
5 | 6 | ||
6 | /* Definitions of frame buffers */ | 7 | /* Definitions of frame buffers */ |
7 | 8 | ||
@@ -775,6 +776,7 @@ struct fb_info { | |||
775 | struct fb_ops *fbops; | 776 | struct fb_ops *fbops; |
776 | struct device *device; | 777 | struct device *device; |
777 | struct class_device *class_device; /* sysfs per device attrs */ | 778 | struct class_device *class_device; /* sysfs per device attrs */ |
779 | int class_flag; /* private sysfs flags */ | ||
778 | #ifdef CONFIG_FB_TILEBLITTING | 780 | #ifdef CONFIG_FB_TILEBLITTING |
779 | struct fb_tile_ops *tileops; /* Tile Blitting */ | 781 | struct fb_tile_ops *tileops; /* Tile Blitting */ |
780 | #endif | 782 | #endif |
@@ -940,6 +942,7 @@ extern void fb_edid_to_monspecs(unsigned char *edid, | |||
940 | struct fb_monspecs *specs); | 942 | struct fb_monspecs *specs); |
941 | extern void fb_destroy_modedb(struct fb_videomode *modedb); | 943 | extern void fb_destroy_modedb(struct fb_videomode *modedb); |
942 | extern int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb); | 944 | extern int fb_find_mode_cvt(struct fb_videomode *mode, int margins, int rb); |
945 | extern unsigned char *fb_ddc_read(struct i2c_adapter *adapter); | ||
943 | 946 | ||
944 | /* drivers/video/modedb.c */ | 947 | /* drivers/video/modedb.c */ |
945 | #define VESA_MODEDB_SIZE 34 | 948 | #define VESA_MODEDB_SIZE 34 |
diff --git a/include/linux/fs.h b/include/linux/fs.h index bc0e645abb80..34406ed467c3 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -686,7 +686,8 @@ extern struct block_device *I_BDEV(struct inode *inode); | |||
686 | 686 | ||
687 | struct fown_struct { | 687 | struct fown_struct { |
688 | rwlock_t lock; /* protects pid, uid, euid fields */ | 688 | rwlock_t lock; /* protects pid, uid, euid fields */ |
689 | int pid; /* pid or -pgrp where SIGIO should be sent */ | 689 | struct pid *pid; /* pid or -pgrp where SIGIO should be sent */ |
690 | enum pid_type pid_type; /* Kind of process group SIGIO should be sent to */ | ||
690 | uid_t uid, euid; /* uid/euid of process setting the owner */ | 691 | uid_t uid, euid; /* uid/euid of process setting the owner */ |
691 | int signum; /* posix.1b rt signal to be delivered on IO */ | 692 | int signum; /* posix.1b rt signal to be delivered on IO */ |
692 | }; | 693 | }; |
@@ -882,8 +883,10 @@ extern void kill_fasync(struct fasync_struct **, int, int); | |||
882 | /* only for net: no internal synchronization */ | 883 | /* only for net: no internal synchronization */ |
883 | extern void __kill_fasync(struct fasync_struct *, int, int); | 884 | extern void __kill_fasync(struct fasync_struct *, int, int); |
884 | 885 | ||
886 | extern int __f_setown(struct file *filp, struct pid *, enum pid_type, int force); | ||
885 | extern int f_setown(struct file *filp, unsigned long arg, int force); | 887 | extern int f_setown(struct file *filp, unsigned long arg, int force); |
886 | extern void f_delown(struct file *filp); | 888 | extern void f_delown(struct file *filp); |
889 | extern pid_t f_getown(struct file *filp); | ||
887 | extern int send_sigurg(struct fown_struct *fown); | 890 | extern int send_sigurg(struct fown_struct *fown); |
888 | 891 | ||
889 | /* | 892 | /* |
@@ -1048,7 +1051,7 @@ int generic_osync_inode(struct inode *, struct address_space *, int); | |||
1048 | * This allows the kernel to read directories into kernel space or | 1051 | * This allows the kernel to read directories into kernel space or |
1049 | * to have different dirent layouts depending on the binary type. | 1052 | * to have different dirent layouts depending on the binary type. |
1050 | */ | 1053 | */ |
1051 | typedef int (*filldir_t)(void *, const char *, int, loff_t, ino_t, unsigned); | 1054 | typedef int (*filldir_t)(void *, const char *, int, loff_t, u64, unsigned); |
1052 | 1055 | ||
1053 | struct block_device_operations { | 1056 | struct block_device_operations { |
1054 | int (*open) (struct inode *, struct file *); | 1057 | int (*open) (struct inode *, struct file *); |
@@ -1522,6 +1525,9 @@ extern const struct file_operations def_fifo_fops; | |||
1522 | #ifdef CONFIG_BLOCK | 1525 | #ifdef CONFIG_BLOCK |
1523 | extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); | 1526 | extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); |
1524 | extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long); | 1527 | extern int blkdev_ioctl(struct inode *, struct file *, unsigned, unsigned long); |
1528 | extern int blkdev_driver_ioctl(struct inode *inode, struct file *file, | ||
1529 | struct gendisk *disk, unsigned cmd, | ||
1530 | unsigned long arg); | ||
1525 | extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); | 1531 | extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); |
1526 | extern int blkdev_get(struct block_device *, mode_t, unsigned); | 1532 | extern int blkdev_get(struct block_device *, mode_t, unsigned); |
1527 | extern int blkdev_put(struct block_device *); | 1533 | extern int blkdev_put(struct block_device *); |
diff --git a/include/linux/fs_enet_pd.h b/include/linux/fs_enet_pd.h index 74ed35a00a94..543cd3cd9e77 100644 --- a/include/linux/fs_enet_pd.h +++ b/include/linux/fs_enet_pd.h | |||
@@ -55,6 +55,30 @@ static inline int fs_get_scc_index(enum fs_id id) | |||
55 | return -1; | 55 | return -1; |
56 | } | 56 | } |
57 | 57 | ||
58 | static inline int fs_fec_index2id(int index) | ||
59 | { | ||
60 | int id = fsid_fec1 + index - 1; | ||
61 | if (id >= fsid_fec1 && id <= fsid_fec2) | ||
62 | return id; | ||
63 | return FS_MAX_INDEX; | ||
64 | } | ||
65 | |||
66 | static inline int fs_fcc_index2id(int index) | ||
67 | { | ||
68 | int id = fsid_fcc1 + index - 1; | ||
69 | if (id >= fsid_fcc1 && id <= fsid_fcc3) | ||
70 | return id; | ||
71 | return FS_MAX_INDEX; | ||
72 | } | ||
73 | |||
74 | static inline int fs_scc_index2id(int index) | ||
75 | { | ||
76 | int id = fsid_scc1 + index - 1; | ||
77 | if (id >= fsid_scc1 && id <= fsid_scc4) | ||
78 | return id; | ||
79 | return FS_MAX_INDEX; | ||
80 | } | ||
81 | |||
58 | enum fs_mii_method { | 82 | enum fs_mii_method { |
59 | fsmii_fixed, | 83 | fsmii_fixed, |
60 | fsmii_fec, | 84 | fsmii_fec, |
@@ -87,18 +111,21 @@ struct fs_mii_bb_platform_info { | |||
87 | }; | 111 | }; |
88 | 112 | ||
89 | struct fs_platform_info { | 113 | struct fs_platform_info { |
90 | 114 | ||
91 | void(*init_ioports)(void); | 115 | void(*init_ioports)(struct fs_platform_info *); |
92 | /* device specific information */ | 116 | /* device specific information */ |
93 | int fs_no; /* controller index */ | 117 | int fs_no; /* controller index */ |
118 | char fs_type[4]; /* controller type */ | ||
94 | 119 | ||
95 | u32 cp_page; /* CPM page */ | 120 | u32 cp_page; /* CPM page */ |
96 | u32 cp_block; /* CPM sblock */ | 121 | u32 cp_block; /* CPM sblock */ |
97 | 122 | ||
98 | u32 clk_trx; /* some stuff for pins & mux configuration*/ | 123 | u32 clk_trx; /* some stuff for pins & mux configuration*/ |
124 | u32 clk_rx; | ||
125 | u32 clk_tx; | ||
99 | u32 clk_route; | 126 | u32 clk_route; |
100 | u32 clk_mask; | 127 | u32 clk_mask; |
101 | 128 | ||
102 | u32 mem_offset; | 129 | u32 mem_offset; |
103 | u32 dpram_offset; | 130 | u32 dpram_offset; |
104 | u32 fcc_regs_c; | 131 | u32 fcc_regs_c; |
@@ -124,4 +151,16 @@ struct fs_mii_fec_platform_info { | |||
124 | u32 irq[32]; | 151 | u32 irq[32]; |
125 | u32 mii_speed; | 152 | u32 mii_speed; |
126 | }; | 153 | }; |
154 | |||
155 | static inline int fs_get_id(struct fs_platform_info *fpi) | ||
156 | { | ||
157 | if(strstr(fpi->fs_type, "SCC")) | ||
158 | return fs_scc_index2id(fpi->fs_no); | ||
159 | if(strstr(fpi->fs_type, "FCC")) | ||
160 | return fs_fcc_index2id(fpi->fs_no); | ||
161 | if(strstr(fpi->fs_type, "FEC")) | ||
162 | return fs_fec_index2id(fpi->fs_no); | ||
163 | return fpi->fs_no; | ||
164 | } | ||
165 | |||
127 | #endif | 166 | #endif |
diff --git a/include/linux/fs_uart_pd.h b/include/linux/fs_uart_pd.h index f5975126b712..809bb9ffc788 100644 --- a/include/linux/fs_uart_pd.h +++ b/include/linux/fs_uart_pd.h | |||
@@ -46,15 +46,27 @@ static inline int fs_uart_id_fsid2smc(int id) | |||
46 | } | 46 | } |
47 | 47 | ||
48 | struct fs_uart_platform_info { | 48 | struct fs_uart_platform_info { |
49 | void(*init_ioports)(void); | 49 | void(*init_ioports)(struct fs_uart_platform_info *); |
50 | /* device specific information */ | 50 | /* device specific information */ |
51 | int fs_no; /* controller index */ | 51 | int fs_no; /* controller index */ |
52 | char fs_type[4]; /* controller type */ | ||
52 | u32 uart_clk; | 53 | u32 uart_clk; |
53 | u8 tx_num_fifo; | 54 | u8 tx_num_fifo; |
54 | u8 tx_buf_size; | 55 | u8 tx_buf_size; |
55 | u8 rx_num_fifo; | 56 | u8 rx_num_fifo; |
56 | u8 rx_buf_size; | 57 | u8 rx_buf_size; |
57 | u8 brg; | 58 | u8 brg; |
59 | u8 clk_rx; | ||
60 | u8 clk_tx; | ||
58 | }; | 61 | }; |
59 | 62 | ||
63 | static inline int fs_uart_get_id(struct fs_uart_platform_info *fpi) | ||
64 | { | ||
65 | if(strstr(fpi->fs_type, "SMC")) | ||
66 | return fs_uart_id_smc2fsid(fpi->fs_no); | ||
67 | if(strstr(fpi->fs_type, "SCC")) | ||
68 | return fs_uart_id_scc2fsid(fpi->fs_no); | ||
69 | return fpi->fs_no; | ||
70 | } | ||
71 | |||
60 | #endif | 72 | #endif |
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h index 16fbe59edeb1..3da29e2d524a 100644 --- a/include/linux/fsl_devices.h +++ b/include/linux/fsl_devices.h | |||
@@ -46,18 +46,17 @@ | |||
46 | 46 | ||
47 | struct gianfar_platform_data { | 47 | struct gianfar_platform_data { |
48 | /* device specific information */ | 48 | /* device specific information */ |
49 | u32 device_flags; | 49 | u32 device_flags; |
50 | |||
51 | /* board specific information */ | 50 | /* board specific information */ |
52 | u32 board_flags; | 51 | u32 board_flags; |
53 | u32 bus_id; | 52 | u32 bus_id; |
54 | u32 phy_id; | 53 | u32 phy_id; |
55 | u8 mac_addr[6]; | 54 | u8 mac_addr[6]; |
56 | }; | 55 | }; |
57 | 56 | ||
58 | struct gianfar_mdio_data { | 57 | struct gianfar_mdio_data { |
59 | /* board specific information */ | 58 | /* board specific information */ |
60 | int irq[32]; | 59 | int irq[32]; |
61 | }; | 60 | }; |
62 | 61 | ||
63 | /* Flags related to gianfar device features */ | 62 | /* Flags related to gianfar device features */ |
@@ -76,14 +75,13 @@ struct gianfar_mdio_data { | |||
76 | 75 | ||
77 | struct fsl_i2c_platform_data { | 76 | struct fsl_i2c_platform_data { |
78 | /* device specific information */ | 77 | /* device specific information */ |
79 | u32 device_flags; | 78 | u32 device_flags; |
80 | }; | 79 | }; |
81 | 80 | ||
82 | /* Flags related to I2C device features */ | 81 | /* Flags related to I2C device features */ |
83 | #define FSL_I2C_DEV_SEPARATE_DFSRR 0x00000001 | 82 | #define FSL_I2C_DEV_SEPARATE_DFSRR 0x00000001 |
84 | #define FSL_I2C_DEV_CLOCK_5200 0x00000002 | 83 | #define FSL_I2C_DEV_CLOCK_5200 0x00000002 |
85 | 84 | ||
86 | |||
87 | enum fsl_usb2_operating_modes { | 85 | enum fsl_usb2_operating_modes { |
88 | FSL_USB2_MPH_HOST, | 86 | FSL_USB2_MPH_HOST, |
89 | FSL_USB2_DR_HOST, | 87 | FSL_USB2_DR_HOST, |
@@ -101,9 +99,9 @@ enum fsl_usb2_phy_modes { | |||
101 | 99 | ||
102 | struct fsl_usb2_platform_data { | 100 | struct fsl_usb2_platform_data { |
103 | /* board specific information */ | 101 | /* board specific information */ |
104 | enum fsl_usb2_operating_modes operating_mode; | 102 | enum fsl_usb2_operating_modes operating_mode; |
105 | enum fsl_usb2_phy_modes phy_mode; | 103 | enum fsl_usb2_phy_modes phy_mode; |
106 | unsigned int port_enables; | 104 | unsigned int port_enables; |
107 | }; | 105 | }; |
108 | 106 | ||
109 | /* Flags in fsl_usb2_mph_platform_data */ | 107 | /* Flags in fsl_usb2_mph_platform_data */ |
@@ -121,5 +119,44 @@ struct fsl_spi_platform_data { | |||
121 | u32 sysclk; | 119 | u32 sysclk; |
122 | }; | 120 | }; |
123 | 121 | ||
124 | #endif /* _FSL_DEVICE_H_ */ | 122 | /* Ethernet interface (phy management and speed) |
125 | #endif /* __KERNEL__ */ | 123 | */ |
124 | enum enet_interface { | ||
125 | ENET_10_MII, /* 10 Base T, MII interface */ | ||
126 | ENET_10_RMII, /* 10 Base T, RMII interface */ | ||
127 | ENET_10_RGMII, /* 10 Base T, RGMII interface */ | ||
128 | ENET_100_MII, /* 100 Base T, MII interface */ | ||
129 | ENET_100_RMII, /* 100 Base T, RMII interface */ | ||
130 | ENET_100_RGMII, /* 100 Base T, RGMII interface */ | ||
131 | ENET_1000_GMII, /* 1000 Base T, GMII interface */ | ||
132 | ENET_1000_RGMII, /* 1000 Base T, RGMII interface */ | ||
133 | ENET_1000_TBI, /* 1000 Base T, TBI interface */ | ||
134 | ENET_1000_RTBI /* 1000 Base T, RTBI interface */ | ||
135 | }; | ||
136 | |||
137 | struct ucc_geth_platform_data { | ||
138 | /* device specific information */ | ||
139 | u32 device_flags; | ||
140 | u32 phy_reg_addr; | ||
141 | |||
142 | /* board specific information */ | ||
143 | u32 board_flags; | ||
144 | u8 rx_clock; | ||
145 | u8 tx_clock; | ||
146 | u32 phy_id; | ||
147 | enum enet_interface phy_interface; | ||
148 | u32 phy_interrupt; | ||
149 | u8 mac_addr[6]; | ||
150 | }; | ||
151 | |||
152 | /* Flags related to UCC Gigabit Ethernet device features */ | ||
153 | #define FSL_UGETH_DEV_HAS_GIGABIT 0x00000001 | ||
154 | #define FSL_UGETH_DEV_HAS_COALESCE 0x00000002 | ||
155 | #define FSL_UGETH_DEV_HAS_RMON 0x00000004 | ||
156 | |||
157 | /* Flags in ucc_geth_platform_data */ | ||
158 | #define FSL_UGETH_BRD_HAS_PHY_INTR 0x00000001 | ||
159 | /* if not set use a timer */ | ||
160 | |||
161 | #endif /* _FSL_DEVICE_H_ */ | ||
162 | #endif /* __KERNEL__ */ | ||
diff --git a/include/linux/genalloc.h b/include/linux/genalloc.h index 690c42803d2e..9869ef3674ac 100644 --- a/include/linux/genalloc.h +++ b/include/linux/genalloc.h | |||
@@ -31,5 +31,6 @@ struct gen_pool_chunk { | |||
31 | 31 | ||
32 | extern struct gen_pool *gen_pool_create(int, int); | 32 | extern struct gen_pool *gen_pool_create(int, int); |
33 | extern int gen_pool_add(struct gen_pool *, unsigned long, size_t, int); | 33 | extern int gen_pool_add(struct gen_pool *, unsigned long, size_t, int); |
34 | extern void gen_pool_destroy(struct gen_pool *); | ||
34 | extern unsigned long gen_pool_alloc(struct gen_pool *, size_t); | 35 | extern unsigned long gen_pool_alloc(struct gen_pool *, size_t); |
35 | extern void gen_pool_free(struct gen_pool *, unsigned long, size_t); | 36 | extern void gen_pool_free(struct gen_pool *, unsigned long, size_t); |
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 50d8b5744cf6..612472aaa79c 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -28,11 +28,16 @@ | |||
28 | 28 | ||
29 | #ifndef HARDIRQ_BITS | 29 | #ifndef HARDIRQ_BITS |
30 | #define HARDIRQ_BITS 12 | 30 | #define HARDIRQ_BITS 12 |
31 | |||
32 | #ifndef MAX_HARDIRQS_PER_CPU | ||
33 | #define MAX_HARDIRQS_PER_CPU NR_IRQS | ||
34 | #endif | ||
35 | |||
31 | /* | 36 | /* |
32 | * The hardirq mask has to be large enough to have space for potentially | 37 | * The hardirq mask has to be large enough to have space for potentially |
33 | * all IRQ sources in the system nesting on a single CPU. | 38 | * all IRQ sources in the system nesting on a single CPU. |
34 | */ | 39 | */ |
35 | #if (1 << HARDIRQ_BITS) < NR_IRQS | 40 | #if (1 << HARDIRQ_BITS) < MAX_HARDIRQS_PER_CPU |
36 | # error HARDIRQ_BITS is too low! | 41 | # error HARDIRQ_BITS is too low! |
37 | #endif | 42 | #endif |
38 | #endif | 43 | #endif |
diff --git a/include/linux/harrier_defs.h b/include/linux/harrier_defs.h index 685b252e16cc..efef11db790f 100644 --- a/include/linux/harrier_defs.h +++ b/include/linux/harrier_defs.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * asm-ppc/harrier_defs.h | 2 | * include/linux/harrier_defs.h |
3 | * | 3 | * |
4 | * Definitions for Motorola MCG Harrier North Bridge & Memory controller | 4 | * Definitions for Motorola MCG Harrier North Bridge & Memory controller |
5 | * | 5 | * |
diff --git a/include/linux/htirq.h b/include/linux/htirq.h new file mode 100644 index 000000000000..1f15ce279a23 --- /dev/null +++ b/include/linux/htirq.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef LINUX_HTIRQ_H | ||
2 | #define LINUX_HTIRQ_H | ||
3 | |||
4 | /* Helper functions.. */ | ||
5 | void write_ht_irq_low(unsigned int irq, u32 data); | ||
6 | void write_ht_irq_high(unsigned int irq, u32 data); | ||
7 | u32 read_ht_irq_low(unsigned int irq); | ||
8 | u32 read_ht_irq_high(unsigned int irq); | ||
9 | void mask_ht_irq(unsigned int irq); | ||
10 | void unmask_ht_irq(unsigned int irq); | ||
11 | |||
12 | /* The arch hook for getting things started */ | ||
13 | int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev); | ||
14 | |||
15 | #endif /* LINUX_HTIRQ_H */ | ||
diff --git a/include/linux/ide.h b/include/linux/ide.h index 99620451d958..07d8d725541f 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -251,7 +251,8 @@ static inline void ide_std_init_ports(hw_regs_t *hw, | |||
251 | 251 | ||
252 | #include <asm/ide.h> | 252 | #include <asm/ide.h> |
253 | 253 | ||
254 | #ifndef MAX_HWIFS | 254 | #if !defined(MAX_HWIFS) || defined(CONFIG_EMBEDDED) |
255 | #undef MAX_HWIFS | ||
255 | #define MAX_HWIFS CONFIG_IDE_MAX_HWIFS | 256 | #define MAX_HWIFS CONFIG_IDE_MAX_HWIFS |
256 | #endif | 257 | #endif |
257 | 258 | ||
@@ -773,12 +774,13 @@ typedef struct hwif_s { | |||
773 | unsigned long dma_status; /* dma status register */ | 774 | unsigned long dma_status; /* dma status register */ |
774 | unsigned long dma_vendor3; /* dma vendor 3 register */ | 775 | unsigned long dma_vendor3; /* dma vendor 3 register */ |
775 | unsigned long dma_prdtable; /* actual prd table address */ | 776 | unsigned long dma_prdtable; /* actual prd table address */ |
776 | unsigned long dma_base2; /* extended base addr for dma ports */ | ||
777 | 777 | ||
778 | unsigned dma_extra; /* extra addr for dma ports */ | ||
779 | unsigned long config_data; /* for use by chipset-specific code */ | 778 | unsigned long config_data; /* for use by chipset-specific code */ |
780 | unsigned long select_data; /* for use by chipset-specific code */ | 779 | unsigned long select_data; /* for use by chipset-specific code */ |
781 | 780 | ||
781 | unsigned long extra_base; /* extra addr for dma ports */ | ||
782 | unsigned extra_ports; /* number of extra dma ports */ | ||
783 | |||
782 | unsigned noprobe : 1; /* don't probe for this interface */ | 784 | unsigned noprobe : 1; /* don't probe for this interface */ |
783 | unsigned present : 1; /* this interface exists */ | 785 | unsigned present : 1; /* this interface exists */ |
784 | unsigned hold : 1; /* this interface is always present */ | 786 | unsigned hold : 1; /* this interface is always present */ |
@@ -823,6 +825,9 @@ typedef struct hwgroup_s { | |||
823 | unsigned int sleeping : 1; | 825 | unsigned int sleeping : 1; |
824 | /* BOOL: polling active & poll_timeout field valid */ | 826 | /* BOOL: polling active & poll_timeout field valid */ |
825 | unsigned int polling : 1; | 827 | unsigned int polling : 1; |
828 | /* BOOL: in a polling reset situation. Must not trigger another reset yet */ | ||
829 | unsigned int resetting : 1; | ||
830 | |||
826 | /* current drive */ | 831 | /* current drive */ |
827 | ide_drive_t *drive; | 832 | ide_drive_t *drive; |
828 | /* ptr to current hwif in linked-list */ | 833 | /* ptr to current hwif in linked-list */ |
@@ -1190,7 +1195,6 @@ extern int ideprobe_init(void); | |||
1190 | extern void ide_scan_pcibus(int scan_direction) __init; | 1195 | extern void ide_scan_pcibus(int scan_direction) __init; |
1191 | extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner); | 1196 | extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner); |
1192 | #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE) | 1197 | #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE) |
1193 | extern void ide_pci_unregister_driver(struct pci_driver *driver); | ||
1194 | void ide_pci_setup_ports(struct pci_dev *, struct ide_pci_device_s *, int, ata_index_t *); | 1198 | void ide_pci_setup_ports(struct pci_dev *, struct ide_pci_device_s *, int, ata_index_t *); |
1195 | extern void ide_setup_pci_noise (struct pci_dev *dev, struct ide_pci_device_s *d); | 1199 | extern void ide_setup_pci_noise (struct pci_dev *dev, struct ide_pci_device_s *d); |
1196 | 1200 | ||
diff --git a/include/linux/in.h b/include/linux/in.h index d79fc75fa7c2..2619859f6e1b 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
@@ -40,6 +40,7 @@ enum { | |||
40 | 40 | ||
41 | IPPROTO_ESP = 50, /* Encapsulation Security Payload protocol */ | 41 | IPPROTO_ESP = 50, /* Encapsulation Security Payload protocol */ |
42 | IPPROTO_AH = 51, /* Authentication Header protocol */ | 42 | IPPROTO_AH = 51, /* Authentication Header protocol */ |
43 | IPPROTO_BEETPH = 94, /* IP option pseudo header for BEET */ | ||
43 | IPPROTO_PIM = 103, /* Protocol Independent Multicast */ | 44 | IPPROTO_PIM = 103, /* Protocol Independent Multicast */ |
44 | 45 | ||
45 | IPPROTO_COMP = 108, /* Compression Header protocol */ | 46 | IPPROTO_COMP = 108, /* Compression Header protocol */ |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 60aac2cea0cf..33c5daacc743 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -4,7 +4,9 @@ | |||
4 | #include <linux/file.h> | 4 | #include <linux/file.h> |
5 | #include <linux/rcupdate.h> | 5 | #include <linux/rcupdate.h> |
6 | #include <linux/irqflags.h> | 6 | #include <linux/irqflags.h> |
7 | #include <linux/utsname.h> | ||
7 | #include <linux/lockdep.h> | 8 | #include <linux/lockdep.h> |
9 | #include <linux/ipc.h> | ||
8 | 10 | ||
9 | #define INIT_FDTABLE \ | 11 | #define INIT_FDTABLE \ |
10 | { \ | 12 | { \ |
@@ -68,6 +70,15 @@ | |||
68 | .session = 1, \ | 70 | .session = 1, \ |
69 | } | 71 | } |
70 | 72 | ||
73 | extern struct nsproxy init_nsproxy; | ||
74 | #define INIT_NSPROXY(nsproxy) { \ | ||
75 | .count = ATOMIC_INIT(1), \ | ||
76 | .nslock = SPIN_LOCK_UNLOCKED, \ | ||
77 | .uts_ns = &init_uts_ns, \ | ||
78 | .namespace = NULL, \ | ||
79 | INIT_IPC_NS(ipc_ns) \ | ||
80 | } | ||
81 | |||
71 | #define INIT_SIGHAND(sighand) { \ | 82 | #define INIT_SIGHAND(sighand) { \ |
72 | .count = ATOMIC_INIT(1), \ | 83 | .count = ATOMIC_INIT(1), \ |
73 | .action = { { { .sa_handler = NULL, } }, }, \ | 84 | .action = { { { .sa_handler = NULL, } }, }, \ |
@@ -117,6 +128,7 @@ extern struct group_info init_groups; | |||
117 | .files = &init_files, \ | 128 | .files = &init_files, \ |
118 | .signal = &init_signals, \ | 129 | .signal = &init_signals, \ |
119 | .sighand = &init_sighand, \ | 130 | .sighand = &init_sighand, \ |
131 | .nsproxy = &init_nsproxy, \ | ||
120 | .pending = { \ | 132 | .pending = { \ |
121 | .list = LIST_HEAD_INIT(tsk.pending.list), \ | 133 | .list = LIST_HEAD_INIT(tsk.pending.list), \ |
122 | .signal = {{0}}}, \ | 134 | .signal = {{0}}}, \ |
diff --git a/include/linux/input.h b/include/linux/input.h index b3253ab72ff7..5770105471dd 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -349,6 +349,9 @@ struct input_absinfo { | |||
349 | 349 | ||
350 | #define KEY_BATTERY 236 | 350 | #define KEY_BATTERY 236 |
351 | 351 | ||
352 | #define KEY_BLUETOOTH 237 | ||
353 | #define KEY_WLAN 238 | ||
354 | |||
352 | #define KEY_UNKNOWN 240 | 355 | #define KEY_UNKNOWN 240 |
353 | 356 | ||
354 | #define BTN_MISC 0x100 | 357 | #define BTN_MISC 0x100 |
@@ -645,6 +648,7 @@ struct input_absinfo { | |||
645 | #define BUS_USB 0x03 | 648 | #define BUS_USB 0x03 |
646 | #define BUS_HIL 0x04 | 649 | #define BUS_HIL 0x04 |
647 | #define BUS_BLUETOOTH 0x05 | 650 | #define BUS_BLUETOOTH 0x05 |
651 | #define BUS_VIRTUAL 0x06 | ||
648 | 652 | ||
649 | #define BUS_ISA 0x10 | 653 | #define BUS_ISA 0x10 |
650 | #define BUS_I8042 0x11 | 654 | #define BUS_I8042 0x11 |
@@ -667,98 +671,167 @@ struct input_absinfo { | |||
667 | 671 | ||
668 | /* | 672 | /* |
669 | * Structures used in ioctls to upload effects to a device | 673 | * Structures used in ioctls to upload effects to a device |
670 | * The first structures are not passed directly by using ioctls. | 674 | * They are pieces of a bigger structure (called ff_effect) |
671 | * They are sub-structures of the actually sent structure (called ff_effect) | 675 | */ |
676 | |||
677 | /* | ||
678 | * All duration values are expressed in ms. Values above 32767 ms (0x7fff) | ||
679 | * should not be used and have unspecified results. | ||
672 | */ | 680 | */ |
673 | 681 | ||
682 | /** | ||
683 | * struct ff_replay - defines scheduling of the effect | ||
684 | * @length: duration of the effect | ||
685 | * @delay: delay before effect should start playing | ||
686 | */ | ||
674 | struct ff_replay { | 687 | struct ff_replay { |
675 | __u16 length; /* Duration of an effect in ms. All other times are also expressed in ms */ | 688 | __u16 length; |
676 | __u16 delay; /* Time to wait before to start playing an effect */ | 689 | __u16 delay; |
677 | }; | 690 | }; |
678 | 691 | ||
692 | /** | ||
693 | * struct ff_trigger - defines what triggers the effect | ||
694 | * @button: number of the button triggering the effect | ||
695 | * @interval: controls how soon the effect can be re-triggered | ||
696 | */ | ||
679 | struct ff_trigger { | 697 | struct ff_trigger { |
680 | __u16 button; /* Number of button triggering an effect */ | 698 | __u16 button; |
681 | __u16 interval; /* Time to wait before an effect can be re-triggered (ms) */ | 699 | __u16 interval; |
682 | }; | 700 | }; |
683 | 701 | ||
702 | /** | ||
703 | * struct ff_envelope - generic effect envelope | ||
704 | * @attack_length: duration of the attack (ms) | ||
705 | * @attack_level: level at the beginning of the attack | ||
706 | * @fade_length: duration of fade (ms) | ||
707 | * @fade_level: level at the end of fade | ||
708 | * | ||
709 | * The @attack_level and @fade_level are absolute values; when applying | ||
710 | * envelope force-feedback core will convert to positive/negative | ||
711 | * value based on polarity of the default level of the effect. | ||
712 | * Valid range for the attack and fade levels is 0x0000 - 0x7fff | ||
713 | */ | ||
684 | struct ff_envelope { | 714 | struct ff_envelope { |
685 | __u16 attack_length; /* Duration of attack (ms) */ | 715 | __u16 attack_length; |
686 | __u16 attack_level; /* Level at beginning of attack */ | 716 | __u16 attack_level; |
687 | __u16 fade_length; /* Duration of fade (ms) */ | 717 | __u16 fade_length; |
688 | __u16 fade_level; /* Level at end of fade */ | 718 | __u16 fade_level; |
689 | }; | 719 | }; |
690 | 720 | ||
691 | /* FF_CONSTANT */ | 721 | /** |
722 | * struct ff_constant_effect - defines parameters of a constant effect | ||
723 | * @level: strength of the effect; may be negative | ||
724 | * @envelope: envelope data | ||
725 | */ | ||
692 | struct ff_constant_effect { | 726 | struct ff_constant_effect { |
693 | __s16 level; /* Strength of effect. Negative values are OK */ | 727 | __s16 level; |
694 | struct ff_envelope envelope; | 728 | struct ff_envelope envelope; |
695 | }; | 729 | }; |
696 | 730 | ||
697 | /* FF_RAMP */ | 731 | /** |
732 | * struct ff_ramp_effect - defines parameters of a ramp effect | ||
733 | * @start_level: beginning strength of the effect; may be negative | ||
734 | * @end_level: final strength of the effect; may be negative | ||
735 | * @envelope: envelope data | ||
736 | */ | ||
698 | struct ff_ramp_effect { | 737 | struct ff_ramp_effect { |
699 | __s16 start_level; | 738 | __s16 start_level; |
700 | __s16 end_level; | 739 | __s16 end_level; |
701 | struct ff_envelope envelope; | 740 | struct ff_envelope envelope; |
702 | }; | 741 | }; |
703 | 742 | ||
704 | /* FF_SPRING of FF_FRICTION */ | 743 | /** |
744 | * struct ff_condition_effect - defines a spring or friction effect | ||
745 | * @right_saturation: maximum level when joystick moved all way to the right | ||
746 | * @left_saturation: same for the left side | ||
747 | * @right_coeff: controls how fast the force grows when the joystick moves | ||
748 | * to the right | ||
749 | * @left_coeff: same for the left side | ||
750 | * @deadband: size of the dead zone, where no force is produced | ||
751 | * @center: position of the dead zone | ||
752 | */ | ||
705 | struct ff_condition_effect { | 753 | struct ff_condition_effect { |
706 | __u16 right_saturation; /* Max level when joystick is on the right */ | 754 | __u16 right_saturation; |
707 | __u16 left_saturation; /* Max level when joystick in on the left */ | 755 | __u16 left_saturation; |
708 | |||
709 | __s16 right_coeff; /* Indicates how fast the force grows when the | ||
710 | joystick moves to the right */ | ||
711 | __s16 left_coeff; /* Same for left side */ | ||
712 | 756 | ||
713 | __u16 deadband; /* Size of area where no force is produced */ | 757 | __s16 right_coeff; |
714 | __s16 center; /* Position of dead zone */ | 758 | __s16 left_coeff; |
715 | 759 | ||
760 | __u16 deadband; | ||
761 | __s16 center; | ||
716 | }; | 762 | }; |
717 | 763 | ||
718 | /* FF_PERIODIC */ | 764 | /** |
765 | * struct ff_periodic_effect - defines parameters of a periodic effect | ||
766 | * @waveform: kind of the effect (wave) | ||
767 | * @period: period of the wave (ms) | ||
768 | * @magnitude: peak value | ||
769 | * @offset: mean value of the wave (roughly) | ||
770 | * @phase: 'horizontal' shift | ||
771 | * @envelope: envelope data | ||
772 | * @custom_len: number of samples (FF_CUSTOM only) | ||
773 | * @custom_data: buffer of samples (FF_CUSTOM only) | ||
774 | * | ||
775 | * Known waveforms - FF_SQUARE, FF_TRIANGLE, FF_SINE, FF_SAW_UP, | ||
776 | * FF_SAW_DOWN, FF_CUSTOM. The exact syntax FF_CUSTOM is undefined | ||
777 | * for the time being as no driver supports it yet. | ||
778 | * | ||
779 | * Note: the data pointed by custom_data is copied by the driver. | ||
780 | * You can therefore dispose of the memory after the upload/update. | ||
781 | */ | ||
719 | struct ff_periodic_effect { | 782 | struct ff_periodic_effect { |
720 | __u16 waveform; /* Kind of wave (sine, square...) */ | 783 | __u16 waveform; |
721 | __u16 period; /* in ms */ | 784 | __u16 period; |
722 | __s16 magnitude; /* Peak value */ | 785 | __s16 magnitude; |
723 | __s16 offset; /* Mean value of wave (roughly) */ | 786 | __s16 offset; |
724 | __u16 phase; /* 'Horizontal' shift */ | 787 | __u16 phase; |
725 | 788 | ||
726 | struct ff_envelope envelope; | 789 | struct ff_envelope envelope; |
727 | 790 | ||
728 | /* Only used if waveform == FF_CUSTOM */ | 791 | __u32 custom_len; |
729 | __u32 custom_len; /* Number of samples */ | 792 | __s16 *custom_data; |
730 | __s16 *custom_data; /* Buffer of samples */ | ||
731 | /* Note: the data pointed by custom_data is copied by the driver. You can | ||
732 | * therefore dispose of the memory after the upload/update */ | ||
733 | }; | 793 | }; |
734 | 794 | ||
735 | /* FF_RUMBLE */ | 795 | /** |
736 | /* Some rumble pads have two motors of different weight. | 796 | * struct ff_rumble_effect - defines parameters of a periodic effect |
737 | strong_magnitude represents the magnitude of the vibration generated | 797 | * @strong_magnitude: magnitude of the heavy motor |
738 | by the heavy motor. | 798 | * @weak_magnitude: magnitude of the light one |
739 | */ | 799 | * |
800 | * Some rumble pads have two motors of different weight. Strong_magnitude | ||
801 | * represents the magnitude of the vibration generated by the heavy one. | ||
802 | */ | ||
740 | struct ff_rumble_effect { | 803 | struct ff_rumble_effect { |
741 | __u16 strong_magnitude; /* Magnitude of the heavy motor */ | 804 | __u16 strong_magnitude; |
742 | __u16 weak_magnitude; /* Magnitude of the light one */ | 805 | __u16 weak_magnitude; |
743 | }; | 806 | }; |
744 | 807 | ||
745 | /* | 808 | /** |
746 | * Structure sent through ioctl from the application to the driver | 809 | * struct ff_effect - defines force feedback effect |
810 | * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING, | ||
811 | * FF_FRICTION, FF_DAMPER, FF_RUMBLE, FF_INERTIA, or FF_CUSTOM) | ||
812 | * @id: an unique id assigned to an effect | ||
813 | * @direction: direction of the effect | ||
814 | * @trigger: trigger conditions (struct ff_trigger) | ||
815 | * @replay: scheduling of the effect (struct ff_replay) | ||
816 | * @u: effect-specific structure (one of ff_constant_effect, ff_ramp_effect, | ||
817 | * ff_periodic_effect, ff_condition_effect, ff_rumble_effect) further | ||
818 | * defining effect parameters | ||
819 | * | ||
820 | * This structure is sent through ioctl from the application to the driver. | ||
821 | * To create a new effect aplication should set its @id to -1; the kernel | ||
822 | * will return assigned @id which can later be used to update or delete | ||
823 | * this effect. | ||
824 | * | ||
825 | * Direction of the effect is encoded as follows: | ||
826 | * 0 deg -> 0x0000 (down) | ||
827 | * 90 deg -> 0x4000 (left) | ||
828 | * 180 deg -> 0x8000 (up) | ||
829 | * 270 deg -> 0xC000 (right) | ||
747 | */ | 830 | */ |
748 | struct ff_effect { | 831 | struct ff_effect { |
749 | __u16 type; | 832 | __u16 type; |
750 | /* Following field denotes the unique id assigned to an effect. | ||
751 | * If user sets if to -1, a new effect is created, and its id is returned in the same field | ||
752 | * Else, the user sets it to the effect id it wants to update. | ||
753 | */ | ||
754 | __s16 id; | 833 | __s16 id; |
755 | 834 | __u16 direction; | |
756 | __u16 direction; /* Direction. 0 deg -> 0x0000 (down) | ||
757 | 90 deg -> 0x4000 (left) | ||
758 | 180 deg -> 0x8000 (up) | ||
759 | 270 deg -> 0xC000 (right) | ||
760 | */ | ||
761 | |||
762 | struct ff_trigger trigger; | 835 | struct ff_trigger trigger; |
763 | struct ff_replay replay; | 836 | struct ff_replay replay; |
764 | 837 | ||
@@ -784,6 +857,9 @@ struct ff_effect { | |||
784 | #define FF_INERTIA 0x56 | 857 | #define FF_INERTIA 0x56 |
785 | #define FF_RAMP 0x57 | 858 | #define FF_RAMP 0x57 |
786 | 859 | ||
860 | #define FF_EFFECT_MIN FF_RUMBLE | ||
861 | #define FF_EFFECT_MAX FF_RAMP | ||
862 | |||
787 | /* | 863 | /* |
788 | * Force feedback periodic effect types | 864 | * Force feedback periodic effect types |
789 | */ | 865 | */ |
@@ -795,6 +871,9 @@ struct ff_effect { | |||
795 | #define FF_SAW_DOWN 0x5c | 871 | #define FF_SAW_DOWN 0x5c |
796 | #define FF_CUSTOM 0x5d | 872 | #define FF_CUSTOM 0x5d |
797 | 873 | ||
874 | #define FF_WAVEFORM_MIN FF_SQUARE | ||
875 | #define FF_WAVEFORM_MAX FF_CUSTOM | ||
876 | |||
798 | /* | 877 | /* |
799 | * Set ff device properties | 878 | * Set ff device properties |
800 | */ | 879 | */ |
@@ -864,12 +943,13 @@ struct input_dev { | |||
864 | unsigned long sndbit[NBITS(SND_MAX)]; | 943 | unsigned long sndbit[NBITS(SND_MAX)]; |
865 | unsigned long ffbit[NBITS(FF_MAX)]; | 944 | unsigned long ffbit[NBITS(FF_MAX)]; |
866 | unsigned long swbit[NBITS(SW_MAX)]; | 945 | unsigned long swbit[NBITS(SW_MAX)]; |
867 | int ff_effects_max; | ||
868 | 946 | ||
869 | unsigned int keycodemax; | 947 | unsigned int keycodemax; |
870 | unsigned int keycodesize; | 948 | unsigned int keycodesize; |
871 | void *keycode; | 949 | void *keycode; |
872 | 950 | ||
951 | struct ff_device *ff; | ||
952 | |||
873 | unsigned int repeat_key; | 953 | unsigned int repeat_key; |
874 | struct timer_list timer; | 954 | struct timer_list timer; |
875 | 955 | ||
@@ -895,8 +975,6 @@ struct input_dev { | |||
895 | void (*close)(struct input_dev *dev); | 975 | void (*close)(struct input_dev *dev); |
896 | int (*flush)(struct input_dev *dev, struct file *file); | 976 | int (*flush)(struct input_dev *dev, struct file *file); |
897 | int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value); | 977 | int (*event)(struct input_dev *dev, unsigned int type, unsigned int code, int value); |
898 | int (*upload_effect)(struct input_dev *dev, struct ff_effect *effect); | ||
899 | int (*erase_effect)(struct input_dev *dev, int effect_id); | ||
900 | 978 | ||
901 | struct input_handle *grab; | 979 | struct input_handle *grab; |
902 | 980 | ||
@@ -904,9 +982,6 @@ struct input_dev { | |||
904 | unsigned int users; | 982 | unsigned int users; |
905 | 983 | ||
906 | struct class_device cdev; | 984 | struct class_device cdev; |
907 | struct device *dev; /* will be removed soon */ | ||
908 | |||
909 | int dynalloc; /* temporarily */ | ||
910 | 985 | ||
911 | struct list_head h_list; | 986 | struct list_head h_list; |
912 | struct list_head node; | 987 | struct list_head node; |
@@ -985,16 +1060,16 @@ struct input_handler { | |||
985 | void *private; | 1060 | void *private; |
986 | 1061 | ||
987 | void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value); | 1062 | void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value); |
988 | struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev, struct input_device_id *id); | 1063 | struct input_handle* (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id); |
989 | void (*disconnect)(struct input_handle *handle); | 1064 | void (*disconnect)(struct input_handle *handle); |
990 | void (*start)(struct input_handle *handle); | 1065 | void (*start)(struct input_handle *handle); |
991 | 1066 | ||
992 | const struct file_operations *fops; | 1067 | const struct file_operations *fops; |
993 | int minor; | 1068 | int minor; |
994 | char *name; | 1069 | const char *name; |
995 | 1070 | ||
996 | struct input_device_id *id_table; | 1071 | const struct input_device_id *id_table; |
997 | struct input_device_id *blacklist; | 1072 | const struct input_device_id *blacklist; |
998 | 1073 | ||
999 | struct list_head h_list; | 1074 | struct list_head h_list; |
1000 | struct list_head node; | 1075 | struct list_head node; |
@@ -1005,7 +1080,7 @@ struct input_handle { | |||
1005 | void *private; | 1080 | void *private; |
1006 | 1081 | ||
1007 | int open; | 1082 | int open; |
1008 | char *name; | 1083 | const char *name; |
1009 | 1084 | ||
1010 | struct input_dev *dev; | 1085 | struct input_dev *dev; |
1011 | struct input_handler *handler; | 1086 | struct input_handler *handler; |
@@ -1019,12 +1094,6 @@ struct input_handle { | |||
1019 | #define to_handle(n) container_of(n,struct input_handle,d_node) | 1094 | #define to_handle(n) container_of(n,struct input_handle,d_node) |
1020 | #define to_handle_h(n) container_of(n,struct input_handle,h_node) | 1095 | #define to_handle_h(n) container_of(n,struct input_handle,h_node) |
1021 | 1096 | ||
1022 | static inline void init_input_dev(struct input_dev *dev) | ||
1023 | { | ||
1024 | INIT_LIST_HEAD(&dev->h_list); | ||
1025 | INIT_LIST_HEAD(&dev->node); | ||
1026 | } | ||
1027 | |||
1028 | struct input_dev *input_allocate_device(void); | 1097 | struct input_dev *input_allocate_device(void); |
1029 | void input_free_device(struct input_dev *dev); | 1098 | void input_free_device(struct input_dev *dev); |
1030 | 1099 | ||
@@ -1041,7 +1110,7 @@ static inline void input_put_device(struct input_dev *dev) | |||
1041 | int input_register_device(struct input_dev *); | 1110 | int input_register_device(struct input_dev *); |
1042 | void input_unregister_device(struct input_dev *); | 1111 | void input_unregister_device(struct input_dev *); |
1043 | 1112 | ||
1044 | void input_register_handler(struct input_handler *); | 1113 | int input_register_handler(struct input_handler *); |
1045 | void input_unregister_handler(struct input_handler *); | 1114 | void input_unregister_handler(struct input_handler *); |
1046 | 1115 | ||
1047 | int input_grab_device(struct input_handle *); | 1116 | int input_grab_device(struct input_handle *); |
@@ -1070,11 +1139,6 @@ static inline void input_report_abs(struct input_dev *dev, unsigned int code, in | |||
1070 | input_event(dev, EV_ABS, code, value); | 1139 | input_event(dev, EV_ABS, code, value); |
1071 | } | 1140 | } |
1072 | 1141 | ||
1073 | static inline void input_report_ff(struct input_dev *dev, unsigned int code, int value) | ||
1074 | { | ||
1075 | input_event(dev, EV_FF, code, value); | ||
1076 | } | ||
1077 | |||
1078 | static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value) | 1142 | static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value) |
1079 | { | 1143 | { |
1080 | input_event(dev, EV_FF_STATUS, code, value); | 1144 | input_event(dev, EV_FF_STATUS, code, value); |
@@ -1108,5 +1172,61 @@ static inline void input_set_abs_params(struct input_dev *dev, int axis, int min | |||
1108 | 1172 | ||
1109 | extern struct class input_class; | 1173 | extern struct class input_class; |
1110 | 1174 | ||
1175 | /** | ||
1176 | * struct ff_device - force-feedback part of an input device | ||
1177 | * @upload: Called to upload an new effect into device | ||
1178 | * @erase: Called to erase an effect from device | ||
1179 | * @playback: Called to request device to start playing specified effect | ||
1180 | * @set_gain: Called to set specified gain | ||
1181 | * @set_autocenter: Called to auto-center device | ||
1182 | * @destroy: called by input core when parent input device is being | ||
1183 | * destroyed | ||
1184 | * @private: driver-specific data, will be freed automatically | ||
1185 | * @ffbit: bitmap of force feedback capabilities truly supported by | ||
1186 | * device (not emulated like ones in input_dev->ffbit) | ||
1187 | * @mutex: mutex for serializing access to the device | ||
1188 | * @max_effects: maximum number of effects supported by device | ||
1189 | * @effects: pointer to an array of effects currently loaded into device | ||
1190 | * @effect_owners: array of effect owners; when file handle owning | ||
1191 | * an effect gets closed the effcet is automatically erased | ||
1192 | * | ||
1193 | * Every force-feedback device must implement upload() and playback() | ||
1194 | * methods; erase() is optional. set_gain() and set_autocenter() need | ||
1195 | * only be implemented if driver sets up FF_GAIN and FF_AUTOCENTER | ||
1196 | * bits. | ||
1197 | */ | ||
1198 | struct ff_device { | ||
1199 | int (*upload)(struct input_dev *dev, struct ff_effect *effect, | ||
1200 | struct ff_effect *old); | ||
1201 | int (*erase)(struct input_dev *dev, int effect_id); | ||
1202 | |||
1203 | int (*playback)(struct input_dev *dev, int effect_id, int value); | ||
1204 | void (*set_gain)(struct input_dev *dev, u16 gain); | ||
1205 | void (*set_autocenter)(struct input_dev *dev, u16 magnitude); | ||
1206 | |||
1207 | void (*destroy)(struct ff_device *); | ||
1208 | |||
1209 | void *private; | ||
1210 | |||
1211 | unsigned long ffbit[NBITS(FF_MAX)]; | ||
1212 | |||
1213 | struct mutex mutex; | ||
1214 | |||
1215 | int max_effects; | ||
1216 | struct ff_effect *effects; | ||
1217 | struct file *effect_owners[]; | ||
1218 | }; | ||
1219 | |||
1220 | int input_ff_create(struct input_dev *dev, int max_effects); | ||
1221 | void input_ff_destroy(struct input_dev *dev); | ||
1222 | |||
1223 | int input_ff_event(struct input_dev *dev, unsigned int type, unsigned int code, int value); | ||
1224 | |||
1225 | int input_ff_upload(struct input_dev *dev, struct ff_effect *effect, struct file *file); | ||
1226 | int input_ff_erase(struct input_dev *dev, int effect_id, struct file *file); | ||
1227 | |||
1228 | int input_ff_create_memless(struct input_dev *dev, void *data, | ||
1229 | int (*play_effect)(struct input_dev *, void *, struct ff_effect *)); | ||
1230 | |||
1111 | #endif | 1231 | #endif |
1112 | #endif | 1232 | #endif |
diff --git a/include/linux/ip.h b/include/linux/ip.h index 6b25d36fc54c..ecee9bb27d0e 100644 --- a/include/linux/ip.h +++ b/include/linux/ip.h | |||
@@ -80,6 +80,8 @@ | |||
80 | #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ | 80 | #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ |
81 | #define IPOPT_TS_PRESPEC 3 /* specified modules only */ | 81 | #define IPOPT_TS_PRESPEC 3 /* specified modules only */ |
82 | 82 | ||
83 | #define IPV4_BEET_PHMAXLEN 8 | ||
84 | |||
83 | struct iphdr { | 85 | struct iphdr { |
84 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 86 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
85 | __u8 ihl:4, | 87 | __u8 ihl:4, |
@@ -123,4 +125,11 @@ struct ip_comp_hdr { | |||
123 | __be16 cpi; | 125 | __be16 cpi; |
124 | }; | 126 | }; |
125 | 127 | ||
128 | struct ip_beet_phdr { | ||
129 | __u8 nexthdr; | ||
130 | __u8 hdrlen; | ||
131 | __u8 padlen; | ||
132 | __u8 reserved; | ||
133 | }; | ||
134 | |||
126 | #endif /* _LINUX_IP_H */ | 135 | #endif /* _LINUX_IP_H */ |
diff --git a/include/linux/ipc.h b/include/linux/ipc.h index b291189737e7..636094c29b16 100644 --- a/include/linux/ipc.h +++ b/include/linux/ipc.h | |||
@@ -51,6 +51,8 @@ struct ipc_perm | |||
51 | 51 | ||
52 | #ifdef __KERNEL__ | 52 | #ifdef __KERNEL__ |
53 | 53 | ||
54 | #include <linux/kref.h> | ||
55 | |||
54 | #define IPCMNI 32768 /* <= MAX_INT limit for ipc arrays (including sysctl changes) */ | 56 | #define IPCMNI 32768 /* <= MAX_INT limit for ipc arrays (including sysctl changes) */ |
55 | 57 | ||
56 | /* used by in-kernel data structures */ | 58 | /* used by in-kernel data structures */ |
@@ -68,6 +70,59 @@ struct kern_ipc_perm | |||
68 | void *security; | 70 | void *security; |
69 | }; | 71 | }; |
70 | 72 | ||
73 | struct ipc_ids; | ||
74 | struct ipc_namespace { | ||
75 | struct kref kref; | ||
76 | struct ipc_ids *ids[3]; | ||
77 | |||
78 | int sem_ctls[4]; | ||
79 | int used_sems; | ||
80 | |||
81 | int msg_ctlmax; | ||
82 | int msg_ctlmnb; | ||
83 | int msg_ctlmni; | ||
84 | |||
85 | size_t shm_ctlmax; | ||
86 | size_t shm_ctlall; | ||
87 | int shm_ctlmni; | ||
88 | int shm_tot; | ||
89 | }; | ||
90 | |||
91 | extern struct ipc_namespace init_ipc_ns; | ||
92 | |||
93 | #ifdef CONFIG_SYSVIPC | ||
94 | #define INIT_IPC_NS(ns) .ns = &init_ipc_ns, | ||
95 | #else | ||
96 | #define INIT_IPC_NS(ns) | ||
97 | #endif | ||
98 | |||
99 | #ifdef CONFIG_IPC_NS | ||
100 | extern void free_ipc_ns(struct kref *kref); | ||
101 | extern int copy_ipcs(unsigned long flags, struct task_struct *tsk); | ||
102 | extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns); | ||
103 | #else | ||
104 | static inline int copy_ipcs(unsigned long flags, struct task_struct *tsk) | ||
105 | { | ||
106 | return 0; | ||
107 | } | ||
108 | #endif | ||
109 | |||
110 | static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns) | ||
111 | { | ||
112 | #ifdef CONFIG_IPC_NS | ||
113 | if (ns) | ||
114 | kref_get(&ns->kref); | ||
115 | #endif | ||
116 | return ns; | ||
117 | } | ||
118 | |||
119 | static inline void put_ipc_ns(struct ipc_namespace *ns) | ||
120 | { | ||
121 | #ifdef CONFIG_IPC_NS | ||
122 | kref_put(&ns->kref, free_ipc_ns); | ||
123 | #endif | ||
124 | } | ||
125 | |||
71 | #endif /* __KERNEL__ */ | 126 | #endif /* __KERNEL__ */ |
72 | 127 | ||
73 | #endif /* _LINUX_IPC_H */ | 128 | #endif /* _LINUX_IPC_H */ |
diff --git a/include/linux/ipsec.h b/include/linux/ipsec.h index d3c527616b5e..d17a6302a0e9 100644 --- a/include/linux/ipsec.h +++ b/include/linux/ipsec.h | |||
@@ -12,7 +12,8 @@ | |||
12 | enum { | 12 | enum { |
13 | IPSEC_MODE_ANY = 0, /* We do not support this for SA */ | 13 | IPSEC_MODE_ANY = 0, /* We do not support this for SA */ |
14 | IPSEC_MODE_TRANSPORT = 1, | 14 | IPSEC_MODE_TRANSPORT = 1, |
15 | IPSEC_MODE_TUNNEL = 2 | 15 | IPSEC_MODE_TUNNEL = 2, |
16 | IPSEC_MODE_BEET = 3 | ||
16 | }; | 17 | }; |
17 | 18 | ||
18 | enum { | 19 | enum { |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 48d3cb3b6a47..6f463606c318 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -59,6 +59,7 @@ | |||
59 | #define IRQ_NOAUTOEN 0x08000000 /* IRQ will not be enabled on request irq */ | 59 | #define IRQ_NOAUTOEN 0x08000000 /* IRQ will not be enabled on request irq */ |
60 | #define IRQ_DELAYED_DISABLE 0x10000000 /* IRQ disable (masking) happens delayed. */ | 60 | #define IRQ_DELAYED_DISABLE 0x10000000 /* IRQ disable (masking) happens delayed. */ |
61 | #define IRQ_WAKEUP 0x20000000 /* IRQ triggers system wakeup */ | 61 | #define IRQ_WAKEUP 0x20000000 /* IRQ triggers system wakeup */ |
62 | #define IRQ_MOVE_PENDING 0x40000000 /* need to re-target IRQ destination */ | ||
62 | 63 | ||
63 | struct proc_dir_entry; | 64 | struct proc_dir_entry; |
64 | 65 | ||
@@ -132,7 +133,6 @@ struct irq_chip { | |||
132 | * @affinity: IRQ affinity on SMP | 133 | * @affinity: IRQ affinity on SMP |
133 | * @cpu: cpu index useful for balancing | 134 | * @cpu: cpu index useful for balancing |
134 | * @pending_mask: pending rebalanced interrupts | 135 | * @pending_mask: pending rebalanced interrupts |
135 | * @move_irq: need to re-target IRQ destination | ||
136 | * @dir: /proc/irq/ procfs entry | 136 | * @dir: /proc/irq/ procfs entry |
137 | * @affinity_entry: /proc/irq/smp_affinity procfs entry on SMP | 137 | * @affinity_entry: /proc/irq/smp_affinity procfs entry on SMP |
138 | * | 138 | * |
@@ -159,7 +159,6 @@ struct irq_desc { | |||
159 | #endif | 159 | #endif |
160 | #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE) | 160 | #if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE) |
161 | cpumask_t pending_mask; | 161 | cpumask_t pending_mask; |
162 | unsigned int move_irq; /* need to re-target IRQ dest */ | ||
163 | #endif | 162 | #endif |
164 | #ifdef CONFIG_PROC_FS | 163 | #ifdef CONFIG_PROC_FS |
165 | struct proc_dir_entry *dir; | 164 | struct proc_dir_entry *dir; |
@@ -206,36 +205,7 @@ static inline void set_native_irq_info(int irq, cpumask_t mask) | |||
206 | 205 | ||
207 | void set_pending_irq(unsigned int irq, cpumask_t mask); | 206 | void set_pending_irq(unsigned int irq, cpumask_t mask); |
208 | void move_native_irq(int irq); | 207 | void move_native_irq(int irq); |
209 | 208 | void move_masked_irq(int irq); | |
210 | #ifdef CONFIG_PCI_MSI | ||
211 | /* | ||
212 | * Wonder why these are dummies? | ||
213 | * For e.g the set_ioapic_affinity_vector() calls the set_ioapic_affinity_irq() | ||
214 | * counter part after translating the vector to irq info. We need to perform | ||
215 | * this operation on the real irq, when we dont use vector, i.e when | ||
216 | * pci_use_vector() is false. | ||
217 | */ | ||
218 | static inline void move_irq(int irq) | ||
219 | { | ||
220 | } | ||
221 | |||
222 | static inline void set_irq_info(int irq, cpumask_t mask) | ||
223 | { | ||
224 | } | ||
225 | |||
226 | #else /* CONFIG_PCI_MSI */ | ||
227 | |||
228 | static inline void move_irq(int irq) | ||
229 | { | ||
230 | move_native_irq(irq); | ||
231 | } | ||
232 | |||
233 | static inline void set_irq_info(int irq, cpumask_t mask) | ||
234 | { | ||
235 | set_native_irq_info(irq, mask); | ||
236 | } | ||
237 | |||
238 | #endif /* CONFIG_PCI_MSI */ | ||
239 | 209 | ||
240 | #else /* CONFIG_GENERIC_PENDING_IRQ || CONFIG_IRQBALANCE */ | 210 | #else /* CONFIG_GENERIC_PENDING_IRQ || CONFIG_IRQBALANCE */ |
241 | 211 | ||
@@ -247,21 +217,20 @@ static inline void move_native_irq(int irq) | |||
247 | { | 217 | { |
248 | } | 218 | } |
249 | 219 | ||
250 | static inline void set_pending_irq(unsigned int irq, cpumask_t mask) | 220 | static inline void move_masked_irq(int irq) |
251 | { | 221 | { |
252 | } | 222 | } |
253 | 223 | ||
254 | static inline void set_irq_info(int irq, cpumask_t mask) | 224 | static inline void set_pending_irq(unsigned int irq, cpumask_t mask) |
255 | { | 225 | { |
256 | set_native_irq_info(irq, mask); | ||
257 | } | 226 | } |
258 | 227 | ||
259 | #endif /* CONFIG_GENERIC_PENDING_IRQ */ | 228 | #endif /* CONFIG_GENERIC_PENDING_IRQ */ |
260 | 229 | ||
261 | #else /* CONFIG_SMP */ | 230 | #else /* CONFIG_SMP */ |
262 | 231 | ||
263 | #define move_irq(x) | ||
264 | #define move_native_irq(x) | 232 | #define move_native_irq(x) |
233 | #define move_masked_irq(x) | ||
265 | 234 | ||
266 | #endif /* CONFIG_SMP */ | 235 | #endif /* CONFIG_SMP */ |
267 | 236 | ||
@@ -399,8 +368,22 @@ set_irq_chained_handler(unsigned int irq, | |||
399 | __set_irq_handler(irq, handle, 1); | 368 | __set_irq_handler(irq, handle, 1); |
400 | } | 369 | } |
401 | 370 | ||
402 | /* Set/get chip/data for an IRQ: */ | 371 | /* Handle dynamic irq creation and destruction */ |
372 | extern int create_irq(void); | ||
373 | extern void destroy_irq(unsigned int irq); | ||
403 | 374 | ||
375 | /* Test to see if a driver has successfully requested an irq */ | ||
376 | static inline int irq_has_action(unsigned int irq) | ||
377 | { | ||
378 | struct irq_desc *desc = irq_desc + irq; | ||
379 | return desc->action != NULL; | ||
380 | } | ||
381 | |||
382 | /* Dynamic irq helper functions */ | ||
383 | extern void dynamic_irq_init(unsigned int irq); | ||
384 | extern void dynamic_irq_cleanup(unsigned int irq); | ||
385 | |||
386 | /* Set/get chip/data for an IRQ: */ | ||
404 | extern int set_irq_chip(unsigned int irq, struct irq_chip *chip); | 387 | extern int set_irq_chip(unsigned int irq, struct irq_chip *chip); |
405 | extern int set_irq_data(unsigned int irq, void *data); | 388 | extern int set_irq_data(unsigned int irq, void *data); |
406 | extern int set_irq_chip_data(unsigned int irq, void *data); | 389 | extern int set_irq_chip_data(unsigned int irq, void *data); |
diff --git a/include/linux/ite_gpio.h b/include/linux/ite_gpio.h deleted file mode 100644 index b123a14292d3..000000000000 --- a/include/linux/ite_gpio.h +++ /dev/null | |||
@@ -1,66 +0,0 @@ | |||
1 | /* | ||
2 | * FILE NAME ite_gpio.h | ||
3 | * | ||
4 | * BRIEF MODULE DESCRIPTION | ||
5 | * Generic gpio. | ||
6 | * | ||
7 | * Author: MontaVista Software, Inc. <source@mvista.com> | ||
8 | * Hai-Pao Fan <haipao@mvista.com> | ||
9 | * | ||
10 | * Copyright 2001 MontaVista Software Inc. | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify it | ||
13 | * under the terms of the GNU General Public License as published by the | ||
14 | * Free Software Foundation; either version 2 of the License, or (at your | ||
15 | * option) any later version. | ||
16 | * | ||
17 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED | ||
18 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
19 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN | ||
20 | * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
21 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
22 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF | ||
23 | * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
24 | * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
27 | * | ||
28 | * You should have received a copy of the GNU General Public License along | ||
29 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
30 | * 675 Mass Ave, Cambridge, MA 02139, USA. | ||
31 | */ | ||
32 | |||
33 | #ifndef __ITE_GPIO_H | ||
34 | #define __ITE_GPIO_H | ||
35 | |||
36 | #include <linux/ioctl.h> | ||
37 | |||
38 | struct ite_gpio_ioctl_data { | ||
39 | __u32 device; | ||
40 | __u32 mask; | ||
41 | __u32 data; | ||
42 | }; | ||
43 | |||
44 | #define ITE_GPIO_IOCTL_BASE 'Z' | ||
45 | |||
46 | #define ITE_GPIO_IN _IOWR(ITE_GPIO_IOCTL_BASE, 0, struct ite_gpio_ioctl_data) | ||
47 | #define ITE_GPIO_OUT _IOW (ITE_GPIO_IOCTL_BASE, 1, struct ite_gpio_ioctl_data) | ||
48 | #define ITE_GPIO_INT_CTRL _IOW (ITE_GPIO_IOCTL_BASE, 2, struct ite_gpio_ioctl_data) | ||
49 | #define ITE_GPIO_IN_STATUS _IOW (ITE_GPIO_IOCTL_BASE, 3, struct ite_gpio_ioctl_data) | ||
50 | #define ITE_GPIO_OUT_STATUS _IOW (ITE_GPIO_IOCTL_BASE, 4, struct ite_gpio_ioctl_data) | ||
51 | #define ITE_GPIO_GEN_CTRL _IOW (ITE_GPIO_IOCTL_BASE, 5, struct ite_gpio_ioctl_data) | ||
52 | #define ITE_GPIO_INT_WAIT _IOW (ITE_GPIO_IOCTL_BASE, 6, struct ite_gpio_ioctl_data) | ||
53 | |||
54 | #define ITE_GPIO_PORTA 0x01 | ||
55 | #define ITE_GPIO_PORTB 0x02 | ||
56 | #define ITE_GPIO_PORTC 0x04 | ||
57 | |||
58 | extern int ite_gpio_in(__u32 device, __u32 mask, volatile __u32 *data); | ||
59 | extern int ite_gpio_out(__u32 device, __u32 mask, __u32 data); | ||
60 | extern int ite_gpio_int_ctrl(__u32 device, __u32 mask, __u32 data); | ||
61 | extern int ite_gpio_in_status(__u32 device, __u32 mask, volatile __u32 *data); | ||
62 | extern int ite_gpio_out_status(__u32 device, __u32 mask, __u32 data); | ||
63 | extern int ite_gpio_gen_ctrl(__u32 device, __u32 mask, __u32 data); | ||
64 | extern int ite_gpio_int_wait(__u32 device, __u32 mask, __u32 data); | ||
65 | |||
66 | #endif | ||
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 849043ce4ed6..1cebcbc28b47 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h | |||
@@ -12,6 +12,10 @@ | |||
12 | /* Lookup the address for a symbol. Returns 0 if not found. */ | 12 | /* Lookup the address for a symbol. Returns 0 if not found. */ |
13 | unsigned long kallsyms_lookup_name(const char *name); | 13 | unsigned long kallsyms_lookup_name(const char *name); |
14 | 14 | ||
15 | extern int kallsyms_lookup_size_offset(unsigned long addr, | ||
16 | unsigned long *symbolsize, | ||
17 | unsigned long *offset); | ||
18 | |||
15 | /* Lookup an address. modname is set to NULL if it's in the kernel. */ | 19 | /* Lookup an address. modname is set to NULL if it's in the kernel. */ |
16 | const char *kallsyms_lookup(unsigned long addr, | 20 | const char *kallsyms_lookup(unsigned long addr, |
17 | unsigned long *symbolsize, | 21 | unsigned long *symbolsize, |
@@ -28,6 +32,13 @@ static inline unsigned long kallsyms_lookup_name(const char *name) | |||
28 | return 0; | 32 | return 0; |
29 | } | 33 | } |
30 | 34 | ||
35 | static inline int kallsyms_lookup_size_offset(unsigned long addr, | ||
36 | unsigned long *symbolsize, | ||
37 | unsigned long *offset) | ||
38 | { | ||
39 | return 0; | ||
40 | } | ||
41 | |||
31 | static inline const char *kallsyms_lookup(unsigned long addr, | 42 | static inline const char *kallsyms_lookup(unsigned long addr, |
32 | unsigned long *symbolsize, | 43 | unsigned long *symbolsize, |
33 | unsigned long *offset, | 44 | unsigned long *offset, |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 4d00988dad03..80f39cab470a 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
@@ -216,8 +216,10 @@ extern void dump_stack(void); | |||
216 | #define pr_debug(fmt,arg...) \ | 216 | #define pr_debug(fmt,arg...) \ |
217 | printk(KERN_DEBUG fmt,##arg) | 217 | printk(KERN_DEBUG fmt,##arg) |
218 | #else | 218 | #else |
219 | #define pr_debug(fmt,arg...) \ | 219 | static inline int __attribute__ ((format (printf, 1, 2))) pr_debug(const char * fmt, ...) |
220 | do { } while (0) | 220 | { |
221 | return 0; | ||
222 | } | ||
221 | #endif | 223 | #endif |
222 | 224 | ||
223 | #define pr_info(fmt,arg...) \ | 225 | #define pr_info(fmt,arg...) \ |
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index 8bf6702da2a0..ac4c0559f751 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h | |||
@@ -77,6 +77,12 @@ struct kprobe { | |||
77 | /* location of the probe point */ | 77 | /* location of the probe point */ |
78 | kprobe_opcode_t *addr; | 78 | kprobe_opcode_t *addr; |
79 | 79 | ||
80 | /* Allow user to indicate symbol name of the probe point */ | ||
81 | char *symbol_name; | ||
82 | |||
83 | /* Offset into the symbol */ | ||
84 | unsigned int offset; | ||
85 | |||
80 | /* Called before addr is executed. */ | 86 | /* Called before addr is executed. */ |
81 | kprobe_pre_handler_t pre_handler; | 87 | kprobe_pre_handler_t pre_handler; |
82 | 88 | ||
@@ -196,7 +202,7 @@ void unregister_kretprobe(struct kretprobe *rp); | |||
196 | struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp); | 202 | struct kretprobe_instance *get_free_rp_inst(struct kretprobe *rp); |
197 | void add_rp_inst(struct kretprobe_instance *ri); | 203 | void add_rp_inst(struct kretprobe_instance *ri); |
198 | void kprobe_flush_task(struct task_struct *tk); | 204 | void kprobe_flush_task(struct task_struct *tk); |
199 | void recycle_rp_inst(struct kretprobe_instance *ri); | 205 | void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head); |
200 | #else /* CONFIG_KPROBES */ | 206 | #else /* CONFIG_KPROBES */ |
201 | 207 | ||
202 | #define __kprobes /**/ | 208 | #define __kprobes /**/ |
diff --git a/include/linux/libata.h b/include/linux/libata.h index d6a3d4b345fc..d1af1dbeaeb4 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -109,6 +109,10 @@ static inline u32 ata_msg_init(int dval, int default_msg_enable_bits) | |||
109 | #define ATA_TAG_POISON 0xfafbfcfdU | 109 | #define ATA_TAG_POISON 0xfafbfcfdU |
110 | 110 | ||
111 | /* move to PCI layer? */ | 111 | /* move to PCI layer? */ |
112 | #define PCI_VDEVICE(vendor, device) \ | ||
113 | PCI_VENDOR_ID_##vendor, (device), \ | ||
114 | PCI_ANY_ID, PCI_ANY_ID, 0, 0 | ||
115 | |||
112 | static inline struct device *pci_dev_to_dev(struct pci_dev *pdev) | 116 | static inline struct device *pci_dev_to_dev(struct pci_dev *pdev) |
113 | { | 117 | { |
114 | return &pdev->dev; | 118 | return &pdev->dev; |
@@ -138,8 +142,9 @@ enum { | |||
138 | ATA_DFLAG_NCQ = (1 << 3), /* device supports NCQ */ | 142 | ATA_DFLAG_NCQ = (1 << 3), /* device supports NCQ */ |
139 | ATA_DFLAG_CFG_MASK = (1 << 8) - 1, | 143 | ATA_DFLAG_CFG_MASK = (1 << 8) - 1, |
140 | 144 | ||
141 | ATA_DFLAG_PIO = (1 << 8), /* device currently in PIO mode */ | 145 | ATA_DFLAG_PIO = (1 << 8), /* device limited to PIO mode */ |
142 | ATA_DFLAG_SUSPENDED = (1 << 9), /* device suspended */ | 146 | ATA_DFLAG_NCQ_OFF = (1 << 9), /* devied limited to non-NCQ mode */ |
147 | ATA_DFLAG_SUSPENDED = (1 << 10), /* device suspended */ | ||
143 | ATA_DFLAG_INIT_MASK = (1 << 16) - 1, | 148 | ATA_DFLAG_INIT_MASK = (1 << 16) - 1, |
144 | 149 | ||
145 | ATA_DFLAG_DETACH = (1 << 16), | 150 | ATA_DFLAG_DETACH = (1 << 16), |
diff --git a/include/linux/libps2.h b/include/linux/libps2.h index 08a450a9dbf7..f6f301e2b0f5 100644 --- a/include/linux/libps2.h +++ b/include/linux/libps2.h | |||
@@ -47,5 +47,6 @@ int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int comman | |||
47 | int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data); | 47 | int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data); |
48 | int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data); | 48 | int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data); |
49 | void ps2_cmd_aborted(struct ps2dev *ps2dev); | 49 | void ps2_cmd_aborted(struct ps2dev *ps2dev); |
50 | int ps2_is_keyboard_id(char id); | ||
50 | 51 | ||
51 | #endif /* _LIBPS2_H */ | 52 | #endif /* _LIBPS2_H */ |
diff --git a/include/linux/lockd/bind.h b/include/linux/lockd/bind.h index b054debef2e0..81e3a185f951 100644 --- a/include/linux/lockd/bind.h +++ b/include/linux/lockd/bind.h | |||
@@ -30,7 +30,7 @@ extern struct nlmsvc_binding * nlmsvc_ops; | |||
30 | * Functions exported by the lockd module | 30 | * Functions exported by the lockd module |
31 | */ | 31 | */ |
32 | extern int nlmclnt_proc(struct inode *, int, struct file_lock *); | 32 | extern int nlmclnt_proc(struct inode *, int, struct file_lock *); |
33 | extern int lockd_up(void); | 33 | extern int lockd_up(int proto); |
34 | extern void lockd_down(void); | 34 | extern void lockd_down(void); |
35 | 35 | ||
36 | #endif /* LINUX_LOCKD_BIND_H */ | 36 | #endif /* LINUX_LOCKD_BIND_H */ |
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h index 0d92c468d55a..2909619c0295 100644 --- a/include/linux/lockd/lockd.h +++ b/include/linux/lockd/lockd.h | |||
@@ -37,17 +37,15 @@ | |||
37 | * Lockd host handle (used both by the client and server personality). | 37 | * Lockd host handle (used both by the client and server personality). |
38 | */ | 38 | */ |
39 | struct nlm_host { | 39 | struct nlm_host { |
40 | struct nlm_host * h_next; /* linked list (hash table) */ | 40 | struct hlist_node h_hash; /* doubly linked list */ |
41 | struct sockaddr_in h_addr; /* peer address */ | 41 | struct sockaddr_in h_addr; /* peer address */ |
42 | struct rpc_clnt * h_rpcclnt; /* RPC client to talk to peer */ | 42 | struct rpc_clnt * h_rpcclnt; /* RPC client to talk to peer */ |
43 | char h_name[20]; /* remote hostname */ | 43 | char * h_name; /* remote hostname */ |
44 | u32 h_version; /* interface version */ | 44 | u32 h_version; /* interface version */ |
45 | unsigned short h_proto; /* transport proto */ | 45 | unsigned short h_proto; /* transport proto */ |
46 | unsigned short h_reclaiming : 1, | 46 | unsigned short h_reclaiming : 1, |
47 | h_server : 1, /* server side, not client side */ | 47 | h_server : 1, /* server side, not client side */ |
48 | h_inuse : 1, | 48 | h_inuse : 1; |
49 | h_killed : 1, | ||
50 | h_monitored : 1; | ||
51 | wait_queue_head_t h_gracewait; /* wait while reclaiming */ | 49 | wait_queue_head_t h_gracewait; /* wait while reclaiming */ |
52 | struct rw_semaphore h_rwsem; /* Reboot recovery lock */ | 50 | struct rw_semaphore h_rwsem; /* Reboot recovery lock */ |
53 | u32 h_state; /* pseudo-state counter */ | 51 | u32 h_state; /* pseudo-state counter */ |
@@ -61,6 +59,16 @@ struct nlm_host { | |||
61 | spinlock_t h_lock; | 59 | spinlock_t h_lock; |
62 | struct list_head h_granted; /* Locks in GRANTED state */ | 60 | struct list_head h_granted; /* Locks in GRANTED state */ |
63 | struct list_head h_reclaim; /* Locks in RECLAIM state */ | 61 | struct list_head h_reclaim; /* Locks in RECLAIM state */ |
62 | struct nsm_handle * h_nsmhandle; /* NSM status handle */ | ||
63 | }; | ||
64 | |||
65 | struct nsm_handle { | ||
66 | struct list_head sm_link; | ||
67 | atomic_t sm_count; | ||
68 | char * sm_name; | ||
69 | struct sockaddr_in sm_addr; | ||
70 | unsigned int sm_monitored : 1, | ||
71 | sm_sticky : 1; /* don't unmonitor */ | ||
64 | }; | 72 | }; |
65 | 73 | ||
66 | /* | 74 | /* |
@@ -80,7 +88,7 @@ struct nlm_wait; | |||
80 | /* | 88 | /* |
81 | * Memory chunk for NLM client RPC request. | 89 | * Memory chunk for NLM client RPC request. |
82 | */ | 90 | */ |
83 | #define NLMCLNT_OHSIZE (sizeof(system_utsname.nodename)+10) | 91 | #define NLMCLNT_OHSIZE (sizeof(utsname()->nodename)+10) |
84 | struct nlm_rqst { | 92 | struct nlm_rqst { |
85 | unsigned int a_flags; /* initial RPC task flags */ | 93 | unsigned int a_flags; /* initial RPC task flags */ |
86 | struct nlm_host * a_host; /* host handle */ | 94 | struct nlm_host * a_host; /* host handle */ |
@@ -96,15 +104,14 @@ struct nlm_rqst { | |||
96 | * an NFS client. | 104 | * an NFS client. |
97 | */ | 105 | */ |
98 | struct nlm_file { | 106 | struct nlm_file { |
99 | struct nlm_file * f_next; /* linked list */ | 107 | struct hlist_node f_list; /* linked list */ |
100 | struct nfs_fh f_handle; /* NFS file handle */ | 108 | struct nfs_fh f_handle; /* NFS file handle */ |
101 | struct file * f_file; /* VFS file pointer */ | 109 | struct file * f_file; /* VFS file pointer */ |
102 | struct nlm_share * f_shares; /* DOS shares */ | 110 | struct nlm_share * f_shares; /* DOS shares */ |
103 | struct nlm_block * f_blocks; /* blocked locks */ | 111 | struct list_head f_blocks; /* blocked locks */ |
104 | unsigned int f_locks; /* guesstimate # of locks */ | 112 | unsigned int f_locks; /* guesstimate # of locks */ |
105 | unsigned int f_count; /* reference count */ | 113 | unsigned int f_count; /* reference count */ |
106 | struct semaphore f_sema; /* avoid concurrent access */ | 114 | struct mutex f_mutex; /* avoid concurrent access */ |
107 | int f_hash; /* hash of f_handle */ | ||
108 | }; | 115 | }; |
109 | 116 | ||
110 | /* | 117 | /* |
@@ -114,26 +121,18 @@ struct nlm_file { | |||
114 | #define NLM_NEVER (~(unsigned long) 0) | 121 | #define NLM_NEVER (~(unsigned long) 0) |
115 | struct nlm_block { | 122 | struct nlm_block { |
116 | struct kref b_count; /* Reference count */ | 123 | struct kref b_count; /* Reference count */ |
117 | struct nlm_block * b_next; /* linked list (all blocks) */ | 124 | struct list_head b_list; /* linked list of all blocks */ |
118 | struct nlm_block * b_fnext; /* linked list (per file) */ | 125 | struct list_head b_flist; /* linked list (per file) */ |
119 | struct nlm_rqst * b_call; /* RPC args & callback info */ | 126 | struct nlm_rqst * b_call; /* RPC args & callback info */ |
120 | struct svc_serv * b_daemon; /* NLM service */ | 127 | struct svc_serv * b_daemon; /* NLM service */ |
121 | struct nlm_host * b_host; /* host handle for RPC clnt */ | 128 | struct nlm_host * b_host; /* host handle for RPC clnt */ |
122 | unsigned long b_when; /* next re-xmit */ | 129 | unsigned long b_when; /* next re-xmit */ |
123 | unsigned int b_id; /* block id */ | 130 | unsigned int b_id; /* block id */ |
124 | unsigned char b_queued; /* re-queued */ | ||
125 | unsigned char b_granted; /* VFS granted lock */ | 131 | unsigned char b_granted; /* VFS granted lock */ |
126 | struct nlm_file * b_file; /* file in question */ | 132 | struct nlm_file * b_file; /* file in question */ |
127 | }; | 133 | }; |
128 | 134 | ||
129 | /* | 135 | /* |
130 | * Valid actions for nlmsvc_traverse_files | ||
131 | */ | ||
132 | #define NLM_ACT_CHECK 0 /* check for locks */ | ||
133 | #define NLM_ACT_MARK 1 /* mark & sweep */ | ||
134 | #define NLM_ACT_UNLOCK 2 /* release all locks */ | ||
135 | |||
136 | /* | ||
137 | * Global variables | 136 | * Global variables |
138 | */ | 137 | */ |
139 | extern struct rpc_program nlm_program; | 138 | extern struct rpc_program nlm_program; |
@@ -143,6 +142,7 @@ extern struct svc_procedure nlmsvc_procedures4[]; | |||
143 | #endif | 142 | #endif |
144 | extern int nlmsvc_grace_period; | 143 | extern int nlmsvc_grace_period; |
145 | extern unsigned long nlmsvc_timeout; | 144 | extern unsigned long nlmsvc_timeout; |
145 | extern int nsm_use_hostnames; | ||
146 | 146 | ||
147 | /* | 147 | /* |
148 | * Lockd client functions | 148 | * Lockd client functions |
@@ -155,22 +155,31 @@ struct nlm_wait * nlmclnt_prepare_block(struct nlm_host *host, struct file_lock | |||
155 | void nlmclnt_finish_block(struct nlm_wait *block); | 155 | void nlmclnt_finish_block(struct nlm_wait *block); |
156 | int nlmclnt_block(struct nlm_wait *block, struct nlm_rqst *req, long timeout); | 156 | int nlmclnt_block(struct nlm_wait *block, struct nlm_rqst *req, long timeout); |
157 | u32 nlmclnt_grant(const struct sockaddr_in *addr, const struct nlm_lock *); | 157 | u32 nlmclnt_grant(const struct sockaddr_in *addr, const struct nlm_lock *); |
158 | void nlmclnt_recovery(struct nlm_host *, u32); | 158 | void nlmclnt_recovery(struct nlm_host *); |
159 | int nlmclnt_reclaim(struct nlm_host *, struct file_lock *); | 159 | int nlmclnt_reclaim(struct nlm_host *, struct file_lock *); |
160 | void nlmclnt_next_cookie(struct nlm_cookie *); | ||
160 | 161 | ||
161 | /* | 162 | /* |
162 | * Host cache | 163 | * Host cache |
163 | */ | 164 | */ |
164 | struct nlm_host * nlmclnt_lookup_host(struct sockaddr_in *, int, int); | 165 | struct nlm_host * nlmclnt_lookup_host(const struct sockaddr_in *, int, int, const char *, int); |
165 | struct nlm_host * nlmsvc_lookup_host(struct svc_rqst *); | 166 | struct nlm_host * nlmsvc_lookup_host(struct svc_rqst *, const char *, int); |
166 | struct nlm_host * nlm_lookup_host(int server, struct sockaddr_in *, int, int); | 167 | struct nlm_host * nlm_lookup_host(int server, const struct sockaddr_in *, int, int, const char *, int); |
167 | struct rpc_clnt * nlm_bind_host(struct nlm_host *); | 168 | struct rpc_clnt * nlm_bind_host(struct nlm_host *); |
168 | void nlm_rebind_host(struct nlm_host *); | 169 | void nlm_rebind_host(struct nlm_host *); |
169 | struct nlm_host * nlm_get_host(struct nlm_host *); | 170 | struct nlm_host * nlm_get_host(struct nlm_host *); |
170 | void nlm_release_host(struct nlm_host *); | 171 | void nlm_release_host(struct nlm_host *); |
171 | void nlm_shutdown_hosts(void); | 172 | void nlm_shutdown_hosts(void); |
172 | extern struct nlm_host *nlm_find_client(void); | 173 | extern void nlm_host_rebooted(const struct sockaddr_in *, const char *, int, u32); |
174 | struct nsm_handle *nsm_find(const struct sockaddr_in *, const char *, int); | ||
175 | void nsm_release(struct nsm_handle *); | ||
176 | |||
173 | 177 | ||
178 | /* | ||
179 | * This is used in garbage collection and resource reclaim | ||
180 | * A return value != 0 means destroy the lock/block/share | ||
181 | */ | ||
182 | typedef int (*nlm_host_match_fn_t)(struct nlm_host *cur, struct nlm_host *ref); | ||
174 | 183 | ||
175 | /* | 184 | /* |
176 | * Server-side lock handling | 185 | * Server-side lock handling |
@@ -183,8 +192,8 @@ u32 nlmsvc_testlock(struct nlm_file *, struct nlm_lock *, | |||
183 | u32 nlmsvc_cancel_blocked(struct nlm_file *, struct nlm_lock *); | 192 | u32 nlmsvc_cancel_blocked(struct nlm_file *, struct nlm_lock *); |
184 | unsigned long nlmsvc_retry_blocked(void); | 193 | unsigned long nlmsvc_retry_blocked(void); |
185 | void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, | 194 | void nlmsvc_traverse_blocks(struct nlm_host *, struct nlm_file *, |
186 | int action); | 195 | nlm_host_match_fn_t match); |
187 | void nlmsvc_grant_reply(struct svc_rqst *, struct nlm_cookie *, u32); | 196 | void nlmsvc_grant_reply(struct nlm_cookie *, u32); |
188 | 197 | ||
189 | /* | 198 | /* |
190 | * File handling for the server personality | 199 | * File handling for the server personality |
diff --git a/include/linux/lockd/share.h b/include/linux/lockd/share.h index c75a424ebe4c..cd7816e74c05 100644 --- a/include/linux/lockd/share.h +++ b/include/linux/lockd/share.h | |||
@@ -25,6 +25,7 @@ u32 nlmsvc_share_file(struct nlm_host *, struct nlm_file *, | |||
25 | struct nlm_args *); | 25 | struct nlm_args *); |
26 | u32 nlmsvc_unshare_file(struct nlm_host *, struct nlm_file *, | 26 | u32 nlmsvc_unshare_file(struct nlm_host *, struct nlm_file *, |
27 | struct nlm_args *); | 27 | struct nlm_args *); |
28 | void nlmsvc_traverse_shares(struct nlm_host *, struct nlm_file *, int); | 28 | void nlmsvc_traverse_shares(struct nlm_host *, struct nlm_file *, |
29 | nlm_host_match_fn_t); | ||
29 | 30 | ||
30 | #endif /* LINUX_LOCKD_SHARE_H */ | 31 | #endif /* LINUX_LOCKD_SHARE_H */ |
diff --git a/include/linux/lockd/sm_inter.h b/include/linux/lockd/sm_inter.h index 1080bb6ae315..fc61d40964da 100644 --- a/include/linux/lockd/sm_inter.h +++ b/include/linux/lockd/sm_inter.h | |||
@@ -28,7 +28,8 @@ struct nsm_args { | |||
28 | u32 prog; /* RPC callback info */ | 28 | u32 prog; /* RPC callback info */ |
29 | u32 vers; | 29 | u32 vers; |
30 | u32 proc; | 30 | u32 proc; |
31 | u32 proto; /* protocol (udp/tcp) plus server/client flag */ | 31 | |
32 | char * mon_name; | ||
32 | }; | 33 | }; |
33 | 34 | ||
34 | /* | 35 | /* |
@@ -41,6 +42,6 @@ struct nsm_res { | |||
41 | 42 | ||
42 | int nsm_monitor(struct nlm_host *); | 43 | int nsm_monitor(struct nlm_host *); |
43 | int nsm_unmonitor(struct nlm_host *); | 44 | int nsm_unmonitor(struct nlm_host *); |
44 | extern u32 nsm_local_state; | 45 | extern int nsm_local_state; |
45 | 46 | ||
46 | #endif /* LINUX_LOCKD_SM_INTER_H */ | 47 | #endif /* LINUX_LOCKD_SM_INTER_H */ |
diff --git a/include/linux/lockd/xdr4.h b/include/linux/lockd/xdr4.h index cee36e7c0548..3cc1ae25009b 100644 --- a/include/linux/lockd/xdr4.h +++ b/include/linux/lockd/xdr4.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/linux/lockd/xdr.h | 2 | * linux/include/linux/lockd/xdr4.h |
3 | * | 3 | * |
4 | * XDR types for the NLM protocol | 4 | * XDR types for the NLM protocol |
5 | * | 5 | * |
diff --git a/include/linux/module.h b/include/linux/module.h index 2c599175c583..4b2d8091a410 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -320,6 +320,8 @@ struct module | |||
320 | /* Am I GPL-compatible */ | 320 | /* Am I GPL-compatible */ |
321 | int license_gplok; | 321 | int license_gplok; |
322 | 322 | ||
323 | unsigned int taints; /* same bits as kernel:tainted */ | ||
324 | |||
323 | #ifdef CONFIG_MODULE_UNLOAD | 325 | #ifdef CONFIG_MODULE_UNLOAD |
324 | /* Reference counts */ | 326 | /* Reference counts */ |
325 | struct module_ref ref[NR_CPUS]; | 327 | struct module_ref ref[NR_CPUS]; |
diff --git a/include/linux/msi.h b/include/linux/msi.h new file mode 100644 index 000000000000..c7ef94343673 --- /dev/null +++ b/include/linux/msi.h | |||
@@ -0,0 +1,49 @@ | |||
1 | #ifndef LINUX_MSI_H | ||
2 | #define LINUX_MSI_H | ||
3 | |||
4 | struct msi_msg { | ||
5 | u32 address_lo; /* low 32 bits of msi message address */ | ||
6 | u32 address_hi; /* high 32 bits of msi message address */ | ||
7 | u32 data; /* 16 bits of msi message data */ | ||
8 | }; | ||
9 | |||
10 | /* Heper functions */ | ||
11 | extern void mask_msi_irq(unsigned int irq); | ||
12 | extern void unmask_msi_irq(unsigned int irq); | ||
13 | extern void read_msi_msg(unsigned int irq, struct msi_msg *msg); | ||
14 | |||
15 | extern void write_msi_msg(unsigned int irq, struct msi_msg *msg); | ||
16 | |||
17 | struct msi_desc { | ||
18 | struct { | ||
19 | __u8 type : 5; /* {0: unused, 5h:MSI, 11h:MSI-X} */ | ||
20 | __u8 maskbit : 1; /* mask-pending bit supported ? */ | ||
21 | __u8 unused : 1; | ||
22 | __u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */ | ||
23 | __u8 pos; /* Location of the msi capability */ | ||
24 | __u16 entry_nr; /* specific enabled entry */ | ||
25 | unsigned default_irq; /* default pre-assigned irq */ | ||
26 | }msi_attrib; | ||
27 | |||
28 | struct { | ||
29 | __u16 head; | ||
30 | __u16 tail; | ||
31 | }link; | ||
32 | |||
33 | void __iomem *mask_base; | ||
34 | struct pci_dev *dev; | ||
35 | |||
36 | #ifdef CONFIG_PM | ||
37 | /* PM save area for MSIX address/data */ | ||
38 | struct msi_msg msg_save; | ||
39 | #endif | ||
40 | }; | ||
41 | |||
42 | /* | ||
43 | * The arch hook for setup up msi irqs | ||
44 | */ | ||
45 | int arch_setup_msi_irq(unsigned int irq, struct pci_dev *dev); | ||
46 | void arch_teardown_msi_irq(unsigned int irq); | ||
47 | |||
48 | |||
49 | #endif /* LINUX_MSI_H */ | ||
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 0b4cd2fa64aa..70420bbae82b 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
@@ -27,9 +27,17 @@ | |||
27 | struct mtd_info; | 27 | struct mtd_info; |
28 | /* Scan and identify a NAND device */ | 28 | /* Scan and identify a NAND device */ |
29 | extern int nand_scan (struct mtd_info *mtd, int max_chips); | 29 | extern int nand_scan (struct mtd_info *mtd, int max_chips); |
30 | /* Separate phases of nand_scan(), allowing board driver to intervene | ||
31 | * and override command or ECC setup according to flash type */ | ||
32 | extern int nand_scan_ident(struct mtd_info *mtd, int max_chips); | ||
33 | extern int nand_scan_tail(struct mtd_info *mtd); | ||
34 | |||
30 | /* Free resources held by the NAND device */ | 35 | /* Free resources held by the NAND device */ |
31 | extern void nand_release (struct mtd_info *mtd); | 36 | extern void nand_release (struct mtd_info *mtd); |
32 | 37 | ||
38 | /* Internal helper for board drivers which need to override command function */ | ||
39 | extern void nand_wait_ready(struct mtd_info *mtd); | ||
40 | |||
33 | /* The maximum number of NAND chips in an array */ | 41 | /* The maximum number of NAND chips in an array */ |
34 | #define NAND_MAX_CHIPS 8 | 42 | #define NAND_MAX_CHIPS 8 |
35 | 43 | ||
@@ -178,7 +186,9 @@ typedef enum { | |||
178 | #define NAND_USE_FLASH_BBT 0x00010000 | 186 | #define NAND_USE_FLASH_BBT 0x00010000 |
179 | /* This option skips the bbt scan during initialization. */ | 187 | /* This option skips the bbt scan during initialization. */ |
180 | #define NAND_SKIP_BBTSCAN 0x00020000 | 188 | #define NAND_SKIP_BBTSCAN 0x00020000 |
181 | 189 | /* This option is defined if the board driver allocates its own buffers | |
190 | (e.g. because it needs them DMA-coherent */ | ||
191 | #define NAND_OWN_BUFFERS 0x00040000 | ||
182 | /* Options set by nand scan */ | 192 | /* Options set by nand scan */ |
183 | /* Nand scan has allocated controller struct */ | 193 | /* Nand scan has allocated controller struct */ |
184 | #define NAND_CONTROLLER_ALLOC 0x80000000 | 194 | #define NAND_CONTROLLER_ALLOC 0x80000000 |
@@ -228,6 +238,8 @@ struct nand_hw_control { | |||
228 | * be provided if an hardware ECC is available | 238 | * be provided if an hardware ECC is available |
229 | * @calculate: function for ecc calculation or readback from ecc hardware | 239 | * @calculate: function for ecc calculation or readback from ecc hardware |
230 | * @correct: function for ecc correction, matching to ecc generator (sw/hw) | 240 | * @correct: function for ecc correction, matching to ecc generator (sw/hw) |
241 | * @read_page_raw: function to read a raw page without ECC | ||
242 | * @write_page_raw: function to write a raw page without ECC | ||
231 | * @read_page: function to read a page according to the ecc generator requirements | 243 | * @read_page: function to read a page according to the ecc generator requirements |
232 | * @write_page: function to write a page according to the ecc generator requirements | 244 | * @write_page: function to write a page according to the ecc generator requirements |
233 | * @read_oob: function to read chip OOB data | 245 | * @read_oob: function to read chip OOB data |
@@ -249,6 +261,12 @@ struct nand_ecc_ctrl { | |||
249 | int (*correct)(struct mtd_info *mtd, uint8_t *dat, | 261 | int (*correct)(struct mtd_info *mtd, uint8_t *dat, |
250 | uint8_t *read_ecc, | 262 | uint8_t *read_ecc, |
251 | uint8_t *calc_ecc); | 263 | uint8_t *calc_ecc); |
264 | int (*read_page_raw)(struct mtd_info *mtd, | ||
265 | struct nand_chip *chip, | ||
266 | uint8_t *buf); | ||
267 | void (*write_page_raw)(struct mtd_info *mtd, | ||
268 | struct nand_chip *chip, | ||
269 | const uint8_t *buf); | ||
252 | int (*read_page)(struct mtd_info *mtd, | 270 | int (*read_page)(struct mtd_info *mtd, |
253 | struct nand_chip *chip, | 271 | struct nand_chip *chip, |
254 | uint8_t *buf); | 272 | uint8_t *buf); |
@@ -337,6 +355,7 @@ struct nand_buffers { | |||
337 | * @priv: [OPTIONAL] pointer to private chip date | 355 | * @priv: [OPTIONAL] pointer to private chip date |
338 | * @errstat: [OPTIONAL] hardware specific function to perform additional error status checks | 356 | * @errstat: [OPTIONAL] hardware specific function to perform additional error status checks |
339 | * (determine if errors are correctable) | 357 | * (determine if errors are correctable) |
358 | * @write_page [REPLACEABLE] High-level page write function | ||
340 | */ | 359 | */ |
341 | 360 | ||
342 | struct nand_chip { | 361 | struct nand_chip { |
@@ -359,6 +378,8 @@ struct nand_chip { | |||
359 | void (*erase_cmd)(struct mtd_info *mtd, int page); | 378 | void (*erase_cmd)(struct mtd_info *mtd, int page); |
360 | int (*scan_bbt)(struct mtd_info *mtd); | 379 | int (*scan_bbt)(struct mtd_info *mtd); |
361 | int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page); | 380 | int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page); |
381 | int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, | ||
382 | const uint8_t *buf, int page, int cached, int raw); | ||
362 | 383 | ||
363 | int chip_delay; | 384 | int chip_delay; |
364 | unsigned int options; | 385 | unsigned int options; |
@@ -380,7 +401,7 @@ struct nand_chip { | |||
380 | struct nand_ecclayout *ecclayout; | 401 | struct nand_ecclayout *ecclayout; |
381 | 402 | ||
382 | struct nand_ecc_ctrl ecc; | 403 | struct nand_ecc_ctrl ecc; |
383 | struct nand_buffers buffers; | 404 | struct nand_buffers *buffers; |
384 | struct nand_hw_control hwcontrol; | 405 | struct nand_hw_control hwcontrol; |
385 | 406 | ||
386 | struct mtd_oob_ops ops; | 407 | struct mtd_oob_ops ops; |
diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h index 1f4972155249..6f045b586e76 100644 --- a/include/linux/mtd/onenand.h +++ b/include/linux/mtd/onenand.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/linux/mtd/onenand.h | 2 | * linux/include/linux/mtd/onenand.h |
3 | * | 3 | * |
4 | * Copyright (C) 2005 Samsung Electronics | 4 | * Copyright (C) 2005-2006 Samsung Electronics |
5 | * Kyungmin Park <kyungmin.park@samsung.com> | 5 | * Kyungmin Park <kyungmin.park@samsung.com> |
6 | * | 6 | * |
7 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
@@ -96,6 +96,7 @@ struct onenand_chip { | |||
96 | void __iomem *base; | 96 | void __iomem *base; |
97 | unsigned int chipsize; | 97 | unsigned int chipsize; |
98 | unsigned int device_id; | 98 | unsigned int device_id; |
99 | unsigned int version_id; | ||
99 | unsigned int density_mask; | 100 | unsigned int density_mask; |
100 | unsigned int options; | 101 | unsigned int options; |
101 | 102 | ||
@@ -149,7 +150,8 @@ struct onenand_chip { | |||
149 | /* | 150 | /* |
150 | * Options bits | 151 | * Options bits |
151 | */ | 152 | */ |
152 | #define ONENAND_CONT_LOCK (0x0001) | 153 | #define ONENAND_HAS_CONT_LOCK (0x0001) |
154 | #define ONENAND_HAS_UNLOCK_ALL (0x0002) | ||
153 | #define ONENAND_PAGEBUF_ALLOC (0x1000) | 155 | #define ONENAND_PAGEBUF_ALLOC (0x1000) |
154 | 156 | ||
155 | /* | 157 | /* |
diff --git a/include/linux/mtd/onenand_regs.h b/include/linux/mtd/onenand_regs.h index 4a72818d2545..9e409fe6ded6 100644 --- a/include/linux/mtd/onenand_regs.h +++ b/include/linux/mtd/onenand_regs.h | |||
@@ -3,7 +3,7 @@ | |||
3 | * | 3 | * |
4 | * OneNAND Register header file | 4 | * OneNAND Register header file |
5 | * | 5 | * |
6 | * Copyright (C) 2005 Samsung Electronics | 6 | * Copyright (C) 2005-2006 Samsung Electronics |
7 | * | 7 | * |
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
@@ -72,6 +72,7 @@ | |||
72 | #define ONENAND_DEVICE_VCC_MASK (0x3) | 72 | #define ONENAND_DEVICE_VCC_MASK (0x3) |
73 | 73 | ||
74 | #define ONENAND_DEVICE_DENSITY_512Mb (0x002) | 74 | #define ONENAND_DEVICE_DENSITY_512Mb (0x002) |
75 | #define ONENAND_DEVICE_DENSITY_1Gb (0x003) | ||
75 | 76 | ||
76 | /* | 77 | /* |
77 | * Version ID Register F002h (R) | 78 | * Version ID Register F002h (R) |
@@ -110,6 +111,7 @@ | |||
110 | #define ONENAND_CMD_UNLOCK (0x23) | 111 | #define ONENAND_CMD_UNLOCK (0x23) |
111 | #define ONENAND_CMD_LOCK (0x2A) | 112 | #define ONENAND_CMD_LOCK (0x2A) |
112 | #define ONENAND_CMD_LOCK_TIGHT (0x2C) | 113 | #define ONENAND_CMD_LOCK_TIGHT (0x2C) |
114 | #define ONENAND_CMD_UNLOCK_ALL (0x27) | ||
113 | #define ONENAND_CMD_ERASE (0x94) | 115 | #define ONENAND_CMD_ERASE (0x94) |
114 | #define ONENAND_CMD_RESET (0xF0) | 116 | #define ONENAND_CMD_RESET (0xF0) |
115 | #define ONENAND_CMD_OTP_ACCESS (0x65) | 117 | #define ONENAND_CMD_OTP_ACCESS (0x65) |
diff --git a/include/linux/mtd/plat-ram.h b/include/linux/mtd/plat-ram.h index 2332eda07e0e..9667863bd7e3 100644 --- a/include/linux/mtd/plat-ram.h +++ b/include/linux/mtd/plat-ram.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* linux/include/mtd/plat-ram.h | 1 | /* linux/include/linux/mtd/plat-ram.h |
2 | * | 2 | * |
3 | * (c) 2004 Simtec Electronics | 3 | * (c) 2004 Simtec Electronics |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
diff --git a/include/linux/namespace.h b/include/linux/namespace.h index 3abc8e3b4879..d137009f0b2b 100644 --- a/include/linux/namespace.h +++ b/include/linux/namespace.h | |||
@@ -4,6 +4,7 @@ | |||
4 | 4 | ||
5 | #include <linux/mount.h> | 5 | #include <linux/mount.h> |
6 | #include <linux/sched.h> | 6 | #include <linux/sched.h> |
7 | #include <linux/nsproxy.h> | ||
7 | 8 | ||
8 | struct namespace { | 9 | struct namespace { |
9 | atomic_t count; | 10 | atomic_t count; |
@@ -26,11 +27,8 @@ static inline void put_namespace(struct namespace *namespace) | |||
26 | 27 | ||
27 | static inline void exit_namespace(struct task_struct *p) | 28 | static inline void exit_namespace(struct task_struct *p) |
28 | { | 29 | { |
29 | struct namespace *namespace = p->namespace; | 30 | struct namespace *namespace = p->nsproxy->namespace; |
30 | if (namespace) { | 31 | if (namespace) { |
31 | task_lock(p); | ||
32 | p->namespace = NULL; | ||
33 | task_unlock(p); | ||
34 | put_namespace(namespace); | 32 | put_namespace(namespace); |
35 | } | 33 | } |
36 | } | 34 | } |
diff --git a/include/linux/netfilter_bridge/ebt_mark_t.h b/include/linux/netfilter_bridge/ebt_mark_t.h index 110fec6a40a2..6270f6f33693 100644 --- a/include/linux/netfilter_bridge/ebt_mark_t.h +++ b/include/linux/netfilter_bridge/ebt_mark_t.h | |||
@@ -1,6 +1,18 @@ | |||
1 | #ifndef __LINUX_BRIDGE_EBT_MARK_T_H | 1 | #ifndef __LINUX_BRIDGE_EBT_MARK_T_H |
2 | #define __LINUX_BRIDGE_EBT_MARK_T_H | 2 | #define __LINUX_BRIDGE_EBT_MARK_T_H |
3 | 3 | ||
4 | /* The target member is reused for adding new actions, the | ||
5 | * value of the real target is -1 to -NUM_STANDARD_TARGETS. | ||
6 | * For backward compatibility, the 4 lsb (2 would be enough, | ||
7 | * but let's play it safe) are kept to designate this target. | ||
8 | * The remaining bits designate the action. By making the set | ||
9 | * action 0xfffffff0, the result will look ok for older | ||
10 | * versions. [September 2006] */ | ||
11 | #define MARK_SET_VALUE (0xfffffff0) | ||
12 | #define MARK_OR_VALUE (0xffffffe0) | ||
13 | #define MARK_AND_VALUE (0xffffffd0) | ||
14 | #define MARK_XOR_VALUE (0xffffffc0) | ||
15 | |||
4 | struct ebt_mark_t_info | 16 | struct ebt_mark_t_info |
5 | { | 17 | { |
6 | unsigned long mark; | 18 | unsigned long mark; |
diff --git a/include/linux/netfilter_ipv4.h b/include/linux/netfilter_ipv4.h index ce02c984f3ba..5b63a231a76b 100644 --- a/include/linux/netfilter_ipv4.h +++ b/include/linux/netfilter_ipv4.h | |||
@@ -77,7 +77,7 @@ enum nf_ip_hook_priorities { | |||
77 | #define SO_ORIGINAL_DST 80 | 77 | #define SO_ORIGINAL_DST 80 |
78 | 78 | ||
79 | #ifdef __KERNEL__ | 79 | #ifdef __KERNEL__ |
80 | extern int ip_route_me_harder(struct sk_buff **pskb); | 80 | extern int ip_route_me_harder(struct sk_buff **pskb, unsigned addr_type); |
81 | extern int ip_xfrm_me_harder(struct sk_buff **pskb); | 81 | extern int ip_xfrm_me_harder(struct sk_buff **pskb); |
82 | extern unsigned int nf_ip_checksum(struct sk_buff *skb, unsigned int hook, | 82 | extern unsigned int nf_ip_checksum(struct sk_buff *skb, unsigned int hook, |
83 | unsigned int dataoff, u_int8_t protocol); | 83 | unsigned int dataoff, u_int8_t protocol); |
diff --git a/include/linux/nfsd/const.h b/include/linux/nfsd/const.h index b75bb1b38d09..f0cc77790527 100644 --- a/include/linux/nfsd/const.h +++ b/include/linux/nfsd/const.h | |||
@@ -20,17 +20,31 @@ | |||
20 | #define NFSSVC_MAXVERS 3 | 20 | #define NFSSVC_MAXVERS 3 |
21 | 21 | ||
22 | /* | 22 | /* |
23 | * Maximum blocksize supported by daemon currently at 32K | 23 | * Maximum blocksizes supported by daemon under various circumstances. |
24 | */ | 24 | */ |
25 | #define NFSSVC_MAXBLKSIZE (32*1024) | 25 | #define NFSSVC_MAXBLKSIZE RPCSVC_MAXPAYLOAD |
26 | /* NFSv2 is limited by the protocol specification, see RFC 1094 */ | ||
27 | #define NFSSVC_MAXBLKSIZE_V2 (8*1024) | ||
26 | 28 | ||
27 | #ifdef __KERNEL__ | 29 | #ifdef __KERNEL__ |
28 | 30 | ||
31 | #include <linux/sunrpc/msg_prot.h> | ||
32 | |||
29 | #ifndef NFS_SUPER_MAGIC | 33 | #ifndef NFS_SUPER_MAGIC |
30 | # define NFS_SUPER_MAGIC 0x6969 | 34 | # define NFS_SUPER_MAGIC 0x6969 |
31 | #endif | 35 | #endif |
32 | 36 | ||
33 | #define NFSD_BUFSIZE (1024 + NFSSVC_MAXBLKSIZE) | 37 | /* |
38 | * Largest number of bytes we need to allocate for an NFS | ||
39 | * call or reply. Used to control buffer sizes. We use | ||
40 | * the length of v3 WRITE, READDIR and READDIR replies | ||
41 | * which are an RPC header, up to 26 XDR units of reply | ||
42 | * data, and some page data. | ||
43 | * | ||
44 | * Note that accuracy here doesn't matter too much as the | ||
45 | * size is rounded up to a page size when allocating space. | ||
46 | */ | ||
47 | #define NFSD_BUFSIZE ((RPC_MAX_HEADER_WITH_AUTH+26)*XDR_UNIT + NFSSVC_MAXBLKSIZE) | ||
34 | 48 | ||
35 | #ifdef CONFIG_NFSD_V4 | 49 | #ifdef CONFIG_NFSD_V4 |
36 | # define NFSSVC_XDRSIZE NFS4_SVC_XDRSIZE | 50 | # define NFSSVC_XDRSIZE NFS4_SVC_XDRSIZE |
diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h index d2a8abb5011a..6e78ea969f49 100644 --- a/include/linux/nfsd/export.h +++ b/include/linux/nfsd/export.h | |||
@@ -45,15 +45,36 @@ | |||
45 | 45 | ||
46 | #ifdef __KERNEL__ | 46 | #ifdef __KERNEL__ |
47 | 47 | ||
48 | /* | ||
49 | * FS Locations | ||
50 | */ | ||
51 | |||
52 | #define MAX_FS_LOCATIONS 128 | ||
53 | |||
54 | struct nfsd4_fs_location { | ||
55 | char *hosts; /* colon separated list of hosts */ | ||
56 | char *path; /* slash separated list of path components */ | ||
57 | }; | ||
58 | |||
59 | struct nfsd4_fs_locations { | ||
60 | uint32_t locations_count; | ||
61 | struct nfsd4_fs_location *locations; | ||
62 | /* If we're not actually serving this data ourselves (only providing a | ||
63 | * list of replicas that do serve it) then we set "migrated": */ | ||
64 | int migrated; | ||
65 | }; | ||
66 | |||
48 | struct svc_export { | 67 | struct svc_export { |
49 | struct cache_head h; | 68 | struct cache_head h; |
50 | struct auth_domain * ex_client; | 69 | struct auth_domain * ex_client; |
51 | int ex_flags; | 70 | int ex_flags; |
52 | struct vfsmount * ex_mnt; | 71 | struct vfsmount * ex_mnt; |
53 | struct dentry * ex_dentry; | 72 | struct dentry * ex_dentry; |
73 | char * ex_path; | ||
54 | uid_t ex_anon_uid; | 74 | uid_t ex_anon_uid; |
55 | gid_t ex_anon_gid; | 75 | gid_t ex_anon_gid; |
56 | int ex_fsid; | 76 | int ex_fsid; |
77 | struct nfsd4_fs_locations ex_fslocs; | ||
57 | }; | 78 | }; |
58 | 79 | ||
59 | /* an "export key" (expkey) maps a filehandlefragement to an | 80 | /* an "export key" (expkey) maps a filehandlefragement to an |
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h index 2dcad295fece..d0d4aae7085f 100644 --- a/include/linux/nfsd/nfsd.h +++ b/include/linux/nfsd/nfsd.h | |||
@@ -140,6 +140,12 @@ struct posix_acl *nfsd_get_posix_acl(struct svc_fh *, int); | |||
140 | int nfsd_set_posix_acl(struct svc_fh *, int, struct posix_acl *); | 140 | int nfsd_set_posix_acl(struct svc_fh *, int, struct posix_acl *); |
141 | #endif | 141 | #endif |
142 | 142 | ||
143 | enum vers_op {NFSD_SET, NFSD_CLEAR, NFSD_TEST, NFSD_AVAIL }; | ||
144 | int nfsd_vers(int vers, enum vers_op change); | ||
145 | void nfsd_reset_versions(void); | ||
146 | int nfsd_create_serv(void); | ||
147 | |||
148 | extern int nfsd_max_blksize; | ||
143 | 149 | ||
144 | /* | 150 | /* |
145 | * NFSv4 State | 151 | * NFSv4 State |
@@ -210,6 +216,7 @@ void nfsd_lockd_shutdown(void); | |||
210 | #define nfserr_clid_inuse __constant_htonl(NFSERR_CLID_INUSE) | 216 | #define nfserr_clid_inuse __constant_htonl(NFSERR_CLID_INUSE) |
211 | #define nfserr_stale_clientid __constant_htonl(NFSERR_STALE_CLIENTID) | 217 | #define nfserr_stale_clientid __constant_htonl(NFSERR_STALE_CLIENTID) |
212 | #define nfserr_resource __constant_htonl(NFSERR_RESOURCE) | 218 | #define nfserr_resource __constant_htonl(NFSERR_RESOURCE) |
219 | #define nfserr_moved __constant_htonl(NFSERR_MOVED) | ||
213 | #define nfserr_nofilehandle __constant_htonl(NFSERR_NOFILEHANDLE) | 220 | #define nfserr_nofilehandle __constant_htonl(NFSERR_NOFILEHANDLE) |
214 | #define nfserr_minor_vers_mismatch __constant_htonl(NFSERR_MINOR_VERS_MISMATCH) | 221 | #define nfserr_minor_vers_mismatch __constant_htonl(NFSERR_MINOR_VERS_MISMATCH) |
215 | #define nfserr_share_denied __constant_htonl(NFSERR_SHARE_DENIED) | 222 | #define nfserr_share_denied __constant_htonl(NFSERR_SHARE_DENIED) |
@@ -286,7 +293,6 @@ static inline int is_fsid(struct svc_fh *fh, struct knfsd_fh *reffh) | |||
286 | /* | 293 | /* |
287 | * The following attributes are currently not supported by the NFSv4 server: | 294 | * The following attributes are currently not supported by the NFSv4 server: |
288 | * ARCHIVE (deprecated anyway) | 295 | * ARCHIVE (deprecated anyway) |
289 | * FS_LOCATIONS (will be supported eventually) | ||
290 | * HIDDEN (unlikely to be supported any time soon) | 296 | * HIDDEN (unlikely to be supported any time soon) |
291 | * MIMETYPE (unlikely to be supported any time soon) | 297 | * MIMETYPE (unlikely to be supported any time soon) |
292 | * QUOTA_* (will be supported in a forthcoming patch) | 298 | * QUOTA_* (will be supported in a forthcoming patch) |
@@ -302,7 +308,7 @@ static inline int is_fsid(struct svc_fh *fh, struct knfsd_fh *reffh) | |||
302 | | FATTR4_WORD0_ACLSUPPORT | FATTR4_WORD0_CANSETTIME | FATTR4_WORD0_CASE_INSENSITIVE \ | 308 | | FATTR4_WORD0_ACLSUPPORT | FATTR4_WORD0_CANSETTIME | FATTR4_WORD0_CASE_INSENSITIVE \ |
303 | | FATTR4_WORD0_CASE_PRESERVING | FATTR4_WORD0_CHOWN_RESTRICTED \ | 309 | | FATTR4_WORD0_CASE_PRESERVING | FATTR4_WORD0_CHOWN_RESTRICTED \ |
304 | | FATTR4_WORD0_FILEHANDLE | FATTR4_WORD0_FILEID | FATTR4_WORD0_FILES_AVAIL \ | 310 | | FATTR4_WORD0_FILEHANDLE | FATTR4_WORD0_FILEID | FATTR4_WORD0_FILES_AVAIL \ |
305 | | FATTR4_WORD0_FILES_FREE | FATTR4_WORD0_FILES_TOTAL | FATTR4_WORD0_HOMOGENEOUS \ | 311 | | FATTR4_WORD0_FILES_FREE | FATTR4_WORD0_FILES_TOTAL | FATTR4_WORD0_FS_LOCATIONS | FATTR4_WORD0_HOMOGENEOUS \ |
306 | | FATTR4_WORD0_MAXFILESIZE | FATTR4_WORD0_MAXLINK | FATTR4_WORD0_MAXNAME \ | 312 | | FATTR4_WORD0_MAXFILESIZE | FATTR4_WORD0_MAXLINK | FATTR4_WORD0_MAXNAME \ |
307 | | FATTR4_WORD0_MAXREAD | FATTR4_WORD0_MAXWRITE | FATTR4_WORD0_ACL) | 313 | | FATTR4_WORD0_MAXREAD | FATTR4_WORD0_MAXWRITE | FATTR4_WORD0_ACL) |
308 | 314 | ||
diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index 31a3cb617ce0..069257ea99a0 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h | |||
@@ -290,8 +290,9 @@ fill_post_wcc(struct svc_fh *fhp) | |||
290 | * vfs.c:nfsd_rename as it needs to grab 2 i_mutex's at once | 290 | * vfs.c:nfsd_rename as it needs to grab 2 i_mutex's at once |
291 | * so, any changes here should be reflected there. | 291 | * so, any changes here should be reflected there. |
292 | */ | 292 | */ |
293 | |||
293 | static inline void | 294 | static inline void |
294 | fh_lock(struct svc_fh *fhp) | 295 | fh_lock_nested(struct svc_fh *fhp, unsigned int subclass) |
295 | { | 296 | { |
296 | struct dentry *dentry = fhp->fh_dentry; | 297 | struct dentry *dentry = fhp->fh_dentry; |
297 | struct inode *inode; | 298 | struct inode *inode; |
@@ -310,11 +311,17 @@ fh_lock(struct svc_fh *fhp) | |||
310 | } | 311 | } |
311 | 312 | ||
312 | inode = dentry->d_inode; | 313 | inode = dentry->d_inode; |
313 | mutex_lock(&inode->i_mutex); | 314 | mutex_lock_nested(&inode->i_mutex, subclass); |
314 | fill_pre_wcc(fhp); | 315 | fill_pre_wcc(fhp); |
315 | fhp->fh_locked = 1; | 316 | fhp->fh_locked = 1; |
316 | } | 317 | } |
317 | 318 | ||
319 | static inline void | ||
320 | fh_lock(struct svc_fh *fhp) | ||
321 | { | ||
322 | fh_lock_nested(fhp, I_MUTEX_NORMAL); | ||
323 | } | ||
324 | |||
318 | /* | 325 | /* |
319 | * Unlock a file handle/inode | 326 | * Unlock a file handle/inode |
320 | */ | 327 | */ |
diff --git a/include/linux/nfsd/stats.h b/include/linux/nfsd/stats.h index 28a82fdd922f..7678cfbe9960 100644 --- a/include/linux/nfsd/stats.h +++ b/include/linux/nfsd/stats.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/nfsd/stats.h | 2 | * linux/include/linux/nfsd/stats.h |
3 | * | 3 | * |
4 | * Statistics for NFS server. | 4 | * Statistics for NFS server. |
5 | * | 5 | * |
diff --git a/include/linux/nfsd/syscall.h b/include/linux/nfsd/syscall.h index dae0faea2807..8bcddccb6c42 100644 --- a/include/linux/nfsd/syscall.h +++ b/include/linux/nfsd/syscall.h | |||
@@ -38,21 +38,6 @@ | |||
38 | #define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */ | 38 | #define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */ |
39 | #define NFSCTL_GETFS 8 /* get an fh by path with max FH len */ | 39 | #define NFSCTL_GETFS 8 /* get an fh by path with max FH len */ |
40 | 40 | ||
41 | /* | ||
42 | * Macros used to set version | ||
43 | */ | ||
44 | #define NFSCTL_VERSET(_cltbits, _v) ((_cltbits) |= (1 << (_v))) | ||
45 | #define NFSCTL_VERUNSET(_cltbits, _v) ((_cltbits) &= ~(1 << (_v))) | ||
46 | #define NFSCTL_VERISSET(_cltbits, _v) ((_cltbits) & (1 << (_v))) | ||
47 | |||
48 | #if defined(CONFIG_NFSD_V4) | ||
49 | #define NFSCTL_VERALL (0x1c /* 0b011100 */) | ||
50 | #elif defined(CONFIG_NFSD_V3) | ||
51 | #define NFSCTL_VERALL (0x0c /* 0b001100 */) | ||
52 | #else | ||
53 | #define NFSCTL_VERALL (0x04 /* 0b000100 */) | ||
54 | #endif | ||
55 | |||
56 | /* SVC */ | 41 | /* SVC */ |
57 | struct nfsctl_svc { | 42 | struct nfsctl_svc { |
58 | unsigned short svc_port; | 43 | unsigned short svc_port; |
@@ -134,8 +119,6 @@ extern int exp_delclient(struct nfsctl_client *ncp); | |||
134 | extern int exp_export(struct nfsctl_export *nxp); | 119 | extern int exp_export(struct nfsctl_export *nxp); |
135 | extern int exp_unexport(struct nfsctl_export *nxp); | 120 | extern int exp_unexport(struct nfsctl_export *nxp); |
136 | 121 | ||
137 | extern unsigned int nfsd_versbits; | ||
138 | |||
139 | #endif /* __KERNEL__ */ | 122 | #endif /* __KERNEL__ */ |
140 | 123 | ||
141 | #endif /* NFSD_SYSCALL_H */ | 124 | #endif /* NFSD_SYSCALL_H */ |
diff --git a/include/linux/nfsd/xdr.h b/include/linux/nfsd/xdr.h index 3f4f7142bbe3..0e53de87d886 100644 --- a/include/linux/nfsd/xdr.h +++ b/include/linux/nfsd/xdr.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/inxlude/linux/nfsd/xdr.h | 2 | * linux/include/linux/nfsd/xdr.h |
3 | * | 3 | * |
4 | * XDR types for nfsd. This is mainly a typing exercise. | 4 | * XDR types for nfsd. This is mainly a typing exercise. |
5 | */ | 5 | */ |
@@ -30,7 +30,6 @@ struct nfsd_readargs { | |||
30 | struct svc_fh fh; | 30 | struct svc_fh fh; |
31 | __u32 offset; | 31 | __u32 offset; |
32 | __u32 count; | 32 | __u32 count; |
33 | struct kvec vec[RPCSVC_MAXPAGES]; | ||
34 | int vlen; | 33 | int vlen; |
35 | }; | 34 | }; |
36 | 35 | ||
@@ -38,7 +37,6 @@ struct nfsd_writeargs { | |||
38 | svc_fh fh; | 37 | svc_fh fh; |
39 | __u32 offset; | 38 | __u32 offset; |
40 | int len; | 39 | int len; |
41 | struct kvec vec[RPCSVC_MAXPAGES]; | ||
42 | int vlen; | 40 | int vlen; |
43 | }; | 41 | }; |
44 | 42 | ||
diff --git a/include/linux/nfsd/xdr3.h b/include/linux/nfsd/xdr3.h index a4322741f8b9..474d882dc2f3 100644 --- a/include/linux/nfsd/xdr3.h +++ b/include/linux/nfsd/xdr3.h | |||
@@ -33,7 +33,6 @@ struct nfsd3_readargs { | |||
33 | struct svc_fh fh; | 33 | struct svc_fh fh; |
34 | __u64 offset; | 34 | __u64 offset; |
35 | __u32 count; | 35 | __u32 count; |
36 | struct kvec vec[RPCSVC_MAXPAGES]; | ||
37 | int vlen; | 36 | int vlen; |
38 | }; | 37 | }; |
39 | 38 | ||
@@ -43,7 +42,6 @@ struct nfsd3_writeargs { | |||
43 | __u32 count; | 42 | __u32 count; |
44 | int stable; | 43 | int stable; |
45 | __u32 len; | 44 | __u32 len; |
46 | struct kvec vec[RPCSVC_MAXPAGES]; | ||
47 | int vlen; | 45 | int vlen; |
48 | }; | 46 | }; |
49 | 47 | ||
diff --git a/include/linux/nfsd/xdr4.h b/include/linux/nfsd/xdr4.h index 77adba7d2281..66e642762a07 100644 --- a/include/linux/nfsd/xdr4.h +++ b/include/linux/nfsd/xdr4.h | |||
@@ -241,7 +241,6 @@ struct nfsd4_read { | |||
241 | stateid_t rd_stateid; /* request */ | 241 | stateid_t rd_stateid; /* request */ |
242 | u64 rd_offset; /* request */ | 242 | u64 rd_offset; /* request */ |
243 | u32 rd_length; /* request */ | 243 | u32 rd_length; /* request */ |
244 | struct kvec rd_iov[RPCSVC_MAXPAGES]; | ||
245 | int rd_vlen; | 244 | int rd_vlen; |
246 | struct file *rd_filp; | 245 | struct file *rd_filp; |
247 | 246 | ||
@@ -326,7 +325,6 @@ struct nfsd4_write { | |||
326 | u64 wr_offset; /* request */ | 325 | u64 wr_offset; /* request */ |
327 | u32 wr_stable_how; /* request */ | 326 | u32 wr_stable_how; /* request */ |
328 | u32 wr_buflen; /* request */ | 327 | u32 wr_buflen; /* request */ |
329 | struct kvec wr_vec[RPCSVC_MAXPAGES]; /* request */ | ||
330 | int wr_vlen; | 328 | int wr_vlen; |
331 | 329 | ||
332 | u32 wr_bytes_written; /* response */ | 330 | u32 wr_bytes_written; /* response */ |
diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h index 1a9ef3e627d1..5dce5c21822c 100644 --- a/include/linux/nodemask.h +++ b/include/linux/nodemask.h | |||
@@ -352,6 +352,7 @@ extern nodemask_t node_possible_map; | |||
352 | #define node_possible(node) node_isset((node), node_possible_map) | 352 | #define node_possible(node) node_isset((node), node_possible_map) |
353 | #define first_online_node first_node(node_online_map) | 353 | #define first_online_node first_node(node_online_map) |
354 | #define next_online_node(nid) next_node((nid), node_online_map) | 354 | #define next_online_node(nid) next_node((nid), node_online_map) |
355 | int highest_possible_node_id(void); | ||
355 | #else | 356 | #else |
356 | #define num_online_nodes() 1 | 357 | #define num_online_nodes() 1 |
357 | #define num_possible_nodes() 1 | 358 | #define num_possible_nodes() 1 |
@@ -359,6 +360,7 @@ extern nodemask_t node_possible_map; | |||
359 | #define node_possible(node) ((node) == 0) | 360 | #define node_possible(node) ((node) == 0) |
360 | #define first_online_node 0 | 361 | #define first_online_node 0 |
361 | #define next_online_node(nid) (MAX_NUMNODES) | 362 | #define next_online_node(nid) (MAX_NUMNODES) |
363 | #define highest_possible_node_id() 0 | ||
362 | #endif | 364 | #endif |
363 | 365 | ||
364 | #define any_online_node(mask) \ | 366 | #define any_online_node(mask) \ |
diff --git a/include/linux/notifier.h b/include/linux/notifier.h index 7ff386a6ae87..10a43ed0527e 100644 --- a/include/linux/notifier.h +++ b/include/linux/notifier.h | |||
@@ -12,9 +12,10 @@ | |||
12 | #include <linux/errno.h> | 12 | #include <linux/errno.h> |
13 | #include <linux/mutex.h> | 13 | #include <linux/mutex.h> |
14 | #include <linux/rwsem.h> | 14 | #include <linux/rwsem.h> |
15 | #include <linux/srcu.h> | ||
15 | 16 | ||
16 | /* | 17 | /* |
17 | * Notifier chains are of three types: | 18 | * Notifier chains are of four types: |
18 | * | 19 | * |
19 | * Atomic notifier chains: Chain callbacks run in interrupt/atomic | 20 | * Atomic notifier chains: Chain callbacks run in interrupt/atomic |
20 | * context. Callouts are not allowed to block. | 21 | * context. Callouts are not allowed to block. |
@@ -23,13 +24,27 @@ | |||
23 | * Raw notifier chains: There are no restrictions on callbacks, | 24 | * Raw notifier chains: There are no restrictions on callbacks, |
24 | * registration, or unregistration. All locking and protection | 25 | * registration, or unregistration. All locking and protection |
25 | * must be provided by the caller. | 26 | * must be provided by the caller. |
27 | * SRCU notifier chains: A variant of blocking notifier chains, with | ||
28 | * the same restrictions. | ||
26 | * | 29 | * |
27 | * atomic_notifier_chain_register() may be called from an atomic context, | 30 | * atomic_notifier_chain_register() may be called from an atomic context, |
28 | * but blocking_notifier_chain_register() must be called from a process | 31 | * but blocking_notifier_chain_register() and srcu_notifier_chain_register() |
29 | * context. Ditto for the corresponding _unregister() routines. | 32 | * must be called from a process context. Ditto for the corresponding |
33 | * _unregister() routines. | ||
30 | * | 34 | * |
31 | * atomic_notifier_chain_unregister() and blocking_notifier_chain_unregister() | 35 | * atomic_notifier_chain_unregister(), blocking_notifier_chain_unregister(), |
32 | * _must not_ be called from within the call chain. | 36 | * and srcu_notifier_chain_unregister() _must not_ be called from within |
37 | * the call chain. | ||
38 | * | ||
39 | * SRCU notifier chains are an alternative form of blocking notifier chains. | ||
40 | * They use SRCU (Sleepable Read-Copy Update) instead of rw-semaphores for | ||
41 | * protection of the chain links. This means there is _very_ low overhead | ||
42 | * in srcu_notifier_call_chain(): no cache bounces and no memory barriers. | ||
43 | * As compensation, srcu_notifier_chain_unregister() is rather expensive. | ||
44 | * SRCU notifier chains should be used when the chain will be called very | ||
45 | * often but notifier_blocks will seldom be removed. Also, SRCU notifier | ||
46 | * chains are slightly more difficult to use because they require special | ||
47 | * runtime initialization. | ||
33 | */ | 48 | */ |
34 | 49 | ||
35 | struct notifier_block { | 50 | struct notifier_block { |
@@ -52,6 +67,12 @@ struct raw_notifier_head { | |||
52 | struct notifier_block *head; | 67 | struct notifier_block *head; |
53 | }; | 68 | }; |
54 | 69 | ||
70 | struct srcu_notifier_head { | ||
71 | struct mutex mutex; | ||
72 | struct srcu_struct srcu; | ||
73 | struct notifier_block *head; | ||
74 | }; | ||
75 | |||
55 | #define ATOMIC_INIT_NOTIFIER_HEAD(name) do { \ | 76 | #define ATOMIC_INIT_NOTIFIER_HEAD(name) do { \ |
56 | spin_lock_init(&(name)->lock); \ | 77 | spin_lock_init(&(name)->lock); \ |
57 | (name)->head = NULL; \ | 78 | (name)->head = NULL; \ |
@@ -64,6 +85,11 @@ struct raw_notifier_head { | |||
64 | (name)->head = NULL; \ | 85 | (name)->head = NULL; \ |
65 | } while (0) | 86 | } while (0) |
66 | 87 | ||
88 | /* srcu_notifier_heads must be initialized and cleaned up dynamically */ | ||
89 | extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); | ||
90 | #define srcu_cleanup_notifier_head(name) \ | ||
91 | cleanup_srcu_struct(&(name)->srcu); | ||
92 | |||
67 | #define ATOMIC_NOTIFIER_INIT(name) { \ | 93 | #define ATOMIC_NOTIFIER_INIT(name) { \ |
68 | .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ | 94 | .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ |
69 | .head = NULL } | 95 | .head = NULL } |
@@ -72,6 +98,7 @@ struct raw_notifier_head { | |||
72 | .head = NULL } | 98 | .head = NULL } |
73 | #define RAW_NOTIFIER_INIT(name) { \ | 99 | #define RAW_NOTIFIER_INIT(name) { \ |
74 | .head = NULL } | 100 | .head = NULL } |
101 | /* srcu_notifier_heads cannot be initialized statically */ | ||
75 | 102 | ||
76 | #define ATOMIC_NOTIFIER_HEAD(name) \ | 103 | #define ATOMIC_NOTIFIER_HEAD(name) \ |
77 | struct atomic_notifier_head name = \ | 104 | struct atomic_notifier_head name = \ |
@@ -91,6 +118,8 @@ extern int blocking_notifier_chain_register(struct blocking_notifier_head *, | |||
91 | struct notifier_block *); | 118 | struct notifier_block *); |
92 | extern int raw_notifier_chain_register(struct raw_notifier_head *, | 119 | extern int raw_notifier_chain_register(struct raw_notifier_head *, |
93 | struct notifier_block *); | 120 | struct notifier_block *); |
121 | extern int srcu_notifier_chain_register(struct srcu_notifier_head *, | ||
122 | struct notifier_block *); | ||
94 | 123 | ||
95 | extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *, | 124 | extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *, |
96 | struct notifier_block *); | 125 | struct notifier_block *); |
@@ -98,6 +127,8 @@ extern int blocking_notifier_chain_unregister(struct blocking_notifier_head *, | |||
98 | struct notifier_block *); | 127 | struct notifier_block *); |
99 | extern int raw_notifier_chain_unregister(struct raw_notifier_head *, | 128 | extern int raw_notifier_chain_unregister(struct raw_notifier_head *, |
100 | struct notifier_block *); | 129 | struct notifier_block *); |
130 | extern int srcu_notifier_chain_unregister(struct srcu_notifier_head *, | ||
131 | struct notifier_block *); | ||
101 | 132 | ||
102 | extern int atomic_notifier_call_chain(struct atomic_notifier_head *, | 133 | extern int atomic_notifier_call_chain(struct atomic_notifier_head *, |
103 | unsigned long val, void *v); | 134 | unsigned long val, void *v); |
@@ -105,6 +136,8 @@ extern int blocking_notifier_call_chain(struct blocking_notifier_head *, | |||
105 | unsigned long val, void *v); | 136 | unsigned long val, void *v); |
106 | extern int raw_notifier_call_chain(struct raw_notifier_head *, | 137 | extern int raw_notifier_call_chain(struct raw_notifier_head *, |
107 | unsigned long val, void *v); | 138 | unsigned long val, void *v); |
139 | extern int srcu_notifier_call_chain(struct srcu_notifier_head *, | ||
140 | unsigned long val, void *v); | ||
108 | 141 | ||
109 | #define NOTIFY_DONE 0x0000 /* Don't care */ | 142 | #define NOTIFY_DONE 0x0000 /* Don't care */ |
110 | #define NOTIFY_OK 0x0001 /* Suits me */ | 143 | #define NOTIFY_OK 0x0001 /* Suits me */ |
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h new file mode 100644 index 000000000000..f6baecdeecd6 --- /dev/null +++ b/include/linux/nsproxy.h | |||
@@ -0,0 +1,52 @@ | |||
1 | #ifndef _LINUX_NSPROXY_H | ||
2 | #define _LINUX_NSPROXY_H | ||
3 | |||
4 | #include <linux/spinlock.h> | ||
5 | #include <linux/sched.h> | ||
6 | |||
7 | struct namespace; | ||
8 | struct uts_namespace; | ||
9 | struct ipc_namespace; | ||
10 | |||
11 | /* | ||
12 | * A structure to contain pointers to all per-process | ||
13 | * namespaces - fs (mount), uts, network, sysvipc, etc. | ||
14 | * | ||
15 | * 'count' is the number of tasks holding a reference. | ||
16 | * The count for each namespace, then, will be the number | ||
17 | * of nsproxies pointing to it, not the number of tasks. | ||
18 | * | ||
19 | * The nsproxy is shared by tasks which share all namespaces. | ||
20 | * As soon as a single namespace is cloned or unshared, the | ||
21 | * nsproxy is copied. | ||
22 | */ | ||
23 | struct nsproxy { | ||
24 | atomic_t count; | ||
25 | spinlock_t nslock; | ||
26 | struct uts_namespace *uts_ns; | ||
27 | struct ipc_namespace *ipc_ns; | ||
28 | struct namespace *namespace; | ||
29 | }; | ||
30 | extern struct nsproxy init_nsproxy; | ||
31 | |||
32 | struct nsproxy *dup_namespaces(struct nsproxy *orig); | ||
33 | int copy_namespaces(int flags, struct task_struct *tsk); | ||
34 | void get_task_namespaces(struct task_struct *tsk); | ||
35 | void free_nsproxy(struct nsproxy *ns); | ||
36 | |||
37 | static inline void put_nsproxy(struct nsproxy *ns) | ||
38 | { | ||
39 | if (atomic_dec_and_test(&ns->count)) { | ||
40 | free_nsproxy(ns); | ||
41 | } | ||
42 | } | ||
43 | |||
44 | static inline void exit_task_namespaces(struct task_struct *p) | ||
45 | { | ||
46 | struct nsproxy *ns = p->nsproxy; | ||
47 | if (ns) { | ||
48 | put_nsproxy(ns); | ||
49 | p->nsproxy = NULL; | ||
50 | } | ||
51 | } | ||
52 | #endif | ||
diff --git a/include/linux/pci.h b/include/linux/pci.h index 4431ce4e1e6f..5c604f5fad67 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -595,6 +595,7 @@ struct msix_entry { | |||
595 | u16 entry; /* driver uses to specify entry, OS writes */ | 595 | u16 entry; /* driver uses to specify entry, OS writes */ |
596 | }; | 596 | }; |
597 | 597 | ||
598 | |||
598 | #ifndef CONFIG_PCI_MSI | 599 | #ifndef CONFIG_PCI_MSI |
599 | static inline void pci_scan_msi_device(struct pci_dev *dev) {} | 600 | static inline void pci_scan_msi_device(struct pci_dev *dev) {} |
600 | static inline int pci_enable_msi(struct pci_dev *dev) {return -1;} | 601 | static inline int pci_enable_msi(struct pci_dev *dev) {return -1;} |
@@ -613,6 +614,12 @@ extern void pci_disable_msix(struct pci_dev *dev); | |||
613 | extern void msi_remove_pci_irq_vectors(struct pci_dev *dev); | 614 | extern void msi_remove_pci_irq_vectors(struct pci_dev *dev); |
614 | #endif | 615 | #endif |
615 | 616 | ||
617 | #ifdef CONFIG_HT_IRQ | ||
618 | /* The functions a driver should call */ | ||
619 | int ht_create_irq(struct pci_dev *dev, int idx); | ||
620 | void ht_destroy_irq(unsigned int irq); | ||
621 | #endif /* CONFIG_HT_IRQ */ | ||
622 | |||
616 | extern void pci_block_user_cfg_access(struct pci_dev *dev); | 623 | extern void pci_block_user_cfg_access(struct pci_dev *dev); |
617 | extern void pci_unblock_user_cfg_access(struct pci_dev *dev); | 624 | extern void pci_unblock_user_cfg_access(struct pci_dev *dev); |
618 | 625 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index c9ffbc3843d5..f069df245469 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1615,8 +1615,6 @@ | |||
1615 | #define PCI_VENDOR_ID_ROCKWELL 0x127A | 1615 | #define PCI_VENDOR_ID_ROCKWELL 0x127A |
1616 | 1616 | ||
1617 | #define PCI_VENDOR_ID_ITE 0x1283 | 1617 | #define PCI_VENDOR_ID_ITE 0x1283 |
1618 | #define PCI_DEVICE_ID_ITE_IT8172G 0x8172 | ||
1619 | #define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801 | ||
1620 | #define PCI_DEVICE_ID_ITE_8211 0x8211 | 1618 | #define PCI_DEVICE_ID_ITE_8211 0x8211 |
1621 | #define PCI_DEVICE_ID_ITE_8212 0x8212 | 1619 | #define PCI_DEVICE_ID_ITE_8212 0x8212 |
1622 | #define PCI_DEVICE_ID_ITE_8872 0x8872 | 1620 | #define PCI_DEVICE_ID_ITE_8872 0x8872 |
@@ -1883,6 +1881,8 @@ | |||
1883 | #define PCI_DEVICE_ID_PANACOM_QUADMODEM 0x0400 | 1881 | #define PCI_DEVICE_ID_PANACOM_QUADMODEM 0x0400 |
1884 | #define PCI_DEVICE_ID_PANACOM_DUALMODEM 0x0402 | 1882 | #define PCI_DEVICE_ID_PANACOM_DUALMODEM 0x0402 |
1885 | 1883 | ||
1884 | #define PCI_VENDOR_ID_SIPACKETS 0x14d9 | ||
1885 | #define PCI_DEVICE_ID_SP1011 0x0010 | ||
1886 | 1886 | ||
1887 | #define PCI_VENDOR_ID_AFAVLAB 0x14db | 1887 | #define PCI_VENDOR_ID_AFAVLAB 0x14db |
1888 | #define PCI_DEVICE_ID_AFAVLAB_P028 0x2180 | 1888 | #define PCI_DEVICE_ID_AFAVLAB_P028 0x2180 |
@@ -1997,6 +1997,7 @@ | |||
1997 | #define PCI_DEVICE_ID_FARSITE_TE1C 0x1612 | 1997 | #define PCI_DEVICE_ID_FARSITE_TE1C 0x1612 |
1998 | 1998 | ||
1999 | #define PCI_VENDOR_ID_SIBYTE 0x166d | 1999 | #define PCI_VENDOR_ID_SIBYTE 0x166d |
2000 | #define PCI_DEVICE_ID_BCM1250_PCI 0x0001 | ||
2000 | #define PCI_DEVICE_ID_BCM1250_HT 0x0002 | 2001 | #define PCI_DEVICE_ID_BCM1250_HT 0x0002 |
2001 | 2002 | ||
2002 | #define PCI_VENDOR_ID_NETCELL 0x169c | 2003 | #define PCI_VENDOR_ID_NETCELL 0x169c |
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index 7d0e26cba420..c312a12ad2d6 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
@@ -12,6 +12,11 @@ | |||
12 | * PCI Local Bus Specification | 12 | * PCI Local Bus Specification |
13 | * PCI to PCI Bridge Specification | 13 | * PCI to PCI Bridge Specification |
14 | * PCI System Design Guide | 14 | * PCI System Design Guide |
15 | * | ||
16 | * For hypertransport information, please consult the following manuals | ||
17 | * from http://www.hypertransport.org | ||
18 | * | ||
19 | * The Hypertransport I/O Link Specification | ||
15 | */ | 20 | */ |
16 | 21 | ||
17 | #ifndef LINUX_PCI_REGS_H | 22 | #ifndef LINUX_PCI_REGS_H |
@@ -463,4 +468,20 @@ | |||
463 | #define PCI_PWR_CAP 12 /* Capability */ | 468 | #define PCI_PWR_CAP 12 /* Capability */ |
464 | #define PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Included in system budget */ | 469 | #define PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Included in system budget */ |
465 | 470 | ||
471 | /* Hypertransport sub capability types */ | ||
472 | #define HT_CAPTYPE_SLAVE 0x00 /* Slave/Primary link configuration */ | ||
473 | #define HT_CAPTYPE_HOST 0x20 /* Host/Secondary link configuration */ | ||
474 | #define HT_CAPTYPE_IRQ 0x80 /* IRQ Configuration */ | ||
475 | #define HT_CAPTYPE_REMAPPING_40 0xA0 /* 40 bit address remapping */ | ||
476 | #define HT_CAPTYPE_REMAPPING_64 0xA2 /* 64 bit address remapping */ | ||
477 | #define HT_CAPTYPE_UNITID_CLUMP 0x90 /* Unit ID clumping */ | ||
478 | #define HT_CAPTYPE_EXTCONF 0x98 /* Extended Configuration Space Access */ | ||
479 | #define HT_CAPTYPE_MSI_MAPPING 0xA8 /* MSI Mapping Capability */ | ||
480 | #define HT_CAPTYPE_DIRECT_ROUTE 0xB0 /* Direct routing configuration */ | ||
481 | #define HT_CAPTYPE_VCSET 0xB8 /* Virtual Channel configuration */ | ||
482 | #define HT_CAPTYPE_ERROR_RETRY 0xC0 /* Retry on error configuration */ | ||
483 | #define HT_CAPTYPE_GEN3 0xD0 /* Generation 3 hypertransport configuration */ | ||
484 | #define HT_CAPTYPE_PM 0xE0 /* Hypertransport powermanagement configuration */ | ||
485 | |||
486 | |||
466 | #endif /* LINUX_PCI_REGS_H */ | 487 | #endif /* LINUX_PCI_REGS_H */ |
diff --git a/include/linux/pid.h b/include/linux/pid.h index 93da7e2d9f30..2c0007d17218 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h | |||
@@ -68,6 +68,8 @@ extern struct task_struct *FASTCALL(pid_task(struct pid *pid, enum pid_type)); | |||
68 | extern struct task_struct *FASTCALL(get_pid_task(struct pid *pid, | 68 | extern struct task_struct *FASTCALL(get_pid_task(struct pid *pid, |
69 | enum pid_type)); | 69 | enum pid_type)); |
70 | 70 | ||
71 | extern struct pid *get_task_pid(struct task_struct *task, enum pid_type type); | ||
72 | |||
71 | /* | 73 | /* |
72 | * attach_pid() and detach_pid() must be called with the tasklist_lock | 74 | * attach_pid() and detach_pid() must be called with the tasklist_lock |
73 | * write-held. | 75 | * write-held. |
@@ -89,33 +91,42 @@ extern struct pid *FASTCALL(find_pid(int nr)); | |||
89 | * Lookup a PID in the hash table, and return with it's count elevated. | 91 | * Lookup a PID in the hash table, and return with it's count elevated. |
90 | */ | 92 | */ |
91 | extern struct pid *find_get_pid(int nr); | 93 | extern struct pid *find_get_pid(int nr); |
94 | extern struct pid *find_ge_pid(int nr); | ||
92 | 95 | ||
93 | extern struct pid *alloc_pid(void); | 96 | extern struct pid *alloc_pid(void); |
94 | extern void FASTCALL(free_pid(struct pid *pid)); | 97 | extern void FASTCALL(free_pid(struct pid *pid)); |
95 | 98 | ||
96 | #define pid_next(task, type) \ | 99 | static inline pid_t pid_nr(struct pid *pid) |
97 | ((task)->pids[(type)].node.next) | 100 | { |
98 | 101 | pid_t nr = 0; | |
99 | #define pid_next_task(task, type) \ | 102 | if (pid) |
100 | hlist_entry(pid_next(task, type), struct task_struct, \ | 103 | nr = pid->nr; |
101 | pids[(type)].node) | 104 | return nr; |
105 | } | ||
102 | 106 | ||
103 | 107 | ||
104 | /* We could use hlist_for_each_entry_rcu here but it takes more arguments | ||
105 | * than the do_each_task_pid/while_each_task_pid. So we roll our own | ||
106 | * to preserve the existing interface. | ||
107 | */ | ||
108 | #define do_each_task_pid(who, type, task) \ | 108 | #define do_each_task_pid(who, type, task) \ |
109 | if ((task = find_task_by_pid_type(type, who))) { \ | 109 | do { \ |
110 | prefetch(pid_next(task, type)); \ | 110 | struct hlist_node *pos___; \ |
111 | do { | 111 | struct pid *pid___ = find_pid(who); \ |
112 | if (pid___ != NULL) \ | ||
113 | hlist_for_each_entry_rcu((task), pos___, \ | ||
114 | &pid___->tasks[type], pids[type].node) { | ||
112 | 115 | ||
113 | #define while_each_task_pid(who, type, task) \ | 116 | #define while_each_task_pid(who, type, task) \ |
114 | } while (pid_next(task, type) && ({ \ | 117 | } \ |
115 | task = pid_next_task(task, type); \ | 118 | } while (0) |
116 | rcu_dereference(task); \ | 119 | |
117 | prefetch(pid_next(task, type)); \ | 120 | |
118 | 1; }) ); \ | 121 | #define do_each_pid_task(pid, type, task) \ |
119 | } | 122 | do { \ |
123 | struct hlist_node *pos___; \ | ||
124 | if (pid != NULL) \ | ||
125 | hlist_for_each_entry_rcu((task), pos___, \ | ||
126 | &pid->tasks[type], pids[type].node) { | ||
127 | |||
128 | #define while_each_pid_task(pid, type, task) \ | ||
129 | } \ | ||
130 | } while (0) | ||
120 | 131 | ||
121 | #endif /* _LINUX_PID_H */ | 132 | #endif /* _LINUX_PID_H */ |
diff --git a/include/linux/ppdev.h b/include/linux/ppdev.h index f376a7598a78..dc18c5d23ebe 100644 --- a/include/linux/ppdev.h +++ b/include/linux/ppdev.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/char/ppdev.h | 2 | * linux/include/linux/ppdev.h |
3 | * | 3 | * |
4 | * User-space parallel port device driver (header file). | 4 | * User-space parallel port device driver (header file). |
5 | * | 5 | * |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index 57f70bc8b24b..87dec8fe6de9 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -244,13 +244,15 @@ static inline void kclist_add(struct kcore_list *new, void *addr, size_t size) | |||
244 | extern void kclist_add(struct kcore_list *, void *, size_t); | 244 | extern void kclist_add(struct kcore_list *, void *, size_t); |
245 | #endif | 245 | #endif |
246 | 246 | ||
247 | union proc_op { | ||
248 | int (*proc_get_link)(struct inode *, struct dentry **, struct vfsmount **); | ||
249 | int (*proc_read)(struct task_struct *task, char *page); | ||
250 | }; | ||
251 | |||
247 | struct proc_inode { | 252 | struct proc_inode { |
248 | struct pid *pid; | 253 | struct pid *pid; |
249 | int fd; | 254 | int fd; |
250 | union { | 255 | union proc_op op; |
251 | int (*proc_get_link)(struct inode *, struct dentry **, struct vfsmount **); | ||
252 | int (*proc_read)(struct task_struct *task, char *page); | ||
253 | } op; | ||
254 | struct proc_dir_entry *pde; | 256 | struct proc_dir_entry *pde; |
255 | struct inode vfs_inode; | 257 | struct inode vfs_inode; |
256 | }; | 258 | }; |
diff --git a/include/linux/pspace.h b/include/linux/pspace.h new file mode 100644 index 000000000000..91d48b8b2d99 --- /dev/null +++ b/include/linux/pspace.h | |||
@@ -0,0 +1,23 @@ | |||
1 | #ifndef _LINUX_PSPACE_H | ||
2 | #define _LINUX_PSPACE_H | ||
3 | |||
4 | #include <linux/sched.h> | ||
5 | #include <linux/mm.h> | ||
6 | #include <linux/threads.h> | ||
7 | #include <linux/pid.h> | ||
8 | |||
9 | struct pidmap { | ||
10 | atomic_t nr_free; | ||
11 | void *page; | ||
12 | }; | ||
13 | |||
14 | #define PIDMAP_ENTRIES ((PID_MAX_LIMIT + 8*PAGE_SIZE - 1)/PAGE_SIZE/8) | ||
15 | |||
16 | struct pspace { | ||
17 | struct pidmap pidmap[PIDMAP_ENTRIES]; | ||
18 | int last_pid; | ||
19 | }; | ||
20 | |||
21 | extern struct pspace init_pspace; | ||
22 | |||
23 | #endif /* _LINUX_PSPACE_H */ | ||
diff --git a/include/linux/raid/bitmap.h b/include/linux/raid/bitmap.h index 63df898fe2e9..84d887751855 100644 --- a/include/linux/raid/bitmap.h +++ b/include/linux/raid/bitmap.h | |||
@@ -265,6 +265,8 @@ int bitmap_update_sb(struct bitmap *bitmap); | |||
265 | int bitmap_setallbits(struct bitmap *bitmap); | 265 | int bitmap_setallbits(struct bitmap *bitmap); |
266 | void bitmap_write_all(struct bitmap *bitmap); | 266 | void bitmap_write_all(struct bitmap *bitmap); |
267 | 267 | ||
268 | void bitmap_dirty_bits(struct bitmap *bitmap, unsigned long s, unsigned long e); | ||
269 | |||
268 | /* these are exported */ | 270 | /* these are exported */ |
269 | int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, | 271 | int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, |
270 | unsigned long sectors, int behind); | 272 | unsigned long sectors, int behind); |
diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h index c588709acbbc..866a1e2b0ce0 100644 --- a/include/linux/raid/md.h +++ b/include/linux/raid/md.h | |||
@@ -95,7 +95,6 @@ extern int sync_page_io(struct block_device *bdev, sector_t sector, int size, | |||
95 | extern void md_do_sync(mddev_t *mddev); | 95 | extern void md_do_sync(mddev_t *mddev); |
96 | extern void md_new_event(mddev_t *mddev); | 96 | extern void md_new_event(mddev_t *mddev); |
97 | 97 | ||
98 | extern void md_update_sb(mddev_t * mddev); | ||
99 | 98 | ||
100 | #endif /* CONFIG_MD */ | 99 | #endif /* CONFIG_MD */ |
101 | #endif | 100 | #endif |
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h index 920b94fe31fa..8245c282168b 100644 --- a/include/linux/raid/md_k.h +++ b/include/linux/raid/md_k.h | |||
@@ -31,18 +31,15 @@ | |||
31 | #define LEVEL_NONE (-1000000) | 31 | #define LEVEL_NONE (-1000000) |
32 | 32 | ||
33 | #define MaxSector (~(sector_t)0) | 33 | #define MaxSector (~(sector_t)0) |
34 | #define MD_THREAD_NAME_MAX 14 | ||
35 | 34 | ||
36 | typedef struct mddev_s mddev_t; | 35 | typedef struct mddev_s mddev_t; |
37 | typedef struct mdk_rdev_s mdk_rdev_t; | 36 | typedef struct mdk_rdev_s mdk_rdev_t; |
38 | 37 | ||
39 | #define MAX_MD_DEVS 256 /* Max number of md dev */ | ||
40 | |||
41 | /* | 38 | /* |
42 | * options passed in raidrun: | 39 | * options passed in raidrun: |
43 | */ | 40 | */ |
44 | 41 | ||
45 | /* Currently this must fix in an 'int' */ | 42 | /* Currently this must fit in an 'int' */ |
46 | #define MAX_CHUNK_SIZE (1<<30) | 43 | #define MAX_CHUNK_SIZE (1<<30) |
47 | 44 | ||
48 | /* | 45 | /* |
@@ -116,7 +113,11 @@ struct mddev_s | |||
116 | dev_t unit; | 113 | dev_t unit; |
117 | int md_minor; | 114 | int md_minor; |
118 | struct list_head disks; | 115 | struct list_head disks; |
119 | int sb_dirty; | 116 | unsigned long flags; |
117 | #define MD_CHANGE_DEVS 0 /* Some device status has changed */ | ||
118 | #define MD_CHANGE_CLEAN 1 /* transition to or from 'clean' */ | ||
119 | #define MD_CHANGE_PENDING 2 /* superblock update in progress */ | ||
120 | |||
120 | int ro; | 121 | int ro; |
121 | 122 | ||
122 | struct gendisk *gendisk; | 123 | struct gendisk *gendisk; |
diff --git a/include/linux/raid/md_u.h b/include/linux/raid/md_u.h index 81da20ccec4d..7192035fc4b0 100644 --- a/include/linux/raid/md_u.h +++ b/include/linux/raid/md_u.h | |||
@@ -41,7 +41,7 @@ | |||
41 | 41 | ||
42 | /* usage */ | 42 | /* usage */ |
43 | #define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t) | 43 | #define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t) |
44 | #define START_ARRAY _IO (MD_MAJOR, 0x31) | 44 | /* 0x31 was START_ARRAY */ |
45 | #define STOP_ARRAY _IO (MD_MAJOR, 0x32) | 45 | #define STOP_ARRAY _IO (MD_MAJOR, 0x32) |
46 | #define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33) | 46 | #define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33) |
47 | #define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34) | 47 | #define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34) |
diff --git a/include/linux/raid/raid1.h b/include/linux/raid/raid1.h index 3009c813d83d..0a9ba7c3302e 100644 --- a/include/linux/raid/raid1.h +++ b/include/linux/raid/raid1.h | |||
@@ -30,7 +30,6 @@ struct r1_private_data_s { | |||
30 | mddev_t *mddev; | 30 | mddev_t *mddev; |
31 | mirror_info_t *mirrors; | 31 | mirror_info_t *mirrors; |
32 | int raid_disks; | 32 | int raid_disks; |
33 | int working_disks; | ||
34 | int last_used; | 33 | int last_used; |
35 | sector_t next_seq_sect; | 34 | sector_t next_seq_sect; |
36 | spinlock_t device_lock; | 35 | spinlock_t device_lock; |
diff --git a/include/linux/raid/raid10.h b/include/linux/raid/raid10.h index c41e56a7c090..e9091cfeb286 100644 --- a/include/linux/raid/raid10.h +++ b/include/linux/raid/raid10.h | |||
@@ -16,7 +16,6 @@ struct r10_private_data_s { | |||
16 | mddev_t *mddev; | 16 | mddev_t *mddev; |
17 | mirror_info_t *mirrors; | 17 | mirror_info_t *mirrors; |
18 | int raid_disks; | 18 | int raid_disks; |
19 | int working_disks; | ||
20 | spinlock_t device_lock; | 19 | spinlock_t device_lock; |
21 | 20 | ||
22 | /* geometry */ | 21 | /* geometry */ |
diff --git a/include/linux/raid/raid5.h b/include/linux/raid/raid5.h index 20ed4c997636..f13299a15591 100644 --- a/include/linux/raid/raid5.h +++ b/include/linux/raid/raid5.h | |||
@@ -195,8 +195,9 @@ struct stripe_head { | |||
195 | * it to the count of prereading stripes. | 195 | * it to the count of prereading stripes. |
196 | * When write is initiated, or the stripe refcnt == 0 (just in case) we | 196 | * When write is initiated, or the stripe refcnt == 0 (just in case) we |
197 | * clear the PREREAD_ACTIVE flag and decrement the count | 197 | * clear the PREREAD_ACTIVE flag and decrement the count |
198 | * Whenever the delayed queue is empty and the device is not plugged, we | 198 | * Whenever the 'handle' queue is empty and the device is not plugged, we |
199 | * move any strips from delayed to handle and clear the DELAYED flag and set PREREAD_ACTIVE. | 199 | * move any strips from delayed to handle and clear the DELAYED flag and set |
200 | * PREREAD_ACTIVE. | ||
200 | * In stripe_handle, if we find pre-reading is necessary, we do it if | 201 | * In stripe_handle, if we find pre-reading is necessary, we do it if |
201 | * PREREAD_ACTIVE is set, else we set DELAYED which will send it to the delayed queue. | 202 | * PREREAD_ACTIVE is set, else we set DELAYED which will send it to the delayed queue. |
202 | * HANDLE gets cleared if stripe_handle leave nothing locked. | 203 | * HANDLE gets cleared if stripe_handle leave nothing locked. |
@@ -213,7 +214,7 @@ struct raid5_private_data { | |||
213 | struct disk_info *spare; | 214 | struct disk_info *spare; |
214 | int chunk_size, level, algorithm; | 215 | int chunk_size, level, algorithm; |
215 | int max_degraded; | 216 | int max_degraded; |
216 | int raid_disks, working_disks, failed_disks; | 217 | int raid_disks; |
217 | int max_nr_stripes; | 218 | int max_nr_stripes; |
218 | 219 | ||
219 | /* used during an expand */ | 220 | /* used during an expand */ |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index b4ca73d65891..c6b7485eac7c 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -19,7 +19,7 @@ | |||
19 | * | 19 | * |
20 | * Author: Dipankar Sarma <dipankar@in.ibm.com> | 20 | * Author: Dipankar Sarma <dipankar@in.ibm.com> |
21 | * | 21 | * |
22 | * Based on the original work by Paul McKenney <paul.mckenney@us.ibm.com> | 22 | * Based on the original work by Paul McKenney <paulmck@us.ibm.com> |
23 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. | 23 | * and inputs from Rusty Russell, Andrea Arcangeli and Andi Kleen. |
24 | * Papers: | 24 | * Papers: |
25 | * http://www.rdrop.com/users/paulmck/paper/rclockpdcsproof.pdf | 25 | * http://www.rdrop.com/users/paulmck/paper/rclockpdcsproof.pdf |
@@ -66,6 +66,8 @@ struct rcu_ctrlblk { | |||
66 | long completed; /* Number of the last completed batch */ | 66 | long completed; /* Number of the last completed batch */ |
67 | int next_pending; /* Is the next batch already waiting? */ | 67 | int next_pending; /* Is the next batch already waiting? */ |
68 | 68 | ||
69 | int signaled; | ||
70 | |||
69 | spinlock_t lock ____cacheline_internodealigned_in_smp; | 71 | spinlock_t lock ____cacheline_internodealigned_in_smp; |
70 | cpumask_t cpumask; /* CPUs that need to switch in order */ | 72 | cpumask_t cpumask; /* CPUs that need to switch in order */ |
71 | /* for current batch to proceed. */ | 73 | /* for current batch to proceed. */ |
@@ -106,9 +108,6 @@ struct rcu_data { | |||
106 | long blimit; /* Upper limit on a processed batch */ | 108 | long blimit; /* Upper limit on a processed batch */ |
107 | int cpu; | 109 | int cpu; |
108 | struct rcu_head barrier; | 110 | struct rcu_head barrier; |
109 | #ifdef CONFIG_SMP | ||
110 | long last_rs_qlen; /* qlen during the last resched */ | ||
111 | #endif | ||
112 | }; | 111 | }; |
113 | 112 | ||
114 | DECLARE_PER_CPU(struct rcu_data, rcu_data); | 113 | DECLARE_PER_CPU(struct rcu_data, rcu_data); |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 7ef899c47c29..331f4502e92b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -24,6 +24,8 @@ | |||
24 | #define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */ | 24 | #define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */ |
25 | #define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ | 25 | #define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ |
26 | #define CLONE_STOPPED 0x02000000 /* Start in stopped state */ | 26 | #define CLONE_STOPPED 0x02000000 /* Start in stopped state */ |
27 | #define CLONE_NEWUTS 0x04000000 /* New utsname group? */ | ||
28 | #define CLONE_NEWIPC 0x08000000 /* New ipcs */ | ||
27 | 29 | ||
28 | /* | 30 | /* |
29 | * Scheduling policies | 31 | * Scheduling policies |
@@ -118,7 +120,6 @@ extern unsigned long avenrun[]; /* Load averages */ | |||
118 | 120 | ||
119 | extern unsigned long total_forks; | 121 | extern unsigned long total_forks; |
120 | extern int nr_threads; | 122 | extern int nr_threads; |
121 | extern int last_pid; | ||
122 | DECLARE_PER_CPU(unsigned long, process_counts); | 123 | DECLARE_PER_CPU(unsigned long, process_counts); |
123 | extern int nr_processes(void); | 124 | extern int nr_processes(void); |
124 | extern unsigned long nr_running(void); | 125 | extern unsigned long nr_running(void); |
@@ -239,7 +240,7 @@ extern signed long schedule_timeout_interruptible(signed long timeout); | |||
239 | extern signed long schedule_timeout_uninterruptible(signed long timeout); | 240 | extern signed long schedule_timeout_uninterruptible(signed long timeout); |
240 | asmlinkage void schedule(void); | 241 | asmlinkage void schedule(void); |
241 | 242 | ||
242 | struct namespace; | 243 | struct nsproxy; |
243 | 244 | ||
244 | /* Maximum number of active map areas.. This is a random (large) number */ | 245 | /* Maximum number of active map areas.. This is a random (large) number */ |
245 | #define DEFAULT_MAX_MAP_COUNT 65536 | 246 | #define DEFAULT_MAX_MAP_COUNT 65536 |
@@ -624,9 +625,17 @@ enum idle_type | |||
624 | #define SD_WAKE_BALANCE 64 /* Perform balancing at task wakeup */ | 625 | #define SD_WAKE_BALANCE 64 /* Perform balancing at task wakeup */ |
625 | #define SD_SHARE_CPUPOWER 128 /* Domain members share cpu power */ | 626 | #define SD_SHARE_CPUPOWER 128 /* Domain members share cpu power */ |
626 | #define SD_POWERSAVINGS_BALANCE 256 /* Balance for power savings */ | 627 | #define SD_POWERSAVINGS_BALANCE 256 /* Balance for power savings */ |
628 | #define SD_SHARE_PKG_RESOURCES 512 /* Domain members share cpu pkg resources */ | ||
627 | 629 | ||
628 | #define BALANCE_FOR_POWER ((sched_mc_power_savings || sched_smt_power_savings) \ | 630 | #define BALANCE_FOR_MC_POWER \ |
629 | ? SD_POWERSAVINGS_BALANCE : 0) | 631 | (sched_smt_power_savings ? SD_POWERSAVINGS_BALANCE : 0) |
632 | |||
633 | #define BALANCE_FOR_PKG_POWER \ | ||
634 | ((sched_mc_power_savings || sched_smt_power_savings) ? \ | ||
635 | SD_POWERSAVINGS_BALANCE : 0) | ||
636 | |||
637 | #define test_sd_parent(sd, flag) ((sd->parent && \ | ||
638 | (sd->parent->flags & flag)) ? 1 : 0) | ||
630 | 639 | ||
631 | 640 | ||
632 | struct sched_group { | 641 | struct sched_group { |
@@ -643,6 +652,7 @@ struct sched_group { | |||
643 | struct sched_domain { | 652 | struct sched_domain { |
644 | /* These fields must be setup */ | 653 | /* These fields must be setup */ |
645 | struct sched_domain *parent; /* top domain must be null terminated */ | 654 | struct sched_domain *parent; /* top domain must be null terminated */ |
655 | struct sched_domain *child; /* bottom domain must be null terminated */ | ||
646 | struct sched_group *groups; /* the balancing groups of the domain */ | 656 | struct sched_group *groups; /* the balancing groups of the domain */ |
647 | cpumask_t span; /* span of all CPUs in this domain */ | 657 | cpumask_t span; /* span of all CPUs in this domain */ |
648 | unsigned long min_interval; /* Minimum balance interval ms */ | 658 | unsigned long min_interval; /* Minimum balance interval ms */ |
@@ -754,6 +764,7 @@ static inline void prefetch_stack(struct task_struct *t) { } | |||
754 | struct audit_context; /* See audit.c */ | 764 | struct audit_context; /* See audit.c */ |
755 | struct mempolicy; | 765 | struct mempolicy; |
756 | struct pipe_inode_info; | 766 | struct pipe_inode_info; |
767 | struct uts_namespace; | ||
757 | 768 | ||
758 | enum sleep_type { | 769 | enum sleep_type { |
759 | SLEEP_NORMAL, | 770 | SLEEP_NORMAL, |
@@ -897,8 +908,8 @@ struct task_struct { | |||
897 | struct fs_struct *fs; | 908 | struct fs_struct *fs; |
898 | /* open file information */ | 909 | /* open file information */ |
899 | struct files_struct *files; | 910 | struct files_struct *files; |
900 | /* namespace */ | 911 | /* namespaces */ |
901 | struct namespace *namespace; | 912 | struct nsproxy *nsproxy; |
902 | /* signal handlers */ | 913 | /* signal handlers */ |
903 | struct signal_struct *signal; | 914 | struct signal_struct *signal; |
904 | struct sighand_struct *sighand; | 915 | struct sighand_struct *sighand; |
@@ -1020,6 +1031,26 @@ static inline pid_t process_group(struct task_struct *tsk) | |||
1020 | return tsk->signal->pgrp; | 1031 | return tsk->signal->pgrp; |
1021 | } | 1032 | } |
1022 | 1033 | ||
1034 | static inline struct pid *task_pid(struct task_struct *task) | ||
1035 | { | ||
1036 | return task->pids[PIDTYPE_PID].pid; | ||
1037 | } | ||
1038 | |||
1039 | static inline struct pid *task_tgid(struct task_struct *task) | ||
1040 | { | ||
1041 | return task->group_leader->pids[PIDTYPE_PID].pid; | ||
1042 | } | ||
1043 | |||
1044 | static inline struct pid *task_pgrp(struct task_struct *task) | ||
1045 | { | ||
1046 | return task->group_leader->pids[PIDTYPE_PGID].pid; | ||
1047 | } | ||
1048 | |||
1049 | static inline struct pid *task_session(struct task_struct *task) | ||
1050 | { | ||
1051 | return task->group_leader->pids[PIDTYPE_SID].pid; | ||
1052 | } | ||
1053 | |||
1023 | /** | 1054 | /** |
1024 | * pid_alive - check that a task structure is not stale | 1055 | * pid_alive - check that a task structure is not stale |
1025 | * @p: Task structure to be checked. | 1056 | * @p: Task structure to be checked. |
@@ -1043,6 +1074,8 @@ static inline int is_init(struct task_struct *tsk) | |||
1043 | return tsk->pid == 1; | 1074 | return tsk->pid == 1; |
1044 | } | 1075 | } |
1045 | 1076 | ||
1077 | extern struct pid *cad_pid; | ||
1078 | |||
1046 | extern void free_task(struct task_struct *tsk); | 1079 | extern void free_task(struct task_struct *tsk); |
1047 | #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) | 1080 | #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) |
1048 | 1081 | ||
@@ -1247,10 +1280,15 @@ extern int send_sig_info(int, struct siginfo *, struct task_struct *); | |||
1247 | extern int send_group_sig_info(int, struct siginfo *, struct task_struct *); | 1280 | extern int send_group_sig_info(int, struct siginfo *, struct task_struct *); |
1248 | extern int force_sigsegv(int, struct task_struct *); | 1281 | extern int force_sigsegv(int, struct task_struct *); |
1249 | extern int force_sig_info(int, struct siginfo *, struct task_struct *); | 1282 | extern int force_sig_info(int, struct siginfo *, struct task_struct *); |
1283 | extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); | ||
1284 | extern int kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); | ||
1285 | extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid); | ||
1286 | extern int kill_pid_info_as_uid(int, struct siginfo *, struct pid *, uid_t, uid_t, u32); | ||
1287 | extern int kill_pgrp(struct pid *pid, int sig, int priv); | ||
1288 | extern int kill_pid(struct pid *pid, int sig, int priv); | ||
1250 | extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp); | 1289 | extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp); |
1251 | extern int kill_pg_info(int, struct siginfo *, pid_t); | 1290 | extern int kill_pg_info(int, struct siginfo *, pid_t); |
1252 | extern int kill_proc_info(int, struct siginfo *, pid_t); | 1291 | extern int kill_proc_info(int, struct siginfo *, pid_t); |
1253 | extern int kill_proc_info_as_uid(int, struct siginfo *, pid_t, uid_t, uid_t, u32); | ||
1254 | extern void do_notify_parent(struct task_struct *, int); | 1292 | extern void do_notify_parent(struct task_struct *, int); |
1255 | extern void force_sig(int, struct task_struct *); | 1293 | extern void force_sig(int, struct task_struct *); |
1256 | extern void force_sig_specific(int, struct task_struct *); | 1294 | extern void force_sig_specific(int, struct task_struct *); |
@@ -1265,6 +1303,11 @@ extern int send_group_sigqueue(int, struct sigqueue *, struct task_struct *); | |||
1265 | extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); | 1303 | extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); |
1266 | extern int do_sigaltstack(const stack_t __user *, stack_t __user *, unsigned long); | 1304 | extern int do_sigaltstack(const stack_t __user *, stack_t __user *, unsigned long); |
1267 | 1305 | ||
1306 | static inline int kill_cad_pid(int sig, int priv) | ||
1307 | { | ||
1308 | return kill_pid(cad_pid, sig, priv); | ||
1309 | } | ||
1310 | |||
1268 | /* These can be the second arg to send_sig_info/send_group_sig_info. */ | 1311 | /* These can be the second arg to send_sig_info/send_group_sig_info. */ |
1269 | #define SEND_SIG_NOINFO ((struct siginfo *) 0) | 1312 | #define SEND_SIG_NOINFO ((struct siginfo *) 0) |
1270 | #define SEND_SIG_PRIV ((struct siginfo *) 1) | 1313 | #define SEND_SIG_PRIV ((struct siginfo *) 1) |
@@ -1358,6 +1401,17 @@ extern void wait_task_inactive(struct task_struct * p); | |||
1358 | /* de_thread depends on thread_group_leader not being a pid based check */ | 1401 | /* de_thread depends on thread_group_leader not being a pid based check */ |
1359 | #define thread_group_leader(p) (p == p->group_leader) | 1402 | #define thread_group_leader(p) (p == p->group_leader) |
1360 | 1403 | ||
1404 | /* Do to the insanities of de_thread it is possible for a process | ||
1405 | * to have the pid of the thread group leader without actually being | ||
1406 | * the thread group leader. For iteration through the pids in proc | ||
1407 | * all we care about is that we have a task with the appropriate | ||
1408 | * pid, we don't actually care if we have the right task. | ||
1409 | */ | ||
1410 | static inline int has_group_leader_pid(struct task_struct *p) | ||
1411 | { | ||
1412 | return p->pid == p->tgid; | ||
1413 | } | ||
1414 | |||
1361 | static inline struct task_struct *next_thread(const struct task_struct *p) | 1415 | static inline struct task_struct *next_thread(const struct task_struct *p) |
1362 | { | 1416 | { |
1363 | return list_entry(rcu_dereference(p->thread_group.next), | 1417 | return list_entry(rcu_dereference(p->thread_group.next), |
diff --git a/include/linux/scx200.h b/include/linux/scx200.h index 693c0557e70b..de466e11e271 100644 --- a/include/linux/scx200.h +++ b/include/linux/scx200.h | |||
@@ -32,7 +32,7 @@ extern unsigned scx200_cb_base; | |||
32 | 32 | ||
33 | /* High Resolution Timer */ | 33 | /* High Resolution Timer */ |
34 | #define SCx200_TIMER_OFFSET 0x08 | 34 | #define SCx200_TIMER_OFFSET 0x08 |
35 | #define SCx200_TIMER_SIZE 0x05 | 35 | #define SCx200_TIMER_SIZE 0x06 |
36 | 36 | ||
37 | /* Clock Generators */ | 37 | /* Clock Generators */ |
38 | #define SCx200_CLOCKGEN_OFFSET 0x10 | 38 | #define SCx200_CLOCKGEN_OFFSET 0x10 |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 86501a3de2ac..de2e68159d96 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -319,6 +319,7 @@ struct uart_info { | |||
319 | #define UIF_CTS_FLOW ((__force uif_t) (1 << 26)) | 319 | #define UIF_CTS_FLOW ((__force uif_t) (1 << 26)) |
320 | #define UIF_NORMAL_ACTIVE ((__force uif_t) (1 << 29)) | 320 | #define UIF_NORMAL_ACTIVE ((__force uif_t) (1 << 29)) |
321 | #define UIF_INITIALIZED ((__force uif_t) (1 << 31)) | 321 | #define UIF_INITIALIZED ((__force uif_t) (1 << 31)) |
322 | #define UIF_SUSPENDED ((__force uif_t) (1 << 30)) | ||
322 | 323 | ||
323 | int blocked_open; | 324 | int blocked_open; |
324 | 325 | ||
@@ -414,7 +415,7 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch, | |||
414 | #ifdef SUPPORT_SYSRQ | 415 | #ifdef SUPPORT_SYSRQ |
415 | if (port->sysrq) { | 416 | if (port->sysrq) { |
416 | if (ch && time_before(jiffies, port->sysrq)) { | 417 | if (ch && time_before(jiffies, port->sysrq)) { |
417 | handle_sysrq(ch, regs, NULL); | 418 | handle_sysrq(ch, regs, port->info->tty); |
418 | port->sysrq = 0; | 419 | port->sysrq = 0; |
419 | return 1; | 420 | return 1; |
420 | } | 421 | } |
diff --git a/include/linux/serio.h b/include/linux/serio.h index 6348e8330897..c9069310b6ac 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h | |||
@@ -217,5 +217,8 @@ static inline void serio_unpin_driver(struct serio *serio) | |||
217 | #define SERIO_LKKBD 0x28 | 217 | #define SERIO_LKKBD 0x28 |
218 | #define SERIO_ELO 0x29 | 218 | #define SERIO_ELO 0x29 |
219 | #define SERIO_MICROTOUCH 0x30 | 219 | #define SERIO_MICROTOUCH 0x30 |
220 | #define SERIO_PENMOUNT 0x31 | ||
221 | #define SERIO_TOUCHRIGHT 0x32 | ||
222 | #define SERIO_TOUCHWIN 0x33 | ||
220 | 223 | ||
221 | #endif | 224 | #endif |
diff --git a/include/linux/slab.h b/include/linux/slab.h index a96fd9310d55..c4947b8a2c03 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/mm/slab.h | 2 | * linux/include/linux/slab.h |
3 | * Written by Mark Hemment, 1996. | 3 | * Written by Mark Hemment, 1996. |
4 | * (markhe@nextd.demon.co.uk) | 4 | * (markhe@nextd.demon.co.uk) |
5 | */ | 5 | */ |
@@ -77,13 +77,6 @@ struct cache_sizes { | |||
77 | extern struct cache_sizes malloc_sizes[]; | 77 | extern struct cache_sizes malloc_sizes[]; |
78 | 78 | ||
79 | extern void *__kmalloc(size_t, gfp_t); | 79 | extern void *__kmalloc(size_t, gfp_t); |
80 | #ifndef CONFIG_DEBUG_SLAB | ||
81 | #define ____kmalloc(size, flags) __kmalloc(size, flags) | ||
82 | #else | ||
83 | extern void *__kmalloc_track_caller(size_t, gfp_t, void*); | ||
84 | #define ____kmalloc(size, flags) \ | ||
85 | __kmalloc_track_caller(size, flags, __builtin_return_address(0)) | ||
86 | #endif | ||
87 | 80 | ||
88 | /** | 81 | /** |
89 | * kmalloc - allocate memory | 82 | * kmalloc - allocate memory |
@@ -153,6 +146,23 @@ found: | |||
153 | return __kmalloc(size, flags); | 146 | return __kmalloc(size, flags); |
154 | } | 147 | } |
155 | 148 | ||
149 | /* | ||
150 | * kmalloc_track_caller is a special version of kmalloc that records the | ||
151 | * calling function of the routine calling it for slab leak tracking instead | ||
152 | * of just the calling function (confusing, eh?). | ||
153 | * It's useful when the call to kmalloc comes from a widely-used standard | ||
154 | * allocator where we care about the real place the memory allocation | ||
155 | * request comes from. | ||
156 | */ | ||
157 | #ifndef CONFIG_DEBUG_SLAB | ||
158 | #define kmalloc_track_caller(size, flags) \ | ||
159 | __kmalloc(size, flags) | ||
160 | #else | ||
161 | extern void *__kmalloc_track_caller(size_t, gfp_t, void*); | ||
162 | #define kmalloc_track_caller(size, flags) \ | ||
163 | __kmalloc_track_caller(size, flags, __builtin_return_address(0)) | ||
164 | #endif | ||
165 | |||
156 | extern void *__kzalloc(size_t, gfp_t); | 166 | extern void *__kzalloc(size_t, gfp_t); |
157 | 167 | ||
158 | /** | 168 | /** |
@@ -271,7 +281,7 @@ static inline void *kcalloc(size_t n, size_t size, gfp_t flags) | |||
271 | #define kmem_cache_alloc_node(c, f, n) kmem_cache_alloc(c, f) | 281 | #define kmem_cache_alloc_node(c, f, n) kmem_cache_alloc(c, f) |
272 | #define kmalloc_node(s, f, n) kmalloc(s, f) | 282 | #define kmalloc_node(s, f, n) kmalloc(s, f) |
273 | #define kzalloc(s, f) __kzalloc(s, f) | 283 | #define kzalloc(s, f) __kzalloc(s, f) |
274 | #define ____kmalloc kmalloc | 284 | #define kmalloc_track_caller kmalloc |
275 | 285 | ||
276 | #endif /* CONFIG_SLOB */ | 286 | #endif /* CONFIG_SLOB */ |
277 | 287 | ||
diff --git a/include/linux/sound.h b/include/linux/sound.h index f63d8342ffa3..9e2a94feed6b 100644 --- a/include/linux/sound.h +++ b/include/linux/sound.h | |||
@@ -35,10 +35,8 @@ extern int register_sound_special_device(const struct file_operations *fops, int | |||
35 | extern int register_sound_mixer(const struct file_operations *fops, int dev); | 35 | extern int register_sound_mixer(const struct file_operations *fops, int dev); |
36 | extern int register_sound_midi(const struct file_operations *fops, int dev); | 36 | extern int register_sound_midi(const struct file_operations *fops, int dev); |
37 | extern int register_sound_dsp(const struct file_operations *fops, int dev); | 37 | extern int register_sound_dsp(const struct file_operations *fops, int dev); |
38 | extern int register_sound_synth(const struct file_operations *fops, int dev); | ||
39 | 38 | ||
40 | extern void unregister_sound_special(int unit); | 39 | extern void unregister_sound_special(int unit); |
41 | extern void unregister_sound_mixer(int unit); | 40 | extern void unregister_sound_mixer(int unit); |
42 | extern void unregister_sound_midi(int unit); | 41 | extern void unregister_sound_midi(int unit); |
43 | extern void unregister_sound_dsp(int unit); | 42 | extern void unregister_sound_dsp(int unit); |
44 | extern void unregister_sound_synth(int unit); | ||
diff --git a/include/linux/srcu.h b/include/linux/srcu.h new file mode 100644 index 000000000000..aca0eee53930 --- /dev/null +++ b/include/linux/srcu.h | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * Sleepable Read-Copy Update mechanism for mutual exclusion | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License as published by | ||
6 | * the Free Software Foundation; either version 2 of the License, or | ||
7 | * (at your option) any later version. | ||
8 | * | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
17 | * | ||
18 | * Copyright (C) IBM Corporation, 2006 | ||
19 | * | ||
20 | * Author: Paul McKenney <paulmck@us.ibm.com> | ||
21 | * | ||
22 | * For detailed explanation of Read-Copy Update mechanism see - | ||
23 | * Documentation/RCU/ *.txt | ||
24 | * | ||
25 | */ | ||
26 | |||
27 | #ifndef _LINUX_SRCU_H | ||
28 | #define _LINUX_SRCU_H | ||
29 | |||
30 | struct srcu_struct_array { | ||
31 | int c[2]; | ||
32 | }; | ||
33 | |||
34 | struct srcu_struct { | ||
35 | int completed; | ||
36 | struct srcu_struct_array *per_cpu_ref; | ||
37 | struct mutex mutex; | ||
38 | }; | ||
39 | |||
40 | #ifndef CONFIG_PREEMPT | ||
41 | #define srcu_barrier() barrier() | ||
42 | #else /* #ifndef CONFIG_PREEMPT */ | ||
43 | #define srcu_barrier() | ||
44 | #endif /* #else #ifndef CONFIG_PREEMPT */ | ||
45 | |||
46 | int init_srcu_struct(struct srcu_struct *sp); | ||
47 | void cleanup_srcu_struct(struct srcu_struct *sp); | ||
48 | int srcu_read_lock(struct srcu_struct *sp) __acquires(sp); | ||
49 | void srcu_read_unlock(struct srcu_struct *sp, int idx) __releases(sp); | ||
50 | void synchronize_srcu(struct srcu_struct *sp); | ||
51 | long srcu_batches_completed(struct srcu_struct *sp); | ||
52 | |||
53 | #endif | ||
diff --git a/include/linux/stat.h b/include/linux/stat.h index 8669291352db..679ef0d70b6b 100644 --- a/include/linux/stat.h +++ b/include/linux/stat.h | |||
@@ -57,7 +57,7 @@ | |||
57 | #include <linux/time.h> | 57 | #include <linux/time.h> |
58 | 58 | ||
59 | struct kstat { | 59 | struct kstat { |
60 | unsigned long ino; | 60 | u64 ino; |
61 | dev_t dev; | 61 | dev_t dev; |
62 | umode_t mode; | 62 | umode_t mode; |
63 | unsigned int nlink; | 63 | unsigned int nlink; |
diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h index 862c0d8c8381..534cdc7be58d 100644 --- a/include/linux/sunrpc/auth.h +++ b/include/linux/sunrpc/auth.h | |||
@@ -20,9 +20,6 @@ | |||
20 | /* size of the nodename buffer */ | 20 | /* size of the nodename buffer */ |
21 | #define UNX_MAXNODENAME 32 | 21 | #define UNX_MAXNODENAME 32 |
22 | 22 | ||
23 | /* Maximum size (in bytes) of an rpc credential or verifier */ | ||
24 | #define RPC_MAX_AUTH_SIZE (400) | ||
25 | |||
26 | /* Work around the lack of a VFS credential */ | 23 | /* Work around the lack of a VFS credential */ |
27 | struct auth_cred { | 24 | struct auth_cred { |
28 | uid_t uid; | 25 | uid_t uid; |
diff --git a/include/linux/sunrpc/auth_gss.h b/include/linux/sunrpc/auth_gss.h index 03084dc4bb6a..97b62e97dd8d 100644 --- a/include/linux/sunrpc/auth_gss.h +++ b/include/linux/sunrpc/auth_gss.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/linux/auth_gss.h | 2 | * linux/include/linux/sunrpc/auth_gss.h |
3 | * | 3 | * |
4 | * Declarations for RPCSEC_GSS | 4 | * Declarations for RPCSEC_GSS |
5 | * | 5 | * |
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index b5612c958cce..3699dff7db8f 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h | |||
@@ -163,6 +163,17 @@ static inline void cache_put(struct cache_head *h, struct cache_detail *cd) | |||
163 | kref_put(&h->ref, cd->cache_put); | 163 | kref_put(&h->ref, cd->cache_put); |
164 | } | 164 | } |
165 | 165 | ||
166 | static inline int cache_valid(struct cache_head *h) | ||
167 | { | ||
168 | /* If an item has been unhashed pending removal when | ||
169 | * the refcount drops to 0, the expiry_time will be | ||
170 | * set to 0. We don't want to consider such items | ||
171 | * valid in this context even though CACHE_VALID is | ||
172 | * set. | ||
173 | */ | ||
174 | return (h->expiry_time != 0 && test_bit(CACHE_VALID, &h->flags)); | ||
175 | } | ||
176 | |||
166 | extern int cache_check(struct cache_detail *detail, | 177 | extern int cache_check(struct cache_detail *detail, |
167 | struct cache_head *h, struct cache_req *rqstp); | 178 | struct cache_head *h, struct cache_req *rqstp); |
168 | extern void cache_flush(void); | 179 | extern void cache_flush(void); |
diff --git a/include/linux/sunrpc/gss_api.h b/include/linux/sunrpc/gss_api.h index 6e112cc5cdda..5eca9e442051 100644 --- a/include/linux/sunrpc/gss_api.h +++ b/include/linux/sunrpc/gss_api.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/linux/gss_api.h | 2 | * linux/include/linux/sunrpc/gss_api.h |
3 | * | 3 | * |
4 | * Somewhat simplified version of the gss api. | 4 | * Somewhat simplified version of the gss api. |
5 | * | 5 | * |
diff --git a/include/linux/sunrpc/msg_prot.h b/include/linux/sunrpc/msg_prot.h index d9f5934ac9fe..1e65f2dd80e5 100644 --- a/include/linux/sunrpc/msg_prot.h +++ b/include/linux/sunrpc/msg_prot.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/net/sunrpc/msg_prot.h | 2 | * linux/include/linux/sunrpc/msg_prot.h |
3 | * | 3 | * |
4 | * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> | 4 | * Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> |
5 | */ | 5 | */ |
@@ -11,6 +11,9 @@ | |||
11 | 11 | ||
12 | #define RPC_VERSION 2 | 12 | #define RPC_VERSION 2 |
13 | 13 | ||
14 | /* size of an XDR encoding unit in bytes, i.e. 32bit */ | ||
15 | #define XDR_UNIT (4) | ||
16 | |||
14 | /* spec defines authentication flavor as an unsigned 32 bit integer */ | 17 | /* spec defines authentication flavor as an unsigned 32 bit integer */ |
15 | typedef u32 rpc_authflavor_t; | 18 | typedef u32 rpc_authflavor_t; |
16 | 19 | ||
@@ -34,6 +37,9 @@ enum rpc_auth_flavors { | |||
34 | RPC_AUTH_GSS_SPKMP = 390011, | 37 | RPC_AUTH_GSS_SPKMP = 390011, |
35 | }; | 38 | }; |
36 | 39 | ||
40 | /* Maximum size (in bytes) of an rpc credential or verifier */ | ||
41 | #define RPC_MAX_AUTH_SIZE (400) | ||
42 | |||
37 | enum rpc_msg_type { | 43 | enum rpc_msg_type { |
38 | RPC_CALL = 0, | 44 | RPC_CALL = 0, |
39 | RPC_REPLY = 1 | 45 | RPC_REPLY = 1 |
@@ -101,5 +107,39 @@ typedef __be32 rpc_fraghdr; | |||
101 | #define RPC_FRAGMENT_SIZE_MASK (~RPC_LAST_STREAM_FRAGMENT) | 107 | #define RPC_FRAGMENT_SIZE_MASK (~RPC_LAST_STREAM_FRAGMENT) |
102 | #define RPC_MAX_FRAGMENT_SIZE ((1U << 31) - 1) | 108 | #define RPC_MAX_FRAGMENT_SIZE ((1U << 31) - 1) |
103 | 109 | ||
110 | /* | ||
111 | * RPC call and reply header size as number of 32bit words (verifier | ||
112 | * size computed separately, see below) | ||
113 | */ | ||
114 | #define RPC_CALLHDRSIZE (6) | ||
115 | #define RPC_REPHDRSIZE (4) | ||
116 | |||
117 | |||
118 | /* | ||
119 | * Maximum RPC header size, including authentication, | ||
120 | * as number of 32bit words (see RFCs 1831, 1832). | ||
121 | * | ||
122 | * xid 1 xdr unit = 4 bytes | ||
123 | * mtype 1 | ||
124 | * rpc_version 1 | ||
125 | * program 1 | ||
126 | * prog_version 1 | ||
127 | * procedure 1 | ||
128 | * cred { | ||
129 | * flavor 1 | ||
130 | * length 1 | ||
131 | * body<RPC_MAX_AUTH_SIZE> 100 xdr units = 400 bytes | ||
132 | * } | ||
133 | * verf { | ||
134 | * flavor 1 | ||
135 | * length 1 | ||
136 | * body<RPC_MAX_AUTH_SIZE> 100 xdr units = 400 bytes | ||
137 | * } | ||
138 | * TOTAL 210 xdr units = 840 bytes | ||
139 | */ | ||
140 | #define RPC_MAX_HEADER_WITH_AUTH \ | ||
141 | (RPC_CALLHDRSIZE + 2*(2+RPC_MAX_AUTH_SIZE/4)) | ||
142 | |||
143 | |||
104 | #endif /* __KERNEL__ */ | 144 | #endif /* __KERNEL__ */ |
105 | #endif /* _LINUX_SUNRPC_MSGPROT_H_ */ | 145 | #endif /* _LINUX_SUNRPC_MSGPROT_H_ */ |
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 73140ee5c638..d6288e89fd9d 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h | |||
@@ -13,11 +13,36 @@ | |||
13 | #include <linux/in.h> | 13 | #include <linux/in.h> |
14 | #include <linux/sunrpc/types.h> | 14 | #include <linux/sunrpc/types.h> |
15 | #include <linux/sunrpc/xdr.h> | 15 | #include <linux/sunrpc/xdr.h> |
16 | #include <linux/sunrpc/auth.h> | ||
16 | #include <linux/sunrpc/svcauth.h> | 17 | #include <linux/sunrpc/svcauth.h> |
17 | #include <linux/wait.h> | 18 | #include <linux/wait.h> |
18 | #include <linux/mm.h> | 19 | #include <linux/mm.h> |
19 | 20 | ||
20 | /* | 21 | /* |
22 | * This is the RPC server thread function prototype | ||
23 | */ | ||
24 | typedef void (*svc_thread_fn)(struct svc_rqst *); | ||
25 | |||
26 | /* | ||
27 | * | ||
28 | * RPC service thread pool. | ||
29 | * | ||
30 | * Pool of threads and temporary sockets. Generally there is only | ||
31 | * a single one of these per RPC service, but on NUMA machines those | ||
32 | * services that can benefit from it (i.e. nfs but not lockd) will | ||
33 | * have one pool per NUMA node. This optimisation reduces cross- | ||
34 | * node traffic on multi-node NUMA NFS servers. | ||
35 | */ | ||
36 | struct svc_pool { | ||
37 | unsigned int sp_id; /* pool id; also node id on NUMA */ | ||
38 | spinlock_t sp_lock; /* protects all fields */ | ||
39 | struct list_head sp_threads; /* idle server threads */ | ||
40 | struct list_head sp_sockets; /* pending sockets */ | ||
41 | unsigned int sp_nrthreads; /* # of threads in pool */ | ||
42 | struct list_head sp_all_threads; /* all server threads */ | ||
43 | } ____cacheline_aligned_in_smp; | ||
44 | |||
45 | /* | ||
21 | * RPC service. | 46 | * RPC service. |
22 | * | 47 | * |
23 | * An RPC service is a ``daemon,'' possibly multithreaded, which | 48 | * An RPC service is a ``daemon,'' possibly multithreaded, which |
@@ -28,8 +53,6 @@ | |||
28 | * We currently do not support more than one RPC program per daemon. | 53 | * We currently do not support more than one RPC program per daemon. |
29 | */ | 54 | */ |
30 | struct svc_serv { | 55 | struct svc_serv { |
31 | struct list_head sv_threads; /* idle server threads */ | ||
32 | struct list_head sv_sockets; /* pending sockets */ | ||
33 | struct svc_program * sv_program; /* RPC program */ | 56 | struct svc_program * sv_program; /* RPC program */ |
34 | struct svc_stat * sv_stats; /* RPC statistics */ | 57 | struct svc_stat * sv_stats; /* RPC statistics */ |
35 | spinlock_t sv_lock; | 58 | spinlock_t sv_lock; |
@@ -40,16 +63,61 @@ struct svc_serv { | |||
40 | struct list_head sv_permsocks; /* all permanent sockets */ | 63 | struct list_head sv_permsocks; /* all permanent sockets */ |
41 | struct list_head sv_tempsocks; /* all temporary sockets */ | 64 | struct list_head sv_tempsocks; /* all temporary sockets */ |
42 | int sv_tmpcnt; /* count of temporary sockets */ | 65 | int sv_tmpcnt; /* count of temporary sockets */ |
66 | struct timer_list sv_temptimer; /* timer for aging temporary sockets */ | ||
43 | 67 | ||
44 | char * sv_name; /* service name */ | 68 | char * sv_name; /* service name */ |
69 | |||
70 | unsigned int sv_nrpools; /* number of thread pools */ | ||
71 | struct svc_pool * sv_pools; /* array of thread pools */ | ||
72 | |||
73 | void (*sv_shutdown)(struct svc_serv *serv); | ||
74 | /* Callback to use when last thread | ||
75 | * exits. | ||
76 | */ | ||
77 | |||
78 | struct module * sv_module; /* optional module to count when | ||
79 | * adding threads */ | ||
80 | svc_thread_fn sv_function; /* main function for threads */ | ||
81 | int sv_kill_signal; /* signal to kill threads */ | ||
45 | }; | 82 | }; |
46 | 83 | ||
47 | /* | 84 | /* |
85 | * We use sv_nrthreads as a reference count. svc_destroy() drops | ||
86 | * this refcount, so we need to bump it up around operations that | ||
87 | * change the number of threads. Horrible, but there it is. | ||
88 | * Should be called with the BKL held. | ||
89 | */ | ||
90 | static inline void svc_get(struct svc_serv *serv) | ||
91 | { | ||
92 | serv->sv_nrthreads++; | ||
93 | } | ||
94 | |||
95 | /* | ||
48 | * Maximum payload size supported by a kernel RPC server. | 96 | * Maximum payload size supported by a kernel RPC server. |
49 | * This is use to determine the max number of pages nfsd is | 97 | * This is use to determine the max number of pages nfsd is |
50 | * willing to return in a single READ operation. | 98 | * willing to return in a single READ operation. |
99 | * | ||
100 | * These happen to all be powers of 2, which is not strictly | ||
101 | * necessary but helps enforce the real limitation, which is | ||
102 | * that they should be multiples of PAGE_CACHE_SIZE. | ||
103 | * | ||
104 | * For UDP transports, a block plus NFS,RPC, and UDP headers | ||
105 | * has to fit into the IP datagram limit of 64K. The largest | ||
106 | * feasible number for all known page sizes is probably 48K, | ||
107 | * but we choose 32K here. This is the same as the historical | ||
108 | * Linux limit; someone who cares more about NFS/UDP performance | ||
109 | * can test a larger number. | ||
110 | * | ||
111 | * For TCP transports we have more freedom. A size of 1MB is | ||
112 | * chosen to match the client limit. Other OSes are known to | ||
113 | * have larger limits, but those numbers are probably beyond | ||
114 | * the point of diminishing returns. | ||
51 | */ | 115 | */ |
52 | #define RPCSVC_MAXPAYLOAD (64*1024u) | 116 | #define RPCSVC_MAXPAYLOAD (1*1024*1024u) |
117 | #define RPCSVC_MAXPAYLOAD_TCP RPCSVC_MAXPAYLOAD | ||
118 | #define RPCSVC_MAXPAYLOAD_UDP (32*1024u) | ||
119 | |||
120 | extern u32 svc_max_payload(const struct svc_rqst *rqstp); | ||
53 | 121 | ||
54 | /* | 122 | /* |
55 | * RPC Requsts and replies are stored in one or more pages. | 123 | * RPC Requsts and replies are stored in one or more pages. |
@@ -123,15 +191,16 @@ static inline void svc_putu32(struct kvec *iov, __be32 val) | |||
123 | /* | 191 | /* |
124 | * The context of a single thread, including the request currently being | 192 | * The context of a single thread, including the request currently being |
125 | * processed. | 193 | * processed. |
126 | * NOTE: First two items must be prev/next. | ||
127 | */ | 194 | */ |
128 | struct svc_rqst { | 195 | struct svc_rqst { |
129 | struct list_head rq_list; /* idle list */ | 196 | struct list_head rq_list; /* idle list */ |
197 | struct list_head rq_all; /* all threads list */ | ||
130 | struct svc_sock * rq_sock; /* socket */ | 198 | struct svc_sock * rq_sock; /* socket */ |
131 | struct sockaddr_in rq_addr; /* peer address */ | 199 | struct sockaddr_in rq_addr; /* peer address */ |
132 | int rq_addrlen; | 200 | int rq_addrlen; |
133 | 201 | ||
134 | struct svc_serv * rq_server; /* RPC service definition */ | 202 | struct svc_serv * rq_server; /* RPC service definition */ |
203 | struct svc_pool * rq_pool; /* thread pool */ | ||
135 | struct svc_procedure * rq_procinfo; /* procedure info */ | 204 | struct svc_procedure * rq_procinfo; /* procedure info */ |
136 | struct auth_ops * rq_authop; /* authentication flavour */ | 205 | struct auth_ops * rq_authop; /* authentication flavour */ |
137 | struct svc_cred rq_cred; /* auth info */ | 206 | struct svc_cred rq_cred; /* auth info */ |
@@ -140,12 +209,11 @@ struct svc_rqst { | |||
140 | 209 | ||
141 | struct xdr_buf rq_arg; | 210 | struct xdr_buf rq_arg; |
142 | struct xdr_buf rq_res; | 211 | struct xdr_buf rq_res; |
143 | struct page * rq_argpages[RPCSVC_MAXPAGES]; | 212 | struct page * rq_pages[RPCSVC_MAXPAGES]; |
144 | struct page * rq_respages[RPCSVC_MAXPAGES]; | 213 | struct page * *rq_respages; /* points into rq_pages */ |
145 | int rq_restailpage; | 214 | int rq_resused; /* number of pages used for result */ |
146 | short rq_argused; /* pages used for argument */ | 215 | |
147 | short rq_arghi; /* pages available in argument page list */ | 216 | struct kvec rq_vec[RPCSVC_MAXPAGES]; /* generally useful.. */ |
148 | short rq_resused; /* pages used for result */ | ||
149 | 217 | ||
150 | __be32 rq_xid; /* transmission id */ | 218 | __be32 rq_xid; /* transmission id */ |
151 | u32 rq_prog; /* program number */ | 219 | u32 rq_prog; /* program number */ |
@@ -180,6 +248,7 @@ struct svc_rqst { | |||
180 | * to prevent encrypting page | 248 | * to prevent encrypting page |
181 | * cache pages */ | 249 | * cache pages */ |
182 | wait_queue_head_t rq_wait; /* synchronization */ | 250 | wait_queue_head_t rq_wait; /* synchronization */ |
251 | struct task_struct *rq_task; /* service thread */ | ||
183 | }; | 252 | }; |
184 | 253 | ||
185 | /* | 254 | /* |
@@ -205,63 +274,18 @@ xdr_ressize_check(struct svc_rqst *rqstp, __be32 *p) | |||
205 | return vec->iov_len <= PAGE_SIZE; | 274 | return vec->iov_len <= PAGE_SIZE; |
206 | } | 275 | } |
207 | 276 | ||
208 | static inline struct page * | 277 | static inline void svc_free_res_pages(struct svc_rqst *rqstp) |
209 | svc_take_res_page(struct svc_rqst *rqstp) | ||
210 | { | ||
211 | if (rqstp->rq_arghi <= rqstp->rq_argused) | ||
212 | return NULL; | ||
213 | rqstp->rq_arghi--; | ||
214 | rqstp->rq_respages[rqstp->rq_resused] = | ||
215 | rqstp->rq_argpages[rqstp->rq_arghi]; | ||
216 | return rqstp->rq_respages[rqstp->rq_resused++]; | ||
217 | } | ||
218 | |||
219 | static inline void svc_take_page(struct svc_rqst *rqstp) | ||
220 | { | ||
221 | if (rqstp->rq_arghi <= rqstp->rq_argused) { | ||
222 | WARN_ON(1); | ||
223 | return; | ||
224 | } | ||
225 | rqstp->rq_arghi--; | ||
226 | rqstp->rq_respages[rqstp->rq_resused] = | ||
227 | rqstp->rq_argpages[rqstp->rq_arghi]; | ||
228 | rqstp->rq_resused++; | ||
229 | } | ||
230 | |||
231 | static inline void svc_pushback_allpages(struct svc_rqst *rqstp) | ||
232 | { | ||
233 | while (rqstp->rq_resused) { | ||
234 | if (rqstp->rq_respages[--rqstp->rq_resused] == NULL) | ||
235 | continue; | ||
236 | rqstp->rq_argpages[rqstp->rq_arghi++] = | ||
237 | rqstp->rq_respages[rqstp->rq_resused]; | ||
238 | rqstp->rq_respages[rqstp->rq_resused] = NULL; | ||
239 | } | ||
240 | } | ||
241 | |||
242 | static inline void svc_pushback_unused_pages(struct svc_rqst *rqstp) | ||
243 | { | 278 | { |
244 | while (rqstp->rq_resused && | 279 | while (rqstp->rq_resused) { |
245 | rqstp->rq_res.pages != &rqstp->rq_respages[rqstp->rq_resused]) { | 280 | struct page **pp = (rqstp->rq_respages + |
246 | 281 | --rqstp->rq_resused); | |
247 | if (rqstp->rq_respages[--rqstp->rq_resused] != NULL) { | 282 | if (*pp) { |
248 | rqstp->rq_argpages[rqstp->rq_arghi++] = | 283 | put_page(*pp); |
249 | rqstp->rq_respages[rqstp->rq_resused]; | 284 | *pp = NULL; |
250 | rqstp->rq_respages[rqstp->rq_resused] = NULL; | ||
251 | } | 285 | } |
252 | } | 286 | } |
253 | } | 287 | } |
254 | 288 | ||
255 | static inline void svc_free_allpages(struct svc_rqst *rqstp) | ||
256 | { | ||
257 | while (rqstp->rq_resused) { | ||
258 | if (rqstp->rq_respages[--rqstp->rq_resused] == NULL) | ||
259 | continue; | ||
260 | put_page(rqstp->rq_respages[rqstp->rq_resused]); | ||
261 | rqstp->rq_respages[rqstp->rq_resused] = NULL; | ||
262 | } | ||
263 | } | ||
264 | |||
265 | struct svc_deferred_req { | 289 | struct svc_deferred_req { |
266 | u32 prot; /* protocol (UDP or TCP) */ | 290 | u32 prot; /* protocol (UDP or TCP) */ |
267 | struct sockaddr_in addr; | 291 | struct sockaddr_in addr; |
@@ -297,6 +321,9 @@ struct svc_version { | |||
297 | struct svc_procedure * vs_proc; /* per-procedure info */ | 321 | struct svc_procedure * vs_proc; /* per-procedure info */ |
298 | u32 vs_xdrsize; /* xdrsize needed for this version */ | 322 | u32 vs_xdrsize; /* xdrsize needed for this version */ |
299 | 323 | ||
324 | unsigned int vs_hidden : 1; /* Don't register with portmapper. | ||
325 | * Only used for nfsacl so far. */ | ||
326 | |||
300 | /* Override dispatch function (e.g. when caching replies). | 327 | /* Override dispatch function (e.g. when caching replies). |
301 | * A return value of 0 means drop the request. | 328 | * A return value of 0 means drop the request. |
302 | * vs_dispatch == NULL means use default dispatcher. | 329 | * vs_dispatch == NULL means use default dispatcher. |
@@ -321,20 +348,21 @@ struct svc_procedure { | |||
321 | }; | 348 | }; |
322 | 349 | ||
323 | /* | 350 | /* |
324 | * This is the RPC server thread function prototype | ||
325 | */ | ||
326 | typedef void (*svc_thread_fn)(struct svc_rqst *); | ||
327 | |||
328 | /* | ||
329 | * Function prototypes. | 351 | * Function prototypes. |
330 | */ | 352 | */ |
331 | struct svc_serv * svc_create(struct svc_program *, unsigned int); | 353 | struct svc_serv * svc_create(struct svc_program *, unsigned int, |
354 | void (*shutdown)(struct svc_serv*)); | ||
332 | int svc_create_thread(svc_thread_fn, struct svc_serv *); | 355 | int svc_create_thread(svc_thread_fn, struct svc_serv *); |
333 | void svc_exit_thread(struct svc_rqst *); | 356 | void svc_exit_thread(struct svc_rqst *); |
357 | struct svc_serv * svc_create_pooled(struct svc_program *, unsigned int, | ||
358 | void (*shutdown)(struct svc_serv*), | ||
359 | svc_thread_fn, int sig, struct module *); | ||
360 | int svc_set_num_threads(struct svc_serv *, struct svc_pool *, int); | ||
334 | void svc_destroy(struct svc_serv *); | 361 | void svc_destroy(struct svc_serv *); |
335 | int svc_process(struct svc_serv *, struct svc_rqst *); | 362 | int svc_process(struct svc_rqst *); |
336 | int svc_register(struct svc_serv *, int, unsigned short); | 363 | int svc_register(struct svc_serv *, int, unsigned short); |
337 | void svc_wake_up(struct svc_serv *); | 364 | void svc_wake_up(struct svc_serv *); |
338 | void svc_reserve(struct svc_rqst *rqstp, int space); | 365 | void svc_reserve(struct svc_rqst *rqstp, int space); |
366 | struct svc_pool * svc_pool_for_cpu(struct svc_serv *serv, int cpu); | ||
339 | 367 | ||
340 | #endif /* SUNRPC_SVC_H */ | 368 | #endif /* SUNRPC_SVC_H */ |
diff --git a/include/linux/sunrpc/svcauth.h b/include/linux/sunrpc/svcauth.h index a6601650deeb..de92619b0826 100644 --- a/include/linux/sunrpc/svcauth.h +++ b/include/linux/sunrpc/svcauth.h | |||
@@ -126,6 +126,7 @@ extern struct auth_domain *auth_domain_find(char *name); | |||
126 | extern struct auth_domain *auth_unix_lookup(struct in_addr addr); | 126 | extern struct auth_domain *auth_unix_lookup(struct in_addr addr); |
127 | extern int auth_unix_forget_old(struct auth_domain *dom); | 127 | extern int auth_unix_forget_old(struct auth_domain *dom); |
128 | extern void svcauth_unix_purge(void); | 128 | extern void svcauth_unix_purge(void); |
129 | extern void svcauth_unix_info_release(void *); | ||
129 | 130 | ||
130 | static inline unsigned long hash_str(char *name, int bits) | 131 | static inline unsigned long hash_str(char *name, int bits) |
131 | { | 132 | { |
diff --git a/include/linux/sunrpc/svcauth_gss.h b/include/linux/sunrpc/svcauth_gss.h index 3a2206f61de0..5a5db16ab660 100644 --- a/include/linux/sunrpc/svcauth_gss.h +++ b/include/linux/sunrpc/svcauth_gss.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * linux/include/linux/svcauth_gss.h | 2 | * linux/include/linux/sunrpc/svcauth_gss.h |
3 | * | 3 | * |
4 | * Bruce Fields <bfields@umich.edu> | 4 | * Bruce Fields <bfields@umich.edu> |
5 | * Copyright (c) 2002 The Regents of the Unviersity of Michigan | 5 | * Copyright (c) 2002 The Regents of the Unviersity of Michigan |
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index b4acb3d37c3f..98b21ad370fd 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h | |||
@@ -20,8 +20,9 @@ struct svc_sock { | |||
20 | struct socket * sk_sock; /* berkeley socket layer */ | 20 | struct socket * sk_sock; /* berkeley socket layer */ |
21 | struct sock * sk_sk; /* INET layer */ | 21 | struct sock * sk_sk; /* INET layer */ |
22 | 22 | ||
23 | struct svc_pool * sk_pool; /* current pool iff queued */ | ||
23 | struct svc_serv * sk_server; /* service for this socket */ | 24 | struct svc_serv * sk_server; /* service for this socket */ |
24 | unsigned int sk_inuse; /* use count */ | 25 | atomic_t sk_inuse; /* use count */ |
25 | unsigned long sk_flags; | 26 | unsigned long sk_flags; |
26 | #define SK_BUSY 0 /* enqueued/receiving */ | 27 | #define SK_BUSY 0 /* enqueued/receiving */ |
27 | #define SK_CONN 1 /* conn pending */ | 28 | #define SK_CONN 1 /* conn pending */ |
@@ -31,9 +32,12 @@ struct svc_sock { | |||
31 | #define SK_DEAD 6 /* socket closed */ | 32 | #define SK_DEAD 6 /* socket closed */ |
32 | #define SK_CHNGBUF 7 /* need to change snd/rcv buffer sizes */ | 33 | #define SK_CHNGBUF 7 /* need to change snd/rcv buffer sizes */ |
33 | #define SK_DEFERRED 8 /* request on sk_deferred */ | 34 | #define SK_DEFERRED 8 /* request on sk_deferred */ |
35 | #define SK_OLD 9 /* used for temp socket aging mark+sweep */ | ||
36 | #define SK_DETACHED 10 /* detached from tempsocks list */ | ||
34 | 37 | ||
35 | int sk_reserved; /* space on outq that is reserved */ | 38 | atomic_t sk_reserved; /* space on outq that is reserved */ |
36 | 39 | ||
40 | spinlock_t sk_defer_lock; /* protects sk_deferred */ | ||
37 | struct list_head sk_deferred; /* deferred requests that need to | 41 | struct list_head sk_deferred; /* deferred requests that need to |
38 | * be revisted */ | 42 | * be revisted */ |
39 | struct mutex sk_mutex; /* to serialize sending data */ | 43 | struct mutex sk_mutex; /* to serialize sending data */ |
@@ -50,6 +54,9 @@ struct svc_sock { | |||
50 | int sk_reclen; /* length of record */ | 54 | int sk_reclen; /* length of record */ |
51 | int sk_tcplen; /* current read length */ | 55 | int sk_tcplen; /* current read length */ |
52 | time_t sk_lastrecv; /* time of last received request */ | 56 | time_t sk_lastrecv; /* time of last received request */ |
57 | |||
58 | /* cache of various info for TCP sockets */ | ||
59 | void *sk_info_authunix; | ||
53 | }; | 60 | }; |
54 | 61 | ||
55 | /* | 62 | /* |
@@ -57,9 +64,14 @@ struct svc_sock { | |||
57 | */ | 64 | */ |
58 | int svc_makesock(struct svc_serv *, int, unsigned short); | 65 | int svc_makesock(struct svc_serv *, int, unsigned short); |
59 | void svc_delete_socket(struct svc_sock *); | 66 | void svc_delete_socket(struct svc_sock *); |
60 | int svc_recv(struct svc_serv *, struct svc_rqst *, long); | 67 | int svc_recv(struct svc_rqst *, long); |
61 | int svc_send(struct svc_rqst *); | 68 | int svc_send(struct svc_rqst *); |
62 | void svc_drop(struct svc_rqst *); | 69 | void svc_drop(struct svc_rqst *); |
63 | void svc_sock_update_bufs(struct svc_serv *serv); | 70 | void svc_sock_update_bufs(struct svc_serv *serv); |
71 | int svc_sock_names(char *buf, struct svc_serv *serv, char *toclose); | ||
72 | int svc_addsock(struct svc_serv *serv, | ||
73 | int fd, | ||
74 | char *name_return, | ||
75 | int *proto); | ||
64 | 76 | ||
65 | #endif /* SUNRPC_SVCSOCK_H */ | 77 | #endif /* SUNRPC_SVCSOCK_H */ |
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 6cf626580752..60394fbc4c70 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kref.h> | 15 | #include <linux/kref.h> |
16 | #include <linux/sunrpc/sched.h> | 16 | #include <linux/sunrpc/sched.h> |
17 | #include <linux/sunrpc/xdr.h> | 17 | #include <linux/sunrpc/xdr.h> |
18 | #include <linux/sunrpc/msg_prot.h> | ||
18 | 19 | ||
19 | extern unsigned int xprt_udp_slot_table_entries; | 20 | extern unsigned int xprt_udp_slot_table_entries; |
20 | extern unsigned int xprt_tcp_slot_table_entries; | 21 | extern unsigned int xprt_tcp_slot_table_entries; |
@@ -24,13 +25,6 @@ extern unsigned int xprt_tcp_slot_table_entries; | |||
24 | #define RPC_MAX_SLOT_TABLE (128U) | 25 | #define RPC_MAX_SLOT_TABLE (128U) |
25 | 26 | ||
26 | /* | 27 | /* |
27 | * RPC call and reply header size as number of 32bit words (verifier | ||
28 | * size computed separately) | ||
29 | */ | ||
30 | #define RPC_CALLHDRSIZE 6 | ||
31 | #define RPC_REPHDRSIZE 4 | ||
32 | |||
33 | /* | ||
34 | * Parameters for choosing a free port | 28 | * Parameters for choosing a free port |
35 | */ | 29 | */ |
36 | extern unsigned int xprt_min_resvport; | 30 | extern unsigned int xprt_min_resvport; |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 2d1c3d5c83ac..3efcfc7e9c6c 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
@@ -599,4 +599,6 @@ asmlinkage long sys_set_robust_list(struct robust_list_head __user *head, | |||
599 | size_t len); | 599 | size_t len); |
600 | asmlinkage long sys_getcpu(unsigned __user *cpu, unsigned __user *node, struct getcpu_cache __user *cache); | 600 | asmlinkage long sys_getcpu(unsigned __user *cpu, unsigned __user *node, struct getcpu_cache __user *cache); |
601 | 601 | ||
602 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]); | ||
603 | |||
602 | #endif | 604 | #endif |
diff --git a/include/linux/tifm.h b/include/linux/tifm.h new file mode 100644 index 000000000000..203dd5e11ecb --- /dev/null +++ b/include/linux/tifm.h | |||
@@ -0,0 +1,158 @@ | |||
1 | /* | ||
2 | * tifm.h - TI FlashMedia driver | ||
3 | * | ||
4 | * Copyright (C) 2006 Alex Dubov <oakad@yahoo.com> | ||
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 | */ | ||
11 | |||
12 | #ifndef _TIFM_H | ||
13 | #define _TIFM_H | ||
14 | |||
15 | #include <linux/spinlock.h> | ||
16 | #include <linux/interrupt.h> | ||
17 | #include <linux/wait.h> | ||
18 | #include <linux/delay.h> | ||
19 | #include <linux/pci.h> | ||
20 | |||
21 | /* Host registers (relative to pci base address): */ | ||
22 | enum { | ||
23 | FM_SET_INTERRUPT_ENABLE = 0x008, | ||
24 | FM_CLEAR_INTERRUPT_ENABLE = 0x00c, | ||
25 | FM_INTERRUPT_STATUS = 0x014 }; | ||
26 | |||
27 | /* Socket registers (relative to socket base address): */ | ||
28 | enum { | ||
29 | SOCK_CONTROL = 0x004, | ||
30 | SOCK_PRESENT_STATE = 0x008, | ||
31 | SOCK_DMA_ADDRESS = 0x00c, | ||
32 | SOCK_DMA_CONTROL = 0x010, | ||
33 | SOCK_DMA_FIFO_INT_ENABLE_SET = 0x014, | ||
34 | SOCK_DMA_FIFO_INT_ENABLE_CLEAR = 0x018, | ||
35 | SOCK_DMA_FIFO_STATUS = 0x020, | ||
36 | SOCK_FIFO_CONTROL = 0x024, | ||
37 | SOCK_FIFO_PAGE_SIZE = 0x028, | ||
38 | SOCK_MMCSD_COMMAND = 0x104, | ||
39 | SOCK_MMCSD_ARG_LOW = 0x108, | ||
40 | SOCK_MMCSD_ARG_HIGH = 0x10c, | ||
41 | SOCK_MMCSD_CONFIG = 0x110, | ||
42 | SOCK_MMCSD_STATUS = 0x114, | ||
43 | SOCK_MMCSD_INT_ENABLE = 0x118, | ||
44 | SOCK_MMCSD_COMMAND_TO = 0x11c, | ||
45 | SOCK_MMCSD_DATA_TO = 0x120, | ||
46 | SOCK_MMCSD_DATA = 0x124, | ||
47 | SOCK_MMCSD_BLOCK_LEN = 0x128, | ||
48 | SOCK_MMCSD_NUM_BLOCKS = 0x12c, | ||
49 | SOCK_MMCSD_BUFFER_CONFIG = 0x130, | ||
50 | SOCK_MMCSD_SPI_CONFIG = 0x134, | ||
51 | SOCK_MMCSD_SDIO_MODE_CONFIG = 0x138, | ||
52 | SOCK_MMCSD_RESPONSE = 0x144, | ||
53 | SOCK_MMCSD_SDIO_SR = 0x164, | ||
54 | SOCK_MMCSD_SYSTEM_CONTROL = 0x168, | ||
55 | SOCK_MMCSD_SYSTEM_STATUS = 0x16c, | ||
56 | SOCK_MS_COMMAND = 0x184, | ||
57 | SOCK_MS_DATA = 0x188, | ||
58 | SOCK_MS_STATUS = 0x18c, | ||
59 | SOCK_MS_SYSTEM = 0x190, | ||
60 | SOCK_FIFO_ACCESS = 0x200 }; | ||
61 | |||
62 | |||
63 | #define TIFM_IRQ_ENABLE 0x80000000 | ||
64 | #define TIFM_IRQ_SOCKMASK 0x00000001 | ||
65 | #define TIFM_IRQ_CARDMASK 0x00000100 | ||
66 | #define TIFM_IRQ_FIFOMASK 0x00010000 | ||
67 | #define TIFM_IRQ_SETALL 0xffffffff | ||
68 | #define TIFM_IRQ_SETALLSOCK 0x0000000f | ||
69 | |||
70 | #define TIFM_CTRL_LED 0x00000040 | ||
71 | #define TIFM_CTRL_FAST_CLK 0x00000100 | ||
72 | |||
73 | #define TIFM_SOCK_STATE_OCCUPIED 0x00000008 | ||
74 | #define TIFM_SOCK_STATE_POWERED 0x00000080 | ||
75 | |||
76 | #define TIFM_FIFO_ENABLE 0x00000001 /* Meaning of this constant is unverified */ | ||
77 | #define TIFM_FIFO_INT_SETALL 0x0000ffff | ||
78 | #define TIFM_FIFO_INTMASK 0x00000005 /* Meaning of this constant is unverified */ | ||
79 | |||
80 | #define TIFM_DMA_RESET 0x00000002 /* Meaning of this constant is unverified */ | ||
81 | #define TIFM_DMA_TX 0x00008000 /* Meaning of this constant is unverified */ | ||
82 | #define TIFM_DMA_EN 0x00000001 /* Meaning of this constant is unverified */ | ||
83 | |||
84 | typedef enum {FM_NULL = 0, FM_XD = 0x01, FM_MS = 0x02, FM_SD = 0x03} tifm_media_id; | ||
85 | |||
86 | struct tifm_driver; | ||
87 | struct tifm_dev { | ||
88 | char __iomem *addr; | ||
89 | spinlock_t lock; | ||
90 | tifm_media_id media_id; | ||
91 | char wq_name[KOBJ_NAME_LEN]; | ||
92 | struct workqueue_struct *wq; | ||
93 | |||
94 | unsigned int (*signal_irq)(struct tifm_dev *sock, | ||
95 | unsigned int sock_irq_status); | ||
96 | |||
97 | struct tifm_driver *drv; | ||
98 | struct device dev; | ||
99 | }; | ||
100 | |||
101 | struct tifm_driver { | ||
102 | tifm_media_id *id_table; | ||
103 | int (*probe)(struct tifm_dev *dev); | ||
104 | void (*remove)(struct tifm_dev *dev); | ||
105 | |||
106 | struct device_driver driver; | ||
107 | }; | ||
108 | |||
109 | struct tifm_adapter { | ||
110 | char __iomem *addr; | ||
111 | unsigned int irq_status; | ||
112 | unsigned int insert_mask; | ||
113 | unsigned int remove_mask; | ||
114 | spinlock_t lock; | ||
115 | unsigned int id; | ||
116 | unsigned int max_sockets; | ||
117 | char wq_name[KOBJ_NAME_LEN]; | ||
118 | unsigned int inhibit_new_cards; | ||
119 | struct workqueue_struct *wq; | ||
120 | struct work_struct media_inserter; | ||
121 | struct work_struct media_remover; | ||
122 | struct tifm_dev **sockets; | ||
123 | struct class_device cdev; | ||
124 | struct device *dev; | ||
125 | |||
126 | void (*eject)(struct tifm_adapter *fm, struct tifm_dev *sock); | ||
127 | }; | ||
128 | |||
129 | struct tifm_adapter *tifm_alloc_adapter(void); | ||
130 | void tifm_free_device(struct device *dev); | ||
131 | void tifm_free_adapter(struct tifm_adapter *fm); | ||
132 | int tifm_add_adapter(struct tifm_adapter *fm); | ||
133 | void tifm_remove_adapter(struct tifm_adapter *fm); | ||
134 | struct tifm_dev *tifm_alloc_device(struct tifm_adapter *fm, unsigned int id); | ||
135 | int tifm_register_driver(struct tifm_driver *drv); | ||
136 | void tifm_unregister_driver(struct tifm_driver *drv); | ||
137 | void tifm_eject(struct tifm_dev *sock); | ||
138 | int tifm_map_sg(struct tifm_dev *sock, struct scatterlist *sg, int nents, | ||
139 | int direction); | ||
140 | void tifm_unmap_sg(struct tifm_dev *sock, struct scatterlist *sg, int nents, | ||
141 | int direction); | ||
142 | |||
143 | |||
144 | static inline void *tifm_get_drvdata(struct tifm_dev *dev) | ||
145 | { | ||
146 | return dev_get_drvdata(&dev->dev); | ||
147 | } | ||
148 | |||
149 | static inline void tifm_set_drvdata(struct tifm_dev *dev, void *data) | ||
150 | { | ||
151 | dev_set_drvdata(&dev->dev, data); | ||
152 | } | ||
153 | |||
154 | struct tifm_device_id { | ||
155 | tifm_media_id media_id; | ||
156 | }; | ||
157 | |||
158 | #endif | ||
diff --git a/include/linux/topology.h b/include/linux/topology.h index ec1eca85290a..da508d1998e4 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -89,6 +89,7 @@ | |||
89 | #define SD_SIBLING_INIT (struct sched_domain) { \ | 89 | #define SD_SIBLING_INIT (struct sched_domain) { \ |
90 | .span = CPU_MASK_NONE, \ | 90 | .span = CPU_MASK_NONE, \ |
91 | .parent = NULL, \ | 91 | .parent = NULL, \ |
92 | .child = NULL, \ | ||
92 | .groups = NULL, \ | 93 | .groups = NULL, \ |
93 | .min_interval = 1, \ | 94 | .min_interval = 1, \ |
94 | .max_interval = 2, \ | 95 | .max_interval = 2, \ |
@@ -114,11 +115,44 @@ | |||
114 | #endif | 115 | #endif |
115 | #endif /* CONFIG_SCHED_SMT */ | 116 | #endif /* CONFIG_SCHED_SMT */ |
116 | 117 | ||
118 | #ifdef CONFIG_SCHED_MC | ||
119 | /* Common values for MC siblings. for now mostly derived from SD_CPU_INIT */ | ||
120 | #ifndef SD_MC_INIT | ||
121 | #define SD_MC_INIT (struct sched_domain) { \ | ||
122 | .span = CPU_MASK_NONE, \ | ||
123 | .parent = NULL, \ | ||
124 | .child = NULL, \ | ||
125 | .groups = NULL, \ | ||
126 | .min_interval = 1, \ | ||
127 | .max_interval = 4, \ | ||
128 | .busy_factor = 64, \ | ||
129 | .imbalance_pct = 125, \ | ||
130 | .cache_nice_tries = 1, \ | ||
131 | .per_cpu_gain = 100, \ | ||
132 | .busy_idx = 2, \ | ||
133 | .idle_idx = 1, \ | ||
134 | .newidle_idx = 2, \ | ||
135 | .wake_idx = 1, \ | ||
136 | .forkexec_idx = 1, \ | ||
137 | .flags = SD_LOAD_BALANCE \ | ||
138 | | SD_BALANCE_NEWIDLE \ | ||
139 | | SD_BALANCE_EXEC \ | ||
140 | | SD_WAKE_AFFINE \ | ||
141 | | SD_SHARE_PKG_RESOURCES\ | ||
142 | | BALANCE_FOR_MC_POWER, \ | ||
143 | .last_balance = jiffies, \ | ||
144 | .balance_interval = 1, \ | ||
145 | .nr_balance_failed = 0, \ | ||
146 | } | ||
147 | #endif | ||
148 | #endif /* CONFIG_SCHED_MC */ | ||
149 | |||
117 | /* Common values for CPUs */ | 150 | /* Common values for CPUs */ |
118 | #ifndef SD_CPU_INIT | 151 | #ifndef SD_CPU_INIT |
119 | #define SD_CPU_INIT (struct sched_domain) { \ | 152 | #define SD_CPU_INIT (struct sched_domain) { \ |
120 | .span = CPU_MASK_NONE, \ | 153 | .span = CPU_MASK_NONE, \ |
121 | .parent = NULL, \ | 154 | .parent = NULL, \ |
155 | .child = NULL, \ | ||
122 | .groups = NULL, \ | 156 | .groups = NULL, \ |
123 | .min_interval = 1, \ | 157 | .min_interval = 1, \ |
124 | .max_interval = 4, \ | 158 | .max_interval = 4, \ |
@@ -135,7 +169,7 @@ | |||
135 | | SD_BALANCE_NEWIDLE \ | 169 | | SD_BALANCE_NEWIDLE \ |
136 | | SD_BALANCE_EXEC \ | 170 | | SD_BALANCE_EXEC \ |
137 | | SD_WAKE_AFFINE \ | 171 | | SD_WAKE_AFFINE \ |
138 | | BALANCE_FOR_POWER, \ | 172 | | BALANCE_FOR_PKG_POWER,\ |
139 | .last_balance = jiffies, \ | 173 | .last_balance = jiffies, \ |
140 | .balance_interval = 1, \ | 174 | .balance_interval = 1, \ |
141 | .nr_balance_failed = 0, \ | 175 | .nr_balance_failed = 0, \ |
@@ -146,6 +180,7 @@ | |||
146 | #define SD_ALLNODES_INIT (struct sched_domain) { \ | 180 | #define SD_ALLNODES_INIT (struct sched_domain) { \ |
147 | .span = CPU_MASK_NONE, \ | 181 | .span = CPU_MASK_NONE, \ |
148 | .parent = NULL, \ | 182 | .parent = NULL, \ |
183 | .child = NULL, \ | ||
149 | .groups = NULL, \ | 184 | .groups = NULL, \ |
150 | .min_interval = 64, \ | 185 | .min_interval = 64, \ |
151 | .max_interval = 64*num_online_cpus(), \ | 186 | .max_interval = 64*num_online_cpus(), \ |
@@ -165,15 +200,6 @@ | |||
165 | .nr_balance_failed = 0, \ | 200 | .nr_balance_failed = 0, \ |
166 | } | 201 | } |
167 | 202 | ||
168 | #ifdef CONFIG_SCHED_MC | ||
169 | #ifndef SD_MC_INIT | ||
170 | /* for now its same as SD_CPU_INIT. | ||
171 | * TBD: Tune Domain parameters! | ||
172 | */ | ||
173 | #define SD_MC_INIT SD_CPU_INIT | ||
174 | #endif | ||
175 | #endif | ||
176 | |||
177 | #ifdef CONFIG_NUMA | 203 | #ifdef CONFIG_NUMA |
178 | #ifndef SD_NODE_INIT | 204 | #ifndef SD_NODE_INIT |
179 | #error Please define an appropriate SD_NODE_INIT in include/asm/topology.h!!! | 205 | #error Please define an appropriate SD_NODE_INIT in include/asm/topology.h!!! |
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h index 58c961c9e170..5c8473bb6882 100644 --- a/include/linux/tty_driver.h +++ b/include/linux/tty_driver.h | |||
@@ -219,7 +219,8 @@ extern struct list_head tty_drivers; | |||
219 | 219 | ||
220 | struct tty_driver *alloc_tty_driver(int lines); | 220 | struct tty_driver *alloc_tty_driver(int lines); |
221 | void put_tty_driver(struct tty_driver *driver); | 221 | void put_tty_driver(struct tty_driver *driver); |
222 | void tty_set_operations(struct tty_driver *driver, struct tty_operations *op); | 222 | void tty_set_operations(struct tty_driver *driver, |
223 | const struct tty_operations *op); | ||
223 | 224 | ||
224 | /* tty driver magic number */ | 225 | /* tty driver magic number */ |
225 | #define TTY_DRIVER_MAGIC 0x5402 | 226 | #define TTY_DRIVER_MAGIC 0x5402 |
diff --git a/include/linux/uinput.h b/include/linux/uinput.h index 7168302f9844..1fd61eeed664 100644 --- a/include/linux/uinput.h +++ b/include/linux/uinput.h | |||
@@ -22,12 +22,18 @@ | |||
22 | * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org> | 22 | * Author: Aristeu Sergio Rozanski Filho <aris@cathedrallabs.org> |
23 | * | 23 | * |
24 | * Changes/Revisions: | 24 | * Changes/Revisions: |
25 | * 0.3 24/05/2006 (Anssi Hannula <anssi.hannulagmail.com>) | ||
26 | * - update ff support for the changes in kernel interface | ||
27 | * - add UINPUT_VERSION | ||
25 | * 0.2 16/10/2004 (Micah Dowty <micah@navi.cx>) | 28 | * 0.2 16/10/2004 (Micah Dowty <micah@navi.cx>) |
26 | * - added force feedback support | 29 | * - added force feedback support |
27 | * - added UI_SET_PHYS | 30 | * - added UI_SET_PHYS |
28 | * 0.1 20/06/2002 | 31 | * 0.1 20/06/2002 |
29 | * - first public version | 32 | * - first public version |
30 | */ | 33 | */ |
34 | |||
35 | #define UINPUT_VERSION 3 | ||
36 | |||
31 | #ifdef __KERNEL__ | 37 | #ifdef __KERNEL__ |
32 | #define UINPUT_MINOR 223 | 38 | #define UINPUT_MINOR 223 |
33 | #define UINPUT_NAME "uinput" | 39 | #define UINPUT_NAME "uinput" |
@@ -45,7 +51,10 @@ struct uinput_request { | |||
45 | 51 | ||
46 | union { | 52 | union { |
47 | int effect_id; | 53 | int effect_id; |
48 | struct ff_effect* effect; | 54 | struct { |
55 | struct ff_effect *effect; | ||
56 | struct ff_effect *old; | ||
57 | } upload; | ||
49 | } u; | 58 | } u; |
50 | }; | 59 | }; |
51 | 60 | ||
@@ -58,6 +67,7 @@ struct uinput_device { | |||
58 | unsigned char head; | 67 | unsigned char head; |
59 | unsigned char tail; | 68 | unsigned char tail; |
60 | struct input_event buff[UINPUT_BUFFER_SIZE]; | 69 | struct input_event buff[UINPUT_BUFFER_SIZE]; |
70 | int ff_effects_max; | ||
61 | 71 | ||
62 | struct uinput_request *requests[UINPUT_NUM_REQUESTS]; | 72 | struct uinput_request *requests[UINPUT_NUM_REQUESTS]; |
63 | wait_queue_head_t requests_waitq; | 73 | wait_queue_head_t requests_waitq; |
@@ -69,6 +79,7 @@ struct uinput_ff_upload { | |||
69 | int request_id; | 79 | int request_id; |
70 | int retval; | 80 | int retval; |
71 | struct ff_effect effect; | 81 | struct ff_effect effect; |
82 | struct ff_effect old; | ||
72 | }; | 83 | }; |
73 | 84 | ||
74 | struct uinput_ff_erase { | 85 | struct uinput_ff_erase { |
@@ -98,33 +109,33 @@ struct uinput_ff_erase { | |||
98 | #define UI_BEGIN_FF_ERASE _IOWR(UINPUT_IOCTL_BASE, 202, struct uinput_ff_erase) | 109 | #define UI_BEGIN_FF_ERASE _IOWR(UINPUT_IOCTL_BASE, 202, struct uinput_ff_erase) |
99 | #define UI_END_FF_ERASE _IOW(UINPUT_IOCTL_BASE, 203, struct uinput_ff_erase) | 110 | #define UI_END_FF_ERASE _IOW(UINPUT_IOCTL_BASE, 203, struct uinput_ff_erase) |
100 | 111 | ||
101 | /* To write a force-feedback-capable driver, the upload_effect | 112 | /* |
113 | * To write a force-feedback-capable driver, the upload_effect | ||
102 | * and erase_effect callbacks in input_dev must be implemented. | 114 | * and erase_effect callbacks in input_dev must be implemented. |
103 | * The uinput driver will generate a fake input event when one of | 115 | * The uinput driver will generate a fake input event when one of |
104 | * these callbacks are invoked. The userspace code then uses | 116 | * these callbacks are invoked. The userspace code then uses |
105 | * ioctls to retrieve additional parameters and send the return code. | 117 | * ioctls to retrieve additional parameters and send the return code. |
106 | * The callback blocks until this return code is sent. | 118 | * The callback blocks until this return code is sent. |
107 | * | 119 | * |
108 | * The described callback mechanism is only used if EV_FF is set. | 120 | * The described callback mechanism is only used if ff_effects_max |
109 | * Otherwise, default implementations of upload_effect and erase_effect | 121 | * is set. |
110 | * are used. | ||
111 | * | 122 | * |
112 | * To implement upload_effect(): | 123 | * To implement upload_effect(): |
113 | * 1. Wait for an event with type==EV_UINPUT and code==UI_FF_UPLOAD. | 124 | * 1. Wait for an event with type == EV_UINPUT and code == UI_FF_UPLOAD. |
114 | * A request ID will be given in 'value'. | 125 | * A request ID will be given in 'value'. |
115 | * 2. Allocate a uinput_ff_upload struct, fill in request_id with | 126 | * 2. Allocate a uinput_ff_upload struct, fill in request_id with |
116 | * the 'value' from the EV_UINPUT event. | 127 | * the 'value' from the EV_UINPUT event. |
117 | * 3. Issue a UI_BEGIN_FF_UPLOAD ioctl, giving it the | 128 | * 3. Issue a UI_BEGIN_FF_UPLOAD ioctl, giving it the |
118 | * uinput_ff_upload struct. It will be filled in with the | 129 | * uinput_ff_upload struct. It will be filled in with the |
119 | * ff_effect passed to upload_effect(). | 130 | * ff_effects passed to upload_effect(). |
120 | * 4. Perform the effect upload, and place the modified ff_effect | 131 | * 4. Perform the effect upload, and place a return code back into |
121 | * and a return code back into the uinput_ff_upload struct. | 132 | the uinput_ff_upload struct. |
122 | * 5. Issue a UI_END_FF_UPLOAD ioctl, also giving it the | 133 | * 5. Issue a UI_END_FF_UPLOAD ioctl, also giving it the |
123 | * uinput_ff_upload_effect struct. This will complete execution | 134 | * uinput_ff_upload_effect struct. This will complete execution |
124 | * of our upload_effect() handler. | 135 | * of our upload_effect() handler. |
125 | * | 136 | * |
126 | * To implement erase_effect(): | 137 | * To implement erase_effect(): |
127 | * 1. Wait for an event with type==EV_UINPUT and code==UI_FF_ERASE. | 138 | * 1. Wait for an event with type == EV_UINPUT and code == UI_FF_ERASE. |
128 | * A request ID will be given in 'value'. | 139 | * A request ID will be given in 'value'. |
129 | * 2. Allocate a uinput_ff_erase struct, fill in request_id with | 140 | * 2. Allocate a uinput_ff_erase struct, fill in request_id with |
130 | * the 'value' from the EV_UINPUT event. | 141 | * the 'value' from the EV_UINPUT event. |
@@ -133,13 +144,13 @@ struct uinput_ff_erase { | |||
133 | * effect ID passed to erase_effect(). | 144 | * effect ID passed to erase_effect(). |
134 | * 4. Perform the effect erasure, and place a return code back | 145 | * 4. Perform the effect erasure, and place a return code back |
135 | * into the uinput_ff_erase struct. | 146 | * into the uinput_ff_erase struct. |
136 | * and a return code back into the uinput_ff_erase struct. | ||
137 | * 5. Issue a UI_END_FF_ERASE ioctl, also giving it the | 147 | * 5. Issue a UI_END_FF_ERASE ioctl, also giving it the |
138 | * uinput_ff_erase_effect struct. This will complete execution | 148 | * uinput_ff_erase_effect struct. This will complete execution |
139 | * of our erase_effect() handler. | 149 | * of our erase_effect() handler. |
140 | */ | 150 | */ |
141 | 151 | ||
142 | /* This is the new event type, used only by uinput. | 152 | /* |
153 | * This is the new event type, used only by uinput. | ||
143 | * 'code' is UI_FF_UPLOAD or UI_FF_ERASE, and 'value' | 154 | * 'code' is UI_FF_UPLOAD or UI_FF_ERASE, and 'value' |
144 | * is the unique request ID. This number was picked | 155 | * is the unique request ID. This number was picked |
145 | * arbitrarily, above EV_MAX (since the input system | 156 | * arbitrarily, above EV_MAX (since the input system |
diff --git a/include/linux/unistd.h b/include/linux/unistd.h index c18c60f3254e..aa8d5b5e2e3e 100644 --- a/include/linux/unistd.h +++ b/include/linux/unistd.h | |||
@@ -1,12 +1,8 @@ | |||
1 | #ifndef _LINUX_UNISTD_H_ | 1 | #ifndef _LINUX_UNISTD_H_ |
2 | #define _LINUX_UNISTD_H_ | 2 | #define _LINUX_UNISTD_H_ |
3 | 3 | ||
4 | #ifdef __KERNEL__ | ||
5 | extern int errno; | ||
6 | #endif | ||
7 | |||
8 | /* | 4 | /* |
9 | * Include machine specific syscallX macros | 5 | * Include machine specific syscall numbers |
10 | */ | 6 | */ |
11 | #include <asm/unistd.h> | 7 | #include <asm/unistd.h> |
12 | 8 | ||
diff --git a/include/linux/utsname.h b/include/linux/utsname.h index 13e1da0c538d..a4555fe3754c 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h | |||
@@ -30,7 +30,65 @@ struct new_utsname { | |||
30 | char domainname[65]; | 30 | char domainname[65]; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | extern struct new_utsname system_utsname; | 33 | #ifdef __KERNEL__ |
34 | 34 | ||
35 | extern struct rw_semaphore uts_sem; | 35 | #include <linux/sched.h> |
36 | #include <linux/kref.h> | ||
37 | #include <linux/nsproxy.h> | ||
38 | #include <asm/atomic.h> | ||
39 | |||
40 | struct uts_namespace { | ||
41 | struct kref kref; | ||
42 | struct new_utsname name; | ||
43 | }; | ||
44 | extern struct uts_namespace init_uts_ns; | ||
45 | |||
46 | static inline void get_uts_ns(struct uts_namespace *ns) | ||
47 | { | ||
48 | kref_get(&ns->kref); | ||
49 | } | ||
50 | |||
51 | #ifdef CONFIG_UTS_NS | ||
52 | extern int unshare_utsname(unsigned long unshare_flags, | ||
53 | struct uts_namespace **new_uts); | ||
54 | extern int copy_utsname(int flags, struct task_struct *tsk); | ||
55 | extern void free_uts_ns(struct kref *kref); | ||
56 | |||
57 | static inline void put_uts_ns(struct uts_namespace *ns) | ||
58 | { | ||
59 | kref_put(&ns->kref, free_uts_ns); | ||
60 | } | ||
61 | #else | ||
62 | static inline int unshare_utsname(unsigned long unshare_flags, | ||
63 | struct uts_namespace **new_uts) | ||
64 | { | ||
65 | if (unshare_flags & CLONE_NEWUTS) | ||
66 | return -EINVAL; | ||
67 | |||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | static inline int copy_utsname(int flags, struct task_struct *tsk) | ||
72 | { | ||
73 | return 0; | ||
74 | } | ||
75 | static inline void put_uts_ns(struct uts_namespace *ns) | ||
76 | { | ||
77 | } | ||
36 | #endif | 78 | #endif |
79 | |||
80 | static inline struct new_utsname *utsname(void) | ||
81 | { | ||
82 | return ¤t->nsproxy->uts_ns->name; | ||
83 | } | ||
84 | |||
85 | static inline struct new_utsname *init_utsname(void) | ||
86 | { | ||
87 | return &init_uts_ns.name; | ||
88 | } | ||
89 | |||
90 | extern struct rw_semaphore uts_sem; | ||
91 | |||
92 | #endif /* __KERNEL__ */ | ||
93 | |||
94 | #endif /* _LINUX_UTSNAME_H */ | ||
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 44c59da26ed2..c5fdf6259548 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -276,6 +276,82 @@ struct v4l2_fmtdesc | |||
276 | 276 | ||
277 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | 277 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
278 | 278 | ||
279 | #if 1 | ||
280 | /* Experimental Frame Size and frame rate enumeration */ | ||
281 | /* | ||
282 | * F R A M E S I Z E E N U M E R A T I O N | ||
283 | */ | ||
284 | enum v4l2_frmsizetypes | ||
285 | { | ||
286 | V4L2_FRMSIZE_TYPE_DISCRETE = 1, | ||
287 | V4L2_FRMSIZE_TYPE_CONTINUOUS = 2, | ||
288 | V4L2_FRMSIZE_TYPE_STEPWISE = 3, | ||
289 | }; | ||
290 | |||
291 | struct v4l2_frmsize_discrete | ||
292 | { | ||
293 | __u32 width; /* Frame width [pixel] */ | ||
294 | __u32 height; /* Frame height [pixel] */ | ||
295 | }; | ||
296 | |||
297 | struct v4l2_frmsize_stepwise | ||
298 | { | ||
299 | __u32 min_width; /* Minimum frame width [pixel] */ | ||
300 | __u32 max_width; /* Maximum frame width [pixel] */ | ||
301 | __u32 step_width; /* Frame width step size [pixel] */ | ||
302 | __u32 min_height; /* Minimum frame height [pixel] */ | ||
303 | __u32 max_height; /* Maximum frame height [pixel] */ | ||
304 | __u32 step_height; /* Frame height step size [pixel] */ | ||
305 | }; | ||
306 | |||
307 | struct v4l2_frmsizeenum | ||
308 | { | ||
309 | __u32 index; /* Frame size number */ | ||
310 | __u32 pixel_format; /* Pixel format */ | ||
311 | __u32 type; /* Frame size type the device supports. */ | ||
312 | |||
313 | union { /* Frame size */ | ||
314 | struct v4l2_frmsize_discrete discrete; | ||
315 | struct v4l2_frmsize_stepwise stepwise; | ||
316 | }; | ||
317 | |||
318 | __u32 reserved[2]; /* Reserved space for future use */ | ||
319 | }; | ||
320 | |||
321 | /* | ||
322 | * F R A M E R A T E E N U M E R A T I O N | ||
323 | */ | ||
324 | enum v4l2_frmivaltypes | ||
325 | { | ||
326 | V4L2_FRMIVAL_TYPE_DISCRETE = 1, | ||
327 | V4L2_FRMIVAL_TYPE_CONTINUOUS = 2, | ||
328 | V4L2_FRMIVAL_TYPE_STEPWISE = 3, | ||
329 | }; | ||
330 | |||
331 | struct v4l2_frmival_stepwise | ||
332 | { | ||
333 | struct v4l2_fract min; /* Minimum frame interval [s] */ | ||
334 | struct v4l2_fract max; /* Maximum frame interval [s] */ | ||
335 | struct v4l2_fract step; /* Frame interval step size [s] */ | ||
336 | }; | ||
337 | |||
338 | struct v4l2_frmivalenum | ||
339 | { | ||
340 | __u32 index; /* Frame format index */ | ||
341 | __u32 pixel_format; /* Pixel format */ | ||
342 | __u32 width; /* Frame width */ | ||
343 | __u32 height; /* Frame height */ | ||
344 | __u32 type; /* Frame interval type the device supports. */ | ||
345 | |||
346 | union { /* Frame interval */ | ||
347 | struct v4l2_fract discrete; | ||
348 | struct v4l2_frmival_stepwise stepwise; | ||
349 | }; | ||
350 | |||
351 | __u32 reserved[2]; /* Reserved space for future use */ | ||
352 | }; | ||
353 | #endif | ||
354 | |||
279 | /* | 355 | /* |
280 | * T I M E C O D E | 356 | * T I M E C O D E |
281 | */ | 357 | */ |
@@ -1249,6 +1325,10 @@ struct v4l2_streamparm | |||
1249 | #define VIDIOC_G_EXT_CTRLS _IOWR ('V', 71, struct v4l2_ext_controls) | 1325 | #define VIDIOC_G_EXT_CTRLS _IOWR ('V', 71, struct v4l2_ext_controls) |
1250 | #define VIDIOC_S_EXT_CTRLS _IOWR ('V', 72, struct v4l2_ext_controls) | 1326 | #define VIDIOC_S_EXT_CTRLS _IOWR ('V', 72, struct v4l2_ext_controls) |
1251 | #define VIDIOC_TRY_EXT_CTRLS _IOWR ('V', 73, struct v4l2_ext_controls) | 1327 | #define VIDIOC_TRY_EXT_CTRLS _IOWR ('V', 73, struct v4l2_ext_controls) |
1328 | #if 1 | ||
1329 | #define VIDIOC_ENUM_FRAMESIZES _IOWR ('V', 74, struct v4l2_frmsizeenum) | ||
1330 | #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR ('V', 75, struct v4l2_frmivalenum) | ||
1331 | #endif | ||
1252 | 1332 | ||
1253 | #ifdef __OLD_VIDIOC_ | 1333 | #ifdef __OLD_VIDIOC_ |
1254 | /* for compatibility, will go away some day */ | 1334 | /* for compatibility, will go away some day */ |
diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h index 1009d3fe1fc2..37a1a41f5b65 100644 --- a/include/linux/vt_kern.h +++ b/include/linux/vt_kern.h | |||
@@ -84,4 +84,11 @@ void reset_vc(struct vc_data *vc); | |||
84 | extern char con_buf[CON_BUF_SIZE]; | 84 | extern char con_buf[CON_BUF_SIZE]; |
85 | extern struct semaphore con_buf_sem; | 85 | extern struct semaphore con_buf_sem; |
86 | 86 | ||
87 | struct vt_spawn_console { | ||
88 | spinlock_t lock; | ||
89 | struct pid *pid; | ||
90 | int sig; | ||
91 | }; | ||
92 | extern struct vt_spawn_console vt_spawn_con; | ||
93 | |||
87 | #endif /* _VT_KERN_H */ | 94 | #endif /* _VT_KERN_H */ |
diff --git a/include/linux/wavefront.h b/include/linux/wavefront.h deleted file mode 100644 index 51ab3c933acd..000000000000 --- a/include/linux/wavefront.h +++ /dev/null | |||
@@ -1,675 +0,0 @@ | |||
1 | #ifndef __wavefront_h__ | ||
2 | #define __wavefront_h__ | ||
3 | |||
4 | /* WaveFront header file. | ||
5 | * | ||
6 | * Copyright (C) by Paul Barton-Davis 1998 | ||
7 | * | ||
8 | * This program is distributed under the GNU GENERAL PUBLIC LICENSE (GPL) | ||
9 | * Version 2 (June 1991). See the "COPYING" file distributed with this software | ||
10 | * for more info. | ||
11 | */ | ||
12 | |||
13 | #if (!defined(__GNUC__) && !defined(__GNUG__)) | ||
14 | |||
15 | You will not be able to compile this file correctly without gcc, because | ||
16 | it is necessary to pack the "wavefront_alias" structure to a size | ||
17 | of 22 bytes, corresponding to 16-bit alignment (as would have been | ||
18 | the case on the original platform, MS-DOS). If this is not done, | ||
19 | then WavePatch-format files cannot be read/written correctly. | ||
20 | The method used to do this here ("__attribute__((packed)") is | ||
21 | completely compiler dependent. | ||
22 | |||
23 | All other wavefront_* types end up aligned to 32 bit values and | ||
24 | still have the same (correct) size. | ||
25 | |||
26 | #else | ||
27 | |||
28 | /* However, note that as of G++ 2.7.3.2, g++ was unable to | ||
29 | correctly parse *type* __attribute__ tags. It will do the | ||
30 | right thing if we use the "packed" attribute on each struct | ||
31 | member, which has the same semantics anyway. | ||
32 | */ | ||
33 | |||
34 | #endif /* __GNUC__ */ | ||
35 | |||
36 | /***************************** WARNING ******************************** | ||
37 | PLEASE DO NOT MODIFY THIS FILE IN ANY WAY THAT AFFECTS ITS ABILITY TO | ||
38 | BE USED WITH EITHER C *OR* C++. | ||
39 | **********************************************************************/ | ||
40 | |||
41 | #ifndef NUM_MIDIKEYS | ||
42 | #define NUM_MIDIKEYS 128 | ||
43 | #endif /* NUM_MIDIKEYS */ | ||
44 | |||
45 | #ifndef NUM_MIDICHANNELS | ||
46 | #define NUM_MIDICHANNELS 16 | ||
47 | #endif /* NUM_MIDICHANNELS */ | ||
48 | |||
49 | /* These are very useful/important. the original wavefront interface | ||
50 | was developed on a 16 bit system, where sizeof(int) = 2 | ||
51 | bytes. Defining things like this makes the code much more portable, and | ||
52 | easier to understand without having to toggle back and forth | ||
53 | between a 16-bit view of the world and a 32-bit one. | ||
54 | */ | ||
55 | |||
56 | typedef short INT16; | ||
57 | typedef unsigned short UINT16; | ||
58 | typedef int INT32; | ||
59 | typedef unsigned int UINT32; | ||
60 | typedef char CHAR8; | ||
61 | typedef unsigned char UCHAR8; | ||
62 | |||
63 | /* Pseudo-commands not part of the WaveFront command set. | ||
64 | These are used for various driver controls and direct | ||
65 | hardware control. | ||
66 | */ | ||
67 | |||
68 | #define WFC_DEBUG_DRIVER 0 | ||
69 | #define WFC_FX_IOCTL 1 | ||
70 | #define WFC_PATCH_STATUS 2 | ||
71 | #define WFC_PROGRAM_STATUS 3 | ||
72 | #define WFC_SAMPLE_STATUS 4 | ||
73 | #define WFC_DISABLE_INTERRUPTS 5 | ||
74 | #define WFC_ENABLE_INTERRUPTS 6 | ||
75 | #define WFC_INTERRUPT_STATUS 7 | ||
76 | #define WFC_ROMSAMPLES_RDONLY 8 | ||
77 | #define WFC_IDENTIFY_SLOT_TYPE 9 | ||
78 | |||
79 | /* Wavefront synth commands | ||
80 | */ | ||
81 | |||
82 | #define WFC_DOWNLOAD_SAMPLE 0x80 | ||
83 | #define WFC_DOWNLOAD_BLOCK 0x81 | ||
84 | #define WFC_DOWNLOAD_MULTISAMPLE 0x82 | ||
85 | #define WFC_DOWNLOAD_SAMPLE_ALIAS 0x83 | ||
86 | #define WFC_DELETE_SAMPLE 0x84 | ||
87 | #define WFC_REPORT_FREE_MEMORY 0x85 | ||
88 | #define WFC_DOWNLOAD_PATCH 0x86 | ||
89 | #define WFC_DOWNLOAD_PROGRAM 0x87 | ||
90 | #define WFC_SET_SYNTHVOL 0x89 | ||
91 | #define WFC_SET_NVOICES 0x8B | ||
92 | #define WFC_DOWNLOAD_DRUM 0x90 | ||
93 | #define WFC_GET_SYNTHVOL 0x92 | ||
94 | #define WFC_GET_NVOICES 0x94 | ||
95 | #define WFC_DISABLE_CHANNEL 0x9A | ||
96 | #define WFC_ENABLE_CHANNEL 0x9B | ||
97 | #define WFC_MISYNTH_OFF 0x9D | ||
98 | #define WFC_MISYNTH_ON 0x9E | ||
99 | #define WFC_FIRMWARE_VERSION 0x9F | ||
100 | #define WFC_GET_NSAMPLES 0xA0 | ||
101 | #define WFC_DISABLE_DRUM_PROGRAM 0xA2 | ||
102 | #define WFC_UPLOAD_PATCH 0xA3 | ||
103 | #define WFC_UPLOAD_PROGRAM 0xA4 | ||
104 | #define WFC_SET_TUNING 0xA6 | ||
105 | #define WFC_GET_TUNING 0xA7 | ||
106 | #define WFC_VMIDI_ON 0xA8 | ||
107 | #define WFC_VMIDI_OFF 0xA9 | ||
108 | #define WFC_MIDI_STATUS 0xAA | ||
109 | #define WFC_GET_CHANNEL_STATUS 0xAB | ||
110 | #define WFC_DOWNLOAD_SAMPLE_HEADER 0xAC | ||
111 | #define WFC_UPLOAD_SAMPLE_HEADER 0xAD | ||
112 | #define WFC_UPLOAD_MULTISAMPLE 0xAE | ||
113 | #define WFC_UPLOAD_SAMPLE_ALIAS 0xAF | ||
114 | #define WFC_IDENTIFY_SAMPLE_TYPE 0xB0 | ||
115 | #define WFC_DOWNLOAD_EDRUM_PROGRAM 0xB1 | ||
116 | #define WFC_UPLOAD_EDRUM_PROGRAM 0xB2 | ||
117 | #define WFC_SET_EDRUM_CHANNEL 0xB3 | ||
118 | #define WFC_INSTOUT_LEVELS 0xB4 | ||
119 | #define WFC_PEAKOUT_LEVELS 0xB5 | ||
120 | #define WFC_REPORT_CHANNEL_PROGRAMS 0xB6 | ||
121 | #define WFC_HARDWARE_VERSION 0xCF | ||
122 | #define WFC_UPLOAD_SAMPLE_PARAMS 0xD7 | ||
123 | #define WFC_DOWNLOAD_OS 0xF1 | ||
124 | #define WFC_NOOP 0xFF | ||
125 | |||
126 | #define WF_MAX_SAMPLE 512 | ||
127 | #define WF_MAX_PATCH 256 | ||
128 | #define WF_MAX_PROGRAM 128 | ||
129 | |||
130 | #define WF_SECTION_MAX 44 /* longest OS section length */ | ||
131 | |||
132 | /* # of bytes we send to the board when sending it various kinds of | ||
133 | substantive data, such as samples, patches and programs. | ||
134 | */ | ||
135 | |||
136 | #define WF_PROGRAM_BYTES 32 | ||
137 | #define WF_PATCH_BYTES 132 | ||
138 | #define WF_SAMPLE_BYTES 27 | ||
139 | #define WF_SAMPLE_HDR_BYTES 25 | ||
140 | #define WF_ALIAS_BYTES 25 | ||
141 | #define WF_DRUM_BYTES 9 | ||
142 | #define WF_MSAMPLE_BYTES 259 /* (MIDI_KEYS * 2) + 3 */ | ||
143 | |||
144 | #define WF_ACK 0x80 | ||
145 | #define WF_DMA_ACK 0x81 | ||
146 | |||
147 | /* OR-values for MIDI status bits */ | ||
148 | |||
149 | #define WF_MIDI_VIRTUAL_ENABLED 0x1 | ||
150 | #define WF_MIDI_VIRTUAL_IS_EXTERNAL 0x2 | ||
151 | #define WF_MIDI_IN_TO_SYNTH_DISABLED 0x4 | ||
152 | |||
153 | /* slot indexes for struct address_info: makes code a little more mnemonic */ | ||
154 | |||
155 | #define WF_SYNTH_SLOT 0 | ||
156 | #define WF_INTERNAL_MIDI_SLOT 1 | ||
157 | #define WF_EXTERNAL_MIDI_SLOT 2 | ||
158 | |||
159 | /* Magic MIDI bytes used to switch I/O streams on the ICS2115 MPU401 | ||
160 | emulation. Note these NEVER show up in output from the device and | ||
161 | should NEVER be used in input unless Virtual MIDI mode has been | ||
162 | disabled. If they do show up as input, the results are unpredictable. | ||
163 | */ | ||
164 | |||
165 | #define WF_EXTERNAL_SWITCH 0xFD | ||
166 | #define WF_INTERNAL_SWITCH 0xF9 | ||
167 | |||
168 | /* Debugging flags */ | ||
169 | |||
170 | #define WF_DEBUG_CMD 0x1 | ||
171 | #define WF_DEBUG_DATA 0x2 | ||
172 | #define WF_DEBUG_LOAD_PATCH 0x4 | ||
173 | #define WF_DEBUG_IO 0x8 | ||
174 | |||
175 | /* WavePatch file format stuff */ | ||
176 | |||
177 | #define WF_WAVEPATCH_VERSION 120; /* Current version number (1.2) */ | ||
178 | #define WF_MAX_COMMENT 64 /* Comment length */ | ||
179 | #define WF_NUM_LAYERS 4 | ||
180 | #define WF_NAME_LENGTH 32 | ||
181 | #define WF_SOURCE_LENGTH 260 | ||
182 | |||
183 | #define BankFileID "Bank" | ||
184 | #define DrumkitFileID "DrumKit" | ||
185 | #define ProgramFileID "Program" | ||
186 | |||
187 | struct wf_envelope | ||
188 | { | ||
189 | UCHAR8 attack_time:7; | ||
190 | UCHAR8 Unused1:1; | ||
191 | |||
192 | UCHAR8 decay1_time:7; | ||
193 | UCHAR8 Unused2:1; | ||
194 | |||
195 | UCHAR8 decay2_time:7; | ||
196 | UCHAR8 Unused3:1; | ||
197 | |||
198 | UCHAR8 sustain_time:7; | ||
199 | UCHAR8 Unused4:1; | ||
200 | |||
201 | UCHAR8 release_time:7; | ||
202 | UCHAR8 Unused5:1; | ||
203 | |||
204 | UCHAR8 release2_time:7; | ||
205 | UCHAR8 Unused6:1; | ||
206 | |||
207 | CHAR8 attack_level; | ||
208 | CHAR8 decay1_level; | ||
209 | CHAR8 decay2_level; | ||
210 | CHAR8 sustain_level; | ||
211 | CHAR8 release_level; | ||
212 | |||
213 | UCHAR8 attack_velocity:7; | ||
214 | UCHAR8 Unused7:1; | ||
215 | |||
216 | UCHAR8 volume_velocity:7; | ||
217 | UCHAR8 Unused8:1; | ||
218 | |||
219 | UCHAR8 keyboard_scaling:7; | ||
220 | UCHAR8 Unused9:1; | ||
221 | }; | ||
222 | typedef struct wf_envelope wavefront_envelope; | ||
223 | |||
224 | struct wf_lfo | ||
225 | { | ||
226 | UCHAR8 sample_number; | ||
227 | |||
228 | UCHAR8 frequency:7; | ||
229 | UCHAR8 Unused1:1; | ||
230 | |||
231 | UCHAR8 am_src:4; | ||
232 | UCHAR8 fm_src:4; | ||
233 | |||
234 | CHAR8 fm_amount; | ||
235 | CHAR8 am_amount; | ||
236 | CHAR8 start_level; | ||
237 | CHAR8 end_level; | ||
238 | |||
239 | UCHAR8 ramp_delay:7; | ||
240 | UCHAR8 wave_restart:1; /* for LFO2 only */ | ||
241 | |||
242 | UCHAR8 ramp_time:7; | ||
243 | UCHAR8 Unused2:1; | ||
244 | }; | ||
245 | typedef struct wf_lfo wavefront_lfo; | ||
246 | |||
247 | struct wf_patch | ||
248 | { | ||
249 | INT16 frequency_bias; /* ** THIS IS IN MOTOROLA FORMAT!! ** */ | ||
250 | |||
251 | UCHAR8 amplitude_bias:7; | ||
252 | UCHAR8 Unused1:1; | ||
253 | |||
254 | UCHAR8 portamento:7; | ||
255 | UCHAR8 Unused2:1; | ||
256 | |||
257 | UCHAR8 sample_number; | ||
258 | |||
259 | UCHAR8 pitch_bend:4; | ||
260 | UCHAR8 sample_msb:1; | ||
261 | UCHAR8 Unused3:3; | ||
262 | |||
263 | UCHAR8 mono:1; | ||
264 | UCHAR8 retrigger:1; | ||
265 | UCHAR8 nohold:1; | ||
266 | UCHAR8 restart:1; | ||
267 | UCHAR8 filterconfig:2; /* SDK says "not used" */ | ||
268 | UCHAR8 reuse:1; | ||
269 | UCHAR8 reset_lfo:1; | ||
270 | |||
271 | UCHAR8 fm_src2:4; | ||
272 | UCHAR8 fm_src1:4; | ||
273 | |||
274 | CHAR8 fm_amount1; | ||
275 | CHAR8 fm_amount2; | ||
276 | |||
277 | UCHAR8 am_src:4; | ||
278 | UCHAR8 Unused4:4; | ||
279 | |||
280 | CHAR8 am_amount; | ||
281 | |||
282 | UCHAR8 fc1_mode:4; | ||
283 | UCHAR8 fc2_mode:4; | ||
284 | |||
285 | CHAR8 fc1_mod_amount; | ||
286 | CHAR8 fc1_keyboard_scaling; | ||
287 | CHAR8 fc1_bias; | ||
288 | CHAR8 fc2_mod_amount; | ||
289 | CHAR8 fc2_keyboard_scaling; | ||
290 | CHAR8 fc2_bias; | ||
291 | |||
292 | UCHAR8 randomizer:7; | ||
293 | UCHAR8 Unused5:1; | ||
294 | |||
295 | struct wf_envelope envelope1; | ||
296 | struct wf_envelope envelope2; | ||
297 | struct wf_lfo lfo1; | ||
298 | struct wf_lfo lfo2; | ||
299 | }; | ||
300 | typedef struct wf_patch wavefront_patch; | ||
301 | |||
302 | struct wf_layer | ||
303 | { | ||
304 | UCHAR8 patch_number; | ||
305 | |||
306 | UCHAR8 mix_level:7; | ||
307 | UCHAR8 mute:1; | ||
308 | |||
309 | UCHAR8 split_point:7; | ||
310 | UCHAR8 play_below:1; | ||
311 | |||
312 | UCHAR8 pan_mod_src:2; | ||
313 | UCHAR8 pan_or_mod:1; | ||
314 | UCHAR8 pan:4; | ||
315 | UCHAR8 split_type:1; | ||
316 | }; | ||
317 | typedef struct wf_layer wavefront_layer; | ||
318 | |||
319 | struct wf_program | ||
320 | { | ||
321 | struct wf_layer layer[WF_NUM_LAYERS]; | ||
322 | }; | ||
323 | typedef struct wf_program wavefront_program; | ||
324 | |||
325 | struct wf_sample_offset | ||
326 | { | ||
327 | INT32 Fraction:4; | ||
328 | INT32 Integer:20; | ||
329 | INT32 Unused:8; | ||
330 | }; | ||
331 | typedef struct wf_sample_offset wavefront_sample_offset; | ||
332 | |||
333 | /* Sample slot types */ | ||
334 | |||
335 | #define WF_ST_SAMPLE 0 | ||
336 | #define WF_ST_MULTISAMPLE 1 | ||
337 | #define WF_ST_ALIAS 2 | ||
338 | #define WF_ST_EMPTY 3 | ||
339 | |||
340 | /* pseudo's */ | ||
341 | |||
342 | #define WF_ST_DRUM 4 | ||
343 | #define WF_ST_PROGRAM 5 | ||
344 | #define WF_ST_PATCH 6 | ||
345 | #define WF_ST_SAMPLEHDR 7 | ||
346 | |||
347 | #define WF_ST_MASK 0xf | ||
348 | |||
349 | /* Flags for slot status. These occupy the upper bits of the same byte | ||
350 | as a sample type. | ||
351 | */ | ||
352 | |||
353 | #define WF_SLOT_USED 0x80 /* XXX don't rely on this being accurate */ | ||
354 | #define WF_SLOT_FILLED 0x40 | ||
355 | #define WF_SLOT_ROM 0x20 | ||
356 | |||
357 | #define WF_SLOT_MASK 0xf0 | ||
358 | |||
359 | /* channel constants */ | ||
360 | |||
361 | #define WF_CH_MONO 0 | ||
362 | #define WF_CH_LEFT 1 | ||
363 | #define WF_CH_RIGHT 2 | ||
364 | |||
365 | /* Sample formats */ | ||
366 | |||
367 | #define LINEAR_16BIT 0 | ||
368 | #define WHITE_NOISE 1 | ||
369 | #define LINEAR_8BIT 2 | ||
370 | #define MULAW_8BIT 3 | ||
371 | |||
372 | #define WF_SAMPLE_IS_8BIT(smpl) ((smpl)->SampleResolution&2) | ||
373 | |||
374 | |||
375 | /* | ||
376 | |||
377 | Because most/all of the sample data we pass in via pointers has | ||
378 | never been copied (just mmap-ed into user space straight from the | ||
379 | disk), it would be nice to allow handling of multi-channel sample | ||
380 | data without forcing user-level extraction of the relevant bytes. | ||
381 | |||
382 | So, we need a way of specifying which channel to use (the WaveFront | ||
383 | only handles mono samples in a given slot), and the only way to do | ||
384 | this without using some struct other than wavefront_sample as the | ||
385 | interface is the awful hack of using the unused bits in a | ||
386 | wavefront_sample: | ||
387 | |||
388 | Val Meaning | ||
389 | --- ------- | ||
390 | 0 no channel selection (use channel 1, sample is MONO) | ||
391 | 1 use first channel, and skip one | ||
392 | 2 use second channel, and skip one | ||
393 | 3 use third channel, and skip two | ||
394 | 4 use fourth channel, skip three | ||
395 | 5 use fifth channel, skip four | ||
396 | 6 use six channel, skip five | ||
397 | |||
398 | |||
399 | This can handle up to 4 channels, and anyone downloading >4 channels | ||
400 | of sample data just to select one of them needs to find some tools | ||
401 | like sox ... | ||
402 | |||
403 | NOTE: values 0, 1 and 2 correspond to WF_CH_* above. This is | ||
404 | important. | ||
405 | |||
406 | */ | ||
407 | |||
408 | #define WF_SET_CHANNEL(samp,chn) \ | ||
409 | (samp)->Unused1 = chn & 0x1; \ | ||
410 | (samp)->Unused2 = chn & 0x2; \ | ||
411 | (samp)->Unused3 = chn & 0x4 | ||
412 | |||
413 | #define WF_GET_CHANNEL(samp) \ | ||
414 | (((samp)->Unused3 << 2)|((samp)->Unused2<<1)|(samp)->Unused1) | ||
415 | |||
416 | typedef struct wf_sample { | ||
417 | struct wf_sample_offset sampleStartOffset; | ||
418 | struct wf_sample_offset loopStartOffset; | ||
419 | struct wf_sample_offset loopEndOffset; | ||
420 | struct wf_sample_offset sampleEndOffset; | ||
421 | INT16 FrequencyBias; | ||
422 | UCHAR8 SampleResolution:2; /* sample_format */ | ||
423 | UCHAR8 Unused1:1; | ||
424 | UCHAR8 Loop:1; | ||
425 | UCHAR8 Bidirectional:1; | ||
426 | UCHAR8 Unused2:1; | ||
427 | UCHAR8 Reverse:1; | ||
428 | UCHAR8 Unused3:1; | ||
429 | } wavefront_sample; | ||
430 | |||
431 | typedef struct wf_multisample { | ||
432 | INT16 NumberOfSamples; /* log2 of the number of samples */ | ||
433 | INT16 SampleNumber[NUM_MIDIKEYS]; | ||
434 | } wavefront_multisample; | ||
435 | |||
436 | typedef struct wf_alias { | ||
437 | INT16 OriginalSample; | ||
438 | |||
439 | struct wf_sample_offset sampleStartOffset; | ||
440 | struct wf_sample_offset loopStartOffset; | ||
441 | struct wf_sample_offset sampleEndOffset; | ||
442 | struct wf_sample_offset loopEndOffset; | ||
443 | |||
444 | INT16 FrequencyBias; | ||
445 | |||
446 | UCHAR8 SampleResolution:2; | ||
447 | UCHAR8 Unused1:1; | ||
448 | UCHAR8 Loop:1; | ||
449 | UCHAR8 Bidirectional:1; | ||
450 | UCHAR8 Unused2:1; | ||
451 | UCHAR8 Reverse:1; | ||
452 | UCHAR8 Unused3:1; | ||
453 | |||
454 | /* This structure is meant to be padded only to 16 bits on their | ||
455 | original. Of course, whoever wrote their documentation didn't | ||
456 | realize that sizeof(struct) can be >= | ||
457 | sum(sizeof(struct-fields)) and so thought that giving a C level | ||
458 | description of the structs used in WavePatch files was | ||
459 | sufficient. I suppose it was, as long as you remember the | ||
460 | standard 16->32 bit issues. | ||
461 | */ | ||
462 | |||
463 | UCHAR8 sixteen_bit_padding; | ||
464 | } __attribute__((packed)) wavefront_alias; | ||
465 | |||
466 | typedef struct wf_drum { | ||
467 | UCHAR8 PatchNumber; | ||
468 | UCHAR8 MixLevel:7; | ||
469 | UCHAR8 Unmute:1; | ||
470 | UCHAR8 Group:4; | ||
471 | UCHAR8 Unused1:4; | ||
472 | UCHAR8 PanModSource:2; | ||
473 | UCHAR8 PanModulated:1; | ||
474 | UCHAR8 PanAmount:4; | ||
475 | UCHAR8 Unused2:1; | ||
476 | } wavefront_drum; | ||
477 | |||
478 | typedef struct wf_drumkit { | ||
479 | struct wf_drum drum[NUM_MIDIKEYS]; | ||
480 | } wavefront_drumkit; | ||
481 | |||
482 | typedef struct wf_channel_programs { | ||
483 | UCHAR8 Program[NUM_MIDICHANNELS]; | ||
484 | } wavefront_channel_programs; | ||
485 | |||
486 | /* How to get MIDI channel status from the data returned by | ||
487 | a WFC_GET_CHANNEL_STATUS command (a struct wf_channel_programs) | ||
488 | */ | ||
489 | |||
490 | #define WF_CHANNEL_STATUS(ch,wcp) (wcp)[(ch/7)] & (1<<((ch)%7)) | ||
491 | |||
492 | typedef union wf_any { | ||
493 | wavefront_sample s; | ||
494 | wavefront_multisample ms; | ||
495 | wavefront_alias a; | ||
496 | wavefront_program pr; | ||
497 | wavefront_patch p; | ||
498 | wavefront_drum d; | ||
499 | } wavefront_any; | ||
500 | |||
501 | /* Hannu Solvainen hoped that his "patch_info" struct in soundcard.h | ||
502 | might work for other wave-table based patch loading situations. | ||
503 | Alas, his fears were correct. The WaveFront doesn't even come with | ||
504 | just "patches", but several different kind of structures that | ||
505 | control the sound generation process. | ||
506 | */ | ||
507 | |||
508 | typedef struct wf_patch_info { | ||
509 | |||
510 | /* the first two fields are used by the OSS "patch loading" interface | ||
511 | only, and are unused by the current user-level library. | ||
512 | */ | ||
513 | |||
514 | INT16 key; /* Use WAVEFRONT_PATCH here */ | ||
515 | UINT16 devno; /* fill in when sending */ | ||
516 | UCHAR8 subkey; /* WF_ST_{SAMPLE,ALIAS,etc.} */ | ||
517 | |||
518 | #define WAVEFRONT_FIND_FREE_SAMPLE_SLOT 999 | ||
519 | |||
520 | UINT16 number; /* patch/sample/prog number */ | ||
521 | |||
522 | UINT32 size; /* size of any data included in | ||
523 | one of the fields in `hdrptr', or | ||
524 | as `dataptr'. | ||
525 | |||
526 | NOTE: for actual samples, this is | ||
527 | the size of the *SELECTED CHANNEL* | ||
528 | even if more data is actually available. | ||
529 | |||
530 | So, a stereo sample (2 channels) of | ||
531 | 6000 bytes total has `size' = 3000. | ||
532 | |||
533 | See the macros and comments for | ||
534 | WF_{GET,SET}_CHANNEL above. | ||
535 | |||
536 | */ | ||
537 | wavefront_any __user *hdrptr; /* user-space ptr to hdr bytes */ | ||
538 | UINT16 __user *dataptr; /* actual sample data */ | ||
539 | |||
540 | wavefront_any hdr; /* kernel-space copy of hdr bytes */ | ||
541 | } wavefront_patch_info; | ||
542 | |||
543 | /* The maximum number of bytes we will ever move to or from user space | ||
544 | in response to a WFC_* command. This obviously doesn't cover | ||
545 | actual sample data. | ||
546 | */ | ||
547 | |||
548 | #define WF_MAX_READ sizeof(wavefront_multisample) | ||
549 | #define WF_MAX_WRITE sizeof(wavefront_multisample) | ||
550 | |||
551 | /* | ||
552 | This allows us to execute any WF command except the download/upload | ||
553 | ones, which are handled differently due to copyin/copyout issues as | ||
554 | well as data-nybbling to/from the card. | ||
555 | */ | ||
556 | |||
557 | typedef struct wavefront_control { | ||
558 | int cmd; /* WFC_* */ | ||
559 | char status; /* return status to user-space */ | ||
560 | unsigned char rbuf[WF_MAX_READ]; /* bytes read from card */ | ||
561 | unsigned char wbuf[WF_MAX_WRITE]; /* bytes written to card */ | ||
562 | } wavefront_control; | ||
563 | |||
564 | #define WFCTL_WFCMD 0x1 | ||
565 | #define WFCTL_LOAD_SPP 0x2 | ||
566 | |||
567 | /* Modulator table */ | ||
568 | |||
569 | #define WF_MOD_LFO1 0 | ||
570 | #define WF_MOD_LFO2 1 | ||
571 | #define WF_MOD_ENV1 2 | ||
572 | #define WF_MOD_ENV2 3 | ||
573 | #define WF_MOD_KEYBOARD 4 | ||
574 | #define WF_MOD_LOGKEY 5 | ||
575 | #define WF_MOD_VELOCITY 6 | ||
576 | #define WF_MOD_LOGVEL 7 | ||
577 | #define WF_MOD_RANDOM 8 | ||
578 | #define WF_MOD_PRESSURE 9 | ||
579 | #define WF_MOD_MOD_WHEEL 10 | ||
580 | #define WF_MOD_1 WF_MOD_MOD_WHEEL | ||
581 | #define WF_MOD_BREATH 11 | ||
582 | #define WF_MOD_2 WF_MOD_BREATH | ||
583 | #define WF_MOD_FOOT 12 | ||
584 | #define WF_MOD_4 WF_MOD_FOOT | ||
585 | #define WF_MOD_VOLUME 13 | ||
586 | #define WF_MOD_7 WF_MOD_VOLUME | ||
587 | #define WF_MOD_PAN 14 | ||
588 | #define WF_MOD_10 WF_MOD_PAN | ||
589 | #define WF_MOD_EXPR 15 | ||
590 | #define WF_MOD_11 WF_MOD_EXPR | ||
591 | |||
592 | /* FX-related material */ | ||
593 | |||
594 | typedef struct wf_fx_info { | ||
595 | int request; /* see list below */ | ||
596 | int data[4]; /* we don't need much */ | ||
597 | } wavefront_fx_info; | ||
598 | |||
599 | /* support for each of these will be forthcoming once I or someone | ||
600 | else has figured out which of the addresses on page 6 and page 7 of | ||
601 | the YSS225 control each parameter. Incidentally, these come from | ||
602 | the Windows driver interface, but again, Turtle Beach didn't | ||
603 | document the API to use them. | ||
604 | */ | ||
605 | |||
606 | #define WFFX_SETOUTGAIN 0 | ||
607 | #define WFFX_SETSTEREOOUTGAIN 1 | ||
608 | #define WFFX_SETREVERBIN1GAIN 2 | ||
609 | #define WFFX_SETREVERBIN2GAIN 3 | ||
610 | #define WFFX_SETREVERBIN3GAIN 4 | ||
611 | #define WFFX_SETCHORUSINPORT 5 | ||
612 | #define WFFX_SETREVERBIN1PORT 6 | ||
613 | #define WFFX_SETREVERBIN2PORT 7 | ||
614 | #define WFFX_SETREVERBIN3PORT 8 | ||
615 | #define WFFX_SETEFFECTPORT 9 | ||
616 | #define WFFX_SETAUXPORT 10 | ||
617 | #define WFFX_SETREVERBTYPE 11 | ||
618 | #define WFFX_SETREVERBDELAY 12 | ||
619 | #define WFFX_SETCHORUSLFO 13 | ||
620 | #define WFFX_SETCHORUSPMD 14 | ||
621 | #define WFFX_SETCHORUSAMD 15 | ||
622 | #define WFFX_SETEFFECT 16 | ||
623 | #define WFFX_SETBASEALL 17 | ||
624 | #define WFFX_SETREVERBALL 18 | ||
625 | #define WFFX_SETCHORUSALL 20 | ||
626 | #define WFFX_SETREVERBDEF 22 | ||
627 | #define WFFX_SETCHORUSDEF 23 | ||
628 | #define WFFX_DELAYSETINGAIN 24 | ||
629 | #define WFFX_DELAYSETFBGAIN 25 | ||
630 | #define WFFX_DELAYSETFBLPF 26 | ||
631 | #define WFFX_DELAYSETGAIN 27 | ||
632 | #define WFFX_DELAYSETTIME 28 | ||
633 | #define WFFX_DELAYSETFBTIME 29 | ||
634 | #define WFFX_DELAYSETALL 30 | ||
635 | #define WFFX_DELAYSETDEF 32 | ||
636 | #define WFFX_SDELAYSETINGAIN 33 | ||
637 | #define WFFX_SDELAYSETFBGAIN 34 | ||
638 | #define WFFX_SDELAYSETFBLPF 35 | ||
639 | #define WFFX_SDELAYSETGAIN 36 | ||
640 | #define WFFX_SDELAYSETTIME 37 | ||
641 | #define WFFX_SDELAYSETFBTIME 38 | ||
642 | #define WFFX_SDELAYSETALL 39 | ||
643 | #define WFFX_SDELAYSETDEF 41 | ||
644 | #define WFFX_DEQSETINGAIN 42 | ||
645 | #define WFFX_DEQSETFILTER 43 | ||
646 | #define WFFX_DEQSETALL 44 | ||
647 | #define WFFX_DEQSETDEF 46 | ||
648 | #define WFFX_MUTE 47 | ||
649 | #define WFFX_FLANGESETBALANCE 48 | ||
650 | #define WFFX_FLANGESETDELAY 49 | ||
651 | #define WFFX_FLANGESETDWFFX_TH 50 | ||
652 | #define WFFX_FLANGESETFBGAIN 51 | ||
653 | #define WFFX_FLANGESETINGAIN 52 | ||
654 | #define WFFX_FLANGESETLFO 53 | ||
655 | #define WFFX_FLANGESETALL 54 | ||
656 | #define WFFX_FLANGESETDEF 56 | ||
657 | #define WFFX_PITCHSETSHIFT 57 | ||
658 | #define WFFX_PITCHSETBALANCE 58 | ||
659 | #define WFFX_PITCHSETALL 59 | ||
660 | #define WFFX_PITCHSETDEF 61 | ||
661 | #define WFFX_SRSSETINGAIN 62 | ||
662 | #define WFFX_SRSSETSPACE 63 | ||
663 | #define WFFX_SRSSETCENTER 64 | ||
664 | #define WFFX_SRSSETGAIN 65 | ||
665 | #define WFFX_SRSSETMODE 66 | ||
666 | #define WFFX_SRSSETDEF 68 | ||
667 | |||
668 | /* Allow direct user-space control over FX memory/coefficient data. | ||
669 | In theory this could be used to download the FX microprogram, | ||
670 | but it would be a little slower, and involve some weird code. | ||
671 | */ | ||
672 | |||
673 | #define WFFX_MEMSET 69 | ||
674 | |||
675 | #endif /* __wavefront_h__ */ | ||
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 4f4d98addb44..a341c8032866 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/linux/writeback.h. | 2 | * include/linux/writeback.h |
3 | */ | 3 | */ |
4 | #ifndef WRITEBACK_H | 4 | #ifndef WRITEBACK_H |
5 | #define WRITEBACK_H | 5 | #define WRITEBACK_H |
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 430afd058269..8ae7f744917b 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h | |||
@@ -129,7 +129,8 @@ enum | |||
129 | #define XFRM_MODE_TUNNEL 1 | 129 | #define XFRM_MODE_TUNNEL 1 |
130 | #define XFRM_MODE_ROUTEOPTIMIZATION 2 | 130 | #define XFRM_MODE_ROUTEOPTIMIZATION 2 |
131 | #define XFRM_MODE_IN_TRIGGER 3 | 131 | #define XFRM_MODE_IN_TRIGGER 3 |
132 | #define XFRM_MODE_MAX 4 | 132 | #define XFRM_MODE_BEET 4 |
133 | #define XFRM_MODE_MAX 5 | ||
133 | 134 | ||
134 | /* Netlink configuration messages. */ | 135 | /* Netlink configuration messages. */ |
135 | enum { | 136 | enum { |
diff --git a/include/media/audiochip.h b/include/media/audiochip.h index 1fd4a2207574..db8823d45a7d 100644 --- a/include/media/audiochip.h +++ b/include/media/audiochip.h | |||
@@ -18,7 +18,9 @@ enum audiochip { | |||
18 | AUDIO_CHIP_TDA9874, | 18 | AUDIO_CHIP_TDA9874, |
19 | AUDIO_CHIP_PIC16C54, | 19 | AUDIO_CHIP_PIC16C54, |
20 | /* Provided by msp3400.c */ | 20 | /* Provided by msp3400.c */ |
21 | AUDIO_CHIP_MSP34XX | 21 | AUDIO_CHIP_MSP34XX, |
22 | /* Provided by wm8775.c */ | ||
23 | AUDIO_CHIP_WM8775 | ||
22 | }; | 24 | }; |
23 | 25 | ||
24 | #endif /* AUDIOCHIP_H */ | 26 | #endif /* AUDIOCHIP_H */ |
diff --git a/include/mtd/Kbuild b/include/mtd/Kbuild index 13e7a3c6d794..e0fe92b03a4e 100644 --- a/include/mtd/Kbuild +++ b/include/mtd/Kbuild | |||
@@ -1,6 +1,5 @@ | |||
1 | header-y += inftl-user.h | 1 | header-y += inftl-user.h |
2 | header-y += jffs2-user.h | 2 | header-y += jffs2-user.h |
3 | header-y += mtd-abi.h | ||
3 | header-y += mtd-user.h | 4 | header-y += mtd-user.h |
4 | header-y += nftl-user.h | 5 | header-y += nftl-user.h |
5 | |||
6 | unifdef-y += mtd-abi.h | ||
diff --git a/include/mtd/mtd-abi.h b/include/mtd/mtd-abi.h index b0a67b7ffdcd..f913c30d7b89 100644 --- a/include/mtd/mtd-abi.h +++ b/include/mtd/mtd-abi.h | |||
@@ -7,12 +7,6 @@ | |||
7 | #ifndef __MTD_ABI_H__ | 7 | #ifndef __MTD_ABI_H__ |
8 | #define __MTD_ABI_H__ | 8 | #define __MTD_ABI_H__ |
9 | 9 | ||
10 | #ifndef __KERNEL__ | ||
11 | /* Urgh. The whole point of splitting this out into | ||
12 | separate files was to avoid #ifdef __KERNEL__ */ | ||
13 | #define __user | ||
14 | #endif | ||
15 | |||
16 | struct erase_info_user { | 10 | struct erase_info_user { |
17 | uint32_t start; | 11 | uint32_t start; |
18 | uint32_t length; | 12 | uint32_t length; |
diff --git a/include/video/s1d13xxxfb.h b/include/video/s1d13xxxfb.h index f06cc88607f5..c99d261df8f7 100644 --- a/include/video/s1d13xxxfb.h +++ b/include/video/s1d13xxxfb.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* drivers/video/s1d3xxxfb.h | 1 | /* include/video/s1d13xxxfb.h |
2 | * | 2 | * |
3 | * (c) 2004 Simtec Electronics | 3 | * (c) 2004 Simtec Electronics |
4 | * (c) 2005 Thibaut VARENE <varenet@parisc-linux.org> | 4 | * (c) 2005 Thibaut VARENE <varenet@parisc-linux.org> |
diff --git a/include/video/sstfb.h b/include/video/sstfb.h index 3570f9c9b111..5dbf5e7e50a8 100644 --- a/include/video/sstfb.h +++ b/include/video/sstfb.h | |||
@@ -68,10 +68,6 @@ | |||
68 | # define print_var(X,Y...) | 68 | # define print_var(X,Y...) |
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | #define eprintk(X...) printk(KERN_ERR "sstfb: " X) | ||
72 | #define iprintk(X...) printk(KERN_INFO "sstfb: " X) | ||
73 | #define wprintk(X...) printk(KERN_WARNING "sstfb: " X) | ||
74 | |||
75 | #define BIT(x) (1ul<<(x)) | 71 | #define BIT(x) (1ul<<(x)) |
76 | #define POW2(x) (1ul<<(x)) | 72 | #define POW2(x) (1ul<<(x)) |
77 | 73 | ||