diff options
115 files changed, 4941 insertions, 2525 deletions
@@ -2247,6 +2247,12 @@ S: 249 Nichols Avenue | |||
2247 | S: Syracuse, New York 13206 | 2247 | S: Syracuse, New York 13206 |
2248 | S: USA | 2248 | S: USA |
2249 | 2249 | ||
2250 | N: Kyle McMartin | ||
2251 | E: kyle@parisc-linux.org | ||
2252 | D: Linux/PARISC hacker | ||
2253 | D: AD1889 sound driver | ||
2254 | S: Ottawa, Canada | ||
2255 | |||
2250 | N: Dirk Melchers | 2256 | N: Dirk Melchers |
2251 | E: dirk@merlin.nbg.sub.org | 2257 | E: dirk@merlin.nbg.sub.org |
2252 | D: 8 bit XT hard disk driver for OMTI5520 | 2258 | D: 8 bit XT hard disk driver for OMTI5520 |
diff --git a/MAINTAINERS b/MAINTAINERS index 767fb610963e..248b93b32fc4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -197,6 +197,15 @@ M: Thorsten Knabe <linux@thorsten-knabe.de> | |||
197 | W: http://linux.thorsten-knabe.de | 197 | W: http://linux.thorsten-knabe.de |
198 | S: Maintained | 198 | S: Maintained |
199 | 199 | ||
200 | AD1889 SOUND DRIVER | ||
201 | P: Kyle McMartin | ||
202 | M: kyle@parisc-linux.org | ||
203 | P: Thibaut Varene | ||
204 | M: T-Bone@parisc-linux.org | ||
205 | W: http://wiki.parisc-linux.org/AD1889 | ||
206 | L: parisc-linux@lists.parisc-linux.org | ||
207 | S: Maintained | ||
208 | |||
200 | ADM1025 HARDWARE MONITOR DRIVER | 209 | ADM1025 HARDWARE MONITOR DRIVER |
201 | P: Jean Delvare | 210 | P: Jean Delvare |
202 | M: khali@linux-fr.org | 211 | M: khali@linux-fr.org |
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index 0b07922a2ac6..874a283edb95 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig | |||
@@ -47,10 +47,10 @@ config PM | |||
47 | 47 | ||
48 | config ISA_DMA_API | 48 | config ISA_DMA_API |
49 | bool | 49 | bool |
50 | default y | ||
51 | 50 | ||
52 | config ARCH_MAY_HAVE_PC_FDC | 51 | config ARCH_MAY_HAVE_PC_FDC |
53 | bool | 52 | bool |
53 | depends on BROKEN | ||
54 | default y | 54 | default y |
55 | 55 | ||
56 | source "init/Kconfig" | 56 | source "init/Kconfig" |
@@ -154,13 +154,14 @@ config HOTPLUG_CPU | |||
154 | 154 | ||
155 | config ARCH_DISCONTIGMEM_ENABLE | 155 | config ARCH_DISCONTIGMEM_ENABLE |
156 | bool "Discontiguous memory support (EXPERIMENTAL)" | 156 | bool "Discontiguous memory support (EXPERIMENTAL)" |
157 | depends on EXPERIMENTAL | 157 | depends on 64BIT && EXPERIMENTAL |
158 | help | 158 | help |
159 | Say Y to support efficient handling of discontiguous physical memory, | 159 | Say Y to support efficient handling of discontiguous physical memory, |
160 | for architectures which are either NUMA (Non-Uniform Memory Access) | 160 | for architectures which are either NUMA (Non-Uniform Memory Access) |
161 | or have huge holes in the physical address space for other reasons. | 161 | or have huge holes in the physical address space for other reasons. |
162 | See <file:Documentation/vm/numa> for more. | 162 | See <file:Documentation/vm/numa> for more. |
163 | 163 | ||
164 | source "kernel/Kconfig.hz" | ||
164 | source "mm/Kconfig" | 165 | source "mm/Kconfig" |
165 | 166 | ||
166 | config PREEMPT | 167 | config PREEMPT |
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index 3b339b1cce13..9b7e42490dd1 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
@@ -20,7 +20,8 @@ NM = sh $(srctree)/arch/parisc/nm | |||
20 | CHECKFLAGS += -D__hppa__=1 | 20 | CHECKFLAGS += -D__hppa__=1 |
21 | 21 | ||
22 | ifdef CONFIG_64BIT | 22 | ifdef CONFIG_64BIT |
23 | CROSS_COMPILE := hppa64-linux- | 23 | CROSS_COMPILE := $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \ |
24 | echo hppa64-linux-gnu-; else echo hppa64-linux-; fi) | ||
24 | UTS_MACHINE := parisc64 | 25 | UTS_MACHINE := parisc64 |
25 | CHECKFLAGS += -D__LP64__=1 -m64 | 26 | CHECKFLAGS += -D__LP64__=1 -m64 |
26 | else | 27 | else |
@@ -34,6 +35,14 @@ FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align | |||
34 | 35 | ||
35 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S | 36 | OBJCOPY_FLAGS =-O binary -R .note -R .comment -S |
36 | 37 | ||
38 | GCC_VERSION := $(call cc-version) | ||
39 | ifneq ($(shell if [ -z $(GCC_VERSION) ] ; then echo "bad"; fi ;),) | ||
40 | $(error Sorry, couldn't find ($(cc-version)).) | ||
41 | endif | ||
42 | ifneq ($(shell if [ $(GCC_VERSION) -lt 0303 ] ; then echo "bad"; fi ;),) | ||
43 | $(error Sorry, your compiler is too old ($(GCC_VERSION)). GCC v3.3 or above is required.) | ||
44 | endif | ||
45 | |||
37 | cflags-y := -pipe | 46 | cflags-y := -pipe |
38 | 47 | ||
39 | # These flags should be implied by an hppa-linux configuration, but they | 48 | # These flags should be implied by an hppa-linux configuration, but they |
@@ -43,7 +52,7 @@ cflags-y += -mno-space-regs -mfast-indirect-calls | |||
43 | # Currently we save and restore fpregs on all kernel entry/interruption paths. | 52 | # Currently we save and restore fpregs on all kernel entry/interruption paths. |
44 | # If that gets optimized, we might need to disable the use of fpregs in the | 53 | # If that gets optimized, we might need to disable the use of fpregs in the |
45 | # kernel. | 54 | # kernel. |
46 | #cflags-y += -mdisable-fpregs | 55 | cflags-y += -mdisable-fpregs |
47 | 56 | ||
48 | # Without this, "ld -r" results in .text sections that are too big | 57 | # Without this, "ld -r" results in .text sections that are too big |
49 | # (> 0x40000) for branches to reach stubs. | 58 | # (> 0x40000) for branches to reach stubs. |
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig index 6efaa9293eef..3e013f55df64 100644 --- a/arch/parisc/configs/712_defconfig +++ b/arch/parisc/configs/712_defconfig | |||
@@ -1,12 +1,16 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.10-pa5 | 3 | # Linux kernel version: 2.6.14-rc5-pa1 |
4 | # Wed Jan 5 13:20:32 2005 | 4 | # Fri Oct 21 23:04:34 2005 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
10 | 14 | ||
11 | # | 15 | # |
12 | # Code maturity level options | 16 | # Code maturity level options |
@@ -15,35 +19,40 @@ CONFIG_EXPERIMENTAL=y | |||
15 | # CONFIG_CLEAN_COMPILE is not set | 19 | # CONFIG_CLEAN_COMPILE is not set |
16 | CONFIG_BROKEN=y | 20 | CONFIG_BROKEN=y |
17 | CONFIG_BROKEN_ON_SMP=y | 21 | CONFIG_BROKEN_ON_SMP=y |
22 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
18 | 23 | ||
19 | # | 24 | # |
20 | # General setup | 25 | # General setup |
21 | # | 26 | # |
22 | CONFIG_LOCALVERSION="" | 27 | CONFIG_LOCALVERSION="" |
28 | # CONFIG_LOCALVERSION_AUTO is not set | ||
23 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
24 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
25 | CONFIG_POSIX_MQUEUE=y | 31 | CONFIG_POSIX_MQUEUE=y |
26 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
27 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
28 | # CONFIG_AUDIT is not set | 34 | # CONFIG_AUDIT is not set |
29 | CONFIG_LOG_BUF_SHIFT=16 | ||
30 | CONFIG_HOTPLUG=y | 35 | CONFIG_HOTPLUG=y |
31 | CONFIG_KOBJECT_UEVENT=y | 36 | CONFIG_KOBJECT_UEVENT=y |
32 | CONFIG_IKCONFIG=y | 37 | CONFIG_IKCONFIG=y |
33 | CONFIG_IKCONFIG_PROC=y | 38 | CONFIG_IKCONFIG_PROC=y |
39 | CONFIG_INITRAMFS_SOURCE="" | ||
34 | # CONFIG_EMBEDDED is not set | 40 | # CONFIG_EMBEDDED is not set |
35 | CONFIG_KALLSYMS=y | 41 | CONFIG_KALLSYMS=y |
36 | CONFIG_KALLSYMS_ALL=y | 42 | CONFIG_KALLSYMS_ALL=y |
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
44 | CONFIG_PRINTK=y | ||
45 | CONFIG_BUG=y | ||
46 | CONFIG_BASE_FULL=y | ||
38 | CONFIG_FUTEX=y | 47 | CONFIG_FUTEX=y |
39 | CONFIG_EPOLL=y | 48 | CONFIG_EPOLL=y |
40 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
41 | CONFIG_SHMEM=y | 49 | CONFIG_SHMEM=y |
42 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 50 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
43 | CONFIG_CC_ALIGN_LABELS=0 | 51 | CONFIG_CC_ALIGN_LABELS=0 |
44 | CONFIG_CC_ALIGN_LOOPS=0 | 52 | CONFIG_CC_ALIGN_LOOPS=0 |
45 | CONFIG_CC_ALIGN_JUMPS=0 | 53 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | # CONFIG_TINY_SHMEM is not set | 54 | # CONFIG_TINY_SHMEM is not set |
55 | CONFIG_BASE_SMALL=0 | ||
47 | 56 | ||
48 | # | 57 | # |
49 | # Loadable module support | 58 | # Loadable module support |
@@ -65,9 +74,18 @@ CONFIG_PA7100LC=y | |||
65 | # CONFIG_PA7300LC is not set | 74 | # CONFIG_PA7300LC is not set |
66 | # CONFIG_PA8X00 is not set | 75 | # CONFIG_PA8X00 is not set |
67 | CONFIG_PA11=y | 76 | CONFIG_PA11=y |
68 | # CONFIG_64BIT is not set | ||
69 | # CONFIG_SMP is not set | 77 | # CONFIG_SMP is not set |
70 | # CONFIG_DISCONTIGMEM is not set | 78 | # CONFIG_HZ_100 is not set |
79 | CONFIG_HZ_250=y | ||
80 | # CONFIG_HZ_1000 is not set | ||
81 | CONFIG_HZ=250 | ||
82 | CONFIG_SELECT_MEMORY_MODEL=y | ||
83 | CONFIG_FLATMEM_MANUAL=y | ||
84 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
85 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
86 | CONFIG_FLATMEM=y | ||
87 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
88 | # CONFIG_SPARSEMEM_STATIC is not set | ||
71 | # CONFIG_PREEMPT is not set | 89 | # CONFIG_PREEMPT is not set |
72 | # CONFIG_HPUX is not set | 90 | # CONFIG_HPUX is not set |
73 | 91 | ||
@@ -81,8 +99,6 @@ CONFIG_GSC_LASI=y | |||
81 | # CONFIG_GSC_WAX is not set | 99 | # CONFIG_GSC_WAX is not set |
82 | # CONFIG_EISA is not set | 100 | # CONFIG_EISA is not set |
83 | # CONFIG_PCI is not set | 101 | # CONFIG_PCI is not set |
84 | CONFIG_CHASSIS_LCD_LED=y | ||
85 | # CONFIG_PDC_CHASSIS is not set | ||
86 | 102 | ||
87 | # | 103 | # |
88 | # PCCARD (PCMCIA/CardBus) support | 104 | # PCCARD (PCMCIA/CardBus) support |
@@ -90,12 +106,15 @@ CONFIG_CHASSIS_LCD_LED=y | |||
90 | # CONFIG_PCCARD is not set | 106 | # CONFIG_PCCARD is not set |
91 | 107 | ||
92 | # | 108 | # |
93 | # PC-card bridges | 109 | # PCI Hotplug Support |
94 | # | 110 | # |
95 | 111 | ||
96 | # | 112 | # |
97 | # PCI Hotplug Support | 113 | # PA-RISC specific drivers |
98 | # | 114 | # |
115 | CONFIG_CHASSIS_LCD_LED=y | ||
116 | # CONFIG_PDC_CHASSIS is not set | ||
117 | CONFIG_PDC_STABLE=y | ||
99 | 118 | ||
100 | # | 119 | # |
101 | # Executable file formats | 120 | # Executable file formats |
@@ -104,137 +123,7 @@ CONFIG_BINFMT_ELF=y | |||
104 | CONFIG_BINFMT_MISC=m | 123 | CONFIG_BINFMT_MISC=m |
105 | 124 | ||
106 | # | 125 | # |
107 | # Device Drivers | 126 | # Networking |
108 | # | ||
109 | |||
110 | # | ||
111 | # Generic Driver Options | ||
112 | # | ||
113 | # CONFIG_STANDALONE is not set | ||
114 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | ||
115 | CONFIG_FW_LOADER=y | ||
116 | # CONFIG_DEBUG_DRIVER is not set | ||
117 | |||
118 | # | ||
119 | # Memory Technology Devices (MTD) | ||
120 | # | ||
121 | # CONFIG_MTD is not set | ||
122 | |||
123 | # | ||
124 | # Parallel port support | ||
125 | # | ||
126 | CONFIG_PARPORT=y | ||
127 | CONFIG_PARPORT_PC=m | ||
128 | CONFIG_PARPORT_PC_CML1=m | ||
129 | # CONFIG_PARPORT_PC_FIFO is not set | ||
130 | # CONFIG_PARPORT_PC_SUPERIO is not set | ||
131 | CONFIG_PARPORT_GSC=y | ||
132 | # CONFIG_PARPORT_OTHER is not set | ||
133 | # CONFIG_PARPORT_1284 is not set | ||
134 | |||
135 | # | ||
136 | # Plug and Play support | ||
137 | # | ||
138 | |||
139 | # | ||
140 | # Block devices | ||
141 | # | ||
142 | # CONFIG_BLK_DEV_FD is not set | ||
143 | # CONFIG_PARIDE is not set | ||
144 | CONFIG_BLK_DEV_LOOP=y | ||
145 | CONFIG_BLK_DEV_CRYPTOLOOP=y | ||
146 | # CONFIG_BLK_DEV_NBD is not set | ||
147 | CONFIG_BLK_DEV_RAM=y | ||
148 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
149 | CONFIG_BLK_DEV_RAM_SIZE=6144 | ||
150 | CONFIG_BLK_DEV_INITRD=y | ||
151 | CONFIG_INITRAMFS_SOURCE="" | ||
152 | # CONFIG_CDROM_PKTCDVD is not set | ||
153 | |||
154 | # | ||
155 | # IO Schedulers | ||
156 | # | ||
157 | CONFIG_IOSCHED_NOOP=y | ||
158 | CONFIG_IOSCHED_AS=y | ||
159 | CONFIG_IOSCHED_DEADLINE=y | ||
160 | CONFIG_IOSCHED_CFQ=y | ||
161 | |||
162 | # | ||
163 | # ATA/ATAPI/MFM/RLL support | ||
164 | # | ||
165 | # CONFIG_IDE is not set | ||
166 | |||
167 | # | ||
168 | # SCSI device support | ||
169 | # | ||
170 | CONFIG_SCSI=y | ||
171 | CONFIG_SCSI_PROC_FS=y | ||
172 | |||
173 | # | ||
174 | # SCSI support type (disk, tape, CD-ROM) | ||
175 | # | ||
176 | CONFIG_BLK_DEV_SD=y | ||
177 | CONFIG_CHR_DEV_ST=y | ||
178 | # CONFIG_CHR_DEV_OSST is not set | ||
179 | CONFIG_BLK_DEV_SR=y | ||
180 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
181 | CONFIG_CHR_DEV_SG=y | ||
182 | |||
183 | # | ||
184 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
185 | # | ||
186 | # CONFIG_SCSI_MULTI_LUN is not set | ||
187 | # CONFIG_SCSI_CONSTANTS is not set | ||
188 | # CONFIG_SCSI_LOGGING is not set | ||
189 | |||
190 | # | ||
191 | # SCSI Transport Attributes | ||
192 | # | ||
193 | CONFIG_SCSI_SPI_ATTRS=y | ||
194 | # CONFIG_SCSI_FC_ATTRS is not set | ||
195 | |||
196 | # | ||
197 | # SCSI low-level drivers | ||
198 | # | ||
199 | # CONFIG_SCSI_SATA is not set | ||
200 | # CONFIG_SCSI_PPA is not set | ||
201 | # CONFIG_SCSI_IMM is not set | ||
202 | CONFIG_SCSI_LASI700=y | ||
203 | CONFIG_53C700_MEM_MAPPED=y | ||
204 | CONFIG_53C700_LE_ON_BE=y | ||
205 | # CONFIG_SCSI_ZALON is not set | ||
206 | CONFIG_SCSI_DEBUG=m | ||
207 | |||
208 | # | ||
209 | # Multi-device support (RAID and LVM) | ||
210 | # | ||
211 | CONFIG_MD=y | ||
212 | CONFIG_BLK_DEV_MD=m | ||
213 | CONFIG_MD_LINEAR=m | ||
214 | CONFIG_MD_RAID0=m | ||
215 | CONFIG_MD_RAID1=m | ||
216 | # CONFIG_MD_RAID10 is not set | ||
217 | # CONFIG_MD_RAID5 is not set | ||
218 | # CONFIG_MD_RAID6 is not set | ||
219 | # CONFIG_MD_MULTIPATH is not set | ||
220 | # CONFIG_MD_FAULTY is not set | ||
221 | # CONFIG_BLK_DEV_DM is not set | ||
222 | |||
223 | # | ||
224 | # Fusion MPT device support | ||
225 | # | ||
226 | |||
227 | # | ||
228 | # IEEE 1394 (FireWire) support | ||
229 | # | ||
230 | # CONFIG_IEEE1394 is not set | ||
231 | |||
232 | # | ||
233 | # I2O device support | ||
234 | # | ||
235 | |||
236 | # | ||
237 | # Networking support | ||
238 | # | 127 | # |
239 | CONFIG_NET=y | 128 | CONFIG_NET=y |
240 | 129 | ||
@@ -243,12 +132,14 @@ CONFIG_NET=y | |||
243 | # | 132 | # |
244 | CONFIG_PACKET=y | 133 | CONFIG_PACKET=y |
245 | CONFIG_PACKET_MMAP=y | 134 | CONFIG_PACKET_MMAP=y |
246 | CONFIG_NETLINK_DEV=y | ||
247 | CONFIG_UNIX=y | 135 | CONFIG_UNIX=y |
136 | CONFIG_XFRM=y | ||
137 | CONFIG_XFRM_USER=m | ||
248 | CONFIG_NET_KEY=m | 138 | CONFIG_NET_KEY=m |
249 | CONFIG_INET=y | 139 | CONFIG_INET=y |
250 | CONFIG_IP_MULTICAST=y | 140 | CONFIG_IP_MULTICAST=y |
251 | # CONFIG_IP_ADVANCED_ROUTER is not set | 141 | # CONFIG_IP_ADVANCED_ROUTER is not set |
142 | CONFIG_IP_FIB_HASH=y | ||
252 | CONFIG_IP_PNP=y | 143 | CONFIG_IP_PNP=y |
253 | CONFIG_IP_PNP_DHCP=y | 144 | CONFIG_IP_PNP_DHCP=y |
254 | CONFIG_IP_PNP_BOOTP=y | 145 | CONFIG_IP_PNP_BOOTP=y |
@@ -262,8 +153,10 @@ CONFIG_INET_AH=m | |||
262 | CONFIG_INET_ESP=m | 153 | CONFIG_INET_ESP=m |
263 | # CONFIG_INET_IPCOMP is not set | 154 | # CONFIG_INET_IPCOMP is not set |
264 | CONFIG_INET_TUNNEL=m | 155 | CONFIG_INET_TUNNEL=m |
265 | CONFIG_IP_TCPDIAG=y | 156 | CONFIG_INET_DIAG=m |
266 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 157 | CONFIG_INET_TCP_DIAG=m |
158 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
159 | CONFIG_TCP_CONG_BIC=y | ||
267 | 160 | ||
268 | # | 161 | # |
269 | # IP: Virtual Server Configuration | 162 | # IP: Virtual Server Configuration |
@@ -272,6 +165,7 @@ CONFIG_IP_TCPDIAG=y | |||
272 | # CONFIG_IPV6 is not set | 165 | # CONFIG_IPV6 is not set |
273 | CONFIG_NETFILTER=y | 166 | CONFIG_NETFILTER=y |
274 | # CONFIG_NETFILTER_DEBUG is not set | 167 | # CONFIG_NETFILTER_DEBUG is not set |
168 | # CONFIG_NETFILTER_NETLINK is not set | ||
275 | 169 | ||
276 | # | 170 | # |
277 | # IP: Netfilter Configuration | 171 | # IP: Netfilter Configuration |
@@ -279,11 +173,14 @@ CONFIG_NETFILTER=y | |||
279 | CONFIG_IP_NF_CONNTRACK=m | 173 | CONFIG_IP_NF_CONNTRACK=m |
280 | # CONFIG_IP_NF_CT_ACCT is not set | 174 | # CONFIG_IP_NF_CT_ACCT is not set |
281 | CONFIG_IP_NF_CONNTRACK_MARK=y | 175 | CONFIG_IP_NF_CONNTRACK_MARK=y |
176 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
282 | CONFIG_IP_NF_CT_PROTO_SCTP=m | 177 | CONFIG_IP_NF_CT_PROTO_SCTP=m |
283 | CONFIG_IP_NF_FTP=m | 178 | CONFIG_IP_NF_FTP=m |
284 | CONFIG_IP_NF_IRC=m | 179 | CONFIG_IP_NF_IRC=m |
180 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
285 | CONFIG_IP_NF_TFTP=m | 181 | CONFIG_IP_NF_TFTP=m |
286 | CONFIG_IP_NF_AMANDA=m | 182 | CONFIG_IP_NF_AMANDA=m |
183 | # CONFIG_IP_NF_PPTP is not set | ||
287 | CONFIG_IP_NF_QUEUE=m | 184 | CONFIG_IP_NF_QUEUE=m |
288 | CONFIG_IP_NF_IPTABLES=m | 185 | CONFIG_IP_NF_IPTABLES=m |
289 | CONFIG_IP_NF_MATCH_LIMIT=m | 186 | CONFIG_IP_NF_MATCH_LIMIT=m |
@@ -307,21 +204,23 @@ CONFIG_IP_NF_MATCH_OWNER=m | |||
307 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | 204 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set |
308 | # CONFIG_IP_NF_MATCH_REALM is not set | 205 | # CONFIG_IP_NF_MATCH_REALM is not set |
309 | CONFIG_IP_NF_MATCH_SCTP=m | 206 | CONFIG_IP_NF_MATCH_SCTP=m |
207 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
310 | CONFIG_IP_NF_MATCH_COMMENT=m | 208 | CONFIG_IP_NF_MATCH_COMMENT=m |
311 | CONFIG_IP_NF_MATCH_CONNMARK=m | 209 | CONFIG_IP_NF_MATCH_CONNMARK=m |
312 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | 210 | CONFIG_IP_NF_MATCH_HASHLIMIT=m |
211 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
313 | CONFIG_IP_NF_FILTER=m | 212 | CONFIG_IP_NF_FILTER=m |
314 | CONFIG_IP_NF_TARGET_REJECT=m | 213 | CONFIG_IP_NF_TARGET_REJECT=m |
315 | CONFIG_IP_NF_TARGET_LOG=m | 214 | CONFIG_IP_NF_TARGET_LOG=m |
316 | CONFIG_IP_NF_TARGET_ULOG=m | 215 | CONFIG_IP_NF_TARGET_ULOG=m |
317 | CONFIG_IP_NF_TARGET_TCPMSS=m | 216 | CONFIG_IP_NF_TARGET_TCPMSS=m |
217 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
318 | CONFIG_IP_NF_NAT=m | 218 | CONFIG_IP_NF_NAT=m |
319 | CONFIG_IP_NF_NAT_NEEDED=y | 219 | CONFIG_IP_NF_NAT_NEEDED=y |
320 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 220 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
321 | CONFIG_IP_NF_TARGET_REDIRECT=m | 221 | CONFIG_IP_NF_TARGET_REDIRECT=m |
322 | CONFIG_IP_NF_TARGET_NETMAP=m | 222 | CONFIG_IP_NF_TARGET_NETMAP=m |
323 | CONFIG_IP_NF_TARGET_SAME=m | 223 | CONFIG_IP_NF_TARGET_SAME=m |
324 | # CONFIG_IP_NF_NAT_LOCAL is not set | ||
325 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | 224 | CONFIG_IP_NF_NAT_SNMP_BASIC=m |
326 | CONFIG_IP_NF_NAT_IRC=m | 225 | CONFIG_IP_NF_NAT_IRC=m |
327 | CONFIG_IP_NF_NAT_FTP=m | 226 | CONFIG_IP_NF_NAT_FTP=m |
@@ -333,6 +232,7 @@ CONFIG_IP_NF_TARGET_ECN=m | |||
333 | CONFIG_IP_NF_TARGET_DSCP=m | 232 | CONFIG_IP_NF_TARGET_DSCP=m |
334 | CONFIG_IP_NF_TARGET_MARK=m | 233 | CONFIG_IP_NF_TARGET_MARK=m |
335 | CONFIG_IP_NF_TARGET_CLASSIFY=m | 234 | CONFIG_IP_NF_TARGET_CLASSIFY=m |
235 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
336 | CONFIG_IP_NF_TARGET_CONNMARK=m | 236 | CONFIG_IP_NF_TARGET_CONNMARK=m |
337 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 237 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
338 | CONFIG_IP_NF_RAW=m | 238 | CONFIG_IP_NF_RAW=m |
@@ -340,10 +240,11 @@ CONFIG_IP_NF_TARGET_NOTRACK=m | |||
340 | CONFIG_IP_NF_ARPTABLES=m | 240 | CONFIG_IP_NF_ARPTABLES=m |
341 | CONFIG_IP_NF_ARPFILTER=m | 241 | CONFIG_IP_NF_ARPFILTER=m |
342 | CONFIG_IP_NF_ARP_MANGLE=m | 242 | CONFIG_IP_NF_ARP_MANGLE=m |
343 | # CONFIG_IP_NF_COMPAT_IPCHAINS is not set | 243 | |
344 | # CONFIG_IP_NF_COMPAT_IPFWADM is not set | 244 | # |
345 | CONFIG_XFRM=y | 245 | # DCCP Configuration (EXPERIMENTAL) |
346 | CONFIG_XFRM_USER=m | 246 | # |
247 | # CONFIG_IP_DCCP is not set | ||
347 | 248 | ||
348 | # | 249 | # |
349 | # SCTP Configuration (EXPERIMENTAL) | 250 | # SCTP Configuration (EXPERIMENTAL) |
@@ -362,10 +263,6 @@ CONFIG_LLC2=m | |||
362 | # CONFIG_NET_DIVERT is not set | 263 | # CONFIG_NET_DIVERT is not set |
363 | # CONFIG_ECONET is not set | 264 | # CONFIG_ECONET is not set |
364 | # CONFIG_WAN_ROUTER is not set | 265 | # CONFIG_WAN_ROUTER is not set |
365 | |||
366 | # | ||
367 | # QoS and/or fair queueing | ||
368 | # | ||
369 | # CONFIG_NET_SCHED is not set | 266 | # CONFIG_NET_SCHED is not set |
370 | # CONFIG_NET_CLS_ROUTE is not set | 267 | # CONFIG_NET_CLS_ROUTE is not set |
371 | 268 | ||
@@ -373,17 +270,162 @@ CONFIG_LLC2=m | |||
373 | # Network testing | 270 | # Network testing |
374 | # | 271 | # |
375 | CONFIG_NET_PKTGEN=m | 272 | CONFIG_NET_PKTGEN=m |
376 | # CONFIG_NETPOLL is not set | ||
377 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
378 | # CONFIG_HAMRADIO is not set | 273 | # CONFIG_HAMRADIO is not set |
379 | # CONFIG_IRDA is not set | 274 | # CONFIG_IRDA is not set |
380 | # CONFIG_BT is not set | 275 | # CONFIG_BT is not set |
276 | # CONFIG_IEEE80211 is not set | ||
277 | |||
278 | # | ||
279 | # Device Drivers | ||
280 | # | ||
281 | |||
282 | # | ||
283 | # Generic Driver Options | ||
284 | # | ||
285 | # CONFIG_STANDALONE is not set | ||
286 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | ||
287 | CONFIG_FW_LOADER=y | ||
288 | # CONFIG_DEBUG_DRIVER is not set | ||
289 | |||
290 | # | ||
291 | # Connector - unified userspace <-> kernelspace linker | ||
292 | # | ||
293 | # CONFIG_CONNECTOR is not set | ||
294 | |||
295 | # | ||
296 | # Memory Technology Devices (MTD) | ||
297 | # | ||
298 | # CONFIG_MTD is not set | ||
299 | |||
300 | # | ||
301 | # Parallel port support | ||
302 | # | ||
303 | CONFIG_PARPORT=y | ||
304 | CONFIG_PARPORT_PC=m | ||
305 | # CONFIG_PARPORT_PC_FIFO is not set | ||
306 | # CONFIG_PARPORT_PC_SUPERIO is not set | ||
307 | CONFIG_PARPORT_GSC=y | ||
308 | # CONFIG_PARPORT_1284 is not set | ||
309 | |||
310 | # | ||
311 | # Plug and Play support | ||
312 | # | ||
313 | |||
314 | # | ||
315 | # Block devices | ||
316 | # | ||
317 | # CONFIG_BLK_DEV_FD is not set | ||
318 | # CONFIG_PARIDE is not set | ||
319 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
320 | CONFIG_BLK_DEV_LOOP=y | ||
321 | CONFIG_BLK_DEV_CRYPTOLOOP=y | ||
322 | # CONFIG_BLK_DEV_NBD is not set | ||
323 | CONFIG_BLK_DEV_RAM=y | ||
324 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
325 | CONFIG_BLK_DEV_RAM_SIZE=6144 | ||
326 | CONFIG_BLK_DEV_INITRD=y | ||
327 | # CONFIG_CDROM_PKTCDVD is not set | ||
328 | |||
329 | # | ||
330 | # IO Schedulers | ||
331 | # | ||
332 | CONFIG_IOSCHED_NOOP=y | ||
333 | CONFIG_IOSCHED_AS=y | ||
334 | CONFIG_IOSCHED_DEADLINE=y | ||
335 | CONFIG_IOSCHED_CFQ=y | ||
336 | CONFIG_ATA_OVER_ETH=m | ||
337 | |||
338 | # | ||
339 | # ATA/ATAPI/MFM/RLL support | ||
340 | # | ||
341 | # CONFIG_IDE is not set | ||
342 | |||
343 | # | ||
344 | # SCSI device support | ||
345 | # | ||
346 | # CONFIG_RAID_ATTRS is not set | ||
347 | CONFIG_SCSI=y | ||
348 | CONFIG_SCSI_PROC_FS=y | ||
349 | |||
350 | # | ||
351 | # SCSI support type (disk, tape, CD-ROM) | ||
352 | # | ||
353 | CONFIG_BLK_DEV_SD=y | ||
354 | CONFIG_CHR_DEV_ST=y | ||
355 | # CONFIG_CHR_DEV_OSST is not set | ||
356 | CONFIG_BLK_DEV_SR=y | ||
357 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
358 | CONFIG_CHR_DEV_SG=y | ||
359 | # CONFIG_CHR_DEV_SCH is not set | ||
360 | |||
361 | # | ||
362 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
363 | # | ||
364 | # CONFIG_SCSI_MULTI_LUN is not set | ||
365 | # CONFIG_SCSI_CONSTANTS is not set | ||
366 | # CONFIG_SCSI_LOGGING is not set | ||
367 | |||
368 | # | ||
369 | # SCSI Transport Attributes | ||
370 | # | ||
371 | CONFIG_SCSI_SPI_ATTRS=y | ||
372 | # CONFIG_SCSI_FC_ATTRS is not set | ||
373 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
374 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
375 | |||
376 | # | ||
377 | # SCSI low-level drivers | ||
378 | # | ||
379 | # CONFIG_SCSI_SATA is not set | ||
380 | # CONFIG_SCSI_PPA is not set | ||
381 | # CONFIG_SCSI_IMM is not set | ||
382 | CONFIG_SCSI_LASI700=y | ||
383 | CONFIG_53C700_LE_ON_BE=y | ||
384 | # CONFIG_SCSI_ZALON is not set | ||
385 | CONFIG_SCSI_DEBUG=m | ||
386 | |||
387 | # | ||
388 | # Multi-device support (RAID and LVM) | ||
389 | # | ||
390 | CONFIG_MD=y | ||
391 | CONFIG_BLK_DEV_MD=m | ||
392 | CONFIG_MD_LINEAR=m | ||
393 | CONFIG_MD_RAID0=m | ||
394 | CONFIG_MD_RAID1=m | ||
395 | # CONFIG_MD_RAID10 is not set | ||
396 | # CONFIG_MD_RAID5 is not set | ||
397 | # CONFIG_MD_RAID6 is not set | ||
398 | # CONFIG_MD_MULTIPATH is not set | ||
399 | # CONFIG_MD_FAULTY is not set | ||
400 | # CONFIG_BLK_DEV_DM is not set | ||
401 | |||
402 | # | ||
403 | # Fusion MPT device support | ||
404 | # | ||
405 | # CONFIG_FUSION is not set | ||
406 | |||
407 | # | ||
408 | # IEEE 1394 (FireWire) support | ||
409 | # | ||
410 | # CONFIG_IEEE1394 is not set | ||
411 | |||
412 | # | ||
413 | # I2O device support | ||
414 | # | ||
415 | |||
416 | # | ||
417 | # Network device support | ||
418 | # | ||
381 | CONFIG_NETDEVICES=y | 419 | CONFIG_NETDEVICES=y |
382 | CONFIG_DUMMY=m | 420 | CONFIG_DUMMY=m |
383 | CONFIG_BONDING=m | 421 | CONFIG_BONDING=m |
384 | # CONFIG_EQUALIZER is not set | 422 | # CONFIG_EQUALIZER is not set |
385 | CONFIG_TUN=m | 423 | CONFIG_TUN=m |
386 | # CONFIG_ETHERTAP is not set | 424 | |
425 | # | ||
426 | # PHY device support | ||
427 | # | ||
428 | # CONFIG_PHYLIB is not set | ||
387 | 429 | ||
388 | # | 430 | # |
389 | # Ethernet (10 or 100Mbit) | 431 | # Ethernet (10 or 100Mbit) |
@@ -391,6 +433,7 @@ CONFIG_TUN=m | |||
391 | CONFIG_NET_ETHERNET=y | 433 | CONFIG_NET_ETHERNET=y |
392 | CONFIG_MII=m | 434 | CONFIG_MII=m |
393 | CONFIG_LASI_82596=y | 435 | CONFIG_LASI_82596=y |
436 | # CONFIG_NET_POCKET is not set | ||
394 | 437 | ||
395 | # | 438 | # |
396 | # Ethernet (1000 Mbit) | 439 | # Ethernet (1000 Mbit) |
@@ -414,6 +457,7 @@ CONFIG_NET_RADIO=y | |||
414 | # | 457 | # |
415 | # CONFIG_STRIP is not set | 458 | # CONFIG_STRIP is not set |
416 | # CONFIG_ATMEL is not set | 459 | # CONFIG_ATMEL is not set |
460 | # CONFIG_HOSTAP is not set | ||
417 | 461 | ||
418 | # | 462 | # |
419 | # Wan interfaces | 463 | # Wan interfaces |
@@ -431,6 +475,8 @@ CONFIG_PPPOE=m | |||
431 | # CONFIG_SLIP is not set | 475 | # CONFIG_SLIP is not set |
432 | # CONFIG_SHAPER is not set | 476 | # CONFIG_SHAPER is not set |
433 | # CONFIG_NETCONSOLE is not set | 477 | # CONFIG_NETCONSOLE is not set |
478 | # CONFIG_NETPOLL is not set | ||
479 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
434 | 480 | ||
435 | # | 481 | # |
436 | # ISDN subsystem | 482 | # ISDN subsystem |
@@ -460,19 +506,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | |||
460 | # CONFIG_INPUT_EVBUG is not set | 506 | # CONFIG_INPUT_EVBUG is not set |
461 | 507 | ||
462 | # | 508 | # |
463 | # Input I/O drivers | ||
464 | # | ||
465 | # CONFIG_GAMEPORT is not set | ||
466 | CONFIG_SOUND_GAMEPORT=y | ||
467 | CONFIG_SERIO=y | ||
468 | CONFIG_SERIO_SERPORT=y | ||
469 | # CONFIG_SERIO_PARKBD is not set | ||
470 | CONFIG_SERIO_GSCPS2=y | ||
471 | CONFIG_HP_SDC=y | ||
472 | CONFIG_HIL_MLC=y | ||
473 | # CONFIG_SERIO_RAW is not set | ||
474 | |||
475 | # | ||
476 | # Input Device Drivers | 509 | # Input Device Drivers |
477 | # | 510 | # |
478 | CONFIG_INPUT_KEYBOARD=y | 511 | CONFIG_INPUT_KEYBOARD=y |
@@ -483,6 +516,7 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | |||
483 | # CONFIG_KEYBOARD_LKKBD is not set | 516 | # CONFIG_KEYBOARD_LKKBD is not set |
484 | # CONFIG_KEYBOARD_XTKBD is not set | 517 | # CONFIG_KEYBOARD_XTKBD is not set |
485 | # CONFIG_KEYBOARD_NEWTON is not set | 518 | # CONFIG_KEYBOARD_NEWTON is not set |
519 | CONFIG_KEYBOARD_HIL_OLD=y | ||
486 | # CONFIG_KEYBOARD_HIL is not set | 520 | # CONFIG_KEYBOARD_HIL is not set |
487 | CONFIG_INPUT_MOUSE=y | 521 | CONFIG_INPUT_MOUSE=y |
488 | CONFIG_MOUSE_PS2=y | 522 | CONFIG_MOUSE_PS2=y |
@@ -494,6 +528,19 @@ CONFIG_MOUSE_HIL=m | |||
494 | # CONFIG_INPUT_MISC is not set | 528 | # CONFIG_INPUT_MISC is not set |
495 | 529 | ||
496 | # | 530 | # |
531 | # Hardware I/O ports | ||
532 | # | ||
533 | CONFIG_SERIO=y | ||
534 | CONFIG_SERIO_SERPORT=y | ||
535 | # CONFIG_SERIO_PARKBD is not set | ||
536 | CONFIG_SERIO_GSCPS2=y | ||
537 | CONFIG_HP_SDC=y | ||
538 | CONFIG_HIL_MLC=y | ||
539 | CONFIG_SERIO_LIBPS2=y | ||
540 | # CONFIG_SERIO_RAW is not set | ||
541 | # CONFIG_GAMEPORT is not set | ||
542 | |||
543 | # | ||
497 | # Character devices | 544 | # Character devices |
498 | # | 545 | # |
499 | CONFIG_VT=y | 546 | CONFIG_VT=y |
@@ -511,7 +558,6 @@ CONFIG_SERIAL_8250_EXTENDED=y | |||
511 | CONFIG_SERIAL_8250_MANY_PORTS=y | 558 | CONFIG_SERIAL_8250_MANY_PORTS=y |
512 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 559 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
513 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 560 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
514 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
515 | # CONFIG_SERIAL_8250_RSA is not set | 561 | # CONFIG_SERIAL_8250_RSA is not set |
516 | 562 | ||
517 | # | 563 | # |
@@ -546,12 +592,14 @@ CONFIG_GEN_RTC_X=y | |||
546 | # | 592 | # |
547 | # Ftape, the floppy tape device driver | 593 | # Ftape, the floppy tape device driver |
548 | # | 594 | # |
549 | # CONFIG_AGP is not set | ||
550 | # CONFIG_DRM is not set | ||
551 | CONFIG_RAW_DRIVER=y | 595 | CONFIG_RAW_DRIVER=y |
552 | CONFIG_MAX_RAW_DEVS=256 | 596 | CONFIG_MAX_RAW_DEVS=256 |
553 | 597 | ||
554 | # | 598 | # |
599 | # TPM devices | ||
600 | # | ||
601 | |||
602 | # | ||
555 | # I2C support | 603 | # I2C support |
556 | # | 604 | # |
557 | # CONFIG_I2C is not set | 605 | # CONFIG_I2C is not set |
@@ -562,10 +610,20 @@ CONFIG_MAX_RAW_DEVS=256 | |||
562 | # CONFIG_W1 is not set | 610 | # CONFIG_W1 is not set |
563 | 611 | ||
564 | # | 612 | # |
613 | # Hardware Monitoring support | ||
614 | # | ||
615 | # CONFIG_HWMON is not set | ||
616 | # CONFIG_HWMON_VID is not set | ||
617 | |||
618 | # | ||
565 | # Misc devices | 619 | # Misc devices |
566 | # | 620 | # |
567 | 621 | ||
568 | # | 622 | # |
623 | # Multimedia Capabilities Port drivers | ||
624 | # | ||
625 | |||
626 | # | ||
569 | # Multimedia devices | 627 | # Multimedia devices |
570 | # | 628 | # |
571 | # CONFIG_VIDEO_DEV is not set | 629 | # CONFIG_VIDEO_DEV is not set |
@@ -579,28 +637,36 @@ CONFIG_MAX_RAW_DEVS=256 | |||
579 | # Graphics support | 637 | # Graphics support |
580 | # | 638 | # |
581 | CONFIG_FB=y | 639 | CONFIG_FB=y |
640 | CONFIG_FB_CFB_FILLRECT=y | ||
641 | CONFIG_FB_CFB_COPYAREA=y | ||
642 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
643 | CONFIG_FB_SOFT_CURSOR=y | ||
644 | # CONFIG_FB_MACMODES is not set | ||
582 | CONFIG_FB_MODE_HELPERS=y | 645 | CONFIG_FB_MODE_HELPERS=y |
583 | CONFIG_FB_TILEBLITTING=y | 646 | CONFIG_FB_TILEBLITTING=y |
584 | CONFIG_FB_STI=y | 647 | CONFIG_FB_STI=y |
648 | # CONFIG_FB_S1D13XXX is not set | ||
585 | # CONFIG_FB_VIRTUAL is not set | 649 | # CONFIG_FB_VIRTUAL is not set |
586 | 650 | ||
587 | # | 651 | # |
588 | # Console display driver support | 652 | # Console display driver support |
589 | # | 653 | # |
590 | CONFIG_STI_CONSOLE=y | 654 | CONFIG_DUMMY_CONSOLE=y |
591 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 | 655 | CONFIG_DUMMY_CONSOLE_COLUMNS=128 |
592 | CONFIG_DUMMY_CONSOLE_ROWS=48 | 656 | CONFIG_DUMMY_CONSOLE_ROWS=48 |
593 | CONFIG_DUMMY_CONSOLE=y | ||
594 | CONFIG_FRAMEBUFFER_CONSOLE=y | 657 | CONFIG_FRAMEBUFFER_CONSOLE=y |
658 | CONFIG_STI_CONSOLE=y | ||
595 | CONFIG_FONTS=y | 659 | CONFIG_FONTS=y |
596 | CONFIG_FONT_8x8=y | 660 | CONFIG_FONT_8x8=y |
597 | CONFIG_FONT_8x16=y | 661 | CONFIG_FONT_8x16=y |
598 | # CONFIG_FONT_6x11 is not set | 662 | # CONFIG_FONT_6x11 is not set |
663 | # CONFIG_FONT_7x14 is not set | ||
599 | # CONFIG_FONT_PEARL_8x8 is not set | 664 | # CONFIG_FONT_PEARL_8x8 is not set |
600 | # CONFIG_FONT_ACORN_8x8 is not set | 665 | # CONFIG_FONT_ACORN_8x8 is not set |
601 | # CONFIG_FONT_MINI_4x6 is not set | 666 | # CONFIG_FONT_MINI_4x6 is not set |
602 | # CONFIG_FONT_SUN8x16 is not set | 667 | # CONFIG_FONT_SUN8x16 is not set |
603 | # CONFIG_FONT_SUN12x22 is not set | 668 | # CONFIG_FONT_SUN12x22 is not set |
669 | # CONFIG_FONT_10x18 is not set | ||
604 | 670 | ||
605 | # | 671 | # |
606 | # Logo configuration | 672 | # Logo configuration |
@@ -610,6 +676,7 @@ CONFIG_LOGO=y | |||
610 | # CONFIG_LOGO_LINUX_VGA16 is not set | 676 | # CONFIG_LOGO_LINUX_VGA16 is not set |
611 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 677 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
612 | CONFIG_LOGO_PARISC_CLUT224=y | 678 | CONFIG_LOGO_PARISC_CLUT224=y |
679 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
613 | 680 | ||
614 | # | 681 | # |
615 | # Sound | 682 | # Sound |
@@ -657,10 +724,6 @@ CONFIG_SND_HARMONY=y | |||
657 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 724 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
658 | 725 | ||
659 | # | 726 | # |
660 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
661 | # | ||
662 | |||
663 | # | ||
664 | # USB Gadget Support | 727 | # USB Gadget Support |
665 | # | 728 | # |
666 | # CONFIG_USB_GADGET is not set | 729 | # CONFIG_USB_GADGET is not set |
@@ -671,10 +734,20 @@ CONFIG_SND_HARMONY=y | |||
671 | # CONFIG_MMC is not set | 734 | # CONFIG_MMC is not set |
672 | 735 | ||
673 | # | 736 | # |
737 | # InfiniBand support | ||
738 | # | ||
739 | # CONFIG_INFINIBAND is not set | ||
740 | |||
741 | # | ||
742 | # SN Devices | ||
743 | # | ||
744 | |||
745 | # | ||
674 | # File systems | 746 | # File systems |
675 | # | 747 | # |
676 | CONFIG_EXT2_FS=y | 748 | CONFIG_EXT2_FS=y |
677 | # CONFIG_EXT2_FS_XATTR is not set | 749 | # CONFIG_EXT2_FS_XATTR is not set |
750 | # CONFIG_EXT2_FS_XIP is not set | ||
678 | CONFIG_EXT3_FS=y | 751 | CONFIG_EXT3_FS=y |
679 | # CONFIG_EXT3_FS_XATTR is not set | 752 | # CONFIG_EXT3_FS_XATTR is not set |
680 | CONFIG_JBD=y | 753 | CONFIG_JBD=y |
@@ -682,20 +755,24 @@ CONFIG_JBD=y | |||
682 | # CONFIG_REISERFS_FS is not set | 755 | # CONFIG_REISERFS_FS is not set |
683 | CONFIG_JFS_FS=m | 756 | CONFIG_JFS_FS=m |
684 | # CONFIG_JFS_POSIX_ACL is not set | 757 | # CONFIG_JFS_POSIX_ACL is not set |
758 | # CONFIG_JFS_SECURITY is not set | ||
685 | # CONFIG_JFS_DEBUG is not set | 759 | # CONFIG_JFS_DEBUG is not set |
686 | # CONFIG_JFS_STATISTICS is not set | 760 | # CONFIG_JFS_STATISTICS is not set |
687 | CONFIG_FS_POSIX_ACL=y | 761 | CONFIG_FS_POSIX_ACL=y |
688 | CONFIG_XFS_FS=m | 762 | CONFIG_XFS_FS=m |
689 | # CONFIG_XFS_RT is not set | 763 | CONFIG_XFS_EXPORT=y |
690 | # CONFIG_XFS_QUOTA is not set | 764 | # CONFIG_XFS_QUOTA is not set |
691 | # CONFIG_XFS_SECURITY is not set | 765 | # CONFIG_XFS_SECURITY is not set |
692 | # CONFIG_XFS_POSIX_ACL is not set | 766 | # CONFIG_XFS_POSIX_ACL is not set |
767 | # CONFIG_XFS_RT is not set | ||
693 | # CONFIG_MINIX_FS is not set | 768 | # CONFIG_MINIX_FS is not set |
694 | # CONFIG_ROMFS_FS is not set | 769 | # CONFIG_ROMFS_FS is not set |
770 | CONFIG_INOTIFY=y | ||
695 | # CONFIG_QUOTA is not set | 771 | # CONFIG_QUOTA is not set |
696 | CONFIG_DNOTIFY=y | 772 | CONFIG_DNOTIFY=y |
697 | # CONFIG_AUTOFS_FS is not set | 773 | # CONFIG_AUTOFS_FS is not set |
698 | CONFIG_AUTOFS4_FS=y | 774 | CONFIG_AUTOFS4_FS=y |
775 | # CONFIG_FUSE_FS is not set | ||
699 | 776 | ||
700 | # | 777 | # |
701 | # CD-ROM/DVD Filesystems | 778 | # CD-ROM/DVD Filesystems |
@@ -722,14 +799,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
722 | CONFIG_PROC_FS=y | 799 | CONFIG_PROC_FS=y |
723 | CONFIG_PROC_KCORE=y | 800 | CONFIG_PROC_KCORE=y |
724 | CONFIG_SYSFS=y | 801 | CONFIG_SYSFS=y |
725 | # CONFIG_DEVFS_FS is not set | ||
726 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
727 | CONFIG_TMPFS=y | 802 | CONFIG_TMPFS=y |
728 | CONFIG_TMPFS_XATTR=y | ||
729 | # CONFIG_TMPFS_SECURITY is not set | ||
730 | # CONFIG_HUGETLBFS is not set | 803 | # CONFIG_HUGETLBFS is not set |
731 | # CONFIG_HUGETLB_PAGE is not set | 804 | # CONFIG_HUGETLB_PAGE is not set |
732 | CONFIG_RAMFS=y | 805 | CONFIG_RAMFS=y |
806 | # CONFIG_RELAYFS_FS is not set | ||
733 | 807 | ||
734 | # | 808 | # |
735 | # Miscellaneous filesystems | 809 | # Miscellaneous filesystems |
@@ -754,16 +828,19 @@ CONFIG_UFS_FS=m | |||
754 | # | 828 | # |
755 | CONFIG_NFS_FS=y | 829 | CONFIG_NFS_FS=y |
756 | CONFIG_NFS_V3=y | 830 | CONFIG_NFS_V3=y |
831 | # CONFIG_NFS_V3_ACL is not set | ||
757 | CONFIG_NFS_V4=y | 832 | CONFIG_NFS_V4=y |
758 | CONFIG_NFS_DIRECTIO=y | 833 | CONFIG_NFS_DIRECTIO=y |
759 | CONFIG_NFSD=m | 834 | CONFIG_NFSD=m |
760 | CONFIG_NFSD_V3=y | 835 | CONFIG_NFSD_V3=y |
836 | # CONFIG_NFSD_V3_ACL is not set | ||
761 | CONFIG_NFSD_V4=y | 837 | CONFIG_NFSD_V4=y |
762 | CONFIG_NFSD_TCP=y | 838 | CONFIG_NFSD_TCP=y |
763 | CONFIG_ROOT_NFS=y | 839 | CONFIG_ROOT_NFS=y |
764 | CONFIG_LOCKD=y | 840 | CONFIG_LOCKD=y |
765 | CONFIG_LOCKD_V4=y | 841 | CONFIG_LOCKD_V4=y |
766 | CONFIG_EXPORTFS=m | 842 | CONFIG_EXPORTFS=m |
843 | CONFIG_NFS_COMMON=y | ||
767 | CONFIG_SUNRPC=y | 844 | CONFIG_SUNRPC=y |
768 | CONFIG_SUNRPC_GSS=y | 845 | CONFIG_SUNRPC_GSS=y |
769 | CONFIG_RPCSEC_GSS_KRB5=y | 846 | CONFIG_RPCSEC_GSS_KRB5=y |
@@ -778,6 +855,7 @@ CONFIG_CIFS=m | |||
778 | # CONFIG_NCP_FS is not set | 855 | # CONFIG_NCP_FS is not set |
779 | # CONFIG_CODA_FS is not set | 856 | # CONFIG_CODA_FS is not set |
780 | # CONFIG_AFS_FS is not set | 857 | # CONFIG_AFS_FS is not set |
858 | # CONFIG_9P_FS is not set | ||
781 | 859 | ||
782 | # | 860 | # |
783 | # Partition Types | 861 | # Partition Types |
@@ -838,13 +916,19 @@ CONFIG_OPROFILE=m | |||
838 | # | 916 | # |
839 | # Kernel hacking | 917 | # Kernel hacking |
840 | # | 918 | # |
919 | # CONFIG_PRINTK_TIME is not set | ||
841 | CONFIG_DEBUG_KERNEL=y | 920 | CONFIG_DEBUG_KERNEL=y |
842 | CONFIG_MAGIC_SYSRQ=y | 921 | CONFIG_MAGIC_SYSRQ=y |
922 | CONFIG_LOG_BUF_SHIFT=16 | ||
923 | CONFIG_DETECT_SOFTLOCKUP=y | ||
843 | # CONFIG_SCHEDSTATS is not set | 924 | # CONFIG_SCHEDSTATS is not set |
844 | # CONFIG_DEBUG_SLAB is not set | 925 | # CONFIG_DEBUG_SLAB is not set |
845 | # CONFIG_DEBUG_SPINLOCK is not set | 926 | # CONFIG_DEBUG_SPINLOCK is not set |
927 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
846 | # CONFIG_DEBUG_KOBJECT is not set | 928 | # CONFIG_DEBUG_KOBJECT is not set |
847 | # CONFIG_DEBUG_INFO is not set | 929 | # CONFIG_DEBUG_INFO is not set |
930 | # CONFIG_DEBUG_IOREMAP is not set | ||
931 | # CONFIG_DEBUG_FS is not set | ||
848 | 932 | ||
849 | # | 933 | # |
850 | # Security options | 934 | # Security options |
@@ -865,6 +949,7 @@ CONFIG_CRYPTO_SHA1=m | |||
865 | CONFIG_CRYPTO_SHA256=m | 949 | CONFIG_CRYPTO_SHA256=m |
866 | CONFIG_CRYPTO_SHA512=m | 950 | CONFIG_CRYPTO_SHA512=m |
867 | CONFIG_CRYPTO_WP512=m | 951 | CONFIG_CRYPTO_WP512=m |
952 | CONFIG_CRYPTO_TGR192=m | ||
868 | CONFIG_CRYPTO_DES=y | 953 | CONFIG_CRYPTO_DES=y |
869 | CONFIG_CRYPTO_BLOWFISH=m | 954 | CONFIG_CRYPTO_BLOWFISH=m |
870 | CONFIG_CRYPTO_TWOFISH=m | 955 | CONFIG_CRYPTO_TWOFISH=m |
@@ -882,9 +967,14 @@ CONFIG_CRYPTO_CRC32C=m | |||
882 | CONFIG_CRYPTO_TEST=m | 967 | CONFIG_CRYPTO_TEST=m |
883 | 968 | ||
884 | # | 969 | # |
970 | # Hardware crypto devices | ||
971 | # | ||
972 | |||
973 | # | ||
885 | # Library routines | 974 | # Library routines |
886 | # | 975 | # |
887 | CONFIG_CRC_CCITT=m | 976 | CONFIG_CRC_CCITT=m |
977 | # CONFIG_CRC16 is not set | ||
888 | CONFIG_CRC32=y | 978 | CONFIG_CRC32=y |
889 | CONFIG_LIBCRC32C=m | 979 | CONFIG_LIBCRC32C=m |
890 | CONFIG_ZLIB_INFLATE=m | 980 | CONFIG_ZLIB_INFLATE=m |
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig index 30fc03ed0cfb..955ef5084f3e 100644 --- a/arch/parisc/configs/a500_defconfig +++ b/arch/parisc/configs/a500_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.11-rc4-pa1 | 3 | # Linux kernel version: 2.6.14-rc5-pa1 |
4 | # Wed Feb 16 11:32:49 2005 | 4 | # Fri Oct 21 23:04:54 2005 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -10,6 +10,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
11 | CONFIG_GENERIC_HARDIRQS=y | 11 | CONFIG_GENERIC_HARDIRQS=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
13 | 14 | ||
14 | # | 15 | # |
15 | # Code maturity level options | 16 | # Code maturity level options |
@@ -19,26 +20,32 @@ CONFIG_EXPERIMENTAL=y | |||
19 | CONFIG_BROKEN=y | 20 | CONFIG_BROKEN=y |
20 | CONFIG_BROKEN_ON_SMP=y | 21 | CONFIG_BROKEN_ON_SMP=y |
21 | CONFIG_LOCK_KERNEL=y | 22 | CONFIG_LOCK_KERNEL=y |
23 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
22 | 24 | ||
23 | # | 25 | # |
24 | # General setup | 26 | # General setup |
25 | # | 27 | # |
26 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
29 | # CONFIG_LOCALVERSION_AUTO is not set | ||
27 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
28 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
29 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
30 | # CONFIG_BSD_PROCESS_ACCT is not set | 33 | # CONFIG_BSD_PROCESS_ACCT is not set |
31 | CONFIG_SYSCTL=y | 34 | CONFIG_SYSCTL=y |
32 | # CONFIG_AUDIT is not set | 35 | # CONFIG_AUDIT is not set |
33 | CONFIG_LOG_BUF_SHIFT=16 | ||
34 | CONFIG_HOTPLUG=y | 36 | CONFIG_HOTPLUG=y |
35 | CONFIG_KOBJECT_UEVENT=y | 37 | CONFIG_KOBJECT_UEVENT=y |
36 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
37 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
40 | # CONFIG_CPUSETS is not set | ||
41 | CONFIG_INITRAMFS_SOURCE="" | ||
38 | CONFIG_EMBEDDED=y | 42 | CONFIG_EMBEDDED=y |
39 | CONFIG_KALLSYMS=y | 43 | CONFIG_KALLSYMS=y |
40 | CONFIG_KALLSYMS_ALL=y | 44 | CONFIG_KALLSYMS_ALL=y |
41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 45 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
46 | CONFIG_PRINTK=y | ||
47 | CONFIG_BUG=y | ||
48 | CONFIG_BASE_FULL=y | ||
42 | CONFIG_FUTEX=y | 49 | CONFIG_FUTEX=y |
43 | CONFIG_EPOLL=y | 50 | CONFIG_EPOLL=y |
44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 51 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -48,6 +55,7 @@ CONFIG_CC_ALIGN_LABELS=0 | |||
48 | CONFIG_CC_ALIGN_LOOPS=0 | 55 | CONFIG_CC_ALIGN_LOOPS=0 |
49 | CONFIG_CC_ALIGN_JUMPS=0 | 56 | CONFIG_CC_ALIGN_JUMPS=0 |
50 | # CONFIG_TINY_SHMEM is not set | 57 | # CONFIG_TINY_SHMEM is not set |
58 | CONFIG_BASE_SMALL=0 | ||
51 | 59 | ||
52 | # | 60 | # |
53 | # Loadable module support | 61 | # Loadable module support |
@@ -74,7 +82,19 @@ CONFIG_PREFETCH=y | |||
74 | CONFIG_64BIT=y | 82 | CONFIG_64BIT=y |
75 | CONFIG_SMP=y | 83 | CONFIG_SMP=y |
76 | CONFIG_HOTPLUG_CPU=y | 84 | CONFIG_HOTPLUG_CPU=y |
85 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
86 | # CONFIG_HZ_100 is not set | ||
87 | CONFIG_HZ_250=y | ||
88 | # CONFIG_HZ_1000 is not set | ||
89 | CONFIG_HZ=250 | ||
90 | CONFIG_SELECT_MEMORY_MODEL=y | ||
91 | # CONFIG_FLATMEM_MANUAL is not set | ||
92 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
93 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
77 | CONFIG_DISCONTIGMEM=y | 94 | CONFIG_DISCONTIGMEM=y |
95 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
96 | CONFIG_NEED_MULTIPLE_NODES=y | ||
97 | # CONFIG_SPARSEMEM_STATIC is not set | ||
78 | # CONFIG_PREEMPT is not set | 98 | # CONFIG_PREEMPT is not set |
79 | CONFIG_COMPAT=y | 99 | CONFIG_COMPAT=y |
80 | CONFIG_NR_CPUS=8 | 100 | CONFIG_NR_CPUS=8 |
@@ -85,7 +105,7 @@ CONFIG_NR_CPUS=8 | |||
85 | # CONFIG_GSC is not set | 105 | # CONFIG_GSC is not set |
86 | CONFIG_PCI=y | 106 | CONFIG_PCI=y |
87 | CONFIG_PCI_LEGACY_PROC=y | 107 | CONFIG_PCI_LEGACY_PROC=y |
88 | CONFIG_PCI_NAMES=y | 108 | # CONFIG_PCI_DEBUG is not set |
89 | CONFIG_PCI_LBA=y | 109 | CONFIG_PCI_LBA=y |
90 | CONFIG_IOSAPIC=y | 110 | CONFIG_IOSAPIC=y |
91 | CONFIG_IOMMU_SBA=y | 111 | CONFIG_IOMMU_SBA=y |
@@ -96,6 +116,8 @@ CONFIG_IOMMU_SBA=y | |||
96 | CONFIG_PCCARD=m | 116 | CONFIG_PCCARD=m |
97 | # CONFIG_PCMCIA_DEBUG is not set | 117 | # CONFIG_PCMCIA_DEBUG is not set |
98 | CONFIG_PCMCIA=m | 118 | CONFIG_PCMCIA=m |
119 | # CONFIG_PCMCIA_LOAD_CIS is not set | ||
120 | CONFIG_PCMCIA_IOCTL=y | ||
99 | CONFIG_CARDBUS=y | 121 | CONFIG_CARDBUS=y |
100 | 122 | ||
101 | # | 123 | # |
@@ -104,7 +126,6 @@ CONFIG_CARDBUS=y | |||
104 | CONFIG_YENTA=m | 126 | CONFIG_YENTA=m |
105 | CONFIG_PD6729=m | 127 | CONFIG_PD6729=m |
106 | CONFIG_I82092=m | 128 | CONFIG_I82092=m |
107 | CONFIG_TCIC=m | ||
108 | CONFIG_PCCARD_NONSTATIC=m | 129 | CONFIG_PCCARD_NONSTATIC=m |
109 | 130 | ||
110 | # | 131 | # |
@@ -127,6 +148,203 @@ CONFIG_BINFMT_ELF=y | |||
127 | # CONFIG_BINFMT_MISC is not set | 148 | # CONFIG_BINFMT_MISC is not set |
128 | 149 | ||
129 | # | 150 | # |
151 | # Networking | ||
152 | # | ||
153 | CONFIG_NET=y | ||
154 | |||
155 | # | ||
156 | # Networking options | ||
157 | # | ||
158 | CONFIG_PACKET=y | ||
159 | CONFIG_PACKET_MMAP=y | ||
160 | CONFIG_UNIX=y | ||
161 | CONFIG_XFRM=y | ||
162 | CONFIG_XFRM_USER=m | ||
163 | CONFIG_NET_KEY=m | ||
164 | CONFIG_INET=y | ||
165 | CONFIG_IP_MULTICAST=y | ||
166 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
167 | CONFIG_IP_FIB_HASH=y | ||
168 | CONFIG_IP_PNP=y | ||
169 | CONFIG_IP_PNP_DHCP=y | ||
170 | CONFIG_IP_PNP_BOOTP=y | ||
171 | # CONFIG_IP_PNP_RARP is not set | ||
172 | # CONFIG_NET_IPIP is not set | ||
173 | # CONFIG_NET_IPGRE is not set | ||
174 | # CONFIG_IP_MROUTE is not set | ||
175 | # CONFIG_ARPD is not set | ||
176 | # CONFIG_SYN_COOKIES is not set | ||
177 | CONFIG_INET_AH=m | ||
178 | CONFIG_INET_ESP=m | ||
179 | # CONFIG_INET_IPCOMP is not set | ||
180 | CONFIG_INET_TUNNEL=m | ||
181 | CONFIG_INET_DIAG=y | ||
182 | CONFIG_INET_TCP_DIAG=y | ||
183 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
184 | CONFIG_TCP_CONG_BIC=y | ||
185 | |||
186 | # | ||
187 | # IP: Virtual Server Configuration | ||
188 | # | ||
189 | # CONFIG_IP_VS is not set | ||
190 | CONFIG_IPV6=m | ||
191 | # CONFIG_IPV6_PRIVACY is not set | ||
192 | CONFIG_INET6_AH=m | ||
193 | CONFIG_INET6_ESP=m | ||
194 | CONFIG_INET6_IPCOMP=m | ||
195 | CONFIG_INET6_TUNNEL=m | ||
196 | CONFIG_IPV6_TUNNEL=m | ||
197 | CONFIG_NETFILTER=y | ||
198 | # CONFIG_NETFILTER_DEBUG is not set | ||
199 | # CONFIG_NETFILTER_NETLINK is not set | ||
200 | |||
201 | # | ||
202 | # IP: Netfilter Configuration | ||
203 | # | ||
204 | CONFIG_IP_NF_CONNTRACK=m | ||
205 | # CONFIG_IP_NF_CT_ACCT is not set | ||
206 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
207 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
208 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
209 | CONFIG_IP_NF_FTP=m | ||
210 | CONFIG_IP_NF_IRC=m | ||
211 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
212 | CONFIG_IP_NF_TFTP=m | ||
213 | CONFIG_IP_NF_AMANDA=m | ||
214 | # CONFIG_IP_NF_PPTP is not set | ||
215 | CONFIG_IP_NF_QUEUE=m | ||
216 | CONFIG_IP_NF_IPTABLES=m | ||
217 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
218 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
219 | CONFIG_IP_NF_MATCH_MAC=m | ||
220 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
221 | CONFIG_IP_NF_MATCH_MARK=m | ||
222 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
223 | CONFIG_IP_NF_MATCH_TOS=m | ||
224 | CONFIG_IP_NF_MATCH_RECENT=m | ||
225 | CONFIG_IP_NF_MATCH_ECN=m | ||
226 | CONFIG_IP_NF_MATCH_DSCP=m | ||
227 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
228 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
229 | CONFIG_IP_NF_MATCH_TTL=m | ||
230 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
231 | CONFIG_IP_NF_MATCH_HELPER=m | ||
232 | CONFIG_IP_NF_MATCH_STATE=m | ||
233 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
234 | CONFIG_IP_NF_MATCH_OWNER=m | ||
235 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
236 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
237 | CONFIG_IP_NF_MATCH_SCTP=m | ||
238 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
239 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
240 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
241 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
242 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
243 | CONFIG_IP_NF_FILTER=m | ||
244 | CONFIG_IP_NF_TARGET_REJECT=m | ||
245 | CONFIG_IP_NF_TARGET_LOG=m | ||
246 | CONFIG_IP_NF_TARGET_ULOG=m | ||
247 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
248 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
249 | CONFIG_IP_NF_NAT=m | ||
250 | CONFIG_IP_NF_NAT_NEEDED=y | ||
251 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
252 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
253 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
254 | CONFIG_IP_NF_TARGET_SAME=m | ||
255 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
256 | CONFIG_IP_NF_NAT_IRC=m | ||
257 | CONFIG_IP_NF_NAT_FTP=m | ||
258 | CONFIG_IP_NF_NAT_TFTP=m | ||
259 | CONFIG_IP_NF_NAT_AMANDA=m | ||
260 | CONFIG_IP_NF_MANGLE=m | ||
261 | CONFIG_IP_NF_TARGET_TOS=m | ||
262 | CONFIG_IP_NF_TARGET_ECN=m | ||
263 | CONFIG_IP_NF_TARGET_DSCP=m | ||
264 | CONFIG_IP_NF_TARGET_MARK=m | ||
265 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
266 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
267 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
268 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
269 | CONFIG_IP_NF_RAW=m | ||
270 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
271 | CONFIG_IP_NF_ARPTABLES=m | ||
272 | CONFIG_IP_NF_ARPFILTER=m | ||
273 | CONFIG_IP_NF_ARP_MANGLE=m | ||
274 | |||
275 | # | ||
276 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
277 | # | ||
278 | # CONFIG_IP6_NF_QUEUE is not set | ||
279 | CONFIG_IP6_NF_IPTABLES=m | ||
280 | # CONFIG_IP6_NF_MATCH_LIMIT is not set | ||
281 | CONFIG_IP6_NF_MATCH_MAC=m | ||
282 | CONFIG_IP6_NF_MATCH_RT=m | ||
283 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
284 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
285 | CONFIG_IP6_NF_MATCH_HL=m | ||
286 | # CONFIG_IP6_NF_MATCH_MULTIPORT is not set | ||
287 | # CONFIG_IP6_NF_MATCH_OWNER is not set | ||
288 | # CONFIG_IP6_NF_MATCH_MARK is not set | ||
289 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
290 | # CONFIG_IP6_NF_MATCH_AHESP is not set | ||
291 | # CONFIG_IP6_NF_MATCH_LENGTH is not set | ||
292 | # CONFIG_IP6_NF_MATCH_EUI64 is not set | ||
293 | CONFIG_IP6_NF_FILTER=m | ||
294 | CONFIG_IP6_NF_TARGET_LOG=m | ||
295 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
296 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
297 | CONFIG_IP6_NF_MANGLE=m | ||
298 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
299 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
300 | CONFIG_IP6_NF_RAW=m | ||
301 | |||
302 | # | ||
303 | # DCCP Configuration (EXPERIMENTAL) | ||
304 | # | ||
305 | CONFIG_IP_DCCP=m | ||
306 | CONFIG_INET_DCCP_DIAG=m | ||
307 | |||
308 | # | ||
309 | # DCCP CCIDs Configuration (EXPERIMENTAL) | ||
310 | # | ||
311 | # CONFIG_IP_DCCP_CCID3 is not set | ||
312 | |||
313 | # | ||
314 | # DCCP Kernel Hacking | ||
315 | # | ||
316 | # CONFIG_IP_DCCP_DEBUG is not set | ||
317 | |||
318 | # | ||
319 | # SCTP Configuration (EXPERIMENTAL) | ||
320 | # | ||
321 | # CONFIG_IP_SCTP is not set | ||
322 | # CONFIG_ATM is not set | ||
323 | # CONFIG_BRIDGE is not set | ||
324 | # CONFIG_VLAN_8021Q is not set | ||
325 | # CONFIG_DECNET is not set | ||
326 | CONFIG_LLC=m | ||
327 | CONFIG_LLC2=m | ||
328 | # CONFIG_IPX is not set | ||
329 | # CONFIG_ATALK is not set | ||
330 | # CONFIG_X25 is not set | ||
331 | # CONFIG_LAPB is not set | ||
332 | # CONFIG_NET_DIVERT is not set | ||
333 | # CONFIG_ECONET is not set | ||
334 | # CONFIG_WAN_ROUTER is not set | ||
335 | # CONFIG_NET_SCHED is not set | ||
336 | # CONFIG_NET_CLS_ROUTE is not set | ||
337 | |||
338 | # | ||
339 | # Network testing | ||
340 | # | ||
341 | CONFIG_NET_PKTGEN=m | ||
342 | # CONFIG_HAMRADIO is not set | ||
343 | # CONFIG_IRDA is not set | ||
344 | # CONFIG_BT is not set | ||
345 | # CONFIG_IEEE80211 is not set | ||
346 | |||
347 | # | ||
130 | # Device Drivers | 348 | # Device Drivers |
131 | # | 349 | # |
132 | 350 | ||
@@ -139,6 +357,11 @@ CONFIG_FW_LOADER=y | |||
139 | # CONFIG_DEBUG_DRIVER is not set | 357 | # CONFIG_DEBUG_DRIVER is not set |
140 | 358 | ||
141 | # | 359 | # |
360 | # Connector - unified userspace <-> kernelspace linker | ||
361 | # | ||
362 | # CONFIG_CONNECTOR is not set | ||
363 | |||
364 | # | ||
142 | # Memory Technology Devices (MTD) | 365 | # Memory Technology Devices (MTD) |
143 | # | 366 | # |
144 | # CONFIG_MTD is not set | 367 | # CONFIG_MTD is not set |
@@ -169,7 +392,6 @@ CONFIG_BLK_DEV_RAM=y | |||
169 | CONFIG_BLK_DEV_RAM_COUNT=16 | 392 | CONFIG_BLK_DEV_RAM_COUNT=16 |
170 | CONFIG_BLK_DEV_RAM_SIZE=6144 | 393 | CONFIG_BLK_DEV_RAM_SIZE=6144 |
171 | CONFIG_BLK_DEV_INITRD=y | 394 | CONFIG_BLK_DEV_INITRD=y |
172 | CONFIG_INITRAMFS_SOURCE="" | ||
173 | # CONFIG_CDROM_PKTCDVD is not set | 395 | # CONFIG_CDROM_PKTCDVD is not set |
174 | 396 | ||
175 | # | 397 | # |
@@ -189,6 +411,7 @@ CONFIG_IOSCHED_CFQ=y | |||
189 | # | 411 | # |
190 | # SCSI device support | 412 | # SCSI device support |
191 | # | 413 | # |
414 | CONFIG_RAID_ATTRS=m | ||
192 | CONFIG_SCSI=y | 415 | CONFIG_SCSI=y |
193 | CONFIG_SCSI_PROC_FS=y | 416 | CONFIG_SCSI_PROC_FS=y |
194 | 417 | ||
@@ -201,6 +424,7 @@ CONFIG_CHR_DEV_ST=y | |||
201 | CONFIG_BLK_DEV_SR=y | 424 | CONFIG_BLK_DEV_SR=y |
202 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 425 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
203 | CONFIG_CHR_DEV_SG=y | 426 | CONFIG_CHR_DEV_SG=y |
427 | # CONFIG_CHR_DEV_SCH is not set | ||
204 | 428 | ||
205 | # | 429 | # |
206 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 430 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -215,6 +439,7 @@ CONFIG_SCSI_MULTI_LUN=y | |||
215 | CONFIG_SCSI_SPI_ATTRS=y | 439 | CONFIG_SCSI_SPI_ATTRS=y |
216 | CONFIG_SCSI_FC_ATTRS=m | 440 | CONFIG_SCSI_FC_ATTRS=m |
217 | CONFIG_SCSI_ISCSI_ATTRS=m | 441 | CONFIG_SCSI_ISCSI_ATTRS=m |
442 | CONFIG_SCSI_SAS_ATTRS=m | ||
218 | 443 | ||
219 | # | 444 | # |
220 | # SCSI low-level drivers | 445 | # SCSI low-level drivers |
@@ -229,14 +454,12 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
229 | # CONFIG_SCSI_ADVANSYS is not set | 454 | # CONFIG_SCSI_ADVANSYS is not set |
230 | # CONFIG_MEGARAID_NEWGEN is not set | 455 | # CONFIG_MEGARAID_NEWGEN is not set |
231 | # CONFIG_MEGARAID_LEGACY is not set | 456 | # CONFIG_MEGARAID_LEGACY is not set |
457 | # CONFIG_MEGARAID_SAS is not set | ||
232 | # CONFIG_SCSI_SATA is not set | 458 | # CONFIG_SCSI_SATA is not set |
233 | # CONFIG_SCSI_BUSLOGIC is not set | ||
234 | # CONFIG_SCSI_CPQFCTS is not set | 459 | # CONFIG_SCSI_CPQFCTS is not set |
235 | # CONFIG_SCSI_DMX3191D is not set | 460 | # CONFIG_SCSI_DMX3191D is not set |
236 | # CONFIG_SCSI_EATA is not set | ||
237 | # CONFIG_SCSI_EATA_PIO is not set | 461 | # CONFIG_SCSI_EATA_PIO is not set |
238 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 462 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
239 | # CONFIG_SCSI_GDTH is not set | ||
240 | # CONFIG_SCSI_IPS is not set | 463 | # CONFIG_SCSI_IPS is not set |
241 | # CONFIG_SCSI_INITIO is not set | 464 | # CONFIG_SCSI_INITIO is not set |
242 | # CONFIG_SCSI_INIA100 is not set | 465 | # CONFIG_SCSI_INIA100 is not set |
@@ -246,8 +469,6 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | |||
246 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 469 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
247 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 470 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set |
248 | # CONFIG_SCSI_IPR is not set | 471 | # CONFIG_SCSI_IPR is not set |
249 | # CONFIG_SCSI_PCI2000 is not set | ||
250 | # CONFIG_SCSI_PCI2220I is not set | ||
251 | # CONFIG_SCSI_QLOGIC_ISP is not set | 472 | # CONFIG_SCSI_QLOGIC_ISP is not set |
252 | CONFIG_SCSI_QLOGIC_FC=m | 473 | CONFIG_SCSI_QLOGIC_FC=m |
253 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | 474 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set |
@@ -258,7 +479,9 @@ CONFIG_SCSI_QLA2XXX=y | |||
258 | # CONFIG_SCSI_QLA22XX is not set | 479 | # CONFIG_SCSI_QLA22XX is not set |
259 | CONFIG_SCSI_QLA2300=m | 480 | CONFIG_SCSI_QLA2300=m |
260 | CONFIG_SCSI_QLA2322=m | 481 | CONFIG_SCSI_QLA2322=m |
261 | CONFIG_SCSI_QLA6312=m | 482 | # CONFIG_SCSI_QLA6312 is not set |
483 | # CONFIG_SCSI_QLA24XX is not set | ||
484 | # CONFIG_SCSI_LPFC is not set | ||
262 | # CONFIG_SCSI_DC395x is not set | 485 | # CONFIG_SCSI_DC395x is not set |
263 | # CONFIG_SCSI_DC390T is not set | 486 | # CONFIG_SCSI_DC390T is not set |
264 | CONFIG_SCSI_DEBUG=m | 487 | CONFIG_SCSI_DEBUG=m |
@@ -288,8 +511,11 @@ CONFIG_MD_RAID1=y | |||
288 | # | 511 | # |
289 | # Fusion MPT device support | 512 | # Fusion MPT device support |
290 | # | 513 | # |
291 | CONFIG_FUSION=m | 514 | CONFIG_FUSION=y |
292 | CONFIG_FUSION_MAX_SGE=40 | 515 | CONFIG_FUSION_SPI=m |
516 | CONFIG_FUSION_FC=m | ||
517 | # CONFIG_FUSION_SAS is not set | ||
518 | CONFIG_FUSION_MAX_SGE=128 | ||
293 | CONFIG_FUSION_CTL=m | 519 | CONFIG_FUSION_CTL=m |
294 | 520 | ||
295 | # | 521 | # |
@@ -303,153 +529,13 @@ CONFIG_FUSION_CTL=m | |||
303 | # CONFIG_I2O is not set | 529 | # CONFIG_I2O is not set |
304 | 530 | ||
305 | # | 531 | # |
306 | # Networking support | 532 | # Network device support |
307 | # | ||
308 | CONFIG_NET=y | ||
309 | |||
310 | # | ||
311 | # Networking options | ||
312 | # | ||
313 | CONFIG_PACKET=y | ||
314 | CONFIG_PACKET_MMAP=y | ||
315 | CONFIG_NETLINK_DEV=y | ||
316 | CONFIG_UNIX=y | ||
317 | CONFIG_NET_KEY=m | ||
318 | CONFIG_INET=y | ||
319 | CONFIG_IP_MULTICAST=y | ||
320 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
321 | CONFIG_IP_PNP=y | ||
322 | CONFIG_IP_PNP_DHCP=y | ||
323 | CONFIG_IP_PNP_BOOTP=y | ||
324 | # CONFIG_IP_PNP_RARP is not set | ||
325 | # CONFIG_NET_IPIP is not set | ||
326 | # CONFIG_NET_IPGRE is not set | ||
327 | # CONFIG_IP_MROUTE is not set | ||
328 | # CONFIG_ARPD is not set | ||
329 | # CONFIG_SYN_COOKIES is not set | ||
330 | CONFIG_INET_AH=m | ||
331 | CONFIG_INET_ESP=m | ||
332 | # CONFIG_INET_IPCOMP is not set | ||
333 | CONFIG_INET_TUNNEL=m | ||
334 | CONFIG_IP_TCPDIAG=y | ||
335 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
336 | |||
337 | # | ||
338 | # IP: Virtual Server Configuration | ||
339 | # | 533 | # |
340 | # CONFIG_IP_VS is not set | ||
341 | # CONFIG_IPV6 is not set | ||
342 | CONFIG_NETFILTER=y | ||
343 | # CONFIG_NETFILTER_DEBUG is not set | ||
344 | |||
345 | # | ||
346 | # IP: Netfilter Configuration | ||
347 | # | ||
348 | CONFIG_IP_NF_CONNTRACK=m | ||
349 | # CONFIG_IP_NF_CT_ACCT is not set | ||
350 | CONFIG_IP_NF_CONNTRACK_MARK=y | ||
351 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
352 | CONFIG_IP_NF_FTP=m | ||
353 | CONFIG_IP_NF_IRC=m | ||
354 | CONFIG_IP_NF_TFTP=m | ||
355 | CONFIG_IP_NF_AMANDA=m | ||
356 | CONFIG_IP_NF_QUEUE=m | ||
357 | CONFIG_IP_NF_IPTABLES=m | ||
358 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
359 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
360 | CONFIG_IP_NF_MATCH_MAC=m | ||
361 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
362 | CONFIG_IP_NF_MATCH_MARK=m | ||
363 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
364 | CONFIG_IP_NF_MATCH_TOS=m | ||
365 | CONFIG_IP_NF_MATCH_RECENT=m | ||
366 | CONFIG_IP_NF_MATCH_ECN=m | ||
367 | CONFIG_IP_NF_MATCH_DSCP=m | ||
368 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
369 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
370 | CONFIG_IP_NF_MATCH_TTL=m | ||
371 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
372 | CONFIG_IP_NF_MATCH_HELPER=m | ||
373 | CONFIG_IP_NF_MATCH_STATE=m | ||
374 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
375 | CONFIG_IP_NF_MATCH_OWNER=m | ||
376 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
377 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
378 | CONFIG_IP_NF_MATCH_SCTP=m | ||
379 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
380 | CONFIG_IP_NF_MATCH_CONNMARK=m | ||
381 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
382 | CONFIG_IP_NF_FILTER=m | ||
383 | CONFIG_IP_NF_TARGET_REJECT=m | ||
384 | CONFIG_IP_NF_TARGET_LOG=m | ||
385 | CONFIG_IP_NF_TARGET_ULOG=m | ||
386 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
387 | CONFIG_IP_NF_NAT=m | ||
388 | CONFIG_IP_NF_NAT_NEEDED=y | ||
389 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
390 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
391 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
392 | CONFIG_IP_NF_TARGET_SAME=m | ||
393 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
394 | CONFIG_IP_NF_NAT_IRC=m | ||
395 | CONFIG_IP_NF_NAT_FTP=m | ||
396 | CONFIG_IP_NF_NAT_TFTP=m | ||
397 | CONFIG_IP_NF_NAT_AMANDA=m | ||
398 | CONFIG_IP_NF_MANGLE=m | ||
399 | CONFIG_IP_NF_TARGET_TOS=m | ||
400 | CONFIG_IP_NF_TARGET_ECN=m | ||
401 | CONFIG_IP_NF_TARGET_DSCP=m | ||
402 | CONFIG_IP_NF_TARGET_MARK=m | ||
403 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
404 | CONFIG_IP_NF_TARGET_CONNMARK=m | ||
405 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
406 | CONFIG_IP_NF_RAW=m | ||
407 | CONFIG_IP_NF_TARGET_NOTRACK=m | ||
408 | CONFIG_IP_NF_ARPTABLES=m | ||
409 | CONFIG_IP_NF_ARPFILTER=m | ||
410 | CONFIG_IP_NF_ARP_MANGLE=m | ||
411 | CONFIG_XFRM=y | ||
412 | CONFIG_XFRM_USER=m | ||
413 | |||
414 | # | ||
415 | # SCTP Configuration (EXPERIMENTAL) | ||
416 | # | ||
417 | # CONFIG_IP_SCTP is not set | ||
418 | # CONFIG_ATM is not set | ||
419 | # CONFIG_BRIDGE is not set | ||
420 | # CONFIG_VLAN_8021Q is not set | ||
421 | # CONFIG_DECNET is not set | ||
422 | CONFIG_LLC=m | ||
423 | CONFIG_LLC2=m | ||
424 | # CONFIG_IPX is not set | ||
425 | # CONFIG_ATALK is not set | ||
426 | # CONFIG_X25 is not set | ||
427 | # CONFIG_LAPB is not set | ||
428 | # CONFIG_NET_DIVERT is not set | ||
429 | # CONFIG_ECONET is not set | ||
430 | # CONFIG_WAN_ROUTER is not set | ||
431 | |||
432 | # | ||
433 | # QoS and/or fair queueing | ||
434 | # | ||
435 | # CONFIG_NET_SCHED is not set | ||
436 | # CONFIG_NET_CLS_ROUTE is not set | ||
437 | |||
438 | # | ||
439 | # Network testing | ||
440 | # | ||
441 | CONFIG_NET_PKTGEN=m | ||
442 | # CONFIG_NETPOLL is not set | ||
443 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
444 | # CONFIG_HAMRADIO is not set | ||
445 | # CONFIG_IRDA is not set | ||
446 | # CONFIG_BT is not set | ||
447 | CONFIG_NETDEVICES=y | 534 | CONFIG_NETDEVICES=y |
448 | CONFIG_DUMMY=m | 535 | CONFIG_DUMMY=m |
449 | CONFIG_BONDING=m | 536 | CONFIG_BONDING=m |
450 | # CONFIG_EQUALIZER is not set | 537 | # CONFIG_EQUALIZER is not set |
451 | CONFIG_TUN=m | 538 | CONFIG_TUN=m |
452 | # CONFIG_ETHERTAP is not set | ||
453 | 539 | ||
454 | # | 540 | # |
455 | # ARCnet devices | 541 | # ARCnet devices |
@@ -457,12 +543,18 @@ CONFIG_TUN=m | |||
457 | # CONFIG_ARCNET is not set | 543 | # CONFIG_ARCNET is not set |
458 | 544 | ||
459 | # | 545 | # |
546 | # PHY device support | ||
547 | # | ||
548 | # CONFIG_PHYLIB is not set | ||
549 | |||
550 | # | ||
460 | # Ethernet (10 or 100Mbit) | 551 | # Ethernet (10 or 100Mbit) |
461 | # | 552 | # |
462 | CONFIG_NET_ETHERNET=y | 553 | CONFIG_NET_ETHERNET=y |
463 | CONFIG_MII=m | 554 | CONFIG_MII=m |
464 | # CONFIG_HAPPYMEAL is not set | 555 | # CONFIG_HAPPYMEAL is not set |
465 | # CONFIG_SUNGEM is not set | 556 | # CONFIG_SUNGEM is not set |
557 | # CONFIG_CASSINI is not set | ||
466 | CONFIG_NET_VENDOR_3COM=y | 558 | CONFIG_NET_VENDOR_3COM=y |
467 | CONFIG_VORTEX=m | 559 | CONFIG_VORTEX=m |
468 | CONFIG_TYPHOON=m | 560 | CONFIG_TYPHOON=m |
@@ -479,6 +571,7 @@ CONFIG_TULIP_MMIO=y | |||
479 | # CONFIG_DE4X5 is not set | 571 | # CONFIG_DE4X5 is not set |
480 | # CONFIG_WINBOND_840 is not set | 572 | # CONFIG_WINBOND_840 is not set |
481 | # CONFIG_DM9102 is not set | 573 | # CONFIG_DM9102 is not set |
574 | # CONFIG_ULI526X is not set | ||
482 | CONFIG_PCMCIA_XIRCOM=m | 575 | CONFIG_PCMCIA_XIRCOM=m |
483 | # CONFIG_PCMCIA_XIRTULIP is not set | 576 | # CONFIG_PCMCIA_XIRTULIP is not set |
484 | CONFIG_HP100=m | 577 | CONFIG_HP100=m |
@@ -489,48 +582,43 @@ CONFIG_PCNET32=m | |||
489 | # CONFIG_B44 is not set | 582 | # CONFIG_B44 is not set |
490 | # CONFIG_FORCEDETH is not set | 583 | # CONFIG_FORCEDETH is not set |
491 | # CONFIG_DGRS is not set | 584 | # CONFIG_DGRS is not set |
492 | CONFIG_EEPRO100=m | 585 | # CONFIG_EEPRO100 is not set |
493 | CONFIG_E100=m | 586 | CONFIG_E100=m |
494 | CONFIG_E100_NAPI=y | ||
495 | # CONFIG_FEALNX is not set | 587 | # CONFIG_FEALNX is not set |
496 | CONFIG_NATSEMI=m | 588 | # CONFIG_NATSEMI is not set |
497 | # CONFIG_NE2K_PCI is not set | 589 | # CONFIG_NE2K_PCI is not set |
498 | # CONFIG_8139CP is not set | 590 | # CONFIG_8139CP is not set |
499 | CONFIG_8139TOO=m | 591 | # CONFIG_8139TOO is not set |
500 | # CONFIG_8139TOO_PIO is not set | ||
501 | # CONFIG_8139TOO_TUNE_TWISTER is not set | ||
502 | # CONFIG_8139TOO_8129 is not set | ||
503 | # CONFIG_8139_OLD_RX_RESET is not set | ||
504 | # CONFIG_SIS900 is not set | 592 | # CONFIG_SIS900 is not set |
505 | CONFIG_EPIC100=m | 593 | # CONFIG_EPIC100 is not set |
506 | # CONFIG_SUNDANCE is not set | 594 | # CONFIG_SUNDANCE is not set |
507 | CONFIG_VIA_RHINE=m | 595 | # CONFIG_VIA_RHINE is not set |
508 | CONFIG_VIA_RHINE_MMIO=y | ||
509 | 596 | ||
510 | # | 597 | # |
511 | # Ethernet (1000 Mbit) | 598 | # Ethernet (1000 Mbit) |
512 | # | 599 | # |
513 | CONFIG_ACENIC=m | 600 | CONFIG_ACENIC=m |
514 | CONFIG_ACENIC_OMIT_TIGON_I=y | 601 | CONFIG_ACENIC_OMIT_TIGON_I=y |
515 | CONFIG_DL2K=m | 602 | # CONFIG_DL2K is not set |
516 | CONFIG_E1000=m | 603 | CONFIG_E1000=m |
517 | CONFIG_E1000_NAPI=y | 604 | CONFIG_E1000_NAPI=y |
518 | # CONFIG_NS83820 is not set | 605 | # CONFIG_NS83820 is not set |
519 | # CONFIG_HAMACHI is not set | 606 | # CONFIG_HAMACHI is not set |
520 | # CONFIG_YELLOWFIN is not set | 607 | # CONFIG_YELLOWFIN is not set |
521 | # CONFIG_R8169 is not set | 608 | # CONFIG_R8169 is not set |
609 | # CONFIG_SIS190 is not set | ||
610 | # CONFIG_SKGE is not set | ||
522 | # CONFIG_SK98LIN is not set | 611 | # CONFIG_SK98LIN is not set |
523 | # CONFIG_VIA_VELOCITY is not set | 612 | # CONFIG_VIA_VELOCITY is not set |
524 | CONFIG_TIGON3=m | 613 | CONFIG_TIGON3=m |
614 | # CONFIG_BNX2 is not set | ||
525 | 615 | ||
526 | # | 616 | # |
527 | # Ethernet (10000 Mbit) | 617 | # Ethernet (10000 Mbit) |
528 | # | 618 | # |
529 | CONFIG_IXGB=m | 619 | # CONFIG_CHELSIO_T1 is not set |
530 | CONFIG_IXGB_NAPI=y | 620 | # CONFIG_IXGB is not set |
531 | CONFIG_S2IO=m | 621 | # CONFIG_S2IO is not set |
532 | CONFIG_S2IO_NAPI=y | ||
533 | # CONFIG_2BUFF_MODE is not set | ||
534 | 622 | ||
535 | # | 623 | # |
536 | # Token Ring devices | 624 | # Token Ring devices |
@@ -560,6 +648,7 @@ CONFIG_PCMCIA_RAYCS=m | |||
560 | CONFIG_HERMES=m | 648 | CONFIG_HERMES=m |
561 | CONFIG_PLX_HERMES=m | 649 | CONFIG_PLX_HERMES=m |
562 | CONFIG_TMD_HERMES=m | 650 | CONFIG_TMD_HERMES=m |
651 | # CONFIG_NORTEL_HERMES is not set | ||
563 | CONFIG_PCI_HERMES=m | 652 | CONFIG_PCI_HERMES=m |
564 | # CONFIG_ATMEL is not set | 653 | # CONFIG_ATMEL is not set |
565 | 654 | ||
@@ -567,6 +656,7 @@ CONFIG_PCI_HERMES=m | |||
567 | # Wireless 802.11b Pcmcia/Cardbus cards support | 656 | # Wireless 802.11b Pcmcia/Cardbus cards support |
568 | # | 657 | # |
569 | CONFIG_PCMCIA_HERMES=m | 658 | CONFIG_PCMCIA_HERMES=m |
659 | # CONFIG_PCMCIA_SPECTRUM is not set | ||
570 | CONFIG_AIRO_CS=m | 660 | CONFIG_AIRO_CS=m |
571 | CONFIG_PCMCIA_WL3501=m | 661 | CONFIG_PCMCIA_WL3501=m |
572 | 662 | ||
@@ -574,6 +664,7 @@ CONFIG_PCMCIA_WL3501=m | |||
574 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | 664 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support |
575 | # | 665 | # |
576 | # CONFIG_PRISM54 is not set | 666 | # CONFIG_PRISM54 is not set |
667 | # CONFIG_HOSTAP is not set | ||
577 | CONFIG_NET_WIRELESS=y | 668 | CONFIG_NET_WIRELESS=y |
578 | 669 | ||
579 | # | 670 | # |
@@ -607,6 +698,8 @@ CONFIG_PPP_BSDCOMP=m | |||
607 | # CONFIG_NET_FC is not set | 698 | # CONFIG_NET_FC is not set |
608 | # CONFIG_SHAPER is not set | 699 | # CONFIG_SHAPER is not set |
609 | # CONFIG_NETCONSOLE is not set | 700 | # CONFIG_NETCONSOLE is not set |
701 | # CONFIG_NETPOLL is not set | ||
702 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
610 | 703 | ||
611 | # | 704 | # |
612 | # ISDN subsystem | 705 | # ISDN subsystem |
@@ -633,13 +726,6 @@ CONFIG_INPUT=y | |||
633 | # CONFIG_INPUT_EVBUG is not set | 726 | # CONFIG_INPUT_EVBUG is not set |
634 | 727 | ||
635 | # | 728 | # |
636 | # Input I/O drivers | ||
637 | # | ||
638 | # CONFIG_GAMEPORT is not set | ||
639 | CONFIG_SOUND_GAMEPORT=y | ||
640 | # CONFIG_SERIO is not set | ||
641 | |||
642 | # | ||
643 | # Input Device Drivers | 729 | # Input Device Drivers |
644 | # | 730 | # |
645 | # CONFIG_INPUT_KEYBOARD is not set | 731 | # CONFIG_INPUT_KEYBOARD is not set |
@@ -649,6 +735,12 @@ CONFIG_SOUND_GAMEPORT=y | |||
649 | # CONFIG_INPUT_MISC is not set | 735 | # CONFIG_INPUT_MISC is not set |
650 | 736 | ||
651 | # | 737 | # |
738 | # Hardware I/O ports | ||
739 | # | ||
740 | # CONFIG_SERIO is not set | ||
741 | # CONFIG_GAMEPORT is not set | ||
742 | |||
743 | # | ||
652 | # Character devices | 744 | # Character devices |
653 | # | 745 | # |
654 | CONFIG_VT=y | 746 | CONFIG_VT=y |
@@ -667,7 +759,6 @@ CONFIG_SERIAL_8250_EXTENDED=y | |||
667 | CONFIG_SERIAL_8250_MANY_PORTS=y | 759 | CONFIG_SERIAL_8250_MANY_PORTS=y |
668 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 760 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
669 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 761 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
670 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
671 | # CONFIG_SERIAL_8250_RSA is not set | 762 | # CONFIG_SERIAL_8250_RSA is not set |
672 | 763 | ||
673 | # | 764 | # |
@@ -677,6 +768,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
677 | CONFIG_PDC_CONSOLE=y | 768 | CONFIG_PDC_CONSOLE=y |
678 | CONFIG_SERIAL_CORE=y | 769 | CONFIG_SERIAL_CORE=y |
679 | CONFIG_SERIAL_CORE_CONSOLE=y | 770 | CONFIG_SERIAL_CORE_CONSOLE=y |
771 | # CONFIG_SERIAL_JSM is not set | ||
680 | CONFIG_UNIX98_PTYS=y | 772 | CONFIG_UNIX98_PTYS=y |
681 | # CONFIG_LEGACY_PTYS is not set | 773 | # CONFIG_LEGACY_PTYS is not set |
682 | 774 | ||
@@ -708,6 +800,11 @@ CONFIG_RAW_DRIVER=y | |||
708 | CONFIG_MAX_RAW_DEVS=256 | 800 | CONFIG_MAX_RAW_DEVS=256 |
709 | 801 | ||
710 | # | 802 | # |
803 | # TPM devices | ||
804 | # | ||
805 | # CONFIG_TCG_TPM is not set | ||
806 | |||
807 | # | ||
711 | # I2C support | 808 | # I2C support |
712 | # | 809 | # |
713 | # CONFIG_I2C is not set | 810 | # CONFIG_I2C is not set |
@@ -718,10 +815,20 @@ CONFIG_MAX_RAW_DEVS=256 | |||
718 | # CONFIG_W1 is not set | 815 | # CONFIG_W1 is not set |
719 | 816 | ||
720 | # | 817 | # |
818 | # Hardware Monitoring support | ||
819 | # | ||
820 | # CONFIG_HWMON is not set | ||
821 | # CONFIG_HWMON_VID is not set | ||
822 | |||
823 | # | ||
721 | # Misc devices | 824 | # Misc devices |
722 | # | 825 | # |
723 | 826 | ||
724 | # | 827 | # |
828 | # Multimedia Capabilities Port drivers | ||
829 | # | ||
830 | |||
831 | # | ||
725 | # Multimedia devices | 832 | # Multimedia devices |
726 | # | 833 | # |
727 | # CONFIG_VIDEO_DEV is not set | 834 | # CONFIG_VIDEO_DEV is not set |
@@ -742,6 +849,7 @@ CONFIG_MAX_RAW_DEVS=256 | |||
742 | CONFIG_DUMMY_CONSOLE=y | 849 | CONFIG_DUMMY_CONSOLE=y |
743 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 850 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
744 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 851 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
852 | # CONFIG_STI_CONSOLE is not set | ||
745 | 853 | ||
746 | # | 854 | # |
747 | # Sound | 855 | # Sound |
@@ -751,13 +859,9 @@ CONFIG_DUMMY_CONSOLE_ROWS=64 | |||
751 | # | 859 | # |
752 | # USB support | 860 | # USB support |
753 | # | 861 | # |
754 | # CONFIG_USB is not set | ||
755 | CONFIG_USB_ARCH_HAS_HCD=y | 862 | CONFIG_USB_ARCH_HAS_HCD=y |
756 | CONFIG_USB_ARCH_HAS_OHCI=y | 863 | CONFIG_USB_ARCH_HAS_OHCI=y |
757 | 864 | # CONFIG_USB is not set | |
758 | # | ||
759 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
760 | # | ||
761 | 865 | ||
762 | # | 866 | # |
763 | # USB Gadget Support | 867 | # USB Gadget Support |
@@ -772,17 +876,18 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
772 | # | 876 | # |
773 | # InfiniBand support | 877 | # InfiniBand support |
774 | # | 878 | # |
775 | CONFIG_INFINIBAND=m | 879 | # CONFIG_INFINIBAND is not set |
776 | CONFIG_INFINIBAND_MTHCA=m | 880 | |
777 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set | 881 | # |
778 | CONFIG_INFINIBAND_IPOIB=m | 882 | # SN Devices |
779 | # CONFIG_INFINIBAND_IPOIB_DEBUG is not set | 883 | # |
780 | 884 | ||
781 | # | 885 | # |
782 | # File systems | 886 | # File systems |
783 | # | 887 | # |
784 | CONFIG_EXT2_FS=y | 888 | CONFIG_EXT2_FS=y |
785 | # CONFIG_EXT2_FS_XATTR is not set | 889 | # CONFIG_EXT2_FS_XATTR is not set |
890 | # CONFIG_EXT2_FS_XIP is not set | ||
786 | CONFIG_EXT3_FS=y | 891 | CONFIG_EXT3_FS=y |
787 | # CONFIG_EXT3_FS_XATTR is not set | 892 | # CONFIG_EXT3_FS_XATTR is not set |
788 | CONFIG_JBD=y | 893 | CONFIG_JBD=y |
@@ -794,22 +899,20 @@ CONFIG_JFS_FS=m | |||
794 | # CONFIG_JFS_DEBUG is not set | 899 | # CONFIG_JFS_DEBUG is not set |
795 | # CONFIG_JFS_STATISTICS is not set | 900 | # CONFIG_JFS_STATISTICS is not set |
796 | CONFIG_FS_POSIX_ACL=y | 901 | CONFIG_FS_POSIX_ACL=y |
797 | |||
798 | # | ||
799 | # XFS support | ||
800 | # | ||
801 | CONFIG_XFS_FS=m | 902 | CONFIG_XFS_FS=m |
802 | CONFIG_XFS_EXPORT=y | 903 | CONFIG_XFS_EXPORT=y |
803 | # CONFIG_XFS_RT is not set | ||
804 | # CONFIG_XFS_QUOTA is not set | 904 | # CONFIG_XFS_QUOTA is not set |
805 | # CONFIG_XFS_SECURITY is not set | 905 | # CONFIG_XFS_SECURITY is not set |
806 | # CONFIG_XFS_POSIX_ACL is not set | 906 | # CONFIG_XFS_POSIX_ACL is not set |
907 | # CONFIG_XFS_RT is not set | ||
807 | # CONFIG_MINIX_FS is not set | 908 | # CONFIG_MINIX_FS is not set |
808 | # CONFIG_ROMFS_FS is not set | 909 | # CONFIG_ROMFS_FS is not set |
910 | CONFIG_INOTIFY=y | ||
809 | # CONFIG_QUOTA is not set | 911 | # CONFIG_QUOTA is not set |
810 | CONFIG_DNOTIFY=y | 912 | CONFIG_DNOTIFY=y |
811 | # CONFIG_AUTOFS_FS is not set | 913 | # CONFIG_AUTOFS_FS is not set |
812 | CONFIG_AUTOFS4_FS=y | 914 | CONFIG_AUTOFS4_FS=y |
915 | # CONFIG_FUSE_FS is not set | ||
813 | 916 | ||
814 | # | 917 | # |
815 | # CD-ROM/DVD Filesystems | 918 | # CD-ROM/DVD Filesystems |
@@ -836,13 +939,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
836 | CONFIG_PROC_FS=y | 939 | CONFIG_PROC_FS=y |
837 | CONFIG_PROC_KCORE=y | 940 | CONFIG_PROC_KCORE=y |
838 | CONFIG_SYSFS=y | 941 | CONFIG_SYSFS=y |
839 | # CONFIG_DEVFS_FS is not set | ||
840 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
841 | CONFIG_TMPFS=y | 942 | CONFIG_TMPFS=y |
842 | # CONFIG_TMPFS_XATTR is not set | ||
843 | # CONFIG_HUGETLBFS is not set | 943 | # CONFIG_HUGETLBFS is not set |
844 | # CONFIG_HUGETLB_PAGE is not set | 944 | # CONFIG_HUGETLB_PAGE is not set |
845 | CONFIG_RAMFS=y | 945 | CONFIG_RAMFS=y |
946 | # CONFIG_RELAYFS_FS is not set | ||
846 | 947 | ||
847 | # | 948 | # |
848 | # Miscellaneous filesystems | 949 | # Miscellaneous filesystems |
@@ -867,15 +968,18 @@ CONFIG_UFS_FS=m | |||
867 | # | 968 | # |
868 | CONFIG_NFS_FS=m | 969 | CONFIG_NFS_FS=m |
869 | CONFIG_NFS_V3=y | 970 | CONFIG_NFS_V3=y |
971 | # CONFIG_NFS_V3_ACL is not set | ||
870 | CONFIG_NFS_V4=y | 972 | CONFIG_NFS_V4=y |
871 | CONFIG_NFS_DIRECTIO=y | 973 | CONFIG_NFS_DIRECTIO=y |
872 | CONFIG_NFSD=m | 974 | CONFIG_NFSD=m |
873 | CONFIG_NFSD_V3=y | 975 | CONFIG_NFSD_V3=y |
976 | # CONFIG_NFSD_V3_ACL is not set | ||
874 | CONFIG_NFSD_V4=y | 977 | CONFIG_NFSD_V4=y |
875 | CONFIG_NFSD_TCP=y | 978 | CONFIG_NFSD_TCP=y |
876 | CONFIG_LOCKD=m | 979 | CONFIG_LOCKD=m |
877 | CONFIG_LOCKD_V4=y | 980 | CONFIG_LOCKD_V4=y |
878 | CONFIG_EXPORTFS=m | 981 | CONFIG_EXPORTFS=m |
982 | CONFIG_NFS_COMMON=y | ||
879 | CONFIG_SUNRPC=m | 983 | CONFIG_SUNRPC=m |
880 | CONFIG_SUNRPC_GSS=m | 984 | CONFIG_SUNRPC_GSS=m |
881 | CONFIG_RPCSEC_GSS_KRB5=m | 985 | CONFIG_RPCSEC_GSS_KRB5=m |
@@ -890,6 +994,7 @@ CONFIG_CIFS=m | |||
890 | # CONFIG_NCP_FS is not set | 994 | # CONFIG_NCP_FS is not set |
891 | # CONFIG_CODA_FS is not set | 995 | # CONFIG_CODA_FS is not set |
892 | # CONFIG_AFS_FS is not set | 996 | # CONFIG_AFS_FS is not set |
997 | # CONFIG_9P_FS is not set | ||
893 | 998 | ||
894 | # | 999 | # |
895 | # Partition Types | 1000 | # Partition Types |
@@ -906,15 +1011,15 @@ CONFIG_NLS_CODEPAGE_437=m | |||
906 | # CONFIG_NLS_CODEPAGE_737 is not set | 1011 | # CONFIG_NLS_CODEPAGE_737 is not set |
907 | # CONFIG_NLS_CODEPAGE_775 is not set | 1012 | # CONFIG_NLS_CODEPAGE_775 is not set |
908 | CONFIG_NLS_CODEPAGE_850=m | 1013 | CONFIG_NLS_CODEPAGE_850=m |
909 | CONFIG_NLS_CODEPAGE_852=m | 1014 | # CONFIG_NLS_CODEPAGE_852 is not set |
910 | # CONFIG_NLS_CODEPAGE_855 is not set | 1015 | # CONFIG_NLS_CODEPAGE_855 is not set |
911 | # CONFIG_NLS_CODEPAGE_857 is not set | 1016 | # CONFIG_NLS_CODEPAGE_857 is not set |
912 | # CONFIG_NLS_CODEPAGE_860 is not set | 1017 | # CONFIG_NLS_CODEPAGE_860 is not set |
913 | # CONFIG_NLS_CODEPAGE_861 is not set | 1018 | # CONFIG_NLS_CODEPAGE_861 is not set |
914 | # CONFIG_NLS_CODEPAGE_862 is not set | 1019 | # CONFIG_NLS_CODEPAGE_862 is not set |
915 | CONFIG_NLS_CODEPAGE_863=m | 1020 | # CONFIG_NLS_CODEPAGE_863 is not set |
916 | # CONFIG_NLS_CODEPAGE_864 is not set | 1021 | # CONFIG_NLS_CODEPAGE_864 is not set |
917 | CONFIG_NLS_CODEPAGE_865=m | 1022 | # CONFIG_NLS_CODEPAGE_865 is not set |
918 | # CONFIG_NLS_CODEPAGE_866 is not set | 1023 | # CONFIG_NLS_CODEPAGE_866 is not set |
919 | # CONFIG_NLS_CODEPAGE_869 is not set | 1024 | # CONFIG_NLS_CODEPAGE_869 is not set |
920 | # CONFIG_NLS_CODEPAGE_936 is not set | 1025 | # CONFIG_NLS_CODEPAGE_936 is not set |
@@ -926,10 +1031,10 @@ CONFIG_NLS_CODEPAGE_865=m | |||
926 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1031 | # CONFIG_NLS_CODEPAGE_1250 is not set |
927 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1032 | # CONFIG_NLS_CODEPAGE_1251 is not set |
928 | # CONFIG_NLS_ASCII is not set | 1033 | # CONFIG_NLS_ASCII is not set |
929 | CONFIG_NLS_ISO8859_1=m | 1034 | # CONFIG_NLS_ISO8859_1 is not set |
930 | CONFIG_NLS_ISO8859_2=m | 1035 | # CONFIG_NLS_ISO8859_2 is not set |
931 | CONFIG_NLS_ISO8859_3=m | 1036 | # CONFIG_NLS_ISO8859_3 is not set |
932 | CONFIG_NLS_ISO8859_4=m | 1037 | # CONFIG_NLS_ISO8859_4 is not set |
933 | # CONFIG_NLS_ISO8859_5 is not set | 1038 | # CONFIG_NLS_ISO8859_5 is not set |
934 | # CONFIG_NLS_ISO8859_6 is not set | 1039 | # CONFIG_NLS_ISO8859_6 is not set |
935 | # CONFIG_NLS_ISO8859_7 is not set | 1040 | # CONFIG_NLS_ISO8859_7 is not set |
@@ -950,11 +1055,15 @@ CONFIG_OPROFILE=m | |||
950 | # | 1055 | # |
951 | # Kernel hacking | 1056 | # Kernel hacking |
952 | # | 1057 | # |
1058 | # CONFIG_PRINTK_TIME is not set | ||
953 | CONFIG_DEBUG_KERNEL=y | 1059 | CONFIG_DEBUG_KERNEL=y |
954 | CONFIG_MAGIC_SYSRQ=y | 1060 | CONFIG_MAGIC_SYSRQ=y |
1061 | CONFIG_LOG_BUF_SHIFT=16 | ||
1062 | CONFIG_DETECT_SOFTLOCKUP=y | ||
955 | # CONFIG_SCHEDSTATS is not set | 1063 | # CONFIG_SCHEDSTATS is not set |
956 | # CONFIG_DEBUG_SLAB is not set | 1064 | # CONFIG_DEBUG_SLAB is not set |
957 | # CONFIG_DEBUG_SPINLOCK is not set | 1065 | # CONFIG_DEBUG_SPINLOCK is not set |
1066 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
958 | # CONFIG_DEBUG_KOBJECT is not set | 1067 | # CONFIG_DEBUG_KOBJECT is not set |
959 | # CONFIG_DEBUG_INFO is not set | 1068 | # CONFIG_DEBUG_INFO is not set |
960 | # CONFIG_DEBUG_IOREMAP is not set | 1069 | # CONFIG_DEBUG_IOREMAP is not set |
@@ -974,25 +1083,26 @@ CONFIG_KEYS_DEBUG_PROC_KEYS=y | |||
974 | CONFIG_CRYPTO=y | 1083 | CONFIG_CRYPTO=y |
975 | CONFIG_CRYPTO_HMAC=y | 1084 | CONFIG_CRYPTO_HMAC=y |
976 | CONFIG_CRYPTO_NULL=m | 1085 | CONFIG_CRYPTO_NULL=m |
977 | CONFIG_CRYPTO_MD4=m | 1086 | # CONFIG_CRYPTO_MD4 is not set |
978 | CONFIG_CRYPTO_MD5=m | 1087 | CONFIG_CRYPTO_MD5=y |
979 | CONFIG_CRYPTO_SHA1=m | 1088 | CONFIG_CRYPTO_SHA1=m |
980 | CONFIG_CRYPTO_SHA256=m | 1089 | # CONFIG_CRYPTO_SHA256 is not set |
981 | CONFIG_CRYPTO_SHA512=m | 1090 | # CONFIG_CRYPTO_SHA512 is not set |
982 | CONFIG_CRYPTO_WP512=m | 1091 | # CONFIG_CRYPTO_WP512 is not set |
1092 | # CONFIG_CRYPTO_TGR192 is not set | ||
983 | CONFIG_CRYPTO_DES=m | 1093 | CONFIG_CRYPTO_DES=m |
984 | CONFIG_CRYPTO_BLOWFISH=m | 1094 | CONFIG_CRYPTO_BLOWFISH=m |
985 | CONFIG_CRYPTO_TWOFISH=m | 1095 | # CONFIG_CRYPTO_TWOFISH is not set |
986 | CONFIG_CRYPTO_SERPENT=m | 1096 | # CONFIG_CRYPTO_SERPENT is not set |
987 | CONFIG_CRYPTO_AES=m | 1097 | # CONFIG_CRYPTO_AES is not set |
988 | CONFIG_CRYPTO_CAST5=m | 1098 | # CONFIG_CRYPTO_CAST5 is not set |
989 | CONFIG_CRYPTO_CAST6=m | 1099 | # CONFIG_CRYPTO_CAST6 is not set |
990 | CONFIG_CRYPTO_TEA=m | 1100 | # CONFIG_CRYPTO_TEA is not set |
991 | CONFIG_CRYPTO_ARC4=m | 1101 | # CONFIG_CRYPTO_ARC4 is not set |
992 | CONFIG_CRYPTO_KHAZAD=m | 1102 | # CONFIG_CRYPTO_KHAZAD is not set |
993 | CONFIG_CRYPTO_ANUBIS=m | 1103 | # CONFIG_CRYPTO_ANUBIS is not set |
994 | CONFIG_CRYPTO_DEFLATE=m | 1104 | CONFIG_CRYPTO_DEFLATE=m |
995 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1105 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
996 | CONFIG_CRYPTO_CRC32C=m | 1106 | CONFIG_CRYPTO_CRC32C=m |
997 | CONFIG_CRYPTO_TEST=m | 1107 | CONFIG_CRYPTO_TEST=m |
998 | 1108 | ||
@@ -1004,6 +1114,7 @@ CONFIG_CRYPTO_TEST=m | |||
1004 | # Library routines | 1114 | # Library routines |
1005 | # | 1115 | # |
1006 | CONFIG_CRC_CCITT=m | 1116 | CONFIG_CRC_CCITT=m |
1117 | # CONFIG_CRC16 is not set | ||
1007 | CONFIG_CRC32=y | 1118 | CONFIG_CRC32=y |
1008 | CONFIG_LIBCRC32C=m | 1119 | CONFIG_LIBCRC32C=m |
1009 | CONFIG_ZLIB_INFLATE=m | 1120 | CONFIG_ZLIB_INFLATE=m |
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig index 46c9511f3229..8819e7e6ae3f 100644 --- a/arch/parisc/configs/b180_defconfig +++ b/arch/parisc/configs/b180_defconfig | |||
@@ -1,12 +1,15 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.10-pa5 | 3 | # Linux kernel version: 2.6.14-rc5-pa1 |
4 | # Wed Jan 5 13:35:54 2005 | 4 | # Fri Oct 21 23:06:10 2005 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
10 | 13 | ||
11 | # | 14 | # |
12 | # Code maturity level options | 15 | # Code maturity level options |
@@ -14,33 +17,39 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
14 | # CONFIG_EXPERIMENTAL is not set | 17 | # CONFIG_EXPERIMENTAL is not set |
15 | CONFIG_CLEAN_COMPILE=y | 18 | CONFIG_CLEAN_COMPILE=y |
16 | CONFIG_BROKEN_ON_SMP=y | 19 | CONFIG_BROKEN_ON_SMP=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
17 | 21 | ||
18 | # | 22 | # |
19 | # General setup | 23 | # General setup |
20 | # | 24 | # |
21 | CONFIG_LOCALVERSION="" | 25 | CONFIG_LOCALVERSION="" |
26 | # CONFIG_LOCALVERSION_AUTO is not set | ||
22 | CONFIG_SWAP=y | 27 | CONFIG_SWAP=y |
23 | CONFIG_SYSVIPC=y | 28 | CONFIG_SYSVIPC=y |
24 | # CONFIG_BSD_PROCESS_ACCT is not set | 29 | # CONFIG_BSD_PROCESS_ACCT is not set |
25 | CONFIG_SYSCTL=y | 30 | CONFIG_SYSCTL=y |
26 | # CONFIG_AUDIT is not set | 31 | # CONFIG_AUDIT is not set |
27 | CONFIG_LOG_BUF_SHIFT=16 | ||
28 | # CONFIG_HOTPLUG is not set | 32 | # CONFIG_HOTPLUG is not set |
29 | CONFIG_KOBJECT_UEVENT=y | 33 | CONFIG_KOBJECT_UEVENT=y |
30 | # CONFIG_IKCONFIG is not set | 34 | CONFIG_IKCONFIG=y |
35 | CONFIG_IKCONFIG_PROC=y | ||
36 | CONFIG_INITRAMFS_SOURCE="" | ||
31 | # CONFIG_EMBEDDED is not set | 37 | # CONFIG_EMBEDDED is not set |
32 | CONFIG_KALLSYMS=y | 38 | CONFIG_KALLSYMS=y |
33 | # CONFIG_KALLSYMS_ALL is not set | 39 | # CONFIG_KALLSYMS_ALL is not set |
34 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 40 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
41 | CONFIG_PRINTK=y | ||
42 | CONFIG_BUG=y | ||
43 | CONFIG_BASE_FULL=y | ||
35 | CONFIG_FUTEX=y | 44 | CONFIG_FUTEX=y |
36 | CONFIG_EPOLL=y | 45 | CONFIG_EPOLL=y |
37 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
38 | CONFIG_SHMEM=y | 46 | CONFIG_SHMEM=y |
39 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 47 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
40 | CONFIG_CC_ALIGN_LABELS=0 | 48 | CONFIG_CC_ALIGN_LABELS=0 |
41 | CONFIG_CC_ALIGN_LOOPS=0 | 49 | CONFIG_CC_ALIGN_LOOPS=0 |
42 | CONFIG_CC_ALIGN_JUMPS=0 | 50 | CONFIG_CC_ALIGN_JUMPS=0 |
43 | # CONFIG_TINY_SHMEM is not set | 51 | # CONFIG_TINY_SHMEM is not set |
52 | CONFIG_BASE_SMALL=0 | ||
44 | 53 | ||
45 | # | 54 | # |
46 | # Loadable module support | 55 | # Loadable module support |
@@ -60,8 +69,14 @@ CONFIG_PA7100LC=y | |||
60 | # CONFIG_PA7300LC is not set | 69 | # CONFIG_PA7300LC is not set |
61 | # CONFIG_PA8X00 is not set | 70 | # CONFIG_PA8X00 is not set |
62 | CONFIG_PA11=y | 71 | CONFIG_PA11=y |
63 | # CONFIG_64BIT is not set | ||
64 | # CONFIG_SMP is not set | 72 | # CONFIG_SMP is not set |
73 | # CONFIG_HZ_100 is not set | ||
74 | CONFIG_HZ_250=y | ||
75 | # CONFIG_HZ_1000 is not set | ||
76 | CONFIG_HZ=250 | ||
77 | CONFIG_FLATMEM=y | ||
78 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
79 | # CONFIG_SPARSEMEM_STATIC is not set | ||
65 | # CONFIG_PREEMPT is not set | 80 | # CONFIG_PREEMPT is not set |
66 | # CONFIG_HPUX is not set | 81 | # CONFIG_HPUX is not set |
67 | 82 | ||
@@ -78,11 +93,25 @@ CONFIG_EISA_NAMES=y | |||
78 | CONFIG_ISA=y | 93 | CONFIG_ISA=y |
79 | CONFIG_PCI=y | 94 | CONFIG_PCI=y |
80 | CONFIG_PCI_LEGACY_PROC=y | 95 | CONFIG_PCI_LEGACY_PROC=y |
81 | CONFIG_PCI_NAMES=y | 96 | # CONFIG_PCI_DEBUG is not set |
82 | CONFIG_GSC_DINO=y | 97 | CONFIG_GSC_DINO=y |
83 | # CONFIG_PCI_LBA is not set | 98 | # CONFIG_PCI_LBA is not set |
99 | |||
100 | # | ||
101 | # PCCARD (PCMCIA/CardBus) support | ||
102 | # | ||
103 | # CONFIG_PCCARD is not set | ||
104 | |||
105 | # | ||
106 | # PCI Hotplug Support | ||
107 | # | ||
108 | |||
109 | # | ||
110 | # PA-RISC specific drivers | ||
111 | # | ||
84 | CONFIG_CHASSIS_LCD_LED=y | 112 | CONFIG_CHASSIS_LCD_LED=y |
85 | # CONFIG_PDC_CHASSIS is not set | 113 | # CONFIG_PDC_CHASSIS is not set |
114 | CONFIG_PDC_STABLE=y | ||
86 | 115 | ||
87 | # | 116 | # |
88 | # Executable file formats | 117 | # Executable file formats |
@@ -91,6 +120,64 @@ CONFIG_BINFMT_ELF=y | |||
91 | # CONFIG_BINFMT_MISC is not set | 120 | # CONFIG_BINFMT_MISC is not set |
92 | 121 | ||
93 | # | 122 | # |
123 | # Networking | ||
124 | # | ||
125 | CONFIG_NET=y | ||
126 | |||
127 | # | ||
128 | # Networking options | ||
129 | # | ||
130 | CONFIG_PACKET=y | ||
131 | CONFIG_PACKET_MMAP=y | ||
132 | CONFIG_UNIX=y | ||
133 | # CONFIG_NET_KEY is not set | ||
134 | CONFIG_INET=y | ||
135 | CONFIG_IP_MULTICAST=y | ||
136 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
137 | CONFIG_IP_FIB_HASH=y | ||
138 | CONFIG_IP_PNP=y | ||
139 | # CONFIG_IP_PNP_DHCP is not set | ||
140 | CONFIG_IP_PNP_BOOTP=y | ||
141 | # CONFIG_IP_PNP_RARP is not set | ||
142 | # CONFIG_NET_IPIP is not set | ||
143 | # CONFIG_NET_IPGRE is not set | ||
144 | # CONFIG_IP_MROUTE is not set | ||
145 | # CONFIG_SYN_COOKIES is not set | ||
146 | # CONFIG_INET_AH is not set | ||
147 | # CONFIG_INET_ESP is not set | ||
148 | # CONFIG_INET_IPCOMP is not set | ||
149 | # CONFIG_INET_TUNNEL is not set | ||
150 | CONFIG_INET_DIAG=y | ||
151 | CONFIG_INET_TCP_DIAG=y | ||
152 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
153 | CONFIG_TCP_CONG_BIC=y | ||
154 | CONFIG_IPV6=y | ||
155 | # CONFIG_IPV6_PRIVACY is not set | ||
156 | # CONFIG_INET6_AH is not set | ||
157 | # CONFIG_INET6_ESP is not set | ||
158 | # CONFIG_INET6_IPCOMP is not set | ||
159 | # CONFIG_INET6_TUNNEL is not set | ||
160 | # CONFIG_IPV6_TUNNEL is not set | ||
161 | # CONFIG_NETFILTER is not set | ||
162 | # CONFIG_BRIDGE is not set | ||
163 | # CONFIG_VLAN_8021Q is not set | ||
164 | # CONFIG_DECNET is not set | ||
165 | # CONFIG_LLC2 is not set | ||
166 | # CONFIG_IPX is not set | ||
167 | # CONFIG_ATALK is not set | ||
168 | # CONFIG_NET_SCHED is not set | ||
169 | # CONFIG_NET_CLS_ROUTE is not set | ||
170 | |||
171 | # | ||
172 | # Network testing | ||
173 | # | ||
174 | # CONFIG_NET_PKTGEN is not set | ||
175 | # CONFIG_HAMRADIO is not set | ||
176 | # CONFIG_IRDA is not set | ||
177 | # CONFIG_BT is not set | ||
178 | # CONFIG_IEEE80211 is not set | ||
179 | |||
180 | # | ||
94 | # Device Drivers | 181 | # Device Drivers |
95 | # | 182 | # |
96 | 183 | ||
@@ -99,9 +186,15 @@ CONFIG_BINFMT_ELF=y | |||
99 | # | 186 | # |
100 | CONFIG_STANDALONE=y | 187 | CONFIG_STANDALONE=y |
101 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 188 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
189 | # CONFIG_FW_LOADER is not set | ||
102 | # CONFIG_DEBUG_DRIVER is not set | 190 | # CONFIG_DEBUG_DRIVER is not set |
103 | 191 | ||
104 | # | 192 | # |
193 | # Connector - unified userspace <-> kernelspace linker | ||
194 | # | ||
195 | # CONFIG_CONNECTOR is not set | ||
196 | |||
197 | # | ||
105 | # Memory Technology Devices (MTD) | 198 | # Memory Technology Devices (MTD) |
106 | # | 199 | # |
107 | # CONFIG_MTD is not set | 200 | # CONFIG_MTD is not set |
@@ -111,10 +204,8 @@ CONFIG_STANDALONE=y | |||
111 | # | 204 | # |
112 | CONFIG_PARPORT=y | 205 | CONFIG_PARPORT=y |
113 | CONFIG_PARPORT_PC=y | 206 | CONFIG_PARPORT_PC=y |
114 | CONFIG_PARPORT_PC_CML1=y | ||
115 | # CONFIG_PARPORT_SERIAL is not set | 207 | # CONFIG_PARPORT_SERIAL is not set |
116 | CONFIG_PARPORT_GSC=y | 208 | CONFIG_PARPORT_GSC=y |
117 | # CONFIG_PARPORT_OTHER is not set | ||
118 | # CONFIG_PARPORT_1284 is not set | 209 | # CONFIG_PARPORT_1284 is not set |
119 | 210 | ||
120 | # | 211 | # |
@@ -125,19 +216,17 @@ CONFIG_PARPORT_GSC=y | |||
125 | # | 216 | # |
126 | # Block devices | 217 | # Block devices |
127 | # | 218 | # |
128 | # CONFIG_BLK_DEV_FD is not set | ||
129 | # CONFIG_BLK_DEV_XD is not set | ||
130 | # CONFIG_PARIDE is not set | 219 | # CONFIG_PARIDE is not set |
131 | # CONFIG_BLK_CPQ_DA is not set | 220 | # CONFIG_BLK_CPQ_DA is not set |
132 | # CONFIG_BLK_CPQ_CISS_DA is not set | 221 | # CONFIG_BLK_CPQ_CISS_DA is not set |
133 | # CONFIG_BLK_DEV_DAC960 is not set | 222 | # CONFIG_BLK_DEV_DAC960 is not set |
223 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
134 | CONFIG_BLK_DEV_LOOP=y | 224 | CONFIG_BLK_DEV_LOOP=y |
135 | CONFIG_BLK_DEV_CRYPTOLOOP=y | 225 | CONFIG_BLK_DEV_CRYPTOLOOP=y |
136 | # CONFIG_BLK_DEV_NBD is not set | 226 | # CONFIG_BLK_DEV_NBD is not set |
137 | # CONFIG_BLK_DEV_SX8 is not set | 227 | # CONFIG_BLK_DEV_SX8 is not set |
138 | # CONFIG_BLK_DEV_RAM is not set | 228 | # CONFIG_BLK_DEV_RAM is not set |
139 | CONFIG_BLK_DEV_RAM_COUNT=16 | 229 | CONFIG_BLK_DEV_RAM_COUNT=16 |
140 | CONFIG_INITRAMFS_SOURCE="" | ||
141 | CONFIG_CDROM_PKTCDVD=m | 230 | CONFIG_CDROM_PKTCDVD=m |
142 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 231 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
143 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | 232 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set |
@@ -149,6 +238,7 @@ CONFIG_IOSCHED_NOOP=y | |||
149 | CONFIG_IOSCHED_AS=y | 238 | CONFIG_IOSCHED_AS=y |
150 | CONFIG_IOSCHED_DEADLINE=y | 239 | CONFIG_IOSCHED_DEADLINE=y |
151 | CONFIG_IOSCHED_CFQ=y | 240 | CONFIG_IOSCHED_CFQ=y |
241 | CONFIG_ATA_OVER_ETH=y | ||
152 | 242 | ||
153 | # | 243 | # |
154 | # ATA/ATAPI/MFM/RLL support | 244 | # ATA/ATAPI/MFM/RLL support |
@@ -158,6 +248,7 @@ CONFIG_IOSCHED_CFQ=y | |||
158 | # | 248 | # |
159 | # SCSI device support | 249 | # SCSI device support |
160 | # | 250 | # |
251 | # CONFIG_RAID_ATTRS is not set | ||
161 | CONFIG_SCSI=y | 252 | CONFIG_SCSI=y |
162 | CONFIG_SCSI_PROC_FS=y | 253 | CONFIG_SCSI_PROC_FS=y |
163 | 254 | ||
@@ -170,6 +261,7 @@ CONFIG_CHR_DEV_ST=y | |||
170 | CONFIG_BLK_DEV_SR=y | 261 | CONFIG_BLK_DEV_SR=y |
171 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 262 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
172 | CONFIG_CHR_DEV_SG=y | 263 | CONFIG_CHR_DEV_SG=y |
264 | # CONFIG_CHR_DEV_SCH is not set | ||
173 | 265 | ||
174 | # | 266 | # |
175 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 267 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -183,16 +275,16 @@ CONFIG_CHR_DEV_SG=y | |||
183 | # | 275 | # |
184 | CONFIG_SCSI_SPI_ATTRS=y | 276 | CONFIG_SCSI_SPI_ATTRS=y |
185 | # CONFIG_SCSI_FC_ATTRS is not set | 277 | # CONFIG_SCSI_FC_ATTRS is not set |
278 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
279 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
186 | 280 | ||
187 | # | 281 | # |
188 | # SCSI low-level drivers | 282 | # SCSI low-level drivers |
189 | # | 283 | # |
190 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 284 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
191 | # CONFIG_SCSI_3W_9XXX is not set | 285 | # CONFIG_SCSI_3W_9XXX is not set |
192 | # CONFIG_SCSI_7000FASST is not set | ||
193 | # CONFIG_SCSI_ACARD is not set | 286 | # CONFIG_SCSI_ACARD is not set |
194 | # CONFIG_SCSI_AHA152X is not set | 287 | # CONFIG_SCSI_AHA152X is not set |
195 | # CONFIG_SCSI_AHA1542 is not set | ||
196 | # CONFIG_SCSI_AHA1740 is not set | 288 | # CONFIG_SCSI_AHA1740 is not set |
197 | # CONFIG_SCSI_AACRAID is not set | 289 | # CONFIG_SCSI_AACRAID is not set |
198 | # CONFIG_SCSI_AIC7XXX is not set | 290 | # CONFIG_SCSI_AIC7XXX is not set |
@@ -202,14 +294,11 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
202 | # CONFIG_SCSI_IN2000 is not set | 294 | # CONFIG_SCSI_IN2000 is not set |
203 | # CONFIG_MEGARAID_NEWGEN is not set | 295 | # CONFIG_MEGARAID_NEWGEN is not set |
204 | # CONFIG_MEGARAID_LEGACY is not set | 296 | # CONFIG_MEGARAID_LEGACY is not set |
297 | # CONFIG_MEGARAID_SAS is not set | ||
205 | # CONFIG_SCSI_SATA is not set | 298 | # CONFIG_SCSI_SATA is not set |
206 | # CONFIG_SCSI_BUSLOGIC is not set | ||
207 | # CONFIG_SCSI_DMX3191D is not set | 299 | # CONFIG_SCSI_DMX3191D is not set |
208 | # CONFIG_SCSI_DTC3280 is not set | 300 | # CONFIG_SCSI_DTC3280 is not set |
209 | # CONFIG_SCSI_EATA is not set | ||
210 | # CONFIG_SCSI_EATA_PIO is not set | ||
211 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 301 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
212 | # CONFIG_SCSI_GDTH is not set | ||
213 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | 302 | # CONFIG_SCSI_GENERIC_NCR5380 is not set |
214 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | 303 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set |
215 | # CONFIG_SCSI_IPS is not set | 304 | # CONFIG_SCSI_IPS is not set |
@@ -219,7 +308,6 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
219 | # CONFIG_SCSI_IMM is not set | 308 | # CONFIG_SCSI_IMM is not set |
220 | # CONFIG_SCSI_NCR53C406A is not set | 309 | # CONFIG_SCSI_NCR53C406A is not set |
221 | CONFIG_SCSI_LASI700=y | 310 | CONFIG_SCSI_LASI700=y |
222 | CONFIG_53C700_MEM_MAPPED=y | ||
223 | CONFIG_53C700_LE_ON_BE=y | 311 | CONFIG_53C700_LE_ON_BE=y |
224 | CONFIG_SCSI_SYM53C8XX_2=y | 312 | CONFIG_SCSI_SYM53C8XX_2=y |
225 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 313 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
@@ -231,7 +319,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | |||
231 | # CONFIG_SCSI_PAS16 is not set | 319 | # CONFIG_SCSI_PAS16 is not set |
232 | # CONFIG_SCSI_PSI240I is not set | 320 | # CONFIG_SCSI_PSI240I is not set |
233 | # CONFIG_SCSI_QLOGIC_FAS is not set | 321 | # CONFIG_SCSI_QLOGIC_FAS is not set |
234 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
235 | # CONFIG_SCSI_QLOGIC_FC is not set | 322 | # CONFIG_SCSI_QLOGIC_FC is not set |
236 | # CONFIG_SCSI_QLOGIC_1280 is not set | 323 | # CONFIG_SCSI_QLOGIC_1280 is not set |
237 | CONFIG_SCSI_QLA2XXX=y | 324 | CONFIG_SCSI_QLA2XXX=y |
@@ -240,12 +327,12 @@ CONFIG_SCSI_QLA2XXX=y | |||
240 | # CONFIG_SCSI_QLA2300 is not set | 327 | # CONFIG_SCSI_QLA2300 is not set |
241 | # CONFIG_SCSI_QLA2322 is not set | 328 | # CONFIG_SCSI_QLA2322 is not set |
242 | # CONFIG_SCSI_QLA6312 is not set | 329 | # CONFIG_SCSI_QLA6312 is not set |
243 | # CONFIG_SCSI_QLA6322 is not set | 330 | # CONFIG_SCSI_QLA24XX is not set |
331 | # CONFIG_SCSI_LPFC is not set | ||
244 | # CONFIG_SCSI_SIM710 is not set | 332 | # CONFIG_SCSI_SIM710 is not set |
245 | # CONFIG_SCSI_SYM53C416 is not set | 333 | # CONFIG_SCSI_SYM53C416 is not set |
246 | # CONFIG_SCSI_DC390T is not set | 334 | # CONFIG_SCSI_DC390T is not set |
247 | # CONFIG_SCSI_T128 is not set | 335 | # CONFIG_SCSI_T128 is not set |
248 | # CONFIG_SCSI_U14_34F is not set | ||
249 | # CONFIG_SCSI_NSP32 is not set | 336 | # CONFIG_SCSI_NSP32 is not set |
250 | # CONFIG_SCSI_DEBUG is not set | 337 | # CONFIG_SCSI_DEBUG is not set |
251 | 338 | ||
@@ -263,6 +350,7 @@ CONFIG_MD_LINEAR=y | |||
263 | CONFIG_MD_RAID0=y | 350 | CONFIG_MD_RAID0=y |
264 | CONFIG_MD_RAID1=y | 351 | CONFIG_MD_RAID1=y |
265 | CONFIG_MD_RAID5=y | 352 | CONFIG_MD_RAID5=y |
353 | CONFIG_MD_RAID6=y | ||
266 | # CONFIG_MD_MULTIPATH is not set | 354 | # CONFIG_MD_MULTIPATH is not set |
267 | # CONFIG_MD_FAULTY is not set | 355 | # CONFIG_MD_FAULTY is not set |
268 | # CONFIG_BLK_DEV_DM is not set | 356 | # CONFIG_BLK_DEV_DM is not set |
@@ -271,6 +359,9 @@ CONFIG_MD_RAID5=y | |||
271 | # Fusion MPT device support | 359 | # Fusion MPT device support |
272 | # | 360 | # |
273 | # CONFIG_FUSION is not set | 361 | # CONFIG_FUSION is not set |
362 | # CONFIG_FUSION_SPI is not set | ||
363 | # CONFIG_FUSION_FC is not set | ||
364 | # CONFIG_FUSION_SAS is not set | ||
274 | 365 | ||
275 | # | 366 | # |
276 | # IEEE 1394 (FireWire) support | 367 | # IEEE 1394 (FireWire) support |
@@ -283,58 +374,8 @@ CONFIG_MD_RAID5=y | |||
283 | # CONFIG_I2O is not set | 374 | # CONFIG_I2O is not set |
284 | 375 | ||
285 | # | 376 | # |
286 | # Networking support | 377 | # Network device support |
287 | # | ||
288 | CONFIG_NET=y | ||
289 | |||
290 | # | ||
291 | # Networking options | ||
292 | # | ||
293 | CONFIG_PACKET=y | ||
294 | CONFIG_PACKET_MMAP=y | ||
295 | CONFIG_NETLINK_DEV=y | ||
296 | CONFIG_UNIX=y | ||
297 | # CONFIG_NET_KEY is not set | ||
298 | CONFIG_INET=y | ||
299 | CONFIG_IP_MULTICAST=y | ||
300 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
301 | CONFIG_IP_PNP=y | ||
302 | # CONFIG_IP_PNP_DHCP is not set | ||
303 | CONFIG_IP_PNP_BOOTP=y | ||
304 | # CONFIG_IP_PNP_RARP is not set | ||
305 | # CONFIG_NET_IPIP is not set | ||
306 | # CONFIG_NET_IPGRE is not set | ||
307 | # CONFIG_IP_MROUTE is not set | ||
308 | # CONFIG_SYN_COOKIES is not set | ||
309 | # CONFIG_INET_AH is not set | ||
310 | # CONFIG_INET_ESP is not set | ||
311 | # CONFIG_INET_IPCOMP is not set | ||
312 | # CONFIG_INET_TUNNEL is not set | ||
313 | CONFIG_IP_TCPDIAG=y | ||
314 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
315 | # CONFIG_NETFILTER is not set | ||
316 | # CONFIG_BRIDGE is not set | ||
317 | # CONFIG_VLAN_8021Q is not set | ||
318 | # CONFIG_DECNET is not set | ||
319 | # CONFIG_LLC2 is not set | ||
320 | # CONFIG_IPX is not set | ||
321 | # CONFIG_ATALK is not set | ||
322 | |||
323 | # | ||
324 | # QoS and/or fair queueing | ||
325 | # | ||
326 | # CONFIG_NET_SCHED is not set | ||
327 | # CONFIG_NET_CLS_ROUTE is not set | ||
328 | |||
329 | # | ||
330 | # Network testing | ||
331 | # | 378 | # |
332 | # CONFIG_NET_PKTGEN is not set | ||
333 | # CONFIG_NETPOLL is not set | ||
334 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
335 | # CONFIG_HAMRADIO is not set | ||
336 | # CONFIG_IRDA is not set | ||
337 | # CONFIG_BT is not set | ||
338 | CONFIG_NETDEVICES=y | 379 | CONFIG_NETDEVICES=y |
339 | # CONFIG_DUMMY is not set | 380 | # CONFIG_DUMMY is not set |
340 | # CONFIG_BONDING is not set | 381 | # CONFIG_BONDING is not set |
@@ -347,6 +388,11 @@ CONFIG_NETDEVICES=y | |||
347 | # CONFIG_ARCNET is not set | 388 | # CONFIG_ARCNET is not set |
348 | 389 | ||
349 | # | 390 | # |
391 | # PHY device support | ||
392 | # | ||
393 | # CONFIG_PHYLIB is not set | ||
394 | |||
395 | # | ||
350 | # Ethernet (10 or 100Mbit) | 396 | # Ethernet (10 or 100Mbit) |
351 | # | 397 | # |
352 | CONFIG_NET_ETHERNET=y | 398 | CONFIG_NET_ETHERNET=y |
@@ -354,8 +400,8 @@ CONFIG_NET_ETHERNET=y | |||
354 | # CONFIG_LASI_82596 is not set | 400 | # CONFIG_LASI_82596 is not set |
355 | # CONFIG_HAPPYMEAL is not set | 401 | # CONFIG_HAPPYMEAL is not set |
356 | # CONFIG_SUNGEM is not set | 402 | # CONFIG_SUNGEM is not set |
403 | # CONFIG_CASSINI is not set | ||
357 | # CONFIG_NET_VENDOR_3COM is not set | 404 | # CONFIG_NET_VENDOR_3COM is not set |
358 | # CONFIG_LANCE is not set | ||
359 | # CONFIG_NET_VENDOR_SMC is not set | 405 | # CONFIG_NET_VENDOR_SMC is not set |
360 | # CONFIG_NET_VENDOR_RACAL is not set | 406 | # CONFIG_NET_VENDOR_RACAL is not set |
361 | 407 | ||
@@ -369,6 +415,7 @@ CONFIG_TULIP=y | |||
369 | # CONFIG_DE4X5 is not set | 415 | # CONFIG_DE4X5 is not set |
370 | # CONFIG_WINBOND_840 is not set | 416 | # CONFIG_WINBOND_840 is not set |
371 | # CONFIG_DM9102 is not set | 417 | # CONFIG_DM9102 is not set |
418 | # CONFIG_ULI526X is not set | ||
372 | # CONFIG_DEPCA is not set | 419 | # CONFIG_DEPCA is not set |
373 | # CONFIG_HP100 is not set | 420 | # CONFIG_HP100 is not set |
374 | # CONFIG_NET_ISA is not set | 421 | # CONFIG_NET_ISA is not set |
@@ -384,12 +431,15 @@ CONFIG_TULIP=y | |||
384 | # CONFIG_NS83820 is not set | 431 | # CONFIG_NS83820 is not set |
385 | # CONFIG_HAMACHI is not set | 432 | # CONFIG_HAMACHI is not set |
386 | # CONFIG_R8169 is not set | 433 | # CONFIG_R8169 is not set |
434 | # CONFIG_SIS190 is not set | ||
387 | # CONFIG_SK98LIN is not set | 435 | # CONFIG_SK98LIN is not set |
388 | # CONFIG_TIGON3 is not set | 436 | # CONFIG_TIGON3 is not set |
437 | # CONFIG_BNX2 is not set | ||
389 | 438 | ||
390 | # | 439 | # |
391 | # Ethernet (10000 Mbit) | 440 | # Ethernet (10000 Mbit) |
392 | # | 441 | # |
442 | # CONFIG_CHELSIO_T1 is not set | ||
393 | # CONFIG_IXGB is not set | 443 | # CONFIG_IXGB is not set |
394 | # CONFIG_S2IO is not set | 444 | # CONFIG_S2IO is not set |
395 | 445 | ||
@@ -413,12 +463,12 @@ CONFIG_NET_RADIO=y | |||
413 | # | 463 | # |
414 | # Wireless 802.11b ISA/PCI cards support | 464 | # Wireless 802.11b ISA/PCI cards support |
415 | # | 465 | # |
416 | # CONFIG_AIRO is not set | ||
417 | # CONFIG_HERMES is not set | 466 | # CONFIG_HERMES is not set |
418 | 467 | ||
419 | # | 468 | # |
420 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support | 469 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support |
421 | # | 470 | # |
471 | # CONFIG_HOSTAP is not set | ||
422 | CONFIG_NET_WIRELESS=y | 472 | CONFIG_NET_WIRELESS=y |
423 | 473 | ||
424 | # | 474 | # |
@@ -435,6 +485,8 @@ CONFIG_PPP=y | |||
435 | # CONFIG_PPP_BSDCOMP is not set | 485 | # CONFIG_PPP_BSDCOMP is not set |
436 | # CONFIG_SLIP is not set | 486 | # CONFIG_SLIP is not set |
437 | # CONFIG_NET_FC is not set | 487 | # CONFIG_NET_FC is not set |
488 | # CONFIG_NETPOLL is not set | ||
489 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
438 | 490 | ||
439 | # | 491 | # |
440 | # ISDN subsystem | 492 | # ISDN subsystem |
@@ -464,23 +516,12 @@ CONFIG_INPUT_EVDEV=y | |||
464 | # CONFIG_INPUT_EVBUG is not set | 516 | # CONFIG_INPUT_EVBUG is not set |
465 | 517 | ||
466 | # | 518 | # |
467 | # Input I/O drivers | ||
468 | # | ||
469 | # CONFIG_GAMEPORT is not set | ||
470 | CONFIG_SOUND_GAMEPORT=y | ||
471 | CONFIG_SERIO=y | ||
472 | # CONFIG_SERIO_SERPORT is not set | ||
473 | # CONFIG_SERIO_PARKBD is not set | ||
474 | CONFIG_SERIO_GSCPS2=y | ||
475 | # CONFIG_HP_SDC is not set | ||
476 | # CONFIG_SERIO_PCIPS2 is not set | ||
477 | # CONFIG_SERIO_RAW is not set | ||
478 | |||
479 | # | ||
480 | # Input Device Drivers | 519 | # Input Device Drivers |
481 | # | 520 | # |
482 | CONFIG_INPUT_KEYBOARD=y | 521 | CONFIG_INPUT_KEYBOARD=y |
483 | # CONFIG_KEYBOARD_ATKBD is not set | 522 | CONFIG_KEYBOARD_ATKBD=y |
523 | CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y | ||
524 | # CONFIG_KEYBOARD_ATKBD_RDI_KEYCODES is not set | ||
484 | # CONFIG_KEYBOARD_SUNKBD is not set | 525 | # CONFIG_KEYBOARD_SUNKBD is not set |
485 | # CONFIG_KEYBOARD_LKKBD is not set | 526 | # CONFIG_KEYBOARD_LKKBD is not set |
486 | # CONFIG_KEYBOARD_XTKBD is not set | 527 | # CONFIG_KEYBOARD_XTKBD is not set |
@@ -488,7 +529,7 @@ CONFIG_INPUT_KEYBOARD=y | |||
488 | # CONFIG_KEYBOARD_HIL_OLD is not set | 529 | # CONFIG_KEYBOARD_HIL_OLD is not set |
489 | # CONFIG_KEYBOARD_HIL is not set | 530 | # CONFIG_KEYBOARD_HIL is not set |
490 | CONFIG_INPUT_MOUSE=y | 531 | CONFIG_INPUT_MOUSE=y |
491 | # CONFIG_MOUSE_PS2 is not set | 532 | CONFIG_MOUSE_PS2=y |
492 | # CONFIG_MOUSE_SERIAL is not set | 533 | # CONFIG_MOUSE_SERIAL is not set |
493 | # CONFIG_MOUSE_INPORT is not set | 534 | # CONFIG_MOUSE_INPORT is not set |
494 | # CONFIG_MOUSE_LOGIBM is not set | 535 | # CONFIG_MOUSE_LOGIBM is not set |
@@ -502,6 +543,19 @@ CONFIG_INPUT_MISC=y | |||
502 | # CONFIG_HP_SDC_RTC is not set | 543 | # CONFIG_HP_SDC_RTC is not set |
503 | 544 | ||
504 | # | 545 | # |
546 | # Hardware I/O ports | ||
547 | # | ||
548 | CONFIG_SERIO=y | ||
549 | # CONFIG_SERIO_SERPORT is not set | ||
550 | # CONFIG_SERIO_PARKBD is not set | ||
551 | CONFIG_SERIO_GSCPS2=y | ||
552 | # CONFIG_HP_SDC is not set | ||
553 | # CONFIG_SERIO_PCIPS2 is not set | ||
554 | CONFIG_SERIO_LIBPS2=y | ||
555 | # CONFIG_SERIO_RAW is not set | ||
556 | # CONFIG_GAMEPORT is not set | ||
557 | |||
558 | # | ||
505 | # Character devices | 559 | # Character devices |
506 | # | 560 | # |
507 | CONFIG_VT=y | 561 | CONFIG_VT=y |
@@ -519,8 +573,11 @@ CONFIG_SERIAL_8250_EXTENDED=y | |||
519 | CONFIG_SERIAL_8250_MANY_PORTS=y | 573 | CONFIG_SERIAL_8250_MANY_PORTS=y |
520 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 574 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
521 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 575 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
522 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
523 | # CONFIG_SERIAL_8250_RSA is not set | 576 | # CONFIG_SERIAL_8250_RSA is not set |
577 | # CONFIG_SERIAL_8250_FOURPORT is not set | ||
578 | # CONFIG_SERIAL_8250_ACCENT is not set | ||
579 | # CONFIG_SERIAL_8250_BOCA is not set | ||
580 | # CONFIG_SERIAL_8250_HUB6 is not set | ||
524 | 581 | ||
525 | # | 582 | # |
526 | # Non-8250 serial port support | 583 | # Non-8250 serial port support |
@@ -529,6 +586,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
529 | # CONFIG_PDC_CONSOLE is not set | 586 | # CONFIG_PDC_CONSOLE is not set |
530 | CONFIG_SERIAL_CORE=y | 587 | CONFIG_SERIAL_CORE=y |
531 | CONFIG_SERIAL_CORE_CONSOLE=y | 588 | CONFIG_SERIAL_CORE_CONSOLE=y |
589 | # CONFIG_SERIAL_JSM is not set | ||
532 | CONFIG_UNIX98_PTYS=y | 590 | CONFIG_UNIX98_PTYS=y |
533 | CONFIG_LEGACY_PTYS=y | 591 | CONFIG_LEGACY_PTYS=y |
534 | CONFIG_LEGACY_PTY_COUNT=256 | 592 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -555,11 +613,14 @@ CONFIG_GEN_RTC=y | |||
555 | # | 613 | # |
556 | # Ftape, the floppy tape device driver | 614 | # Ftape, the floppy tape device driver |
557 | # | 615 | # |
558 | # CONFIG_AGP is not set | ||
559 | # CONFIG_DRM is not set | 616 | # CONFIG_DRM is not set |
560 | # CONFIG_RAW_DRIVER is not set | 617 | # CONFIG_RAW_DRIVER is not set |
561 | 618 | ||
562 | # | 619 | # |
620 | # TPM devices | ||
621 | # | ||
622 | |||
623 | # | ||
563 | # I2C support | 624 | # I2C support |
564 | # | 625 | # |
565 | # CONFIG_I2C is not set | 626 | # CONFIG_I2C is not set |
@@ -570,10 +631,20 @@ CONFIG_GEN_RTC=y | |||
570 | # CONFIG_W1 is not set | 631 | # CONFIG_W1 is not set |
571 | 632 | ||
572 | # | 633 | # |
634 | # Hardware Monitoring support | ||
635 | # | ||
636 | # CONFIG_HWMON is not set | ||
637 | # CONFIG_HWMON_VID is not set | ||
638 | |||
639 | # | ||
573 | # Misc devices | 640 | # Misc devices |
574 | # | 641 | # |
575 | 642 | ||
576 | # | 643 | # |
644 | # Multimedia Capabilities Port drivers | ||
645 | # | ||
646 | |||
647 | # | ||
577 | # Multimedia devices | 648 | # Multimedia devices |
578 | # | 649 | # |
579 | # CONFIG_VIDEO_DEV is not set | 650 | # CONFIG_VIDEO_DEV is not set |
@@ -587,6 +658,11 @@ CONFIG_GEN_RTC=y | |||
587 | # Graphics support | 658 | # Graphics support |
588 | # | 659 | # |
589 | CONFIG_FB=y | 660 | CONFIG_FB=y |
661 | CONFIG_FB_CFB_FILLRECT=y | ||
662 | CONFIG_FB_CFB_COPYAREA=y | ||
663 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
664 | CONFIG_FB_SOFT_CURSOR=y | ||
665 | # CONFIG_FB_MACMODES is not set | ||
590 | # CONFIG_FB_MODE_HELPERS is not set | 666 | # CONFIG_FB_MODE_HELPERS is not set |
591 | # CONFIG_FB_TILEBLITTING is not set | 667 | # CONFIG_FB_TILEBLITTING is not set |
592 | # CONFIG_FB_CIRRUS is not set | 668 | # CONFIG_FB_CIRRUS is not set |
@@ -595,6 +671,7 @@ CONFIG_FB=y | |||
595 | # CONFIG_FB_ASILIANT is not set | 671 | # CONFIG_FB_ASILIANT is not set |
596 | # CONFIG_FB_IMSTT is not set | 672 | # CONFIG_FB_IMSTT is not set |
597 | CONFIG_FB_STI=y | 673 | CONFIG_FB_STI=y |
674 | # CONFIG_FB_NVIDIA is not set | ||
598 | # CONFIG_FB_RIVA is not set | 675 | # CONFIG_FB_RIVA is not set |
599 | # CONFIG_FB_MATROX is not set | 676 | # CONFIG_FB_MATROX is not set |
600 | # CONFIG_FB_RADEON_OLD is not set | 677 | # CONFIG_FB_RADEON_OLD is not set |
@@ -606,18 +683,19 @@ CONFIG_FB_STI=y | |||
606 | # CONFIG_FB_KYRO is not set | 683 | # CONFIG_FB_KYRO is not set |
607 | # CONFIG_FB_3DFX is not set | 684 | # CONFIG_FB_3DFX is not set |
608 | # CONFIG_FB_VOODOO1 is not set | 685 | # CONFIG_FB_VOODOO1 is not set |
686 | # CONFIG_FB_CYBLA is not set | ||
609 | # CONFIG_FB_TRIDENT is not set | 687 | # CONFIG_FB_TRIDENT is not set |
688 | # CONFIG_FB_S1D13XXX is not set | ||
610 | # CONFIG_FB_VIRTUAL is not set | 689 | # CONFIG_FB_VIRTUAL is not set |
611 | 690 | ||
612 | # | 691 | # |
613 | # Console display driver support | 692 | # Console display driver support |
614 | # | 693 | # |
615 | # CONFIG_MDA_CONSOLE is not set | 694 | CONFIG_DUMMY_CONSOLE=y |
616 | CONFIG_STI_CONSOLE=y | ||
617 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 695 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
618 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 696 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
619 | CONFIG_DUMMY_CONSOLE=y | ||
620 | CONFIG_FRAMEBUFFER_CONSOLE=y | 697 | CONFIG_FRAMEBUFFER_CONSOLE=y |
698 | CONFIG_STI_CONSOLE=y | ||
621 | # CONFIG_FONTS is not set | 699 | # CONFIG_FONTS is not set |
622 | CONFIG_FONT_8x8=y | 700 | CONFIG_FONT_8x8=y |
623 | CONFIG_FONT_8x16=y | 701 | CONFIG_FONT_8x16=y |
@@ -630,6 +708,7 @@ CONFIG_LOGO_LINUX_MONO=y | |||
630 | CONFIG_LOGO_LINUX_VGA16=y | 708 | CONFIG_LOGO_LINUX_VGA16=y |
631 | CONFIG_LOGO_LINUX_CLUT224=y | 709 | CONFIG_LOGO_LINUX_CLUT224=y |
632 | CONFIG_LOGO_PARISC_CLUT224=y | 710 | CONFIG_LOGO_PARISC_CLUT224=y |
711 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
633 | 712 | ||
634 | # | 713 | # |
635 | # Sound | 714 | # Sound |
@@ -639,13 +718,9 @@ CONFIG_LOGO_PARISC_CLUT224=y | |||
639 | # | 718 | # |
640 | # USB support | 719 | # USB support |
641 | # | 720 | # |
642 | # CONFIG_USB is not set | ||
643 | CONFIG_USB_ARCH_HAS_HCD=y | 721 | CONFIG_USB_ARCH_HAS_HCD=y |
644 | CONFIG_USB_ARCH_HAS_OHCI=y | 722 | CONFIG_USB_ARCH_HAS_OHCI=y |
645 | 723 | # CONFIG_USB is not set | |
646 | # | ||
647 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
648 | # | ||
649 | 724 | ||
650 | # | 725 | # |
651 | # USB Gadget Support | 726 | # USB Gadget Support |
@@ -658,23 +733,36 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
658 | # CONFIG_MMC is not set | 733 | # CONFIG_MMC is not set |
659 | 734 | ||
660 | # | 735 | # |
736 | # InfiniBand support | ||
737 | # | ||
738 | # CONFIG_INFINIBAND is not set | ||
739 | |||
740 | # | ||
741 | # SN Devices | ||
742 | # | ||
743 | |||
744 | # | ||
661 | # File systems | 745 | # File systems |
662 | # | 746 | # |
663 | CONFIG_EXT2_FS=y | 747 | CONFIG_EXT2_FS=y |
664 | # CONFIG_EXT2_FS_XATTR is not set | 748 | # CONFIG_EXT2_FS_XATTR is not set |
749 | # CONFIG_EXT2_FS_XIP is not set | ||
665 | CONFIG_EXT3_FS=y | 750 | CONFIG_EXT3_FS=y |
666 | # CONFIG_EXT3_FS_XATTR is not set | 751 | # CONFIG_EXT3_FS_XATTR is not set |
667 | CONFIG_JBD=y | 752 | CONFIG_JBD=y |
668 | # CONFIG_JBD_DEBUG is not set | 753 | # CONFIG_JBD_DEBUG is not set |
669 | # CONFIG_REISERFS_FS is not set | 754 | # CONFIG_REISERFS_FS is not set |
670 | # CONFIG_JFS_FS is not set | 755 | # CONFIG_JFS_FS is not set |
756 | # CONFIG_FS_POSIX_ACL is not set | ||
671 | # CONFIG_XFS_FS is not set | 757 | # CONFIG_XFS_FS is not set |
672 | # CONFIG_MINIX_FS is not set | 758 | # CONFIG_MINIX_FS is not set |
673 | # CONFIG_ROMFS_FS is not set | 759 | # CONFIG_ROMFS_FS is not set |
760 | CONFIG_INOTIFY=y | ||
674 | # CONFIG_QUOTA is not set | 761 | # CONFIG_QUOTA is not set |
675 | CONFIG_DNOTIFY=y | 762 | CONFIG_DNOTIFY=y |
676 | # CONFIG_AUTOFS_FS is not set | 763 | # CONFIG_AUTOFS_FS is not set |
677 | CONFIG_AUTOFS4_FS=y | 764 | CONFIG_AUTOFS4_FS=y |
765 | # CONFIG_FUSE_FS is not set | ||
678 | 766 | ||
679 | # | 767 | # |
680 | # CD-ROM/DVD Filesystems | 768 | # CD-ROM/DVD Filesystems |
@@ -697,11 +785,10 @@ CONFIG_JOLIET=y | |||
697 | CONFIG_PROC_FS=y | 785 | CONFIG_PROC_FS=y |
698 | CONFIG_PROC_KCORE=y | 786 | CONFIG_PROC_KCORE=y |
699 | CONFIG_SYSFS=y | 787 | CONFIG_SYSFS=y |
700 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
701 | CONFIG_TMPFS=y | 788 | CONFIG_TMPFS=y |
702 | # CONFIG_TMPFS_XATTR is not set | ||
703 | # CONFIG_HUGETLB_PAGE is not set | 789 | # CONFIG_HUGETLB_PAGE is not set |
704 | CONFIG_RAMFS=y | 790 | CONFIG_RAMFS=y |
791 | # CONFIG_RELAYFS_FS is not set | ||
705 | 792 | ||
706 | # | 793 | # |
707 | # Miscellaneous filesystems | 794 | # Miscellaneous filesystems |
@@ -719,15 +806,19 @@ CONFIG_RAMFS=y | |||
719 | # | 806 | # |
720 | CONFIG_NFS_FS=y | 807 | CONFIG_NFS_FS=y |
721 | CONFIG_NFS_V3=y | 808 | CONFIG_NFS_V3=y |
809 | # CONFIG_NFS_V3_ACL is not set | ||
722 | CONFIG_NFSD=y | 810 | CONFIG_NFSD=y |
723 | CONFIG_NFSD_V3=y | 811 | CONFIG_NFSD_V3=y |
812 | # CONFIG_NFSD_V3_ACL is not set | ||
724 | CONFIG_NFSD_TCP=y | 813 | CONFIG_NFSD_TCP=y |
725 | CONFIG_ROOT_NFS=y | 814 | CONFIG_ROOT_NFS=y |
726 | CONFIG_LOCKD=y | 815 | CONFIG_LOCKD=y |
727 | CONFIG_LOCKD_V4=y | 816 | CONFIG_LOCKD_V4=y |
728 | CONFIG_EXPORTFS=y | 817 | CONFIG_EXPORTFS=y |
818 | CONFIG_NFS_COMMON=y | ||
729 | CONFIG_SUNRPC=y | 819 | CONFIG_SUNRPC=y |
730 | # CONFIG_SMB_FS is not set | 820 | CONFIG_SMB_FS=y |
821 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
731 | # CONFIG_CIFS is not set | 822 | # CONFIG_CIFS is not set |
732 | # CONFIG_NCP_FS is not set | 823 | # CONFIG_NCP_FS is not set |
733 | # CONFIG_CODA_FS is not set | 824 | # CONFIG_CODA_FS is not set |
@@ -785,13 +876,19 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
785 | # | 876 | # |
786 | # Kernel hacking | 877 | # Kernel hacking |
787 | # | 878 | # |
879 | # CONFIG_PRINTK_TIME is not set | ||
788 | CONFIG_DEBUG_KERNEL=y | 880 | CONFIG_DEBUG_KERNEL=y |
789 | CONFIG_MAGIC_SYSRQ=y | 881 | CONFIG_MAGIC_SYSRQ=y |
882 | CONFIG_LOG_BUF_SHIFT=16 | ||
883 | CONFIG_DETECT_SOFTLOCKUP=y | ||
790 | # CONFIG_SCHEDSTATS is not set | 884 | # CONFIG_SCHEDSTATS is not set |
791 | # CONFIG_DEBUG_SLAB is not set | 885 | # CONFIG_DEBUG_SLAB is not set |
792 | # CONFIG_DEBUG_SPINLOCK is not set | 886 | # CONFIG_DEBUG_SPINLOCK is not set |
887 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
793 | # CONFIG_DEBUG_KOBJECT is not set | 888 | # CONFIG_DEBUG_KOBJECT is not set |
794 | # CONFIG_DEBUG_INFO is not set | 889 | # CONFIG_DEBUG_INFO is not set |
890 | # CONFIG_DEBUG_IOREMAP is not set | ||
891 | # CONFIG_DEBUG_FS is not set | ||
795 | 892 | ||
796 | # | 893 | # |
797 | # Security options | 894 | # Security options |
@@ -815,6 +912,7 @@ CONFIG_CRYPTO=y | |||
815 | # CONFIG_CRYPTO_SHA256 is not set | 912 | # CONFIG_CRYPTO_SHA256 is not set |
816 | # CONFIG_CRYPTO_SHA512 is not set | 913 | # CONFIG_CRYPTO_SHA512 is not set |
817 | # CONFIG_CRYPTO_WP512 is not set | 914 | # CONFIG_CRYPTO_WP512 is not set |
915 | # CONFIG_CRYPTO_TGR192 is not set | ||
818 | # CONFIG_CRYPTO_DES is not set | 916 | # CONFIG_CRYPTO_DES is not set |
819 | # CONFIG_CRYPTO_BLOWFISH is not set | 917 | # CONFIG_CRYPTO_BLOWFISH is not set |
820 | # CONFIG_CRYPTO_TWOFISH is not set | 918 | # CONFIG_CRYPTO_TWOFISH is not set |
@@ -832,8 +930,13 @@ CONFIG_CRYPTO=y | |||
832 | # CONFIG_CRYPTO_TEST is not set | 930 | # CONFIG_CRYPTO_TEST is not set |
833 | 931 | ||
834 | # | 932 | # |
933 | # Hardware crypto devices | ||
934 | # | ||
935 | |||
936 | # | ||
835 | # Library routines | 937 | # Library routines |
836 | # | 938 | # |
837 | # CONFIG_CRC_CCITT is not set | 939 | # CONFIG_CRC_CCITT is not set |
940 | # CONFIG_CRC16 is not set | ||
838 | CONFIG_CRC32=y | 941 | CONFIG_CRC32=y |
839 | # CONFIG_LIBCRC32C is not set | 942 | # CONFIG_LIBCRC32C is not set |
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig index 67aca6ccc9b0..9d86b6b1ebd1 100644 --- a/arch/parisc/configs/c3000_defconfig +++ b/arch/parisc/configs/c3000_defconfig | |||
@@ -1,12 +1,16 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.10-pa5 | 3 | # Linux kernel version: 2.6.14-rc5-pa1 |
4 | # Wed Jan 5 13:26:49 2005 | 4 | # Fri Oct 21 23:06:31 2005 |
5 | # | 5 | # |
6 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
8 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
13 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
10 | 14 | ||
11 | # | 15 | # |
12 | # Code maturity level options | 16 | # Code maturity level options |
@@ -15,26 +19,31 @@ CONFIG_EXPERIMENTAL=y | |||
15 | # CONFIG_CLEAN_COMPILE is not set | 19 | # CONFIG_CLEAN_COMPILE is not set |
16 | CONFIG_BROKEN=y | 20 | CONFIG_BROKEN=y |
17 | CONFIG_BROKEN_ON_SMP=y | 21 | CONFIG_BROKEN_ON_SMP=y |
22 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
18 | 23 | ||
19 | # | 24 | # |
20 | # General setup | 25 | # General setup |
21 | # | 26 | # |
22 | CONFIG_LOCALVERSION="" | 27 | CONFIG_LOCALVERSION="" |
28 | # CONFIG_LOCALVERSION_AUTO is not set | ||
23 | CONFIG_SWAP=y | 29 | CONFIG_SWAP=y |
24 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
25 | # CONFIG_POSIX_MQUEUE is not set | 31 | # CONFIG_POSIX_MQUEUE is not set |
26 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
27 | CONFIG_SYSCTL=y | 33 | CONFIG_SYSCTL=y |
28 | # CONFIG_AUDIT is not set | 34 | # CONFIG_AUDIT is not set |
29 | CONFIG_LOG_BUF_SHIFT=16 | ||
30 | CONFIG_HOTPLUG=y | 35 | CONFIG_HOTPLUG=y |
31 | CONFIG_KOBJECT_UEVENT=y | 36 | CONFIG_KOBJECT_UEVENT=y |
32 | CONFIG_IKCONFIG=y | 37 | CONFIG_IKCONFIG=y |
33 | CONFIG_IKCONFIG_PROC=y | 38 | CONFIG_IKCONFIG_PROC=y |
39 | CONFIG_INITRAMFS_SOURCE="" | ||
34 | CONFIG_EMBEDDED=y | 40 | CONFIG_EMBEDDED=y |
35 | CONFIG_KALLSYMS=y | 41 | CONFIG_KALLSYMS=y |
36 | CONFIG_KALLSYMS_ALL=y | 42 | CONFIG_KALLSYMS_ALL=y |
37 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
44 | CONFIG_PRINTK=y | ||
45 | CONFIG_BUG=y | ||
46 | CONFIG_BASE_FULL=y | ||
38 | CONFIG_FUTEX=y | 47 | CONFIG_FUTEX=y |
39 | CONFIG_EPOLL=y | 48 | CONFIG_EPOLL=y |
40 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 49 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -44,6 +53,7 @@ CONFIG_CC_ALIGN_LABELS=0 | |||
44 | CONFIG_CC_ALIGN_LOOPS=0 | 53 | CONFIG_CC_ALIGN_LOOPS=0 |
45 | CONFIG_CC_ALIGN_JUMPS=0 | 54 | CONFIG_CC_ALIGN_JUMPS=0 |
46 | # CONFIG_TINY_SHMEM is not set | 55 | # CONFIG_TINY_SHMEM is not set |
56 | CONFIG_BASE_SMALL=0 | ||
47 | 57 | ||
48 | # | 58 | # |
49 | # Loadable module support | 59 | # Loadable module support |
@@ -66,10 +76,19 @@ CONFIG_KMOD=y | |||
66 | CONFIG_PA8X00=y | 76 | CONFIG_PA8X00=y |
67 | CONFIG_PA20=y | 77 | CONFIG_PA20=y |
68 | CONFIG_PREFETCH=y | 78 | CONFIG_PREFETCH=y |
69 | # CONFIG_PARISC64 is not set | ||
70 | # CONFIG_64BIT is not set | 79 | # CONFIG_64BIT is not set |
71 | # CONFIG_SMP is not set | 80 | # CONFIG_SMP is not set |
72 | # CONFIG_DISCONTIGMEM is not set | 81 | # CONFIG_HZ_100 is not set |
82 | CONFIG_HZ_250=y | ||
83 | # CONFIG_HZ_1000 is not set | ||
84 | CONFIG_HZ=250 | ||
85 | CONFIG_SELECT_MEMORY_MODEL=y | ||
86 | CONFIG_FLATMEM_MANUAL=y | ||
87 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
88 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
89 | CONFIG_FLATMEM=y | ||
90 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
91 | # CONFIG_SPARSEMEM_STATIC is not set | ||
73 | # CONFIG_PREEMPT is not set | 92 | # CONFIG_PREEMPT is not set |
74 | # CONFIG_HPUX is not set | 93 | # CONFIG_HPUX is not set |
75 | 94 | ||
@@ -79,13 +98,10 @@ CONFIG_PREFETCH=y | |||
79 | # CONFIG_GSC is not set | 98 | # CONFIG_GSC is not set |
80 | CONFIG_PCI=y | 99 | CONFIG_PCI=y |
81 | CONFIG_PCI_LEGACY_PROC=y | 100 | CONFIG_PCI_LEGACY_PROC=y |
82 | CONFIG_PCI_NAMES=y | 101 | # CONFIG_PCI_DEBUG is not set |
83 | CONFIG_PCI_LBA=y | 102 | CONFIG_PCI_LBA=y |
84 | CONFIG_IOSAPIC=y | 103 | CONFIG_IOSAPIC=y |
85 | CONFIG_IOMMU_SBA=y | 104 | CONFIG_IOMMU_SBA=y |
86 | CONFIG_SUPERIO=y | ||
87 | CONFIG_CHASSIS_LCD_LED=y | ||
88 | # CONFIG_PDC_CHASSIS is not set | ||
89 | 105 | ||
90 | # | 106 | # |
91 | # PCCARD (PCMCIA/CardBus) support | 107 | # PCCARD (PCMCIA/CardBus) support |
@@ -93,13 +109,17 @@ CONFIG_CHASSIS_LCD_LED=y | |||
93 | # CONFIG_PCCARD is not set | 109 | # CONFIG_PCCARD is not set |
94 | 110 | ||
95 | # | 111 | # |
96 | # PC-card bridges | 112 | # PCI Hotplug Support |
97 | # | 113 | # |
114 | # CONFIG_HOTPLUG_PCI is not set | ||
98 | 115 | ||
99 | # | 116 | # |
100 | # PCI Hotplug Support | 117 | # PA-RISC specific drivers |
101 | # | 118 | # |
102 | # CONFIG_HOTPLUG_PCI is not set | 119 | CONFIG_SUPERIO=y |
120 | CONFIG_CHASSIS_LCD_LED=y | ||
121 | # CONFIG_PDC_CHASSIS is not set | ||
122 | CONFIG_PDC_STABLE=y | ||
103 | 123 | ||
104 | # | 124 | # |
105 | # Executable file formats | 125 | # Executable file formats |
@@ -108,6 +128,186 @@ CONFIG_BINFMT_ELF=y | |||
108 | # CONFIG_BINFMT_MISC is not set | 128 | # CONFIG_BINFMT_MISC is not set |
109 | 129 | ||
110 | # | 130 | # |
131 | # Networking | ||
132 | # | ||
133 | CONFIG_NET=y | ||
134 | |||
135 | # | ||
136 | # Networking options | ||
137 | # | ||
138 | CONFIG_PACKET=y | ||
139 | CONFIG_PACKET_MMAP=y | ||
140 | CONFIG_UNIX=y | ||
141 | CONFIG_XFRM=y | ||
142 | CONFIG_XFRM_USER=m | ||
143 | CONFIG_NET_KEY=m | ||
144 | CONFIG_INET=y | ||
145 | CONFIG_IP_MULTICAST=y | ||
146 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
147 | CONFIG_IP_FIB_HASH=y | ||
148 | CONFIG_IP_PNP=y | ||
149 | # CONFIG_IP_PNP_DHCP is not set | ||
150 | CONFIG_IP_PNP_BOOTP=y | ||
151 | # CONFIG_IP_PNP_RARP is not set | ||
152 | # CONFIG_NET_IPIP is not set | ||
153 | # CONFIG_NET_IPGRE is not set | ||
154 | # CONFIG_IP_MROUTE is not set | ||
155 | # CONFIG_ARPD is not set | ||
156 | # CONFIG_SYN_COOKIES is not set | ||
157 | # CONFIG_INET_AH is not set | ||
158 | # CONFIG_INET_ESP is not set | ||
159 | # CONFIG_INET_IPCOMP is not set | ||
160 | # CONFIG_INET_TUNNEL is not set | ||
161 | # CONFIG_INET_DIAG is not set | ||
162 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
163 | CONFIG_TCP_CONG_BIC=y | ||
164 | |||
165 | # | ||
166 | # IP: Virtual Server Configuration | ||
167 | # | ||
168 | # CONFIG_IP_VS is not set | ||
169 | CONFIG_IPV6=m | ||
170 | # CONFIG_IPV6_PRIVACY is not set | ||
171 | # CONFIG_INET6_AH is not set | ||
172 | # CONFIG_INET6_ESP is not set | ||
173 | CONFIG_INET6_IPCOMP=m | ||
174 | CONFIG_INET6_TUNNEL=m | ||
175 | CONFIG_IPV6_TUNNEL=m | ||
176 | CONFIG_NETFILTER=y | ||
177 | CONFIG_NETFILTER_DEBUG=y | ||
178 | # CONFIG_NETFILTER_NETLINK is not set | ||
179 | |||
180 | # | ||
181 | # IP: Netfilter Configuration | ||
182 | # | ||
183 | CONFIG_IP_NF_CONNTRACK=m | ||
184 | # CONFIG_IP_NF_CT_ACCT is not set | ||
185 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
186 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
187 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
188 | CONFIG_IP_NF_FTP=m | ||
189 | CONFIG_IP_NF_IRC=m | ||
190 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
191 | CONFIG_IP_NF_TFTP=m | ||
192 | CONFIG_IP_NF_AMANDA=m | ||
193 | # CONFIG_IP_NF_PPTP is not set | ||
194 | CONFIG_IP_NF_QUEUE=m | ||
195 | CONFIG_IP_NF_IPTABLES=m | ||
196 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
197 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
198 | CONFIG_IP_NF_MATCH_MAC=m | ||
199 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
200 | CONFIG_IP_NF_MATCH_MARK=m | ||
201 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
202 | CONFIG_IP_NF_MATCH_TOS=m | ||
203 | CONFIG_IP_NF_MATCH_RECENT=m | ||
204 | CONFIG_IP_NF_MATCH_ECN=m | ||
205 | CONFIG_IP_NF_MATCH_DSCP=m | ||
206 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
207 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
208 | CONFIG_IP_NF_MATCH_TTL=m | ||
209 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
210 | CONFIG_IP_NF_MATCH_HELPER=m | ||
211 | CONFIG_IP_NF_MATCH_STATE=m | ||
212 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
213 | CONFIG_IP_NF_MATCH_OWNER=m | ||
214 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
215 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
216 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
217 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
218 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
219 | # CONFIG_IP_NF_MATCH_HASHLIMIT is not set | ||
220 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
221 | CONFIG_IP_NF_FILTER=m | ||
222 | CONFIG_IP_NF_TARGET_REJECT=m | ||
223 | CONFIG_IP_NF_TARGET_LOG=m | ||
224 | CONFIG_IP_NF_TARGET_ULOG=m | ||
225 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
226 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
227 | CONFIG_IP_NF_NAT=m | ||
228 | CONFIG_IP_NF_NAT_NEEDED=y | ||
229 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
230 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
231 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
232 | CONFIG_IP_NF_TARGET_SAME=m | ||
233 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
234 | CONFIG_IP_NF_NAT_IRC=m | ||
235 | CONFIG_IP_NF_NAT_FTP=m | ||
236 | CONFIG_IP_NF_NAT_TFTP=m | ||
237 | CONFIG_IP_NF_NAT_AMANDA=m | ||
238 | CONFIG_IP_NF_MANGLE=m | ||
239 | CONFIG_IP_NF_TARGET_TOS=m | ||
240 | CONFIG_IP_NF_TARGET_ECN=m | ||
241 | CONFIG_IP_NF_TARGET_DSCP=m | ||
242 | CONFIG_IP_NF_TARGET_MARK=m | ||
243 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
244 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
245 | # CONFIG_IP_NF_RAW is not set | ||
246 | CONFIG_IP_NF_ARPTABLES=m | ||
247 | CONFIG_IP_NF_ARPFILTER=m | ||
248 | CONFIG_IP_NF_ARP_MANGLE=m | ||
249 | |||
250 | # | ||
251 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
252 | # | ||
253 | # CONFIG_IP6_NF_QUEUE is not set | ||
254 | CONFIG_IP6_NF_IPTABLES=m | ||
255 | # CONFIG_IP6_NF_MATCH_LIMIT is not set | ||
256 | CONFIG_IP6_NF_MATCH_MAC=m | ||
257 | CONFIG_IP6_NF_MATCH_RT=m | ||
258 | # CONFIG_IP6_NF_MATCH_OPTS is not set | ||
259 | # CONFIG_IP6_NF_MATCH_FRAG is not set | ||
260 | # CONFIG_IP6_NF_MATCH_HL is not set | ||
261 | # CONFIG_IP6_NF_MATCH_MULTIPORT is not set | ||
262 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
263 | # CONFIG_IP6_NF_MATCH_MARK is not set | ||
264 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
265 | # CONFIG_IP6_NF_MATCH_AHESP is not set | ||
266 | CONFIG_IP6_NF_MATCH_LENGTH=m | ||
267 | # CONFIG_IP6_NF_MATCH_EUI64 is not set | ||
268 | CONFIG_IP6_NF_FILTER=m | ||
269 | CONFIG_IP6_NF_TARGET_LOG=m | ||
270 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
271 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
272 | CONFIG_IP6_NF_MANGLE=m | ||
273 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
274 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
275 | # CONFIG_IP6_NF_RAW is not set | ||
276 | |||
277 | # | ||
278 | # DCCP Configuration (EXPERIMENTAL) | ||
279 | # | ||
280 | # CONFIG_IP_DCCP is not set | ||
281 | |||
282 | # | ||
283 | # SCTP Configuration (EXPERIMENTAL) | ||
284 | # | ||
285 | # CONFIG_IP_SCTP is not set | ||
286 | # CONFIG_ATM is not set | ||
287 | # CONFIG_BRIDGE is not set | ||
288 | # CONFIG_VLAN_8021Q is not set | ||
289 | # CONFIG_DECNET is not set | ||
290 | # CONFIG_LLC2 is not set | ||
291 | # CONFIG_IPX is not set | ||
292 | # CONFIG_ATALK is not set | ||
293 | # CONFIG_X25 is not set | ||
294 | # CONFIG_LAPB is not set | ||
295 | # CONFIG_NET_DIVERT is not set | ||
296 | # CONFIG_ECONET is not set | ||
297 | # CONFIG_WAN_ROUTER is not set | ||
298 | # CONFIG_NET_SCHED is not set | ||
299 | # CONFIG_NET_CLS_ROUTE is not set | ||
300 | |||
301 | # | ||
302 | # Network testing | ||
303 | # | ||
304 | CONFIG_NET_PKTGEN=m | ||
305 | # CONFIG_HAMRADIO is not set | ||
306 | # CONFIG_IRDA is not set | ||
307 | # CONFIG_BT is not set | ||
308 | # CONFIG_IEEE80211 is not set | ||
309 | |||
310 | # | ||
111 | # Device Drivers | 311 | # Device Drivers |
112 | # | 312 | # |
113 | 313 | ||
@@ -120,6 +320,11 @@ CONFIG_FW_LOADER=y | |||
120 | # CONFIG_DEBUG_DRIVER is not set | 320 | # CONFIG_DEBUG_DRIVER is not set |
121 | 321 | ||
122 | # | 322 | # |
323 | # Connector - unified userspace <-> kernelspace linker | ||
324 | # | ||
325 | # CONFIG_CONNECTOR is not set | ||
326 | |||
327 | # | ||
123 | # Memory Technology Devices (MTD) | 328 | # Memory Technology Devices (MTD) |
124 | # | 329 | # |
125 | # CONFIG_MTD is not set | 330 | # CONFIG_MTD is not set |
@@ -141,14 +346,14 @@ CONFIG_FW_LOADER=y | |||
141 | # CONFIG_BLK_CPQ_CISS_DA is not set | 346 | # CONFIG_BLK_CPQ_CISS_DA is not set |
142 | # CONFIG_BLK_DEV_DAC960 is not set | 347 | # CONFIG_BLK_DEV_DAC960 is not set |
143 | CONFIG_BLK_DEV_UMEM=m | 348 | CONFIG_BLK_DEV_UMEM=m |
349 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
144 | CONFIG_BLK_DEV_LOOP=y | 350 | CONFIG_BLK_DEV_LOOP=y |
145 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 351 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
146 | # CONFIG_BLK_DEV_NBD is not set | 352 | # CONFIG_BLK_DEV_NBD is not set |
147 | # CONFIG_BLK_DEV_SX8 is not set | 353 | # CONFIG_BLK_DEV_SX8 is not set |
148 | # CONFIG_BLK_DEV_UB is not set | 354 | # CONFIG_BLK_DEV_UB is not set |
149 | # CONFIG_BLK_DEV_RAM is not set | 355 | # CONFIG_BLK_DEV_RAM is not set |
150 | CONFIG_BLK_DEV_RAM_COUNT=16 | 356 | CONFIG_BLK_DEV_RAM_COUNT=16 |
151 | CONFIG_INITRAMFS_SOURCE="" | ||
152 | # CONFIG_CDROM_PKTCDVD is not set | 357 | # CONFIG_CDROM_PKTCDVD is not set |
153 | 358 | ||
154 | # | 359 | # |
@@ -158,6 +363,7 @@ CONFIG_IOSCHED_NOOP=y | |||
158 | CONFIG_IOSCHED_AS=y | 363 | CONFIG_IOSCHED_AS=y |
159 | CONFIG_IOSCHED_DEADLINE=y | 364 | CONFIG_IOSCHED_DEADLINE=y |
160 | CONFIG_IOSCHED_CFQ=y | 365 | CONFIG_IOSCHED_CFQ=y |
366 | # CONFIG_ATA_OVER_ETH is not set | ||
161 | 367 | ||
162 | # | 368 | # |
163 | # ATA/ATAPI/MFM/RLL support | 369 | # ATA/ATAPI/MFM/RLL support |
@@ -201,6 +407,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
201 | # CONFIG_BLK_DEV_HPT366 is not set | 407 | # CONFIG_BLK_DEV_HPT366 is not set |
202 | # CONFIG_BLK_DEV_SC1200 is not set | 408 | # CONFIG_BLK_DEV_SC1200 is not set |
203 | # CONFIG_BLK_DEV_PIIX is not set | 409 | # CONFIG_BLK_DEV_PIIX is not set |
410 | # CONFIG_BLK_DEV_IT821X is not set | ||
204 | CONFIG_BLK_DEV_NS87415=y | 411 | CONFIG_BLK_DEV_NS87415=y |
205 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 412 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
206 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 413 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
@@ -218,6 +425,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
218 | # | 425 | # |
219 | # SCSI device support | 426 | # SCSI device support |
220 | # | 427 | # |
428 | # CONFIG_RAID_ATTRS is not set | ||
221 | CONFIG_SCSI=y | 429 | CONFIG_SCSI=y |
222 | CONFIG_SCSI_PROC_FS=y | 430 | CONFIG_SCSI_PROC_FS=y |
223 | 431 | ||
@@ -230,6 +438,7 @@ CONFIG_CHR_DEV_ST=y | |||
230 | CONFIG_BLK_DEV_SR=y | 438 | CONFIG_BLK_DEV_SR=y |
231 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 439 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
232 | CONFIG_CHR_DEV_SG=y | 440 | CONFIG_CHR_DEV_SG=y |
441 | # CONFIG_CHR_DEV_SCH is not set | ||
233 | 442 | ||
234 | # | 443 | # |
235 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 444 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
@@ -242,7 +451,9 @@ CONFIG_SCSI_MULTI_LUN=y | |||
242 | # SCSI Transport Attributes | 451 | # SCSI Transport Attributes |
243 | # | 452 | # |
244 | CONFIG_SCSI_SPI_ATTRS=y | 453 | CONFIG_SCSI_SPI_ATTRS=y |
245 | CONFIG_SCSI_FC_ATTRS=m | 454 | # CONFIG_SCSI_FC_ATTRS is not set |
455 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
456 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
246 | 457 | ||
247 | # | 458 | # |
248 | # SCSI low-level drivers | 459 | # SCSI low-level drivers |
@@ -258,25 +469,26 @@ CONFIG_SCSI_FC_ATTRS=m | |||
258 | # CONFIG_SCSI_ADVANSYS is not set | 469 | # CONFIG_SCSI_ADVANSYS is not set |
259 | # CONFIG_MEGARAID_NEWGEN is not set | 470 | # CONFIG_MEGARAID_NEWGEN is not set |
260 | # CONFIG_MEGARAID_LEGACY is not set | 471 | # CONFIG_MEGARAID_LEGACY is not set |
472 | # CONFIG_MEGARAID_SAS is not set | ||
261 | CONFIG_SCSI_SATA=y | 473 | CONFIG_SCSI_SATA=y |
262 | # CONFIG_SCSI_SATA_AHCI is not set | 474 | # CONFIG_SCSI_SATA_AHCI is not set |
263 | # CONFIG_SCSI_SATA_SVW is not set | 475 | # CONFIG_SCSI_SATA_SVW is not set |
264 | CONFIG_SCSI_ATA_PIIX=m | 476 | CONFIG_SCSI_ATA_PIIX=m |
477 | # CONFIG_SCSI_SATA_MV is not set | ||
265 | # CONFIG_SCSI_SATA_NV is not set | 478 | # CONFIG_SCSI_SATA_NV is not set |
266 | CONFIG_SCSI_SATA_PROMISE=m | 479 | CONFIG_SCSI_SATA_PROMISE=m |
480 | # CONFIG_SCSI_SATA_QSTOR is not set | ||
267 | # CONFIG_SCSI_SATA_SX4 is not set | 481 | # CONFIG_SCSI_SATA_SX4 is not set |
268 | CONFIG_SCSI_SATA_SIL=m | 482 | CONFIG_SCSI_SATA_SIL=m |
269 | # CONFIG_SCSI_SATA_SIS is not set | 483 | # CONFIG_SCSI_SATA_SIS is not set |
270 | # CONFIG_SCSI_SATA_ULI is not set | 484 | # CONFIG_SCSI_SATA_ULI is not set |
271 | CONFIG_SCSI_SATA_VIA=m | 485 | CONFIG_SCSI_SATA_VIA=m |
272 | # CONFIG_SCSI_SATA_VITESSE is not set | 486 | # CONFIG_SCSI_SATA_VITESSE is not set |
273 | # CONFIG_SCSI_BUSLOGIC is not set | 487 | CONFIG_SCSI_SATA_INTEL_COMBINED=y |
274 | # CONFIG_SCSI_CPQFCTS is not set | 488 | # CONFIG_SCSI_CPQFCTS is not set |
275 | # CONFIG_SCSI_DMX3191D is not set | 489 | # CONFIG_SCSI_DMX3191D is not set |
276 | # CONFIG_SCSI_EATA is not set | ||
277 | # CONFIG_SCSI_EATA_PIO is not set | 490 | # CONFIG_SCSI_EATA_PIO is not set |
278 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 491 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
279 | # CONFIG_SCSI_GDTH is not set | ||
280 | # CONFIG_SCSI_IPS is not set | 492 | # CONFIG_SCSI_IPS is not set |
281 | # CONFIG_SCSI_INITIO is not set | 493 | # CONFIG_SCSI_INITIO is not set |
282 | # CONFIG_SCSI_INIA100 is not set | 494 | # CONFIG_SCSI_INIA100 is not set |
@@ -286,20 +498,17 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | |||
286 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 498 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
287 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 499 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set |
288 | # CONFIG_SCSI_IPR is not set | 500 | # CONFIG_SCSI_IPR is not set |
289 | # CONFIG_SCSI_PCI2000 is not set | ||
290 | # CONFIG_SCSI_PCI2220I is not set | ||
291 | # CONFIG_SCSI_QLOGIC_ISP is not set | 501 | # CONFIG_SCSI_QLOGIC_ISP is not set |
292 | CONFIG_SCSI_QLOGIC_FC=m | 502 | # CONFIG_SCSI_QLOGIC_FC is not set |
293 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | 503 | # CONFIG_SCSI_QLOGIC_1280 is not set |
294 | CONFIG_SCSI_QLOGIC_1280=m | ||
295 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | ||
296 | CONFIG_SCSI_QLA2XXX=y | 504 | CONFIG_SCSI_QLA2XXX=y |
297 | # CONFIG_SCSI_QLA21XX is not set | 505 | # CONFIG_SCSI_QLA21XX is not set |
298 | # CONFIG_SCSI_QLA22XX is not set | 506 | # CONFIG_SCSI_QLA22XX is not set |
299 | CONFIG_SCSI_QLA2300=m | 507 | # CONFIG_SCSI_QLA2300 is not set |
300 | CONFIG_SCSI_QLA2322=m | 508 | # CONFIG_SCSI_QLA2322 is not set |
301 | CONFIG_SCSI_QLA6312=m | 509 | # CONFIG_SCSI_QLA6312 is not set |
302 | CONFIG_SCSI_QLA6322=m | 510 | # CONFIG_SCSI_QLA24XX is not set |
511 | # CONFIG_SCSI_LPFC is not set | ||
303 | # CONFIG_SCSI_DC395x is not set | 512 | # CONFIG_SCSI_DC395x is not set |
304 | # CONFIG_SCSI_DC390T is not set | 513 | # CONFIG_SCSI_DC390T is not set |
305 | # CONFIG_SCSI_NSP32 is not set | 514 | # CONFIG_SCSI_NSP32 is not set |
@@ -316,19 +525,24 @@ CONFIG_MD_RAID1=y | |||
316 | # CONFIG_MD_RAID10 is not set | 525 | # CONFIG_MD_RAID10 is not set |
317 | # CONFIG_MD_RAID5 is not set | 526 | # CONFIG_MD_RAID5 is not set |
318 | # CONFIG_MD_RAID6 is not set | 527 | # CONFIG_MD_RAID6 is not set |
319 | CONFIG_MD_MULTIPATH=y | 528 | # CONFIG_MD_MULTIPATH is not set |
320 | # CONFIG_MD_FAULTY is not set | 529 | # CONFIG_MD_FAULTY is not set |
321 | CONFIG_BLK_DEV_DM=y | 530 | CONFIG_BLK_DEV_DM=m |
322 | # CONFIG_DM_CRYPT is not set | 531 | CONFIG_DM_CRYPT=m |
323 | # CONFIG_DM_SNAPSHOT is not set | 532 | CONFIG_DM_SNAPSHOT=m |
324 | # CONFIG_DM_MIRROR is not set | 533 | CONFIG_DM_MIRROR=m |
325 | # CONFIG_DM_ZERO is not set | 534 | CONFIG_DM_ZERO=m |
535 | CONFIG_DM_MULTIPATH=m | ||
536 | # CONFIG_DM_MULTIPATH_EMC is not set | ||
326 | 537 | ||
327 | # | 538 | # |
328 | # Fusion MPT device support | 539 | # Fusion MPT device support |
329 | # | 540 | # |
330 | CONFIG_FUSION=m | 541 | CONFIG_FUSION=y |
331 | CONFIG_FUSION_MAX_SGE=40 | 542 | CONFIG_FUSION_SPI=m |
543 | # CONFIG_FUSION_FC is not set | ||
544 | # CONFIG_FUSION_SAS is not set | ||
545 | CONFIG_FUSION_MAX_SGE=128 | ||
332 | CONFIG_FUSION_CTL=m | 546 | CONFIG_FUSION_CTL=m |
333 | 547 | ||
334 | # | 548 | # |
@@ -342,151 +556,13 @@ CONFIG_FUSION_CTL=m | |||
342 | # CONFIG_I2O is not set | 556 | # CONFIG_I2O is not set |
343 | 557 | ||
344 | # | 558 | # |
345 | # Networking support | 559 | # Network device support |
346 | # | ||
347 | CONFIG_NET=y | ||
348 | |||
349 | # | ||
350 | # Networking options | ||
351 | # | ||
352 | CONFIG_PACKET=y | ||
353 | CONFIG_PACKET_MMAP=y | ||
354 | CONFIG_NETLINK_DEV=y | ||
355 | CONFIG_UNIX=y | ||
356 | CONFIG_NET_KEY=m | ||
357 | CONFIG_INET=y | ||
358 | CONFIG_IP_MULTICAST=y | ||
359 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
360 | CONFIG_IP_PNP=y | ||
361 | # CONFIG_IP_PNP_DHCP is not set | ||
362 | CONFIG_IP_PNP_BOOTP=y | ||
363 | # CONFIG_IP_PNP_RARP is not set | ||
364 | # CONFIG_NET_IPIP is not set | ||
365 | # CONFIG_NET_IPGRE is not set | ||
366 | # CONFIG_IP_MROUTE is not set | ||
367 | # CONFIG_ARPD is not set | ||
368 | # CONFIG_SYN_COOKIES is not set | ||
369 | CONFIG_INET_AH=m | ||
370 | CONFIG_INET_ESP=m | ||
371 | # CONFIG_INET_IPCOMP is not set | ||
372 | # CONFIG_INET_TUNNEL is not set | ||
373 | CONFIG_IP_TCPDIAG=y | ||
374 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
375 | |||
376 | # | ||
377 | # IP: Virtual Server Configuration | ||
378 | # | ||
379 | # CONFIG_IP_VS is not set | ||
380 | # CONFIG_IPV6 is not set | ||
381 | CONFIG_NETFILTER=y | ||
382 | CONFIG_NETFILTER_DEBUG=y | ||
383 | |||
384 | # | ||
385 | # IP: Netfilter Configuration | ||
386 | # | ||
387 | CONFIG_IP_NF_CONNTRACK=m | ||
388 | # CONFIG_IP_NF_CT_ACCT is not set | ||
389 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
390 | # CONFIG_IP_NF_CT_PROTO_SCTP is not set | ||
391 | CONFIG_IP_NF_FTP=m | ||
392 | CONFIG_IP_NF_IRC=m | ||
393 | CONFIG_IP_NF_TFTP=m | ||
394 | CONFIG_IP_NF_AMANDA=m | ||
395 | CONFIG_IP_NF_QUEUE=m | ||
396 | CONFIG_IP_NF_IPTABLES=m | ||
397 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
398 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
399 | CONFIG_IP_NF_MATCH_MAC=m | ||
400 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
401 | CONFIG_IP_NF_MATCH_MARK=m | ||
402 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
403 | CONFIG_IP_NF_MATCH_TOS=m | ||
404 | CONFIG_IP_NF_MATCH_RECENT=m | ||
405 | CONFIG_IP_NF_MATCH_ECN=m | ||
406 | CONFIG_IP_NF_MATCH_DSCP=m | ||
407 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
408 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
409 | CONFIG_IP_NF_MATCH_TTL=m | ||
410 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
411 | CONFIG_IP_NF_MATCH_HELPER=m | ||
412 | CONFIG_IP_NF_MATCH_STATE=m | ||
413 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
414 | CONFIG_IP_NF_MATCH_OWNER=m | ||
415 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
416 | # CONFIG_IP_NF_MATCH_REALM is not set | ||
417 | # CONFIG_IP_NF_MATCH_SCTP is not set | ||
418 | # CONFIG_IP_NF_MATCH_COMMENT is not set | ||
419 | # CONFIG_IP_NF_MATCH_HASHLIMIT is not set | ||
420 | CONFIG_IP_NF_FILTER=m | ||
421 | CONFIG_IP_NF_TARGET_REJECT=m | ||
422 | CONFIG_IP_NF_TARGET_LOG=m | ||
423 | CONFIG_IP_NF_TARGET_ULOG=m | ||
424 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
425 | CONFIG_IP_NF_NAT=m | ||
426 | CONFIG_IP_NF_NAT_NEEDED=y | ||
427 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
428 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
429 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
430 | CONFIG_IP_NF_TARGET_SAME=m | ||
431 | CONFIG_IP_NF_NAT_SNMP_BASIC=m | ||
432 | CONFIG_IP_NF_NAT_IRC=m | ||
433 | CONFIG_IP_NF_NAT_FTP=m | ||
434 | CONFIG_IP_NF_NAT_TFTP=m | ||
435 | CONFIG_IP_NF_NAT_AMANDA=m | ||
436 | CONFIG_IP_NF_MANGLE=m | ||
437 | CONFIG_IP_NF_TARGET_TOS=m | ||
438 | CONFIG_IP_NF_TARGET_ECN=m | ||
439 | CONFIG_IP_NF_TARGET_DSCP=m | ||
440 | CONFIG_IP_NF_TARGET_MARK=m | ||
441 | CONFIG_IP_NF_TARGET_CLASSIFY=m | ||
442 | # CONFIG_IP_NF_RAW is not set | ||
443 | CONFIG_IP_NF_ARPTABLES=m | ||
444 | CONFIG_IP_NF_ARPFILTER=m | ||
445 | CONFIG_IP_NF_ARP_MANGLE=m | ||
446 | CONFIG_IP_NF_COMPAT_IPCHAINS=m | ||
447 | CONFIG_IP_NF_COMPAT_IPFWADM=m | ||
448 | CONFIG_XFRM=y | ||
449 | CONFIG_XFRM_USER=m | ||
450 | |||
451 | # | ||
452 | # SCTP Configuration (EXPERIMENTAL) | ||
453 | # | ||
454 | # CONFIG_IP_SCTP is not set | ||
455 | # CONFIG_ATM is not set | ||
456 | # CONFIG_BRIDGE is not set | ||
457 | # CONFIG_VLAN_8021Q is not set | ||
458 | # CONFIG_DECNET is not set | ||
459 | CONFIG_LLC=m | ||
460 | CONFIG_LLC2=m | ||
461 | # CONFIG_IPX is not set | ||
462 | # CONFIG_ATALK is not set | ||
463 | # CONFIG_X25 is not set | ||
464 | # CONFIG_LAPB is not set | ||
465 | # CONFIG_NET_DIVERT is not set | ||
466 | # CONFIG_ECONET is not set | ||
467 | # CONFIG_WAN_ROUTER is not set | ||
468 | |||
469 | # | ||
470 | # QoS and/or fair queueing | ||
471 | # | ||
472 | # CONFIG_NET_SCHED is not set | ||
473 | # CONFIG_NET_CLS_ROUTE is not set | ||
474 | |||
475 | # | ||
476 | # Network testing | ||
477 | # | 560 | # |
478 | # CONFIG_NET_PKTGEN is not set | ||
479 | # CONFIG_NETPOLL is not set | ||
480 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
481 | # CONFIG_HAMRADIO is not set | ||
482 | # CONFIG_IRDA is not set | ||
483 | # CONFIG_BT is not set | ||
484 | CONFIG_NETDEVICES=y | 561 | CONFIG_NETDEVICES=y |
485 | CONFIG_DUMMY=m | 562 | CONFIG_DUMMY=m |
486 | CONFIG_BONDING=m | 563 | CONFIG_BONDING=m |
487 | # CONFIG_EQUALIZER is not set | 564 | # CONFIG_EQUALIZER is not set |
488 | CONFIG_TUN=m | 565 | CONFIG_TUN=m |
489 | # CONFIG_ETHERTAP is not set | ||
490 | 566 | ||
491 | # | 567 | # |
492 | # ARCnet devices | 568 | # ARCnet devices |
@@ -494,12 +570,18 @@ CONFIG_TUN=m | |||
494 | # CONFIG_ARCNET is not set | 570 | # CONFIG_ARCNET is not set |
495 | 571 | ||
496 | # | 572 | # |
573 | # PHY device support | ||
574 | # | ||
575 | # CONFIG_PHYLIB is not set | ||
576 | |||
577 | # | ||
497 | # Ethernet (10 or 100Mbit) | 578 | # Ethernet (10 or 100Mbit) |
498 | # | 579 | # |
499 | CONFIG_NET_ETHERNET=y | 580 | CONFIG_NET_ETHERNET=y |
500 | CONFIG_MII=m | 581 | CONFIG_MII=m |
501 | CONFIG_HAPPYMEAL=m | 582 | # CONFIG_HAPPYMEAL is not set |
502 | # CONFIG_SUNGEM is not set | 583 | # CONFIG_SUNGEM is not set |
584 | # CONFIG_CASSINI is not set | ||
503 | # CONFIG_NET_VENDOR_3COM is not set | 585 | # CONFIG_NET_VENDOR_3COM is not set |
504 | 586 | ||
505 | # | 587 | # |
@@ -514,28 +596,22 @@ CONFIG_TULIP_MMIO=y | |||
514 | # CONFIG_DE4X5 is not set | 596 | # CONFIG_DE4X5 is not set |
515 | # CONFIG_WINBOND_840 is not set | 597 | # CONFIG_WINBOND_840 is not set |
516 | # CONFIG_DM9102 is not set | 598 | # CONFIG_DM9102 is not set |
599 | # CONFIG_ULI526X is not set | ||
517 | # CONFIG_HP100 is not set | 600 | # CONFIG_HP100 is not set |
518 | CONFIG_NET_PCI=y | 601 | CONFIG_NET_PCI=y |
519 | CONFIG_PCNET32=m | 602 | # CONFIG_PCNET32 is not set |
520 | # CONFIG_AMD8111_ETH is not set | 603 | # CONFIG_AMD8111_ETH is not set |
521 | CONFIG_ADAPTEC_STARFIRE=m | 604 | # CONFIG_ADAPTEC_STARFIRE is not set |
522 | # CONFIG_ADAPTEC_STARFIRE_NAPI is not set | 605 | # CONFIG_B44 is not set |
523 | CONFIG_B44=m | ||
524 | # CONFIG_FORCEDETH is not set | 606 | # CONFIG_FORCEDETH is not set |
525 | # CONFIG_DGRS is not set | 607 | # CONFIG_DGRS is not set |
526 | CONFIG_EEPRO100=m | 608 | # CONFIG_EEPRO100 is not set |
527 | # CONFIG_EEPRO100_PIO is not set | ||
528 | CONFIG_E100=m | 609 | CONFIG_E100=m |
529 | # CONFIG_E100_NAPI is not set | ||
530 | # CONFIG_FEALNX is not set | 610 | # CONFIG_FEALNX is not set |
531 | CONFIG_NATSEMI=m | 611 | # CONFIG_NATSEMI is not set |
532 | # CONFIG_NE2K_PCI is not set | 612 | # CONFIG_NE2K_PCI is not set |
533 | # CONFIG_8139CP is not set | 613 | # CONFIG_8139CP is not set |
534 | CONFIG_8139TOO=m | 614 | # CONFIG_8139TOO is not set |
535 | # CONFIG_8139TOO_PIO is not set | ||
536 | # CONFIG_8139TOO_TUNE_TWISTER is not set | ||
537 | # CONFIG_8139TOO_8129 is not set | ||
538 | # CONFIG_8139_OLD_RX_RESET is not set | ||
539 | # CONFIG_SIS900 is not set | 615 | # CONFIG_SIS900 is not set |
540 | # CONFIG_EPIC100 is not set | 616 | # CONFIG_EPIC100 is not set |
541 | # CONFIG_SUNDANCE is not set | 617 | # CONFIG_SUNDANCE is not set |
@@ -554,15 +630,18 @@ CONFIG_E1000=m | |||
554 | # CONFIG_HAMACHI is not set | 630 | # CONFIG_HAMACHI is not set |
555 | # CONFIG_YELLOWFIN is not set | 631 | # CONFIG_YELLOWFIN is not set |
556 | # CONFIG_R8169 is not set | 632 | # CONFIG_R8169 is not set |
633 | # CONFIG_SIS190 is not set | ||
634 | # CONFIG_SKGE is not set | ||
557 | # CONFIG_SK98LIN is not set | 635 | # CONFIG_SK98LIN is not set |
558 | # CONFIG_VIA_VELOCITY is not set | 636 | # CONFIG_VIA_VELOCITY is not set |
559 | CONFIG_TIGON3=m | 637 | CONFIG_TIGON3=m |
638 | # CONFIG_BNX2 is not set | ||
560 | 639 | ||
561 | # | 640 | # |
562 | # Ethernet (10000 Mbit) | 641 | # Ethernet (10000 Mbit) |
563 | # | 642 | # |
564 | CONFIG_IXGB=y | 643 | # CONFIG_CHELSIO_T1 is not set |
565 | CONFIG_IXGB_NAPI=y | 644 | # CONFIG_IXGB is not set |
566 | # CONFIG_S2IO is not set | 645 | # CONFIG_S2IO is not set |
567 | 646 | ||
568 | # | 647 | # |
@@ -593,6 +672,8 @@ CONFIG_PPPOE=m | |||
593 | # CONFIG_NET_FC is not set | 672 | # CONFIG_NET_FC is not set |
594 | # CONFIG_SHAPER is not set | 673 | # CONFIG_SHAPER is not set |
595 | # CONFIG_NETCONSOLE is not set | 674 | # CONFIG_NETCONSOLE is not set |
675 | # CONFIG_NETPOLL is not set | ||
676 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
596 | 677 | ||
597 | # | 678 | # |
598 | # ISDN subsystem | 679 | # ISDN subsystem |
@@ -622,16 +703,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200 | |||
622 | # CONFIG_INPUT_EVBUG is not set | 703 | # CONFIG_INPUT_EVBUG is not set |
623 | 704 | ||
624 | # | 705 | # |
625 | # Input I/O drivers | ||
626 | # | ||
627 | # CONFIG_GAMEPORT is not set | ||
628 | CONFIG_SOUND_GAMEPORT=y | ||
629 | CONFIG_SERIO=m | ||
630 | CONFIG_SERIO_SERPORT=m | ||
631 | # CONFIG_SERIO_PCIPS2 is not set | ||
632 | # CONFIG_SERIO_RAW is not set | ||
633 | |||
634 | # | ||
635 | # Input Device Drivers | 706 | # Input Device Drivers |
636 | # | 707 | # |
637 | CONFIG_INPUT_KEYBOARD=y | 708 | CONFIG_INPUT_KEYBOARD=y |
@@ -649,6 +720,16 @@ CONFIG_INPUT_MOUSE=y | |||
649 | # CONFIG_INPUT_MISC is not set | 720 | # CONFIG_INPUT_MISC is not set |
650 | 721 | ||
651 | # | 722 | # |
723 | # Hardware I/O ports | ||
724 | # | ||
725 | CONFIG_SERIO=m | ||
726 | CONFIG_SERIO_SERPORT=m | ||
727 | # CONFIG_SERIO_PCIPS2 is not set | ||
728 | CONFIG_SERIO_LIBPS2=m | ||
729 | # CONFIG_SERIO_RAW is not set | ||
730 | # CONFIG_GAMEPORT is not set | ||
731 | |||
732 | # | ||
652 | # Character devices | 733 | # Character devices |
653 | # | 734 | # |
654 | CONFIG_VT=y | 735 | CONFIG_VT=y |
@@ -666,7 +747,6 @@ CONFIG_SERIAL_8250_EXTENDED=y | |||
666 | CONFIG_SERIAL_8250_MANY_PORTS=y | 747 | CONFIG_SERIAL_8250_MANY_PORTS=y |
667 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 748 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
668 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 749 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
669 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
670 | # CONFIG_SERIAL_8250_RSA is not set | 750 | # CONFIG_SERIAL_8250_RSA is not set |
671 | 751 | ||
672 | # | 752 | # |
@@ -676,6 +756,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
676 | # CONFIG_PDC_CONSOLE is not set | 756 | # CONFIG_PDC_CONSOLE is not set |
677 | CONFIG_SERIAL_CORE=y | 757 | CONFIG_SERIAL_CORE=y |
678 | CONFIG_SERIAL_CORE_CONSOLE=y | 758 | CONFIG_SERIAL_CORE_CONSOLE=y |
759 | # CONFIG_SERIAL_JSM is not set | ||
679 | CONFIG_UNIX98_PTYS=y | 760 | CONFIG_UNIX98_PTYS=y |
680 | CONFIG_LEGACY_PTYS=y | 761 | CONFIG_LEGACY_PTYS=y |
681 | CONFIG_LEGACY_PTY_COUNT=256 | 762 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -698,12 +779,16 @@ CONFIG_GEN_RTC_X=y | |||
698 | # | 779 | # |
699 | # Ftape, the floppy tape device driver | 780 | # Ftape, the floppy tape device driver |
700 | # | 781 | # |
701 | # CONFIG_AGP is not set | ||
702 | # CONFIG_DRM is not set | 782 | # CONFIG_DRM is not set |
703 | CONFIG_RAW_DRIVER=y | 783 | CONFIG_RAW_DRIVER=y |
704 | CONFIG_MAX_RAW_DEVS=256 | 784 | CONFIG_MAX_RAW_DEVS=256 |
705 | 785 | ||
706 | # | 786 | # |
787 | # TPM devices | ||
788 | # | ||
789 | # CONFIG_TCG_TPM is not set | ||
790 | |||
791 | # | ||
707 | # I2C support | 792 | # I2C support |
708 | # | 793 | # |
709 | # CONFIG_I2C is not set | 794 | # CONFIG_I2C is not set |
@@ -714,10 +799,20 @@ CONFIG_MAX_RAW_DEVS=256 | |||
714 | # CONFIG_W1 is not set | 799 | # CONFIG_W1 is not set |
715 | 800 | ||
716 | # | 801 | # |
802 | # Hardware Monitoring support | ||
803 | # | ||
804 | # CONFIG_HWMON is not set | ||
805 | # CONFIG_HWMON_VID is not set | ||
806 | |||
807 | # | ||
717 | # Misc devices | 808 | # Misc devices |
718 | # | 809 | # |
719 | 810 | ||
720 | # | 811 | # |
812 | # Multimedia Capabilities Port drivers | ||
813 | # | ||
814 | |||
815 | # | ||
721 | # Multimedia devices | 816 | # Multimedia devices |
722 | # | 817 | # |
723 | # CONFIG_VIDEO_DEV is not set | 818 | # CONFIG_VIDEO_DEV is not set |
@@ -731,6 +826,11 @@ CONFIG_MAX_RAW_DEVS=256 | |||
731 | # Graphics support | 826 | # Graphics support |
732 | # | 827 | # |
733 | CONFIG_FB=y | 828 | CONFIG_FB=y |
829 | CONFIG_FB_CFB_FILLRECT=y | ||
830 | CONFIG_FB_CFB_COPYAREA=y | ||
831 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
832 | CONFIG_FB_SOFT_CURSOR=y | ||
833 | # CONFIG_FB_MACMODES is not set | ||
734 | # CONFIG_FB_MODE_HELPERS is not set | 834 | # CONFIG_FB_MODE_HELPERS is not set |
735 | # CONFIG_FB_TILEBLITTING is not set | 835 | # CONFIG_FB_TILEBLITTING is not set |
736 | # CONFIG_FB_CIRRUS is not set | 836 | # CONFIG_FB_CIRRUS is not set |
@@ -739,6 +839,7 @@ CONFIG_FB=y | |||
739 | # CONFIG_FB_ASILIANT is not set | 839 | # CONFIG_FB_ASILIANT is not set |
740 | # CONFIG_FB_IMSTT is not set | 840 | # CONFIG_FB_IMSTT is not set |
741 | CONFIG_FB_STI=y | 841 | CONFIG_FB_STI=y |
842 | # CONFIG_FB_NVIDIA is not set | ||
742 | # CONFIG_FB_RIVA is not set | 843 | # CONFIG_FB_RIVA is not set |
743 | # CONFIG_FB_MATROX is not set | 844 | # CONFIG_FB_MATROX is not set |
744 | # CONFIG_FB_RADEON_OLD is not set | 845 | # CONFIG_FB_RADEON_OLD is not set |
@@ -751,18 +852,20 @@ CONFIG_FB_STI=y | |||
751 | # CONFIG_FB_KYRO is not set | 852 | # CONFIG_FB_KYRO is not set |
752 | # CONFIG_FB_3DFX is not set | 853 | # CONFIG_FB_3DFX is not set |
753 | # CONFIG_FB_VOODOO1 is not set | 854 | # CONFIG_FB_VOODOO1 is not set |
855 | # CONFIG_FB_CYBLA is not set | ||
754 | # CONFIG_FB_TRIDENT is not set | 856 | # CONFIG_FB_TRIDENT is not set |
755 | # CONFIG_FB_PM3 is not set | 857 | # CONFIG_FB_PM3 is not set |
858 | # CONFIG_FB_S1D13XXX is not set | ||
756 | # CONFIG_FB_VIRTUAL is not set | 859 | # CONFIG_FB_VIRTUAL is not set |
757 | 860 | ||
758 | # | 861 | # |
759 | # Console display driver support | 862 | # Console display driver support |
760 | # | 863 | # |
761 | CONFIG_STI_CONSOLE=y | 864 | CONFIG_DUMMY_CONSOLE=y |
762 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 865 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
763 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 866 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
764 | CONFIG_DUMMY_CONSOLE=y | ||
765 | CONFIG_FRAMEBUFFER_CONSOLE=y | 867 | CONFIG_FRAMEBUFFER_CONSOLE=y |
868 | CONFIG_STI_CONSOLE=y | ||
766 | # CONFIG_FONTS is not set | 869 | # CONFIG_FONTS is not set |
767 | CONFIG_FONT_8x8=y | 870 | CONFIG_FONT_8x8=y |
768 | CONFIG_FONT_8x16=y | 871 | CONFIG_FONT_8x16=y |
@@ -775,6 +878,7 @@ CONFIG_LOGO=y | |||
775 | # CONFIG_LOGO_LINUX_VGA16 is not set | 878 | # CONFIG_LOGO_LINUX_VGA16 is not set |
776 | # CONFIG_LOGO_LINUX_CLUT224 is not set | 879 | # CONFIG_LOGO_LINUX_CLUT224 is not set |
777 | CONFIG_LOGO_PARISC_CLUT224=y | 880 | CONFIG_LOGO_PARISC_CLUT224=y |
881 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
778 | 882 | ||
779 | # | 883 | # |
780 | # Sound | 884 | # Sound |
@@ -784,7 +888,78 @@ CONFIG_SOUND=y | |||
784 | # | 888 | # |
785 | # Advanced Linux Sound Architecture | 889 | # Advanced Linux Sound Architecture |
786 | # | 890 | # |
787 | # CONFIG_SND is not set | 891 | CONFIG_SND=y |
892 | CONFIG_SND_TIMER=y | ||
893 | CONFIG_SND_PCM=y | ||
894 | CONFIG_SND_SEQUENCER=y | ||
895 | # CONFIG_SND_SEQ_DUMMY is not set | ||
896 | CONFIG_SND_OSSEMUL=y | ||
897 | CONFIG_SND_MIXER_OSS=y | ||
898 | CONFIG_SND_PCM_OSS=y | ||
899 | CONFIG_SND_SEQUENCER_OSS=y | ||
900 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
901 | # CONFIG_SND_DEBUG is not set | ||
902 | |||
903 | # | ||
904 | # Generic devices | ||
905 | # | ||
906 | # CONFIG_SND_DUMMY is not set | ||
907 | # CONFIG_SND_VIRMIDI is not set | ||
908 | # CONFIG_SND_MTPAV is not set | ||
909 | # CONFIG_SND_SERIAL_U16550 is not set | ||
910 | # CONFIG_SND_MPU401 is not set | ||
911 | CONFIG_SND_AC97_CODEC=y | ||
912 | CONFIG_SND_AC97_BUS=y | ||
913 | |||
914 | # | ||
915 | # PCI devices | ||
916 | # | ||
917 | # CONFIG_SND_ALI5451 is not set | ||
918 | # CONFIG_SND_ATIIXP is not set | ||
919 | # CONFIG_SND_ATIIXP_MODEM is not set | ||
920 | # CONFIG_SND_AU8810 is not set | ||
921 | # CONFIG_SND_AU8820 is not set | ||
922 | # CONFIG_SND_AU8830 is not set | ||
923 | # CONFIG_SND_AZT3328 is not set | ||
924 | # CONFIG_SND_BT87X is not set | ||
925 | # CONFIG_SND_CS46XX is not set | ||
926 | # CONFIG_SND_CS4281 is not set | ||
927 | # CONFIG_SND_EMU10K1 is not set | ||
928 | # CONFIG_SND_EMU10K1X is not set | ||
929 | # CONFIG_SND_CA0106 is not set | ||
930 | # CONFIG_SND_KORG1212 is not set | ||
931 | # CONFIG_SND_MIXART is not set | ||
932 | # CONFIG_SND_NM256 is not set | ||
933 | # CONFIG_SND_RME32 is not set | ||
934 | # CONFIG_SND_RME96 is not set | ||
935 | # CONFIG_SND_RME9652 is not set | ||
936 | # CONFIG_SND_HDSP is not set | ||
937 | # CONFIG_SND_HDSPM is not set | ||
938 | # CONFIG_SND_TRIDENT is not set | ||
939 | # CONFIG_SND_YMFPCI is not set | ||
940 | CONFIG_SND_AD1889=y | ||
941 | # CONFIG_SND_AD1889_OPL3 is not set | ||
942 | # CONFIG_SND_CMIPCI is not set | ||
943 | # CONFIG_SND_ENS1370 is not set | ||
944 | # CONFIG_SND_ENS1371 is not set | ||
945 | # CONFIG_SND_ES1938 is not set | ||
946 | # CONFIG_SND_ES1968 is not set | ||
947 | # CONFIG_SND_MAESTRO3 is not set | ||
948 | # CONFIG_SND_FM801 is not set | ||
949 | # CONFIG_SND_ICE1712 is not set | ||
950 | # CONFIG_SND_ICE1724 is not set | ||
951 | # CONFIG_SND_INTEL8X0 is not set | ||
952 | # CONFIG_SND_INTEL8X0M is not set | ||
953 | # CONFIG_SND_SONICVIBES is not set | ||
954 | # CONFIG_SND_VIA82XX is not set | ||
955 | # CONFIG_SND_VIA82XX_MODEM is not set | ||
956 | # CONFIG_SND_VX222 is not set | ||
957 | # CONFIG_SND_HDA_INTEL is not set | ||
958 | |||
959 | # | ||
960 | # USB devices | ||
961 | # | ||
962 | # CONFIG_SND_USB_AUDIO is not set | ||
788 | 963 | ||
789 | # | 964 | # |
790 | # Open Sound System | 965 | # Open Sound System |
@@ -794,6 +969,8 @@ CONFIG_SOUND=y | |||
794 | # | 969 | # |
795 | # USB support | 970 | # USB support |
796 | # | 971 | # |
972 | CONFIG_USB_ARCH_HAS_HCD=y | ||
973 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
797 | CONFIG_USB=y | 974 | CONFIG_USB=y |
798 | CONFIG_USB_DEBUG=y | 975 | CONFIG_USB_DEBUG=y |
799 | 976 | ||
@@ -804,23 +981,23 @@ CONFIG_USB_DEVICEFS=y | |||
804 | # CONFIG_USB_BANDWIDTH is not set | 981 | # CONFIG_USB_BANDWIDTH is not set |
805 | # CONFIG_USB_DYNAMIC_MINORS is not set | 982 | # CONFIG_USB_DYNAMIC_MINORS is not set |
806 | # CONFIG_USB_OTG is not set | 983 | # CONFIG_USB_OTG is not set |
807 | CONFIG_USB_ARCH_HAS_HCD=y | ||
808 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
809 | 984 | ||
810 | # | 985 | # |
811 | # USB Host Controller Drivers | 986 | # USB Host Controller Drivers |
812 | # | 987 | # |
813 | # CONFIG_USB_EHCI_HCD is not set | 988 | # CONFIG_USB_EHCI_HCD is not set |
989 | # CONFIG_USB_ISP116X_HCD is not set | ||
814 | CONFIG_USB_OHCI_HCD=y | 990 | CONFIG_USB_OHCI_HCD=y |
991 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
992 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
815 | # CONFIG_USB_UHCI_HCD is not set | 993 | # CONFIG_USB_UHCI_HCD is not set |
816 | # CONFIG_USB_SL811_HCD is not set | 994 | # CONFIG_USB_SL811_HCD is not set |
817 | 995 | ||
818 | # | 996 | # |
819 | # USB Device Class drivers | 997 | # USB Device Class drivers |
820 | # | 998 | # |
821 | # CONFIG_USB_AUDIO is not set | 999 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
822 | # CONFIG_USB_BLUETOOTH_TTY is not set | 1000 | # CONFIG_USB_BLUETOOTH_TTY is not set |
823 | # CONFIG_USB_MIDI is not set | ||
824 | # CONFIG_USB_ACM is not set | 1001 | # CONFIG_USB_ACM is not set |
825 | CONFIG_USB_PRINTER=m | 1002 | CONFIG_USB_PRINTER=m |
826 | 1003 | ||
@@ -829,12 +1006,11 @@ CONFIG_USB_PRINTER=m | |||
829 | # | 1006 | # |
830 | CONFIG_USB_STORAGE=m | 1007 | CONFIG_USB_STORAGE=m |
831 | # CONFIG_USB_STORAGE_DEBUG is not set | 1008 | # CONFIG_USB_STORAGE_DEBUG is not set |
832 | # CONFIG_USB_STORAGE_RW_DETECT is not set | 1009 | # CONFIG_USB_STORAGE_DATAFAB is not set |
833 | CONFIG_USB_STORAGE_DATAFAB=y | 1010 | # CONFIG_USB_STORAGE_FREECOM is not set |
834 | CONFIG_USB_STORAGE_FREECOM=y | ||
835 | # CONFIG_USB_STORAGE_ISD200 is not set | 1011 | # CONFIG_USB_STORAGE_ISD200 is not set |
836 | CONFIG_USB_STORAGE_DPCM=y | 1012 | CONFIG_USB_STORAGE_DPCM=y |
837 | CONFIG_USB_STORAGE_HP8200e=y | 1013 | CONFIG_USB_STORAGE_USBAT=y |
838 | CONFIG_USB_STORAGE_SDDR09=y | 1014 | CONFIG_USB_STORAGE_SDDR09=y |
839 | CONFIG_USB_STORAGE_SDDR55=y | 1015 | CONFIG_USB_STORAGE_SDDR55=y |
840 | CONFIG_USB_STORAGE_JUMPSHOT=y | 1016 | CONFIG_USB_STORAGE_JUMPSHOT=y |
@@ -846,21 +1022,25 @@ CONFIG_USB_HID=y | |||
846 | CONFIG_USB_HIDINPUT=y | 1022 | CONFIG_USB_HIDINPUT=y |
847 | # CONFIG_HID_FF is not set | 1023 | # CONFIG_HID_FF is not set |
848 | CONFIG_USB_HIDDEV=y | 1024 | CONFIG_USB_HIDDEV=y |
849 | CONFIG_USB_AIPTEK=m | 1025 | # CONFIG_USB_AIPTEK is not set |
850 | CONFIG_USB_WACOM=m | 1026 | # CONFIG_USB_WACOM is not set |
851 | CONFIG_USB_KBTAB=m | 1027 | # CONFIG_USB_ACECAD is not set |
1028 | # CONFIG_USB_KBTAB is not set | ||
852 | # CONFIG_USB_POWERMATE is not set | 1029 | # CONFIG_USB_POWERMATE is not set |
853 | # CONFIG_USB_MTOUCH is not set | 1030 | # CONFIG_USB_MTOUCH is not set |
1031 | # CONFIG_USB_ITMTOUCH is not set | ||
854 | # CONFIG_USB_EGALAX is not set | 1032 | # CONFIG_USB_EGALAX is not set |
1033 | # CONFIG_USB_YEALINK is not set | ||
855 | # CONFIG_USB_XPAD is not set | 1034 | # CONFIG_USB_XPAD is not set |
856 | # CONFIG_USB_ATI_REMOTE is not set | 1035 | # CONFIG_USB_ATI_REMOTE is not set |
1036 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
1037 | # CONFIG_USB_APPLETOUCH is not set | ||
857 | 1038 | ||
858 | # | 1039 | # |
859 | # USB Imaging devices | 1040 | # USB Imaging devices |
860 | # | 1041 | # |
861 | CONFIG_USB_MDC800=m | 1042 | CONFIG_USB_MDC800=m |
862 | CONFIG_USB_MICROTEK=m | 1043 | CONFIG_USB_MICROTEK=m |
863 | CONFIG_USB_HPUSBSCSI=m | ||
864 | 1044 | ||
865 | # | 1045 | # |
866 | # USB Multimedia devices | 1046 | # USB Multimedia devices |
@@ -879,6 +1059,7 @@ CONFIG_USB_HPUSBSCSI=m | |||
879 | # CONFIG_USB_PEGASUS is not set | 1059 | # CONFIG_USB_PEGASUS is not set |
880 | # CONFIG_USB_RTL8150 is not set | 1060 | # CONFIG_USB_RTL8150 is not set |
881 | # CONFIG_USB_USBNET is not set | 1061 | # CONFIG_USB_USBNET is not set |
1062 | # CONFIG_USB_MON is not set | ||
882 | 1063 | ||
883 | # | 1064 | # |
884 | # USB port drivers | 1065 | # USB port drivers |
@@ -894,7 +1075,6 @@ CONFIG_USB_HPUSBSCSI=m | |||
894 | # | 1075 | # |
895 | # CONFIG_USB_EMI62 is not set | 1076 | # CONFIG_USB_EMI62 is not set |
896 | # CONFIG_USB_EMI26 is not set | 1077 | # CONFIG_USB_EMI26 is not set |
897 | # CONFIG_USB_TIGL is not set | ||
898 | # CONFIG_USB_AUERSWALD is not set | 1078 | # CONFIG_USB_AUERSWALD is not set |
899 | # CONFIG_USB_RIO500 is not set | 1079 | # CONFIG_USB_RIO500 is not set |
900 | CONFIG_USB_LEGOTOWER=m | 1080 | CONFIG_USB_LEGOTOWER=m |
@@ -903,10 +1083,12 @@ CONFIG_USB_LEGOTOWER=m | |||
903 | # CONFIG_USB_CYTHERM is not set | 1083 | # CONFIG_USB_CYTHERM is not set |
904 | # CONFIG_USB_PHIDGETKIT is not set | 1084 | # CONFIG_USB_PHIDGETKIT is not set |
905 | # CONFIG_USB_PHIDGETSERVO is not set | 1085 | # CONFIG_USB_PHIDGETSERVO is not set |
1086 | # CONFIG_USB_IDMOUSE is not set | ||
1087 | # CONFIG_USB_LD is not set | ||
906 | # CONFIG_USB_TEST is not set | 1088 | # CONFIG_USB_TEST is not set |
907 | 1089 | ||
908 | # | 1090 | # |
909 | # USB ATM/DSL drivers | 1091 | # USB DSL modem support |
910 | # | 1092 | # |
911 | 1093 | ||
912 | # | 1094 | # |
@@ -920,27 +1102,41 @@ CONFIG_USB_LEGOTOWER=m | |||
920 | # CONFIG_MMC is not set | 1102 | # CONFIG_MMC is not set |
921 | 1103 | ||
922 | # | 1104 | # |
1105 | # InfiniBand support | ||
1106 | # | ||
1107 | # CONFIG_INFINIBAND is not set | ||
1108 | |||
1109 | # | ||
1110 | # SN Devices | ||
1111 | # | ||
1112 | |||
1113 | # | ||
923 | # File systems | 1114 | # File systems |
924 | # | 1115 | # |
925 | CONFIG_EXT2_FS=y | 1116 | CONFIG_EXT2_FS=y |
926 | # CONFIG_EXT2_FS_XATTR is not set | 1117 | # CONFIG_EXT2_FS_XATTR is not set |
1118 | # CONFIG_EXT2_FS_XIP is not set | ||
927 | CONFIG_EXT3_FS=y | 1119 | CONFIG_EXT3_FS=y |
928 | # CONFIG_EXT3_FS_XATTR is not set | 1120 | # CONFIG_EXT3_FS_XATTR is not set |
929 | CONFIG_JBD=y | 1121 | CONFIG_JBD=y |
930 | # CONFIG_JBD_DEBUG is not set | 1122 | # CONFIG_JBD_DEBUG is not set |
931 | # CONFIG_REISERFS_FS is not set | 1123 | # CONFIG_REISERFS_FS is not set |
932 | # CONFIG_JFS_FS is not set | 1124 | # CONFIG_JFS_FS is not set |
1125 | # CONFIG_FS_POSIX_ACL is not set | ||
933 | CONFIG_XFS_FS=m | 1126 | CONFIG_XFS_FS=m |
934 | # CONFIG_XFS_RT is not set | 1127 | CONFIG_XFS_EXPORT=y |
935 | # CONFIG_XFS_QUOTA is not set | 1128 | # CONFIG_XFS_QUOTA is not set |
936 | # CONFIG_XFS_SECURITY is not set | 1129 | # CONFIG_XFS_SECURITY is not set |
937 | # CONFIG_XFS_POSIX_ACL is not set | 1130 | # CONFIG_XFS_POSIX_ACL is not set |
1131 | # CONFIG_XFS_RT is not set | ||
938 | # CONFIG_MINIX_FS is not set | 1132 | # CONFIG_MINIX_FS is not set |
939 | # CONFIG_ROMFS_FS is not set | 1133 | # CONFIG_ROMFS_FS is not set |
1134 | CONFIG_INOTIFY=y | ||
940 | # CONFIG_QUOTA is not set | 1135 | # CONFIG_QUOTA is not set |
941 | CONFIG_DNOTIFY=y | 1136 | CONFIG_DNOTIFY=y |
942 | # CONFIG_AUTOFS_FS is not set | 1137 | # CONFIG_AUTOFS_FS is not set |
943 | CONFIG_AUTOFS4_FS=y | 1138 | CONFIG_AUTOFS4_FS=y |
1139 | # CONFIG_FUSE_FS is not set | ||
944 | 1140 | ||
945 | # | 1141 | # |
946 | # CD-ROM/DVD Filesystems | 1142 | # CD-ROM/DVD Filesystems |
@@ -966,13 +1162,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
966 | CONFIG_PROC_FS=y | 1162 | CONFIG_PROC_FS=y |
967 | CONFIG_PROC_KCORE=y | 1163 | CONFIG_PROC_KCORE=y |
968 | CONFIG_SYSFS=y | 1164 | CONFIG_SYSFS=y |
969 | # CONFIG_DEVFS_FS is not set | ||
970 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
971 | CONFIG_TMPFS=y | 1165 | CONFIG_TMPFS=y |
972 | # CONFIG_TMPFS_XATTR is not set | ||
973 | # CONFIG_HUGETLBFS is not set | 1166 | # CONFIG_HUGETLBFS is not set |
974 | # CONFIG_HUGETLB_PAGE is not set | 1167 | # CONFIG_HUGETLB_PAGE is not set |
975 | CONFIG_RAMFS=y | 1168 | CONFIG_RAMFS=y |
1169 | # CONFIG_RELAYFS_FS is not set | ||
976 | 1170 | ||
977 | # | 1171 | # |
978 | # Miscellaneous filesystems | 1172 | # Miscellaneous filesystems |
@@ -996,16 +1190,19 @@ CONFIG_RAMFS=y | |||
996 | # | 1190 | # |
997 | CONFIG_NFS_FS=y | 1191 | CONFIG_NFS_FS=y |
998 | CONFIG_NFS_V3=y | 1192 | CONFIG_NFS_V3=y |
1193 | # CONFIG_NFS_V3_ACL is not set | ||
999 | # CONFIG_NFS_V4 is not set | 1194 | # CONFIG_NFS_V4 is not set |
1000 | # CONFIG_NFS_DIRECTIO is not set | 1195 | # CONFIG_NFS_DIRECTIO is not set |
1001 | CONFIG_NFSD=y | 1196 | CONFIG_NFSD=y |
1002 | CONFIG_NFSD_V3=y | 1197 | CONFIG_NFSD_V3=y |
1198 | # CONFIG_NFSD_V3_ACL is not set | ||
1003 | # CONFIG_NFSD_V4 is not set | 1199 | # CONFIG_NFSD_V4 is not set |
1004 | # CONFIG_NFSD_TCP is not set | 1200 | # CONFIG_NFSD_TCP is not set |
1005 | CONFIG_ROOT_NFS=y | 1201 | CONFIG_ROOT_NFS=y |
1006 | CONFIG_LOCKD=y | 1202 | CONFIG_LOCKD=y |
1007 | CONFIG_LOCKD_V4=y | 1203 | CONFIG_LOCKD_V4=y |
1008 | CONFIG_EXPORTFS=y | 1204 | CONFIG_EXPORTFS=y |
1205 | CONFIG_NFS_COMMON=y | ||
1009 | CONFIG_SUNRPC=y | 1206 | CONFIG_SUNRPC=y |
1010 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1207 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
1011 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1208 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
@@ -1014,6 +1211,7 @@ CONFIG_SUNRPC=y | |||
1014 | # CONFIG_NCP_FS is not set | 1211 | # CONFIG_NCP_FS is not set |
1015 | # CONFIG_CODA_FS is not set | 1212 | # CONFIG_CODA_FS is not set |
1016 | # CONFIG_AFS_FS is not set | 1213 | # CONFIG_AFS_FS is not set |
1214 | # CONFIG_9P_FS is not set | ||
1017 | 1215 | ||
1018 | # | 1216 | # |
1019 | # Partition Types | 1217 | # Partition Types |
@@ -1074,13 +1272,19 @@ CONFIG_OPROFILE=m | |||
1074 | # | 1272 | # |
1075 | # Kernel hacking | 1273 | # Kernel hacking |
1076 | # | 1274 | # |
1275 | # CONFIG_PRINTK_TIME is not set | ||
1077 | CONFIG_DEBUG_KERNEL=y | 1276 | CONFIG_DEBUG_KERNEL=y |
1078 | CONFIG_MAGIC_SYSRQ=y | 1277 | CONFIG_MAGIC_SYSRQ=y |
1278 | CONFIG_LOG_BUF_SHIFT=16 | ||
1279 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1079 | # CONFIG_SCHEDSTATS is not set | 1280 | # CONFIG_SCHEDSTATS is not set |
1080 | # CONFIG_DEBUG_SLAB is not set | 1281 | # CONFIG_DEBUG_SLAB is not set |
1081 | # CONFIG_DEBUG_SPINLOCK is not set | 1282 | # CONFIG_DEBUG_SPINLOCK is not set |
1283 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
1082 | # CONFIG_DEBUG_KOBJECT is not set | 1284 | # CONFIG_DEBUG_KOBJECT is not set |
1083 | # CONFIG_DEBUG_INFO is not set | 1285 | # CONFIG_DEBUG_INFO is not set |
1286 | # CONFIG_DEBUG_IOREMAP is not set | ||
1287 | # CONFIG_DEBUG_FS is not set | ||
1084 | 1288 | ||
1085 | # | 1289 | # |
1086 | # Security options | 1290 | # Security options |
@@ -1092,21 +1296,22 @@ CONFIG_MAGIC_SYSRQ=y | |||
1092 | # Cryptographic options | 1296 | # Cryptographic options |
1093 | # | 1297 | # |
1094 | CONFIG_CRYPTO=y | 1298 | CONFIG_CRYPTO=y |
1095 | CONFIG_CRYPTO_HMAC=y | 1299 | # CONFIG_CRYPTO_HMAC is not set |
1096 | CONFIG_CRYPTO_NULL=m | 1300 | CONFIG_CRYPTO_NULL=m |
1097 | CONFIG_CRYPTO_MD4=m | 1301 | # CONFIG_CRYPTO_MD4 is not set |
1098 | CONFIG_CRYPTO_MD5=m | 1302 | CONFIG_CRYPTO_MD5=m |
1099 | CONFIG_CRYPTO_SHA1=m | 1303 | # CONFIG_CRYPTO_SHA1 is not set |
1100 | CONFIG_CRYPTO_SHA256=m | 1304 | # CONFIG_CRYPTO_SHA256 is not set |
1101 | # CONFIG_CRYPTO_SHA512 is not set | 1305 | # CONFIG_CRYPTO_SHA512 is not set |
1102 | # CONFIG_CRYPTO_WP512 is not set | 1306 | # CONFIG_CRYPTO_WP512 is not set |
1307 | # CONFIG_CRYPTO_TGR192 is not set | ||
1103 | CONFIG_CRYPTO_DES=m | 1308 | CONFIG_CRYPTO_DES=m |
1104 | CONFIG_CRYPTO_BLOWFISH=m | 1309 | CONFIG_CRYPTO_BLOWFISH=m |
1105 | CONFIG_CRYPTO_TWOFISH=m | 1310 | # CONFIG_CRYPTO_TWOFISH is not set |
1106 | CONFIG_CRYPTO_SERPENT=m | 1311 | # CONFIG_CRYPTO_SERPENT is not set |
1107 | CONFIG_CRYPTO_AES=m | 1312 | # CONFIG_CRYPTO_AES is not set |
1108 | CONFIG_CRYPTO_CAST5=m | 1313 | # CONFIG_CRYPTO_CAST5 is not set |
1109 | CONFIG_CRYPTO_CAST6=m | 1314 | # CONFIG_CRYPTO_CAST6 is not set |
1110 | # CONFIG_CRYPTO_TEA is not set | 1315 | # CONFIG_CRYPTO_TEA is not set |
1111 | # CONFIG_CRYPTO_ARC4 is not set | 1316 | # CONFIG_CRYPTO_ARC4 is not set |
1112 | # CONFIG_CRYPTO_KHAZAD is not set | 1317 | # CONFIG_CRYPTO_KHAZAD is not set |
@@ -1117,9 +1322,14 @@ CONFIG_CRYPTO_CRC32C=m | |||
1117 | CONFIG_CRYPTO_TEST=m | 1322 | CONFIG_CRYPTO_TEST=m |
1118 | 1323 | ||
1119 | # | 1324 | # |
1325 | # Hardware crypto devices | ||
1326 | # | ||
1327 | |||
1328 | # | ||
1120 | # Library routines | 1329 | # Library routines |
1121 | # | 1330 | # |
1122 | CONFIG_CRC_CCITT=m | 1331 | CONFIG_CRC_CCITT=m |
1332 | # CONFIG_CRC16 is not set | ||
1123 | CONFIG_CRC32=y | 1333 | CONFIG_CRC32=y |
1124 | CONFIG_LIBCRC32C=m | 1334 | CONFIG_LIBCRC32C=m |
1125 | CONFIG_ZLIB_INFLATE=m | 1335 | CONFIG_ZLIB_INFLATE=m |
diff --git a/arch/parisc/defconfig b/arch/parisc/defconfig index fdae21c503d7..f38a4620d24f 100644 --- a/arch/parisc/defconfig +++ b/arch/parisc/defconfig | |||
@@ -1,38 +1,56 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14-rc5-pa1 | ||
4 | # Fri Oct 21 23:01:33 2005 | ||
3 | # | 5 | # |
4 | CONFIG_PARISC=y | 6 | CONFIG_PARISC=y |
5 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
6 | CONFIG_STACK_GROWSUP=y | 8 | CONFIG_STACK_GROWSUP=y |
7 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | CONFIG_GENERIC_HARDIRQS=y | ||
12 | CONFIG_GENERIC_IRQ_PROBE=y | ||
8 | 13 | ||
9 | # | 14 | # |
10 | # Code maturity level options | 15 | # Code maturity level options |
11 | # | 16 | # |
12 | CONFIG_EXPERIMENTAL=y | 17 | CONFIG_EXPERIMENTAL=y |
13 | CONFIG_CLEAN_COMPILE=y | 18 | CONFIG_CLEAN_COMPILE=y |
14 | CONFIG_STANDALONE=y | ||
15 | CONFIG_BROKEN_ON_SMP=y | 19 | CONFIG_BROKEN_ON_SMP=y |
20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
16 | 21 | ||
17 | # | 22 | # |
18 | # General setup | 23 | # General setup |
19 | # | 24 | # |
25 | CONFIG_LOCALVERSION="" | ||
26 | # CONFIG_LOCALVERSION_AUTO is not set | ||
20 | CONFIG_SWAP=y | 27 | CONFIG_SWAP=y |
21 | CONFIG_SYSVIPC=y | 28 | CONFIG_SYSVIPC=y |
29 | # CONFIG_POSIX_MQUEUE is not set | ||
22 | # CONFIG_BSD_PROCESS_ACCT is not set | 30 | # CONFIG_BSD_PROCESS_ACCT is not set |
23 | CONFIG_SYSCTL=y | 31 | CONFIG_SYSCTL=y |
24 | CONFIG_LOG_BUF_SHIFT=15 | 32 | # CONFIG_AUDIT is not set |
25 | # CONFIG_HOTPLUG is not set | 33 | # CONFIG_HOTPLUG is not set |
34 | CONFIG_KOBJECT_UEVENT=y | ||
26 | CONFIG_IKCONFIG=y | 35 | CONFIG_IKCONFIG=y |
27 | CONFIG_IKCONFIG_PROC=y | 36 | CONFIG_IKCONFIG_PROC=y |
37 | CONFIG_INITRAMFS_SOURCE="" | ||
28 | # CONFIG_EMBEDDED is not set | 38 | # CONFIG_EMBEDDED is not set |
29 | CONFIG_KALLSYMS=y | 39 | CONFIG_KALLSYMS=y |
40 | # CONFIG_KALLSYMS_ALL is not set | ||
41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
42 | CONFIG_PRINTK=y | ||
43 | CONFIG_BUG=y | ||
44 | CONFIG_BASE_FULL=y | ||
30 | CONFIG_FUTEX=y | 45 | CONFIG_FUTEX=y |
31 | CONFIG_EPOLL=y | 46 | CONFIG_EPOLL=y |
32 | CONFIG_IOSCHED_NOOP=y | 47 | CONFIG_SHMEM=y |
33 | CONFIG_IOSCHED_AS=y | 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
34 | CONFIG_IOSCHED_DEADLINE=y | 49 | CONFIG_CC_ALIGN_LABELS=0 |
35 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 50 | CONFIG_CC_ALIGN_LOOPS=0 |
51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
52 | # CONFIG_TINY_SHMEM is not set | ||
53 | CONFIG_BASE_SMALL=0 | ||
36 | 54 | ||
37 | # | 55 | # |
38 | # Loadable module support | 56 | # Loadable module support |
@@ -45,10 +63,21 @@ CONFIG_IOSCHED_DEADLINE=y | |||
45 | CONFIG_PA7000=y | 63 | CONFIG_PA7000=y |
46 | # CONFIG_PA7100LC is not set | 64 | # CONFIG_PA7100LC is not set |
47 | # CONFIG_PA7200 is not set | 65 | # CONFIG_PA7200 is not set |
66 | # CONFIG_PA7300LC is not set | ||
48 | # CONFIG_PA8X00 is not set | 67 | # CONFIG_PA8X00 is not set |
49 | CONFIG_PA11=y | 68 | CONFIG_PA11=y |
50 | # CONFIG_64BIT is not set | ||
51 | # CONFIG_SMP is not set | 69 | # CONFIG_SMP is not set |
70 | # CONFIG_HZ_100 is not set | ||
71 | CONFIG_HZ_250=y | ||
72 | # CONFIG_HZ_1000 is not set | ||
73 | CONFIG_HZ=250 | ||
74 | CONFIG_SELECT_MEMORY_MODEL=y | ||
75 | CONFIG_FLATMEM_MANUAL=y | ||
76 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
77 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
78 | CONFIG_FLATMEM=y | ||
79 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
80 | # CONFIG_SPARSEMEM_STATIC is not set | ||
52 | # CONFIG_PREEMPT is not set | 81 | # CONFIG_PREEMPT is not set |
53 | # CONFIG_HPUX is not set | 82 | # CONFIG_HPUX is not set |
54 | 83 | ||
@@ -65,14 +94,29 @@ CONFIG_EISA_NAMES=y | |||
65 | # CONFIG_ISA is not set | 94 | # CONFIG_ISA is not set |
66 | CONFIG_PCI=y | 95 | CONFIG_PCI=y |
67 | CONFIG_PCI_LEGACY_PROC=y | 96 | CONFIG_PCI_LEGACY_PROC=y |
68 | CONFIG_PCI_NAMES=y | 97 | # CONFIG_PCI_DEBUG is not set |
69 | CONFIG_GSC_DINO=y | 98 | CONFIG_GSC_DINO=y |
70 | CONFIG_PCI_LBA=y | 99 | CONFIG_PCI_LBA=y |
71 | CONFIG_IOSAPIC=y | 100 | CONFIG_IOSAPIC=y |
72 | CONFIG_IOMMU_SBA=y | 101 | CONFIG_IOMMU_SBA=y |
102 | |||
103 | # | ||
104 | # PCCARD (PCMCIA/CardBus) support | ||
105 | # | ||
106 | # CONFIG_PCCARD is not set | ||
107 | |||
108 | # | ||
109 | # PCI Hotplug Support | ||
110 | # | ||
111 | # CONFIG_HOTPLUG_PCI is not set | ||
112 | |||
113 | # | ||
114 | # PA-RISC specific drivers | ||
115 | # | ||
73 | CONFIG_SUPERIO=y | 116 | CONFIG_SUPERIO=y |
74 | CONFIG_CHASSIS_LCD_LED=y | 117 | CONFIG_CHASSIS_LCD_LED=y |
75 | CONFIG_PDC_CHASSIS=y | 118 | CONFIG_PDC_CHASSIS=y |
119 | CONFIG_PDC_STABLE=y | ||
76 | 120 | ||
77 | # | 121 | # |
78 | # Executable file formats | 122 | # Executable file formats |
@@ -81,15 +125,97 @@ CONFIG_BINFMT_ELF=y | |||
81 | # CONFIG_BINFMT_MISC is not set | 125 | # CONFIG_BINFMT_MISC is not set |
82 | 126 | ||
83 | # | 127 | # |
128 | # Networking | ||
129 | # | ||
130 | CONFIG_NET=y | ||
131 | |||
132 | # | ||
133 | # Networking options | ||
134 | # | ||
135 | CONFIG_PACKET=y | ||
136 | CONFIG_PACKET_MMAP=y | ||
137 | CONFIG_UNIX=y | ||
138 | # CONFIG_NET_KEY is not set | ||
139 | CONFIG_INET=y | ||
140 | CONFIG_IP_MULTICAST=y | ||
141 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
142 | CONFIG_IP_FIB_HASH=y | ||
143 | CONFIG_IP_PNP=y | ||
144 | # CONFIG_IP_PNP_DHCP is not set | ||
145 | CONFIG_IP_PNP_BOOTP=y | ||
146 | # CONFIG_IP_PNP_RARP is not set | ||
147 | # CONFIG_NET_IPIP is not set | ||
148 | # CONFIG_NET_IPGRE is not set | ||
149 | # CONFIG_IP_MROUTE is not set | ||
150 | # CONFIG_ARPD is not set | ||
151 | # CONFIG_SYN_COOKIES is not set | ||
152 | # CONFIG_INET_AH is not set | ||
153 | # CONFIG_INET_ESP is not set | ||
154 | # CONFIG_INET_IPCOMP is not set | ||
155 | # CONFIG_INET_TUNNEL is not set | ||
156 | # CONFIG_INET_DIAG is not set | ||
157 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
158 | CONFIG_TCP_CONG_BIC=y | ||
159 | CONFIG_IPV6=y | ||
160 | # CONFIG_IPV6_PRIVACY is not set | ||
161 | # CONFIG_INET6_AH is not set | ||
162 | # CONFIG_INET6_ESP is not set | ||
163 | # CONFIG_INET6_IPCOMP is not set | ||
164 | # CONFIG_INET6_TUNNEL is not set | ||
165 | # CONFIG_IPV6_TUNNEL is not set | ||
166 | # CONFIG_NETFILTER is not set | ||
167 | |||
168 | # | ||
169 | # DCCP Configuration (EXPERIMENTAL) | ||
170 | # | ||
171 | # CONFIG_IP_DCCP is not set | ||
172 | |||
173 | # | ||
174 | # SCTP Configuration (EXPERIMENTAL) | ||
175 | # | ||
176 | # CONFIG_IP_SCTP is not set | ||
177 | # CONFIG_ATM is not set | ||
178 | # CONFIG_BRIDGE is not set | ||
179 | # CONFIG_VLAN_8021Q is not set | ||
180 | # CONFIG_DECNET is not set | ||
181 | # CONFIG_LLC2 is not set | ||
182 | # CONFIG_IPX is not set | ||
183 | # CONFIG_ATALK is not set | ||
184 | # CONFIG_X25 is not set | ||
185 | # CONFIG_LAPB is not set | ||
186 | # CONFIG_NET_DIVERT is not set | ||
187 | # CONFIG_ECONET is not set | ||
188 | # CONFIG_WAN_ROUTER is not set | ||
189 | # CONFIG_NET_SCHED is not set | ||
190 | # CONFIG_NET_CLS_ROUTE is not set | ||
191 | |||
192 | # | ||
193 | # Network testing | ||
194 | # | ||
195 | # CONFIG_NET_PKTGEN is not set | ||
196 | # CONFIG_HAMRADIO is not set | ||
197 | # CONFIG_IRDA is not set | ||
198 | # CONFIG_BT is not set | ||
199 | # CONFIG_IEEE80211 is not set | ||
200 | |||
201 | # | ||
84 | # Device Drivers | 202 | # Device Drivers |
85 | # | 203 | # |
86 | 204 | ||
87 | # | 205 | # |
88 | # Generic Driver Options | 206 | # Generic Driver Options |
89 | # | 207 | # |
208 | CONFIG_STANDALONE=y | ||
209 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
210 | # CONFIG_FW_LOADER is not set | ||
90 | # CONFIG_DEBUG_DRIVER is not set | 211 | # CONFIG_DEBUG_DRIVER is not set |
91 | 212 | ||
92 | # | 213 | # |
214 | # Connector - unified userspace <-> kernelspace linker | ||
215 | # | ||
216 | # CONFIG_CONNECTOR is not set | ||
217 | |||
218 | # | ||
93 | # Memory Technology Devices (MTD) | 219 | # Memory Technology Devices (MTD) |
94 | # | 220 | # |
95 | # CONFIG_MTD is not set | 221 | # CONFIG_MTD is not set |
@@ -99,12 +225,10 @@ CONFIG_BINFMT_ELF=y | |||
99 | # | 225 | # |
100 | CONFIG_PARPORT=y | 226 | CONFIG_PARPORT=y |
101 | CONFIG_PARPORT_PC=y | 227 | CONFIG_PARPORT_PC=y |
102 | CONFIG_PARPORT_PC_CML1=y | ||
103 | # CONFIG_PARPORT_SERIAL is not set | 228 | # CONFIG_PARPORT_SERIAL is not set |
104 | # CONFIG_PARPORT_PC_FIFO is not set | 229 | # CONFIG_PARPORT_PC_FIFO is not set |
105 | # CONFIG_PARPORT_PC_SUPERIO is not set | 230 | # CONFIG_PARPORT_PC_SUPERIO is not set |
106 | CONFIG_PARPORT_GSC=y | 231 | CONFIG_PARPORT_GSC=y |
107 | # CONFIG_PARPORT_OTHER is not set | ||
108 | # CONFIG_PARPORT_1284 is not set | 232 | # CONFIG_PARPORT_1284 is not set |
109 | 233 | ||
110 | # | 234 | # |
@@ -114,18 +238,31 @@ CONFIG_PARPORT_GSC=y | |||
114 | # | 238 | # |
115 | # Block devices | 239 | # Block devices |
116 | # | 240 | # |
117 | # CONFIG_BLK_DEV_FD is not set | ||
118 | # CONFIG_PARIDE is not set | 241 | # CONFIG_PARIDE is not set |
119 | # CONFIG_BLK_CPQ_DA is not set | 242 | # CONFIG_BLK_CPQ_DA is not set |
120 | # CONFIG_BLK_CPQ_CISS_DA is not set | 243 | # CONFIG_BLK_CPQ_CISS_DA is not set |
121 | # CONFIG_BLK_DEV_DAC960 is not set | 244 | # CONFIG_BLK_DEV_DAC960 is not set |
122 | # CONFIG_BLK_DEV_UMEM is not set | 245 | # CONFIG_BLK_DEV_UMEM is not set |
246 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
123 | CONFIG_BLK_DEV_LOOP=y | 247 | CONFIG_BLK_DEV_LOOP=y |
124 | CONFIG_BLK_DEV_CRYPTOLOOP=y | 248 | CONFIG_BLK_DEV_CRYPTOLOOP=y |
125 | # CONFIG_BLK_DEV_NBD is not set | 249 | # CONFIG_BLK_DEV_NBD is not set |
250 | # CONFIG_BLK_DEV_SX8 is not set | ||
251 | # CONFIG_BLK_DEV_UB is not set | ||
126 | CONFIG_BLK_DEV_RAM=y | 252 | CONFIG_BLK_DEV_RAM=y |
253 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
127 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 254 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
128 | CONFIG_BLK_DEV_INITRD=y | 255 | CONFIG_BLK_DEV_INITRD=y |
256 | # CONFIG_CDROM_PKTCDVD is not set | ||
257 | |||
258 | # | ||
259 | # IO Schedulers | ||
260 | # | ||
261 | CONFIG_IOSCHED_NOOP=y | ||
262 | CONFIG_IOSCHED_AS=y | ||
263 | CONFIG_IOSCHED_DEADLINE=y | ||
264 | CONFIG_IOSCHED_CFQ=y | ||
265 | # CONFIG_ATA_OVER_ETH is not set | ||
129 | 266 | ||
130 | # | 267 | # |
131 | # ATA/ATAPI/MFM/RLL support | 268 | # ATA/ATAPI/MFM/RLL support |
@@ -135,6 +272,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
135 | # | 272 | # |
136 | # SCSI device support | 273 | # SCSI device support |
137 | # | 274 | # |
275 | # CONFIG_RAID_ATTRS is not set | ||
138 | CONFIG_SCSI=y | 276 | CONFIG_SCSI=y |
139 | CONFIG_SCSI_PROC_FS=y | 277 | CONFIG_SCSI_PROC_FS=y |
140 | 278 | ||
@@ -147,53 +285,59 @@ CONFIG_CHR_DEV_ST=y | |||
147 | CONFIG_BLK_DEV_SR=y | 285 | CONFIG_BLK_DEV_SR=y |
148 | # CONFIG_BLK_DEV_SR_VENDOR is not set | 286 | # CONFIG_BLK_DEV_SR_VENDOR is not set |
149 | CONFIG_CHR_DEV_SG=y | 287 | CONFIG_CHR_DEV_SG=y |
288 | # CONFIG_CHR_DEV_SCH is not set | ||
150 | 289 | ||
151 | # | 290 | # |
152 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 291 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
153 | # | 292 | # |
154 | # CONFIG_SCSI_MULTI_LUN is not set | 293 | # CONFIG_SCSI_MULTI_LUN is not set |
155 | # CONFIG_SCSI_REPORT_LUNS is not set | ||
156 | # CONFIG_SCSI_CONSTANTS is not set | 294 | # CONFIG_SCSI_CONSTANTS is not set |
157 | # CONFIG_SCSI_LOGGING is not set | 295 | # CONFIG_SCSI_LOGGING is not set |
158 | 296 | ||
159 | # | 297 | # |
298 | # SCSI Transport Attributes | ||
299 | # | ||
300 | CONFIG_SCSI_SPI_ATTRS=y | ||
301 | # CONFIG_SCSI_FC_ATTRS is not set | ||
302 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
303 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
304 | |||
305 | # | ||
160 | # SCSI low-level drivers | 306 | # SCSI low-level drivers |
161 | # | 307 | # |
162 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | 308 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set |
309 | # CONFIG_SCSI_3W_9XXX is not set | ||
163 | # CONFIG_SCSI_ACARD is not set | 310 | # CONFIG_SCSI_ACARD is not set |
164 | # CONFIG_SCSI_AHA1740 is not set | 311 | # CONFIG_SCSI_AHA1740 is not set |
165 | # CONFIG_SCSI_AACRAID is not set | 312 | # CONFIG_SCSI_AACRAID is not set |
166 | # CONFIG_SCSI_AIC7XXX is not set | 313 | # CONFIG_SCSI_AIC7XXX is not set |
167 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 314 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
168 | # CONFIG_SCSI_AIC79XX is not set | 315 | # CONFIG_SCSI_AIC79XX is not set |
169 | # CONFIG_SCSI_ADVANSYS is not set | 316 | # CONFIG_SCSI_DPT_I2O is not set |
170 | # CONFIG_SCSI_MEGARAID is not set | 317 | # CONFIG_MEGARAID_NEWGEN is not set |
318 | # CONFIG_MEGARAID_LEGACY is not set | ||
319 | # CONFIG_MEGARAID_SAS is not set | ||
171 | # CONFIG_SCSI_SATA is not set | 320 | # CONFIG_SCSI_SATA is not set |
172 | # CONFIG_SCSI_BUSLOGIC is not set | ||
173 | # CONFIG_SCSI_CPQFCTS is not set | ||
174 | # CONFIG_SCSI_DMX3191D is not set | 321 | # CONFIG_SCSI_DMX3191D is not set |
175 | # CONFIG_SCSI_EATA is not set | ||
176 | # CONFIG_SCSI_EATA_PIO is not set | ||
177 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 322 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
178 | # CONFIG_SCSI_GDTH is not set | ||
179 | # CONFIG_SCSI_IPS is not set | 323 | # CONFIG_SCSI_IPS is not set |
324 | # CONFIG_SCSI_INITIO is not set | ||
180 | # CONFIG_SCSI_INIA100 is not set | 325 | # CONFIG_SCSI_INIA100 is not set |
181 | # CONFIG_SCSI_PPA is not set | 326 | # CONFIG_SCSI_PPA is not set |
182 | # CONFIG_SCSI_IMM is not set | 327 | # CONFIG_SCSI_IMM is not set |
183 | CONFIG_SCSI_LASI700=y | 328 | CONFIG_SCSI_LASI700=y |
184 | CONFIG_53C700_MEM_MAPPED=y | ||
185 | CONFIG_53C700_LE_ON_BE=y | 329 | CONFIG_53C700_LE_ON_BE=y |
186 | CONFIG_SCSI_SYM53C8XX_2=y | 330 | CONFIG_SCSI_SYM53C8XX_2=y |
187 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 | 331 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 |
188 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | 332 | CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 |
189 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 333 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
190 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 334 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set |
335 | # CONFIG_SCSI_IPR is not set | ||
191 | CONFIG_SCSI_ZALON=y | 336 | CONFIG_SCSI_ZALON=y |
192 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 | 337 | CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 |
193 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 | 338 | CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 |
194 | CONFIG_SCSI_NCR53C8XX_SYNC=20 | 339 | CONFIG_SCSI_NCR53C8XX_SYNC=20 |
195 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set | 340 | # CONFIG_SCSI_NCR53C8XX_PROFILE is not set |
196 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
197 | # CONFIG_SCSI_QLOGIC_FC is not set | 341 | # CONFIG_SCSI_QLOGIC_FC is not set |
198 | # CONFIG_SCSI_QLOGIC_1280 is not set | 342 | # CONFIG_SCSI_QLOGIC_1280 is not set |
199 | CONFIG_SCSI_QLA2XXX=y | 343 | CONFIG_SCSI_QLA2XXX=y |
@@ -202,7 +346,8 @@ CONFIG_SCSI_QLA2XXX=y | |||
202 | # CONFIG_SCSI_QLA2300 is not set | 346 | # CONFIG_SCSI_QLA2300 is not set |
203 | # CONFIG_SCSI_QLA2322 is not set | 347 | # CONFIG_SCSI_QLA2322 is not set |
204 | # CONFIG_SCSI_QLA6312 is not set | 348 | # CONFIG_SCSI_QLA6312 is not set |
205 | # CONFIG_SCSI_QLA6322 is not set | 349 | # CONFIG_SCSI_QLA24XX is not set |
350 | # CONFIG_SCSI_LPFC is not set | ||
206 | # CONFIG_SCSI_SIM710 is not set | 351 | # CONFIG_SCSI_SIM710 is not set |
207 | # CONFIG_SCSI_DC395x is not set | 352 | # CONFIG_SCSI_DC395x is not set |
208 | # CONFIG_SCSI_DC390T is not set | 353 | # CONFIG_SCSI_DC390T is not set |
@@ -217,15 +362,20 @@ CONFIG_BLK_DEV_MD=y | |||
217 | CONFIG_MD_LINEAR=y | 362 | CONFIG_MD_LINEAR=y |
218 | CONFIG_MD_RAID0=y | 363 | CONFIG_MD_RAID0=y |
219 | CONFIG_MD_RAID1=y | 364 | CONFIG_MD_RAID1=y |
365 | # CONFIG_MD_RAID10 is not set | ||
220 | CONFIG_MD_RAID5=y | 366 | CONFIG_MD_RAID5=y |
221 | # CONFIG_MD_RAID6 is not set | 367 | # CONFIG_MD_RAID6 is not set |
222 | # CONFIG_MD_MULTIPATH is not set | 368 | # CONFIG_MD_MULTIPATH is not set |
369 | # CONFIG_MD_FAULTY is not set | ||
223 | # CONFIG_BLK_DEV_DM is not set | 370 | # CONFIG_BLK_DEV_DM is not set |
224 | 371 | ||
225 | # | 372 | # |
226 | # Fusion MPT device support | 373 | # Fusion MPT device support |
227 | # | 374 | # |
228 | # CONFIG_FUSION is not set | 375 | # CONFIG_FUSION is not set |
376 | # CONFIG_FUSION_SPI is not set | ||
377 | # CONFIG_FUSION_FC is not set | ||
378 | # CONFIG_FUSION_SAS is not set | ||
229 | 379 | ||
230 | # | 380 | # |
231 | # IEEE 1394 (FireWire) support | 381 | # IEEE 1394 (FireWire) support |
@@ -238,80 +388,23 @@ CONFIG_MD_RAID5=y | |||
238 | # CONFIG_I2O is not set | 388 | # CONFIG_I2O is not set |
239 | 389 | ||
240 | # | 390 | # |
241 | # Macintosh device drivers | 391 | # Network device support |
242 | # | ||
243 | |||
244 | # | ||
245 | # Networking support | ||
246 | # | ||
247 | CONFIG_NET=y | ||
248 | |||
249 | # | ||
250 | # Networking options | ||
251 | # | ||
252 | CONFIG_PACKET=y | ||
253 | CONFIG_PACKET_MMAP=y | ||
254 | CONFIG_NETLINK_DEV=y | ||
255 | CONFIG_UNIX=y | ||
256 | # CONFIG_NET_KEY is not set | ||
257 | CONFIG_INET=y | ||
258 | CONFIG_IP_MULTICAST=y | ||
259 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
260 | CONFIG_IP_PNP=y | ||
261 | # CONFIG_IP_PNP_DHCP is not set | ||
262 | CONFIG_IP_PNP_BOOTP=y | ||
263 | # CONFIG_IP_PNP_RARP is not set | ||
264 | # CONFIG_NET_IPIP is not set | ||
265 | # CONFIG_NET_IPGRE is not set | ||
266 | # CONFIG_IP_MROUTE is not set | ||
267 | # CONFIG_ARPD is not set | ||
268 | # CONFIG_INET_ECN is not set | ||
269 | # CONFIG_SYN_COOKIES is not set | ||
270 | # CONFIG_INET_AH is not set | ||
271 | # CONFIG_INET_ESP is not set | ||
272 | # CONFIG_INET_IPCOMP is not set | ||
273 | # CONFIG_IPV6 is not set | ||
274 | # CONFIG_DECNET is not set | ||
275 | # CONFIG_BRIDGE is not set | ||
276 | # CONFIG_NETFILTER is not set | ||
277 | |||
278 | # | ||
279 | # SCTP Configuration (EXPERIMENTAL) | ||
280 | # | ||
281 | CONFIG_IPV6_SCTP__=y | ||
282 | # CONFIG_IP_SCTP is not set | ||
283 | # CONFIG_ATM is not set | ||
284 | # CONFIG_VLAN_8021Q is not set | ||
285 | # CONFIG_LLC2 is not set | ||
286 | # CONFIG_IPX is not set | ||
287 | # CONFIG_ATALK is not set | ||
288 | # CONFIG_X25 is not set | ||
289 | # CONFIG_LAPB is not set | ||
290 | # CONFIG_NET_DIVERT is not set | ||
291 | # CONFIG_ECONET is not set | ||
292 | # CONFIG_WAN_ROUTER is not set | ||
293 | # CONFIG_NET_HW_FLOWCONTROL is not set | ||
294 | |||
295 | # | ||
296 | # QoS and/or fair queueing | ||
297 | # | ||
298 | # CONFIG_NET_SCHED is not set | ||
299 | |||
300 | # | ||
301 | # Network testing | ||
302 | # | 392 | # |
303 | # CONFIG_NET_PKTGEN is not set | ||
304 | CONFIG_NETDEVICES=y | 393 | CONFIG_NETDEVICES=y |
394 | # CONFIG_DUMMY is not set | ||
395 | # CONFIG_BONDING is not set | ||
396 | # CONFIG_EQUALIZER is not set | ||
397 | # CONFIG_TUN is not set | ||
305 | 398 | ||
306 | # | 399 | # |
307 | # ARCnet devices | 400 | # ARCnet devices |
308 | # | 401 | # |
309 | # CONFIG_ARCNET is not set | 402 | # CONFIG_ARCNET is not set |
310 | # CONFIG_DUMMY is not set | 403 | |
311 | # CONFIG_BONDING is not set | 404 | # |
312 | # CONFIG_EQUALIZER is not set | 405 | # PHY device support |
313 | # CONFIG_TUN is not set | 406 | # |
314 | # CONFIG_ETHERTAP is not set | 407 | # CONFIG_PHYLIB is not set |
315 | 408 | ||
316 | # | 409 | # |
317 | # Ethernet (10 or 100Mbit) | 410 | # Ethernet (10 or 100Mbit) |
@@ -321,6 +414,7 @@ CONFIG_NET_ETHERNET=y | |||
321 | CONFIG_LASI_82596=y | 414 | CONFIG_LASI_82596=y |
322 | # CONFIG_HAPPYMEAL is not set | 415 | # CONFIG_HAPPYMEAL is not set |
323 | # CONFIG_SUNGEM is not set | 416 | # CONFIG_SUNGEM is not set |
417 | # CONFIG_CASSINI is not set | ||
324 | # CONFIG_NET_VENDOR_3COM is not set | 418 | # CONFIG_NET_VENDOR_3COM is not set |
325 | # CONFIG_NET_VENDOR_SMC is not set | 419 | # CONFIG_NET_VENDOR_SMC is not set |
326 | 420 | ||
@@ -336,6 +430,7 @@ CONFIG_TULIP=y | |||
336 | # CONFIG_DE4X5 is not set | 430 | # CONFIG_DE4X5 is not set |
337 | # CONFIG_WINBOND_840 is not set | 431 | # CONFIG_WINBOND_840 is not set |
338 | # CONFIG_DM9102 is not set | 432 | # CONFIG_DM9102 is not set |
433 | # CONFIG_ULI526X is not set | ||
339 | # CONFIG_DEPCA is not set | 434 | # CONFIG_DEPCA is not set |
340 | # CONFIG_HP100 is not set | 435 | # CONFIG_HP100 is not set |
341 | CONFIG_NET_PCI=y | 436 | CONFIG_NET_PCI=y |
@@ -361,30 +456,37 @@ CONFIG_NET_PCI=y | |||
361 | # CONFIG_SUNDANCE is not set | 456 | # CONFIG_SUNDANCE is not set |
362 | # CONFIG_TLAN is not set | 457 | # CONFIG_TLAN is not set |
363 | # CONFIG_VIA_RHINE is not set | 458 | # CONFIG_VIA_RHINE is not set |
459 | # CONFIG_NET_POCKET is not set | ||
364 | 460 | ||
365 | # | 461 | # |
366 | # Ethernet (1000 Mbit) | 462 | # Ethernet (1000 Mbit) |
367 | # | 463 | # |
368 | # CONFIG_ACENIC is not set | 464 | CONFIG_ACENIC=y |
369 | CONFIG_DL2K=y | 465 | # CONFIG_ACENIC_OMIT_TIGON_I is not set |
466 | # CONFIG_DL2K is not set | ||
370 | # CONFIG_E1000 is not set | 467 | # CONFIG_E1000 is not set |
371 | # CONFIG_NS83820 is not set | 468 | # CONFIG_NS83820 is not set |
372 | # CONFIG_HAMACHI is not set | 469 | # CONFIG_HAMACHI is not set |
373 | # CONFIG_YELLOWFIN is not set | 470 | # CONFIG_YELLOWFIN is not set |
374 | # CONFIG_R8169 is not set | 471 | # CONFIG_R8169 is not set |
375 | # CONFIG_SIS190 is not set | 472 | # CONFIG_SIS190 is not set |
473 | # CONFIG_SKGE is not set | ||
376 | # CONFIG_SK98LIN is not set | 474 | # CONFIG_SK98LIN is not set |
377 | # CONFIG_TIGON3 is not set | 475 | # CONFIG_VIA_VELOCITY is not set |
476 | CONFIG_TIGON3=y | ||
477 | # CONFIG_BNX2 is not set | ||
378 | 478 | ||
379 | # | 479 | # |
380 | # Ethernet (10000 Mbit) | 480 | # Ethernet (10000 Mbit) |
381 | # | 481 | # |
482 | # CONFIG_CHELSIO_T1 is not set | ||
382 | # CONFIG_IXGB is not set | 483 | # CONFIG_IXGB is not set |
383 | # CONFIG_FDDI is not set | 484 | # CONFIG_S2IO is not set |
384 | # CONFIG_HIPPI is not set | 485 | |
385 | # CONFIG_PLIP is not set | 486 | # |
386 | # CONFIG_PPP is not set | 487 | # Token Ring devices |
387 | # CONFIG_SLIP is not set | 488 | # |
489 | # CONFIG_TR is not set | ||
388 | 490 | ||
389 | # | 491 | # |
390 | # Wireless LAN (non-hamradio) | 492 | # Wireless LAN (non-hamradio) |
@@ -399,38 +501,30 @@ CONFIG_NET_RADIO=y | |||
399 | # | 501 | # |
400 | # Wireless 802.11b ISA/PCI cards support | 502 | # Wireless 802.11b ISA/PCI cards support |
401 | # | 503 | # |
402 | CONFIG_AIRO=y | ||
403 | # CONFIG_HERMES is not set | 504 | # CONFIG_HERMES is not set |
404 | # CONFIG_ATMEL is not set | 505 | # CONFIG_ATMEL is not set |
405 | CONFIG_NET_WIRELESS=y | ||
406 | 506 | ||
407 | # | 507 | # |
408 | # Token Ring devices | 508 | # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support |
409 | # | 509 | # |
410 | # CONFIG_TR is not set | 510 | # CONFIG_PRISM54 is not set |
411 | # CONFIG_NET_FC is not set | 511 | # CONFIG_HOSTAP is not set |
412 | # CONFIG_RCPCI is not set | 512 | CONFIG_NET_WIRELESS=y |
413 | # CONFIG_SHAPER is not set | ||
414 | 513 | ||
415 | # | 514 | # |
416 | # Wan interfaces | 515 | # Wan interfaces |
417 | # | 516 | # |
418 | # CONFIG_WAN is not set | 517 | # CONFIG_WAN is not set |
419 | 518 | # CONFIG_FDDI is not set | |
420 | # | 519 | # CONFIG_HIPPI is not set |
421 | # Amateur Radio support | 520 | # CONFIG_PLIP is not set |
422 | # | 521 | # CONFIG_PPP is not set |
423 | # CONFIG_HAMRADIO is not set | 522 | # CONFIG_SLIP is not set |
424 | 523 | # CONFIG_NET_FC is not set | |
425 | # | 524 | # CONFIG_SHAPER is not set |
426 | # IrDA (infrared) support | 525 | # CONFIG_NETCONSOLE is not set |
427 | # | 526 | # CONFIG_NETPOLL is not set |
428 | # CONFIG_IRDA is not set | 527 | # CONFIG_NET_POLL_CONTROLLER is not set |
429 | |||
430 | # | ||
431 | # Bluetooth support | ||
432 | # | ||
433 | # CONFIG_BT is not set | ||
434 | 528 | ||
435 | # | 529 | # |
436 | # ISDN subsystem | 530 | # ISDN subsystem |
@@ -460,51 +554,67 @@ CONFIG_INPUT_EVDEV=y | |||
460 | # CONFIG_INPUT_EVBUG is not set | 554 | # CONFIG_INPUT_EVBUG is not set |
461 | 555 | ||
462 | # | 556 | # |
463 | # Input I/O drivers | ||
464 | # | ||
465 | # CONFIG_GAMEPORT is not set | ||
466 | CONFIG_SOUND_GAMEPORT=y | ||
467 | CONFIG_SERIO=y | ||
468 | # CONFIG_SERIO_SERPORT is not set | ||
469 | # CONFIG_SERIO_PARKBD is not set | ||
470 | CONFIG_SERIO_GSCPS2=y | ||
471 | CONFIG_HP_SDC=y | ||
472 | CONFIG_HIL_MLC=y | ||
473 | # CONFIG_SERIO_PCIPS2 is not set | ||
474 | |||
475 | # | ||
476 | # Input Device Drivers | 557 | # Input Device Drivers |
477 | # | 558 | # |
478 | CONFIG_INPUT_KEYBOARD=y | 559 | CONFIG_INPUT_KEYBOARD=y |
479 | # CONFIG_KEYBOARD_ATKBD is not set | 560 | # CONFIG_KEYBOARD_ATKBD is not set |
480 | # CONFIG_KEYBOARD_SUNKBD is not set | 561 | # CONFIG_KEYBOARD_SUNKBD is not set |
562 | # CONFIG_KEYBOARD_LKKBD is not set | ||
481 | # CONFIG_KEYBOARD_XTKBD is not set | 563 | # CONFIG_KEYBOARD_XTKBD is not set |
482 | # CONFIG_KEYBOARD_NEWTON is not set | 564 | # CONFIG_KEYBOARD_NEWTON is not set |
565 | CONFIG_KEYBOARD_HIL_OLD=y | ||
483 | CONFIG_KEYBOARD_HIL=y | 566 | CONFIG_KEYBOARD_HIL=y |
484 | CONFIG_INPUT_MOUSE=y | 567 | CONFIG_INPUT_MOUSE=y |
485 | # CONFIG_MOUSE_PS2 is not set | 568 | # CONFIG_MOUSE_PS2 is not set |
486 | # CONFIG_MOUSE_SERIAL is not set | 569 | # CONFIG_MOUSE_SERIAL is not set |
570 | # CONFIG_MOUSE_VSXXXAA is not set | ||
487 | # CONFIG_MOUSE_HIL is not set | 571 | # CONFIG_MOUSE_HIL is not set |
488 | CONFIG_INPUT_JOYSTICK=y | 572 | CONFIG_INPUT_JOYSTICK=y |
573 | # CONFIG_JOYSTICK_ANALOG is not set | ||
574 | # CONFIG_JOYSTICK_A3D is not set | ||
575 | # CONFIG_JOYSTICK_ADI is not set | ||
576 | # CONFIG_JOYSTICK_COBRA is not set | ||
577 | # CONFIG_JOYSTICK_GF2K is not set | ||
578 | # CONFIG_JOYSTICK_GRIP is not set | ||
579 | # CONFIG_JOYSTICK_GRIP_MP is not set | ||
580 | # CONFIG_JOYSTICK_GUILLEMOT is not set | ||
581 | # CONFIG_JOYSTICK_INTERACT is not set | ||
582 | # CONFIG_JOYSTICK_SIDEWINDER is not set | ||
583 | # CONFIG_JOYSTICK_TMDC is not set | ||
489 | # CONFIG_JOYSTICK_IFORCE is not set | 584 | # CONFIG_JOYSTICK_IFORCE is not set |
490 | # CONFIG_JOYSTICK_WARRIOR is not set | 585 | # CONFIG_JOYSTICK_WARRIOR is not set |
491 | # CONFIG_JOYSTICK_MAGELLAN is not set | 586 | # CONFIG_JOYSTICK_MAGELLAN is not set |
492 | # CONFIG_JOYSTICK_SPACEORB is not set | 587 | # CONFIG_JOYSTICK_SPACEORB is not set |
493 | # CONFIG_JOYSTICK_SPACEBALL is not set | 588 | # CONFIG_JOYSTICK_SPACEBALL is not set |
494 | # CONFIG_JOYSTICK_STINGER is not set | 589 | # CONFIG_JOYSTICK_STINGER is not set |
495 | # CONFIG_JOYSTICK_TWIDDLER is not set | 590 | # CONFIG_JOYSTICK_TWIDJOY is not set |
496 | # CONFIG_JOYSTICK_DB9 is not set | 591 | # CONFIG_JOYSTICK_DB9 is not set |
497 | # CONFIG_JOYSTICK_GAMECON is not set | 592 | # CONFIG_JOYSTICK_GAMECON is not set |
498 | # CONFIG_JOYSTICK_TURBOGRAFX is not set | 593 | # CONFIG_JOYSTICK_TURBOGRAFX is not set |
499 | # CONFIG_INPUT_JOYDUMP is not set | 594 | # CONFIG_JOYSTICK_JOYDUMP is not set |
500 | CONFIG_INPUT_TOUCHSCREEN=y | 595 | CONFIG_INPUT_TOUCHSCREEN=y |
501 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 596 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
597 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
598 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
599 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
502 | CONFIG_INPUT_MISC=y | 600 | CONFIG_INPUT_MISC=y |
503 | # CONFIG_INPUT_PCSPKR is not set | ||
504 | # CONFIG_INPUT_UINPUT is not set | 601 | # CONFIG_INPUT_UINPUT is not set |
505 | CONFIG_HP_SDC_RTC=y | 602 | CONFIG_HP_SDC_RTC=y |
506 | 603 | ||
507 | # | 604 | # |
605 | # Hardware I/O ports | ||
606 | # | ||
607 | CONFIG_SERIO=y | ||
608 | # CONFIG_SERIO_SERPORT is not set | ||
609 | # CONFIG_SERIO_PARKBD is not set | ||
610 | CONFIG_SERIO_GSCPS2=y | ||
611 | CONFIG_HP_SDC=y | ||
612 | CONFIG_HIL_MLC=y | ||
613 | # CONFIG_SERIO_PCIPS2 is not set | ||
614 | # CONFIG_SERIO_RAW is not set | ||
615 | # CONFIG_GAMEPORT is not set | ||
616 | |||
617 | # | ||
508 | # Character devices | 618 | # Character devices |
509 | # | 619 | # |
510 | CONFIG_VT=y | 620 | CONFIG_VT=y |
@@ -522,16 +632,16 @@ CONFIG_SERIAL_8250_EXTENDED=y | |||
522 | CONFIG_SERIAL_8250_MANY_PORTS=y | 632 | CONFIG_SERIAL_8250_MANY_PORTS=y |
523 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 633 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
524 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 634 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
525 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
526 | # CONFIG_SERIAL_8250_RSA is not set | 635 | # CONFIG_SERIAL_8250_RSA is not set |
527 | 636 | ||
528 | # | 637 | # |
529 | # Non-8250 serial port support | 638 | # Non-8250 serial port support |
530 | # | 639 | # |
531 | # CONFIG_SERIAL_MUX is not set | 640 | CONFIG_SERIAL_MUX=y |
532 | # CONFIG_PDC_CONSOLE is not set | 641 | CONFIG_SERIAL_MUX_CONSOLE=y |
533 | CONFIG_SERIAL_CORE=y | 642 | CONFIG_SERIAL_CORE=y |
534 | CONFIG_SERIAL_CORE_CONSOLE=y | 643 | CONFIG_SERIAL_CORE_CONSOLE=y |
644 | # CONFIG_SERIAL_JSM is not set | ||
535 | CONFIG_UNIX98_PTYS=y | 645 | CONFIG_UNIX98_PTYS=y |
536 | CONFIG_LEGACY_PTYS=y | 646 | CONFIG_LEGACY_PTYS=y |
537 | CONFIG_LEGACY_PTY_COUNT=256 | 647 | CONFIG_LEGACY_PTY_COUNT=256 |
@@ -541,12 +651,6 @@ CONFIG_PRINTER=y | |||
541 | # CONFIG_TIPAR is not set | 651 | # CONFIG_TIPAR is not set |
542 | 652 | ||
543 | # | 653 | # |
544 | # Mice | ||
545 | # | ||
546 | # CONFIG_BUSMOUSE is not set | ||
547 | # CONFIG_QIC02_TAPE is not set | ||
548 | |||
549 | # | ||
550 | # IPMI | 654 | # IPMI |
551 | # | 655 | # |
552 | # CONFIG_IPMI_HANDLER is not set | 656 | # CONFIG_IPMI_HANDLER is not set |
@@ -555,7 +659,6 @@ CONFIG_PRINTER=y | |||
555 | # Watchdog Cards | 659 | # Watchdog Cards |
556 | # | 660 | # |
557 | # CONFIG_WATCHDOG is not set | 661 | # CONFIG_WATCHDOG is not set |
558 | # CONFIG_NVRAM is not set | ||
559 | CONFIG_GEN_RTC=y | 662 | CONFIG_GEN_RTC=y |
560 | # CONFIG_GEN_RTC_X is not set | 663 | # CONFIG_GEN_RTC_X is not set |
561 | # CONFIG_DTLK is not set | 664 | # CONFIG_DTLK is not set |
@@ -565,21 +668,40 @@ CONFIG_GEN_RTC=y | |||
565 | # | 668 | # |
566 | # Ftape, the floppy tape device driver | 669 | # Ftape, the floppy tape device driver |
567 | # | 670 | # |
568 | # CONFIG_FTAPE is not set | ||
569 | # CONFIG_AGP is not set | ||
570 | # CONFIG_DRM is not set | 671 | # CONFIG_DRM is not set |
571 | # CONFIG_RAW_DRIVER is not set | 672 | # CONFIG_RAW_DRIVER is not set |
572 | 673 | ||
573 | # | 674 | # |
675 | # TPM devices | ||
676 | # | ||
677 | # CONFIG_TCG_TPM is not set | ||
678 | |||
679 | # | ||
574 | # I2C support | 680 | # I2C support |
575 | # | 681 | # |
576 | # CONFIG_I2C is not set | 682 | # CONFIG_I2C is not set |
577 | 683 | ||
578 | # | 684 | # |
685 | # Dallas's 1-wire bus | ||
686 | # | ||
687 | # CONFIG_W1 is not set | ||
688 | |||
689 | # | ||
690 | # Hardware Monitoring support | ||
691 | # | ||
692 | CONFIG_HWMON=y | ||
693 | # CONFIG_HWMON_VID is not set | ||
694 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
695 | |||
696 | # | ||
579 | # Misc devices | 697 | # Misc devices |
580 | # | 698 | # |
581 | 699 | ||
582 | # | 700 | # |
701 | # Multimedia Capabilities Port drivers | ||
702 | # | ||
703 | |||
704 | # | ||
583 | # Multimedia devices | 705 | # Multimedia devices |
584 | # | 706 | # |
585 | # CONFIG_VIDEO_DEV is not set | 707 | # CONFIG_VIDEO_DEV is not set |
@@ -593,34 +715,45 @@ CONFIG_GEN_RTC=y | |||
593 | # Graphics support | 715 | # Graphics support |
594 | # | 716 | # |
595 | CONFIG_FB=y | 717 | CONFIG_FB=y |
718 | CONFIG_FB_CFB_FILLRECT=y | ||
719 | CONFIG_FB_CFB_COPYAREA=y | ||
720 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
721 | CONFIG_FB_SOFT_CURSOR=y | ||
722 | # CONFIG_FB_MACMODES is not set | ||
723 | # CONFIG_FB_MODE_HELPERS is not set | ||
724 | # CONFIG_FB_TILEBLITTING is not set | ||
725 | # CONFIG_FB_CIRRUS is not set | ||
596 | # CONFIG_FB_PM2 is not set | 726 | # CONFIG_FB_PM2 is not set |
597 | # CONFIG_FB_CYBER2000 is not set | 727 | # CONFIG_FB_CYBER2000 is not set |
728 | # CONFIG_FB_ASILIANT is not set | ||
598 | # CONFIG_FB_IMSTT is not set | 729 | # CONFIG_FB_IMSTT is not set |
599 | CONFIG_FB_STI=y | 730 | CONFIG_FB_STI=y |
731 | # CONFIG_FB_NVIDIA is not set | ||
600 | # CONFIG_FB_RIVA is not set | 732 | # CONFIG_FB_RIVA is not set |
601 | # CONFIG_FB_MATROX is not set | 733 | # CONFIG_FB_MATROX is not set |
602 | # CONFIG_FB_RADEON_OLD is not set | 734 | # CONFIG_FB_RADEON_OLD is not set |
603 | # CONFIG_FB_RADEON is not set | 735 | # CONFIG_FB_RADEON is not set |
604 | # CONFIG_FB_ATY128 is not set | 736 | # CONFIG_FB_ATY128 is not set |
605 | # CONFIG_FB_ATY is not set | 737 | # CONFIG_FB_ATY is not set |
738 | # CONFIG_FB_SAVAGE is not set | ||
606 | # CONFIG_FB_SIS is not set | 739 | # CONFIG_FB_SIS is not set |
607 | # CONFIG_FB_NEOMAGIC is not set | 740 | # CONFIG_FB_NEOMAGIC is not set |
608 | # CONFIG_FB_KYRO is not set | 741 | # CONFIG_FB_KYRO is not set |
609 | # CONFIG_FB_3DFX is not set | 742 | # CONFIG_FB_3DFX is not set |
610 | # CONFIG_FB_VOODOO1 is not set | 743 | # CONFIG_FB_VOODOO1 is not set |
744 | # CONFIG_FB_CYBLA is not set | ||
611 | # CONFIG_FB_TRIDENT is not set | 745 | # CONFIG_FB_TRIDENT is not set |
746 | # CONFIG_FB_S1D13XXX is not set | ||
612 | # CONFIG_FB_VIRTUAL is not set | 747 | # CONFIG_FB_VIRTUAL is not set |
613 | 748 | ||
614 | # | 749 | # |
615 | # Console display driver support | 750 | # Console display driver support |
616 | # | 751 | # |
617 | # CONFIG_MDA_CONSOLE is not set | 752 | CONFIG_DUMMY_CONSOLE=y |
618 | CONFIG_STI_CONSOLE=y | ||
619 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 | 753 | CONFIG_DUMMY_CONSOLE_COLUMNS=160 |
620 | CONFIG_DUMMY_CONSOLE_ROWS=64 | 754 | CONFIG_DUMMY_CONSOLE_ROWS=64 |
621 | CONFIG_DUMMY_CONSOLE=y | ||
622 | CONFIG_FRAMEBUFFER_CONSOLE=y | 755 | CONFIG_FRAMEBUFFER_CONSOLE=y |
623 | CONFIG_PCI_CONSOLE=y | 756 | CONFIG_STI_CONSOLE=y |
624 | # CONFIG_FONTS is not set | 757 | # CONFIG_FONTS is not set |
625 | CONFIG_FONT_8x8=y | 758 | CONFIG_FONT_8x8=y |
626 | CONFIG_FONT_8x16=y | 759 | CONFIG_FONT_8x16=y |
@@ -629,6 +762,7 @@ CONFIG_FONT_8x16=y | |||
629 | # Logo configuration | 762 | # Logo configuration |
630 | # | 763 | # |
631 | # CONFIG_LOGO is not set | 764 | # CONFIG_LOGO is not set |
765 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
632 | 766 | ||
633 | # | 767 | # |
634 | # Sound | 768 | # Sound |
@@ -638,17 +772,94 @@ CONFIG_SOUND=y | |||
638 | # | 772 | # |
639 | # Advanced Linux Sound Architecture | 773 | # Advanced Linux Sound Architecture |
640 | # | 774 | # |
641 | # CONFIG_SND is not set | 775 | CONFIG_SND=y |
776 | CONFIG_SND_TIMER=y | ||
777 | CONFIG_SND_PCM=y | ||
778 | CONFIG_SND_SEQUENCER=y | ||
779 | # CONFIG_SND_SEQ_DUMMY is not set | ||
780 | CONFIG_SND_OSSEMUL=y | ||
781 | CONFIG_SND_MIXER_OSS=y | ||
782 | CONFIG_SND_PCM_OSS=y | ||
783 | CONFIG_SND_SEQUENCER_OSS=y | ||
784 | # CONFIG_SND_VERBOSE_PRINTK is not set | ||
785 | # CONFIG_SND_DEBUG is not set | ||
786 | |||
787 | # | ||
788 | # Generic devices | ||
789 | # | ||
790 | # CONFIG_SND_DUMMY is not set | ||
791 | # CONFIG_SND_VIRMIDI is not set | ||
792 | # CONFIG_SND_MTPAV is not set | ||
793 | # CONFIG_SND_SERIAL_U16550 is not set | ||
794 | # CONFIG_SND_MPU401 is not set | ||
795 | CONFIG_SND_AC97_CODEC=y | ||
796 | CONFIG_SND_AC97_BUS=y | ||
797 | |||
798 | # | ||
799 | # PCI devices | ||
800 | # | ||
801 | # CONFIG_SND_ALI5451 is not set | ||
802 | # CONFIG_SND_ATIIXP is not set | ||
803 | # CONFIG_SND_ATIIXP_MODEM is not set | ||
804 | # CONFIG_SND_AU8810 is not set | ||
805 | # CONFIG_SND_AU8820 is not set | ||
806 | # CONFIG_SND_AU8830 is not set | ||
807 | # CONFIG_SND_AZT3328 is not set | ||
808 | # CONFIG_SND_BT87X is not set | ||
809 | # CONFIG_SND_CS46XX is not set | ||
810 | # CONFIG_SND_CS4281 is not set | ||
811 | # CONFIG_SND_EMU10K1 is not set | ||
812 | # CONFIG_SND_EMU10K1X is not set | ||
813 | # CONFIG_SND_CA0106 is not set | ||
814 | # CONFIG_SND_KORG1212 is not set | ||
815 | # CONFIG_SND_MIXART is not set | ||
816 | # CONFIG_SND_NM256 is not set | ||
817 | # CONFIG_SND_RME32 is not set | ||
818 | # CONFIG_SND_RME96 is not set | ||
819 | # CONFIG_SND_RME9652 is not set | ||
820 | # CONFIG_SND_HDSP is not set | ||
821 | # CONFIG_SND_HDSPM is not set | ||
822 | # CONFIG_SND_TRIDENT is not set | ||
823 | # CONFIG_SND_YMFPCI is not set | ||
824 | CONFIG_SND_AD1889=y | ||
825 | # CONFIG_SND_AD1889_OPL3 is not set | ||
826 | # CONFIG_SND_CMIPCI is not set | ||
827 | # CONFIG_SND_ENS1370 is not set | ||
828 | # CONFIG_SND_ENS1371 is not set | ||
829 | # CONFIG_SND_ES1938 is not set | ||
830 | # CONFIG_SND_ES1968 is not set | ||
831 | # CONFIG_SND_MAESTRO3 is not set | ||
832 | # CONFIG_SND_FM801 is not set | ||
833 | # CONFIG_SND_ICE1712 is not set | ||
834 | # CONFIG_SND_ICE1724 is not set | ||
835 | # CONFIG_SND_INTEL8X0 is not set | ||
836 | # CONFIG_SND_INTEL8X0M is not set | ||
837 | # CONFIG_SND_SONICVIBES is not set | ||
838 | # CONFIG_SND_VIA82XX is not set | ||
839 | # CONFIG_SND_VIA82XX_MODEM is not set | ||
840 | # CONFIG_SND_VX222 is not set | ||
841 | # CONFIG_SND_HDA_INTEL is not set | ||
842 | |||
843 | # | ||
844 | # USB devices | ||
845 | # | ||
846 | # CONFIG_SND_USB_AUDIO is not set | ||
847 | |||
848 | # | ||
849 | # GSC devices | ||
850 | # | ||
851 | CONFIG_SND_HARMONY=y | ||
642 | 852 | ||
643 | # | 853 | # |
644 | # Open Sound System | 854 | # Open Sound System |
645 | # | 855 | # |
646 | # CONFIG_SOUND_PRIME is not set | 856 | # CONFIG_SOUND_PRIME is not set |
647 | # CONFIG_SOUND_HARMONY is not set | ||
648 | 857 | ||
649 | # | 858 | # |
650 | # USB support | 859 | # USB support |
651 | # | 860 | # |
861 | CONFIG_USB_ARCH_HAS_HCD=y | ||
862 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
652 | CONFIG_USB=y | 863 | CONFIG_USB=y |
653 | CONFIG_USB_DEBUG=y | 864 | CONFIG_USB_DEBUG=y |
654 | 865 | ||
@@ -658,26 +869,36 @@ CONFIG_USB_DEBUG=y | |||
658 | # CONFIG_USB_DEVICEFS is not set | 869 | # CONFIG_USB_DEVICEFS is not set |
659 | # CONFIG_USB_BANDWIDTH is not set | 870 | # CONFIG_USB_BANDWIDTH is not set |
660 | # CONFIG_USB_DYNAMIC_MINORS is not set | 871 | # CONFIG_USB_DYNAMIC_MINORS is not set |
872 | # CONFIG_USB_OTG is not set | ||
661 | 873 | ||
662 | # | 874 | # |
663 | # USB Host Controller Drivers | 875 | # USB Host Controller Drivers |
664 | # | 876 | # |
665 | CONFIG_USB_EHCI_HCD=y | 877 | CONFIG_USB_EHCI_HCD=y |
878 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
879 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||
880 | # CONFIG_USB_ISP116X_HCD is not set | ||
666 | CONFIG_USB_OHCI_HCD=y | 881 | CONFIG_USB_OHCI_HCD=y |
882 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
883 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
667 | # CONFIG_USB_UHCI_HCD is not set | 884 | # CONFIG_USB_UHCI_HCD is not set |
885 | # CONFIG_USB_SL811_HCD is not set | ||
668 | 886 | ||
669 | # | 887 | # |
670 | # USB Device Class drivers | 888 | # USB Device Class drivers |
671 | # | 889 | # |
672 | # CONFIG_USB_AUDIO is not set | 890 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
673 | # CONFIG_USB_BLUETOOTH_TTY is not set | 891 | # CONFIG_USB_BLUETOOTH_TTY is not set |
674 | # CONFIG_USB_MIDI is not set | ||
675 | # CONFIG_USB_ACM is not set | 892 | # CONFIG_USB_ACM is not set |
676 | # CONFIG_USB_PRINTER is not set | 893 | # CONFIG_USB_PRINTER is not set |
894 | |||
895 | # | ||
896 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
897 | # | ||
677 | # CONFIG_USB_STORAGE is not set | 898 | # CONFIG_USB_STORAGE is not set |
678 | 899 | ||
679 | # | 900 | # |
680 | # USB Human Interface Devices (HID) | 901 | # USB Input Devices |
681 | # | 902 | # |
682 | # CONFIG_USB_HID is not set | 903 | # CONFIG_USB_HID is not set |
683 | 904 | ||
@@ -688,16 +909,23 @@ CONFIG_USB_OHCI_HCD=y | |||
688 | # CONFIG_USB_MOUSE is not set | 909 | # CONFIG_USB_MOUSE is not set |
689 | # CONFIG_USB_AIPTEK is not set | 910 | # CONFIG_USB_AIPTEK is not set |
690 | # CONFIG_USB_WACOM is not set | 911 | # CONFIG_USB_WACOM is not set |
912 | # CONFIG_USB_ACECAD is not set | ||
691 | # CONFIG_USB_KBTAB is not set | 913 | # CONFIG_USB_KBTAB is not set |
692 | # CONFIG_USB_POWERMATE is not set | 914 | # CONFIG_USB_POWERMATE is not set |
915 | # CONFIG_USB_MTOUCH is not set | ||
916 | # CONFIG_USB_ITMTOUCH is not set | ||
917 | # CONFIG_USB_EGALAX is not set | ||
918 | # CONFIG_USB_YEALINK is not set | ||
693 | # CONFIG_USB_XPAD is not set | 919 | # CONFIG_USB_XPAD is not set |
920 | # CONFIG_USB_ATI_REMOTE is not set | ||
921 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
922 | # CONFIG_USB_APPLETOUCH is not set | ||
694 | 923 | ||
695 | # | 924 | # |
696 | # USB Imaging devices | 925 | # USB Imaging devices |
697 | # | 926 | # |
698 | # CONFIG_USB_MDC800 is not set | 927 | # CONFIG_USB_MDC800 is not set |
699 | # CONFIG_USB_MICROTEK is not set | 928 | # CONFIG_USB_MICROTEK is not set |
700 | # CONFIG_USB_HPUSBSCSI is not set | ||
701 | 929 | ||
702 | # | 930 | # |
703 | # USB Multimedia devices | 931 | # USB Multimedia devices |
@@ -709,13 +937,15 @@ CONFIG_USB_OHCI_HCD=y | |||
709 | # | 937 | # |
710 | 938 | ||
711 | # | 939 | # |
712 | # USB Network adaptors | 940 | # USB Network Adapters |
713 | # | 941 | # |
714 | # CONFIG_USB_CATC is not set | 942 | # CONFIG_USB_CATC is not set |
715 | # CONFIG_USB_KAWETH is not set | 943 | # CONFIG_USB_KAWETH is not set |
716 | # CONFIG_USB_PEGASUS is not set | 944 | # CONFIG_USB_PEGASUS is not set |
717 | # CONFIG_USB_RTL8150 is not set | 945 | # CONFIG_USB_RTL8150 is not set |
718 | # CONFIG_USB_USBNET is not set | 946 | # CONFIG_USB_USBNET is not set |
947 | # CONFIG_USB_ZD1201 is not set | ||
948 | CONFIG_USB_MON=y | ||
719 | 949 | ||
720 | # | 950 | # |
721 | # USB port drivers | 951 | # USB port drivers |
@@ -732,12 +962,21 @@ CONFIG_USB_OHCI_HCD=y | |||
732 | # | 962 | # |
733 | # CONFIG_USB_EMI62 is not set | 963 | # CONFIG_USB_EMI62 is not set |
734 | # CONFIG_USB_EMI26 is not set | 964 | # CONFIG_USB_EMI26 is not set |
735 | # CONFIG_USB_TIGL is not set | ||
736 | # CONFIG_USB_AUERSWALD is not set | 965 | # CONFIG_USB_AUERSWALD is not set |
737 | # CONFIG_USB_RIO500 is not set | 966 | # CONFIG_USB_RIO500 is not set |
738 | # CONFIG_USB_LEGOTOWER is not set | 967 | # CONFIG_USB_LEGOTOWER is not set |
739 | # CONFIG_USB_LCD is not set | 968 | # CONFIG_USB_LCD is not set |
740 | # CONFIG_USB_LED is not set | 969 | # CONFIG_USB_LED is not set |
970 | # CONFIG_USB_CYTHERM is not set | ||
971 | # CONFIG_USB_PHIDGETKIT is not set | ||
972 | # CONFIG_USB_PHIDGETSERVO is not set | ||
973 | # CONFIG_USB_IDMOUSE is not set | ||
974 | # CONFIG_USB_SISUSBVGA is not set | ||
975 | # CONFIG_USB_LD is not set | ||
976 | |||
977 | # | ||
978 | # USB DSL modem support | ||
979 | # | ||
741 | 980 | ||
742 | # | 981 | # |
743 | # USB Gadget Support | 982 | # USB Gadget Support |
@@ -745,22 +984,41 @@ CONFIG_USB_OHCI_HCD=y | |||
745 | # CONFIG_USB_GADGET is not set | 984 | # CONFIG_USB_GADGET is not set |
746 | 985 | ||
747 | # | 986 | # |
987 | # MMC/SD Card support | ||
988 | # | ||
989 | # CONFIG_MMC is not set | ||
990 | |||
991 | # | ||
992 | # InfiniBand support | ||
993 | # | ||
994 | # CONFIG_INFINIBAND is not set | ||
995 | |||
996 | # | ||
997 | # SN Devices | ||
998 | # | ||
999 | |||
1000 | # | ||
748 | # File systems | 1001 | # File systems |
749 | # | 1002 | # |
750 | CONFIG_EXT2_FS=y | 1003 | CONFIG_EXT2_FS=y |
751 | # CONFIG_EXT2_FS_XATTR is not set | 1004 | # CONFIG_EXT2_FS_XATTR is not set |
1005 | # CONFIG_EXT2_FS_XIP is not set | ||
752 | CONFIG_EXT3_FS=y | 1006 | CONFIG_EXT3_FS=y |
753 | # CONFIG_EXT3_FS_XATTR is not set | 1007 | # CONFIG_EXT3_FS_XATTR is not set |
754 | CONFIG_JBD=y | 1008 | CONFIG_JBD=y |
755 | # CONFIG_JBD_DEBUG is not set | 1009 | # CONFIG_JBD_DEBUG is not set |
756 | # CONFIG_REISERFS_FS is not set | 1010 | # CONFIG_REISERFS_FS is not set |
757 | # CONFIG_JFS_FS is not set | 1011 | # CONFIG_JFS_FS is not set |
1012 | # CONFIG_FS_POSIX_ACL is not set | ||
758 | # CONFIG_XFS_FS is not set | 1013 | # CONFIG_XFS_FS is not set |
759 | # CONFIG_MINIX_FS is not set | 1014 | # CONFIG_MINIX_FS is not set |
760 | # CONFIG_ROMFS_FS is not set | 1015 | # CONFIG_ROMFS_FS is not set |
1016 | CONFIG_INOTIFY=y | ||
761 | # CONFIG_QUOTA is not set | 1017 | # CONFIG_QUOTA is not set |
1018 | CONFIG_DNOTIFY=y | ||
762 | # CONFIG_AUTOFS_FS is not set | 1019 | # CONFIG_AUTOFS_FS is not set |
763 | # CONFIG_AUTOFS4_FS is not set | 1020 | # CONFIG_AUTOFS4_FS is not set |
1021 | # CONFIG_FUSE_FS is not set | ||
764 | 1022 | ||
765 | # | 1023 | # |
766 | # CD-ROM/DVD Filesystems | 1024 | # CD-ROM/DVD Filesystems |
@@ -773,7 +1031,8 @@ CONFIG_JOLIET=y | |||
773 | # | 1031 | # |
774 | # DOS/FAT/NT Filesystems | 1032 | # DOS/FAT/NT Filesystems |
775 | # | 1033 | # |
776 | # CONFIG_FAT_FS is not set | 1034 | # CONFIG_MSDOS_FS is not set |
1035 | # CONFIG_VFAT_FS is not set | ||
777 | # CONFIG_NTFS_FS is not set | 1036 | # CONFIG_NTFS_FS is not set |
778 | 1037 | ||
779 | # | 1038 | # |
@@ -781,11 +1040,11 @@ CONFIG_JOLIET=y | |||
781 | # | 1040 | # |
782 | CONFIG_PROC_FS=y | 1041 | CONFIG_PROC_FS=y |
783 | CONFIG_PROC_KCORE=y | 1042 | CONFIG_PROC_KCORE=y |
784 | # CONFIG_DEVFS_FS is not set | 1043 | CONFIG_SYSFS=y |
785 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
786 | CONFIG_TMPFS=y | 1044 | CONFIG_TMPFS=y |
787 | # CONFIG_HUGETLB_PAGE is not set | 1045 | # CONFIG_HUGETLB_PAGE is not set |
788 | CONFIG_RAMFS=y | 1046 | CONFIG_RAMFS=y |
1047 | # CONFIG_RELAYFS_FS is not set | ||
789 | 1048 | ||
790 | # | 1049 | # |
791 | # Miscellaneous filesystems | 1050 | # Miscellaneous filesystems |
@@ -809,23 +1068,28 @@ CONFIG_RAMFS=y | |||
809 | # | 1068 | # |
810 | CONFIG_NFS_FS=y | 1069 | CONFIG_NFS_FS=y |
811 | CONFIG_NFS_V3=y | 1070 | CONFIG_NFS_V3=y |
1071 | # CONFIG_NFS_V3_ACL is not set | ||
812 | # CONFIG_NFS_V4 is not set | 1072 | # CONFIG_NFS_V4 is not set |
813 | # CONFIG_NFS_DIRECTIO is not set | 1073 | # CONFIG_NFS_DIRECTIO is not set |
814 | CONFIG_NFSD=y | 1074 | CONFIG_NFSD=y |
815 | CONFIG_NFSD_V3=y | 1075 | CONFIG_NFSD_V3=y |
1076 | # CONFIG_NFSD_V3_ACL is not set | ||
816 | # CONFIG_NFSD_V4 is not set | 1077 | # CONFIG_NFSD_V4 is not set |
817 | CONFIG_NFSD_TCP=y | 1078 | CONFIG_NFSD_TCP=y |
818 | CONFIG_ROOT_NFS=y | 1079 | CONFIG_ROOT_NFS=y |
819 | CONFIG_LOCKD=y | 1080 | CONFIG_LOCKD=y |
820 | CONFIG_LOCKD_V4=y | 1081 | CONFIG_LOCKD_V4=y |
821 | CONFIG_EXPORTFS=y | 1082 | CONFIG_EXPORTFS=y |
1083 | CONFIG_NFS_COMMON=y | ||
822 | CONFIG_SUNRPC=y | 1084 | CONFIG_SUNRPC=y |
823 | # CONFIG_SUNRPC_GSS is not set | 1085 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
1086 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
824 | # CONFIG_SMB_FS is not set | 1087 | # CONFIG_SMB_FS is not set |
825 | # CONFIG_CIFS is not set | 1088 | # CONFIG_CIFS is not set |
826 | # CONFIG_NCP_FS is not set | 1089 | # CONFIG_NCP_FS is not set |
827 | # CONFIG_CODA_FS is not set | 1090 | # CONFIG_CODA_FS is not set |
828 | # CONFIG_AFS_FS is not set | 1091 | # CONFIG_AFS_FS is not set |
1092 | # CONFIG_9P_FS is not set | ||
829 | 1093 | ||
830 | # | 1094 | # |
831 | # Partition Types | 1095 | # Partition Types |
@@ -861,6 +1125,7 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
861 | # CONFIG_NLS_ISO8859_8 is not set | 1125 | # CONFIG_NLS_ISO8859_8 is not set |
862 | # CONFIG_NLS_CODEPAGE_1250 is not set | 1126 | # CONFIG_NLS_CODEPAGE_1250 is not set |
863 | # CONFIG_NLS_CODEPAGE_1251 is not set | 1127 | # CONFIG_NLS_CODEPAGE_1251 is not set |
1128 | # CONFIG_NLS_ASCII is not set | ||
864 | # CONFIG_NLS_ISO8859_1 is not set | 1129 | # CONFIG_NLS_ISO8859_1 is not set |
865 | # CONFIG_NLS_ISO8859_2 is not set | 1130 | # CONFIG_NLS_ISO8859_2 is not set |
866 | # CONFIG_NLS_ISO8859_3 is not set | 1131 | # CONFIG_NLS_ISO8859_3 is not set |
@@ -885,17 +1150,24 @@ CONFIG_OPROFILE=y | |||
885 | # | 1150 | # |
886 | # Kernel hacking | 1151 | # Kernel hacking |
887 | # | 1152 | # |
1153 | # CONFIG_PRINTK_TIME is not set | ||
888 | CONFIG_DEBUG_KERNEL=y | 1154 | CONFIG_DEBUG_KERNEL=y |
889 | # CONFIG_DEBUG_SLAB is not set | ||
890 | CONFIG_MAGIC_SYSRQ=y | 1155 | CONFIG_MAGIC_SYSRQ=y |
1156 | CONFIG_LOG_BUF_SHIFT=15 | ||
1157 | CONFIG_DETECT_SOFTLOCKUP=y | ||
1158 | # CONFIG_SCHEDSTATS is not set | ||
1159 | # CONFIG_DEBUG_SLAB is not set | ||
891 | # CONFIG_DEBUG_SPINLOCK is not set | 1160 | # CONFIG_DEBUG_SPINLOCK is not set |
892 | # CONFIG_DEBUG_RWLOCK is not set | 1161 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
893 | CONFIG_FRAME_POINTER=y | 1162 | # CONFIG_DEBUG_KOBJECT is not set |
894 | # CONFIG_DEBUG_INFO is not set | 1163 | # CONFIG_DEBUG_INFO is not set |
1164 | # CONFIG_DEBUG_IOREMAP is not set | ||
1165 | # CONFIG_DEBUG_FS is not set | ||
895 | 1166 | ||
896 | # | 1167 | # |
897 | # Security options | 1168 | # Security options |
898 | # | 1169 | # |
1170 | # CONFIG_KEYS is not set | ||
899 | # CONFIG_SECURITY is not set | 1171 | # CONFIG_SECURITY is not set |
900 | 1172 | ||
901 | # | 1173 | # |
@@ -909,6 +1181,8 @@ CONFIG_CRYPTO=y | |||
909 | # CONFIG_CRYPTO_SHA1 is not set | 1181 | # CONFIG_CRYPTO_SHA1 is not set |
910 | # CONFIG_CRYPTO_SHA256 is not set | 1182 | # CONFIG_CRYPTO_SHA256 is not set |
911 | # CONFIG_CRYPTO_SHA512 is not set | 1183 | # CONFIG_CRYPTO_SHA512 is not set |
1184 | # CONFIG_CRYPTO_WP512 is not set | ||
1185 | # CONFIG_CRYPTO_TGR192 is not set | ||
912 | # CONFIG_CRYPTO_DES is not set | 1186 | # CONFIG_CRYPTO_DES is not set |
913 | # CONFIG_CRYPTO_BLOWFISH is not set | 1187 | # CONFIG_CRYPTO_BLOWFISH is not set |
914 | # CONFIG_CRYPTO_TWOFISH is not set | 1188 | # CONFIG_CRYPTO_TWOFISH is not set |
@@ -916,11 +1190,23 @@ CONFIG_CRYPTO=y | |||
916 | # CONFIG_CRYPTO_AES is not set | 1190 | # CONFIG_CRYPTO_AES is not set |
917 | # CONFIG_CRYPTO_CAST5 is not set | 1191 | # CONFIG_CRYPTO_CAST5 is not set |
918 | # CONFIG_CRYPTO_CAST6 is not set | 1192 | # CONFIG_CRYPTO_CAST6 is not set |
1193 | # CONFIG_CRYPTO_TEA is not set | ||
919 | # CONFIG_CRYPTO_ARC4 is not set | 1194 | # CONFIG_CRYPTO_ARC4 is not set |
1195 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1196 | # CONFIG_CRYPTO_ANUBIS is not set | ||
920 | # CONFIG_CRYPTO_DEFLATE is not set | 1197 | # CONFIG_CRYPTO_DEFLATE is not set |
1198 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1199 | # CONFIG_CRYPTO_CRC32C is not set | ||
921 | # CONFIG_CRYPTO_TEST is not set | 1200 | # CONFIG_CRYPTO_TEST is not set |
922 | 1201 | ||
923 | # | 1202 | # |
1203 | # Hardware crypto devices | ||
1204 | # | ||
1205 | |||
1206 | # | ||
924 | # Library routines | 1207 | # Library routines |
925 | # | 1208 | # |
1209 | # CONFIG_CRC_CCITT is not set | ||
1210 | # CONFIG_CRC16 is not set | ||
926 | CONFIG_CRC32=y | 1211 | CONFIG_CRC32=y |
1212 | # CONFIG_LIBCRC32C is not set | ||
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index f46a07a79218..e15f09eaed12 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/page.h> | 27 | #include <asm/page.h> |
28 | #include <asm/pgalloc.h> | 28 | #include <asm/pgalloc.h> |
29 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
30 | #include <asm/sections.h> | ||
30 | 31 | ||
31 | int split_tlb; | 32 | int split_tlb; |
32 | int dcache_stride; | 33 | int dcache_stride; |
@@ -207,6 +208,9 @@ parisc_cache_init(void) | |||
207 | 208 | ||
208 | /* "New and Improved" version from Jim Hull | 209 | /* "New and Improved" version from Jim Hull |
209 | * (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift)) | 210 | * (1 << (cc_block-1)) * (cc_line << (4 + cnf.cc_shift)) |
211 | * The following CAFL_STRIDE is an optimized version, see | ||
212 | * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023625.html | ||
213 | * http://lists.parisc-linux.org/pipermail/parisc-linux/2004-June/023671.html | ||
210 | */ | 214 | */ |
211 | #define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift)) | 215 | #define CAFL_STRIDE(cnf) (cnf.cc_line << (3 + cnf.cc_block + cnf.cc_shift)) |
212 | dcache_stride = CAFL_STRIDE(cache_info.dc_conf); | 216 | dcache_stride = CAFL_STRIDE(cache_info.dc_conf); |
@@ -339,17 +343,15 @@ int parisc_cache_flush_threshold = FLUSH_THRESHOLD; | |||
339 | void parisc_setup_cache_timing(void) | 343 | void parisc_setup_cache_timing(void) |
340 | { | 344 | { |
341 | unsigned long rangetime, alltime; | 345 | unsigned long rangetime, alltime; |
342 | extern char _text; /* start of kernel code, defined by linker */ | ||
343 | extern char _end; /* end of BSS, defined by linker */ | ||
344 | unsigned long size; | 346 | unsigned long size; |
345 | 347 | ||
346 | alltime = mfctl(16); | 348 | alltime = mfctl(16); |
347 | flush_data_cache(); | 349 | flush_data_cache(); |
348 | alltime = mfctl(16) - alltime; | 350 | alltime = mfctl(16) - alltime; |
349 | 351 | ||
350 | size = (unsigned long)(&_end - _text); | 352 | size = (unsigned long)(_end - _text); |
351 | rangetime = mfctl(16); | 353 | rangetime = mfctl(16); |
352 | flush_kernel_dcache_range((unsigned long)&_text, size); | 354 | flush_kernel_dcache_range((unsigned long)_text, size); |
353 | rangetime = mfctl(16) - rangetime; | 355 | rangetime = mfctl(16) - rangetime; |
354 | 356 | ||
355 | printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n", | 357 | printk(KERN_DEBUG "Whole cache flush %lu cycles, flushing %lu bytes %lu cycles\n", |
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index d34bbe7ae0e3..988844a169e6 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
@@ -46,36 +46,51 @@ static struct device root = { | |||
46 | .bus_id = "parisc", | 46 | .bus_id = "parisc", |
47 | }; | 47 | }; |
48 | 48 | ||
49 | #define for_each_padev(padev) \ | 49 | static inline int check_dev(struct device *dev) |
50 | for (padev = next_dev(&root); padev != NULL; \ | 50 | { |
51 | padev = next_dev(&padev->dev)) | 51 | if (dev->bus == &parisc_bus_type) { |
52 | struct parisc_device *pdev; | ||
53 | pdev = to_parisc_device(dev); | ||
54 | return pdev->id.hw_type != HPHW_FAULTY; | ||
55 | } | ||
56 | return 1; | ||
57 | } | ||
58 | |||
59 | static struct device * | ||
60 | parse_tree_node(struct device *parent, int index, struct hardware_path *modpath); | ||
52 | 61 | ||
53 | #define check_dev(padev) \ | 62 | struct recurse_struct { |
54 | (padev->id.hw_type != HPHW_FAULTY) ? padev : next_dev(&padev->dev) | 63 | void * obj; |
64 | int (*fn)(struct device *, void *); | ||
65 | }; | ||
66 | |||
67 | static int descend_children(struct device * dev, void * data) | ||
68 | { | ||
69 | struct recurse_struct * recurse_data = (struct recurse_struct *)data; | ||
70 | |||
71 | if (recurse_data->fn(dev, recurse_data->obj)) | ||
72 | return 1; | ||
73 | else | ||
74 | return device_for_each_child(dev, recurse_data, descend_children); | ||
75 | } | ||
55 | 76 | ||
56 | /** | 77 | /** |
57 | * next_dev - enumerates registered devices | 78 | * for_each_padev - Iterate over all devices in the tree |
58 | * @dev: the previous device returned from next_dev | 79 | * @fn: Function to call for each device. |
80 | * @data: Data to pass to the called function. | ||
59 | * | 81 | * |
60 | * next_dev does a depth-first search of the tree, returning parents | 82 | * This performs a depth-first traversal of the tree, calling the |
61 | * before children. Returns NULL when there are no more devices. | 83 | * function passed for each node. It calls the function for parents |
84 | * before children. | ||
62 | */ | 85 | */ |
63 | static struct parisc_device *next_dev(struct device *dev) | ||
64 | { | ||
65 | if (!list_empty(&dev->children)) { | ||
66 | dev = list_to_dev(dev->children.next); | ||
67 | return check_dev(to_parisc_device(dev)); | ||
68 | } | ||
69 | 86 | ||
70 | while (dev != &root) { | 87 | static int for_each_padev(int (*fn)(struct device *, void *), void * data) |
71 | if (dev->node.next != &dev->parent->children) { | 88 | { |
72 | dev = list_to_dev(dev->node.next); | 89 | struct recurse_struct recurse_data = { |
73 | return to_parisc_device(dev); | 90 | .obj = data, |
74 | } | 91 | .fn = fn, |
75 | dev = dev->parent; | 92 | }; |
76 | } | 93 | return device_for_each_child(&root, &recurse_data, descend_children); |
77 | |||
78 | return NULL; | ||
79 | } | 94 | } |
80 | 95 | ||
81 | /** | 96 | /** |
@@ -105,12 +120,6 @@ static int match_device(struct parisc_driver *driver, struct parisc_device *dev) | |||
105 | return 0; | 120 | return 0; |
106 | } | 121 | } |
107 | 122 | ||
108 | static void claim_device(struct parisc_driver *driver, struct parisc_device *dev) | ||
109 | { | ||
110 | dev->driver = driver; | ||
111 | request_mem_region(dev->hpa, 0x1000, driver->name); | ||
112 | } | ||
113 | |||
114 | static int parisc_driver_probe(struct device *dev) | 123 | static int parisc_driver_probe(struct device *dev) |
115 | { | 124 | { |
116 | int rc; | 125 | int rc; |
@@ -119,8 +128,8 @@ static int parisc_driver_probe(struct device *dev) | |||
119 | 128 | ||
120 | rc = pa_drv->probe(pa_dev); | 129 | rc = pa_drv->probe(pa_dev); |
121 | 130 | ||
122 | if(!rc) | 131 | if (!rc) |
123 | claim_device(pa_drv, pa_dev); | 132 | pa_dev->driver = pa_drv; |
124 | 133 | ||
125 | return rc; | 134 | return rc; |
126 | } | 135 | } |
@@ -131,7 +140,6 @@ static int parisc_driver_remove(struct device *dev) | |||
131 | struct parisc_driver *pa_drv = to_parisc_driver(dev->driver); | 140 | struct parisc_driver *pa_drv = to_parisc_driver(dev->driver); |
132 | if (pa_drv->remove) | 141 | if (pa_drv->remove) |
133 | pa_drv->remove(pa_dev); | 142 | pa_drv->remove(pa_dev); |
134 | release_mem_region(pa_dev->hpa, 0x1000); | ||
135 | 143 | ||
136 | return 0; | 144 | return 0; |
137 | } | 145 | } |
@@ -173,6 +181,24 @@ int register_parisc_driver(struct parisc_driver *driver) | |||
173 | } | 181 | } |
174 | EXPORT_SYMBOL(register_parisc_driver); | 182 | EXPORT_SYMBOL(register_parisc_driver); |
175 | 183 | ||
184 | |||
185 | struct match_count { | ||
186 | struct parisc_driver * driver; | ||
187 | int count; | ||
188 | }; | ||
189 | |||
190 | static int match_and_count(struct device * dev, void * data) | ||
191 | { | ||
192 | struct match_count * m = data; | ||
193 | struct parisc_device * pdev = to_parisc_device(dev); | ||
194 | |||
195 | if (check_dev(dev)) { | ||
196 | if (match_device(m->driver, pdev)) | ||
197 | m->count++; | ||
198 | } | ||
199 | return 0; | ||
200 | } | ||
201 | |||
176 | /** | 202 | /** |
177 | * count_parisc_driver - count # of devices this driver would match | 203 | * count_parisc_driver - count # of devices this driver would match |
178 | * @driver: the PA-RISC driver to try | 204 | * @driver: the PA-RISC driver to try |
@@ -182,15 +208,14 @@ EXPORT_SYMBOL(register_parisc_driver); | |||
182 | */ | 208 | */ |
183 | int count_parisc_driver(struct parisc_driver *driver) | 209 | int count_parisc_driver(struct parisc_driver *driver) |
184 | { | 210 | { |
185 | struct parisc_device *device; | 211 | struct match_count m = { |
186 | int cnt = 0; | 212 | .driver = driver, |
213 | .count = 0, | ||
214 | }; | ||
187 | 215 | ||
188 | for_each_padev(device) { | 216 | for_each_padev(match_and_count, &m); |
189 | if (match_device(driver, device)) | ||
190 | cnt++; | ||
191 | } | ||
192 | 217 | ||
193 | return cnt; | 218 | return m.count; |
194 | } | 219 | } |
195 | 220 | ||
196 | 221 | ||
@@ -206,14 +231,34 @@ int unregister_parisc_driver(struct parisc_driver *driver) | |||
206 | } | 231 | } |
207 | EXPORT_SYMBOL(unregister_parisc_driver); | 232 | EXPORT_SYMBOL(unregister_parisc_driver); |
208 | 233 | ||
209 | static struct parisc_device *find_device_by_addr(unsigned long hpa) | 234 | struct find_data { |
235 | unsigned long hpa; | ||
236 | struct parisc_device * dev; | ||
237 | }; | ||
238 | |||
239 | static int find_device(struct device * dev, void * data) | ||
210 | { | 240 | { |
211 | struct parisc_device *dev; | 241 | struct parisc_device * pdev = to_parisc_device(dev); |
212 | for_each_padev(dev) { | 242 | struct find_data * d = (struct find_data*)data; |
213 | if (dev->hpa == hpa) | 243 | |
214 | return dev; | 244 | if (check_dev(dev)) { |
245 | if (pdev->hpa.start == d->hpa) { | ||
246 | d->dev = pdev; | ||
247 | return 1; | ||
248 | } | ||
215 | } | 249 | } |
216 | return NULL; | 250 | return 0; |
251 | } | ||
252 | |||
253 | static struct parisc_device *find_device_by_addr(unsigned long hpa) | ||
254 | { | ||
255 | struct find_data d = { | ||
256 | .hpa = hpa, | ||
257 | }; | ||
258 | int ret; | ||
259 | |||
260 | ret = for_each_padev(find_device, &d); | ||
261 | return ret ? d.dev : NULL; | ||
217 | } | 262 | } |
218 | 263 | ||
219 | /** | 264 | /** |
@@ -387,6 +432,23 @@ struct parisc_device * create_tree_node(char id, struct device *parent) | |||
387 | return dev; | 432 | return dev; |
388 | } | 433 | } |
389 | 434 | ||
435 | struct match_id_data { | ||
436 | char id; | ||
437 | struct parisc_device * dev; | ||
438 | }; | ||
439 | |||
440 | static int match_by_id(struct device * dev, void * data) | ||
441 | { | ||
442 | struct parisc_device * pdev = to_parisc_device(dev); | ||
443 | struct match_id_data * d = data; | ||
444 | |||
445 | if (pdev->hw_path == d->id) { | ||
446 | d->dev = pdev; | ||
447 | return 1; | ||
448 | } | ||
449 | return 0; | ||
450 | } | ||
451 | |||
390 | /** | 452 | /** |
391 | * alloc_tree_node - returns a device entry in the iotree | 453 | * alloc_tree_node - returns a device entry in the iotree |
392 | * @parent: the parent node in the tree | 454 | * @parent: the parent node in the tree |
@@ -397,15 +459,13 @@ struct parisc_device * create_tree_node(char id, struct device *parent) | |||
397 | */ | 459 | */ |
398 | static struct parisc_device * alloc_tree_node(struct device *parent, char id) | 460 | static struct parisc_device * alloc_tree_node(struct device *parent, char id) |
399 | { | 461 | { |
400 | struct device *dev; | 462 | struct match_id_data d = { |
401 | 463 | .id = id, | |
402 | list_for_each_entry(dev, &parent->children, node) { | 464 | }; |
403 | struct parisc_device *padev = to_parisc_device(dev); | 465 | if (device_for_each_child(parent, &d, match_by_id)) |
404 | if (padev->hw_path == id) | 466 | return d.dev; |
405 | return padev; | 467 | else |
406 | } | 468 | return create_tree_node(id, parent); |
407 | |||
408 | return create_tree_node(id, parent); | ||
409 | } | 469 | } |
410 | 470 | ||
411 | static struct parisc_device *create_parisc_device(struct hardware_path *modpath) | 471 | static struct parisc_device *create_parisc_device(struct hardware_path *modpath) |
@@ -439,10 +499,8 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path) | |||
439 | 499 | ||
440 | dev = create_parisc_device(mod_path); | 500 | dev = create_parisc_device(mod_path); |
441 | if (dev->id.hw_type != HPHW_FAULTY) { | 501 | if (dev->id.hw_type != HPHW_FAULTY) { |
442 | char p[64]; | ||
443 | print_pa_hwpath(dev, p); | ||
444 | printk("Two devices have hardware path %s. Please file a bug with HP.\n" | 502 | printk("Two devices have hardware path %s. Please file a bug with HP.\n" |
445 | "In the meantime, you could try rearranging your cards.\n", p); | 503 | "In the meantime, you could try rearranging your cards.\n", parisc_pathname(dev)); |
446 | return NULL; | 504 | return NULL; |
447 | } | 505 | } |
448 | 506 | ||
@@ -451,12 +509,27 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path) | |||
451 | dev->id.hversion_rev = iodc_data[1] & 0x0f; | 509 | dev->id.hversion_rev = iodc_data[1] & 0x0f; |
452 | dev->id.sversion = ((iodc_data[4] & 0x0f) << 16) | | 510 | dev->id.sversion = ((iodc_data[4] & 0x0f) << 16) | |
453 | (iodc_data[5] << 8) | iodc_data[6]; | 511 | (iodc_data[5] << 8) | iodc_data[6]; |
454 | dev->hpa = hpa; | 512 | dev->hpa.name = parisc_pathname(dev); |
513 | dev->hpa.start = hpa; | ||
514 | if (hpa == 0xf4000000 || hpa == 0xf6000000 || | ||
515 | hpa == 0xf8000000 || hpa == 0xfa000000) { | ||
516 | dev->hpa.end = hpa + 0x01ffffff; | ||
517 | } else { | ||
518 | dev->hpa.end = hpa + 0xfff; | ||
519 | } | ||
520 | dev->hpa.flags = IORESOURCE_MEM; | ||
455 | name = parisc_hardware_description(&dev->id); | 521 | name = parisc_hardware_description(&dev->id); |
456 | if (name) { | 522 | if (name) { |
457 | strlcpy(dev->name, name, sizeof(dev->name)); | 523 | strlcpy(dev->name, name, sizeof(dev->name)); |
458 | } | 524 | } |
459 | 525 | ||
526 | /* Silently fail things like mouse ports which are subsumed within | ||
527 | * the keyboard controller | ||
528 | */ | ||
529 | if ((hpa & 0xfff) == 0 && insert_resource(&iomem_resource, &dev->hpa)) | ||
530 | printk("Unable to claim HPA %lx for device %s\n", | ||
531 | hpa, name); | ||
532 | |||
460 | return dev; | 533 | return dev; |
461 | } | 534 | } |
462 | 535 | ||
@@ -555,6 +628,33 @@ static int match_parisc_device(struct device *dev, int index, | |||
555 | return (curr->hw_path == id); | 628 | return (curr->hw_path == id); |
556 | } | 629 | } |
557 | 630 | ||
631 | struct parse_tree_data { | ||
632 | int index; | ||
633 | struct hardware_path * modpath; | ||
634 | struct device * dev; | ||
635 | }; | ||
636 | |||
637 | static int check_parent(struct device * dev, void * data) | ||
638 | { | ||
639 | struct parse_tree_data * d = data; | ||
640 | |||
641 | if (check_dev(dev)) { | ||
642 | if (dev->bus == &parisc_bus_type) { | ||
643 | if (match_parisc_device(dev, d->index, d->modpath)) | ||
644 | d->dev = dev; | ||
645 | } else if (is_pci_dev(dev)) { | ||
646 | if (match_pci_device(dev, d->index, d->modpath)) | ||
647 | d->dev = dev; | ||
648 | } else if (dev->bus == NULL) { | ||
649 | /* we are on a bus bridge */ | ||
650 | struct device *new = parse_tree_node(dev, d->index, d->modpath); | ||
651 | if (new) | ||
652 | d->dev = new; | ||
653 | } | ||
654 | } | ||
655 | return d->dev != NULL; | ||
656 | } | ||
657 | |||
558 | /** | 658 | /** |
559 | * parse_tree_node - returns a device entry in the iotree | 659 | * parse_tree_node - returns a device entry in the iotree |
560 | * @parent: the parent node in the tree | 660 | * @parent: the parent node in the tree |
@@ -568,24 +668,18 @@ static int match_parisc_device(struct device *dev, int index, | |||
568 | static struct device * | 668 | static struct device * |
569 | parse_tree_node(struct device *parent, int index, struct hardware_path *modpath) | 669 | parse_tree_node(struct device *parent, int index, struct hardware_path *modpath) |
570 | { | 670 | { |
571 | struct device *device; | 671 | struct parse_tree_data d = { |
572 | 672 | .index = index, | |
573 | list_for_each_entry(device, &parent->children, node) { | 673 | .modpath = modpath, |
574 | if (device->bus == &parisc_bus_type) { | 674 | }; |
575 | if (match_parisc_device(device, index, modpath)) | ||
576 | return device; | ||
577 | } else if (is_pci_dev(device)) { | ||
578 | if (match_pci_device(device, index, modpath)) | ||
579 | return device; | ||
580 | } else if (device->bus == NULL) { | ||
581 | /* we are on a bus bridge */ | ||
582 | struct device *new = parse_tree_node(device, index, modpath); | ||
583 | if (new) | ||
584 | return new; | ||
585 | } | ||
586 | } | ||
587 | 675 | ||
588 | return NULL; | 676 | struct recurse_struct recurse_data = { |
677 | .obj = &d, | ||
678 | .fn = check_parent, | ||
679 | }; | ||
680 | |||
681 | device_for_each_child(parent, &recurse_data, descend_children); | ||
682 | return d.dev; | ||
589 | } | 683 | } |
590 | 684 | ||
591 | /** | 685 | /** |
@@ -636,7 +730,7 @@ EXPORT_SYMBOL(device_to_hwpath); | |||
636 | ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT)) | 730 | ((dev->id.hw_type == HPHW_IOA) || (dev->id.hw_type == HPHW_BCPORT)) |
637 | 731 | ||
638 | #define IS_LOWER_PORT(dev) \ | 732 | #define IS_LOWER_PORT(dev) \ |
639 | ((gsc_readl(dev->hpa + offsetof(struct bc_module, io_status)) \ | 733 | ((gsc_readl(dev->hpa.start + offsetof(struct bc_module, io_status)) \ |
640 | & BC_PORT_MASK) == BC_LOWER_PORT) | 734 | & BC_PORT_MASK) == BC_LOWER_PORT) |
641 | 735 | ||
642 | #define MAX_NATIVE_DEVICES 64 | 736 | #define MAX_NATIVE_DEVICES 64 |
@@ -645,8 +739,8 @@ EXPORT_SYMBOL(device_to_hwpath); | |||
645 | #define FLEX_MASK F_EXTEND(0xfffc0000) | 739 | #define FLEX_MASK F_EXTEND(0xfffc0000) |
646 | #define IO_IO_LOW offsetof(struct bc_module, io_io_low) | 740 | #define IO_IO_LOW offsetof(struct bc_module, io_io_low) |
647 | #define IO_IO_HIGH offsetof(struct bc_module, io_io_high) | 741 | #define IO_IO_HIGH offsetof(struct bc_module, io_io_high) |
648 | #define READ_IO_IO_LOW(dev) (unsigned long)(signed int)gsc_readl(dev->hpa + IO_IO_LOW) | 742 | #define READ_IO_IO_LOW(dev) (unsigned long)(signed int)gsc_readl(dev->hpa.start + IO_IO_LOW) |
649 | #define READ_IO_IO_HIGH(dev) (unsigned long)(signed int)gsc_readl(dev->hpa + IO_IO_HIGH) | 743 | #define READ_IO_IO_HIGH(dev) (unsigned long)(signed int)gsc_readl(dev->hpa.start + IO_IO_HIGH) |
650 | 744 | ||
651 | static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, | 745 | static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high, |
652 | struct device *parent); | 746 | struct device *parent); |
@@ -655,10 +749,10 @@ void walk_lower_bus(struct parisc_device *dev) | |||
655 | { | 749 | { |
656 | unsigned long io_io_low, io_io_high; | 750 | unsigned long io_io_low, io_io_high; |
657 | 751 | ||
658 | if(!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev)) | 752 | if (!BUS_CONVERTER(dev) || IS_LOWER_PORT(dev)) |
659 | return; | 753 | return; |
660 | 754 | ||
661 | if(dev->id.hw_type == HPHW_IOA) { | 755 | if (dev->id.hw_type == HPHW_IOA) { |
662 | io_io_low = (unsigned long)(signed int)(READ_IO_IO_LOW(dev) << 16); | 756 | io_io_low = (unsigned long)(signed int)(READ_IO_IO_LOW(dev) << 16); |
663 | io_io_high = io_io_low + MAX_NATIVE_DEVICES * NATIVE_DEVICE_OFFSET; | 757 | io_io_high = io_io_low + MAX_NATIVE_DEVICES * NATIVE_DEVICE_OFFSET; |
664 | } else { | 758 | } else { |
@@ -731,7 +825,7 @@ static void print_parisc_device(struct parisc_device *dev) | |||
731 | 825 | ||
732 | print_pa_hwpath(dev, hw_path); | 826 | print_pa_hwpath(dev, hw_path); |
733 | printk(KERN_INFO "%d. %s at 0x%lx [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", | 827 | printk(KERN_INFO "%d. %s at 0x%lx [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }", |
734 | ++count, dev->name, dev->hpa, hw_path, dev->id.hw_type, | 828 | ++count, dev->name, dev->hpa.start, hw_path, dev->id.hw_type, |
735 | dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); | 829 | dev->id.hversion_rev, dev->id.hversion, dev->id.sversion); |
736 | 830 | ||
737 | if (dev->num_addrs) { | 831 | if (dev->num_addrs) { |
@@ -753,13 +847,20 @@ void init_parisc_bus(void) | |||
753 | get_device(&root); | 847 | get_device(&root); |
754 | } | 848 | } |
755 | 849 | ||
850 | |||
851 | static int print_one_device(struct device * dev, void * data) | ||
852 | { | ||
853 | struct parisc_device * pdev = to_parisc_device(dev); | ||
854 | |||
855 | if (check_dev(dev)) | ||
856 | print_parisc_device(pdev); | ||
857 | return 0; | ||
858 | } | ||
859 | |||
756 | /** | 860 | /** |
757 | * print_parisc_devices - Print out a list of devices found in this system | 861 | * print_parisc_devices - Print out a list of devices found in this system |
758 | */ | 862 | */ |
759 | void print_parisc_devices(void) | 863 | void print_parisc_devices(void) |
760 | { | 864 | { |
761 | struct parisc_device *dev; | 865 | for_each_padev(print_one_device, NULL); |
762 | for_each_padev(dev) { | ||
763 | print_parisc_device(dev); | ||
764 | } | ||
765 | } | 866 | } |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index be0f07f2fa58..c7e66ee5b083 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -30,14 +30,14 @@ | |||
30 | * - save registers to kernel stack and handle in assembly or C */ | 30 | * - save registers to kernel stack and handle in assembly or C */ |
31 | 31 | ||
32 | 32 | ||
33 | #include <asm/psw.h> | ||
33 | #include <asm/assembly.h> /* for LDREG/STREG defines */ | 34 | #include <asm/assembly.h> /* for LDREG/STREG defines */ |
34 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
35 | #include <asm/psw.h> | ||
36 | #include <asm/signal.h> | 36 | #include <asm/signal.h> |
37 | #include <asm/unistd.h> | 37 | #include <asm/unistd.h> |
38 | #include <asm/thread_info.h> | 38 | #include <asm/thread_info.h> |
39 | 39 | ||
40 | #ifdef __LP64__ | 40 | #ifdef CONFIG_64BIT |
41 | #define CMPIB cmpib,* | 41 | #define CMPIB cmpib,* |
42 | #define CMPB cmpb,* | 42 | #define CMPB cmpb,* |
43 | #define COND(x) *x | 43 | #define COND(x) *x |
@@ -67,19 +67,22 @@ | |||
67 | 67 | ||
68 | /* Switch to virtual mapping, trashing only %r1 */ | 68 | /* Switch to virtual mapping, trashing only %r1 */ |
69 | .macro virt_map | 69 | .macro virt_map |
70 | rsm PSW_SM_Q,%r0 | 70 | /* pcxt_ssm_bug */ |
71 | tovirt_r1 %r29 | 71 | rsm PSW_SM_I, %r0 /* barrier for "Relied upon Translation */ |
72 | mfsp %sr7, %r1 | ||
73 | or,= %r0,%r1,%r0 /* Only save sr7 in sr3 if sr7 != 0 */ | ||
74 | mtsp %r1, %sr3 | ||
75 | mtsp %r0, %sr4 | 72 | mtsp %r0, %sr4 |
76 | mtsp %r0, %sr5 | 73 | mtsp %r0, %sr5 |
74 | mfsp %sr7, %r1 | ||
75 | or,= %r0,%r1,%r0 /* Only save sr7 in sr3 if sr7 != 0 */ | ||
76 | mtsp %r1, %sr3 | ||
77 | tovirt_r1 %r29 | ||
78 | load32 KERNEL_PSW, %r1 | ||
79 | |||
80 | rsm PSW_SM_QUIET,%r0 /* second "heavy weight" ctl op */ | ||
77 | mtsp %r0, %sr6 | 81 | mtsp %r0, %sr6 |
78 | mtsp %r0, %sr7 | 82 | mtsp %r0, %sr7 |
79 | load32 KERNEL_PSW, %r1 | ||
80 | mtctl %r1, %cr22 | ||
81 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 83 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
82 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 84 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
85 | mtctl %r1, %ipsw | ||
83 | load32 4f, %r1 | 86 | load32 4f, %r1 |
84 | mtctl %r1, %cr18 /* Set IIAOQ tail */ | 87 | mtctl %r1, %cr18 /* Set IIAOQ tail */ |
85 | ldo 4(%r1), %r1 | 88 | ldo 4(%r1), %r1 |
@@ -214,7 +217,7 @@ | |||
214 | va = r8 /* virtual address for which the trap occured */ | 217 | va = r8 /* virtual address for which the trap occured */ |
215 | spc = r24 /* space for which the trap occured */ | 218 | spc = r24 /* space for which the trap occured */ |
216 | 219 | ||
217 | #ifndef __LP64__ | 220 | #ifndef CONFIG_64BIT |
218 | 221 | ||
219 | /* | 222 | /* |
220 | * itlb miss interruption handler (parisc 1.1 - 32 bit) | 223 | * itlb miss interruption handler (parisc 1.1 - 32 bit) |
@@ -236,7 +239,7 @@ | |||
236 | 239 | ||
237 | .macro itlb_20 code | 240 | .macro itlb_20 code |
238 | mfctl %pcsq, spc | 241 | mfctl %pcsq, spc |
239 | #ifdef __LP64__ | 242 | #ifdef CONFIG_64BIT |
240 | b itlb_miss_20w | 243 | b itlb_miss_20w |
241 | #else | 244 | #else |
242 | b itlb_miss_20 | 245 | b itlb_miss_20 |
@@ -246,7 +249,7 @@ | |||
246 | .align 32 | 249 | .align 32 |
247 | .endm | 250 | .endm |
248 | 251 | ||
249 | #ifndef __LP64__ | 252 | #ifndef CONFIG_64BIT |
250 | /* | 253 | /* |
251 | * naitlb miss interruption handler (parisc 1.1 - 32 bit) | 254 | * naitlb miss interruption handler (parisc 1.1 - 32 bit) |
252 | * | 255 | * |
@@ -283,7 +286,7 @@ | |||
283 | .macro naitlb_20 code | 286 | .macro naitlb_20 code |
284 | 287 | ||
285 | mfctl %isr,spc | 288 | mfctl %isr,spc |
286 | #ifdef __LP64__ | 289 | #ifdef CONFIG_64BIT |
287 | b itlb_miss_20w | 290 | b itlb_miss_20w |
288 | #else | 291 | #else |
289 | b itlb_miss_20 | 292 | b itlb_miss_20 |
@@ -296,7 +299,7 @@ | |||
296 | .align 32 | 299 | .align 32 |
297 | .endm | 300 | .endm |
298 | 301 | ||
299 | #ifndef __LP64__ | 302 | #ifndef CONFIG_64BIT |
300 | /* | 303 | /* |
301 | * dtlb miss interruption handler (parisc 1.1 - 32 bit) | 304 | * dtlb miss interruption handler (parisc 1.1 - 32 bit) |
302 | */ | 305 | */ |
@@ -318,7 +321,7 @@ | |||
318 | .macro dtlb_20 code | 321 | .macro dtlb_20 code |
319 | 322 | ||
320 | mfctl %isr, spc | 323 | mfctl %isr, spc |
321 | #ifdef __LP64__ | 324 | #ifdef CONFIG_64BIT |
322 | b dtlb_miss_20w | 325 | b dtlb_miss_20w |
323 | #else | 326 | #else |
324 | b dtlb_miss_20 | 327 | b dtlb_miss_20 |
@@ -328,7 +331,7 @@ | |||
328 | .align 32 | 331 | .align 32 |
329 | .endm | 332 | .endm |
330 | 333 | ||
331 | #ifndef __LP64__ | 334 | #ifndef CONFIG_64BIT |
332 | /* nadtlb miss interruption handler (parisc 1.1 - 32 bit) */ | 335 | /* nadtlb miss interruption handler (parisc 1.1 - 32 bit) */ |
333 | 336 | ||
334 | .macro nadtlb_11 code | 337 | .macro nadtlb_11 code |
@@ -346,7 +349,7 @@ | |||
346 | .macro nadtlb_20 code | 349 | .macro nadtlb_20 code |
347 | 350 | ||
348 | mfctl %isr,spc | 351 | mfctl %isr,spc |
349 | #ifdef __LP64__ | 352 | #ifdef CONFIG_64BIT |
350 | b nadtlb_miss_20w | 353 | b nadtlb_miss_20w |
351 | #else | 354 | #else |
352 | b nadtlb_miss_20 | 355 | b nadtlb_miss_20 |
@@ -356,7 +359,7 @@ | |||
356 | .align 32 | 359 | .align 32 |
357 | .endm | 360 | .endm |
358 | 361 | ||
359 | #ifndef __LP64__ | 362 | #ifndef CONFIG_64BIT |
360 | /* | 363 | /* |
361 | * dirty bit trap interruption handler (parisc 1.1 - 32 bit) | 364 | * dirty bit trap interruption handler (parisc 1.1 - 32 bit) |
362 | */ | 365 | */ |
@@ -378,7 +381,7 @@ | |||
378 | .macro dbit_20 code | 381 | .macro dbit_20 code |
379 | 382 | ||
380 | mfctl %isr,spc | 383 | mfctl %isr,spc |
381 | #ifdef __LP64__ | 384 | #ifdef CONFIG_64BIT |
382 | b dbit_trap_20w | 385 | b dbit_trap_20w |
383 | #else | 386 | #else |
384 | b dbit_trap_20 | 387 | b dbit_trap_20 |
@@ -391,7 +394,7 @@ | |||
391 | /* The following are simple 32 vs 64 bit instruction | 394 | /* The following are simple 32 vs 64 bit instruction |
392 | * abstractions for the macros */ | 395 | * abstractions for the macros */ |
393 | .macro EXTR reg1,start,length,reg2 | 396 | .macro EXTR reg1,start,length,reg2 |
394 | #ifdef __LP64__ | 397 | #ifdef CONFIG_64BIT |
395 | extrd,u \reg1,32+\start,\length,\reg2 | 398 | extrd,u \reg1,32+\start,\length,\reg2 |
396 | #else | 399 | #else |
397 | extrw,u \reg1,\start,\length,\reg2 | 400 | extrw,u \reg1,\start,\length,\reg2 |
@@ -399,7 +402,7 @@ | |||
399 | .endm | 402 | .endm |
400 | 403 | ||
401 | .macro DEP reg1,start,length,reg2 | 404 | .macro DEP reg1,start,length,reg2 |
402 | #ifdef __LP64__ | 405 | #ifdef CONFIG_64BIT |
403 | depd \reg1,32+\start,\length,\reg2 | 406 | depd \reg1,32+\start,\length,\reg2 |
404 | #else | 407 | #else |
405 | depw \reg1,\start,\length,\reg2 | 408 | depw \reg1,\start,\length,\reg2 |
@@ -407,7 +410,7 @@ | |||
407 | .endm | 410 | .endm |
408 | 411 | ||
409 | .macro DEPI val,start,length,reg | 412 | .macro DEPI val,start,length,reg |
410 | #ifdef __LP64__ | 413 | #ifdef CONFIG_64BIT |
411 | depdi \val,32+\start,\length,\reg | 414 | depdi \val,32+\start,\length,\reg |
412 | #else | 415 | #else |
413 | depwi \val,\start,\length,\reg | 416 | depwi \val,\start,\length,\reg |
@@ -418,7 +421,7 @@ | |||
418 | * fault. We have to extract this and place it in the va, | 421 | * fault. We have to extract this and place it in the va, |
419 | * zeroing the corresponding bits in the space register */ | 422 | * zeroing the corresponding bits in the space register */ |
420 | .macro space_adjust spc,va,tmp | 423 | .macro space_adjust spc,va,tmp |
421 | #ifdef __LP64__ | 424 | #ifdef CONFIG_64BIT |
422 | extrd,u \spc,63,SPACEID_SHIFT,\tmp | 425 | extrd,u \spc,63,SPACEID_SHIFT,\tmp |
423 | depd %r0,63,SPACEID_SHIFT,\spc | 426 | depd %r0,63,SPACEID_SHIFT,\spc |
424 | depd \tmp,31,SPACEID_SHIFT,\va | 427 | depd \tmp,31,SPACEID_SHIFT,\va |
@@ -476,7 +479,7 @@ | |||
476 | bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault | 479 | bb,>=,n \pmd,_PxD_PRESENT_BIT,\fault |
477 | DEP %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ | 480 | DEP %r0,31,PxD_FLAG_SHIFT,\pmd /* clear flags */ |
478 | copy \pmd,%r9 | 481 | copy \pmd,%r9 |
479 | #ifdef __LP64__ | 482 | #ifdef CONFIG_64BIT |
480 | shld %r9,PxD_VALUE_SHIFT,\pmd | 483 | shld %r9,PxD_VALUE_SHIFT,\pmd |
481 | #else | 484 | #else |
482 | shlw %r9,PxD_VALUE_SHIFT,\pmd | 485 | shlw %r9,PxD_VALUE_SHIFT,\pmd |
@@ -607,7 +610,7 @@ | |||
607 | .macro do_alias spc,tmp,tmp1,va,pte,prot,fault | 610 | .macro do_alias spc,tmp,tmp1,va,pte,prot,fault |
608 | cmpib,COND(<>),n 0,\spc,\fault | 611 | cmpib,COND(<>),n 0,\spc,\fault |
609 | ldil L%(TMPALIAS_MAP_START),\tmp | 612 | ldil L%(TMPALIAS_MAP_START),\tmp |
610 | #if defined(__LP64__) && (TMPALIAS_MAP_START >= 0x80000000) | 613 | #if defined(CONFIG_64BIT) && (TMPALIAS_MAP_START >= 0x80000000) |
611 | /* on LP64, ldi will sign extend into the upper 32 bits, | 614 | /* on LP64, ldi will sign extend into the upper 32 bits, |
612 | * which is behaviour we don't want */ | 615 | * which is behaviour we don't want */ |
613 | depdi 0,31,32,\tmp | 616 | depdi 0,31,32,\tmp |
@@ -621,7 +624,7 @@ | |||
621 | * OK, it is in the temp alias region, check whether "from" or "to". | 624 | * OK, it is in the temp alias region, check whether "from" or "to". |
622 | * Check "subtle" note in pacache.S re: r23/r26. | 625 | * Check "subtle" note in pacache.S re: r23/r26. |
623 | */ | 626 | */ |
624 | #ifdef __LP64__ | 627 | #ifdef CONFIG_64BIT |
625 | extrd,u,*= \va,41,1,%r0 | 628 | extrd,u,*= \va,41,1,%r0 |
626 | #else | 629 | #else |
627 | extrw,u,= \va,9,1,%r0 | 630 | extrw,u,= \va,9,1,%r0 |
@@ -688,7 +691,7 @@ fault_vector_20: | |||
688 | def 30 | 691 | def 30 |
689 | def 31 | 692 | def 31 |
690 | 693 | ||
691 | #ifndef __LP64__ | 694 | #ifndef CONFIG_64BIT |
692 | 695 | ||
693 | .export fault_vector_11 | 696 | .export fault_vector_11 |
694 | 697 | ||
@@ -761,7 +764,7 @@ __kernel_thread: | |||
761 | 764 | ||
762 | copy %r30, %r1 | 765 | copy %r30, %r1 |
763 | ldo PT_SZ_ALGN(%r30),%r30 | 766 | ldo PT_SZ_ALGN(%r30),%r30 |
764 | #ifdef __LP64__ | 767 | #ifdef CONFIG_64BIT |
765 | /* Yo, function pointers in wide mode are little structs... -PB */ | 768 | /* Yo, function pointers in wide mode are little structs... -PB */ |
766 | ldd 24(%r26), %r2 | 769 | ldd 24(%r26), %r2 |
767 | STREG %r2, PT_GR27(%r1) /* Store childs %dp */ | 770 | STREG %r2, PT_GR27(%r1) /* Store childs %dp */ |
@@ -777,7 +780,7 @@ __kernel_thread: | |||
777 | or %r26, %r24, %r26 /* will have kernel mappings. */ | 780 | or %r26, %r24, %r26 /* will have kernel mappings. */ |
778 | ldi 1, %r25 /* stack_start, signals kernel thread */ | 781 | ldi 1, %r25 /* stack_start, signals kernel thread */ |
779 | stw %r0, -52(%r30) /* user_tid */ | 782 | stw %r0, -52(%r30) /* user_tid */ |
780 | #ifdef __LP64__ | 783 | #ifdef CONFIG_64BIT |
781 | ldo -16(%r30),%r29 /* Reference param save area */ | 784 | ldo -16(%r30),%r29 /* Reference param save area */ |
782 | #endif | 785 | #endif |
783 | BL do_fork, %r2 | 786 | BL do_fork, %r2 |
@@ -806,7 +809,7 @@ ret_from_kernel_thread: | |||
806 | 809 | ||
807 | LDREG TI_TASK-THREAD_SZ_ALGN(%r30), %r1 | 810 | LDREG TI_TASK-THREAD_SZ_ALGN(%r30), %r1 |
808 | LDREG TASK_PT_GR25(%r1), %r26 | 811 | LDREG TASK_PT_GR25(%r1), %r26 |
809 | #ifdef __LP64__ | 812 | #ifdef CONFIG_64BIT |
810 | LDREG TASK_PT_GR27(%r1), %r27 | 813 | LDREG TASK_PT_GR27(%r1), %r27 |
811 | LDREG TASK_PT_GR22(%r1), %r22 | 814 | LDREG TASK_PT_GR22(%r1), %r22 |
812 | #endif | 815 | #endif |
@@ -814,11 +817,16 @@ ret_from_kernel_thread: | |||
814 | ble 0(%sr7, %r1) | 817 | ble 0(%sr7, %r1) |
815 | copy %r31, %r2 | 818 | copy %r31, %r2 |
816 | 819 | ||
817 | #ifdef __LP64__ | 820 | #ifdef CONFIG_64BIT |
818 | ldo -16(%r30),%r29 /* Reference param save area */ | 821 | ldo -16(%r30),%r29 /* Reference param save area */ |
819 | loadgp /* Thread could have been in a module */ | 822 | loadgp /* Thread could have been in a module */ |
820 | #endif | 823 | #endif |
824 | #ifndef CONFIG_64BIT | ||
821 | b sys_exit | 825 | b sys_exit |
826 | #else | ||
827 | load32 sys_exit, %r1 | ||
828 | bv %r0(%r1) | ||
829 | #endif | ||
822 | ldi 0, %r26 | 830 | ldi 0, %r26 |
823 | 831 | ||
824 | .import sys_execve, code | 832 | .import sys_execve, code |
@@ -830,7 +838,7 @@ __execve: | |||
830 | STREG %r26, PT_GR26(%r16) | 838 | STREG %r26, PT_GR26(%r16) |
831 | STREG %r25, PT_GR25(%r16) | 839 | STREG %r25, PT_GR25(%r16) |
832 | STREG %r24, PT_GR24(%r16) | 840 | STREG %r24, PT_GR24(%r16) |
833 | #ifdef __LP64__ | 841 | #ifdef CONFIG_64BIT |
834 | ldo -16(%r30),%r29 /* Reference param save area */ | 842 | ldo -16(%r30),%r29 /* Reference param save area */ |
835 | #endif | 843 | #endif |
836 | BL sys_execve, %r2 | 844 | BL sys_execve, %r2 |
@@ -855,6 +863,7 @@ __execve: | |||
855 | _switch_to: | 863 | _switch_to: |
856 | STREG %r2, -RP_OFFSET(%r30) | 864 | STREG %r2, -RP_OFFSET(%r30) |
857 | 865 | ||
866 | callee_save_float | ||
858 | callee_save | 867 | callee_save |
859 | 868 | ||
860 | load32 _switch_to_ret, %r2 | 869 | load32 _switch_to_ret, %r2 |
@@ -871,6 +880,7 @@ _switch_to: | |||
871 | _switch_to_ret: | 880 | _switch_to_ret: |
872 | mtctl %r0, %cr0 /* Needed for single stepping */ | 881 | mtctl %r0, %cr0 /* Needed for single stepping */ |
873 | callee_rest | 882 | callee_rest |
883 | callee_rest_float | ||
874 | 884 | ||
875 | LDREG -RP_OFFSET(%r30), %r2 | 885 | LDREG -RP_OFFSET(%r30), %r2 |
876 | bv %r0(%r2) | 886 | bv %r0(%r2) |
@@ -888,9 +898,6 @@ _switch_to_ret: | |||
888 | * this way, then we will need to copy %sr3 in to PT_SR[3..7], and | 898 | * this way, then we will need to copy %sr3 in to PT_SR[3..7], and |
889 | * adjust IASQ[0..1]. | 899 | * adjust IASQ[0..1]. |
890 | * | 900 | * |
891 | * Note that the following code uses a "relied upon translation". | ||
892 | * See the parisc ACD for details. The ssm is necessary due to a | ||
893 | * PCXT bug. | ||
894 | */ | 901 | */ |
895 | 902 | ||
896 | .align 4096 | 903 | .align 4096 |
@@ -911,7 +918,7 @@ syscall_exit_rfi: | |||
911 | STREG %r19,PT_IAOQ1(%r16) | 918 | STREG %r19,PT_IAOQ1(%r16) |
912 | LDREG PT_PSW(%r16),%r19 | 919 | LDREG PT_PSW(%r16),%r19 |
913 | load32 USER_PSW_MASK,%r1 | 920 | load32 USER_PSW_MASK,%r1 |
914 | #ifdef __LP64__ | 921 | #ifdef CONFIG_64BIT |
915 | load32 USER_PSW_HI_MASK,%r20 | 922 | load32 USER_PSW_HI_MASK,%r20 |
916 | depd %r20,31,32,%r1 | 923 | depd %r20,31,32,%r1 |
917 | #endif | 924 | #endif |
@@ -955,7 +962,7 @@ intr_return: | |||
955 | /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) amount | 962 | /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) amount |
956 | ** irq_stat[] is defined using ____cacheline_aligned. | 963 | ** irq_stat[] is defined using ____cacheline_aligned. |
957 | */ | 964 | */ |
958 | #ifdef __LP64__ | 965 | #ifdef CONFIG_64BIT |
959 | shld %r1, 6, %r20 | 966 | shld %r1, 6, %r20 |
960 | #else | 967 | #else |
961 | shlw %r1, 5, %r20 | 968 | shlw %r1, 5, %r20 |
@@ -963,9 +970,6 @@ intr_return: | |||
963 | add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */ | 970 | add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */ |
964 | #endif /* CONFIG_SMP */ | 971 | #endif /* CONFIG_SMP */ |
965 | 972 | ||
966 | LDREG IRQSTAT_SIRQ_PEND(%r19),%r20 /* hardirq.h: unsigned long */ | ||
967 | cmpib,<>,n 0,%r20,intr_do_softirq /* forward */ | ||
968 | |||
969 | intr_check_resched: | 973 | intr_check_resched: |
970 | 974 | ||
971 | /* check for reschedule */ | 975 | /* check for reschedule */ |
@@ -985,24 +989,19 @@ intr_restore: | |||
985 | rest_fp %r1 | 989 | rest_fp %r1 |
986 | rest_general %r29 | 990 | rest_general %r29 |
987 | 991 | ||
988 | /* Create a "relied upon translation" PA 2.0 Arch. F-5 */ | 992 | /* inverse of virt_map */ |
989 | ssm 0,%r0 | 993 | pcxt_ssm_bug |
990 | nop | 994 | rsm PSW_SM_QUIET,%r0 /* prepare for rfi */ |
991 | nop | ||
992 | nop | ||
993 | nop | ||
994 | nop | ||
995 | nop | ||
996 | nop | ||
997 | tophys_r1 %r29 | 995 | tophys_r1 %r29 |
998 | rsm (PSW_SM_Q|PSW_SM_P|PSW_SM_D|PSW_SM_I),%r0 | ||
999 | 996 | ||
1000 | /* Restore space id's and special cr's from PT_REGS | 997 | /* Restore space id's and special cr's from PT_REGS |
1001 | * structure pointed to by r29 */ | 998 | * structure pointed to by r29 |
999 | */ | ||
1002 | rest_specials %r29 | 1000 | rest_specials %r29 |
1003 | 1001 | ||
1004 | /* Important: Note that rest_stack restores r29 | 1002 | /* IMPORTANT: rest_stack restores r29 last (we are using it)! |
1005 | * last (we are using it)! It also restores r1 and r30. */ | 1003 | * It also restores r1 and r30. |
1004 | */ | ||
1006 | rest_stack | 1005 | rest_stack |
1007 | 1006 | ||
1008 | rfi | 1007 | rfi |
@@ -1015,17 +1014,6 @@ intr_restore: | |||
1015 | nop | 1014 | nop |
1016 | nop | 1015 | nop |
1017 | 1016 | ||
1018 | .import do_softirq,code | ||
1019 | intr_do_softirq: | ||
1020 | bl do_softirq,%r2 | ||
1021 | #ifdef __LP64__ | ||
1022 | ldo -16(%r30),%r29 /* Reference param save area */ | ||
1023 | #else | ||
1024 | nop | ||
1025 | #endif | ||
1026 | b intr_check_resched | ||
1027 | nop | ||
1028 | |||
1029 | .import schedule,code | 1017 | .import schedule,code |
1030 | intr_do_resched: | 1018 | intr_do_resched: |
1031 | /* Only do reschedule if we are returning to user space */ | 1019 | /* Only do reschedule if we are returning to user space */ |
@@ -1036,12 +1024,17 @@ intr_do_resched: | |||
1036 | CMPIB= 0,%r20,intr_restore /* backward */ | 1024 | CMPIB= 0,%r20,intr_restore /* backward */ |
1037 | nop | 1025 | nop |
1038 | 1026 | ||
1039 | #ifdef __LP64__ | 1027 | #ifdef CONFIG_64BIT |
1040 | ldo -16(%r30),%r29 /* Reference param save area */ | 1028 | ldo -16(%r30),%r29 /* Reference param save area */ |
1041 | #endif | 1029 | #endif |
1042 | 1030 | ||
1043 | ldil L%intr_check_sig, %r2 | 1031 | ldil L%intr_check_sig, %r2 |
1032 | #ifndef CONFIG_64BIT | ||
1044 | b schedule | 1033 | b schedule |
1034 | #else | ||
1035 | load32 schedule, %r20 | ||
1036 | bv %r0(%r20) | ||
1037 | #endif | ||
1045 | ldo R%intr_check_sig(%r2), %r2 | 1038 | ldo R%intr_check_sig(%r2), %r2 |
1046 | 1039 | ||
1047 | 1040 | ||
@@ -1064,7 +1057,7 @@ intr_do_signal: | |||
1064 | 1057 | ||
1065 | copy %r0, %r24 /* unsigned long in_syscall */ | 1058 | copy %r0, %r24 /* unsigned long in_syscall */ |
1066 | copy %r16, %r25 /* struct pt_regs *regs */ | 1059 | copy %r16, %r25 /* struct pt_regs *regs */ |
1067 | #ifdef __LP64__ | 1060 | #ifdef CONFIG_64BIT |
1068 | ldo -16(%r30),%r29 /* Reference param save area */ | 1061 | ldo -16(%r30),%r29 /* Reference param save area */ |
1069 | #endif | 1062 | #endif |
1070 | 1063 | ||
@@ -1088,7 +1081,7 @@ intr_extint: | |||
1088 | mfctl %cr31,%r1 | 1081 | mfctl %cr31,%r1 |
1089 | copy %r30,%r17 | 1082 | copy %r30,%r17 |
1090 | /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/ | 1083 | /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/ |
1091 | #ifdef __LP64__ | 1084 | #ifdef CONFIG_64BIT |
1092 | depdi 0,63,15,%r17 | 1085 | depdi 0,63,15,%r17 |
1093 | #else | 1086 | #else |
1094 | depi 0,31,15,%r17 | 1087 | depi 0,31,15,%r17 |
@@ -1115,7 +1108,7 @@ intr_extint: | |||
1115 | 1108 | ||
1116 | ldil L%intr_return, %r2 | 1109 | ldil L%intr_return, %r2 |
1117 | 1110 | ||
1118 | #ifdef __LP64__ | 1111 | #ifdef CONFIG_64BIT |
1119 | ldo -16(%r30),%r29 /* Reference param save area */ | 1112 | ldo -16(%r30),%r29 /* Reference param save area */ |
1120 | #endif | 1113 | #endif |
1121 | 1114 | ||
@@ -1153,15 +1146,17 @@ intr_save: | |||
1153 | 1146 | ||
1154 | CMPIB=,n 6,%r26,skip_save_ior | 1147 | CMPIB=,n 6,%r26,skip_save_ior |
1155 | 1148 | ||
1156 | /* save_specials left ipsw value in r8 for us to test */ | ||
1157 | 1149 | ||
1158 | mfctl %cr20, %r16 /* isr */ | 1150 | mfctl %cr20, %r16 /* isr */ |
1151 | nop /* serialize mfctl on PA 2.0 to avoid 4 cycle penalty */ | ||
1159 | mfctl %cr21, %r17 /* ior */ | 1152 | mfctl %cr21, %r17 /* ior */ |
1160 | 1153 | ||
1161 | #ifdef __LP64__ | 1154 | |
1155 | #ifdef CONFIG_64BIT | ||
1162 | /* | 1156 | /* |
1163 | * If the interrupted code was running with W bit off (32 bit), | 1157 | * If the interrupted code was running with W bit off (32 bit), |
1164 | * clear the b bits (bits 0 & 1) in the ior. | 1158 | * clear the b bits (bits 0 & 1) in the ior. |
1159 | * save_specials left ipsw value in r8 for us to test. | ||
1165 | */ | 1160 | */ |
1166 | extrd,u,*<> %r8,PSW_W_BIT,1,%r0 | 1161 | extrd,u,*<> %r8,PSW_W_BIT,1,%r0 |
1167 | depdi 0,1,2,%r17 | 1162 | depdi 0,1,2,%r17 |
@@ -1192,7 +1187,7 @@ skip_save_ior: | |||
1192 | loadgp | 1187 | loadgp |
1193 | 1188 | ||
1194 | copy %r29, %r25 /* arg1 is pt_regs */ | 1189 | copy %r29, %r25 /* arg1 is pt_regs */ |
1195 | #ifdef __LP64__ | 1190 | #ifdef CONFIG_64BIT |
1196 | ldo -16(%r30),%r29 /* Reference param save area */ | 1191 | ldo -16(%r30),%r29 /* Reference param save area */ |
1197 | #endif | 1192 | #endif |
1198 | 1193 | ||
@@ -1230,7 +1225,7 @@ skip_save_ior: | |||
1230 | spc = r24 /* space for which the trap occured */ | 1225 | spc = r24 /* space for which the trap occured */ |
1231 | ptp = r25 /* page directory/page table pointer */ | 1226 | ptp = r25 /* page directory/page table pointer */ |
1232 | 1227 | ||
1233 | #ifdef __LP64__ | 1228 | #ifdef CONFIG_64BIT |
1234 | 1229 | ||
1235 | dtlb_miss_20w: | 1230 | dtlb_miss_20w: |
1236 | space_adjust spc,va,t0 | 1231 | space_adjust spc,va,t0 |
@@ -1487,10 +1482,10 @@ nadtlb_emulate: | |||
1487 | add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ | 1482 | add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ |
1488 | 1483 | ||
1489 | nadtlb_nullify: | 1484 | nadtlb_nullify: |
1490 | mfctl %cr22,%r8 /* Get ipsw */ | 1485 | mfctl %ipsw,%r8 |
1491 | ldil L%PSW_N,%r9 | 1486 | ldil L%PSW_N,%r9 |
1492 | or %r8,%r9,%r8 /* Set PSW_N */ | 1487 | or %r8,%r9,%r8 /* Set PSW_N */ |
1493 | mtctl %r8,%cr22 | 1488 | mtctl %r8,%ipsw |
1494 | 1489 | ||
1495 | rfir | 1490 | rfir |
1496 | nop | 1491 | nop |
@@ -1521,7 +1516,7 @@ nadtlb_probe_check: | |||
1521 | nop | 1516 | nop |
1522 | 1517 | ||
1523 | 1518 | ||
1524 | #ifdef __LP64__ | 1519 | #ifdef CONFIG_64BIT |
1525 | itlb_miss_20w: | 1520 | itlb_miss_20w: |
1526 | 1521 | ||
1527 | /* | 1522 | /* |
@@ -1588,7 +1583,7 @@ itlb_miss_20: | |||
1588 | 1583 | ||
1589 | #endif | 1584 | #endif |
1590 | 1585 | ||
1591 | #ifdef __LP64__ | 1586 | #ifdef CONFIG_64BIT |
1592 | 1587 | ||
1593 | dbit_trap_20w: | 1588 | dbit_trap_20w: |
1594 | space_adjust spc,va,t0 | 1589 | space_adjust spc,va,t0 |
@@ -1797,7 +1792,7 @@ sys_fork_wrapper: | |||
1797 | 1792 | ||
1798 | STREG %r2,-RP_OFFSET(%r30) | 1793 | STREG %r2,-RP_OFFSET(%r30) |
1799 | ldo FRAME_SIZE(%r30),%r30 | 1794 | ldo FRAME_SIZE(%r30),%r30 |
1800 | #ifdef __LP64__ | 1795 | #ifdef CONFIG_64BIT |
1801 | ldo -16(%r30),%r29 /* Reference param save area */ | 1796 | ldo -16(%r30),%r29 /* Reference param save area */ |
1802 | #endif | 1797 | #endif |
1803 | 1798 | ||
@@ -1847,7 +1842,7 @@ sys_clone_wrapper: | |||
1847 | 1842 | ||
1848 | STREG %r2,-RP_OFFSET(%r30) | 1843 | STREG %r2,-RP_OFFSET(%r30) |
1849 | ldo FRAME_SIZE(%r30),%r30 | 1844 | ldo FRAME_SIZE(%r30),%r30 |
1850 | #ifdef __LP64__ | 1845 | #ifdef CONFIG_64BIT |
1851 | ldo -16(%r30),%r29 /* Reference param save area */ | 1846 | ldo -16(%r30),%r29 /* Reference param save area */ |
1852 | #endif | 1847 | #endif |
1853 | 1848 | ||
@@ -1869,7 +1864,7 @@ sys_vfork_wrapper: | |||
1869 | 1864 | ||
1870 | STREG %r2,-RP_OFFSET(%r30) | 1865 | STREG %r2,-RP_OFFSET(%r30) |
1871 | ldo FRAME_SIZE(%r30),%r30 | 1866 | ldo FRAME_SIZE(%r30),%r30 |
1872 | #ifdef __LP64__ | 1867 | #ifdef CONFIG_64BIT |
1873 | ldo -16(%r30),%r29 /* Reference param save area */ | 1868 | ldo -16(%r30),%r29 /* Reference param save area */ |
1874 | #endif | 1869 | #endif |
1875 | 1870 | ||
@@ -1897,10 +1892,10 @@ sys_vfork_wrapper: | |||
1897 | 1892 | ||
1898 | STREG %r2,-RP_OFFSET(%r30) | 1893 | STREG %r2,-RP_OFFSET(%r30) |
1899 | ldo FRAME_SIZE(%r30),%r30 | 1894 | ldo FRAME_SIZE(%r30),%r30 |
1900 | #ifdef __LP64__ | 1895 | #ifdef CONFIG_64BIT |
1901 | ldo -16(%r30),%r29 /* Reference param save area */ | 1896 | ldo -16(%r30),%r29 /* Reference param save area */ |
1902 | #endif | 1897 | #endif |
1903 | bl \execve,%r2 | 1898 | BL \execve,%r2 |
1904 | copy %r1,%arg0 | 1899 | copy %r1,%arg0 |
1905 | 1900 | ||
1906 | ldo -FRAME_SIZE(%r30),%r30 | 1901 | ldo -FRAME_SIZE(%r30),%r30 |
@@ -1923,7 +1918,7 @@ error_\execve: | |||
1923 | sys_execve_wrapper: | 1918 | sys_execve_wrapper: |
1924 | execve_wrapper sys_execve | 1919 | execve_wrapper sys_execve |
1925 | 1920 | ||
1926 | #ifdef __LP64__ | 1921 | #ifdef CONFIG_64BIT |
1927 | .export sys32_execve_wrapper | 1922 | .export sys32_execve_wrapper |
1928 | .import sys32_execve | 1923 | .import sys32_execve |
1929 | 1924 | ||
@@ -1937,7 +1932,7 @@ sys_rt_sigreturn_wrapper: | |||
1937 | ldo TASK_REGS(%r26),%r26 /* get pt regs */ | 1932 | ldo TASK_REGS(%r26),%r26 /* get pt regs */ |
1938 | /* Don't save regs, we are going to restore them from sigcontext. */ | 1933 | /* Don't save regs, we are going to restore them from sigcontext. */ |
1939 | STREG %r2, -RP_OFFSET(%r30) | 1934 | STREG %r2, -RP_OFFSET(%r30) |
1940 | #ifdef __LP64__ | 1935 | #ifdef CONFIG_64BIT |
1941 | ldo FRAME_SIZE(%r30), %r30 | 1936 | ldo FRAME_SIZE(%r30), %r30 |
1942 | BL sys_rt_sigreturn,%r2 | 1937 | BL sys_rt_sigreturn,%r2 |
1943 | ldo -16(%r30),%r29 /* Reference param save area */ | 1938 | ldo -16(%r30),%r29 /* Reference param save area */ |
@@ -1968,7 +1963,7 @@ sys_sigaltstack_wrapper: | |||
1968 | ldo TASK_REGS(%r1),%r24 /* get pt regs */ | 1963 | ldo TASK_REGS(%r1),%r24 /* get pt regs */ |
1969 | LDREG TASK_PT_GR30(%r24),%r24 | 1964 | LDREG TASK_PT_GR30(%r24),%r24 |
1970 | STREG %r2, -RP_OFFSET(%r30) | 1965 | STREG %r2, -RP_OFFSET(%r30) |
1971 | #ifdef __LP64__ | 1966 | #ifdef CONFIG_64BIT |
1972 | ldo FRAME_SIZE(%r30), %r30 | 1967 | ldo FRAME_SIZE(%r30), %r30 |
1973 | b,l do_sigaltstack,%r2 | 1968 | b,l do_sigaltstack,%r2 |
1974 | ldo -16(%r30),%r29 /* Reference param save area */ | 1969 | ldo -16(%r30),%r29 /* Reference param save area */ |
@@ -1982,7 +1977,7 @@ sys_sigaltstack_wrapper: | |||
1982 | bv %r0(%r2) | 1977 | bv %r0(%r2) |
1983 | nop | 1978 | nop |
1984 | 1979 | ||
1985 | #ifdef __LP64__ | 1980 | #ifdef CONFIG_64BIT |
1986 | .export sys32_sigaltstack_wrapper | 1981 | .export sys32_sigaltstack_wrapper |
1987 | sys32_sigaltstack_wrapper: | 1982 | sys32_sigaltstack_wrapper: |
1988 | /* Get the user stack pointer */ | 1983 | /* Get the user stack pointer */ |
@@ -2006,7 +2001,7 @@ sys_rt_sigsuspend_wrapper: | |||
2006 | reg_save %r24 | 2001 | reg_save %r24 |
2007 | 2002 | ||
2008 | STREG %r2, -RP_OFFSET(%r30) | 2003 | STREG %r2, -RP_OFFSET(%r30) |
2009 | #ifdef __LP64__ | 2004 | #ifdef CONFIG_64BIT |
2010 | ldo FRAME_SIZE(%r30), %r30 | 2005 | ldo FRAME_SIZE(%r30), %r30 |
2011 | b,l sys_rt_sigsuspend,%r2 | 2006 | b,l sys_rt_sigsuspend,%r2 |
2012 | ldo -16(%r30),%r29 /* Reference param save area */ | 2007 | ldo -16(%r30),%r29 /* Reference param save area */ |
@@ -2079,7 +2074,7 @@ syscall_check_bh: | |||
2079 | ldw TI_CPU-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 /* cpu # */ | 2074 | ldw TI_CPU-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 /* cpu # */ |
2080 | 2075 | ||
2081 | /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) bits */ | 2076 | /* shift left ____cacheline_aligned (aka L1_CACHE_BYTES) bits */ |
2082 | #ifdef __LP64__ | 2077 | #ifdef CONFIG_64BIT |
2083 | shld %r26, 6, %r20 | 2078 | shld %r26, 6, %r20 |
2084 | #else | 2079 | #else |
2085 | shlw %r26, 5, %r20 | 2080 | shlw %r26, 5, %r20 |
@@ -2087,9 +2082,6 @@ syscall_check_bh: | |||
2087 | add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */ | 2082 | add %r19,%r20,%r19 /* now have &irq_stat[smp_processor_id()] */ |
2088 | #endif /* CONFIG_SMP */ | 2083 | #endif /* CONFIG_SMP */ |
2089 | 2084 | ||
2090 | LDREG IRQSTAT_SIRQ_PEND(%r19),%r20 /* hardirq.h: unsigned long */ | ||
2091 | cmpib,<>,n 0,%r20,syscall_do_softirq /* forward */ | ||
2092 | |||
2093 | syscall_check_resched: | 2085 | syscall_check_resched: |
2094 | 2086 | ||
2095 | /* check for reschedule */ | 2087 | /* check for reschedule */ |
@@ -2144,7 +2136,7 @@ syscall_restore: | |||
2144 | 2136 | ||
2145 | depi 3,31,2,%r31 /* ensure return to user mode. */ | 2137 | depi 3,31,2,%r31 /* ensure return to user mode. */ |
2146 | 2138 | ||
2147 | #ifdef __LP64__ | 2139 | #ifdef CONFIG_64BIT |
2148 | /* decide whether to reset the wide mode bit | 2140 | /* decide whether to reset the wide mode bit |
2149 | * | 2141 | * |
2150 | * For a syscall, the W bit is stored in the lowest bit | 2142 | * For a syscall, the W bit is stored in the lowest bit |
@@ -2227,20 +2219,10 @@ pt_regs_ok: | |||
2227 | b intr_restore | 2219 | b intr_restore |
2228 | nop | 2220 | nop |
2229 | 2221 | ||
2230 | .import do_softirq,code | ||
2231 | syscall_do_softirq: | ||
2232 | bl do_softirq,%r2 | ||
2233 | nop | ||
2234 | /* NOTE: We enable I-bit incase we schedule later, | ||
2235 | * and we might be going back to userspace if we were | ||
2236 | * traced. */ | ||
2237 | b syscall_check_resched | ||
2238 | ssm PSW_SM_I, %r0 /* do_softirq returns with I bit off */ | ||
2239 | |||
2240 | .import schedule,code | 2222 | .import schedule,code |
2241 | syscall_do_resched: | 2223 | syscall_do_resched: |
2242 | BL schedule,%r2 | 2224 | BL schedule,%r2 |
2243 | #ifdef __LP64__ | 2225 | #ifdef CONFIG_64BIT |
2244 | ldo -16(%r30),%r29 /* Reference param save area */ | 2226 | ldo -16(%r30),%r29 /* Reference param save area */ |
2245 | #else | 2227 | #else |
2246 | nop | 2228 | nop |
@@ -2260,7 +2242,7 @@ syscall_do_signal: | |||
2260 | 2242 | ||
2261 | ldi 1, %r24 /* unsigned long in_syscall */ | 2243 | ldi 1, %r24 /* unsigned long in_syscall */ |
2262 | 2244 | ||
2263 | #ifdef __LP64__ | 2245 | #ifdef CONFIG_64BIT |
2264 | ldo -16(%r30),%r29 /* Reference param save area */ | 2246 | ldo -16(%r30),%r29 /* Reference param save area */ |
2265 | #endif | 2247 | #endif |
2266 | BL do_signal,%r2 | 2248 | BL do_signal,%r2 |
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c index f244fb200db1..553f8fe03224 100644 --- a/arch/parisc/kernel/firmware.c +++ b/arch/parisc/kernel/firmware.c | |||
@@ -83,15 +83,15 @@ static unsigned long pdc_result2[32] __attribute__ ((aligned (8))); | |||
83 | int parisc_narrow_firmware = 1; | 83 | int parisc_narrow_firmware = 1; |
84 | #endif | 84 | #endif |
85 | 85 | ||
86 | /* on all currently-supported platforms, IODC I/O calls are always | 86 | /* On most currently-supported platforms, IODC I/O calls are 32-bit calls |
87 | * 32-bit calls, and MEM_PDC calls are always the same width as the OS. | 87 | * and MEM_PDC calls are always the same width as the OS. |
88 | * This means Cxxx boxes can't run wide kernels right now. -PB | 88 | * Some PAT boxes may have 64-bit IODC I/O. |
89 | * | 89 | * |
90 | * CONFIG_PDC_NARROW has been added to allow 64-bit kernels to run on | 90 | * Ryan Bradetich added the now obsolete CONFIG_PDC_NARROW to allow |
91 | * systems with 32-bit MEM_PDC calls. This will allow wide kernels to | 91 | * 64-bit kernels to run on systems with 32-bit MEM_PDC calls. |
92 | * run on Cxxx boxes now. -RB | 92 | * This allowed wide kernels to run on Cxxx boxes. |
93 | * | 93 | * We now detect 32-bit-only PDC and dynamically switch to 32-bit mode |
94 | * Note that some PAT boxes may have 64-bit IODC I/O... | 94 | * when running a 64-bit kernel on such boxes (e.g. C200 or C360). |
95 | */ | 95 | */ |
96 | 96 | ||
97 | #ifdef __LP64__ | 97 | #ifdef __LP64__ |
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index 28405edf8448..0b47afc20690 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S | |||
@@ -12,7 +12,7 @@ | |||
12 | * Initial Version 04-23-1999 by Helge Deller <deller@gmx.de> | 12 | * Initial Version 04-23-1999 by Helge Deller <deller@gmx.de> |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/autoconf.h> /* for CONFIG_SMP */ | 15 | #include <linux/config.h> /* for CONFIG_SMP */ |
16 | 16 | ||
17 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
18 | #include <asm/psw.h> | 18 | #include <asm/psw.h> |
@@ -36,10 +36,10 @@ boot_args: | |||
36 | .align 4 | 36 | .align 4 |
37 | .import init_thread_union,data | 37 | .import init_thread_union,data |
38 | .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ | 38 | .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ |
39 | #ifndef __LP64__ | 39 | #ifndef CONFIG_64BIT |
40 | .import fault_vector_11,code /* IVA parisc 1.1 32 bit */ | 40 | .import fault_vector_11,code /* IVA parisc 1.1 32 bit */ |
41 | .import $global$ /* forward declaration */ | 41 | .import $global$ /* forward declaration */ |
42 | #endif /*!LP64*/ | 42 | #endif /*!CONFIG_64BIT*/ |
43 | .export stext | 43 | .export stext |
44 | .export _stext,data /* Kernel want it this way! */ | 44 | .export _stext,data /* Kernel want it this way! */ |
45 | _stext: | 45 | _stext: |
@@ -76,7 +76,7 @@ $bss_loop: | |||
76 | mtctl %r4,%cr24 /* Initialize kernel root pointer */ | 76 | mtctl %r4,%cr24 /* Initialize kernel root pointer */ |
77 | mtctl %r4,%cr25 /* Initialize user root pointer */ | 77 | mtctl %r4,%cr25 /* Initialize user root pointer */ |
78 | 78 | ||
79 | #ifdef __LP64__ | 79 | #ifdef CONFIG_64BIT |
80 | /* Set pmd in pgd */ | 80 | /* Set pmd in pgd */ |
81 | load32 PA(pmd0),%r5 | 81 | load32 PA(pmd0),%r5 |
82 | shrd %r5,PxD_VALUE_SHIFT,%r3 | 82 | shrd %r5,PxD_VALUE_SHIFT,%r3 |
@@ -99,7 +99,7 @@ $bss_loop: | |||
99 | stw %r3,0(%r4) | 99 | stw %r3,0(%r4) |
100 | ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 | 100 | ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 |
101 | addib,> -1,%r1,1b | 101 | addib,> -1,%r1,1b |
102 | #ifdef __LP64__ | 102 | #ifdef CONFIG_64BIT |
103 | ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 | 103 | ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 |
104 | #else | 104 | #else |
105 | ldo ASM_PGD_ENTRY_SIZE(%r4),%r4 | 105 | ldo ASM_PGD_ENTRY_SIZE(%r4),%r4 |
@@ -170,7 +170,7 @@ common_stext: | |||
170 | stw %r0,0x28(%r0) /* MEM_RENDEZ_HI */ | 170 | stw %r0,0x28(%r0) /* MEM_RENDEZ_HI */ |
171 | #endif /*CONFIG_SMP*/ | 171 | #endif /*CONFIG_SMP*/ |
172 | 172 | ||
173 | #ifdef __LP64__ | 173 | #ifdef CONFIG_64BIT |
174 | tophys_r1 %sp | 174 | tophys_r1 %sp |
175 | 175 | ||
176 | /* Save the rfi target address */ | 176 | /* Save the rfi target address */ |
@@ -224,8 +224,6 @@ stext_pdc_ret: | |||
224 | mtctl %r0,%cr12 | 224 | mtctl %r0,%cr12 |
225 | mtctl %r0,%cr13 | 225 | mtctl %r0,%cr13 |
226 | 226 | ||
227 | /* Prepare to RFI! Man all the cannons! */ | ||
228 | |||
229 | /* Initialize the global data pointer */ | 227 | /* Initialize the global data pointer */ |
230 | loadgp | 228 | loadgp |
231 | 229 | ||
@@ -235,7 +233,7 @@ stext_pdc_ret: | |||
235 | * following short sequence of instructions can determine this | 233 | * following short sequence of instructions can determine this |
236 | * (without being illegal on a PA1.1 machine). | 234 | * (without being illegal on a PA1.1 machine). |
237 | */ | 235 | */ |
238 | #ifndef __LP64__ | 236 | #ifndef CONFIG_64BIT |
239 | ldi 32,%r10 | 237 | ldi 32,%r10 |
240 | mtctl %r10,%cr11 | 238 | mtctl %r10,%cr11 |
241 | .level 2.0 | 239 | .level 2.0 |
@@ -248,52 +246,22 @@ stext_pdc_ret: | |||
248 | 246 | ||
249 | $is_pa20: | 247 | $is_pa20: |
250 | .level LEVEL /* restore 1.1 || 2.0w */ | 248 | .level LEVEL /* restore 1.1 || 2.0w */ |
251 | #endif /*!LP64*/ | 249 | #endif /*!CONFIG_64BIT*/ |
252 | load32 PA(fault_vector_20),%r10 | 250 | load32 PA(fault_vector_20),%r10 |
253 | 251 | ||
254 | $install_iva: | 252 | $install_iva: |
255 | mtctl %r10,%cr14 | 253 | mtctl %r10,%cr14 |
256 | 254 | ||
257 | #ifdef __LP64__ | 255 | b aligned_rfi /* Prepare to RFI! Man all the cannons! */ |
258 | b aligned_rfi | ||
259 | nop | 256 | nop |
260 | 257 | ||
261 | .align 256 | 258 | .align 128 |
262 | aligned_rfi: | 259 | aligned_rfi: |
263 | ssm 0,0 | 260 | pcxt_ssm_bug |
264 | nop /* 1 */ | ||
265 | nop /* 2 */ | ||
266 | nop /* 3 */ | ||
267 | nop /* 4 */ | ||
268 | nop /* 5 */ | ||
269 | nop /* 6 */ | ||
270 | nop /* 7 */ | ||
271 | nop /* 8 */ | ||
272 | #endif | ||
273 | 261 | ||
274 | #ifdef __LP64__ /* move to psw.h? */ | 262 | rsm PSW_SM_QUIET,%r0 /* off troublesome PSW bits */ |
275 | #define PSW_BITS PSW_Q+PSW_I+PSW_D+PSW_P+PSW_R | 263 | /* Don't need NOPs, have 8 compliant insn before rfi */ |
276 | #else | ||
277 | #define PSW_BITS PSW_SM_Q | ||
278 | #endif | ||
279 | 264 | ||
280 | $rfi: | ||
281 | /* turn off troublesome PSW bits */ | ||
282 | rsm PSW_BITS,%r0 | ||
283 | |||
284 | /* kernel PSW: | ||
285 | * - no interruptions except HPMC and TOC (which are handled by PDC) | ||
286 | * - Q bit set (IODC / PDC interruptions) | ||
287 | * - big-endian | ||
288 | * - virtually mapped | ||
289 | */ | ||
290 | load32 KERNEL_PSW,%r10 | ||
291 | mtctl %r10,%ipsw | ||
292 | |||
293 | /* Set the space pointers for the post-RFI world | ||
294 | ** Clear the two-level IIA Space Queue, effectively setting | ||
295 | ** Kernel space. | ||
296 | */ | ||
297 | mtctl %r0,%cr17 /* Clear IIASQ tail */ | 265 | mtctl %r0,%cr17 /* Clear IIASQ tail */ |
298 | mtctl %r0,%cr17 /* Clear IIASQ head */ | 266 | mtctl %r0,%cr17 /* Clear IIASQ head */ |
299 | 267 | ||
@@ -301,8 +269,11 @@ $rfi: | |||
301 | mtctl %r11,%cr18 /* IIAOQ head */ | 269 | mtctl %r11,%cr18 /* IIAOQ head */ |
302 | ldo 4(%r11),%r11 | 270 | ldo 4(%r11),%r11 |
303 | mtctl %r11,%cr18 /* IIAOQ tail */ | 271 | mtctl %r11,%cr18 /* IIAOQ tail */ |
272 | |||
273 | load32 KERNEL_PSW,%r10 | ||
274 | mtctl %r10,%ipsw | ||
304 | 275 | ||
305 | /* Jump to hyperspace */ | 276 | /* Jump through hyperspace to Virt Mode */ |
306 | rfi | 277 | rfi |
307 | nop | 278 | nop |
308 | 279 | ||
@@ -313,7 +284,7 @@ $rfi: | |||
313 | .import smp_init_current_idle_task,data | 284 | .import smp_init_current_idle_task,data |
314 | .import smp_callin,code | 285 | .import smp_callin,code |
315 | 286 | ||
316 | #ifndef __LP64__ | 287 | #ifndef CONFIG_64BIT |
317 | smp_callin_rtn: | 288 | smp_callin_rtn: |
318 | .proc | 289 | .proc |
319 | .callinfo | 290 | .callinfo |
@@ -321,7 +292,7 @@ smp_callin_rtn: | |||
321 | nop | 292 | nop |
322 | nop | 293 | nop |
323 | .procend | 294 | .procend |
324 | #endif /*!LP64*/ | 295 | #endif /*!CONFIG_64BIT*/ |
325 | 296 | ||
326 | /*************************************************************************** | 297 | /*************************************************************************** |
327 | * smp_slave_stext is executed by all non-monarch Processors when the Monarch | 298 | * smp_slave_stext is executed by all non-monarch Processors when the Monarch |
@@ -356,7 +327,7 @@ smp_slave_stext: | |||
356 | mtctl %r4,%cr24 /* Initialize kernel root pointer */ | 327 | mtctl %r4,%cr24 /* Initialize kernel root pointer */ |
357 | mtctl %r4,%cr25 /* Initialize user root pointer */ | 328 | mtctl %r4,%cr25 /* Initialize user root pointer */ |
358 | 329 | ||
359 | #ifdef __LP64__ | 330 | #ifdef CONFIG_64BIT |
360 | /* Setup PDCE_PROC entry */ | 331 | /* Setup PDCE_PROC entry */ |
361 | copy %arg0,%r3 | 332 | copy %arg0,%r3 |
362 | #else | 333 | #else |
@@ -373,7 +344,7 @@ smp_slave_stext: | |||
373 | 344 | ||
374 | .procend | 345 | .procend |
375 | #endif /* CONFIG_SMP */ | 346 | #endif /* CONFIG_SMP */ |
376 | #ifndef __LP64__ | 347 | #ifndef CONFIG_64BIT |
377 | .data | 348 | .data |
378 | 349 | ||
379 | .align 4 | 350 | .align 4 |
@@ -383,4 +354,4 @@ smp_slave_stext: | |||
383 | .size $global$,4 | 354 | .size $global$,4 |
384 | $global$: | 355 | $global$: |
385 | .word 0 | 356 | .word 0 |
386 | #endif /*!LP64*/ | 357 | #endif /*!CONFIG_64BIT*/ |
diff --git a/arch/parisc/kernel/ioctl32.c b/arch/parisc/kernel/ioctl32.c index 1d3824b670d1..8cad8f004f00 100644 --- a/arch/parisc/kernel/ioctl32.c +++ b/arch/parisc/kernel/ioctl32.c | |||
@@ -104,12 +104,9 @@ static int drm32_version(unsigned int fd, unsigned int cmd, unsigned long arg) | |||
104 | } | 104 | } |
105 | 105 | ||
106 | out: | 106 | out: |
107 | if (kversion.name) | 107 | kfree(kversion.name); |
108 | kfree(kversion.name); | 108 | kfree(kversion.date); |
109 | if (kversion.date) | 109 | kfree(kversion.desc); |
110 | kfree(kversion.date); | ||
111 | if (kversion.desc) | ||
112 | kfree(kversion.desc); | ||
113 | return ret; | 110 | return ret; |
114 | } | 111 | } |
115 | 112 | ||
@@ -166,9 +163,7 @@ static int drm32_getsetunique(unsigned int fd, unsigned int cmd, unsigned long a | |||
166 | ret = -EFAULT; | 163 | ret = -EFAULT; |
167 | } | 164 | } |
168 | 165 | ||
169 | if (karg.unique != NULL) | 166 | kfree(karg.unique); |
170 | kfree(karg.unique); | ||
171 | |||
172 | return ret; | 167 | return ret; |
173 | } | 168 | } |
174 | 169 | ||
@@ -265,7 +260,6 @@ static int drm32_info_bufs(unsigned int fd, unsigned int cmd, unsigned long arg) | |||
265 | } | 260 | } |
266 | 261 | ||
267 | kfree(karg.list); | 262 | kfree(karg.list); |
268 | |||
269 | return ret; | 263 | return ret; |
270 | } | 264 | } |
271 | 265 | ||
@@ -305,7 +299,6 @@ static int drm32_free_bufs(unsigned int fd, unsigned int cmd, unsigned long arg) | |||
305 | 299 | ||
306 | out: | 300 | out: |
307 | kfree(karg.list); | 301 | kfree(karg.list); |
308 | |||
309 | return ret; | 302 | return ret; |
310 | } | 303 | } |
311 | 304 | ||
@@ -494,15 +487,10 @@ static int drm32_dma(unsigned int fd, unsigned int cmd, unsigned long arg) | |||
494 | } | 487 | } |
495 | 488 | ||
496 | out: | 489 | out: |
497 | if (karg.send_indices) | 490 | kfree(karg.send_indices); |
498 | kfree(karg.send_indices); | 491 | kfree(karg.send_sizes); |
499 | if (karg.send_sizes) | 492 | kfree(karg.request_indices); |
500 | kfree(karg.send_sizes); | 493 | kfree(karg.request_sizes); |
501 | if (karg.request_indices) | ||
502 | kfree(karg.request_indices); | ||
503 | if (karg.request_sizes) | ||
504 | kfree(karg.request_sizes); | ||
505 | |||
506 | return ret; | 494 | return ret; |
507 | } | 495 | } |
508 | 496 | ||
@@ -555,9 +543,7 @@ static int drm32_res_ctx(unsigned int fd, unsigned int cmd, unsigned long arg) | |||
555 | ret = -EFAULT; | 543 | ret = -EFAULT; |
556 | } | 544 | } |
557 | 545 | ||
558 | if (karg.contexts) | 546 | kfree(karg.contexts); |
559 | kfree(karg.contexts); | ||
560 | |||
561 | return ret; | 547 | return ret; |
562 | } | 548 | } |
563 | 549 | ||
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 77e03bc0f935..9534ee17b9be 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -26,7 +26,7 @@ | |||
26 | * can be used. | 26 | * can be used. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifdef __LP64__ | 29 | #ifdef CONFIG_64BIT |
30 | #define ADDIB addib,* | 30 | #define ADDIB addib,* |
31 | #define CMPB cmpb,* | 31 | #define CMPB cmpb,* |
32 | #define ANDCM andcm,* | 32 | #define ANDCM andcm,* |
@@ -40,8 +40,10 @@ | |||
40 | .level 2.0 | 40 | .level 2.0 |
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | #include <asm/assembly.h> | 43 | #include <linux/config.h> |
44 | |||
44 | #include <asm/psw.h> | 45 | #include <asm/psw.h> |
46 | #include <asm/assembly.h> | ||
45 | #include <asm/pgtable.h> | 47 | #include <asm/pgtable.h> |
46 | #include <asm/cache.h> | 48 | #include <asm/cache.h> |
47 | 49 | ||
@@ -62,32 +64,23 @@ flush_tlb_all_local: | |||
62 | * to happen in real mode with all interruptions disabled. | 64 | * to happen in real mode with all interruptions disabled. |
63 | */ | 65 | */ |
64 | 66 | ||
65 | /* | 67 | /* pcxt_ssm_bug - relied upon translation! PA 2.0 Arch. F-4 and F-5 */ |
66 | * Once again, we do the rfi dance ... some day we need examine | 68 | rsm PSW_SM_I, %r19 /* save I-bit state */ |
67 | * all of our uses of this type of code and see what can be | 69 | load32 PA(1f), %r1 |
68 | * consolidated. | ||
69 | */ | ||
70 | |||
71 | rsm PSW_SM_I, %r19 /* relied upon translation! PA 2.0 Arch. F-5 */ | ||
72 | nop | 70 | nop |
73 | nop | 71 | nop |
74 | nop | 72 | nop |
75 | nop | 73 | nop |
76 | nop | 74 | nop |
77 | nop | 75 | |
78 | nop | 76 | rsm PSW_SM_Q, %r0 /* prep to load iia queue */ |
79 | |||
80 | rsm PSW_SM_Q, %r0 /* Turn off Q bit to load iia queue */ | ||
81 | ldil L%REAL_MODE_PSW, %r1 | ||
82 | ldo R%REAL_MODE_PSW(%r1), %r1 | ||
83 | mtctl %r1, %cr22 | ||
84 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 77 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
85 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 78 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
86 | ldil L%PA(1f), %r1 | ||
87 | ldo R%PA(1f)(%r1), %r1 | ||
88 | mtctl %r1, %cr18 /* IIAOQ head */ | 79 | mtctl %r1, %cr18 /* IIAOQ head */ |
89 | ldo 4(%r1), %r1 | 80 | ldo 4(%r1), %r1 |
90 | mtctl %r1, %cr18 /* IIAOQ tail */ | 81 | mtctl %r1, %cr18 /* IIAOQ tail */ |
82 | load32 REAL_MODE_PSW, %r1 | ||
83 | mtctl %r1, %ipsw | ||
91 | rfi | 84 | rfi |
92 | nop | 85 | nop |
93 | 86 | ||
@@ -178,29 +171,36 @@ fdtonemiddle: /* Loop if LOOP = 1 */ | |||
178 | ADDIB> -1, %r22, fdtoneloop /* Outer loop count decr */ | 171 | ADDIB> -1, %r22, fdtoneloop /* Outer loop count decr */ |
179 | add %r21, %r20, %r20 /* increment space */ | 172 | add %r21, %r20, %r20 /* increment space */ |
180 | 173 | ||
181 | fdtdone: | ||
182 | 174 | ||
183 | /* Switch back to virtual mode */ | 175 | fdtdone: |
176 | /* | ||
177 | * Switch back to virtual mode | ||
178 | */ | ||
179 | /* pcxt_ssm_bug */ | ||
180 | rsm PSW_SM_I, %r0 | ||
181 | load32 2f, %r1 | ||
182 | nop | ||
183 | nop | ||
184 | nop | ||
185 | nop | ||
186 | nop | ||
184 | 187 | ||
185 | rsm PSW_SM_Q, %r0 /* clear Q bit to load iia queue */ | 188 | rsm PSW_SM_Q, %r0 /* prep to load iia queue */ |
186 | ldil L%KERNEL_PSW, %r1 | ||
187 | ldo R%KERNEL_PSW(%r1), %r1 | ||
188 | or %r1, %r19, %r1 /* Set I bit if set on entry */ | ||
189 | mtctl %r1, %cr22 | ||
190 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 189 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
191 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 190 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
192 | ldil L%(2f), %r1 | ||
193 | ldo R%(2f)(%r1), %r1 | ||
194 | mtctl %r1, %cr18 /* IIAOQ head */ | 191 | mtctl %r1, %cr18 /* IIAOQ head */ |
195 | ldo 4(%r1), %r1 | 192 | ldo 4(%r1), %r1 |
196 | mtctl %r1, %cr18 /* IIAOQ tail */ | 193 | mtctl %r1, %cr18 /* IIAOQ tail */ |
194 | load32 KERNEL_PSW, %r1 | ||
195 | or %r1, %r19, %r1 /* I-bit to state on entry */ | ||
196 | mtctl %r1, %ipsw /* restore I-bit (entire PSW) */ | ||
197 | rfi | 197 | rfi |
198 | nop | 198 | nop |
199 | 199 | ||
200 | 2: bv %r0(%r2) | 200 | 2: bv %r0(%r2) |
201 | nop | 201 | nop |
202 | .exit | ||
203 | 202 | ||
203 | .exit | ||
204 | .procend | 204 | .procend |
205 | 205 | ||
206 | .export flush_instruction_cache_local,code | 206 | .export flush_instruction_cache_local,code |
@@ -227,7 +227,7 @@ flush_instruction_cache_local: | |||
227 | 227 | ||
228 | fimanyloop: /* Loop if LOOP >= 2 */ | 228 | fimanyloop: /* Loop if LOOP >= 2 */ |
229 | ADDIB> -1, %r31, fimanyloop /* Adjusted inner loop decr */ | 229 | ADDIB> -1, %r31, fimanyloop /* Adjusted inner loop decr */ |
230 | fice 0(%sr1, %arg0) | 230 | fice %r0(%sr1, %arg0) |
231 | fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ | 231 | fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ |
232 | movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ | 232 | movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ |
233 | ADDIB<=,n -1, %arg2, fisync /* Outer loop decr */ | 233 | ADDIB<=,n -1, %arg2, fisync /* Outer loop decr */ |
@@ -238,7 +238,7 @@ fioneloop: /* Loop if LOOP = 1 */ | |||
238 | 238 | ||
239 | fisync: | 239 | fisync: |
240 | sync | 240 | sync |
241 | mtsm %r22 | 241 | mtsm %r22 /* restore I-bit */ |
242 | bv %r0(%r2) | 242 | bv %r0(%r2) |
243 | nop | 243 | nop |
244 | .exit | 244 | .exit |
@@ -269,7 +269,7 @@ flush_data_cache_local: | |||
269 | 269 | ||
270 | fdmanyloop: /* Loop if LOOP >= 2 */ | 270 | fdmanyloop: /* Loop if LOOP >= 2 */ |
271 | ADDIB> -1, %r31, fdmanyloop /* Adjusted inner loop decr */ | 271 | ADDIB> -1, %r31, fdmanyloop /* Adjusted inner loop decr */ |
272 | fdce 0(%sr1, %arg0) | 272 | fdce %r0(%sr1, %arg0) |
273 | fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ | 273 | fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ |
274 | movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ | 274 | movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ |
275 | ADDIB<=,n -1, %arg2, fdsync /* Outer loop decr */ | 275 | ADDIB<=,n -1, %arg2, fdsync /* Outer loop decr */ |
@@ -281,7 +281,7 @@ fdoneloop: /* Loop if LOOP = 1 */ | |||
281 | fdsync: | 281 | fdsync: |
282 | syncdma | 282 | syncdma |
283 | sync | 283 | sync |
284 | mtsm %r22 | 284 | mtsm %r22 /* restore I-bit */ |
285 | bv %r0(%r2) | 285 | bv %r0(%r2) |
286 | nop | 286 | nop |
287 | .exit | 287 | .exit |
@@ -296,7 +296,7 @@ copy_user_page_asm: | |||
296 | .callinfo NO_CALLS | 296 | .callinfo NO_CALLS |
297 | .entry | 297 | .entry |
298 | 298 | ||
299 | #ifdef __LP64__ | 299 | #ifdef CONFIG_64BIT |
300 | /* PA8x00 CPUs can consume 2 loads or 1 store per cycle. | 300 | /* PA8x00 CPUs can consume 2 loads or 1 store per cycle. |
301 | * Unroll the loop by hand and arrange insn appropriately. | 301 | * Unroll the loop by hand and arrange insn appropriately. |
302 | * GCC probably can do this just as well. | 302 | * GCC probably can do this just as well. |
@@ -351,7 +351,11 @@ copy_user_page_asm: | |||
351 | std %r22, 120(%r26) | 351 | std %r22, 120(%r26) |
352 | ldo 128(%r26), %r26 | 352 | ldo 128(%r26), %r26 |
353 | 353 | ||
354 | ADDIB> -1, %r1, 1b /* bundle 10 */ | 354 | /* conditional branches nullify on forward taken branch, and on |
355 | * non-taken backward branch. Note that .+4 is a backwards branch. | ||
356 | * The ldd should only get executed if the branch is taken. | ||
357 | */ | ||
358 | ADDIB>,n -1, %r1, 1b /* bundle 10 */ | ||
355 | ldd 0(%r25), %r19 /* start next loads */ | 359 | ldd 0(%r25), %r19 /* start next loads */ |
356 | 360 | ||
357 | #else | 361 | #else |
@@ -363,10 +367,10 @@ copy_user_page_asm: | |||
363 | * the full 64 bit register values on interrupt, we can't | 367 | * the full 64 bit register values on interrupt, we can't |
364 | * use ldd/std on a 32 bit kernel. | 368 | * use ldd/std on a 32 bit kernel. |
365 | */ | 369 | */ |
370 | ldw 0(%r25), %r19 | ||
366 | ldi 64, %r1 /* PAGE_SIZE/64 == 64 */ | 371 | ldi 64, %r1 /* PAGE_SIZE/64 == 64 */ |
367 | 372 | ||
368 | 1: | 373 | 1: |
369 | ldw 0(%r25), %r19 | ||
370 | ldw 4(%r25), %r20 | 374 | ldw 4(%r25), %r20 |
371 | ldw 8(%r25), %r21 | 375 | ldw 8(%r25), %r21 |
372 | ldw 12(%r25), %r22 | 376 | ldw 12(%r25), %r22 |
@@ -396,11 +400,12 @@ copy_user_page_asm: | |||
396 | ldw 60(%r25), %r22 | 400 | ldw 60(%r25), %r22 |
397 | stw %r19, 48(%r26) | 401 | stw %r19, 48(%r26) |
398 | stw %r20, 52(%r26) | 402 | stw %r20, 52(%r26) |
403 | ldo 64(%r25), %r25 | ||
399 | stw %r21, 56(%r26) | 404 | stw %r21, 56(%r26) |
400 | stw %r22, 60(%r26) | 405 | stw %r22, 60(%r26) |
401 | ldo 64(%r26), %r26 | 406 | ldo 64(%r26), %r26 |
402 | ADDIB> -1, %r1, 1b | 407 | ADDIB>,n -1, %r1, 1b |
403 | ldo 64(%r25), %r25 | 408 | ldw 0(%r25), %r19 |
404 | #endif | 409 | #endif |
405 | bv %r0(%r2) | 410 | bv %r0(%r2) |
406 | nop | 411 | nop |
@@ -456,7 +461,7 @@ copy_user_page_asm: | |||
456 | sub %r25, %r1, %r23 /* move physical addr into non shadowed reg */ | 461 | sub %r25, %r1, %r23 /* move physical addr into non shadowed reg */ |
457 | 462 | ||
458 | ldil L%(TMPALIAS_MAP_START), %r28 | 463 | ldil L%(TMPALIAS_MAP_START), %r28 |
459 | #ifdef __LP64__ | 464 | #ifdef CONFIG_64BIT |
460 | extrd,u %r26,56,32, %r26 /* convert phys addr to tlb insert format */ | 465 | extrd,u %r26,56,32, %r26 /* convert phys addr to tlb insert format */ |
461 | extrd,u %r23,56,32, %r23 /* convert phys addr to tlb insert format */ | 466 | extrd,u %r23,56,32, %r23 /* convert phys addr to tlb insert format */ |
462 | depd %r24,63,22, %r28 /* Form aliased virtual address 'to' */ | 467 | depd %r24,63,22, %r28 /* Form aliased virtual address 'to' */ |
@@ -543,7 +548,7 @@ __clear_user_page_asm: | |||
543 | tophys_r1 %r26 | 548 | tophys_r1 %r26 |
544 | 549 | ||
545 | ldil L%(TMPALIAS_MAP_START), %r28 | 550 | ldil L%(TMPALIAS_MAP_START), %r28 |
546 | #ifdef __LP64__ | 551 | #ifdef CONFIG_64BIT |
547 | #if (TMPALIAS_MAP_START >= 0x80000000) | 552 | #if (TMPALIAS_MAP_START >= 0x80000000) |
548 | depdi 0, 31,32, %r28 /* clear any sign extension */ | 553 | depdi 0, 31,32, %r28 /* clear any sign extension */ |
549 | #endif | 554 | #endif |
@@ -560,7 +565,7 @@ __clear_user_page_asm: | |||
560 | 565 | ||
561 | pdtlb 0(%r28) | 566 | pdtlb 0(%r28) |
562 | 567 | ||
563 | #ifdef __LP64__ | 568 | #ifdef CONFIG_64BIT |
564 | ldi 32, %r1 /* PAGE_SIZE/128 == 32 */ | 569 | ldi 32, %r1 /* PAGE_SIZE/128 == 32 */ |
565 | 570 | ||
566 | /* PREFETCH (Write) has not (yet) been proven to help here */ | 571 | /* PREFETCH (Write) has not (yet) been proven to help here */ |
@@ -585,7 +590,7 @@ __clear_user_page_asm: | |||
585 | ADDIB> -1, %r1, 1b | 590 | ADDIB> -1, %r1, 1b |
586 | ldo 128(%r28), %r28 | 591 | ldo 128(%r28), %r28 |
587 | 592 | ||
588 | #else /* ! __LP64 */ | 593 | #else /* ! CONFIG_64BIT */ |
589 | 594 | ||
590 | ldi 64, %r1 /* PAGE_SIZE/64 == 64 */ | 595 | ldi 64, %r1 /* PAGE_SIZE/64 == 64 */ |
591 | 596 | ||
@@ -608,7 +613,7 @@ __clear_user_page_asm: | |||
608 | stw %r0, 60(%r28) | 613 | stw %r0, 60(%r28) |
609 | ADDIB> -1, %r1, 1b | 614 | ADDIB> -1, %r1, 1b |
610 | ldo 64(%r28), %r28 | 615 | ldo 64(%r28), %r28 |
611 | #endif /* __LP64 */ | 616 | #endif /* CONFIG_64BIT */ |
612 | 617 | ||
613 | bv %r0(%r2) | 618 | bv %r0(%r2) |
614 | nop | 619 | nop |
@@ -626,7 +631,7 @@ flush_kernel_dcache_page: | |||
626 | ldil L%dcache_stride, %r1 | 631 | ldil L%dcache_stride, %r1 |
627 | ldw R%dcache_stride(%r1), %r23 | 632 | ldw R%dcache_stride(%r1), %r23 |
628 | 633 | ||
629 | #ifdef __LP64__ | 634 | #ifdef CONFIG_64BIT |
630 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 | 635 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 |
631 | #else | 636 | #else |
632 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 | 637 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 |
@@ -670,7 +675,7 @@ flush_user_dcache_page: | |||
670 | ldil L%dcache_stride, %r1 | 675 | ldil L%dcache_stride, %r1 |
671 | ldw R%dcache_stride(%r1), %r23 | 676 | ldw R%dcache_stride(%r1), %r23 |
672 | 677 | ||
673 | #ifdef __LP64__ | 678 | #ifdef CONFIG_64BIT |
674 | depdi,z 1,63-PAGE_SHIFT,1, %r25 | 679 | depdi,z 1,63-PAGE_SHIFT,1, %r25 |
675 | #else | 680 | #else |
676 | depwi,z 1,31-PAGE_SHIFT,1, %r25 | 681 | depwi,z 1,31-PAGE_SHIFT,1, %r25 |
@@ -714,7 +719,7 @@ flush_user_icache_page: | |||
714 | ldil L%dcache_stride, %r1 | 719 | ldil L%dcache_stride, %r1 |
715 | ldw R%dcache_stride(%r1), %r23 | 720 | ldw R%dcache_stride(%r1), %r23 |
716 | 721 | ||
717 | #ifdef __LP64__ | 722 | #ifdef CONFIG_64BIT |
718 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 | 723 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 |
719 | #else | 724 | #else |
720 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 | 725 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 |
@@ -759,7 +764,7 @@ purge_kernel_dcache_page: | |||
759 | ldil L%dcache_stride, %r1 | 764 | ldil L%dcache_stride, %r1 |
760 | ldw R%dcache_stride(%r1), %r23 | 765 | ldw R%dcache_stride(%r1), %r23 |
761 | 766 | ||
762 | #ifdef __LP64__ | 767 | #ifdef CONFIG_64BIT |
763 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 | 768 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 |
764 | #else | 769 | #else |
765 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 | 770 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 |
@@ -807,7 +812,7 @@ flush_alias_page: | |||
807 | tophys_r1 %r26 | 812 | tophys_r1 %r26 |
808 | 813 | ||
809 | ldil L%(TMPALIAS_MAP_START), %r28 | 814 | ldil L%(TMPALIAS_MAP_START), %r28 |
810 | #ifdef __LP64__ | 815 | #ifdef CONFIG_64BIT |
811 | extrd,u %r26, 56,32, %r26 /* convert phys addr to tlb insert format */ | 816 | extrd,u %r26, 56,32, %r26 /* convert phys addr to tlb insert format */ |
812 | depd %r25, 63,22, %r28 /* Form aliased virtual address 'to' */ | 817 | depd %r25, 63,22, %r28 /* Form aliased virtual address 'to' */ |
813 | depdi 0, 63,12, %r28 /* Clear any offset bits */ | 818 | depdi 0, 63,12, %r28 /* Clear any offset bits */ |
@@ -824,7 +829,7 @@ flush_alias_page: | |||
824 | ldil L%dcache_stride, %r1 | 829 | ldil L%dcache_stride, %r1 |
825 | ldw R%dcache_stride(%r1), %r23 | 830 | ldw R%dcache_stride(%r1), %r23 |
826 | 831 | ||
827 | #ifdef __LP64__ | 832 | #ifdef CONFIG_64BIT |
828 | depdi,z 1, 63-PAGE_SHIFT,1, %r29 | 833 | depdi,z 1, 63-PAGE_SHIFT,1, %r29 |
829 | #else | 834 | #else |
830 | depwi,z 1, 31-PAGE_SHIFT,1, %r29 | 835 | depwi,z 1, 31-PAGE_SHIFT,1, %r29 |
@@ -935,7 +940,7 @@ flush_kernel_icache_page: | |||
935 | ldil L%icache_stride, %r1 | 940 | ldil L%icache_stride, %r1 |
936 | ldw R%icache_stride(%r1), %r23 | 941 | ldw R%icache_stride(%r1), %r23 |
937 | 942 | ||
938 | #ifdef __LP64__ | 943 | #ifdef CONFIG_64BIT |
939 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 | 944 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 |
940 | #else | 945 | #else |
941 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 | 946 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 |
@@ -944,23 +949,23 @@ flush_kernel_icache_page: | |||
944 | sub %r25, %r23, %r25 | 949 | sub %r25, %r23, %r25 |
945 | 950 | ||
946 | 951 | ||
947 | 1: fic,m %r23(%r26) | 952 | 1: fic,m %r23(%sr4, %r26) |
948 | fic,m %r23(%r26) | 953 | fic,m %r23(%sr4, %r26) |
949 | fic,m %r23(%r26) | 954 | fic,m %r23(%sr4, %r26) |
950 | fic,m %r23(%r26) | 955 | fic,m %r23(%sr4, %r26) |
951 | fic,m %r23(%r26) | 956 | fic,m %r23(%sr4, %r26) |
952 | fic,m %r23(%r26) | 957 | fic,m %r23(%sr4, %r26) |
953 | fic,m %r23(%r26) | 958 | fic,m %r23(%sr4, %r26) |
954 | fic,m %r23(%r26) | 959 | fic,m %r23(%sr4, %r26) |
955 | fic,m %r23(%r26) | 960 | fic,m %r23(%sr4, %r26) |
956 | fic,m %r23(%r26) | 961 | fic,m %r23(%sr4, %r26) |
957 | fic,m %r23(%r26) | 962 | fic,m %r23(%sr4, %r26) |
958 | fic,m %r23(%r26) | 963 | fic,m %r23(%sr4, %r26) |
959 | fic,m %r23(%r26) | 964 | fic,m %r23(%sr4, %r26) |
960 | fic,m %r23(%r26) | 965 | fic,m %r23(%sr4, %r26) |
961 | fic,m %r23(%r26) | 966 | fic,m %r23(%sr4, %r26) |
962 | CMPB<< %r26, %r25, 1b | 967 | CMPB<< %r26, %r25, 1b |
963 | fic,m %r23(%r26) | 968 | fic,m %r23(%sr4, %r26) |
964 | 969 | ||
965 | sync | 970 | sync |
966 | bv %r0(%r2) | 971 | bv %r0(%r2) |
@@ -982,17 +987,18 @@ flush_kernel_icache_range_asm: | |||
982 | ANDCM %r26, %r21, %r26 | 987 | ANDCM %r26, %r21, %r26 |
983 | 988 | ||
984 | 1: CMPB<<,n %r26, %r25, 1b | 989 | 1: CMPB<<,n %r26, %r25, 1b |
985 | fic,m %r23(%r26) | 990 | fic,m %r23(%sr4, %r26) |
986 | 991 | ||
987 | sync | 992 | sync |
988 | bv %r0(%r2) | 993 | bv %r0(%r2) |
989 | nop | 994 | nop |
990 | .exit | 995 | .exit |
991 | |||
992 | .procend | 996 | .procend |
993 | 997 | ||
994 | .align 128 | 998 | /* align should cover use of rfi in disable_sr_hashing_asm and |
995 | 999 | * srdis_done. | |
1000 | */ | ||
1001 | .align 256 | ||
996 | .export disable_sr_hashing_asm,code | 1002 | .export disable_sr_hashing_asm,code |
997 | 1003 | ||
998 | disable_sr_hashing_asm: | 1004 | disable_sr_hashing_asm: |
@@ -1000,28 +1006,26 @@ disable_sr_hashing_asm: | |||
1000 | .callinfo NO_CALLS | 1006 | .callinfo NO_CALLS |
1001 | .entry | 1007 | .entry |
1002 | 1008 | ||
1003 | /* Switch to real mode */ | 1009 | /* |
1004 | 1010 | * Switch to real mode | |
1005 | ssm 0, %r0 /* relied upon translation! */ | 1011 | */ |
1006 | nop | 1012 | /* pcxt_ssm_bug */ |
1007 | nop | 1013 | rsm PSW_SM_I, %r0 |
1014 | load32 PA(1f), %r1 | ||
1008 | nop | 1015 | nop |
1009 | nop | 1016 | nop |
1010 | nop | 1017 | nop |
1011 | nop | 1018 | nop |
1012 | nop | 1019 | nop |
1013 | 1020 | ||
1014 | rsm (PSW_SM_Q|PSW_SM_I), %r0 /* disable Q&I to load the iia queue */ | 1021 | rsm PSW_SM_Q, %r0 /* prep to load iia queue */ |
1015 | ldil L%REAL_MODE_PSW, %r1 | ||
1016 | ldo R%REAL_MODE_PSW(%r1), %r1 | ||
1017 | mtctl %r1, %cr22 | ||
1018 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 1022 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
1019 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 1023 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
1020 | ldil L%PA(1f), %r1 | ||
1021 | ldo R%PA(1f)(%r1), %r1 | ||
1022 | mtctl %r1, %cr18 /* IIAOQ head */ | 1024 | mtctl %r1, %cr18 /* IIAOQ head */ |
1023 | ldo 4(%r1), %r1 | 1025 | ldo 4(%r1), %r1 |
1024 | mtctl %r1, %cr18 /* IIAOQ tail */ | 1026 | mtctl %r1, %cr18 /* IIAOQ tail */ |
1027 | load32 REAL_MODE_PSW, %r1 | ||
1028 | mtctl %r1, %ipsw | ||
1025 | rfi | 1029 | rfi |
1026 | nop | 1030 | nop |
1027 | 1031 | ||
@@ -1053,27 +1057,31 @@ srdis_pcxl: | |||
1053 | 1057 | ||
1054 | srdis_pa20: | 1058 | srdis_pa20: |
1055 | 1059 | ||
1056 | /* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+ */ | 1060 | /* Disable Space Register Hashing for PCXU,PCXU+,PCXW,PCXW+,PCXW2 */ |
1057 | 1061 | ||
1058 | .word 0x144008bc /* mfdiag %dr2, %r28 */ | 1062 | .word 0x144008bc /* mfdiag %dr2, %r28 */ |
1059 | depdi 0, 54,1, %r28 /* clear DIAG_SPHASH_ENAB (bit 54) */ | 1063 | depdi 0, 54,1, %r28 /* clear DIAG_SPHASH_ENAB (bit 54) */ |
1060 | .word 0x145c1840 /* mtdiag %r28, %dr2 */ | 1064 | .word 0x145c1840 /* mtdiag %r28, %dr2 */ |
1061 | 1065 | ||
1062 | srdis_done: | ||
1063 | 1066 | ||
1067 | srdis_done: | ||
1064 | /* Switch back to virtual mode */ | 1068 | /* Switch back to virtual mode */ |
1069 | rsm PSW_SM_I, %r0 /* prep to load iia queue */ | ||
1070 | load32 2f, %r1 | ||
1071 | nop | ||
1072 | nop | ||
1073 | nop | ||
1074 | nop | ||
1075 | nop | ||
1065 | 1076 | ||
1066 | rsm PSW_SM_Q, %r0 /* clear Q bit to load iia queue */ | 1077 | rsm PSW_SM_Q, %r0 /* prep to load iia queue */ |
1067 | ldil L%KERNEL_PSW, %r1 | ||
1068 | ldo R%KERNEL_PSW(%r1), %r1 | ||
1069 | mtctl %r1, %cr22 | ||
1070 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 1078 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
1071 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 1079 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
1072 | ldil L%(2f), %r1 | ||
1073 | ldo R%(2f)(%r1), %r1 | ||
1074 | mtctl %r1, %cr18 /* IIAOQ head */ | 1080 | mtctl %r1, %cr18 /* IIAOQ head */ |
1075 | ldo 4(%r1), %r1 | 1081 | ldo 4(%r1), %r1 |
1076 | mtctl %r1, %cr18 /* IIAOQ tail */ | 1082 | mtctl %r1, %cr18 /* IIAOQ tail */ |
1083 | load32 KERNEL_PSW, %r1 | ||
1084 | mtctl %r1, %ipsw | ||
1077 | rfi | 1085 | rfi |
1078 | nop | 1086 | nop |
1079 | 1087 | ||
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c index 844c2877a2e3..ae6213d71670 100644 --- a/arch/parisc/kernel/pci-dma.c +++ b/arch/parisc/kernel/pci-dma.c | |||
@@ -31,7 +31,7 @@ | |||
31 | #include <asm/page.h> /* get_order */ | 31 | #include <asm/page.h> /* get_order */ |
32 | #include <asm/pgalloc.h> | 32 | #include <asm/pgalloc.h> |
33 | #include <asm/uaccess.h> | 33 | #include <asm/uaccess.h> |
34 | 34 | #include <asm/tlbflush.h> /* for purge_tlb_*() macros */ | |
35 | 35 | ||
36 | static struct proc_dir_entry * proc_gsc_root = NULL; | 36 | static struct proc_dir_entry * proc_gsc_root = NULL; |
37 | static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length); | 37 | static int pcxl_proc_info(char *buffer, char **start, off_t offset, int length); |
@@ -333,18 +333,28 @@ pcxl_free_range(unsigned long vaddr, size_t size) | |||
333 | static int __init | 333 | static int __init |
334 | pcxl_dma_init(void) | 334 | pcxl_dma_init(void) |
335 | { | 335 | { |
336 | if (pcxl_dma_start == 0) | 336 | if (pcxl_dma_start == 0) |
337 | return 0; | 337 | return 0; |
338 | 338 | ||
339 | spin_lock_init(&pcxl_res_lock); | 339 | spin_lock_init(&pcxl_res_lock); |
340 | pcxl_res_size = PCXL_DMA_MAP_SIZE >> (PAGE_SHIFT + 3); | 340 | pcxl_res_size = PCXL_DMA_MAP_SIZE >> (PAGE_SHIFT + 3); |
341 | pcxl_res_hint = 0; | 341 | pcxl_res_hint = 0; |
342 | pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL, | 342 | pcxl_res_map = (char *)__get_free_pages(GFP_KERNEL, |
343 | get_order(pcxl_res_size)); | 343 | get_order(pcxl_res_size)); |
344 | memset(pcxl_res_map, 0, pcxl_res_size); | 344 | memset(pcxl_res_map, 0, pcxl_res_size); |
345 | proc_gsc_root = proc_mkdir("gsc", 0); | 345 | proc_gsc_root = proc_mkdir("gsc", 0); |
346 | create_proc_info_entry("dino", 0, proc_gsc_root, pcxl_proc_info); | 346 | if (!proc_gsc_root) |
347 | return 0; | 347 | printk(KERN_WARNING |
348 | "pcxl_dma_init: Unable to create gsc /proc dir entry\n"); | ||
349 | else { | ||
350 | struct proc_dir_entry* ent; | ||
351 | ent = create_proc_info_entry("pcxl_dma", 0, | ||
352 | proc_gsc_root, pcxl_proc_info); | ||
353 | if (!ent) | ||
354 | printk(KERN_WARNING | ||
355 | "pci-dma.c: Unable to create pcxl_dma /proc entry.\n"); | ||
356 | } | ||
357 | return 0; | ||
348 | } | 358 | } |
349 | 359 | ||
350 | __initcall(pcxl_dma_init); | 360 | __initcall(pcxl_dma_init); |
@@ -545,16 +555,16 @@ struct hppa_dma_ops pcx_dma_ops = { | |||
545 | 555 | ||
546 | static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) | 556 | static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) |
547 | { | 557 | { |
558 | #if 0 | ||
548 | u_long i = 0; | 559 | u_long i = 0; |
549 | unsigned long *res_ptr = (u_long *)pcxl_res_map; | 560 | unsigned long *res_ptr = (u_long *)pcxl_res_map; |
550 | unsigned long total_pages = pcxl_res_size << 3; /* 8 bits per byte */ | 561 | #endif |
562 | unsigned long total_pages = pcxl_res_size << 3; /* 8 bits per byte */ | ||
551 | 563 | ||
552 | sprintf(buf, "\nDMA Mapping Area size : %d bytes (%d pages)\n", | 564 | sprintf(buf, "\nDMA Mapping Area size : %d bytes (%ld pages)\n", |
553 | PCXL_DMA_MAP_SIZE, | 565 | PCXL_DMA_MAP_SIZE, total_pages); |
554 | (pcxl_res_size << 3) ); /* 1 bit per page */ | ||
555 | 566 | ||
556 | sprintf(buf, "%sResource bitmap : %d bytes (%d pages)\n", | 567 | sprintf(buf, "%sResource bitmap : %d bytes\n", buf, pcxl_res_size); |
557 | buf, pcxl_res_size, pcxl_res_size << 3); /* 8 bits per byte */ | ||
558 | 568 | ||
559 | strcat(buf, " total: free: used: % used:\n"); | 569 | strcat(buf, " total: free: used: % used:\n"); |
560 | sprintf(buf, "%sblocks %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size, | 570 | sprintf(buf, "%sblocks %8d %8ld %8ld %8ld%%\n", buf, pcxl_res_size, |
@@ -564,7 +574,8 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) | |||
564 | sprintf(buf, "%spages %8ld %8ld %8ld %8ld%%\n", buf, total_pages, | 574 | sprintf(buf, "%spages %8ld %8ld %8ld %8ld%%\n", buf, total_pages, |
565 | total_pages - pcxl_used_pages, pcxl_used_pages, | 575 | total_pages - pcxl_used_pages, pcxl_used_pages, |
566 | (pcxl_used_pages * 100 / total_pages)); | 576 | (pcxl_used_pages * 100 / total_pages)); |
567 | 577 | ||
578 | #if 0 | ||
568 | strcat(buf, "\nResource bitmap:"); | 579 | strcat(buf, "\nResource bitmap:"); |
569 | 580 | ||
570 | for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) { | 581 | for(; i < (pcxl_res_size / sizeof(u_long)); ++i, ++res_ptr) { |
@@ -572,6 +583,7 @@ static int pcxl_proc_info(char *buf, char **start, off_t offset, int len) | |||
572 | strcat(buf,"\n "); | 583 | strcat(buf,"\n "); |
573 | sprintf(buf, "%s %08lx", buf, *res_ptr); | 584 | sprintf(buf, "%s %08lx", buf, *res_ptr); |
574 | } | 585 | } |
586 | #endif | ||
575 | strcat(buf, "\n"); | 587 | strcat(buf, "\n"); |
576 | return strlen(buf); | 588 | return strlen(buf); |
577 | } | 589 | } |
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index e6a891a0cad0..88cba49c5301 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
@@ -202,7 +202,8 @@ static void | |||
202 | pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) | 202 | pcibios_link_hba_resources( struct resource *hba_res, struct resource *r) |
203 | { | 203 | { |
204 | if (!r->parent) { | 204 | if (!r->parent) { |
205 | printk(KERN_EMERG "PCI: Tell willy he's wrong\n"); | 205 | printk(KERN_EMERG "PCI: resource not parented! [%lx-%lx]\n", |
206 | r->start, r->end); | ||
206 | r->parent = hba_res; | 207 | r->parent = hba_res; |
207 | 208 | ||
208 | /* reverse link is harder *sigh* */ | 209 | /* reverse link is harder *sigh* */ |
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c index 01f676d1673b..215d78c87bc5 100644 --- a/arch/parisc/kernel/pdc_cons.c +++ b/arch/parisc/kernel/pdc_cons.c | |||
@@ -41,7 +41,7 @@ | |||
41 | 41 | ||
42 | /* Define EARLY_BOOTUP_DEBUG to debug kernel related boot problems. | 42 | /* Define EARLY_BOOTUP_DEBUG to debug kernel related boot problems. |
43 | * On production kernels EARLY_BOOTUP_DEBUG should be undefined. */ | 43 | * On production kernels EARLY_BOOTUP_DEBUG should be undefined. */ |
44 | #undef EARLY_BOOTUP_DEBUG | 44 | #define EARLY_BOOTUP_DEBUG |
45 | 45 | ||
46 | 46 | ||
47 | #include <linux/config.h> | 47 | #include <linux/config.h> |
@@ -49,14 +49,8 @@ | |||
49 | #include <linux/console.h> | 49 | #include <linux/console.h> |
50 | #include <linux/string.h> | 50 | #include <linux/string.h> |
51 | #include <linux/init.h> | 51 | #include <linux/init.h> |
52 | #include <linux/delay.h> | ||
53 | #include <linux/sched.h> | ||
54 | #include <linux/interrupt.h> | ||
55 | #include <linux/major.h> | 52 | #include <linux/major.h> |
56 | #include <linux/tty.h> | 53 | #include <linux/tty.h> |
57 | #include <asm/page.h> | ||
58 | #include <asm/types.h> | ||
59 | #include <asm/system.h> | ||
60 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ | 54 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ |
61 | 55 | ||
62 | 56 | ||
@@ -96,7 +90,6 @@ static int pdc_console_setup(struct console *co, char *options) | |||
96 | } | 90 | } |
97 | 91 | ||
98 | #if defined(CONFIG_PDC_CONSOLE) | 92 | #if defined(CONFIG_PDC_CONSOLE) |
99 | #define PDC_CONSOLE_DEVICE pdc_console_device | ||
100 | static struct tty_driver * pdc_console_device (struct console *c, int *index) | 93 | static struct tty_driver * pdc_console_device (struct console *c, int *index) |
101 | { | 94 | { |
102 | extern struct tty_driver console_driver; | 95 | extern struct tty_driver console_driver; |
@@ -104,22 +97,19 @@ static struct tty_driver * pdc_console_device (struct console *c, int *index) | |||
104 | return &console_driver; | 97 | return &console_driver; |
105 | } | 98 | } |
106 | #else | 99 | #else |
107 | #define PDC_CONSOLE_DEVICE NULL | 100 | #define pdc_console_device NULL |
108 | #endif | 101 | #endif |
109 | 102 | ||
110 | static struct console pdc_cons = { | 103 | static struct console pdc_cons = { |
111 | .name = "ttyB", | 104 | .name = "ttyB", |
112 | .write = pdc_console_write, | 105 | .write = pdc_console_write, |
113 | .device = PDC_CONSOLE_DEVICE, | 106 | .device = pdc_console_device, |
114 | .setup = pdc_console_setup, | 107 | .setup = pdc_console_setup, |
115 | .flags = CON_BOOT|CON_PRINTBUFFER|CON_ENABLED, | 108 | .flags = CON_BOOT | CON_PRINTBUFFER | CON_ENABLED, |
116 | .index = -1, | 109 | .index = -1, |
117 | }; | 110 | }; |
118 | 111 | ||
119 | static int pdc_console_initialized; | 112 | static int pdc_console_initialized; |
120 | extern unsigned long con_start; /* kernel/printk.c */ | ||
121 | extern unsigned long log_end; /* kernel/printk.c */ | ||
122 | |||
123 | 113 | ||
124 | static void pdc_console_init_force(void) | 114 | static void pdc_console_init_force(void) |
125 | { | 115 | { |
@@ -146,27 +136,11 @@ void __init pdc_console_init(void) | |||
146 | } | 136 | } |
147 | 137 | ||
148 | 138 | ||
149 | /* Unregister the pdc console with the printk console layer */ | ||
150 | void pdc_console_die(void) | ||
151 | { | ||
152 | if (!pdc_console_initialized) | ||
153 | return; | ||
154 | --pdc_console_initialized; | ||
155 | |||
156 | printk(KERN_INFO "Switching from PDC console\n"); | ||
157 | |||
158 | /* Don't repeat what we've already printed */ | ||
159 | con_start = log_end; | ||
160 | |||
161 | unregister_console(&pdc_cons); | ||
162 | } | ||
163 | |||
164 | |||
165 | /* | 139 | /* |
166 | * Used for emergencies. Currently only used if an HPMC occurs. If an | 140 | * Used for emergencies. Currently only used if an HPMC occurs. If an |
167 | * HPMC occurs, it is possible that the current console may not be | 141 | * HPMC occurs, it is possible that the current console may not be |
168 | * properly initialed after the PDC IO reset. This routine unregisters all | 142 | * properly initialised after the PDC IO reset. This routine unregisters |
169 | * of the current consoles, reinitializes the pdc console and | 143 | * all of the current consoles, reinitializes the pdc console and |
170 | * registers it. | 144 | * registers it. |
171 | */ | 145 | */ |
172 | 146 | ||
@@ -177,13 +151,13 @@ void pdc_console_restart(void) | |||
177 | if (pdc_console_initialized) | 151 | if (pdc_console_initialized) |
178 | return; | 152 | return; |
179 | 153 | ||
154 | /* If we've already seen the output, don't bother to print it again */ | ||
155 | if (console_drivers != NULL) | ||
156 | pdc_cons.flags &= ~CON_PRINTBUFFER; | ||
157 | |||
180 | while ((console = console_drivers) != NULL) | 158 | while ((console = console_drivers) != NULL) |
181 | unregister_console(console_drivers); | 159 | unregister_console(console_drivers); |
182 | 160 | ||
183 | /* Don't repeat what we've already printed */ | ||
184 | con_start = log_end; | ||
185 | |||
186 | /* force registering the pdc console */ | 161 | /* force registering the pdc console */ |
187 | pdc_console_init_force(); | 162 | pdc_console_init_force(); |
188 | } | 163 | } |
189 | |||
diff --git a/arch/parisc/kernel/perf.c b/arch/parisc/kernel/perf.c index b3ad0a505b87..44670d6e06f4 100644 --- a/arch/parisc/kernel/perf.c +++ b/arch/parisc/kernel/perf.c | |||
@@ -746,7 +746,8 @@ static int perf_write_image(uint64_t *memaddr) | |||
746 | uint64_t *bptr; | 746 | uint64_t *bptr; |
747 | uint32_t dwords; | 747 | uint32_t dwords; |
748 | uint32_t *intrigue_rdr; | 748 | uint32_t *intrigue_rdr; |
749 | uint64_t *intrigue_bitmask, tmp64, proc_hpa; | 749 | uint64_t *intrigue_bitmask, tmp64; |
750 | void __iomem *runway; | ||
750 | struct rdr_tbl_ent *tentry; | 751 | struct rdr_tbl_ent *tentry; |
751 | int i; | 752 | int i; |
752 | 753 | ||
@@ -798,15 +799,16 @@ static int perf_write_image(uint64_t *memaddr) | |||
798 | return -1; | 799 | return -1; |
799 | } | 800 | } |
800 | 801 | ||
801 | proc_hpa = cpu_device->hpa; | 802 | runway = ioremap(cpu_device->hpa.start, 4096); |
802 | 803 | ||
803 | /* Merge intrigue bits into Runway STATUS 0 */ | 804 | /* Merge intrigue bits into Runway STATUS 0 */ |
804 | tmp64 = __raw_readq(proc_hpa + RUNWAY_STATUS) & 0xffecfffffffffffful; | 805 | tmp64 = __raw_readq(runway + RUNWAY_STATUS) & 0xffecfffffffffffful; |
805 | __raw_writeq(tmp64 | (*memaddr++ & 0x0013000000000000ul), proc_hpa + RUNWAY_STATUS); | 806 | __raw_writeq(tmp64 | (*memaddr++ & 0x0013000000000000ul), |
807 | runway + RUNWAY_STATUS); | ||
806 | 808 | ||
807 | /* Write RUNWAY DEBUG registers */ | 809 | /* Write RUNWAY DEBUG registers */ |
808 | for (i = 0; i < 8; i++) { | 810 | for (i = 0; i < 8; i++) { |
809 | __raw_writeq(*memaddr++, proc_hpa + RUNWAY_DEBUG + i); | 811 | __raw_writeq(*memaddr++, runway + RUNWAY_DEBUG); |
810 | } | 812 | } |
811 | 813 | ||
812 | return 0; | 814 | return 0; |
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c index 46b759385115..7fdca87ef647 100644 --- a/arch/parisc/kernel/process.c +++ b/arch/parisc/kernel/process.c | |||
@@ -9,7 +9,7 @@ | |||
9 | * Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org> | 9 | * Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org> |
10 | * Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org> | 10 | * Copyright (C) 2000 Philipp Rumpf <prumpf with tux.org> |
11 | * Copyright (C) 2000 David Kennedy <dkennedy with linuxcare.com> | 11 | * Copyright (C) 2000 David Kennedy <dkennedy with linuxcare.com> |
12 | * Copyright (C) 2000 Richard Hirst <rhirst with parisc-lixux.org> | 12 | * Copyright (C) 2000 Richard Hirst <rhirst with parisc-linux.org> |
13 | * Copyright (C) 2000 Grant Grundler <grundler with parisc-linux.org> | 13 | * Copyright (C) 2000 Grant Grundler <grundler with parisc-linux.org> |
14 | * Copyright (C) 2001 Alan Modra <amodra at parisc-linux.org> | 14 | * Copyright (C) 2001 Alan Modra <amodra at parisc-linux.org> |
15 | * Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org> | 15 | * Copyright (C) 2001-2002 Ryan Bradetich <rbrad at parisc-linux.org> |
@@ -245,7 +245,17 @@ int | |||
245 | sys_clone(unsigned long clone_flags, unsigned long usp, | 245 | sys_clone(unsigned long clone_flags, unsigned long usp, |
246 | struct pt_regs *regs) | 246 | struct pt_regs *regs) |
247 | { | 247 | { |
248 | int __user *user_tid = (int __user *)regs->gr[26]; | 248 | /* Arugments from userspace are: |
249 | r26 = Clone flags. | ||
250 | r25 = Child stack. | ||
251 | r24 = parent_tidptr. | ||
252 | r23 = Is the TLS storage descriptor | ||
253 | r22 = child_tidptr | ||
254 | |||
255 | However, these last 3 args are only examined | ||
256 | if the proper flags are set. */ | ||
257 | int __user *child_tidptr; | ||
258 | int __user *parent_tidptr; | ||
249 | 259 | ||
250 | /* usp must be word aligned. This also prevents users from | 260 | /* usp must be word aligned. This also prevents users from |
251 | * passing in the value 1 (which is the signal for a special | 261 | * passing in the value 1 (which is the signal for a special |
@@ -253,10 +263,20 @@ sys_clone(unsigned long clone_flags, unsigned long usp, | |||
253 | usp = ALIGN(usp, 4); | 263 | usp = ALIGN(usp, 4); |
254 | 264 | ||
255 | /* A zero value for usp means use the current stack */ | 265 | /* A zero value for usp means use the current stack */ |
256 | if(usp == 0) | 266 | if (usp == 0) |
257 | usp = regs->gr[30]; | 267 | usp = regs->gr[30]; |
258 | 268 | ||
259 | return do_fork(clone_flags, usp, regs, 0, user_tid, NULL); | 269 | if (clone_flags & CLONE_PARENT_SETTID) |
270 | parent_tidptr = (int __user *)regs->gr[24]; | ||
271 | else | ||
272 | parent_tidptr = NULL; | ||
273 | |||
274 | if (clone_flags & (CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID)) | ||
275 | child_tidptr = (int __user *)regs->gr[22]; | ||
276 | else | ||
277 | child_tidptr = NULL; | ||
278 | |||
279 | return do_fork(clone_flags, usp, regs, 0, parent_tidptr, child_tidptr); | ||
260 | } | 280 | } |
261 | 281 | ||
262 | int | 282 | int |
@@ -332,6 +352,10 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp, | |||
332 | } else { | 352 | } else { |
333 | cregs->kpc = (unsigned long) &child_return; | 353 | cregs->kpc = (unsigned long) &child_return; |
334 | } | 354 | } |
355 | /* Setup thread TLS area from the 4th parameter in clone */ | ||
356 | if (clone_flags & CLONE_SETTLS) | ||
357 | cregs->cr27 = pregs->gr[23]; | ||
358 | |||
335 | } | 359 | } |
336 | 360 | ||
337 | return 0; | 361 | return 0; |
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index 13b721cb9f55..4f5bbcf1f5a4 100644 --- a/arch/parisc/kernel/processor.c +++ b/arch/parisc/kernel/processor.c | |||
@@ -92,7 +92,7 @@ static int __init processor_probe(struct parisc_device *dev) | |||
92 | * May get overwritten by PAT code. | 92 | * May get overwritten by PAT code. |
93 | */ | 93 | */ |
94 | cpuid = boot_cpu_data.cpu_count; | 94 | cpuid = boot_cpu_data.cpu_count; |
95 | txn_addr = dev->hpa; /* for legacy PDC */ | 95 | txn_addr = dev->hpa.start; /* for legacy PDC */ |
96 | 96 | ||
97 | #ifdef __LP64__ | 97 | #ifdef __LP64__ |
98 | if (is_pdc_pat()) { | 98 | if (is_pdc_pat()) { |
@@ -122,7 +122,7 @@ static int __init processor_probe(struct parisc_device *dev) | |||
122 | * boot time (ie shutdown a CPU from an OS perspective). | 122 | * boot time (ie shutdown a CPU from an OS perspective). |
123 | */ | 123 | */ |
124 | /* get the cpu number */ | 124 | /* get the cpu number */ |
125 | status = pdc_pat_cpu_get_number(&cpu_info, dev->hpa); | 125 | status = pdc_pat_cpu_get_number(&cpu_info, dev->hpa.start); |
126 | 126 | ||
127 | BUG_ON(PDC_OK != status); | 127 | BUG_ON(PDC_OK != status); |
128 | 128 | ||
@@ -130,7 +130,7 @@ static int __init processor_probe(struct parisc_device *dev) | |||
130 | printk(KERN_WARNING "IGNORING CPU at 0x%x," | 130 | printk(KERN_WARNING "IGNORING CPU at 0x%x," |
131 | " cpu_slot_id > NR_CPUS" | 131 | " cpu_slot_id > NR_CPUS" |
132 | " (%ld > %d)\n", | 132 | " (%ld > %d)\n", |
133 | dev->hpa, cpu_info.cpu_num, NR_CPUS); | 133 | dev->hpa.start, cpu_info.cpu_num, NR_CPUS); |
134 | /* Ignore CPU since it will only crash */ | 134 | /* Ignore CPU since it will only crash */ |
135 | boot_cpu_data.cpu_count--; | 135 | boot_cpu_data.cpu_count--; |
136 | return 1; | 136 | return 1; |
@@ -149,7 +149,7 @@ static int __init processor_probe(struct parisc_device *dev) | |||
149 | 149 | ||
150 | p->loops_per_jiffy = loops_per_jiffy; | 150 | p->loops_per_jiffy = loops_per_jiffy; |
151 | p->dev = dev; /* Save IODC data in case we need it */ | 151 | p->dev = dev; /* Save IODC data in case we need it */ |
152 | p->hpa = dev->hpa; /* save CPU hpa */ | 152 | p->hpa = dev->hpa.start; /* save CPU hpa */ |
153 | p->cpuid = cpuid; /* save CPU id */ | 153 | p->cpuid = cpuid; /* save CPU id */ |
154 | p->txn_addr = txn_addr; /* save CPU IRQ address */ | 154 | p->txn_addr = txn_addr; /* save CPU IRQ address */ |
155 | #ifdef CONFIG_SMP | 155 | #ifdef CONFIG_SMP |
diff --git a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S index 8dd5defb7316..8c2859cca77e 100644 --- a/arch/parisc/kernel/real2.S +++ b/arch/parisc/kernel/real2.S | |||
@@ -7,8 +7,10 @@ | |||
7 | * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com) | 7 | * Copyright (C) 2000 Hewlett Packard (Paul Bame bame@puffin.external.hp.com) |
8 | * | 8 | * |
9 | */ | 9 | */ |
10 | #include <asm/assembly.h> | 10 | #include <linux/config.h> |
11 | |||
11 | #include <asm/psw.h> | 12 | #include <asm/psw.h> |
13 | #include <asm/assembly.h> | ||
12 | 14 | ||
13 | .section .bss | 15 | .section .bss |
14 | .export real_stack | 16 | .export real_stack |
@@ -20,7 +22,7 @@ real32_stack: | |||
20 | real64_stack: | 22 | real64_stack: |
21 | .block 8192 | 23 | .block 8192 |
22 | 24 | ||
23 | #ifdef __LP64__ | 25 | #ifdef CONFIG_64BIT |
24 | # define REG_SZ 8 | 26 | # define REG_SZ 8 |
25 | #else | 27 | #else |
26 | # define REG_SZ 4 | 28 | # define REG_SZ 4 |
@@ -50,7 +52,7 @@ save_cr_end: | |||
50 | 52 | ||
51 | real32_call_asm: | 53 | real32_call_asm: |
52 | STREG %rp, -RP_OFFSET(%sp) /* save RP */ | 54 | STREG %rp, -RP_OFFSET(%sp) /* save RP */ |
53 | #ifdef __LP64__ | 55 | #ifdef CONFIG_64BIT |
54 | callee_save | 56 | callee_save |
55 | ldo 2*REG_SZ(%sp), %sp /* room for a couple more saves */ | 57 | ldo 2*REG_SZ(%sp), %sp /* room for a couple more saves */ |
56 | STREG %r27, -1*REG_SZ(%sp) | 58 | STREG %r27, -1*REG_SZ(%sp) |
@@ -77,7 +79,7 @@ real32_call_asm: | |||
77 | b,l save_control_regs,%r2 /* modifies r1, r2, r28 */ | 79 | b,l save_control_regs,%r2 /* modifies r1, r2, r28 */ |
78 | nop | 80 | nop |
79 | 81 | ||
80 | #ifdef __LP64__ | 82 | #ifdef CONFIG_64BIT |
81 | rsm PSW_SM_W, %r0 /* go narrow */ | 83 | rsm PSW_SM_W, %r0 /* go narrow */ |
82 | #endif | 84 | #endif |
83 | 85 | ||
@@ -85,7 +87,7 @@ real32_call_asm: | |||
85 | bv 0(%r31) | 87 | bv 0(%r31) |
86 | nop | 88 | nop |
87 | ric_ret: | 89 | ric_ret: |
88 | #ifdef __LP64__ | 90 | #ifdef CONFIG_64BIT |
89 | ssm PSW_SM_W, %r0 /* go wide */ | 91 | ssm PSW_SM_W, %r0 /* go wide */ |
90 | #endif | 92 | #endif |
91 | /* restore CRs before going virtual in case we page fault */ | 93 | /* restore CRs before going virtual in case we page fault */ |
@@ -97,7 +99,7 @@ ric_ret: | |||
97 | 99 | ||
98 | tovirt_r1 %sp | 100 | tovirt_r1 %sp |
99 | LDREG -REG_SZ(%sp), %sp /* restore SP */ | 101 | LDREG -REG_SZ(%sp), %sp /* restore SP */ |
100 | #ifdef __LP64__ | 102 | #ifdef CONFIG_64BIT |
101 | LDREG -1*REG_SZ(%sp), %r27 | 103 | LDREG -1*REG_SZ(%sp), %r27 |
102 | LDREG -2*REG_SZ(%sp), %r29 | 104 | LDREG -2*REG_SZ(%sp), %r29 |
103 | ldo -2*REG_SZ(%sp), %sp | 105 | ldo -2*REG_SZ(%sp), %sp |
@@ -143,24 +145,21 @@ restore_control_regs: | |||
143 | /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for | 145 | /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for |
144 | * more general-purpose use by the several places which need RFIs | 146 | * more general-purpose use by the several places which need RFIs |
145 | */ | 147 | */ |
146 | .align 128 | ||
147 | .text | 148 | .text |
149 | .align 128 | ||
148 | rfi_virt2real: | 150 | rfi_virt2real: |
149 | /* switch to real mode... */ | 151 | /* switch to real mode... */ |
150 | ssm 0,0 /* See "relied upon translation" */ | 152 | rsm PSW_SM_I,%r0 |
151 | nop /* PA 2.0 Arch. F-5 */ | 153 | load32 PA(rfi_v2r_1), %r1 |
152 | nop | ||
153 | nop | ||
154 | nop | 154 | nop |
155 | nop | 155 | nop |
156 | nop | 156 | nop |
157 | nop | 157 | nop |
158 | nop | 158 | nop |
159 | 159 | ||
160 | rsm (PSW_SM_Q|PSW_SM_I),%r0 /* disable Q & I bits to load iia queue */ | 160 | rsm PSW_SM_Q,%r0 /* disable Q & I bits to load iia queue */ |
161 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 161 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
162 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 162 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
163 | load32 PA(rfi_v2r_1), %r1 | ||
164 | mtctl %r1, %cr18 /* IIAOQ head */ | 163 | mtctl %r1, %cr18 /* IIAOQ head */ |
165 | ldo 4(%r1), %r1 | 164 | ldo 4(%r1), %r1 |
166 | mtctl %r1, %cr18 /* IIAOQ tail */ | 165 | mtctl %r1, %cr18 /* IIAOQ tail */ |
@@ -184,10 +183,8 @@ rfi_v2r_1: | |||
184 | .text | 183 | .text |
185 | .align 128 | 184 | .align 128 |
186 | rfi_real2virt: | 185 | rfi_real2virt: |
187 | ssm 0,0 /* See "relied upon translation" */ | 186 | rsm PSW_SM_I,%r0 |
188 | nop /* PA 2.0 Arch. F-5 */ | 187 | load32 (rfi_r2v_1), %r1 |
189 | nop | ||
190 | nop | ||
191 | nop | 188 | nop |
192 | nop | 189 | nop |
193 | nop | 190 | nop |
@@ -197,7 +194,6 @@ rfi_real2virt: | |||
197 | rsm PSW_SM_Q,%r0 /* disable Q bit to load iia queue */ | 194 | rsm PSW_SM_Q,%r0 /* disable Q bit to load iia queue */ |
198 | mtctl %r0, %cr17 /* Clear IIASQ tail */ | 195 | mtctl %r0, %cr17 /* Clear IIASQ tail */ |
199 | mtctl %r0, %cr17 /* Clear IIASQ head */ | 196 | mtctl %r0, %cr17 /* Clear IIASQ head */ |
200 | load32 (rfi_r2v_1), %r1 | ||
201 | mtctl %r1, %cr18 /* IIAOQ head */ | 197 | mtctl %r1, %cr18 /* IIAOQ head */ |
202 | ldo 4(%r1), %r1 | 198 | ldo 4(%r1), %r1 |
203 | mtctl %r1, %cr18 /* IIAOQ tail */ | 199 | mtctl %r1, %cr18 /* IIAOQ tail */ |
@@ -218,7 +214,7 @@ rfi_r2v_1: | |||
218 | bv 0(%r2) | 214 | bv 0(%r2) |
219 | nop | 215 | nop |
220 | 216 | ||
221 | #ifdef __LP64__ | 217 | #ifdef CONFIG_64BIT |
222 | 218 | ||
223 | /************************ 64-bit real-mode calls ***********************/ | 219 | /************************ 64-bit real-mode calls ***********************/ |
224 | /* This is only usable in wide kernels right now and will probably stay so */ | 220 | /* This is only usable in wide kernels right now and will probably stay so */ |
@@ -296,7 +292,7 @@ pc_in_user_space: | |||
296 | ** comparing function pointers. | 292 | ** comparing function pointers. |
297 | */ | 293 | */ |
298 | __canonicalize_funcptr_for_compare: | 294 | __canonicalize_funcptr_for_compare: |
299 | #ifdef __LP64__ | 295 | #ifdef CONFIG_64BIT |
300 | bve (%r2) | 296 | bve (%r2) |
301 | #else | 297 | #else |
302 | bv %r0(%r2) | 298 | bv %r0(%r2) |
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index 0224651fd8f1..82c24e62ab63 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
@@ -490,15 +490,7 @@ setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
490 | 490 | ||
491 | give_sigsegv: | 491 | give_sigsegv: |
492 | DBG(1,"setup_rt_frame: sending SIGSEGV\n"); | 492 | DBG(1,"setup_rt_frame: sending SIGSEGV\n"); |
493 | if (sig == SIGSEGV) | 493 | force_sigsegv(sig, current); |
494 | ka->sa.sa_handler = SIG_DFL; | ||
495 | si.si_signo = SIGSEGV; | ||
496 | si.si_errno = 0; | ||
497 | si.si_code = SI_KERNEL; | ||
498 | si.si_pid = current->pid; | ||
499 | si.si_uid = current->uid; | ||
500 | si.si_addr = frame; | ||
501 | force_sig_info(SIGSEGV, &si, current); | ||
502 | return 0; | 494 | return 0; |
503 | } | 495 | } |
504 | 496 | ||
@@ -633,10 +625,14 @@ do_signal(sigset_t *oldset, struct pt_regs *regs, int in_syscall) | |||
633 | put_user(0xe0008200, &usp[3]); | 625 | put_user(0xe0008200, &usp[3]); |
634 | put_user(0x34140000, &usp[4]); | 626 | put_user(0x34140000, &usp[4]); |
635 | 627 | ||
636 | /* Stack is 64-byte aligned, and we only | 628 | /* Stack is 64-byte aligned, and we only need |
637 | * need to flush 1 cache line */ | 629 | * to flush 1 cache line. |
638 | asm("fdc 0(%%sr3, %0)\n" | 630 | * Flushing one cacheline is cheap. |
639 | "fic 0(%%sr3, %0)\n" | 631 | * "sync" on bigger (> 4 way) boxes is not. |
632 | */ | ||
633 | asm("fdc %%r0(%%sr3, %0)\n" | ||
634 | "sync\n" | ||
635 | "fic %%r0(%%sr3, %0)\n" | ||
640 | "sync\n" | 636 | "sync\n" |
641 | : : "r"(regs->gr[30])); | 637 | : : "r"(regs->gr[30])); |
642 | 638 | ||
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index bcc7e83f5142..5db3be4e2704 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -18,7 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */ | 19 | #undef ENTRY_SYS_CPUS /* syscall support for iCOD-like functionality */ |
20 | 20 | ||
21 | #include <linux/autoconf.h> | 21 | #include <linux/config.h> |
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | #include <linux/spinlock.h> | 24 | #include <linux/spinlock.h> |
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index 8c7a7185cd3b..b29b76b42bb7 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S | |||
@@ -6,6 +6,7 @@ | |||
6 | * thanks to Philipp Rumpf, Mike Shaver and various others | 6 | * thanks to Philipp Rumpf, Mike Shaver and various others |
7 | * sorry about the wall, puffin.. | 7 | * sorry about the wall, puffin.. |
8 | */ | 8 | */ |
9 | #include <linux/config.h> /* for CONFIG_SMP */ | ||
9 | 10 | ||
10 | #include <asm/asm-offsets.h> | 11 | #include <asm/asm-offsets.h> |
11 | #include <asm/unistd.h> | 12 | #include <asm/unistd.h> |
@@ -22,15 +23,13 @@ | |||
22 | */ | 23 | */ |
23 | #define KILL_INSN break 0,0 | 24 | #define KILL_INSN break 0,0 |
24 | 25 | ||
25 | #include <linux/config.h> /* for CONFIG_SMP */ | 26 | #ifdef CONFIG_64BIT |
26 | |||
27 | #ifdef __LP64__ | ||
28 | .level 2.0w | 27 | .level 2.0w |
29 | #else | 28 | #else |
30 | .level 1.1 | 29 | .level 1.1 |
31 | #endif | 30 | #endif |
32 | 31 | ||
33 | #ifndef __LP64__ | 32 | #ifndef CONFIG_64BIT |
34 | .macro fixup_branch,lbl | 33 | .macro fixup_branch,lbl |
35 | b \lbl | 34 | b \lbl |
36 | .endm | 35 | .endm |
@@ -103,7 +102,7 @@ linux_gateway_entry: | |||
103 | mfsp %sr7,%r1 /* save user sr7 */ | 102 | mfsp %sr7,%r1 /* save user sr7 */ |
104 | mtsp %r1,%sr3 /* and store it in sr3 */ | 103 | mtsp %r1,%sr3 /* and store it in sr3 */ |
105 | 104 | ||
106 | #ifdef __LP64__ | 105 | #ifdef CONFIG_64BIT |
107 | /* for now we can *always* set the W bit on entry to the syscall | 106 | /* for now we can *always* set the W bit on entry to the syscall |
108 | * since we don't support wide userland processes. We could | 107 | * since we don't support wide userland processes. We could |
109 | * also save the current SM other than in r0 and restore it on | 108 | * also save the current SM other than in r0 and restore it on |
@@ -155,7 +154,7 @@ linux_gateway_entry: | |||
155 | STREG %r19, TASK_PT_GR19(%r1) | 154 | STREG %r19, TASK_PT_GR19(%r1) |
156 | 155 | ||
157 | LDREGM -FRAME_SIZE(%r30), %r2 /* get users sp back */ | 156 | LDREGM -FRAME_SIZE(%r30), %r2 /* get users sp back */ |
158 | #ifdef __LP64__ | 157 | #ifdef CONFIG_64BIT |
159 | extrd,u %r2,63,1,%r19 /* W hidden in bottom bit */ | 158 | extrd,u %r2,63,1,%r19 /* W hidden in bottom bit */ |
160 | #if 0 | 159 | #if 0 |
161 | xor %r19,%r2,%r2 /* clear bottom bit */ | 160 | xor %r19,%r2,%r2 /* clear bottom bit */ |
@@ -186,7 +185,7 @@ linux_gateway_entry: | |||
186 | 185 | ||
187 | loadgp | 186 | loadgp |
188 | 187 | ||
189 | #ifdef __LP64__ | 188 | #ifdef CONFIG_64BIT |
190 | ldo -16(%r30),%r29 /* Reference param save area */ | 189 | ldo -16(%r30),%r29 /* Reference param save area */ |
191 | copy %r19,%r2 /* W bit back to r2 */ | 190 | copy %r19,%r2 /* W bit back to r2 */ |
192 | #else | 191 | #else |
@@ -205,7 +204,7 @@ linux_gateway_entry: | |||
205 | /* Note! We cannot use the syscall table that is mapped | 204 | /* Note! We cannot use the syscall table that is mapped |
206 | nearby since the gateway page is mapped execute-only. */ | 205 | nearby since the gateway page is mapped execute-only. */ |
207 | 206 | ||
208 | #ifdef __LP64__ | 207 | #ifdef CONFIG_64BIT |
209 | ldil L%sys_call_table, %r1 | 208 | ldil L%sys_call_table, %r1 |
210 | or,= %r2,%r2,%r2 | 209 | or,= %r2,%r2,%r2 |
211 | addil L%(sys_call_table64-sys_call_table), %r1 | 210 | addil L%(sys_call_table64-sys_call_table), %r1 |
@@ -321,7 +320,7 @@ tracesys_next: | |||
321 | LDREG TASK_PT_GR25(%r1), %r25 | 320 | LDREG TASK_PT_GR25(%r1), %r25 |
322 | LDREG TASK_PT_GR24(%r1), %r24 | 321 | LDREG TASK_PT_GR24(%r1), %r24 |
323 | LDREG TASK_PT_GR23(%r1), %r23 | 322 | LDREG TASK_PT_GR23(%r1), %r23 |
324 | #ifdef __LP64__ | 323 | #ifdef CONFIG_64BIT |
325 | LDREG TASK_PT_GR22(%r1), %r22 | 324 | LDREG TASK_PT_GR22(%r1), %r22 |
326 | LDREG TASK_PT_GR21(%r1), %r21 | 325 | LDREG TASK_PT_GR21(%r1), %r21 |
327 | ldo -16(%r30),%r29 /* Reference param save area */ | 326 | ldo -16(%r30),%r29 /* Reference param save area */ |
@@ -350,7 +349,7 @@ tracesys_next: | |||
350 | tracesys_exit: | 349 | tracesys_exit: |
351 | ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */ | 350 | ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */ |
352 | LDREG TI_TASK(%r1), %r1 | 351 | LDREG TI_TASK(%r1), %r1 |
353 | #ifdef __LP64__ | 352 | #ifdef CONFIG_64BIT |
354 | ldo -16(%r30),%r29 /* Reference param save area */ | 353 | ldo -16(%r30),%r29 /* Reference param save area */ |
355 | #endif | 354 | #endif |
356 | bl syscall_trace, %r2 | 355 | bl syscall_trace, %r2 |
@@ -371,7 +370,7 @@ tracesys_exit: | |||
371 | tracesys_sigexit: | 370 | tracesys_sigexit: |
372 | ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */ | 371 | ldo -THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1 /* get task ptr */ |
373 | LDREG 0(%r1), %r1 | 372 | LDREG 0(%r1), %r1 |
374 | #ifdef __LP64__ | 373 | #ifdef CONFIG_64BIT |
375 | ldo -16(%r30),%r29 /* Reference param save area */ | 374 | ldo -16(%r30),%r29 /* Reference param save area */ |
376 | #endif | 375 | #endif |
377 | bl syscall_trace, %r2 | 376 | bl syscall_trace, %r2 |
@@ -404,7 +403,7 @@ lws_start: | |||
404 | gate .+8, %r0 | 403 | gate .+8, %r0 |
405 | depi 3, 31, 2, %r31 /* Ensure we return to userspace */ | 404 | depi 3, 31, 2, %r31 /* Ensure we return to userspace */ |
406 | 405 | ||
407 | #ifdef __LP64__ | 406 | #ifdef CONFIG_64BIT |
408 | /* FIXME: If we are a 64-bit kernel just | 407 | /* FIXME: If we are a 64-bit kernel just |
409 | * turn this on unconditionally. | 408 | * turn this on unconditionally. |
410 | */ | 409 | */ |
@@ -440,7 +439,7 @@ lws_exit_nosys: | |||
440 | /* Fall through: Return to userspace */ | 439 | /* Fall through: Return to userspace */ |
441 | 440 | ||
442 | lws_exit: | 441 | lws_exit: |
443 | #ifdef __LP64__ | 442 | #ifdef CONFIG_64BIT |
444 | /* decide whether to reset the wide mode bit | 443 | /* decide whether to reset the wide mode bit |
445 | * | 444 | * |
446 | * For a syscall, the W bit is stored in the lowest bit | 445 | * For a syscall, the W bit is stored in the lowest bit |
@@ -486,7 +485,7 @@ lws_exit: | |||
486 | 485 | ||
487 | /* ELF64 Process entry path */ | 486 | /* ELF64 Process entry path */ |
488 | lws_compare_and_swap64: | 487 | lws_compare_and_swap64: |
489 | #ifdef __LP64__ | 488 | #ifdef CONFIG_64BIT |
490 | b,n lws_compare_and_swap | 489 | b,n lws_compare_and_swap |
491 | #else | 490 | #else |
492 | /* If we are not a 64-bit kernel, then we don't | 491 | /* If we are not a 64-bit kernel, then we don't |
@@ -497,7 +496,7 @@ lws_compare_and_swap64: | |||
497 | 496 | ||
498 | /* ELF32 Process entry path */ | 497 | /* ELF32 Process entry path */ |
499 | lws_compare_and_swap32: | 498 | lws_compare_and_swap32: |
500 | #ifdef __LP64__ | 499 | #ifdef CONFIG_64BIT |
501 | /* Clip all the input registers */ | 500 | /* Clip all the input registers */ |
502 | depdi 0, 31, 32, %r26 | 501 | depdi 0, 31, 32, %r26 |
503 | depdi 0, 31, 32, %r25 | 502 | depdi 0, 31, 32, %r25 |
@@ -608,7 +607,7 @@ cas_action: | |||
608 | the other for the store. Either return -EFAULT. | 607 | the other for the store. Either return -EFAULT. |
609 | Each of the entries must be relocated. */ | 608 | Each of the entries must be relocated. */ |
610 | .section __ex_table,"aw" | 609 | .section __ex_table,"aw" |
611 | #ifdef __LP64__ | 610 | #ifdef CONFIG_64BIT |
612 | /* Pad the address calculation */ | 611 | /* Pad the address calculation */ |
613 | .word 0,(2b - linux_gateway_page) | 612 | .word 0,(2b - linux_gateway_page) |
614 | .word 0,(3b - linux_gateway_page) | 613 | .word 0,(3b - linux_gateway_page) |
@@ -619,7 +618,7 @@ cas_action: | |||
619 | .previous | 618 | .previous |
620 | 619 | ||
621 | .section __ex_table,"aw" | 620 | .section __ex_table,"aw" |
622 | #ifdef __LP64__ | 621 | #ifdef CONFIG_64BIT |
623 | /* Pad the address calculation */ | 622 | /* Pad the address calculation */ |
624 | .word 0,(1b - linux_gateway_page) | 623 | .word 0,(1b - linux_gateway_page) |
625 | .word 0,(3b - linux_gateway_page) | 624 | .word 0,(3b - linux_gateway_page) |
@@ -638,7 +637,7 @@ end_linux_gateway_page: | |||
638 | 637 | ||
639 | /* Relocate symbols assuming linux_gateway_page is mapped | 638 | /* Relocate symbols assuming linux_gateway_page is mapped |
640 | to virtual address 0x0 */ | 639 | to virtual address 0x0 */ |
641 | #ifdef __LP64__ | 640 | #ifdef CONFIG_64BIT |
642 | /* FIXME: The code will always be on the gateay page | 641 | /* FIXME: The code will always be on the gateay page |
643 | and thus it will be on the first 4k, the | 642 | and thus it will be on the first 4k, the |
644 | assembler seems to think that the final | 643 | assembler seems to think that the final |
@@ -666,7 +665,7 @@ lws_table: | |||
666 | sys_call_table: | 665 | sys_call_table: |
667 | #include "syscall_table.S" | 666 | #include "syscall_table.S" |
668 | 667 | ||
669 | #ifdef __LP64__ | 668 | #ifdef CONFIG_64BIT |
670 | .align 4096 | 669 | .align 4096 |
671 | .export sys_call_table64 | 670 | .export sys_call_table64 |
672 | .Lsys_call_table64: | 671 | .Lsys_call_table64: |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index dcfa4d3d0e7d..32cbc0489324 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -35,7 +35,7 @@ | |||
35 | #undef ENTRY_UHOH | 35 | #undef ENTRY_UHOH |
36 | #undef ENTRY_COMP | 36 | #undef ENTRY_COMP |
37 | #undef ENTRY_OURS | 37 | #undef ENTRY_OURS |
38 | #if defined(__LP64__) && !defined(SYSCALL_TABLE_64BIT) | 38 | #if defined(CONFIG_64BIT) && !defined(SYSCALL_TABLE_64BIT) |
39 | /* Use ENTRY_SAME for 32-bit syscalls which are the same on wide and | 39 | /* Use ENTRY_SAME for 32-bit syscalls which are the same on wide and |
40 | * narrow palinux. Use ENTRY_DIFF for those where a 32-bit specific | 40 | * narrow palinux. Use ENTRY_DIFF for those where a 32-bit specific |
41 | * implementation is required on wide palinux. Use ENTRY_COMP where | 41 | * implementation is required on wide palinux. Use ENTRY_COMP where |
@@ -46,7 +46,7 @@ | |||
46 | #define ENTRY_UHOH(_name_) .dword sys32_##unimplemented | 46 | #define ENTRY_UHOH(_name_) .dword sys32_##unimplemented |
47 | #define ENTRY_OURS(_name_) .dword parisc_##_name_ | 47 | #define ENTRY_OURS(_name_) .dword parisc_##_name_ |
48 | #define ENTRY_COMP(_name_) .dword compat_sys_##_name_ | 48 | #define ENTRY_COMP(_name_) .dword compat_sys_##_name_ |
49 | #elif defined(__LP64__) && defined(SYSCALL_TABLE_64BIT) | 49 | #elif defined(CONFIG_64BIT) && defined(SYSCALL_TABLE_64BIT) |
50 | #define ENTRY_SAME(_name_) .dword sys_##_name_ | 50 | #define ENTRY_SAME(_name_) .dword sys_##_name_ |
51 | #define ENTRY_DIFF(_name_) .dword sys_##_name_ | 51 | #define ENTRY_DIFF(_name_) .dword sys_##_name_ |
52 | #define ENTRY_UHOH(_name_) .dword sys_##_name_ | 52 | #define ENTRY_UHOH(_name_) .dword sys_##_name_ |
@@ -368,5 +368,11 @@ | |||
368 | ENTRY_COMP(mbind) /* 260 */ | 368 | ENTRY_COMP(mbind) /* 260 */ |
369 | ENTRY_COMP(get_mempolicy) | 369 | ENTRY_COMP(get_mempolicy) |
370 | ENTRY_COMP(set_mempolicy) | 370 | ENTRY_COMP(set_mempolicy) |
371 | ENTRY_SAME(ni_syscall) /* 263: reserved for vserver */ | ||
372 | ENTRY_SAME(add_key) | ||
373 | ENTRY_SAME(request_key) /* 265 */ | ||
374 | ENTRY_SAME(keyctl) | ||
375 | ENTRY_SAME(ioprio_set) | ||
376 | ENTRY_SAME(ioprio_get) | ||
371 | /* Nothing yet */ | 377 | /* Nothing yet */ |
372 | 378 | ||
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 7ff67f8e9f8c..bc979e1abdec 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -89,14 +89,6 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
89 | } | 89 | } |
90 | } | 90 | } |
91 | 91 | ||
92 | #ifdef CONFIG_CHASSIS_LCD_LED | ||
93 | /* Only schedule the led tasklet on cpu 0, and only if it | ||
94 | * is enabled. | ||
95 | */ | ||
96 | if (cpu == 0 && !atomic_read(&led_tasklet.count)) | ||
97 | tasklet_schedule(&led_tasklet); | ||
98 | #endif | ||
99 | |||
100 | /* check soft power switch status */ | 92 | /* check soft power switch status */ |
101 | if (cpu == 0 && !atomic_read(&power_tasklet.count)) | 93 | if (cpu == 0 && !atomic_read(&power_tasklet.count)) |
102 | tasklet_schedule(&power_tasklet); | 94 | tasklet_schedule(&power_tasklet); |
@@ -104,6 +96,24 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
104 | return IRQ_HANDLED; | 96 | return IRQ_HANDLED; |
105 | } | 97 | } |
106 | 98 | ||
99 | |||
100 | unsigned long profile_pc(struct pt_regs *regs) | ||
101 | { | ||
102 | unsigned long pc = instruction_pointer(regs); | ||
103 | |||
104 | if (regs->gr[0] & PSW_N) | ||
105 | pc -= 4; | ||
106 | |||
107 | #ifdef CONFIG_SMP | ||
108 | if (in_lock_functions(pc)) | ||
109 | pc = regs->gr[2]; | ||
110 | #endif | ||
111 | |||
112 | return pc; | ||
113 | } | ||
114 | EXPORT_SYMBOL(profile_pc); | ||
115 | |||
116 | |||
107 | /*** converted from ia64 ***/ | 117 | /*** converted from ia64 ***/ |
108 | /* | 118 | /* |
109 | * Return the number of micro-seconds that elapsed since the last | 119 | * Return the number of micro-seconds that elapsed since the last |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index d2e5b229a2f4..15914f0235a0 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -74,7 +74,10 @@ void show_regs(struct pt_regs *regs) | |||
74 | char *level; | 74 | char *level; |
75 | unsigned long cr30; | 75 | unsigned long cr30; |
76 | unsigned long cr31; | 76 | unsigned long cr31; |
77 | 77 | /* carlos says that gcc understands better memory in a struct, | |
78 | * and it makes our life easier with fpregs -- T-Bone */ | ||
79 | struct { u32 sw[2]; } s; | ||
80 | |||
78 | level = user_mode(regs) ? KERN_DEBUG : KERN_CRIT; | 81 | level = user_mode(regs) ? KERN_DEBUG : KERN_CRIT; |
79 | 82 | ||
80 | printk("%s\n", level); /* don't want to have that pretty register dump messed up */ | 83 | printk("%s\n", level); /* don't want to have that pretty register dump messed up */ |
@@ -103,11 +106,33 @@ void show_regs(struct pt_regs *regs) | |||
103 | printk("%s\n", buf); | 106 | printk("%s\n", buf); |
104 | } | 107 | } |
105 | 108 | ||
106 | #if RIDICULOUSLY_VERBOSE | 109 | /* FR are 64bit everywhere. Need to use asm to get the content |
107 | for (i = 0; i < 32; i += 2) | 110 | * of fpsr/fper1, and we assume that we won't have a FP Identify |
108 | printk("%sFR%02d : %016lx FR%2d : %016lx", level, i, | 111 | * in our way, otherwise we're screwed. |
109 | regs->fr[i], i+1, regs->fr[i+1]); | 112 | * The fldd is used to restore the T-bit if there was one, as the |
110 | #endif | 113 | * store clears it anyway. |
114 | * BTW, PA2.0 book says "thou shall not use fstw on FPSR/FPERs". */ | ||
115 | __asm__ ( | ||
116 | "fstd %%fr0,0(%1) \n\t" | ||
117 | "fldd 0(%1),%%fr0 \n\t" | ||
118 | : "=m" (s) : "r" (&s) : "%r0" | ||
119 | ); | ||
120 | |||
121 | printk("%s\n", level); | ||
122 | printk("%s VZOUICununcqcqcqcqcqcrmunTDVZOUI\n", level); | ||
123 | printbinary(buf, s.sw[0], 32); | ||
124 | printk("%sFPSR: %s\n", level, buf); | ||
125 | printk("%sFPER1: %08x\n", level, s.sw[1]); | ||
126 | |||
127 | /* here we'll print fr0 again, tho it'll be meaningless */ | ||
128 | for (i = 0; i < 32; i += 4) { | ||
129 | int j; | ||
130 | p = buf; | ||
131 | p += sprintf(p, "%sfr%02d-%02d ", level, i, i + 3); | ||
132 | for (j = 0; j < 4; j++) | ||
133 | p += sprintf(p, " %016llx", (i+j) == 0 ? 0 : regs->fr[i+j]); | ||
134 | printk("%s\n", buf); | ||
135 | } | ||
111 | 136 | ||
112 | cr30 = mfctl(30); | 137 | cr30 = mfctl(30); |
113 | cr31 = mfctl(31); | 138 | cr31 = mfctl(31); |
diff --git a/arch/parisc/kernel/unaligned.c b/arch/parisc/kernel/unaligned.c index 62eea35bcd69..eaae8a021f9f 100644 --- a/arch/parisc/kernel/unaligned.c +++ b/arch/parisc/kernel/unaligned.c | |||
@@ -513,15 +513,18 @@ void handle_unaligned(struct pt_regs *regs) | |||
513 | register int flop=0; /* true if this is a flop */ | 513 | register int flop=0; /* true if this is a flop */ |
514 | 514 | ||
515 | /* log a message with pacing */ | 515 | /* log a message with pacing */ |
516 | if (user_mode(regs)) | 516 | if (user_mode(regs)) { |
517 | { | 517 | if (current->thread.flags & PARISC_UAC_SIGBUS) { |
518 | if (unaligned_count > 5 && jiffies - last_time > 5*HZ) | 518 | goto force_sigbus; |
519 | { | 519 | } |
520 | |||
521 | if (unaligned_count > 5 && jiffies - last_time > 5*HZ) { | ||
520 | unaligned_count = 0; | 522 | unaligned_count = 0; |
521 | last_time = jiffies; | 523 | last_time = jiffies; |
522 | } | 524 | } |
523 | if (++unaligned_count < 5) | 525 | |
524 | { | 526 | if (!(current->thread.flags & PARISC_UAC_NOPRINT) |
527 | && ++unaligned_count < 5) { | ||
525 | char buf[256]; | 528 | char buf[256]; |
526 | sprintf(buf, "%s(%d): unaligned access to 0x" RFMT " at ip=0x" RFMT "\n", | 529 | sprintf(buf, "%s(%d): unaligned access to 0x" RFMT " at ip=0x" RFMT "\n", |
527 | current->comm, current->pid, regs->ior, regs->iaoq[0]); | 530 | current->comm, current->pid, regs->ior, regs->iaoq[0]); |
@@ -530,6 +533,7 @@ void handle_unaligned(struct pt_regs *regs) | |||
530 | show_regs(regs); | 533 | show_regs(regs); |
531 | #endif | 534 | #endif |
532 | } | 535 | } |
536 | |||
533 | if (!unaligned_enabled) | 537 | if (!unaligned_enabled) |
534 | goto force_sigbus; | 538 | goto force_sigbus; |
535 | } | 539 | } |
diff --git a/arch/parisc/lib/fixup.S b/arch/parisc/lib/fixup.S index 1b91612ed964..e0661c2978ed 100644 --- a/arch/parisc/lib/fixup.S +++ b/arch/parisc/lib/fixup.S | |||
@@ -35,7 +35,7 @@ | |||
35 | extrd,u \t2,63,32,\t2 | 35 | extrd,u \t2,63,32,\t2 |
36 | #endif | 36 | #endif |
37 | /* t2 = &__per_cpu_offset[smp_processor_id()]; */ | 37 | /* t2 = &__per_cpu_offset[smp_processor_id()]; */ |
38 | LDREG,s \t2(\t1),\t2 | 38 | LDREGX \t2(\t1),\t2 |
39 | addil LT%per_cpu__exception_data,%r27 | 39 | addil LT%per_cpu__exception_data,%r27 |
40 | LDREG RT%per_cpu__exception_data(%r1),\t1 | 40 | LDREG RT%per_cpu__exception_data(%r1),\t1 |
41 | /* t1 = &__get_cpu_var(exception_data) */ | 41 | /* t1 = &__get_cpu_var(exception_data) */ |
@@ -53,6 +53,8 @@ | |||
53 | .endm | 53 | .endm |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | .level LEVEL | ||
57 | |||
56 | .text | 58 | .text |
57 | .section .fixup, "ax" | 59 | .section .fixup, "ax" |
58 | 60 | ||
diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c index feb1b9f42c2b..b7098035321f 100644 --- a/arch/parisc/lib/memcpy.c +++ b/arch/parisc/lib/memcpy.c | |||
@@ -339,6 +339,7 @@ unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len) | |||
339 | pds = (double *)pcs; | 339 | pds = (double *)pcs; |
340 | pdd = (double *)pcd; | 340 | pdd = (double *)pcd; |
341 | 341 | ||
342 | #if 0 | ||
342 | /* Copy 8 doubles at a time */ | 343 | /* Copy 8 doubles at a time */ |
343 | while (len >= 8*sizeof(double)) { | 344 | while (len >= 8*sizeof(double)) { |
344 | register double r1, r2, r3, r4, r5, r6, r7, r8; | 345 | register double r1, r2, r3, r4, r5, r6, r7, r8; |
@@ -366,6 +367,7 @@ unsigned long pa_memcpy(void *dstp, const void *srcp, unsigned long len) | |||
366 | fstdma(d_space, r8, pdd, pmc_store_exc); | 367 | fstdma(d_space, r8, pdd, pmc_store_exc); |
367 | len -= 8*sizeof(double); | 368 | len -= 8*sizeof(double); |
368 | } | 369 | } |
370 | #endif | ||
369 | 371 | ||
370 | pws = (unsigned int *)pds; | 372 | pws = (unsigned int *)pds; |
371 | pwd = (unsigned int *)pdd; | 373 | pwd = (unsigned int *)pdd; |
diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig index 543f93e0f23f..b9fbe6e7f9ae 100644 --- a/drivers/bluetooth/Kconfig +++ b/drivers/bluetooth/Kconfig | |||
@@ -55,14 +55,6 @@ config BT_HCIUART_BCSP | |||
55 | 55 | ||
56 | Say Y here to compile support for HCI BCSP protocol. | 56 | Say Y here to compile support for HCI BCSP protocol. |
57 | 57 | ||
58 | config BT_HCIUART_BCSP_TXCRC | ||
59 | bool "Transmit CRC with every BCSP packet" | ||
60 | depends on BT_HCIUART_BCSP | ||
61 | help | ||
62 | If you say Y here, a 16-bit CRC checksum will be transmitted along with | ||
63 | every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip. | ||
64 | This increases reliability, but slightly reduces efficiency. | ||
65 | |||
66 | config BT_HCIBCM203X | 58 | config BT_HCIBCM203X |
67 | tristate "HCI BCM203x USB driver" | 59 | tristate "HCI BCM203x USB driver" |
68 | depends on USB | 60 | depends on USB |
diff --git a/drivers/bluetooth/bpa10x.c b/drivers/bluetooth/bpa10x.c index 4fa85234d8b5..0db0400519c9 100644 --- a/drivers/bluetooth/bpa10x.c +++ b/drivers/bluetooth/bpa10x.c | |||
@@ -550,6 +550,9 @@ static int bpa10x_probe(struct usb_interface *intf, const struct usb_device_id * | |||
550 | if (ignore) | 550 | if (ignore) |
551 | return -ENODEV; | 551 | return -ENODEV; |
552 | 552 | ||
553 | if (intf->cur_altsetting->desc.bInterfaceNumber > 0) | ||
554 | return -ENODEV; | ||
555 | |||
553 | data = kmalloc(sizeof(*data), GFP_KERNEL); | 556 | data = kmalloc(sizeof(*data), GFP_KERNEL); |
554 | if (!data) { | 557 | if (!data) { |
555 | BT_ERR("Can't allocate data structure"); | 558 | BT_ERR("Can't allocate data structure"); |
diff --git a/drivers/bluetooth/hci_bcsp.c b/drivers/bluetooth/hci_bcsp.c index 0ee324e1265d..0a4761415ac3 100644 --- a/drivers/bluetooth/hci_bcsp.c +++ b/drivers/bluetooth/hci_bcsp.c | |||
@@ -1,35 +1,27 @@ | |||
1 | /* | ||
2 | BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ). | ||
3 | Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com> | ||
4 | |||
5 | Based on | ||
6 | hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com> | ||
7 | ABCSP by Carl Orsborn <cjo@csr.com> | ||
8 | |||
9 | This program is free software; you can redistribute it and/or modify | ||
10 | it under the terms of the GNU General Public License version 2 as | ||
11 | published by the Free Software Foundation; | ||
12 | |||
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
14 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
16 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
17 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
18 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
19 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
20 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
21 | |||
22 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
23 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
24 | SOFTWARE IS DISCLAIMED. | ||
25 | */ | ||
26 | |||
27 | /* | 1 | /* |
28 | * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $ | 2 | * |
3 | * Bluetooth HCI UART driver | ||
4 | * | ||
5 | * Copyright (C) 2002-2003 Fabrizio Gennari <fabrizio.gennari@philips.com> | ||
6 | * Copyright (C) 2004-2005 Marcel Holtmann <marcel@holtmann.org> | ||
7 | * | ||
8 | * | ||
9 | * This program is free software; you can redistribute it and/or modify | ||
10 | * it under the terms of the GNU General Public License as published by | ||
11 | * the Free Software Foundation; either version 2 of the License, or | ||
12 | * (at your option) any later version. | ||
13 | * | ||
14 | * This program is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public License | ||
20 | * along with this program; if not, write to the Free Software | ||
21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
22 | * | ||
29 | */ | 23 | */ |
30 | 24 | ||
31 | #define VERSION "0.2" | ||
32 | |||
33 | #include <linux/config.h> | 25 | #include <linux/config.h> |
34 | #include <linux/module.h> | 26 | #include <linux/module.h> |
35 | 27 | ||
@@ -52,16 +44,56 @@ | |||
52 | 44 | ||
53 | #include <net/bluetooth/bluetooth.h> | 45 | #include <net/bluetooth/bluetooth.h> |
54 | #include <net/bluetooth/hci_core.h> | 46 | #include <net/bluetooth/hci_core.h> |
47 | |||
55 | #include "hci_uart.h" | 48 | #include "hci_uart.h" |
56 | #include "hci_bcsp.h" | ||
57 | 49 | ||
58 | #ifndef CONFIG_BT_HCIUART_DEBUG | 50 | #ifndef CONFIG_BT_HCIUART_DEBUG |
59 | #undef BT_DBG | 51 | #undef BT_DBG |
60 | #define BT_DBG( A... ) | 52 | #define BT_DBG( A... ) |
61 | #endif | 53 | #endif |
62 | 54 | ||
55 | #define VERSION "0.3" | ||
56 | |||
57 | static int txcrc = 1; | ||
63 | static int hciextn = 1; | 58 | static int hciextn = 1; |
64 | 59 | ||
60 | #define BCSP_TXWINSIZE 4 | ||
61 | |||
62 | #define BCSP_ACK_PKT 0x05 | ||
63 | #define BCSP_LE_PKT 0x06 | ||
64 | |||
65 | struct bcsp_struct { | ||
66 | struct sk_buff_head unack; /* Unack'ed packets queue */ | ||
67 | struct sk_buff_head rel; /* Reliable packets queue */ | ||
68 | struct sk_buff_head unrel; /* Unreliable packets queue */ | ||
69 | |||
70 | unsigned long rx_count; | ||
71 | struct sk_buff *rx_skb; | ||
72 | u8 rxseq_txack; /* rxseq == txack. */ | ||
73 | u8 rxack; /* Last packet sent by us that the peer ack'ed */ | ||
74 | struct timer_list tbcsp; | ||
75 | |||
76 | enum { | ||
77 | BCSP_W4_PKT_DELIMITER, | ||
78 | BCSP_W4_PKT_START, | ||
79 | BCSP_W4_BCSP_HDR, | ||
80 | BCSP_W4_DATA, | ||
81 | BCSP_W4_CRC | ||
82 | } rx_state; | ||
83 | |||
84 | enum { | ||
85 | BCSP_ESCSTATE_NOESC, | ||
86 | BCSP_ESCSTATE_ESC | ||
87 | } rx_esc_state; | ||
88 | |||
89 | u8 use_crc; | ||
90 | u16 message_crc; | ||
91 | u8 txack_req; /* Do we need to send ack's to the peer? */ | ||
92 | |||
93 | /* Reliable packet sequence number - used to assign seq to each rel pkt. */ | ||
94 | u8 msgq_txseq; | ||
95 | }; | ||
96 | |||
65 | /* ---- BCSP CRC calculation ---- */ | 97 | /* ---- BCSP CRC calculation ---- */ |
66 | 98 | ||
67 | /* Table for calculating CRC for polynomial 0x1021, LSB processed first, | 99 | /* Table for calculating CRC for polynomial 0x1021, LSB processed first, |
@@ -111,6 +143,7 @@ static u16 bcsp_crc_reverse(u16 crc) | |||
111 | rev |= (crc & 1); | 143 | rev |= (crc & 1); |
112 | crc = crc >> 1; | 144 | crc = crc >> 1; |
113 | } | 145 | } |
146 | |||
114 | return (rev); | 147 | return (rev); |
115 | } | 148 | } |
116 | 149 | ||
@@ -119,6 +152,7 @@ static u16 bcsp_crc_reverse(u16 crc) | |||
119 | static void bcsp_slip_msgdelim(struct sk_buff *skb) | 152 | static void bcsp_slip_msgdelim(struct sk_buff *skb) |
120 | { | 153 | { |
121 | const char pkt_delim = 0xc0; | 154 | const char pkt_delim = 0xc0; |
155 | |||
122 | memcpy(skb_put(skb, 1), &pkt_delim, 1); | 156 | memcpy(skb_put(skb, 1), &pkt_delim, 1); |
123 | } | 157 | } |
124 | 158 | ||
@@ -173,11 +207,8 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, | |||
173 | { | 207 | { |
174 | struct sk_buff *nskb; | 208 | struct sk_buff *nskb; |
175 | u8 hdr[4], chan; | 209 | u8 hdr[4], chan; |
176 | int rel, i; | ||
177 | |||
178 | #ifdef CONFIG_BT_HCIUART_BCSP_TXCRC | ||
179 | u16 BCSP_CRC_INIT(bcsp_txmsg_crc); | 210 | u16 BCSP_CRC_INIT(bcsp_txmsg_crc); |
180 | #endif | 211 | int rel, i; |
181 | 212 | ||
182 | switch (pkt_type) { | 213 | switch (pkt_type) { |
183 | case HCI_ACLDATA_PKT: | 214 | case HCI_ACLDATA_PKT: |
@@ -240,9 +271,9 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, | |||
240 | BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq); | 271 | BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq); |
241 | bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07; | 272 | bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07; |
242 | } | 273 | } |
243 | #ifdef CONFIG_BT_HCIUART_BCSP_TXCRC | 274 | |
244 | hdr[0] |= 0x40; | 275 | if (bcsp->use_crc) |
245 | #endif | 276 | hdr[0] |= 0x40; |
246 | 277 | ||
247 | hdr[1] = ((len << 4) & 0xff) | chan; | 278 | hdr[1] = ((len << 4) & 0xff) | chan; |
248 | hdr[2] = len >> 4; | 279 | hdr[2] = len >> 4; |
@@ -251,25 +282,25 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, | |||
251 | /* Put BCSP header */ | 282 | /* Put BCSP header */ |
252 | for (i = 0; i < 4; i++) { | 283 | for (i = 0; i < 4; i++) { |
253 | bcsp_slip_one_byte(nskb, hdr[i]); | 284 | bcsp_slip_one_byte(nskb, hdr[i]); |
254 | #ifdef CONFIG_BT_HCIUART_BCSP_TXCRC | 285 | |
255 | bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]); | 286 | if (bcsp->use_crc) |
256 | #endif | 287 | bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]); |
257 | } | 288 | } |
258 | 289 | ||
259 | /* Put payload */ | 290 | /* Put payload */ |
260 | for (i = 0; i < len; i++) { | 291 | for (i = 0; i < len; i++) { |
261 | bcsp_slip_one_byte(nskb, data[i]); | 292 | bcsp_slip_one_byte(nskb, data[i]); |
262 | #ifdef CONFIG_BT_HCIUART_BCSP_TXCRC | 293 | |
263 | bcsp_crc_update(&bcsp_txmsg_crc, data[i]); | 294 | if (bcsp->use_crc) |
264 | #endif | 295 | bcsp_crc_update(&bcsp_txmsg_crc, data[i]); |
265 | } | 296 | } |
266 | 297 | ||
267 | #ifdef CONFIG_BT_HCIUART_BCSP_TXCRC | ||
268 | /* Put CRC */ | 298 | /* Put CRC */ |
269 | bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc); | 299 | if (bcsp->use_crc) { |
270 | bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff)); | 300 | bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc); |
271 | bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff)); | 301 | bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff)); |
272 | #endif | 302 | bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff)); |
303 | } | ||
273 | 304 | ||
274 | bcsp_slip_msgdelim(nskb); | 305 | bcsp_slip_msgdelim(nskb); |
275 | return nskb; | 306 | return nskb; |
@@ -317,7 +348,6 @@ static struct sk_buff *bcsp_dequeue(struct hci_uart *hu) | |||
317 | 348 | ||
318 | spin_unlock_irqrestore(&bcsp->unack.lock, flags); | 349 | spin_unlock_irqrestore(&bcsp->unack.lock, flags); |
319 | 350 | ||
320 | |||
321 | /* We could not send a reliable packet, either because there are | 351 | /* We could not send a reliable packet, either because there are |
322 | none or because there are too many unack'ed pkts. Did we receive | 352 | none or because there are too many unack'ed pkts. Did we receive |
323 | any packets we have not acknowledged yet ? */ | 353 | any packets we have not acknowledged yet ? */ |
@@ -363,7 +393,7 @@ static void bcsp_pkt_cull(struct bcsp_struct *bcsp) | |||
363 | BT_ERR("Peer acked invalid packet"); | 393 | BT_ERR("Peer acked invalid packet"); |
364 | 394 | ||
365 | BT_DBG("Removing %u pkts out of %u, up to seqno %u", | 395 | BT_DBG("Removing %u pkts out of %u, up to seqno %u", |
366 | pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07); | 396 | pkts_to_be_removed, bcsp->unack.qlen, (seqno - 1) & 0x07); |
367 | 397 | ||
368 | for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed | 398 | for (i = 0, skb = ((struct sk_buff *) &bcsp->unack)->next; i < pkts_to_be_removed |
369 | && skb != (struct sk_buff *) &bcsp->unack; i++) { | 399 | && skb != (struct sk_buff *) &bcsp->unack; i++) { |
@@ -374,8 +404,10 @@ static void bcsp_pkt_cull(struct bcsp_struct *bcsp) | |||
374 | kfree_skb(skb); | 404 | kfree_skb(skb); |
375 | skb = nskb; | 405 | skb = nskb; |
376 | } | 406 | } |
407 | |||
377 | if (bcsp->unack.qlen == 0) | 408 | if (bcsp->unack.qlen == 0) |
378 | del_timer(&bcsp->tbcsp); | 409 | del_timer(&bcsp->tbcsp); |
410 | |||
379 | spin_unlock_irqrestore(&bcsp->unack.lock, flags); | 411 | spin_unlock_irqrestore(&bcsp->unack.lock, flags); |
380 | 412 | ||
381 | if (i != pkts_to_be_removed) | 413 | if (i != pkts_to_be_removed) |
@@ -530,6 +562,7 @@ static inline void bcsp_complete_rx_pkt(struct hci_uart *hu) | |||
530 | 562 | ||
531 | hci_recv_frame(bcsp->rx_skb); | 563 | hci_recv_frame(bcsp->rx_skb); |
532 | } | 564 | } |
565 | |||
533 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; | 566 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; |
534 | bcsp->rx_skb = NULL; | 567 | bcsp->rx_skb = NULL; |
535 | } | 568 | } |
@@ -598,8 +631,8 @@ static int bcsp_recv(struct hci_uart *hu, void *data, int count) | |||
598 | 631 | ||
599 | BT_ERR ("Checksum failed: computed %04x received %04x", | 632 | BT_ERR ("Checksum failed: computed %04x received %04x", |
600 | bcsp_crc_reverse(bcsp->message_crc), | 633 | bcsp_crc_reverse(bcsp->message_crc), |
601 | (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) + | 634 | (bcsp->rx_skb-> data[bcsp->rx_skb->len - 2] << 8) + |
602 | bcsp->rx_skb->data[bcsp->rx_skb->len - 1]); | 635 | bcsp->rx_skb->data[bcsp->rx_skb->len - 1]); |
603 | 636 | ||
604 | kfree_skb(bcsp->rx_skb); | 637 | kfree_skb(bcsp->rx_skb); |
605 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; | 638 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; |
@@ -633,7 +666,7 @@ static int bcsp_recv(struct hci_uart *hu, void *data, int count) | |||
633 | bcsp->rx_count = 4; | 666 | bcsp->rx_count = 4; |
634 | bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC; | 667 | bcsp->rx_esc_state = BCSP_ESCSTATE_NOESC; |
635 | BCSP_CRC_INIT(bcsp->message_crc); | 668 | BCSP_CRC_INIT(bcsp->message_crc); |
636 | 669 | ||
637 | /* Do not increment ptr or decrement count | 670 | /* Do not increment ptr or decrement count |
638 | * Allocate packet. Max len of a BCSP pkt= | 671 | * Allocate packet. Max len of a BCSP pkt= |
639 | * 0xFFF (payload) +4 (header) +2 (crc) */ | 672 | * 0xFFF (payload) +4 (header) +2 (crc) */ |
@@ -698,6 +731,9 @@ static int bcsp_open(struct hci_uart *hu) | |||
698 | 731 | ||
699 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; | 732 | bcsp->rx_state = BCSP_W4_PKT_DELIMITER; |
700 | 733 | ||
734 | if (txcrc) | ||
735 | bcsp->use_crc = 1; | ||
736 | |||
701 | return 0; | 737 | return 0; |
702 | } | 738 | } |
703 | 739 | ||
@@ -718,18 +754,19 @@ static int bcsp_close(struct hci_uart *hu) | |||
718 | } | 754 | } |
719 | 755 | ||
720 | static struct hci_uart_proto bcsp = { | 756 | static struct hci_uart_proto bcsp = { |
721 | .id = HCI_UART_BCSP, | 757 | .id = HCI_UART_BCSP, |
722 | .open = bcsp_open, | 758 | .open = bcsp_open, |
723 | .close = bcsp_close, | 759 | .close = bcsp_close, |
724 | .enqueue = bcsp_enqueue, | 760 | .enqueue = bcsp_enqueue, |
725 | .dequeue = bcsp_dequeue, | 761 | .dequeue = bcsp_dequeue, |
726 | .recv = bcsp_recv, | 762 | .recv = bcsp_recv, |
727 | .flush = bcsp_flush | 763 | .flush = bcsp_flush |
728 | }; | 764 | }; |
729 | 765 | ||
730 | int bcsp_init(void) | 766 | int bcsp_init(void) |
731 | { | 767 | { |
732 | int err = hci_uart_register_proto(&bcsp); | 768 | int err = hci_uart_register_proto(&bcsp); |
769 | |||
733 | if (!err) | 770 | if (!err) |
734 | BT_INFO("HCI BCSP protocol initialized"); | 771 | BT_INFO("HCI BCSP protocol initialized"); |
735 | else | 772 | else |
@@ -743,5 +780,8 @@ int bcsp_deinit(void) | |||
743 | return hci_uart_unregister_proto(&bcsp); | 780 | return hci_uart_unregister_proto(&bcsp); |
744 | } | 781 | } |
745 | 782 | ||
783 | module_param(txcrc, bool, 0644); | ||
784 | MODULE_PARM_DESC(txcrc, "Transmit CRC with every BCSP packet"); | ||
785 | |||
746 | module_param(hciextn, bool, 0644); | 786 | module_param(hciextn, bool, 0644); |
747 | MODULE_PARM_DESC(hciextn, "Convert HCI Extensions into BCSP packets"); | 787 | MODULE_PARM_DESC(hciextn, "Convert HCI Extensions into BCSP packets"); |
diff --git a/drivers/bluetooth/hci_bcsp.h b/drivers/bluetooth/hci_bcsp.h deleted file mode 100644 index a2b3bb92274b..000000000000 --- a/drivers/bluetooth/hci_bcsp.h +++ /dev/null | |||
@@ -1,70 +0,0 @@ | |||
1 | /* | ||
2 | BlueCore Serial Protocol (BCSP) for Linux Bluetooth stack (BlueZ). | ||
3 | Copyright 2002 by Fabrizio Gennari <fabrizio.gennari@philips.com> | ||
4 | |||
5 | Based on | ||
6 | hci_h4.c by Maxim Krasnyansky <maxk@qualcomm.com> | ||
7 | ABCSP by Carl Orsborn <cjo@csr.com> | ||
8 | |||
9 | This program is free software; you can redistribute it and/or modify | ||
10 | it under the terms of the GNU General Public License version 2 as | ||
11 | published by the Free Software Foundation; | ||
12 | |||
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
14 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
16 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
17 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
18 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
19 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
20 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
21 | |||
22 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
23 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
24 | SOFTWARE IS DISCLAIMED. | ||
25 | */ | ||
26 | |||
27 | /* | ||
28 | * $Id: hci_bcsp.h,v 1.2 2002/09/26 05:05:14 maxk Exp $ | ||
29 | */ | ||
30 | |||
31 | #ifndef __HCI_BCSP_H__ | ||
32 | #define __HCI_BCSP_H__ | ||
33 | |||
34 | #define BCSP_TXWINSIZE 4 | ||
35 | |||
36 | #define BCSP_ACK_PKT 0x05 | ||
37 | #define BCSP_LE_PKT 0x06 | ||
38 | |||
39 | struct bcsp_struct { | ||
40 | struct sk_buff_head unack; /* Unack'ed packets queue */ | ||
41 | struct sk_buff_head rel; /* Reliable packets queue */ | ||
42 | struct sk_buff_head unrel; /* Unreliable packets queue */ | ||
43 | |||
44 | unsigned long rx_count; | ||
45 | struct sk_buff *rx_skb; | ||
46 | u8 rxseq_txack; /* rxseq == txack. */ | ||
47 | u8 rxack; /* Last packet sent by us that the peer ack'ed */ | ||
48 | struct timer_list tbcsp; | ||
49 | |||
50 | enum { | ||
51 | BCSP_W4_PKT_DELIMITER, | ||
52 | BCSP_W4_PKT_START, | ||
53 | BCSP_W4_BCSP_HDR, | ||
54 | BCSP_W4_DATA, | ||
55 | BCSP_W4_CRC | ||
56 | } rx_state; | ||
57 | |||
58 | enum { | ||
59 | BCSP_ESCSTATE_NOESC, | ||
60 | BCSP_ESCSTATE_ESC | ||
61 | } rx_esc_state; | ||
62 | |||
63 | u16 message_crc; | ||
64 | u8 txack_req; /* Do we need to send ack's to the peer? */ | ||
65 | |||
66 | /* Reliable packet sequence number - used to assign seq to each rel pkt. */ | ||
67 | u8 msgq_txseq; | ||
68 | }; | ||
69 | |||
70 | #endif /* __HCI_BCSP_H__ */ | ||
diff --git a/drivers/bluetooth/hci_h4.c b/drivers/bluetooth/hci_h4.c index cf8a22d58d96..12e369a66fc2 100644 --- a/drivers/bluetooth/hci_h4.c +++ b/drivers/bluetooth/hci_h4.c | |||
@@ -1,33 +1,27 @@ | |||
1 | /* | ||
2 | BlueZ - Bluetooth protocol stack for Linux | ||
3 | Copyright (C) 2000-2001 Qualcomm Incorporated | ||
4 | |||
5 | Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> | ||
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 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | |||
20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
22 | SOFTWARE IS DISCLAIMED. | ||
23 | */ | ||
24 | |||
25 | /* | 1 | /* |
26 | * Bluetooth HCI UART(H4) protocol. | ||
27 | * | 2 | * |
28 | * $Id: hci_h4.c,v 1.3 2002/09/09 01:17:32 maxk Exp $ | 3 | * Bluetooth HCI UART driver |
4 | * | ||
5 | * Copyright (C) 2000-2001 Qualcomm Incorporated | ||
6 | * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> | ||
7 | * Copyright (C) 2004-2005 Marcel Holtmann <marcel@holtmann.org> | ||
8 | * | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License | ||
21 | * along with this program; if not, write to the Free Software | ||
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
23 | * | ||
29 | */ | 24 | */ |
30 | #define VERSION "1.2" | ||
31 | 25 | ||
32 | #include <linux/config.h> | 26 | #include <linux/config.h> |
33 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -51,24 +45,41 @@ | |||
51 | 45 | ||
52 | #include <net/bluetooth/bluetooth.h> | 46 | #include <net/bluetooth/bluetooth.h> |
53 | #include <net/bluetooth/hci_core.h> | 47 | #include <net/bluetooth/hci_core.h> |
48 | |||
54 | #include "hci_uart.h" | 49 | #include "hci_uart.h" |
55 | #include "hci_h4.h" | ||
56 | 50 | ||
57 | #ifndef CONFIG_BT_HCIUART_DEBUG | 51 | #ifndef CONFIG_BT_HCIUART_DEBUG |
58 | #undef BT_DBG | 52 | #undef BT_DBG |
59 | #define BT_DBG( A... ) | 53 | #define BT_DBG( A... ) |
60 | #endif | 54 | #endif |
61 | 55 | ||
56 | #define VERSION "1.2" | ||
57 | |||
58 | struct h4_struct { | ||
59 | unsigned long rx_state; | ||
60 | unsigned long rx_count; | ||
61 | struct sk_buff *rx_skb; | ||
62 | struct sk_buff_head txq; | ||
63 | }; | ||
64 | |||
65 | /* H4 receiver States */ | ||
66 | #define H4_W4_PACKET_TYPE 0 | ||
67 | #define H4_W4_EVENT_HDR 1 | ||
68 | #define H4_W4_ACL_HDR 2 | ||
69 | #define H4_W4_SCO_HDR 3 | ||
70 | #define H4_W4_DATA 4 | ||
71 | |||
62 | /* Initialize protocol */ | 72 | /* Initialize protocol */ |
63 | static int h4_open(struct hci_uart *hu) | 73 | static int h4_open(struct hci_uart *hu) |
64 | { | 74 | { |
65 | struct h4_struct *h4; | 75 | struct h4_struct *h4; |
66 | 76 | ||
67 | BT_DBG("hu %p", hu); | 77 | BT_DBG("hu %p", hu); |
68 | 78 | ||
69 | h4 = kmalloc(sizeof(*h4), GFP_ATOMIC); | 79 | h4 = kmalloc(sizeof(*h4), GFP_ATOMIC); |
70 | if (!h4) | 80 | if (!h4) |
71 | return -ENOMEM; | 81 | return -ENOMEM; |
82 | |||
72 | memset(h4, 0, sizeof(*h4)); | 83 | memset(h4, 0, sizeof(*h4)); |
73 | 84 | ||
74 | skb_queue_head_init(&h4->txq); | 85 | skb_queue_head_init(&h4->txq); |
@@ -83,7 +94,9 @@ static int h4_flush(struct hci_uart *hu) | |||
83 | struct h4_struct *h4 = hu->priv; | 94 | struct h4_struct *h4 = hu->priv; |
84 | 95 | ||
85 | BT_DBG("hu %p", hu); | 96 | BT_DBG("hu %p", hu); |
97 | |||
86 | skb_queue_purge(&h4->txq); | 98 | skb_queue_purge(&h4->txq); |
99 | |||
87 | return 0; | 100 | return 0; |
88 | } | 101 | } |
89 | 102 | ||
@@ -91,16 +104,19 @@ static int h4_flush(struct hci_uart *hu) | |||
91 | static int h4_close(struct hci_uart *hu) | 104 | static int h4_close(struct hci_uart *hu) |
92 | { | 105 | { |
93 | struct h4_struct *h4 = hu->priv; | 106 | struct h4_struct *h4 = hu->priv; |
107 | |||
94 | hu->priv = NULL; | 108 | hu->priv = NULL; |
95 | 109 | ||
96 | BT_DBG("hu %p", hu); | 110 | BT_DBG("hu %p", hu); |
97 | 111 | ||
98 | skb_queue_purge(&h4->txq); | 112 | skb_queue_purge(&h4->txq); |
113 | |||
99 | if (h4->rx_skb) | 114 | if (h4->rx_skb) |
100 | kfree_skb(h4->rx_skb); | 115 | kfree_skb(h4->rx_skb); |
101 | 116 | ||
102 | hu->priv = NULL; | 117 | hu->priv = NULL; |
103 | kfree(h4); | 118 | kfree(h4); |
119 | |||
104 | return 0; | 120 | return 0; |
105 | } | 121 | } |
106 | 122 | ||
@@ -114,6 +130,7 @@ static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb) | |||
114 | /* Prepend skb with frame type */ | 130 | /* Prepend skb with frame type */ |
115 | memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1); | 131 | memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1); |
116 | skb_queue_tail(&h4->txq, skb); | 132 | skb_queue_tail(&h4->txq, skb); |
133 | |||
117 | return 0; | 134 | return 0; |
118 | } | 135 | } |
119 | 136 | ||
@@ -122,6 +139,7 @@ static inline int h4_check_data_len(struct h4_struct *h4, int len) | |||
122 | register int room = skb_tailroom(h4->rx_skb); | 139 | register int room = skb_tailroom(h4->rx_skb); |
123 | 140 | ||
124 | BT_DBG("len %d room %d", len, room); | 141 | BT_DBG("len %d room %d", len, room); |
142 | |||
125 | if (!len) { | 143 | if (!len) { |
126 | hci_recv_frame(h4->rx_skb); | 144 | hci_recv_frame(h4->rx_skb); |
127 | } else if (len > room) { | 145 | } else if (len > room) { |
@@ -136,6 +154,7 @@ static inline int h4_check_data_len(struct h4_struct *h4, int len) | |||
136 | h4->rx_state = H4_W4_PACKET_TYPE; | 154 | h4->rx_state = H4_W4_PACKET_TYPE; |
137 | h4->rx_skb = NULL; | 155 | h4->rx_skb = NULL; |
138 | h4->rx_count = 0; | 156 | h4->rx_count = 0; |
157 | |||
139 | return 0; | 158 | return 0; |
140 | } | 159 | } |
141 | 160 | ||
@@ -228,6 +247,7 @@ static int h4_recv(struct hci_uart *hu, void *data, int count) | |||
228 | ptr++; count--; | 247 | ptr++; count--; |
229 | continue; | 248 | continue; |
230 | }; | 249 | }; |
250 | |||
231 | ptr++; count--; | 251 | ptr++; count--; |
232 | 252 | ||
233 | /* Allocate packet */ | 253 | /* Allocate packet */ |
@@ -238,9 +258,11 @@ static int h4_recv(struct hci_uart *hu, void *data, int count) | |||
238 | h4->rx_count = 0; | 258 | h4->rx_count = 0; |
239 | return 0; | 259 | return 0; |
240 | } | 260 | } |
261 | |||
241 | h4->rx_skb->dev = (void *) hu->hdev; | 262 | h4->rx_skb->dev = (void *) hu->hdev; |
242 | bt_cb(h4->rx_skb)->pkt_type = type; | 263 | bt_cb(h4->rx_skb)->pkt_type = type; |
243 | } | 264 | } |
265 | |||
244 | return count; | 266 | return count; |
245 | } | 267 | } |
246 | 268 | ||
@@ -251,23 +273,24 @@ static struct sk_buff *h4_dequeue(struct hci_uart *hu) | |||
251 | } | 273 | } |
252 | 274 | ||
253 | static struct hci_uart_proto h4p = { | 275 | static struct hci_uart_proto h4p = { |
254 | .id = HCI_UART_H4, | 276 | .id = HCI_UART_H4, |
255 | .open = h4_open, | 277 | .open = h4_open, |
256 | .close = h4_close, | 278 | .close = h4_close, |
257 | .recv = h4_recv, | 279 | .recv = h4_recv, |
258 | .enqueue = h4_enqueue, | 280 | .enqueue = h4_enqueue, |
259 | .dequeue = h4_dequeue, | 281 | .dequeue = h4_dequeue, |
260 | .flush = h4_flush, | 282 | .flush = h4_flush, |
261 | }; | 283 | }; |
262 | 284 | ||
263 | int h4_init(void) | 285 | int h4_init(void) |
264 | { | 286 | { |
265 | int err = hci_uart_register_proto(&h4p); | 287 | int err = hci_uart_register_proto(&h4p); |
288 | |||
266 | if (!err) | 289 | if (!err) |
267 | BT_INFO("HCI H4 protocol initialized"); | 290 | BT_INFO("HCI H4 protocol initialized"); |
268 | else | 291 | else |
269 | BT_ERR("HCI H4 protocol registration failed"); | 292 | BT_ERR("HCI H4 protocol registration failed"); |
270 | 293 | ||
271 | return err; | 294 | return err; |
272 | } | 295 | } |
273 | 296 | ||
diff --git a/drivers/bluetooth/hci_h4.h b/drivers/bluetooth/hci_h4.h deleted file mode 100644 index b95ff54bfd47..000000000000 --- a/drivers/bluetooth/hci_h4.h +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | /* | ||
2 | BlueZ - Bluetooth protocol stack for Linux | ||
3 | Copyright (C) 2000-2001 Qualcomm Incorporated | ||
4 | |||
5 | Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> | ||
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 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | |||
20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
22 | SOFTWARE IS DISCLAIMED. | ||
23 | */ | ||
24 | |||
25 | /* | ||
26 | * $Id: hci_h4.h,v 1.2 2002/09/09 01:17:32 maxk Exp $ | ||
27 | */ | ||
28 | |||
29 | #ifdef __KERNEL__ | ||
30 | struct h4_struct { | ||
31 | unsigned long rx_state; | ||
32 | unsigned long rx_count; | ||
33 | struct sk_buff *rx_skb; | ||
34 | struct sk_buff_head txq; | ||
35 | }; | ||
36 | |||
37 | /* H4 receiver States */ | ||
38 | #define H4_W4_PACKET_TYPE 0 | ||
39 | #define H4_W4_EVENT_HDR 1 | ||
40 | #define H4_W4_ACL_HDR 2 | ||
41 | #define H4_W4_SCO_HDR 3 | ||
42 | #define H4_W4_DATA 4 | ||
43 | |||
44 | #endif /* __KERNEL__ */ | ||
diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c index aed80cc22890..4a775f6ea390 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c | |||
@@ -1,33 +1,27 @@ | |||
1 | /* | ||
2 | BlueZ - Bluetooth protocol stack for Linux | ||
3 | Copyright (C) 2000-2001 Qualcomm Incorporated | ||
4 | |||
5 | Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> | ||
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 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | |||
20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
22 | SOFTWARE IS DISCLAIMED. | ||
23 | */ | ||
24 | |||
25 | /* | 1 | /* |
26 | * Bluetooth HCI UART driver. | ||
27 | * | 2 | * |
28 | * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $ | 3 | * Bluetooth HCI UART driver |
4 | * | ||
5 | * Copyright (C) 2000-2001 Qualcomm Incorporated | ||
6 | * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> | ||
7 | * Copyright (C) 2004-2005 Marcel Holtmann <marcel@holtmann.org> | ||
8 | * | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License | ||
21 | * along with this program; if not, write to the Free Software | ||
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
23 | * | ||
29 | */ | 24 | */ |
30 | #define VERSION "2.1" | ||
31 | 25 | ||
32 | #include <linux/config.h> | 26 | #include <linux/config.h> |
33 | #include <linux/module.h> | 27 | #include <linux/module.h> |
@@ -59,6 +53,8 @@ | |||
59 | #define BT_DBG( A... ) | 53 | #define BT_DBG( A... ) |
60 | #endif | 54 | #endif |
61 | 55 | ||
56 | #define VERSION "2.2" | ||
57 | |||
62 | static int reset = 0; | 58 | static int reset = 0; |
63 | 59 | ||
64 | static struct hci_uart_proto *hup[HCI_UART_MAX_PROTO]; | 60 | static struct hci_uart_proto *hup[HCI_UART_MAX_PROTO]; |
@@ -72,6 +68,7 @@ int hci_uart_register_proto(struct hci_uart_proto *p) | |||
72 | return -EEXIST; | 68 | return -EEXIST; |
73 | 69 | ||
74 | hup[p->id] = p; | 70 | hup[p->id] = p; |
71 | |||
75 | return 0; | 72 | return 0; |
76 | } | 73 | } |
77 | 74 | ||
@@ -84,6 +81,7 @@ int hci_uart_unregister_proto(struct hci_uart_proto *p) | |||
84 | return -EINVAL; | 81 | return -EINVAL; |
85 | 82 | ||
86 | hup[p->id] = NULL; | 83 | hup[p->id] = NULL; |
84 | |||
87 | return 0; | 85 | return 0; |
88 | } | 86 | } |
89 | 87 | ||
@@ -91,13 +89,14 @@ static struct hci_uart_proto *hci_uart_get_proto(unsigned int id) | |||
91 | { | 89 | { |
92 | if (id >= HCI_UART_MAX_PROTO) | 90 | if (id >= HCI_UART_MAX_PROTO) |
93 | return NULL; | 91 | return NULL; |
92 | |||
94 | return hup[id]; | 93 | return hup[id]; |
95 | } | 94 | } |
96 | 95 | ||
97 | static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type) | 96 | static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type) |
98 | { | 97 | { |
99 | struct hci_dev *hdev = hu->hdev; | 98 | struct hci_dev *hdev = hu->hdev; |
100 | 99 | ||
101 | /* Update HCI stat counters */ | 100 | /* Update HCI stat counters */ |
102 | switch (pkt_type) { | 101 | switch (pkt_type) { |
103 | case HCI_COMMAND_PKT: | 102 | case HCI_COMMAND_PKT: |
@@ -117,10 +116,12 @@ static inline void hci_uart_tx_complete(struct hci_uart *hu, int pkt_type) | |||
117 | static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu) | 116 | static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu) |
118 | { | 117 | { |
119 | struct sk_buff *skb = hu->tx_skb; | 118 | struct sk_buff *skb = hu->tx_skb; |
119 | |||
120 | if (!skb) | 120 | if (!skb) |
121 | skb = hu->proto->dequeue(hu); | 121 | skb = hu->proto->dequeue(hu); |
122 | else | 122 | else |
123 | hu->tx_skb = NULL; | 123 | hu->tx_skb = NULL; |
124 | |||
124 | return skb; | 125 | return skb; |
125 | } | 126 | } |
126 | 127 | ||
@@ -129,7 +130,7 @@ int hci_uart_tx_wakeup(struct hci_uart *hu) | |||
129 | struct tty_struct *tty = hu->tty; | 130 | struct tty_struct *tty = hu->tty; |
130 | struct hci_dev *hdev = hu->hdev; | 131 | struct hci_dev *hdev = hu->hdev; |
131 | struct sk_buff *skb; | 132 | struct sk_buff *skb; |
132 | 133 | ||
133 | if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) { | 134 | if (test_and_set_bit(HCI_UART_SENDING, &hu->tx_state)) { |
134 | set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); | 135 | set_bit(HCI_UART_TX_WAKEUP, &hu->tx_state); |
135 | return 0; | 136 | return 0; |
@@ -142,7 +143,7 @@ restart: | |||
142 | 143 | ||
143 | while ((skb = hci_uart_dequeue(hu))) { | 144 | while ((skb = hci_uart_dequeue(hu))) { |
144 | int len; | 145 | int len; |
145 | 146 | ||
146 | set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); | 147 | set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); |
147 | len = tty->driver->write(tty, skb->data, skb->len); | 148 | len = tty->driver->write(tty, skb->data, skb->len); |
148 | hdev->stat.byte_tx += len; | 149 | hdev->stat.byte_tx += len; |
@@ -152,11 +153,11 @@ restart: | |||
152 | hu->tx_skb = skb; | 153 | hu->tx_skb = skb; |
153 | break; | 154 | break; |
154 | } | 155 | } |
155 | 156 | ||
156 | hci_uart_tx_complete(hu, bt_cb(skb)->pkt_type); | 157 | hci_uart_tx_complete(hu, bt_cb(skb)->pkt_type); |
157 | kfree_skb(skb); | 158 | kfree_skb(skb); |
158 | } | 159 | } |
159 | 160 | ||
160 | if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state)) | 161 | if (test_bit(HCI_UART_TX_WAKEUP, &hu->tx_state)) |
161 | goto restart; | 162 | goto restart; |
162 | 163 | ||
@@ -173,6 +174,7 @@ static int hci_uart_open(struct hci_dev *hdev) | |||
173 | /* Nothing to do for UART driver */ | 174 | /* Nothing to do for UART driver */ |
174 | 175 | ||
175 | set_bit(HCI_RUNNING, &hdev->flags); | 176 | set_bit(HCI_RUNNING, &hdev->flags); |
177 | |||
176 | return 0; | 178 | return 0; |
177 | } | 179 | } |
178 | 180 | ||
@@ -234,6 +236,7 @@ static int hci_uart_send_frame(struct sk_buff *skb) | |||
234 | hu->proto->enqueue(hu, skb); | 236 | hu->proto->enqueue(hu, skb); |
235 | 237 | ||
236 | hci_uart_tx_wakeup(hu); | 238 | hci_uart_tx_wakeup(hu); |
239 | |||
237 | return 0; | 240 | return 0; |
238 | } | 241 | } |
239 | 242 | ||
@@ -241,7 +244,8 @@ static void hci_uart_destruct(struct hci_dev *hdev) | |||
241 | { | 244 | { |
242 | struct hci_uart *hu; | 245 | struct hci_uart *hu; |
243 | 246 | ||
244 | if (!hdev) return; | 247 | if (!hdev) |
248 | return; | ||
245 | 249 | ||
246 | BT_DBG("%s", hdev->name); | 250 | BT_DBG("%s", hdev->name); |
247 | 251 | ||
@@ -272,6 +276,7 @@ static int hci_uart_tty_open(struct tty_struct *tty) | |||
272 | BT_ERR("Can't allocate controll structure"); | 276 | BT_ERR("Can't allocate controll structure"); |
273 | return -ENFILE; | 277 | return -ENFILE; |
274 | } | 278 | } |
279 | |||
275 | memset(hu, 0, sizeof(struct hci_uart)); | 280 | memset(hu, 0, sizeof(struct hci_uart)); |
276 | 281 | ||
277 | tty->disc_data = hu; | 282 | tty->disc_data = hu; |
@@ -280,8 +285,10 @@ static int hci_uart_tty_open(struct tty_struct *tty) | |||
280 | spin_lock_init(&hu->rx_lock); | 285 | spin_lock_init(&hu->rx_lock); |
281 | 286 | ||
282 | /* Flush any pending characters in the driver and line discipline. */ | 287 | /* Flush any pending characters in the driver and line discipline. */ |
288 | |||
283 | /* FIXME: why is this needed. Note don't use ldisc_ref here as the | 289 | /* FIXME: why is this needed. Note don't use ldisc_ref here as the |
284 | open path is before the ldisc is referencable */ | 290 | open path is before the ldisc is referencable */ |
291 | |||
285 | if (tty->ldisc.flush_buffer) | 292 | if (tty->ldisc.flush_buffer) |
286 | tty->ldisc.flush_buffer(tty); | 293 | tty->ldisc.flush_buffer(tty); |
287 | 294 | ||
@@ -372,13 +379,13 @@ static int hci_uart_tty_room (struct tty_struct *tty) | |||
372 | static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count) | 379 | static void hci_uart_tty_receive(struct tty_struct *tty, const __u8 *data, char *flags, int count) |
373 | { | 380 | { |
374 | struct hci_uart *hu = (void *)tty->disc_data; | 381 | struct hci_uart *hu = (void *)tty->disc_data; |
375 | 382 | ||
376 | if (!hu || tty != hu->tty) | 383 | if (!hu || tty != hu->tty) |
377 | return; | 384 | return; |
378 | 385 | ||
379 | if (!test_bit(HCI_UART_PROTO_SET, &hu->flags)) | 386 | if (!test_bit(HCI_UART_PROTO_SET, &hu->flags)) |
380 | return; | 387 | return; |
381 | 388 | ||
382 | spin_lock(&hu->rx_lock); | 389 | spin_lock(&hu->rx_lock); |
383 | hu->proto->recv(hu, (void *) data, count); | 390 | hu->proto->recv(hu, (void *) data, count); |
384 | hu->hdev->stat.byte_rx += count; | 391 | hu->hdev->stat.byte_rx += count; |
@@ -429,8 +436,8 @@ static int hci_uart_register_dev(struct hci_uart *hu) | |||
429 | static int hci_uart_set_proto(struct hci_uart *hu, int id) | 436 | static int hci_uart_set_proto(struct hci_uart *hu, int id) |
430 | { | 437 | { |
431 | struct hci_uart_proto *p; | 438 | struct hci_uart_proto *p; |
432 | int err; | 439 | int err; |
433 | 440 | ||
434 | p = hci_uart_get_proto(id); | 441 | p = hci_uart_get_proto(id); |
435 | if (!p) | 442 | if (!p) |
436 | return -EPROTONOSUPPORT; | 443 | return -EPROTONOSUPPORT; |
@@ -446,6 +453,7 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id) | |||
446 | p->close(hu); | 453 | p->close(hu); |
447 | return err; | 454 | return err; |
448 | } | 455 | } |
456 | |||
449 | return 0; | 457 | return 0; |
450 | } | 458 | } |
451 | 459 | ||
@@ -463,7 +471,7 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id) | |||
463 | * Return Value: Command dependent | 471 | * Return Value: Command dependent |
464 | */ | 472 | */ |
465 | static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file, | 473 | static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file, |
466 | unsigned int cmd, unsigned long arg) | 474 | unsigned int cmd, unsigned long arg) |
467 | { | 475 | { |
468 | struct hci_uart *hu = (void *)tty->disc_data; | 476 | struct hci_uart *hu = (void *)tty->disc_data; |
469 | int err = 0; | 477 | int err = 0; |
@@ -483,14 +491,14 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file, | |||
483 | return err; | 491 | return err; |
484 | } | 492 | } |
485 | tty->low_latency = 1; | 493 | tty->low_latency = 1; |
486 | } else | 494 | } else |
487 | return -EBUSY; | 495 | return -EBUSY; |
488 | 496 | ||
489 | case HCIUARTGETPROTO: | 497 | case HCIUARTGETPROTO: |
490 | if (test_bit(HCI_UART_PROTO_SET, &hu->flags)) | 498 | if (test_bit(HCI_UART_PROTO_SET, &hu->flags)) |
491 | return hu->proto->id; | 499 | return hu->proto->id; |
492 | return -EUNATCH; | 500 | return -EUNATCH; |
493 | 501 | ||
494 | default: | 502 | default: |
495 | err = n_tty_ioctl(tty, file, cmd, arg); | 503 | err = n_tty_ioctl(tty, file, cmd, arg); |
496 | break; | 504 | break; |
@@ -502,28 +510,24 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file * file, | |||
502 | /* | 510 | /* |
503 | * We don't provide read/write/poll interface for user space. | 511 | * We don't provide read/write/poll interface for user space. |
504 | */ | 512 | */ |
505 | static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, unsigned char __user *buf, size_t nr) | 513 | static ssize_t hci_uart_tty_read(struct tty_struct *tty, struct file *file, |
514 | unsigned char __user *buf, size_t nr) | ||
506 | { | 515 | { |
507 | return 0; | 516 | return 0; |
508 | } | 517 | } |
509 | static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *data, size_t count) | 518 | |
519 | static ssize_t hci_uart_tty_write(struct tty_struct *tty, struct file *file, | ||
520 | const unsigned char *data, size_t count) | ||
510 | { | 521 | { |
511 | return 0; | 522 | return 0; |
512 | } | 523 | } |
513 | static unsigned int hci_uart_tty_poll(struct tty_struct *tty, struct file *filp, poll_table *wait) | 524 | |
525 | static unsigned int hci_uart_tty_poll(struct tty_struct *tty, | ||
526 | struct file *filp, poll_table *wait) | ||
514 | { | 527 | { |
515 | return 0; | 528 | return 0; |
516 | } | 529 | } |
517 | 530 | ||
518 | #ifdef CONFIG_BT_HCIUART_H4 | ||
519 | int h4_init(void); | ||
520 | int h4_deinit(void); | ||
521 | #endif | ||
522 | #ifdef CONFIG_BT_HCIUART_BCSP | ||
523 | int bcsp_init(void); | ||
524 | int bcsp_deinit(void); | ||
525 | #endif | ||
526 | |||
527 | static int __init hci_uart_init(void) | 531 | static int __init hci_uart_init(void) |
528 | { | 532 | { |
529 | static struct tty_ldisc hci_uart_ldisc; | 533 | static struct tty_ldisc hci_uart_ldisc; |
@@ -534,18 +538,18 @@ static int __init hci_uart_init(void) | |||
534 | /* Register the tty discipline */ | 538 | /* Register the tty discipline */ |
535 | 539 | ||
536 | memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc)); | 540 | memset(&hci_uart_ldisc, 0, sizeof (hci_uart_ldisc)); |
537 | hci_uart_ldisc.magic = TTY_LDISC_MAGIC; | 541 | hci_uart_ldisc.magic = TTY_LDISC_MAGIC; |
538 | hci_uart_ldisc.name = "n_hci"; | 542 | hci_uart_ldisc.name = "n_hci"; |
539 | hci_uart_ldisc.open = hci_uart_tty_open; | 543 | hci_uart_ldisc.open = hci_uart_tty_open; |
540 | hci_uart_ldisc.close = hci_uart_tty_close; | 544 | hci_uart_ldisc.close = hci_uart_tty_close; |
541 | hci_uart_ldisc.read = hci_uart_tty_read; | 545 | hci_uart_ldisc.read = hci_uart_tty_read; |
542 | hci_uart_ldisc.write = hci_uart_tty_write; | 546 | hci_uart_ldisc.write = hci_uart_tty_write; |
543 | hci_uart_ldisc.ioctl = hci_uart_tty_ioctl; | 547 | hci_uart_ldisc.ioctl = hci_uart_tty_ioctl; |
544 | hci_uart_ldisc.poll = hci_uart_tty_poll; | 548 | hci_uart_ldisc.poll = hci_uart_tty_poll; |
545 | hci_uart_ldisc.receive_room= hci_uart_tty_room; | 549 | hci_uart_ldisc.receive_room = hci_uart_tty_room; |
546 | hci_uart_ldisc.receive_buf = hci_uart_tty_receive; | 550 | hci_uart_ldisc.receive_buf = hci_uart_tty_receive; |
547 | hci_uart_ldisc.write_wakeup= hci_uart_tty_wakeup; | 551 | hci_uart_ldisc.write_wakeup = hci_uart_tty_wakeup; |
548 | hci_uart_ldisc.owner = THIS_MODULE; | 552 | hci_uart_ldisc.owner = THIS_MODULE; |
549 | 553 | ||
550 | if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) { | 554 | if ((err = tty_register_ldisc(N_HCI, &hci_uart_ldisc))) { |
551 | BT_ERR("HCI line discipline registration failed. (%d)", err); | 555 | BT_ERR("HCI line discipline registration failed. (%d)", err); |
diff --git a/drivers/bluetooth/hci_uart.h b/drivers/bluetooth/hci_uart.h index 0a57d72790ec..b250e6789dee 100644 --- a/drivers/bluetooth/hci_uart.h +++ b/drivers/bluetooth/hci_uart.h | |||
@@ -1,32 +1,29 @@ | |||
1 | /* | ||
2 | BlueZ - Bluetooth protocol stack for Linux | ||
3 | Copyright (C) 2000-2001 Qualcomm Incorporated | ||
4 | |||
5 | Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> | ||
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 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | |||
20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
22 | SOFTWARE IS DISCLAIMED. | ||
23 | */ | ||
24 | |||
25 | /* | 1 | /* |
26 | * $Id: hci_uart.h,v 1.2 2002/09/09 01:17:32 maxk Exp $ | 2 | * |
3 | * Bluetooth HCI UART driver | ||
4 | * | ||
5 | * Copyright (C) 2000-2001 Qualcomm Incorporated | ||
6 | * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> | ||
7 | * Copyright (C) 2004-2005 Marcel Holtmann <marcel@holtmann.org> | ||
8 | * | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License | ||
21 | * along with this program; if not, write to the Free Software | ||
22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
23 | * | ||
27 | */ | 24 | */ |
28 | 25 | ||
29 | #ifndef N_HCI | 26 | #ifndef N_HCI |
30 | #define N_HCI 15 | 27 | #define N_HCI 15 |
31 | #endif | 28 | #endif |
32 | 29 | ||
@@ -42,7 +39,6 @@ | |||
42 | #define HCI_UART_3WIRE 2 | 39 | #define HCI_UART_3WIRE 2 |
43 | #define HCI_UART_H4DS 3 | 40 | #define HCI_UART_H4DS 3 |
44 | 41 | ||
45 | #ifdef __KERNEL__ | ||
46 | struct hci_uart; | 42 | struct hci_uart; |
47 | 43 | ||
48 | struct hci_uart_proto { | 44 | struct hci_uart_proto { |
@@ -56,27 +52,35 @@ struct hci_uart_proto { | |||
56 | }; | 52 | }; |
57 | 53 | ||
58 | struct hci_uart { | 54 | struct hci_uart { |
59 | struct tty_struct *tty; | 55 | struct tty_struct *tty; |
60 | struct hci_dev *hdev; | 56 | struct hci_dev *hdev; |
61 | unsigned long flags; | 57 | unsigned long flags; |
62 | 58 | ||
63 | struct hci_uart_proto *proto; | 59 | struct hci_uart_proto *proto; |
64 | void *priv; | 60 | void *priv; |
65 | 61 | ||
66 | struct sk_buff *tx_skb; | 62 | struct sk_buff *tx_skb; |
67 | unsigned long tx_state; | 63 | unsigned long tx_state; |
68 | spinlock_t rx_lock; | 64 | spinlock_t rx_lock; |
69 | }; | 65 | }; |
70 | 66 | ||
71 | /* HCI_UART flag bits */ | 67 | /* HCI_UART flag bits */ |
72 | #define HCI_UART_PROTO_SET 0 | 68 | #define HCI_UART_PROTO_SET 0 |
73 | 69 | ||
74 | /* TX states */ | 70 | /* TX states */ |
75 | #define HCI_UART_SENDING 1 | 71 | #define HCI_UART_SENDING 1 |
76 | #define HCI_UART_TX_WAKEUP 2 | 72 | #define HCI_UART_TX_WAKEUP 2 |
77 | 73 | ||
78 | int hci_uart_register_proto(struct hci_uart_proto *p); | 74 | int hci_uart_register_proto(struct hci_uart_proto *p); |
79 | int hci_uart_unregister_proto(struct hci_uart_proto *p); | 75 | int hci_uart_unregister_proto(struct hci_uart_proto *p); |
80 | int hci_uart_tx_wakeup(struct hci_uart *hu); | 76 | int hci_uart_tx_wakeup(struct hci_uart *hu); |
81 | 77 | ||
82 | #endif /* __KERNEL__ */ | 78 | #ifdef CONFIG_BT_HCIUART_H4 |
79 | int h4_init(void); | ||
80 | int h4_deinit(void); | ||
81 | #endif | ||
82 | |||
83 | #ifdef CONFIG_BT_HCIUART_BCSP | ||
84 | int bcsp_init(void); | ||
85 | int bcsp_deinit(void); | ||
86 | #endif | ||
diff --git a/drivers/input/keyboard/hil_kbd.c b/drivers/input/keyboard/hil_kbd.c index ef78bffed5e7..0a90962c38e7 100644 --- a/drivers/input/keyboard/hil_kbd.c +++ b/drivers/input/keyboard/hil_kbd.c | |||
@@ -204,7 +204,7 @@ static irqreturn_t hil_kbd_interrupt(struct serio *serio, | |||
204 | hil_packet packet; | 204 | hil_packet packet; |
205 | int idx; | 205 | int idx; |
206 | 206 | ||
207 | kbd = (struct hil_kbd *)serio->private; | 207 | kbd = serio_get_drvdata(serio); |
208 | if (kbd == NULL) { | 208 | if (kbd == NULL) { |
209 | BUG(); | 209 | BUG(); |
210 | return IRQ_HANDLED; | 210 | return IRQ_HANDLED; |
@@ -234,7 +234,7 @@ static void hil_kbd_disconnect(struct serio *serio) | |||
234 | { | 234 | { |
235 | struct hil_kbd *kbd; | 235 | struct hil_kbd *kbd; |
236 | 236 | ||
237 | kbd = (struct hil_kbd *)serio->private; | 237 | kbd = serio_get_drvdata(serio); |
238 | if (kbd == NULL) { | 238 | if (kbd == NULL) { |
239 | BUG(); | 239 | BUG(); |
240 | return; | 240 | return; |
@@ -245,20 +245,20 @@ static void hil_kbd_disconnect(struct serio *serio) | |||
245 | kfree(kbd); | 245 | kfree(kbd); |
246 | } | 246 | } |
247 | 247 | ||
248 | static void hil_kbd_connect(struct serio *serio, struct serio_driver *drv) | 248 | static int hil_kbd_connect(struct serio *serio, struct serio_driver *drv) |
249 | { | 249 | { |
250 | struct hil_kbd *kbd; | 250 | struct hil_kbd *kbd; |
251 | uint8_t did, *idd; | 251 | uint8_t did, *idd; |
252 | int i; | 252 | int i; |
253 | 253 | ||
254 | if (serio->type != (SERIO_HIL_MLC | SERIO_HIL)) return; | 254 | kbd = kmalloc(sizeof(*kbd), GFP_KERNEL); |
255 | 255 | if (!kbd) | |
256 | if (!(kbd = kmalloc(sizeof(struct hil_kbd), GFP_KERNEL))) return; | 256 | return -ENOMEM; |
257 | memset(kbd, 0, sizeof(struct hil_kbd)); | 257 | memset(kbd, 0, sizeof(struct hil_kbd)); |
258 | 258 | ||
259 | if (serio_open(serio, drv)) goto bail0; | 259 | if (serio_open(serio, drv)) goto bail0; |
260 | 260 | ||
261 | serio->private = kbd; | 261 | serio_set_drvdata(serio, kbd); |
262 | kbd->serio = serio; | 262 | kbd->serio = serio; |
263 | kbd->dev.private = kbd; | 263 | kbd->dev.private = kbd; |
264 | 264 | ||
@@ -342,19 +342,31 @@ static void hil_kbd_connect(struct serio *serio, struct serio_driver *drv) | |||
342 | down(&(kbd->sem)); | 342 | down(&(kbd->sem)); |
343 | up(&(kbd->sem)); | 343 | up(&(kbd->sem)); |
344 | 344 | ||
345 | return; | 345 | return 0; |
346 | bail1: | 346 | bail1: |
347 | serio_close(serio); | 347 | serio_close(serio); |
348 | bail0: | 348 | bail0: |
349 | kfree(kbd); | 349 | kfree(kbd); |
350 | serio_set_drvdata(serio, NULL); | ||
351 | return -EIO; | ||
350 | } | 352 | } |
351 | 353 | ||
354 | static struct serio_device_id hil_kbd_ids[] = { | ||
355 | { | ||
356 | .type = SERIO_HIL_MLC, | ||
357 | .proto = SERIO_HIL, | ||
358 | .id = SERIO_ANY, | ||
359 | .extra = SERIO_ANY, | ||
360 | }, | ||
361 | { 0 } | ||
362 | }; | ||
352 | 363 | ||
353 | struct serio_driver hil_kbd_serio_drv = { | 364 | struct serio_driver hil_kbd_serio_drv = { |
354 | .driver = { | 365 | .driver = { |
355 | .name = "hil_kbd", | 366 | .name = "hil_kbd", |
356 | }, | 367 | }, |
357 | .description = "HP HIL keyboard driver", | 368 | .description = "HP HIL keyboard driver", |
369 | .id_table = hil_kbd_ids, | ||
358 | .connect = hil_kbd_connect, | 370 | .connect = hil_kbd_connect, |
359 | .disconnect = hil_kbd_disconnect, | 371 | .disconnect = hil_kbd_disconnect, |
360 | .interrupt = hil_kbd_interrupt | 372 | .interrupt = hil_kbd_interrupt |
diff --git a/drivers/input/keyboard/hilkbd.c b/drivers/input/keyboard/hilkbd.c index eecb77db0847..e95bc052e32a 100644 --- a/drivers/input/keyboard/hilkbd.c +++ b/drivers/input/keyboard/hilkbd.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <linux/errno.h> | 22 | #include <linux/errno.h> |
23 | #include <linux/input.h> | 23 | #include <linux/input.h> |
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/irq.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/hil.h> | 26 | #include <linux/hil.h> |
27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
28 | 28 | ||
@@ -278,11 +278,11 @@ static int __init | |||
278 | hil_init_chip(struct parisc_device *dev) | 278 | hil_init_chip(struct parisc_device *dev) |
279 | { | 279 | { |
280 | if (!dev->irq) { | 280 | if (!dev->irq) { |
281 | printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%08lx\n", dev->hpa); | 281 | printk(KERN_WARNING "HIL: IRQ not found for HIL bus at 0x%08lx\n", dev->hpa.start); |
282 | return -ENODEV; | 282 | return -ENODEV; |
283 | } | 283 | } |
284 | 284 | ||
285 | hil_base = dev->hpa; | 285 | hil_base = dev->hpa.start; |
286 | hil_irq = dev->irq; | 286 | hil_irq = dev->irq; |
287 | hil_dev.dev_id = dev; | 287 | hil_dev.dev_id = dev; |
288 | 288 | ||
@@ -299,7 +299,7 @@ static struct parisc_device_id hil_tbl[] = { | |||
299 | MODULE_DEVICE_TABLE(parisc, hil_tbl); | 299 | MODULE_DEVICE_TABLE(parisc, hil_tbl); |
300 | 300 | ||
301 | static struct parisc_driver hil_driver = { | 301 | static struct parisc_driver hil_driver = { |
302 | .name = "HIL", | 302 | .name = "hil", |
303 | .id_table = hil_tbl, | 303 | .id_table = hil_tbl, |
304 | .probe = hil_init_chip, | 304 | .probe = hil_init_chip, |
305 | }; | 305 | }; |
diff --git a/drivers/input/mouse/hil_ptr.c b/drivers/input/mouse/hil_ptr.c index bc22849c6c79..c2bf2ed07dc6 100644 --- a/drivers/input/mouse/hil_ptr.c +++ b/drivers/input/mouse/hil_ptr.c | |||
@@ -196,7 +196,7 @@ static irqreturn_t hil_ptr_interrupt(struct serio *serio, | |||
196 | hil_packet packet; | 196 | hil_packet packet; |
197 | int idx; | 197 | int idx; |
198 | 198 | ||
199 | ptr = (struct hil_ptr *)serio->private; | 199 | ptr = serio_get_drvdata(serio); |
200 | if (ptr == NULL) { | 200 | if (ptr == NULL) { |
201 | BUG(); | 201 | BUG(); |
202 | return IRQ_HANDLED; | 202 | return IRQ_HANDLED; |
@@ -227,7 +227,7 @@ static void hil_ptr_disconnect(struct serio *serio) | |||
227 | { | 227 | { |
228 | struct hil_ptr *ptr; | 228 | struct hil_ptr *ptr; |
229 | 229 | ||
230 | ptr = (struct hil_ptr *)serio->private; | 230 | ptr = serio_get_drvdata(serio); |
231 | if (ptr == NULL) { | 231 | if (ptr == NULL) { |
232 | BUG(); | 232 | BUG(); |
233 | return; | 233 | return; |
@@ -238,21 +238,19 @@ static void hil_ptr_disconnect(struct serio *serio) | |||
238 | kfree(ptr); | 238 | kfree(ptr); |
239 | } | 239 | } |
240 | 240 | ||
241 | static void hil_ptr_connect(struct serio *serio, struct serio_driver *driver) | 241 | static int hil_ptr_connect(struct serio *serio, struct serio_driver *driver) |
242 | { | 242 | { |
243 | struct hil_ptr *ptr; | 243 | struct hil_ptr *ptr; |
244 | char *txt; | 244 | char *txt; |
245 | unsigned int i, naxsets, btntype; | 245 | unsigned int i, naxsets, btntype; |
246 | uint8_t did, *idd; | 246 | uint8_t did, *idd; |
247 | 247 | ||
248 | if (serio->type != (SERIO_HIL_MLC | SERIO_HIL)) return; | 248 | if (!(ptr = kmalloc(sizeof(struct hil_ptr), GFP_KERNEL))) return -ENOMEM; |
249 | |||
250 | if (!(ptr = kmalloc(sizeof(struct hil_ptr), GFP_KERNEL))) return; | ||
251 | memset(ptr, 0, sizeof(struct hil_ptr)); | 249 | memset(ptr, 0, sizeof(struct hil_ptr)); |
252 | 250 | ||
253 | if (serio_open(serio, driver)) goto bail0; | 251 | if (serio_open(serio, driver)) goto bail0; |
254 | 252 | ||
255 | serio->private = ptr; | 253 | serio_set_drvdata(serio, ptr); |
256 | ptr->serio = serio; | 254 | ptr->serio = serio; |
257 | ptr->dev.private = ptr; | 255 | ptr->dev.private = ptr; |
258 | 256 | ||
@@ -380,23 +378,34 @@ static void hil_ptr_connect(struct serio *serio, struct serio_driver *driver) | |||
380 | (btntype == BTN_MOUSE) ? "HIL mouse":"HIL tablet or touchpad", | 378 | (btntype == BTN_MOUSE) ? "HIL mouse":"HIL tablet or touchpad", |
381 | did); | 379 | did); |
382 | 380 | ||
383 | return; | 381 | return 0; |
384 | bail1: | 382 | bail1: |
385 | serio_close(serio); | 383 | serio_close(serio); |
386 | bail0: | 384 | bail0: |
387 | kfree(ptr); | 385 | kfree(ptr); |
388 | return; | 386 | serio_set_drvdata(serio, NULL); |
387 | return -ENODEV; | ||
389 | } | 388 | } |
390 | 389 | ||
390 | static struct serio_device_id hil_ptr_ids[] = { | ||
391 | { | ||
392 | .type = SERIO_HIL_MLC, | ||
393 | .proto = SERIO_HIL, | ||
394 | .id = SERIO_ANY, | ||
395 | .extra = SERIO_ANY, | ||
396 | }, | ||
397 | { 0 } | ||
398 | }; | ||
391 | 399 | ||
392 | static struct serio_driver hil_ptr_serio_driver = { | 400 | static struct serio_driver hil_ptr_serio_driver = { |
393 | .driver = { | 401 | .driver = { |
394 | .name = "hil_ptr", | 402 | .name = "hil_ptr", |
395 | }, | 403 | }, |
396 | .description = "HP HIL mouse/tablet driver", | 404 | .description = "HP HIL mouse/tablet driver", |
397 | .connect = hil_ptr_connect, | 405 | .id_table = hil_ptr_ids, |
398 | .disconnect = hil_ptr_disconnect, | 406 | .connect = hil_ptr_connect, |
399 | .interrupt = hil_ptr_interrupt | 407 | .disconnect = hil_ptr_disconnect, |
408 | .interrupt = hil_ptr_interrupt | ||
400 | }; | 409 | }; |
401 | 410 | ||
402 | static int __init hil_ptr_init(void) | 411 | static int __init hil_ptr_init(void) |
diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c index 897e4c12b642..a7b0de0f92b2 100644 --- a/drivers/input/serio/gscps2.c +++ b/drivers/input/serio/gscps2.c | |||
@@ -211,9 +211,6 @@ static void gscps2_reset(struct gscps2port *ps2port) | |||
211 | writeb(0xff, addr+GSC_RESET); | 211 | writeb(0xff, addr+GSC_RESET); |
212 | gscps2_flush(ps2port); | 212 | gscps2_flush(ps2port); |
213 | spin_unlock_irqrestore(&ps2port->lock, flags); | 213 | spin_unlock_irqrestore(&ps2port->lock, flags); |
214 | |||
215 | /* enable it */ | ||
216 | gscps2_enable(ps2port, ENABLE); | ||
217 | } | 214 | } |
218 | 215 | ||
219 | static LIST_HEAD(ps2port_list); | 216 | static LIST_HEAD(ps2port_list); |
@@ -307,6 +304,9 @@ static int gscps2_open(struct serio *port) | |||
307 | 304 | ||
308 | gscps2_reset(ps2port); | 305 | gscps2_reset(ps2port); |
309 | 306 | ||
307 | /* enable it */ | ||
308 | gscps2_enable(ps2port, ENABLE); | ||
309 | |||
310 | gscps2_interrupt(0, NULL, NULL); | 310 | gscps2_interrupt(0, NULL, NULL); |
311 | 311 | ||
312 | return 0; | 312 | return 0; |
@@ -331,7 +331,7 @@ static int __init gscps2_probe(struct parisc_device *dev) | |||
331 | { | 331 | { |
332 | struct gscps2port *ps2port; | 332 | struct gscps2port *ps2port; |
333 | struct serio *serio; | 333 | struct serio *serio; |
334 | unsigned long hpa = dev->hpa; | 334 | unsigned long hpa = dev->hpa.start; |
335 | int ret; | 335 | int ret; |
336 | 336 | ||
337 | if (!dev->irq) | 337 | if (!dev->irq) |
@@ -370,8 +370,6 @@ static int __init gscps2_probe(struct parisc_device *dev) | |||
370 | serio->port_data = ps2port; | 370 | serio->port_data = ps2port; |
371 | serio->dev.parent = &dev->dev; | 371 | serio->dev.parent = &dev->dev; |
372 | 372 | ||
373 | list_add_tail(&ps2port->node, &ps2port_list); | ||
374 | |||
375 | ret = -EBUSY; | 373 | ret = -EBUSY; |
376 | if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port)) | 374 | if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port)) |
377 | goto fail_miserably; | 375 | goto fail_miserably; |
@@ -396,15 +394,16 @@ static int __init gscps2_probe(struct parisc_device *dev) | |||
396 | 394 | ||
397 | serio_register_port(ps2port->port); | 395 | serio_register_port(ps2port->port); |
398 | 396 | ||
397 | list_add_tail(&ps2port->node, &ps2port_list); | ||
398 | |||
399 | return 0; | 399 | return 0; |
400 | 400 | ||
401 | fail: | 401 | fail: |
402 | free_irq(dev->irq, ps2port); | 402 | free_irq(dev->irq, ps2port); |
403 | 403 | ||
404 | fail_miserably: | 404 | fail_miserably: |
405 | list_del(&ps2port->node); | ||
406 | iounmap(ps2port->addr); | 405 | iounmap(ps2port->addr); |
407 | release_mem_region(dev->hpa, GSC_STATUS + 4); | 406 | release_mem_region(dev->hpa.start, GSC_STATUS + 4); |
408 | 407 | ||
409 | fail_nomem: | 408 | fail_nomem: |
410 | kfree(ps2port); | 409 | kfree(ps2port); |
@@ -444,7 +443,7 @@ static struct parisc_device_id gscps2_device_tbl[] = { | |||
444 | }; | 443 | }; |
445 | 444 | ||
446 | static struct parisc_driver parisc_ps2_driver = { | 445 | static struct parisc_driver parisc_ps2_driver = { |
447 | .name = "GSC PS2", | 446 | .name = "gsc_ps2", |
448 | .id_table = gscps2_device_tbl, | 447 | .id_table = gscps2_device_tbl, |
449 | .probe = gscps2_probe, | 448 | .probe = gscps2_probe, |
450 | .remove = gscps2_remove, | 449 | .remove = gscps2_remove, |
diff --git a/drivers/input/serio/hil_mlc.c b/drivers/input/serio/hil_mlc.c index c243cb6fdfc4..5704204964a3 100644 --- a/drivers/input/serio/hil_mlc.c +++ b/drivers/input/serio/hil_mlc.c | |||
@@ -801,7 +801,8 @@ static int hil_mlc_serio_open(struct serio *serio) { | |||
801 | struct hil_mlc_serio_map *map; | 801 | struct hil_mlc_serio_map *map; |
802 | struct hil_mlc *mlc; | 802 | struct hil_mlc *mlc; |
803 | 803 | ||
804 | if (serio->private != NULL) return -EBUSY; | 804 | if (serio_get_drvdata(serio) != NULL) |
805 | return -EBUSY; | ||
805 | 806 | ||
806 | map = serio->port_data; | 807 | map = serio->port_data; |
807 | if (map == NULL) { | 808 | if (map == NULL) { |
@@ -832,11 +833,18 @@ static void hil_mlc_serio_close(struct serio *serio) { | |||
832 | return; | 833 | return; |
833 | } | 834 | } |
834 | 835 | ||
835 | serio->private = NULL; | 836 | serio_set_drvdata(serio, NULL); |
836 | serio->drv = NULL; | 837 | serio->drv = NULL; |
837 | /* TODO wake up interruptable */ | 838 | /* TODO wake up interruptable */ |
838 | } | 839 | } |
839 | 840 | ||
841 | static struct serio_device_id hil_mlc_serio_id = { | ||
842 | .type = SERIO_HIL_MLC, | ||
843 | .proto = SERIO_HIL, | ||
844 | .extra = SERIO_ANY, | ||
845 | .id = SERIO_ANY, | ||
846 | }; | ||
847 | |||
840 | int hil_mlc_register(hil_mlc *mlc) { | 848 | int hil_mlc_register(hil_mlc *mlc) { |
841 | int i; | 849 | int i; |
842 | unsigned long flags; | 850 | unsigned long flags; |
@@ -867,7 +875,7 @@ int hil_mlc_register(hil_mlc *mlc) { | |||
867 | mlc_serio = kmalloc(sizeof(*mlc_serio), GFP_KERNEL); | 875 | mlc_serio = kmalloc(sizeof(*mlc_serio), GFP_KERNEL); |
868 | mlc->serio[i] = mlc_serio; | 876 | mlc->serio[i] = mlc_serio; |
869 | memset(mlc_serio, 0, sizeof(*mlc_serio)); | 877 | memset(mlc_serio, 0, sizeof(*mlc_serio)); |
870 | mlc_serio->type = SERIO_HIL | SERIO_HIL_MLC; | 878 | mlc_serio->id = hil_mlc_serio_id; |
871 | mlc_serio->write = hil_mlc_serio_write; | 879 | mlc_serio->write = hil_mlc_serio_write; |
872 | mlc_serio->open = hil_mlc_serio_open; | 880 | mlc_serio->open = hil_mlc_serio_open; |
873 | mlc_serio->close = hil_mlc_serio_close; | 881 | mlc_serio->close = hil_mlc_serio_close; |
diff --git a/drivers/input/serio/hp_sdc.c b/drivers/input/serio/hp_sdc.c index 7629452dd64b..a10348bb25e9 100644 --- a/drivers/input/serio/hp_sdc.c +++ b/drivers/input/serio/hp_sdc.c | |||
@@ -764,7 +764,7 @@ MODULE_DEVICE_TABLE(parisc, hp_sdc_tbl); | |||
764 | static int __init hp_sdc_init_hppa(struct parisc_device *d); | 764 | static int __init hp_sdc_init_hppa(struct parisc_device *d); |
765 | 765 | ||
766 | static struct parisc_driver hp_sdc_driver = { | 766 | static struct parisc_driver hp_sdc_driver = { |
767 | .name = "HP SDC", | 767 | .name = "hp_sdc", |
768 | .id_table = hp_sdc_tbl, | 768 | .id_table = hp_sdc_tbl, |
769 | .probe = hp_sdc_init_hppa, | 769 | .probe = hp_sdc_init_hppa, |
770 | }; | 770 | }; |
@@ -875,9 +875,9 @@ static int __init hp_sdc_init_hppa(struct parisc_device *d) | |||
875 | hp_sdc.dev = d; | 875 | hp_sdc.dev = d; |
876 | hp_sdc.irq = d->irq; | 876 | hp_sdc.irq = d->irq; |
877 | hp_sdc.nmi = d->aux_irq; | 877 | hp_sdc.nmi = d->aux_irq; |
878 | hp_sdc.base_io = d->hpa; | 878 | hp_sdc.base_io = d->hpa.start; |
879 | hp_sdc.data_io = d->hpa + 0x800; | 879 | hp_sdc.data_io = d->hpa.start + 0x800; |
880 | hp_sdc.status_io = d->hpa + 0x801; | 880 | hp_sdc.status_io = d->hpa.start + 0x801; |
881 | 881 | ||
882 | return hp_sdc_init(); | 882 | return hp_sdc_init(); |
883 | } | 883 | } |
diff --git a/drivers/net/lasi_82596.c b/drivers/net/lasi_82596.c index 41bad07ac1ac..f7b7238d8352 100644 --- a/drivers/net/lasi_82596.c +++ b/drivers/net/lasi_82596.c | |||
@@ -415,6 +415,10 @@ static int rx_ring_size = RX_RING_SIZE; | |||
415 | static int ticks_limit = 100; | 415 | static int ticks_limit = 100; |
416 | static int max_cmd_backlog = TX_RING_SIZE-1; | 416 | static int max_cmd_backlog = TX_RING_SIZE-1; |
417 | 417 | ||
418 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
419 | static void i596_poll_controller(struct net_device *dev); | ||
420 | #endif | ||
421 | |||
418 | 422 | ||
419 | static inline void CA(struct net_device *dev) | 423 | static inline void CA(struct net_device *dev) |
420 | { | 424 | { |
@@ -636,11 +640,11 @@ static int init_i596_mem(struct net_device *dev) | |||
636 | 640 | ||
637 | disable_irq(dev->irq); /* disable IRQs from LAN */ | 641 | disable_irq(dev->irq); /* disable IRQs from LAN */ |
638 | DEB(DEB_INIT, | 642 | DEB(DEB_INIT, |
639 | printk("RESET 82596 port: %p (with IRQ %d disabled)\n", | 643 | printk("RESET 82596 port: %lx (with IRQ %d disabled)\n", |
640 | (void*)(dev->base_addr + PA_I82596_RESET), | 644 | (dev->base_addr + PA_I82596_RESET), |
641 | dev->irq)); | 645 | dev->irq)); |
642 | 646 | ||
643 | gsc_writel(0, (void*)(dev->base_addr + PA_I82596_RESET)); /* Hard Reset */ | 647 | gsc_writel(0, (dev->base_addr + PA_I82596_RESET)); /* Hard Reset */ |
644 | udelay(100); /* Wait 100us - seems to help */ | 648 | udelay(100); /* Wait 100us - seems to help */ |
645 | 649 | ||
646 | /* change the scp address */ | 650 | /* change the scp address */ |
@@ -1209,6 +1213,9 @@ static int __devinit i82596_probe(struct net_device *dev, | |||
1209 | dev->set_multicast_list = set_multicast_list; | 1213 | dev->set_multicast_list = set_multicast_list; |
1210 | dev->tx_timeout = i596_tx_timeout; | 1214 | dev->tx_timeout = i596_tx_timeout; |
1211 | dev->watchdog_timeo = TX_TIMEOUT; | 1215 | dev->watchdog_timeo = TX_TIMEOUT; |
1216 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
1217 | dev->poll_controller = i596_poll_controller; | ||
1218 | #endif | ||
1212 | 1219 | ||
1213 | dev->priv = (void *)(dev->mem_start); | 1220 | dev->priv = (void *)(dev->mem_start); |
1214 | 1221 | ||
@@ -1242,6 +1249,14 @@ static int __devinit i82596_probe(struct net_device *dev, | |||
1242 | return 0; | 1249 | return 0; |
1243 | } | 1250 | } |
1244 | 1251 | ||
1252 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
1253 | static void i596_poll_controller(struct net_device *dev) | ||
1254 | { | ||
1255 | disable_irq(dev->irq); | ||
1256 | i596_interrupt(dev->irq, dev, NULL); | ||
1257 | enable_irq(dev->irq); | ||
1258 | } | ||
1259 | #endif | ||
1245 | 1260 | ||
1246 | static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 1261 | static irqreturn_t i596_interrupt(int irq, void *dev_id, struct pt_regs *regs) |
1247 | { | 1262 | { |
@@ -1528,17 +1543,18 @@ lan_init_chip(struct parisc_device *dev) | |||
1528 | 1543 | ||
1529 | if (!dev->irq) { | 1544 | if (!dev->irq) { |
1530 | printk(KERN_ERR "%s: IRQ not found for i82596 at 0x%lx\n", | 1545 | printk(KERN_ERR "%s: IRQ not found for i82596 at 0x%lx\n", |
1531 | __FILE__, dev->hpa); | 1546 | __FILE__, dev->hpa.start); |
1532 | return -ENODEV; | 1547 | return -ENODEV; |
1533 | } | 1548 | } |
1534 | 1549 | ||
1535 | printk(KERN_INFO "Found i82596 at 0x%lx, IRQ %d\n", dev->hpa, dev->irq); | 1550 | printk(KERN_INFO "Found i82596 at 0x%lx, IRQ %d\n", dev->hpa.start, |
1551 | dev->irq); | ||
1536 | 1552 | ||
1537 | netdevice = alloc_etherdev(0); | 1553 | netdevice = alloc_etherdev(0); |
1538 | if (!netdevice) | 1554 | if (!netdevice) |
1539 | return -ENOMEM; | 1555 | return -ENOMEM; |
1540 | 1556 | ||
1541 | netdevice->base_addr = dev->hpa; | 1557 | netdevice->base_addr = dev->hpa.start; |
1542 | netdevice->irq = dev->irq; | 1558 | netdevice->irq = dev->irq; |
1543 | 1559 | ||
1544 | retval = i82596_probe(netdevice, &dev->dev); | 1560 | retval = i82596_probe(netdevice, &dev->dev); |
@@ -1566,7 +1582,7 @@ static struct parisc_device_id lan_tbl[] = { | |||
1566 | MODULE_DEVICE_TABLE(parisc, lan_tbl); | 1582 | MODULE_DEVICE_TABLE(parisc, lan_tbl); |
1567 | 1583 | ||
1568 | static struct parisc_driver lan_driver = { | 1584 | static struct parisc_driver lan_driver = { |
1569 | .name = "Apricot", | 1585 | .name = "lasi_82596", |
1570 | .id_table = lan_tbl, | 1586 | .id_table = lan_tbl, |
1571 | .probe = lan_init_chip, | 1587 | .probe = lan_init_chip, |
1572 | }; | 1588 | }; |
diff --git a/drivers/parisc/asp.c b/drivers/parisc/asp.c index 388609967133..558420bc9f88 100644 --- a/drivers/parisc/asp.c +++ b/drivers/parisc/asp.c | |||
@@ -77,12 +77,12 @@ asp_init_chip(struct parisc_device *dev) | |||
77 | struct gsc_irq gsc_irq; | 77 | struct gsc_irq gsc_irq; |
78 | int ret; | 78 | int ret; |
79 | 79 | ||
80 | asp.version = gsc_readb(dev->hpa + ASP_VER_OFFSET) & 0xf; | 80 | asp.version = gsc_readb(dev->hpa.start + ASP_VER_OFFSET) & 0xf; |
81 | asp.name = (asp.version == 1) ? "Asp" : "Cutoff"; | 81 | asp.name = (asp.version == 1) ? "Asp" : "Cutoff"; |
82 | asp.hpa = ASP_INTERRUPT_ADDR; | 82 | asp.hpa = ASP_INTERRUPT_ADDR; |
83 | 83 | ||
84 | printk(KERN_INFO "%s version %d at 0x%lx found.\n", | 84 | printk(KERN_INFO "%s version %d at 0x%lx found.\n", |
85 | asp.name, asp.version, dev->hpa); | 85 | asp.name, asp.version, dev->hpa.start); |
86 | 86 | ||
87 | /* the IRQ ASP should use */ | 87 | /* the IRQ ASP should use */ |
88 | ret = -EBUSY; | 88 | ret = -EBUSY; |
@@ -126,7 +126,7 @@ static struct parisc_device_id asp_tbl[] = { | |||
126 | }; | 126 | }; |
127 | 127 | ||
128 | struct parisc_driver asp_driver = { | 128 | struct parisc_driver asp_driver = { |
129 | .name = "Asp", | 129 | .name = "asp", |
130 | .id_table = asp_tbl, | 130 | .id_table = asp_tbl, |
131 | .probe = asp_init_chip, | 131 | .probe = asp_init_chip, |
132 | }; | 132 | }; |
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c index a3bd91a61827..9e0229f7e25f 100644 --- a/drivers/parisc/ccio-dma.c +++ b/drivers/parisc/ccio-dma.c | |||
@@ -100,9 +100,9 @@ | |||
100 | #define DBG_RUN_SG(x...) | 100 | #define DBG_RUN_SG(x...) |
101 | #endif | 101 | #endif |
102 | 102 | ||
103 | #define CCIO_INLINE /* inline */ | 103 | #define CCIO_INLINE inline |
104 | #define WRITE_U32(value, addr) gsc_writel(value, (u32 *)(addr)) | 104 | #define WRITE_U32(value, addr) __raw_writel(value, addr) |
105 | #define READ_U32(addr) gsc_readl((u32 *)(addr)) | 105 | #define READ_U32(addr) __raw_readl(addr) |
106 | 106 | ||
107 | #define U2_IOA_RUNWAY 0x580 | 107 | #define U2_IOA_RUNWAY 0x580 |
108 | #define U2_BC_GSC 0x501 | 108 | #define U2_BC_GSC 0x501 |
@@ -115,28 +115,28 @@ | |||
115 | 115 | ||
116 | struct ioa_registers { | 116 | struct ioa_registers { |
117 | /* Runway Supervisory Set */ | 117 | /* Runway Supervisory Set */ |
118 | volatile int32_t unused1[12]; | 118 | int32_t unused1[12]; |
119 | volatile uint32_t io_command; /* Offset 12 */ | 119 | uint32_t io_command; /* Offset 12 */ |
120 | volatile uint32_t io_status; /* Offset 13 */ | 120 | uint32_t io_status; /* Offset 13 */ |
121 | volatile uint32_t io_control; /* Offset 14 */ | 121 | uint32_t io_control; /* Offset 14 */ |
122 | volatile int32_t unused2[1]; | 122 | int32_t unused2[1]; |
123 | 123 | ||
124 | /* Runway Auxiliary Register Set */ | 124 | /* Runway Auxiliary Register Set */ |
125 | volatile uint32_t io_err_resp; /* Offset 0 */ | 125 | uint32_t io_err_resp; /* Offset 0 */ |
126 | volatile uint32_t io_err_info; /* Offset 1 */ | 126 | uint32_t io_err_info; /* Offset 1 */ |
127 | volatile uint32_t io_err_req; /* Offset 2 */ | 127 | uint32_t io_err_req; /* Offset 2 */ |
128 | volatile uint32_t io_err_resp_hi; /* Offset 3 */ | 128 | uint32_t io_err_resp_hi; /* Offset 3 */ |
129 | volatile uint32_t io_tlb_entry_m; /* Offset 4 */ | 129 | uint32_t io_tlb_entry_m; /* Offset 4 */ |
130 | volatile uint32_t io_tlb_entry_l; /* Offset 5 */ | 130 | uint32_t io_tlb_entry_l; /* Offset 5 */ |
131 | volatile uint32_t unused3[1]; | 131 | uint32_t unused3[1]; |
132 | volatile uint32_t io_pdir_base; /* Offset 7 */ | 132 | uint32_t io_pdir_base; /* Offset 7 */ |
133 | volatile uint32_t io_io_low_hv; /* Offset 8 */ | 133 | uint32_t io_io_low_hv; /* Offset 8 */ |
134 | volatile uint32_t io_io_high_hv; /* Offset 9 */ | 134 | uint32_t io_io_high_hv; /* Offset 9 */ |
135 | volatile uint32_t unused4[1]; | 135 | uint32_t unused4[1]; |
136 | volatile uint32_t io_chain_id_mask; /* Offset 11 */ | 136 | uint32_t io_chain_id_mask; /* Offset 11 */ |
137 | volatile uint32_t unused5[2]; | 137 | uint32_t unused5[2]; |
138 | volatile uint32_t io_io_low; /* Offset 14 */ | 138 | uint32_t io_io_low; /* Offset 14 */ |
139 | volatile uint32_t io_io_high; /* Offset 15 */ | 139 | uint32_t io_io_high; /* Offset 15 */ |
140 | }; | 140 | }; |
141 | 141 | ||
142 | /* | 142 | /* |
@@ -226,7 +226,7 @@ struct ioa_registers { | |||
226 | */ | 226 | */ |
227 | 227 | ||
228 | struct ioc { | 228 | struct ioc { |
229 | struct ioa_registers *ioc_hpa; /* I/O MMU base address */ | 229 | struct ioa_registers __iomem *ioc_regs; /* I/O MMU base address */ |
230 | u8 *res_map; /* resource map, bit == pdir entry */ | 230 | u8 *res_map; /* resource map, bit == pdir entry */ |
231 | u64 *pdir_base; /* physical base address */ | 231 | u64 *pdir_base; /* physical base address */ |
232 | u32 pdir_size; /* bytes, function of IOV Space size */ | 232 | u32 pdir_size; /* bytes, function of IOV Space size */ |
@@ -595,7 +595,7 @@ ccio_io_pdir_entry(u64 *pdir_ptr, space_t sid, unsigned long vba, | |||
595 | ** Grab virtual index [0:11] | 595 | ** Grab virtual index [0:11] |
596 | ** Deposit virt_idx bits into I/O PDIR word | 596 | ** Deposit virt_idx bits into I/O PDIR word |
597 | */ | 597 | */ |
598 | asm volatile ("lci 0(%%sr1, %1), %0" : "=r" (ci) : "r" (vba)); | 598 | asm volatile ("lci %%r0(%%sr1, %1), %0" : "=r" (ci) : "r" (vba)); |
599 | asm volatile ("extru %1,19,12,%0" : "+r" (ci) : "r" (ci)); | 599 | asm volatile ("extru %1,19,12,%0" : "+r" (ci) : "r" (ci)); |
600 | asm volatile ("depw %1,15,12,%0" : "+r" (pa) : "r" (ci)); | 600 | asm volatile ("depw %1,15,12,%0" : "+r" (pa) : "r" (ci)); |
601 | 601 | ||
@@ -613,7 +613,7 @@ ccio_io_pdir_entry(u64 *pdir_ptr, space_t sid, unsigned long vba, | |||
613 | ** the real mode coherence index generation of U2, the PDIR entry | 613 | ** the real mode coherence index generation of U2, the PDIR entry |
614 | ** must be flushed to memory to retain coherence." | 614 | ** must be flushed to memory to retain coherence." |
615 | */ | 615 | */ |
616 | asm volatile("fdc 0(%0)" : : "r" (pdir_ptr)); | 616 | asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr)); |
617 | asm volatile("sync"); | 617 | asm volatile("sync"); |
618 | } | 618 | } |
619 | 619 | ||
@@ -636,7 +636,7 @@ ccio_clear_io_tlb(struct ioc *ioc, dma_addr_t iovp, size_t byte_cnt) | |||
636 | byte_cnt += chain_size; | 636 | byte_cnt += chain_size; |
637 | 637 | ||
638 | while(byte_cnt > chain_size) { | 638 | while(byte_cnt > chain_size) { |
639 | WRITE_U32(CMD_TLB_PURGE | iovp, &ioc->ioc_hpa->io_command); | 639 | WRITE_U32(CMD_TLB_PURGE | iovp, &ioc->ioc_regs->io_command); |
640 | iovp += chain_size; | 640 | iovp += chain_size; |
641 | byte_cnt -= chain_size; | 641 | byte_cnt -= chain_size; |
642 | } | 642 | } |
@@ -684,7 +684,7 @@ ccio_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt) | |||
684 | ** Hopefully someone figures out how to patch (NOP) the | 684 | ** Hopefully someone figures out how to patch (NOP) the |
685 | ** FDC/SYNC out at boot time. | 685 | ** FDC/SYNC out at boot time. |
686 | */ | 686 | */ |
687 | asm volatile("fdc 0(%0)" : : "r" (pdir_ptr[7])); | 687 | asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr[7])); |
688 | 688 | ||
689 | iovp += IOVP_SIZE; | 689 | iovp += IOVP_SIZE; |
690 | byte_cnt -= IOVP_SIZE; | 690 | byte_cnt -= IOVP_SIZE; |
@@ -1251,7 +1251,7 @@ static struct parisc_device_id ccio_tbl[] = { | |||
1251 | static int ccio_probe(struct parisc_device *dev); | 1251 | static int ccio_probe(struct parisc_device *dev); |
1252 | 1252 | ||
1253 | static struct parisc_driver ccio_driver = { | 1253 | static struct parisc_driver ccio_driver = { |
1254 | .name = "U2:Uturn", | 1254 | .name = "ccio", |
1255 | .id_table = ccio_tbl, | 1255 | .id_table = ccio_tbl, |
1256 | .probe = ccio_probe, | 1256 | .probe = ccio_probe, |
1257 | }; | 1257 | }; |
@@ -1314,14 +1314,13 @@ ccio_ioc_init(struct ioc *ioc) | |||
1314 | 1314 | ||
1315 | ioc->pdir_size = (iova_space_size / IOVP_SIZE) * sizeof(u64); | 1315 | ioc->pdir_size = (iova_space_size / IOVP_SIZE) * sizeof(u64); |
1316 | 1316 | ||
1317 | BUG_ON(ioc->pdir_size >= 4 * 1024 * 1024); /* max pdir size < 4MB */ | 1317 | BUG_ON(ioc->pdir_size > 8 * 1024 * 1024); /* max pdir size <= 8MB */ |
1318 | 1318 | ||
1319 | /* Verify it's a power of two */ | 1319 | /* Verify it's a power of two */ |
1320 | BUG_ON((1 << get_order(ioc->pdir_size)) != (ioc->pdir_size >> PAGE_SHIFT)); | 1320 | BUG_ON((1 << get_order(ioc->pdir_size)) != (ioc->pdir_size >> PAGE_SHIFT)); |
1321 | 1321 | ||
1322 | DBG_INIT("%s() hpa 0x%lx mem %luMB IOV %dMB (%d bits)\n", | 1322 | DBG_INIT("%s() hpa 0x%p mem %luMB IOV %dMB (%d bits)\n", |
1323 | __FUNCTION__, | 1323 | __FUNCTION__, ioc->ioc_regs, |
1324 | ioc->ioc_hpa, | ||
1325 | (unsigned long) num_physpages >> (20 - PAGE_SHIFT), | 1324 | (unsigned long) num_physpages >> (20 - PAGE_SHIFT), |
1326 | iova_space_size>>20, | 1325 | iova_space_size>>20, |
1327 | iov_order + PAGE_SHIFT); | 1326 | iov_order + PAGE_SHIFT); |
@@ -1329,13 +1328,12 @@ ccio_ioc_init(struct ioc *ioc) | |||
1329 | ioc->pdir_base = (u64 *)__get_free_pages(GFP_KERNEL, | 1328 | ioc->pdir_base = (u64 *)__get_free_pages(GFP_KERNEL, |
1330 | get_order(ioc->pdir_size)); | 1329 | get_order(ioc->pdir_size)); |
1331 | if(NULL == ioc->pdir_base) { | 1330 | if(NULL == ioc->pdir_base) { |
1332 | panic("%s:%s() could not allocate I/O Page Table\n", __FILE__, | 1331 | panic("%s() could not allocate I/O Page Table\n", __FUNCTION__); |
1333 | __FUNCTION__); | ||
1334 | } | 1332 | } |
1335 | memset(ioc->pdir_base, 0, ioc->pdir_size); | 1333 | memset(ioc->pdir_base, 0, ioc->pdir_size); |
1336 | 1334 | ||
1337 | BUG_ON((((unsigned long)ioc->pdir_base) & PAGE_MASK) != (unsigned long)ioc->pdir_base); | 1335 | BUG_ON((((unsigned long)ioc->pdir_base) & PAGE_MASK) != (unsigned long)ioc->pdir_base); |
1338 | DBG_INIT(" base %p", ioc->pdir_base); | 1336 | DBG_INIT(" base %p\n", ioc->pdir_base); |
1339 | 1337 | ||
1340 | /* resource map size dictated by pdir_size */ | 1338 | /* resource map size dictated by pdir_size */ |
1341 | ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3; | 1339 | ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3; |
@@ -1344,8 +1342,7 @@ ccio_ioc_init(struct ioc *ioc) | |||
1344 | ioc->res_map = (u8 *)__get_free_pages(GFP_KERNEL, | 1342 | ioc->res_map = (u8 *)__get_free_pages(GFP_KERNEL, |
1345 | get_order(ioc->res_size)); | 1343 | get_order(ioc->res_size)); |
1346 | if(NULL == ioc->res_map) { | 1344 | if(NULL == ioc->res_map) { |
1347 | panic("%s:%s() could not allocate resource map\n", __FILE__, | 1345 | panic("%s() could not allocate resource map\n", __FUNCTION__); |
1348 | __FUNCTION__); | ||
1349 | } | 1346 | } |
1350 | memset(ioc->res_map, 0, ioc->res_size); | 1347 | memset(ioc->res_map, 0, ioc->res_size); |
1351 | 1348 | ||
@@ -1366,44 +1363,58 @@ ccio_ioc_init(struct ioc *ioc) | |||
1366 | ** Initialize IOA hardware | 1363 | ** Initialize IOA hardware |
1367 | */ | 1364 | */ |
1368 | WRITE_U32(CCIO_CHAINID_MASK << ioc->chainid_shift, | 1365 | WRITE_U32(CCIO_CHAINID_MASK << ioc->chainid_shift, |
1369 | &ioc->ioc_hpa->io_chain_id_mask); | 1366 | &ioc->ioc_regs->io_chain_id_mask); |
1370 | 1367 | ||
1371 | WRITE_U32(virt_to_phys(ioc->pdir_base), | 1368 | WRITE_U32(virt_to_phys(ioc->pdir_base), |
1372 | &ioc->ioc_hpa->io_pdir_base); | 1369 | &ioc->ioc_regs->io_pdir_base); |
1373 | 1370 | ||
1374 | /* | 1371 | /* |
1375 | ** Go to "Virtual Mode" | 1372 | ** Go to "Virtual Mode" |
1376 | */ | 1373 | */ |
1377 | WRITE_U32(IOA_NORMAL_MODE, &ioc->ioc_hpa->io_control); | 1374 | WRITE_U32(IOA_NORMAL_MODE, &ioc->ioc_regs->io_control); |
1378 | 1375 | ||
1379 | /* | 1376 | /* |
1380 | ** Initialize all I/O TLB entries to 0 (Valid bit off). | 1377 | ** Initialize all I/O TLB entries to 0 (Valid bit off). |
1381 | */ | 1378 | */ |
1382 | WRITE_U32(0, &ioc->ioc_hpa->io_tlb_entry_m); | 1379 | WRITE_U32(0, &ioc->ioc_regs->io_tlb_entry_m); |
1383 | WRITE_U32(0, &ioc->ioc_hpa->io_tlb_entry_l); | 1380 | WRITE_U32(0, &ioc->ioc_regs->io_tlb_entry_l); |
1384 | 1381 | ||
1385 | for(i = 1 << CCIO_CHAINID_SHIFT; i ; i--) { | 1382 | for(i = 1 << CCIO_CHAINID_SHIFT; i ; i--) { |
1386 | WRITE_U32((CMD_TLB_DIRECT_WRITE | (i << ioc->chainid_shift)), | 1383 | WRITE_U32((CMD_TLB_DIRECT_WRITE | (i << ioc->chainid_shift)), |
1387 | &ioc->ioc_hpa->io_command); | 1384 | &ioc->ioc_regs->io_command); |
1388 | } | 1385 | } |
1389 | } | 1386 | } |
1390 | 1387 | ||
1391 | static void | 1388 | static void |
1392 | ccio_init_resource(struct resource *res, char *name, unsigned long ioaddr) | 1389 | ccio_init_resource(struct resource *res, char *name, void __iomem *ioaddr) |
1393 | { | 1390 | { |
1394 | int result; | 1391 | int result; |
1395 | 1392 | ||
1396 | res->parent = NULL; | 1393 | res->parent = NULL; |
1397 | res->flags = IORESOURCE_MEM; | 1394 | res->flags = IORESOURCE_MEM; |
1398 | res->start = (unsigned long)(signed) __raw_readl(ioaddr) << 16; | 1395 | /* |
1399 | res->end = (unsigned long)(signed) (__raw_readl(ioaddr + 4) << 16) - 1; | 1396 | * bracing ((signed) ...) are required for 64bit kernel because |
1397 | * we only want to sign extend the lower 16 bits of the register. | ||
1398 | * The upper 16-bits of range registers are hardcoded to 0xffff. | ||
1399 | */ | ||
1400 | res->start = (unsigned long)((signed) READ_U32(ioaddr) << 16); | ||
1401 | res->end = (unsigned long)((signed) (READ_U32(ioaddr + 4) << 16) - 1); | ||
1400 | res->name = name; | 1402 | res->name = name; |
1403 | /* | ||
1404 | * Check if this MMIO range is disable | ||
1405 | */ | ||
1401 | if (res->end + 1 == res->start) | 1406 | if (res->end + 1 == res->start) |
1402 | return; | 1407 | return; |
1403 | result = request_resource(&iomem_resource, res); | 1408 | |
1409 | /* On some platforms (e.g. K-Class), we have already registered | ||
1410 | * resources for devices reported by firmware. Some are children | ||
1411 | * of ccio. | ||
1412 | * "insert" ccio ranges in the mmio hierarchy (/proc/iomem). | ||
1413 | */ | ||
1414 | result = insert_resource(&iomem_resource, res); | ||
1404 | if (result < 0) { | 1415 | if (result < 0) { |
1405 | printk(KERN_ERR "%s: failed to claim CCIO bus address space (%08lx,%08lx)\n", | 1416 | printk(KERN_ERR "%s() failed to claim CCIO bus address space (%08lx,%08lx)\n", |
1406 | __FILE__, res->start, res->end); | 1417 | __FUNCTION__, res->start, res->end); |
1407 | } | 1418 | } |
1408 | } | 1419 | } |
1409 | 1420 | ||
@@ -1414,9 +1425,8 @@ static void __init ccio_init_resources(struct ioc *ioc) | |||
1414 | 1425 | ||
1415 | sprintf(name, "GSC Bus [%d/]", ioc->hw_path); | 1426 | sprintf(name, "GSC Bus [%d/]", ioc->hw_path); |
1416 | 1427 | ||
1417 | ccio_init_resource(res, name, (unsigned long)&ioc->ioc_hpa->io_io_low); | 1428 | ccio_init_resource(res, name, &ioc->ioc_regs->io_io_low); |
1418 | ccio_init_resource(res + 1, name, | 1429 | ccio_init_resource(res + 1, name, &ioc->ioc_regs->io_io_low_hv); |
1419 | (unsigned long)&ioc->ioc_hpa->io_io_low_hv); | ||
1420 | } | 1430 | } |
1421 | 1431 | ||
1422 | static int new_ioc_area(struct resource *res, unsigned long size, | 1432 | static int new_ioc_area(struct resource *res, unsigned long size, |
@@ -1427,7 +1437,12 @@ static int new_ioc_area(struct resource *res, unsigned long size, | |||
1427 | 1437 | ||
1428 | res->start = (max - size + 1) &~ (align - 1); | 1438 | res->start = (max - size + 1) &~ (align - 1); |
1429 | res->end = res->start + size; | 1439 | res->end = res->start + size; |
1430 | if (!request_resource(&iomem_resource, res)) | 1440 | |
1441 | /* We might be trying to expand the MMIO range to include | ||
1442 | * a child device that has already registered it's MMIO space. | ||
1443 | * Use "insert" instead of request_resource(). | ||
1444 | */ | ||
1445 | if (!insert_resource(&iomem_resource, res)) | ||
1431 | return 0; | 1446 | return 0; |
1432 | 1447 | ||
1433 | return new_ioc_area(res, size, min, max - size, align); | 1448 | return new_ioc_area(res, size, min, max - size, align); |
@@ -1486,15 +1501,15 @@ int ccio_allocate_resource(const struct parisc_device *dev, | |||
1486 | 1501 | ||
1487 | if (!expand_ioc_area(parent, size, min, max, align)) { | 1502 | if (!expand_ioc_area(parent, size, min, max, align)) { |
1488 | __raw_writel(((parent->start)>>16) | 0xffff0000, | 1503 | __raw_writel(((parent->start)>>16) | 0xffff0000, |
1489 | (unsigned long)&(ioc->ioc_hpa->io_io_low)); | 1504 | &ioc->ioc_regs->io_io_low); |
1490 | __raw_writel(((parent->end)>>16) | 0xffff0000, | 1505 | __raw_writel(((parent->end)>>16) | 0xffff0000, |
1491 | (unsigned long)&(ioc->ioc_hpa->io_io_high)); | 1506 | &ioc->ioc_regs->io_io_high); |
1492 | } else if (!expand_ioc_area(parent + 1, size, min, max, align)) { | 1507 | } else if (!expand_ioc_area(parent + 1, size, min, max, align)) { |
1493 | parent++; | 1508 | parent++; |
1494 | __raw_writel(((parent->start)>>16) | 0xffff0000, | 1509 | __raw_writel(((parent->start)>>16) | 0xffff0000, |
1495 | (unsigned long)&(ioc->ioc_hpa->io_io_low_hv)); | 1510 | &ioc->ioc_regs->io_io_low_hv); |
1496 | __raw_writel(((parent->end)>>16) | 0xffff0000, | 1511 | __raw_writel(((parent->end)>>16) | 0xffff0000, |
1497 | (unsigned long)&(ioc->ioc_hpa->io_io_high_hv)); | 1512 | &ioc->ioc_regs->io_io_high_hv); |
1498 | } else { | 1513 | } else { |
1499 | return -EBUSY; | 1514 | return -EBUSY; |
1500 | } | 1515 | } |
@@ -1521,7 +1536,12 @@ int ccio_request_resource(const struct parisc_device *dev, | |||
1521 | return -EBUSY; | 1536 | return -EBUSY; |
1522 | } | 1537 | } |
1523 | 1538 | ||
1524 | return request_resource(parent, res); | 1539 | /* "transparent" bus bridges need to register MMIO resources |
1540 | * firmware assigned them. e.g. children of hppb.c (e.g. K-class) | ||
1541 | * registered their resources in the PDC "bus walk" (See | ||
1542 | * arch/parisc/kernel/inventory.c). | ||
1543 | */ | ||
1544 | return insert_resource(parent, res); | ||
1525 | } | 1545 | } |
1526 | 1546 | ||
1527 | /** | 1547 | /** |
@@ -1546,7 +1566,7 @@ static int ccio_probe(struct parisc_device *dev) | |||
1546 | 1566 | ||
1547 | ioc->name = dev->id.hversion == U2_IOA_RUNWAY ? "U2" : "UTurn"; | 1567 | ioc->name = dev->id.hversion == U2_IOA_RUNWAY ? "U2" : "UTurn"; |
1548 | 1568 | ||
1549 | printk(KERN_INFO "Found %s at 0x%lx\n", ioc->name, dev->hpa); | 1569 | printk(KERN_INFO "Found %s at 0x%lx\n", ioc->name, dev->hpa.start); |
1550 | 1570 | ||
1551 | for (i = 0; i < ioc_count; i++) { | 1571 | for (i = 0; i < ioc_count; i++) { |
1552 | ioc_p = &(*ioc_p)->next; | 1572 | ioc_p = &(*ioc_p)->next; |
@@ -1554,7 +1574,7 @@ static int ccio_probe(struct parisc_device *dev) | |||
1554 | *ioc_p = ioc; | 1574 | *ioc_p = ioc; |
1555 | 1575 | ||
1556 | ioc->hw_path = dev->hw_path; | 1576 | ioc->hw_path = dev->hw_path; |
1557 | ioc->ioc_hpa = (struct ioa_registers *)dev->hpa; | 1577 | ioc->ioc_regs = ioremap(dev->hpa.start, 4096); |
1558 | ccio_ioc_init(ioc); | 1578 | ccio_ioc_init(ioc); |
1559 | ccio_init_resources(ioc); | 1579 | ccio_init_resources(ioc); |
1560 | hppa_dma_ops = &ccio_ops; | 1580 | hppa_dma_ops = &ccio_ops; |
diff --git a/drivers/parisc/ccio-rm-dma.c b/drivers/parisc/ccio-rm-dma.c index 57e6385976e2..356b8357bccc 100644 --- a/drivers/parisc/ccio-rm-dma.c +++ b/drivers/parisc/ccio-rm-dma.c | |||
@@ -167,7 +167,7 @@ ccio_probe(struct parisc_device *dev) | |||
167 | { | 167 | { |
168 | printk(KERN_INFO "%s found %s at 0x%lx\n", MODULE_NAME, | 168 | printk(KERN_INFO "%s found %s at 0x%lx\n", MODULE_NAME, |
169 | dev->id.hversion == U2_BC_GSC ? "U2" : "UTurn", | 169 | dev->id.hversion == U2_BC_GSC ? "U2" : "UTurn", |
170 | dev->hpa); | 170 | dev->hpa.start); |
171 | 171 | ||
172 | /* | 172 | /* |
173 | ** FIXME - should check U2 registers to verify it's really running | 173 | ** FIXME - should check U2 registers to verify it's really running |
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c index 2f2dbef2c3b7..5ab75334c579 100644 --- a/drivers/parisc/dino.c +++ b/drivers/parisc/dino.c | |||
@@ -178,6 +178,8 @@ static int dino_cfg_read(struct pci_bus *bus, unsigned int devfn, int where, | |||
178 | void __iomem *base_addr = d->hba.base_addr; | 178 | void __iomem *base_addr = d->hba.base_addr; |
179 | unsigned long flags; | 179 | unsigned long flags; |
180 | 180 | ||
181 | DBG("%s: %p, %d, %d, %d\n", __FUNCTION__, base_addr, devfn, where, | ||
182 | size); | ||
181 | spin_lock_irqsave(&d->dinosaur_pen, flags); | 183 | spin_lock_irqsave(&d->dinosaur_pen, flags); |
182 | 184 | ||
183 | /* tell HW which CFG address */ | 185 | /* tell HW which CFG address */ |
@@ -211,6 +213,8 @@ static int dino_cfg_write(struct pci_bus *bus, unsigned int devfn, int where, | |||
211 | void __iomem *base_addr = d->hba.base_addr; | 213 | void __iomem *base_addr = d->hba.base_addr; |
212 | unsigned long flags; | 214 | unsigned long flags; |
213 | 215 | ||
216 | DBG("%s: %p, %d, %d, %d\n", __FUNCTION__, base_addr, devfn, where, | ||
217 | size); | ||
214 | spin_lock_irqsave(&d->dinosaur_pen, flags); | 218 | spin_lock_irqsave(&d->dinosaur_pen, flags); |
215 | 219 | ||
216 | /* avoid address stepping feature */ | 220 | /* avoid address stepping feature */ |
@@ -295,7 +299,7 @@ static void dino_disable_irq(unsigned int irq) | |||
295 | struct dino_device *dino_dev = irq_desc[irq].handler_data; | 299 | struct dino_device *dino_dev = irq_desc[irq].handler_data; |
296 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); | 300 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); |
297 | 301 | ||
298 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, irq_dev, irq); | 302 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); |
299 | 303 | ||
300 | /* Clear the matching bit in the IMR register */ | 304 | /* Clear the matching bit in the IMR register */ |
301 | dino_dev->imr &= ~(DINO_MASK_IRQ(local_irq)); | 305 | dino_dev->imr &= ~(DINO_MASK_IRQ(local_irq)); |
@@ -308,7 +312,7 @@ static void dino_enable_irq(unsigned int irq) | |||
308 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); | 312 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); |
309 | u32 tmp; | 313 | u32 tmp; |
310 | 314 | ||
311 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, irq_dev, irq); | 315 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); |
312 | 316 | ||
313 | /* | 317 | /* |
314 | ** clear pending IRQ bits | 318 | ** clear pending IRQ bits |
@@ -490,7 +494,7 @@ dino_card_setup(struct pci_bus *bus, void __iomem *base_addr) | |||
490 | if (res->start == F_EXTEND(0xf0000000UL | (i * _8MB))) | 494 | if (res->start == F_EXTEND(0xf0000000UL | (i * _8MB))) |
491 | break; | 495 | break; |
492 | } | 496 | } |
493 | DBG("DINO GSC WRITE i=%d, start=%lx, dino addr = %lx\n", | 497 | DBG("DINO GSC WRITE i=%d, start=%lx, dino addr = %p\n", |
494 | i, res->start, base_addr + DINO_IO_ADDR_EN); | 498 | i, res->start, base_addr + DINO_IO_ADDR_EN); |
495 | __raw_writel(1 << i, base_addr + DINO_IO_ADDR_EN); | 499 | __raw_writel(1 << i, base_addr + DINO_IO_ADDR_EN); |
496 | } | 500 | } |
@@ -683,6 +687,14 @@ static void __init | |||
683 | dino_card_init(struct dino_device *dino_dev) | 687 | dino_card_init(struct dino_device *dino_dev) |
684 | { | 688 | { |
685 | u32 brdg_feat = 0x00784e05; | 689 | u32 brdg_feat = 0x00784e05; |
690 | unsigned long status; | ||
691 | |||
692 | status = __raw_readl(dino_dev->hba.base_addr+DINO_IO_STATUS); | ||
693 | if (status & 0x0000ff80) { | ||
694 | __raw_writel(0x00000005, | ||
695 | dino_dev->hba.base_addr+DINO_IO_COMMAND); | ||
696 | udelay(1); | ||
697 | } | ||
686 | 698 | ||
687 | __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_GMASK); | 699 | __raw_writel(0x00000000, dino_dev->hba.base_addr+DINO_GMASK); |
688 | __raw_writel(0x00000001, dino_dev->hba.base_addr+DINO_IO_FBB_EN); | 700 | __raw_writel(0x00000001, dino_dev->hba.base_addr+DINO_IO_FBB_EN); |
@@ -902,15 +914,15 @@ void ccio_cujo20_fixup(struct parisc_device *dev, u32 iovp); | |||
902 | ** If so, initialize the chip appropriately (card-mode vs bridge mode). | 914 | ** If so, initialize the chip appropriately (card-mode vs bridge mode). |
903 | ** Much of the initialization is common though. | 915 | ** Much of the initialization is common though. |
904 | */ | 916 | */ |
905 | static int __init | 917 | static int __init dino_probe(struct parisc_device *dev) |
906 | dino_driver_callback(struct parisc_device *dev) | ||
907 | { | 918 | { |
908 | struct dino_device *dino_dev; // Dino specific control struct | 919 | struct dino_device *dino_dev; // Dino specific control struct |
909 | const char *version = "unknown"; | 920 | const char *version = "unknown"; |
910 | char *name; | 921 | char *name; |
911 | int is_cujo = 0; | 922 | int is_cujo = 0; |
912 | struct pci_bus *bus; | 923 | struct pci_bus *bus; |
913 | 924 | unsigned long hpa = dev->hpa.start; | |
925 | |||
914 | name = "Dino"; | 926 | name = "Dino"; |
915 | if (is_card_dino(&dev->id)) { | 927 | if (is_card_dino(&dev->id)) { |
916 | version = "3.x (card mode)"; | 928 | version = "3.x (card mode)"; |
@@ -928,11 +940,11 @@ dino_driver_callback(struct parisc_device *dev) | |||
928 | } | 940 | } |
929 | } | 941 | } |
930 | 942 | ||
931 | printk("%s version %s found at 0x%lx\n", name, version, dev->hpa); | 943 | printk("%s version %s found at 0x%lx\n", name, version, hpa); |
932 | 944 | ||
933 | if (!request_mem_region(dev->hpa, PAGE_SIZE, name)) { | 945 | if (!request_mem_region(hpa, PAGE_SIZE, name)) { |
934 | printk(KERN_ERR "DINO: Hey! Someone took my MMIO space (0x%ld)!\n", | 946 | printk(KERN_ERR "DINO: Hey! Someone took my MMIO space (0x%ld)!\n", |
935 | dev->hpa); | 947 | hpa); |
936 | return 1; | 948 | return 1; |
937 | } | 949 | } |
938 | 950 | ||
@@ -940,12 +952,12 @@ dino_driver_callback(struct parisc_device *dev) | |||
940 | if (is_cujo && dev->id.hversion_rev == 1) { | 952 | if (is_cujo && dev->id.hversion_rev == 1) { |
941 | #ifdef CONFIG_IOMMU_CCIO | 953 | #ifdef CONFIG_IOMMU_CCIO |
942 | printk(KERN_WARNING "Enabling Cujo 2.0 bug workaround\n"); | 954 | printk(KERN_WARNING "Enabling Cujo 2.0 bug workaround\n"); |
943 | if (dev->hpa == (unsigned long)CUJO_RAVEN_ADDR) { | 955 | if (hpa == (unsigned long)CUJO_RAVEN_ADDR) { |
944 | ccio_cujo20_fixup(dev, CUJO_RAVEN_BADPAGE); | 956 | ccio_cujo20_fixup(dev, CUJO_RAVEN_BADPAGE); |
945 | } else if (dev->hpa == (unsigned long)CUJO_FIREHAWK_ADDR) { | 957 | } else if (hpa == (unsigned long)CUJO_FIREHAWK_ADDR) { |
946 | ccio_cujo20_fixup(dev, CUJO_FIREHAWK_BADPAGE); | 958 | ccio_cujo20_fixup(dev, CUJO_FIREHAWK_BADPAGE); |
947 | } else { | 959 | } else { |
948 | printk("Don't recognise Cujo at address 0x%lx, not enabling workaround\n", dev->hpa); | 960 | printk("Don't recognise Cujo at address 0x%lx, not enabling workaround\n", hpa); |
949 | } | 961 | } |
950 | #endif | 962 | #endif |
951 | } else if (!is_cujo && !is_card_dino(&dev->id) && | 963 | } else if (!is_cujo && !is_card_dino(&dev->id) && |
@@ -970,7 +982,7 @@ dino_driver_callback(struct parisc_device *dev) | |||
970 | memset(dino_dev, 0, sizeof(struct dino_device)); | 982 | memset(dino_dev, 0, sizeof(struct dino_device)); |
971 | 983 | ||
972 | dino_dev->hba.dev = dev; | 984 | dino_dev->hba.dev = dev; |
973 | dino_dev->hba.base_addr = ioremap(dev->hpa, 4096); /* faster access */ | 985 | dino_dev->hba.base_addr = ioremap(hpa, 4096); |
974 | dino_dev->hba.lmmio_space_offset = 0; /* CPU addrs == bus addrs */ | 986 | dino_dev->hba.lmmio_space_offset = 0; /* CPU addrs == bus addrs */ |
975 | spin_lock_init(&dino_dev->dinosaur_pen); | 987 | spin_lock_init(&dino_dev->dinosaur_pen); |
976 | dino_dev->hba.iommu = ccio_get_iommu(dev); | 988 | dino_dev->hba.iommu = ccio_get_iommu(dev); |
@@ -1027,9 +1039,9 @@ static struct parisc_device_id dino_tbl[] = { | |||
1027 | }; | 1039 | }; |
1028 | 1040 | ||
1029 | static struct parisc_driver dino_driver = { | 1041 | static struct parisc_driver dino_driver = { |
1030 | .name = "Dino", | 1042 | .name = "dino", |
1031 | .id_table = dino_tbl, | 1043 | .id_table = dino_tbl, |
1032 | .probe = dino_driver_callback, | 1044 | .probe = dino_probe, |
1033 | }; | 1045 | }; |
1034 | 1046 | ||
1035 | /* | 1047 | /* |
diff --git a/drivers/parisc/eisa.c b/drivers/parisc/eisa.c index 043d47aea75b..6362bf99eff6 100644 --- a/drivers/parisc/eisa.c +++ b/drivers/parisc/eisa.c | |||
@@ -315,7 +315,7 @@ static int __devinit eisa_probe(struct parisc_device *dev) | |||
315 | char *name = is_mongoose(dev) ? "Mongoose" : "Wax"; | 315 | char *name = is_mongoose(dev) ? "Mongoose" : "Wax"; |
316 | 316 | ||
317 | printk(KERN_INFO "%s EISA Adapter found at 0x%08lx\n", | 317 | printk(KERN_INFO "%s EISA Adapter found at 0x%08lx\n", |
318 | name, dev->hpa); | 318 | name, dev->hpa.start); |
319 | 319 | ||
320 | eisa_dev.hba.dev = dev; | 320 | eisa_dev.hba.dev = dev; |
321 | eisa_dev.hba.iommu = ccio_get_iommu(dev); | 321 | eisa_dev.hba.iommu = ccio_get_iommu(dev); |
@@ -397,7 +397,7 @@ static struct parisc_device_id eisa_tbl[] = { | |||
397 | MODULE_DEVICE_TABLE(parisc, eisa_tbl); | 397 | MODULE_DEVICE_TABLE(parisc, eisa_tbl); |
398 | 398 | ||
399 | static struct parisc_driver eisa_driver = { | 399 | static struct parisc_driver eisa_driver = { |
400 | .name = "EISA Bus Adapter", | 400 | .name = "eisa_ba", |
401 | .id_table = eisa_tbl, | 401 | .id_table = eisa_tbl, |
402 | .probe = eisa_probe, | 402 | .probe = eisa_probe, |
403 | }; | 403 | }; |
diff --git a/drivers/parisc/gsc.c b/drivers/parisc/gsc.c index af5e02526a18..16d40f95978d 100644 --- a/drivers/parisc/gsc.c +++ b/drivers/parisc/gsc.c | |||
@@ -183,12 +183,20 @@ void gsc_asic_assign_irq(struct gsc_asic *asic, int local_irq, int *irqp) | |||
183 | *irqp = irq; | 183 | *irqp = irq; |
184 | } | 184 | } |
185 | 185 | ||
186 | static struct device *next_device(struct klist_iter *i) | ||
187 | { | ||
188 | struct klist_node * n = klist_next(i); | ||
189 | return n ? container_of(n, struct device, knode_parent) : NULL; | ||
190 | } | ||
191 | |||
186 | void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, | 192 | void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, |
187 | void (*choose_irq)(struct parisc_device *, void *)) | 193 | void (*choose_irq)(struct parisc_device *, void *)) |
188 | { | 194 | { |
189 | struct device *dev; | 195 | struct device *dev; |
196 | struct klist_iter i; | ||
190 | 197 | ||
191 | list_for_each_entry(dev, &parent->dev.children, node) { | 198 | klist_iter_init(&parent->dev.klist_children, &i); |
199 | while ((dev = next_device(&i))) { | ||
192 | struct parisc_device *padev = to_parisc_device(dev); | 200 | struct parisc_device *padev = to_parisc_device(dev); |
193 | 201 | ||
194 | /* work-around for 715/64 and others which have parent | 202 | /* work-around for 715/64 and others which have parent |
@@ -197,6 +205,7 @@ void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl, | |||
197 | return gsc_fixup_irqs(padev, ctrl, choose_irq); | 205 | return gsc_fixup_irqs(padev, ctrl, choose_irq); |
198 | choose_irq(padev, ctrl); | 206 | choose_irq(padev, ctrl); |
199 | } | 207 | } |
208 | klist_iter_exit(&i); | ||
200 | } | 209 | } |
201 | 210 | ||
202 | int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic) | 211 | int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic) |
diff --git a/drivers/parisc/hppb.c b/drivers/parisc/hppb.c index e869c6020370..5edf93f80757 100644 --- a/drivers/parisc/hppb.c +++ b/drivers/parisc/hppb.c | |||
@@ -68,14 +68,14 @@ static int hppb_probe(struct parisc_device *dev) | |||
68 | memset(card->next, '\0', sizeof(struct hppb_card)); | 68 | memset(card->next, '\0', sizeof(struct hppb_card)); |
69 | card = card->next; | 69 | card = card->next; |
70 | } | 70 | } |
71 | printk(KERN_INFO "Found GeckoBoa at 0x%lx\n", dev->hpa); | 71 | printk(KERN_INFO "Found GeckoBoa at 0x%lx\n", dev->hpa.start); |
72 | 72 | ||
73 | card->hpa = dev->hpa; | 73 | card->hpa = dev->hpa.start; |
74 | card->mmio_region.name = "HP-PB Bus"; | 74 | card->mmio_region.name = "HP-PB Bus"; |
75 | card->mmio_region.flags = IORESOURCE_MEM; | 75 | card->mmio_region.flags = IORESOURCE_MEM; |
76 | 76 | ||
77 | card->mmio_region.start = __raw_readl(dev->hpa + IO_IO_LOW); | 77 | card->mmio_region.start = gsc_readl(dev->hpa.start + IO_IO_LOW); |
78 | card->mmio_region.end = __raw_readl(dev->hpa + IO_IO_HIGH) - 1; | 78 | card->mmio_region.end = gsc_readl(dev->hpa.start + IO_IO_HIGH) - 1; |
79 | 79 | ||
80 | status = ccio_request_resource(dev, &card->mmio_region); | 80 | status = ccio_request_resource(dev, &card->mmio_region); |
81 | if(status < 0) { | 81 | if(status < 0) { |
@@ -93,7 +93,7 @@ static struct parisc_device_id hppb_tbl[] = { | |||
93 | }; | 93 | }; |
94 | 94 | ||
95 | static struct parisc_driver hppb_driver = { | 95 | static struct parisc_driver hppb_driver = { |
96 | .name = "Gecko Boa", | 96 | .name = "gecko_boa", |
97 | .id_table = hppb_tbl, | 97 | .id_table = hppb_tbl, |
98 | .probe = hppb_probe, | 98 | .probe = hppb_probe, |
99 | }; | 99 | }; |
diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c index 7a57c1b8373f..a39fbfef789a 100644 --- a/drivers/parisc/iosapic.c +++ b/drivers/parisc/iosapic.c | |||
@@ -244,7 +244,7 @@ static struct irt_entry *iosapic_alloc_irt(int num_entries) | |||
244 | * 4-byte alignment on 32-bit kernels | 244 | * 4-byte alignment on 32-bit kernels |
245 | */ | 245 | */ |
246 | a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries + 8, GFP_KERNEL); | 246 | a = (unsigned long)kmalloc(sizeof(struct irt_entry) * num_entries + 8, GFP_KERNEL); |
247 | a = (a + 7) & ~7; | 247 | a = (a + 7UL) & ~7UL; |
248 | return (struct irt_entry *)a; | 248 | return (struct irt_entry *)a; |
249 | } | 249 | } |
250 | 250 | ||
diff --git a/drivers/parisc/lasi.c b/drivers/parisc/lasi.c index cb84a4e84a2f..a8c20396ffbe 100644 --- a/drivers/parisc/lasi.c +++ b/drivers/parisc/lasi.c | |||
@@ -175,7 +175,7 @@ lasi_init_chip(struct parisc_device *dev) | |||
175 | return -ENOMEM; | 175 | return -ENOMEM; |
176 | 176 | ||
177 | lasi->name = "Lasi"; | 177 | lasi->name = "Lasi"; |
178 | lasi->hpa = dev->hpa; | 178 | lasi->hpa = dev->hpa.start; |
179 | 179 | ||
180 | /* Check the 4-bit (yes, only 4) version register */ | 180 | /* Check the 4-bit (yes, only 4) version register */ |
181 | lasi->version = gsc_readl(lasi->hpa + LASI_VER) & 0xf; | 181 | lasi->version = gsc_readl(lasi->hpa + LASI_VER) & 0xf; |
@@ -233,7 +233,7 @@ static struct parisc_device_id lasi_tbl[] = { | |||
233 | }; | 233 | }; |
234 | 234 | ||
235 | struct parisc_driver lasi_driver = { | 235 | struct parisc_driver lasi_driver = { |
236 | .name = "Lasi", | 236 | .name = "lasi", |
237 | .id_table = lasi_tbl, | 237 | .id_table = lasi_tbl, |
238 | .probe = lasi_init_chip, | 238 | .probe = lasi_init_chip, |
239 | }; | 239 | }; |
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index 7fdd80b7eb47..5e495dcbc58a 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c | |||
@@ -1288,7 +1288,7 @@ lba_legacy_resources(struct parisc_device *pa_dev, struct lba_device *lba_dev) | |||
1288 | ** Adjust "window" for this rope. | 1288 | ** Adjust "window" for this rope. |
1289 | */ | 1289 | */ |
1290 | rsize /= ROPES_PER_IOC; | 1290 | rsize /= ROPES_PER_IOC; |
1291 | r->start += (rsize + 1) * LBA_NUM(pa_dev->hpa); | 1291 | r->start += (rsize + 1) * LBA_NUM(pa_dev->hpa.start); |
1292 | r->end = r->start + rsize; | 1292 | r->end = r->start + rsize; |
1293 | } else { | 1293 | } else { |
1294 | r->end = r->start = 0; /* Not enabled. */ | 1294 | r->end = r->start = 0; /* Not enabled. */ |
@@ -1458,7 +1458,7 @@ lba_driver_probe(struct parisc_device *dev) | |||
1458 | u32 func_class; | 1458 | u32 func_class; |
1459 | void *tmp_obj; | 1459 | void *tmp_obj; |
1460 | char *version; | 1460 | char *version; |
1461 | void __iomem *addr = ioremap(dev->hpa, 4096); | 1461 | void __iomem *addr = ioremap(dev->hpa.start, 4096); |
1462 | 1462 | ||
1463 | /* Read HW Rev First */ | 1463 | /* Read HW Rev First */ |
1464 | func_class = READ_REG32(addr + LBA_FCLASS); | 1464 | func_class = READ_REG32(addr + LBA_FCLASS); |
@@ -1476,7 +1476,7 @@ lba_driver_probe(struct parisc_device *dev) | |||
1476 | } | 1476 | } |
1477 | 1477 | ||
1478 | printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n", | 1478 | printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n", |
1479 | MODULE_NAME, version, func_class & 0xf, dev->hpa); | 1479 | MODULE_NAME, version, func_class & 0xf, dev->hpa.start); |
1480 | 1480 | ||
1481 | if (func_class < 2) { | 1481 | if (func_class < 2) { |
1482 | printk(KERN_WARNING "Can't support LBA older than " | 1482 | printk(KERN_WARNING "Can't support LBA older than " |
@@ -1503,17 +1503,17 @@ lba_driver_probe(struct parisc_device *dev) | |||
1503 | * but for the mask for func_class. | 1503 | * but for the mask for func_class. |
1504 | */ | 1504 | */ |
1505 | printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n", | 1505 | printk(KERN_INFO "%s version %s (0x%x) found at 0x%lx\n", |
1506 | MODULE_NAME, version, func_class & 0xff, dev->hpa); | 1506 | MODULE_NAME, version, func_class & 0xff, dev->hpa.start); |
1507 | cfg_ops = &mercury_cfg_ops; | 1507 | cfg_ops = &mercury_cfg_ops; |
1508 | } else { | 1508 | } else { |
1509 | printk(KERN_ERR "Unknown LBA found at 0x%lx\n", dev->hpa); | 1509 | printk(KERN_ERR "Unknown LBA found at 0x%lx\n", dev->hpa.start); |
1510 | return -ENODEV; | 1510 | return -ENODEV; |
1511 | } | 1511 | } |
1512 | 1512 | ||
1513 | /* | 1513 | /* |
1514 | ** Tell I/O SAPIC driver we have a IRQ handler/region. | 1514 | ** Tell I/O SAPIC driver we have a IRQ handler/region. |
1515 | */ | 1515 | */ |
1516 | tmp_obj = iosapic_register(dev->hpa + LBA_IOSAPIC_BASE); | 1516 | tmp_obj = iosapic_register(dev->hpa.start + LBA_IOSAPIC_BASE); |
1517 | 1517 | ||
1518 | /* NOTE: PCI devices (e.g. 103c:1005 graphics card) which don't | 1518 | /* NOTE: PCI devices (e.g. 103c:1005 graphics card) which don't |
1519 | ** have an IRT entry will get NULL back from iosapic code. | 1519 | ** have an IRT entry will get NULL back from iosapic code. |
@@ -1635,7 +1635,7 @@ void __init lba_init(void) | |||
1635 | */ | 1635 | */ |
1636 | void lba_set_iregs(struct parisc_device *lba, u32 ibase, u32 imask) | 1636 | void lba_set_iregs(struct parisc_device *lba, u32 ibase, u32 imask) |
1637 | { | 1637 | { |
1638 | void __iomem * base_addr = ioremap(lba->hpa, 4096); | 1638 | void __iomem * base_addr = ioremap(lba->hpa.start, 4096); |
1639 | 1639 | ||
1640 | imask <<= 2; /* adjust for hints - 2 more bits */ | 1640 | imask <<= 2; /* adjust for hints - 2 more bits */ |
1641 | 1641 | ||
diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index 286902298e33..95bd07b8b61b 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c | |||
@@ -18,6 +18,9 @@ | |||
18 | * Changes: | 18 | * Changes: |
19 | * - Audit copy_from_user in led_proc_write. | 19 | * - Audit copy_from_user in led_proc_write. |
20 | * Daniele Bellucci <bellucda@tiscali.it> | 20 | * Daniele Bellucci <bellucda@tiscali.it> |
21 | * - Switch from using a tasklet to a work queue, so the led_LCD_driver | ||
22 | * can sleep. | ||
23 | * David Pye <dmp@davidmpye.dyndns.org> | ||
21 | */ | 24 | */ |
22 | 25 | ||
23 | #include <linux/config.h> | 26 | #include <linux/config.h> |
@@ -37,6 +40,7 @@ | |||
37 | #include <linux/proc_fs.h> | 40 | #include <linux/proc_fs.h> |
38 | #include <linux/ctype.h> | 41 | #include <linux/ctype.h> |
39 | #include <linux/blkdev.h> | 42 | #include <linux/blkdev.h> |
43 | #include <linux/workqueue.h> | ||
40 | #include <linux/rcupdate.h> | 44 | #include <linux/rcupdate.h> |
41 | #include <asm/io.h> | 45 | #include <asm/io.h> |
42 | #include <asm/processor.h> | 46 | #include <asm/processor.h> |
@@ -47,25 +51,30 @@ | |||
47 | #include <asm/uaccess.h> | 51 | #include <asm/uaccess.h> |
48 | 52 | ||
49 | /* The control of the LEDs and LCDs on PARISC-machines have to be done | 53 | /* The control of the LEDs and LCDs on PARISC-machines have to be done |
50 | completely in software. The necessary calculations are done in a tasklet | 54 | completely in software. The necessary calculations are done in a work queue |
51 | which is scheduled at every timer interrupt and since the calculations | 55 | task which is scheduled regularly, and since the calculations may consume a |
52 | may consume relatively much CPU-time some of the calculations can be | 56 | relatively large amount of CPU time, some of the calculations can be |
53 | turned off with the following variables (controlled via procfs) */ | 57 | turned off with the following variables (controlled via procfs) */ |
54 | 58 | ||
55 | static int led_type = -1; | 59 | static int led_type = -1; |
56 | static int led_heartbeat = 1; | 60 | static unsigned char lastleds; /* LED state from most recent update */ |
57 | static int led_diskio = 1; | 61 | static unsigned int led_heartbeat = 1; |
58 | static int led_lanrxtx = 1; | 62 | static unsigned int led_diskio = 1; |
63 | static unsigned int led_lanrxtx = 1; | ||
59 | static char lcd_text[32]; | 64 | static char lcd_text[32]; |
60 | static char lcd_text_default[32]; | 65 | static char lcd_text_default[32]; |
61 | 66 | ||
67 | |||
68 | static struct workqueue_struct *led_wq; | ||
69 | static void led_work_func(void *); | ||
70 | static DECLARE_WORK(led_task, led_work_func, NULL); | ||
71 | |||
62 | #if 0 | 72 | #if 0 |
63 | #define DPRINTK(x) printk x | 73 | #define DPRINTK(x) printk x |
64 | #else | 74 | #else |
65 | #define DPRINTK(x) | 75 | #define DPRINTK(x) |
66 | #endif | 76 | #endif |
67 | 77 | ||
68 | |||
69 | struct lcd_block { | 78 | struct lcd_block { |
70 | unsigned char command; /* stores the command byte */ | 79 | unsigned char command; /* stores the command byte */ |
71 | unsigned char on; /* value for turning LED on */ | 80 | unsigned char on; /* value for turning LED on */ |
@@ -116,12 +125,27 @@ lcd_info __attribute__((aligned(8))) = | |||
116 | #define LCD_DATA_REG lcd_info.lcd_data_reg_addr | 125 | #define LCD_DATA_REG lcd_info.lcd_data_reg_addr |
117 | #define LED_DATA_REG lcd_info.lcd_cmd_reg_addr /* LASI & ASP only */ | 126 | #define LED_DATA_REG lcd_info.lcd_cmd_reg_addr /* LASI & ASP only */ |
118 | 127 | ||
128 | #define LED_HASLCD 1 | ||
129 | #define LED_NOLCD 0 | ||
130 | |||
131 | /* The workqueue must be created at init-time */ | ||
132 | static int start_task(void) | ||
133 | { | ||
134 | /* Display the default text now */ | ||
135 | if (led_type == LED_HASLCD) lcd_print( lcd_text_default ); | ||
136 | |||
137 | /* Create the work queue and queue the LED task */ | ||
138 | led_wq = create_singlethread_workqueue("led_wq"); | ||
139 | queue_work(led_wq, &led_task); | ||
140 | |||
141 | return 0; | ||
142 | } | ||
143 | |||
144 | device_initcall(start_task); | ||
119 | 145 | ||
120 | /* ptr to LCD/LED-specific function */ | 146 | /* ptr to LCD/LED-specific function */ |
121 | static void (*led_func_ptr) (unsigned char); | 147 | static void (*led_func_ptr) (unsigned char); |
122 | 148 | ||
123 | #define LED_HASLCD 1 | ||
124 | #define LED_NOLCD 0 | ||
125 | #ifdef CONFIG_PROC_FS | 149 | #ifdef CONFIG_PROC_FS |
126 | static int led_proc_read(char *page, char **start, off_t off, int count, | 150 | static int led_proc_read(char *page, char **start, off_t off, int count, |
127 | int *eof, void *data) | 151 | int *eof, void *data) |
@@ -286,52 +310,35 @@ static void led_LASI_driver(unsigned char leds) | |||
286 | /* | 310 | /* |
287 | ** | 311 | ** |
288 | ** led_LCD_driver() | 312 | ** led_LCD_driver() |
289 | ** | ||
290 | ** The logic of the LCD driver is, that we write at every scheduled call | ||
291 | ** only to one of LCD_CMD_REG _or_ LCD_DATA_REG - registers. | ||
292 | ** That way we don't need to let this tasklet busywait for min_cmd_delay | ||
293 | ** milliseconds. | ||
294 | ** | ||
295 | ** TODO: check the value of "min_cmd_delay" against the value of HZ. | ||
296 | ** | 313 | ** |
297 | */ | 314 | */ |
298 | static void led_LCD_driver(unsigned char leds) | 315 | static void led_LCD_driver(unsigned char leds) |
299 | { | 316 | { |
300 | static int last_index; /* 0:heartbeat, 1:disk, 2:lan_in, 3:lan_out */ | 317 | static int i; |
301 | static int last_was_cmd;/* 0: CMD was written last, 1: DATA was last */ | 318 | static unsigned char mask[4] = { LED_HEARTBEAT, LED_DISK_IO, |
302 | struct lcd_block *block_ptr; | 319 | LED_LAN_RCV, LED_LAN_TX }; |
303 | int value; | ||
304 | |||
305 | switch (last_index) { | ||
306 | case 0: block_ptr = &lcd_info.heartbeat; | ||
307 | value = leds & LED_HEARTBEAT; | ||
308 | break; | ||
309 | case 1: block_ptr = &lcd_info.disk_io; | ||
310 | value = leds & LED_DISK_IO; | ||
311 | break; | ||
312 | case 2: block_ptr = &lcd_info.lan_rcv; | ||
313 | value = leds & LED_LAN_RCV; | ||
314 | break; | ||
315 | case 3: block_ptr = &lcd_info.lan_tx; | ||
316 | value = leds & LED_LAN_TX; | ||
317 | break; | ||
318 | default: /* should never happen: */ | ||
319 | return; | ||
320 | } | ||
321 | |||
322 | if (last_was_cmd) { | ||
323 | /* write the value to the LCD data port */ | ||
324 | gsc_writeb( value ? block_ptr->on : block_ptr->off, LCD_DATA_REG ); | ||
325 | } else { | ||
326 | /* write the command-byte to the LCD command register */ | ||
327 | gsc_writeb( block_ptr->command, LCD_CMD_REG ); | ||
328 | } | ||
329 | 320 | ||
330 | /* now update the vars for the next interrupt iteration */ | 321 | static struct lcd_block * blockp[4] = { |
331 | if (++last_was_cmd == 2) { /* switch between cmd & data */ | 322 | &lcd_info.heartbeat, |
332 | last_was_cmd = 0; | 323 | &lcd_info.disk_io, |
333 | if (++last_index == 4) | 324 | &lcd_info.lan_rcv, |
334 | last_index = 0; /* switch back to heartbeat index */ | 325 | &lcd_info.lan_tx |
326 | }; | ||
327 | |||
328 | /* Convert min_cmd_delay to milliseconds */ | ||
329 | unsigned int msec_cmd_delay = 1 + (lcd_info.min_cmd_delay / 1000); | ||
330 | |||
331 | for (i=0; i<4; ++i) | ||
332 | { | ||
333 | if ((leds & mask[i]) != (lastleds & mask[i])) | ||
334 | { | ||
335 | gsc_writeb( blockp[i]->command, LCD_CMD_REG ); | ||
336 | msleep(msec_cmd_delay); | ||
337 | |||
338 | gsc_writeb( leds & mask[i] ? blockp[i]->on : | ||
339 | blockp[i]->off, LCD_DATA_REG ); | ||
340 | msleep(msec_cmd_delay); | ||
341 | } | ||
335 | } | 342 | } |
336 | } | 343 | } |
337 | 344 | ||
@@ -356,7 +363,7 @@ static __inline__ int led_get_net_activity(void) | |||
356 | 363 | ||
357 | rx_total = tx_total = 0; | 364 | rx_total = tx_total = 0; |
358 | 365 | ||
359 | /* we are running as tasklet, so locking dev_base | 366 | /* we are running as a workqueue task, so locking dev_base |
360 | * for reading should be OK */ | 367 | * for reading should be OK */ |
361 | read_lock(&dev_base_lock); | 368 | read_lock(&dev_base_lock); |
362 | rcu_read_lock(); | 369 | rcu_read_lock(); |
@@ -405,7 +412,7 @@ static __inline__ int led_get_diskio_activity(void) | |||
405 | static unsigned long last_pgpgin, last_pgpgout; | 412 | static unsigned long last_pgpgin, last_pgpgout; |
406 | struct page_state pgstat; | 413 | struct page_state pgstat; |
407 | int changed; | 414 | int changed; |
408 | 415 | ||
409 | get_full_page_state(&pgstat); /* get no of sectors in & out */ | 416 | get_full_page_state(&pgstat); /* get no of sectors in & out */ |
410 | 417 | ||
411 | /* Just use a very simple calculation here. Do not care about overflow, | 418 | /* Just use a very simple calculation here. Do not care about overflow, |
@@ -413,86 +420,70 @@ static __inline__ int led_get_diskio_activity(void) | |||
413 | changed = (pgstat.pgpgin != last_pgpgin) || (pgstat.pgpgout != last_pgpgout); | 420 | changed = (pgstat.pgpgin != last_pgpgin) || (pgstat.pgpgout != last_pgpgout); |
414 | last_pgpgin = pgstat.pgpgin; | 421 | last_pgpgin = pgstat.pgpgin; |
415 | last_pgpgout = pgstat.pgpgout; | 422 | last_pgpgout = pgstat.pgpgout; |
416 | 423 | ||
417 | return (changed ? LED_DISK_IO : 0); | 424 | return (changed ? LED_DISK_IO : 0); |
418 | } | 425 | } |
419 | 426 | ||
420 | 427 | ||
421 | 428 | ||
422 | /* | 429 | /* |
423 | ** led_tasklet_func() | 430 | ** led_work_func() |
424 | ** | 431 | ** |
425 | ** is scheduled at every timer interrupt from time.c and | 432 | ** manages when and which chassis LCD/LED gets updated |
426 | ** updates the chassis LCD/LED | ||
427 | 433 | ||
428 | TODO: | 434 | TODO: |
429 | - display load average (older machines like 715/64 have 4 "free" LED's for that) | 435 | - display load average (older machines like 715/64 have 4 "free" LED's for that) |
430 | - optimizations | 436 | - optimizations |
431 | */ | 437 | */ |
432 | 438 | ||
433 | #define HEARTBEAT_LEN (HZ*6/100) | 439 | #define HEARTBEAT_LEN (HZ*10/100) |
434 | #define HEARTBEAT_2ND_RANGE_START (HZ*22/100) | 440 | #define HEARTBEAT_2ND_RANGE_START (HZ*28/100) |
435 | #define HEARTBEAT_2ND_RANGE_END (HEARTBEAT_2ND_RANGE_START + HEARTBEAT_LEN) | 441 | #define HEARTBEAT_2ND_RANGE_END (HEARTBEAT_2ND_RANGE_START + HEARTBEAT_LEN) |
436 | 442 | ||
437 | #define NORMALIZED_COUNT(count) (count/(HZ/100)) | 443 | #define LED_UPDATE_INTERVAL (1 + (HZ*19/1000)) |
438 | 444 | ||
439 | static void led_tasklet_func(unsigned long unused) | 445 | static void led_work_func (void *unused) |
440 | { | 446 | { |
441 | static unsigned char lastleds; | 447 | static unsigned long last_jiffies; |
442 | unsigned char currentleds; /* stores current value of the LEDs */ | ||
443 | static unsigned long count; /* static incremented value, not wrapped */ | ||
444 | static unsigned long count_HZ; /* counter in range 0..HZ */ | 448 | static unsigned long count_HZ; /* counter in range 0..HZ */ |
449 | unsigned char currentleds = 0; /* stores current value of the LEDs */ | ||
445 | 450 | ||
446 | /* exit if not initialized */ | 451 | /* exit if not initialized */ |
447 | if (!led_func_ptr) | 452 | if (!led_func_ptr) |
448 | return; | 453 | return; |
449 | 454 | ||
450 | /* increment the local counters */ | 455 | /* increment the heartbeat timekeeper */ |
451 | ++count; | 456 | count_HZ += jiffies - last_jiffies; |
452 | if (++count_HZ == HZ) | 457 | last_jiffies = jiffies; |
458 | if (count_HZ >= HZ) | ||
453 | count_HZ = 0; | 459 | count_HZ = 0; |
454 | 460 | ||
455 | currentleds = lastleds; | 461 | if (likely(led_heartbeat)) |
456 | |||
457 | if (led_heartbeat) | ||
458 | { | ||
459 | /* flash heartbeat-LED like a real heart (2 x short then a long delay) */ | ||
460 | if (count_HZ<HEARTBEAT_LEN || | ||
461 | (count_HZ>=HEARTBEAT_2ND_RANGE_START && count_HZ<HEARTBEAT_2ND_RANGE_END)) | ||
462 | currentleds |= LED_HEARTBEAT; | ||
463 | else | ||
464 | currentleds &= ~LED_HEARTBEAT; | ||
465 | } | ||
466 | |||
467 | /* look for network activity and flash LEDs respectively */ | ||
468 | if (led_lanrxtx && ((NORMALIZED_COUNT(count)+(8/2)) & 7) == 0) | ||
469 | { | 462 | { |
470 | currentleds &= ~(LED_LAN_RCV | LED_LAN_TX); | 463 | /* flash heartbeat-LED like a real heart |
471 | currentleds |= led_get_net_activity(); | 464 | * (2 x short then a long delay) |
465 | */ | ||
466 | if (count_HZ < HEARTBEAT_LEN || | ||
467 | (count_HZ >= HEARTBEAT_2ND_RANGE_START && | ||
468 | count_HZ < HEARTBEAT_2ND_RANGE_END)) | ||
469 | currentleds |= LED_HEARTBEAT; | ||
472 | } | 470 | } |
473 | 471 | ||
474 | /* avoid to calculate diskio-stats at same irq as netio-stats */ | 472 | if (likely(led_lanrxtx)) currentleds |= led_get_net_activity(); |
475 | if (led_diskio && (NORMALIZED_COUNT(count) & 7) == 0) | 473 | if (likely(led_diskio)) currentleds |= led_get_diskio_activity(); |
476 | { | ||
477 | currentleds &= ~LED_DISK_IO; | ||
478 | currentleds |= led_get_diskio_activity(); | ||
479 | } | ||
480 | 474 | ||
481 | /* blink all LEDs twice a second if we got an Oops (HPMC) */ | 475 | /* blink all LEDs twice a second if we got an Oops (HPMC) */ |
482 | if (oops_in_progress) { | 476 | if (unlikely(oops_in_progress)) |
483 | currentleds = (count_HZ<=(HZ/2)) ? 0 : 0xff; | 477 | currentleds = (count_HZ<=(HZ/2)) ? 0 : 0xff; |
484 | } | ||
485 | |||
486 | /* update the LCD/LEDs */ | ||
487 | if (currentleds != lastleds) { | ||
488 | led_func_ptr(currentleds); | ||
489 | lastleds = currentleds; | ||
490 | } | ||
491 | } | ||
492 | 478 | ||
493 | /* main led tasklet struct (scheduled from time.c) */ | 479 | if (currentleds != lastleds) |
494 | DECLARE_TASKLET_DISABLED(led_tasklet, led_tasklet_func, 0); | 480 | { |
481 | led_func_ptr(currentleds); /* Update the LCD/LEDs */ | ||
482 | lastleds = currentleds; | ||
483 | } | ||
495 | 484 | ||
485 | queue_delayed_work(led_wq, &led_task, LED_UPDATE_INTERVAL); | ||
486 | } | ||
496 | 487 | ||
497 | /* | 488 | /* |
498 | ** led_halt() | 489 | ** led_halt() |
@@ -522,9 +513,13 @@ static int led_halt(struct notifier_block *nb, unsigned long event, void *buf) | |||
522 | default: return NOTIFY_DONE; | 513 | default: return NOTIFY_DONE; |
523 | } | 514 | } |
524 | 515 | ||
525 | /* completely stop the LED/LCD tasklet */ | 516 | /* Cancel the work item and delete the queue */ |
526 | tasklet_disable(&led_tasklet); | 517 | if (led_wq) { |
527 | 518 | cancel_rearming_delayed_workqueue(led_wq, &led_task); | |
519 | destroy_workqueue(led_wq); | ||
520 | led_wq = NULL; | ||
521 | } | ||
522 | |||
528 | if (lcd_info.model == DISPLAY_MODEL_LCD) | 523 | if (lcd_info.model == DISPLAY_MODEL_LCD) |
529 | lcd_print(txt); | 524 | lcd_print(txt); |
530 | else | 525 | else |
@@ -559,7 +554,6 @@ int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long d | |||
559 | printk(KERN_INFO "LCD display at %lx,%lx registered\n", | 554 | printk(KERN_INFO "LCD display at %lx,%lx registered\n", |
560 | LCD_CMD_REG , LCD_DATA_REG); | 555 | LCD_CMD_REG , LCD_DATA_REG); |
561 | led_func_ptr = led_LCD_driver; | 556 | led_func_ptr = led_LCD_driver; |
562 | lcd_print( lcd_text_default ); | ||
563 | led_type = LED_HASLCD; | 557 | led_type = LED_HASLCD; |
564 | break; | 558 | break; |
565 | 559 | ||
@@ -589,9 +583,11 @@ int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long d | |||
589 | initialized++; | 583 | initialized++; |
590 | register_reboot_notifier(&led_notifier); | 584 | register_reboot_notifier(&led_notifier); |
591 | 585 | ||
592 | /* start the led tasklet for the first time */ | 586 | /* Ensure the work is queued */ |
593 | tasklet_enable(&led_tasklet); | 587 | if (led_wq) { |
594 | 588 | queue_work(led_wq, &led_task); | |
589 | } | ||
590 | |||
595 | return 0; | 591 | return 0; |
596 | } | 592 | } |
597 | 593 | ||
@@ -626,8 +622,8 @@ void __init register_led_regions(void) | |||
626 | ** lcd_print() | 622 | ** lcd_print() |
627 | ** | 623 | ** |
628 | ** Displays the given string on the LCD-Display of newer machines. | 624 | ** Displays the given string on the LCD-Display of newer machines. |
629 | ** lcd_print() disables the timer-based led tasklet during its | 625 | ** lcd_print() disables/enables the timer-based led work queue to |
630 | ** execution and enables it afterwards again. | 626 | ** avoid a race condition while writing the CMD/DATA register pair. |
631 | ** | 627 | ** |
632 | */ | 628 | */ |
633 | int lcd_print( char *str ) | 629 | int lcd_print( char *str ) |
@@ -637,12 +633,13 @@ int lcd_print( char *str ) | |||
637 | if (!led_func_ptr || lcd_info.model != DISPLAY_MODEL_LCD) | 633 | if (!led_func_ptr || lcd_info.model != DISPLAY_MODEL_LCD) |
638 | return 0; | 634 | return 0; |
639 | 635 | ||
640 | /* temporarily disable the led tasklet */ | 636 | /* temporarily disable the led work task */ |
641 | tasklet_disable(&led_tasklet); | 637 | if (led_wq) |
638 | cancel_rearming_delayed_workqueue(led_wq, &led_task); | ||
642 | 639 | ||
643 | /* copy display string to buffer for procfs */ | 640 | /* copy display string to buffer for procfs */ |
644 | strlcpy(lcd_text, str, sizeof(lcd_text)); | 641 | strlcpy(lcd_text, str, sizeof(lcd_text)); |
645 | 642 | ||
646 | /* Set LCD Cursor to 1st character */ | 643 | /* Set LCD Cursor to 1st character */ |
647 | gsc_writeb(lcd_info.reset_cmd1, LCD_CMD_REG); | 644 | gsc_writeb(lcd_info.reset_cmd1, LCD_CMD_REG); |
648 | udelay(lcd_info.min_cmd_delay); | 645 | udelay(lcd_info.min_cmd_delay); |
@@ -656,8 +653,10 @@ int lcd_print( char *str ) | |||
656 | udelay(lcd_info.min_cmd_delay); | 653 | udelay(lcd_info.min_cmd_delay); |
657 | } | 654 | } |
658 | 655 | ||
659 | /* re-enable the led tasklet */ | 656 | /* re-queue the work */ |
660 | tasklet_enable(&led_tasklet); | 657 | if (led_wq) { |
658 | queue_work(led_wq, &led_task); | ||
659 | } | ||
661 | 660 | ||
662 | return lcd_info.lcd_width; | 661 | return lcd_info.lcd_width; |
663 | } | 662 | } |
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c index 67c8f3b44848..273a74179720 100644 --- a/drivers/parisc/pdc_stable.c +++ b/drivers/parisc/pdc_stable.c | |||
@@ -536,7 +536,7 @@ pdcs_info_read(struct subsystem *entry, char *buf) | |||
536 | 536 | ||
537 | out += sprintf(out, "Memory tested: "); | 537 | out += sprintf(out, "Memory tested: "); |
538 | if ((result & 0x0F) < 0x0E) | 538 | if ((result & 0x0F) < 0x0E) |
539 | out += sprintf(out, "%.3f MB", 0.256*(1<<(result & 0x0F))); | 539 | out += sprintf(out, "%d kB", (1<<(result & 0x0F))*256); |
540 | else | 540 | else |
541 | out += sprintf(out, "All"); | 541 | out += sprintf(out, "All"); |
542 | out += sprintf(out, "\n"); | 542 | out += sprintf(out, "\n"); |
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index bd8b3e5a5cd7..c85653f315aa 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c | |||
@@ -91,8 +91,8 @@ extern struct proc_dir_entry * proc_mckinley_root; | |||
91 | #define DBG_RES(x...) | 91 | #define DBG_RES(x...) |
92 | #endif | 92 | #endif |
93 | 93 | ||
94 | #if defined(__LP64__) && !defined(CONFIG_PDC_NARROW) | 94 | #if defined(CONFIG_64BIT) |
95 | /* "low end" PA8800 machines use ZX1 chipset */ | 95 | /* "low end" PA8800 machines use ZX1 chipset: PAT PDC and only run 64-bit */ |
96 | #define ZX1_SUPPORT | 96 | #define ZX1_SUPPORT |
97 | #endif | 97 | #endif |
98 | 98 | ||
@@ -231,7 +231,7 @@ struct ioc { | |||
231 | spinlock_t res_lock; | 231 | spinlock_t res_lock; |
232 | unsigned int res_bitshift; /* from the LEFT! */ | 232 | unsigned int res_bitshift; /* from the LEFT! */ |
233 | unsigned int res_size; /* size of resource map in bytes */ | 233 | unsigned int res_size; /* size of resource map in bytes */ |
234 | #if SBA_HINT_SUPPORT | 234 | #ifdef SBA_HINT_SUPPORT |
235 | /* FIXME : DMA HINTs not used */ | 235 | /* FIXME : DMA HINTs not used */ |
236 | unsigned long hint_mask_pdir; /* bits used for DMA hints */ | 236 | unsigned long hint_mask_pdir; /* bits used for DMA hints */ |
237 | unsigned int hint_shift_pdir; | 237 | unsigned int hint_shift_pdir; |
@@ -294,7 +294,7 @@ static unsigned long piranha_bad_128k = 0; | |||
294 | /* Looks nice and keeps the compiler happy */ | 294 | /* Looks nice and keeps the compiler happy */ |
295 | #define SBA_DEV(d) ((struct sba_device *) (d)) | 295 | #define SBA_DEV(d) ((struct sba_device *) (d)) |
296 | 296 | ||
297 | #if SBA_AGP_SUPPORT | 297 | #ifdef SBA_AGP_SUPPORT |
298 | static int reserve_sba_gart = 1; | 298 | static int reserve_sba_gart = 1; |
299 | #endif | 299 | #endif |
300 | 300 | ||
@@ -314,7 +314,7 @@ static int reserve_sba_gart = 1; | |||
314 | #define WRITE_REG32(val, addr) __raw_writel(cpu_to_le32(val), addr) | 314 | #define WRITE_REG32(val, addr) __raw_writel(cpu_to_le32(val), addr) |
315 | #define WRITE_REG64(val, addr) __raw_writeq(cpu_to_le64(val), addr) | 315 | #define WRITE_REG64(val, addr) __raw_writeq(cpu_to_le64(val), addr) |
316 | 316 | ||
317 | #ifdef __LP64__ | 317 | #ifdef CONFIG_64BIT |
318 | #define READ_REG(addr) READ_REG64(addr) | 318 | #define READ_REG(addr) READ_REG64(addr) |
319 | #define WRITE_REG(value, addr) WRITE_REG64(value, addr) | 319 | #define WRITE_REG(value, addr) WRITE_REG64(value, addr) |
320 | #else | 320 | #else |
@@ -324,7 +324,7 @@ static int reserve_sba_gart = 1; | |||
324 | 324 | ||
325 | #ifdef DEBUG_SBA_INIT | 325 | #ifdef DEBUG_SBA_INIT |
326 | 326 | ||
327 | /* NOTE: When __LP64__ isn't defined, READ_REG64() is two 32-bit reads */ | 327 | /* NOTE: When CONFIG_64BIT isn't defined, READ_REG64() is two 32-bit reads */ |
328 | 328 | ||
329 | /** | 329 | /** |
330 | * sba_dump_ranges - debugging only - print ranges assigned to this IOA | 330 | * sba_dump_ranges - debugging only - print ranges assigned to this IOA |
@@ -364,7 +364,7 @@ static void sba_dump_tlb(void __iomem *hpa) | |||
364 | #else | 364 | #else |
365 | #define sba_dump_ranges(x) | 365 | #define sba_dump_ranges(x) |
366 | #define sba_dump_tlb(x) | 366 | #define sba_dump_tlb(x) |
367 | #endif | 367 | #endif /* DEBUG_SBA_INIT */ |
368 | 368 | ||
369 | 369 | ||
370 | #ifdef ASSERT_PDIR_SANITY | 370 | #ifdef ASSERT_PDIR_SANITY |
@@ -674,7 +674,7 @@ sba_free_range(struct ioc *ioc, dma_addr_t iova, size_t size) | |||
674 | * | 674 | * |
675 | ***************************************************************/ | 675 | ***************************************************************/ |
676 | 676 | ||
677 | #if SBA_HINT_SUPPORT | 677 | #ifdef SBA_HINT_SUPPORT |
678 | #define SBA_DMA_HINT(ioc, val) ((val) << (ioc)->hint_shift_pdir) | 678 | #define SBA_DMA_HINT(ioc, val) ((val) << (ioc)->hint_shift_pdir) |
679 | #endif | 679 | #endif |
680 | 680 | ||
@@ -743,9 +743,8 @@ sba_io_pdir_entry(u64 *pdir_ptr, space_t sid, unsigned long vba, | |||
743 | * (bit #61, big endian), we have to flush and sync every time | 743 | * (bit #61, big endian), we have to flush and sync every time |
744 | * IO-PDIR is changed in Ike/Astro. | 744 | * IO-PDIR is changed in Ike/Astro. |
745 | */ | 745 | */ |
746 | if (ioc_needs_fdc) { | 746 | if (ioc_needs_fdc) |
747 | asm volatile("fdc 0(%%sr1,%0)\n\tsync" : : "r" (pdir_ptr)); | 747 | asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr)); |
748 | } | ||
749 | } | 748 | } |
750 | 749 | ||
751 | 750 | ||
@@ -769,42 +768,57 @@ static SBA_INLINE void | |||
769 | sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt) | 768 | sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt) |
770 | { | 769 | { |
771 | u32 iovp = (u32) SBA_IOVP(ioc,iova); | 770 | u32 iovp = (u32) SBA_IOVP(ioc,iova); |
772 | 771 | u64 *pdir_ptr = &ioc->pdir_base[PDIR_INDEX(iovp)]; | |
773 | /* Even though this is a big-endian machine, the entries | ||
774 | ** in the iopdir are little endian. That's why we clear the byte | ||
775 | ** at +7 instead of at +0. | ||
776 | */ | ||
777 | int off = PDIR_INDEX(iovp)*sizeof(u64)+7; | ||
778 | 772 | ||
779 | #ifdef ASSERT_PDIR_SANITY | 773 | #ifdef ASSERT_PDIR_SANITY |
780 | /* Assert first pdir entry is set */ | 774 | /* Assert first pdir entry is set. |
781 | if (0x80 != (((u8 *) ioc->pdir_base)[off])) { | 775 | ** |
776 | ** Even though this is a big-endian machine, the entries | ||
777 | ** in the iopdir are little endian. That's why we look at | ||
778 | ** the byte at +7 instead of at +0. | ||
779 | */ | ||
780 | if (0x80 != (((u8 *) pdir_ptr)[7])) { | ||
782 | sba_dump_pdir_entry(ioc,"sba_mark_invalid()", PDIR_INDEX(iovp)); | 781 | sba_dump_pdir_entry(ioc,"sba_mark_invalid()", PDIR_INDEX(iovp)); |
783 | } | 782 | } |
784 | #endif | 783 | #endif |
785 | 784 | ||
786 | if (byte_cnt <= IOVP_SIZE) | 785 | if (byte_cnt > IOVP_SIZE) |
787 | { | 786 | { |
788 | iovp |= IOVP_SHIFT; /* set "size" field for PCOM */ | 787 | #if 0 |
788 | unsigned long entries_per_cacheline = ioc_needs_fdc ? | ||
789 | L1_CACHE_ALIGN(((unsigned long) pdir_ptr)) | ||
790 | - (unsigned long) pdir_ptr; | ||
791 | : 262144; | ||
792 | #endif | ||
789 | 793 | ||
790 | /* | 794 | /* set "size" field for PCOM */ |
791 | ** clear I/O PDIR entry "valid" bit | 795 | iovp |= get_order(byte_cnt) + PAGE_SHIFT; |
792 | ** Do NOT clear the rest - save it for debugging. | ||
793 | ** We should only clear bits that have previously | ||
794 | ** been enabled. | ||
795 | */ | ||
796 | ((u8 *)(ioc->pdir_base))[off] = 0; | ||
797 | } else { | ||
798 | u32 t = get_order(byte_cnt) + PAGE_SHIFT; | ||
799 | 796 | ||
800 | iovp |= t; | ||
801 | do { | 797 | do { |
802 | /* clear I/O Pdir entry "valid" bit first */ | 798 | /* clear I/O Pdir entry "valid" bit first */ |
803 | ((u8 *)(ioc->pdir_base))[off] = 0; | 799 | ((u8 *) pdir_ptr)[7] = 0; |
804 | off += sizeof(u64); | 800 | if (ioc_needs_fdc) { |
801 | asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr)); | ||
802 | #if 0 | ||
803 | entries_per_cacheline = L1_CACHE_SHIFT - 3; | ||
804 | #endif | ||
805 | } | ||
806 | pdir_ptr++; | ||
805 | byte_cnt -= IOVP_SIZE; | 807 | byte_cnt -= IOVP_SIZE; |
806 | } while (byte_cnt > 0); | 808 | } while (byte_cnt > IOVP_SIZE); |
807 | } | 809 | } else |
810 | iovp |= IOVP_SHIFT; /* set "size" field for PCOM */ | ||
811 | |||
812 | /* | ||
813 | ** clear I/O PDIR entry "valid" bit. | ||
814 | ** We have to R/M/W the cacheline regardless how much of the | ||
815 | ** pdir entry that we clobber. | ||
816 | ** The rest of the entry would be useful for debugging if we | ||
817 | ** could dump core on HPMC. | ||
818 | */ | ||
819 | ((u8 *) pdir_ptr)[7] = 0; | ||
820 | if (ioc_needs_fdc) | ||
821 | asm volatile("fdc %%r0(%0)" : : "r" (pdir_ptr)); | ||
808 | 822 | ||
809 | WRITE_REG( SBA_IOVA(ioc, iovp, 0, 0), ioc->ioc_hpa+IOC_PCOM); | 823 | WRITE_REG( SBA_IOVA(ioc, iovp, 0, 0), ioc->ioc_hpa+IOC_PCOM); |
810 | } | 824 | } |
@@ -819,18 +833,29 @@ sba_mark_invalid(struct ioc *ioc, dma_addr_t iova, size_t byte_cnt) | |||
819 | static int sba_dma_supported( struct device *dev, u64 mask) | 833 | static int sba_dma_supported( struct device *dev, u64 mask) |
820 | { | 834 | { |
821 | struct ioc *ioc; | 835 | struct ioc *ioc; |
836 | |||
822 | if (dev == NULL) { | 837 | if (dev == NULL) { |
823 | printk(KERN_ERR MODULE_NAME ": EISA/ISA/et al not supported\n"); | 838 | printk(KERN_ERR MODULE_NAME ": EISA/ISA/et al not supported\n"); |
824 | BUG(); | 839 | BUG(); |
825 | return(0); | 840 | return(0); |
826 | } | 841 | } |
827 | 842 | ||
828 | ioc = GET_IOC(dev); | 843 | /* Documentation/DMA-mapping.txt tells drivers to try 64-bit first, |
844 | * then fall back to 32-bit if that fails. | ||
845 | * We are just "encouraging" 32-bit DMA masks here since we can | ||
846 | * never allow IOMMU bypass unless we add special support for ZX1. | ||
847 | */ | ||
848 | if (mask > ~0U) | ||
849 | return 0; | ||
829 | 850 | ||
830 | /* check if mask is > than the largest IO Virt Address */ | 851 | ioc = GET_IOC(dev); |
831 | 852 | ||
832 | return((int) (mask >= (ioc->ibase + | 853 | /* |
833 | (ioc->pdir_size / sizeof(u64) * IOVP_SIZE) ))); | 854 | * check if mask is >= than the current max IO Virt Address |
855 | * The max IO Virt address will *always* < 30 bits. | ||
856 | */ | ||
857 | return((int)(mask >= (ioc->ibase - 1 + | ||
858 | (ioc->pdir_size / sizeof(u64) * IOVP_SIZE) ))); | ||
834 | } | 859 | } |
835 | 860 | ||
836 | 861 | ||
@@ -898,11 +923,17 @@ sba_map_single(struct device *dev, void *addr, size_t size, | |||
898 | size -= IOVP_SIZE; | 923 | size -= IOVP_SIZE; |
899 | pdir_start++; | 924 | pdir_start++; |
900 | } | 925 | } |
901 | /* form complete address */ | 926 | |
927 | /* force FDC ops in io_pdir_entry() to be visible to IOMMU */ | ||
928 | if (ioc_needs_fdc) | ||
929 | asm volatile("sync" : : ); | ||
930 | |||
902 | #ifdef ASSERT_PDIR_SANITY | 931 | #ifdef ASSERT_PDIR_SANITY |
903 | sba_check_pdir(ioc,"Check after sba_map_single()"); | 932 | sba_check_pdir(ioc,"Check after sba_map_single()"); |
904 | #endif | 933 | #endif |
905 | spin_unlock_irqrestore(&ioc->res_lock, flags); | 934 | spin_unlock_irqrestore(&ioc->res_lock, flags); |
935 | |||
936 | /* form complete address */ | ||
906 | return SBA_IOVA(ioc, iovp, offset, DEFAULT_DMA_HINT_REG); | 937 | return SBA_IOVA(ioc, iovp, offset, DEFAULT_DMA_HINT_REG); |
907 | } | 938 | } |
908 | 939 | ||
@@ -958,12 +989,19 @@ sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size, | |||
958 | d--; | 989 | d--; |
959 | } | 990 | } |
960 | ioc->saved_cnt = 0; | 991 | ioc->saved_cnt = 0; |
992 | |||
961 | READ_REG(ioc->ioc_hpa+IOC_PCOM); /* flush purges */ | 993 | READ_REG(ioc->ioc_hpa+IOC_PCOM); /* flush purges */ |
962 | } | 994 | } |
963 | #else /* DELAYED_RESOURCE_CNT == 0 */ | 995 | #else /* DELAYED_RESOURCE_CNT == 0 */ |
964 | sba_free_range(ioc, iova, size); | 996 | sba_free_range(ioc, iova, size); |
997 | |||
998 | /* If fdc's were issued, force fdc's to be visible now */ | ||
999 | if (ioc_needs_fdc) | ||
1000 | asm volatile("sync" : : ); | ||
1001 | |||
965 | READ_REG(ioc->ioc_hpa+IOC_PCOM); /* flush purges */ | 1002 | READ_REG(ioc->ioc_hpa+IOC_PCOM); /* flush purges */ |
966 | #endif /* DELAYED_RESOURCE_CNT == 0 */ | 1003 | #endif /* DELAYED_RESOURCE_CNT == 0 */ |
1004 | |||
967 | spin_unlock_irqrestore(&ioc->res_lock, flags); | 1005 | spin_unlock_irqrestore(&ioc->res_lock, flags); |
968 | 1006 | ||
969 | /* XXX REVISIT for 2.5 Linux - need syncdma for zero-copy support. | 1007 | /* XXX REVISIT for 2.5 Linux - need syncdma for zero-copy support. |
@@ -1106,6 +1144,10 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
1106 | */ | 1144 | */ |
1107 | filled = iommu_fill_pdir(ioc, sglist, nents, 0, sba_io_pdir_entry); | 1145 | filled = iommu_fill_pdir(ioc, sglist, nents, 0, sba_io_pdir_entry); |
1108 | 1146 | ||
1147 | /* force FDC ops in io_pdir_entry() to be visible to IOMMU */ | ||
1148 | if (ioc_needs_fdc) | ||
1149 | asm volatile("sync" : : ); | ||
1150 | |||
1109 | #ifdef ASSERT_PDIR_SANITY | 1151 | #ifdef ASSERT_PDIR_SANITY |
1110 | if (sba_check_pdir(ioc,"Check after sba_map_sg()")) | 1152 | if (sba_check_pdir(ioc,"Check after sba_map_sg()")) |
1111 | { | 1153 | { |
@@ -1234,8 +1276,10 @@ sba_alloc_pdir(unsigned int pdir_size) | |||
1234 | unsigned long pdir_order = get_order(pdir_size); | 1276 | unsigned long pdir_order = get_order(pdir_size); |
1235 | 1277 | ||
1236 | pdir_base = __get_free_pages(GFP_KERNEL, pdir_order); | 1278 | pdir_base = __get_free_pages(GFP_KERNEL, pdir_order); |
1237 | if (NULL == (void *) pdir_base) | 1279 | if (NULL == (void *) pdir_base) { |
1238 | panic("sba_ioc_init() could not allocate I/O Page Table\n"); | 1280 | panic("%s() could not allocate I/O Page Table\n", |
1281 | __FUNCTION__); | ||
1282 | } | ||
1239 | 1283 | ||
1240 | /* If this is not PA8700 (PCX-W2) | 1284 | /* If this is not PA8700 (PCX-W2) |
1241 | ** OR newer than ver 2.2 | 1285 | ** OR newer than ver 2.2 |
@@ -1322,19 +1366,29 @@ sba_alloc_pdir(unsigned int pdir_size) | |||
1322 | return (void *) pdir_base; | 1366 | return (void *) pdir_base; |
1323 | } | 1367 | } |
1324 | 1368 | ||
1369 | static struct device *next_device(struct klist_iter *i) | ||
1370 | { | ||
1371 | struct klist_node * n = klist_next(i); | ||
1372 | return n ? container_of(n, struct device, knode_parent) : NULL; | ||
1373 | } | ||
1374 | |||
1325 | /* setup Mercury or Elroy IBASE/IMASK registers. */ | 1375 | /* setup Mercury or Elroy IBASE/IMASK registers. */ |
1326 | static void setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | 1376 | static void |
1377 | setup_ibase_imask(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | ||
1327 | { | 1378 | { |
1328 | /* lba_set_iregs() is in drivers/parisc/lba_pci.c */ | 1379 | /* lba_set_iregs() is in drivers/parisc/lba_pci.c */ |
1329 | extern void lba_set_iregs(struct parisc_device *, u32, u32); | 1380 | extern void lba_set_iregs(struct parisc_device *, u32, u32); |
1330 | struct device *dev; | 1381 | struct device *dev; |
1382 | struct klist_iter i; | ||
1331 | 1383 | ||
1332 | list_for_each_entry(dev, &sba->dev.children, node) { | 1384 | klist_iter_init(&sba->dev.klist_children, &i); |
1385 | while ((dev = next_device(&i))) { | ||
1333 | struct parisc_device *lba = to_parisc_device(dev); | 1386 | struct parisc_device *lba = to_parisc_device(dev); |
1334 | int rope_num = (lba->hpa >> 13) & 0xf; | 1387 | int rope_num = (lba->hpa.start >> 13) & 0xf; |
1335 | if (rope_num >> 3 == ioc_num) | 1388 | if (rope_num >> 3 == ioc_num) |
1336 | lba_set_iregs(lba, ioc->ibase, ioc->imask); | 1389 | lba_set_iregs(lba, ioc->ibase, ioc->imask); |
1337 | } | 1390 | } |
1391 | klist_iter_exit(&i); | ||
1338 | } | 1392 | } |
1339 | 1393 | ||
1340 | static void | 1394 | static void |
@@ -1343,7 +1397,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1343 | u32 iova_space_mask; | 1397 | u32 iova_space_mask; |
1344 | u32 iova_space_size; | 1398 | u32 iova_space_size; |
1345 | int iov_order, tcnfg; | 1399 | int iov_order, tcnfg; |
1346 | #if SBA_AGP_SUPPORT | 1400 | #ifdef SBA_AGP_SUPPORT |
1347 | int agp_found = 0; | 1401 | int agp_found = 0; |
1348 | #endif | 1402 | #endif |
1349 | /* | 1403 | /* |
@@ -1380,7 +1434,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1380 | DBG_INIT("%s() pdir %p size %x\n", | 1434 | DBG_INIT("%s() pdir %p size %x\n", |
1381 | __FUNCTION__, ioc->pdir_base, ioc->pdir_size); | 1435 | __FUNCTION__, ioc->pdir_base, ioc->pdir_size); |
1382 | 1436 | ||
1383 | #if SBA_HINT_SUPPORT | 1437 | #ifdef SBA_HINT_SUPPORT |
1384 | ioc->hint_shift_pdir = iov_order + PAGE_SHIFT; | 1438 | ioc->hint_shift_pdir = iov_order + PAGE_SHIFT; |
1385 | ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT)); | 1439 | ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT)); |
1386 | 1440 | ||
@@ -1404,7 +1458,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1404 | 1458 | ||
1405 | WRITE_REG(ioc->imask, ioc->ioc_hpa + IOC_IMASK); | 1459 | WRITE_REG(ioc->imask, ioc->ioc_hpa + IOC_IMASK); |
1406 | 1460 | ||
1407 | #ifdef __LP64__ | 1461 | #ifdef CONFIG_64BIT |
1408 | /* | 1462 | /* |
1409 | ** Setting the upper bits makes checking for bypass addresses | 1463 | ** Setting the upper bits makes checking for bypass addresses |
1410 | ** a little faster later on. | 1464 | ** a little faster later on. |
@@ -1437,7 +1491,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1437 | */ | 1491 | */ |
1438 | WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM); | 1492 | WRITE_REG(ioc->ibase | 31, ioc->ioc_hpa + IOC_PCOM); |
1439 | 1493 | ||
1440 | #if SBA_AGP_SUPPORT | 1494 | #ifdef SBA_AGP_SUPPORT |
1441 | /* | 1495 | /* |
1442 | ** If an AGP device is present, only use half of the IOV space | 1496 | ** If an AGP device is present, only use half of the IOV space |
1443 | ** for PCI DMA. Unfortunately we can't know ahead of time | 1497 | ** for PCI DMA. Unfortunately we can't know ahead of time |
@@ -1489,11 +1543,9 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1489 | if (iova_space_size < (1 << (20 - PAGE_SHIFT))) { | 1543 | if (iova_space_size < (1 << (20 - PAGE_SHIFT))) { |
1490 | iova_space_size = 1 << (20 - PAGE_SHIFT); | 1544 | iova_space_size = 1 << (20 - PAGE_SHIFT); |
1491 | } | 1545 | } |
1492 | #ifdef __LP64__ | ||
1493 | else if (iova_space_size > (1 << (30 - PAGE_SHIFT))) { | 1546 | else if (iova_space_size > (1 << (30 - PAGE_SHIFT))) { |
1494 | iova_space_size = 1 << (30 - PAGE_SHIFT); | 1547 | iova_space_size = 1 << (30 - PAGE_SHIFT); |
1495 | } | 1548 | } |
1496 | #endif | ||
1497 | 1549 | ||
1498 | /* | 1550 | /* |
1499 | ** iova space must be log2() in size. | 1551 | ** iova space must be log2() in size. |
@@ -1519,7 +1571,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1519 | DBG_INIT("%s() pdir %p size %x\n", | 1571 | DBG_INIT("%s() pdir %p size %x\n", |
1520 | __FUNCTION__, ioc->pdir_base, pdir_size); | 1572 | __FUNCTION__, ioc->pdir_base, pdir_size); |
1521 | 1573 | ||
1522 | #if SBA_HINT_SUPPORT | 1574 | #ifdef SBA_HINT_SUPPORT |
1523 | /* FIXME : DMA HINTs not used */ | 1575 | /* FIXME : DMA HINTs not used */ |
1524 | ioc->hint_shift_pdir = iov_order + PAGE_SHIFT; | 1576 | ioc->hint_shift_pdir = iov_order + PAGE_SHIFT; |
1525 | ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT)); | 1577 | ioc->hint_mask_pdir = ~(0x3 << (iov_order + PAGE_SHIFT)); |
@@ -1590,7 +1642,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1590 | 1642 | ||
1591 | static void __iomem *ioc_remap(struct sba_device *sba_dev, int offset) | 1643 | static void __iomem *ioc_remap(struct sba_device *sba_dev, int offset) |
1592 | { | 1644 | { |
1593 | return ioremap(sba_dev->dev->hpa + offset, SBA_FUNC_SIZE); | 1645 | return ioremap(sba_dev->dev->hpa.start + offset, SBA_FUNC_SIZE); |
1594 | } | 1646 | } |
1595 | 1647 | ||
1596 | static void sba_hw_init(struct sba_device *sba_dev) | 1648 | static void sba_hw_init(struct sba_device *sba_dev) |
@@ -1968,7 +2020,7 @@ sba_driver_callback(struct parisc_device *dev) | |||
1968 | u32 func_class; | 2020 | u32 func_class; |
1969 | int i; | 2021 | int i; |
1970 | char *version; | 2022 | char *version; |
1971 | void __iomem *sba_addr = ioremap(dev->hpa, SBA_FUNC_SIZE); | 2023 | void __iomem *sba_addr = ioremap(dev->hpa.start, SBA_FUNC_SIZE); |
1972 | 2024 | ||
1973 | sba_dump_ranges(sba_addr); | 2025 | sba_dump_ranges(sba_addr); |
1974 | 2026 | ||
@@ -2010,7 +2062,7 @@ sba_driver_callback(struct parisc_device *dev) | |||
2010 | } | 2062 | } |
2011 | 2063 | ||
2012 | printk(KERN_INFO "%s found %s at 0x%lx\n", | 2064 | printk(KERN_INFO "%s found %s at 0x%lx\n", |
2013 | MODULE_NAME, version, dev->hpa); | 2065 | MODULE_NAME, version, dev->hpa.start); |
2014 | 2066 | ||
2015 | sba_dev = kmalloc(sizeof(struct sba_device), GFP_KERNEL); | 2067 | sba_dev = kmalloc(sizeof(struct sba_device), GFP_KERNEL); |
2016 | if (!sba_dev) { | 2068 | if (!sba_dev) { |
diff --git a/drivers/parisc/superio.c b/drivers/parisc/superio.c index e0efed796b92..bab3bcabcb6e 100644 --- a/drivers/parisc/superio.c +++ b/drivers/parisc/superio.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * (C) Copyright 2000 Alex deVries <alex@onefishtwo.ca> | 11 | * (C) Copyright 2000 Alex deVries <alex@onefishtwo.ca> |
12 | * (C) Copyright 2001 John Marvin <jsm fc hp com> | 12 | * (C) Copyright 2001 John Marvin <jsm fc hp com> |
13 | * (C) Copyright 2003 Grant Grundler <grundler parisc-linux org> | 13 | * (C) Copyright 2003 Grant Grundler <grundler parisc-linux org> |
14 | * (C) Copyright 2005 Kyle McMartin <kyle@parisc-linux.org> | ||
14 | * | 15 | * |
15 | * This program is free software; you can redistribute it and/or | 16 | * This program is free software; you can redistribute it and/or |
16 | * modify it under the terms of the GNU General Public License as | 17 | * modify it under the terms of the GNU General Public License as |
@@ -405,6 +406,7 @@ static void __devinit superio_serial_init(void) | |||
405 | 406 | ||
406 | serial[0].iobase = sio_dev.sp1_base; | 407 | serial[0].iobase = sio_dev.sp1_base; |
407 | serial[0].irq = SP1_IRQ; | 408 | serial[0].irq = SP1_IRQ; |
409 | spin_lock_init(&serial[0].lock); | ||
408 | 410 | ||
409 | retval = early_serial_setup(&serial[0]); | 411 | retval = early_serial_setup(&serial[0]); |
410 | if (retval < 0) { | 412 | if (retval < 0) { |
@@ -414,6 +416,7 @@ static void __devinit superio_serial_init(void) | |||
414 | 416 | ||
415 | serial[1].iobase = sio_dev.sp2_base; | 417 | serial[1].iobase = sio_dev.sp2_base; |
416 | serial[1].irq = SP2_IRQ; | 418 | serial[1].irq = SP2_IRQ; |
419 | spin_lock_init(&serial[1].lock); | ||
417 | retval = early_serial_setup(&serial[1]); | 420 | retval = early_serial_setup(&serial[1]); |
418 | 421 | ||
419 | if (retval < 0) | 422 | if (retval < 0) |
diff --git a/drivers/parisc/wax.c b/drivers/parisc/wax.c index e547d7d024d8..17dce2adf7fe 100644 --- a/drivers/parisc/wax.c +++ b/drivers/parisc/wax.c | |||
@@ -81,7 +81,7 @@ wax_init_chip(struct parisc_device *dev) | |||
81 | return -ENOMEM; | 81 | return -ENOMEM; |
82 | 82 | ||
83 | wax->name = "wax"; | 83 | wax->name = "wax"; |
84 | wax->hpa = dev->hpa; | 84 | wax->hpa = dev->hpa.start; |
85 | 85 | ||
86 | wax->version = 0; /* gsc_readb(wax->hpa+WAX_VER); */ | 86 | wax->version = 0; /* gsc_readb(wax->hpa+WAX_VER); */ |
87 | printk(KERN_INFO "%s at 0x%lx found.\n", wax->name, wax->hpa); | 87 | printk(KERN_INFO "%s at 0x%lx found.\n", wax->name, wax->hpa); |
diff --git a/drivers/parport/parport_gsc.c b/drivers/parport/parport_gsc.c index 02d72acd1c89..fde29a75f888 100644 --- a/drivers/parport/parport_gsc.c +++ b/drivers/parport/parport_gsc.c | |||
@@ -359,11 +359,12 @@ static int __devinit parport_init_chip(struct parisc_device *dev) | |||
359 | unsigned long port; | 359 | unsigned long port; |
360 | 360 | ||
361 | if (!dev->irq) { | 361 | if (!dev->irq) { |
362 | printk("IRQ not found for parallel device at 0x%lx\n", dev->hpa); | 362 | printk(KERN_WARNING "IRQ not found for parallel device at 0x%lx\n", |
363 | dev->hpa.start); | ||
363 | return -ENODEV; | 364 | return -ENODEV; |
364 | } | 365 | } |
365 | 366 | ||
366 | port = dev->hpa + PARPORT_GSC_OFFSET; | 367 | port = dev->hpa.start + PARPORT_GSC_OFFSET; |
367 | 368 | ||
368 | /* some older machines with ASP-chip don't support | 369 | /* some older machines with ASP-chip don't support |
369 | * the enhanced parport modes. | 370 | * the enhanced parport modes. |
diff --git a/drivers/scsi/lasi700.c b/drivers/scsi/lasi700.c index 4cbb6187cc44..459a4daebece 100644 --- a/drivers/scsi/lasi700.c +++ b/drivers/scsi/lasi700.c | |||
@@ -98,7 +98,7 @@ MODULE_DEVICE_TABLE(parisc, lasi700_ids); | |||
98 | static int __init | 98 | static int __init |
99 | lasi700_probe(struct parisc_device *dev) | 99 | lasi700_probe(struct parisc_device *dev) |
100 | { | 100 | { |
101 | unsigned long base = dev->hpa + LASI_SCSI_CORE_OFFSET; | 101 | unsigned long base = dev->hpa.start + LASI_SCSI_CORE_OFFSET; |
102 | struct NCR_700_Host_Parameters *hostdata; | 102 | struct NCR_700_Host_Parameters *hostdata; |
103 | struct Scsi_Host *host; | 103 | struct Scsi_Host *host; |
104 | 104 | ||
@@ -125,8 +125,6 @@ lasi700_probe(struct parisc_device *dev) | |||
125 | hostdata->dmode_extra = DMODE_FC2; | 125 | hostdata->dmode_extra = DMODE_FC2; |
126 | } | 126 | } |
127 | 127 | ||
128 | NCR_700_set_mem_mapped(hostdata); | ||
129 | |||
130 | host = NCR_700_detect(&lasi700_template, hostdata, &dev->dev); | 128 | host = NCR_700_detect(&lasi700_template, hostdata, &dev->dev); |
131 | if (!host) | 129 | if (!host) |
132 | goto out_kfree; | 130 | goto out_kfree; |
@@ -168,7 +166,7 @@ lasi700_driver_remove(struct parisc_device *dev) | |||
168 | } | 166 | } |
169 | 167 | ||
170 | static struct parisc_driver lasi700_driver = { | 168 | static struct parisc_driver lasi700_driver = { |
171 | .name = "Lasi SCSI", | 169 | .name = "lasi_scsi", |
172 | .id_table = lasi700_ids, | 170 | .id_table = lasi700_ids, |
173 | .probe = lasi700_probe, | 171 | .probe = lasi700_probe, |
174 | .remove = __devexit_p(lasi700_driver_remove), | 172 | .remove = __devexit_p(lasi700_driver_remove), |
diff --git a/drivers/scsi/zalon.c b/drivers/scsi/zalon.c index 5a51051e31f0..b131432c677d 100644 --- a/drivers/scsi/zalon.c +++ b/drivers/scsi/zalon.c | |||
@@ -88,7 +88,7 @@ zalon_probe(struct parisc_device *dev) | |||
88 | struct gsc_irq gsc_irq; | 88 | struct gsc_irq gsc_irq; |
89 | u32 zalon_vers; | 89 | u32 zalon_vers; |
90 | int error = -ENODEV; | 90 | int error = -ENODEV; |
91 | void __iomem *zalon = ioremap(dev->hpa, 4096); | 91 | void __iomem *zalon = ioremap(dev->hpa.start, 4096); |
92 | void __iomem *io_port = zalon + GSC_SCSI_ZALON_OFFSET; | 92 | void __iomem *io_port = zalon + GSC_SCSI_ZALON_OFFSET; |
93 | static int unit = 0; | 93 | static int unit = 0; |
94 | struct Scsi_Host *host; | 94 | struct Scsi_Host *host; |
@@ -127,7 +127,7 @@ zalon_probe(struct parisc_device *dev) | |||
127 | device.chip = zalon720_chip; | 127 | device.chip = zalon720_chip; |
128 | device.host_id = 7; | 128 | device.host_id = 7; |
129 | device.dev = &dev->dev; | 129 | device.dev = &dev->dev; |
130 | device.slot.base = dev->hpa + GSC_SCSI_ZALON_OFFSET; | 130 | device.slot.base = dev->hpa.start + GSC_SCSI_ZALON_OFFSET; |
131 | device.slot.base_v = io_port; | 131 | device.slot.base_v = io_port; |
132 | device.slot.irq = dev->irq; | 132 | device.slot.irq = dev->irq; |
133 | device.differential = 2; | 133 | device.differential = 2; |
diff --git a/drivers/serial/8250_gsc.c b/drivers/serial/8250_gsc.c index 431aa5761a7a..8b4947933d9b 100644 --- a/drivers/serial/8250_gsc.c +++ b/drivers/serial/8250_gsc.c | |||
@@ -29,7 +29,6 @@ | |||
29 | static int __init | 29 | static int __init |
30 | serial_init_chip(struct parisc_device *dev) | 30 | serial_init_chip(struct parisc_device *dev) |
31 | { | 31 | { |
32 | static int serial_line_nr; | ||
33 | struct uart_port port; | 32 | struct uart_port port; |
34 | unsigned long address; | 33 | unsigned long address; |
35 | int err; | 34 | int err; |
@@ -42,12 +41,13 @@ serial_init_chip(struct parisc_device *dev) | |||
42 | */ | 41 | */ |
43 | if (parisc_parent(dev)->id.hw_type != HPHW_IOA) { | 42 | if (parisc_parent(dev)->id.hw_type != HPHW_IOA) { |
44 | printk(KERN_INFO "Serial: device 0x%lx not configured.\n" | 43 | printk(KERN_INFO "Serial: device 0x%lx not configured.\n" |
45 | "Enable support for Wax, Lasi, Asp or Dino.\n", dev->hpa); | 44 | "Enable support for Wax, Lasi, Asp or Dino.\n", |
45 | dev->hpa.start); | ||
46 | } | 46 | } |
47 | return -ENODEV; | 47 | return -ENODEV; |
48 | } | 48 | } |
49 | 49 | ||
50 | address = dev->hpa; | 50 | address = dev->hpa.start; |
51 | if (dev->id.sversion != 0x8d) { | 51 | if (dev->id.sversion != 0x8d) { |
52 | address += 0x800; | 52 | address += 0x800; |
53 | } | 53 | } |
diff --git a/drivers/serial/mux.c b/drivers/serial/mux.c index 189064607709..660bae5ba179 100644 --- a/drivers/serial/mux.c +++ b/drivers/serial/mux.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/delay.h> /* for udelay */ | 27 | #include <linux/delay.h> /* for udelay */ |
28 | #include <linux/device.h> | 28 | #include <linux/device.h> |
29 | #include <asm/io.h> | 29 | #include <asm/io.h> |
30 | #include <asm/irq.h> | ||
30 | #include <asm/parisc-device.h> | 31 | #include <asm/parisc-device.h> |
31 | 32 | ||
32 | #ifdef CONFIG_MAGIC_SYSRQ | 33 | #ifdef CONFIG_MAGIC_SYSRQ |
@@ -444,7 +445,7 @@ static int __init mux_probe(struct parisc_device *dev) | |||
444 | unsigned long bytecnt; | 445 | unsigned long bytecnt; |
445 | struct uart_port *port; | 446 | struct uart_port *port; |
446 | 447 | ||
447 | status = pdc_iodc_read(&bytecnt, dev->hpa, 0, iodc_data, 32); | 448 | status = pdc_iodc_read(&bytecnt, dev->hpa.start, 0, iodc_data, 32); |
448 | if(status != PDC_OK) { | 449 | if(status != PDC_OK) { |
449 | printk(KERN_ERR "Serial mux: Unable to read IODC.\n"); | 450 | printk(KERN_ERR "Serial mux: Unable to read IODC.\n"); |
450 | return 1; | 451 | return 1; |
@@ -469,16 +470,18 @@ static int __init mux_probe(struct parisc_device *dev) | |||
469 | for(i = 0; i < ports; ++i, ++port_cnt) { | 470 | for(i = 0; i < ports; ++i, ++port_cnt) { |
470 | port = &mux_ports[port_cnt]; | 471 | port = &mux_ports[port_cnt]; |
471 | port->iobase = 0; | 472 | port->iobase = 0; |
472 | port->mapbase = dev->hpa + MUX_OFFSET + (i * MUX_LINE_OFFSET); | 473 | port->mapbase = dev->hpa.start + MUX_OFFSET + |
474 | (i * MUX_LINE_OFFSET); | ||
473 | port->membase = ioremap(port->mapbase, MUX_LINE_OFFSET); | 475 | port->membase = ioremap(port->mapbase, MUX_LINE_OFFSET); |
474 | port->iotype = SERIAL_IO_MEM; | 476 | port->iotype = SERIAL_IO_MEM; |
475 | port->type = PORT_MUX; | 477 | port->type = PORT_MUX; |
476 | port->irq = SERIAL_IRQ_NONE; | 478 | port->irq = NO_IRQ; |
477 | port->uartclk = 0; | 479 | port->uartclk = 0; |
478 | port->fifosize = MUX_FIFO_SIZE; | 480 | port->fifosize = MUX_FIFO_SIZE; |
479 | port->ops = &mux_pops; | 481 | port->ops = &mux_pops; |
480 | port->flags = UPF_BOOT_AUTOCONF; | 482 | port->flags = UPF_BOOT_AUTOCONF; |
481 | port->line = port_cnt; | 483 | port->line = port_cnt; |
484 | spin_lock_init(&port->lock); | ||
482 | status = uart_add_one_port(&mux_driver, port); | 485 | status = uart_add_one_port(&mux_driver, port); |
483 | BUG_ON(status); | 486 | BUG_ON(status); |
484 | } | 487 | } |
@@ -497,7 +500,7 @@ static struct parisc_device_id mux_tbl[] = { | |||
497 | MODULE_DEVICE_TABLE(parisc, mux_tbl); | 500 | MODULE_DEVICE_TABLE(parisc, mux_tbl); |
498 | 501 | ||
499 | static struct parisc_driver serial_mux_driver = { | 502 | static struct parisc_driver serial_mux_driver = { |
500 | .name = "Serial MUX", | 503 | .name = "serial_mux", |
501 | .id_table = mux_tbl, | 504 | .id_table = mux_tbl, |
502 | .probe = mux_probe, | 505 | .probe = mux_probe, |
503 | }; | 506 | }; |
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig index eb83a7874c71..7e731691e2a9 100644 --- a/drivers/video/console/Kconfig +++ b/drivers/video/console/Kconfig | |||
@@ -110,7 +110,7 @@ config STI_CONSOLE | |||
110 | 110 | ||
111 | config FONTS | 111 | config FONTS |
112 | bool "Select compiled-in fonts" | 112 | bool "Select compiled-in fonts" |
113 | depends on FRAMEBUFFER_CONSOLE | 113 | depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE |
114 | help | 114 | help |
115 | Say Y here if you would like to use fonts other than the default | 115 | Say Y here if you would like to use fonts other than the default |
116 | your frame buffer console usually use. | 116 | your frame buffer console usually use. |
@@ -123,7 +123,7 @@ config FONTS | |||
123 | 123 | ||
124 | config FONT_8x8 | 124 | config FONT_8x8 |
125 | bool "VGA 8x8 font" if FONTS | 125 | bool "VGA 8x8 font" if FONTS |
126 | depends on FRAMEBUFFER_CONSOLE | 126 | depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE |
127 | default y if !SPARC32 && !SPARC64 && !FONTS | 127 | default y if !SPARC32 && !SPARC64 && !FONTS |
128 | help | 128 | help |
129 | This is the "high resolution" font for the VGA frame buffer (the one | 129 | This is the "high resolution" font for the VGA frame buffer (the one |
@@ -137,7 +137,7 @@ config FONT_8x8 | |||
137 | 137 | ||
138 | config FONT_8x16 | 138 | config FONT_8x16 |
139 | bool "VGA 8x16 font" if FONTS | 139 | bool "VGA 8x16 font" if FONTS |
140 | depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE=y || USB_SISUSBVGA_CON | 140 | depends on FRAMEBUFFER_CONSOLE || SGI_NEWPORT_CONSOLE=y || STI_CONSOLE || USB_SISUSBVGA_CON |
141 | default y if !SPARC32 && !SPARC64 && !FONTS | 141 | default y if !SPARC32 && !SPARC64 && !FONTS |
142 | help | 142 | help |
143 | This is the "high resolution" font for the VGA frame buffer (the one | 143 | This is the "high resolution" font for the VGA frame buffer (the one |
@@ -147,7 +147,7 @@ config FONT_8x16 | |||
147 | 147 | ||
148 | config FONT_6x11 | 148 | config FONT_6x11 |
149 | bool "Mac console 6x11 font (not supported by all drivers)" if FONTS | 149 | bool "Mac console 6x11 font (not supported by all drivers)" if FONTS |
150 | depends on FRAMEBUFFER_CONSOLE | 150 | depends on FRAMEBUFFER_CONSOLE || STI_CONSOLE |
151 | default y if !SPARC32 && !SPARC64 && !FONTS && MAC | 151 | default y if !SPARC32 && !SPARC64 && !FONTS && MAC |
152 | help | 152 | help |
153 | Small console font with Macintosh-style high-half glyphs. Some Mac | 153 | Small console font with Macintosh-style high-half glyphs. Some Mac |
diff --git a/drivers/video/console/sticore.c b/drivers/video/console/sticore.c index d940f605acb6..a7bcd17112c0 100644 --- a/drivers/video/console/sticore.c +++ b/drivers/video/console/sticore.c | |||
@@ -511,12 +511,12 @@ sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name ) | |||
511 | struct sti_cooked_font *cooked_font; | 511 | struct sti_cooked_font *cooked_font; |
512 | 512 | ||
513 | if (!fbfont_name || !strlen(fbfont_name)) | 513 | if (!fbfont_name || !strlen(fbfont_name)) |
514 | return NULL; | 514 | return NULL; |
515 | fbfont = find_font(fbfont_name); | 515 | fbfont = find_font(fbfont_name); |
516 | if (!fbfont) | 516 | if (!fbfont) |
517 | fbfont = get_default_font(1024,768); | 517 | fbfont = get_default_font(1024,768); |
518 | if (!fbfont) | 518 | if (!fbfont) |
519 | return NULL; | 519 | return NULL; |
520 | 520 | ||
521 | DPRINTK((KERN_DEBUG "selected %dx%d fb-font %s\n", | 521 | DPRINTK((KERN_DEBUG "selected %dx%d fb-font %s\n", |
522 | fbfont->width, fbfont->height, fbfont->name)); | 522 | fbfont->width, fbfont->height, fbfont->name)); |
@@ -527,7 +527,7 @@ sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name ) | |||
527 | 527 | ||
528 | nf = kmalloc(size, GFP_KERNEL); | 528 | nf = kmalloc(size, GFP_KERNEL); |
529 | if (!nf) | 529 | if (!nf) |
530 | return NULL; | 530 | return NULL; |
531 | memset(nf, 0, size); | 531 | memset(nf, 0, size); |
532 | 532 | ||
533 | nf->first_char = 0; | 533 | nf->first_char = 0; |
@@ -546,8 +546,8 @@ sti_select_fbfont( struct sti_cooked_rom *cooked_rom, char *fbfont_name ) | |||
546 | 546 | ||
547 | cooked_font = kmalloc(sizeof(*cooked_font), GFP_KERNEL); | 547 | cooked_font = kmalloc(sizeof(*cooked_font), GFP_KERNEL); |
548 | if (!cooked_font) { | 548 | if (!cooked_font) { |
549 | kfree(nf); | 549 | kfree(nf); |
550 | return NULL; | 550 | return NULL; |
551 | } | 551 | } |
552 | 552 | ||
553 | cooked_font->raw = nf; | 553 | cooked_font->raw = nf; |
@@ -595,7 +595,7 @@ sti_select_font(struct sti_cooked_rom *rom, | |||
595 | static void __init | 595 | static void __init |
596 | sti_dump_rom(struct sti_rom *rom) | 596 | sti_dump_rom(struct sti_rom *rom) |
597 | { | 597 | { |
598 | printk(KERN_INFO " id %04x-%04x, conforms to spec rev. %d.%02x\n", | 598 | printk(KERN_INFO " id %04x-%04x, conforms to spec rev. %d.%02x\n", |
599 | rom->graphics_id[0], | 599 | rom->graphics_id[0], |
600 | rom->graphics_id[1], | 600 | rom->graphics_id[1], |
601 | rom->revno[0] >> 4, | 601 | rom->revno[0] >> 4, |
@@ -651,15 +651,16 @@ sti_search_font(struct sti_cooked_rom *rom, int height, int width) | |||
651 | struct sti_cooked_font *font; | 651 | struct sti_cooked_font *font; |
652 | int i = 0; | 652 | int i = 0; |
653 | 653 | ||
654 | for(font = rom->font_start; font; font = font->next_font, i++) { | 654 | for (font = rom->font_start; font; font = font->next_font, i++) { |
655 | if((font->raw->width == width) && (font->raw->height == height)) | 655 | if ((font->raw->width == width) && |
656 | (font->raw->height == height)) | ||
656 | return i; | 657 | return i; |
657 | } | 658 | } |
658 | return 0; | 659 | return 0; |
659 | } | 660 | } |
660 | 661 | ||
661 | #define BMODE_RELOCATE(offset) offset = (offset) / 4; | 662 | #define BMODE_RELOCATE(offset) offset = (offset) / 4; |
662 | #define BMODE_LAST_ADDR_OFFS 0x50 | 663 | #define BMODE_LAST_ADDR_OFFS 0x50 |
663 | 664 | ||
664 | static void * __init | 665 | static void * __init |
665 | sti_bmode_font_raw(struct sti_cooked_font *f) | 666 | sti_bmode_font_raw(struct sti_cooked_font *f) |
@@ -700,35 +701,35 @@ sti_get_bmode_rom (unsigned long address) | |||
700 | { | 701 | { |
701 | struct sti_rom *raw; | 702 | struct sti_rom *raw; |
702 | u32 size; | 703 | u32 size; |
703 | struct sti_rom_font *raw_font, *font_start; | 704 | struct sti_rom_font *raw_font, *font_start; |
704 | 705 | ||
705 | sti_bmode_rom_copy(address + BMODE_LAST_ADDR_OFFS, sizeof(size), &size); | 706 | sti_bmode_rom_copy(address + BMODE_LAST_ADDR_OFFS, sizeof(size), &size); |
706 | 707 | ||
707 | size = (size+3) / 4; | 708 | size = (size+3) / 4; |
708 | raw = kmalloc(size, GFP_KERNEL); | 709 | raw = kmalloc(size, GFP_KERNEL); |
709 | if (raw) { | 710 | if (raw) { |
710 | sti_bmode_rom_copy(address, size, raw); | 711 | sti_bmode_rom_copy(address, size, raw); |
711 | memmove (&raw->res004, &raw->type[0], 0x3c); | 712 | memmove (&raw->res004, &raw->type[0], 0x3c); |
712 | raw->type[3] = raw->res004; | 713 | raw->type[3] = raw->res004; |
713 | 714 | ||
714 | BMODE_RELOCATE (raw->region_list); | 715 | BMODE_RELOCATE (raw->region_list); |
715 | BMODE_RELOCATE (raw->font_start); | 716 | BMODE_RELOCATE (raw->font_start); |
716 | 717 | ||
717 | BMODE_RELOCATE (raw->init_graph); | 718 | BMODE_RELOCATE (raw->init_graph); |
718 | BMODE_RELOCATE (raw->state_mgmt); | 719 | BMODE_RELOCATE (raw->state_mgmt); |
719 | BMODE_RELOCATE (raw->font_unpmv); | 720 | BMODE_RELOCATE (raw->font_unpmv); |
720 | BMODE_RELOCATE (raw->block_move); | 721 | BMODE_RELOCATE (raw->block_move); |
721 | BMODE_RELOCATE (raw->inq_conf); | 722 | BMODE_RELOCATE (raw->inq_conf); |
722 | 723 | ||
723 | raw_font = ((void *)raw) + raw->font_start; | 724 | raw_font = ((void *)raw) + raw->font_start; |
724 | font_start = raw_font; | 725 | font_start = raw_font; |
725 | 726 | ||
726 | while (raw_font->next_font) { | 727 | while (raw_font->next_font) { |
727 | BMODE_RELOCATE (raw_font->next_font); | 728 | BMODE_RELOCATE (raw_font->next_font); |
728 | raw_font = ((void *)font_start) + raw_font->next_font; | 729 | raw_font = ((void *)font_start) + raw_font->next_font; |
729 | } | 730 | } |
730 | } | 731 | } |
731 | return raw; | 732 | return raw; |
732 | } | 733 | } |
733 | 734 | ||
734 | struct sti_rom * __init | 735 | struct sti_rom * __init |
@@ -736,15 +737,15 @@ sti_get_wmode_rom (unsigned long address) | |||
736 | { | 737 | { |
737 | struct sti_rom *raw; | 738 | struct sti_rom *raw; |
738 | unsigned long size; | 739 | unsigned long size; |
739 | 740 | ||
740 | /* read the ROM size directly from the struct in ROM */ | 741 | /* read the ROM size directly from the struct in ROM */ |
741 | size = gsc_readl(address + offsetof(struct sti_rom,last_addr)); | 742 | size = gsc_readl(address + offsetof(struct sti_rom,last_addr)); |
742 | 743 | ||
743 | raw = kmalloc(size, GFP_KERNEL); | 744 | raw = kmalloc(size, GFP_KERNEL); |
744 | if(raw) | 745 | if (raw) |
745 | sti_rom_copy(address, size, raw); | 746 | sti_rom_copy(address, size, raw); |
746 | 747 | ||
747 | return raw; | 748 | return raw; |
748 | } | 749 | } |
749 | 750 | ||
750 | int __init | 751 | int __init |
@@ -757,14 +758,14 @@ sti_read_rom(int wordmode, struct sti_struct *sti, unsigned long address) | |||
757 | if (!cooked) | 758 | if (!cooked) |
758 | goto out_err; | 759 | goto out_err; |
759 | 760 | ||
760 | if (wordmode) | 761 | if (wordmode) |
761 | raw = sti_get_wmode_rom (address); | 762 | raw = sti_get_wmode_rom (address); |
762 | else | 763 | else |
763 | raw = sti_get_bmode_rom (address); | 764 | raw = sti_get_bmode_rom (address); |
765 | |||
766 | if (!raw) | ||
767 | goto out_err; | ||
764 | 768 | ||
765 | if (!raw) | ||
766 | goto out_err; | ||
767 | |||
768 | if (!sti_cook_fonts(cooked, raw)) { | 769 | if (!sti_cook_fonts(cooked, raw)) { |
769 | printk(KERN_ERR "No font found for STI at %08lx\n", address); | 770 | printk(KERN_ERR "No font found for STI at %08lx\n", address); |
770 | goto out_err; | 771 | goto out_err; |
@@ -787,7 +788,7 @@ sti_read_rom(int wordmode, struct sti_struct *sti, unsigned long address) | |||
787 | sti->font_width = sti->font->raw->width; | 788 | sti->font_width = sti->font->raw->width; |
788 | sti->font_height = sti->font->raw->height; | 789 | sti->font_height = sti->font->raw->height; |
789 | if (!wordmode) | 790 | if (!wordmode) |
790 | sti->font->raw = sti_bmode_font_raw(sti->font); | 791 | sti->font->raw = sti_bmode_font_raw(sti->font); |
791 | 792 | ||
792 | sti->sti_mem_request = raw->sti_mem_req; | 793 | sti->sti_mem_request = raw->sti_mem_req; |
793 | sti->graphics_id[0] = raw->graphics_id[0]; | 794 | sti->graphics_id[0] = raw->graphics_id[0]; |
@@ -811,16 +812,16 @@ sti_try_rom_generic(unsigned long address, unsigned long hpa, struct pci_dev *pd | |||
811 | u32 sig; | 812 | u32 sig; |
812 | 813 | ||
813 | if (num_sti_roms >= MAX_STI_ROMS) { | 814 | if (num_sti_roms >= MAX_STI_ROMS) { |
814 | printk(KERN_WARNING "maximum number of STI ROMS reached !\n"); | 815 | printk(KERN_WARNING "maximum number of STI ROMS reached !\n"); |
815 | return NULL; | 816 | return NULL; |
816 | } | 817 | } |
817 | 818 | ||
818 | sti = kmalloc(sizeof(*sti), GFP_KERNEL); | 819 | sti = kmalloc(sizeof(*sti), GFP_KERNEL); |
819 | if (!sti) { | 820 | if (!sti) { |
820 | printk(KERN_ERR "Not enough memory !\n"); | 821 | printk(KERN_ERR "Not enough memory !\n"); |
821 | return NULL; | 822 | return NULL; |
822 | } | 823 | } |
823 | 824 | ||
824 | memset(sti, 0, sizeof(*sti)); | 825 | memset(sti, 0, sizeof(*sti)); |
825 | spin_lock_init(&sti->lock); | 826 | spin_lock_init(&sti->lock); |
826 | 827 | ||
@@ -932,28 +933,21 @@ static void __init sticore_check_for_default_sti(struct sti_struct *sti, char *p | |||
932 | */ | 933 | */ |
933 | static int __init sticore_pa_init(struct parisc_device *dev) | 934 | static int __init sticore_pa_init(struct parisc_device *dev) |
934 | { | 935 | { |
935 | unsigned long rom = 0; | ||
936 | char pa_path[21]; | 936 | char pa_path[21]; |
937 | struct sti_struct *sti = NULL; | 937 | struct sti_struct *sti = NULL; |
938 | 938 | int hpa = dev->hpa.start; | |
939 | if(dev->num_addrs) { | 939 | |
940 | rom = dev->addr[0]; | 940 | if (dev->num_addrs && dev->addr[0]) |
941 | } | 941 | sti = sti_try_rom_generic(dev->addr[0], hpa, NULL); |
942 | if (!rom) { | 942 | if (!sti) |
943 | rom = dev->hpa; | 943 | sti = sti_try_rom_generic(hpa, hpa, NULL); |
944 | DPRINTK((KERN_DEBUG "Trying STI ROM at %08lx, hpa at %08lx\n", rom, dev->hpa)); | 944 | if (!sti) |
945 | sti = sti_try_rom_generic(rom, dev->hpa, NULL); | 945 | sti = sti_try_rom_generic(PAGE0->proc_sti, hpa, NULL); |
946 | rom = PAGE0->proc_sti; | ||
947 | } | ||
948 | if (!sti) { | ||
949 | DPRINTK((KERN_DEBUG "Trying STI ROM at %08lx, hpa at %08lx\n", rom, dev->hpa)); | ||
950 | sti = sti_try_rom_generic(rom, dev->hpa, NULL); | ||
951 | } | ||
952 | if (!sti) | 946 | if (!sti) |
953 | return 1; | 947 | return 1; |
954 | 948 | ||
955 | print_pa_hwpath(dev, pa_path); | 949 | print_pa_hwpath(dev, pa_path); |
956 | sticore_check_for_default_sti (sti, pa_path); | 950 | sticore_check_for_default_sti(sti, pa_path); |
957 | return 0; | 951 | return 0; |
958 | } | 952 | } |
959 | 953 | ||
diff --git a/fs/jfs/jfs_dmap.c b/fs/jfs/jfs_dmap.c index eadf319bee22..68000a50ceb6 100644 --- a/fs/jfs/jfs_dmap.c +++ b/fs/jfs/jfs_dmap.c | |||
@@ -74,7 +74,7 @@ | |||
74 | static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno, | 74 | static void dbAllocBits(struct bmap * bmp, struct dmap * dp, s64 blkno, |
75 | int nblocks); | 75 | int nblocks); |
76 | static void dbSplit(dmtree_t * tp, int leafno, int splitsz, int newval); | 76 | static void dbSplit(dmtree_t * tp, int leafno, int splitsz, int newval); |
77 | static void dbBackSplit(dmtree_t * tp, int leafno); | 77 | static int dbBackSplit(dmtree_t * tp, int leafno); |
78 | static int dbJoin(dmtree_t * tp, int leafno, int newval); | 78 | static int dbJoin(dmtree_t * tp, int leafno, int newval); |
79 | static void dbAdjTree(dmtree_t * tp, int leafno, int newval); | 79 | static void dbAdjTree(dmtree_t * tp, int leafno, int newval); |
80 | static int dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, | 80 | static int dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, |
@@ -305,7 +305,6 @@ int dbSync(struct inode *ipbmap) | |||
305 | filemap_fdatawrite(ipbmap->i_mapping); | 305 | filemap_fdatawrite(ipbmap->i_mapping); |
306 | filemap_fdatawait(ipbmap->i_mapping); | 306 | filemap_fdatawait(ipbmap->i_mapping); |
307 | 307 | ||
308 | ipbmap->i_state |= I_DIRTY; | ||
309 | diWriteSpecial(ipbmap, 0); | 308 | diWriteSpecial(ipbmap, 0); |
310 | 309 | ||
311 | return (0); | 310 | return (0); |
@@ -2467,7 +2466,9 @@ dbAdjCtl(struct bmap * bmp, s64 blkno, int newval, int alloc, int level) | |||
2467 | * that it is at the front of a binary buddy system. | 2466 | * that it is at the front of a binary buddy system. |
2468 | */ | 2467 | */ |
2469 | if (oldval == NOFREE) { | 2468 | if (oldval == NOFREE) { |
2470 | dbBackSplit((dmtree_t *) dcp, leafno); | 2469 | rc = dbBackSplit((dmtree_t *) dcp, leafno); |
2470 | if (rc) | ||
2471 | return rc; | ||
2471 | oldval = dcp->stree[ti]; | 2472 | oldval = dcp->stree[ti]; |
2472 | } | 2473 | } |
2473 | dbSplit((dmtree_t *) dcp, leafno, dcp->budmin, newval); | 2474 | dbSplit((dmtree_t *) dcp, leafno, dcp->budmin, newval); |
@@ -2627,7 +2628,7 @@ static void dbSplit(dmtree_t * tp, int leafno, int splitsz, int newval) | |||
2627 | * | 2628 | * |
2628 | * serialization: IREAD_LOCK(ipbmap) or IWRITE_LOCK(ipbmap) held on entry/exit; | 2629 | * serialization: IREAD_LOCK(ipbmap) or IWRITE_LOCK(ipbmap) held on entry/exit; |
2629 | */ | 2630 | */ |
2630 | static void dbBackSplit(dmtree_t * tp, int leafno) | 2631 | static int dbBackSplit(dmtree_t * tp, int leafno) |
2631 | { | 2632 | { |
2632 | int budsz, bud, w, bsz, size; | 2633 | int budsz, bud, w, bsz, size; |
2633 | int cursz; | 2634 | int cursz; |
@@ -2662,7 +2663,10 @@ static void dbBackSplit(dmtree_t * tp, int leafno) | |||
2662 | */ | 2663 | */ |
2663 | for (w = leafno, bsz = budsz;; bsz <<= 1, | 2664 | for (w = leafno, bsz = budsz;; bsz <<= 1, |
2664 | w = (w < bud) ? w : bud) { | 2665 | w = (w < bud) ? w : bud) { |
2665 | assert(bsz < le32_to_cpu(tp->dmt_nleafs)); | 2666 | if (bsz >= le32_to_cpu(tp->dmt_nleafs)) { |
2667 | jfs_err("JFS: block map error in dbBackSplit"); | ||
2668 | return -EIO; | ||
2669 | } | ||
2666 | 2670 | ||
2667 | /* determine the buddy. | 2671 | /* determine the buddy. |
2668 | */ | 2672 | */ |
@@ -2681,7 +2685,11 @@ static void dbBackSplit(dmtree_t * tp, int leafno) | |||
2681 | } | 2685 | } |
2682 | } | 2686 | } |
2683 | 2687 | ||
2684 | assert(leaf[leafno] == size); | 2688 | if (leaf[leafno] != size) { |
2689 | jfs_err("JFS: wrong leaf value in dbBackSplit"); | ||
2690 | return -EIO; | ||
2691 | } | ||
2692 | return 0; | ||
2685 | } | 2693 | } |
2686 | 2694 | ||
2687 | 2695 | ||
diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c index 4021d46da7e3..28201b194f53 100644 --- a/fs/jfs/jfs_imap.c +++ b/fs/jfs/jfs_imap.c | |||
@@ -57,6 +57,12 @@ | |||
57 | #include "jfs_debug.h" | 57 | #include "jfs_debug.h" |
58 | 58 | ||
59 | /* | 59 | /* |
60 | * __mark_inode_dirty expects inodes to be hashed. Since we don't want | ||
61 | * special inodes in the fileset inode space, we hash them to a dummy head | ||
62 | */ | ||
63 | static HLIST_HEAD(aggregate_hash); | ||
64 | |||
65 | /* | ||
60 | * imap locks | 66 | * imap locks |
61 | */ | 67 | */ |
62 | /* iag free list lock */ | 68 | /* iag free list lock */ |
@@ -491,6 +497,8 @@ struct inode *diReadSpecial(struct super_block *sb, ino_t inum, int secondary) | |||
491 | /* release the page */ | 497 | /* release the page */ |
492 | release_metapage(mp); | 498 | release_metapage(mp); |
493 | 499 | ||
500 | hlist_add_head(&ip->i_hash, &aggregate_hash); | ||
501 | |||
494 | return (ip); | 502 | return (ip); |
495 | } | 503 | } |
496 | 504 | ||
@@ -514,8 +522,6 @@ void diWriteSpecial(struct inode *ip, int secondary) | |||
514 | ino_t inum = ip->i_ino; | 522 | ino_t inum = ip->i_ino; |
515 | struct metapage *mp; | 523 | struct metapage *mp; |
516 | 524 | ||
517 | ip->i_state &= ~I_DIRTY; | ||
518 | |||
519 | if (secondary) | 525 | if (secondary) |
520 | address = addressPXD(&sbi->ait2) >> sbi->l2nbperpage; | 526 | address = addressPXD(&sbi->ait2) >> sbi->l2nbperpage; |
521 | else | 527 | else |
diff --git a/fs/jfs/jfs_metapage.c b/fs/jfs/jfs_metapage.c index eeb37d70e650..26091a5f88d4 100644 --- a/fs/jfs/jfs_metapage.c +++ b/fs/jfs/jfs_metapage.c | |||
@@ -395,6 +395,12 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc) | |||
395 | 395 | ||
396 | if (mp->nohomeok && !test_bit(META_forcewrite, &mp->flag)) { | 396 | if (mp->nohomeok && !test_bit(META_forcewrite, &mp->flag)) { |
397 | redirty = 1; | 397 | redirty = 1; |
398 | /* | ||
399 | * Make sure this page isn't blocked indefinitely. | ||
400 | * If the journal isn't undergoing I/O, push it | ||
401 | */ | ||
402 | if (mp->log && !(mp->log->cflag & logGC_PAGEOUT)) | ||
403 | jfs_flush_journal(mp->log, 0); | ||
398 | continue; | 404 | continue; |
399 | } | 405 | } |
400 | 406 | ||
diff --git a/fs/jfs/jfs_txnmgr.c b/fs/jfs/jfs_txnmgr.c index 9b71ed2674fe..b660c93c92de 100644 --- a/fs/jfs/jfs_txnmgr.c +++ b/fs/jfs/jfs_txnmgr.c | |||
@@ -2396,7 +2396,6 @@ static void txUpdateMap(struct tblock * tblk) | |||
2396 | */ | 2396 | */ |
2397 | if (tblk->xflag & COMMIT_CREATE) { | 2397 | if (tblk->xflag & COMMIT_CREATE) { |
2398 | diUpdatePMap(ipimap, tblk->ino, FALSE, tblk); | 2398 | diUpdatePMap(ipimap, tblk->ino, FALSE, tblk); |
2399 | ipimap->i_state |= I_DIRTY; | ||
2400 | /* update persistent block allocation map | 2399 | /* update persistent block allocation map |
2401 | * for the allocation of inode extent; | 2400 | * for the allocation of inode extent; |
2402 | */ | 2401 | */ |
@@ -2407,7 +2406,6 @@ static void txUpdateMap(struct tblock * tblk) | |||
2407 | } else if (tblk->xflag & COMMIT_DELETE) { | 2406 | } else if (tblk->xflag & COMMIT_DELETE) { |
2408 | ip = tblk->u.ip; | 2407 | ip = tblk->u.ip; |
2409 | diUpdatePMap(ipimap, ip->i_ino, TRUE, tblk); | 2408 | diUpdatePMap(ipimap, ip->i_ino, TRUE, tblk); |
2410 | ipimap->i_state |= I_DIRTY; | ||
2411 | iput(ip); | 2409 | iput(ip); |
2412 | } | 2410 | } |
2413 | } | 2411 | } |
diff --git a/fs/jfs/jfs_xtree.c b/fs/jfs/jfs_xtree.c index a7fe2f2b969f..e72f4ebb6e9c 100644 --- a/fs/jfs/jfs_xtree.c +++ b/fs/jfs/jfs_xtree.c | |||
@@ -3516,16 +3516,10 @@ s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int flag) | |||
3516 | /* process entries backward from last index */ | 3516 | /* process entries backward from last index */ |
3517 | index = le16_to_cpu(p->header.nextindex) - 1; | 3517 | index = le16_to_cpu(p->header.nextindex) - 1; |
3518 | 3518 | ||
3519 | if (p->header.flag & BT_INTERNAL) | ||
3520 | goto getChild; | ||
3521 | |||
3522 | /* | ||
3523 | * leaf page | ||
3524 | */ | ||
3525 | 3519 | ||
3526 | /* Since this is the rightmost leaf, and we may have already freed | 3520 | /* Since this is the rightmost page at this level, and we may have |
3527 | * a page that was formerly to the right, let's make sure that the | 3521 | * already freed a page that was formerly to the right, let's make |
3528 | * next pointer is zero. | 3522 | * sure that the next pointer is zero. |
3529 | */ | 3523 | */ |
3530 | if (p->header.next) { | 3524 | if (p->header.next) { |
3531 | if (log) | 3525 | if (log) |
@@ -3539,6 +3533,12 @@ s64 xtTruncate(tid_t tid, struct inode *ip, s64 newsize, int flag) | |||
3539 | p->header.next = 0; | 3533 | p->header.next = 0; |
3540 | } | 3534 | } |
3541 | 3535 | ||
3536 | if (p->header.flag & BT_INTERNAL) | ||
3537 | goto getChild; | ||
3538 | |||
3539 | /* | ||
3540 | * leaf page | ||
3541 | */ | ||
3542 | freed = 0; | 3542 | freed = 0; |
3543 | 3543 | ||
3544 | /* does region covered by leaf page precede Teof ? */ | 3544 | /* does region covered by leaf page precede Teof ? */ |
diff --git a/fs/jfs/super.c b/fs/jfs/super.c index 71bc34b96b2b..4226af3ea91b 100644 --- a/fs/jfs/super.c +++ b/fs/jfs/super.c | |||
@@ -442,6 +442,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent) | |||
442 | inode->i_nlink = 1; | 442 | inode->i_nlink = 1; |
443 | inode->i_size = sb->s_bdev->bd_inode->i_size; | 443 | inode->i_size = sb->s_bdev->bd_inode->i_size; |
444 | inode->i_mapping->a_ops = &jfs_metapage_aops; | 444 | inode->i_mapping->a_ops = &jfs_metapage_aops; |
445 | insert_inode_hash(inode); | ||
445 | mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); | 446 | mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); |
446 | 447 | ||
447 | sbi->direct_inode = inode; | 448 | sbi->direct_inode = inode; |
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 30b023411fef..3ce3440d1b0c 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
@@ -21,7 +21,9 @@ | |||
21 | #ifndef _PARISC_ASSEMBLY_H | 21 | #ifndef _PARISC_ASSEMBLY_H |
22 | #define _PARISC_ASSEMBLY_H | 22 | #define _PARISC_ASSEMBLY_H |
23 | 23 | ||
24 | #ifdef __LP64__ | 24 | #define CALLEE_FLOAT_FRAME_SIZE 80 |
25 | |||
26 | #ifdef CONFIG_64BIT | ||
25 | #define LDREG ldd | 27 | #define LDREG ldd |
26 | #define STREG std | 28 | #define STREG std |
27 | #define LDREGX ldd,s | 29 | #define LDREGX ldd,s |
@@ -30,8 +32,8 @@ | |||
30 | #define SHRREG shrd | 32 | #define SHRREG shrd |
31 | #define RP_OFFSET 16 | 33 | #define RP_OFFSET 16 |
32 | #define FRAME_SIZE 128 | 34 | #define FRAME_SIZE 128 |
33 | #define CALLEE_SAVE_FRAME_SIZE 144 | 35 | #define CALLEE_REG_FRAME_SIZE 144 |
34 | #else | 36 | #else /* CONFIG_64BIT */ |
35 | #define LDREG ldw | 37 | #define LDREG ldw |
36 | #define STREG stw | 38 | #define STREG stw |
37 | #define LDREGX ldwx,s | 39 | #define LDREGX ldwx,s |
@@ -40,9 +42,11 @@ | |||
40 | #define SHRREG shr | 42 | #define SHRREG shr |
41 | #define RP_OFFSET 20 | 43 | #define RP_OFFSET 20 |
42 | #define FRAME_SIZE 64 | 44 | #define FRAME_SIZE 64 |
43 | #define CALLEE_SAVE_FRAME_SIZE 128 | 45 | #define CALLEE_REG_FRAME_SIZE 128 |
44 | #endif | 46 | #endif |
45 | 47 | ||
48 | #define CALLEE_SAVE_FRAME_SIZE (CALLEE_REG_FRAME_SIZE + CALLEE_FLOAT_FRAME_SIZE) | ||
49 | |||
46 | #ifdef CONFIG_PA20 | 50 | #ifdef CONFIG_PA20 |
47 | #define BL b,l | 51 | #define BL b,l |
48 | # ifdef CONFIG_64BIT | 52 | # ifdef CONFIG_64BIT |
@@ -300,9 +304,35 @@ | |||
300 | fldd,mb -8(\regs), %fr0 | 304 | fldd,mb -8(\regs), %fr0 |
301 | .endm | 305 | .endm |
302 | 306 | ||
307 | .macro callee_save_float | ||
308 | fstd,ma %fr12, 8(%r30) | ||
309 | fstd,ma %fr13, 8(%r30) | ||
310 | fstd,ma %fr14, 8(%r30) | ||
311 | fstd,ma %fr15, 8(%r30) | ||
312 | fstd,ma %fr16, 8(%r30) | ||
313 | fstd,ma %fr17, 8(%r30) | ||
314 | fstd,ma %fr18, 8(%r30) | ||
315 | fstd,ma %fr19, 8(%r30) | ||
316 | fstd,ma %fr20, 8(%r30) | ||
317 | fstd,ma %fr21, 8(%r30) | ||
318 | .endm | ||
319 | |||
320 | .macro callee_rest_float | ||
321 | fldd,mb -8(%r30), %fr21 | ||
322 | fldd,mb -8(%r30), %fr20 | ||
323 | fldd,mb -8(%r30), %fr19 | ||
324 | fldd,mb -8(%r30), %fr18 | ||
325 | fldd,mb -8(%r30), %fr17 | ||
326 | fldd,mb -8(%r30), %fr16 | ||
327 | fldd,mb -8(%r30), %fr15 | ||
328 | fldd,mb -8(%r30), %fr14 | ||
329 | fldd,mb -8(%r30), %fr13 | ||
330 | fldd,mb -8(%r30), %fr12 | ||
331 | .endm | ||
332 | |||
303 | #ifdef __LP64__ | 333 | #ifdef __LP64__ |
304 | .macro callee_save | 334 | .macro callee_save |
305 | std,ma %r3, CALLEE_SAVE_FRAME_SIZE(%r30) | 335 | std,ma %r3, CALLEE_REG_FRAME_SIZE(%r30) |
306 | mfctl %cr27, %r3 | 336 | mfctl %cr27, %r3 |
307 | std %r4, -136(%r30) | 337 | std %r4, -136(%r30) |
308 | std %r5, -128(%r30) | 338 | std %r5, -128(%r30) |
@@ -340,13 +370,13 @@ | |||
340 | ldd -128(%r30), %r5 | 370 | ldd -128(%r30), %r5 |
341 | ldd -136(%r30), %r4 | 371 | ldd -136(%r30), %r4 |
342 | mtctl %r3, %cr27 | 372 | mtctl %r3, %cr27 |
343 | ldd,mb -CALLEE_SAVE_FRAME_SIZE(%r30), %r3 | 373 | ldd,mb -CALLEE_REG_FRAME_SIZE(%r30), %r3 |
344 | .endm | 374 | .endm |
345 | 375 | ||
346 | #else /* ! __LP64__ */ | 376 | #else /* ! __LP64__ */ |
347 | 377 | ||
348 | .macro callee_save | 378 | .macro callee_save |
349 | stw,ma %r3, CALLEE_SAVE_FRAME_SIZE(%r30) | 379 | stw,ma %r3, CALLEE_REG_FRAME_SIZE(%r30) |
350 | mfctl %cr27, %r3 | 380 | mfctl %cr27, %r3 |
351 | stw %r4, -124(%r30) | 381 | stw %r4, -124(%r30) |
352 | stw %r5, -120(%r30) | 382 | stw %r5, -120(%r30) |
@@ -384,7 +414,7 @@ | |||
384 | ldw -120(%r30), %r5 | 414 | ldw -120(%r30), %r5 |
385 | ldw -124(%r30), %r4 | 415 | ldw -124(%r30), %r4 |
386 | mtctl %r3, %cr27 | 416 | mtctl %r3, %cr27 |
387 | ldw,mb -CALLEE_SAVE_FRAME_SIZE(%r30), %r3 | 417 | ldw,mb -CALLEE_REG_FRAME_SIZE(%r30), %r3 |
388 | .endm | 418 | .endm |
389 | #endif /* ! __LP64__ */ | 419 | #endif /* ! __LP64__ */ |
390 | 420 | ||
@@ -450,5 +480,30 @@ | |||
450 | REST_CR (%cr22, PT_PSW (\regs)) | 480 | REST_CR (%cr22, PT_PSW (\regs)) |
451 | .endm | 481 | .endm |
452 | 482 | ||
483 | |||
484 | /* First step to create a "relied upon translation" | ||
485 | * See PA 2.0 Arch. page F-4 and F-5. | ||
486 | * | ||
487 | * The ssm was originally necessary due to a "PCxT bug". | ||
488 | * But someone decided it needed to be added to the architecture | ||
489 | * and this "feature" went into rev3 of PA-RISC 1.1 Arch Manual. | ||
490 | * It's been carried forward into PA 2.0 Arch as well. :^( | ||
491 | * | ||
492 | * "ssm 0,%r0" is a NOP with side effects (prefetch barrier). | ||
493 | * rsm/ssm prevents the ifetch unit from speculatively fetching | ||
494 | * instructions past this line in the code stream. | ||
495 | * PA 2.0 processor will single step all insn in the same QUAD (4 insn). | ||
496 | */ | ||
497 | .macro pcxt_ssm_bug | ||
498 | rsm PSW_SM_I,%r0 | ||
499 | nop /* 1 */ | ||
500 | nop /* 2 */ | ||
501 | nop /* 3 */ | ||
502 | nop /* 4 */ | ||
503 | nop /* 5 */ | ||
504 | nop /* 6 */ | ||
505 | nop /* 7 */ | ||
506 | .endm | ||
507 | |||
453 | #endif /* __ASSEMBLY__ */ | 508 | #endif /* __ASSEMBLY__ */ |
454 | #endif | 509 | #endif |
diff --git a/include/asm-parisc/bitops.h b/include/asm-parisc/bitops.h index af7db694b22d..55b98c67fd82 100644 --- a/include/asm-parisc/bitops.h +++ b/include/asm-parisc/bitops.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define _PARISC_BITOPS_H | 2 | #define _PARISC_BITOPS_H |
3 | 3 | ||
4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
5 | #include <asm/spinlock.h> | 5 | #include <asm/types.h> /* for BITS_PER_LONG/SHIFT_PER_LONG */ |
6 | #include <asm/byteorder.h> | 6 | #include <asm/byteorder.h> |
7 | #include <asm/atomic.h> | 7 | #include <asm/atomic.h> |
8 | 8 | ||
@@ -12,193 +12,157 @@ | |||
12 | * to include/asm-i386/bitops.h or kerneldoc | 12 | * to include/asm-i386/bitops.h or kerneldoc |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #ifdef __LP64__ | 15 | #define CHOP_SHIFTCOUNT(x) (((unsigned long) (x)) & (BITS_PER_LONG - 1)) |
16 | # define SHIFT_PER_LONG 6 | ||
17 | #ifndef BITS_PER_LONG | ||
18 | # define BITS_PER_LONG 64 | ||
19 | #endif | ||
20 | #else | ||
21 | # define SHIFT_PER_LONG 5 | ||
22 | #ifndef BITS_PER_LONG | ||
23 | # define BITS_PER_LONG 32 | ||
24 | #endif | ||
25 | #endif | ||
26 | |||
27 | #define CHOP_SHIFTCOUNT(x) ((x) & (BITS_PER_LONG - 1)) | ||
28 | 16 | ||
29 | 17 | ||
30 | #define smp_mb__before_clear_bit() smp_mb() | 18 | #define smp_mb__before_clear_bit() smp_mb() |
31 | #define smp_mb__after_clear_bit() smp_mb() | 19 | #define smp_mb__after_clear_bit() smp_mb() |
32 | 20 | ||
33 | static __inline__ void set_bit(int nr, volatile unsigned long * address) | 21 | /* See http://marc.theaimsgroup.com/?t=108826637900003 for discussion |
22 | * on use of volatile and __*_bit() (set/clear/change): | ||
23 | * *_bit() want use of volatile. | ||
24 | * __*_bit() are "relaxed" and don't use spinlock or volatile. | ||
25 | */ | ||
26 | |||
27 | static __inline__ void set_bit(int nr, volatile unsigned long * addr) | ||
34 | { | 28 | { |
35 | unsigned long mask; | 29 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
36 | unsigned long *addr = (unsigned long *) address; | ||
37 | unsigned long flags; | 30 | unsigned long flags; |
38 | 31 | ||
39 | addr += (nr >> SHIFT_PER_LONG); | 32 | addr += (nr >> SHIFT_PER_LONG); |
40 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
41 | _atomic_spin_lock_irqsave(addr, flags); | 33 | _atomic_spin_lock_irqsave(addr, flags); |
42 | *addr |= mask; | 34 | *addr |= mask; |
43 | _atomic_spin_unlock_irqrestore(addr, flags); | 35 | _atomic_spin_unlock_irqrestore(addr, flags); |
44 | } | 36 | } |
45 | 37 | ||
46 | static __inline__ void __set_bit(int nr, volatile unsigned long * address) | 38 | static __inline__ void __set_bit(unsigned long nr, volatile unsigned long * addr) |
47 | { | 39 | { |
48 | unsigned long mask; | 40 | unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG); |
49 | unsigned long *addr = (unsigned long *) address; | ||
50 | 41 | ||
51 | addr += (nr >> SHIFT_PER_LONG); | 42 | *m |= 1UL << CHOP_SHIFTCOUNT(nr); |
52 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
53 | *addr |= mask; | ||
54 | } | 43 | } |
55 | 44 | ||
56 | static __inline__ void clear_bit(int nr, volatile unsigned long * address) | 45 | static __inline__ void clear_bit(int nr, volatile unsigned long * addr) |
57 | { | 46 | { |
58 | unsigned long mask; | 47 | unsigned long mask = ~(1UL << CHOP_SHIFTCOUNT(nr)); |
59 | unsigned long *addr = (unsigned long *) address; | ||
60 | unsigned long flags; | 48 | unsigned long flags; |
61 | 49 | ||
62 | addr += (nr >> SHIFT_PER_LONG); | 50 | addr += (nr >> SHIFT_PER_LONG); |
63 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
64 | _atomic_spin_lock_irqsave(addr, flags); | 51 | _atomic_spin_lock_irqsave(addr, flags); |
65 | *addr &= ~mask; | 52 | *addr &= mask; |
66 | _atomic_spin_unlock_irqrestore(addr, flags); | 53 | _atomic_spin_unlock_irqrestore(addr, flags); |
67 | } | 54 | } |
68 | 55 | ||
69 | static __inline__ void __clear_bit(unsigned long nr, volatile unsigned long * address) | 56 | static __inline__ void __clear_bit(unsigned long nr, volatile unsigned long * addr) |
70 | { | 57 | { |
71 | unsigned long mask; | 58 | unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG); |
72 | unsigned long *addr = (unsigned long *) address; | ||
73 | 59 | ||
74 | addr += (nr >> SHIFT_PER_LONG); | 60 | *m &= ~(1UL << CHOP_SHIFTCOUNT(nr)); |
75 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
76 | *addr &= ~mask; | ||
77 | } | 61 | } |
78 | 62 | ||
79 | static __inline__ void change_bit(int nr, volatile unsigned long * address) | 63 | static __inline__ void change_bit(int nr, volatile unsigned long * addr) |
80 | { | 64 | { |
81 | unsigned long mask; | 65 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
82 | unsigned long *addr = (unsigned long *) address; | ||
83 | unsigned long flags; | 66 | unsigned long flags; |
84 | 67 | ||
85 | addr += (nr >> SHIFT_PER_LONG); | 68 | addr += (nr >> SHIFT_PER_LONG); |
86 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
87 | _atomic_spin_lock_irqsave(addr, flags); | 69 | _atomic_spin_lock_irqsave(addr, flags); |
88 | *addr ^= mask; | 70 | *addr ^= mask; |
89 | _atomic_spin_unlock_irqrestore(addr, flags); | 71 | _atomic_spin_unlock_irqrestore(addr, flags); |
90 | } | 72 | } |
91 | 73 | ||
92 | static __inline__ void __change_bit(int nr, volatile unsigned long * address) | 74 | static __inline__ void __change_bit(unsigned long nr, volatile unsigned long * addr) |
93 | { | 75 | { |
94 | unsigned long mask; | 76 | unsigned long *m = (unsigned long *) addr + (nr >> SHIFT_PER_LONG); |
95 | unsigned long *addr = (unsigned long *) address; | ||
96 | 77 | ||
97 | addr += (nr >> SHIFT_PER_LONG); | 78 | *m ^= 1UL << CHOP_SHIFTCOUNT(nr); |
98 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
99 | *addr ^= mask; | ||
100 | } | 79 | } |
101 | 80 | ||
102 | static __inline__ int test_and_set_bit(int nr, volatile unsigned long * address) | 81 | static __inline__ int test_and_set_bit(int nr, volatile unsigned long * addr) |
103 | { | 82 | { |
104 | unsigned long mask; | 83 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
105 | unsigned long *addr = (unsigned long *) address; | 84 | unsigned long oldbit; |
106 | int oldbit; | ||
107 | unsigned long flags; | 85 | unsigned long flags; |
108 | 86 | ||
109 | addr += (nr >> SHIFT_PER_LONG); | 87 | addr += (nr >> SHIFT_PER_LONG); |
110 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
111 | _atomic_spin_lock_irqsave(addr, flags); | 88 | _atomic_spin_lock_irqsave(addr, flags); |
112 | oldbit = (*addr & mask) ? 1 : 0; | 89 | oldbit = *addr; |
113 | *addr |= mask; | 90 | *addr = oldbit | mask; |
114 | _atomic_spin_unlock_irqrestore(addr, flags); | 91 | _atomic_spin_unlock_irqrestore(addr, flags); |
115 | 92 | ||
116 | return oldbit; | 93 | return (oldbit & mask) ? 1 : 0; |
117 | } | 94 | } |
118 | 95 | ||
119 | static __inline__ int __test_and_set_bit(int nr, volatile unsigned long * address) | 96 | static __inline__ int __test_and_set_bit(int nr, volatile unsigned long * address) |
120 | { | 97 | { |
121 | unsigned long mask; | 98 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
122 | unsigned long *addr = (unsigned long *) address; | 99 | unsigned long oldbit; |
123 | int oldbit; | 100 | unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG); |
124 | 101 | ||
125 | addr += (nr >> SHIFT_PER_LONG); | 102 | oldbit = *addr; |
126 | mask = 1L << CHOP_SHIFTCOUNT(nr); | 103 | *addr = oldbit | mask; |
127 | oldbit = (*addr & mask) ? 1 : 0; | ||
128 | *addr |= mask; | ||
129 | 104 | ||
130 | return oldbit; | 105 | return (oldbit & mask) ? 1 : 0; |
131 | } | 106 | } |
132 | 107 | ||
133 | static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * address) | 108 | static __inline__ int test_and_clear_bit(int nr, volatile unsigned long * addr) |
134 | { | 109 | { |
135 | unsigned long mask; | 110 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
136 | unsigned long *addr = (unsigned long *) address; | 111 | unsigned long oldbit; |
137 | int oldbit; | ||
138 | unsigned long flags; | 112 | unsigned long flags; |
139 | 113 | ||
140 | addr += (nr >> SHIFT_PER_LONG); | 114 | addr += (nr >> SHIFT_PER_LONG); |
141 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
142 | _atomic_spin_lock_irqsave(addr, flags); | 115 | _atomic_spin_lock_irqsave(addr, flags); |
143 | oldbit = (*addr & mask) ? 1 : 0; | 116 | oldbit = *addr; |
144 | *addr &= ~mask; | 117 | *addr = oldbit & ~mask; |
145 | _atomic_spin_unlock_irqrestore(addr, flags); | 118 | _atomic_spin_unlock_irqrestore(addr, flags); |
146 | 119 | ||
147 | return oldbit; | 120 | return (oldbit & mask) ? 1 : 0; |
148 | } | 121 | } |
149 | 122 | ||
150 | static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long * address) | 123 | static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long * address) |
151 | { | 124 | { |
152 | unsigned long mask; | 125 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
153 | unsigned long *addr = (unsigned long *) address; | 126 | unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG); |
154 | int oldbit; | 127 | unsigned long oldbit; |
155 | 128 | ||
156 | addr += (nr >> SHIFT_PER_LONG); | 129 | oldbit = *addr; |
157 | mask = 1L << CHOP_SHIFTCOUNT(nr); | 130 | *addr = oldbit & ~mask; |
158 | oldbit = (*addr & mask) ? 1 : 0; | ||
159 | *addr &= ~mask; | ||
160 | 131 | ||
161 | return oldbit; | 132 | return (oldbit & mask) ? 1 : 0; |
162 | } | 133 | } |
163 | 134 | ||
164 | static __inline__ int test_and_change_bit(int nr, volatile unsigned long * address) | 135 | static __inline__ int test_and_change_bit(int nr, volatile unsigned long * addr) |
165 | { | 136 | { |
166 | unsigned long mask; | 137 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
167 | unsigned long *addr = (unsigned long *) address; | 138 | unsigned long oldbit; |
168 | int oldbit; | ||
169 | unsigned long flags; | 139 | unsigned long flags; |
170 | 140 | ||
171 | addr += (nr >> SHIFT_PER_LONG); | 141 | addr += (nr >> SHIFT_PER_LONG); |
172 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
173 | _atomic_spin_lock_irqsave(addr, flags); | 142 | _atomic_spin_lock_irqsave(addr, flags); |
174 | oldbit = (*addr & mask) ? 1 : 0; | 143 | oldbit = *addr; |
175 | *addr ^= mask; | 144 | *addr = oldbit ^ mask; |
176 | _atomic_spin_unlock_irqrestore(addr, flags); | 145 | _atomic_spin_unlock_irqrestore(addr, flags); |
177 | 146 | ||
178 | return oldbit; | 147 | return (oldbit & mask) ? 1 : 0; |
179 | } | 148 | } |
180 | 149 | ||
181 | static __inline__ int __test_and_change_bit(int nr, volatile unsigned long * address) | 150 | static __inline__ int __test_and_change_bit(int nr, volatile unsigned long * address) |
182 | { | 151 | { |
183 | unsigned long mask; | 152 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
184 | unsigned long *addr = (unsigned long *) address; | 153 | unsigned long *addr = (unsigned long *)address + (nr >> SHIFT_PER_LONG); |
185 | int oldbit; | 154 | unsigned long oldbit; |
186 | 155 | ||
187 | addr += (nr >> SHIFT_PER_LONG); | 156 | oldbit = *addr; |
188 | mask = 1L << CHOP_SHIFTCOUNT(nr); | 157 | *addr = oldbit ^ mask; |
189 | oldbit = (*addr & mask) ? 1 : 0; | ||
190 | *addr ^= mask; | ||
191 | 158 | ||
192 | return oldbit; | 159 | return (oldbit & mask) ? 1 : 0; |
193 | } | 160 | } |
194 | 161 | ||
195 | static __inline__ int test_bit(int nr, const volatile unsigned long *address) | 162 | static __inline__ int test_bit(int nr, const volatile unsigned long *address) |
196 | { | 163 | { |
197 | unsigned long mask; | 164 | unsigned long mask = 1UL << CHOP_SHIFTCOUNT(nr); |
198 | const unsigned long *addr = (const unsigned long *)address; | 165 | const unsigned long *addr = (const unsigned long *)address + (nr >> SHIFT_PER_LONG); |
199 | |||
200 | addr += (nr >> SHIFT_PER_LONG); | ||
201 | mask = 1L << CHOP_SHIFTCOUNT(nr); | ||
202 | 166 | ||
203 | return !!(*addr & mask); | 167 | return !!(*addr & mask); |
204 | } | 168 | } |
@@ -229,7 +193,7 @@ static __inline__ unsigned long __ffs(unsigned long x) | |||
229 | unsigned long ret; | 193 | unsigned long ret; |
230 | 194 | ||
231 | __asm__( | 195 | __asm__( |
232 | #if BITS_PER_LONG > 32 | 196 | #ifdef __LP64__ |
233 | " ldi 63,%1\n" | 197 | " ldi 63,%1\n" |
234 | " extrd,u,*<> %0,63,32,%%r0\n" | 198 | " extrd,u,*<> %0,63,32,%%r0\n" |
235 | " extrd,u,*TR %0,31,32,%0\n" /* move top 32-bits down */ | 199 | " extrd,u,*TR %0,31,32,%0\n" /* move top 32-bits down */ |
@@ -304,14 +268,7 @@ static __inline__ int fls(int x) | |||
304 | * hweightN: returns the hamming weight (i.e. the number | 268 | * hweightN: returns the hamming weight (i.e. the number |
305 | * of bits set) of a N-bit word | 269 | * of bits set) of a N-bit word |
306 | */ | 270 | */ |
307 | #define hweight64(x) \ | 271 | #define hweight64(x) generic_hweight64(x) |
308 | ({ \ | ||
309 | unsigned long __x = (x); \ | ||
310 | unsigned int __w; \ | ||
311 | __w = generic_hweight32((unsigned int) __x); \ | ||
312 | __w += generic_hweight32((unsigned int) (__x>>32)); \ | ||
313 | __w; \ | ||
314 | }) | ||
315 | #define hweight32(x) generic_hweight32(x) | 272 | #define hweight32(x) generic_hweight32(x) |
316 | #define hweight16(x) generic_hweight16(x) | 273 | #define hweight16(x) generic_hweight16(x) |
317 | #define hweight8(x) generic_hweight8(x) | 274 | #define hweight8(x) generic_hweight8(x) |
@@ -324,7 +281,13 @@ static __inline__ int fls(int x) | |||
324 | */ | 281 | */ |
325 | static inline int sched_find_first_bit(const unsigned long *b) | 282 | static inline int sched_find_first_bit(const unsigned long *b) |
326 | { | 283 | { |
327 | #ifndef __LP64__ | 284 | #ifdef __LP64__ |
285 | if (unlikely(b[0])) | ||
286 | return __ffs(b[0]); | ||
287 | if (unlikely(b[1])) | ||
288 | return __ffs(b[1]) + 64; | ||
289 | return __ffs(b[2]) + 128; | ||
290 | #else | ||
328 | if (unlikely(b[0])) | 291 | if (unlikely(b[0])) |
329 | return __ffs(b[0]); | 292 | return __ffs(b[0]); |
330 | if (unlikely(b[1])) | 293 | if (unlikely(b[1])) |
@@ -334,14 +297,6 @@ static inline int sched_find_first_bit(const unsigned long *b) | |||
334 | if (b[3]) | 297 | if (b[3]) |
335 | return __ffs(b[3]) + 96; | 298 | return __ffs(b[3]) + 96; |
336 | return __ffs(b[4]) + 128; | 299 | return __ffs(b[4]) + 128; |
337 | #else | ||
338 | if (unlikely(b[0])) | ||
339 | return __ffs(b[0]); | ||
340 | if (unlikely(((unsigned int)b[1]))) | ||
341 | return __ffs(b[1]) + 64; | ||
342 | if (b[1] >> 32) | ||
343 | return __ffs(b[1] >> 32) + 96; | ||
344 | return __ffs(b[2]) + 128; | ||
345 | #endif | 300 | #endif |
346 | } | 301 | } |
347 | 302 | ||
@@ -391,7 +346,7 @@ found_middle: | |||
391 | 346 | ||
392 | static __inline__ unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset) | 347 | static __inline__ unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset) |
393 | { | 348 | { |
394 | const unsigned long *p = addr + (offset >> 6); | 349 | const unsigned long *p = addr + (offset >> SHIFT_PER_LONG); |
395 | unsigned long result = offset & ~(BITS_PER_LONG-1); | 350 | unsigned long result = offset & ~(BITS_PER_LONG-1); |
396 | unsigned long tmp; | 351 | unsigned long tmp; |
397 | 352 | ||
@@ -445,71 +400,90 @@ found_middle: | |||
445 | * test_and_{set,clear}_bit guarantee atomicity without | 400 | * test_and_{set,clear}_bit guarantee atomicity without |
446 | * disabling interrupts. | 401 | * disabling interrupts. |
447 | */ | 402 | */ |
448 | #ifdef __LP64__ | ||
449 | #define ext2_set_bit(nr, addr) __test_and_set_bit((nr) ^ 0x38, (unsigned long *)addr) | ||
450 | #define ext2_set_bit_atomic(l,nr,addr) test_and_set_bit((nr) ^ 0x38, (unsigned long *)addr) | ||
451 | #define ext2_clear_bit(nr, addr) __test_and_clear_bit((nr) ^ 0x38, (unsigned long *)addr) | ||
452 | #define ext2_clear_bit_atomic(l,nr,addr) test_and_clear_bit((nr) ^ 0x38, (unsigned long *)addr) | ||
453 | #else | ||
454 | #define ext2_set_bit(nr, addr) __test_and_set_bit((nr) ^ 0x18, (unsigned long *)addr) | ||
455 | #define ext2_set_bit_atomic(l,nr,addr) test_and_set_bit((nr) ^ 0x18, (unsigned long *)addr) | ||
456 | #define ext2_clear_bit(nr, addr) __test_and_clear_bit((nr) ^ 0x18, (unsigned long *)addr) | ||
457 | #define ext2_clear_bit_atomic(l,nr,addr) test_and_clear_bit((nr) ^ 0x18, (unsigned long *)addr) | ||
458 | #endif | ||
459 | 403 | ||
460 | #endif /* __KERNEL__ */ | 404 | /* '3' is bits per byte */ |
405 | #define LE_BYTE_ADDR ((sizeof(unsigned long) - 1) << 3) | ||
461 | 406 | ||
462 | static __inline__ int ext2_test_bit(int nr, __const__ void * addr) | 407 | #define ext2_test_bit(nr, addr) \ |
463 | { | 408 | test_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr) |
464 | __const__ unsigned char *ADDR = (__const__ unsigned char *) addr; | 409 | #define ext2_set_bit(nr, addr) \ |
410 | __test_and_set_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr) | ||
411 | #define ext2_clear_bit(nr, addr) \ | ||
412 | __test_and_clear_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr) | ||
465 | 413 | ||
466 | return (ADDR[nr >> 3] >> (nr & 7)) & 1; | 414 | #define ext2_set_bit_atomic(l,nr,addr) \ |
467 | } | 415 | test_and_set_bit((nr) ^ LE_BYTE_ADDR, (unsigned long *)addr) |
416 | #define ext2_clear_bit_atomic(l,nr,addr) \ | ||
417 | test_and_clear_bit( (nr) ^ LE_BYTE_ADDR, (unsigned long *)addr) | ||
418 | |||
419 | #endif /* __KERNEL__ */ | ||
468 | 420 | ||
469 | /* | ||
470 | * This implementation of ext2_find_{first,next}_zero_bit was stolen from | ||
471 | * Linus' asm-alpha/bitops.h and modified for a big-endian machine. | ||
472 | */ | ||
473 | 421 | ||
474 | #define ext2_find_first_zero_bit(addr, size) \ | 422 | #define ext2_find_first_zero_bit(addr, size) \ |
475 | ext2_find_next_zero_bit((addr), (size), 0) | 423 | ext2_find_next_zero_bit((addr), (size), 0) |
476 | 424 | ||
477 | extern __inline__ unsigned long ext2_find_next_zero_bit(void *addr, | 425 | /* include/linux/byteorder does not support "unsigned long" type */ |
478 | unsigned long size, unsigned long offset) | 426 | static inline unsigned long ext2_swabp(unsigned long * x) |
479 | { | 427 | { |
480 | unsigned int *p = ((unsigned int *) addr) + (offset >> 5); | 428 | #ifdef __LP64__ |
481 | unsigned int result = offset & ~31UL; | 429 | return (unsigned long) __swab64p((u64 *) x); |
482 | unsigned int tmp; | 430 | #else |
431 | return (unsigned long) __swab32p((u32 *) x); | ||
432 | #endif | ||
433 | } | ||
434 | |||
435 | /* include/linux/byteorder doesn't support "unsigned long" type */ | ||
436 | static inline unsigned long ext2_swab(unsigned long y) | ||
437 | { | ||
438 | #ifdef __LP64__ | ||
439 | return (unsigned long) __swab64((u64) y); | ||
440 | #else | ||
441 | return (unsigned long) __swab32((u32) y); | ||
442 | #endif | ||
443 | } | ||
444 | |||
445 | static __inline__ unsigned long ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset) | ||
446 | { | ||
447 | unsigned long *p = (unsigned long *) addr + (offset >> SHIFT_PER_LONG); | ||
448 | unsigned long result = offset & ~(BITS_PER_LONG - 1); | ||
449 | unsigned long tmp; | ||
483 | 450 | ||
484 | if (offset >= size) | 451 | if (offset >= size) |
485 | return size; | 452 | return size; |
486 | size -= result; | 453 | size -= result; |
487 | offset &= 31UL; | 454 | offset &= (BITS_PER_LONG - 1UL); |
488 | if (offset) { | 455 | if (offset) { |
489 | tmp = cpu_to_le32p(p++); | 456 | tmp = ext2_swabp(p++); |
490 | tmp |= ~0UL >> (32-offset); | 457 | tmp |= (~0UL >> (BITS_PER_LONG - offset)); |
491 | if (size < 32) | 458 | if (size < BITS_PER_LONG) |
492 | goto found_first; | 459 | goto found_first; |
493 | if (tmp != ~0U) | 460 | if (~tmp) |
494 | goto found_middle; | 461 | goto found_middle; |
495 | size -= 32; | 462 | size -= BITS_PER_LONG; |
496 | result += 32; | 463 | result += BITS_PER_LONG; |
497 | } | 464 | } |
498 | while (size >= 32) { | 465 | |
499 | if ((tmp = cpu_to_le32p(p++)) != ~0U) | 466 | while (size & ~(BITS_PER_LONG - 1)) { |
500 | goto found_middle; | 467 | if (~(tmp = *(p++))) |
501 | result += 32; | 468 | goto found_middle_swap; |
502 | size -= 32; | 469 | result += BITS_PER_LONG; |
470 | size -= BITS_PER_LONG; | ||
503 | } | 471 | } |
504 | if (!size) | 472 | if (!size) |
505 | return result; | 473 | return result; |
506 | tmp = cpu_to_le32p(p); | 474 | tmp = ext2_swabp(p); |
507 | found_first: | 475 | found_first: |
508 | tmp |= ~0U << size; | 476 | tmp |= ~0UL << size; |
477 | if (tmp == ~0UL) /* Are any bits zero? */ | ||
478 | return result + size; /* Nope. Skip ffz */ | ||
509 | found_middle: | 479 | found_middle: |
510 | return result + ffz(tmp); | 480 | return result + ffz(tmp); |
481 | |||
482 | found_middle_swap: | ||
483 | return result + ffz(ext2_swab(tmp)); | ||
511 | } | 484 | } |
512 | 485 | ||
486 | |||
513 | /* Bitmap functions for the minix filesystem. */ | 487 | /* Bitmap functions for the minix filesystem. */ |
514 | #define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr) | 488 | #define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr) |
515 | #define minix_set_bit(nr,addr) ((void)ext2_set_bit(nr,addr)) | 489 | #define minix_set_bit(nr,addr) ((void)ext2_set_bit(nr,addr)) |
diff --git a/include/asm-parisc/errno.h b/include/asm-parisc/errno.h index 08464c405471..e2f3ddc796be 100644 --- a/include/asm-parisc/errno.h +++ b/include/asm-parisc/errno.h | |||
@@ -114,6 +114,7 @@ | |||
114 | 114 | ||
115 | #define ENOTSUP 252 /* Function not implemented (POSIX.4 / HPUX) */ | 115 | #define ENOTSUP 252 /* Function not implemented (POSIX.4 / HPUX) */ |
116 | #define ECANCELLED 253 /* aio request was canceled before complete (POSIX.4 / HPUX) */ | 116 | #define ECANCELLED 253 /* aio request was canceled before complete (POSIX.4 / HPUX) */ |
117 | #define ECANCELED ECANCELLED /* SuSv3 and Solaris wants one 'L' */ | ||
117 | 118 | ||
118 | /* for robust mutexes */ | 119 | /* for robust mutexes */ |
119 | #define EOWNERDEAD 254 /* Owner died */ | 120 | #define EOWNERDEAD 254 /* Owner died */ |
diff --git a/include/asm-parisc/grfioctl.h b/include/asm-parisc/grfioctl.h index d3cfc0168fb1..6a910311b56b 100644 --- a/include/asm-parisc/grfioctl.h +++ b/include/asm-parisc/grfioctl.h | |||
@@ -69,6 +69,8 @@ | |||
69 | #define CRT_ID_TVRX S9000_ID_98765 /* TVRX (gto/falcon) */ | 69 | #define CRT_ID_TVRX S9000_ID_98765 /* TVRX (gto/falcon) */ |
70 | #define CRT_ID_ARTIST S9000_ID_ARTIST /* Artist */ | 70 | #define CRT_ID_ARTIST S9000_ID_ARTIST /* Artist */ |
71 | #define CRT_ID_SUMMIT 0x2FC1066B /* Summit FX2, FX4, FX6 ... */ | 71 | #define CRT_ID_SUMMIT 0x2FC1066B /* Summit FX2, FX4, FX6 ... */ |
72 | #define CRT_ID_LEGO 0x35ACDA30 /* Lego FX5, FX10 ... */ | ||
73 | #define CRT_ID_PINNACLE 0x35ACDA16 /* Pinnacle FXe */ | ||
72 | 74 | ||
73 | /* structure for ioctl(GCDESCRIBE) */ | 75 | /* structure for ioctl(GCDESCRIBE) */ |
74 | 76 | ||
diff --git a/include/asm-parisc/led.h b/include/asm-parisc/led.h index 1ac8ab6c580d..efadfd543ec6 100644 --- a/include/asm-parisc/led.h +++ b/include/asm-parisc/led.h | |||
@@ -23,9 +23,6 @@ | |||
23 | 23 | ||
24 | #define LED_CMD_REG_NONE 0 /* NULL == no addr for the cmd register */ | 24 | #define LED_CMD_REG_NONE 0 /* NULL == no addr for the cmd register */ |
25 | 25 | ||
26 | /* led tasklet struct */ | ||
27 | extern struct tasklet_struct led_tasklet; | ||
28 | |||
29 | /* register_led_driver() */ | 26 | /* register_led_driver() */ |
30 | int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long data_reg); | 27 | int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long data_reg); |
31 | 28 | ||
diff --git a/include/asm-parisc/parisc-device.h b/include/asm-parisc/parisc-device.h index ef69ab4b17a9..1d247e32a608 100644 --- a/include/asm-parisc/parisc-device.h +++ b/include/asm-parisc/parisc-device.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #include <linux/device.h> | 1 | #include <linux/device.h> |
2 | 2 | ||
3 | struct parisc_device { | 3 | struct parisc_device { |
4 | unsigned long hpa; /* Hard Physical Address */ | 4 | struct resource hpa; /* Hard Physical Address */ |
5 | struct parisc_device_id id; | 5 | struct parisc_device_id id; |
6 | struct parisc_driver *driver; /* Driver for this device */ | 6 | struct parisc_driver *driver; /* Driver for this device */ |
7 | char name[80]; /* The hardware description */ | 7 | char name[80]; /* The hardware description */ |
@@ -39,6 +39,11 @@ struct parisc_driver { | |||
39 | #define to_parisc_driver(d) container_of(d, struct parisc_driver, drv) | 39 | #define to_parisc_driver(d) container_of(d, struct parisc_driver, drv) |
40 | #define parisc_parent(d) to_parisc_device(d->dev.parent) | 40 | #define parisc_parent(d) to_parisc_device(d->dev.parent) |
41 | 41 | ||
42 | static inline char *parisc_pathname(struct parisc_device *d) | ||
43 | { | ||
44 | return d->dev.bus_id; | ||
45 | } | ||
46 | |||
42 | static inline void | 47 | static inline void |
43 | parisc_set_drvdata(struct parisc_device *d, void *p) | 48 | parisc_set_drvdata(struct parisc_device *d, void *p) |
44 | { | 49 | { |
diff --git a/include/asm-parisc/pci.h b/include/asm-parisc/pci.h index d0b761f690b5..fa39d07d49e9 100644 --- a/include/asm-parisc/pci.h +++ b/include/asm-parisc/pci.h | |||
@@ -69,7 +69,7 @@ struct pci_hba_data { | |||
69 | #define PCI_PORT_HBA(a) ((a) >> HBA_PORT_SPACE_BITS) | 69 | #define PCI_PORT_HBA(a) ((a) >> HBA_PORT_SPACE_BITS) |
70 | #define PCI_PORT_ADDR(a) ((a) & (HBA_PORT_SPACE_SIZE - 1)) | 70 | #define PCI_PORT_ADDR(a) ((a) & (HBA_PORT_SPACE_SIZE - 1)) |
71 | 71 | ||
72 | #if CONFIG_64BIT | 72 | #ifdef CONFIG_64BIT |
73 | #define PCI_F_EXTEND 0xffffffff00000000UL | 73 | #define PCI_F_EXTEND 0xffffffff00000000UL |
74 | #define PCI_IS_LMMIO(hba,a) pci_is_lmmio(hba,a) | 74 | #define PCI_IS_LMMIO(hba,a) pci_is_lmmio(hba,a) |
75 | 75 | ||
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h index 820c6e712cd7..c28fb6f48c6c 100644 --- a/include/asm-parisc/pgtable.h +++ b/include/asm-parisc/pgtable.h | |||
@@ -501,6 +501,8 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, | |||
501 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ | 501 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ |
502 | remap_pfn_range(vma, vaddr, pfn, size, prot) | 502 | remap_pfn_range(vma, vaddr, pfn, size, prot) |
503 | 503 | ||
504 | #define pgprot_noncached(prot) __pgprot(pgprot_val(prot) | _PAGE_NO_CACHE) | ||
505 | |||
504 | #define MK_IOSPACE_PFN(space, pfn) (pfn) | 506 | #define MK_IOSPACE_PFN(space, pfn) (pfn) |
505 | #define GET_IOSPACE(pfn) 0 | 507 | #define GET_IOSPACE(pfn) 0 |
506 | #define GET_PFN(pfn) (pfn) | 508 | #define GET_PFN(pfn) (pfn) |
diff --git a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h index a9dfadd05658..aae40e8c3aa8 100644 --- a/include/asm-parisc/processor.h +++ b/include/asm-parisc/processor.h | |||
@@ -122,8 +122,27 @@ struct thread_struct { | |||
122 | }; | 122 | }; |
123 | 123 | ||
124 | /* Thread struct flags. */ | 124 | /* Thread struct flags. */ |
125 | #define PARISC_UAC_NOPRINT (1UL << 0) /* see prctl and unaligned.c */ | ||
126 | #define PARISC_UAC_SIGBUS (1UL << 1) | ||
125 | #define PARISC_KERNEL_DEATH (1UL << 31) /* see die_if_kernel()... */ | 127 | #define PARISC_KERNEL_DEATH (1UL << 31) /* see die_if_kernel()... */ |
126 | 128 | ||
129 | #define PARISC_UAC_SHIFT 0 | ||
130 | #define PARISC_UAC_MASK (PARISC_UAC_NOPRINT|PARISC_UAC_SIGBUS) | ||
131 | |||
132 | #define SET_UNALIGN_CTL(task,value) \ | ||
133 | ({ \ | ||
134 | (task)->thread.flags = (((task)->thread.flags & ~PARISC_UAC_MASK) \ | ||
135 | | (((value) << PARISC_UAC_SHIFT) & \ | ||
136 | PARISC_UAC_MASK)); \ | ||
137 | 0; \ | ||
138 | }) | ||
139 | |||
140 | #define GET_UNALIGN_CTL(task,addr) \ | ||
141 | ({ \ | ||
142 | put_user(((task)->thread.flags & PARISC_UAC_MASK) \ | ||
143 | >> PARISC_UAC_SHIFT, (int __user *) (addr)); \ | ||
144 | }) | ||
145 | |||
127 | #define INIT_THREAD { \ | 146 | #define INIT_THREAD { \ |
128 | regs: { gr: { 0, }, \ | 147 | regs: { gr: { 0, }, \ |
129 | fr: { 0, }, \ | 148 | fr: { 0, }, \ |
diff --git a/include/asm-parisc/psw.h b/include/asm-parisc/psw.h index 51323029f377..4334d6ca2add 100644 --- a/include/asm-parisc/psw.h +++ b/include/asm-parisc/psw.h | |||
@@ -1,4 +1,7 @@ | |||
1 | #ifndef _PARISC_PSW_H | 1 | #ifndef _PARISC_PSW_H |
2 | |||
3 | #include <linux/config.h> | ||
4 | |||
2 | #define PSW_I 0x00000001 | 5 | #define PSW_I 0x00000001 |
3 | #define PSW_D 0x00000002 | 6 | #define PSW_D 0x00000002 |
4 | #define PSW_P 0x00000004 | 7 | #define PSW_P 0x00000004 |
@@ -9,6 +12,16 @@ | |||
9 | #define PSW_G 0x00000040 /* PA1.x only */ | 12 | #define PSW_G 0x00000040 /* PA1.x only */ |
10 | #define PSW_O 0x00000080 /* PA2.0 only */ | 13 | #define PSW_O 0x00000080 /* PA2.0 only */ |
11 | 14 | ||
15 | /* ssm/rsm instructions number PSW_W and PSW_E differently */ | ||
16 | #define PSW_SM_I PSW_I /* Enable External Interrupts */ | ||
17 | #define PSW_SM_D PSW_D | ||
18 | #define PSW_SM_P PSW_P | ||
19 | #define PSW_SM_Q PSW_Q /* Enable Interrupt State Collection */ | ||
20 | #define PSW_SM_R PSW_R /* Enable Recover Counter Trap */ | ||
21 | #define PSW_SM_W 0x200 /* PA2.0 only : Enable Wide Mode */ | ||
22 | |||
23 | #define PSW_SM_QUIET PSW_SM_R+PSW_SM_Q+PSW_SM_P+PSW_SM_D+PSW_SM_I | ||
24 | |||
12 | #define PSW_CB 0x0000ff00 | 25 | #define PSW_CB 0x0000ff00 |
13 | 26 | ||
14 | #define PSW_M 0x00010000 | 27 | #define PSW_M 0x00010000 |
@@ -30,33 +43,21 @@ | |||
30 | #define PSW_Z 0x40000000 /* PA1.x only */ | 43 | #define PSW_Z 0x40000000 /* PA1.x only */ |
31 | #define PSW_Y 0x80000000 /* PA1.x only */ | 44 | #define PSW_Y 0x80000000 /* PA1.x only */ |
32 | 45 | ||
33 | #ifdef __LP64__ | 46 | #ifdef CONFIG_64BIT |
34 | #define PSW_HI_CB 0x000000ff /* PA2.0 only */ | 47 | # define PSW_HI_CB 0x000000ff /* PA2.0 only */ |
35 | #endif | 48 | #endif |
36 | 49 | ||
37 | /* PSW bits to be used with ssm/rsm */ | 50 | #ifdef CONFIG_64BIT |
38 | #define PSW_SM_I 0x1 | 51 | # define USER_PSW_HI_MASK PSW_HI_CB |
39 | #define PSW_SM_D 0x2 | 52 | # define WIDE_PSW PSW_W |
40 | #define PSW_SM_P 0x4 | 53 | #else |
41 | #define PSW_SM_Q 0x8 | 54 | # define WIDE_PSW 0 |
42 | #define PSW_SM_R 0x10 | ||
43 | #define PSW_SM_F 0x20 | ||
44 | #define PSW_SM_G 0x40 | ||
45 | #define PSW_SM_O 0x80 | ||
46 | #define PSW_SM_E 0x100 | ||
47 | #define PSW_SM_W 0x200 | ||
48 | |||
49 | #ifdef __LP64__ | ||
50 | # define USER_PSW (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I) | ||
51 | # define KERNEL_PSW (PSW_W | PSW_C | PSW_Q | PSW_P | PSW_D) | ||
52 | # define REAL_MODE_PSW (PSW_W | PSW_Q) | ||
53 | # define USER_PSW_MASK (PSW_W | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB) | ||
54 | # define USER_PSW_HI_MASK (PSW_HI_CB) | ||
55 | #else | ||
56 | # define USER_PSW (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I) | ||
57 | # define KERNEL_PSW (PSW_C | PSW_Q | PSW_P | PSW_D) | ||
58 | # define REAL_MODE_PSW (PSW_Q) | ||
59 | # define USER_PSW_MASK (PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB) | ||
60 | #endif | 55 | #endif |
61 | 56 | ||
57 | /* Used when setting up for rfi */ | ||
58 | #define KERNEL_PSW (WIDE_PSW | PSW_C | PSW_Q | PSW_P | PSW_D) | ||
59 | #define REAL_MODE_PSW (WIDE_PSW | PSW_Q) | ||
60 | #define USER_PSW_MASK (WIDE_PSW | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB) | ||
61 | #define USER_PSW (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I) | ||
62 | |||
62 | #endif | 63 | #endif |
diff --git a/include/asm-parisc/ptrace.h b/include/asm-parisc/ptrace.h index 3f428aa371a4..93f990e418f1 100644 --- a/include/asm-parisc/ptrace.h +++ b/include/asm-parisc/ptrace.h | |||
@@ -49,7 +49,7 @@ struct pt_regs { | |||
49 | #define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0) | 49 | #define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0) |
50 | #define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0) | 50 | #define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0) |
51 | #define instruction_pointer(regs) ((regs)->iaoq[0] & ~3) | 51 | #define instruction_pointer(regs) ((regs)->iaoq[0] & ~3) |
52 | #define profile_pc(regs) instruction_pointer(regs) | 52 | unsigned long profile_pc(struct pt_regs *); |
53 | extern void show_regs(struct pt_regs *); | 53 | extern void show_regs(struct pt_regs *); |
54 | #endif | 54 | #endif |
55 | 55 | ||
diff --git a/include/asm-parisc/spinlock.h b/include/asm-parisc/spinlock.h index 43eaa6e742e0..7c3f406a746a 100644 --- a/include/asm-parisc/spinlock.h +++ b/include/asm-parisc/spinlock.h | |||
@@ -5,11 +5,6 @@ | |||
5 | #include <asm/processor.h> | 5 | #include <asm/processor.h> |
6 | #include <asm/spinlock_types.h> | 6 | #include <asm/spinlock_types.h> |
7 | 7 | ||
8 | /* Note that PA-RISC has to use `1' to mean unlocked and `0' to mean locked | ||
9 | * since it only has load-and-zero. Moreover, at least on some PA processors, | ||
10 | * the semaphore address has to be 16-byte aligned. | ||
11 | */ | ||
12 | |||
13 | static inline int __raw_spin_is_locked(raw_spinlock_t *x) | 8 | static inline int __raw_spin_is_locked(raw_spinlock_t *x) |
14 | { | 9 | { |
15 | volatile unsigned int *a = __ldcw_align(x); | 10 | volatile unsigned int *a = __ldcw_align(x); |
diff --git a/include/asm-parisc/spinlock_types.h b/include/asm-parisc/spinlock_types.h index 785bba822fbf..d6b479bdb886 100644 --- a/include/asm-parisc/spinlock_types.h +++ b/include/asm-parisc/spinlock_types.h | |||
@@ -6,11 +6,15 @@ | |||
6 | #endif | 6 | #endif |
7 | 7 | ||
8 | typedef struct { | 8 | typedef struct { |
9 | #ifdef CONFIG_PA20 | ||
10 | volatile unsigned int slock; | ||
11 | # define __RAW_SPIN_LOCK_UNLOCKED { 1 } | ||
12 | #else | ||
9 | volatile unsigned int lock[4]; | 13 | volatile unsigned int lock[4]; |
14 | # define __RAW_SPIN_LOCK_UNLOCKED { { 1, 1, 1, 1 } } | ||
15 | #endif | ||
10 | } raw_spinlock_t; | 16 | } raw_spinlock_t; |
11 | 17 | ||
12 | #define __RAW_SPIN_LOCK_UNLOCKED { { 1, 1, 1, 1 } } | ||
13 | |||
14 | typedef struct { | 18 | typedef struct { |
15 | raw_spinlock_t lock; | 19 | raw_spinlock_t lock; |
16 | volatile int counter; | 20 | volatile int counter; |
diff --git a/include/asm-parisc/system.h b/include/asm-parisc/system.h index 26ff844a21c1..f3928d3a80cb 100644 --- a/include/asm-parisc/system.h +++ b/include/asm-parisc/system.h | |||
@@ -138,13 +138,7 @@ static inline void set_eiem(unsigned long val) | |||
138 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | 138 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) |
139 | 139 | ||
140 | 140 | ||
141 | /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ | 141 | #ifndef CONFIG_PA20 |
142 | #define __ldcw(a) ({ \ | ||
143 | unsigned __ret; \ | ||
144 | __asm__ __volatile__("ldcw 0(%1),%0" : "=r" (__ret) : "r" (a)); \ | ||
145 | __ret; \ | ||
146 | }) | ||
147 | |||
148 | /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, | 142 | /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, |
149 | and GCC only guarantees 8-byte alignment for stack locals, we can't | 143 | and GCC only guarantees 8-byte alignment for stack locals, we can't |
150 | be assured of 16-byte alignment for atomic lock data even if we | 144 | be assured of 16-byte alignment for atomic lock data even if we |
@@ -152,37 +146,41 @@ static inline void set_eiem(unsigned long val) | |||
152 | we use a struct containing an array of four ints for the atomic lock | 146 | we use a struct containing an array of four ints for the atomic lock |
153 | type and dynamically select the 16-byte aligned int from the array | 147 | type and dynamically select the 16-byte aligned int from the array |
154 | for the semaphore. */ | 148 | for the semaphore. */ |
149 | |||
155 | #define __PA_LDCW_ALIGNMENT 16 | 150 | #define __PA_LDCW_ALIGNMENT 16 |
156 | #define __ldcw_align(a) ({ \ | 151 | #define __ldcw_align(a) ({ \ |
157 | unsigned long __ret = (unsigned long) &(a)->lock[0]; \ | 152 | unsigned long __ret = (unsigned long) &(a)->lock[0]; \ |
158 | __ret = (__ret + __PA_LDCW_ALIGNMENT - 1) & ~(__PA_LDCW_ALIGNMENT - 1); \ | 153 | __ret = (__ret + __PA_LDCW_ALIGNMENT - 1) & ~(__PA_LDCW_ALIGNMENT - 1); \ |
159 | (volatile unsigned int *) __ret; \ | 154 | (volatile unsigned int *) __ret; \ |
160 | }) | 155 | }) |
156 | #define LDCW "ldcw" | ||
161 | 157 | ||
162 | #ifdef CONFIG_SMP | 158 | #else /*CONFIG_PA20*/ |
163 | # define __lock_aligned __attribute__((__section__(".data.lock_aligned"))) | 159 | /* From: "Jim Hull" <jim.hull of hp.com> |
164 | #endif | 160 | I've attached a summary of the change, but basically, for PA 2.0, as |
161 | long as the ",CO" (coherent operation) completer is specified, then the | ||
162 | 16-byte alignment requirement for ldcw and ldcd is relaxed, and instead | ||
163 | they only require "natural" alignment (4-byte for ldcw, 8-byte for | ||
164 | ldcd). */ | ||
165 | 165 | ||
166 | #define KERNEL_START (0x10100000 - 0x1000) | 166 | #define __PA_LDCW_ALIGNMENT 4 |
167 | #define __ldcw_align(a) ((volatile unsigned int *)a) | ||
168 | #define LDCW "ldcw,co" | ||
167 | 169 | ||
168 | /* This is for the serialisation of PxTLB broadcasts. At least on the | 170 | #endif /*!CONFIG_PA20*/ |
169 | * N class systems, only one PxTLB inter processor broadcast can be | ||
170 | * active at any one time on the Merced bus. This tlb purge | ||
171 | * synchronisation is fairly lightweight and harmless so we activate | ||
172 | * it on all SMP systems not just the N class. */ | ||
173 | #ifdef CONFIG_SMP | ||
174 | extern spinlock_t pa_tlb_lock; | ||
175 | 171 | ||
176 | #define purge_tlb_start(x) spin_lock(&pa_tlb_lock) | 172 | /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ |
177 | #define purge_tlb_end(x) spin_unlock(&pa_tlb_lock) | 173 | #define __ldcw(a) ({ \ |
178 | 174 | unsigned __ret; \ | |
179 | #else | 175 | __asm__ __volatile__(LDCW " 0(%1),%0" : "=r" (__ret) : "r" (a)); \ |
180 | 176 | __ret; \ | |
181 | #define purge_tlb_start(x) do { } while(0) | 177 | }) |
182 | #define purge_tlb_end(x) do { } while (0) | ||
183 | 178 | ||
179 | #ifdef CONFIG_SMP | ||
180 | # define __lock_aligned __attribute__((__section__(".data.lock_aligned"))) | ||
184 | #endif | 181 | #endif |
185 | 182 | ||
183 | #define KERNEL_START (0x10100000 - 0x1000) | ||
186 | #define arch_align_stack(x) (x) | 184 | #define arch_align_stack(x) (x) |
187 | 185 | ||
188 | #endif | 186 | #endif |
diff --git a/include/asm-parisc/tlbflush.h b/include/asm-parisc/tlbflush.h index eb27b78930e8..84af4ab1fe51 100644 --- a/include/asm-parisc/tlbflush.h +++ b/include/asm-parisc/tlbflush.h | |||
@@ -7,6 +7,26 @@ | |||
7 | #include <linux/mm.h> | 7 | #include <linux/mm.h> |
8 | #include <asm/mmu_context.h> | 8 | #include <asm/mmu_context.h> |
9 | 9 | ||
10 | |||
11 | /* This is for the serialisation of PxTLB broadcasts. At least on the | ||
12 | * N class systems, only one PxTLB inter processor broadcast can be | ||
13 | * active at any one time on the Merced bus. This tlb purge | ||
14 | * synchronisation is fairly lightweight and harmless so we activate | ||
15 | * it on all SMP systems not just the N class. */ | ||
16 | #ifdef CONFIG_SMP | ||
17 | extern spinlock_t pa_tlb_lock; | ||
18 | |||
19 | #define purge_tlb_start(x) spin_lock(&pa_tlb_lock) | ||
20 | #define purge_tlb_end(x) spin_unlock(&pa_tlb_lock) | ||
21 | |||
22 | #else | ||
23 | |||
24 | #define purge_tlb_start(x) do { } while(0) | ||
25 | #define purge_tlb_end(x) do { } while (0) | ||
26 | |||
27 | #endif | ||
28 | |||
29 | |||
10 | extern void flush_tlb_all(void); | 30 | extern void flush_tlb_all(void); |
11 | 31 | ||
12 | /* | 32 | /* |
@@ -64,29 +84,26 @@ static inline void flush_tlb_range(struct vm_area_struct *vma, | |||
64 | { | 84 | { |
65 | unsigned long npages; | 85 | unsigned long npages; |
66 | 86 | ||
67 | |||
68 | npages = ((end - (start & PAGE_MASK)) + (PAGE_SIZE - 1)) >> PAGE_SHIFT; | 87 | npages = ((end - (start & PAGE_MASK)) + (PAGE_SIZE - 1)) >> PAGE_SHIFT; |
69 | if (npages >= 512) /* XXX arbitrary, should be tuned */ | 88 | if (npages >= 512) /* 2MB of space: arbitrary, should be tuned */ |
70 | flush_tlb_all(); | 89 | flush_tlb_all(); |
71 | else { | 90 | else { |
72 | 91 | ||
73 | mtsp(vma->vm_mm->context,1); | 92 | mtsp(vma->vm_mm->context,1); |
93 | purge_tlb_start(); | ||
74 | if (split_tlb) { | 94 | if (split_tlb) { |
75 | purge_tlb_start(); | ||
76 | while (npages--) { | 95 | while (npages--) { |
77 | pdtlb(start); | 96 | pdtlb(start); |
78 | pitlb(start); | 97 | pitlb(start); |
79 | start += PAGE_SIZE; | 98 | start += PAGE_SIZE; |
80 | } | 99 | } |
81 | purge_tlb_end(); | ||
82 | } else { | 100 | } else { |
83 | purge_tlb_start(); | ||
84 | while (npages--) { | 101 | while (npages--) { |
85 | pdtlb(start); | 102 | pdtlb(start); |
86 | start += PAGE_SIZE; | 103 | start += PAGE_SIZE; |
87 | } | 104 | } |
88 | purge_tlb_end(); | ||
89 | } | 105 | } |
106 | purge_tlb_end(); | ||
90 | } | 107 | } |
91 | } | 108 | } |
92 | 109 | ||
diff --git a/include/asm-parisc/types.h b/include/asm-parisc/types.h index d21b9d0d63ea..34fdce361a5a 100644 --- a/include/asm-parisc/types.h +++ b/include/asm-parisc/types.h | |||
@@ -33,8 +33,10 @@ typedef unsigned long long __u64; | |||
33 | 33 | ||
34 | #ifdef __LP64__ | 34 | #ifdef __LP64__ |
35 | #define BITS_PER_LONG 64 | 35 | #define BITS_PER_LONG 64 |
36 | #define SHIFT_PER_LONG 6 | ||
36 | #else | 37 | #else |
37 | #define BITS_PER_LONG 32 | 38 | #define BITS_PER_LONG 32 |
39 | #define SHIFT_PER_LONG 5 | ||
38 | #endif | 40 | #endif |
39 | 41 | ||
40 | #ifndef __ASSEMBLY__ | 42 | #ifndef __ASSEMBLY__ |
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h index 6a9f0cadff58..e7a620c5c5e6 100644 --- a/include/asm-parisc/unistd.h +++ b/include/asm-parisc/unistd.h | |||
@@ -687,8 +687,8 @@ | |||
687 | #define __NR_shmget (__NR_Linux + 194) | 687 | #define __NR_shmget (__NR_Linux + 194) |
688 | #define __NR_shmctl (__NR_Linux + 195) | 688 | #define __NR_shmctl (__NR_Linux + 195) |
689 | 689 | ||
690 | #define __NR_getpmsg (__NR_Linux + 196) /* some people actually want streams */ | 690 | #define __NR_getpmsg (__NR_Linux + 196) /* Somebody *wants* streams? */ |
691 | #define __NR_putpmsg (__NR_Linux + 197) /* some people actually want streams */ | 691 | #define __NR_putpmsg (__NR_Linux + 197) |
692 | 692 | ||
693 | #define __NR_lstat64 (__NR_Linux + 198) | 693 | #define __NR_lstat64 (__NR_Linux + 198) |
694 | #define __NR_truncate64 (__NR_Linux + 199) | 694 | #define __NR_truncate64 (__NR_Linux + 199) |
@@ -755,8 +755,14 @@ | |||
755 | #define __NR_mbind (__NR_Linux + 260) | 755 | #define __NR_mbind (__NR_Linux + 260) |
756 | #define __NR_get_mempolicy (__NR_Linux + 261) | 756 | #define __NR_get_mempolicy (__NR_Linux + 261) |
757 | #define __NR_set_mempolicy (__NR_Linux + 262) | 757 | #define __NR_set_mempolicy (__NR_Linux + 262) |
758 | #define __NR_vserver (__NR_Linux + 263) | ||
759 | #define __NR_add_key (__NR_Linux + 264) | ||
760 | #define __NR_request_key (__NR_Linux + 265) | ||
761 | #define __NR_keyctl (__NR_Linux + 266) | ||
762 | #define __NR_ioprio_set (__NR_Linux + 267) | ||
763 | #define __NR_ioprio_get (__NR_Linux + 268) | ||
758 | 764 | ||
759 | #define __NR_Linux_syscalls 263 | 765 | #define __NR_Linux_syscalls 269 |
760 | 766 | ||
761 | #define HPUX_GATEWAY_ADDR 0xC0000004 | 767 | #define HPUX_GATEWAY_ADDR 0xC0000004 |
762 | #define LINUX_GATEWAY_ADDR 0x100 | 768 | #define LINUX_GATEWAY_ADDR 0x100 |
@@ -807,10 +813,10 @@ | |||
807 | #define K_INLINE_SYSCALL(name, nr, args...) ({ \ | 813 | #define K_INLINE_SYSCALL(name, nr, args...) ({ \ |
808 | long __sys_res; \ | 814 | long __sys_res; \ |
809 | { \ | 815 | { \ |
810 | register unsigned long __res asm("r28"); \ | 816 | register unsigned long __res __asm__("r28"); \ |
811 | K_LOAD_ARGS_##nr(args) \ | 817 | K_LOAD_ARGS_##nr(args) \ |
812 | /* FIXME: HACK stw/ldw r19 around syscall */ \ | 818 | /* FIXME: HACK stw/ldw r19 around syscall */ \ |
813 | asm volatile( \ | 819 | __asm__ volatile( \ |
814 | K_STW_ASM_PIC \ | 820 | K_STW_ASM_PIC \ |
815 | " ble 0x100(%%sr2, %%r0)\n" \ | 821 | " ble 0x100(%%sr2, %%r0)\n" \ |
816 | " ldi %1, %%r20\n" \ | 822 | " ldi %1, %%r20\n" \ |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index ed1440ea4c91..d2c390eff1b2 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -269,6 +269,8 @@ u32 ethtool_op_get_tso(struct net_device *dev); | |||
269 | int ethtool_op_set_tso(struct net_device *dev, u32 data); | 269 | int ethtool_op_set_tso(struct net_device *dev, u32 data); |
270 | int ethtool_op_get_perm_addr(struct net_device *dev, | 270 | int ethtool_op_get_perm_addr(struct net_device *dev, |
271 | struct ethtool_perm_addr *addr, u8 *data); | 271 | struct ethtool_perm_addr *addr, u8 *data); |
272 | u32 ethtool_op_get_ufo(struct net_device *dev); | ||
273 | int ethtool_op_set_ufo(struct net_device *dev, u32 data); | ||
272 | 274 | ||
273 | /** | 275 | /** |
274 | * ðtool_ops - Alter and report network device settings | 276 | * ðtool_ops - Alter and report network device settings |
@@ -298,6 +300,8 @@ int ethtool_op_get_perm_addr(struct net_device *dev, | |||
298 | * set_sg: Turn scatter-gather on or off | 300 | * set_sg: Turn scatter-gather on or off |
299 | * get_tso: Report whether TCP segmentation offload is enabled | 301 | * get_tso: Report whether TCP segmentation offload is enabled |
300 | * set_tso: Turn TCP segmentation offload on or off | 302 | * set_tso: Turn TCP segmentation offload on or off |
303 | * get_ufo: Report whether UDP fragmentation offload is enabled | ||
304 | * set_ufo: Turn UDP fragmentation offload on or off | ||
301 | * self_test: Run specified self-tests | 305 | * self_test: Run specified self-tests |
302 | * get_strings: Return a set of strings that describe the requested objects | 306 | * get_strings: Return a set of strings that describe the requested objects |
303 | * phys_id: Identify the device | 307 | * phys_id: Identify the device |
@@ -364,6 +368,8 @@ struct ethtool_ops { | |||
364 | int (*get_perm_addr)(struct net_device *, struct ethtool_perm_addr *, u8 *); | 368 | int (*get_perm_addr)(struct net_device *, struct ethtool_perm_addr *, u8 *); |
365 | int (*begin)(struct net_device *); | 369 | int (*begin)(struct net_device *); |
366 | void (*complete)(struct net_device *); | 370 | void (*complete)(struct net_device *); |
371 | u32 (*get_ufo)(struct net_device *); | ||
372 | int (*set_ufo)(struct net_device *, u32); | ||
367 | }; | 373 | }; |
368 | 374 | ||
369 | /* CMDs currently supported */ | 375 | /* CMDs currently supported */ |
@@ -400,6 +406,8 @@ struct ethtool_ops { | |||
400 | #define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */ | 406 | #define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */ |
401 | #define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */ | 407 | #define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */ |
402 | #define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ | 408 | #define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ |
409 | #define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */ | ||
410 | #define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */ | ||
403 | 411 | ||
404 | /* compatibility with older code */ | 412 | /* compatibility with older code */ |
405 | #define SPARC_ETH_GSET ETHTOOL_GSET | 413 | #define SPARC_ETH_GSET ETHTOOL_GSET |
diff --git a/include/linux/hil.h b/include/linux/hil.h new file mode 100644 index 000000000000..13352d7d0caf --- /dev/null +++ b/include/linux/hil.h | |||
@@ -0,0 +1,483 @@ | |||
1 | #ifndef _HIL_H_ | ||
2 | #define _HIL_H_ | ||
3 | |||
4 | /* | ||
5 | * Hewlett Packard Human Interface Loop (HP-HIL) Protocol -- header. | ||
6 | * | ||
7 | * Copyright (c) 2001 Brian S. Julin | ||
8 | * All rights reserved. | ||
9 | * | ||
10 | * Redistribution and use in source and binary forms, with or without | ||
11 | * modification, are permitted provided that the following conditions | ||
12 | * are met: | ||
13 | * 1. Redistributions of source code must retain the above copyright | ||
14 | * notice, this list of conditions, and the following disclaimer, | ||
15 | * without modification. | ||
16 | * 2. The name of the author may not be used to endorse or promote products | ||
17 | * derived from this software without specific prior written permission. | ||
18 | * | ||
19 | * Alternatively, this software may be distributed under the terms of the | ||
20 | * GNU General Public License ("GPL"). | ||
21 | * | ||
22 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||
23 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
24 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
25 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR | ||
26 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
27 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
28 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
29 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
31 | * | ||
32 | * References: | ||
33 | * HP-HIL Technical Reference Manual. Hewlett Packard Product No. 45918A | ||
34 | * | ||
35 | * A note of thanks to HP for providing and shipping reference materials | ||
36 | * free of charge to help in the development of HIL support for Linux. | ||
37 | * | ||
38 | */ | ||
39 | |||
40 | #include <asm/types.h> | ||
41 | |||
42 | /* Physical constants relevant to raw loop/device timing. | ||
43 | */ | ||
44 | |||
45 | #define HIL_CLOCK 8MHZ | ||
46 | #define HIL_EK1_CLOCK 30HZ | ||
47 | #define HIL_EK2_CLOCK 60HZ | ||
48 | |||
49 | #define HIL_TIMEOUT_DEV 5 /* ms */ | ||
50 | #define HIL_TIMEOUT_DEVS 10 /* ms */ | ||
51 | #define HIL_TIMEOUT_NORESP 10 /* ms */ | ||
52 | #define HIL_TIMEOUT_DEVS_DATA 16 /* ms */ | ||
53 | #define HIL_TIMEOUT_SELFTEST 200 /* ms */ | ||
54 | |||
55 | |||
56 | /* Actual wire line coding. These will only be useful if someone is | ||
57 | * implementing a software MLC to run HIL devices on a non-parisc machine. | ||
58 | */ | ||
59 | |||
60 | #define HIL_WIRE_PACKET_LEN 15 | ||
61 | enum hil_wire_bitpos { | ||
62 | HIL_WIRE_START = 0, | ||
63 | HIL_WIRE_ADDR2, | ||
64 | HIL_WIRE_ADDR1, | ||
65 | HIL_WIRE_ADDR0, | ||
66 | HIL_WIRE_COMMAND, | ||
67 | HIL_WIRE_DATA7, | ||
68 | HIL_WIRE_DATA6, | ||
69 | HIL_WIRE_DATA5, | ||
70 | HIL_WIRE_DATA4, | ||
71 | HIL_WIRE_DATA3, | ||
72 | HIL_WIRE_DATA2, | ||
73 | HIL_WIRE_DATA1, | ||
74 | HIL_WIRE_DATA0, | ||
75 | HIL_WIRE_PARITY, | ||
76 | HIL_WIRE_STOP | ||
77 | }; | ||
78 | |||
79 | /* HP documentation uses these bit positions to refer to commands; | ||
80 | * we will call these "packets". | ||
81 | */ | ||
82 | enum hil_pkt_bitpos { | ||
83 | HIL_PKT_CMD = 0x00000800, | ||
84 | HIL_PKT_ADDR2 = 0x00000400, | ||
85 | HIL_PKT_ADDR1 = 0x00000200, | ||
86 | HIL_PKT_ADDR0 = 0x00000100, | ||
87 | HIL_PKT_ADDR_MASK = 0x00000700, | ||
88 | HIL_PKT_ADDR_SHIFT = 8, | ||
89 | HIL_PKT_DATA7 = 0x00000080, | ||
90 | HIL_PKT_DATA6 = 0x00000040, | ||
91 | HIL_PKT_DATA5 = 0x00000020, | ||
92 | HIL_PKT_DATA4 = 0x00000010, | ||
93 | HIL_PKT_DATA3 = 0x00000008, | ||
94 | HIL_PKT_DATA2 = 0x00000004, | ||
95 | HIL_PKT_DATA1 = 0x00000002, | ||
96 | HIL_PKT_DATA0 = 0x00000001, | ||
97 | HIL_PKT_DATA_MASK = 0x000000FF, | ||
98 | HIL_PKT_DATA_SHIFT = 0 | ||
99 | }; | ||
100 | |||
101 | /* The HIL MLC also has several error/status/control bits. We extend the | ||
102 | * "packet" to include these when direct access to the MLC is available, | ||
103 | * or emulate them in cases where they are not available. | ||
104 | * | ||
105 | * This way the device driver knows that the underlying MLC driver | ||
106 | * has had to deal with loop errors. | ||
107 | */ | ||
108 | enum hil_error_bitpos { | ||
109 | HIL_ERR_OB = 0x00000800, /* MLC is busy sending an auto-poll, | ||
110 | or we have filled up the output | ||
111 | buffer and must wait. */ | ||
112 | HIL_ERR_INT = 0x00010000, /* A normal interrupt has occurred. */ | ||
113 | HIL_ERR_NMI = 0x00020000, /* An NMI has occurred. */ | ||
114 | HIL_ERR_LERR = 0x00040000, /* A poll didn't come back. */ | ||
115 | HIL_ERR_PERR = 0x01000000, /* There was a Parity Error. */ | ||
116 | HIL_ERR_FERR = 0x02000000, /* There was a Framing Error. */ | ||
117 | HIL_ERR_FOF = 0x04000000 /* Input FIFO Overflowed. */ | ||
118 | }; | ||
119 | |||
120 | enum hil_control_bitpos { | ||
121 | HIL_CTRL_TEST = 0x00010000, | ||
122 | HIL_CTRL_IPF = 0x00040000, | ||
123 | HIL_CTRL_APE = 0x02000000 | ||
124 | }; | ||
125 | |||
126 | /* Bits 30,31 are unused, we use them to control write behavior. */ | ||
127 | #define HIL_DO_ALTER_CTRL 0x40000000 /* Write MSW of packet to control | ||
128 | before writing LSW to loop */ | ||
129 | #define HIL_CTRL_ONLY 0xc0000000 /* *Only* alter the control registers */ | ||
130 | |||
131 | /* This gives us a 32-bit "packet" | ||
132 | */ | ||
133 | typedef u32 hil_packet; | ||
134 | |||
135 | |||
136 | /* HIL Loop commands | ||
137 | */ | ||
138 | enum hil_command { | ||
139 | HIL_CMD_IFC = 0x00, /* Interface Clear */ | ||
140 | HIL_CMD_EPT = 0x01, /* Enter Pass-Thru Mode */ | ||
141 | HIL_CMD_ELB = 0x02, /* Enter Loop-Back Mode */ | ||
142 | HIL_CMD_IDD = 0x03, /* Identify and Describe */ | ||
143 | HIL_CMD_DSR = 0x04, /* Device Soft Reset */ | ||
144 | HIL_CMD_PST = 0x05, /* Perform Self Test */ | ||
145 | HIL_CMD_RRG = 0x06, /* Read Register */ | ||
146 | HIL_CMD_WRG = 0x07, /* Write Register */ | ||
147 | HIL_CMD_ACF = 0x08, /* Auto Configure */ | ||
148 | HIL_CMDID_ACF = 0x07, /* Auto Configure bits with incremented ID */ | ||
149 | HIL_CMD_POL = 0x10, /* Poll */ | ||
150 | HIL_CMDCT_POL = 0x0f, /* Poll command bits with item count */ | ||
151 | HIL_CMD_RPL = 0x20, /* RePoll */ | ||
152 | HIL_CMDCT_RPL = 0x0f, /* RePoll command bits with item count */ | ||
153 | HIL_CMD_RNM = 0x30, /* Report Name */ | ||
154 | HIL_CMD_RST = 0x31, /* Report Status */ | ||
155 | HIL_CMD_EXD = 0x32, /* Extended Describe */ | ||
156 | HIL_CMD_RSC = 0x33, /* Report Security Code */ | ||
157 | |||
158 | /* 0x34 to 0x3c reserved for future use */ | ||
159 | |||
160 | HIL_CMD_DKA = 0x3d, /* Disable Keyswitch Autorepeat */ | ||
161 | HIL_CMD_EK1 = 0x3e, /* Enable Keyswitch Autorepeat 1 */ | ||
162 | HIL_CMD_EK2 = 0x3f, /* Enable Keyswitch Autorepeat 2 */ | ||
163 | HIL_CMD_PR1 = 0x40, /* Prompt1 */ | ||
164 | HIL_CMD_PR2 = 0x41, /* Prompt2 */ | ||
165 | HIL_CMD_PR3 = 0x42, /* Prompt3 */ | ||
166 | HIL_CMD_PR4 = 0x43, /* Prompt4 */ | ||
167 | HIL_CMD_PR5 = 0x44, /* Prompt5 */ | ||
168 | HIL_CMD_PR6 = 0x45, /* Prompt6 */ | ||
169 | HIL_CMD_PR7 = 0x46, /* Prompt7 */ | ||
170 | HIL_CMD_PRM = 0x47, /* Prompt (General Purpose) */ | ||
171 | HIL_CMD_AK1 = 0x48, /* Acknowlege1 */ | ||
172 | HIL_CMD_AK2 = 0x49, /* Acknowlege2 */ | ||
173 | HIL_CMD_AK3 = 0x4a, /* Acknowlege3 */ | ||
174 | HIL_CMD_AK4 = 0x4b, /* Acknowlege4 */ | ||
175 | HIL_CMD_AK5 = 0x4c, /* Acknowlege5 */ | ||
176 | HIL_CMD_AK6 = 0x4d, /* Acknowlege6 */ | ||
177 | HIL_CMD_AK7 = 0x4e, /* Acknowlege7 */ | ||
178 | HIL_CMD_ACK = 0x4f, /* Acknowlege (General Purpose) */ | ||
179 | |||
180 | /* 0x50 to 0x78 reserved for future use */ | ||
181 | /* 0x80 to 0xEF device-specific commands */ | ||
182 | /* 0xf0 to 0xf9 reserved for future use */ | ||
183 | |||
184 | HIL_CMD_RIO = 0xfa, /* Register I/O Error */ | ||
185 | HIL_CMD_SHR = 0xfb, /* System Hard Reset */ | ||
186 | HIL_CMD_TER = 0xfc, /* Transmission Error */ | ||
187 | HIL_CMD_CAE = 0xfd, /* Configuration Address Error */ | ||
188 | HIL_CMD_DHR = 0xfe, /* Device Hard Reset */ | ||
189 | |||
190 | /* 0xff is prohibited from use. */ | ||
191 | }; | ||
192 | |||
193 | |||
194 | /* | ||
195 | * Response "records" to HIL commands | ||
196 | */ | ||
197 | |||
198 | /* Device ID byte | ||
199 | */ | ||
200 | #define HIL_IDD_DID_TYPE_MASK 0xe0 /* Primary type bits */ | ||
201 | #define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0 /* Integral keyboard */ | ||
202 | #define HIL_IDD_DID_TYPE_KB_ITF 0xc0 /* ITD keyboard */ | ||
203 | #define HIL_IDD_DID_TYPE_KB_RSVD 0xe0 /* Reserved keyboard type */ | ||
204 | #define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f /* Keyboard locale bits */ | ||
205 | #define HIL_IDD_DID_KBLANG_USE_ESD 0x00 /* Use ESD Locale instead */ | ||
206 | #define HIL_IDD_DID_TYPE_ABS 0x80 /* Absolute Positioners */ | ||
207 | #define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8 /* Reserved */ | ||
208 | #define HIL_IDD_DID_ABS_RSVD1 0x98 | ||
209 | #define HIL_IDD_DID_ABS_TABLET_MASK 0xf8 /* Tablets and digitizers */ | ||
210 | #define HIL_IDD_DID_ABS_TABLET 0x90 | ||
211 | #define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc /* Touch screens */ | ||
212 | #define HIL_IDD_DID_ABS_TSCREEN 0x8c | ||
213 | #define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc /* Reserved */ | ||
214 | #define HIL_IDD_DID_ABS_RSVD2 0x88 | ||
215 | #define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc /* Reserved */ | ||
216 | #define HIL_IDD_DID_ABS_RSVD3 0x80 | ||
217 | #define HIL_IDD_DID_TYPE_REL 0x60 /* Relative Positioners */ | ||
218 | #define HIL_IDD_DID_REL_RSVD1_MASK 0xf0 /* Reserved */ | ||
219 | #define HIL_IDD_DID_REL_RSVD1 0x70 | ||
220 | #define HIL_IDD_DID_REL_RSVD2_MASK 0xfc /* Reserved */ | ||
221 | #define HIL_IDD_DID_REL_RSVD2 0x6c | ||
222 | #define HIL_IDD_DID_REL_MOUSE_MASK 0xfc /* Mouse */ | ||
223 | #define HIL_IDD_DID_REL_MOUSE 0x68 | ||
224 | #define HIL_IDD_DID_REL_QUAD_MASK 0xf8 /* Other Quadrature Devices */ | ||
225 | #define HIL_IDD_DID_REL_QUAD 0x60 | ||
226 | #define HIL_IDD_DID_TYPE_CHAR 0x40 /* Character Entry */ | ||
227 | #define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc /* Barcode Reader */ | ||
228 | #define HIL_IDD_DID_CHAR_BARCODE 0x5c | ||
229 | #define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc /* Reserved */ | ||
230 | #define HIL_IDD_DID_CHAR_RSVD1 0x58 | ||
231 | #define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8 /* Reserved */ | ||
232 | #define HIL_IDD_DID_CHAR_RSVD2 0x50 | ||
233 | #define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0 /* Reserved */ | ||
234 | #define HIL_IDD_DID_CHAR_RSVD3 0x40 | ||
235 | #define HIL_IDD_DID_TYPE_OTHER 0x20 /* Miscellaneous */ | ||
236 | #define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0 /* Reserved */ | ||
237 | #define HIL_IDD_DID_OTHER_RSVD1 0x30 | ||
238 | #define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc /* Tone Generator */ | ||
239 | #define HIL_IDD_DID_OTHER_BARCODE 0x2c | ||
240 | #define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc /* Reserved */ | ||
241 | #define HIL_IDD_DID_OTHER_RSVD2 0x28 | ||
242 | #define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8 /* Reserved */ | ||
243 | #define HIL_IDD_DID_OTHER_RSVD3 0x20 | ||
244 | #define HIL_IDD_DID_TYPE_KEYPAD 0x00 /* Vectra Keyboard */ | ||
245 | |||
246 | /* IDD record header | ||
247 | */ | ||
248 | #define HIL_IDD_HEADER_AXSET_MASK 0x03 /* Number of axis in a set */ | ||
249 | #define HIL_IDD_HEADER_RSC 0x04 /* Supports RSC command */ | ||
250 | #define HIL_IDD_HEADER_EXD 0x08 /* Supports EXD command */ | ||
251 | #define HIL_IDD_HEADER_IOD 0x10 /* IOD byte to follow */ | ||
252 | #define HIL_IDD_HEADER_16BIT 0x20 /* 16 (vs. 8) bit resolution */ | ||
253 | #define HIL_IDD_HEADER_ABS 0x40 /* Reports Absolute Position */ | ||
254 | #define HIL_IDD_HEADER_2X_AXIS 0x80 /* Two sets of 1-3 axis */ | ||
255 | |||
256 | /* I/O Descriptor | ||
257 | */ | ||
258 | #define HIL_IDD_IOD_NBUTTON_MASK 0x07 /* Number of buttons */ | ||
259 | #define HIL_IDD_IOD_PROXIMITY 0x08 /* Proximity in/out events */ | ||
260 | #define HIL_IDD_IOD_PROMPT_MASK 0x70 /* Number of prompts/acks */ | ||
261 | #define HIL_IDD_IOD_PROMPT_SHIFT 4 | ||
262 | #define HIL_IDD_IOD_PROMPT 0x80 /* Generic prompt/ack */ | ||
263 | |||
264 | #define HIL_IDD_NUM_AXES_PER_SET(header_packet) \ | ||
265 | ((header_packet) & HIL_IDD_HEADER_AXSET_MASK) | ||
266 | |||
267 | #define HIL_IDD_NUM_AXSETS(header_packet) \ | ||
268 | (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS)) | ||
269 | |||
270 | #define HIL_IDD_LEN(header_packet) \ | ||
271 | ((4 - !(header_packet & HIL_IDD_HEADER_IOD) - \ | ||
272 | 2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet))) + \ | ||
273 | 2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) * \ | ||
274 | !!((header_packet) & HIL_IDD_HEADER_ABS)) | ||
275 | |||
276 | /* The following HIL_IDD_* macros assume you have an array of | ||
277 | * packets and/or unpacked 8-bit data in the order that they | ||
278 | * were received. | ||
279 | */ | ||
280 | |||
281 | #define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr) \ | ||
282 | (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 : \ | ||
283 | (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) + \ | ||
284 | ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 8) \ | ||
285 | * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 100 : 1))) | ||
286 | |||
287 | #define HIL_IDD_AXIS_MAX(header_ptr, __axnum) \ | ||
288 | ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) || \ | ||
289 | (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= __axnum)) ? 0 : \ | ||
290 | ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 * __axnum)) + \ | ||
291 | ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 * __axnum)) << 8))) | ||
292 | |||
293 | #define HIL_IDD_IOD(header_ptr) \ | ||
294 | (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1)) | ||
295 | |||
296 | #define HIL_IDD_HAS_GEN_PROMPT(header_ptr) \ | ||
297 | ((*header_ptr & HIL_IDD_HEADER_IOD) && \ | ||
298 | (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT)) | ||
299 | |||
300 | #define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr) \ | ||
301 | ((*header_ptr & HIL_IDD_HEADER_IOD) && \ | ||
302 | (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY)) | ||
303 | |||
304 | #define HIL_IDD_NUM_BUTTONS(header_ptr) \ | ||
305 | ((*header_ptr & HIL_IDD_HEADER_IOD) ? \ | ||
306 | (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0) | ||
307 | |||
308 | #define HIL_IDD_NUM_PROMPTS(header_ptr) \ | ||
309 | ((*header_ptr & HIL_IDD_HEADER_IOD) ? \ | ||
310 | ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROMPT_MASK) \ | ||
311 | >> HIL_IDD_IOD_PROMPT_SHIFT) : 0) | ||
312 | |||
313 | /* The response to HIL EXD commands -- the "extended describe record" */ | ||
314 | #define HIL_EXD_HEADER_WRG 0x03 /* Supports type2 WRG */ | ||
315 | #define HIL_EXD_HEADER_WRG_TYPE1 0x01 /* Supports type1 WRG */ | ||
316 | #define HIL_EXD_HEADER_WRG_TYPE2 0x02 /* Supports type2 WRG */ | ||
317 | #define HIL_EXD_HEADER_RRG 0x04 /* Supports RRG command */ | ||
318 | #define HIL_EXD_HEADER_RNM 0x10 /* Supports RNM command */ | ||
319 | #define HIL_EXD_HEADER_RST 0x20 /* Supports RST command */ | ||
320 | #define HIL_EXD_HEADER_LOCALE 0x40 /* Contains locale code */ | ||
321 | |||
322 | #define HIL_EXD_NUM_RRG(header_ptr) \ | ||
323 | ((*header_ptr & HIL_EXD_HEADER_RRG) ? \ | ||
324 | (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0) | ||
325 | |||
326 | #define HIL_EXD_NUM_WWG(header_ptr) \ | ||
327 | ((*header_ptr & HIL_EXD_HEADER_WRG) ? \ | ||
328 | (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_HEADER_RRG)) & \ | ||
329 | HIL_PKT_DATA_MASK) : 0) | ||
330 | |||
331 | #define HIL_EXD_LEN(header_ptr) \ | ||
332 | (!!(*header_ptr & HIL_EXD_HEADER_RRG) + \ | ||
333 | !!(*header_ptr & HIL_EXD_HEADER_WRG) + \ | ||
334 | !!(*header_ptr & HIL_EXD_HEADER_LOCALE) + \ | ||
335 | 2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) + 1) | ||
336 | |||
337 | #define HIL_EXD_LOCALE(header_ptr) \ | ||
338 | (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 : \ | ||
339 | (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) & HIL_PKT_DATA_MASK)) | ||
340 | |||
341 | #define HIL_EXD_WRG_TYPE2_LEN(header_ptr) \ | ||
342 | (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -1 : \ | ||
343 | (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 - \ | ||
344 | !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) + \ | ||
345 | ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 - \ | ||
346 | !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) << 8)) | ||
347 | |||
348 | /* Device locale codes. */ | ||
349 | |||
350 | /* Last defined locale code. Everything above this is "Reserved", | ||
351 | and note that this same table applies to the Device ID Byte where | ||
352 | keyboards may have a nationality code which is only 5 bits. */ | ||
353 | #define HIL_LOCALE_MAX 0x1f | ||
354 | |||
355 | /* Map to hopefully useful strings. I was trying to make these look | ||
356 | like locale.aliases strings do; maybe that isn't the right table to | ||
357 | emulate. In either case, I didn't have much to work on. */ | ||
358 | #define HIL_LOCALE_MAP \ | ||
359 | "", /* 0x00 Reserved */ \ | ||
360 | "", /* 0x01 Reserved */ \ | ||
361 | "", /* 0x02 Reserved */ \ | ||
362 | "swiss.french", /* 0x03 Swiss/French */ \ | ||
363 | "portuguese", /* 0x04 Portuguese */ \ | ||
364 | "arabic", /* 0x05 Arabic */ \ | ||
365 | "hebrew", /* 0x06 Hebrew */ \ | ||
366 | "english.canadian", /* 0x07 Canadian English */ \ | ||
367 | "turkish", /* 0x08 Turkish */ \ | ||
368 | "greek", /* 0x09 Greek */ \ | ||
369 | "thai", /* 0x0a Thai (Thailand) */ \ | ||
370 | "italian", /* 0x0b Italian */ \ | ||
371 | "korean", /* 0x0c Hangul (Korea) */ \ | ||
372 | "dutch", /* 0x0d Dutch */ \ | ||
373 | "swedish", /* 0x0e Swedish */ \ | ||
374 | "german", /* 0x0f German */ \ | ||
375 | "chinese", /* 0x10 Chinese-PRC */ \ | ||
376 | "chinese", /* 0x11 Chinese-ROC */ \ | ||
377 | "swiss.french", /* 0x12 Swiss/French II */ \ | ||
378 | "spanish", /* 0x13 Spanish */ \ | ||
379 | "swiss.german", /* 0x14 Swiss/German II */ \ | ||
380 | "flemish", /* 0x15 Belgian (Flemish) */ \ | ||
381 | "finnish", /* 0x16 Finnish */ \ | ||
382 | "english.uk", /* 0x17 United Kingdom */ \ | ||
383 | "french.canadian", /* 0x18 French/Canadian */ \ | ||
384 | "swiss.german", /* 0x19 Swiss/German */ \ | ||
385 | "norwegian", /* 0x1a Norwegian */ \ | ||
386 | "french", /* 0x1b French */ \ | ||
387 | "danish", /* 0x1c Danish */ \ | ||
388 | "japanese", /* 0x1d Katakana */ \ | ||
389 | "spanish", /* 0x1e Latin American/Spanish*/\ | ||
390 | "english.us" /* 0x1f United States */ \ | ||
391 | |||
392 | |||
393 | /* HIL keycodes */ | ||
394 | #define HIL_KEYCODES_SET1_TBLSIZE 128 | ||
395 | #define HIL_KEYCODES_SET1 \ | ||
396 | KEY_5, KEY_RESERVED, KEY_RIGHTALT, KEY_LEFTALT, \ | ||
397 | KEY_RIGHTSHIFT, KEY_LEFTSHIFT, KEY_LEFTCTRL, KEY_SYSRQ, \ | ||
398 | KEY_KP4, KEY_KP8, KEY_KP5, KEY_KP9, \ | ||
399 | KEY_KP6, KEY_KP7, KEY_KPCOMMA, KEY_KPENTER, \ | ||
400 | KEY_KP1, KEY_KPSLASH, KEY_KP2, KEY_KPPLUS, \ | ||
401 | KEY_KP3, KEY_KPASTERISK, KEY_KP0, KEY_KPMINUS, \ | ||
402 | KEY_B, KEY_V, KEY_C, KEY_X, \ | ||
403 | KEY_Z, KEY_RESERVED, KEY_RESERVED, KEY_ESC, \ | ||
404 | KEY_6, KEY_F10, KEY_3, KEY_F11, \ | ||
405 | KEY_KPDOT, KEY_F9, KEY_TAB /*KP*/, KEY_F12, \ | ||
406 | KEY_H, KEY_G, KEY_F, KEY_D, \ | ||
407 | KEY_S, KEY_A, KEY_RESERVED, KEY_CAPSLOCK, \ | ||
408 | KEY_U, KEY_Y, KEY_T, KEY_R, \ | ||
409 | KEY_E, KEY_W, KEY_Q, KEY_TAB, \ | ||
410 | KEY_7, KEY_6, KEY_5, KEY_4, \ | ||
411 | KEY_3, KEY_2, KEY_1, KEY_GRAVE, \ | ||
412 | KEY_F13, KEY_F14, KEY_F15, KEY_F16, \ | ||
413 | KEY_F17, KEY_F18, KEY_F19, KEY_F20, \ | ||
414 | KEY_MENU, KEY_F4, KEY_F3, KEY_F2, \ | ||
415 | KEY_F1, KEY_VOLUMEUP, KEY_STOP, KEY_SENDFILE, \ | ||
416 | KEY_SYSRQ, KEY_F5, KEY_F6, KEY_F7, \ | ||
417 | KEY_F8, KEY_VOLUMEDOWN, KEY_DEL_EOL, KEY_DEL_EOS, \ | ||
418 | KEY_8, KEY_9, KEY_0, KEY_MINUS, \ | ||
419 | KEY_EQUAL, KEY_BACKSPACE, KEY_INS_LINE, KEY_DEL_LINE, \ | ||
420 | KEY_I, KEY_O, KEY_P, KEY_LEFTBRACE, \ | ||
421 | KEY_RIGHTBRACE, KEY_BACKSLASH, KEY_INSERT, KEY_DELETE, \ | ||
422 | KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, \ | ||
423 | KEY_APOSTROPHE, KEY_ENTER, KEY_HOME, KEY_PAGEUP, \ | ||
424 | KEY_M, KEY_COMMA, KEY_DOT, KEY_SLASH, \ | ||
425 | KEY_BACKSLASH, KEY_SELECT, KEY_102ND, KEY_PAGEDOWN, \ | ||
426 | KEY_N, KEY_SPACE, KEY_NEXT, KEY_RESERVED, \ | ||
427 | KEY_LEFT, KEY_DOWN, KEY_UP, KEY_RIGHT | ||
428 | |||
429 | |||
430 | #define HIL_KEYCODES_SET3_TBLSIZE 128 | ||
431 | #define HIL_KEYCODES_SET3 \ | ||
432 | KEY_RESERVED, KEY_ESC, KEY_1, KEY_2, \ | ||
433 | KEY_3, KEY_4, KEY_5, KEY_6, \ | ||
434 | KEY_7, KEY_8, KEY_9, KEY_0, \ | ||
435 | KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, KEY_TAB, \ | ||
436 | KEY_Q, KEY_W, KEY_E, KEY_R, \ | ||
437 | KEY_T, KEY_Y, KEY_U, KEY_I, \ | ||
438 | KEY_O, KEY_P, KEY_LEFTBRACE, KEY_RIGHTBRACE, \ | ||
439 | KEY_ENTER, KEY_LEFTCTRL, KEY_A, KEY_S, \ | ||
440 | KEY_D, KEY_F, KEY_G, KEY_H, \ | ||
441 | KEY_J, KEY_K, KEY_L, KEY_SEMICOLON, \ | ||
442 | KEY_APOSTROPHE,KEY_GRAVE, KEY_LEFTSHIFT, KEY_BACKSLASH, \ | ||
443 | KEY_Z, KEY_X, KEY_C, KEY_V, \ | ||
444 | KEY_B, KEY_N, KEY_M, KEY_COMMA, \ | ||
445 | KEY_DOT, KEY_SLASH, KEY_RIGHTSHIFT, KEY_KPASTERISK, \ | ||
446 | KEY_LEFTALT, KEY_SPACE, KEY_CAPSLOCK, KEY_F1, \ | ||
447 | KEY_F2, KEY_F3, KEY_F4, KEY_F5, \ | ||
448 | KEY_F6, KEY_F7, KEY_F8, KEY_F9, \ | ||
449 | KEY_F10, KEY_NUMLOCK, KEY_SCROLLLOCK, KEY_KP7, \ | ||
450 | KEY_KP8, KEY_KP9, KEY_KPMINUS, KEY_KP4, \ | ||
451 | KEY_KP5, KEY_KP6, KEY_KPPLUS, KEY_KP1, \ | ||
452 | KEY_KP2, KEY_KP3, KEY_KP0, KEY_KPDOT, \ | ||
453 | KEY_SYSRQ, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ | ||
454 | KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ | ||
455 | KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ | ||
456 | KEY_UP, KEY_LEFT, KEY_DOWN, KEY_RIGHT, \ | ||
457 | KEY_HOME, KEY_PAGEUP, KEY_END, KEY_PAGEDOWN, \ | ||
458 | KEY_INSERT, KEY_DELETE, KEY_102ND, KEY_RESERVED, \ | ||
459 | KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ | ||
460 | KEY_F1, KEY_F2, KEY_F3, KEY_F4, \ | ||
461 | KEY_F5, KEY_F6, KEY_F7, KEY_F8, \ | ||
462 | KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, \ | ||
463 | KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED | ||
464 | |||
465 | |||
466 | /* Response to POL command, the "poll record header" */ | ||
467 | |||
468 | #define HIL_POL_NUM_AXES_MASK 0x03 /* Number of axis reported */ | ||
469 | #define HIL_POL_CTS 0x04 /* Device ready to receive data */ | ||
470 | #define HIL_POL_STATUS_PENDING 0x08 /* Device has status to report */ | ||
471 | #define HIL_POL_CHARTYPE_MASK 0x70 /* Type of character data to follow */ | ||
472 | #define HIL_POL_CHARTYPE_NONE 0x00 /* No character data to follow */ | ||
473 | #define HIL_POL_CHARTYPE_RSVD1 0x10 /* Reserved Set 1 */ | ||
474 | #define HIL_POL_CHARTYPE_ASCII 0x20 /* U.S. ASCII */ | ||
475 | #define HIL_POL_CHARTYPE_BINARY 0x30 /* Binary data */ | ||
476 | #define HIL_POL_CHARTYPE_SET1 0x40 /* Keycode Set 1 */ | ||
477 | #define HIL_POL_CHARTYPE_RSVD2 0x50 /* Reserved Set 2 */ | ||
478 | #define HIL_POL_CHARTYPE_SET2 0x60 /* Keycode Set 2 */ | ||
479 | #define HIL_POL_CHARTYPE_SET3 0x70 /* Keycode Set 3 */ | ||
480 | #define HIL_POL_AXIS_ALT 0x80 /* Data is from axis set 2 */ | ||
481 | |||
482 | |||
483 | #endif /* _HIL_H_ */ | ||
diff --git a/include/linux/hil_mlc.h b/include/linux/hil_mlc.h new file mode 100644 index 000000000000..8df29ca48a13 --- /dev/null +++ b/include/linux/hil_mlc.h | |||
@@ -0,0 +1,168 @@ | |||
1 | /* | ||
2 | * HP Human Interface Loop Master Link Controller driver. | ||
3 | * | ||
4 | * Copyright (c) 2001 Brian S. Julin | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Redistribution and use in source and binary forms, with or without | ||
8 | * modification, are permitted provided that the following conditions | ||
9 | * are met: | ||
10 | * 1. Redistributions of source code must retain the above copyright | ||
11 | * notice, this list of conditions, and the following disclaimer, | ||
12 | * without modification. | ||
13 | * 2. The name of the author may not be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * Alternatively, this software may be distributed under the terms of the | ||
17 | * GNU General Public License ("GPL"). | ||
18 | * | ||
19 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||
20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR | ||
23 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
25 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
26 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
27 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
28 | * | ||
29 | * References: | ||
30 | * HP-HIL Technical Reference Manual. Hewlett Packard Product No. 45918A | ||
31 | * | ||
32 | */ | ||
33 | |||
34 | #include <linux/hil.h> | ||
35 | #include <linux/time.h> | ||
36 | #include <linux/interrupt.h> | ||
37 | #include <asm/semaphore.h> | ||
38 | #include <linux/serio.h> | ||
39 | #include <linux/list.h> | ||
40 | |||
41 | typedef struct hil_mlc hil_mlc; | ||
42 | |||
43 | /* The HIL has a complicated state engine. | ||
44 | * We define the structure of nodes in the state engine here. | ||
45 | */ | ||
46 | enum hilse_act { | ||
47 | /* HILSE_OUT prepares to receive input if the next node | ||
48 | * is an IN or EXPECT, and then sends the given packet. | ||
49 | */ | ||
50 | HILSE_OUT = 0, | ||
51 | |||
52 | /* HILSE_CTS checks if the loop is busy. */ | ||
53 | HILSE_CTS, | ||
54 | |||
55 | /* HILSE_OUT_LAST sends the given command packet to | ||
56 | * the last configured/running device on the loop. | ||
57 | */ | ||
58 | HILSE_OUT_LAST, | ||
59 | |||
60 | /* HILSE_OUT_DISC sends the given command packet to | ||
61 | * the next device past the last configured/running one. | ||
62 | */ | ||
63 | HILSE_OUT_DISC, | ||
64 | |||
65 | /* HILSE_FUNC runs a callback function with given arguments. | ||
66 | * a positive return value causes the "ugly" branch to be taken. | ||
67 | */ | ||
68 | HILSE_FUNC, | ||
69 | |||
70 | /* HILSE_IN simply expects any non-errored packet to arrive | ||
71 | * within arg usecs. | ||
72 | */ | ||
73 | HILSE_IN = 0x100, | ||
74 | |||
75 | /* HILSE_EXPECT expects a particular packet to arrive | ||
76 | * within arg usecs, any other packet is considered an error. | ||
77 | */ | ||
78 | HILSE_EXPECT, | ||
79 | |||
80 | /* HILSE_EXPECT_LAST as above but dev field should be last | ||
81 | * discovered/operational device. | ||
82 | */ | ||
83 | HILSE_EXPECT_LAST, | ||
84 | |||
85 | /* HILSE_EXPECT_LAST as above but dev field should be first | ||
86 | * undiscovered/inoperational device. | ||
87 | */ | ||
88 | HILSE_EXPECT_DISC | ||
89 | }; | ||
90 | |||
91 | typedef int (hilse_func) (hil_mlc *mlc, int arg); | ||
92 | struct hilse_node { | ||
93 | enum hilse_act act; /* How to process this node */ | ||
94 | union { | ||
95 | hilse_func *func; /* Function to call if HILSE_FUNC */ | ||
96 | hil_packet packet; /* Packet to send or to compare */ | ||
97 | } object; | ||
98 | int arg; /* Timeout in usec or parm for func */ | ||
99 | int good; /* Node to jump to on success */ | ||
100 | int bad; /* Node to jump to on error */ | ||
101 | int ugly; /* Node to jump to on timeout */ | ||
102 | }; | ||
103 | |||
104 | /* Methods for back-end drivers, e.g. hp_sdc_mlc */ | ||
105 | typedef int (hil_mlc_cts) (hil_mlc *mlc); | ||
106 | typedef void (hil_mlc_out) (hil_mlc *mlc); | ||
107 | typedef int (hil_mlc_in) (hil_mlc *mlc, suseconds_t timeout); | ||
108 | |||
109 | struct hil_mlc_devinfo { | ||
110 | uint8_t idd[16]; /* Device ID Byte and Describe Record */ | ||
111 | uint8_t rsc[16]; /* Security Code Header and Record */ | ||
112 | uint8_t exd[16]; /* Extended Describe Record */ | ||
113 | uint8_t rnm[16]; /* Device name as returned by RNM command */ | ||
114 | }; | ||
115 | |||
116 | struct hil_mlc_serio_map { | ||
117 | hil_mlc *mlc; | ||
118 | int di_revmap; | ||
119 | int didx; | ||
120 | }; | ||
121 | |||
122 | /* How many (possibly old/detached) devices the we try to keep track of */ | ||
123 | #define HIL_MLC_DEVMEM 16 | ||
124 | |||
125 | struct hil_mlc { | ||
126 | struct list_head list; /* hil_mlc is organized as linked list */ | ||
127 | |||
128 | rwlock_t lock; | ||
129 | |||
130 | void *priv; /* Data specific to a particular type of MLC */ | ||
131 | |||
132 | int seidx; /* Current node in state engine */ | ||
133 | int istarted, ostarted; | ||
134 | |||
135 | hil_mlc_cts *cts; | ||
136 | struct semaphore csem; /* Raised when loop idle */ | ||
137 | |||
138 | hil_mlc_out *out; | ||
139 | struct semaphore osem; /* Raised when outpacket dispatched */ | ||
140 | hil_packet opacket; | ||
141 | |||
142 | hil_mlc_in *in; | ||
143 | struct semaphore isem; /* Raised when a packet arrives */ | ||
144 | hil_packet ipacket[16]; | ||
145 | hil_packet imatch; | ||
146 | int icount; | ||
147 | struct timeval instart; | ||
148 | suseconds_t intimeout; | ||
149 | |||
150 | int ddi; /* Last operational device id */ | ||
151 | int lcv; /* LCV to throttle loops */ | ||
152 | struct timeval lcv_tv; /* Time loop was started */ | ||
153 | |||
154 | int di_map[7]; /* Maps below items to live devs */ | ||
155 | struct hil_mlc_devinfo di[HIL_MLC_DEVMEM]; | ||
156 | struct serio *serio[HIL_MLC_DEVMEM]; | ||
157 | struct hil_mlc_serio_map serio_map[HIL_MLC_DEVMEM]; | ||
158 | hil_packet serio_opacket[HIL_MLC_DEVMEM]; | ||
159 | int serio_oidx[HIL_MLC_DEVMEM]; | ||
160 | struct hil_mlc_devinfo di_scratch; /* Temporary area */ | ||
161 | |||
162 | int opercnt; | ||
163 | |||
164 | struct tasklet_struct *tasklet; | ||
165 | }; | ||
166 | |||
167 | int hil_mlc_register(hil_mlc *mlc); | ||
168 | int hil_mlc_unregister(hil_mlc *mlc); | ||
diff --git a/include/linux/hp_sdc.h b/include/linux/hp_sdc.h new file mode 100644 index 000000000000..debd71515312 --- /dev/null +++ b/include/linux/hp_sdc.h | |||
@@ -0,0 +1,300 @@ | |||
1 | /* | ||
2 | * HP i8042 System Device Controller -- header | ||
3 | * | ||
4 | * Copyright (c) 2001 Brian S. Julin | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Redistribution and use in source and binary forms, with or without | ||
8 | * modification, are permitted provided that the following conditions | ||
9 | * are met: | ||
10 | * 1. Redistributions of source code must retain the above copyright | ||
11 | * notice, this list of conditions, and the following disclaimer, | ||
12 | * without modification. | ||
13 | * 2. The name of the author may not be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * Alternatively, this software may be distributed under the terms of the | ||
17 | * GNU General Public License ("GPL"). | ||
18 | * | ||
19 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||
20 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR | ||
23 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
25 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
26 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
27 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
28 | * | ||
29 | * References: | ||
30 | * | ||
31 | * HP-HIL Technical Reference Manual. Hewlett Packard Product No. 45918A | ||
32 | * | ||
33 | * System Device Controller Microprocessor Firmware Theory of Operation | ||
34 | * for Part Number 1820-4784 Revision B. Dwg No. A-1820-4784-2 | ||
35 | * | ||
36 | */ | ||
37 | |||
38 | #ifndef _LINUX_HP_SDC_H | ||
39 | #define _LINUX_HP_SDC_H | ||
40 | |||
41 | #include <linux/interrupt.h> | ||
42 | #include <linux/types.h> | ||
43 | #include <linux/time.h> | ||
44 | #include <linux/timer.h> | ||
45 | #if defined(__hppa__) | ||
46 | #include <asm/hardware.h> | ||
47 | #endif | ||
48 | |||
49 | |||
50 | /* No 4X status reads take longer than this (in usec). | ||
51 | */ | ||
52 | #define HP_SDC_MAX_REG_DELAY 20000 | ||
53 | |||
54 | typedef void (hp_sdc_irqhook) (int irq, void *dev_id, | ||
55 | uint8_t status, uint8_t data); | ||
56 | |||
57 | int hp_sdc_request_timer_irq(hp_sdc_irqhook *callback); | ||
58 | int hp_sdc_request_hil_irq(hp_sdc_irqhook *callback); | ||
59 | int hp_sdc_request_cooked_irq(hp_sdc_irqhook *callback); | ||
60 | int hp_sdc_release_timer_irq(hp_sdc_irqhook *callback); | ||
61 | int hp_sdc_release_hil_irq(hp_sdc_irqhook *callback); | ||
62 | int hp_sdc_release_cooked_irq(hp_sdc_irqhook *callback); | ||
63 | |||
64 | typedef struct { | ||
65 | int actidx; /* Start of act. Acts are atomic WRT I/O to SDC */ | ||
66 | int idx; /* Index within the act */ | ||
67 | int endidx; /* transaction is over and done if idx == endidx */ | ||
68 | uint8_t *seq; /* commands/data for the transaction */ | ||
69 | union { | ||
70 | hp_sdc_irqhook *irqhook; /* Callback, isr or tasklet context */ | ||
71 | struct semaphore *semaphore; /* Semaphore to sleep on. */ | ||
72 | } act; | ||
73 | } hp_sdc_transaction; | ||
74 | int hp_sdc_enqueue_transaction(hp_sdc_transaction *this); | ||
75 | int hp_sdc_dequeue_transaction(hp_sdc_transaction *this); | ||
76 | |||
77 | /* The HP_SDC_ACT* values are peculiar to this driver. | ||
78 | * Nuance: never HP_SDC_ACT_DATAIN | HP_SDC_ACT_DEALLOC, use another | ||
79 | * act to perform the dealloc. | ||
80 | */ | ||
81 | #define HP_SDC_ACT_PRECMD 0x01 /* Send a command first */ | ||
82 | #define HP_SDC_ACT_DATAREG 0x02 /* Set data registers */ | ||
83 | #define HP_SDC_ACT_DATAOUT 0x04 /* Send data bytes */ | ||
84 | #define HP_SDC_ACT_POSTCMD 0x08 /* Send command after */ | ||
85 | #define HP_SDC_ACT_DATAIN 0x10 /* Collect data after */ | ||
86 | #define HP_SDC_ACT_DURING 0x1f | ||
87 | #define HP_SDC_ACT_SEMAPHORE 0x20 /* Raise semaphore after */ | ||
88 | #define HP_SDC_ACT_CALLBACK 0x40 /* Pass data to IRQ handler */ | ||
89 | #define HP_SDC_ACT_DEALLOC 0x80 /* Destroy transaction after */ | ||
90 | #define HP_SDC_ACT_AFTER 0xe0 | ||
91 | #define HP_SDC_ACT_DEAD 0x60 /* Act timed out. */ | ||
92 | |||
93 | /* Rest of the flags are straightforward representation of the SDC interface */ | ||
94 | #define HP_SDC_STATUS_IBF 0x02 /* Input buffer full */ | ||
95 | |||
96 | #define HP_SDC_STATUS_IRQMASK 0xf0 /* Bits containing "level 1" irq */ | ||
97 | #define HP_SDC_STATUS_PERIODIC 0x10 /* Periodic 10ms timer */ | ||
98 | #define HP_SDC_STATUS_USERTIMER 0x20 /* "Special purpose" timer */ | ||
99 | #define HP_SDC_STATUS_TIMER 0x30 /* Both PERIODIC and USERTIMER */ | ||
100 | #define HP_SDC_STATUS_REG 0x40 /* Data from an i8042 register */ | ||
101 | #define HP_SDC_STATUS_HILCMD 0x50 /* Command from HIL MLC */ | ||
102 | #define HP_SDC_STATUS_HILDATA 0x60 /* Data from HIL MLC */ | ||
103 | #define HP_SDC_STATUS_PUP 0x70 /* Sucessful power-up self test */ | ||
104 | #define HP_SDC_STATUS_KCOOKED 0x80 /* Key from cooked kbd */ | ||
105 | #define HP_SDC_STATUS_KRPG 0xc0 /* Key from Repeat Gen */ | ||
106 | #define HP_SDC_STATUS_KMOD_SUP 0x10 /* Shift key is up */ | ||
107 | #define HP_SDC_STATUS_KMOD_CUP 0x20 /* Control key is up */ | ||
108 | |||
109 | #define HP_SDC_NMISTATUS_FHS 0x40 /* NMI is a fast handshake irq */ | ||
110 | |||
111 | /* Internal i8042 registers (there are more, but they are not too useful). */ | ||
112 | |||
113 | #define HP_SDC_USE 0x02 /* Resource usage (including OB bit) */ | ||
114 | #define HP_SDC_IM 0x04 /* Interrupt mask */ | ||
115 | #define HP_SDC_CFG 0x11 /* Configuration register */ | ||
116 | #define HP_SDC_KBLANGUAGE 0x12 /* Keyboard language */ | ||
117 | |||
118 | #define HP_SDC_D0 0x70 /* General purpose data buffer 0 */ | ||
119 | #define HP_SDC_D1 0x71 /* General purpose data buffer 1 */ | ||
120 | #define HP_SDC_D2 0x72 /* General purpose data buffer 2 */ | ||
121 | #define HP_SDC_D3 0x73 /* General purpose data buffer 3 */ | ||
122 | #define HP_SDC_VT1 0x74 /* Timer for voice 1 */ | ||
123 | #define HP_SDC_VT2 0x75 /* Timer for voice 2 */ | ||
124 | #define HP_SDC_VT3 0x76 /* Timer for voice 3 */ | ||
125 | #define HP_SDC_VT4 0x77 /* Timer for voice 4 */ | ||
126 | #define HP_SDC_KBN 0x78 /* Which HIL devs are Nimitz */ | ||
127 | #define HP_SDC_KBC 0x79 /* Which HIL devs are cooked kbds */ | ||
128 | #define HP_SDC_LPS 0x7a /* i8042's view of HIL status */ | ||
129 | #define HP_SDC_LPC 0x7b /* i8042's view of HIL "control" */ | ||
130 | #define HP_SDC_RSV 0x7c /* Reserved "for testing" */ | ||
131 | #define HP_SDC_LPR 0x7d /* i8042 count of HIL reconfigs */ | ||
132 | #define HP_SDC_XTD 0x7e /* "Extended Configuration" register */ | ||
133 | #define HP_SDC_STR 0x7f /* i8042 self-test result */ | ||
134 | |||
135 | /* Bitfields for above registers */ | ||
136 | #define HP_SDC_USE_LOOP 0x04 /* Command is currently on the loop. */ | ||
137 | |||
138 | #define HP_SDC_IM_MASK 0x1f /* these bits not part of cmd/status */ | ||
139 | #define HP_SDC_IM_FH 0x10 /* Mask the fast handshake irq */ | ||
140 | #define HP_SDC_IM_PT 0x08 /* Mask the periodic timer irq */ | ||
141 | #define HP_SDC_IM_TIMERS 0x04 /* Mask the MT/DT/CT irq */ | ||
142 | #define HP_SDC_IM_RESET 0x02 /* Mask the reset key irq */ | ||
143 | #define HP_SDC_IM_HIL 0x01 /* Mask the HIL MLC irq */ | ||
144 | |||
145 | #define HP_SDC_CFG_ROLLOVER 0x08 /* WTF is "N-key rollover"? */ | ||
146 | #define HP_SDC_CFG_KBD 0x10 /* There is a keyboard */ | ||
147 | #define HP_SDC_CFG_NEW 0x20 /* Supports/uses HIL MLC */ | ||
148 | #define HP_SDC_CFG_KBD_OLD 0x03 /* keyboard code for non-HIL */ | ||
149 | #define HP_SDC_CFG_KBD_NEW 0x07 /* keyboard code from HIL autoconfig */ | ||
150 | #define HP_SDC_CFG_REV 0x40 /* Code revision bit */ | ||
151 | #define HP_SDC_CFG_IDPROM 0x80 /* IDPROM present in kbd (not HIL) */ | ||
152 | |||
153 | #define HP_SDC_LPS_NDEV 0x07 /* # devices autoconfigured on HIL */ | ||
154 | #define HP_SDC_LPS_ACSUCC 0x08 /* loop autoconfigured successfully */ | ||
155 | #define HP_SDC_LPS_ACFAIL 0x80 /* last loop autoconfigure failed */ | ||
156 | |||
157 | #define HP_SDC_LPC_APE_IPF 0x01 /* HIL MLC APE/IPF (autopoll) set */ | ||
158 | #define HP_SDC_LPC_ARCONERR 0x02 /* i8042 autoreconfigs loop on err */ | ||
159 | #define HP_SDC_LPC_ARCQUIET 0x03 /* i8042 doesn't report autoreconfigs*/ | ||
160 | #define HP_SDC_LPC_COOK 0x10 /* i8042 cooks devices in _KBN */ | ||
161 | #define HP_SDC_LPC_RC 0x80 /* causes autoreconfig */ | ||
162 | |||
163 | #define HP_SDC_XTD_REV 0x07 /* contains revision code */ | ||
164 | #define HP_SDC_XTD_REV_STRINGS(val, str) \ | ||
165 | switch (val) { \ | ||
166 | case 0x1: str = "1820-3712"; break; \ | ||
167 | case 0x2: str = "1820-4379"; break; \ | ||
168 | case 0x3: str = "1820-4784"; break; \ | ||
169 | default: str = "unknown"; \ | ||
170 | }; | ||
171 | #define HP_SDC_XTD_BEEPER 0x08 /* TI SN76494 beeper available */ | ||
172 | #define HP_SDC_XTD_BBRTC 0x20 /* OKI MSM-58321 BBRTC present */ | ||
173 | |||
174 | #define HP_SDC_CMD_LOAD_RT 0x31 /* Load real time (from 8042) */ | ||
175 | #define HP_SDC_CMD_LOAD_FHS 0x36 /* Load the fast handshake timer */ | ||
176 | #define HP_SDC_CMD_LOAD_MT 0x38 /* Load the match timer */ | ||
177 | #define HP_SDC_CMD_LOAD_DT 0x3B /* Load the delay timer */ | ||
178 | #define HP_SDC_CMD_LOAD_CT 0x3E /* Load the cycle timer */ | ||
179 | |||
180 | #define HP_SDC_CMD_SET_IM 0x40 /* 010xxxxx == set irq mask */ | ||
181 | |||
182 | /* The documents provided do not explicitly state that all registers betweem | ||
183 | * 0x01 and 0x1f inclusive can be read by sending their register index as a | ||
184 | * command, but this is implied and appears to be the case. | ||
185 | */ | ||
186 | #define HP_SDC_CMD_READ_RAM 0x00 /* Load from i8042 RAM (autoinc) */ | ||
187 | #define HP_SDC_CMD_READ_USE 0x02 /* Undocumented! Load from usage reg */ | ||
188 | #define HP_SDC_CMD_READ_IM 0x04 /* Load current interrupt mask */ | ||
189 | #define HP_SDC_CMD_READ_KCC 0x11 /* Load primary kbd config code */ | ||
190 | #define HP_SDC_CMD_READ_KLC 0x12 /* Load primary kbd language code */ | ||
191 | #define HP_SDC_CMD_READ_T1 0x13 /* Load timer output buffer byte 1 */ | ||
192 | #define HP_SDC_CMD_READ_T2 0x14 /* Load timer output buffer byte 1 */ | ||
193 | #define HP_SDC_CMD_READ_T3 0x15 /* Load timer output buffer byte 1 */ | ||
194 | #define HP_SDC_CMD_READ_T4 0x16 /* Load timer output buffer byte 1 */ | ||
195 | #define HP_SDC_CMD_READ_T5 0x17 /* Load timer output buffer byte 1 */ | ||
196 | #define HP_SDC_CMD_READ_D0 0xf0 /* Load from i8042 RAM location 0x70 */ | ||
197 | #define HP_SDC_CMD_READ_D1 0xf1 /* Load from i8042 RAM location 0x71 */ | ||
198 | #define HP_SDC_CMD_READ_D2 0xf2 /* Load from i8042 RAM location 0x72 */ | ||
199 | #define HP_SDC_CMD_READ_D3 0xf3 /* Load from i8042 RAM location 0x73 */ | ||
200 | #define HP_SDC_CMD_READ_VT1 0xf4 /* Load from i8042 RAM location 0x74 */ | ||
201 | #define HP_SDC_CMD_READ_VT2 0xf5 /* Load from i8042 RAM location 0x75 */ | ||
202 | #define HP_SDC_CMD_READ_VT3 0xf6 /* Load from i8042 RAM location 0x76 */ | ||
203 | #define HP_SDC_CMD_READ_VT4 0xf7 /* Load from i8042 RAM location 0x77 */ | ||
204 | #define HP_SDC_CMD_READ_KBN 0xf8 /* Load from i8042 RAM location 0x78 */ | ||
205 | #define HP_SDC_CMD_READ_KBC 0xf9 /* Load from i8042 RAM location 0x79 */ | ||
206 | #define HP_SDC_CMD_READ_LPS 0xfa /* Load from i8042 RAM location 0x7a */ | ||
207 | #define HP_SDC_CMD_READ_LPC 0xfb /* Load from i8042 RAM location 0x7b */ | ||
208 | #define HP_SDC_CMD_READ_RSV 0xfc /* Load from i8042 RAM location 0x7c */ | ||
209 | #define HP_SDC_CMD_READ_LPR 0xfd /* Load from i8042 RAM location 0x7d */ | ||
210 | #define HP_SDC_CMD_READ_XTD 0xfe /* Load from i8042 RAM location 0x7e */ | ||
211 | #define HP_SDC_CMD_READ_STR 0xff /* Load from i8042 RAM location 0x7f */ | ||
212 | |||
213 | #define HP_SDC_CMD_SET_ARD 0xA0 /* Set emulated autorepeat delay */ | ||
214 | #define HP_SDC_CMD_SET_ARR 0xA2 /* Set emulated autorepeat rate */ | ||
215 | #define HP_SDC_CMD_SET_BELL 0xA3 /* Set voice 3 params for "beep" cmd */ | ||
216 | #define HP_SDC_CMD_SET_RPGR 0xA6 /* Set "RPG" irq rate (doesn't work) */ | ||
217 | #define HP_SDC_CMD_SET_RTMS 0xAD /* Set the RTC time (milliseconds) */ | ||
218 | #define HP_SDC_CMD_SET_RTD 0xAF /* Set the RTC time (days) */ | ||
219 | #define HP_SDC_CMD_SET_FHS 0xB2 /* Set fast handshake timer */ | ||
220 | #define HP_SDC_CMD_SET_MT 0xB4 /* Set match timer */ | ||
221 | #define HP_SDC_CMD_SET_DT 0xB7 /* Set delay timer */ | ||
222 | #define HP_SDC_CMD_SET_CT 0xBA /* Set cycle timer */ | ||
223 | #define HP_SDC_CMD_SET_RAMP 0xC1 /* Reset READ_RAM autoinc counter */ | ||
224 | #define HP_SDC_CMD_SET_D0 0xe0 /* Load to i8042 RAM location 0x70 */ | ||
225 | #define HP_SDC_CMD_SET_D1 0xe1 /* Load to i8042 RAM location 0x71 */ | ||
226 | #define HP_SDC_CMD_SET_D2 0xe2 /* Load to i8042 RAM location 0x72 */ | ||
227 | #define HP_SDC_CMD_SET_D3 0xe3 /* Load to i8042 RAM location 0x73 */ | ||
228 | #define HP_SDC_CMD_SET_VT1 0xe4 /* Load to i8042 RAM location 0x74 */ | ||
229 | #define HP_SDC_CMD_SET_VT2 0xe5 /* Load to i8042 RAM location 0x75 */ | ||
230 | #define HP_SDC_CMD_SET_VT3 0xe6 /* Load to i8042 RAM location 0x76 */ | ||
231 | #define HP_SDC_CMD_SET_VT4 0xe7 /* Load to i8042 RAM location 0x77 */ | ||
232 | #define HP_SDC_CMD_SET_KBN 0xe8 /* Load to i8042 RAM location 0x78 */ | ||
233 | #define HP_SDC_CMD_SET_KBC 0xe9 /* Load to i8042 RAM location 0x79 */ | ||
234 | #define HP_SDC_CMD_SET_LPS 0xea /* Load to i8042 RAM location 0x7a */ | ||
235 | #define HP_SDC_CMD_SET_LPC 0xeb /* Load to i8042 RAM location 0x7b */ | ||
236 | #define HP_SDC_CMD_SET_RSV 0xec /* Load to i8042 RAM location 0x7c */ | ||
237 | #define HP_SDC_CMD_SET_LPR 0xed /* Load to i8042 RAM location 0x7d */ | ||
238 | #define HP_SDC_CMD_SET_XTD 0xee /* Load to i8042 RAM location 0x7e */ | ||
239 | #define HP_SDC_CMD_SET_STR 0xef /* Load to i8042 RAM location 0x7f */ | ||
240 | |||
241 | #define HP_SDC_CMD_DO_RTCW 0xc2 /* i8042 RAM 0x70 --> RTC */ | ||
242 | #define HP_SDC_CMD_DO_RTCR 0xc3 /* RTC[0x70 0:3] --> irq/status/data */ | ||
243 | #define HP_SDC_CMD_DO_BEEP 0xc4 /* i8042 RAM 0x70-74 --> beeper,VT3 */ | ||
244 | #define HP_SDC_CMD_DO_HIL 0xc5 /* i8042 RAM 0x70-73 --> | ||
245 | HIL MLC R0,R1 i8042 HIL watchdog */ | ||
246 | |||
247 | /* Values used to (de)mangle input/output to/from the HIL MLC */ | ||
248 | #define HP_SDC_DATA 0x40 /* Data from an 8042 register */ | ||
249 | #define HP_SDC_HIL_CMD 0x50 /* Data from HIL MLC R1/8042 */ | ||
250 | #define HP_SDC_HIL_R1MASK 0x0f /* Contents of HIL MLC R1 0:3 */ | ||
251 | #define HP_SDC_HIL_AUTO 0x10 /* Set if POL results from i8042 */ | ||
252 | #define HP_SDC_HIL_ISERR 0x80 /* Has meaning as in next 4 values */ | ||
253 | #define HP_SDC_HIL_RC_DONE 0x80 /* i8042 auto-configured loop */ | ||
254 | #define HP_SDC_HIL_ERR 0x81 /* HIL MLC R2 had a bit set */ | ||
255 | #define HP_SDC_HIL_TO 0x82 /* i8042 HIL watchdog expired */ | ||
256 | #define HP_SDC_HIL_RC 0x84 /* i8042 is auto-configuring loop */ | ||
257 | #define HP_SDC_HIL_DAT 0x60 /* Data from HIL MLC R0 */ | ||
258 | |||
259 | |||
260 | typedef struct { | ||
261 | rwlock_t ibf_lock; | ||
262 | rwlock_t lock; /* user/tasklet lock */ | ||
263 | rwlock_t rtq_lock; /* isr/tasklet lock */ | ||
264 | rwlock_t hook_lock; /* isr/user lock for handler add/del */ | ||
265 | |||
266 | unsigned int irq, nmi; /* Our IRQ lines */ | ||
267 | unsigned long base_io, status_io, data_io; /* Our IO ports */ | ||
268 | |||
269 | uint8_t im; /* Interrupt mask */ | ||
270 | int set_im; /* Interrupt mask needs to be set. */ | ||
271 | |||
272 | int ibf; /* Last known status of IBF flag */ | ||
273 | uint8_t wi; /* current i8042 write index */ | ||
274 | uint8_t r7[4]; /* current i8042[0x70 - 0x74] values */ | ||
275 | uint8_t r11, r7e; /* Values from version/revision regs */ | ||
276 | |||
277 | hp_sdc_irqhook *timer, *reg, *hil, *pup, *cooked; | ||
278 | |||
279 | #define HP_SDC_QUEUE_LEN 16 | ||
280 | hp_sdc_transaction *tq[HP_SDC_QUEUE_LEN]; /* All pending read/writes */ | ||
281 | |||
282 | int rcurr, rqty; /* Current read transact in process */ | ||
283 | struct timeval rtv; /* Time when current read started */ | ||
284 | int wcurr; /* Current write transact in process */ | ||
285 | |||
286 | int dev_err; /* carries status from registration */ | ||
287 | #if defined(__hppa__) | ||
288 | struct parisc_device *dev; | ||
289 | #elif defined(__mc68000__) | ||
290 | void *dev; | ||
291 | #else | ||
292 | #error No support for device registration on this arch yet. | ||
293 | #endif | ||
294 | |||
295 | struct timer_list kicker; /* Keeps below task alive */ | ||
296 | struct tasklet_struct task; | ||
297 | |||
298 | } hp_i8042_sdc; | ||
299 | |||
300 | #endif /* _LINUX_HP_SDC_H */ | ||
diff --git a/include/linux/input.h b/include/linux/input.h index e3d9c08b5cbe..f623c745c21c 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -645,6 +645,7 @@ struct input_absinfo { | |||
645 | #define BUS_ADB 0x17 | 645 | #define BUS_ADB 0x17 |
646 | #define BUS_I2C 0x18 | 646 | #define BUS_I2C 0x18 |
647 | #define BUS_HOST 0x19 | 647 | #define BUS_HOST 0x19 |
648 | #define BUS_GSC 0x1A | ||
648 | 649 | ||
649 | /* | 650 | /* |
650 | * Values describing the status of an effect | 651 | * Values describing the status of an effect |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a9281b24c40b..c6efce4a04a4 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -308,6 +308,7 @@ struct net_device | |||
308 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ | 308 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ |
309 | #define NETIF_F_TSO 2048 /* Can offload TCP/IP segmentation */ | 309 | #define NETIF_F_TSO 2048 /* Can offload TCP/IP segmentation */ |
310 | #define NETIF_F_LLTX 4096 /* LockLess TX */ | 310 | #define NETIF_F_LLTX 4096 /* LockLess TX */ |
311 | #define NETIF_F_UFO 8192 /* Can offload UDP Large Send*/ | ||
311 | 312 | ||
312 | struct net_device *next_sched; | 313 | struct net_device *next_sched; |
313 | 314 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index b756935da9c8..4286d832166f 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -137,6 +137,8 @@ struct skb_shared_info { | |||
137 | unsigned int nr_frags; | 137 | unsigned int nr_frags; |
138 | unsigned short tso_size; | 138 | unsigned short tso_size; |
139 | unsigned short tso_segs; | 139 | unsigned short tso_segs; |
140 | unsigned short ufo_size; | ||
141 | unsigned int ip6_frag_id; | ||
140 | struct sk_buff *frag_list; | 142 | struct sk_buff *frag_list; |
141 | skb_frag_t frags[MAX_SKB_FRAGS]; | 143 | skb_frag_t frags[MAX_SKB_FRAGS]; |
142 | }; | 144 | }; |
@@ -341,6 +343,11 @@ extern void skb_over_panic(struct sk_buff *skb, int len, | |||
341 | extern void skb_under_panic(struct sk_buff *skb, int len, | 343 | extern void skb_under_panic(struct sk_buff *skb, int len, |
342 | void *here); | 344 | void *here); |
343 | 345 | ||
346 | extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, | ||
347 | int getfrag(void *from, char *to, int offset, | ||
348 | int len,int odd, struct sk_buff *skb), | ||
349 | void *from, int length); | ||
350 | |||
344 | struct skb_seq_state | 351 | struct skb_seq_state |
345 | { | 352 | { |
346 | __u32 lower_offset; | 353 | __u32 lower_offset; |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 210458624840..e42d728b1620 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -171,4 +171,10 @@ static inline int skb_frags_no(struct sk_buff *skb) | |||
171 | 171 | ||
172 | int bt_err(__u16 code); | 172 | int bt_err(__u16 code); |
173 | 173 | ||
174 | extern int hci_sock_init(void); | ||
175 | extern int hci_sock_cleanup(void); | ||
176 | |||
177 | extern int bt_sysfs_init(void); | ||
178 | extern void bt_sysfs_cleanup(void); | ||
179 | |||
174 | #endif /* __BLUETOOTH_H */ | 180 | #endif /* __BLUETOOTH_H */ |
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h index fbe557f7ea1d..e656be7c001a 100644 --- a/include/net/bluetooth/rfcomm.h +++ b/include/net/bluetooth/rfcomm.h | |||
@@ -275,9 +275,6 @@ static inline void rfcomm_session_hold(struct rfcomm_session *s) | |||
275 | atomic_inc(&s->refcnt); | 275 | atomic_inc(&s->refcnt); |
276 | } | 276 | } |
277 | 277 | ||
278 | /* ---- RFCOMM chechsum ---- */ | ||
279 | extern u8 rfcomm_crc_table[]; | ||
280 | |||
281 | /* ---- RFCOMM sockets ---- */ | 278 | /* ---- RFCOMM sockets ---- */ |
282 | struct sockaddr_rc { | 279 | struct sockaddr_rc { |
283 | sa_family_t rc_family; | 280 | sa_family_t rc_family; |
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c index 12b43345b54f..03532062a46a 100644 --- a/net/bluetooth/af_bluetooth.c +++ b/net/bluetooth/af_bluetooth.c | |||
@@ -308,12 +308,6 @@ static struct net_proto_family bt_sock_family_ops = { | |||
308 | .create = bt_sock_create, | 308 | .create = bt_sock_create, |
309 | }; | 309 | }; |
310 | 310 | ||
311 | extern int hci_sock_init(void); | ||
312 | extern int hci_sock_cleanup(void); | ||
313 | |||
314 | extern int bt_sysfs_init(void); | ||
315 | extern int bt_sysfs_cleanup(void); | ||
316 | |||
317 | static int __init bt_init(void) | 311 | static int __init bt_init(void) |
318 | { | 312 | { |
319 | BT_INFO("Core ver %s", VERSION); | 313 | BT_INFO("Core ver %s", VERSION); |
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 55dc42eac92c..cf0df1c8c933 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -87,7 +87,7 @@ int hci_unregister_notifier(struct notifier_block *nb) | |||
87 | return notifier_chain_unregister(&hci_notifier, nb); | 87 | return notifier_chain_unregister(&hci_notifier, nb); |
88 | } | 88 | } |
89 | 89 | ||
90 | void hci_notify(struct hci_dev *hdev, int event) | 90 | static void hci_notify(struct hci_dev *hdev, int event) |
91 | { | 91 | { |
92 | notifier_call_chain(&hci_notifier, event, hdev); | 92 | notifier_call_chain(&hci_notifier, event, hdev); |
93 | } | 93 | } |
@@ -1347,7 +1347,7 @@ static inline void hci_scodata_packet(struct hci_dev *hdev, struct sk_buff *skb) | |||
1347 | kfree_skb(skb); | 1347 | kfree_skb(skb); |
1348 | } | 1348 | } |
1349 | 1349 | ||
1350 | void hci_rx_task(unsigned long arg) | 1350 | static void hci_rx_task(unsigned long arg) |
1351 | { | 1351 | { |
1352 | struct hci_dev *hdev = (struct hci_dev *) arg; | 1352 | struct hci_dev *hdev = (struct hci_dev *) arg; |
1353 | struct sk_buff *skb; | 1353 | struct sk_buff *skb; |
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 32ef7975a139..799e448750ad 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c | |||
@@ -66,20 +66,20 @@ static struct hci_sec_filter hci_sec_filter = { | |||
66 | /* Packet types */ | 66 | /* Packet types */ |
67 | 0x10, | 67 | 0x10, |
68 | /* Events */ | 68 | /* Events */ |
69 | { 0x1000d9fe, 0x0000300c }, | 69 | { 0x1000d9fe, 0x0000b00c }, |
70 | /* Commands */ | 70 | /* Commands */ |
71 | { | 71 | { |
72 | { 0x0 }, | 72 | { 0x0 }, |
73 | /* OGF_LINK_CTL */ | 73 | /* OGF_LINK_CTL */ |
74 | { 0xbe000006, 0x00000001, 0x0000, 0x00 }, | 74 | { 0xbe000006, 0x00000001, 0x000000, 0x00 }, |
75 | /* OGF_LINK_POLICY */ | 75 | /* OGF_LINK_POLICY */ |
76 | { 0x00005200, 0x00000000, 0x0000, 0x00 }, | 76 | { 0x00005200, 0x00000000, 0x000000, 0x00 }, |
77 | /* OGF_HOST_CTL */ | 77 | /* OGF_HOST_CTL */ |
78 | { 0xaab00200, 0x2b402aaa, 0x0154, 0x00 }, | 78 | { 0xaab00200, 0x2b402aaa, 0x020154, 0x00 }, |
79 | /* OGF_INFO_PARAM */ | 79 | /* OGF_INFO_PARAM */ |
80 | { 0x000002be, 0x00000000, 0x0000, 0x00 }, | 80 | { 0x000002be, 0x00000000, 0x000000, 0x00 }, |
81 | /* OGF_STATUS_PARAM */ | 81 | /* OGF_STATUS_PARAM */ |
82 | { 0x000000ea, 0x00000000, 0x0000, 0x00 } | 82 | { 0x000000ea, 0x00000000, 0x000000, 0x00 } |
83 | } | 83 | } |
84 | }; | 84 | }; |
85 | 85 | ||
diff --git a/net/bluetooth/rfcomm/Makefile b/net/bluetooth/rfcomm/Makefile index aecec45ec68d..fe07988a3705 100644 --- a/net/bluetooth/rfcomm/Makefile +++ b/net/bluetooth/rfcomm/Makefile | |||
@@ -4,5 +4,5 @@ | |||
4 | 4 | ||
5 | obj-$(CONFIG_BT_RFCOMM) += rfcomm.o | 5 | obj-$(CONFIG_BT_RFCOMM) += rfcomm.o |
6 | 6 | ||
7 | rfcomm-y := core.o sock.o crc.o | 7 | rfcomm-y := core.o sock.o |
8 | rfcomm-$(CONFIG_BT_RFCOMM_TTY) += tty.o | 8 | rfcomm-$(CONFIG_BT_RFCOMM_TTY) += tty.o |
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 35adce6482b6..c3d56ead840c 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
@@ -133,6 +133,49 @@ static inline void rfcomm_session_put(struct rfcomm_session *s) | |||
133 | 133 | ||
134 | /* ---- RFCOMM FCS computation ---- */ | 134 | /* ---- RFCOMM FCS computation ---- */ |
135 | 135 | ||
136 | /* reversed, 8-bit, poly=0x07 */ | ||
137 | static unsigned char rfcomm_crc_table[256] = { | ||
138 | 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75, | ||
139 | 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b, | ||
140 | 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69, | ||
141 | 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67, | ||
142 | |||
143 | 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d, | ||
144 | 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43, | ||
145 | 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51, | ||
146 | 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f, | ||
147 | |||
148 | 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05, | ||
149 | 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b, | ||
150 | 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19, | ||
151 | 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17, | ||
152 | |||
153 | 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d, | ||
154 | 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33, | ||
155 | 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21, | ||
156 | 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f, | ||
157 | |||
158 | 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95, | ||
159 | 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b, | ||
160 | 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89, | ||
161 | 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87, | ||
162 | |||
163 | 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad, | ||
164 | 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3, | ||
165 | 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1, | ||
166 | 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf, | ||
167 | |||
168 | 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5, | ||
169 | 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb, | ||
170 | 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9, | ||
171 | 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7, | ||
172 | |||
173 | 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd, | ||
174 | 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3, | ||
175 | 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1, | ||
176 | 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf | ||
177 | }; | ||
178 | |||
136 | /* CRC on 2 bytes */ | 179 | /* CRC on 2 bytes */ |
137 | #define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]]) | 180 | #define __crc(data) (rfcomm_crc_table[rfcomm_crc_table[0xff ^ data[0]] ^ data[1]]) |
138 | 181 | ||
diff --git a/net/bluetooth/rfcomm/crc.c b/net/bluetooth/rfcomm/crc.c deleted file mode 100644 index 1011bc4a8692..000000000000 --- a/net/bluetooth/rfcomm/crc.c +++ /dev/null | |||
@@ -1,71 +0,0 @@ | |||
1 | /* | ||
2 | RFCOMM implementation for Linux Bluetooth stack (BlueZ). | ||
3 | Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> | ||
4 | Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> | ||
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 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
11 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
12 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
13 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
14 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
15 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
16 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
17 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
18 | |||
19 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
20 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
21 | SOFTWARE IS DISCLAIMED. | ||
22 | */ | ||
23 | |||
24 | /* | ||
25 | * RFCOMM FCS calculation. | ||
26 | * | ||
27 | * $Id: crc.c,v 1.2 2002/09/21 09:54:32 holtmann Exp $ | ||
28 | */ | ||
29 | |||
30 | /* reversed, 8-bit, poly=0x07 */ | ||
31 | unsigned char rfcomm_crc_table[256] = { | ||
32 | 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75, | ||
33 | 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b, | ||
34 | 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69, | ||
35 | 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67, | ||
36 | |||
37 | 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d, | ||
38 | 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43, | ||
39 | 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51, | ||
40 | 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f, | ||
41 | |||
42 | 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05, | ||
43 | 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b, | ||
44 | 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19, | ||
45 | 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17, | ||
46 | |||
47 | 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d, | ||
48 | 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33, | ||
49 | 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21, | ||
50 | 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f, | ||
51 | |||
52 | 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95, | ||
53 | 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b, | ||
54 | 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89, | ||
55 | 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87, | ||
56 | |||
57 | 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad, | ||
58 | 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3, | ||
59 | 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1, | ||
60 | 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf, | ||
61 | |||
62 | 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5, | ||
63 | 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb, | ||
64 | 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9, | ||
65 | 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7, | ||
66 | |||
67 | 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd, | ||
68 | 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3, | ||
69 | 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1, | ||
70 | 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf | ||
71 | }; | ||
diff --git a/net/core/dev.c b/net/core/dev.c index a44eeef24edf..8d1541595277 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -2717,6 +2717,20 @@ int register_netdevice(struct net_device *dev) | |||
2717 | dev->name); | 2717 | dev->name); |
2718 | dev->features &= ~NETIF_F_TSO; | 2718 | dev->features &= ~NETIF_F_TSO; |
2719 | } | 2719 | } |
2720 | if (dev->features & NETIF_F_UFO) { | ||
2721 | if (!(dev->features & NETIF_F_HW_CSUM)) { | ||
2722 | printk(KERN_ERR "%s: Dropping NETIF_F_UFO since no " | ||
2723 | "NETIF_F_HW_CSUM feature.\n", | ||
2724 | dev->name); | ||
2725 | dev->features &= ~NETIF_F_UFO; | ||
2726 | } | ||
2727 | if (!(dev->features & NETIF_F_SG)) { | ||
2728 | printk(KERN_ERR "%s: Dropping NETIF_F_UFO since no " | ||
2729 | "NETIF_F_SG feature.\n", | ||
2730 | dev->name); | ||
2731 | dev->features &= ~NETIF_F_UFO; | ||
2732 | } | ||
2733 | } | ||
2720 | 2734 | ||
2721 | /* | 2735 | /* |
2722 | * nil rebuild_header routine, | 2736 | * nil rebuild_header routine, |
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 404b761e82ce..0350586e9195 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c | |||
@@ -93,6 +93,20 @@ int ethtool_op_get_perm_addr(struct net_device *dev, struct ethtool_perm_addr *a | |||
93 | } | 93 | } |
94 | 94 | ||
95 | 95 | ||
96 | u32 ethtool_op_get_ufo(struct net_device *dev) | ||
97 | { | ||
98 | return (dev->features & NETIF_F_UFO) != 0; | ||
99 | } | ||
100 | |||
101 | int ethtool_op_set_ufo(struct net_device *dev, u32 data) | ||
102 | { | ||
103 | if (data) | ||
104 | dev->features |= NETIF_F_UFO; | ||
105 | else | ||
106 | dev->features &= ~NETIF_F_UFO; | ||
107 | return 0; | ||
108 | } | ||
109 | |||
96 | /* Handlers for each ethtool command */ | 110 | /* Handlers for each ethtool command */ |
97 | 111 | ||
98 | static int ethtool_get_settings(struct net_device *dev, void __user *useraddr) | 112 | static int ethtool_get_settings(struct net_device *dev, void __user *useraddr) |
@@ -483,6 +497,11 @@ static int __ethtool_set_sg(struct net_device *dev, u32 data) | |||
483 | return err; | 497 | return err; |
484 | } | 498 | } |
485 | 499 | ||
500 | if (!data && dev->ethtool_ops->set_ufo) { | ||
501 | err = dev->ethtool_ops->set_ufo(dev, 0); | ||
502 | if (err) | ||
503 | return err; | ||
504 | } | ||
486 | return dev->ethtool_ops->set_sg(dev, data); | 505 | return dev->ethtool_ops->set_sg(dev, data); |
487 | } | 506 | } |
488 | 507 | ||
@@ -569,6 +588,32 @@ static int ethtool_set_tso(struct net_device *dev, char __user *useraddr) | |||
569 | return dev->ethtool_ops->set_tso(dev, edata.data); | 588 | return dev->ethtool_ops->set_tso(dev, edata.data); |
570 | } | 589 | } |
571 | 590 | ||
591 | static int ethtool_get_ufo(struct net_device *dev, char __user *useraddr) | ||
592 | { | ||
593 | struct ethtool_value edata = { ETHTOOL_GTSO }; | ||
594 | |||
595 | if (!dev->ethtool_ops->get_ufo) | ||
596 | return -EOPNOTSUPP; | ||
597 | edata.data = dev->ethtool_ops->get_ufo(dev); | ||
598 | if (copy_to_user(useraddr, &edata, sizeof(edata))) | ||
599 | return -EFAULT; | ||
600 | return 0; | ||
601 | } | ||
602 | static int ethtool_set_ufo(struct net_device *dev, char __user *useraddr) | ||
603 | { | ||
604 | struct ethtool_value edata; | ||
605 | |||
606 | if (!dev->ethtool_ops->set_ufo) | ||
607 | return -EOPNOTSUPP; | ||
608 | if (copy_from_user(&edata, useraddr, sizeof(edata))) | ||
609 | return -EFAULT; | ||
610 | if (edata.data && !(dev->features & NETIF_F_SG)) | ||
611 | return -EINVAL; | ||
612 | if (edata.data && !(dev->features & NETIF_F_HW_CSUM)) | ||
613 | return -EINVAL; | ||
614 | return dev->ethtool_ops->set_ufo(dev, edata.data); | ||
615 | } | ||
616 | |||
572 | static int ethtool_self_test(struct net_device *dev, char __user *useraddr) | 617 | static int ethtool_self_test(struct net_device *dev, char __user *useraddr) |
573 | { | 618 | { |
574 | struct ethtool_test test; | 619 | struct ethtool_test test; |
@@ -854,6 +899,12 @@ int dev_ethtool(struct ifreq *ifr) | |||
854 | case ETHTOOL_GPERMADDR: | 899 | case ETHTOOL_GPERMADDR: |
855 | rc = ethtool_get_perm_addr(dev, useraddr); | 900 | rc = ethtool_get_perm_addr(dev, useraddr); |
856 | break; | 901 | break; |
902 | case ETHTOOL_GUFO: | ||
903 | rc = ethtool_get_ufo(dev, useraddr); | ||
904 | break; | ||
905 | case ETHTOOL_SUFO: | ||
906 | rc = ethtool_set_ufo(dev, useraddr); | ||
907 | break; | ||
857 | default: | 908 | default: |
858 | rc = -EOPNOTSUPP; | 909 | rc = -EOPNOTSUPP; |
859 | } | 910 | } |
@@ -882,3 +933,5 @@ EXPORT_SYMBOL(ethtool_op_set_sg); | |||
882 | EXPORT_SYMBOL(ethtool_op_set_tso); | 933 | EXPORT_SYMBOL(ethtool_op_set_tso); |
883 | EXPORT_SYMBOL(ethtool_op_set_tx_csum); | 934 | EXPORT_SYMBOL(ethtool_op_set_tx_csum); |
884 | EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum); | 935 | EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum); |
936 | EXPORT_SYMBOL(ethtool_op_set_ufo); | ||
937 | EXPORT_SYMBOL(ethtool_op_get_ufo); | ||
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index ef9d46b91eb9..95501e40100e 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -176,6 +176,8 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, | |||
176 | skb_shinfo(skb)->tso_size = 0; | 176 | skb_shinfo(skb)->tso_size = 0; |
177 | skb_shinfo(skb)->tso_segs = 0; | 177 | skb_shinfo(skb)->tso_segs = 0; |
178 | skb_shinfo(skb)->frag_list = NULL; | 178 | skb_shinfo(skb)->frag_list = NULL; |
179 | skb_shinfo(skb)->ufo_size = 0; | ||
180 | skb_shinfo(skb)->ip6_frag_id = 0; | ||
179 | out: | 181 | out: |
180 | return skb; | 182 | return skb; |
181 | nodata: | 183 | nodata: |
@@ -1696,6 +1698,78 @@ unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, | |||
1696 | return textsearch_find(config, state); | 1698 | return textsearch_find(config, state); |
1697 | } | 1699 | } |
1698 | 1700 | ||
1701 | /** | ||
1702 | * skb_append_datato_frags: - append the user data to a skb | ||
1703 | * @sk: sock structure | ||
1704 | * @skb: skb structure to be appened with user data. | ||
1705 | * @getfrag: call back function to be used for getting the user data | ||
1706 | * @from: pointer to user message iov | ||
1707 | * @length: length of the iov message | ||
1708 | * | ||
1709 | * Description: This procedure append the user data in the fragment part | ||
1710 | * of the skb if any page alloc fails user this procedure returns -ENOMEM | ||
1711 | */ | ||
1712 | int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, | ||
1713 | int getfrag(void *from, char *to, int offset, | ||
1714 | int len, int odd, struct sk_buff *skb), | ||
1715 | void *from, int length) | ||
1716 | { | ||
1717 | int frg_cnt = 0; | ||
1718 | skb_frag_t *frag = NULL; | ||
1719 | struct page *page = NULL; | ||
1720 | int copy, left; | ||
1721 | int offset = 0; | ||
1722 | int ret; | ||
1723 | |||
1724 | do { | ||
1725 | /* Return error if we don't have space for new frag */ | ||
1726 | frg_cnt = skb_shinfo(skb)->nr_frags; | ||
1727 | if (frg_cnt >= MAX_SKB_FRAGS) | ||
1728 | return -EFAULT; | ||
1729 | |||
1730 | /* allocate a new page for next frag */ | ||
1731 | page = alloc_pages(sk->sk_allocation, 0); | ||
1732 | |||
1733 | /* If alloc_page fails just return failure and caller will | ||
1734 | * free previous allocated pages by doing kfree_skb() | ||
1735 | */ | ||
1736 | if (page == NULL) | ||
1737 | return -ENOMEM; | ||
1738 | |||
1739 | /* initialize the next frag */ | ||
1740 | sk->sk_sndmsg_page = page; | ||
1741 | sk->sk_sndmsg_off = 0; | ||
1742 | skb_fill_page_desc(skb, frg_cnt, page, 0, 0); | ||
1743 | skb->truesize += PAGE_SIZE; | ||
1744 | atomic_add(PAGE_SIZE, &sk->sk_wmem_alloc); | ||
1745 | |||
1746 | /* get the new initialized frag */ | ||
1747 | frg_cnt = skb_shinfo(skb)->nr_frags; | ||
1748 | frag = &skb_shinfo(skb)->frags[frg_cnt - 1]; | ||
1749 | |||
1750 | /* copy the user data to page */ | ||
1751 | left = PAGE_SIZE - frag->page_offset; | ||
1752 | copy = (length > left)? left : length; | ||
1753 | |||
1754 | ret = getfrag(from, (page_address(frag->page) + | ||
1755 | frag->page_offset + frag->size), | ||
1756 | offset, copy, 0, skb); | ||
1757 | if (ret < 0) | ||
1758 | return -EFAULT; | ||
1759 | |||
1760 | /* copy was successful so update the size parameters */ | ||
1761 | sk->sk_sndmsg_off += copy; | ||
1762 | frag->size += copy; | ||
1763 | skb->len += copy; | ||
1764 | skb->data_len += copy; | ||
1765 | offset += copy; | ||
1766 | length -= copy; | ||
1767 | |||
1768 | } while (length > 0); | ||
1769 | |||
1770 | return 0; | ||
1771 | } | ||
1772 | |||
1699 | void __init skb_init(void) | 1773 | void __init skb_init(void) |
1700 | { | 1774 | { |
1701 | skbuff_head_cache = kmem_cache_create("skbuff_head_cache", | 1775 | skbuff_head_cache = kmem_cache_create("skbuff_head_cache", |
@@ -1747,3 +1821,4 @@ EXPORT_SYMBOL(skb_prepare_seq_read); | |||
1747 | EXPORT_SYMBOL(skb_seq_read); | 1821 | EXPORT_SYMBOL(skb_seq_read); |
1748 | EXPORT_SYMBOL(skb_abort_seq_read); | 1822 | EXPORT_SYMBOL(skb_abort_seq_read); |
1749 | EXPORT_SYMBOL(skb_find_text); | 1823 | EXPORT_SYMBOL(skb_find_text); |
1824 | EXPORT_SYMBOL(skb_append_datato_frags); | ||
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 87e350069abb..17758234a3e3 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -275,7 +275,8 @@ int ip_output(struct sk_buff *skb) | |||
275 | { | 275 | { |
276 | IP_INC_STATS(IPSTATS_MIB_OUTREQUESTS); | 276 | IP_INC_STATS(IPSTATS_MIB_OUTREQUESTS); |
277 | 277 | ||
278 | if (skb->len > dst_mtu(skb->dst) && !skb_shinfo(skb)->tso_size) | 278 | if (skb->len > dst_mtu(skb->dst) && |
279 | !(skb_shinfo(skb)->ufo_size || skb_shinfo(skb)->tso_size)) | ||
279 | return ip_fragment(skb, ip_finish_output); | 280 | return ip_fragment(skb, ip_finish_output); |
280 | else | 281 | else |
281 | return ip_finish_output(skb); | 282 | return ip_finish_output(skb); |
@@ -688,6 +689,60 @@ csum_page(struct page *page, int offset, int copy) | |||
688 | return csum; | 689 | return csum; |
689 | } | 690 | } |
690 | 691 | ||
692 | inline int ip_ufo_append_data(struct sock *sk, | ||
693 | int getfrag(void *from, char *to, int offset, int len, | ||
694 | int odd, struct sk_buff *skb), | ||
695 | void *from, int length, int hh_len, int fragheaderlen, | ||
696 | int transhdrlen, int mtu,unsigned int flags) | ||
697 | { | ||
698 | struct sk_buff *skb; | ||
699 | int err; | ||
700 | |||
701 | /* There is support for UDP fragmentation offload by network | ||
702 | * device, so create one single skb packet containing complete | ||
703 | * udp datagram | ||
704 | */ | ||
705 | if ((skb = skb_peek_tail(&sk->sk_write_queue)) == NULL) { | ||
706 | skb = sock_alloc_send_skb(sk, | ||
707 | hh_len + fragheaderlen + transhdrlen + 20, | ||
708 | (flags & MSG_DONTWAIT), &err); | ||
709 | |||
710 | if (skb == NULL) | ||
711 | return err; | ||
712 | |||
713 | /* reserve space for Hardware header */ | ||
714 | skb_reserve(skb, hh_len); | ||
715 | |||
716 | /* create space for UDP/IP header */ | ||
717 | skb_put(skb,fragheaderlen + transhdrlen); | ||
718 | |||
719 | /* initialize network header pointer */ | ||
720 | skb->nh.raw = skb->data; | ||
721 | |||
722 | /* initialize protocol header pointer */ | ||
723 | skb->h.raw = skb->data + fragheaderlen; | ||
724 | |||
725 | skb->ip_summed = CHECKSUM_HW; | ||
726 | skb->csum = 0; | ||
727 | sk->sk_sndmsg_off = 0; | ||
728 | } | ||
729 | |||
730 | err = skb_append_datato_frags(sk,skb, getfrag, from, | ||
731 | (length - transhdrlen)); | ||
732 | if (!err) { | ||
733 | /* specify the length of each IP datagram fragment*/ | ||
734 | skb_shinfo(skb)->ufo_size = (mtu - fragheaderlen); | ||
735 | __skb_queue_tail(&sk->sk_write_queue, skb); | ||
736 | |||
737 | return 0; | ||
738 | } | ||
739 | /* There is not enough support do UFO , | ||
740 | * so follow normal path | ||
741 | */ | ||
742 | kfree_skb(skb); | ||
743 | return err; | ||
744 | } | ||
745 | |||
691 | /* | 746 | /* |
692 | * ip_append_data() and ip_append_page() can make one large IP datagram | 747 | * ip_append_data() and ip_append_page() can make one large IP datagram |
693 | * from many pieces of data. Each pieces will be holded on the socket | 748 | * from many pieces of data. Each pieces will be holded on the socket |
@@ -777,6 +832,15 @@ int ip_append_data(struct sock *sk, | |||
777 | csummode = CHECKSUM_HW; | 832 | csummode = CHECKSUM_HW; |
778 | 833 | ||
779 | inet->cork.length += length; | 834 | inet->cork.length += length; |
835 | if (((length > mtu) && (sk->sk_protocol == IPPROTO_UDP)) && | ||
836 | (rt->u.dst.dev->features & NETIF_F_UFO)) { | ||
837 | |||
838 | if(ip_ufo_append_data(sk, getfrag, from, length, hh_len, | ||
839 | fragheaderlen, transhdrlen, mtu, flags)) | ||
840 | goto error; | ||
841 | |||
842 | return 0; | ||
843 | } | ||
780 | 844 | ||
781 | /* So, what's going on in the loop below? | 845 | /* So, what's going on in the loop below? |
782 | * | 846 | * |
@@ -1008,14 +1072,23 @@ ssize_t ip_append_page(struct sock *sk, struct page *page, | |||
1008 | return -EINVAL; | 1072 | return -EINVAL; |
1009 | 1073 | ||
1010 | inet->cork.length += size; | 1074 | inet->cork.length += size; |
1075 | if ((sk->sk_protocol == IPPROTO_UDP) && | ||
1076 | (rt->u.dst.dev->features & NETIF_F_UFO)) | ||
1077 | skb_shinfo(skb)->ufo_size = (mtu - fragheaderlen); | ||
1078 | |||
1011 | 1079 | ||
1012 | while (size > 0) { | 1080 | while (size > 0) { |
1013 | int i; | 1081 | int i; |
1014 | 1082 | ||
1015 | /* Check if the remaining data fits into current packet. */ | 1083 | if (skb_shinfo(skb)->ufo_size) |
1016 | len = mtu - skb->len; | 1084 | len = size; |
1017 | if (len < size) | 1085 | else { |
1018 | len = maxfraglen - skb->len; | 1086 | |
1087 | /* Check if the remaining data fits into current packet. */ | ||
1088 | len = mtu - skb->len; | ||
1089 | if (len < size) | ||
1090 | len = maxfraglen - skb->len; | ||
1091 | } | ||
1019 | if (len <= 0) { | 1092 | if (len <= 0) { |
1020 | struct sk_buff *skb_prev; | 1093 | struct sk_buff *skb_prev; |
1021 | char *data; | 1094 | char *data; |
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 563b442ffab8..614296a920c6 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -147,7 +147,8 @@ static int ip6_output2(struct sk_buff *skb) | |||
147 | 147 | ||
148 | int ip6_output(struct sk_buff *skb) | 148 | int ip6_output(struct sk_buff *skb) |
149 | { | 149 | { |
150 | if (skb->len > dst_mtu(skb->dst) || dst_allfrag(skb->dst)) | 150 | if ((skb->len > dst_mtu(skb->dst) && !skb_shinfo(skb)->ufo_size) || |
151 | dst_allfrag(skb->dst)) | ||
151 | return ip6_fragment(skb, ip6_output2); | 152 | return ip6_fragment(skb, ip6_output2); |
152 | else | 153 | else |
153 | return ip6_output2(skb); | 154 | return ip6_output2(skb); |
@@ -768,6 +769,65 @@ out_err_release: | |||
768 | *dst = NULL; | 769 | *dst = NULL; |
769 | return err; | 770 | return err; |
770 | } | 771 | } |
772 | inline int ip6_ufo_append_data(struct sock *sk, | ||
773 | int getfrag(void *from, char *to, int offset, int len, | ||
774 | int odd, struct sk_buff *skb), | ||
775 | void *from, int length, int hh_len, int fragheaderlen, | ||
776 | int transhdrlen, int mtu,unsigned int flags) | ||
777 | |||
778 | { | ||
779 | struct sk_buff *skb; | ||
780 | int err; | ||
781 | |||
782 | /* There is support for UDP large send offload by network | ||
783 | * device, so create one single skb packet containing complete | ||
784 | * udp datagram | ||
785 | */ | ||
786 | if ((skb = skb_peek_tail(&sk->sk_write_queue)) == NULL) { | ||
787 | skb = sock_alloc_send_skb(sk, | ||
788 | hh_len + fragheaderlen + transhdrlen + 20, | ||
789 | (flags & MSG_DONTWAIT), &err); | ||
790 | if (skb == NULL) | ||
791 | return -ENOMEM; | ||
792 | |||
793 | /* reserve space for Hardware header */ | ||
794 | skb_reserve(skb, hh_len); | ||
795 | |||
796 | /* create space for UDP/IP header */ | ||
797 | skb_put(skb,fragheaderlen + transhdrlen); | ||
798 | |||
799 | /* initialize network header pointer */ | ||
800 | skb->nh.raw = skb->data; | ||
801 | |||
802 | /* initialize protocol header pointer */ | ||
803 | skb->h.raw = skb->data + fragheaderlen; | ||
804 | |||
805 | skb->ip_summed = CHECKSUM_HW; | ||
806 | skb->csum = 0; | ||
807 | sk->sk_sndmsg_off = 0; | ||
808 | } | ||
809 | |||
810 | err = skb_append_datato_frags(sk,skb, getfrag, from, | ||
811 | (length - transhdrlen)); | ||
812 | if (!err) { | ||
813 | struct frag_hdr fhdr; | ||
814 | |||
815 | /* specify the length of each IP datagram fragment*/ | ||
816 | skb_shinfo(skb)->ufo_size = (mtu - fragheaderlen) - | ||
817 | sizeof(struct frag_hdr); | ||
818 | ipv6_select_ident(skb, &fhdr); | ||
819 | skb_shinfo(skb)->ip6_frag_id = fhdr.identification; | ||
820 | __skb_queue_tail(&sk->sk_write_queue, skb); | ||
821 | |||
822 | return 0; | ||
823 | } | ||
824 | /* There is not enough support do UPD LSO, | ||
825 | * so follow normal path | ||
826 | */ | ||
827 | kfree_skb(skb); | ||
828 | |||
829 | return err; | ||
830 | } | ||
771 | 831 | ||
772 | int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | 832 | int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, |
773 | int offset, int len, int odd, struct sk_buff *skb), | 833 | int offset, int len, int odd, struct sk_buff *skb), |
@@ -860,6 +920,15 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to, | |||
860 | */ | 920 | */ |
861 | 921 | ||
862 | inet->cork.length += length; | 922 | inet->cork.length += length; |
923 | if (((length > mtu) && (sk->sk_protocol == IPPROTO_UDP)) && | ||
924 | (rt->u.dst.dev->features & NETIF_F_UFO)) { | ||
925 | |||
926 | if(ip6_ufo_append_data(sk, getfrag, from, length, hh_len, | ||
927 | fragheaderlen, transhdrlen, mtu, flags)) | ||
928 | goto error; | ||
929 | |||
930 | return 0; | ||
931 | } | ||
863 | 932 | ||
864 | if ((skb = skb_peek_tail(&sk->sk_write_queue)) == NULL) | 933 | if ((skb = skb_peek_tail(&sk->sk_write_queue)) == NULL) |
865 | goto alloc_new_skb; | 934 | goto alloc_new_skb; |
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 39a96c768102..c4f2a0ef7489 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
@@ -164,7 +164,7 @@ static int ip6_mc_leave_src(struct sock *sk, struct ipv6_mc_socklist *iml, | |||
164 | #define MLDV2_MASK(value, nb) ((nb)>=32 ? (value) : ((1<<(nb))-1) & (value)) | 164 | #define MLDV2_MASK(value, nb) ((nb)>=32 ? (value) : ((1<<(nb))-1) & (value)) |
165 | #define MLDV2_EXP(thresh, nbmant, nbexp, value) \ | 165 | #define MLDV2_EXP(thresh, nbmant, nbexp, value) \ |
166 | ((value) < (thresh) ? (value) : \ | 166 | ((value) < (thresh) ? (value) : \ |
167 | ((MLDV2_MASK(value, nbmant) | (1<<(nbmant+nbexp))) << \ | 167 | ((MLDV2_MASK(value, nbmant) | (1<<(nbmant))) << \ |
168 | (MLDV2_MASK((value) >> (nbmant), nbexp) + (nbexp)))) | 168 | (MLDV2_MASK((value) >> (nbmant), nbexp) + (nbexp)))) |
169 | 169 | ||
170 | #define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value) | 170 | #define MLDV2_QQIC(value) MLDV2_EXP(0x80, 4, 3, value) |
diff --git a/sound/parisc/harmony.c b/sound/parisc/harmony.c index f560dd8cdb90..d833349ed518 100644 --- a/sound/parisc/harmony.c +++ b/sound/parisc/harmony.c | |||
@@ -197,7 +197,7 @@ snd_harmony_interrupt(int irq, void *dev, struct pt_regs *regs) | |||
197 | spin_unlock(&h->lock); | 197 | spin_unlock(&h->lock); |
198 | 198 | ||
199 | if (dstatus & HARMONY_DSTATUS_PN) { | 199 | if (dstatus & HARMONY_DSTATUS_PN) { |
200 | if (h->psubs) { | 200 | if (h->psubs && h->st.playing) { |
201 | spin_lock(&h->lock); | 201 | spin_lock(&h->lock); |
202 | h->pbuf.buf += h->pbuf.count; /* PAGE_SIZE */ | 202 | h->pbuf.buf += h->pbuf.count; /* PAGE_SIZE */ |
203 | h->pbuf.buf %= h->pbuf.size; /* MAX_BUFS*PAGE_SIZE */ | 203 | h->pbuf.buf %= h->pbuf.size; /* MAX_BUFS*PAGE_SIZE */ |
@@ -216,7 +216,7 @@ snd_harmony_interrupt(int irq, void *dev, struct pt_regs *regs) | |||
216 | } | 216 | } |
217 | 217 | ||
218 | if (dstatus & HARMONY_DSTATUS_RN) { | 218 | if (dstatus & HARMONY_DSTATUS_RN) { |
219 | if (h->csubs) { | 219 | if (h->csubs && h->st.capturing) { |
220 | spin_lock(&h->lock); | 220 | spin_lock(&h->lock); |
221 | h->cbuf.buf += h->cbuf.count; | 221 | h->cbuf.buf += h->cbuf.count; |
222 | h->cbuf.buf %= h->cbuf.size; | 222 | h->cbuf.buf %= h->cbuf.size; |
@@ -316,6 +316,7 @@ snd_harmony_playback_trigger(snd_pcm_substream_t *ss, int cmd) | |||
316 | case SNDRV_PCM_TRIGGER_STOP: | 316 | case SNDRV_PCM_TRIGGER_STOP: |
317 | h->st.playing = 0; | 317 | h->st.playing = 0; |
318 | harmony_mute(h); | 318 | harmony_mute(h); |
319 | harmony_write(h, HARMONY_PNXTADD, h->sdma.addr); | ||
319 | harmony_disable_interrupts(h); | 320 | harmony_disable_interrupts(h); |
320 | break; | 321 | break; |
321 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: | 322 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
@@ -351,8 +352,9 @@ snd_harmony_capture_trigger(snd_pcm_substream_t *ss, int cmd) | |||
351 | break; | 352 | break; |
352 | case SNDRV_PCM_TRIGGER_STOP: | 353 | case SNDRV_PCM_TRIGGER_STOP: |
353 | h->st.capturing = 0; | 354 | h->st.capturing = 0; |
354 | harmony_mute(h); | 355 | harmony_mute(h); |
355 | harmony_disable_interrupts(h); | 356 | harmony_write(h, HARMONY_RNXTADD, h->gdma.addr); |
357 | harmony_disable_interrupts(h); | ||
356 | break; | 358 | break; |
357 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: | 359 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
358 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: | 360 | case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: |
@@ -408,7 +410,8 @@ snd_harmony_playback_prepare(snd_pcm_substream_t *ss) | |||
408 | 410 | ||
409 | h->pbuf.size = snd_pcm_lib_buffer_bytes(ss); | 411 | h->pbuf.size = snd_pcm_lib_buffer_bytes(ss); |
410 | h->pbuf.count = snd_pcm_lib_period_bytes(ss); | 412 | h->pbuf.count = snd_pcm_lib_period_bytes(ss); |
411 | h->pbuf.buf = 0; | 413 | if (h->pbuf.buf >= h->pbuf.size) |
414 | h->pbuf.buf = 0; | ||
412 | h->st.playing = 0; | 415 | h->st.playing = 0; |
413 | 416 | ||
414 | h->st.rate = snd_harmony_rate_bits(rt->rate); | 417 | h->st.rate = snd_harmony_rate_bits(rt->rate); |
@@ -437,7 +440,8 @@ snd_harmony_capture_prepare(snd_pcm_substream_t *ss) | |||
437 | 440 | ||
438 | h->cbuf.size = snd_pcm_lib_buffer_bytes(ss); | 441 | h->cbuf.size = snd_pcm_lib_buffer_bytes(ss); |
439 | h->cbuf.count = snd_pcm_lib_period_bytes(ss); | 442 | h->cbuf.count = snd_pcm_lib_period_bytes(ss); |
440 | h->cbuf.buf = 0; | 443 | if (h->cbuf.buf >= h->cbuf.size) |
444 | h->cbuf.buf = 0; | ||
441 | h->st.capturing = 0; | 445 | h->st.capturing = 0; |
442 | 446 | ||
443 | h->st.rate = snd_harmony_rate_bits(rt->rate); | 447 | h->st.rate = snd_harmony_rate_bits(rt->rate); |
@@ -712,13 +716,14 @@ snd_harmony_volume_get(snd_kcontrol_t *kc, | |||
712 | 716 | ||
713 | left = (h->st.gain >> shift_left) & mask; | 717 | left = (h->st.gain >> shift_left) & mask; |
714 | right = (h->st.gain >> shift_right) & mask; | 718 | right = (h->st.gain >> shift_right) & mask; |
715 | |||
716 | if (invert) { | 719 | if (invert) { |
717 | left = mask - left; | 720 | left = mask - left; |
718 | right = mask - right; | 721 | right = mask - right; |
719 | } | 722 | } |
723 | |||
720 | ucontrol->value.integer.value[0] = left; | 724 | ucontrol->value.integer.value[0] = left; |
721 | ucontrol->value.integer.value[1] = right; | 725 | if (shift_left != shift_right) |
726 | ucontrol->value.integer.value[1] = right; | ||
722 | 727 | ||
723 | spin_unlock_irqrestore(&h->mixer_lock, flags); | 728 | spin_unlock_irqrestore(&h->mixer_lock, flags); |
724 | 729 | ||
@@ -738,22 +743,82 @@ snd_harmony_volume_put(snd_kcontrol_t *kc, | |||
738 | int old_gain = h->st.gain; | 743 | int old_gain = h->st.gain; |
739 | unsigned long flags; | 744 | unsigned long flags; |
740 | 745 | ||
746 | spin_lock_irqsave(&h->mixer_lock, flags); | ||
747 | |||
741 | left = ucontrol->value.integer.value[0] & mask; | 748 | left = ucontrol->value.integer.value[0] & mask; |
742 | right = ucontrol->value.integer.value[1] & mask; | 749 | if (invert) |
743 | if (invert) { | ||
744 | left = mask - left; | 750 | left = mask - left; |
745 | right = mask - right; | 751 | h->st.gain &= ~( (mask << shift_left ) ); |
752 | h->st.gain |= (left << shift_left); | ||
753 | |||
754 | if (shift_left != shift_right) { | ||
755 | right = ucontrol->value.integer.value[1] & mask; | ||
756 | if (invert) | ||
757 | right = mask - right; | ||
758 | h->st.gain &= ~( (mask << shift_right) ); | ||
759 | h->st.gain |= (right << shift_right); | ||
746 | } | 760 | } |
761 | |||
762 | snd_harmony_set_new_gain(h); | ||
763 | |||
764 | spin_unlock_irqrestore(&h->mixer_lock, flags); | ||
765 | |||
766 | return h->st.gain != old_gain; | ||
767 | } | ||
768 | |||
769 | static int | ||
770 | snd_harmony_captureroute_info(snd_kcontrol_t *kc, | ||
771 | snd_ctl_elem_info_t *uinfo) | ||
772 | { | ||
773 | static char *texts[2] = { "Line", "Mic" }; | ||
774 | uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; | ||
775 | uinfo->count = 1; | ||
776 | uinfo->value.enumerated.items = 2; | ||
777 | if (uinfo->value.enumerated.item > 1) | ||
778 | uinfo->value.enumerated.item = 1; | ||
779 | strcpy(uinfo->value.enumerated.name, | ||
780 | texts[uinfo->value.enumerated.item]); | ||
781 | return 0; | ||
782 | } | ||
783 | |||
784 | static int | ||
785 | snd_harmony_captureroute_get(snd_kcontrol_t *kc, | ||
786 | snd_ctl_elem_value_t *ucontrol) | ||
787 | { | ||
788 | harmony_t *h = snd_kcontrol_chip(kc); | ||
789 | int value; | ||
790 | unsigned long flags; | ||
791 | |||
792 | spin_lock_irqsave(&h->mixer_lock, flags); | ||
793 | |||
794 | value = (h->st.gain >> HARMONY_GAIN_IS_SHIFT) & 1; | ||
795 | ucontrol->value.enumerated.item[0] = value; | ||
796 | |||
797 | spin_unlock_irqrestore(&h->mixer_lock, flags); | ||
798 | |||
799 | return 0; | ||
800 | } | ||
801 | |||
802 | static int | ||
803 | snd_harmony_captureroute_put(snd_kcontrol_t *kc, | ||
804 | snd_ctl_elem_value_t *ucontrol) | ||
805 | { | ||
806 | harmony_t *h = snd_kcontrol_chip(kc); | ||
807 | int value; | ||
808 | int old_gain = h->st.gain; | ||
809 | unsigned long flags; | ||
747 | 810 | ||
748 | spin_lock_irqsave(&h->mixer_lock, flags); | 811 | spin_lock_irqsave(&h->mixer_lock, flags); |
749 | 812 | ||
750 | h->st.gain &= ~( (mask << shift_right) | (mask << shift_left) ); | 813 | value = ucontrol->value.enumerated.item[0] & 1; |
751 | h->st.gain |= ( (left << shift_left) | (right << shift_right) ); | 814 | h->st.gain &= ~HARMONY_GAIN_IS_MASK; |
815 | h->st.gain |= value << HARMONY_GAIN_IS_SHIFT; | ||
816 | |||
752 | snd_harmony_set_new_gain(h); | 817 | snd_harmony_set_new_gain(h); |
753 | 818 | ||
754 | spin_unlock_irqrestore(&h->mixer_lock, flags); | 819 | spin_unlock_irqrestore(&h->mixer_lock, flags); |
755 | 820 | ||
756 | return (old_gain - h->st.gain); | 821 | return h->st.gain != old_gain; |
757 | } | 822 | } |
758 | 823 | ||
759 | #define HARMONY_CONTROLS (sizeof(snd_harmony_controls)/ \ | 824 | #define HARMONY_CONTROLS (sizeof(snd_harmony_controls)/ \ |
@@ -767,10 +832,25 @@ snd_harmony_volume_put(snd_kcontrol_t *kc, | |||
767 | ((mask) << 16) | ((invert) << 24)) } | 832 | ((mask) << 16) | ((invert) << 24)) } |
768 | 833 | ||
769 | static snd_kcontrol_new_t snd_harmony_controls[] = { | 834 | static snd_kcontrol_new_t snd_harmony_controls[] = { |
770 | HARMONY_VOLUME("Playback Volume", HARMONY_GAIN_LO_SHIFT, | 835 | HARMONY_VOLUME("Master Playback Volume", HARMONY_GAIN_LO_SHIFT, |
771 | HARMONY_GAIN_RO_SHIFT, HARMONY_GAIN_OUT, 1), | 836 | HARMONY_GAIN_RO_SHIFT, HARMONY_GAIN_OUT, 1), |
772 | HARMONY_VOLUME("Capture Volume", HARMONY_GAIN_LI_SHIFT, | 837 | HARMONY_VOLUME("Capture Volume", HARMONY_GAIN_LI_SHIFT, |
773 | HARMONY_GAIN_RI_SHIFT, HARMONY_GAIN_IN, 0), | 838 | HARMONY_GAIN_RI_SHIFT, HARMONY_GAIN_IN, 0), |
839 | HARMONY_VOLUME("Monitor Volume", HARMONY_GAIN_MA_SHIFT, | ||
840 | HARMONY_GAIN_MA_SHIFT, HARMONY_GAIN_MA, 1), | ||
841 | { | ||
842 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | ||
843 | .name = "Input Route", | ||
844 | .info = snd_harmony_captureroute_info, | ||
845 | .get = snd_harmony_captureroute_get, | ||
846 | .put = snd_harmony_captureroute_put | ||
847 | }, | ||
848 | HARMONY_VOLUME("Internal Speaker Switch", HARMONY_GAIN_SE_SHIFT, | ||
849 | HARMONY_GAIN_SE_SHIFT, 1, 0), | ||
850 | HARMONY_VOLUME("Line-Out Switch", HARMONY_GAIN_LE_SHIFT, | ||
851 | HARMONY_GAIN_LE_SHIFT, 1, 0), | ||
852 | HARMONY_VOLUME("Headphones Switch", HARMONY_GAIN_HE_SHIFT, | ||
853 | HARMONY_GAIN_HE_SHIFT, 1, 0), | ||
774 | }; | 854 | }; |
775 | 855 | ||
776 | static void __init | 856 | static void __init |
@@ -852,14 +932,14 @@ snd_harmony_create(snd_card_t *card, | |||
852 | memset(&h->pbuf, 0, sizeof(h->pbuf)); | 932 | memset(&h->pbuf, 0, sizeof(h->pbuf)); |
853 | memset(&h->cbuf, 0, sizeof(h->cbuf)); | 933 | memset(&h->cbuf, 0, sizeof(h->cbuf)); |
854 | 934 | ||
855 | h->hpa = padev->hpa; | 935 | h->hpa = padev->hpa.start; |
856 | h->card = card; | 936 | h->card = card; |
857 | h->dev = padev; | 937 | h->dev = padev; |
858 | h->irq = padev->irq; | 938 | h->irq = padev->irq; |
859 | h->iobase = ioremap_nocache(padev->hpa, HARMONY_SIZE); | 939 | h->iobase = ioremap_nocache(padev->hpa.start, HARMONY_SIZE); |
860 | if (h->iobase == NULL) { | 940 | if (h->iobase == NULL) { |
861 | printk(KERN_ERR PFX "unable to remap hpa 0x%lx\n", | 941 | printk(KERN_ERR PFX "unable to remap hpa 0x%lx\n", |
862 | padev->hpa); | 942 | padev->hpa.start); |
863 | err = -EBUSY; | 943 | err = -EBUSY; |
864 | goto free_and_ret; | 944 | goto free_and_ret; |
865 | } | 945 | } |
diff --git a/sound/parisc/harmony.h b/sound/parisc/harmony.h index ef77f9a577d5..526c52389de2 100644 --- a/sound/parisc/harmony.h +++ b/sound/parisc/harmony.h | |||
@@ -61,7 +61,7 @@ typedef struct snd_card_harmony { | |||
61 | #define HARMONY_SIZE 64 | 61 | #define HARMONY_SIZE 64 |
62 | 62 | ||
63 | #define BUF_SIZE PAGE_SIZE | 63 | #define BUF_SIZE PAGE_SIZE |
64 | #define MAX_BUFS 10 | 64 | #define MAX_BUFS 16 |
65 | #define MAX_BUF_SIZE (MAX_BUFS * BUF_SIZE) | 65 | #define MAX_BUF_SIZE (MAX_BUFS * BUF_SIZE) |
66 | 66 | ||
67 | #define PLAYBACK_BUFS MAX_BUFS | 67 | #define PLAYBACK_BUFS MAX_BUFS |
@@ -101,28 +101,31 @@ typedef struct snd_card_harmony { | |||
101 | #define HARMONY_SS_MONO 0x00000000 | 101 | #define HARMONY_SS_MONO 0x00000000 |
102 | #define HARMONY_SS_STEREO 0x00000001 | 102 | #define HARMONY_SS_STEREO 0x00000001 |
103 | 103 | ||
104 | #define HARMONY_GAIN_SILENCE 0x00F00FFF | 104 | #define HARMONY_GAIN_SILENCE 0x01F00FFF |
105 | #define HARMONY_GAIN_DEFAULT 0x0FF00000 | 105 | #define HARMONY_GAIN_DEFAULT 0x01F00FFF |
106 | 106 | ||
107 | #define HARMONY_GAIN_HE_SHIFT 27 | 107 | #define HARMONY_GAIN_HE_SHIFT 27 /* headphones enabled */ |
108 | #define HARMONY_GAIN_HE_MASK (1 << HARMONY_GAIN_HE_SHIFT) | 108 | #define HARMONY_GAIN_HE_MASK (1 << HARMONY_GAIN_HE_SHIFT) |
109 | #define HARMONY_GAIN_LE_SHIFT 26 | 109 | #define HARMONY_GAIN_LE_SHIFT 26 /* line-out enabled */ |
110 | #define HARMONY_GAIN_LE_MASK (1 << HARMONY_GAIN_LE_SHIFT) | 110 | #define HARMONY_GAIN_LE_MASK (1 << HARMONY_GAIN_LE_SHIFT) |
111 | #define HARMONY_GAIN_SE_SHIFT 25 | 111 | #define HARMONY_GAIN_SE_SHIFT 25 /* internal-speaker enabled */ |
112 | #define HARMONY_GAIN_SE_MASK (1 << HARMONY_GAIN_SE_SHIFT) | 112 | #define HARMONY_GAIN_SE_MASK (1 << HARMONY_GAIN_SE_SHIFT) |
113 | #define HARMONY_GAIN_IS_SHIFT 24 | 113 | #define HARMONY_GAIN_IS_SHIFT 24 /* input select - 0 for line, 1 for mic */ |
114 | #define HARMONY_GAIN_IS_MASK (1 << HARMONY_GAIN_IS_SHIFT) | 114 | #define HARMONY_GAIN_IS_MASK (1 << HARMONY_GAIN_IS_SHIFT) |
115 | 115 | ||
116 | /* monitor attenuation */ | ||
116 | #define HARMONY_GAIN_MA 0x0f | 117 | #define HARMONY_GAIN_MA 0x0f |
117 | #define HARMONY_GAIN_MA_SHIFT 20 | 118 | #define HARMONY_GAIN_MA_SHIFT 20 |
118 | #define HARMONY_GAIN_MA_MASK (HARMONY_GAIN_MA << HARMONY_GAIN_MA_SHIFT) | 119 | #define HARMONY_GAIN_MA_MASK (HARMONY_GAIN_MA << HARMONY_GAIN_MA_SHIFT) |
119 | 120 | ||
121 | /* input gain */ | ||
120 | #define HARMONY_GAIN_IN 0x0f | 122 | #define HARMONY_GAIN_IN 0x0f |
121 | #define HARMONY_GAIN_LI_SHIFT 16 | 123 | #define HARMONY_GAIN_LI_SHIFT 16 |
122 | #define HARMONY_GAIN_LI_MASK (HARMONY_GAIN_IN << HARMONY_GAIN_LI_SHIFT) | 124 | #define HARMONY_GAIN_LI_MASK (HARMONY_GAIN_IN << HARMONY_GAIN_LI_SHIFT) |
123 | #define HARMONY_GAIN_RI_SHIFT 12 | 125 | #define HARMONY_GAIN_RI_SHIFT 12 |
124 | #define HARMONY_GAIN_RI_MASK (HARMONY_GAIN_IN << HARMONY_GAIN_RI_SHIFT) | 126 | #define HARMONY_GAIN_RI_MASK (HARMONY_GAIN_IN << HARMONY_GAIN_RI_SHIFT) |
125 | 127 | ||
128 | /* output gain (master volume) */ | ||
126 | #define HARMONY_GAIN_OUT 0x3f | 129 | #define HARMONY_GAIN_OUT 0x3f |
127 | #define HARMONY_GAIN_LO_SHIFT 6 | 130 | #define HARMONY_GAIN_LO_SHIFT 6 |
128 | #define HARMONY_GAIN_LO_MASK (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT) | 131 | #define HARMONY_GAIN_LO_MASK (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT) |