diff options
Diffstat (limited to 'include')
50 files changed, 907 insertions, 256 deletions
diff --git a/include/asm-arm/arch-aaec2000/aaec2000.h b/include/asm-arm/arch-aaec2000/aaec2000.h new file mode 100644 index 000000000000..0e9b7e18af05 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/aaec2000.h | |||
| @@ -0,0 +1,151 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/aaec2000.h | ||
| 3 | * | ||
| 4 | * AAEC-2000 registers definition | ||
| 5 | * | ||
| 6 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __ASM_ARCH_AAEC2000_H | ||
| 14 | #define __ASM_ARCH_AAEC2000_H | ||
| 15 | |||
| 16 | #ifndef __ASM_ARCH_HARDWARE_H | ||
| 17 | #error You must include hardware.h not this file | ||
| 18 | #endif /* __ASM_ARCH_HARDWARE_H */ | ||
| 19 | |||
| 20 | /* Interrupt controller */ | ||
| 21 | #define IRQ_BASE __REG(0x80000500) | ||
| 22 | #define IRQ_INTSR __REG(0x80000500) /* Int Status Register */ | ||
| 23 | #define IRQ_INTRSR __REG(0x80000504) /* Int Raw (unmasked) Status */ | ||
| 24 | #define IRQ_INTENS __REG(0x80000508) /* Int Enable Set */ | ||
| 25 | #define IRQ_INTENC __REG(0x8000050c) /* Int Enable Clear */ | ||
| 26 | |||
| 27 | /* UART 1 */ | ||
| 28 | #define UART1_BASE __REG(0x80000600) | ||
| 29 | #define UART1_DR __REG(0x80000600) /* Data/FIFO Register */ | ||
| 30 | #define UART1_LCR __REG(0x80000604) /* Link Control Register */ | ||
| 31 | #define UART1_BRCR __REG(0x80000608) /* Baud Rate Control Register */ | ||
| 32 | #define UART1_CR __REG(0x8000060c) /* Control Register */ | ||
| 33 | #define UART1_SR __REG(0x80000610) /* Status Register */ | ||
| 34 | #define UART1_INT __REG(0x80000614) /* Interrupt Status Register */ | ||
| 35 | #define UART1_INTM __REG(0x80000618) /* Interrupt Mask Register */ | ||
| 36 | #define UART1_INTRES __REG(0x8000061c) /* Int Result (masked status) Register */ | ||
| 37 | |||
| 38 | /* UART 2 */ | ||
| 39 | #define UART2_BASE __REG(0x80000700) | ||
| 40 | #define UART2_DR __REG(0x80000700) /* Data/FIFO Register */ | ||
| 41 | #define UART2_LCR __REG(0x80000704) /* Link Control Register */ | ||
| 42 | #define UART2_BRCR __REG(0x80000708) /* Baud Rate Control Register */ | ||
| 43 | #define UART2_CR __REG(0x8000070c) /* Control Register */ | ||
| 44 | #define UART2_SR __REG(0x80000710) /* Status Register */ | ||
| 45 | #define UART2_INT __REG(0x80000714) /* Interrupt Status Register */ | ||
| 46 | #define UART2_INTM __REG(0x80000718) /* Interrupt Mask Register */ | ||
| 47 | #define UART2_INTRES __REG(0x8000071c) /* Int Result (masked status) Register */ | ||
| 48 | |||
| 49 | /* UART 3 */ | ||
| 50 | #define UART3_BASE __REG(0x80000800) | ||
| 51 | #define UART3_DR __REG(0x80000800) /* Data/FIFO Register */ | ||
| 52 | #define UART3_LCR __REG(0x80000804) /* Link Control Register */ | ||
| 53 | #define UART3_BRCR __REG(0x80000808) /* Baud Rate Control Register */ | ||
| 54 | #define UART3_CR __REG(0x8000080c) /* Control Register */ | ||
| 55 | #define UART3_SR __REG(0x80000810) /* Status Register */ | ||
| 56 | #define UART3_INT __REG(0x80000814) /* Interrupt Status Register */ | ||
| 57 | #define UART3_INTM __REG(0x80000818) /* Interrupt Mask Register */ | ||
| 58 | #define UART3_INTRES __REG(0x8000081c) /* Int Result (masked status) Register */ | ||
| 59 | |||
| 60 | /* These are used in some places */ | ||
| 61 | #define _UART1_BASE __PREG(UART1_BASE) | ||
| 62 | #define _UART2_BASE __PREG(UART2_BASE) | ||
| 63 | #define _UART3_BASE __PREG(UART3_BASE) | ||
| 64 | |||
| 65 | /* UART Registers Offsets */ | ||
| 66 | #define UART_DR 0x00 | ||
| 67 | #define UART_LCR 0x04 | ||
| 68 | #define UART_BRCR 0x08 | ||
| 69 | #define UART_CR 0x0c | ||
| 70 | #define UART_SR 0x10 | ||
| 71 | #define UART_INT 0x14 | ||
| 72 | #define UART_INTM 0x18 | ||
| 73 | #define UART_INTRES 0x1c | ||
| 74 | |||
| 75 | /* UART_LCR Bitmask */ | ||
| 76 | #define UART_LCR_BRK (1 << 0) /* Send Break */ | ||
| 77 | #define UART_LCR_PEN (1 << 1) /* Parity Enable */ | ||
| 78 | #define UART_LCR_EP (1 << 2) /* Even/Odd Parity */ | ||
| 79 | #define UART_LCR_S2 (1 << 3) /* One/Two Stop bits */ | ||
| 80 | #define UART_LCR_FIFO (1 << 4) /* FIFO Enable */ | ||
| 81 | #define UART_LCR_WL5 (0 << 5) /* Word Length - 5 bits */ | ||
| 82 | #define UART_LCR_WL6 (1 << 5) /* Word Length - 6 bits */ | ||
| 83 | #define UART_LCR_WL7 (1 << 6) /* Word Length - 7 bits */ | ||
| 84 | #define UART_LCR_WL8 (1 << 7) /* Word Length - 8 bits */ | ||
| 85 | |||
| 86 | /* UART_CR Bitmask */ | ||
| 87 | #define UART_CR_EN (1 << 0) /* UART Enable */ | ||
| 88 | #define UART_CR_SIR (1 << 1) /* IrDA SIR Enable */ | ||
| 89 | #define UART_CR_SIRLP (1 << 2) /* Low Power IrDA Enable */ | ||
| 90 | #define UART_CR_RXP (1 << 3) /* Receive Pin Polarity */ | ||
| 91 | #define UART_CR_TXP (1 << 4) /* Transmit Pin Polarity */ | ||
| 92 | #define UART_CR_MXP (1 << 5) /* Modem Pin Polarity */ | ||
| 93 | #define UART_CR_LOOP (1 << 6) /* Loopback Mode */ | ||
| 94 | |||
| 95 | /* UART_SR Bitmask */ | ||
| 96 | #define UART_SR_CTS (1 << 0) /* Clear To Send Status */ | ||
| 97 | #define UART_SR_DSR (1 << 1) /* Data Set Ready Status */ | ||
| 98 | #define UART_SR_DCD (1 << 2) /* Data Carrier Detect Status */ | ||
| 99 | #define UART_SR_TxBSY (1 << 3) /* Transmitter Busy Status */ | ||
| 100 | #define UART_SR_RxFE (1 << 4) /* Receive FIFO Empty Status */ | ||
| 101 | #define UART_SR_TxFF (1 << 5) /* Transmit FIFO Full Status */ | ||
| 102 | #define UART_SR_RxFF (1 << 6) /* Receive FIFO Full Status */ | ||
| 103 | #define UART_SR_TxFE (1 << 7) /* Transmit FIFO Empty Status */ | ||
| 104 | |||
| 105 | /* UART_INT Bitmask */ | ||
| 106 | #define UART_INT_RIS (1 << 0) /* Rx Interrupt */ | ||
| 107 | #define UART_INT_TIS (1 << 1) /* Tx Interrupt */ | ||
| 108 | #define UART_INT_MIS (1 << 2) /* Modem Interrupt */ | ||
| 109 | #define UART_INT_RTIS (1 << 3) /* Receive Timeout Interrupt */ | ||
| 110 | |||
| 111 | /* Timer 1 */ | ||
| 112 | #define TIMER1_BASE __REG(0x80000c00) | ||
| 113 | #define TIMER1_LOAD __REG(0x80000c00) /* Timer 1 Load Register */ | ||
| 114 | #define TIMER1_VAL __REG(0x80000c04) /* Timer 1 Value Register */ | ||
| 115 | #define TIMER1_CTRL __REG(0x80000c08) /* Timer 1 Control Register */ | ||
| 116 | #define TIMER1_CLEAR __REG(0x80000c0c) /* Timer 1 Clear Register */ | ||
| 117 | |||
| 118 | /* Timer 2 */ | ||
| 119 | #define TIMER2_BASE __REG(0x80000d00) | ||
| 120 | #define TIMER2_LOAD __REG(0x80000d00) /* Timer 2 Load Register */ | ||
| 121 | #define TIMER2_VAL __REG(0x80000d04) /* Timer 2 Value Register */ | ||
| 122 | #define TIMER2_CTRL __REG(0x80000d08) /* Timer 2 Control Register */ | ||
| 123 | #define TIMER2_CLEAR __REG(0x80000d0c) /* Timer 2 Clear Register */ | ||
| 124 | |||
| 125 | /* Timer 3 */ | ||
| 126 | #define TIMER3_BASE __REG(0x80000e00) | ||
| 127 | #define TIMER3_LOAD __REG(0x80000e00) /* Timer 3 Load Register */ | ||
| 128 | #define TIMER3_VAL __REG(0x80000e04) /* Timer 3 Value Register */ | ||
| 129 | #define TIMER3_CTRL __REG(0x80000e08) /* Timer 3 Control Register */ | ||
| 130 | #define TIMER3_CLEAR __REG(0x80000e0c) /* Timer 3 Clear Register */ | ||
| 131 | |||
| 132 | /* Timer Control register bits */ | ||
| 133 | #define TIMER_CTRL_ENABLE (1 << 7) /* Enable (Start° Timer */ | ||
| 134 | #define TIMER_CTRL_PERIODIC (1 << 6) /* Periodic Running Mode */ | ||
| 135 | #define TIMER_CTRL_FREE_RUNNING (0 << 6) /* Normal Running Mode */ | ||
| 136 | #define TIMER_CTRL_CLKSEL_508K (1 << 3) /* 508KHz Clock select (Timer 1, 2) */ | ||
| 137 | #define TIMER_CTRL_CLKSEL_2K (0 << 3) /* 2KHz Clock Select (Timer 1, 2)*/ | ||
| 138 | |||
| 139 | /* Power and State Control */ | ||
| 140 | #define POWER_BASE __REG(0x80000400) | ||
| 141 | #define POWER_PWRSR __REG(0x80000400) /* Power Status Register */ | ||
| 142 | #define POWER_PWRCNT __REG(0x80000404) /* Power/Clock control */ | ||
| 143 | #define POWER_HALT __REG(0x80000408) /* Power Idle Mode */ | ||
| 144 | #define POWER_STDBY __REG(0x8000040c) /* Power Standby Mode */ | ||
| 145 | #define POWER_BLEOI __REG(0x80000410) /* Battery Low End of Interrupt */ | ||
| 146 | #define POWER_MCEOI __REG(0x80000414) /* Media Changed EoI */ | ||
| 147 | #define POWER_TEOI __REG(0x80000418) /* Tick EoI */ | ||
| 148 | #define POWER_STFCLR __REG(0x8000041c) /* NbFlg, RSTFlg, PFFlg, CLDFlg Clear */ | ||
| 149 | #define POWER_CLKSET __REG(0x80000420) /* Clock Speed Control */ | ||
| 150 | |||
| 151 | #endif /* __ARM_ARCH_AAEC2000_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/debug-macro.S b/include/asm-arm/arch-aaec2000/debug-macro.S new file mode 100644 index 000000000000..e4f1fa539a74 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/debug-macro.S | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | /* linux/include/asm-arm/arch-aaec2000/debug-macro.S | ||
| 2 | * | ||
| 3 | * Debugging macro include header | ||
| 4 | * | ||
| 5 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License version 2 as | ||
| 9 | * published by the Free Software Foundation. | ||
| 10 | */ | ||
| 11 | |||
| 12 | .macro addruart,rx | ||
| 13 | mrc p15, 0, \rx, c1, c0 | ||
| 14 | tst \rx, #1 @ MMU enabled? | ||
| 15 | moveq \rx, #0x80000000 @ physical | ||
| 16 | movne \rx, #io_p2v(0x80000000) @ virtual | ||
| 17 | orr \rx, \rx, #0x00000800 | ||
| 18 | .endm | ||
| 19 | |||
| 20 | .macro senduart,rd,rx | ||
| 21 | str \rd, [\rx, #0] | ||
| 22 | .endm | ||
| 23 | |||
| 24 | .macro busyuart,rd,rx | ||
| 25 | 1002: ldr \rd, [\rx, #0x10] | ||
| 26 | tst \rd, #(1 << 7) | ||
| 27 | beq 1002b | ||
| 28 | .endm | ||
| 29 | |||
| 30 | .macro waituart,rd,rx | ||
| 31 | #if 0 | ||
| 32 | 1001: ldr \rd, [\rx, #0x10] | ||
| 33 | tst \rd, #(1 << 5) | ||
| 34 | beq 1001b | ||
| 35 | #endif | ||
| 36 | .endm | ||
diff --git a/include/asm-arm/arch-aaec2000/dma.h b/include/asm-arm/arch-aaec2000/dma.h new file mode 100644 index 000000000000..28c890b4a1d3 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/dma.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/dma.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_DMA_H | ||
| 12 | #define __ASM_ARCH_DMA_H | ||
| 13 | |||
| 14 | #define MAX_DMA_ADDRESS 0xffffffff | ||
| 15 | #define MAX_DMA_CHANNELS 0 | ||
| 16 | |||
| 17 | #endif | ||
diff --git a/include/asm-arm/arch-aaec2000/entry-macro.S b/include/asm-arm/arch-aaec2000/entry-macro.S new file mode 100644 index 000000000000..df31313ab07e --- /dev/null +++ b/include/asm-arm/arch-aaec2000/entry-macro.S | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/entry-macro.S | ||
| 3 | * | ||
| 4 | * Low-level IRQ helper for aaec-2000 based platforms | ||
| 5 | * | ||
| 6 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | * | ||
| 12 | */ | ||
| 13 | |||
| 14 | .macro disable_fiq | ||
| 15 | .endm | ||
| 16 | |||
| 17 | .macro get_irqnr_and_base, irqnr, irqstat, base, tmp | ||
| 18 | mov r4, #0xf8000000 | ||
| 19 | add r4, r4, #0x00000500 | ||
| 20 | mov \base, r4 | ||
| 21 | ldr \irqstat, [\base, #0] | ||
| 22 | cmp \irqstat, #0 | ||
| 23 | bne 1001f | ||
| 24 | ldr \irqnr, =NR_IRQS+1 | ||
| 25 | b 1003f | ||
| 26 | 1001: mov \irqnr, #0 | ||
| 27 | 1002: ands \tmp, \irqstat, #1 | ||
| 28 | mov \irqstat, \irqstat, LSR #1 | ||
| 29 | add \irqnr, \irqnr, #1 | ||
| 30 | beq 1002b | ||
| 31 | sub \irqnr, \irqnr, #1 | ||
| 32 | 1003: | ||
| 33 | .endm | ||
diff --git a/include/asm-arm/arch-aaec2000/hardware.h b/include/asm-arm/arch-aaec2000/hardware.h new file mode 100644 index 000000000000..4c37219e030e --- /dev/null +++ b/include/asm-arm/arch-aaec2000/hardware.h | |||
| @@ -0,0 +1,49 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/hardware.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_HARDWARE_H | ||
| 12 | #define __ASM_ARCH_HARDWARE_H | ||
| 13 | |||
| 14 | #include <linux/config.h> | ||
| 15 | |||
| 16 | /* The kernel is loaded at physical address 0xf8000000. | ||
| 17 | * We map the IO space a bit after | ||
| 18 | */ | ||
| 19 | #define PIO_APB_BASE 0x80000000 | ||
| 20 | #define VIO_APB_BASE 0xf8000000 | ||
| 21 | #define IO_APB_LENGTH 0x2000 | ||
| 22 | #define PIO_AHB_BASE 0x80002000 | ||
| 23 | #define VIO_AHB_BASE 0xf8002000 | ||
| 24 | #define IO_AHB_LENGTH 0x2000 | ||
| 25 | |||
| 26 | #define VIO_BASE VIO_APB_BASE | ||
| 27 | #define PIO_BASE PIO_APB_BASE | ||
| 28 | |||
| 29 | #define io_p2v(x) ( (x) - PIO_BASE + VIO_BASE ) | ||
| 30 | #define io_v2p(x) ( (x) + PIO_BASE - VIO_BASE ) | ||
| 31 | |||
| 32 | #ifndef __ASSEMBLY__ | ||
| 33 | |||
| 34 | #include <asm/types.h> | ||
| 35 | |||
| 36 | /* FIXME: Is it needed to optimize this a la pxa ?? */ | ||
| 37 | #define __REG(x) (*((volatile u32 *)io_p2v(x))) | ||
| 38 | #define __PREG(x) (io_v2p((u32)&(x))) | ||
| 39 | |||
| 40 | #else /* __ASSEMBLY__ */ | ||
| 41 | |||
| 42 | #define __REG(x) io_p2v(x) | ||
| 43 | #define __PREG(x) io_v2p(x) | ||
| 44 | |||
| 45 | #endif | ||
| 46 | |||
| 47 | #include "aaec2000.h" | ||
| 48 | |||
| 49 | #endif /* __ASM_ARCH_HARDWARE_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/io.h b/include/asm-arm/arch-aaec2000/io.h new file mode 100644 index 000000000000..c58a8d10425a --- /dev/null +++ b/include/asm-arm/arch-aaec2000/io.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/io.h | ||
| 3 | * | ||
| 4 | * Copied from asm/arch/sa1100/io.h | ||
| 5 | */ | ||
| 6 | #ifndef __ASM_ARM_ARCH_IO_H | ||
| 7 | #define __ASM_ARM_ARCH_IO_H | ||
| 8 | |||
| 9 | #define IO_SPACE_LIMIT 0xffffffff | ||
| 10 | |||
| 11 | /* | ||
| 12 | * We don't actually have real ISA nor PCI buses, but there is so many | ||
| 13 | * drivers out there that might just work if we fake them... | ||
| 14 | */ | ||
| 15 | #define __io(a) ((void __iomem *)(a)) | ||
| 16 | #define __mem_pci(a) (a) | ||
| 17 | #define __mem_isa(a) (a) | ||
| 18 | |||
| 19 | #endif | ||
diff --git a/include/asm-arm/arch-aaec2000/irqs.h b/include/asm-arm/arch-aaec2000/irqs.h new file mode 100644 index 000000000000..de252220e806 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/irqs.h | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/irqs.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_IRQS_H | ||
| 12 | #define __ASM_ARCH_IRQS_H | ||
| 13 | |||
| 14 | |||
| 15 | #define INT_GPIOF0_FIQ 0 /* External GPIO Port F O Fast Interrupt Input */ | ||
| 16 | #define INT_BL_FIQ 1 /* Battery Low Fast Interrupt */ | ||
| 17 | #define INT_WE_FIQ 2 /* Watchdog Expired Fast Interrupt */ | ||
| 18 | #define INT_MV_FIQ 3 /* Media Changed Interrupt */ | ||
| 19 | #define INT_SC 4 /* Sound Codec Interrupt */ | ||
| 20 | #define INT_GPIO1 5 /* GPIO Port F Configurable Int 1 */ | ||
| 21 | #define INT_GPIO2 6 /* GPIO Port F Configurable Int 2 */ | ||
| 22 | #define INT_GPIO3 7 /* GPIO Port F Configurable Int 3 */ | ||
| 23 | #define INT_TMR1_OFL 8 /* Timer 1 Overflow Interrupt */ | ||
| 24 | #define INT_TMR2_OFL 9 /* Timer 2 Overflow Interrupt */ | ||
| 25 | #define INT_RTC_CM 10 /* RTC Compare Match Interrupt */ | ||
| 26 | #define INT_TICK 11 /* 64Hz Tick Interrupt */ | ||
| 27 | #define INT_UART1 12 /* UART1 Interrupt */ | ||
| 28 | #define INT_UART2 13 /* UART2 & Modem State Changed Interrupt */ | ||
| 29 | #define INT_LCD 14 /* LCD Interrupt */ | ||
| 30 | #define INT_SSI 15 /* SSI End of Transfer Interrupt */ | ||
| 31 | #define INT_UART3 16 /* UART3 Interrupt */ | ||
| 32 | #define INT_SCI 17 /* SCI Interrupt */ | ||
| 33 | #define INT_AAC 18 /* Advanced Audio Codec Interrupt */ | ||
| 34 | #define INT_MMC 19 /* MMC Interrupt */ | ||
| 35 | #define INT_USB 20 /* USB Interrupt */ | ||
| 36 | #define INT_DMA 21 /* DMA Interrupt */ | ||
| 37 | #define INT_TMR3_UOFL 22 /* Timer 3 Underflow Interrupt */ | ||
| 38 | #define INT_GPIO4 23 /* GPIO Port F Configurable Int 4 */ | ||
| 39 | #define INT_GPIO5 24 /* GPIO Port F Configurable Int 4 */ | ||
| 40 | #define INT_GPIO6 25 /* GPIO Port F Configurable Int 4 */ | ||
| 41 | #define INT_GPIO7 26 /* GPIO Port F Configurable Int 4 */ | ||
| 42 | #define INT_BMI 27 /* BMI Interrupt */ | ||
| 43 | |||
| 44 | #define NR_IRQS (INT_BMI + 1) | ||
| 45 | |||
| 46 | #endif /* __ASM_ARCH_IRQS_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/memory.h b/include/asm-arm/arch-aaec2000/memory.h new file mode 100644 index 000000000000..681b6a6171a1 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/memory.h | |||
| @@ -0,0 +1,73 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/memory.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_MEMORY_H | ||
| 12 | #define __ASM_ARCH_MEMORY_H | ||
| 13 | |||
| 14 | #include <linux/config.h> | ||
| 15 | |||
| 16 | #define PHYS_OFFSET (0xf0000000UL) | ||
| 17 | |||
| 18 | #define __virt_to_bus(x) __virt_to_phys(x) | ||
| 19 | #define __bus_to_virt(x) __phys_to_virt(x) | ||
| 20 | |||
| 21 | #ifdef CONFIG_DISCONTIGMEM | ||
| 22 | |||
| 23 | /* | ||
| 24 | * The nodes are the followings: | ||
| 25 | * | ||
| 26 | * node 0: 0xf000.0000 - 0xf3ff.ffff | ||
| 27 | * node 1: 0xf400.0000 - 0xf7ff.ffff | ||
| 28 | * node 2: 0xf800.0000 - 0xfbff.ffff | ||
| 29 | * node 3: 0xfc00.0000 - 0xffff.ffff | ||
| 30 | */ | ||
| 31 | |||
| 32 | /* | ||
| 33 | * Given a kernel address, find the home node of the underlying memory. | ||
| 34 | */ | ||
| 35 | #define KVADDR_TO_NID(addr) \ | ||
| 36 | (((unsigned long)(addr) - PAGE_OFFSET) >> NODE_MAX_MEM_SHIFT) | ||
| 37 | |||
| 38 | /* | ||
| 39 | * Given a page frame number, convert it to a node id. | ||
| 40 | */ | ||
| 41 | #define PFN_TO_NID(pfn) \ | ||
| 42 | (((pfn) - PHYS_PFN_OFFSET) >> (NODE_MAX_MEM_SHIFT - PAGE_SHIFT)) | ||
| 43 | |||
| 44 | /* | ||
| 45 | * Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory | ||
| 46 | * and return the mem_map of that node. | ||
| 47 | */ | ||
| 48 | #define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr)) | ||
| 49 | |||
| 50 | /* | ||
| 51 | * Given a page frame number, find the owning node of the memory | ||
| 52 | * and return the mem_map of that node. | ||
| 53 | */ | ||
| 54 | #define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn)) | ||
| 55 | |||
| 56 | /* | ||
| 57 | * Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory | ||
| 58 | * and returns the index corresponding to the appropriate page in the | ||
| 59 | * node's mem_map. | ||
| 60 | */ | ||
| 61 | #define LOCAL_MAP_NR(addr) \ | ||
| 62 | (((unsigned long)(addr) & (NODE_MAX_MEM_SIZE - 1)) >> PAGE_SHIFT) | ||
| 63 | |||
| 64 | #define NODE_MAX_MEM_SHIFT 26 | ||
| 65 | #define NODE_MAX_MEM_SIZE (1 << NODE_MAX_MEM_SHIFT) | ||
| 66 | |||
| 67 | #else | ||
| 68 | |||
| 69 | #define PFN_TO_NID(addr) (0) | ||
| 70 | |||
| 71 | #endif /* CONFIG_DISCONTIGMEM */ | ||
| 72 | |||
| 73 | #endif /* __ASM_ARCH_MEMORY_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/param.h b/include/asm-arm/arch-aaec2000/param.h new file mode 100644 index 000000000000..139936c2faf2 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/param.h | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/param.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_PARAM_H | ||
| 12 | #define __ASM_ARCH_PARAM_H | ||
| 13 | |||
| 14 | #endif /* __ASM_ARCH_PARAM_H */ | ||
| 15 | |||
diff --git a/include/asm-arm/arch-aaec2000/system.h b/include/asm-arm/arch-aaec2000/system.h new file mode 100644 index 000000000000..08de97b407a8 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/system.h | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaed2000/system.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_SYSTEM_H | ||
| 12 | #define __ASM_ARCH_SYSTEM_H | ||
| 13 | |||
| 14 | static inline void arch_idle(void) | ||
| 15 | { | ||
| 16 | cpu_do_idle(); | ||
| 17 | } | ||
| 18 | |||
| 19 | static inline void arch_reset(char mode) | ||
| 20 | { | ||
| 21 | cpu_reset(0); | ||
| 22 | } | ||
| 23 | |||
| 24 | #endif /* __ASM_ARCH_SYSTEM_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/timex.h b/include/asm-arm/arch-aaec2000/timex.h new file mode 100644 index 000000000000..f5708b38fb7f --- /dev/null +++ b/include/asm-arm/arch-aaec2000/timex.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/timex.h | ||
| 3 | * | ||
| 4 | * AAEC-2000 Architecture timex specification | ||
| 5 | * | ||
| 6 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __ASM_ARCH_TIMEX_H | ||
| 14 | #define __ASM_ARCH_TIMEX_H | ||
| 15 | |||
| 16 | #define CLOCK_TICK_RATE 508000 | ||
| 17 | |||
| 18 | #endif /* __ASM_ARCH_TIMEX_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/uncompress.h b/include/asm-arm/arch-aaec2000/uncompress.h new file mode 100644 index 000000000000..fff0c94b75c4 --- /dev/null +++ b/include/asm-arm/arch-aaec2000/uncompress.h | |||
| @@ -0,0 +1,47 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/uncompress.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_UNCOMPRESS_H | ||
| 12 | #define __ASM_ARCH_UNCOMPRESS_H | ||
| 13 | |||
| 14 | #include "hardware.h" | ||
| 15 | |||
| 16 | #define UART(x) (*(volatile unsigned long *)(serial_port + (x))) | ||
| 17 | |||
| 18 | static void putstr( const char *s ) | ||
| 19 | { | ||
| 20 | unsigned long serial_port; | ||
| 21 | do { | ||
| 22 | serial_port = _UART3_BASE; | ||
| 23 | if (UART(UART_CR) & UART_CR_EN) break; | ||
| 24 | serial_port = _UART1_BASE; | ||
| 25 | if (UART(UART_CR) & UART_CR_EN) break; | ||
| 26 | serial_port = _UART2_BASE; | ||
| 27 | if (UART(UART_CR) & UART_CR_EN) break; | ||
| 28 | return; | ||
| 29 | } while (0); | ||
| 30 | |||
| 31 | for (; *s; s++) { | ||
| 32 | /* wait for space in the UART's transmitter */ | ||
| 33 | while ((UART(UART_SR) & UART_SR_TxFF)); | ||
| 34 | /* send the character out. */ | ||
| 35 | UART(UART_DR) = *s; | ||
| 36 | /* if a LF, also do CR... */ | ||
| 37 | if (*s == 10) { | ||
| 38 | while ((UART(UART_SR) & UART_SR_TxFF)); | ||
| 39 | UART(UART_DR) = 13; | ||
| 40 | } | ||
| 41 | } | ||
| 42 | } | ||
| 43 | |||
| 44 | #define arch_decomp_setup() | ||
| 45 | #define arch_decomp_wdog() | ||
| 46 | |||
| 47 | #endif /* __ASM_ARCH_UNCOMPRESS_H */ | ||
diff --git a/include/asm-arm/arch-aaec2000/vmalloc.h b/include/asm-arm/arch-aaec2000/vmalloc.h new file mode 100644 index 000000000000..ecb991e2e4ff --- /dev/null +++ b/include/asm-arm/arch-aaec2000/vmalloc.h | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/asm-arm/arch-aaec2000/vmalloc.h | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Nicolas Bellido Y Ortega | ||
| 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 | #ifndef __ASM_ARCH_VMALLOC_H | ||
| 12 | #define __ASM_ARCH_VMALLOC_H | ||
| 13 | |||
| 14 | #define VMALLOC_END (PAGE_OFFSET + 0x10000000) | ||
| 15 | |||
| 16 | #endif /* __ASM_ARCH_VMALLOC_H */ | ||
diff --git a/include/asm-arm/arch-ixp2000/ixp2000-regs.h b/include/asm-arm/arch-ixp2000/ixp2000-regs.h index 6c56708d0ff0..a1d9e181b10f 100644 --- a/include/asm-arm/arch-ixp2000/ixp2000-regs.h +++ b/include/asm-arm/arch-ixp2000/ixp2000-regs.h | |||
| @@ -363,6 +363,7 @@ | |||
| 363 | #define IXP2000_MIN_REV_MASK 0x0000000F | 363 | #define IXP2000_MIN_REV_MASK 0x0000000F |
| 364 | #define IXP2000_PROD_ID_MASK 0xFFFFFFFF | 364 | #define IXP2000_PROD_ID_MASK 0xFFFFFFFF |
| 365 | 365 | ||
| 366 | #define IXP2000_PRODUCT_ID GLOBAL_REG(0x00) | ||
| 366 | #define IXP2000_MISC_CONTROL GLOBAL_REG(0x04) | 367 | #define IXP2000_MISC_CONTROL GLOBAL_REG(0x04) |
| 367 | #define IXP2000_MSF_CLK_CNTRL GLOBAL_REG(0x08) | 368 | #define IXP2000_MSF_CLK_CNTRL GLOBAL_REG(0x08) |
| 368 | #define IXP2000_RESET0 GLOBAL_REG(0x0c) | 369 | #define IXP2000_RESET0 GLOBAL_REG(0x0c) |
diff --git a/include/asm-arm/arch-versatile/hardware.h b/include/asm-arm/arch-versatile/hardware.h index d5fb4a251e7f..41c1bee342ad 100644 --- a/include/asm-arm/arch-versatile/hardware.h +++ b/include/asm-arm/arch-versatile/hardware.h | |||
| @@ -25,19 +25,26 @@ | |||
| 25 | #include <asm/sizes.h> | 25 | #include <asm/sizes.h> |
| 26 | #include <asm/arch/platform.h> | 26 | #include <asm/arch/platform.h> |
| 27 | 27 | ||
| 28 | // FIXME = PCI settings need to be fixed!!!!! | ||
| 29 | |||
| 30 | /* | 28 | /* |
| 31 | * Similar to above, but for PCI addresses (memory, IO, Config and the | 29 | * PCI space virtual addresses |
| 32 | * V3 chip itself). WARNING: this has to mirror definitions in platform.h | ||
| 33 | */ | 30 | */ |
| 34 | #define PCI_MEMORY_VADDR 0xe8000000 | 31 | #define VERSATILE_PCI_VIRT_BASE 0xe8000000 |
| 35 | #define PCI_CONFIG_VADDR 0xec000000 | 32 | #define VERSATILE_PCI_CFG_VIRT_BASE 0xe9000000 |
| 36 | #define PCI_V3_VADDR 0xed000000 | 33 | |
| 37 | #define PCI_IO_VADDR 0xee000000 | 34 | #if 0 |
| 35 | #define VERSATILE_PCI_VIRT_MEM_BASE0 0xf4000000 | ||
| 36 | #define VERSATILE_PCI_VIRT_MEM_BASE1 0xf5000000 | ||
| 37 | #define VERSATILE_PCI_VIRT_MEM_BASE2 0xf6000000 | ||
| 38 | |||
| 39 | #define PCIO_BASE VERSATILE_PCI_VIRT_MEM_BASE0 | ||
| 40 | #define PCIMEM_BASE VERSATILE_PCI_VIRT_MEM_BASE1 | ||
| 41 | #endif | ||
| 42 | |||
| 43 | /* CIK guesswork */ | ||
| 44 | #define PCIBIOS_MIN_IO 0x44000000 | ||
| 45 | #define PCIBIOS_MIN_MEM 0x50000000 | ||
| 38 | 46 | ||
| 39 | #define PCIO_BASE PCI_IO_VADDR | 47 | #define pcibios_assign_all_busses() 1 |
| 40 | #define PCIMEM_BASE PCI_MEMORY_VADDR | ||
| 41 | 48 | ||
| 42 | /* macro to get at IO space when running virtually */ | 49 | /* macro to get at IO space when running virtually */ |
| 43 | #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) | 50 | #define IO_ADDRESS(x) (((x) & 0x0fffffff) + (((x) >> 4) & 0x0f000000) + 0xf0000000) |
diff --git a/include/asm-arm/arch-versatile/io.h b/include/asm-arm/arch-versatile/io.h index dbb7158788fc..9f895bf61494 100644 --- a/include/asm-arm/arch-versatile/io.h +++ b/include/asm-arm/arch-versatile/io.h | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #ifndef __ASM_ARM_ARCH_IO_H | 20 | #ifndef __ASM_ARM_ARCH_IO_H |
| 21 | #define __ASM_ARM_ARCH_IO_H | 21 | #define __ASM_ARM_ARCH_IO_H |
| 22 | 22 | ||
| 23 | #define IO_SPACE_LIMIT 0xffff | 23 | #define IO_SPACE_LIMIT 0xffffffff |
| 24 | 24 | ||
| 25 | #define __io(a) ((void __iomem *)(a)) | 25 | #define __io(a) ((void __iomem *)(a)) |
| 26 | #define __mem_pci(a) (a) | 26 | #define __mem_pci(a) (a) |
diff --git a/include/asm-arm/arch-versatile/platform.h b/include/asm-arm/arch-versatile/platform.h index a71093e44c58..cbdd9fb96332 100644 --- a/include/asm-arm/arch-versatile/platform.h +++ b/include/asm-arm/arch-versatile/platform.h | |||
| @@ -76,7 +76,7 @@ | |||
| 76 | #define VERSATILE_SYS_NVFLAGSSET_OFFSET 0x38 | 76 | #define VERSATILE_SYS_NVFLAGSSET_OFFSET 0x38 |
| 77 | #define VERSATILE_SYS_NVFLAGSCLR_OFFSET 0x3C | 77 | #define VERSATILE_SYS_NVFLAGSCLR_OFFSET 0x3C |
| 78 | #define VERSATILE_SYS_RESETCTL_OFFSET 0x40 | 78 | #define VERSATILE_SYS_RESETCTL_OFFSET 0x40 |
| 79 | #define VERSATILE_SYS_PICCTL_OFFSET 0x44 | 79 | #define VERSATILE_SYS_PCICTL_OFFSET 0x44 |
| 80 | #define VERSATILE_SYS_MCI_OFFSET 0x48 | 80 | #define VERSATILE_SYS_MCI_OFFSET 0x48 |
| 81 | #define VERSATILE_SYS_FLASH_OFFSET 0x4C | 81 | #define VERSATILE_SYS_FLASH_OFFSET 0x4C |
| 82 | #define VERSATILE_SYS_CLCD_OFFSET 0x50 | 82 | #define VERSATILE_SYS_CLCD_OFFSET 0x50 |
| @@ -114,7 +114,7 @@ | |||
| 114 | #define VERSATILE_SYS_NVFLAGSSET (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGSSET_OFFSET) | 114 | #define VERSATILE_SYS_NVFLAGSSET (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGSSET_OFFSET) |
| 115 | #define VERSATILE_SYS_NVFLAGSCLR (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGSCLR_OFFSET) | 115 | #define VERSATILE_SYS_NVFLAGSCLR (VERSATILE_SYS_BASE + VERSATILE_SYS_NVFLAGSCLR_OFFSET) |
| 116 | #define VERSATILE_SYS_RESETCTL (VERSATILE_SYS_BASE + VERSATILE_SYS_RESETCTL_OFFSET) | 116 | #define VERSATILE_SYS_RESETCTL (VERSATILE_SYS_BASE + VERSATILE_SYS_RESETCTL_OFFSET) |
| 117 | #define VERSATILE_SYS_PICCTL (VERSATILE_SYS_BASE + VERSATILE_SYS_PICCTL_OFFSET) | 117 | #define VERSATILE_SYS_PCICTL (VERSATILE_SYS_BASE + VERSATILE_SYS_PCICTL_OFFSET) |
| 118 | #define VERSATILE_SYS_MCI (VERSATILE_SYS_BASE + VERSATILE_SYS_MCI_OFFSET) | 118 | #define VERSATILE_SYS_MCI (VERSATILE_SYS_BASE + VERSATILE_SYS_MCI_OFFSET) |
| 119 | #define VERSATILE_SYS_FLASH (VERSATILE_SYS_BASE + VERSATILE_SYS_FLASH_OFFSET) | 119 | #define VERSATILE_SYS_FLASH (VERSATILE_SYS_BASE + VERSATILE_SYS_FLASH_OFFSET) |
| 120 | #define VERSATILE_SYS_CLCD (VERSATILE_SYS_BASE + VERSATILE_SYS_CLCD_OFFSET) | 120 | #define VERSATILE_SYS_CLCD (VERSATILE_SYS_BASE + VERSATILE_SYS_CLCD_OFFSET) |
| @@ -225,7 +225,20 @@ | |||
| 225 | #define VERSATILE_SSMC_BASE 0x20000000 /* SSMC */ | 225 | #define VERSATILE_SSMC_BASE 0x20000000 /* SSMC */ |
| 226 | #define VERSATILE_IB2_BASE 0x24000000 /* IB2 module */ | 226 | #define VERSATILE_IB2_BASE 0x24000000 /* IB2 module */ |
| 227 | #define VERSATILE_MBX_BASE 0x40000000 /* MBX */ | 227 | #define VERSATILE_MBX_BASE 0x40000000 /* MBX */ |
| 228 | |||
| 229 | /* PCI space */ | ||
| 228 | #define VERSATILE_PCI_BASE 0x41000000 /* PCI Interface */ | 230 | #define VERSATILE_PCI_BASE 0x41000000 /* PCI Interface */ |
| 231 | #define VERSATILE_PCI_CFG_BASE 0x42000000 | ||
| 232 | #define VERSATILE_PCI_MEM_BASE0 0x44000000 | ||
| 233 | #define VERSATILE_PCI_MEM_BASE1 0x50000000 | ||
| 234 | #define VERSATILE_PCI_MEM_BASE2 0x60000000 | ||
| 235 | /* Sizes of above maps */ | ||
| 236 | #define VERSATILE_PCI_BASE_SIZE 0x01000000 | ||
| 237 | #define VERSATILE_PCI_CFG_BASE_SIZE 0x02000000 | ||
| 238 | #define VERSATILE_PCI_MEM_BASE0_SIZE 0x0c000000 /* 32Mb */ | ||
| 239 | #define VERSATILE_PCI_MEM_BASE1_SIZE 0x10000000 /* 256Mb */ | ||
| 240 | #define VERSATILE_PCI_MEM_BASE2_SIZE 0x10000000 /* 256Mb */ | ||
| 241 | |||
| 229 | #define VERSATILE_SDRAM67_BASE 0x70000000 /* SDRAM banks 6 and 7 */ | 242 | #define VERSATILE_SDRAM67_BASE 0x70000000 /* SDRAM banks 6 and 7 */ |
| 230 | #define VERSATILE_LT_BASE 0x80000000 /* Logic Tile expansion */ | 243 | #define VERSATILE_LT_BASE 0x80000000 /* Logic Tile expansion */ |
| 231 | 244 | ||
diff --git a/include/asm-arm/cacheflush.h b/include/asm-arm/cacheflush.h index 09ffeed507c2..035cdcff43d2 100644 --- a/include/asm-arm/cacheflush.h +++ b/include/asm-arm/cacheflush.h | |||
| @@ -16,6 +16,9 @@ | |||
| 16 | 16 | ||
| 17 | #include <asm/mman.h> | 17 | #include <asm/mman.h> |
| 18 | #include <asm/glue.h> | 18 | #include <asm/glue.h> |
| 19 | #include <asm/shmparam.h> | ||
| 20 | |||
| 21 | #define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT) | ||
| 19 | 22 | ||
| 20 | /* | 23 | /* |
| 21 | * Cache Model | 24 | * Cache Model |
diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index 658ffa384fda..08a46302d265 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h | |||
| @@ -273,6 +273,33 @@ extern void __iounmap(void __iomem *addr); | |||
| 273 | #endif | 273 | #endif |
| 274 | 274 | ||
| 275 | /* | 275 | /* |
| 276 | * io{read,write}{8,16,32} macros | ||
| 277 | */ | ||
| 278 | #define ioread8(p) ({ unsigned int __v = __raw_readb(p); __v; }) | ||
| 279 | #define ioread16(p) ({ unsigned int __v = le16_to_cpu(__raw_readw(p)); __v; }) | ||
| 280 | #define ioread32(p) ({ unsigned int __v = le32_to_cpu(__raw_readl(p)); __v; }) | ||
| 281 | |||
| 282 | #define iowrite8(v,p) __raw_writeb(v, p) | ||
| 283 | #define iowrite16(v,p) __raw_writew(cpu_to_le16(v), p) | ||
| 284 | #define iowrite32(v,p) __raw_writel(cpu_to_le32(v), p) | ||
| 285 | |||
| 286 | #define ioread8_rep(p,d,c) __raw_readsb(p,d,c) | ||
| 287 | #define ioread16_rep(p,d,c) __raw_readsw(p,d,c) | ||
| 288 | #define ioread32_rep(p,d,c) __raw_readsl(p,d,c) | ||
| 289 | |||
| 290 | #define iowrite8_rep(p,s,c) __raw_writesb(p,s,c) | ||
| 291 | #define iowrite16_rep(p,s,c) __raw_writesw(p,s,c) | ||
| 292 | #define iowrite32_rep(p,s,c) __raw_writesl(p,s,c) | ||
| 293 | |||
| 294 | extern void __iomem *ioport_map(unsigned long port, unsigned int nr); | ||
| 295 | extern void ioport_unmap(void __iomem *addr); | ||
| 296 | |||
| 297 | struct pci_dev; | ||
| 298 | |||
| 299 | extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen); | ||
| 300 | extern void pci_iounmap(struct pci_dev *dev, void __iomem *addr); | ||
| 301 | |||
| 302 | /* | ||
| 276 | * can the hardware map this into one segment or not, given no other | 303 | * can the hardware map this into one segment or not, given no other |
| 277 | * constraints. | 304 | * constraints. |
| 278 | */ | 305 | */ |
diff --git a/include/asm-ppc/ocp.h b/include/asm-ppc/ocp.h index b98db3cdae83..c726f1845190 100644 --- a/include/asm-ppc/ocp.h +++ b/include/asm-ppc/ocp.h | |||
| @@ -189,7 +189,7 @@ extern void ocp_for_each_device(void(*callback)(struct ocp_device *, void *arg), | |||
| 189 | /* Sysfs support */ | 189 | /* Sysfs support */ |
| 190 | #define OCP_SYSFS_ADDTL(type, format, name, field) \ | 190 | #define OCP_SYSFS_ADDTL(type, format, name, field) \ |
| 191 | static ssize_t \ | 191 | static ssize_t \ |
| 192 | show_##name##_##field(struct device *dev, char *buf) \ | 192 | show_##name##_##field(struct device *dev, struct device_attribute *attr, char *buf) \ |
| 193 | { \ | 193 | { \ |
| 194 | struct ocp_device *odev = to_ocp_dev(dev); \ | 194 | struct ocp_device *odev = to_ocp_dev(dev); \ |
| 195 | type *add = odev->def->additions; \ | 195 | type *add = odev->def->additions; \ |
diff --git a/include/linux/atalk.h b/include/linux/atalk.h index 31d3fc25ccbd..09a1451c1159 100644 --- a/include/linux/atalk.h +++ b/include/linux/atalk.h | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #define SIOCATALKDIFADDR (SIOCPROTOPRIVATE + 0) | 20 | #define SIOCATALKDIFADDR (SIOCPROTOPRIVATE + 0) |
| 21 | 21 | ||
| 22 | struct atalk_addr { | 22 | struct atalk_addr { |
| 23 | __u16 s_net; | 23 | __be16 s_net; |
| 24 | __u8 s_node; | 24 | __u8 s_node; |
| 25 | }; | 25 | }; |
| 26 | 26 | ||
| @@ -33,8 +33,8 @@ struct sockaddr_at { | |||
| 33 | 33 | ||
| 34 | struct atalk_netrange { | 34 | struct atalk_netrange { |
| 35 | __u8 nr_phase; | 35 | __u8 nr_phase; |
| 36 | __u16 nr_firstnet; | 36 | __be16 nr_firstnet; |
| 37 | __u16 nr_lastnet; | 37 | __be16 nr_lastnet; |
| 38 | }; | 38 | }; |
| 39 | 39 | ||
| 40 | #ifdef __KERNEL__ | 40 | #ifdef __KERNEL__ |
| @@ -70,8 +70,8 @@ struct atalk_iface { | |||
| 70 | struct atalk_sock { | 70 | struct atalk_sock { |
| 71 | /* struct sock has to be the first member of atalk_sock */ | 71 | /* struct sock has to be the first member of atalk_sock */ |
| 72 | struct sock sk; | 72 | struct sock sk; |
| 73 | unsigned short dest_net; | 73 | __be16 dest_net; |
| 74 | unsigned short src_net; | 74 | __be16 src_net; |
| 75 | unsigned char dest_node; | 75 | unsigned char dest_node; |
| 76 | unsigned char src_node; | 76 | unsigned char src_node; |
| 77 | unsigned char dest_port; | 77 | unsigned char dest_port; |
| @@ -95,9 +95,9 @@ struct ddpehdr { | |||
| 95 | deh_hops:4, | 95 | deh_hops:4, |
| 96 | deh_len:10; | 96 | deh_len:10; |
| 97 | #endif | 97 | #endif |
| 98 | __u16 deh_sum; | 98 | __be16 deh_sum; |
| 99 | __u16 deh_dnet; | 99 | __be16 deh_dnet; |
| 100 | __u16 deh_snet; | 100 | __be16 deh_snet; |
| 101 | __u8 deh_dnode; | 101 | __u8 deh_dnode; |
| 102 | __u8 deh_snode; | 102 | __u8 deh_snode; |
| 103 | __u8 deh_dport; | 103 | __u8 deh_dport; |
| @@ -142,24 +142,24 @@ struct ddpshdr { | |||
| 142 | 142 | ||
| 143 | /* AppleTalk AARP headers */ | 143 | /* AppleTalk AARP headers */ |
| 144 | struct elapaarp { | 144 | struct elapaarp { |
| 145 | __u16 hw_type; | 145 | __be16 hw_type; |
| 146 | #define AARP_HW_TYPE_ETHERNET 1 | 146 | #define AARP_HW_TYPE_ETHERNET 1 |
| 147 | #define AARP_HW_TYPE_TOKENRING 2 | 147 | #define AARP_HW_TYPE_TOKENRING 2 |
| 148 | __u16 pa_type; | 148 | __be16 pa_type; |
| 149 | __u8 hw_len; | 149 | __u8 hw_len; |
| 150 | __u8 pa_len; | 150 | __u8 pa_len; |
| 151 | #define AARP_PA_ALEN 4 | 151 | #define AARP_PA_ALEN 4 |
| 152 | __u16 function; | 152 | __be16 function; |
| 153 | #define AARP_REQUEST 1 | 153 | #define AARP_REQUEST 1 |
| 154 | #define AARP_REPLY 2 | 154 | #define AARP_REPLY 2 |
| 155 | #define AARP_PROBE 3 | 155 | #define AARP_PROBE 3 |
| 156 | __u8 hw_src[ETH_ALEN] __attribute__ ((packed)); | 156 | __u8 hw_src[ETH_ALEN] __attribute__ ((packed)); |
| 157 | __u8 pa_src_zero __attribute__ ((packed)); | 157 | __u8 pa_src_zero __attribute__ ((packed)); |
| 158 | __u16 pa_src_net __attribute__ ((packed)); | 158 | __be16 pa_src_net __attribute__ ((packed)); |
| 159 | __u8 pa_src_node __attribute__ ((packed)); | 159 | __u8 pa_src_node __attribute__ ((packed)); |
| 160 | __u8 hw_dst[ETH_ALEN] __attribute__ ((packed)); | 160 | __u8 hw_dst[ETH_ALEN] __attribute__ ((packed)); |
| 161 | __u8 pa_dst_zero __attribute__ ((packed)); | 161 | __u8 pa_dst_zero __attribute__ ((packed)); |
| 162 | __u16 pa_dst_net __attribute__ ((packed)); | 162 | __be16 pa_dst_net __attribute__ ((packed)); |
| 163 | __u8 pa_dst_node __attribute__ ((packed)); | 163 | __u8 pa_dst_node __attribute__ ((packed)); |
| 164 | }; | 164 | }; |
| 165 | 165 | ||
diff --git a/include/linux/device.h b/include/linux/device.h index df94c0de53f2..7b781a72b293 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/config.h> | 14 | #include <linux/config.h> |
| 15 | #include <linux/ioport.h> | 15 | #include <linux/ioport.h> |
| 16 | #include <linux/kobject.h> | 16 | #include <linux/kobject.h> |
| 17 | #include <linux/klist.h> | ||
| 17 | #include <linux/list.h> | 18 | #include <linux/list.h> |
| 18 | #include <linux/types.h> | 19 | #include <linux/types.h> |
| 19 | #include <linux/module.h> | 20 | #include <linux/module.h> |
| @@ -44,14 +45,15 @@ struct device; | |||
| 44 | struct device_driver; | 45 | struct device_driver; |
| 45 | struct class; | 46 | struct class; |
| 46 | struct class_device; | 47 | struct class_device; |
| 47 | struct class_simple; | ||
| 48 | 48 | ||
| 49 | struct bus_type { | 49 | struct bus_type { |
| 50 | char * name; | 50 | const char * name; |
| 51 | 51 | ||
| 52 | struct subsystem subsys; | 52 | struct subsystem subsys; |
| 53 | struct kset drivers; | 53 | struct kset drivers; |
| 54 | struct kset devices; | 54 | struct kset devices; |
| 55 | struct klist klist_devices; | ||
| 56 | struct klist klist_drivers; | ||
| 55 | 57 | ||
| 56 | struct bus_attribute * bus_attrs; | 58 | struct bus_attribute * bus_attrs; |
| 57 | struct device_attribute * dev_attrs; | 59 | struct device_attribute * dev_attrs; |
| @@ -98,17 +100,18 @@ extern int bus_create_file(struct bus_type *, struct bus_attribute *); | |||
| 98 | extern void bus_remove_file(struct bus_type *, struct bus_attribute *); | 100 | extern void bus_remove_file(struct bus_type *, struct bus_attribute *); |
| 99 | 101 | ||
| 100 | struct device_driver { | 102 | struct device_driver { |
| 101 | char * name; | 103 | const char * name; |
| 102 | struct bus_type * bus; | 104 | struct bus_type * bus; |
| 103 | 105 | ||
| 104 | struct completion unloaded; | 106 | struct completion unloaded; |
| 105 | struct kobject kobj; | 107 | struct kobject kobj; |
| 106 | struct list_head devices; | 108 | struct klist klist_devices; |
| 109 | struct klist_node knode_bus; | ||
| 107 | 110 | ||
| 108 | struct module * owner; | 111 | struct module * owner; |
| 109 | 112 | ||
| 110 | int (*probe) (struct device * dev); | 113 | int (*probe) (struct device * dev); |
| 111 | int (*remove) (struct device * dev); | 114 | int (*remove) (struct device * dev); |
| 112 | void (*shutdown) (struct device * dev); | 115 | void (*shutdown) (struct device * dev); |
| 113 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); | 116 | int (*suspend) (struct device * dev, pm_message_t state, u32 level); |
| 114 | int (*resume) (struct device * dev, u32 level); | 117 | int (*resume) (struct device * dev, u32 level); |
| @@ -137,12 +140,16 @@ struct driver_attribute driver_attr_##_name = __ATTR(_name,_mode,_show,_store) | |||
| 137 | extern int driver_create_file(struct device_driver *, struct driver_attribute *); | 140 | extern int driver_create_file(struct device_driver *, struct driver_attribute *); |
| 138 | extern void driver_remove_file(struct device_driver *, struct driver_attribute *); | 141 | extern void driver_remove_file(struct device_driver *, struct driver_attribute *); |
| 139 | 142 | ||
| 143 | extern int driver_for_each_device(struct device_driver * drv, struct device * start, | ||
| 144 | void * data, int (*fn)(struct device *, void *)); | ||
| 145 | |||
| 140 | 146 | ||
| 141 | /* | 147 | /* |
| 142 | * device classes | 148 | * device classes |
| 143 | */ | 149 | */ |
| 144 | struct class { | 150 | struct class { |
| 145 | char * name; | 151 | const char * name; |
| 152 | struct module * owner; | ||
| 146 | 153 | ||
| 147 | struct subsystem subsys; | 154 | struct subsystem subsys; |
| 148 | struct list_head children; | 155 | struct list_head children; |
| @@ -185,6 +192,7 @@ struct class_device { | |||
| 185 | struct kobject kobj; | 192 | struct kobject kobj; |
| 186 | struct class * class; /* required */ | 193 | struct class * class; /* required */ |
| 187 | dev_t devt; /* dev_t, creates the sysfs "dev" */ | 194 | dev_t devt; /* dev_t, creates the sysfs "dev" */ |
| 195 | struct class_device_attribute *devt_attr; | ||
| 188 | struct device * dev; /* not necessary, but nice to have */ | 196 | struct device * dev; /* not necessary, but nice to have */ |
| 189 | void * class_data; /* class-specific data */ | 197 | void * class_data; /* class-specific data */ |
| 190 | 198 | ||
| @@ -245,26 +253,28 @@ struct class_interface { | |||
| 245 | extern int class_interface_register(struct class_interface *); | 253 | extern int class_interface_register(struct class_interface *); |
| 246 | extern void class_interface_unregister(struct class_interface *); | 254 | extern void class_interface_unregister(struct class_interface *); |
| 247 | 255 | ||
| 248 | /* interface for class simple stuff */ | 256 | extern struct class *class_create(struct module *owner, char *name); |
| 249 | extern struct class_simple *class_simple_create(struct module *owner, char *name); | 257 | extern void class_destroy(struct class *cls); |
| 250 | extern void class_simple_destroy(struct class_simple *cs); | 258 | extern struct class_device *class_device_create(struct class *cls, dev_t devt, |
| 251 | extern struct class_device *class_simple_device_add(struct class_simple *cs, dev_t dev, struct device *device, const char *fmt, ...) | 259 | struct device *device, char *fmt, ...) |
| 252 | __attribute__((format(printf,4,5))); | 260 | __attribute__((format(printf,4,5))); |
| 253 | extern int class_simple_set_hotplug(struct class_simple *, | 261 | extern void class_device_destroy(struct class *cls, dev_t devt); |
| 254 | int (*hotplug)(struct class_device *dev, char **envp, int num_envp, char *buffer, int buffer_size)); | ||
| 255 | extern void class_simple_device_remove(dev_t dev); | ||
| 256 | 262 | ||
| 257 | 263 | ||
| 258 | struct device { | 264 | struct device { |
| 259 | struct list_head node; /* node in sibling list */ | 265 | struct klist klist_children; |
| 260 | struct list_head bus_list; /* node in bus's list */ | 266 | struct klist_node knode_parent; /* node in sibling list */ |
| 261 | struct list_head driver_list; | 267 | struct klist_node knode_driver; |
| 262 | struct list_head children; | 268 | struct klist_node knode_bus; |
| 263 | struct device * parent; | 269 | struct device * parent; |
| 264 | 270 | ||
| 265 | struct kobject kobj; | 271 | struct kobject kobj; |
| 266 | char bus_id[BUS_ID_SIZE]; /* position on parent bus */ | 272 | char bus_id[BUS_ID_SIZE]; /* position on parent bus */ |
| 267 | 273 | ||
| 274 | struct semaphore sem; /* semaphore to synchronize calls to | ||
| 275 | * its driver. | ||
| 276 | */ | ||
| 277 | |||
| 268 | struct bus_type * bus; /* type of bus device is on */ | 278 | struct bus_type * bus; /* type of bus device is on */ |
| 269 | struct device_driver *driver; /* which driver has allocated this | 279 | struct device_driver *driver; /* which driver has allocated this |
| 270 | device */ | 280 | device */ |
| @@ -288,12 +298,6 @@ struct device { | |||
| 288 | void (*release)(struct device * dev); | 298 | void (*release)(struct device * dev); |
| 289 | }; | 299 | }; |
| 290 | 300 | ||
| 291 | static inline struct device * | ||
| 292 | list_to_dev(struct list_head *node) | ||
| 293 | { | ||
| 294 | return list_entry(node, struct device, node); | ||
| 295 | } | ||
| 296 | |||
| 297 | static inline void * | 301 | static inline void * |
| 298 | dev_get_drvdata (struct device *dev) | 302 | dev_get_drvdata (struct device *dev) |
| 299 | { | 303 | { |
| @@ -321,7 +325,6 @@ extern int device_for_each_child(struct device *, void *, | |||
| 321 | * Manual binding of a device to driver. See drivers/base/bus.c | 325 | * Manual binding of a device to driver. See drivers/base/bus.c |
| 322 | * for information on use. | 326 | * for information on use. |
| 323 | */ | 327 | */ |
| 324 | extern int driver_probe_device(struct device_driver * drv, struct device * dev); | ||
| 325 | extern void device_bind_driver(struct device * dev); | 328 | extern void device_bind_driver(struct device * dev); |
| 326 | extern void device_release_driver(struct device * dev); | 329 | extern void device_release_driver(struct device * dev); |
| 327 | extern int device_attach(struct device * dev); | 330 | extern int device_attach(struct device * dev); |
| @@ -332,8 +335,10 @@ extern void driver_attach(struct device_driver * drv); | |||
| 332 | 335 | ||
| 333 | struct device_attribute { | 336 | struct device_attribute { |
| 334 | struct attribute attr; | 337 | struct attribute attr; |
| 335 | ssize_t (*show)(struct device * dev, char * buf); | 338 | ssize_t (*show)(struct device *dev, struct device_attribute *attr, |
| 336 | ssize_t (*store)(struct device * dev, const char * buf, size_t count); | 339 | char *buf); |
| 340 | ssize_t (*store)(struct device *dev, struct device_attribute *attr, | ||
| 341 | const char *buf, size_t count); | ||
| 337 | }; | 342 | }; |
| 338 | 343 | ||
| 339 | #define DEVICE_ATTR(_name,_mode,_show,_store) \ | 344 | #define DEVICE_ATTR(_name,_mode,_show,_store) \ |
| @@ -360,13 +365,12 @@ extern int (*platform_notify_remove)(struct device * dev); | |||
| 360 | */ | 365 | */ |
| 361 | extern struct device * get_device(struct device * dev); | 366 | extern struct device * get_device(struct device * dev); |
| 362 | extern void put_device(struct device * dev); | 367 | extern void put_device(struct device * dev); |
| 363 | extern struct device *device_find(const char *name, struct bus_type *bus); | ||
| 364 | 368 | ||
| 365 | 369 | ||
| 366 | /* drivers/base/platform.c */ | 370 | /* drivers/base/platform.c */ |
| 367 | 371 | ||
| 368 | struct platform_device { | 372 | struct platform_device { |
| 369 | char * name; | 373 | const char * name; |
| 370 | u32 id; | 374 | u32 id; |
| 371 | struct device dev; | 375 | struct device dev; |
| 372 | u32 num_resources; | 376 | u32 num_resources; |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 0180102dace1..9b8b696d4f15 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -1657,6 +1657,52 @@ static inline void simple_transaction_set(struct file *file, size_t n) | |||
| 1657 | ar->size = n; | 1657 | ar->size = n; |
| 1658 | } | 1658 | } |
| 1659 | 1659 | ||
| 1660 | /* | ||
| 1661 | * simple attribute files | ||
| 1662 | * | ||
| 1663 | * These attributes behave similar to those in sysfs: | ||
| 1664 | * | ||
| 1665 | * Writing to an attribute immediately sets a value, an open file can be | ||
| 1666 | * written to multiple times. | ||
| 1667 | * | ||
| 1668 | * Reading from an attribute creates a buffer from the value that might get | ||
| 1669 | * read with multiple read calls. When the attribute has been read | ||
| 1670 | * completely, no further read calls are possible until the file is opened | ||
| 1671 | * again. | ||
| 1672 | * | ||
| 1673 | * All attributes contain a text representation of a numeric value | ||
| 1674 | * that are accessed with the get() and set() functions. | ||
| 1675 | */ | ||
| 1676 | #define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt) \ | ||
| 1677 | static int __fops ## _open(struct inode *inode, struct file *file) \ | ||
| 1678 | { \ | ||
| 1679 | __simple_attr_check_format(__fmt, 0ull); \ | ||
| 1680 | return simple_attr_open(inode, file, __get, __set, __fmt); \ | ||
| 1681 | } \ | ||
| 1682 | static struct file_operations __fops = { \ | ||
| 1683 | .owner = THIS_MODULE, \ | ||
| 1684 | .open = __fops ## _open, \ | ||
| 1685 | .release = simple_attr_close, \ | ||
| 1686 | .read = simple_attr_read, \ | ||
| 1687 | .write = simple_attr_write, \ | ||
| 1688 | }; | ||
| 1689 | |||
| 1690 | static inline void __attribute__((format(printf, 1, 2))) | ||
| 1691 | __simple_attr_check_format(const char *fmt, ...) | ||
| 1692 | { | ||
| 1693 | /* don't do anything, just let the compiler check the arguments; */ | ||
| 1694 | } | ||
| 1695 | |||
| 1696 | int simple_attr_open(struct inode *inode, struct file *file, | ||
| 1697 | u64 (*get)(void *), void (*set)(void *, u64), | ||
| 1698 | const char *fmt); | ||
| 1699 | int simple_attr_close(struct inode *inode, struct file *file); | ||
| 1700 | ssize_t simple_attr_read(struct file *file, char __user *buf, | ||
| 1701 | size_t len, loff_t *ppos); | ||
| 1702 | ssize_t simple_attr_write(struct file *file, const char __user *buf, | ||
| 1703 | size_t len, loff_t *ppos); | ||
| 1704 | |||
| 1705 | |||
| 1660 | #ifdef CONFIG_SECURITY | 1706 | #ifdef CONFIG_SECURITY |
| 1661 | static inline char *alloc_secdata(void) | 1707 | static inline char *alloc_secdata(void) |
| 1662 | { | 1708 | { |
diff --git a/include/linux/i2c-sysfs.h b/include/linux/i2c-sysfs.h new file mode 100644 index 000000000000..d7bf6ce11679 --- /dev/null +++ b/include/linux/i2c-sysfs.h | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | /* | ||
| 2 | * i2c-sysfs.h - i2c chip driver sysfs defines | ||
| 3 | * | ||
| 4 | * Copyright (C) 2005 Yani Ioannou <yani.ioannou@gmail.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 as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 19 | */ | ||
| 20 | #ifndef _LINUX_I2C_SYSFS_H | ||
| 21 | #define _LINUX_I2C_SYSFS_H | ||
| 22 | |||
| 23 | struct sensor_device_attribute{ | ||
| 24 | struct device_attribute dev_attr; | ||
| 25 | int index; | ||
| 26 | }; | ||
| 27 | #define to_sensor_dev_attr(_dev_attr) \ | ||
| 28 | container_of(_dev_attr, struct sensor_device_attribute, dev_attr) | ||
| 29 | |||
| 30 | #define SENSOR_DEVICE_ATTR(_name,_mode,_show,_store,_index) \ | ||
| 31 | struct sensor_device_attribute sensor_dev_attr_##_name = { \ | ||
| 32 | .dev_attr = __ATTR(_name,_mode,_show,_store), \ | ||
| 33 | .index = _index, \ | ||
| 34 | } | ||
| 35 | |||
| 36 | #endif /* _LINUX_I2C_SYSFS_H */ | ||
diff --git a/include/linux/input.h b/include/linux/input.h index 72731d7d189e..9d9598ed760d 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -1015,7 +1015,7 @@ static inline void input_set_abs_params(struct input_dev *dev, int axis, int min | |||
| 1015 | dev->absbit[LONG(axis)] |= BIT(axis); | 1015 | dev->absbit[LONG(axis)] |= BIT(axis); |
| 1016 | } | 1016 | } |
| 1017 | 1017 | ||
| 1018 | extern struct class_simple *input_class; | 1018 | extern struct class *input_class; |
| 1019 | 1019 | ||
| 1020 | #endif | 1020 | #endif |
| 1021 | #endif | 1021 | #endif |
diff --git a/include/linux/klist.h b/include/linux/klist.h new file mode 100644 index 000000000000..eebf5e5696ec --- /dev/null +++ b/include/linux/klist.h | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | /* | ||
| 2 | * klist.h - Some generic list helpers, extending struct list_head a bit. | ||
| 3 | * | ||
| 4 | * Implementations are found in lib/klist.c | ||
| 5 | * | ||
| 6 | * | ||
| 7 | * Copyright (C) 2005 Patrick Mochel | ||
| 8 | * | ||
| 9 | * This file is rleased under the GPL v2. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/spinlock.h> | ||
| 13 | #include <linux/completion.h> | ||
| 14 | #include <linux/kref.h> | ||
| 15 | #include <linux/list.h> | ||
| 16 | |||
| 17 | |||
| 18 | struct klist { | ||
| 19 | spinlock_t k_lock; | ||
| 20 | struct list_head k_list; | ||
| 21 | }; | ||
| 22 | |||
| 23 | |||
| 24 | extern void klist_init(struct klist * k); | ||
| 25 | |||
| 26 | |||
| 27 | struct klist_node { | ||
| 28 | struct klist * n_klist; | ||
| 29 | struct list_head n_node; | ||
| 30 | struct kref n_ref; | ||
| 31 | struct completion n_removed; | ||
| 32 | }; | ||
| 33 | |||
| 34 | extern void klist_add_tail(struct klist * k, struct klist_node * n); | ||
| 35 | extern void klist_add_head(struct klist * k, struct klist_node * n); | ||
| 36 | |||
| 37 | extern void klist_del(struct klist_node * n); | ||
| 38 | extern void klist_remove(struct klist_node * n); | ||
| 39 | |||
| 40 | extern int klist_node_attached(struct klist_node * n); | ||
| 41 | |||
| 42 | |||
| 43 | struct klist_iter { | ||
| 44 | struct klist * i_klist; | ||
| 45 | struct list_head * i_head; | ||
| 46 | struct klist_node * i_cur; | ||
| 47 | }; | ||
| 48 | |||
| 49 | |||
| 50 | extern void klist_iter_init(struct klist * k, struct klist_iter * i); | ||
| 51 | extern void klist_iter_init_node(struct klist * k, struct klist_iter * i, | ||
| 52 | struct klist_node * n); | ||
| 53 | extern void klist_iter_exit(struct klist_iter * i); | ||
| 54 | extern struct klist_node * klist_next(struct klist_iter * i); | ||
| 55 | |||
diff --git a/include/linux/kobject.h b/include/linux/kobject.h index 765d660d3bea..3b22304f12fd 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | extern u64 hotplug_seqnum; | 33 | extern u64 hotplug_seqnum; |
| 34 | 34 | ||
| 35 | struct kobject { | 35 | struct kobject { |
| 36 | char * k_name; | 36 | const char * k_name; |
| 37 | char name[KOBJ_NAME_LEN]; | 37 | char name[KOBJ_NAME_LEN]; |
| 38 | struct kref kref; | 38 | struct kref kref; |
| 39 | struct list_head entry; | 39 | struct list_head entry; |
| @@ -46,7 +46,7 @@ struct kobject { | |||
| 46 | extern int kobject_set_name(struct kobject *, const char *, ...) | 46 | extern int kobject_set_name(struct kobject *, const char *, ...) |
| 47 | __attribute__((format(printf,2,3))); | 47 | __attribute__((format(printf,2,3))); |
| 48 | 48 | ||
| 49 | static inline char * kobject_name(struct kobject * kobj) | 49 | static inline const char * kobject_name(const struct kobject * kobj) |
| 50 | { | 50 | { |
| 51 | return kobj->k_name; | 51 | return kobj->k_name; |
| 52 | } | 52 | } |
| @@ -57,7 +57,7 @@ extern void kobject_cleanup(struct kobject *); | |||
| 57 | extern int kobject_add(struct kobject *); | 57 | extern int kobject_add(struct kobject *); |
| 58 | extern void kobject_del(struct kobject *); | 58 | extern void kobject_del(struct kobject *); |
| 59 | 59 | ||
| 60 | extern int kobject_rename(struct kobject *, char *new_name); | 60 | extern int kobject_rename(struct kobject *, const char *new_name); |
| 61 | 61 | ||
| 62 | extern int kobject_register(struct kobject *); | 62 | extern int kobject_register(struct kobject *); |
| 63 | extern void kobject_unregister(struct kobject *); | 63 | extern void kobject_unregister(struct kobject *); |
| @@ -94,7 +94,7 @@ struct kobj_type { | |||
| 94 | */ | 94 | */ |
| 95 | struct kset_hotplug_ops { | 95 | struct kset_hotplug_ops { |
| 96 | int (*filter)(struct kset *kset, struct kobject *kobj); | 96 | int (*filter)(struct kset *kset, struct kobject *kobj); |
| 97 | char *(*name)(struct kset *kset, struct kobject *kobj); | 97 | const char *(*name)(struct kset *kset, struct kobject *kobj); |
| 98 | int (*hotplug)(struct kset *kset, struct kobject *kobj, char **envp, | 98 | int (*hotplug)(struct kset *kset, struct kobject *kobj, char **envp, |
| 99 | int num_envp, char *buffer, int buffer_size); | 99 | int num_envp, char *buffer, int buffer_size); |
| 100 | }; | 100 | }; |
diff --git a/include/linux/netfilter_ipv4.h b/include/linux/netfilter_ipv4.h index 9e5750079e09..3ebc36afae1a 100644 --- a/include/linux/netfilter_ipv4.h +++ b/include/linux/netfilter_ipv4.h | |||
| @@ -75,12 +75,6 @@ enum nf_ip_hook_priorities { | |||
| 75 | #define SO_ORIGINAL_DST 80 | 75 | #define SO_ORIGINAL_DST 80 |
| 76 | 76 | ||
| 77 | #ifdef __KERNEL__ | 77 | #ifdef __KERNEL__ |
| 78 | #ifdef CONFIG_NETFILTER_DEBUG | ||
| 79 | void nf_debug_ip_local_deliver(struct sk_buff *skb); | ||
| 80 | void nf_debug_ip_loopback_xmit(struct sk_buff *newskb); | ||
| 81 | void nf_debug_ip_finish_output2(struct sk_buff *skb); | ||
| 82 | #endif /*CONFIG_NETFILTER_DEBUG*/ | ||
| 83 | |||
| 84 | extern int ip_route_me_harder(struct sk_buff **pskb); | 78 | extern int ip_route_me_harder(struct sk_buff **pskb); |
| 85 | 79 | ||
| 86 | /* Call this before modifying an existing IP packet: ensures it is | 80 | /* Call this before modifying an existing IP packet: ensures it is |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_core.h b/include/linux/netfilter_ipv4/ip_conntrack_core.h index d84be02cb4fc..694aec9b4784 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_core.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_core.h | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | #ifndef _IP_CONNTRACK_CORE_H | 1 | #ifndef _IP_CONNTRACK_CORE_H |
| 2 | #define _IP_CONNTRACK_CORE_H | 2 | #define _IP_CONNTRACK_CORE_H |
| 3 | #include <linux/netfilter.h> | 3 | #include <linux/netfilter.h> |
| 4 | #include <linux/netfilter_ipv4/lockhelp.h> | ||
| 5 | 4 | ||
| 6 | /* This header is used to share core functionality between the | 5 | /* This header is used to share core functionality between the |
| 7 | standalone connection tracking module, and the compatibility layer's use | 6 | standalone connection tracking module, and the compatibility layer's use |
| @@ -47,6 +46,6 @@ static inline int ip_conntrack_confirm(struct sk_buff **pskb) | |||
| 47 | 46 | ||
| 48 | extern struct list_head *ip_conntrack_hash; | 47 | extern struct list_head *ip_conntrack_hash; |
| 49 | extern struct list_head ip_conntrack_expect_list; | 48 | extern struct list_head ip_conntrack_expect_list; |
| 50 | DECLARE_RWLOCK_EXTERN(ip_conntrack_lock); | 49 | extern rwlock_t ip_conntrack_lock; |
| 51 | #endif /* _IP_CONNTRACK_CORE_H */ | 50 | #endif /* _IP_CONNTRACK_CORE_H */ |
| 52 | 51 | ||
diff --git a/include/linux/netfilter_ipv4/ip_nat.h b/include/linux/netfilter_ipv4/ip_nat.h index 2b72b86176f0..e201ec6e9905 100644 --- a/include/linux/netfilter_ipv4/ip_nat.h +++ b/include/linux/netfilter_ipv4/ip_nat.h | |||
| @@ -50,10 +50,9 @@ struct ip_nat_multi_range_compat | |||
| 50 | 50 | ||
| 51 | #ifdef __KERNEL__ | 51 | #ifdef __KERNEL__ |
| 52 | #include <linux/list.h> | 52 | #include <linux/list.h> |
| 53 | #include <linux/netfilter_ipv4/lockhelp.h> | ||
| 54 | 53 | ||
| 55 | /* Protects NAT hash tables, and NAT-private part of conntracks. */ | 54 | /* Protects NAT hash tables, and NAT-private part of conntracks. */ |
| 56 | DECLARE_RWLOCK_EXTERN(ip_nat_lock); | 55 | extern rwlock_t ip_nat_lock; |
| 57 | 56 | ||
| 58 | /* The structure embedded in the conntrack structure. */ | 57 | /* The structure embedded in the conntrack structure. */ |
| 59 | struct ip_nat_info | 58 | struct ip_nat_info |
diff --git a/include/linux/netfilter_ipv4/listhelp.h b/include/linux/netfilter_ipv4/listhelp.h index f2ae7c5e57bb..360429f48737 100644 --- a/include/linux/netfilter_ipv4/listhelp.h +++ b/include/linux/netfilter_ipv4/listhelp.h | |||
| @@ -2,7 +2,6 @@ | |||
| 2 | #define _LISTHELP_H | 2 | #define _LISTHELP_H |
| 3 | #include <linux/config.h> | 3 | #include <linux/config.h> |
| 4 | #include <linux/list.h> | 4 | #include <linux/list.h> |
| 5 | #include <linux/netfilter_ipv4/lockhelp.h> | ||
| 6 | 5 | ||
| 7 | /* Header to do more comprehensive job than linux/list.h; assume list | 6 | /* Header to do more comprehensive job than linux/list.h; assume list |
| 8 | is first entry in structure. */ | 7 | is first entry in structure. */ |
diff --git a/include/linux/netfilter_ipv4/lockhelp.h b/include/linux/netfilter_ipv4/lockhelp.h deleted file mode 100644 index a3288633ab46..000000000000 --- a/include/linux/netfilter_ipv4/lockhelp.h +++ /dev/null | |||
| @@ -1,129 +0,0 @@ | |||
| 1 | #ifndef _LOCKHELP_H | ||
| 2 | #define _LOCKHELP_H | ||
| 3 | #include <linux/config.h> | ||
| 4 | |||
| 5 | #include <linux/spinlock.h> | ||
| 6 | #include <asm/atomic.h> | ||
| 7 | #include <linux/interrupt.h> | ||
| 8 | #include <linux/smp.h> | ||
| 9 | |||
| 10 | /* Header to do help in lock debugging. */ | ||
| 11 | |||
| 12 | #ifdef CONFIG_NETFILTER_DEBUG | ||
| 13 | struct spinlock_debug | ||
| 14 | { | ||
| 15 | spinlock_t l; | ||
| 16 | atomic_t locked_by; | ||
| 17 | }; | ||
| 18 | |||
| 19 | struct rwlock_debug | ||
| 20 | { | ||
| 21 | rwlock_t l; | ||
| 22 | long read_locked_map; | ||
| 23 | long write_locked_map; | ||
| 24 | }; | ||
| 25 | |||
| 26 | #define DECLARE_LOCK(l) \ | ||
| 27 | struct spinlock_debug l = { SPIN_LOCK_UNLOCKED, ATOMIC_INIT(-1) } | ||
| 28 | #define DECLARE_LOCK_EXTERN(l) \ | ||
| 29 | extern struct spinlock_debug l | ||
| 30 | #define DECLARE_RWLOCK(l) \ | ||
| 31 | struct rwlock_debug l = { RW_LOCK_UNLOCKED, 0, 0 } | ||
| 32 | #define DECLARE_RWLOCK_EXTERN(l) \ | ||
| 33 | extern struct rwlock_debug l | ||
| 34 | |||
| 35 | #define MUST_BE_LOCKED(l) \ | ||
| 36 | do { if (atomic_read(&(l)->locked_by) != smp_processor_id()) \ | ||
| 37 | printk("ASSERT %s:%u %s unlocked\n", __FILE__, __LINE__, #l); \ | ||
| 38 | } while(0) | ||
| 39 | |||
| 40 | #define MUST_BE_UNLOCKED(l) \ | ||
| 41 | do { if (atomic_read(&(l)->locked_by) == smp_processor_id()) \ | ||
| 42 | printk("ASSERT %s:%u %s locked\n", __FILE__, __LINE__, #l); \ | ||
| 43 | } while(0) | ||
| 44 | |||
| 45 | /* Write locked OK as well. */ | ||
| 46 | #define MUST_BE_READ_LOCKED(l) \ | ||
| 47 | do { if (!((l)->read_locked_map & (1UL << smp_processor_id())) \ | ||
| 48 | && !((l)->write_locked_map & (1UL << smp_processor_id()))) \ | ||
| 49 | printk("ASSERT %s:%u %s not readlocked\n", __FILE__, __LINE__, #l); \ | ||
| 50 | } while(0) | ||
| 51 | |||
| 52 | #define MUST_BE_WRITE_LOCKED(l) \ | ||
| 53 | do { if (!((l)->write_locked_map & (1UL << smp_processor_id()))) \ | ||
| 54 | printk("ASSERT %s:%u %s not writelocked\n", __FILE__, __LINE__, #l); \ | ||
| 55 | } while(0) | ||
| 56 | |||
| 57 | #define MUST_BE_READ_WRITE_UNLOCKED(l) \ | ||
| 58 | do { if ((l)->read_locked_map & (1UL << smp_processor_id())) \ | ||
| 59 | printk("ASSERT %s:%u %s readlocked\n", __FILE__, __LINE__, #l); \ | ||
| 60 | else if ((l)->write_locked_map & (1UL << smp_processor_id())) \ | ||
| 61 | printk("ASSERT %s:%u %s writelocked\n", __FILE__, __LINE__, #l); \ | ||
| 62 | } while(0) | ||
| 63 | |||
| 64 | #define LOCK_BH(lk) \ | ||
| 65 | do { \ | ||
| 66 | MUST_BE_UNLOCKED(lk); \ | ||
| 67 | spin_lock_bh(&(lk)->l); \ | ||
| 68 | atomic_set(&(lk)->locked_by, smp_processor_id()); \ | ||
| 69 | } while(0) | ||
| 70 | |||
| 71 | #define UNLOCK_BH(lk) \ | ||
| 72 | do { \ | ||
| 73 | MUST_BE_LOCKED(lk); \ | ||
| 74 | atomic_set(&(lk)->locked_by, -1); \ | ||
| 75 | spin_unlock_bh(&(lk)->l); \ | ||
| 76 | } while(0) | ||
| 77 | |||
| 78 | #define READ_LOCK(lk) \ | ||
| 79 | do { \ | ||
| 80 | MUST_BE_READ_WRITE_UNLOCKED(lk); \ | ||
| 81 | read_lock_bh(&(lk)->l); \ | ||
| 82 | set_bit(smp_processor_id(), &(lk)->read_locked_map); \ | ||
| 83 | } while(0) | ||
| 84 | |||
| 85 | #define WRITE_LOCK(lk) \ | ||
| 86 | do { \ | ||
| 87 | MUST_BE_READ_WRITE_UNLOCKED(lk); \ | ||
| 88 | write_lock_bh(&(lk)->l); \ | ||
| 89 | set_bit(smp_processor_id(), &(lk)->write_locked_map); \ | ||
| 90 | } while(0) | ||
| 91 | |||
| 92 | #define READ_UNLOCK(lk) \ | ||
| 93 | do { \ | ||
| 94 | if (!((lk)->read_locked_map & (1UL << smp_processor_id()))) \ | ||
| 95 | printk("ASSERT: %s:%u %s not readlocked\n", \ | ||
| 96 | __FILE__, __LINE__, #lk); \ | ||
| 97 | clear_bit(smp_processor_id(), &(lk)->read_locked_map); \ | ||
| 98 | read_unlock_bh(&(lk)->l); \ | ||
| 99 | } while(0) | ||
| 100 | |||
| 101 | #define WRITE_UNLOCK(lk) \ | ||
| 102 | do { \ | ||
| 103 | MUST_BE_WRITE_LOCKED(lk); \ | ||
| 104 | clear_bit(smp_processor_id(), &(lk)->write_locked_map); \ | ||
| 105 | write_unlock_bh(&(lk)->l); \ | ||
| 106 | } while(0) | ||
| 107 | |||
| 108 | #else | ||
| 109 | #define DECLARE_LOCK(l) spinlock_t l = SPIN_LOCK_UNLOCKED | ||
| 110 | #define DECLARE_LOCK_EXTERN(l) extern spinlock_t l | ||
| 111 | #define DECLARE_RWLOCK(l) rwlock_t l = RW_LOCK_UNLOCKED | ||
| 112 | #define DECLARE_RWLOCK_EXTERN(l) extern rwlock_t l | ||
| 113 | |||
| 114 | #define MUST_BE_LOCKED(l) | ||
| 115 | #define MUST_BE_UNLOCKED(l) | ||
| 116 | #define MUST_BE_READ_LOCKED(l) | ||
| 117 | #define MUST_BE_WRITE_LOCKED(l) | ||
| 118 | #define MUST_BE_READ_WRITE_UNLOCKED(l) | ||
| 119 | |||
| 120 | #define LOCK_BH(l) spin_lock_bh(l) | ||
| 121 | #define UNLOCK_BH(l) spin_unlock_bh(l) | ||
| 122 | |||
| 123 | #define READ_LOCK(l) read_lock_bh(l) | ||
| 124 | #define WRITE_LOCK(l) write_lock_bh(l) | ||
| 125 | #define READ_UNLOCK(l) read_unlock_bh(l) | ||
| 126 | #define WRITE_UNLOCK(l) write_unlock_bh(l) | ||
| 127 | #endif /*CONFIG_NETFILTER_DEBUG*/ | ||
| 128 | |||
| 129 | #endif /* _LOCKHELP_H */ | ||
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index e38407a23d04..3029cad63a01 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #define NETLINK_SELINUX 7 /* SELinux event notifications */ | 14 | #define NETLINK_SELINUX 7 /* SELinux event notifications */ |
| 15 | #define NETLINK_ARPD 8 | 15 | #define NETLINK_ARPD 8 |
| 16 | #define NETLINK_AUDIT 9 /* auditing */ | 16 | #define NETLINK_AUDIT 9 /* auditing */ |
| 17 | #define NETLINK_FIB_LOOKUP 10 | ||
| 17 | #define NETLINK_ROUTE6 11 /* af_inet6 route comm channel */ | 18 | #define NETLINK_ROUTE6 11 /* af_inet6 route comm channel */ |
| 18 | #define NETLINK_IP6_FW 13 | 19 | #define NETLINK_IP6_FW 13 |
| 19 | #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ | 20 | #define NETLINK_DNRTMSG 14 /* DECnet routing messages */ |
| @@ -146,7 +147,7 @@ struct netlink_callback | |||
| 146 | int (*dump)(struct sk_buff * skb, struct netlink_callback *cb); | 147 | int (*dump)(struct sk_buff * skb, struct netlink_callback *cb); |
| 147 | int (*done)(struct netlink_callback *cb); | 148 | int (*done)(struct netlink_callback *cb); |
| 148 | int family; | 149 | int family; |
| 149 | long args[4]; | 150 | long args[5]; |
| 150 | }; | 151 | }; |
| 151 | 152 | ||
| 152 | struct netlink_notify | 153 | struct netlink_notify |
diff --git a/include/linux/node.h b/include/linux/node.h index 6e0a697e594e..254dc3de650b 100644 --- a/include/linux/node.h +++ b/include/linux/node.h | |||
| @@ -27,6 +27,7 @@ struct node { | |||
| 27 | }; | 27 | }; |
| 28 | 28 | ||
| 29 | extern int register_node(struct node *, int, struct node *); | 29 | extern int register_node(struct node *, int, struct node *); |
| 30 | extern void unregister_node(struct node *node); | ||
| 30 | 31 | ||
| 31 | #define to_node(sys_device) container_of(sys_device, struct node, sysdev) | 32 | #define to_node(sys_device) container_of(sys_device, struct node, sysdev) |
| 32 | 33 | ||
diff --git a/include/linux/pfkeyv2.h b/include/linux/pfkeyv2.h index e6b519220245..724066778aff 100644 --- a/include/linux/pfkeyv2.h +++ b/include/linux/pfkeyv2.h | |||
| @@ -245,6 +245,7 @@ struct sadb_x_nat_t_port { | |||
| 245 | 245 | ||
| 246 | /* Security Association flags */ | 246 | /* Security Association flags */ |
| 247 | #define SADB_SAFLAGS_PFS 1 | 247 | #define SADB_SAFLAGS_PFS 1 |
| 248 | #define SADB_SAFLAGS_NOPMTUDISC 0x20000000 | ||
| 248 | #define SADB_SAFLAGS_DECAP_DSCP 0x40000000 | 249 | #define SADB_SAFLAGS_DECAP_DSCP 0x40000000 |
| 249 | #define SADB_SAFLAGS_NOECN 0x80000000 | 250 | #define SADB_SAFLAGS_NOECN 0x80000000 |
| 250 | 251 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index cc04f5cd2286..d7c839a21842 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -193,7 +193,6 @@ struct skb_shared_info { | |||
| 193 | * @nfcache: Cache info | 193 | * @nfcache: Cache info |
| 194 | * @nfct: Associated connection, if any | 194 | * @nfct: Associated connection, if any |
| 195 | * @nfctinfo: Relationship of this skb to the connection | 195 | * @nfctinfo: Relationship of this skb to the connection |
| 196 | * @nf_debug: Netfilter debugging | ||
| 197 | * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c | 196 | * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c |
| 198 | * @private: Data which is private to the HIPPI implementation | 197 | * @private: Data which is private to the HIPPI implementation |
| 199 | * @tc_index: Traffic control index | 198 | * @tc_index: Traffic control index |
| @@ -264,9 +263,6 @@ struct sk_buff { | |||
| 264 | __u32 nfcache; | 263 | __u32 nfcache; |
| 265 | __u32 nfctinfo; | 264 | __u32 nfctinfo; |
| 266 | struct nf_conntrack *nfct; | 265 | struct nf_conntrack *nfct; |
| 267 | #ifdef CONFIG_NETFILTER_DEBUG | ||
| 268 | unsigned int nf_debug; | ||
| 269 | #endif | ||
| 270 | #ifdef CONFIG_BRIDGE_NETFILTER | 266 | #ifdef CONFIG_BRIDGE_NETFILTER |
| 271 | struct nf_bridge_info *nf_bridge; | 267 | struct nf_bridge_info *nf_bridge; |
| 272 | #endif | 268 | #endif |
| @@ -1219,15 +1215,6 @@ static inline void nf_reset(struct sk_buff *skb) | |||
| 1219 | { | 1215 | { |
| 1220 | nf_conntrack_put(skb->nfct); | 1216 | nf_conntrack_put(skb->nfct); |
| 1221 | skb->nfct = NULL; | 1217 | skb->nfct = NULL; |
| 1222 | #ifdef CONFIG_NETFILTER_DEBUG | ||
| 1223 | skb->nf_debug = 0; | ||
| 1224 | #endif | ||
| 1225 | } | ||
| 1226 | static inline void nf_reset_debug(struct sk_buff *skb) | ||
| 1227 | { | ||
| 1228 | #ifdef CONFIG_NETFILTER_DEBUG | ||
| 1229 | skb->nf_debug = 0; | ||
| 1230 | #endif | ||
| 1231 | } | 1218 | } |
| 1232 | 1219 | ||
| 1233 | #ifdef CONFIG_BRIDGE_NETFILTER | 1220 | #ifdef CONFIG_BRIDGE_NETFILTER |
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h index 38b58b30814a..392da5a6dacb 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h | |||
| @@ -16,13 +16,13 @@ struct kobject; | |||
| 16 | struct module; | 16 | struct module; |
| 17 | 17 | ||
| 18 | struct attribute { | 18 | struct attribute { |
| 19 | char * name; | 19 | const char * name; |
| 20 | struct module * owner; | 20 | struct module * owner; |
| 21 | mode_t mode; | 21 | mode_t mode; |
| 22 | }; | 22 | }; |
| 23 | 23 | ||
| 24 | struct attribute_group { | 24 | struct attribute_group { |
| 25 | char * name; | 25 | const char * name; |
| 26 | struct attribute ** attrs; | 26 | struct attribute ** attrs; |
| 27 | }; | 27 | }; |
| 28 | 28 | ||
| @@ -73,6 +73,7 @@ struct sysfs_dirent { | |||
| 73 | int s_type; | 73 | int s_type; |
| 74 | umode_t s_mode; | 74 | umode_t s_mode; |
| 75 | struct dentry * s_dentry; | 75 | struct dentry * s_dentry; |
| 76 | struct iattr * s_iattr; | ||
| 76 | }; | 77 | }; |
| 77 | 78 | ||
| 78 | #define SYSFS_ROOT 0x0001 | 79 | #define SYSFS_ROOT 0x0001 |
| @@ -105,11 +106,11 @@ sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, mode_t mode); | |||
| 105 | extern void | 106 | extern void |
| 106 | sysfs_remove_file(struct kobject *, const struct attribute *); | 107 | sysfs_remove_file(struct kobject *, const struct attribute *); |
| 107 | 108 | ||
| 108 | extern int | 109 | extern int |
| 109 | sysfs_create_link(struct kobject * kobj, struct kobject * target, char * name); | 110 | sysfs_create_link(struct kobject * kobj, struct kobject * target, const char * name); |
| 110 | 111 | ||
| 111 | extern void | 112 | extern void |
| 112 | sysfs_remove_link(struct kobject *, char * name); | 113 | sysfs_remove_link(struct kobject *, const char * name); |
| 113 | 114 | ||
| 114 | int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr); | 115 | int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr); |
| 115 | int sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr); | 116 | int sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr); |
| @@ -153,12 +154,12 @@ static inline void sysfs_remove_file(struct kobject * k, const struct attribute | |||
| 153 | ; | 154 | ; |
| 154 | } | 155 | } |
| 155 | 156 | ||
| 156 | static inline int sysfs_create_link(struct kobject * k, struct kobject * t, char * n) | 157 | static inline int sysfs_create_link(struct kobject * k, struct kobject * t, const char * n) |
| 157 | { | 158 | { |
| 158 | return 0; | 159 | return 0; |
| 159 | } | 160 | } |
| 160 | 161 | ||
| 161 | static inline void sysfs_remove_link(struct kobject * k, char * name) | 162 | static inline void sysfs_remove_link(struct kobject * k, const char * name) |
| 162 | { | 163 | { |
| 163 | ; | 164 | ; |
| 164 | } | 165 | } |
diff --git a/include/linux/usb.h b/include/linux/usb.h index 2d1ac5058534..3d508bf08402 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -287,15 +287,14 @@ struct usb_bus { | |||
| 287 | 287 | ||
| 288 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ | 288 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ |
| 289 | 289 | ||
| 290 | struct class_device class_dev; /* class device for this bus */ | 290 | struct class_device *class_dev; /* class device for this bus */ |
| 291 | struct kref kref; /* handles reference counting this bus */ | ||
| 291 | void (*release)(struct usb_bus *bus); /* function to destroy this bus's memory */ | 292 | void (*release)(struct usb_bus *bus); /* function to destroy this bus's memory */ |
| 292 | #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE) | 293 | #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE) |
| 293 | struct mon_bus *mon_bus; /* non-null when associated */ | 294 | struct mon_bus *mon_bus; /* non-null when associated */ |
| 294 | int monitored; /* non-zero when monitored */ | 295 | int monitored; /* non-zero when monitored */ |
| 295 | #endif | 296 | #endif |
| 296 | }; | 297 | }; |
| 297 | #define to_usb_bus(d) container_of(d, struct usb_bus, class_dev) | ||
| 298 | |||
| 299 | 298 | ||
| 300 | /* -------------------------------------------------------------------------- */ | 299 | /* -------------------------------------------------------------------------- */ |
| 301 | 300 | ||
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index d68391a9b9f3..f0d423300d84 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h | |||
| @@ -196,6 +196,7 @@ struct xfrm_usersa_info { | |||
| 196 | __u8 flags; | 196 | __u8 flags; |
| 197 | #define XFRM_STATE_NOECN 1 | 197 | #define XFRM_STATE_NOECN 1 |
| 198 | #define XFRM_STATE_DECAP_DSCP 2 | 198 | #define XFRM_STATE_DECAP_DSCP 2 |
| 199 | #define XFRM_STATE_NOPMTUDISC 4 | ||
| 199 | }; | 200 | }; |
| 200 | 201 | ||
| 201 | struct xfrm_usersa_id { | 202 | struct xfrm_usersa_id { |
diff --git a/include/net/ax25.h b/include/net/ax25.h index 9e6368a54547..828a3a93dda1 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h | |||
| @@ -220,7 +220,7 @@ static __inline__ void ax25_cb_put(ax25_cb *ax25) | |||
| 220 | } | 220 | } |
| 221 | } | 221 | } |
| 222 | 222 | ||
| 223 | static inline unsigned short ax25_type_trans(struct sk_buff *skb, struct net_device *dev) | 223 | static inline __be16 ax25_type_trans(struct sk_buff *skb, struct net_device *dev) |
| 224 | { | 224 | { |
| 225 | skb->dev = dev; | 225 | skb->dev = dev; |
| 226 | skb->pkt_type = PACKET_HOST; | 226 | skb->pkt_type = PACKET_HOST; |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 319904518194..a66e9de16a6c 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
| @@ -167,14 +167,17 @@ extern int fib6_walk_continue(struct fib6_walker_t *w); | |||
| 167 | extern int fib6_add(struct fib6_node *root, | 167 | extern int fib6_add(struct fib6_node *root, |
| 168 | struct rt6_info *rt, | 168 | struct rt6_info *rt, |
| 169 | struct nlmsghdr *nlh, | 169 | struct nlmsghdr *nlh, |
| 170 | void *rtattr); | 170 | void *rtattr, |
| 171 | struct netlink_skb_parms *req); | ||
| 171 | 172 | ||
| 172 | extern int fib6_del(struct rt6_info *rt, | 173 | extern int fib6_del(struct rt6_info *rt, |
| 173 | struct nlmsghdr *nlh, | 174 | struct nlmsghdr *nlh, |
| 174 | void *rtattr); | 175 | void *rtattr, |
| 176 | struct netlink_skb_parms *req); | ||
| 175 | 177 | ||
| 176 | extern void inet6_rt_notify(int event, struct rt6_info *rt, | 178 | extern void inet6_rt_notify(int event, struct rt6_info *rt, |
| 177 | struct nlmsghdr *nlh); | 179 | struct nlmsghdr *nlh, |
| 180 | struct netlink_skb_parms *req); | ||
| 178 | 181 | ||
| 179 | extern void fib6_run_gc(unsigned long dummy); | 182 | extern void fib6_run_gc(unsigned long dummy); |
| 180 | 183 | ||
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index d5d1dd10cdb8..f920706d526b 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h | |||
| @@ -41,13 +41,16 @@ extern int ipv6_route_ioctl(unsigned int cmd, void __user *arg); | |||
| 41 | 41 | ||
| 42 | extern int ip6_route_add(struct in6_rtmsg *rtmsg, | 42 | extern int ip6_route_add(struct in6_rtmsg *rtmsg, |
| 43 | struct nlmsghdr *, | 43 | struct nlmsghdr *, |
| 44 | void *rtattr); | 44 | void *rtattr, |
| 45 | struct netlink_skb_parms *req); | ||
| 45 | extern int ip6_ins_rt(struct rt6_info *, | 46 | extern int ip6_ins_rt(struct rt6_info *, |
| 46 | struct nlmsghdr *, | 47 | struct nlmsghdr *, |
| 47 | void *rtattr); | 48 | void *rtattr, |
| 49 | struct netlink_skb_parms *req); | ||
| 48 | extern int ip6_del_rt(struct rt6_info *, | 50 | extern int ip6_del_rt(struct rt6_info *, |
| 49 | struct nlmsghdr *, | 51 | struct nlmsghdr *, |
| 50 | void *rtattr); | 52 | void *rtattr, |
| 53 | struct netlink_skb_parms *req); | ||
| 51 | 54 | ||
| 52 | extern int ip6_rt_addr_add(struct in6_addr *addr, | 55 | extern int ip6_rt_addr_add(struct in6_addr *addr, |
| 53 | struct net_device *dev, | 56 | struct net_device *dev, |
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index e5a5f6b62f88..a4208a336ac0 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h | |||
| @@ -109,6 +109,20 @@ struct fib_result { | |||
| 109 | #endif | 109 | #endif |
| 110 | }; | 110 | }; |
| 111 | 111 | ||
| 112 | struct fib_result_nl { | ||
| 113 | u32 fl_addr; /* To be looked up*/ | ||
| 114 | u32 fl_fwmark; | ||
| 115 | unsigned char fl_tos; | ||
| 116 | unsigned char fl_scope; | ||
| 117 | unsigned char tb_id_in; | ||
| 118 | |||
| 119 | unsigned char tb_id; /* Results */ | ||
| 120 | unsigned char prefixlen; | ||
| 121 | unsigned char nh_sel; | ||
| 122 | unsigned char type; | ||
| 123 | unsigned char scope; | ||
| 124 | int err; | ||
| 125 | }; | ||
| 112 | 126 | ||
| 113 | #ifdef CONFIG_IP_ROUTE_MULTIPATH | 127 | #ifdef CONFIG_IP_ROUTE_MULTIPATH |
| 114 | 128 | ||
diff --git a/include/net/sctp/command.h b/include/net/sctp/command.h index ebc5282e6d58..dc107ffad483 100644 --- a/include/net/sctp/command.h +++ b/include/net/sctp/command.h | |||
| @@ -65,9 +65,11 @@ typedef enum { | |||
| 65 | SCTP_CMD_TIMER_START, /* Start a timer. */ | 65 | SCTP_CMD_TIMER_START, /* Start a timer. */ |
| 66 | SCTP_CMD_TIMER_RESTART, /* Restart a timer. */ | 66 | SCTP_CMD_TIMER_RESTART, /* Restart a timer. */ |
| 67 | SCTP_CMD_TIMER_STOP, /* Stop a timer. */ | 67 | SCTP_CMD_TIMER_STOP, /* Stop a timer. */ |
| 68 | SCTP_CMD_COUNTER_RESET, /* Reset a counter. */ | 68 | SCTP_CMD_INIT_CHOOSE_TRANSPORT, /* Choose transport for an INIT. */ |
| 69 | SCTP_CMD_COUNTER_INC, /* Increment a counter. */ | 69 | SCTP_CMD_INIT_COUNTER_RESET, /* Reset init counter. */ |
| 70 | SCTP_CMD_INIT_COUNTER_INC, /* Increment init counter. */ | ||
| 70 | SCTP_CMD_INIT_RESTART, /* High level, do init timer work. */ | 71 | SCTP_CMD_INIT_RESTART, /* High level, do init timer work. */ |
| 72 | SCTP_CMD_COOKIEECHO_RESTART, /* High level, do cookie-echo timer work. */ | ||
| 71 | SCTP_CMD_INIT_FAILED, /* High level, do init failure work. */ | 73 | SCTP_CMD_INIT_FAILED, /* High level, do init failure work. */ |
| 72 | SCTP_CMD_REPORT_DUP, /* Report a duplicate TSN. */ | 74 | SCTP_CMD_REPORT_DUP, /* Report a duplicate TSN. */ |
| 73 | SCTP_CMD_STRIKE, /* Mark a strike against a transport. */ | 75 | SCTP_CMD_STRIKE, /* Mark a strike against a transport. */ |
| @@ -118,7 +120,6 @@ typedef union { | |||
| 118 | int error; | 120 | int error; |
| 119 | sctp_state_t state; | 121 | sctp_state_t state; |
| 120 | sctp_event_timeout_t to; | 122 | sctp_event_timeout_t to; |
| 121 | sctp_counter_t counter; | ||
| 122 | void *ptr; | 123 | void *ptr; |
| 123 | struct sctp_chunk *chunk; | 124 | struct sctp_chunk *chunk; |
| 124 | struct sctp_association *asoc; | 125 | struct sctp_association *asoc; |
| @@ -165,7 +166,6 @@ SCTP_ARG_CONSTRUCTOR(U16, __u16, u16) | |||
| 165 | SCTP_ARG_CONSTRUCTOR(U8, __u8, u8) | 166 | SCTP_ARG_CONSTRUCTOR(U8, __u8, u8) |
| 166 | SCTP_ARG_CONSTRUCTOR(ERROR, int, error) | 167 | SCTP_ARG_CONSTRUCTOR(ERROR, int, error) |
| 167 | SCTP_ARG_CONSTRUCTOR(STATE, sctp_state_t, state) | 168 | SCTP_ARG_CONSTRUCTOR(STATE, sctp_state_t, state) |
| 168 | SCTP_ARG_CONSTRUCTOR(COUNTER, sctp_counter_t, counter) | ||
| 169 | SCTP_ARG_CONSTRUCTOR(TO, sctp_event_timeout_t, to) | 169 | SCTP_ARG_CONSTRUCTOR(TO, sctp_event_timeout_t, to) |
| 170 | SCTP_ARG_CONSTRUCTOR(PTR, void *, ptr) | 170 | SCTP_ARG_CONSTRUCTOR(PTR, void *, ptr) |
| 171 | SCTP_ARG_CONSTRUCTOR(CHUNK, struct sctp_chunk *, chunk) | 171 | SCTP_ARG_CONSTRUCTOR(CHUNK, struct sctp_chunk *, chunk) |
diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h index 2b76c0f4babc..4868c7f7749d 100644 --- a/include/net/sctp/constants.h +++ b/include/net/sctp/constants.h | |||
| @@ -263,13 +263,6 @@ enum { SCTP_MIN_PMTU = 576 }; | |||
| 263 | enum { SCTP_MAX_DUP_TSNS = 16 }; | 263 | enum { SCTP_MAX_DUP_TSNS = 16 }; |
| 264 | enum { SCTP_MAX_GABS = 16 }; | 264 | enum { SCTP_MAX_GABS = 16 }; |
| 265 | 265 | ||
| 266 | typedef enum { | ||
| 267 | SCTP_COUNTER_INIT_ERROR, | ||
| 268 | } sctp_counter_t; | ||
| 269 | |||
| 270 | /* How many counters does an association need? */ | ||
| 271 | #define SCTP_NUMBER_COUNTERS 5 | ||
| 272 | |||
| 273 | /* Here we define the default timers. */ | 266 | /* Here we define the default timers. */ |
| 274 | 267 | ||
| 275 | /* cookie timer def = ? seconds */ | 268 | /* cookie timer def = ? seconds */ |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 960abfa48d68..ef2738159ab3 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
| @@ -223,6 +223,22 @@ DECLARE_SNMP_STAT(struct sctp_mib, sctp_statistics); | |||
| 223 | extern int sctp_debug_flag; | 223 | extern int sctp_debug_flag; |
| 224 | #define SCTP_DEBUG_PRINTK(whatever...) \ | 224 | #define SCTP_DEBUG_PRINTK(whatever...) \ |
| 225 | ((void) (sctp_debug_flag && printk(KERN_DEBUG whatever))) | 225 | ((void) (sctp_debug_flag && printk(KERN_DEBUG whatever))) |
| 226 | #define SCTP_DEBUG_PRINTK_IPADDR(lead, trail, leadparm, saddr, otherparms...) \ | ||
| 227 | if (sctp_debug_flag) { \ | ||
| 228 | if (saddr->sa.sa_family == AF_INET6) { \ | ||
| 229 | printk(KERN_DEBUG \ | ||
| 230 | lead "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x" trail, \ | ||
| 231 | leadparm, \ | ||
| 232 | NIP6(saddr->v6.sin6_addr), \ | ||
| 233 | otherparms); \ | ||
| 234 | } else { \ | ||
| 235 | printk(KERN_DEBUG \ | ||
| 236 | lead "%u.%u.%u.%u" trail, \ | ||
| 237 | leadparm, \ | ||
| 238 | NIPQUAD(saddr->v4.sin_addr.s_addr), \ | ||
| 239 | otherparms); \ | ||
| 240 | } \ | ||
| 241 | } | ||
| 226 | #define SCTP_ENABLE_DEBUG { sctp_debug_flag = 1; } | 242 | #define SCTP_ENABLE_DEBUG { sctp_debug_flag = 1; } |
| 227 | #define SCTP_DISABLE_DEBUG { sctp_debug_flag = 0; } | 243 | #define SCTP_DISABLE_DEBUG { sctp_debug_flag = 0; } |
| 228 | 244 | ||
| @@ -236,6 +252,7 @@ extern int sctp_debug_flag; | |||
| 236 | #else /* SCTP_DEBUG */ | 252 | #else /* SCTP_DEBUG */ |
| 237 | 253 | ||
| 238 | #define SCTP_DEBUG_PRINTK(whatever...) | 254 | #define SCTP_DEBUG_PRINTK(whatever...) |
| 255 | #define SCTP_DEBUG_PRINTK_IPADDR(whatever...) | ||
| 239 | #define SCTP_ENABLE_DEBUG | 256 | #define SCTP_ENABLE_DEBUG |
| 240 | #define SCTP_DISABLE_DEBUG | 257 | #define SCTP_DISABLE_DEBUG |
| 241 | #define SCTP_ASSERT(expr, str, func) | 258 | #define SCTP_ASSERT(expr, str, func) |
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h index f4fcee104707..a53e08a45e32 100644 --- a/include/net/sctp/sm.h +++ b/include/net/sctp/sm.h | |||
| @@ -116,7 +116,8 @@ sctp_state_fn_t sctp_sf_eat_data_fast_4_4; | |||
| 116 | sctp_state_fn_t sctp_sf_eat_sack_6_2; | 116 | sctp_state_fn_t sctp_sf_eat_sack_6_2; |
| 117 | sctp_state_fn_t sctp_sf_tabort_8_4_8; | 117 | sctp_state_fn_t sctp_sf_tabort_8_4_8; |
| 118 | sctp_state_fn_t sctp_sf_operr_notify; | 118 | sctp_state_fn_t sctp_sf_operr_notify; |
| 119 | sctp_state_fn_t sctp_sf_t1_timer_expire; | 119 | sctp_state_fn_t sctp_sf_t1_init_timer_expire; |
| 120 | sctp_state_fn_t sctp_sf_t1_cookie_timer_expire; | ||
| 120 | sctp_state_fn_t sctp_sf_t2_timer_expire; | 121 | sctp_state_fn_t sctp_sf_t2_timer_expire; |
| 121 | sctp_state_fn_t sctp_sf_t4_timer_expire; | 122 | sctp_state_fn_t sctp_sf_t4_timer_expire; |
| 122 | sctp_state_fn_t sctp_sf_t5_timer_expire; | 123 | sctp_state_fn_t sctp_sf_t5_timer_expire; |
| @@ -258,7 +259,10 @@ struct sctp_chunk *sctp_make_fwdtsn(const struct sctp_association *asoc, | |||
| 258 | void sctp_chunk_assign_tsn(struct sctp_chunk *); | 259 | void sctp_chunk_assign_tsn(struct sctp_chunk *); |
| 259 | void sctp_chunk_assign_ssn(struct sctp_chunk *); | 260 | void sctp_chunk_assign_ssn(struct sctp_chunk *); |
| 260 | 261 | ||
| 261 | void sctp_stop_t1_and_abort(sctp_cmd_seq_t *commands, __u16 error); | 262 | sctp_disposition_t sctp_stop_t1_and_abort(sctp_cmd_seq_t *commands, |
| 263 | __u16 error, | ||
| 264 | const struct sctp_association *asoc, | ||
| 265 | struct sctp_transport *transport); | ||
| 262 | 266 | ||
| 263 | /* Prototypes for statetable processing. */ | 267 | /* Prototypes for statetable processing. */ |
| 264 | 268 | ||
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 6c24d9cd3d66..dfad4d3c581c 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
| @@ -867,10 +867,13 @@ struct sctp_transport { | |||
| 867 | */ | 867 | */ |
| 868 | unsigned long last_time_ecne_reduced; | 868 | unsigned long last_time_ecne_reduced; |
| 869 | 869 | ||
| 870 | /* active : The current active state of this destination, | 870 | /* The number of times INIT has been sent on this transport. */ |
| 871 | * : i.e. DOWN, UP, etc. | 871 | int init_sent_count; |
| 872 | |||
| 873 | /* state : The current state of this destination, | ||
| 874 | * : i.e. SCTP_ACTIVE, SCTP_INACTIVE, SCTP_UNKOWN. | ||
| 872 | */ | 875 | */ |
| 873 | int active; | 876 | int state; |
| 874 | 877 | ||
| 875 | /* hb_allowed : The current heartbeat state of this destination, | 878 | /* hb_allowed : The current heartbeat state of this destination, |
| 876 | * : i.e. ALLOW-HB, NO-HEARTBEAT, etc. | 879 | * : i.e. ALLOW-HB, NO-HEARTBEAT, etc. |
| @@ -1222,9 +1225,6 @@ struct sctp_endpoint { | |||
| 1222 | 1225 | ||
| 1223 | /* sendbuf acct. policy. */ | 1226 | /* sendbuf acct. policy. */ |
| 1224 | __u32 sndbuf_policy; | 1227 | __u32 sndbuf_policy; |
| 1225 | |||
| 1226 | /* Name for debugging output... */ | ||
| 1227 | char *debug_name; | ||
| 1228 | }; | 1228 | }; |
| 1229 | 1229 | ||
| 1230 | /* Recover the outter endpoint structure. */ | 1230 | /* Recover the outter endpoint structure. */ |
| @@ -1314,11 +1314,23 @@ struct sctp_association { | |||
| 1314 | * : association. Normally this information is | 1314 | * : association. Normally this information is |
| 1315 | * : hashed or keyed for quick lookup and access | 1315 | * : hashed or keyed for quick lookup and access |
| 1316 | * : of the TCB. | 1316 | * : of the TCB. |
| 1317 | * : The list is also initialized with the list | ||
| 1318 | * : of addresses passed with the sctp_connectx() | ||
| 1319 | * : call. | ||
| 1317 | * | 1320 | * |
| 1318 | * It is a list of SCTP_transport's. | 1321 | * It is a list of SCTP_transport's. |
| 1319 | */ | 1322 | */ |
| 1320 | struct list_head transport_addr_list; | 1323 | struct list_head transport_addr_list; |
| 1321 | 1324 | ||
| 1325 | /* transport_count | ||
| 1326 | * | ||
| 1327 | * Peer : A count of the number of peer addresses | ||
| 1328 | * Transport : in the Peer Transport Address List. | ||
| 1329 | * Address : | ||
| 1330 | * Count : | ||
| 1331 | */ | ||
| 1332 | __u16 transport_count; | ||
| 1333 | |||
| 1322 | /* port | 1334 | /* port |
| 1323 | * The transport layer port number. | 1335 | * The transport layer port number. |
| 1324 | */ | 1336 | */ |
| @@ -1486,6 +1498,9 @@ struct sctp_association { | |||
| 1486 | /* Transport to which SHUTDOWN chunk was last sent. */ | 1498 | /* Transport to which SHUTDOWN chunk was last sent. */ |
| 1487 | struct sctp_transport *shutdown_last_sent_to; | 1499 | struct sctp_transport *shutdown_last_sent_to; |
| 1488 | 1500 | ||
| 1501 | /* Transport to which INIT chunk was last sent. */ | ||
| 1502 | struct sctp_transport *init_last_sent_to; | ||
| 1503 | |||
| 1489 | /* Next TSN : The next TSN number to be assigned to a new | 1504 | /* Next TSN : The next TSN number to be assigned to a new |
| 1490 | * : DATA chunk. This is sent in the INIT or INIT | 1505 | * : DATA chunk. This is sent in the INIT or INIT |
| 1491 | * : ACK chunk to the peer and incremented each | 1506 | * : ACK chunk to the peer and incremented each |
| @@ -1549,8 +1564,11 @@ struct sctp_association { | |||
| 1549 | /* The message size at which SCTP fragmentation will occur. */ | 1564 | /* The message size at which SCTP fragmentation will occur. */ |
| 1550 | __u32 frag_point; | 1565 | __u32 frag_point; |
| 1551 | 1566 | ||
| 1552 | /* Currently only one counter is used to count INIT errors. */ | 1567 | /* Counter used to count INIT errors. */ |
| 1553 | int counters[SCTP_NUMBER_COUNTERS]; | 1568 | int init_err_counter; |
| 1569 | |||
| 1570 | /* Count the number of INIT cycles (for doubling timeout). */ | ||
| 1571 | int init_cycle; | ||
| 1554 | 1572 | ||
| 1555 | /* Default send parameters. */ | 1573 | /* Default send parameters. */ |
| 1556 | __u16 default_stream; | 1574 | __u16 default_stream; |
| @@ -1708,6 +1726,8 @@ void sctp_association_free(struct sctp_association *); | |||
| 1708 | void sctp_association_put(struct sctp_association *); | 1726 | void sctp_association_put(struct sctp_association *); |
| 1709 | void sctp_association_hold(struct sctp_association *); | 1727 | void sctp_association_hold(struct sctp_association *); |
| 1710 | 1728 | ||
| 1729 | struct sctp_transport *sctp_assoc_choose_init_transport( | ||
| 1730 | struct sctp_association *); | ||
| 1711 | struct sctp_transport *sctp_assoc_choose_shutdown_transport( | 1731 | struct sctp_transport *sctp_assoc_choose_shutdown_transport( |
| 1712 | struct sctp_association *); | 1732 | struct sctp_association *); |
| 1713 | void sctp_assoc_update_retran_path(struct sctp_association *); | 1733 | void sctp_assoc_update_retran_path(struct sctp_association *); |
| @@ -1717,9 +1737,12 @@ int sctp_assoc_lookup_laddr(struct sctp_association *asoc, | |||
| 1717 | const union sctp_addr *laddr); | 1737 | const union sctp_addr *laddr); |
| 1718 | struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *, | 1738 | struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *, |
| 1719 | const union sctp_addr *address, | 1739 | const union sctp_addr *address, |
| 1720 | const int gfp); | 1740 | const int gfp, |
| 1741 | const int peer_state); | ||
| 1721 | void sctp_assoc_del_peer(struct sctp_association *asoc, | 1742 | void sctp_assoc_del_peer(struct sctp_association *asoc, |
| 1722 | const union sctp_addr *addr); | 1743 | const union sctp_addr *addr); |
| 1744 | void sctp_assoc_rm_peer(struct sctp_association *asoc, | ||
| 1745 | struct sctp_transport *peer); | ||
| 1723 | void sctp_assoc_control_transport(struct sctp_association *, | 1746 | void sctp_assoc_control_transport(struct sctp_association *, |
| 1724 | struct sctp_transport *, | 1747 | struct sctp_transport *, |
| 1725 | sctp_transport_cmd_t, sctp_sn_error_t); | 1748 | sctp_transport_cmd_t, sctp_sn_error_t); |
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index 2758e8ce4f25..f6328aeddcce 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h | |||
| @@ -111,6 +111,8 @@ enum sctp_optname { | |||
| 111 | #define SCTP_GET_LOCAL_ADDRS_NUM SCTP_GET_LOCAL_ADDRS_NUM | 111 | #define SCTP_GET_LOCAL_ADDRS_NUM SCTP_GET_LOCAL_ADDRS_NUM |
| 112 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ | 112 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ |
| 113 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS | 113 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS |
| 114 | SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ | ||
| 115 | #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX | ||
| 114 | }; | 116 | }; |
| 115 | 117 | ||
| 116 | /* | 118 | /* |
| @@ -527,6 +529,7 @@ struct sctp_paddrinfo { | |||
| 527 | enum sctp_spinfo_state { | 529 | enum sctp_spinfo_state { |
| 528 | SCTP_INACTIVE, | 530 | SCTP_INACTIVE, |
| 529 | SCTP_ACTIVE, | 531 | SCTP_ACTIVE, |
| 532 | SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */ | ||
| 530 | }; | 533 | }; |
| 531 | 534 | ||
| 532 | /* | 535 | /* |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 0e65e02b7a1d..029522a4ceda 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
| @@ -204,6 +204,7 @@ struct xfrm_state_afinfo { | |||
| 204 | rwlock_t lock; | 204 | rwlock_t lock; |
| 205 | struct list_head *state_bydst; | 205 | struct list_head *state_bydst; |
| 206 | struct list_head *state_byspi; | 206 | struct list_head *state_byspi; |
| 207 | int (*init_flags)(struct xfrm_state *x); | ||
| 207 | void (*init_tempsel)(struct xfrm_state *x, struct flowi *fl, | 208 | void (*init_tempsel)(struct xfrm_state *x, struct flowi *fl, |
| 208 | struct xfrm_tmpl *tmpl, | 209 | struct xfrm_tmpl *tmpl, |
| 209 | xfrm_address_t *daddr, xfrm_address_t *saddr); | 210 | xfrm_address_t *daddr, xfrm_address_t *saddr); |
| @@ -225,7 +226,7 @@ struct xfrm_type | |||
| 225 | struct module *owner; | 226 | struct module *owner; |
| 226 | __u8 proto; | 227 | __u8 proto; |
| 227 | 228 | ||
| 228 | int (*init_state)(struct xfrm_state *x, void *args); | 229 | int (*init_state)(struct xfrm_state *x); |
| 229 | void (*destructor)(struct xfrm_state *); | 230 | void (*destructor)(struct xfrm_state *); |
| 230 | int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); | 231 | int (*input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); |
| 231 | int (*post_input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); | 232 | int (*post_input)(struct xfrm_state *, struct xfrm_decap_state *, struct sk_buff *skb); |
| @@ -839,6 +840,7 @@ extern int xfrm_replay_check(struct xfrm_state *x, u32 seq); | |||
| 839 | extern void xfrm_replay_advance(struct xfrm_state *x, u32 seq); | 840 | extern void xfrm_replay_advance(struct xfrm_state *x, u32 seq); |
| 840 | extern int xfrm_state_check(struct xfrm_state *x, struct sk_buff *skb); | 841 | extern int xfrm_state_check(struct xfrm_state *x, struct sk_buff *skb); |
| 841 | extern int xfrm_state_mtu(struct xfrm_state *x, int mtu); | 842 | extern int xfrm_state_mtu(struct xfrm_state *x, int mtu); |
| 843 | extern int xfrm_init_state(struct xfrm_state *x); | ||
| 842 | extern int xfrm4_rcv(struct sk_buff *skb); | 844 | extern int xfrm4_rcv(struct sk_buff *skb); |
| 843 | extern int xfrm4_output(struct sk_buff *skb); | 845 | extern int xfrm4_output(struct sk_buff *skb); |
| 844 | extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler); | 846 | extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler); |
