diff options
266 files changed, 3746 insertions, 2419 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index ef69c75780bf..25d298517104 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1714,6 +1714,14 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1714 | uart6850= [HW,OSS] | 1714 | uart6850= [HW,OSS] |
1715 | Format: <io>,<irq> | 1715 | Format: <io>,<irq> |
1716 | 1716 | ||
1717 | uhci-hcd.ignore_oc= | ||
1718 | [USB] Ignore overcurrent events (default N). | ||
1719 | Some badly-designed motherboards generate lots of | ||
1720 | bogus events, for ports that aren't wired to | ||
1721 | anything. Set this parameter to avoid log spamming. | ||
1722 | Note that genuine overcurrent events won't be | ||
1723 | reported either. | ||
1724 | |||
1717 | usbhid.mousepoll= | 1725 | usbhid.mousepoll= |
1718 | [USBHID] The interval which mice are to be polled at. | 1726 | [USBHID] The interval which mice are to be polled at. |
1719 | 1727 | ||
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index b3bd36668db3..33994271cb3b 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -1703,29 +1703,32 @@ platforms are moved over to use the flattened-device-tree model. | |||
1703 | Required properties: | 1703 | Required properties: |
1704 | 1704 | ||
1705 | - device_type : has to be "rom" | 1705 | - device_type : has to be "rom" |
1706 | - compatible : Should specify what this ROM device is compatible with | 1706 | - compatible : Should specify what this flash device is compatible with. |
1707 | (i.e. "onenand"). Currently, this is most likely to be "direct-mapped" | 1707 | Currently, this is most likely to be "direct-mapped" (which |
1708 | (which corresponds to the MTD physmap mapping driver). | 1708 | corresponds to the MTD physmap mapping driver). |
1709 | - regs : Offset and length of the register set (or memory mapping) for | 1709 | - reg : Offset and length of the register set (or memory mapping) for |
1710 | the device. | 1710 | the device. |
1711 | - bank-width : Width of the flash data bus in bytes. Required | ||
1712 | for the NOR flashes (compatible == "direct-mapped" and others) ONLY. | ||
1711 | 1713 | ||
1712 | Recommended properties : | 1714 | Recommended properties : |
1713 | 1715 | ||
1714 | - bank-width : Width of the flash data bus in bytes. Required | ||
1715 | for the NOR flashes (compatible == "direct-mapped" and others) ONLY. | ||
1716 | - partitions : Several pairs of 32-bit values where the first value is | 1716 | - partitions : Several pairs of 32-bit values where the first value is |
1717 | partition's offset from the start of the device and the second one is | 1717 | partition's offset from the start of the device and the second one is |
1718 | partition size in bytes with LSB used to signify a read only | 1718 | partition size in bytes with LSB used to signify a read only |
1719 | partititon (so, the parition size should always be an even number). | 1719 | partition (so, the parition size should always be an even number). |
1720 | - partition-names : The list of concatenated zero terminated strings | 1720 | - partition-names : The list of concatenated zero terminated strings |
1721 | representing the partition names. | 1721 | representing the partition names. |
1722 | - probe-type : The type of probe which should be done for the chip | ||
1723 | (JEDEC vs CFI actually). Valid ONLY for NOR flashes. | ||
1722 | 1724 | ||
1723 | Example: | 1725 | Example: |
1724 | 1726 | ||
1725 | flash@ff000000 { | 1727 | flash@ff000000 { |
1726 | device_type = "rom"; | 1728 | device_type = "rom"; |
1727 | compatible = "direct-mapped"; | 1729 | compatible = "direct-mapped"; |
1728 | regs = <ff000000 01000000>; | 1730 | probe-type = "CFI"; |
1731 | reg = <ff000000 01000000>; | ||
1729 | bank-width = <4>; | 1732 | bank-width = <4>; |
1730 | partitions = <00000000 00f80000 | 1733 | partitions = <00000000 00f80000 |
1731 | 00f80000 00080001>; | 1734 | 00f80000 00080001>; |
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl index 077fbe25ebf4..ccd0a953953d 100644 --- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl +++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl | |||
@@ -927,7 +927,7 @@ | |||
927 | <informalexample> | 927 | <informalexample> |
928 | <programlisting> | 928 | <programlisting> |
929 | <![CDATA[ | 929 | <![CDATA[ |
930 | struct mychip *chip = (struct mychip *)card->private_data; | 930 | struct mychip *chip = card->private_data; |
931 | ]]> | 931 | ]]> |
932 | </programlisting> | 932 | </programlisting> |
933 | </informalexample> | 933 | </informalexample> |
@@ -1095,7 +1095,7 @@ | |||
1095 | 1095 | ||
1096 | /* release the irq */ | 1096 | /* release the irq */ |
1097 | if (chip->irq >= 0) | 1097 | if (chip->irq >= 0) |
1098 | free_irq(chip->irq, (void *)chip); | 1098 | free_irq(chip->irq, chip); |
1099 | /* release the i/o ports & memory */ | 1099 | /* release the i/o ports & memory */ |
1100 | pci_release_regions(chip->pci); | 1100 | pci_release_regions(chip->pci); |
1101 | /* disable the PCI entry */ | 1101 | /* disable the PCI entry */ |
@@ -1148,7 +1148,7 @@ | |||
1148 | } | 1148 | } |
1149 | chip->port = pci_resource_start(pci, 0); | 1149 | chip->port = pci_resource_start(pci, 0); |
1150 | if (request_irq(pci->irq, snd_mychip_interrupt, | 1150 | if (request_irq(pci->irq, snd_mychip_interrupt, |
1151 | IRQF_DISABLED|IRQF_SHARED, "My Chip", chip)) { | 1151 | IRQF_SHARED, "My Chip", chip)) { |
1152 | printk(KERN_ERR "cannot grab irq %d\n", pci->irq); | 1152 | printk(KERN_ERR "cannot grab irq %d\n", pci->irq); |
1153 | snd_mychip_free(chip); | 1153 | snd_mychip_free(chip); |
1154 | return -EBUSY; | 1154 | return -EBUSY; |
@@ -1387,7 +1387,7 @@ | |||
1387 | <programlisting> | 1387 | <programlisting> |
1388 | <![CDATA[ | 1388 | <![CDATA[ |
1389 | if (chip->irq >= 0) | 1389 | if (chip->irq >= 0) |
1390 | free_irq(chip->irq, (void *)chip); | 1390 | free_irq(chip->irq, chip); |
1391 | ]]> | 1391 | ]]> |
1392 | </programlisting> | 1392 | </programlisting> |
1393 | </informalexample> | 1393 | </informalexample> |
diff --git a/MAINTAINERS b/MAINTAINERS index 3e926e733878..13902cbe56ba 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -3130,7 +3130,7 @@ USB EHCI DRIVER | |||
3130 | P: David Brownell | 3130 | P: David Brownell |
3131 | M: dbrownell@users.sourceforge.net | 3131 | M: dbrownell@users.sourceforge.net |
3132 | L: linux-usb-devel@lists.sourceforge.net | 3132 | L: linux-usb-devel@lists.sourceforge.net |
3133 | S: Maintained | 3133 | S: Odd Fixes |
3134 | 3134 | ||
3135 | USB ET61X[12]51 DRIVER | 3135 | USB ET61X[12]51 DRIVER |
3136 | P: Luca Risolia | 3136 | P: Luca Risolia |
@@ -3183,11 +3183,11 @@ S: Maintained | |||
3183 | W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ | 3183 | W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ |
3184 | 3184 | ||
3185 | USB OHCI DRIVER | 3185 | USB OHCI DRIVER |
3186 | P: Roman Weissgaerber | 3186 | P: David Brownell |
3187 | M: weissg@vienna.at | 3187 | M: dbrownell@users.sourceforge.net |
3188 | L: linux-usb-users@lists.sourceforge.net | 3188 | L: linux-usb-users@lists.sourceforge.net |
3189 | L: linux-usb-devel@lists.sourceforge.net | 3189 | L: linux-usb-devel@lists.sourceforge.net |
3190 | S: Maintained | 3190 | S: Odd Fixes |
3191 | 3191 | ||
3192 | USB OPTION-CARD DRIVER | 3192 | USB OPTION-CARD DRIVER |
3193 | P: Matthias Urlichs | 3193 | P: Matthias Urlichs |
diff --git a/arch/arm/configs/ep93xx_defconfig b/arch/arm/configs/ep93xx_defconfig index f8a66b72ad5d..24a701ab33e5 100644 --- a/arch/arm/configs/ep93xx_defconfig +++ b/arch/arm/configs/ep93xx_defconfig | |||
@@ -1,14 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc1-git9 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Sat Jul 15 15:08:10 2006 | 4 | # Sat Dec 16 06:05:24 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
9 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
11 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -28,18 +32,22 @@ CONFIG_LOCALVERSION="" | |||
28 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
29 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
30 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
31 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
32 | # CONFIG_BSD_PROCESS_ACCT is not set | 37 | # CONFIG_BSD_PROCESS_ACCT is not set |
33 | # CONFIG_TASKSTATS is not set | 38 | # CONFIG_TASKSTATS is not set |
34 | CONFIG_SYSCTL=y | 39 | # CONFIG_UTS_NS is not set |
35 | # CONFIG_AUDIT is not set | 40 | # CONFIG_AUDIT is not set |
36 | CONFIG_IKCONFIG=y | 41 | CONFIG_IKCONFIG=y |
37 | CONFIG_IKCONFIG_PROC=y | 42 | CONFIG_IKCONFIG_PROC=y |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
38 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
39 | CONFIG_INITRAMFS_SOURCE="" | 45 | CONFIG_INITRAMFS_SOURCE="" |
40 | CONFIG_UID16=y | ||
41 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 46 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
47 | CONFIG_SYSCTL=y | ||
42 | CONFIG_EMBEDDED=y | 48 | CONFIG_EMBEDDED=y |
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
43 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
44 | # CONFIG_KALLSYMS_ALL is not set | 52 | # CONFIG_KALLSYMS_ALL is not set |
45 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -48,12 +56,12 @@ CONFIG_PRINTK=y | |||
48 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
49 | CONFIG_ELF_CORE=y | 57 | CONFIG_ELF_CORE=y |
50 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
51 | CONFIG_RT_MUTEXES=y | ||
52 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
53 | CONFIG_EPOLL=y | 60 | CONFIG_EPOLL=y |
54 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
55 | CONFIG_SLAB=y | 62 | CONFIG_SLAB=y |
56 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_RT_MUTEXES=y | ||
57 | # CONFIG_TINY_SHMEM is not set | 65 | # CONFIG_TINY_SHMEM is not set |
58 | CONFIG_BASE_SMALL=0 | 66 | CONFIG_BASE_SMALL=0 |
59 | # CONFIG_SLOB is not set | 67 | # CONFIG_SLOB is not set |
@@ -71,7 +79,10 @@ CONFIG_KMOD=y | |||
71 | # | 79 | # |
72 | # Block layer | 80 | # Block layer |
73 | # | 81 | # |
82 | CONFIG_BLOCK=y | ||
83 | # CONFIG_LBD is not set | ||
74 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | # CONFIG_LSF is not set | ||
75 | 86 | ||
76 | # | 87 | # |
77 | # IO Schedulers | 88 | # IO Schedulers |
@@ -103,7 +114,9 @@ CONFIG_ARCH_EP93XX=y | |||
103 | # CONFIG_ARCH_NETX is not set | 114 | # CONFIG_ARCH_NETX is not set |
104 | # CONFIG_ARCH_H720X is not set | 115 | # CONFIG_ARCH_H720X is not set |
105 | # CONFIG_ARCH_IMX is not set | 116 | # CONFIG_ARCH_IMX is not set |
106 | # CONFIG_ARCH_IOP3XX is not set | 117 | # CONFIG_ARCH_IOP32X is not set |
118 | # CONFIG_ARCH_IOP33X is not set | ||
119 | # CONFIG_ARCH_IOP13XX is not set | ||
107 | # CONFIG_ARCH_IXP4XX is not set | 120 | # CONFIG_ARCH_IXP4XX is not set |
108 | # CONFIG_ARCH_IXP2000 is not set | 121 | # CONFIG_ARCH_IXP2000 is not set |
109 | # CONFIG_ARCH_IXP23XX is not set | 122 | # CONFIG_ARCH_IXP23XX is not set |
@@ -127,6 +140,7 @@ CONFIG_CRUNCH=y | |||
127 | # | 140 | # |
128 | CONFIG_MACH_ADSSPHERE=y | 141 | CONFIG_MACH_ADSSPHERE=y |
129 | CONFIG_MACH_EDB9302=y | 142 | CONFIG_MACH_EDB9302=y |
143 | CONFIG_MACH_EDB9302A=y | ||
130 | CONFIG_MACH_EDB9312=y | 144 | CONFIG_MACH_EDB9312=y |
131 | CONFIG_MACH_EDB9315=y | 145 | CONFIG_MACH_EDB9315=y |
132 | CONFIG_MACH_EDB9315A=y | 146 | CONFIG_MACH_EDB9315A=y |
@@ -138,12 +152,14 @@ CONFIG_MACH_TS72XX=y | |||
138 | # | 152 | # |
139 | CONFIG_CPU_32=y | 153 | CONFIG_CPU_32=y |
140 | CONFIG_CPU_ARM920T=y | 154 | CONFIG_CPU_ARM920T=y |
141 | CONFIG_CPU_32v4=y | 155 | CONFIG_CPU_32v4T=y |
142 | CONFIG_CPU_ABRT_EV4T=y | 156 | CONFIG_CPU_ABRT_EV4T=y |
143 | CONFIG_CPU_CACHE_V4WT=y | 157 | CONFIG_CPU_CACHE_V4WT=y |
144 | CONFIG_CPU_CACHE_VIVT=y | 158 | CONFIG_CPU_CACHE_VIVT=y |
145 | CONFIG_CPU_COPY_V4WB=y | 159 | CONFIG_CPU_COPY_V4WB=y |
146 | CONFIG_CPU_TLB_V4WBI=y | 160 | CONFIG_CPU_TLB_V4WBI=y |
161 | CONFIG_CPU_CP15=y | ||
162 | CONFIG_CPU_CP15_MMU=y | ||
147 | 163 | ||
148 | # | 164 | # |
149 | # Processor Features | 165 | # Processor Features |
@@ -230,6 +246,7 @@ CONFIG_PACKET_MMAP=y | |||
230 | CONFIG_UNIX=y | 246 | CONFIG_UNIX=y |
231 | CONFIG_XFRM=y | 247 | CONFIG_XFRM=y |
232 | # CONFIG_XFRM_USER is not set | 248 | # CONFIG_XFRM_USER is not set |
249 | # CONFIG_XFRM_SUB_POLICY is not set | ||
233 | CONFIG_NET_KEY=y | 250 | CONFIG_NET_KEY=y |
234 | CONFIG_INET=y | 251 | CONFIG_INET=y |
235 | # CONFIG_IP_MULTICAST is not set | 252 | # CONFIG_IP_MULTICAST is not set |
@@ -250,13 +267,29 @@ CONFIG_SYN_COOKIES=y | |||
250 | # CONFIG_INET_TUNNEL is not set | 267 | # CONFIG_INET_TUNNEL is not set |
251 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 268 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
252 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 269 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
270 | CONFIG_INET_XFRM_MODE_BEET=y | ||
253 | CONFIG_INET_DIAG=y | 271 | CONFIG_INET_DIAG=y |
254 | CONFIG_INET_TCP_DIAG=y | 272 | CONFIG_INET_TCP_DIAG=y |
255 | # CONFIG_TCP_CONG_ADVANCED is not set | 273 | # CONFIG_TCP_CONG_ADVANCED is not set |
256 | CONFIG_TCP_CONG_BIC=y | 274 | CONFIG_TCP_CONG_CUBIC=y |
257 | # CONFIG_IPV6 is not set | 275 | CONFIG_DEFAULT_TCP_CONG="cubic" |
276 | # CONFIG_TCP_MD5SIG is not set | ||
277 | CONFIG_IPV6=y | ||
278 | # CONFIG_IPV6_PRIVACY is not set | ||
279 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
280 | # CONFIG_INET6_AH is not set | ||
281 | # CONFIG_INET6_ESP is not set | ||
282 | # CONFIG_INET6_IPCOMP is not set | ||
283 | # CONFIG_IPV6_MIP6 is not set | ||
258 | # CONFIG_INET6_XFRM_TUNNEL is not set | 284 | # CONFIG_INET6_XFRM_TUNNEL is not set |
259 | # CONFIG_INET6_TUNNEL is not set | 285 | # CONFIG_INET6_TUNNEL is not set |
286 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
287 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
288 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
289 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
290 | # CONFIG_IPV6_SIT is not set | ||
291 | # CONFIG_IPV6_TUNNEL is not set | ||
292 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
260 | # CONFIG_NETWORK_SECMARK is not set | 293 | # CONFIG_NETWORK_SECMARK is not set |
261 | # CONFIG_NETFILTER is not set | 294 | # CONFIG_NETFILTER is not set |
262 | 295 | ||
@@ -283,7 +316,6 @@ CONFIG_TCP_CONG_BIC=y | |||
283 | # CONFIG_ATALK is not set | 316 | # CONFIG_ATALK is not set |
284 | # CONFIG_X25 is not set | 317 | # CONFIG_X25 is not set |
285 | # CONFIG_LAPB is not set | 318 | # CONFIG_LAPB is not set |
286 | # CONFIG_NET_DIVERT is not set | ||
287 | # CONFIG_ECONET is not set | 319 | # CONFIG_ECONET is not set |
288 | # CONFIG_WAN_ROUTER is not set | 320 | # CONFIG_WAN_ROUTER is not set |
289 | 321 | ||
@@ -330,7 +362,7 @@ CONFIG_MTD_REDBOOT_PARTS=y | |||
330 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 | 362 | CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 |
331 | # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set | 363 | # CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set |
332 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set | 364 | # CONFIG_MTD_REDBOOT_PARTS_READONLY is not set |
333 | # CONFIG_MTD_CMDLINE_PARTS is not set | 365 | CONFIG_MTD_CMDLINE_PARTS=y |
334 | # CONFIG_MTD_AFS_PARTS is not set | 366 | # CONFIG_MTD_AFS_PARTS is not set |
335 | 367 | ||
336 | # | 368 | # |
@@ -342,6 +374,7 @@ CONFIG_MTD_BLOCK=y | |||
342 | # CONFIG_NFTL is not set | 374 | # CONFIG_NFTL is not set |
343 | # CONFIG_INFTL is not set | 375 | # CONFIG_INFTL is not set |
344 | # CONFIG_RFD_FTL is not set | 376 | # CONFIG_RFD_FTL is not set |
377 | # CONFIG_SSFDC is not set | ||
345 | 378 | ||
346 | # | 379 | # |
347 | # RAM/ROM/Flash chip drivers | 380 | # RAM/ROM/Flash chip drivers |
@@ -430,7 +463,7 @@ CONFIG_MTD_NAND_IDS=y | |||
430 | # | 463 | # |
431 | # CONFIG_BLK_DEV_COW_COMMON is not set | 464 | # CONFIG_BLK_DEV_COW_COMMON is not set |
432 | # CONFIG_BLK_DEV_LOOP is not set | 465 | # CONFIG_BLK_DEV_LOOP is not set |
433 | # CONFIG_BLK_DEV_NBD is not set | 466 | CONFIG_BLK_DEV_NBD=y |
434 | # CONFIG_BLK_DEV_UB is not set | 467 | # CONFIG_BLK_DEV_UB is not set |
435 | # CONFIG_BLK_DEV_RAM is not set | 468 | # CONFIG_BLK_DEV_RAM is not set |
436 | # CONFIG_BLK_DEV_INITRD is not set | 469 | # CONFIG_BLK_DEV_INITRD is not set |
@@ -442,6 +475,8 @@ CONFIG_MTD_NAND_IDS=y | |||
442 | # | 475 | # |
443 | # CONFIG_RAID_ATTRS is not set | 476 | # CONFIG_RAID_ATTRS is not set |
444 | CONFIG_SCSI=y | 477 | CONFIG_SCSI=y |
478 | # CONFIG_SCSI_TGT is not set | ||
479 | # CONFIG_SCSI_NETLINK is not set | ||
445 | # CONFIG_SCSI_PROC_FS is not set | 480 | # CONFIG_SCSI_PROC_FS is not set |
446 | 481 | ||
447 | # | 482 | # |
@@ -460,23 +495,29 @@ CONFIG_BLK_DEV_SD=y | |||
460 | # CONFIG_SCSI_MULTI_LUN is not set | 495 | # CONFIG_SCSI_MULTI_LUN is not set |
461 | # CONFIG_SCSI_CONSTANTS is not set | 496 | # CONFIG_SCSI_CONSTANTS is not set |
462 | # CONFIG_SCSI_LOGGING is not set | 497 | # CONFIG_SCSI_LOGGING is not set |
498 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
463 | 499 | ||
464 | # | 500 | # |
465 | # SCSI Transport Attributes | 501 | # SCSI Transports |
466 | # | 502 | # |
467 | # CONFIG_SCSI_SPI_ATTRS is not set | 503 | # CONFIG_SCSI_SPI_ATTRS is not set |
468 | # CONFIG_SCSI_FC_ATTRS is not set | 504 | # CONFIG_SCSI_FC_ATTRS is not set |
469 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 505 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
470 | # CONFIG_SCSI_SAS_ATTRS is not set | 506 | # CONFIG_SCSI_SAS_ATTRS is not set |
507 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
471 | 508 | ||
472 | # | 509 | # |
473 | # SCSI low-level drivers | 510 | # SCSI low-level drivers |
474 | # | 511 | # |
475 | # CONFIG_ISCSI_TCP is not set | 512 | # CONFIG_ISCSI_TCP is not set |
476 | # CONFIG_SCSI_SATA is not set | ||
477 | # CONFIG_SCSI_DEBUG is not set | 513 | # CONFIG_SCSI_DEBUG is not set |
478 | 514 | ||
479 | # | 515 | # |
516 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
517 | # | ||
518 | # CONFIG_ATA is not set | ||
519 | |||
520 | # | ||
480 | # Multi-device support (RAID and LVM) | 521 | # Multi-device support (RAID and LVM) |
481 | # | 522 | # |
482 | # CONFIG_MD is not set | 523 | # CONFIG_MD is not set |
@@ -513,6 +554,7 @@ CONFIG_NETDEVICES=y | |||
513 | # | 554 | # |
514 | CONFIG_NET_ETHERNET=y | 555 | CONFIG_NET_ETHERNET=y |
515 | CONFIG_MII=y | 556 | CONFIG_MII=y |
557 | CONFIG_EP93XX_ETH=y | ||
516 | # CONFIG_SMC91X is not set | 558 | # CONFIG_SMC91X is not set |
517 | # CONFIG_DM9000 is not set | 559 | # CONFIG_DM9000 is not set |
518 | 560 | ||
@@ -607,17 +649,12 @@ CONFIG_EP93XX_WATCHDOG=y | |||
607 | # CONFIG_NVRAM is not set | 649 | # CONFIG_NVRAM is not set |
608 | # CONFIG_DTLK is not set | 650 | # CONFIG_DTLK is not set |
609 | # CONFIG_R3964 is not set | 651 | # CONFIG_R3964 is not set |
610 | |||
611 | # | ||
612 | # Ftape, the floppy tape device driver | ||
613 | # | ||
614 | # CONFIG_RAW_DRIVER is not set | 652 | # CONFIG_RAW_DRIVER is not set |
615 | 653 | ||
616 | # | 654 | # |
617 | # TPM devices | 655 | # TPM devices |
618 | # | 656 | # |
619 | # CONFIG_TCG_TPM is not set | 657 | # CONFIG_TCG_TPM is not set |
620 | # CONFIG_TELCLOCK is not set | ||
621 | 658 | ||
622 | # | 659 | # |
623 | # I2C support | 660 | # I2C support |
@@ -645,7 +682,7 @@ CONFIG_I2C_ALGOBIT=y | |||
645 | # | 682 | # |
646 | # CONFIG_SENSORS_DS1337 is not set | 683 | # CONFIG_SENSORS_DS1337 is not set |
647 | # CONFIG_SENSORS_DS1374 is not set | 684 | # CONFIG_SENSORS_DS1374 is not set |
648 | # CONFIG_SENSORS_EEPROM is not set | 685 | CONFIG_SENSORS_EEPROM=y |
649 | # CONFIG_SENSORS_PCF8574 is not set | 686 | # CONFIG_SENSORS_PCF8574 is not set |
650 | # CONFIG_SENSORS_PCA9539 is not set | 687 | # CONFIG_SENSORS_PCA9539 is not set |
651 | # CONFIG_SENSORS_PCF8591 is not set | 688 | # CONFIG_SENSORS_PCF8591 is not set |
@@ -664,6 +701,7 @@ CONFIG_I2C_DEBUG_CHIP=y | |||
664 | # | 701 | # |
665 | # Dallas's 1-wire bus | 702 | # Dallas's 1-wire bus |
666 | # | 703 | # |
704 | # CONFIG_W1 is not set | ||
667 | 705 | ||
668 | # | 706 | # |
669 | # Hardware Monitoring support | 707 | # Hardware Monitoring support |
@@ -697,12 +735,15 @@ CONFIG_HWMON=y | |||
697 | # CONFIG_SENSORS_LM92 is not set | 735 | # CONFIG_SENSORS_LM92 is not set |
698 | # CONFIG_SENSORS_MAX1619 is not set | 736 | # CONFIG_SENSORS_MAX1619 is not set |
699 | # CONFIG_SENSORS_PC87360 is not set | 737 | # CONFIG_SENSORS_PC87360 is not set |
738 | # CONFIG_SENSORS_PC87427 is not set | ||
700 | # CONFIG_SENSORS_SMSC47M1 is not set | 739 | # CONFIG_SENSORS_SMSC47M1 is not set |
701 | # CONFIG_SENSORS_SMSC47M192 is not set | 740 | # CONFIG_SENSORS_SMSC47M192 is not set |
702 | # CONFIG_SENSORS_SMSC47B397 is not set | 741 | # CONFIG_SENSORS_SMSC47B397 is not set |
742 | # CONFIG_SENSORS_VT1211 is not set | ||
703 | # CONFIG_SENSORS_W83781D is not set | 743 | # CONFIG_SENSORS_W83781D is not set |
704 | # CONFIG_SENSORS_W83791D is not set | 744 | # CONFIG_SENSORS_W83791D is not set |
705 | # CONFIG_SENSORS_W83792D is not set | 745 | # CONFIG_SENSORS_W83792D is not set |
746 | # CONFIG_SENSORS_W83793 is not set | ||
706 | # CONFIG_SENSORS_W83L785TS is not set | 747 | # CONFIG_SENSORS_W83L785TS is not set |
707 | # CONFIG_SENSORS_W83627HF is not set | 748 | # CONFIG_SENSORS_W83627HF is not set |
708 | # CONFIG_SENSORS_W83627EHF is not set | 749 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -711,6 +752,7 @@ CONFIG_HWMON=y | |||
711 | # | 752 | # |
712 | # Misc devices | 753 | # Misc devices |
713 | # | 754 | # |
755 | # CONFIG_TIFM_CORE is not set | ||
714 | 756 | ||
715 | # | 757 | # |
716 | # LED devices | 758 | # LED devices |
@@ -729,7 +771,6 @@ CONFIG_HWMON=y | |||
729 | # Multimedia devices | 771 | # Multimedia devices |
730 | # | 772 | # |
731 | # CONFIG_VIDEO_DEV is not set | 773 | # CONFIG_VIDEO_DEV is not set |
732 | CONFIG_VIDEO_V4L2=y | ||
733 | 774 | ||
734 | # | 775 | # |
735 | # Digital Video Broadcasting Devices | 776 | # Digital Video Broadcasting Devices |
@@ -742,6 +783,7 @@ CONFIG_VIDEO_V4L2=y | |||
742 | # | 783 | # |
743 | # CONFIG_FIRMWARE_EDID is not set | 784 | # CONFIG_FIRMWARE_EDID is not set |
744 | # CONFIG_FB is not set | 785 | # CONFIG_FB is not set |
786 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
745 | 787 | ||
746 | # | 788 | # |
747 | # Sound | 789 | # Sound |
@@ -763,6 +805,7 @@ CONFIG_USB_DEBUG=y | |||
763 | CONFIG_USB_DEVICEFS=y | 805 | CONFIG_USB_DEVICEFS=y |
764 | # CONFIG_USB_BANDWIDTH is not set | 806 | # CONFIG_USB_BANDWIDTH is not set |
765 | CONFIG_USB_DYNAMIC_MINORS=y | 807 | CONFIG_USB_DYNAMIC_MINORS=y |
808 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
766 | # CONFIG_USB_OTG is not set | 809 | # CONFIG_USB_OTG is not set |
767 | 810 | ||
768 | # | 811 | # |
@@ -797,12 +840,12 @@ CONFIG_USB_STORAGE=y | |||
797 | # CONFIG_USB_STORAGE_SDDR55 is not set | 840 | # CONFIG_USB_STORAGE_SDDR55 is not set |
798 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 841 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
799 | # CONFIG_USB_STORAGE_ALAUDA is not set | 842 | # CONFIG_USB_STORAGE_ALAUDA is not set |
843 | # CONFIG_USB_STORAGE_KARMA is not set | ||
800 | # CONFIG_USB_LIBUSUAL is not set | 844 | # CONFIG_USB_LIBUSUAL is not set |
801 | 845 | ||
802 | # | 846 | # |
803 | # USB Input Devices | 847 | # USB Input Devices |
804 | # | 848 | # |
805 | # CONFIG_USB_HID is not set | ||
806 | 849 | ||
807 | # | 850 | # |
808 | # USB HID Boot Protocol drivers | 851 | # USB HID Boot Protocol drivers |
@@ -821,6 +864,7 @@ CONFIG_USB_STORAGE=y | |||
821 | # CONFIG_USB_KAWETH is not set | 864 | # CONFIG_USB_KAWETH is not set |
822 | # CONFIG_USB_PEGASUS is not set | 865 | # CONFIG_USB_PEGASUS is not set |
823 | CONFIG_USB_RTL8150=y | 866 | CONFIG_USB_RTL8150=y |
867 | # CONFIG_USB_USBNET_MII is not set | ||
824 | # CONFIG_USB_USBNET is not set | 868 | # CONFIG_USB_USBNET is not set |
825 | # CONFIG_USB_MON is not set | 869 | # CONFIG_USB_MON is not set |
826 | 870 | ||
@@ -834,8 +878,8 @@ CONFIG_USB_RTL8150=y | |||
834 | CONFIG_USB_SERIAL=y | 878 | CONFIG_USB_SERIAL=y |
835 | CONFIG_USB_SERIAL_CONSOLE=y | 879 | CONFIG_USB_SERIAL_CONSOLE=y |
836 | # CONFIG_USB_SERIAL_GENERIC is not set | 880 | # CONFIG_USB_SERIAL_GENERIC is not set |
881 | # CONFIG_USB_SERIAL_AIRCABLE is not set | ||
837 | # CONFIG_USB_SERIAL_AIRPRIME is not set | 882 | # CONFIG_USB_SERIAL_AIRPRIME is not set |
838 | # CONFIG_USB_SERIAL_ANYDATA is not set | ||
839 | # CONFIG_USB_SERIAL_ARK3116 is not set | 883 | # CONFIG_USB_SERIAL_ARK3116 is not set |
840 | # CONFIG_USB_SERIAL_BELKIN is not set | 884 | # CONFIG_USB_SERIAL_BELKIN is not set |
841 | # CONFIG_USB_SERIAL_WHITEHEAT is not set | 885 | # CONFIG_USB_SERIAL_WHITEHEAT is not set |
@@ -857,6 +901,8 @@ CONFIG_USB_SERIAL_CONSOLE=y | |||
857 | # CONFIG_USB_SERIAL_KLSI is not set | 901 | # CONFIG_USB_SERIAL_KLSI is not set |
858 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | 902 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set |
859 | # CONFIG_USB_SERIAL_MCT_U232 is not set | 903 | # CONFIG_USB_SERIAL_MCT_U232 is not set |
904 | # CONFIG_USB_SERIAL_MOS7720 is not set | ||
905 | # CONFIG_USB_SERIAL_MOS7840 is not set | ||
860 | # CONFIG_USB_SERIAL_NAVMAN is not set | 906 | # CONFIG_USB_SERIAL_NAVMAN is not set |
861 | CONFIG_USB_SERIAL_PL2303=y | 907 | CONFIG_USB_SERIAL_PL2303=y |
862 | # CONFIG_USB_SERIAL_HP4X is not set | 908 | # CONFIG_USB_SERIAL_HP4X is not set |
@@ -867,12 +913,14 @@ CONFIG_USB_SERIAL_PL2303=y | |||
867 | # CONFIG_USB_SERIAL_XIRCOM is not set | 913 | # CONFIG_USB_SERIAL_XIRCOM is not set |
868 | # CONFIG_USB_SERIAL_OPTION is not set | 914 | # CONFIG_USB_SERIAL_OPTION is not set |
869 | # CONFIG_USB_SERIAL_OMNINET is not set | 915 | # CONFIG_USB_SERIAL_OMNINET is not set |
916 | # CONFIG_USB_SERIAL_DEBUG is not set | ||
870 | 917 | ||
871 | # | 918 | # |
872 | # USB Miscellaneous drivers | 919 | # USB Miscellaneous drivers |
873 | # | 920 | # |
874 | # CONFIG_USB_EMI62 is not set | 921 | # CONFIG_USB_EMI62 is not set |
875 | # CONFIG_USB_EMI26 is not set | 922 | # CONFIG_USB_EMI26 is not set |
923 | # CONFIG_USB_ADUTUX is not set | ||
876 | # CONFIG_USB_AUERSWALD is not set | 924 | # CONFIG_USB_AUERSWALD is not set |
877 | # CONFIG_USB_RIO500 is not set | 925 | # CONFIG_USB_RIO500 is not set |
878 | # CONFIG_USB_LEGOTOWER is not set | 926 | # CONFIG_USB_LEGOTOWER is not set |
@@ -880,11 +928,12 @@ CONFIG_USB_SERIAL_PL2303=y | |||
880 | # CONFIG_USB_LED is not set | 928 | # CONFIG_USB_LED is not set |
881 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 929 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
882 | # CONFIG_USB_CYTHERM is not set | 930 | # CONFIG_USB_CYTHERM is not set |
883 | # CONFIG_USB_PHIDGETKIT is not set | 931 | # CONFIG_USB_PHIDGET is not set |
884 | # CONFIG_USB_PHIDGETSERVO is not set | ||
885 | # CONFIG_USB_IDMOUSE is not set | 932 | # CONFIG_USB_IDMOUSE is not set |
933 | # CONFIG_USB_FTDI_ELAN is not set | ||
886 | # CONFIG_USB_APPLEDISPLAY is not set | 934 | # CONFIG_USB_APPLEDISPLAY is not set |
887 | # CONFIG_USB_LD is not set | 935 | # CONFIG_USB_LD is not set |
936 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
888 | # CONFIG_USB_TEST is not set | 937 | # CONFIG_USB_TEST is not set |
889 | 938 | ||
890 | # | 939 | # |
@@ -908,6 +957,7 @@ CONFIG_RTC_LIB=y | |||
908 | CONFIG_RTC_CLASS=y | 957 | CONFIG_RTC_CLASS=y |
909 | CONFIG_RTC_HCTOSYS=y | 958 | CONFIG_RTC_HCTOSYS=y |
910 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 959 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
960 | # CONFIG_RTC_DEBUG is not set | ||
911 | 961 | ||
912 | # | 962 | # |
913 | # RTC interfaces | 963 | # RTC interfaces |
@@ -921,7 +971,7 @@ CONFIG_RTC_INTF_DEV=y | |||
921 | # RTC drivers | 971 | # RTC drivers |
922 | # | 972 | # |
923 | # CONFIG_RTC_DRV_X1205 is not set | 973 | # CONFIG_RTC_DRV_X1205 is not set |
924 | # CONFIG_RTC_DRV_DS1307 is not set | 974 | CONFIG_RTC_DRV_DS1307=y |
925 | # CONFIG_RTC_DRV_DS1553 is not set | 975 | # CONFIG_RTC_DRV_DS1553 is not set |
926 | # CONFIG_RTC_DRV_ISL1208 is not set | 976 | # CONFIG_RTC_DRV_ISL1208 is not set |
927 | # CONFIG_RTC_DRV_DS1672 is not set | 977 | # CONFIG_RTC_DRV_DS1672 is not set |
@@ -943,12 +993,14 @@ CONFIG_EXT2_FS=y | |||
943 | # CONFIG_EXT2_FS_XIP is not set | 993 | # CONFIG_EXT2_FS_XIP is not set |
944 | CONFIG_EXT3_FS=y | 994 | CONFIG_EXT3_FS=y |
945 | # CONFIG_EXT3_FS_XATTR is not set | 995 | # CONFIG_EXT3_FS_XATTR is not set |
996 | # CONFIG_EXT4DEV_FS is not set | ||
946 | CONFIG_JBD=y | 997 | CONFIG_JBD=y |
947 | # CONFIG_JBD_DEBUG is not set | 998 | # CONFIG_JBD_DEBUG is not set |
948 | # CONFIG_REISERFS_FS is not set | 999 | # CONFIG_REISERFS_FS is not set |
949 | # CONFIG_JFS_FS is not set | 1000 | # CONFIG_JFS_FS is not set |
950 | # CONFIG_FS_POSIX_ACL is not set | 1001 | # CONFIG_FS_POSIX_ACL is not set |
951 | # CONFIG_XFS_FS is not set | 1002 | # CONFIG_XFS_FS is not set |
1003 | # CONFIG_GFS2_FS is not set | ||
952 | # CONFIG_OCFS2_FS is not set | 1004 | # CONFIG_OCFS2_FS is not set |
953 | # CONFIG_MINIX_FS is not set | 1005 | # CONFIG_MINIX_FS is not set |
954 | # CONFIG_ROMFS_FS is not set | 1006 | # CONFIG_ROMFS_FS is not set |
@@ -980,8 +1032,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
980 | # Pseudo filesystems | 1032 | # Pseudo filesystems |
981 | # | 1033 | # |
982 | CONFIG_PROC_FS=y | 1034 | CONFIG_PROC_FS=y |
1035 | CONFIG_PROC_SYSCTL=y | ||
983 | CONFIG_SYSFS=y | 1036 | CONFIG_SYSFS=y |
984 | CONFIG_TMPFS=y | 1037 | CONFIG_TMPFS=y |
1038 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
985 | # CONFIG_HUGETLB_PAGE is not set | 1039 | # CONFIG_HUGETLB_PAGE is not set |
986 | CONFIG_RAMFS=y | 1040 | CONFIG_RAMFS=y |
987 | # CONFIG_CONFIGFS_FS is not set | 1041 | # CONFIG_CONFIGFS_FS is not set |
@@ -1102,6 +1156,11 @@ CONFIG_NLS_ISO8859_1=y | |||
1102 | # CONFIG_NLS_UTF8 is not set | 1156 | # CONFIG_NLS_UTF8 is not set |
1103 | 1157 | ||
1104 | # | 1158 | # |
1159 | # Distributed Lock Manager | ||
1160 | # | ||
1161 | # CONFIG_DLM is not set | ||
1162 | |||
1163 | # | ||
1105 | # Profiling support | 1164 | # Profiling support |
1106 | # | 1165 | # |
1107 | # CONFIG_PROFILING is not set | 1166 | # CONFIG_PROFILING is not set |
@@ -1110,8 +1169,11 @@ CONFIG_NLS_ISO8859_1=y | |||
1110 | # Kernel hacking | 1169 | # Kernel hacking |
1111 | # | 1170 | # |
1112 | # CONFIG_PRINTK_TIME is not set | 1171 | # CONFIG_PRINTK_TIME is not set |
1172 | CONFIG_ENABLE_MUST_CHECK=y | ||
1113 | CONFIG_MAGIC_SYSRQ=y | 1173 | CONFIG_MAGIC_SYSRQ=y |
1114 | # CONFIG_UNUSED_SYMBOLS is not set | 1174 | # CONFIG_UNUSED_SYMBOLS is not set |
1175 | # CONFIG_DEBUG_FS is not set | ||
1176 | # CONFIG_HEADERS_CHECK is not set | ||
1115 | CONFIG_DEBUG_KERNEL=y | 1177 | CONFIG_DEBUG_KERNEL=y |
1116 | CONFIG_LOG_BUF_SHIFT=14 | 1178 | CONFIG_LOG_BUF_SHIFT=14 |
1117 | CONFIG_DETECT_SOFTLOCKUP=y | 1179 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1128,10 +1190,9 @@ CONFIG_DEBUG_MUTEXES=y | |||
1128 | # CONFIG_DEBUG_KOBJECT is not set | 1190 | # CONFIG_DEBUG_KOBJECT is not set |
1129 | CONFIG_DEBUG_BUGVERBOSE=y | 1191 | CONFIG_DEBUG_BUGVERBOSE=y |
1130 | # CONFIG_DEBUG_INFO is not set | 1192 | # CONFIG_DEBUG_INFO is not set |
1131 | # CONFIG_DEBUG_FS is not set | ||
1132 | # CONFIG_DEBUG_VM is not set | 1193 | # CONFIG_DEBUG_VM is not set |
1194 | # CONFIG_DEBUG_LIST is not set | ||
1133 | CONFIG_FRAME_POINTER=y | 1195 | CONFIG_FRAME_POINTER=y |
1134 | # CONFIG_UNWIND_INFO is not set | ||
1135 | CONFIG_FORCED_INLINING=y | 1196 | CONFIG_FORCED_INLINING=y |
1136 | # CONFIG_RCU_TORTURE_TEST is not set | 1197 | # CONFIG_RCU_TORTURE_TEST is not set |
1137 | CONFIG_DEBUG_USER=y | 1198 | CONFIG_DEBUG_USER=y |
@@ -1151,12 +1212,9 @@ CONFIG_DEBUG_LL=y | |||
1151 | # CONFIG_CRYPTO is not set | 1212 | # CONFIG_CRYPTO is not set |
1152 | 1213 | ||
1153 | # | 1214 | # |
1154 | # Hardware crypto devices | ||
1155 | # | ||
1156 | |||
1157 | # | ||
1158 | # Library routines | 1215 | # Library routines |
1159 | # | 1216 | # |
1217 | CONFIG_BITREVERSE=y | ||
1160 | # CONFIG_CRC_CCITT is not set | 1218 | # CONFIG_CRC_CCITT is not set |
1161 | # CONFIG_CRC16 is not set | 1219 | # CONFIG_CRC16 is not set |
1162 | CONFIG_CRC32=y | 1220 | CONFIG_CRC32=y |
@@ -1164,3 +1222,4 @@ CONFIG_LIBCRC32C=y | |||
1164 | CONFIG_ZLIB_INFLATE=y | 1222 | CONFIG_ZLIB_INFLATE=y |
1165 | CONFIG_ZLIB_DEFLATE=y | 1223 | CONFIG_ZLIB_DEFLATE=y |
1166 | CONFIG_PLIST=y | 1224 | CONFIG_PLIST=y |
1225 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/iop13xx_defconfig b/arch/arm/configs/iop13xx_defconfig index f6e46193fd26..43c4a37e9247 100644 --- a/arch/arm/configs/iop13xx_defconfig +++ b/arch/arm/configs/iop13xx_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.19 | 3 | # Linux kernel version: 2.6.20-rc1-git5 |
4 | # Fri Dec 1 10:51:01 2006 | 4 | # Tue Dec 19 21:38:01 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | 7 | # CONFIG_GENERIC_TIME is not set |
@@ -11,6 +11,8 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
11 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
12 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
14 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
15 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
16 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -39,6 +41,7 @@ CONFIG_BSD_PROCESS_ACCT=y | |||
39 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
40 | CONFIG_IKCONFIG=y | 42 | CONFIG_IKCONFIG=y |
41 | CONFIG_IKCONFIG_PROC=y | 43 | CONFIG_IKCONFIG_PROC=y |
44 | CONFIG_SYSFS_DEPRECATED=y | ||
42 | # CONFIG_RELAY is not set | 45 | # CONFIG_RELAY is not set |
43 | CONFIG_INITRAMFS_SOURCE="" | 46 | CONFIG_INITRAMFS_SOURCE="" |
44 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 47 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -77,7 +80,9 @@ CONFIG_KMOD=y | |||
77 | # Block layer | 80 | # Block layer |
78 | # | 81 | # |
79 | CONFIG_BLOCK=y | 82 | CONFIG_BLOCK=y |
83 | # CONFIG_LBD is not set | ||
80 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | # CONFIG_LSF is not set | ||
81 | 86 | ||
82 | # | 87 | # |
83 | # IO Schedulers | 88 | # IO Schedulers |
@@ -154,11 +159,13 @@ CONFIG_IO_36=y | |||
154 | CONFIG_ARM_THUMB=y | 159 | CONFIG_ARM_THUMB=y |
155 | # CONFIG_CPU_DCACHE_DISABLE is not set | 160 | # CONFIG_CPU_DCACHE_DISABLE is not set |
156 | # CONFIG_CPU_BPREDICT_DISABLE is not set | 161 | # CONFIG_CPU_BPREDICT_DISABLE is not set |
162 | # CONFIG_IWMMXT is not set | ||
157 | 163 | ||
158 | # | 164 | # |
159 | # Bus support | 165 | # Bus support |
160 | # | 166 | # |
161 | CONFIG_PCI=y | 167 | CONFIG_PCI=y |
168 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
162 | 169 | ||
163 | # | 170 | # |
164 | # PCCARD (PCMCIA/CardBus) support | 171 | # PCCARD (PCMCIA/CardBus) support |
@@ -259,9 +266,23 @@ CONFIG_INET_TCP_DIAG=y | |||
259 | # CONFIG_TCP_CONG_ADVANCED is not set | 266 | # CONFIG_TCP_CONG_ADVANCED is not set |
260 | CONFIG_TCP_CONG_CUBIC=y | 267 | CONFIG_TCP_CONG_CUBIC=y |
261 | CONFIG_DEFAULT_TCP_CONG="cubic" | 268 | CONFIG_DEFAULT_TCP_CONG="cubic" |
262 | # CONFIG_IPV6 is not set | 269 | # CONFIG_TCP_MD5SIG is not set |
270 | CONFIG_IPV6=y | ||
271 | # CONFIG_IPV6_PRIVACY is not set | ||
272 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
273 | # CONFIG_INET6_AH is not set | ||
274 | # CONFIG_INET6_ESP is not set | ||
275 | # CONFIG_INET6_IPCOMP is not set | ||
276 | # CONFIG_IPV6_MIP6 is not set | ||
263 | # CONFIG_INET6_XFRM_TUNNEL is not set | 277 | # CONFIG_INET6_XFRM_TUNNEL is not set |
264 | # CONFIG_INET6_TUNNEL is not set | 278 | # CONFIG_INET6_TUNNEL is not set |
279 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
280 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
281 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
282 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
283 | # CONFIG_IPV6_SIT is not set | ||
284 | # CONFIG_IPV6_TUNNEL is not set | ||
285 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
265 | # CONFIG_NETWORK_SECMARK is not set | 286 | # CONFIG_NETWORK_SECMARK is not set |
266 | # CONFIG_NETFILTER is not set | 287 | # CONFIG_NETFILTER is not set |
267 | 288 | ||
@@ -433,7 +454,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
433 | # CONFIG_BLK_DEV_UMEM is not set | 454 | # CONFIG_BLK_DEV_UMEM is not set |
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | 455 | # CONFIG_BLK_DEV_COW_COMMON is not set |
435 | # CONFIG_BLK_DEV_LOOP is not set | 456 | # CONFIG_BLK_DEV_LOOP is not set |
436 | # CONFIG_BLK_DEV_NBD is not set | 457 | CONFIG_BLK_DEV_NBD=y |
437 | # CONFIG_BLK_DEV_SX8 is not set | 458 | # CONFIG_BLK_DEV_SX8 is not set |
438 | CONFIG_BLK_DEV_RAM=y | 459 | CONFIG_BLK_DEV_RAM=y |
439 | CONFIG_BLK_DEV_RAM_COUNT=2 | 460 | CONFIG_BLK_DEV_RAM_COUNT=2 |
@@ -448,6 +469,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
448 | # | 469 | # |
449 | # CONFIG_RAID_ATTRS is not set | 470 | # CONFIG_RAID_ATTRS is not set |
450 | CONFIG_SCSI=y | 471 | CONFIG_SCSI=y |
472 | # CONFIG_SCSI_TGT is not set | ||
451 | # CONFIG_SCSI_NETLINK is not set | 473 | # CONFIG_SCSI_NETLINK is not set |
452 | CONFIG_SCSI_PROC_FS=y | 474 | CONFIG_SCSI_PROC_FS=y |
453 | 475 | ||
@@ -467,6 +489,7 @@ CONFIG_CHR_DEV_SG=y | |||
467 | # CONFIG_SCSI_MULTI_LUN is not set | 489 | # CONFIG_SCSI_MULTI_LUN is not set |
468 | CONFIG_SCSI_CONSTANTS=y | 490 | CONFIG_SCSI_CONSTANTS=y |
469 | # CONFIG_SCSI_LOGGING is not set | 491 | # CONFIG_SCSI_LOGGING is not set |
492 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
470 | 493 | ||
471 | # | 494 | # |
472 | # SCSI Transports | 495 | # SCSI Transports |
@@ -510,6 +533,7 @@ CONFIG_SCSI_SAS_ATTRS=y | |||
510 | # CONFIG_SCSI_DC390T is not set | 533 | # CONFIG_SCSI_DC390T is not set |
511 | # CONFIG_SCSI_NSP32 is not set | 534 | # CONFIG_SCSI_NSP32 is not set |
512 | # CONFIG_SCSI_DEBUG is not set | 535 | # CONFIG_SCSI_DEBUG is not set |
536 | # CONFIG_SCSI_SRP is not set | ||
513 | 537 | ||
514 | # | 538 | # |
515 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | 539 | # Serial ATA (prod) and Parallel ATA (experimental) drivers |
@@ -605,6 +629,7 @@ CONFIG_E1000_NAPI=y | |||
605 | # CONFIG_IXGB is not set | 629 | # CONFIG_IXGB is not set |
606 | # CONFIG_S2IO is not set | 630 | # CONFIG_S2IO is not set |
607 | # CONFIG_MYRI10GE is not set | 631 | # CONFIG_MYRI10GE is not set |
632 | # CONFIG_NETXEN_NIC is not set | ||
608 | 633 | ||
609 | # | 634 | # |
610 | # Token Ring devices | 635 | # Token Ring devices |
@@ -711,10 +736,6 @@ CONFIG_HW_RANDOM=y | |||
711 | # CONFIG_DTLK is not set | 736 | # CONFIG_DTLK is not set |
712 | # CONFIG_R3964 is not set | 737 | # CONFIG_R3964 is not set |
713 | # CONFIG_APPLICOM is not set | 738 | # CONFIG_APPLICOM is not set |
714 | |||
715 | # | ||
716 | # Ftape, the floppy tape device driver | ||
717 | # | ||
718 | # CONFIG_DRM is not set | 739 | # CONFIG_DRM is not set |
719 | # CONFIG_RAW_DRIVER is not set | 740 | # CONFIG_RAW_DRIVER is not set |
720 | 741 | ||
@@ -820,6 +841,7 @@ CONFIG_HWMON=y | |||
820 | # CONFIG_SENSORS_LM92 is not set | 841 | # CONFIG_SENSORS_LM92 is not set |
821 | # CONFIG_SENSORS_MAX1619 is not set | 842 | # CONFIG_SENSORS_MAX1619 is not set |
822 | # CONFIG_SENSORS_PC87360 is not set | 843 | # CONFIG_SENSORS_PC87360 is not set |
844 | # CONFIG_SENSORS_PC87427 is not set | ||
823 | # CONFIG_SENSORS_SIS5595 is not set | 845 | # CONFIG_SENSORS_SIS5595 is not set |
824 | # CONFIG_SENSORS_SMSC47M1 is not set | 846 | # CONFIG_SENSORS_SMSC47M1 is not set |
825 | # CONFIG_SENSORS_SMSC47M192 is not set | 847 | # CONFIG_SENSORS_SMSC47M192 is not set |
@@ -830,6 +852,7 @@ CONFIG_HWMON=y | |||
830 | # CONFIG_SENSORS_W83781D is not set | 852 | # CONFIG_SENSORS_W83781D is not set |
831 | # CONFIG_SENSORS_W83791D is not set | 853 | # CONFIG_SENSORS_W83791D is not set |
832 | # CONFIG_SENSORS_W83792D is not set | 854 | # CONFIG_SENSORS_W83792D is not set |
855 | # CONFIG_SENSORS_W83793 is not set | ||
833 | # CONFIG_SENSORS_W83L785TS is not set | 856 | # CONFIG_SENSORS_W83L785TS is not set |
834 | # CONFIG_SENSORS_W83627HF is not set | 857 | # CONFIG_SENSORS_W83627HF is not set |
835 | # CONFIG_SENSORS_W83627EHF is not set | 858 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -883,6 +906,11 @@ CONFIG_DUMMY_CONSOLE=y | |||
883 | # CONFIG_SOUND is not set | 906 | # CONFIG_SOUND is not set |
884 | 907 | ||
885 | # | 908 | # |
909 | # HID Devices | ||
910 | # | ||
911 | CONFIG_HID=y | ||
912 | |||
913 | # | ||
886 | # USB support | 914 | # USB support |
887 | # | 915 | # |
888 | CONFIG_USB_ARCH_HAS_HCD=y | 916 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -970,6 +998,7 @@ CONFIG_RAMFS=y | |||
970 | # | 998 | # |
971 | # CONFIG_ADFS_FS is not set | 999 | # CONFIG_ADFS_FS is not set |
972 | # CONFIG_AFFS_FS is not set | 1000 | # CONFIG_AFFS_FS is not set |
1001 | CONFIG_ECRYPT_FS=y | ||
973 | # CONFIG_HFS_FS is not set | 1002 | # CONFIG_HFS_FS is not set |
974 | # CONFIG_HFSPLUS_FS is not set | 1003 | # CONFIG_HFSPLUS_FS is not set |
975 | # CONFIG_BEFS_FS is not set | 1004 | # CONFIG_BEFS_FS is not set |
@@ -1092,6 +1121,11 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1092 | # CONFIG_NLS_UTF8 is not set | 1121 | # CONFIG_NLS_UTF8 is not set |
1093 | 1122 | ||
1094 | # | 1123 | # |
1124 | # Distributed Lock Manager | ||
1125 | # | ||
1126 | # CONFIG_DLM is not set | ||
1127 | |||
1128 | # | ||
1095 | # Profiling support | 1129 | # Profiling support |
1096 | # | 1130 | # |
1097 | # CONFIG_PROFILING is not set | 1131 | # CONFIG_PROFILING is not set |
@@ -1103,28 +1137,68 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1103 | CONFIG_ENABLE_MUST_CHECK=y | 1137 | CONFIG_ENABLE_MUST_CHECK=y |
1104 | # CONFIG_MAGIC_SYSRQ is not set | 1138 | # CONFIG_MAGIC_SYSRQ is not set |
1105 | # CONFIG_UNUSED_SYMBOLS is not set | 1139 | # CONFIG_UNUSED_SYMBOLS is not set |
1140 | # CONFIG_DEBUG_FS is not set | ||
1141 | # CONFIG_HEADERS_CHECK is not set | ||
1106 | # CONFIG_DEBUG_KERNEL is not set | 1142 | # CONFIG_DEBUG_KERNEL is not set |
1107 | CONFIG_LOG_BUF_SHIFT=14 | 1143 | CONFIG_LOG_BUF_SHIFT=14 |
1108 | CONFIG_DEBUG_BUGVERBOSE=y | 1144 | CONFIG_DEBUG_BUGVERBOSE=y |
1109 | # CONFIG_DEBUG_FS is not set | ||
1110 | CONFIG_FRAME_POINTER=y | 1145 | CONFIG_FRAME_POINTER=y |
1111 | # CONFIG_HEADERS_CHECK is not set | ||
1112 | CONFIG_DEBUG_USER=y | 1146 | CONFIG_DEBUG_USER=y |
1113 | 1147 | ||
1114 | # | 1148 | # |
1115 | # Security options | 1149 | # Security options |
1116 | # | 1150 | # |
1117 | # CONFIG_KEYS is not set | 1151 | CONFIG_KEYS=y |
1152 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
1118 | # CONFIG_SECURITY is not set | 1153 | # CONFIG_SECURITY is not set |
1119 | 1154 | ||
1120 | # | 1155 | # |
1121 | # Cryptographic options | 1156 | # Cryptographic options |
1122 | # | 1157 | # |
1123 | # CONFIG_CRYPTO is not set | 1158 | CONFIG_CRYPTO=y |
1159 | CONFIG_CRYPTO_ALGAPI=y | ||
1160 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1161 | CONFIG_CRYPTO_HASH=y | ||
1162 | CONFIG_CRYPTO_MANAGER=y | ||
1163 | CONFIG_CRYPTO_HMAC=y | ||
1164 | CONFIG_CRYPTO_XCBC=y | ||
1165 | CONFIG_CRYPTO_NULL=y | ||
1166 | CONFIG_CRYPTO_MD4=y | ||
1167 | CONFIG_CRYPTO_MD5=y | ||
1168 | CONFIG_CRYPTO_SHA1=y | ||
1169 | CONFIG_CRYPTO_SHA256=y | ||
1170 | CONFIG_CRYPTO_SHA512=y | ||
1171 | CONFIG_CRYPTO_WP512=y | ||
1172 | CONFIG_CRYPTO_TGR192=y | ||
1173 | CONFIG_CRYPTO_GF128MUL=y | ||
1174 | CONFIG_CRYPTO_ECB=y | ||
1175 | CONFIG_CRYPTO_CBC=y | ||
1176 | CONFIG_CRYPTO_LRW=y | ||
1177 | CONFIG_CRYPTO_DES=y | ||
1178 | CONFIG_CRYPTO_BLOWFISH=y | ||
1179 | CONFIG_CRYPTO_TWOFISH=y | ||
1180 | CONFIG_CRYPTO_TWOFISH_COMMON=y | ||
1181 | CONFIG_CRYPTO_SERPENT=y | ||
1182 | CONFIG_CRYPTO_AES=y | ||
1183 | CONFIG_CRYPTO_CAST5=y | ||
1184 | CONFIG_CRYPTO_CAST6=y | ||
1185 | CONFIG_CRYPTO_TEA=y | ||
1186 | CONFIG_CRYPTO_ARC4=y | ||
1187 | CONFIG_CRYPTO_KHAZAD=y | ||
1188 | CONFIG_CRYPTO_ANUBIS=y | ||
1189 | CONFIG_CRYPTO_DEFLATE=y | ||
1190 | CONFIG_CRYPTO_MICHAEL_MIC=y | ||
1191 | CONFIG_CRYPTO_CRC32C=y | ||
1192 | # CONFIG_CRYPTO_TEST is not set | ||
1193 | |||
1194 | # | ||
1195 | # Hardware crypto devices | ||
1196 | # | ||
1124 | 1197 | ||
1125 | # | 1198 | # |
1126 | # Library routines | 1199 | # Library routines |
1127 | # | 1200 | # |
1201 | CONFIG_BITREVERSE=y | ||
1128 | CONFIG_CRC_CCITT=y | 1202 | CONFIG_CRC_CCITT=y |
1129 | # CONFIG_CRC16 is not set | 1203 | # CONFIG_CRC16 is not set |
1130 | CONFIG_CRC32=y | 1204 | CONFIG_CRC32=y |
@@ -1132,3 +1206,4 @@ CONFIG_LIBCRC32C=y | |||
1132 | CONFIG_ZLIB_INFLATE=y | 1206 | CONFIG_ZLIB_INFLATE=y |
1133 | CONFIG_ZLIB_DEFLATE=y | 1207 | CONFIG_ZLIB_DEFLATE=y |
1134 | CONFIG_PLIST=y | 1208 | CONFIG_PLIST=y |
1209 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/iop32x_defconfig b/arch/arm/configs/iop32x_defconfig index b275c53728ec..7909a555706d 100644 --- a/arch/arm/configs/iop32x_defconfig +++ b/arch/arm/configs/iop32x_defconfig | |||
@@ -1,15 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc7 | 3 | # Linux kernel version: 2.6.20-rc1-git5 |
4 | # Tue Sep 19 00:30:18 2006 | 4 | # Tue Dec 19 21:37:52 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
9 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
10 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
11 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
12 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
13 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
14 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
15 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -29,18 +32,22 @@ CONFIG_LOCALVERSION="" | |||
29 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
30 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
31 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
32 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
33 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 38 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
35 | # CONFIG_TASKSTATS is not set | 39 | # CONFIG_TASKSTATS is not set |
36 | CONFIG_SYSCTL=y | 40 | # CONFIG_UTS_NS is not set |
37 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
38 | # CONFIG_IKCONFIG is not set | 42 | # CONFIG_IKCONFIG is not set |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
39 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
40 | CONFIG_INITRAMFS_SOURCE="" | 45 | CONFIG_INITRAMFS_SOURCE="" |
41 | CONFIG_UID16=y | ||
42 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 46 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
47 | CONFIG_SYSCTL=y | ||
43 | # CONFIG_EMBEDDED is not set | 48 | # CONFIG_EMBEDDED is not set |
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
44 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
45 | CONFIG_KALLSYMS_ALL=y | 52 | CONFIG_KALLSYMS_ALL=y |
46 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -49,12 +56,12 @@ CONFIG_PRINTK=y | |||
49 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
50 | CONFIG_ELF_CORE=y | 57 | CONFIG_ELF_CORE=y |
51 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
52 | CONFIG_RT_MUTEXES=y | ||
53 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
54 | CONFIG_EPOLL=y | 60 | CONFIG_EPOLL=y |
55 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
56 | CONFIG_SLAB=y | 62 | CONFIG_SLAB=y |
57 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_RT_MUTEXES=y | ||
58 | # CONFIG_TINY_SHMEM is not set | 65 | # CONFIG_TINY_SHMEM is not set |
59 | CONFIG_BASE_SMALL=0 | 66 | CONFIG_BASE_SMALL=0 |
60 | # CONFIG_SLOB is not set | 67 | # CONFIG_SLOB is not set |
@@ -72,7 +79,10 @@ CONFIG_KMOD=y | |||
72 | # | 79 | # |
73 | # Block layer | 80 | # Block layer |
74 | # | 81 | # |
82 | CONFIG_BLOCK=y | ||
83 | # CONFIG_LBD is not set | ||
75 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | # CONFIG_LSF is not set | ||
76 | 86 | ||
77 | # | 87 | # |
78 | # IO Schedulers | 88 | # IO Schedulers |
@@ -106,6 +116,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
106 | # CONFIG_ARCH_IMX is not set | 116 | # CONFIG_ARCH_IMX is not set |
107 | CONFIG_ARCH_IOP32X=y | 117 | CONFIG_ARCH_IOP32X=y |
108 | # CONFIG_ARCH_IOP33X is not set | 118 | # CONFIG_ARCH_IOP33X is not set |
119 | # CONFIG_ARCH_IOP13XX is not set | ||
109 | # CONFIG_ARCH_IXP4XX is not set | 120 | # CONFIG_ARCH_IXP4XX is not set |
110 | # CONFIG_ARCH_IXP2000 is not set | 121 | # CONFIG_ARCH_IXP2000 is not set |
111 | # CONFIG_ARCH_IXP23XX is not set | 122 | # CONFIG_ARCH_IXP23XX is not set |
@@ -141,17 +152,22 @@ CONFIG_CPU_32v5=y | |||
141 | CONFIG_CPU_ABRT_EV5T=y | 152 | CONFIG_CPU_ABRT_EV5T=y |
142 | CONFIG_CPU_CACHE_VIVT=y | 153 | CONFIG_CPU_CACHE_VIVT=y |
143 | CONFIG_CPU_TLB_V4WBI=y | 154 | CONFIG_CPU_TLB_V4WBI=y |
155 | CONFIG_CPU_CP15=y | ||
156 | CONFIG_CPU_CP15_MMU=y | ||
144 | 157 | ||
145 | # | 158 | # |
146 | # Processor Features | 159 | # Processor Features |
147 | # | 160 | # |
148 | # CONFIG_ARM_THUMB is not set | 161 | # CONFIG_ARM_THUMB is not set |
162 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
163 | # CONFIG_IWMMXT is not set | ||
149 | CONFIG_XSCALE_PMU=y | 164 | CONFIG_XSCALE_PMU=y |
150 | 165 | ||
151 | # | 166 | # |
152 | # Bus support | 167 | # Bus support |
153 | # | 168 | # |
154 | CONFIG_PCI=y | 169 | CONFIG_PCI=y |
170 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
155 | # CONFIG_PCI_DEBUG is not set | 171 | # CONFIG_PCI_DEBUG is not set |
156 | 172 | ||
157 | # | 173 | # |
@@ -225,6 +241,7 @@ CONFIG_PACKET_MMAP=y | |||
225 | CONFIG_UNIX=y | 241 | CONFIG_UNIX=y |
226 | CONFIG_XFRM=y | 242 | CONFIG_XFRM=y |
227 | # CONFIG_XFRM_USER is not set | 243 | # CONFIG_XFRM_USER is not set |
244 | # CONFIG_XFRM_SUB_POLICY is not set | ||
228 | # CONFIG_NET_KEY is not set | 245 | # CONFIG_NET_KEY is not set |
229 | CONFIG_INET=y | 246 | CONFIG_INET=y |
230 | CONFIG_IP_MULTICAST=y | 247 | CONFIG_IP_MULTICAST=y |
@@ -246,13 +263,29 @@ CONFIG_IP_PNP_BOOTP=y | |||
246 | # CONFIG_INET_TUNNEL is not set | 263 | # CONFIG_INET_TUNNEL is not set |
247 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 264 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
248 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 265 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
266 | CONFIG_INET_XFRM_MODE_BEET=y | ||
249 | CONFIG_INET_DIAG=y | 267 | CONFIG_INET_DIAG=y |
250 | CONFIG_INET_TCP_DIAG=y | 268 | CONFIG_INET_TCP_DIAG=y |
251 | # CONFIG_TCP_CONG_ADVANCED is not set | 269 | # CONFIG_TCP_CONG_ADVANCED is not set |
252 | CONFIG_TCP_CONG_BIC=y | 270 | CONFIG_TCP_CONG_CUBIC=y |
253 | # CONFIG_IPV6 is not set | 271 | CONFIG_DEFAULT_TCP_CONG="cubic" |
272 | # CONFIG_TCP_MD5SIG is not set | ||
273 | CONFIG_IPV6=y | ||
274 | # CONFIG_IPV6_PRIVACY is not set | ||
275 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
276 | # CONFIG_INET6_AH is not set | ||
277 | # CONFIG_INET6_ESP is not set | ||
278 | # CONFIG_INET6_IPCOMP is not set | ||
279 | # CONFIG_IPV6_MIP6 is not set | ||
254 | # CONFIG_INET6_XFRM_TUNNEL is not set | 280 | # CONFIG_INET6_XFRM_TUNNEL is not set |
255 | # CONFIG_INET6_TUNNEL is not set | 281 | # CONFIG_INET6_TUNNEL is not set |
282 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
283 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
284 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
285 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
286 | # CONFIG_IPV6_SIT is not set | ||
287 | # CONFIG_IPV6_TUNNEL is not set | ||
288 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
256 | # CONFIG_NETWORK_SECMARK is not set | 289 | # CONFIG_NETWORK_SECMARK is not set |
257 | # CONFIG_NETFILTER is not set | 290 | # CONFIG_NETFILTER is not set |
258 | 291 | ||
@@ -279,7 +312,6 @@ CONFIG_TCP_CONG_BIC=y | |||
279 | # CONFIG_ATALK is not set | 312 | # CONFIG_ATALK is not set |
280 | # CONFIG_X25 is not set | 313 | # CONFIG_X25 is not set |
281 | # CONFIG_LAPB is not set | 314 | # CONFIG_LAPB is not set |
282 | # CONFIG_NET_DIVERT is not set | ||
283 | # CONFIG_ECONET is not set | 315 | # CONFIG_ECONET is not set |
284 | # CONFIG_WAN_ROUTER is not set | 316 | # CONFIG_WAN_ROUTER is not set |
285 | 317 | ||
@@ -338,6 +370,7 @@ CONFIG_MTD_BLOCK=y | |||
338 | # CONFIG_NFTL is not set | 370 | # CONFIG_NFTL is not set |
339 | # CONFIG_INFTL is not set | 371 | # CONFIG_INFTL is not set |
340 | # CONFIG_RFD_FTL is not set | 372 | # CONFIG_RFD_FTL is not set |
373 | # CONFIG_SSFDC is not set | ||
341 | 374 | ||
342 | # | 375 | # |
343 | # RAM/ROM/Flash chip drivers | 376 | # RAM/ROM/Flash chip drivers |
@@ -419,9 +452,11 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1 | |||
419 | # CONFIG_BLK_DEV_DAC960 is not set | 452 | # CONFIG_BLK_DEV_DAC960 is not set |
420 | # CONFIG_BLK_DEV_UMEM is not set | 453 | # CONFIG_BLK_DEV_UMEM is not set |
421 | # CONFIG_BLK_DEV_COW_COMMON is not set | 454 | # CONFIG_BLK_DEV_COW_COMMON is not set |
422 | # CONFIG_BLK_DEV_LOOP is not set | 455 | CONFIG_BLK_DEV_LOOP=y |
423 | # CONFIG_BLK_DEV_NBD is not set | 456 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
457 | CONFIG_BLK_DEV_NBD=y | ||
424 | # CONFIG_BLK_DEV_SX8 is not set | 458 | # CONFIG_BLK_DEV_SX8 is not set |
459 | # CONFIG_BLK_DEV_UB is not set | ||
425 | CONFIG_BLK_DEV_RAM=y | 460 | CONFIG_BLK_DEV_RAM=y |
426 | CONFIG_BLK_DEV_RAM_COUNT=16 | 461 | CONFIG_BLK_DEV_RAM_COUNT=16 |
427 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 462 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
@@ -440,6 +475,8 @@ CONFIG_BLK_DEV_INITRD=y | |||
440 | # | 475 | # |
441 | # CONFIG_RAID_ATTRS is not set | 476 | # CONFIG_RAID_ATTRS is not set |
442 | CONFIG_SCSI=y | 477 | CONFIG_SCSI=y |
478 | # CONFIG_SCSI_TGT is not set | ||
479 | # CONFIG_SCSI_NETLINK is not set | ||
443 | CONFIG_SCSI_PROC_FS=y | 480 | CONFIG_SCSI_PROC_FS=y |
444 | 481 | ||
445 | # | 482 | # |
@@ -458,14 +495,16 @@ CONFIG_CHR_DEV_SG=y | |||
458 | # CONFIG_SCSI_MULTI_LUN is not set | 495 | # CONFIG_SCSI_MULTI_LUN is not set |
459 | # CONFIG_SCSI_CONSTANTS is not set | 496 | # CONFIG_SCSI_CONSTANTS is not set |
460 | # CONFIG_SCSI_LOGGING is not set | 497 | # CONFIG_SCSI_LOGGING is not set |
498 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
461 | 499 | ||
462 | # | 500 | # |
463 | # SCSI Transport Attributes | 501 | # SCSI Transports |
464 | # | 502 | # |
465 | # CONFIG_SCSI_SPI_ATTRS is not set | 503 | # CONFIG_SCSI_SPI_ATTRS is not set |
466 | # CONFIG_SCSI_FC_ATTRS is not set | 504 | # CONFIG_SCSI_FC_ATTRS is not set |
467 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 505 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
468 | # CONFIG_SCSI_SAS_ATTRS is not set | 506 | # CONFIG_SCSI_SAS_ATTRS is not set |
507 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
469 | 508 | ||
470 | # | 509 | # |
471 | # SCSI low-level drivers | 510 | # SCSI low-level drivers |
@@ -478,26 +517,84 @@ CONFIG_CHR_DEV_SG=y | |||
478 | # CONFIG_SCSI_AIC7XXX is not set | 517 | # CONFIG_SCSI_AIC7XXX is not set |
479 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 518 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
480 | # CONFIG_SCSI_AIC79XX is not set | 519 | # CONFIG_SCSI_AIC79XX is not set |
520 | # CONFIG_SCSI_AIC94XX is not set | ||
481 | # CONFIG_SCSI_DPT_I2O is not set | 521 | # CONFIG_SCSI_DPT_I2O is not set |
522 | # CONFIG_SCSI_ARCMSR is not set | ||
482 | # CONFIG_MEGARAID_NEWGEN is not set | 523 | # CONFIG_MEGARAID_NEWGEN is not set |
483 | # CONFIG_MEGARAID_LEGACY is not set | 524 | # CONFIG_MEGARAID_LEGACY is not set |
484 | # CONFIG_MEGARAID_SAS is not set | 525 | # CONFIG_MEGARAID_SAS is not set |
485 | # CONFIG_SCSI_SATA is not set | ||
486 | # CONFIG_SCSI_HPTIOP is not set | 526 | # CONFIG_SCSI_HPTIOP is not set |
487 | # CONFIG_SCSI_DMX3191D is not set | 527 | # CONFIG_SCSI_DMX3191D is not set |
488 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 528 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
489 | # CONFIG_SCSI_IPS is not set | 529 | # CONFIG_SCSI_IPS is not set |
490 | # CONFIG_SCSI_INITIO is not set | 530 | # CONFIG_SCSI_INITIO is not set |
491 | # CONFIG_SCSI_INIA100 is not set | 531 | # CONFIG_SCSI_INIA100 is not set |
532 | # CONFIG_SCSI_STEX is not set | ||
492 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 533 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
493 | # CONFIG_SCSI_IPR is not set | 534 | # CONFIG_SCSI_IPR is not set |
494 | # CONFIG_SCSI_QLOGIC_1280 is not set | 535 | # CONFIG_SCSI_QLOGIC_1280 is not set |
495 | # CONFIG_SCSI_QLA_FC is not set | 536 | # CONFIG_SCSI_QLA_FC is not set |
537 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
496 | # CONFIG_SCSI_LPFC is not set | 538 | # CONFIG_SCSI_LPFC is not set |
497 | # CONFIG_SCSI_DC395x is not set | 539 | # CONFIG_SCSI_DC395x is not set |
498 | # CONFIG_SCSI_DC390T is not set | 540 | # CONFIG_SCSI_DC390T is not set |
499 | # CONFIG_SCSI_NSP32 is not set | 541 | # CONFIG_SCSI_NSP32 is not set |
500 | # CONFIG_SCSI_DEBUG is not set | 542 | # CONFIG_SCSI_DEBUG is not set |
543 | # CONFIG_SCSI_SRP is not set | ||
544 | |||
545 | # | ||
546 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
547 | # | ||
548 | CONFIG_ATA=y | ||
549 | # CONFIG_SATA_AHCI is not set | ||
550 | # CONFIG_SATA_SVW is not set | ||
551 | # CONFIG_ATA_PIIX is not set | ||
552 | # CONFIG_SATA_MV is not set | ||
553 | # CONFIG_SATA_NV is not set | ||
554 | # CONFIG_PDC_ADMA is not set | ||
555 | # CONFIG_SATA_QSTOR is not set | ||
556 | # CONFIG_SATA_PROMISE is not set | ||
557 | # CONFIG_SATA_SX4 is not set | ||
558 | CONFIG_SATA_SIL=y | ||
559 | # CONFIG_SATA_SIL24 is not set | ||
560 | # CONFIG_SATA_SIS is not set | ||
561 | # CONFIG_SATA_ULI is not set | ||
562 | # CONFIG_SATA_VIA is not set | ||
563 | # CONFIG_SATA_VITESSE is not set | ||
564 | # CONFIG_PATA_ALI is not set | ||
565 | # CONFIG_PATA_AMD is not set | ||
566 | # CONFIG_PATA_ARTOP is not set | ||
567 | # CONFIG_PATA_ATIIXP is not set | ||
568 | # CONFIG_PATA_CMD64X is not set | ||
569 | # CONFIG_PATA_CS5520 is not set | ||
570 | # CONFIG_PATA_CS5530 is not set | ||
571 | # CONFIG_PATA_CYPRESS is not set | ||
572 | # CONFIG_PATA_EFAR is not set | ||
573 | # CONFIG_ATA_GENERIC is not set | ||
574 | # CONFIG_PATA_HPT366 is not set | ||
575 | # CONFIG_PATA_HPT37X is not set | ||
576 | # CONFIG_PATA_HPT3X2N is not set | ||
577 | # CONFIG_PATA_HPT3X3 is not set | ||
578 | # CONFIG_PATA_IT821X is not set | ||
579 | # CONFIG_PATA_JMICRON is not set | ||
580 | # CONFIG_PATA_TRIFLEX is not set | ||
581 | # CONFIG_PATA_MARVELL is not set | ||
582 | # CONFIG_PATA_MPIIX is not set | ||
583 | # CONFIG_PATA_OLDPIIX is not set | ||
584 | # CONFIG_PATA_NETCELL is not set | ||
585 | # CONFIG_PATA_NS87410 is not set | ||
586 | # CONFIG_PATA_OPTI is not set | ||
587 | # CONFIG_PATA_OPTIDMA is not set | ||
588 | # CONFIG_PATA_PDC_OLD is not set | ||
589 | # CONFIG_PATA_RADISYS is not set | ||
590 | # CONFIG_PATA_RZ1000 is not set | ||
591 | # CONFIG_PATA_SC1200 is not set | ||
592 | # CONFIG_PATA_SERVERWORKS is not set | ||
593 | # CONFIG_PATA_PDC2027X is not set | ||
594 | # CONFIG_PATA_SIL680 is not set | ||
595 | # CONFIG_PATA_SIS is not set | ||
596 | # CONFIG_PATA_VIA is not set | ||
597 | # CONFIG_PATA_WINBOND is not set | ||
501 | 598 | ||
502 | # | 599 | # |
503 | # Multi-device support (RAID and LVM) | 600 | # Multi-device support (RAID and LVM) |
@@ -512,6 +609,7 @@ CONFIG_MD_RAID1=y | |||
512 | # CONFIG_MD_MULTIPATH is not set | 609 | # CONFIG_MD_MULTIPATH is not set |
513 | # CONFIG_MD_FAULTY is not set | 610 | # CONFIG_MD_FAULTY is not set |
514 | CONFIG_BLK_DEV_DM=y | 611 | CONFIG_BLK_DEV_DM=y |
612 | # CONFIG_DM_DEBUG is not set | ||
515 | # CONFIG_DM_CRYPT is not set | 613 | # CONFIG_DM_CRYPT is not set |
516 | # CONFIG_DM_SNAPSHOT is not set | 614 | # CONFIG_DM_SNAPSHOT is not set |
517 | # CONFIG_DM_MIRROR is not set | 615 | # CONFIG_DM_MIRROR is not set |
@@ -612,6 +710,7 @@ CONFIG_R8169=y | |||
612 | # CONFIG_VIA_VELOCITY is not set | 710 | # CONFIG_VIA_VELOCITY is not set |
613 | # CONFIG_TIGON3 is not set | 711 | # CONFIG_TIGON3 is not set |
614 | # CONFIG_BNX2 is not set | 712 | # CONFIG_BNX2 is not set |
713 | # CONFIG_QLA3XXX is not set | ||
615 | 714 | ||
616 | # | 715 | # |
617 | # Ethernet (10000 Mbit) | 716 | # Ethernet (10000 Mbit) |
@@ -620,6 +719,7 @@ CONFIG_R8169=y | |||
620 | # CONFIG_IXGB is not set | 719 | # CONFIG_IXGB is not set |
621 | # CONFIG_S2IO is not set | 720 | # CONFIG_S2IO is not set |
622 | # CONFIG_MYRI10GE is not set | 721 | # CONFIG_MYRI10GE is not set |
722 | # CONFIG_NETXEN_NIC is not set | ||
623 | 723 | ||
624 | # | 724 | # |
625 | # Token Ring devices | 725 | # Token Ring devices |
@@ -654,6 +754,7 @@ CONFIG_R8169=y | |||
654 | # Input device support | 754 | # Input device support |
655 | # | 755 | # |
656 | CONFIG_INPUT=y | 756 | CONFIG_INPUT=y |
757 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
657 | 758 | ||
658 | # | 759 | # |
659 | # Userland interfaces | 760 | # Userland interfaces |
@@ -725,10 +826,6 @@ CONFIG_HW_RANDOM=y | |||
725 | # CONFIG_DTLK is not set | 826 | # CONFIG_DTLK is not set |
726 | # CONFIG_R3964 is not set | 827 | # CONFIG_R3964 is not set |
727 | # CONFIG_APPLICOM is not set | 828 | # CONFIG_APPLICOM is not set |
728 | |||
729 | # | ||
730 | # Ftape, the floppy tape device driver | ||
731 | # | ||
732 | # CONFIG_DRM is not set | 829 | # CONFIG_DRM is not set |
733 | # CONFIG_RAW_DRIVER is not set | 830 | # CONFIG_RAW_DRIVER is not set |
734 | 831 | ||
@@ -736,7 +833,6 @@ CONFIG_HW_RANDOM=y | |||
736 | # TPM devices | 833 | # TPM devices |
737 | # | 834 | # |
738 | # CONFIG_TCG_TPM is not set | 835 | # CONFIG_TCG_TPM is not set |
739 | # CONFIG_TELCLOCK is not set | ||
740 | 836 | ||
741 | # | 837 | # |
742 | # I2C support | 838 | # I2C support |
@@ -801,6 +897,7 @@ CONFIG_I2C_IOP3XX=y | |||
801 | # | 897 | # |
802 | # Dallas's 1-wire bus | 898 | # Dallas's 1-wire bus |
803 | # | 899 | # |
900 | # CONFIG_W1 is not set | ||
804 | 901 | ||
805 | # | 902 | # |
806 | # Hardware Monitoring support | 903 | # Hardware Monitoring support |
@@ -834,15 +931,18 @@ CONFIG_HWMON=y | |||
834 | # CONFIG_SENSORS_LM92 is not set | 931 | # CONFIG_SENSORS_LM92 is not set |
835 | # CONFIG_SENSORS_MAX1619 is not set | 932 | # CONFIG_SENSORS_MAX1619 is not set |
836 | # CONFIG_SENSORS_PC87360 is not set | 933 | # CONFIG_SENSORS_PC87360 is not set |
934 | # CONFIG_SENSORS_PC87427 is not set | ||
837 | # CONFIG_SENSORS_SIS5595 is not set | 935 | # CONFIG_SENSORS_SIS5595 is not set |
838 | # CONFIG_SENSORS_SMSC47M1 is not set | 936 | # CONFIG_SENSORS_SMSC47M1 is not set |
839 | # CONFIG_SENSORS_SMSC47M192 is not set | 937 | # CONFIG_SENSORS_SMSC47M192 is not set |
840 | # CONFIG_SENSORS_SMSC47B397 is not set | 938 | # CONFIG_SENSORS_SMSC47B397 is not set |
841 | # CONFIG_SENSORS_VIA686A is not set | 939 | # CONFIG_SENSORS_VIA686A is not set |
940 | # CONFIG_SENSORS_VT1211 is not set | ||
842 | # CONFIG_SENSORS_VT8231 is not set | 941 | # CONFIG_SENSORS_VT8231 is not set |
843 | # CONFIG_SENSORS_W83781D is not set | 942 | # CONFIG_SENSORS_W83781D is not set |
844 | # CONFIG_SENSORS_W83791D is not set | 943 | # CONFIG_SENSORS_W83791D is not set |
845 | # CONFIG_SENSORS_W83792D is not set | 944 | # CONFIG_SENSORS_W83792D is not set |
945 | # CONFIG_SENSORS_W83793 is not set | ||
846 | # CONFIG_SENSORS_W83L785TS is not set | 946 | # CONFIG_SENSORS_W83L785TS is not set |
847 | # CONFIG_SENSORS_W83627HF is not set | 947 | # CONFIG_SENSORS_W83627HF is not set |
848 | # CONFIG_SENSORS_W83627EHF is not set | 948 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -851,6 +951,8 @@ CONFIG_HWMON=y | |||
851 | # | 951 | # |
852 | # Misc devices | 952 | # Misc devices |
853 | # | 953 | # |
954 | # CONFIG_SGI_IOC4 is not set | ||
955 | # CONFIG_TIFM_CORE is not set | ||
854 | 956 | ||
855 | # | 957 | # |
856 | # LED devices | 958 | # LED devices |
@@ -869,12 +971,12 @@ CONFIG_HWMON=y | |||
869 | # Multimedia devices | 971 | # Multimedia devices |
870 | # | 972 | # |
871 | # CONFIG_VIDEO_DEV is not set | 973 | # CONFIG_VIDEO_DEV is not set |
872 | CONFIG_VIDEO_V4L2=y | ||
873 | 974 | ||
874 | # | 975 | # |
875 | # Digital Video Broadcasting Devices | 976 | # Digital Video Broadcasting Devices |
876 | # | 977 | # |
877 | # CONFIG_DVB is not set | 978 | # CONFIG_DVB is not set |
979 | # CONFIG_USB_DABUSB is not set | ||
878 | 980 | ||
879 | # | 981 | # |
880 | # Graphics support | 982 | # Graphics support |
@@ -895,6 +997,11 @@ CONFIG_DUMMY_CONSOLE=y | |||
895 | # CONFIG_SOUND is not set | 997 | # CONFIG_SOUND is not set |
896 | 998 | ||
897 | # | 999 | # |
1000 | # HID Devices | ||
1001 | # | ||
1002 | CONFIG_HID=y | ||
1003 | |||
1004 | # | ||
898 | # USB support | 1005 | # USB support |
899 | # | 1006 | # |
900 | CONFIG_USB_ARCH_HAS_HCD=y | 1007 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -909,6 +1016,7 @@ CONFIG_USB=y | |||
909 | # CONFIG_USB_DEVICEFS is not set | 1016 | # CONFIG_USB_DEVICEFS is not set |
910 | # CONFIG_USB_BANDWIDTH is not set | 1017 | # CONFIG_USB_BANDWIDTH is not set |
911 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1018 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1019 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
912 | # CONFIG_USB_OTG is not set | 1020 | # CONFIG_USB_OTG is not set |
913 | 1021 | ||
914 | # | 1022 | # |
@@ -946,6 +1054,7 @@ CONFIG_USB_STORAGE=y | |||
946 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1054 | # CONFIG_USB_STORAGE_SDDR55 is not set |
947 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1055 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
948 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1056 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1057 | # CONFIG_USB_STORAGE_KARMA is not set | ||
949 | # CONFIG_USB_LIBUSUAL is not set | 1058 | # CONFIG_USB_LIBUSUAL is not set |
950 | 1059 | ||
951 | # | 1060 | # |
@@ -984,6 +1093,7 @@ CONFIG_USB_STORAGE=y | |||
984 | # CONFIG_USB_KAWETH is not set | 1093 | # CONFIG_USB_KAWETH is not set |
985 | # CONFIG_USB_PEGASUS is not set | 1094 | # CONFIG_USB_PEGASUS is not set |
986 | # CONFIG_USB_RTL8150 is not set | 1095 | # CONFIG_USB_RTL8150 is not set |
1096 | # CONFIG_USB_USBNET_MII is not set | ||
987 | # CONFIG_USB_USBNET is not set | 1097 | # CONFIG_USB_USBNET is not set |
988 | CONFIG_USB_MON=y | 1098 | CONFIG_USB_MON=y |
989 | 1099 | ||
@@ -1001,6 +1111,7 @@ CONFIG_USB_MON=y | |||
1001 | # | 1111 | # |
1002 | # CONFIG_USB_EMI62 is not set | 1112 | # CONFIG_USB_EMI62 is not set |
1003 | # CONFIG_USB_EMI26 is not set | 1113 | # CONFIG_USB_EMI26 is not set |
1114 | # CONFIG_USB_ADUTUX is not set | ||
1004 | # CONFIG_USB_AUERSWALD is not set | 1115 | # CONFIG_USB_AUERSWALD is not set |
1005 | # CONFIG_USB_RIO500 is not set | 1116 | # CONFIG_USB_RIO500 is not set |
1006 | # CONFIG_USB_LEGOTOWER is not set | 1117 | # CONFIG_USB_LEGOTOWER is not set |
@@ -1008,12 +1119,13 @@ CONFIG_USB_MON=y | |||
1008 | # CONFIG_USB_LED is not set | 1119 | # CONFIG_USB_LED is not set |
1009 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1120 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1010 | # CONFIG_USB_CYTHERM is not set | 1121 | # CONFIG_USB_CYTHERM is not set |
1011 | # CONFIG_USB_PHIDGETKIT is not set | 1122 | # CONFIG_USB_PHIDGET is not set |
1012 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1013 | # CONFIG_USB_IDMOUSE is not set | 1123 | # CONFIG_USB_IDMOUSE is not set |
1124 | # CONFIG_USB_FTDI_ELAN is not set | ||
1014 | # CONFIG_USB_APPLEDISPLAY is not set | 1125 | # CONFIG_USB_APPLEDISPLAY is not set |
1015 | # CONFIG_USB_SISUSBVGA is not set | 1126 | # CONFIG_USB_SISUSBVGA is not set |
1016 | # CONFIG_USB_LD is not set | 1127 | # CONFIG_USB_LD is not set |
1128 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1017 | 1129 | ||
1018 | # | 1130 | # |
1019 | # USB DSL modem support | 1131 | # USB DSL modem support |
@@ -1045,6 +1157,7 @@ CONFIG_EXT3_FS=y | |||
1045 | CONFIG_EXT3_FS_XATTR=y | 1157 | CONFIG_EXT3_FS_XATTR=y |
1046 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 1158 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
1047 | # CONFIG_EXT3_FS_SECURITY is not set | 1159 | # CONFIG_EXT3_FS_SECURITY is not set |
1160 | # CONFIG_EXT4DEV_FS is not set | ||
1048 | CONFIG_JBD=y | 1161 | CONFIG_JBD=y |
1049 | # CONFIG_JBD_DEBUG is not set | 1162 | # CONFIG_JBD_DEBUG is not set |
1050 | CONFIG_FS_MBCACHE=y | 1163 | CONFIG_FS_MBCACHE=y |
@@ -1056,6 +1169,7 @@ CONFIG_XFS_FS=y | |||
1056 | CONFIG_XFS_SECURITY=y | 1169 | CONFIG_XFS_SECURITY=y |
1057 | CONFIG_XFS_POSIX_ACL=y | 1170 | CONFIG_XFS_POSIX_ACL=y |
1058 | # CONFIG_XFS_RT is not set | 1171 | # CONFIG_XFS_RT is not set |
1172 | # CONFIG_GFS2_FS is not set | ||
1059 | # CONFIG_OCFS2_FS is not set | 1173 | # CONFIG_OCFS2_FS is not set |
1060 | # CONFIG_MINIX_FS is not set | 1174 | # CONFIG_MINIX_FS is not set |
1061 | # CONFIG_ROMFS_FS is not set | 1175 | # CONFIG_ROMFS_FS is not set |
@@ -1084,8 +1198,10 @@ CONFIG_DNOTIFY=y | |||
1084 | # Pseudo filesystems | 1198 | # Pseudo filesystems |
1085 | # | 1199 | # |
1086 | CONFIG_PROC_FS=y | 1200 | CONFIG_PROC_FS=y |
1201 | CONFIG_PROC_SYSCTL=y | ||
1087 | CONFIG_SYSFS=y | 1202 | CONFIG_SYSFS=y |
1088 | CONFIG_TMPFS=y | 1203 | CONFIG_TMPFS=y |
1204 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1089 | # CONFIG_HUGETLB_PAGE is not set | 1205 | # CONFIG_HUGETLB_PAGE is not set |
1090 | CONFIG_RAMFS=y | 1206 | CONFIG_RAMFS=y |
1091 | # CONFIG_CONFIGFS_FS is not set | 1207 | # CONFIG_CONFIGFS_FS is not set |
@@ -1095,6 +1211,7 @@ CONFIG_RAMFS=y | |||
1095 | # | 1211 | # |
1096 | # CONFIG_ADFS_FS is not set | 1212 | # CONFIG_ADFS_FS is not set |
1097 | # CONFIG_AFFS_FS is not set | 1213 | # CONFIG_AFFS_FS is not set |
1214 | CONFIG_ECRYPT_FS=y | ||
1098 | # CONFIG_HFS_FS is not set | 1215 | # CONFIG_HFS_FS is not set |
1099 | # CONFIG_HFSPLUS_FS is not set | 1216 | # CONFIG_HFSPLUS_FS is not set |
1100 | # CONFIG_BEFS_FS is not set | 1217 | # CONFIG_BEFS_FS is not set |
@@ -1129,7 +1246,7 @@ CONFIG_NFSD=y | |||
1129 | CONFIG_NFSD_V3=y | 1246 | CONFIG_NFSD_V3=y |
1130 | # CONFIG_NFSD_V3_ACL is not set | 1247 | # CONFIG_NFSD_V3_ACL is not set |
1131 | # CONFIG_NFSD_V4 is not set | 1248 | # CONFIG_NFSD_V4 is not set |
1132 | # CONFIG_NFSD_TCP is not set | 1249 | CONFIG_NFSD_TCP=y |
1133 | CONFIG_ROOT_NFS=y | 1250 | CONFIG_ROOT_NFS=y |
1134 | CONFIG_LOCKD=y | 1251 | CONFIG_LOCKD=y |
1135 | CONFIG_LOCKD_V4=y | 1252 | CONFIG_LOCKD_V4=y |
@@ -1172,6 +1289,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1172 | # CONFIG_NLS is not set | 1289 | # CONFIG_NLS is not set |
1173 | 1290 | ||
1174 | # | 1291 | # |
1292 | # Distributed Lock Manager | ||
1293 | # | ||
1294 | # CONFIG_DLM is not set | ||
1295 | |||
1296 | # | ||
1175 | # Profiling support | 1297 | # Profiling support |
1176 | # | 1298 | # |
1177 | # CONFIG_PROFILING is not set | 1299 | # CONFIG_PROFILING is not set |
@@ -1180,8 +1302,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1180 | # Kernel hacking | 1302 | # Kernel hacking |
1181 | # | 1303 | # |
1182 | # CONFIG_PRINTK_TIME is not set | 1304 | # CONFIG_PRINTK_TIME is not set |
1305 | CONFIG_ENABLE_MUST_CHECK=y | ||
1183 | CONFIG_MAGIC_SYSRQ=y | 1306 | CONFIG_MAGIC_SYSRQ=y |
1184 | # CONFIG_UNUSED_SYMBOLS is not set | 1307 | # CONFIG_UNUSED_SYMBOLS is not set |
1308 | # CONFIG_DEBUG_FS is not set | ||
1309 | # CONFIG_HEADERS_CHECK is not set | ||
1185 | CONFIG_DEBUG_KERNEL=y | 1310 | CONFIG_DEBUG_KERNEL=y |
1186 | CONFIG_LOG_BUF_SHIFT=14 | 1311 | CONFIG_LOG_BUF_SHIFT=14 |
1187 | CONFIG_DETECT_SOFTLOCKUP=y | 1312 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1197,10 +1322,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1197 | # CONFIG_DEBUG_KOBJECT is not set | 1322 | # CONFIG_DEBUG_KOBJECT is not set |
1198 | CONFIG_DEBUG_BUGVERBOSE=y | 1323 | CONFIG_DEBUG_BUGVERBOSE=y |
1199 | # CONFIG_DEBUG_INFO is not set | 1324 | # CONFIG_DEBUG_INFO is not set |
1200 | # CONFIG_DEBUG_FS is not set | ||
1201 | # CONFIG_DEBUG_VM is not set | 1325 | # CONFIG_DEBUG_VM is not set |
1326 | # CONFIG_DEBUG_LIST is not set | ||
1202 | CONFIG_FRAME_POINTER=y | 1327 | CONFIG_FRAME_POINTER=y |
1203 | # CONFIG_UNWIND_INFO is not set | ||
1204 | # CONFIG_FORCED_INLINING is not set | 1328 | # CONFIG_FORCED_INLINING is not set |
1205 | # CONFIG_RCU_TORTURE_TEST is not set | 1329 | # CONFIG_RCU_TORTURE_TEST is not set |
1206 | CONFIG_DEBUG_USER=y | 1330 | CONFIG_DEBUG_USER=y |
@@ -1211,13 +1335,48 @@ CONFIG_DEBUG_LL=y | |||
1211 | # | 1335 | # |
1212 | # Security options | 1336 | # Security options |
1213 | # | 1337 | # |
1214 | # CONFIG_KEYS is not set | 1338 | CONFIG_KEYS=y |
1339 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
1215 | # CONFIG_SECURITY is not set | 1340 | # CONFIG_SECURITY is not set |
1216 | 1341 | ||
1217 | # | 1342 | # |
1218 | # Cryptographic options | 1343 | # Cryptographic options |
1219 | # | 1344 | # |
1220 | # CONFIG_CRYPTO is not set | 1345 | CONFIG_CRYPTO=y |
1346 | CONFIG_CRYPTO_ALGAPI=y | ||
1347 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1348 | CONFIG_CRYPTO_HASH=y | ||
1349 | CONFIG_CRYPTO_MANAGER=y | ||
1350 | CONFIG_CRYPTO_HMAC=y | ||
1351 | CONFIG_CRYPTO_XCBC=y | ||
1352 | CONFIG_CRYPTO_NULL=y | ||
1353 | CONFIG_CRYPTO_MD4=y | ||
1354 | CONFIG_CRYPTO_MD5=y | ||
1355 | CONFIG_CRYPTO_SHA1=y | ||
1356 | CONFIG_CRYPTO_SHA256=y | ||
1357 | CONFIG_CRYPTO_SHA512=y | ||
1358 | CONFIG_CRYPTO_WP512=y | ||
1359 | CONFIG_CRYPTO_TGR192=y | ||
1360 | CONFIG_CRYPTO_GF128MUL=y | ||
1361 | CONFIG_CRYPTO_ECB=y | ||
1362 | CONFIG_CRYPTO_CBC=y | ||
1363 | CONFIG_CRYPTO_LRW=y | ||
1364 | CONFIG_CRYPTO_DES=y | ||
1365 | CONFIG_CRYPTO_BLOWFISH=y | ||
1366 | CONFIG_CRYPTO_TWOFISH=y | ||
1367 | CONFIG_CRYPTO_TWOFISH_COMMON=y | ||
1368 | CONFIG_CRYPTO_SERPENT=y | ||
1369 | CONFIG_CRYPTO_AES=y | ||
1370 | CONFIG_CRYPTO_CAST5=y | ||
1371 | CONFIG_CRYPTO_CAST6=y | ||
1372 | CONFIG_CRYPTO_TEA=y | ||
1373 | CONFIG_CRYPTO_ARC4=y | ||
1374 | CONFIG_CRYPTO_KHAZAD=y | ||
1375 | CONFIG_CRYPTO_ANUBIS=y | ||
1376 | CONFIG_CRYPTO_DEFLATE=y | ||
1377 | CONFIG_CRYPTO_MICHAEL_MIC=y | ||
1378 | CONFIG_CRYPTO_CRC32C=y | ||
1379 | # CONFIG_CRYPTO_TEST is not set | ||
1221 | 1380 | ||
1222 | # | 1381 | # |
1223 | # Hardware crypto devices | 1382 | # Hardware crypto devices |
@@ -1226,10 +1385,12 @@ CONFIG_DEBUG_LL=y | |||
1226 | # | 1385 | # |
1227 | # Library routines | 1386 | # Library routines |
1228 | # | 1387 | # |
1388 | CONFIG_BITREVERSE=y | ||
1229 | # CONFIG_CRC_CCITT is not set | 1389 | # CONFIG_CRC_CCITT is not set |
1230 | # CONFIG_CRC16 is not set | 1390 | # CONFIG_CRC16 is not set |
1231 | CONFIG_CRC32=y | 1391 | CONFIG_CRC32=y |
1232 | # CONFIG_LIBCRC32C is not set | 1392 | CONFIG_LIBCRC32C=y |
1233 | CONFIG_ZLIB_INFLATE=y | 1393 | CONFIG_ZLIB_INFLATE=y |
1234 | CONFIG_ZLIB_DEFLATE=y | 1394 | CONFIG_ZLIB_DEFLATE=y |
1235 | CONFIG_PLIST=y | 1395 | CONFIG_PLIST=y |
1396 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/iop33x_defconfig b/arch/arm/configs/iop33x_defconfig index 848e3ace9069..fa271bce8ff7 100644 --- a/arch/arm/configs/iop33x_defconfig +++ b/arch/arm/configs/iop33x_defconfig | |||
@@ -1,15 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc7 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Tue Sep 19 00:30:42 2006 | 4 | # Sat Dec 16 06:05:34 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
9 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | 10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y |
10 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
11 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
12 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
13 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
14 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
15 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -29,18 +32,22 @@ CONFIG_LOCALVERSION="" | |||
29 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
30 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
31 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
32 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
33 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 38 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
35 | # CONFIG_TASKSTATS is not set | 39 | # CONFIG_TASKSTATS is not set |
36 | CONFIG_SYSCTL=y | 40 | # CONFIG_UTS_NS is not set |
37 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
38 | # CONFIG_IKCONFIG is not set | 42 | # CONFIG_IKCONFIG is not set |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
39 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
40 | CONFIG_INITRAMFS_SOURCE="" | 45 | CONFIG_INITRAMFS_SOURCE="" |
41 | CONFIG_UID16=y | ||
42 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 46 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
47 | CONFIG_SYSCTL=y | ||
43 | # CONFIG_EMBEDDED is not set | 48 | # CONFIG_EMBEDDED is not set |
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
44 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
45 | CONFIG_KALLSYMS_ALL=y | 52 | CONFIG_KALLSYMS_ALL=y |
46 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -49,12 +56,12 @@ CONFIG_PRINTK=y | |||
49 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
50 | CONFIG_ELF_CORE=y | 57 | CONFIG_ELF_CORE=y |
51 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
52 | CONFIG_RT_MUTEXES=y | ||
53 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
54 | CONFIG_EPOLL=y | 60 | CONFIG_EPOLL=y |
55 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
56 | CONFIG_SLAB=y | 62 | CONFIG_SLAB=y |
57 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_RT_MUTEXES=y | ||
58 | # CONFIG_TINY_SHMEM is not set | 65 | # CONFIG_TINY_SHMEM is not set |
59 | CONFIG_BASE_SMALL=0 | 66 | CONFIG_BASE_SMALL=0 |
60 | # CONFIG_SLOB is not set | 67 | # CONFIG_SLOB is not set |
@@ -72,7 +79,10 @@ CONFIG_KMOD=y | |||
72 | # | 79 | # |
73 | # Block layer | 80 | # Block layer |
74 | # | 81 | # |
82 | CONFIG_BLOCK=y | ||
83 | # CONFIG_LBD is not set | ||
75 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | # CONFIG_LSF is not set | ||
76 | 86 | ||
77 | # | 87 | # |
78 | # IO Schedulers | 88 | # IO Schedulers |
@@ -106,6 +116,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
106 | # CONFIG_ARCH_IMX is not set | 116 | # CONFIG_ARCH_IMX is not set |
107 | # CONFIG_ARCH_IOP32X is not set | 117 | # CONFIG_ARCH_IOP32X is not set |
108 | CONFIG_ARCH_IOP33X=y | 118 | CONFIG_ARCH_IOP33X=y |
119 | # CONFIG_ARCH_IOP13XX is not set | ||
109 | # CONFIG_ARCH_IXP4XX is not set | 120 | # CONFIG_ARCH_IXP4XX is not set |
110 | # CONFIG_ARCH_IXP2000 is not set | 121 | # CONFIG_ARCH_IXP2000 is not set |
111 | # CONFIG_ARCH_IXP23XX is not set | 122 | # CONFIG_ARCH_IXP23XX is not set |
@@ -139,17 +150,22 @@ CONFIG_CPU_32v5=y | |||
139 | CONFIG_CPU_ABRT_EV5T=y | 150 | CONFIG_CPU_ABRT_EV5T=y |
140 | CONFIG_CPU_CACHE_VIVT=y | 151 | CONFIG_CPU_CACHE_VIVT=y |
141 | CONFIG_CPU_TLB_V4WBI=y | 152 | CONFIG_CPU_TLB_V4WBI=y |
153 | CONFIG_CPU_CP15=y | ||
154 | CONFIG_CPU_CP15_MMU=y | ||
142 | 155 | ||
143 | # | 156 | # |
144 | # Processor Features | 157 | # Processor Features |
145 | # | 158 | # |
146 | # CONFIG_ARM_THUMB is not set | 159 | # CONFIG_ARM_THUMB is not set |
160 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
161 | # CONFIG_IWMMXT is not set | ||
147 | CONFIG_XSCALE_PMU=y | 162 | CONFIG_XSCALE_PMU=y |
148 | 163 | ||
149 | # | 164 | # |
150 | # Bus support | 165 | # Bus support |
151 | # | 166 | # |
152 | CONFIG_PCI=y | 167 | CONFIG_PCI=y |
168 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
153 | # CONFIG_PCI_DEBUG is not set | 169 | # CONFIG_PCI_DEBUG is not set |
154 | 170 | ||
155 | # | 171 | # |
@@ -223,6 +239,7 @@ CONFIG_PACKET_MMAP=y | |||
223 | CONFIG_UNIX=y | 239 | CONFIG_UNIX=y |
224 | CONFIG_XFRM=y | 240 | CONFIG_XFRM=y |
225 | # CONFIG_XFRM_USER is not set | 241 | # CONFIG_XFRM_USER is not set |
242 | # CONFIG_XFRM_SUB_POLICY is not set | ||
226 | # CONFIG_NET_KEY is not set | 243 | # CONFIG_NET_KEY is not set |
227 | CONFIG_INET=y | 244 | CONFIG_INET=y |
228 | CONFIG_IP_MULTICAST=y | 245 | CONFIG_IP_MULTICAST=y |
@@ -244,13 +261,29 @@ CONFIG_IP_PNP_BOOTP=y | |||
244 | # CONFIG_INET_TUNNEL is not set | 261 | # CONFIG_INET_TUNNEL is not set |
245 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 262 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
246 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 263 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
264 | CONFIG_INET_XFRM_MODE_BEET=y | ||
247 | CONFIG_INET_DIAG=y | 265 | CONFIG_INET_DIAG=y |
248 | CONFIG_INET_TCP_DIAG=y | 266 | CONFIG_INET_TCP_DIAG=y |
249 | # CONFIG_TCP_CONG_ADVANCED is not set | 267 | # CONFIG_TCP_CONG_ADVANCED is not set |
250 | CONFIG_TCP_CONG_BIC=y | 268 | CONFIG_TCP_CONG_CUBIC=y |
251 | # CONFIG_IPV6 is not set | 269 | CONFIG_DEFAULT_TCP_CONG="cubic" |
270 | # CONFIG_TCP_MD5SIG is not set | ||
271 | CONFIG_IPV6=y | ||
272 | # CONFIG_IPV6_PRIVACY is not set | ||
273 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
274 | # CONFIG_INET6_AH is not set | ||
275 | # CONFIG_INET6_ESP is not set | ||
276 | # CONFIG_INET6_IPCOMP is not set | ||
277 | # CONFIG_IPV6_MIP6 is not set | ||
252 | # CONFIG_INET6_XFRM_TUNNEL is not set | 278 | # CONFIG_INET6_XFRM_TUNNEL is not set |
253 | # CONFIG_INET6_TUNNEL is not set | 279 | # CONFIG_INET6_TUNNEL is not set |
280 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
281 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
282 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
283 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
284 | # CONFIG_IPV6_SIT is not set | ||
285 | # CONFIG_IPV6_TUNNEL is not set | ||
286 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
254 | # CONFIG_NETWORK_SECMARK is not set | 287 | # CONFIG_NETWORK_SECMARK is not set |
255 | # CONFIG_NETFILTER is not set | 288 | # CONFIG_NETFILTER is not set |
256 | 289 | ||
@@ -277,7 +310,6 @@ CONFIG_TCP_CONG_BIC=y | |||
277 | # CONFIG_ATALK is not set | 310 | # CONFIG_ATALK is not set |
278 | # CONFIG_X25 is not set | 311 | # CONFIG_X25 is not set |
279 | # CONFIG_LAPB is not set | 312 | # CONFIG_LAPB is not set |
280 | # CONFIG_NET_DIVERT is not set | ||
281 | # CONFIG_ECONET is not set | 313 | # CONFIG_ECONET is not set |
282 | # CONFIG_WAN_ROUTER is not set | 314 | # CONFIG_WAN_ROUTER is not set |
283 | 315 | ||
@@ -336,6 +368,7 @@ CONFIG_MTD_BLOCK=y | |||
336 | # CONFIG_NFTL is not set | 368 | # CONFIG_NFTL is not set |
337 | # CONFIG_INFTL is not set | 369 | # CONFIG_INFTL is not set |
338 | # CONFIG_RFD_FTL is not set | 370 | # CONFIG_RFD_FTL is not set |
371 | # CONFIG_SSFDC is not set | ||
339 | 372 | ||
340 | # | 373 | # |
341 | # RAM/ROM/Flash chip drivers | 374 | # RAM/ROM/Flash chip drivers |
@@ -423,7 +456,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1 | |||
423 | # CONFIG_BLK_DEV_UMEM is not set | 456 | # CONFIG_BLK_DEV_UMEM is not set |
424 | # CONFIG_BLK_DEV_COW_COMMON is not set | 457 | # CONFIG_BLK_DEV_COW_COMMON is not set |
425 | # CONFIG_BLK_DEV_LOOP is not set | 458 | # CONFIG_BLK_DEV_LOOP is not set |
426 | # CONFIG_BLK_DEV_NBD is not set | 459 | CONFIG_BLK_DEV_NBD=y |
427 | # CONFIG_BLK_DEV_SX8 is not set | 460 | # CONFIG_BLK_DEV_SX8 is not set |
428 | CONFIG_BLK_DEV_RAM=y | 461 | CONFIG_BLK_DEV_RAM=y |
429 | CONFIG_BLK_DEV_RAM_COUNT=16 | 462 | CONFIG_BLK_DEV_RAM_COUNT=16 |
@@ -443,6 +476,8 @@ CONFIG_BLK_DEV_INITRD=y | |||
443 | # | 476 | # |
444 | # CONFIG_RAID_ATTRS is not set | 477 | # CONFIG_RAID_ATTRS is not set |
445 | CONFIG_SCSI=y | 478 | CONFIG_SCSI=y |
479 | # CONFIG_SCSI_TGT is not set | ||
480 | # CONFIG_SCSI_NETLINK is not set | ||
446 | CONFIG_SCSI_PROC_FS=y | 481 | CONFIG_SCSI_PROC_FS=y |
447 | 482 | ||
448 | # | 483 | # |
@@ -461,14 +496,16 @@ CONFIG_CHR_DEV_SG=y | |||
461 | # CONFIG_SCSI_MULTI_LUN is not set | 496 | # CONFIG_SCSI_MULTI_LUN is not set |
462 | # CONFIG_SCSI_CONSTANTS is not set | 497 | # CONFIG_SCSI_CONSTANTS is not set |
463 | # CONFIG_SCSI_LOGGING is not set | 498 | # CONFIG_SCSI_LOGGING is not set |
499 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
464 | 500 | ||
465 | # | 501 | # |
466 | # SCSI Transport Attributes | 502 | # SCSI Transports |
467 | # | 503 | # |
468 | # CONFIG_SCSI_SPI_ATTRS is not set | 504 | # CONFIG_SCSI_SPI_ATTRS is not set |
469 | # CONFIG_SCSI_FC_ATTRS is not set | 505 | # CONFIG_SCSI_FC_ATTRS is not set |
470 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 506 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
471 | # CONFIG_SCSI_SAS_ATTRS is not set | 507 | # CONFIG_SCSI_SAS_ATTRS is not set |
508 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
472 | 509 | ||
473 | # | 510 | # |
474 | # SCSI low-level drivers | 511 | # SCSI low-level drivers |
@@ -481,26 +518,34 @@ CONFIG_CHR_DEV_SG=y | |||
481 | # CONFIG_SCSI_AIC7XXX is not set | 518 | # CONFIG_SCSI_AIC7XXX is not set |
482 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 519 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
483 | # CONFIG_SCSI_AIC79XX is not set | 520 | # CONFIG_SCSI_AIC79XX is not set |
521 | # CONFIG_SCSI_AIC94XX is not set | ||
484 | # CONFIG_SCSI_DPT_I2O is not set | 522 | # CONFIG_SCSI_DPT_I2O is not set |
523 | # CONFIG_SCSI_ARCMSR is not set | ||
485 | # CONFIG_MEGARAID_NEWGEN is not set | 524 | # CONFIG_MEGARAID_NEWGEN is not set |
486 | # CONFIG_MEGARAID_LEGACY is not set | 525 | # CONFIG_MEGARAID_LEGACY is not set |
487 | # CONFIG_MEGARAID_SAS is not set | 526 | # CONFIG_MEGARAID_SAS is not set |
488 | # CONFIG_SCSI_SATA is not set | ||
489 | # CONFIG_SCSI_HPTIOP is not set | 527 | # CONFIG_SCSI_HPTIOP is not set |
490 | # CONFIG_SCSI_DMX3191D is not set | 528 | # CONFIG_SCSI_DMX3191D is not set |
491 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 529 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
492 | # CONFIG_SCSI_IPS is not set | 530 | # CONFIG_SCSI_IPS is not set |
493 | # CONFIG_SCSI_INITIO is not set | 531 | # CONFIG_SCSI_INITIO is not set |
494 | # CONFIG_SCSI_INIA100 is not set | 532 | # CONFIG_SCSI_INIA100 is not set |
533 | # CONFIG_SCSI_STEX is not set | ||
495 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 534 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
496 | # CONFIG_SCSI_IPR is not set | ||
497 | # CONFIG_SCSI_QLOGIC_1280 is not set | 535 | # CONFIG_SCSI_QLOGIC_1280 is not set |
498 | # CONFIG_SCSI_QLA_FC is not set | 536 | # CONFIG_SCSI_QLA_FC is not set |
537 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
499 | # CONFIG_SCSI_LPFC is not set | 538 | # CONFIG_SCSI_LPFC is not set |
500 | # CONFIG_SCSI_DC395x is not set | 539 | # CONFIG_SCSI_DC395x is not set |
501 | # CONFIG_SCSI_DC390T is not set | 540 | # CONFIG_SCSI_DC390T is not set |
502 | # CONFIG_SCSI_NSP32 is not set | 541 | # CONFIG_SCSI_NSP32 is not set |
503 | # CONFIG_SCSI_DEBUG is not set | 542 | # CONFIG_SCSI_DEBUG is not set |
543 | # CONFIG_SCSI_SRP is not set | ||
544 | |||
545 | # | ||
546 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
547 | # | ||
548 | # CONFIG_ATA is not set | ||
504 | 549 | ||
505 | # | 550 | # |
506 | # Multi-device support (RAID and LVM) | 551 | # Multi-device support (RAID and LVM) |
@@ -515,6 +560,7 @@ CONFIG_MD_RAID1=y | |||
515 | # CONFIG_MD_MULTIPATH is not set | 560 | # CONFIG_MD_MULTIPATH is not set |
516 | # CONFIG_MD_FAULTY is not set | 561 | # CONFIG_MD_FAULTY is not set |
517 | CONFIG_BLK_DEV_DM=y | 562 | CONFIG_BLK_DEV_DM=y |
563 | # CONFIG_DM_DEBUG is not set | ||
518 | # CONFIG_DM_CRYPT is not set | 564 | # CONFIG_DM_CRYPT is not set |
519 | # CONFIG_DM_SNAPSHOT is not set | 565 | # CONFIG_DM_SNAPSHOT is not set |
520 | # CONFIG_DM_MIRROR is not set | 566 | # CONFIG_DM_MIRROR is not set |
@@ -580,6 +626,7 @@ CONFIG_E1000_NAPI=y | |||
580 | # CONFIG_SK98LIN is not set | 626 | # CONFIG_SK98LIN is not set |
581 | # CONFIG_TIGON3 is not set | 627 | # CONFIG_TIGON3 is not set |
582 | # CONFIG_BNX2 is not set | 628 | # CONFIG_BNX2 is not set |
629 | # CONFIG_QLA3XXX is not set | ||
583 | 630 | ||
584 | # | 631 | # |
585 | # Ethernet (10000 Mbit) | 632 | # Ethernet (10000 Mbit) |
@@ -588,6 +635,7 @@ CONFIG_E1000_NAPI=y | |||
588 | # CONFIG_IXGB is not set | 635 | # CONFIG_IXGB is not set |
589 | # CONFIG_S2IO is not set | 636 | # CONFIG_S2IO is not set |
590 | # CONFIG_MYRI10GE is not set | 637 | # CONFIG_MYRI10GE is not set |
638 | # CONFIG_NETXEN_NIC is not set | ||
591 | 639 | ||
592 | # | 640 | # |
593 | # Token Ring devices | 641 | # Token Ring devices |
@@ -622,6 +670,7 @@ CONFIG_E1000_NAPI=y | |||
622 | # Input device support | 670 | # Input device support |
623 | # | 671 | # |
624 | CONFIG_INPUT=y | 672 | CONFIG_INPUT=y |
673 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
625 | 674 | ||
626 | # | 675 | # |
627 | # Userland interfaces | 676 | # Userland interfaces |
@@ -693,10 +742,6 @@ CONFIG_HW_RANDOM=y | |||
693 | # CONFIG_DTLK is not set | 742 | # CONFIG_DTLK is not set |
694 | # CONFIG_R3964 is not set | 743 | # CONFIG_R3964 is not set |
695 | # CONFIG_APPLICOM is not set | 744 | # CONFIG_APPLICOM is not set |
696 | |||
697 | # | ||
698 | # Ftape, the floppy tape device driver | ||
699 | # | ||
700 | # CONFIG_DRM is not set | 745 | # CONFIG_DRM is not set |
701 | # CONFIG_RAW_DRIVER is not set | 746 | # CONFIG_RAW_DRIVER is not set |
702 | 747 | ||
@@ -704,7 +749,6 @@ CONFIG_HW_RANDOM=y | |||
704 | # TPM devices | 749 | # TPM devices |
705 | # | 750 | # |
706 | # CONFIG_TCG_TPM is not set | 751 | # CONFIG_TCG_TPM is not set |
707 | # CONFIG_TELCLOCK is not set | ||
708 | 752 | ||
709 | # | 753 | # |
710 | # I2C support | 754 | # I2C support |
@@ -769,6 +813,7 @@ CONFIG_I2C_IOP3XX=y | |||
769 | # | 813 | # |
770 | # Dallas's 1-wire bus | 814 | # Dallas's 1-wire bus |
771 | # | 815 | # |
816 | # CONFIG_W1 is not set | ||
772 | 817 | ||
773 | # | 818 | # |
774 | # Hardware Monitoring support | 819 | # Hardware Monitoring support |
@@ -802,15 +847,18 @@ CONFIG_HWMON=y | |||
802 | # CONFIG_SENSORS_LM92 is not set | 847 | # CONFIG_SENSORS_LM92 is not set |
803 | # CONFIG_SENSORS_MAX1619 is not set | 848 | # CONFIG_SENSORS_MAX1619 is not set |
804 | # CONFIG_SENSORS_PC87360 is not set | 849 | # CONFIG_SENSORS_PC87360 is not set |
850 | # CONFIG_SENSORS_PC87427 is not set | ||
805 | # CONFIG_SENSORS_SIS5595 is not set | 851 | # CONFIG_SENSORS_SIS5595 is not set |
806 | # CONFIG_SENSORS_SMSC47M1 is not set | 852 | # CONFIG_SENSORS_SMSC47M1 is not set |
807 | # CONFIG_SENSORS_SMSC47M192 is not set | 853 | # CONFIG_SENSORS_SMSC47M192 is not set |
808 | # CONFIG_SENSORS_SMSC47B397 is not set | 854 | # CONFIG_SENSORS_SMSC47B397 is not set |
809 | # CONFIG_SENSORS_VIA686A is not set | 855 | # CONFIG_SENSORS_VIA686A is not set |
856 | # CONFIG_SENSORS_VT1211 is not set | ||
810 | # CONFIG_SENSORS_VT8231 is not set | 857 | # CONFIG_SENSORS_VT8231 is not set |
811 | # CONFIG_SENSORS_W83781D is not set | 858 | # CONFIG_SENSORS_W83781D is not set |
812 | # CONFIG_SENSORS_W83791D is not set | 859 | # CONFIG_SENSORS_W83791D is not set |
813 | # CONFIG_SENSORS_W83792D is not set | 860 | # CONFIG_SENSORS_W83792D is not set |
861 | # CONFIG_SENSORS_W83793 is not set | ||
814 | # CONFIG_SENSORS_W83L785TS is not set | 862 | # CONFIG_SENSORS_W83L785TS is not set |
815 | # CONFIG_SENSORS_W83627HF is not set | 863 | # CONFIG_SENSORS_W83627HF is not set |
816 | # CONFIG_SENSORS_W83627EHF is not set | 864 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -819,6 +867,8 @@ CONFIG_HWMON=y | |||
819 | # | 867 | # |
820 | # Misc devices | 868 | # Misc devices |
821 | # | 869 | # |
870 | # CONFIG_SGI_IOC4 is not set | ||
871 | # CONFIG_TIFM_CORE is not set | ||
822 | 872 | ||
823 | # | 873 | # |
824 | # LED devices | 874 | # LED devices |
@@ -837,7 +887,6 @@ CONFIG_HWMON=y | |||
837 | # Multimedia devices | 887 | # Multimedia devices |
838 | # | 888 | # |
839 | # CONFIG_VIDEO_DEV is not set | 889 | # CONFIG_VIDEO_DEV is not set |
840 | CONFIG_VIDEO_V4L2=y | ||
841 | 890 | ||
842 | # | 891 | # |
843 | # Digital Video Broadcasting Devices | 892 | # Digital Video Broadcasting Devices |
@@ -863,6 +912,11 @@ CONFIG_DUMMY_CONSOLE=y | |||
863 | # CONFIG_SOUND is not set | 912 | # CONFIG_SOUND is not set |
864 | 913 | ||
865 | # | 914 | # |
915 | # HID Devices | ||
916 | # | ||
917 | CONFIG_HID=y | ||
918 | |||
919 | # | ||
866 | # USB support | 920 | # USB support |
867 | # | 921 | # |
868 | CONFIG_USB_ARCH_HAS_HCD=y | 922 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -900,6 +954,7 @@ CONFIG_EXT3_FS=y | |||
900 | CONFIG_EXT3_FS_XATTR=y | 954 | CONFIG_EXT3_FS_XATTR=y |
901 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 955 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
902 | # CONFIG_EXT3_FS_SECURITY is not set | 956 | # CONFIG_EXT3_FS_SECURITY is not set |
957 | # CONFIG_EXT4DEV_FS is not set | ||
903 | CONFIG_JBD=y | 958 | CONFIG_JBD=y |
904 | # CONFIG_JBD_DEBUG is not set | 959 | # CONFIG_JBD_DEBUG is not set |
905 | CONFIG_FS_MBCACHE=y | 960 | CONFIG_FS_MBCACHE=y |
@@ -911,6 +966,7 @@ CONFIG_XFS_FS=y | |||
911 | CONFIG_XFS_SECURITY=y | 966 | CONFIG_XFS_SECURITY=y |
912 | CONFIG_XFS_POSIX_ACL=y | 967 | CONFIG_XFS_POSIX_ACL=y |
913 | # CONFIG_XFS_RT is not set | 968 | # CONFIG_XFS_RT is not set |
969 | # CONFIG_GFS2_FS is not set | ||
914 | # CONFIG_OCFS2_FS is not set | 970 | # CONFIG_OCFS2_FS is not set |
915 | # CONFIG_MINIX_FS is not set | 971 | # CONFIG_MINIX_FS is not set |
916 | # CONFIG_ROMFS_FS is not set | 972 | # CONFIG_ROMFS_FS is not set |
@@ -939,8 +995,10 @@ CONFIG_DNOTIFY=y | |||
939 | # Pseudo filesystems | 995 | # Pseudo filesystems |
940 | # | 996 | # |
941 | CONFIG_PROC_FS=y | 997 | CONFIG_PROC_FS=y |
998 | CONFIG_PROC_SYSCTL=y | ||
942 | CONFIG_SYSFS=y | 999 | CONFIG_SYSFS=y |
943 | CONFIG_TMPFS=y | 1000 | CONFIG_TMPFS=y |
1001 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
944 | # CONFIG_HUGETLB_PAGE is not set | 1002 | # CONFIG_HUGETLB_PAGE is not set |
945 | CONFIG_RAMFS=y | 1003 | CONFIG_RAMFS=y |
946 | # CONFIG_CONFIGFS_FS is not set | 1004 | # CONFIG_CONFIGFS_FS is not set |
@@ -1019,6 +1077,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1019 | # CONFIG_NLS is not set | 1077 | # CONFIG_NLS is not set |
1020 | 1078 | ||
1021 | # | 1079 | # |
1080 | # Distributed Lock Manager | ||
1081 | # | ||
1082 | # CONFIG_DLM is not set | ||
1083 | |||
1084 | # | ||
1022 | # Profiling support | 1085 | # Profiling support |
1023 | # | 1086 | # |
1024 | # CONFIG_PROFILING is not set | 1087 | # CONFIG_PROFILING is not set |
@@ -1027,8 +1090,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1027 | # Kernel hacking | 1090 | # Kernel hacking |
1028 | # | 1091 | # |
1029 | # CONFIG_PRINTK_TIME is not set | 1092 | # CONFIG_PRINTK_TIME is not set |
1093 | CONFIG_ENABLE_MUST_CHECK=y | ||
1030 | CONFIG_MAGIC_SYSRQ=y | 1094 | CONFIG_MAGIC_SYSRQ=y |
1031 | # CONFIG_UNUSED_SYMBOLS is not set | 1095 | # CONFIG_UNUSED_SYMBOLS is not set |
1096 | # CONFIG_DEBUG_FS is not set | ||
1097 | # CONFIG_HEADERS_CHECK is not set | ||
1032 | CONFIG_DEBUG_KERNEL=y | 1098 | CONFIG_DEBUG_KERNEL=y |
1033 | CONFIG_LOG_BUF_SHIFT=14 | 1099 | CONFIG_LOG_BUF_SHIFT=14 |
1034 | CONFIG_DETECT_SOFTLOCKUP=y | 1100 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1044,10 +1110,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1044 | # CONFIG_DEBUG_KOBJECT is not set | 1110 | # CONFIG_DEBUG_KOBJECT is not set |
1045 | CONFIG_DEBUG_BUGVERBOSE=y | 1111 | CONFIG_DEBUG_BUGVERBOSE=y |
1046 | # CONFIG_DEBUG_INFO is not set | 1112 | # CONFIG_DEBUG_INFO is not set |
1047 | # CONFIG_DEBUG_FS is not set | ||
1048 | # CONFIG_DEBUG_VM is not set | 1113 | # CONFIG_DEBUG_VM is not set |
1114 | # CONFIG_DEBUG_LIST is not set | ||
1049 | CONFIG_FRAME_POINTER=y | 1115 | CONFIG_FRAME_POINTER=y |
1050 | # CONFIG_UNWIND_INFO is not set | ||
1051 | # CONFIG_FORCED_INLINING is not set | 1116 | # CONFIG_FORCED_INLINING is not set |
1052 | # CONFIG_RCU_TORTURE_TEST is not set | 1117 | # CONFIG_RCU_TORTURE_TEST is not set |
1053 | CONFIG_DEBUG_USER=y | 1118 | CONFIG_DEBUG_USER=y |
@@ -1067,10 +1132,6 @@ CONFIG_DEBUG_LL=y | |||
1067 | # CONFIG_CRYPTO is not set | 1132 | # CONFIG_CRYPTO is not set |
1068 | 1133 | ||
1069 | # | 1134 | # |
1070 | # Hardware crypto devices | ||
1071 | # | ||
1072 | |||
1073 | # | ||
1074 | # Library routines | 1135 | # Library routines |
1075 | # | 1136 | # |
1076 | # CONFIG_CRC_CCITT is not set | 1137 | # CONFIG_CRC_CCITT is not set |
@@ -1078,3 +1139,4 @@ CONFIG_DEBUG_LL=y | |||
1078 | # CONFIG_CRC32 is not set | 1139 | # CONFIG_CRC32 is not set |
1079 | # CONFIG_LIBCRC32C is not set | 1140 | # CONFIG_LIBCRC32C is not set |
1080 | CONFIG_PLIST=y | 1141 | CONFIG_PLIST=y |
1142 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/ixp2000_defconfig b/arch/arm/configs/ixp2000_defconfig index bbd2dcf91e52..f8f9793b526f 100644 --- a/arch/arm/configs/ixp2000_defconfig +++ b/arch/arm/configs/ixp2000_defconfig | |||
@@ -1,14 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc1 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Sun Jul 9 15:28:50 2006 | 4 | # Sat Dec 16 06:05:39 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
9 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
11 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -28,17 +32,22 @@ CONFIG_LOCALVERSION="" | |||
28 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
29 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
30 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
31 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
32 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
33 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 38 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
34 | CONFIG_SYSCTL=y | 39 | # CONFIG_TASKSTATS is not set |
40 | # CONFIG_UTS_NS is not set | ||
35 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
36 | # CONFIG_IKCONFIG is not set | 42 | # CONFIG_IKCONFIG is not set |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
38 | CONFIG_INITRAMFS_SOURCE="" | 45 | CONFIG_INITRAMFS_SOURCE="" |
39 | CONFIG_UID16=y | ||
40 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 46 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
47 | CONFIG_SYSCTL=y | ||
41 | CONFIG_EMBEDDED=y | 48 | CONFIG_EMBEDDED=y |
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
42 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
43 | # CONFIG_KALLSYMS_ALL is not set | 52 | # CONFIG_KALLSYMS_ALL is not set |
44 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -47,12 +56,12 @@ CONFIG_PRINTK=y | |||
47 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
48 | CONFIG_ELF_CORE=y | 57 | CONFIG_ELF_CORE=y |
49 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
50 | CONFIG_RT_MUTEXES=y | ||
51 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
52 | CONFIG_EPOLL=y | 60 | CONFIG_EPOLL=y |
53 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
54 | CONFIG_SLAB=y | 62 | CONFIG_SLAB=y |
55 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_RT_MUTEXES=y | ||
56 | # CONFIG_TINY_SHMEM is not set | 65 | # CONFIG_TINY_SHMEM is not set |
57 | CONFIG_BASE_SMALL=0 | 66 | CONFIG_BASE_SMALL=0 |
58 | # CONFIG_SLOB is not set | 67 | # CONFIG_SLOB is not set |
@@ -70,7 +79,10 @@ CONFIG_KMOD=y | |||
70 | # | 79 | # |
71 | # Block layer | 80 | # Block layer |
72 | # | 81 | # |
82 | CONFIG_BLOCK=y | ||
83 | # CONFIG_LBD is not set | ||
73 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | # CONFIG_LSF is not set | ||
74 | 86 | ||
75 | # | 87 | # |
76 | # IO Schedulers | 88 | # IO Schedulers |
@@ -102,7 +114,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
102 | # CONFIG_ARCH_NETX is not set | 114 | # CONFIG_ARCH_NETX is not set |
103 | # CONFIG_ARCH_H720X is not set | 115 | # CONFIG_ARCH_H720X is not set |
104 | # CONFIG_ARCH_IMX is not set | 116 | # CONFIG_ARCH_IMX is not set |
105 | # CONFIG_ARCH_IOP3XX is not set | 117 | # CONFIG_ARCH_IOP32X is not set |
118 | # CONFIG_ARCH_IOP33X is not set | ||
119 | # CONFIG_ARCH_IOP13XX is not set | ||
106 | # CONFIG_ARCH_IXP4XX is not set | 120 | # CONFIG_ARCH_IXP4XX is not set |
107 | CONFIG_ARCH_IXP2000=y | 121 | CONFIG_ARCH_IXP2000=y |
108 | # CONFIG_ARCH_IXP23XX is not set | 122 | # CONFIG_ARCH_IXP23XX is not set |
@@ -143,24 +157,28 @@ CONFIG_CPU_32v5=y | |||
143 | CONFIG_CPU_ABRT_EV5T=y | 157 | CONFIG_CPU_ABRT_EV5T=y |
144 | CONFIG_CPU_CACHE_VIVT=y | 158 | CONFIG_CPU_CACHE_VIVT=y |
145 | CONFIG_CPU_TLB_V4WBI=y | 159 | CONFIG_CPU_TLB_V4WBI=y |
160 | CONFIG_CPU_CP15=y | ||
161 | CONFIG_CPU_CP15_MMU=y | ||
146 | 162 | ||
147 | # | 163 | # |
148 | # Processor Features | 164 | # Processor Features |
149 | # | 165 | # |
150 | # CONFIG_ARM_THUMB is not set | 166 | # CONFIG_ARM_THUMB is not set |
151 | CONFIG_CPU_BIG_ENDIAN=y | 167 | CONFIG_CPU_BIG_ENDIAN=y |
168 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
169 | # CONFIG_IWMMXT is not set | ||
152 | CONFIG_XSCALE_PMU=y | 170 | CONFIG_XSCALE_PMU=y |
153 | 171 | ||
154 | # | 172 | # |
155 | # Bus support | 173 | # Bus support |
156 | # | 174 | # |
157 | CONFIG_PCI=y | 175 | CONFIG_PCI=y |
176 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
158 | # CONFIG_PCI_DEBUG is not set | 177 | # CONFIG_PCI_DEBUG is not set |
159 | 178 | ||
160 | # | 179 | # |
161 | # PCCARD (PCMCIA/CardBus) support | 180 | # PCCARD (PCMCIA/CardBus) support |
162 | # | 181 | # |
163 | # CONFIG_PCCARD is not set | ||
164 | 182 | ||
165 | # | 183 | # |
166 | # Kernel Features | 184 | # Kernel Features |
@@ -228,6 +246,7 @@ CONFIG_PACKET_MMAP=y | |||
228 | CONFIG_UNIX=y | 246 | CONFIG_UNIX=y |
229 | CONFIG_XFRM=y | 247 | CONFIG_XFRM=y |
230 | # CONFIG_XFRM_USER is not set | 248 | # CONFIG_XFRM_USER is not set |
249 | # CONFIG_XFRM_SUB_POLICY is not set | ||
231 | # CONFIG_NET_KEY is not set | 250 | # CONFIG_NET_KEY is not set |
232 | CONFIG_INET=y | 251 | CONFIG_INET=y |
233 | # CONFIG_IP_MULTICAST is not set | 252 | # CONFIG_IP_MULTICAST is not set |
@@ -248,13 +267,29 @@ CONFIG_SYN_COOKIES=y | |||
248 | # CONFIG_INET_TUNNEL is not set | 267 | # CONFIG_INET_TUNNEL is not set |
249 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 268 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
250 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 269 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
270 | CONFIG_INET_XFRM_MODE_BEET=y | ||
251 | CONFIG_INET_DIAG=y | 271 | CONFIG_INET_DIAG=y |
252 | CONFIG_INET_TCP_DIAG=y | 272 | CONFIG_INET_TCP_DIAG=y |
253 | # CONFIG_TCP_CONG_ADVANCED is not set | 273 | # CONFIG_TCP_CONG_ADVANCED is not set |
254 | CONFIG_TCP_CONG_BIC=y | 274 | CONFIG_TCP_CONG_CUBIC=y |
255 | # CONFIG_IPV6 is not set | 275 | CONFIG_DEFAULT_TCP_CONG="cubic" |
276 | # CONFIG_TCP_MD5SIG is not set | ||
277 | CONFIG_IPV6=y | ||
278 | # CONFIG_IPV6_PRIVACY is not set | ||
279 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
280 | # CONFIG_INET6_AH is not set | ||
281 | # CONFIG_INET6_ESP is not set | ||
282 | # CONFIG_INET6_IPCOMP is not set | ||
283 | # CONFIG_IPV6_MIP6 is not set | ||
256 | # CONFIG_INET6_XFRM_TUNNEL is not set | 284 | # CONFIG_INET6_XFRM_TUNNEL is not set |
257 | # CONFIG_INET6_TUNNEL is not set | 285 | # CONFIG_INET6_TUNNEL is not set |
286 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
287 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
288 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
289 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
290 | # CONFIG_IPV6_SIT is not set | ||
291 | # CONFIG_IPV6_TUNNEL is not set | ||
292 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
258 | # CONFIG_NETWORK_SECMARK is not set | 293 | # CONFIG_NETWORK_SECMARK is not set |
259 | # CONFIG_NETFILTER is not set | 294 | # CONFIG_NETFILTER is not set |
260 | 295 | ||
@@ -281,7 +316,6 @@ CONFIG_TCP_CONG_BIC=y | |||
281 | # CONFIG_ATALK is not set | 316 | # CONFIG_ATALK is not set |
282 | # CONFIG_X25 is not set | 317 | # CONFIG_X25 is not set |
283 | # CONFIG_LAPB is not set | 318 | # CONFIG_LAPB is not set |
284 | # CONFIG_NET_DIVERT is not set | ||
285 | # CONFIG_ECONET is not set | 319 | # CONFIG_ECONET is not set |
286 | # CONFIG_WAN_ROUTER is not set | 320 | # CONFIG_WAN_ROUTER is not set |
287 | 321 | ||
@@ -308,7 +342,6 @@ CONFIG_TCP_CONG_BIC=y | |||
308 | # | 342 | # |
309 | CONFIG_STANDALONE=y | 343 | CONFIG_STANDALONE=y |
310 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set | 344 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set |
311 | # CONFIG_FW_LOADER is not set | ||
312 | # CONFIG_DEBUG_DRIVER is not set | 345 | # CONFIG_DEBUG_DRIVER is not set |
313 | # CONFIG_SYS_HYPERVISOR is not set | 346 | # CONFIG_SYS_HYPERVISOR is not set |
314 | 347 | ||
@@ -340,6 +373,7 @@ CONFIG_MTD_BLOCK=y | |||
340 | # CONFIG_NFTL is not set | 373 | # CONFIG_NFTL is not set |
341 | # CONFIG_INFTL is not set | 374 | # CONFIG_INFTL is not set |
342 | # CONFIG_RFD_FTL is not set | 375 | # CONFIG_RFD_FTL is not set |
376 | # CONFIG_SSFDC is not set | ||
343 | 377 | ||
344 | # | 378 | # |
345 | # RAM/ROM/Flash chip drivers | 379 | # RAM/ROM/Flash chip drivers |
@@ -422,11 +456,12 @@ CONFIG_MTD_IXP2000=y | |||
422 | # CONFIG_BLK_DEV_COW_COMMON is not set | 456 | # CONFIG_BLK_DEV_COW_COMMON is not set |
423 | CONFIG_BLK_DEV_LOOP=y | 457 | CONFIG_BLK_DEV_LOOP=y |
424 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 458 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
425 | # CONFIG_BLK_DEV_NBD is not set | 459 | CONFIG_BLK_DEV_NBD=y |
426 | # CONFIG_BLK_DEV_SX8 is not set | 460 | # CONFIG_BLK_DEV_SX8 is not set |
427 | CONFIG_BLK_DEV_RAM=y | 461 | CONFIG_BLK_DEV_RAM=y |
428 | CONFIG_BLK_DEV_RAM_COUNT=16 | 462 | CONFIG_BLK_DEV_RAM_COUNT=16 |
429 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 463 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
464 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
430 | CONFIG_BLK_DEV_INITRD=y | 465 | CONFIG_BLK_DEV_INITRD=y |
431 | # CONFIG_CDROM_PKTCDVD is not set | 466 | # CONFIG_CDROM_PKTCDVD is not set |
432 | # CONFIG_ATA_OVER_ETH is not set | 467 | # CONFIG_ATA_OVER_ETH is not set |
@@ -436,6 +471,12 @@ CONFIG_BLK_DEV_INITRD=y | |||
436 | # | 471 | # |
437 | # CONFIG_RAID_ATTRS is not set | 472 | # CONFIG_RAID_ATTRS is not set |
438 | # CONFIG_SCSI is not set | 473 | # CONFIG_SCSI is not set |
474 | # CONFIG_SCSI_NETLINK is not set | ||
475 | |||
476 | # | ||
477 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
478 | # | ||
479 | # CONFIG_ATA is not set | ||
439 | 480 | ||
440 | # | 481 | # |
441 | # Multi-device support (RAID and LVM) | 482 | # Multi-device support (RAID and LVM) |
@@ -501,8 +542,8 @@ CONFIG_NET_PCI=y | |||
501 | # CONFIG_FORCEDETH is not set | 542 | # CONFIG_FORCEDETH is not set |
502 | CONFIG_CS89x0=y | 543 | CONFIG_CS89x0=y |
503 | # CONFIG_DGRS is not set | 544 | # CONFIG_DGRS is not set |
504 | CONFIG_EEPRO100=y | 545 | # CONFIG_EEPRO100 is not set |
505 | # CONFIG_E100 is not set | 546 | CONFIG_E100=y |
506 | # CONFIG_FEALNX is not set | 547 | # CONFIG_FEALNX is not set |
507 | # CONFIG_NATSEMI is not set | 548 | # CONFIG_NATSEMI is not set |
508 | # CONFIG_NE2K_PCI is not set | 549 | # CONFIG_NE2K_PCI is not set |
@@ -532,6 +573,7 @@ CONFIG_ENP2611_MSF_NET=y | |||
532 | # CONFIG_VIA_VELOCITY is not set | 573 | # CONFIG_VIA_VELOCITY is not set |
533 | # CONFIG_TIGON3 is not set | 574 | # CONFIG_TIGON3 is not set |
534 | # CONFIG_BNX2 is not set | 575 | # CONFIG_BNX2 is not set |
576 | # CONFIG_QLA3XXX is not set | ||
535 | 577 | ||
536 | # | 578 | # |
537 | # Ethernet (10000 Mbit) | 579 | # Ethernet (10000 Mbit) |
@@ -540,6 +582,7 @@ CONFIG_ENP2611_MSF_NET=y | |||
540 | # CONFIG_IXGB is not set | 582 | # CONFIG_IXGB is not set |
541 | # CONFIG_S2IO is not set | 583 | # CONFIG_S2IO is not set |
542 | # CONFIG_MYRI10GE is not set | 584 | # CONFIG_MYRI10GE is not set |
585 | # CONFIG_NETXEN_NIC is not set | ||
543 | 586 | ||
544 | # | 587 | # |
545 | # Token Ring devices | 588 | # Token Ring devices |
@@ -555,7 +598,6 @@ CONFIG_ENP2611_MSF_NET=y | |||
555 | # Wan interfaces | 598 | # Wan interfaces |
556 | # | 599 | # |
557 | CONFIG_WAN=y | 600 | CONFIG_WAN=y |
558 | # CONFIG_DSCC4 is not set | ||
559 | # CONFIG_LANMEDIA is not set | 601 | # CONFIG_LANMEDIA is not set |
560 | CONFIG_HDLC=y | 602 | CONFIG_HDLC=y |
561 | CONFIG_HDLC_RAW=y | 603 | CONFIG_HDLC_RAW=y |
@@ -571,6 +613,7 @@ CONFIG_HDLC_PPP=y | |||
571 | # CONFIG_WANXL is not set | 613 | # CONFIG_WANXL is not set |
572 | # CONFIG_PC300 is not set | 614 | # CONFIG_PC300 is not set |
573 | # CONFIG_FARSYNC is not set | 615 | # CONFIG_FARSYNC is not set |
616 | # CONFIG_DSCC4 is not set | ||
574 | CONFIG_DLCI=y | 617 | CONFIG_DLCI=y |
575 | CONFIG_DLCI_COUNT=24 | 618 | CONFIG_DLCI_COUNT=24 |
576 | CONFIG_DLCI_MAX=8 | 619 | CONFIG_DLCI_MAX=8 |
@@ -592,6 +635,7 @@ CONFIG_DLCI_MAX=8 | |||
592 | # Input device support | 635 | # Input device support |
593 | # | 636 | # |
594 | CONFIG_INPUT=y | 637 | CONFIG_INPUT=y |
638 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
595 | 639 | ||
596 | # | 640 | # |
597 | # Userland interfaces | 641 | # Userland interfaces |
@@ -673,10 +717,6 @@ CONFIG_IXP2000_WATCHDOG=y | |||
673 | # CONFIG_DTLK is not set | 717 | # CONFIG_DTLK is not set |
674 | # CONFIG_R3964 is not set | 718 | # CONFIG_R3964 is not set |
675 | # CONFIG_APPLICOM is not set | 719 | # CONFIG_APPLICOM is not set |
676 | |||
677 | # | ||
678 | # Ftape, the floppy tape device driver | ||
679 | # | ||
680 | # CONFIG_DRM is not set | 720 | # CONFIG_DRM is not set |
681 | # CONFIG_RAW_DRIVER is not set | 721 | # CONFIG_RAW_DRIVER is not set |
682 | 722 | ||
@@ -684,7 +724,6 @@ CONFIG_IXP2000_WATCHDOG=y | |||
684 | # TPM devices | 724 | # TPM devices |
685 | # | 725 | # |
686 | # CONFIG_TCG_TPM is not set | 726 | # CONFIG_TCG_TPM is not set |
687 | # CONFIG_TELCLOCK is not set | ||
688 | 727 | ||
689 | # | 728 | # |
690 | # I2C support | 729 | # I2C support |
@@ -749,6 +788,7 @@ CONFIG_SENSORS_EEPROM=y | |||
749 | # | 788 | # |
750 | # Dallas's 1-wire bus | 789 | # Dallas's 1-wire bus |
751 | # | 790 | # |
791 | # CONFIG_W1 is not set | ||
752 | 792 | ||
753 | # | 793 | # |
754 | # Hardware Monitoring support | 794 | # Hardware Monitoring support |
@@ -782,15 +822,18 @@ CONFIG_HWMON=y | |||
782 | # CONFIG_SENSORS_LM92 is not set | 822 | # CONFIG_SENSORS_LM92 is not set |
783 | # CONFIG_SENSORS_MAX1619 is not set | 823 | # CONFIG_SENSORS_MAX1619 is not set |
784 | # CONFIG_SENSORS_PC87360 is not set | 824 | # CONFIG_SENSORS_PC87360 is not set |
825 | # CONFIG_SENSORS_PC87427 is not set | ||
785 | # CONFIG_SENSORS_SIS5595 is not set | 826 | # CONFIG_SENSORS_SIS5595 is not set |
786 | # CONFIG_SENSORS_SMSC47M1 is not set | 827 | # CONFIG_SENSORS_SMSC47M1 is not set |
787 | # CONFIG_SENSORS_SMSC47M192 is not set | 828 | # CONFIG_SENSORS_SMSC47M192 is not set |
788 | # CONFIG_SENSORS_SMSC47B397 is not set | 829 | # CONFIG_SENSORS_SMSC47B397 is not set |
789 | # CONFIG_SENSORS_VIA686A is not set | 830 | # CONFIG_SENSORS_VIA686A is not set |
831 | # CONFIG_SENSORS_VT1211 is not set | ||
790 | # CONFIG_SENSORS_VT8231 is not set | 832 | # CONFIG_SENSORS_VT8231 is not set |
791 | # CONFIG_SENSORS_W83781D is not set | 833 | # CONFIG_SENSORS_W83781D is not set |
792 | # CONFIG_SENSORS_W83791D is not set | 834 | # CONFIG_SENSORS_W83791D is not set |
793 | # CONFIG_SENSORS_W83792D is not set | 835 | # CONFIG_SENSORS_W83792D is not set |
836 | # CONFIG_SENSORS_W83793 is not set | ||
794 | # CONFIG_SENSORS_W83L785TS is not set | 837 | # CONFIG_SENSORS_W83L785TS is not set |
795 | # CONFIG_SENSORS_W83627HF is not set | 838 | # CONFIG_SENSORS_W83627HF is not set |
796 | # CONFIG_SENSORS_W83627EHF is not set | 839 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -799,6 +842,8 @@ CONFIG_HWMON=y | |||
799 | # | 842 | # |
800 | # Misc devices | 843 | # Misc devices |
801 | # | 844 | # |
845 | # CONFIG_SGI_IOC4 is not set | ||
846 | # CONFIG_TIFM_CORE is not set | ||
802 | 847 | ||
803 | # | 848 | # |
804 | # LED devices | 849 | # LED devices |
@@ -817,7 +862,6 @@ CONFIG_HWMON=y | |||
817 | # Multimedia devices | 862 | # Multimedia devices |
818 | # | 863 | # |
819 | # CONFIG_VIDEO_DEV is not set | 864 | # CONFIG_VIDEO_DEV is not set |
820 | CONFIG_VIDEO_V4L2=y | ||
821 | 865 | ||
822 | # | 866 | # |
823 | # Digital Video Broadcasting Devices | 867 | # Digital Video Broadcasting Devices |
@@ -829,6 +873,7 @@ CONFIG_VIDEO_V4L2=y | |||
829 | # | 873 | # |
830 | # CONFIG_FIRMWARE_EDID is not set | 874 | # CONFIG_FIRMWARE_EDID is not set |
831 | # CONFIG_FB is not set | 875 | # CONFIG_FB is not set |
876 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
832 | 877 | ||
833 | # | 878 | # |
834 | # Sound | 879 | # Sound |
@@ -836,6 +881,11 @@ CONFIG_VIDEO_V4L2=y | |||
836 | # CONFIG_SOUND is not set | 881 | # CONFIG_SOUND is not set |
837 | 882 | ||
838 | # | 883 | # |
884 | # HID Devices | ||
885 | # | ||
886 | CONFIG_HID=y | ||
887 | |||
888 | # | ||
839 | # USB support | 889 | # USB support |
840 | # | 890 | # |
841 | CONFIG_USB_ARCH_HAS_HCD=y | 891 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -875,6 +925,7 @@ CONFIG_EXT3_FS=y | |||
875 | CONFIG_EXT3_FS_XATTR=y | 925 | CONFIG_EXT3_FS_XATTR=y |
876 | CONFIG_EXT3_FS_POSIX_ACL=y | 926 | CONFIG_EXT3_FS_POSIX_ACL=y |
877 | # CONFIG_EXT3_FS_SECURITY is not set | 927 | # CONFIG_EXT3_FS_SECURITY is not set |
928 | # CONFIG_EXT4DEV_FS is not set | ||
878 | CONFIG_JBD=y | 929 | CONFIG_JBD=y |
879 | # CONFIG_JBD_DEBUG is not set | 930 | # CONFIG_JBD_DEBUG is not set |
880 | CONFIG_FS_MBCACHE=y | 931 | CONFIG_FS_MBCACHE=y |
@@ -882,6 +933,7 @@ CONFIG_FS_MBCACHE=y | |||
882 | # CONFIG_JFS_FS is not set | 933 | # CONFIG_JFS_FS is not set |
883 | CONFIG_FS_POSIX_ACL=y | 934 | CONFIG_FS_POSIX_ACL=y |
884 | # CONFIG_XFS_FS is not set | 935 | # CONFIG_XFS_FS is not set |
936 | # CONFIG_GFS2_FS is not set | ||
885 | # CONFIG_OCFS2_FS is not set | 937 | # CONFIG_OCFS2_FS is not set |
886 | # CONFIG_MINIX_FS is not set | 938 | # CONFIG_MINIX_FS is not set |
887 | # CONFIG_ROMFS_FS is not set | 939 | # CONFIG_ROMFS_FS is not set |
@@ -910,8 +962,10 @@ CONFIG_DNOTIFY=y | |||
910 | # Pseudo filesystems | 962 | # Pseudo filesystems |
911 | # | 963 | # |
912 | CONFIG_PROC_FS=y | 964 | CONFIG_PROC_FS=y |
965 | CONFIG_PROC_SYSCTL=y | ||
913 | CONFIG_SYSFS=y | 966 | CONFIG_SYSFS=y |
914 | CONFIG_TMPFS=y | 967 | CONFIG_TMPFS=y |
968 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
915 | # CONFIG_HUGETLB_PAGE is not set | 969 | # CONFIG_HUGETLB_PAGE is not set |
916 | CONFIG_RAMFS=y | 970 | CONFIG_RAMFS=y |
917 | # CONFIG_CONFIGFS_FS is not set | 971 | # CONFIG_CONFIGFS_FS is not set |
@@ -961,7 +1015,6 @@ CONFIG_SUNRPC=y | |||
961 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1015 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
962 | # CONFIG_SMB_FS is not set | 1016 | # CONFIG_SMB_FS is not set |
963 | # CONFIG_CIFS is not set | 1017 | # CONFIG_CIFS is not set |
964 | # CONFIG_CIFS_DEBUG2 is not set | ||
965 | # CONFIG_NCP_FS is not set | 1018 | # CONFIG_NCP_FS is not set |
966 | # CONFIG_CODA_FS is not set | 1019 | # CONFIG_CODA_FS is not set |
967 | # CONFIG_AFS_FS is not set | 1020 | # CONFIG_AFS_FS is not set |
@@ -994,6 +1047,11 @@ CONFIG_MSDOS_PARTITION=y | |||
994 | # CONFIG_NLS is not set | 1047 | # CONFIG_NLS is not set |
995 | 1048 | ||
996 | # | 1049 | # |
1050 | # Distributed Lock Manager | ||
1051 | # | ||
1052 | # CONFIG_DLM is not set | ||
1053 | |||
1054 | # | ||
997 | # Profiling support | 1055 | # Profiling support |
998 | # | 1056 | # |
999 | # CONFIG_PROFILING is not set | 1057 | # CONFIG_PROFILING is not set |
@@ -1002,8 +1060,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1002 | # Kernel hacking | 1060 | # Kernel hacking |
1003 | # | 1061 | # |
1004 | # CONFIG_PRINTK_TIME is not set | 1062 | # CONFIG_PRINTK_TIME is not set |
1063 | CONFIG_ENABLE_MUST_CHECK=y | ||
1005 | CONFIG_MAGIC_SYSRQ=y | 1064 | CONFIG_MAGIC_SYSRQ=y |
1006 | # CONFIG_UNUSED_SYMBOLS is not set | 1065 | # CONFIG_UNUSED_SYMBOLS is not set |
1066 | # CONFIG_DEBUG_FS is not set | ||
1067 | # CONFIG_HEADERS_CHECK is not set | ||
1007 | CONFIG_DEBUG_KERNEL=y | 1068 | CONFIG_DEBUG_KERNEL=y |
1008 | CONFIG_LOG_BUF_SHIFT=14 | 1069 | CONFIG_LOG_BUF_SHIFT=14 |
1009 | CONFIG_DETECT_SOFTLOCKUP=y | 1070 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1019,10 +1080,9 @@ CONFIG_DEBUG_MUTEXES=y | |||
1019 | # CONFIG_DEBUG_KOBJECT is not set | 1080 | # CONFIG_DEBUG_KOBJECT is not set |
1020 | CONFIG_DEBUG_BUGVERBOSE=y | 1081 | CONFIG_DEBUG_BUGVERBOSE=y |
1021 | # CONFIG_DEBUG_INFO is not set | 1082 | # CONFIG_DEBUG_INFO is not set |
1022 | # CONFIG_DEBUG_FS is not set | ||
1023 | # CONFIG_DEBUG_VM is not set | 1083 | # CONFIG_DEBUG_VM is not set |
1084 | # CONFIG_DEBUG_LIST is not set | ||
1024 | CONFIG_FRAME_POINTER=y | 1085 | CONFIG_FRAME_POINTER=y |
1025 | # CONFIG_UNWIND_INFO is not set | ||
1026 | CONFIG_FORCED_INLINING=y | 1086 | CONFIG_FORCED_INLINING=y |
1027 | # CONFIG_RCU_TORTURE_TEST is not set | 1087 | # CONFIG_RCU_TORTURE_TEST is not set |
1028 | CONFIG_DEBUG_USER=y | 1088 | CONFIG_DEBUG_USER=y |
@@ -1042,12 +1102,9 @@ CONFIG_DEBUG_LL=y | |||
1042 | # CONFIG_CRYPTO is not set | 1102 | # CONFIG_CRYPTO is not set |
1043 | 1103 | ||
1044 | # | 1104 | # |
1045 | # Hardware crypto devices | ||
1046 | # | ||
1047 | |||
1048 | # | ||
1049 | # Library routines | 1105 | # Library routines |
1050 | # | 1106 | # |
1107 | CONFIG_BITREVERSE=y | ||
1051 | # CONFIG_CRC_CCITT is not set | 1108 | # CONFIG_CRC_CCITT is not set |
1052 | # CONFIG_CRC16 is not set | 1109 | # CONFIG_CRC16 is not set |
1053 | CONFIG_CRC32=y | 1110 | CONFIG_CRC32=y |
@@ -1055,3 +1112,4 @@ CONFIG_CRC32=y | |||
1055 | CONFIG_ZLIB_INFLATE=y | 1112 | CONFIG_ZLIB_INFLATE=y |
1056 | CONFIG_ZLIB_DEFLATE=y | 1113 | CONFIG_ZLIB_DEFLATE=y |
1057 | CONFIG_PLIST=y | 1114 | CONFIG_PLIST=y |
1115 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/ixp23xx_defconfig b/arch/arm/configs/ixp23xx_defconfig index 06deefaec1d2..27cf022dd807 100644 --- a/arch/arm/configs/ixp23xx_defconfig +++ b/arch/arm/configs/ixp23xx_defconfig | |||
@@ -1,14 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc1 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Sun Jul 9 14:13:35 2006 | 4 | # Sat Dec 16 06:05:45 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
9 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
11 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -28,17 +32,22 @@ CONFIG_LOCALVERSION="" | |||
28 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
29 | CONFIG_SWAP=y | 33 | CONFIG_SWAP=y |
30 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
31 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
32 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
33 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | 38 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set |
34 | CONFIG_SYSCTL=y | 39 | # CONFIG_TASKSTATS is not set |
40 | # CONFIG_UTS_NS is not set | ||
35 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
36 | # CONFIG_IKCONFIG is not set | 42 | # CONFIG_IKCONFIG is not set |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
38 | CONFIG_INITRAMFS_SOURCE="" | 45 | CONFIG_INITRAMFS_SOURCE="" |
39 | CONFIG_UID16=y | ||
40 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 46 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
47 | CONFIG_SYSCTL=y | ||
41 | CONFIG_EMBEDDED=y | 48 | CONFIG_EMBEDDED=y |
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
42 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
43 | # CONFIG_KALLSYMS_ALL is not set | 52 | # CONFIG_KALLSYMS_ALL is not set |
44 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -47,12 +56,12 @@ CONFIG_PRINTK=y | |||
47 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
48 | CONFIG_ELF_CORE=y | 57 | CONFIG_ELF_CORE=y |
49 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
50 | CONFIG_RT_MUTEXES=y | ||
51 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
52 | CONFIG_EPOLL=y | 60 | CONFIG_EPOLL=y |
53 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
54 | CONFIG_SLAB=y | 62 | CONFIG_SLAB=y |
55 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_RT_MUTEXES=y | ||
56 | # CONFIG_TINY_SHMEM is not set | 65 | # CONFIG_TINY_SHMEM is not set |
57 | CONFIG_BASE_SMALL=0 | 66 | CONFIG_BASE_SMALL=0 |
58 | # CONFIG_SLOB is not set | 67 | # CONFIG_SLOB is not set |
@@ -70,7 +79,10 @@ CONFIG_KMOD=y | |||
70 | # | 79 | # |
71 | # Block layer | 80 | # Block layer |
72 | # | 81 | # |
82 | CONFIG_BLOCK=y | ||
83 | # CONFIG_LBD is not set | ||
73 | # CONFIG_BLK_DEV_IO_TRACE is not set | 84 | # CONFIG_BLK_DEV_IO_TRACE is not set |
85 | # CONFIG_LSF is not set | ||
74 | 86 | ||
75 | # | 87 | # |
76 | # IO Schedulers | 88 | # IO Schedulers |
@@ -102,7 +114,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
102 | # CONFIG_ARCH_NETX is not set | 114 | # CONFIG_ARCH_NETX is not set |
103 | # CONFIG_ARCH_H720X is not set | 115 | # CONFIG_ARCH_H720X is not set |
104 | # CONFIG_ARCH_IMX is not set | 116 | # CONFIG_ARCH_IMX is not set |
105 | # CONFIG_ARCH_IOP3XX is not set | 117 | # CONFIG_ARCH_IOP32X is not set |
118 | # CONFIG_ARCH_IOP33X is not set | ||
119 | # CONFIG_ARCH_IOP13XX is not set | ||
106 | # CONFIG_ARCH_IXP4XX is not set | 120 | # CONFIG_ARCH_IXP4XX is not set |
107 | # CONFIG_ARCH_IXP2000 is not set | 121 | # CONFIG_ARCH_IXP2000 is not set |
108 | CONFIG_ARCH_IXP23XX=y | 122 | CONFIG_ARCH_IXP23XX=y |
@@ -137,6 +151,8 @@ CONFIG_CPU_32v5=y | |||
137 | CONFIG_CPU_ABRT_EV5T=y | 151 | CONFIG_CPU_ABRT_EV5T=y |
138 | CONFIG_CPU_CACHE_VIVT=y | 152 | CONFIG_CPU_CACHE_VIVT=y |
139 | CONFIG_CPU_TLB_V4WBI=y | 153 | CONFIG_CPU_TLB_V4WBI=y |
154 | CONFIG_CPU_CP15=y | ||
155 | CONFIG_CPU_CP15_MMU=y | ||
140 | CONFIG_IO_36=y | 156 | CONFIG_IO_36=y |
141 | 157 | ||
142 | # | 158 | # |
@@ -144,11 +160,15 @@ CONFIG_IO_36=y | |||
144 | # | 160 | # |
145 | # CONFIG_ARM_THUMB is not set | 161 | # CONFIG_ARM_THUMB is not set |
146 | CONFIG_CPU_BIG_ENDIAN=y | 162 | CONFIG_CPU_BIG_ENDIAN=y |
163 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
164 | # CONFIG_CPU_BPREDICT_DISABLE is not set | ||
165 | # CONFIG_IWMMXT is not set | ||
147 | 166 | ||
148 | # | 167 | # |
149 | # Bus support | 168 | # Bus support |
150 | # | 169 | # |
151 | CONFIG_PCI=y | 170 | CONFIG_PCI=y |
171 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
152 | # CONFIG_PCI_DEBUG is not set | 172 | # CONFIG_PCI_DEBUG is not set |
153 | 173 | ||
154 | # | 174 | # |
@@ -222,6 +242,7 @@ CONFIG_PACKET_MMAP=y | |||
222 | CONFIG_UNIX=y | 242 | CONFIG_UNIX=y |
223 | CONFIG_XFRM=y | 243 | CONFIG_XFRM=y |
224 | # CONFIG_XFRM_USER is not set | 244 | # CONFIG_XFRM_USER is not set |
245 | # CONFIG_XFRM_SUB_POLICY is not set | ||
225 | # CONFIG_NET_KEY is not set | 246 | # CONFIG_NET_KEY is not set |
226 | CONFIG_INET=y | 247 | CONFIG_INET=y |
227 | # CONFIG_IP_MULTICAST is not set | 248 | # CONFIG_IP_MULTICAST is not set |
@@ -242,13 +263,29 @@ CONFIG_SYN_COOKIES=y | |||
242 | # CONFIG_INET_TUNNEL is not set | 263 | # CONFIG_INET_TUNNEL is not set |
243 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 264 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
244 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 265 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
266 | CONFIG_INET_XFRM_MODE_BEET=y | ||
245 | CONFIG_INET_DIAG=y | 267 | CONFIG_INET_DIAG=y |
246 | CONFIG_INET_TCP_DIAG=y | 268 | CONFIG_INET_TCP_DIAG=y |
247 | # CONFIG_TCP_CONG_ADVANCED is not set | 269 | # CONFIG_TCP_CONG_ADVANCED is not set |
248 | CONFIG_TCP_CONG_BIC=y | 270 | CONFIG_TCP_CONG_CUBIC=y |
249 | # CONFIG_IPV6 is not set | 271 | CONFIG_DEFAULT_TCP_CONG="cubic" |
272 | # CONFIG_TCP_MD5SIG is not set | ||
273 | CONFIG_IPV6=y | ||
274 | # CONFIG_IPV6_PRIVACY is not set | ||
275 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
276 | # CONFIG_INET6_AH is not set | ||
277 | # CONFIG_INET6_ESP is not set | ||
278 | # CONFIG_INET6_IPCOMP is not set | ||
279 | # CONFIG_IPV6_MIP6 is not set | ||
250 | # CONFIG_INET6_XFRM_TUNNEL is not set | 280 | # CONFIG_INET6_XFRM_TUNNEL is not set |
251 | # CONFIG_INET6_TUNNEL is not set | 281 | # CONFIG_INET6_TUNNEL is not set |
282 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
283 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
284 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
285 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
286 | # CONFIG_IPV6_SIT is not set | ||
287 | # CONFIG_IPV6_TUNNEL is not set | ||
288 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
252 | # CONFIG_NETWORK_SECMARK is not set | 289 | # CONFIG_NETWORK_SECMARK is not set |
253 | # CONFIG_NETFILTER is not set | 290 | # CONFIG_NETFILTER is not set |
254 | 291 | ||
@@ -275,7 +312,6 @@ CONFIG_TCP_CONG_BIC=y | |||
275 | # CONFIG_ATALK is not set | 312 | # CONFIG_ATALK is not set |
276 | # CONFIG_X25 is not set | 313 | # CONFIG_X25 is not set |
277 | # CONFIG_LAPB is not set | 314 | # CONFIG_LAPB is not set |
278 | # CONFIG_NET_DIVERT is not set | ||
279 | # CONFIG_ECONET is not set | 315 | # CONFIG_ECONET is not set |
280 | # CONFIG_WAN_ROUTER is not set | 316 | # CONFIG_WAN_ROUTER is not set |
281 | 317 | ||
@@ -334,6 +370,7 @@ CONFIG_MTD_BLOCK=y | |||
334 | # CONFIG_NFTL is not set | 370 | # CONFIG_NFTL is not set |
335 | # CONFIG_INFTL is not set | 371 | # CONFIG_INFTL is not set |
336 | # CONFIG_RFD_FTL is not set | 372 | # CONFIG_RFD_FTL is not set |
373 | # CONFIG_SSFDC is not set | ||
337 | 374 | ||
338 | # | 375 | # |
339 | # RAM/ROM/Flash chip drivers | 376 | # RAM/ROM/Flash chip drivers |
@@ -418,12 +455,13 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1 | |||
418 | # CONFIG_BLK_DEV_COW_COMMON is not set | 455 | # CONFIG_BLK_DEV_COW_COMMON is not set |
419 | CONFIG_BLK_DEV_LOOP=y | 456 | CONFIG_BLK_DEV_LOOP=y |
420 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 457 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
421 | # CONFIG_BLK_DEV_NBD is not set | 458 | CONFIG_BLK_DEV_NBD=y |
422 | # CONFIG_BLK_DEV_SX8 is not set | 459 | # CONFIG_BLK_DEV_SX8 is not set |
423 | # CONFIG_BLK_DEV_UB is not set | 460 | # CONFIG_BLK_DEV_UB is not set |
424 | CONFIG_BLK_DEV_RAM=y | 461 | CONFIG_BLK_DEV_RAM=y |
425 | CONFIG_BLK_DEV_RAM_COUNT=16 | 462 | CONFIG_BLK_DEV_RAM_COUNT=16 |
426 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 463 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
464 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
427 | CONFIG_BLK_DEV_INITRD=y | 465 | CONFIG_BLK_DEV_INITRD=y |
428 | # CONFIG_CDROM_PKTCDVD is not set | 466 | # CONFIG_CDROM_PKTCDVD is not set |
429 | # CONFIG_ATA_OVER_ETH is not set | 467 | # CONFIG_ATA_OVER_ETH is not set |
@@ -432,6 +470,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
432 | # ATA/ATAPI/MFM/RLL support | 470 | # ATA/ATAPI/MFM/RLL support |
433 | # | 471 | # |
434 | CONFIG_IDE=y | 472 | CONFIG_IDE=y |
473 | CONFIG_IDE_MAX_HWIFS=4 | ||
435 | CONFIG_BLK_DEV_IDE=y | 474 | CONFIG_BLK_DEV_IDE=y |
436 | 475 | ||
437 | # | 476 | # |
@@ -455,7 +494,6 @@ CONFIG_BLK_DEV_IDEPCI=y | |||
455 | # CONFIG_BLK_DEV_OFFBOARD is not set | 494 | # CONFIG_BLK_DEV_OFFBOARD is not set |
456 | # CONFIG_BLK_DEV_GENERIC is not set | 495 | # CONFIG_BLK_DEV_GENERIC is not set |
457 | # CONFIG_BLK_DEV_OPTI621 is not set | 496 | # CONFIG_BLK_DEV_OPTI621 is not set |
458 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
459 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 497 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
460 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 498 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
461 | # CONFIG_IDEDMA_PCI_AUTO is not set | 499 | # CONFIG_IDEDMA_PCI_AUTO is not set |
@@ -469,6 +507,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
469 | # CONFIG_BLK_DEV_CS5530 is not set | 507 | # CONFIG_BLK_DEV_CS5530 is not set |
470 | # CONFIG_BLK_DEV_HPT34X is not set | 508 | # CONFIG_BLK_DEV_HPT34X is not set |
471 | # CONFIG_BLK_DEV_HPT366 is not set | 509 | # CONFIG_BLK_DEV_HPT366 is not set |
510 | # CONFIG_BLK_DEV_JMICRON is not set | ||
472 | # CONFIG_BLK_DEV_SC1200 is not set | 511 | # CONFIG_BLK_DEV_SC1200 is not set |
473 | # CONFIG_BLK_DEV_PIIX is not set | 512 | # CONFIG_BLK_DEV_PIIX is not set |
474 | # CONFIG_BLK_DEV_IT821X is not set | 513 | # CONFIG_BLK_DEV_IT821X is not set |
@@ -477,6 +516,7 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
477 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 516 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
478 | # CONFIG_BLK_DEV_SVWKS is not set | 517 | # CONFIG_BLK_DEV_SVWKS is not set |
479 | CONFIG_BLK_DEV_SIIMAGE=y | 518 | CONFIG_BLK_DEV_SIIMAGE=y |
519 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
480 | # CONFIG_BLK_DEV_SLC90E66 is not set | 520 | # CONFIG_BLK_DEV_SLC90E66 is not set |
481 | # CONFIG_BLK_DEV_TRM290 is not set | 521 | # CONFIG_BLK_DEV_TRM290 is not set |
482 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 522 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
@@ -491,6 +531,8 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
491 | # | 531 | # |
492 | # CONFIG_RAID_ATTRS is not set | 532 | # CONFIG_RAID_ATTRS is not set |
493 | CONFIG_SCSI=y | 533 | CONFIG_SCSI=y |
534 | # CONFIG_SCSI_TGT is not set | ||
535 | # CONFIG_SCSI_NETLINK is not set | ||
494 | CONFIG_SCSI_PROC_FS=y | 536 | CONFIG_SCSI_PROC_FS=y |
495 | 537 | ||
496 | # | 538 | # |
@@ -509,14 +551,16 @@ CONFIG_BLK_DEV_SD=y | |||
509 | # CONFIG_SCSI_MULTI_LUN is not set | 551 | # CONFIG_SCSI_MULTI_LUN is not set |
510 | # CONFIG_SCSI_CONSTANTS is not set | 552 | # CONFIG_SCSI_CONSTANTS is not set |
511 | # CONFIG_SCSI_LOGGING is not set | 553 | # CONFIG_SCSI_LOGGING is not set |
554 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
512 | 555 | ||
513 | # | 556 | # |
514 | # SCSI Transport Attributes | 557 | # SCSI Transports |
515 | # | 558 | # |
516 | # CONFIG_SCSI_SPI_ATTRS is not set | 559 | # CONFIG_SCSI_SPI_ATTRS is not set |
517 | # CONFIG_SCSI_FC_ATTRS is not set | 560 | # CONFIG_SCSI_FC_ATTRS is not set |
518 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 561 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
519 | # CONFIG_SCSI_SAS_ATTRS is not set | 562 | # CONFIG_SCSI_SAS_ATTRS is not set |
563 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
520 | 564 | ||
521 | # | 565 | # |
522 | # SCSI low-level drivers | 566 | # SCSI low-level drivers |
@@ -529,26 +573,34 @@ CONFIG_BLK_DEV_SD=y | |||
529 | # CONFIG_SCSI_AIC7XXX is not set | 573 | # CONFIG_SCSI_AIC7XXX is not set |
530 | # CONFIG_SCSI_AIC7XXX_OLD is not set | 574 | # CONFIG_SCSI_AIC7XXX_OLD is not set |
531 | # CONFIG_SCSI_AIC79XX is not set | 575 | # CONFIG_SCSI_AIC79XX is not set |
576 | # CONFIG_SCSI_AIC94XX is not set | ||
532 | # CONFIG_SCSI_DPT_I2O is not set | 577 | # CONFIG_SCSI_DPT_I2O is not set |
578 | # CONFIG_SCSI_ARCMSR is not set | ||
533 | # CONFIG_MEGARAID_NEWGEN is not set | 579 | # CONFIG_MEGARAID_NEWGEN is not set |
534 | # CONFIG_MEGARAID_LEGACY is not set | 580 | # CONFIG_MEGARAID_LEGACY is not set |
535 | # CONFIG_MEGARAID_SAS is not set | 581 | # CONFIG_MEGARAID_SAS is not set |
536 | # CONFIG_SCSI_SATA is not set | ||
537 | # CONFIG_SCSI_HPTIOP is not set | 582 | # CONFIG_SCSI_HPTIOP is not set |
538 | # CONFIG_SCSI_DMX3191D is not set | 583 | # CONFIG_SCSI_DMX3191D is not set |
539 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 584 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
540 | # CONFIG_SCSI_IPS is not set | 585 | # CONFIG_SCSI_IPS is not set |
541 | # CONFIG_SCSI_INITIO is not set | 586 | # CONFIG_SCSI_INITIO is not set |
542 | # CONFIG_SCSI_INIA100 is not set | 587 | # CONFIG_SCSI_INIA100 is not set |
588 | # CONFIG_SCSI_STEX is not set | ||
543 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 589 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
544 | # CONFIG_SCSI_IPR is not set | ||
545 | # CONFIG_SCSI_QLOGIC_1280 is not set | 590 | # CONFIG_SCSI_QLOGIC_1280 is not set |
546 | # CONFIG_SCSI_QLA_FC is not set | 591 | # CONFIG_SCSI_QLA_FC is not set |
592 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
547 | # CONFIG_SCSI_LPFC is not set | 593 | # CONFIG_SCSI_LPFC is not set |
548 | # CONFIG_SCSI_DC395x is not set | 594 | # CONFIG_SCSI_DC395x is not set |
549 | # CONFIG_SCSI_DC390T is not set | 595 | # CONFIG_SCSI_DC390T is not set |
550 | # CONFIG_SCSI_NSP32 is not set | 596 | # CONFIG_SCSI_NSP32 is not set |
551 | # CONFIG_SCSI_DEBUG is not set | 597 | # CONFIG_SCSI_DEBUG is not set |
598 | # CONFIG_SCSI_SRP is not set | ||
599 | |||
600 | # | ||
601 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
602 | # | ||
603 | # CONFIG_ATA is not set | ||
552 | 604 | ||
553 | # | 605 | # |
554 | # Multi-device support (RAID and LVM) | 606 | # Multi-device support (RAID and LVM) |
@@ -649,6 +701,7 @@ CONFIG_E1000_NAPI=y | |||
649 | # CONFIG_VIA_VELOCITY is not set | 701 | # CONFIG_VIA_VELOCITY is not set |
650 | # CONFIG_TIGON3 is not set | 702 | # CONFIG_TIGON3 is not set |
651 | # CONFIG_BNX2 is not set | 703 | # CONFIG_BNX2 is not set |
704 | # CONFIG_QLA3XXX is not set | ||
652 | 705 | ||
653 | # | 706 | # |
654 | # Ethernet (10000 Mbit) | 707 | # Ethernet (10000 Mbit) |
@@ -657,6 +710,7 @@ CONFIG_E1000_NAPI=y | |||
657 | # CONFIG_IXGB is not set | 710 | # CONFIG_IXGB is not set |
658 | # CONFIG_S2IO is not set | 711 | # CONFIG_S2IO is not set |
659 | # CONFIG_MYRI10GE is not set | 712 | # CONFIG_MYRI10GE is not set |
713 | # CONFIG_NETXEN_NIC is not set | ||
660 | 714 | ||
661 | # | 715 | # |
662 | # Token Ring devices | 716 | # Token Ring devices |
@@ -672,7 +726,6 @@ CONFIG_E1000_NAPI=y | |||
672 | # Wan interfaces | 726 | # Wan interfaces |
673 | # | 727 | # |
674 | CONFIG_WAN=y | 728 | CONFIG_WAN=y |
675 | # CONFIG_DSCC4 is not set | ||
676 | # CONFIG_LANMEDIA is not set | 729 | # CONFIG_LANMEDIA is not set |
677 | CONFIG_HDLC=y | 730 | CONFIG_HDLC=y |
678 | CONFIG_HDLC_RAW=y | 731 | CONFIG_HDLC_RAW=y |
@@ -688,6 +741,7 @@ CONFIG_HDLC_PPP=y | |||
688 | # CONFIG_WANXL is not set | 741 | # CONFIG_WANXL is not set |
689 | # CONFIG_PC300 is not set | 742 | # CONFIG_PC300 is not set |
690 | # CONFIG_FARSYNC is not set | 743 | # CONFIG_FARSYNC is not set |
744 | # CONFIG_DSCC4 is not set | ||
691 | CONFIG_DLCI=y | 745 | CONFIG_DLCI=y |
692 | CONFIG_DLCI_COUNT=24 | 746 | CONFIG_DLCI_COUNT=24 |
693 | CONFIG_DLCI_MAX=8 | 747 | CONFIG_DLCI_MAX=8 |
@@ -710,6 +764,7 @@ CONFIG_DLCI_MAX=8 | |||
710 | # Input device support | 764 | # Input device support |
711 | # | 765 | # |
712 | CONFIG_INPUT=y | 766 | CONFIG_INPUT=y |
767 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
713 | 768 | ||
714 | # | 769 | # |
715 | # Userland interfaces | 770 | # Userland interfaces |
@@ -795,10 +850,6 @@ CONFIG_WATCHDOG=y | |||
795 | # CONFIG_DTLK is not set | 850 | # CONFIG_DTLK is not set |
796 | # CONFIG_R3964 is not set | 851 | # CONFIG_R3964 is not set |
797 | # CONFIG_APPLICOM is not set | 852 | # CONFIG_APPLICOM is not set |
798 | |||
799 | # | ||
800 | # Ftape, the floppy tape device driver | ||
801 | # | ||
802 | # CONFIG_DRM is not set | 853 | # CONFIG_DRM is not set |
803 | # CONFIG_RAW_DRIVER is not set | 854 | # CONFIG_RAW_DRIVER is not set |
804 | 855 | ||
@@ -806,7 +857,6 @@ CONFIG_WATCHDOG=y | |||
806 | # TPM devices | 857 | # TPM devices |
807 | # | 858 | # |
808 | # CONFIG_TCG_TPM is not set | 859 | # CONFIG_TCG_TPM is not set |
809 | # CONFIG_TELCLOCK is not set | ||
810 | 860 | ||
811 | # | 861 | # |
812 | # I2C support | 862 | # I2C support |
@@ -870,6 +920,7 @@ CONFIG_SENSORS_EEPROM=y | |||
870 | # | 920 | # |
871 | # Dallas's 1-wire bus | 921 | # Dallas's 1-wire bus |
872 | # | 922 | # |
923 | # CONFIG_W1 is not set | ||
873 | 924 | ||
874 | # | 925 | # |
875 | # Hardware Monitoring support | 926 | # Hardware Monitoring support |
@@ -903,15 +954,18 @@ CONFIG_HWMON=y | |||
903 | # CONFIG_SENSORS_LM92 is not set | 954 | # CONFIG_SENSORS_LM92 is not set |
904 | # CONFIG_SENSORS_MAX1619 is not set | 955 | # CONFIG_SENSORS_MAX1619 is not set |
905 | # CONFIG_SENSORS_PC87360 is not set | 956 | # CONFIG_SENSORS_PC87360 is not set |
957 | # CONFIG_SENSORS_PC87427 is not set | ||
906 | # CONFIG_SENSORS_SIS5595 is not set | 958 | # CONFIG_SENSORS_SIS5595 is not set |
907 | # CONFIG_SENSORS_SMSC47M1 is not set | 959 | # CONFIG_SENSORS_SMSC47M1 is not set |
908 | # CONFIG_SENSORS_SMSC47M192 is not set | 960 | # CONFIG_SENSORS_SMSC47M192 is not set |
909 | # CONFIG_SENSORS_SMSC47B397 is not set | 961 | # CONFIG_SENSORS_SMSC47B397 is not set |
910 | # CONFIG_SENSORS_VIA686A is not set | 962 | # CONFIG_SENSORS_VIA686A is not set |
963 | # CONFIG_SENSORS_VT1211 is not set | ||
911 | # CONFIG_SENSORS_VT8231 is not set | 964 | # CONFIG_SENSORS_VT8231 is not set |
912 | # CONFIG_SENSORS_W83781D is not set | 965 | # CONFIG_SENSORS_W83781D is not set |
913 | # CONFIG_SENSORS_W83791D is not set | 966 | # CONFIG_SENSORS_W83791D is not set |
914 | # CONFIG_SENSORS_W83792D is not set | 967 | # CONFIG_SENSORS_W83792D is not set |
968 | # CONFIG_SENSORS_W83793 is not set | ||
915 | # CONFIG_SENSORS_W83L785TS is not set | 969 | # CONFIG_SENSORS_W83L785TS is not set |
916 | # CONFIG_SENSORS_W83627HF is not set | 970 | # CONFIG_SENSORS_W83627HF is not set |
917 | # CONFIG_SENSORS_W83627EHF is not set | 971 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -920,6 +974,8 @@ CONFIG_HWMON=y | |||
920 | # | 974 | # |
921 | # Misc devices | 975 | # Misc devices |
922 | # | 976 | # |
977 | # CONFIG_SGI_IOC4 is not set | ||
978 | # CONFIG_TIFM_CORE is not set | ||
923 | 979 | ||
924 | # | 980 | # |
925 | # LED devices | 981 | # LED devices |
@@ -938,7 +994,6 @@ CONFIG_HWMON=y | |||
938 | # Multimedia devices | 994 | # Multimedia devices |
939 | # | 995 | # |
940 | # CONFIG_VIDEO_DEV is not set | 996 | # CONFIG_VIDEO_DEV is not set |
941 | CONFIG_VIDEO_V4L2=y | ||
942 | 997 | ||
943 | # | 998 | # |
944 | # Digital Video Broadcasting Devices | 999 | # Digital Video Broadcasting Devices |
@@ -951,6 +1006,7 @@ CONFIG_VIDEO_V4L2=y | |||
951 | # | 1006 | # |
952 | # CONFIG_FIRMWARE_EDID is not set | 1007 | # CONFIG_FIRMWARE_EDID is not set |
953 | # CONFIG_FB is not set | 1008 | # CONFIG_FB is not set |
1009 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
954 | 1010 | ||
955 | # | 1011 | # |
956 | # Sound | 1012 | # Sound |
@@ -958,6 +1014,11 @@ CONFIG_VIDEO_V4L2=y | |||
958 | # CONFIG_SOUND is not set | 1014 | # CONFIG_SOUND is not set |
959 | 1015 | ||
960 | # | 1016 | # |
1017 | # HID Devices | ||
1018 | # | ||
1019 | CONFIG_HID=y | ||
1020 | |||
1021 | # | ||
961 | # USB support | 1022 | # USB support |
962 | # | 1023 | # |
963 | CONFIG_USB_ARCH_HAS_HCD=y | 1024 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -972,6 +1033,7 @@ CONFIG_USB=y | |||
972 | # CONFIG_USB_DEVICEFS is not set | 1033 | # CONFIG_USB_DEVICEFS is not set |
973 | # CONFIG_USB_BANDWIDTH is not set | 1034 | # CONFIG_USB_BANDWIDTH is not set |
974 | # CONFIG_USB_DYNAMIC_MINORS is not set | 1035 | # CONFIG_USB_DYNAMIC_MINORS is not set |
1036 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
975 | # CONFIG_USB_OTG is not set | 1037 | # CONFIG_USB_OTG is not set |
976 | 1038 | ||
977 | # | 1039 | # |
@@ -1012,6 +1074,7 @@ CONFIG_USB_STORAGE=y | |||
1012 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1074 | # CONFIG_USB_STORAGE_SDDR55 is not set |
1013 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1075 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
1014 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1076 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1077 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1015 | # CONFIG_USB_LIBUSUAL is not set | 1078 | # CONFIG_USB_LIBUSUAL is not set |
1016 | 1079 | ||
1017 | # | 1080 | # |
@@ -1050,6 +1113,7 @@ CONFIG_USB_STORAGE=y | |||
1050 | # CONFIG_USB_KAWETH is not set | 1113 | # CONFIG_USB_KAWETH is not set |
1051 | # CONFIG_USB_PEGASUS is not set | 1114 | # CONFIG_USB_PEGASUS is not set |
1052 | # CONFIG_USB_RTL8150 is not set | 1115 | # CONFIG_USB_RTL8150 is not set |
1116 | # CONFIG_USB_USBNET_MII is not set | ||
1053 | # CONFIG_USB_USBNET is not set | 1117 | # CONFIG_USB_USBNET is not set |
1054 | CONFIG_USB_MON=y | 1118 | CONFIG_USB_MON=y |
1055 | 1119 | ||
@@ -1067,19 +1131,21 @@ CONFIG_USB_MON=y | |||
1067 | # | 1131 | # |
1068 | # CONFIG_USB_EMI62 is not set | 1132 | # CONFIG_USB_EMI62 is not set |
1069 | # CONFIG_USB_EMI26 is not set | 1133 | # CONFIG_USB_EMI26 is not set |
1134 | # CONFIG_USB_ADUTUX is not set | ||
1070 | # CONFIG_USB_AUERSWALD is not set | 1135 | # CONFIG_USB_AUERSWALD is not set |
1071 | # CONFIG_USB_RIO500 is not set | 1136 | # CONFIG_USB_RIO500 is not set |
1072 | # CONFIG_USB_LEGOTOWER is not set | 1137 | # CONFIG_USB_LEGOTOWER is not set |
1073 | # CONFIG_USB_LCD is not set | 1138 | # CONFIG_USB_LCD is not set |
1074 | # CONFIG_USB_LED is not set | 1139 | # CONFIG_USB_LED is not set |
1075 | # CONFIG_USB_CY7C63 is not set | 1140 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1076 | # CONFIG_USB_CYTHERM is not set | 1141 | # CONFIG_USB_CYTHERM is not set |
1077 | # CONFIG_USB_PHIDGETKIT is not set | 1142 | # CONFIG_USB_PHIDGET is not set |
1078 | # CONFIG_USB_PHIDGETSERVO is not set | ||
1079 | # CONFIG_USB_IDMOUSE is not set | 1143 | # CONFIG_USB_IDMOUSE is not set |
1144 | # CONFIG_USB_FTDI_ELAN is not set | ||
1080 | # CONFIG_USB_APPLEDISPLAY is not set | 1145 | # CONFIG_USB_APPLEDISPLAY is not set |
1081 | # CONFIG_USB_SISUSBVGA is not set | 1146 | # CONFIG_USB_SISUSBVGA is not set |
1082 | # CONFIG_USB_LD is not set | 1147 | # CONFIG_USB_LD is not set |
1148 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1083 | 1149 | ||
1084 | # | 1150 | # |
1085 | # USB DSL modem support | 1151 | # USB DSL modem support |
@@ -1113,6 +1179,7 @@ CONFIG_EXT3_FS=y | |||
1113 | CONFIG_EXT3_FS_XATTR=y | 1179 | CONFIG_EXT3_FS_XATTR=y |
1114 | CONFIG_EXT3_FS_POSIX_ACL=y | 1180 | CONFIG_EXT3_FS_POSIX_ACL=y |
1115 | # CONFIG_EXT3_FS_SECURITY is not set | 1181 | # CONFIG_EXT3_FS_SECURITY is not set |
1182 | # CONFIG_EXT4DEV_FS is not set | ||
1116 | CONFIG_JBD=y | 1183 | CONFIG_JBD=y |
1117 | # CONFIG_JBD_DEBUG is not set | 1184 | # CONFIG_JBD_DEBUG is not set |
1118 | CONFIG_FS_MBCACHE=y | 1185 | CONFIG_FS_MBCACHE=y |
@@ -1120,6 +1187,7 @@ CONFIG_FS_MBCACHE=y | |||
1120 | # CONFIG_JFS_FS is not set | 1187 | # CONFIG_JFS_FS is not set |
1121 | CONFIG_FS_POSIX_ACL=y | 1188 | CONFIG_FS_POSIX_ACL=y |
1122 | # CONFIG_XFS_FS is not set | 1189 | # CONFIG_XFS_FS is not set |
1190 | # CONFIG_GFS2_FS is not set | ||
1123 | # CONFIG_OCFS2_FS is not set | 1191 | # CONFIG_OCFS2_FS is not set |
1124 | # CONFIG_MINIX_FS is not set | 1192 | # CONFIG_MINIX_FS is not set |
1125 | # CONFIG_ROMFS_FS is not set | 1193 | # CONFIG_ROMFS_FS is not set |
@@ -1150,8 +1218,10 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437 | |||
1150 | # Pseudo filesystems | 1218 | # Pseudo filesystems |
1151 | # | 1219 | # |
1152 | CONFIG_PROC_FS=y | 1220 | CONFIG_PROC_FS=y |
1221 | CONFIG_PROC_SYSCTL=y | ||
1153 | CONFIG_SYSFS=y | 1222 | CONFIG_SYSFS=y |
1154 | CONFIG_TMPFS=y | 1223 | CONFIG_TMPFS=y |
1224 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1155 | # CONFIG_HUGETLB_PAGE is not set | 1225 | # CONFIG_HUGETLB_PAGE is not set |
1156 | CONFIG_RAMFS=y | 1226 | CONFIG_RAMFS=y |
1157 | # CONFIG_CONFIGFS_FS is not set | 1227 | # CONFIG_CONFIGFS_FS is not set |
@@ -1201,7 +1271,6 @@ CONFIG_SUNRPC=y | |||
1201 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1271 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1202 | # CONFIG_SMB_FS is not set | 1272 | # CONFIG_SMB_FS is not set |
1203 | # CONFIG_CIFS is not set | 1273 | # CONFIG_CIFS is not set |
1204 | # CONFIG_CIFS_DEBUG2 is not set | ||
1205 | # CONFIG_NCP_FS is not set | 1274 | # CONFIG_NCP_FS is not set |
1206 | # CONFIG_CODA_FS is not set | 1275 | # CONFIG_CODA_FS is not set |
1207 | # CONFIG_AFS_FS is not set | 1276 | # CONFIG_AFS_FS is not set |
@@ -1273,6 +1342,11 @@ CONFIG_NLS_CODEPAGE_437=y | |||
1273 | # CONFIG_NLS_UTF8 is not set | 1342 | # CONFIG_NLS_UTF8 is not set |
1274 | 1343 | ||
1275 | # | 1344 | # |
1345 | # Distributed Lock Manager | ||
1346 | # | ||
1347 | # CONFIG_DLM is not set | ||
1348 | |||
1349 | # | ||
1276 | # Profiling support | 1350 | # Profiling support |
1277 | # | 1351 | # |
1278 | # CONFIG_PROFILING is not set | 1352 | # CONFIG_PROFILING is not set |
@@ -1281,8 +1355,11 @@ CONFIG_NLS_CODEPAGE_437=y | |||
1281 | # Kernel hacking | 1355 | # Kernel hacking |
1282 | # | 1356 | # |
1283 | # CONFIG_PRINTK_TIME is not set | 1357 | # CONFIG_PRINTK_TIME is not set |
1358 | CONFIG_ENABLE_MUST_CHECK=y | ||
1284 | CONFIG_MAGIC_SYSRQ=y | 1359 | CONFIG_MAGIC_SYSRQ=y |
1285 | # CONFIG_UNUSED_SYMBOLS is not set | 1360 | # CONFIG_UNUSED_SYMBOLS is not set |
1361 | # CONFIG_DEBUG_FS is not set | ||
1362 | # CONFIG_HEADERS_CHECK is not set | ||
1286 | CONFIG_DEBUG_KERNEL=y | 1363 | CONFIG_DEBUG_KERNEL=y |
1287 | CONFIG_LOG_BUF_SHIFT=14 | 1364 | CONFIG_LOG_BUF_SHIFT=14 |
1288 | CONFIG_DETECT_SOFTLOCKUP=y | 1365 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1298,10 +1375,9 @@ CONFIG_DEBUG_MUTEXES=y | |||
1298 | # CONFIG_DEBUG_KOBJECT is not set | 1375 | # CONFIG_DEBUG_KOBJECT is not set |
1299 | CONFIG_DEBUG_BUGVERBOSE=y | 1376 | CONFIG_DEBUG_BUGVERBOSE=y |
1300 | # CONFIG_DEBUG_INFO is not set | 1377 | # CONFIG_DEBUG_INFO is not set |
1301 | # CONFIG_DEBUG_FS is not set | ||
1302 | # CONFIG_DEBUG_VM is not set | 1378 | # CONFIG_DEBUG_VM is not set |
1379 | # CONFIG_DEBUG_LIST is not set | ||
1303 | CONFIG_FRAME_POINTER=y | 1380 | CONFIG_FRAME_POINTER=y |
1304 | # CONFIG_UNWIND_INFO is not set | ||
1305 | CONFIG_FORCED_INLINING=y | 1381 | CONFIG_FORCED_INLINING=y |
1306 | # CONFIG_RCU_TORTURE_TEST is not set | 1382 | # CONFIG_RCU_TORTURE_TEST is not set |
1307 | CONFIG_DEBUG_USER=y | 1383 | CONFIG_DEBUG_USER=y |
@@ -1321,12 +1397,9 @@ CONFIG_DEBUG_LL=y | |||
1321 | # CONFIG_CRYPTO is not set | 1397 | # CONFIG_CRYPTO is not set |
1322 | 1398 | ||
1323 | # | 1399 | # |
1324 | # Hardware crypto devices | ||
1325 | # | ||
1326 | |||
1327 | # | ||
1328 | # Library routines | 1400 | # Library routines |
1329 | # | 1401 | # |
1402 | CONFIG_BITREVERSE=y | ||
1330 | # CONFIG_CRC_CCITT is not set | 1403 | # CONFIG_CRC_CCITT is not set |
1331 | # CONFIG_CRC16 is not set | 1404 | # CONFIG_CRC16 is not set |
1332 | CONFIG_CRC32=y | 1405 | CONFIG_CRC32=y |
@@ -1334,3 +1407,4 @@ CONFIG_CRC32=y | |||
1334 | CONFIG_ZLIB_INFLATE=y | 1407 | CONFIG_ZLIB_INFLATE=y |
1335 | CONFIG_ZLIB_DEFLATE=y | 1408 | CONFIG_ZLIB_DEFLATE=y |
1336 | CONFIG_PLIST=y | 1409 | CONFIG_PLIST=y |
1410 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/lpd270_defconfig b/arch/arm/configs/lpd270_defconfig index e146189ab54f..a3bf5833b87a 100644 --- a/arch/arm/configs/lpd270_defconfig +++ b/arch/arm/configs/lpd270_defconfig | |||
@@ -1,14 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc1 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Sun Jul 9 14:15:23 2006 | 4 | # Sat Dec 16 06:05:51 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
9 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
11 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_ARCH_MTD_XIP=y | 18 | CONFIG_ARCH_MTD_XIP=y |
@@ -29,16 +33,21 @@ CONFIG_LOCALVERSION="" | |||
29 | CONFIG_LOCALVERSION_AUTO=y | 33 | CONFIG_LOCALVERSION_AUTO=y |
30 | CONFIG_SWAP=y | 34 | CONFIG_SWAP=y |
31 | CONFIG_SYSVIPC=y | 35 | CONFIG_SYSVIPC=y |
36 | # CONFIG_IPC_NS is not set | ||
32 | # CONFIG_POSIX_MQUEUE is not set | 37 | # CONFIG_POSIX_MQUEUE is not set |
33 | # CONFIG_BSD_PROCESS_ACCT is not set | 38 | # CONFIG_BSD_PROCESS_ACCT is not set |
34 | CONFIG_SYSCTL=y | 39 | # CONFIG_TASKSTATS is not set |
40 | # CONFIG_UTS_NS is not set | ||
35 | # CONFIG_AUDIT is not set | 41 | # CONFIG_AUDIT is not set |
36 | # CONFIG_IKCONFIG is not set | 42 | # CONFIG_IKCONFIG is not set |
43 | CONFIG_SYSFS_DEPRECATED=y | ||
37 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
38 | CONFIG_INITRAMFS_SOURCE="" | 45 | CONFIG_INITRAMFS_SOURCE="" |
39 | CONFIG_UID16=y | ||
40 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 46 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
47 | CONFIG_SYSCTL=y | ||
41 | # CONFIG_EMBEDDED is not set | 48 | # CONFIG_EMBEDDED is not set |
49 | CONFIG_UID16=y | ||
50 | CONFIG_SYSCTL_SYSCALL=y | ||
42 | CONFIG_KALLSYMS=y | 51 | CONFIG_KALLSYMS=y |
43 | # CONFIG_KALLSYMS_ALL is not set | 52 | # CONFIG_KALLSYMS_ALL is not set |
44 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 53 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -47,12 +56,12 @@ CONFIG_PRINTK=y | |||
47 | CONFIG_BUG=y | 56 | CONFIG_BUG=y |
48 | CONFIG_ELF_CORE=y | 57 | CONFIG_ELF_CORE=y |
49 | CONFIG_BASE_FULL=y | 58 | CONFIG_BASE_FULL=y |
50 | CONFIG_RT_MUTEXES=y | ||
51 | CONFIG_FUTEX=y | 59 | CONFIG_FUTEX=y |
52 | CONFIG_EPOLL=y | 60 | CONFIG_EPOLL=y |
53 | CONFIG_SHMEM=y | 61 | CONFIG_SHMEM=y |
54 | CONFIG_SLAB=y | 62 | CONFIG_SLAB=y |
55 | CONFIG_VM_EVENT_COUNTERS=y | 63 | CONFIG_VM_EVENT_COUNTERS=y |
64 | CONFIG_RT_MUTEXES=y | ||
56 | # CONFIG_TINY_SHMEM is not set | 65 | # CONFIG_TINY_SHMEM is not set |
57 | CONFIG_BASE_SMALL=0 | 66 | CONFIG_BASE_SMALL=0 |
58 | # CONFIG_SLOB is not set | 67 | # CONFIG_SLOB is not set |
@@ -69,7 +78,10 @@ CONFIG_MODULES=y | |||
69 | # | 78 | # |
70 | # Block layer | 79 | # Block layer |
71 | # | 80 | # |
81 | CONFIG_BLOCK=y | ||
82 | # CONFIG_LBD is not set | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | 83 | # CONFIG_BLK_DEV_IO_TRACE is not set |
84 | # CONFIG_LSF is not set | ||
73 | 85 | ||
74 | # | 86 | # |
75 | # IO Schedulers | 87 | # IO Schedulers |
@@ -101,7 +113,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
101 | # CONFIG_ARCH_NETX is not set | 113 | # CONFIG_ARCH_NETX is not set |
102 | # CONFIG_ARCH_H720X is not set | 114 | # CONFIG_ARCH_H720X is not set |
103 | # CONFIG_ARCH_IMX is not set | 115 | # CONFIG_ARCH_IMX is not set |
104 | # CONFIG_ARCH_IOP3XX is not set | 116 | # CONFIG_ARCH_IOP32X is not set |
117 | # CONFIG_ARCH_IOP33X is not set | ||
118 | # CONFIG_ARCH_IOP13XX is not set | ||
105 | # CONFIG_ARCH_IXP4XX is not set | 119 | # CONFIG_ARCH_IXP4XX is not set |
106 | # CONFIG_ARCH_IXP2000 is not set | 120 | # CONFIG_ARCH_IXP2000 is not set |
107 | # CONFIG_ARCH_IXP23XX is not set | 121 | # CONFIG_ARCH_IXP23XX is not set |
@@ -125,7 +139,6 @@ CONFIG_MACH_LOGICPD_PXA270=y | |||
125 | # CONFIG_PXA_SHARPSL is not set | 139 | # CONFIG_PXA_SHARPSL is not set |
126 | # CONFIG_MACH_TRIZEPS4 is not set | 140 | # CONFIG_MACH_TRIZEPS4 is not set |
127 | CONFIG_PXA27x=y | 141 | CONFIG_PXA27x=y |
128 | CONFIG_IWMMXT=y | ||
129 | 142 | ||
130 | # | 143 | # |
131 | # Processor Type | 144 | # Processor Type |
@@ -136,11 +149,15 @@ CONFIG_CPU_32v5=y | |||
136 | CONFIG_CPU_ABRT_EV5T=y | 149 | CONFIG_CPU_ABRT_EV5T=y |
137 | CONFIG_CPU_CACHE_VIVT=y | 150 | CONFIG_CPU_CACHE_VIVT=y |
138 | CONFIG_CPU_TLB_V4WBI=y | 151 | CONFIG_CPU_TLB_V4WBI=y |
152 | CONFIG_CPU_CP15=y | ||
153 | CONFIG_CPU_CP15_MMU=y | ||
139 | 154 | ||
140 | # | 155 | # |
141 | # Processor Features | 156 | # Processor Features |
142 | # | 157 | # |
143 | # CONFIG_ARM_THUMB is not set | 158 | # CONFIG_ARM_THUMB is not set |
159 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
160 | CONFIG_IWMMXT=y | ||
144 | CONFIG_XSCALE_PMU=y | 161 | CONFIG_XSCALE_PMU=y |
145 | 162 | ||
146 | # | 163 | # |
@@ -217,6 +234,7 @@ CONFIG_NET=y | |||
217 | CONFIG_UNIX=y | 234 | CONFIG_UNIX=y |
218 | CONFIG_XFRM=y | 235 | CONFIG_XFRM=y |
219 | # CONFIG_XFRM_USER is not set | 236 | # CONFIG_XFRM_USER is not set |
237 | # CONFIG_XFRM_SUB_POLICY is not set | ||
220 | # CONFIG_NET_KEY is not set | 238 | # CONFIG_NET_KEY is not set |
221 | CONFIG_INET=y | 239 | CONFIG_INET=y |
222 | # CONFIG_IP_MULTICAST is not set | 240 | # CONFIG_IP_MULTICAST is not set |
@@ -237,13 +255,29 @@ CONFIG_IP_PNP_BOOTP=y | |||
237 | # CONFIG_INET_TUNNEL is not set | 255 | # CONFIG_INET_TUNNEL is not set |
238 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 256 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
239 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 257 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
258 | CONFIG_INET_XFRM_MODE_BEET=y | ||
240 | CONFIG_INET_DIAG=y | 259 | CONFIG_INET_DIAG=y |
241 | CONFIG_INET_TCP_DIAG=y | 260 | CONFIG_INET_TCP_DIAG=y |
242 | # CONFIG_TCP_CONG_ADVANCED is not set | 261 | # CONFIG_TCP_CONG_ADVANCED is not set |
243 | CONFIG_TCP_CONG_BIC=y | 262 | CONFIG_TCP_CONG_CUBIC=y |
244 | # CONFIG_IPV6 is not set | 263 | CONFIG_DEFAULT_TCP_CONG="cubic" |
264 | # CONFIG_TCP_MD5SIG is not set | ||
265 | CONFIG_IPV6=y | ||
266 | # CONFIG_IPV6_PRIVACY is not set | ||
267 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
268 | # CONFIG_INET6_AH is not set | ||
269 | # CONFIG_INET6_ESP is not set | ||
270 | # CONFIG_INET6_IPCOMP is not set | ||
271 | # CONFIG_IPV6_MIP6 is not set | ||
245 | # CONFIG_INET6_XFRM_TUNNEL is not set | 272 | # CONFIG_INET6_XFRM_TUNNEL is not set |
246 | # CONFIG_INET6_TUNNEL is not set | 273 | # CONFIG_INET6_TUNNEL is not set |
274 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
275 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
276 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
277 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
278 | # CONFIG_IPV6_SIT is not set | ||
279 | # CONFIG_IPV6_TUNNEL is not set | ||
280 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
247 | # CONFIG_NETWORK_SECMARK is not set | 281 | # CONFIG_NETWORK_SECMARK is not set |
248 | # CONFIG_NETFILTER is not set | 282 | # CONFIG_NETFILTER is not set |
249 | 283 | ||
@@ -270,7 +304,6 @@ CONFIG_TCP_CONG_BIC=y | |||
270 | # CONFIG_ATALK is not set | 304 | # CONFIG_ATALK is not set |
271 | # CONFIG_X25 is not set | 305 | # CONFIG_X25 is not set |
272 | # CONFIG_LAPB is not set | 306 | # CONFIG_LAPB is not set |
273 | # CONFIG_NET_DIVERT is not set | ||
274 | # CONFIG_ECONET is not set | 307 | # CONFIG_ECONET is not set |
275 | # CONFIG_WAN_ROUTER is not set | 308 | # CONFIG_WAN_ROUTER is not set |
276 | 309 | ||
@@ -329,6 +362,7 @@ CONFIG_MTD_BLOCK=y | |||
329 | # CONFIG_NFTL is not set | 362 | # CONFIG_NFTL is not set |
330 | # CONFIG_INFTL is not set | 363 | # CONFIG_INFTL is not set |
331 | # CONFIG_RFD_FTL is not set | 364 | # CONFIG_RFD_FTL is not set |
365 | # CONFIG_SSFDC is not set | ||
332 | 366 | ||
333 | # | 367 | # |
334 | # RAM/ROM/Flash chip drivers | 368 | # RAM/ROM/Flash chip drivers |
@@ -410,7 +444,7 @@ CONFIG_MTD_CFI_UTIL=y | |||
410 | # | 444 | # |
411 | # CONFIG_BLK_DEV_COW_COMMON is not set | 445 | # CONFIG_BLK_DEV_COW_COMMON is not set |
412 | # CONFIG_BLK_DEV_LOOP is not set | 446 | # CONFIG_BLK_DEV_LOOP is not set |
413 | # CONFIG_BLK_DEV_NBD is not set | 447 | CONFIG_BLK_DEV_NBD=y |
414 | # CONFIG_BLK_DEV_RAM is not set | 448 | # CONFIG_BLK_DEV_RAM is not set |
415 | # CONFIG_BLK_DEV_INITRD is not set | 449 | # CONFIG_BLK_DEV_INITRD is not set |
416 | # CONFIG_CDROM_PKTCDVD is not set | 450 | # CONFIG_CDROM_PKTCDVD is not set |
@@ -447,6 +481,12 @@ CONFIG_BLK_DEV_IDEDISK=y | |||
447 | # | 481 | # |
448 | # CONFIG_RAID_ATTRS is not set | 482 | # CONFIG_RAID_ATTRS is not set |
449 | # CONFIG_SCSI is not set | 483 | # CONFIG_SCSI is not set |
484 | # CONFIG_SCSI_NETLINK is not set | ||
485 | |||
486 | # | ||
487 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
488 | # | ||
489 | # CONFIG_ATA is not set | ||
450 | 490 | ||
451 | # | 491 | # |
452 | # Multi-device support (RAID and LVM) | 492 | # Multi-device support (RAID and LVM) |
@@ -526,6 +566,7 @@ CONFIG_SMC91X=y | |||
526 | # Input device support | 566 | # Input device support |
527 | # | 567 | # |
528 | CONFIG_INPUT=y | 568 | CONFIG_INPUT=y |
569 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
529 | 570 | ||
530 | # | 571 | # |
531 | # Userland interfaces | 572 | # Userland interfaces |
@@ -548,6 +589,7 @@ CONFIG_KEYBOARD_ATKBD=y | |||
548 | # CONFIG_KEYBOARD_LKKBD is not set | 589 | # CONFIG_KEYBOARD_LKKBD is not set |
549 | # CONFIG_KEYBOARD_XTKBD is not set | 590 | # CONFIG_KEYBOARD_XTKBD is not set |
550 | # CONFIG_KEYBOARD_NEWTON is not set | 591 | # CONFIG_KEYBOARD_NEWTON is not set |
592 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
551 | # CONFIG_INPUT_MOUSE is not set | 593 | # CONFIG_INPUT_MOUSE is not set |
552 | # CONFIG_INPUT_JOYSTICK is not set | 594 | # CONFIG_INPUT_JOYSTICK is not set |
553 | # CONFIG_INPUT_TOUCHSCREEN is not set | 595 | # CONFIG_INPUT_TOUCHSCREEN is not set |
@@ -600,17 +642,12 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
600 | # CONFIG_NVRAM is not set | 642 | # CONFIG_NVRAM is not set |
601 | # CONFIG_DTLK is not set | 643 | # CONFIG_DTLK is not set |
602 | # CONFIG_R3964 is not set | 644 | # CONFIG_R3964 is not set |
603 | |||
604 | # | ||
605 | # Ftape, the floppy tape device driver | ||
606 | # | ||
607 | # CONFIG_RAW_DRIVER is not set | 645 | # CONFIG_RAW_DRIVER is not set |
608 | 646 | ||
609 | # | 647 | # |
610 | # TPM devices | 648 | # TPM devices |
611 | # | 649 | # |
612 | # CONFIG_TCG_TPM is not set | 650 | # CONFIG_TCG_TPM is not set |
613 | # CONFIG_TELCLOCK is not set | ||
614 | 651 | ||
615 | # | 652 | # |
616 | # I2C support | 653 | # I2C support |
@@ -626,6 +663,7 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
626 | # | 663 | # |
627 | # Dallas's 1-wire bus | 664 | # Dallas's 1-wire bus |
628 | # | 665 | # |
666 | # CONFIG_W1 is not set | ||
629 | 667 | ||
630 | # | 668 | # |
631 | # Hardware Monitoring support | 669 | # Hardware Monitoring support |
@@ -634,11 +672,14 @@ CONFIG_HWMON=y | |||
634 | # CONFIG_HWMON_VID is not set | 672 | # CONFIG_HWMON_VID is not set |
635 | # CONFIG_SENSORS_ABITUGURU is not set | 673 | # CONFIG_SENSORS_ABITUGURU is not set |
636 | # CONFIG_SENSORS_F71805F is not set | 674 | # CONFIG_SENSORS_F71805F is not set |
675 | # CONFIG_SENSORS_PC87427 is not set | ||
676 | # CONFIG_SENSORS_VT1211 is not set | ||
637 | # CONFIG_HWMON_DEBUG_CHIP is not set | 677 | # CONFIG_HWMON_DEBUG_CHIP is not set |
638 | 678 | ||
639 | # | 679 | # |
640 | # Misc devices | 680 | # Misc devices |
641 | # | 681 | # |
682 | # CONFIG_TIFM_CORE is not set | ||
642 | 683 | ||
643 | # | 684 | # |
644 | # LED devices | 685 | # LED devices |
@@ -657,7 +698,6 @@ CONFIG_HWMON=y | |||
657 | # Multimedia devices | 698 | # Multimedia devices |
658 | # | 699 | # |
659 | # CONFIG_VIDEO_DEV is not set | 700 | # CONFIG_VIDEO_DEV is not set |
660 | CONFIG_VIDEO_V4L2=y | ||
661 | 701 | ||
662 | # | 702 | # |
663 | # Digital Video Broadcasting Devices | 703 | # Digital Video Broadcasting Devices |
@@ -679,6 +719,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
679 | # CONFIG_FB_S1D13XXX is not set | 719 | # CONFIG_FB_S1D13XXX is not set |
680 | CONFIG_FB_PXA=y | 720 | CONFIG_FB_PXA=y |
681 | # CONFIG_FB_PXA_PARAMETERS is not set | 721 | # CONFIG_FB_PXA_PARAMETERS is not set |
722 | # CONFIG_FB_MBX is not set | ||
682 | # CONFIG_FB_VIRTUAL is not set | 723 | # CONFIG_FB_VIRTUAL is not set |
683 | 724 | ||
684 | # | 725 | # |
@@ -725,7 +766,6 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
725 | # Generic devices | 766 | # Generic devices |
726 | # | 767 | # |
727 | CONFIG_SND_AC97_CODEC=y | 768 | CONFIG_SND_AC97_CODEC=y |
728 | CONFIG_SND_AC97_BUS=y | ||
729 | # CONFIG_SND_DUMMY is not set | 769 | # CONFIG_SND_DUMMY is not set |
730 | # CONFIG_SND_MTPAV is not set | 770 | # CONFIG_SND_MTPAV is not set |
731 | # CONFIG_SND_SERIAL_U16550 is not set | 771 | # CONFIG_SND_SERIAL_U16550 is not set |
@@ -741,6 +781,12 @@ CONFIG_SND_PXA2XX_AC97=y | |||
741 | # Open Sound System | 781 | # Open Sound System |
742 | # | 782 | # |
743 | # CONFIG_SOUND_PRIME is not set | 783 | # CONFIG_SOUND_PRIME is not set |
784 | CONFIG_AC97_BUS=y | ||
785 | |||
786 | # | ||
787 | # HID Devices | ||
788 | # | ||
789 | CONFIG_HID=y | ||
744 | 790 | ||
745 | # | 791 | # |
746 | # USB support | 792 | # USB support |
@@ -777,10 +823,12 @@ CONFIG_EXT2_FS=y | |||
777 | # CONFIG_EXT2_FS_XATTR is not set | 823 | # CONFIG_EXT2_FS_XATTR is not set |
778 | # CONFIG_EXT2_FS_XIP is not set | 824 | # CONFIG_EXT2_FS_XIP is not set |
779 | # CONFIG_EXT3_FS is not set | 825 | # CONFIG_EXT3_FS is not set |
826 | # CONFIG_EXT4DEV_FS is not set | ||
780 | # CONFIG_REISERFS_FS is not set | 827 | # CONFIG_REISERFS_FS is not set |
781 | # CONFIG_JFS_FS is not set | 828 | # CONFIG_JFS_FS is not set |
782 | # CONFIG_FS_POSIX_ACL is not set | 829 | # CONFIG_FS_POSIX_ACL is not set |
783 | # CONFIG_XFS_FS is not set | 830 | # CONFIG_XFS_FS is not set |
831 | # CONFIG_GFS2_FS is not set | ||
784 | # CONFIG_OCFS2_FS is not set | 832 | # CONFIG_OCFS2_FS is not set |
785 | # CONFIG_MINIX_FS is not set | 833 | # CONFIG_MINIX_FS is not set |
786 | # CONFIG_ROMFS_FS is not set | 834 | # CONFIG_ROMFS_FS is not set |
@@ -811,6 +859,7 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437 | |||
811 | # Pseudo filesystems | 859 | # Pseudo filesystems |
812 | # | 860 | # |
813 | CONFIG_PROC_FS=y | 861 | CONFIG_PROC_FS=y |
862 | CONFIG_PROC_SYSCTL=y | ||
814 | CONFIG_SYSFS=y | 863 | CONFIG_SYSFS=y |
815 | # CONFIG_TMPFS is not set | 864 | # CONFIG_TMPFS is not set |
816 | # CONFIG_HUGETLB_PAGE is not set | 865 | # CONFIG_HUGETLB_PAGE is not set |
@@ -860,7 +909,6 @@ CONFIG_SUNRPC=y | |||
860 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 909 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
861 | # CONFIG_SMB_FS is not set | 910 | # CONFIG_SMB_FS is not set |
862 | # CONFIG_CIFS is not set | 911 | # CONFIG_CIFS is not set |
863 | # CONFIG_CIFS_DEBUG2 is not set | ||
864 | # CONFIG_NCP_FS is not set | 912 | # CONFIG_NCP_FS is not set |
865 | # CONFIG_CODA_FS is not set | 913 | # CONFIG_CODA_FS is not set |
866 | # CONFIG_AFS_FS is not set | 914 | # CONFIG_AFS_FS is not set |
@@ -917,6 +965,11 @@ CONFIG_NLS_ISO8859_1=y | |||
917 | # CONFIG_NLS_UTF8 is not set | 965 | # CONFIG_NLS_UTF8 is not set |
918 | 966 | ||
919 | # | 967 | # |
968 | # Distributed Lock Manager | ||
969 | # | ||
970 | # CONFIG_DLM is not set | ||
971 | |||
972 | # | ||
920 | # Profiling support | 973 | # Profiling support |
921 | # | 974 | # |
922 | # CONFIG_PROFILING is not set | 975 | # CONFIG_PROFILING is not set |
@@ -925,8 +978,11 @@ CONFIG_NLS_ISO8859_1=y | |||
925 | # Kernel hacking | 978 | # Kernel hacking |
926 | # | 979 | # |
927 | # CONFIG_PRINTK_TIME is not set | 980 | # CONFIG_PRINTK_TIME is not set |
981 | CONFIG_ENABLE_MUST_CHECK=y | ||
928 | CONFIG_MAGIC_SYSRQ=y | 982 | CONFIG_MAGIC_SYSRQ=y |
929 | # CONFIG_UNUSED_SYMBOLS is not set | 983 | # CONFIG_UNUSED_SYMBOLS is not set |
984 | # CONFIG_DEBUG_FS is not set | ||
985 | # CONFIG_HEADERS_CHECK is not set | ||
930 | CONFIG_DEBUG_KERNEL=y | 986 | CONFIG_DEBUG_KERNEL=y |
931 | CONFIG_LOG_BUF_SHIFT=14 | 987 | CONFIG_LOG_BUF_SHIFT=14 |
932 | CONFIG_DETECT_SOFTLOCKUP=y | 988 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -942,10 +998,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
942 | # CONFIG_DEBUG_KOBJECT is not set | 998 | # CONFIG_DEBUG_KOBJECT is not set |
943 | CONFIG_DEBUG_BUGVERBOSE=y | 999 | CONFIG_DEBUG_BUGVERBOSE=y |
944 | CONFIG_DEBUG_INFO=y | 1000 | CONFIG_DEBUG_INFO=y |
945 | # CONFIG_DEBUG_FS is not set | ||
946 | # CONFIG_DEBUG_VM is not set | 1001 | # CONFIG_DEBUG_VM is not set |
1002 | # CONFIG_DEBUG_LIST is not set | ||
947 | CONFIG_FRAME_POINTER=y | 1003 | CONFIG_FRAME_POINTER=y |
948 | # CONFIG_UNWIND_INFO is not set | ||
949 | CONFIG_FORCED_INLINING=y | 1004 | CONFIG_FORCED_INLINING=y |
950 | # CONFIG_RCU_TORTURE_TEST is not set | 1005 | # CONFIG_RCU_TORTURE_TEST is not set |
951 | CONFIG_DEBUG_USER=y | 1006 | CONFIG_DEBUG_USER=y |
@@ -965,12 +1020,9 @@ CONFIG_DEBUG_LL=y | |||
965 | # CONFIG_CRYPTO is not set | 1020 | # CONFIG_CRYPTO is not set |
966 | 1021 | ||
967 | # | 1022 | # |
968 | # Hardware crypto devices | ||
969 | # | ||
970 | |||
971 | # | ||
972 | # Library routines | 1023 | # Library routines |
973 | # | 1024 | # |
1025 | CONFIG_BITREVERSE=y | ||
974 | # CONFIG_CRC_CCITT is not set | 1026 | # CONFIG_CRC_CCITT is not set |
975 | # CONFIG_CRC16 is not set | 1027 | # CONFIG_CRC16 is not set |
976 | CONFIG_CRC32=y | 1028 | CONFIG_CRC32=y |
@@ -978,3 +1030,4 @@ CONFIG_CRC32=y | |||
978 | CONFIG_ZLIB_INFLATE=y | 1030 | CONFIG_ZLIB_INFLATE=y |
979 | CONFIG_ZLIB_DEFLATE=y | 1031 | CONFIG_ZLIB_DEFLATE=y |
980 | CONFIG_PLIST=y | 1032 | CONFIG_PLIST=y |
1033 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/configs/onearm_defconfig b/arch/arm/configs/onearm_defconfig index 0498ebd7d5de..650a248613e5 100644 --- a/arch/arm/configs/onearm_defconfig +++ b/arch/arm/configs/onearm_defconfig | |||
@@ -1,14 +1,18 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.18-rc1 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Sun Jul 9 14:16:20 2006 | 4 | # Sat Dec 16 06:05:18 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | # CONFIG_GENERIC_TIME is not set | ||
7 | CONFIG_MMU=y | 8 | CONFIG_MMU=y |
8 | CONFIG_GENERIC_HARDIRQS=y | 9 | CONFIG_GENERIC_HARDIRQS=y |
10 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
9 | CONFIG_HARDIRQS_SW_RESEND=y | 11 | CONFIG_HARDIRQS_SW_RESEND=y |
10 | CONFIG_GENERIC_IRQ_PROBE=y | 12 | CONFIG_GENERIC_IRQ_PROBE=y |
11 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 13 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
14 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
15 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
12 | CONFIG_GENERIC_HWEIGHT=y | 16 | CONFIG_GENERIC_HWEIGHT=y |
13 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 17 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
14 | CONFIG_VECTORS_BASE=0xffff0000 | 18 | CONFIG_VECTORS_BASE=0xffff0000 |
@@ -28,16 +32,21 @@ CONFIG_LOCALVERSION="" | |||
28 | CONFIG_LOCALVERSION_AUTO=y | 32 | CONFIG_LOCALVERSION_AUTO=y |
29 | # CONFIG_SWAP is not set | 33 | # CONFIG_SWAP is not set |
30 | CONFIG_SYSVIPC=y | 34 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
31 | # CONFIG_POSIX_MQUEUE is not set | 36 | # CONFIG_POSIX_MQUEUE is not set |
32 | # CONFIG_BSD_PROCESS_ACCT is not set | 37 | # CONFIG_BSD_PROCESS_ACCT is not set |
33 | CONFIG_SYSCTL=y | 38 | # CONFIG_TASKSTATS is not set |
39 | # CONFIG_UTS_NS is not set | ||
34 | # CONFIG_AUDIT is not set | 40 | # CONFIG_AUDIT is not set |
35 | # CONFIG_IKCONFIG is not set | 41 | # CONFIG_IKCONFIG is not set |
42 | CONFIG_SYSFS_DEPRECATED=y | ||
36 | # CONFIG_RELAY is not set | 43 | # CONFIG_RELAY is not set |
37 | CONFIG_INITRAMFS_SOURCE="" | 44 | CONFIG_INITRAMFS_SOURCE="" |
38 | CONFIG_UID16=y | ||
39 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
46 | CONFIG_SYSCTL=y | ||
40 | CONFIG_EMBEDDED=y | 47 | CONFIG_EMBEDDED=y |
48 | CONFIG_UID16=y | ||
49 | CONFIG_SYSCTL_SYSCALL=y | ||
41 | CONFIG_KALLSYMS=y | 50 | CONFIG_KALLSYMS=y |
42 | # CONFIG_KALLSYMS_ALL is not set | 51 | # CONFIG_KALLSYMS_ALL is not set |
43 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 52 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -46,12 +55,12 @@ CONFIG_PRINTK=y | |||
46 | CONFIG_BUG=y | 55 | CONFIG_BUG=y |
47 | CONFIG_ELF_CORE=y | 56 | CONFIG_ELF_CORE=y |
48 | CONFIG_BASE_FULL=y | 57 | CONFIG_BASE_FULL=y |
49 | CONFIG_RT_MUTEXES=y | ||
50 | CONFIG_FUTEX=y | 58 | CONFIG_FUTEX=y |
51 | CONFIG_EPOLL=y | 59 | CONFIG_EPOLL=y |
52 | CONFIG_SHMEM=y | 60 | CONFIG_SHMEM=y |
53 | CONFIG_SLAB=y | 61 | CONFIG_SLAB=y |
54 | CONFIG_VM_EVENT_COUNTERS=y | 62 | CONFIG_VM_EVENT_COUNTERS=y |
63 | CONFIG_RT_MUTEXES=y | ||
55 | # CONFIG_TINY_SHMEM is not set | 64 | # CONFIG_TINY_SHMEM is not set |
56 | CONFIG_BASE_SMALL=0 | 65 | CONFIG_BASE_SMALL=0 |
57 | # CONFIG_SLOB is not set | 66 | # CONFIG_SLOB is not set |
@@ -69,7 +78,10 @@ CONFIG_KMOD=y | |||
69 | # | 78 | # |
70 | # Block layer | 79 | # Block layer |
71 | # | 80 | # |
81 | CONFIG_BLOCK=y | ||
82 | # CONFIG_LBD is not set | ||
72 | # CONFIG_BLK_DEV_IO_TRACE is not set | 83 | # CONFIG_BLK_DEV_IO_TRACE is not set |
84 | # CONFIG_LSF is not set | ||
73 | 85 | ||
74 | # | 86 | # |
75 | # IO Schedulers | 87 | # IO Schedulers |
@@ -101,7 +113,9 @@ CONFIG_ARCH_AT91=y | |||
101 | # CONFIG_ARCH_NETX is not set | 113 | # CONFIG_ARCH_NETX is not set |
102 | # CONFIG_ARCH_H720X is not set | 114 | # CONFIG_ARCH_H720X is not set |
103 | # CONFIG_ARCH_IMX is not set | 115 | # CONFIG_ARCH_IMX is not set |
104 | # CONFIG_ARCH_IOP3XX is not set | 116 | # CONFIG_ARCH_IOP32X is not set |
117 | # CONFIG_ARCH_IOP33X is not set | ||
118 | # CONFIG_ARCH_IOP13XX is not set | ||
105 | # CONFIG_ARCH_IXP4XX is not set | 119 | # CONFIG_ARCH_IXP4XX is not set |
106 | # CONFIG_ARCH_IXP2000 is not set | 120 | # CONFIG_ARCH_IXP2000 is not set |
107 | # CONFIG_ARCH_IXP23XX is not set | 121 | # CONFIG_ARCH_IXP23XX is not set |
@@ -118,10 +132,6 @@ CONFIG_ARCH_AT91=y | |||
118 | # | 132 | # |
119 | # Atmel AT91 System-on-Chip | 133 | # Atmel AT91 System-on-Chip |
120 | # | 134 | # |
121 | |||
122 | # | ||
123 | # Atmel AT91 Processors | ||
124 | # | ||
125 | CONFIG_ARCH_AT91RM9200=y | 135 | CONFIG_ARCH_AT91RM9200=y |
126 | # CONFIG_ARCH_AT91SAM9260 is not set | 136 | # CONFIG_ARCH_AT91SAM9260 is not set |
127 | # CONFIG_ARCH_AT91SAM9261 is not set | 137 | # CONFIG_ARCH_AT91SAM9261 is not set |
@@ -140,6 +150,10 @@ CONFIG_MACH_ONEARM=y | |||
140 | # CONFIG_MACH_KAFA is not set | 150 | # CONFIG_MACH_KAFA is not set |
141 | 151 | ||
142 | # | 152 | # |
153 | # AT91 Board Options | ||
154 | # | ||
155 | |||
156 | # | ||
143 | # AT91 Feature Selections | 157 | # AT91 Feature Selections |
144 | # | 158 | # |
145 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | 159 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y |
@@ -149,12 +163,14 @@ CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | |||
149 | # | 163 | # |
150 | CONFIG_CPU_32=y | 164 | CONFIG_CPU_32=y |
151 | CONFIG_CPU_ARM920T=y | 165 | CONFIG_CPU_ARM920T=y |
152 | CONFIG_CPU_32v4=y | 166 | CONFIG_CPU_32v4T=y |
153 | CONFIG_CPU_ABRT_EV4T=y | 167 | CONFIG_CPU_ABRT_EV4T=y |
154 | CONFIG_CPU_CACHE_V4WT=y | 168 | CONFIG_CPU_CACHE_V4WT=y |
155 | CONFIG_CPU_CACHE_VIVT=y | 169 | CONFIG_CPU_CACHE_VIVT=y |
156 | CONFIG_CPU_COPY_V4WB=y | 170 | CONFIG_CPU_COPY_V4WB=y |
157 | CONFIG_CPU_TLB_V4WBI=y | 171 | CONFIG_CPU_TLB_V4WBI=y |
172 | CONFIG_CPU_CP15=y | ||
173 | CONFIG_CPU_CP15_MMU=y | ||
158 | 174 | ||
159 | # | 175 | # |
160 | # Processor Features | 176 | # Processor Features |
@@ -251,6 +267,7 @@ CONFIG_PACKET=y | |||
251 | CONFIG_UNIX=y | 267 | CONFIG_UNIX=y |
252 | CONFIG_XFRM=y | 268 | CONFIG_XFRM=y |
253 | # CONFIG_XFRM_USER is not set | 269 | # CONFIG_XFRM_USER is not set |
270 | # CONFIG_XFRM_SUB_POLICY is not set | ||
254 | # CONFIG_NET_KEY is not set | 271 | # CONFIG_NET_KEY is not set |
255 | CONFIG_INET=y | 272 | CONFIG_INET=y |
256 | # CONFIG_IP_MULTICAST is not set | 273 | # CONFIG_IP_MULTICAST is not set |
@@ -271,13 +288,29 @@ CONFIG_IP_PNP_BOOTP=y | |||
271 | # CONFIG_INET_TUNNEL is not set | 288 | # CONFIG_INET_TUNNEL is not set |
272 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 289 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
273 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 290 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
291 | CONFIG_INET_XFRM_MODE_BEET=y | ||
274 | CONFIG_INET_DIAG=y | 292 | CONFIG_INET_DIAG=y |
275 | CONFIG_INET_TCP_DIAG=y | 293 | CONFIG_INET_TCP_DIAG=y |
276 | # CONFIG_TCP_CONG_ADVANCED is not set | 294 | # CONFIG_TCP_CONG_ADVANCED is not set |
277 | CONFIG_TCP_CONG_BIC=y | 295 | CONFIG_TCP_CONG_CUBIC=y |
278 | # CONFIG_IPV6 is not set | 296 | CONFIG_DEFAULT_TCP_CONG="cubic" |
297 | # CONFIG_TCP_MD5SIG is not set | ||
298 | CONFIG_IPV6=y | ||
299 | # CONFIG_IPV6_PRIVACY is not set | ||
300 | # CONFIG_IPV6_ROUTER_PREF is not set | ||
301 | # CONFIG_INET6_AH is not set | ||
302 | # CONFIG_INET6_ESP is not set | ||
303 | # CONFIG_INET6_IPCOMP is not set | ||
304 | # CONFIG_IPV6_MIP6 is not set | ||
279 | # CONFIG_INET6_XFRM_TUNNEL is not set | 305 | # CONFIG_INET6_XFRM_TUNNEL is not set |
280 | # CONFIG_INET6_TUNNEL is not set | 306 | # CONFIG_INET6_TUNNEL is not set |
307 | # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set | ||
308 | # CONFIG_INET6_XFRM_MODE_TUNNEL is not set | ||
309 | # CONFIG_INET6_XFRM_MODE_BEET is not set | ||
310 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | ||
311 | # CONFIG_IPV6_SIT is not set | ||
312 | # CONFIG_IPV6_TUNNEL is not set | ||
313 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
281 | # CONFIG_NETWORK_SECMARK is not set | 314 | # CONFIG_NETWORK_SECMARK is not set |
282 | # CONFIG_NETFILTER is not set | 315 | # CONFIG_NETFILTER is not set |
283 | 316 | ||
@@ -304,7 +337,6 @@ CONFIG_TCP_CONG_BIC=y | |||
304 | # CONFIG_ATALK is not set | 337 | # CONFIG_ATALK is not set |
305 | # CONFIG_X25 is not set | 338 | # CONFIG_X25 is not set |
306 | # CONFIG_LAPB is not set | 339 | # CONFIG_LAPB is not set |
307 | # CONFIG_NET_DIVERT is not set | ||
308 | # CONFIG_ECONET is not set | 340 | # CONFIG_ECONET is not set |
309 | # CONFIG_WAN_ROUTER is not set | 341 | # CONFIG_WAN_ROUTER is not set |
310 | 342 | ||
@@ -360,6 +392,7 @@ CONFIG_MTD_BLOCK=y | |||
360 | # CONFIG_NFTL is not set | 392 | # CONFIG_NFTL is not set |
361 | # CONFIG_INFTL is not set | 393 | # CONFIG_INFTL is not set |
362 | # CONFIG_RFD_FTL is not set | 394 | # CONFIG_RFD_FTL is not set |
395 | # CONFIG_SSFDC is not set | ||
363 | 396 | ||
364 | # | 397 | # |
365 | # RAM/ROM/Flash chip drivers | 398 | # RAM/ROM/Flash chip drivers |
@@ -438,11 +471,12 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=0 | |||
438 | # | 471 | # |
439 | # CONFIG_BLK_DEV_COW_COMMON is not set | 472 | # CONFIG_BLK_DEV_COW_COMMON is not set |
440 | # CONFIG_BLK_DEV_LOOP is not set | 473 | # CONFIG_BLK_DEV_LOOP is not set |
441 | # CONFIG_BLK_DEV_NBD is not set | 474 | CONFIG_BLK_DEV_NBD=y |
442 | # CONFIG_BLK_DEV_UB is not set | 475 | # CONFIG_BLK_DEV_UB is not set |
443 | CONFIG_BLK_DEV_RAM=y | 476 | CONFIG_BLK_DEV_RAM=y |
444 | CONFIG_BLK_DEV_RAM_COUNT=16 | 477 | CONFIG_BLK_DEV_RAM_COUNT=16 |
445 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 478 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
479 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
446 | CONFIG_BLK_DEV_INITRD=y | 480 | CONFIG_BLK_DEV_INITRD=y |
447 | # CONFIG_CDROM_PKTCDVD is not set | 481 | # CONFIG_CDROM_PKTCDVD is not set |
448 | # CONFIG_ATA_OVER_ETH is not set | 482 | # CONFIG_ATA_OVER_ETH is not set |
@@ -457,6 +491,12 @@ CONFIG_BLK_DEV_INITRD=y | |||
457 | # | 491 | # |
458 | # CONFIG_RAID_ATTRS is not set | 492 | # CONFIG_RAID_ATTRS is not set |
459 | # CONFIG_SCSI is not set | 493 | # CONFIG_SCSI is not set |
494 | # CONFIG_SCSI_NETLINK is not set | ||
495 | |||
496 | # | ||
497 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
498 | # | ||
499 | # CONFIG_ATA is not set | ||
460 | 500 | ||
461 | # | 501 | # |
462 | # Multi-device support (RAID and LVM) | 502 | # Multi-device support (RAID and LVM) |
@@ -541,6 +581,7 @@ CONFIG_ARM_AT91_ETHER=y | |||
541 | # Input device support | 581 | # Input device support |
542 | # | 582 | # |
543 | CONFIG_INPUT=y | 583 | CONFIG_INPUT=y |
584 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
544 | 585 | ||
545 | # | 586 | # |
546 | # Userland interfaces | 587 | # Userland interfaces |
@@ -619,10 +660,6 @@ CONFIG_AT91RM9200_WATCHDOG=y | |||
619 | # CONFIG_R3964 is not set | 660 | # CONFIG_R3964 is not set |
620 | 661 | ||
621 | # | 662 | # |
622 | # Ftape, the floppy tape device driver | ||
623 | # | ||
624 | |||
625 | # | ||
626 | # PCMCIA character devices | 663 | # PCMCIA character devices |
627 | # | 664 | # |
628 | # CONFIG_SYNCLINK_CS is not set | 665 | # CONFIG_SYNCLINK_CS is not set |
@@ -634,7 +671,6 @@ CONFIG_AT91RM9200_WATCHDOG=y | |||
634 | # TPM devices | 671 | # TPM devices |
635 | # | 672 | # |
636 | # CONFIG_TCG_TPM is not set | 673 | # CONFIG_TCG_TPM is not set |
637 | # CONFIG_TELCLOCK is not set | ||
638 | 674 | ||
639 | # | 675 | # |
640 | # I2C support | 676 | # I2C support |
@@ -652,6 +688,7 @@ CONFIG_I2C_CHARDEV=y | |||
652 | # | 688 | # |
653 | # I2C Hardware Bus support | 689 | # I2C Hardware Bus support |
654 | # | 690 | # |
691 | # CONFIG_I2C_AT91 is not set | ||
655 | # CONFIG_I2C_OCORES is not set | 692 | # CONFIG_I2C_OCORES is not set |
656 | # CONFIG_I2C_PARPORT_LIGHT is not set | 693 | # CONFIG_I2C_PARPORT_LIGHT is not set |
657 | # CONFIG_I2C_STUB is not set | 694 | # CONFIG_I2C_STUB is not set |
@@ -681,6 +718,7 @@ CONFIG_I2C_CHARDEV=y | |||
681 | # | 718 | # |
682 | # Dallas's 1-wire bus | 719 | # Dallas's 1-wire bus |
683 | # | 720 | # |
721 | # CONFIG_W1 is not set | ||
684 | 722 | ||
685 | # | 723 | # |
686 | # Hardware Monitoring support | 724 | # Hardware Monitoring support |
@@ -714,12 +752,15 @@ CONFIG_HWMON=y | |||
714 | # CONFIG_SENSORS_LM92 is not set | 752 | # CONFIG_SENSORS_LM92 is not set |
715 | # CONFIG_SENSORS_MAX1619 is not set | 753 | # CONFIG_SENSORS_MAX1619 is not set |
716 | # CONFIG_SENSORS_PC87360 is not set | 754 | # CONFIG_SENSORS_PC87360 is not set |
755 | # CONFIG_SENSORS_PC87427 is not set | ||
717 | # CONFIG_SENSORS_SMSC47M1 is not set | 756 | # CONFIG_SENSORS_SMSC47M1 is not set |
718 | # CONFIG_SENSORS_SMSC47M192 is not set | 757 | # CONFIG_SENSORS_SMSC47M192 is not set |
719 | # CONFIG_SENSORS_SMSC47B397 is not set | 758 | # CONFIG_SENSORS_SMSC47B397 is not set |
759 | # CONFIG_SENSORS_VT1211 is not set | ||
720 | # CONFIG_SENSORS_W83781D is not set | 760 | # CONFIG_SENSORS_W83781D is not set |
721 | # CONFIG_SENSORS_W83791D is not set | 761 | # CONFIG_SENSORS_W83791D is not set |
722 | # CONFIG_SENSORS_W83792D is not set | 762 | # CONFIG_SENSORS_W83792D is not set |
763 | # CONFIG_SENSORS_W83793 is not set | ||
723 | # CONFIG_SENSORS_W83L785TS is not set | 764 | # CONFIG_SENSORS_W83L785TS is not set |
724 | # CONFIG_SENSORS_W83627HF is not set | 765 | # CONFIG_SENSORS_W83627HF is not set |
725 | # CONFIG_SENSORS_W83627EHF is not set | 766 | # CONFIG_SENSORS_W83627EHF is not set |
@@ -728,6 +769,7 @@ CONFIG_HWMON=y | |||
728 | # | 769 | # |
729 | # Misc devices | 770 | # Misc devices |
730 | # | 771 | # |
772 | # CONFIG_TIFM_CORE is not set | ||
731 | 773 | ||
732 | # | 774 | # |
733 | # LED devices | 775 | # LED devices |
@@ -746,7 +788,6 @@ CONFIG_HWMON=y | |||
746 | # Multimedia devices | 788 | # Multimedia devices |
747 | # | 789 | # |
748 | # CONFIG_VIDEO_DEV is not set | 790 | # CONFIG_VIDEO_DEV is not set |
749 | CONFIG_VIDEO_V4L2=y | ||
750 | 791 | ||
751 | # | 792 | # |
752 | # Digital Video Broadcasting Devices | 793 | # Digital Video Broadcasting Devices |
@@ -759,6 +800,7 @@ CONFIG_VIDEO_V4L2=y | |||
759 | # | 800 | # |
760 | # CONFIG_FIRMWARE_EDID is not set | 801 | # CONFIG_FIRMWARE_EDID is not set |
761 | # CONFIG_FB is not set | 802 | # CONFIG_FB is not set |
803 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
762 | 804 | ||
763 | # | 805 | # |
764 | # Sound | 806 | # Sound |
@@ -766,6 +808,11 @@ CONFIG_VIDEO_V4L2=y | |||
766 | # CONFIG_SOUND is not set | 808 | # CONFIG_SOUND is not set |
767 | 809 | ||
768 | # | 810 | # |
811 | # HID Devices | ||
812 | # | ||
813 | CONFIG_HID=y | ||
814 | |||
815 | # | ||
769 | # USB support | 816 | # USB support |
770 | # | 817 | # |
771 | CONFIG_USB_ARCH_HAS_HCD=y | 818 | CONFIG_USB_ARCH_HAS_HCD=y |
@@ -780,6 +827,7 @@ CONFIG_USB_DEBUG=y | |||
780 | CONFIG_USB_DEVICEFS=y | 827 | CONFIG_USB_DEVICEFS=y |
781 | # CONFIG_USB_BANDWIDTH is not set | 828 | # CONFIG_USB_BANDWIDTH is not set |
782 | # CONFIG_USB_DYNAMIC_MINORS is not set | 829 | # CONFIG_USB_DYNAMIC_MINORS is not set |
830 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
783 | # CONFIG_USB_OTG is not set | 831 | # CONFIG_USB_OTG is not set |
784 | 832 | ||
785 | # | 833 | # |
@@ -804,7 +852,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
804 | # | 852 | # |
805 | # may also be needed; see USB_STORAGE Help for more information | 853 | # may also be needed; see USB_STORAGE Help for more information |
806 | # | 854 | # |
807 | # CONFIG_USB_STORAGE is not set | ||
808 | # CONFIG_USB_LIBUSUAL is not set | 855 | # CONFIG_USB_LIBUSUAL is not set |
809 | 856 | ||
810 | # | 857 | # |
@@ -842,6 +889,7 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y | |||
842 | # CONFIG_USB_KAWETH is not set | 889 | # CONFIG_USB_KAWETH is not set |
843 | # CONFIG_USB_PEGASUS is not set | 890 | # CONFIG_USB_PEGASUS is not set |
844 | # CONFIG_USB_RTL8150 is not set | 891 | # CONFIG_USB_RTL8150 is not set |
892 | # CONFIG_USB_USBNET_MII is not set | ||
845 | # CONFIG_USB_USBNET is not set | 893 | # CONFIG_USB_USBNET is not set |
846 | CONFIG_USB_MON=y | 894 | CONFIG_USB_MON=y |
847 | 895 | ||
@@ -859,18 +907,20 @@ CONFIG_USB_MON=y | |||
859 | # | 907 | # |
860 | # CONFIG_USB_EMI62 is not set | 908 | # CONFIG_USB_EMI62 is not set |
861 | # CONFIG_USB_EMI26 is not set | 909 | # CONFIG_USB_EMI26 is not set |
910 | # CONFIG_USB_ADUTUX is not set | ||
862 | # CONFIG_USB_AUERSWALD is not set | 911 | # CONFIG_USB_AUERSWALD is not set |
863 | # CONFIG_USB_RIO500 is not set | 912 | # CONFIG_USB_RIO500 is not set |
864 | # CONFIG_USB_LEGOTOWER is not set | 913 | # CONFIG_USB_LEGOTOWER is not set |
865 | # CONFIG_USB_LCD is not set | 914 | # CONFIG_USB_LCD is not set |
866 | # CONFIG_USB_LED is not set | 915 | # CONFIG_USB_LED is not set |
867 | # CONFIG_USB_CY7C63 is not set | 916 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
868 | # CONFIG_USB_CYTHERM is not set | 917 | # CONFIG_USB_CYTHERM is not set |
869 | # CONFIG_USB_PHIDGETKIT is not set | 918 | # CONFIG_USB_PHIDGET is not set |
870 | # CONFIG_USB_PHIDGETSERVO is not set | ||
871 | # CONFIG_USB_IDMOUSE is not set | 919 | # CONFIG_USB_IDMOUSE is not set |
920 | # CONFIG_USB_FTDI_ELAN is not set | ||
872 | # CONFIG_USB_APPLEDISPLAY is not set | 921 | # CONFIG_USB_APPLEDISPLAY is not set |
873 | # CONFIG_USB_LD is not set | 922 | # CONFIG_USB_LD is not set |
923 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
874 | # CONFIG_USB_TEST is not set | 924 | # CONFIG_USB_TEST is not set |
875 | 925 | ||
876 | # | 926 | # |
@@ -897,6 +947,7 @@ CONFIG_USB_AT91=y | |||
897 | # CONFIG_USB_GADGETFS is not set | 947 | # CONFIG_USB_GADGETFS is not set |
898 | # CONFIG_USB_FILE_STORAGE is not set | 948 | # CONFIG_USB_FILE_STORAGE is not set |
899 | # CONFIG_USB_G_SERIAL is not set | 949 | # CONFIG_USB_G_SERIAL is not set |
950 | # CONFIG_USB_MIDI_GADGET is not set | ||
900 | 951 | ||
901 | # | 952 | # |
902 | # MMC/SD Card support | 953 | # MMC/SD Card support |
@@ -904,7 +955,8 @@ CONFIG_USB_AT91=y | |||
904 | CONFIG_MMC=y | 955 | CONFIG_MMC=y |
905 | # CONFIG_MMC_DEBUG is not set | 956 | # CONFIG_MMC_DEBUG is not set |
906 | CONFIG_MMC_BLOCK=y | 957 | CONFIG_MMC_BLOCK=y |
907 | CONFIG_MMC_AT91RM9200=y | 958 | # CONFIG_MMC_AT91 is not set |
959 | # CONFIG_MMC_TIFM_SD is not set | ||
908 | 960 | ||
909 | # | 961 | # |
910 | # Real Time Clock | 962 | # Real Time Clock |
@@ -919,10 +971,12 @@ CONFIG_EXT2_FS=y | |||
919 | # CONFIG_EXT2_FS_XATTR is not set | 971 | # CONFIG_EXT2_FS_XATTR is not set |
920 | # CONFIG_EXT2_FS_XIP is not set | 972 | # CONFIG_EXT2_FS_XIP is not set |
921 | # CONFIG_EXT3_FS is not set | 973 | # CONFIG_EXT3_FS is not set |
974 | # CONFIG_EXT4DEV_FS is not set | ||
922 | # CONFIG_REISERFS_FS is not set | 975 | # CONFIG_REISERFS_FS is not set |
923 | # CONFIG_JFS_FS is not set | 976 | # CONFIG_JFS_FS is not set |
924 | CONFIG_FS_POSIX_ACL=y | 977 | CONFIG_FS_POSIX_ACL=y |
925 | # CONFIG_XFS_FS is not set | 978 | # CONFIG_XFS_FS is not set |
979 | # CONFIG_GFS2_FS is not set | ||
926 | # CONFIG_OCFS2_FS is not set | 980 | # CONFIG_OCFS2_FS is not set |
927 | # CONFIG_MINIX_FS is not set | 981 | # CONFIG_MINIX_FS is not set |
928 | # CONFIG_ROMFS_FS is not set | 982 | # CONFIG_ROMFS_FS is not set |
@@ -951,8 +1005,10 @@ CONFIG_DNOTIFY=y | |||
951 | # Pseudo filesystems | 1005 | # Pseudo filesystems |
952 | # | 1006 | # |
953 | CONFIG_PROC_FS=y | 1007 | CONFIG_PROC_FS=y |
1008 | CONFIG_PROC_SYSCTL=y | ||
954 | CONFIG_SYSFS=y | 1009 | CONFIG_SYSFS=y |
955 | CONFIG_TMPFS=y | 1010 | CONFIG_TMPFS=y |
1011 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
956 | # CONFIG_HUGETLB_PAGE is not set | 1012 | # CONFIG_HUGETLB_PAGE is not set |
957 | CONFIG_RAMFS=y | 1013 | CONFIG_RAMFS=y |
958 | # CONFIG_CONFIGFS_FS is not set | 1014 | # CONFIG_CONFIGFS_FS is not set |
@@ -995,7 +1051,6 @@ CONFIG_SUNRPC=y | |||
995 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1051 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
996 | # CONFIG_SMB_FS is not set | 1052 | # CONFIG_SMB_FS is not set |
997 | # CONFIG_CIFS is not set | 1053 | # CONFIG_CIFS is not set |
998 | # CONFIG_CIFS_DEBUG2 is not set | ||
999 | # CONFIG_NCP_FS is not set | 1054 | # CONFIG_NCP_FS is not set |
1000 | # CONFIG_CODA_FS is not set | 1055 | # CONFIG_CODA_FS is not set |
1001 | # CONFIG_AFS_FS is not set | 1056 | # CONFIG_AFS_FS is not set |
@@ -1013,6 +1068,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1013 | # CONFIG_NLS is not set | 1068 | # CONFIG_NLS is not set |
1014 | 1069 | ||
1015 | # | 1070 | # |
1071 | # Distributed Lock Manager | ||
1072 | # | ||
1073 | # CONFIG_DLM is not set | ||
1074 | |||
1075 | # | ||
1016 | # Profiling support | 1076 | # Profiling support |
1017 | # | 1077 | # |
1018 | # CONFIG_PROFILING is not set | 1078 | # CONFIG_PROFILING is not set |
@@ -1021,8 +1081,11 @@ CONFIG_MSDOS_PARTITION=y | |||
1021 | # Kernel hacking | 1081 | # Kernel hacking |
1022 | # | 1082 | # |
1023 | # CONFIG_PRINTK_TIME is not set | 1083 | # CONFIG_PRINTK_TIME is not set |
1084 | CONFIG_ENABLE_MUST_CHECK=y | ||
1024 | # CONFIG_MAGIC_SYSRQ is not set | 1085 | # CONFIG_MAGIC_SYSRQ is not set |
1025 | # CONFIG_UNUSED_SYMBOLS is not set | 1086 | # CONFIG_UNUSED_SYMBOLS is not set |
1087 | # CONFIG_DEBUG_FS is not set | ||
1088 | # CONFIG_HEADERS_CHECK is not set | ||
1026 | CONFIG_DEBUG_KERNEL=y | 1089 | CONFIG_DEBUG_KERNEL=y |
1027 | CONFIG_LOG_BUF_SHIFT=14 | 1090 | CONFIG_LOG_BUF_SHIFT=14 |
1028 | CONFIG_DETECT_SOFTLOCKUP=y | 1091 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1038,10 +1101,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1038 | # CONFIG_DEBUG_KOBJECT is not set | 1101 | # CONFIG_DEBUG_KOBJECT is not set |
1039 | CONFIG_DEBUG_BUGVERBOSE=y | 1102 | CONFIG_DEBUG_BUGVERBOSE=y |
1040 | # CONFIG_DEBUG_INFO is not set | 1103 | # CONFIG_DEBUG_INFO is not set |
1041 | # CONFIG_DEBUG_FS is not set | ||
1042 | # CONFIG_DEBUG_VM is not set | 1104 | # CONFIG_DEBUG_VM is not set |
1105 | # CONFIG_DEBUG_LIST is not set | ||
1043 | CONFIG_FRAME_POINTER=y | 1106 | CONFIG_FRAME_POINTER=y |
1044 | # CONFIG_UNWIND_INFO is not set | ||
1045 | CONFIG_FORCED_INLINING=y | 1107 | CONFIG_FORCED_INLINING=y |
1046 | # CONFIG_RCU_TORTURE_TEST is not set | 1108 | # CONFIG_RCU_TORTURE_TEST is not set |
1047 | CONFIG_DEBUG_USER=y | 1109 | CONFIG_DEBUG_USER=y |
@@ -1061,15 +1123,13 @@ CONFIG_DEBUG_LL=y | |||
1061 | # CONFIG_CRYPTO is not set | 1123 | # CONFIG_CRYPTO is not set |
1062 | 1124 | ||
1063 | # | 1125 | # |
1064 | # Hardware crypto devices | ||
1065 | # | ||
1066 | |||
1067 | # | ||
1068 | # Library routines | 1126 | # Library routines |
1069 | # | 1127 | # |
1128 | CONFIG_BITREVERSE=y | ||
1070 | # CONFIG_CRC_CCITT is not set | 1129 | # CONFIG_CRC_CCITT is not set |
1071 | # CONFIG_CRC16 is not set | 1130 | # CONFIG_CRC16 is not set |
1072 | CONFIG_CRC32=y | 1131 | CONFIG_CRC32=y |
1073 | # CONFIG_LIBCRC32C is not set | 1132 | # CONFIG_LIBCRC32C is not set |
1074 | CONFIG_ZLIB_INFLATE=y | 1133 | CONFIG_ZLIB_INFLATE=y |
1075 | CONFIG_PLIST=y | 1134 | CONFIG_PLIST=y |
1135 | CONFIG_IOMAP_COPY=y | ||
diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S index e8f74363328c..f7598cbc7ec5 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -110,7 +110,7 @@ | |||
110 | CALL(sys_ni_syscall) /* was sys_profil */ | 110 | CALL(sys_ni_syscall) /* was sys_profil */ |
111 | CALL(sys_statfs) | 111 | CALL(sys_statfs) |
112 | /* 100 */ CALL(sys_fstatfs) | 112 | /* 100 */ CALL(sys_fstatfs) |
113 | CALL(sys_ni_syscall) | 113 | CALL(sys_ni_syscall) /* sys_ioperm */ |
114 | CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall))) | 114 | CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall))) |
115 | CALL(sys_syslog) | 115 | CALL(sys_syslog) |
116 | CALL(sys_setitimer) | 116 | CALL(sys_setitimer) |
@@ -132,7 +132,7 @@ | |||
132 | /* 120 */ CALL(sys_clone_wrapper) | 132 | /* 120 */ CALL(sys_clone_wrapper) |
133 | CALL(sys_setdomainname) | 133 | CALL(sys_setdomainname) |
134 | CALL(sys_newuname) | 134 | CALL(sys_newuname) |
135 | CALL(sys_ni_syscall) | 135 | CALL(sys_ni_syscall) /* modify_ldt */ |
136 | CALL(sys_adjtimex) | 136 | CALL(sys_adjtimex) |
137 | /* 125 */ CALL(sys_mprotect) | 137 | /* 125 */ CALL(sys_mprotect) |
138 | CALL(sys_sigprocmask) | 138 | CALL(sys_sigprocmask) |
@@ -146,7 +146,7 @@ | |||
146 | CALL(sys_bdflush) | 146 | CALL(sys_bdflush) |
147 | /* 135 */ CALL(sys_sysfs) | 147 | /* 135 */ CALL(sys_sysfs) |
148 | CALL(sys_personality) | 148 | CALL(sys_personality) |
149 | CALL(sys_ni_syscall) /* CALL(_sys_afs_syscall) */ | 149 | CALL(sys_ni_syscall) /* reserved for afs_syscall */ |
150 | CALL(sys_setfsuid16) | 150 | CALL(sys_setfsuid16) |
151 | CALL(sys_setfsgid16) | 151 | CALL(sys_setfsgid16) |
152 | /* 140 */ CALL(sys_llseek) | 152 | /* 140 */ CALL(sys_llseek) |
@@ -175,7 +175,7 @@ | |||
175 | CALL(sys_arm_mremap) | 175 | CALL(sys_arm_mremap) |
176 | CALL(sys_setresuid16) | 176 | CALL(sys_setresuid16) |
177 | /* 165 */ CALL(sys_getresuid16) | 177 | /* 165 */ CALL(sys_getresuid16) |
178 | CALL(sys_ni_syscall) | 178 | CALL(sys_ni_syscall) /* vm86 */ |
179 | CALL(sys_ni_syscall) /* was sys_query_module */ | 179 | CALL(sys_ni_syscall) /* was sys_query_module */ |
180 | CALL(sys_poll) | 180 | CALL(sys_poll) |
181 | CALL(sys_nfsservctl) | 181 | CALL(sys_nfsservctl) |
@@ -197,8 +197,8 @@ | |||
197 | /* 185 */ CALL(sys_capset) | 197 | /* 185 */ CALL(sys_capset) |
198 | CALL(sys_sigaltstack_wrapper) | 198 | CALL(sys_sigaltstack_wrapper) |
199 | CALL(sys_sendfile) | 199 | CALL(sys_sendfile) |
200 | CALL(sys_ni_syscall) | 200 | CALL(sys_ni_syscall) /* getpmsg */ |
201 | CALL(sys_ni_syscall) | 201 | CALL(sys_ni_syscall) /* putpmsg */ |
202 | /* 190 */ CALL(sys_vfork_wrapper) | 202 | /* 190 */ CALL(sys_vfork_wrapper) |
203 | CALL(sys_getrlimit) | 203 | CALL(sys_getrlimit) |
204 | CALL(sys_mmap2) | 204 | CALL(sys_mmap2) |
@@ -344,6 +344,18 @@ | |||
344 | CALL(sys_readlinkat) | 344 | CALL(sys_readlinkat) |
345 | CALL(sys_fchmodat) | 345 | CALL(sys_fchmodat) |
346 | CALL(sys_faccessat) | 346 | CALL(sys_faccessat) |
347 | /* 335 */ CALL(sys_ni_syscall) /* eventually pselect6 */ | ||
348 | CALL(sys_ni_syscall) /* eventually ppoll */ | ||
349 | CALL(sys_unshare) | ||
350 | CALL(sys_set_robust_list) | ||
351 | CALL(sys_get_robust_list) | ||
352 | /* 340 */ CALL(sys_splice) | ||
353 | CALL(sys_arm_sync_file_range) | ||
354 | CALL(sys_tee) | ||
355 | CALL(sys_vmsplice) | ||
356 | CALL(sys_move_pages) | ||
357 | /* 345 */ CALL(sys_getcpu) | ||
358 | CALL(sys_ni_syscall) /* eventually epoll_pwait */ | ||
347 | #ifndef syscalls_counted | 359 | #ifndef syscalls_counted |
348 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls | 360 | .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls |
349 | #define syscalls_counted | 361 | #define syscalls_counted |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index cf2bd4242803..bbab134cd82d 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -855,6 +855,7 @@ static const char *hwcap_str[] = { | |||
855 | "edsp", | 855 | "edsp", |
856 | "java", | 856 | "java", |
857 | "iwmmxt", | 857 | "iwmmxt", |
858 | "crunch", | ||
858 | NULL | 859 | NULL |
859 | }; | 860 | }; |
860 | 861 | ||
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index 00c18d35913c..3d4fcbc16276 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
@@ -328,3 +328,16 @@ asmlinkage long sys_arm_fadvise64_64(int fd, int advice, | |||
328 | { | 328 | { |
329 | return sys_fadvise64_64(fd, offset, len, advice); | 329 | return sys_fadvise64_64(fd, offset, len, advice); |
330 | } | 330 | } |
331 | |||
332 | /* | ||
333 | * Yet more syscall fsckage - we can't fit sys_sync_file_range's | ||
334 | * arguments into the available registers with EABI. So, let's | ||
335 | * create an ARM specific syscall for this which has _sane_ | ||
336 | * arguments. (This incidentally also has an ABI-independent | ||
337 | * argument layout.) | ||
338 | */ | ||
339 | asmlinkage long sys_arm_sync_file_range(int fd, unsigned int flags, | ||
340 | loff_t offset, loff_t nbytes) | ||
341 | { | ||
342 | return sys_sync_file_range(fd, offset, nbytes, flags); | ||
343 | } | ||
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index d649b39711d4..6b26346191c0 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c | |||
@@ -477,4 +477,8 @@ void __init ep93xx_init_devices(void) | |||
477 | 477 | ||
478 | platform_device_register(&ep93xx_rtc_device); | 478 | platform_device_register(&ep93xx_rtc_device); |
479 | platform_device_register(&ep93xx_ohci_device); | 479 | platform_device_register(&ep93xx_ohci_device); |
480 | |||
481 | #ifdef CONFIG_CRUNCH | ||
482 | elf_hwcap |= HWCAP_CRUNCH; | ||
483 | #endif | ||
480 | } | 484 | } |
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c index ee595786cd22..2a1bbfe9896f 100644 --- a/arch/arm/mach-iop13xx/iq81340mc.c +++ b/arch/arm/mach-iop13xx/iq81340mc.c | |||
@@ -88,11 +88,11 @@ static struct sys_timer iq81340mc_timer = { | |||
88 | 88 | ||
89 | MACHINE_START(IQ81340MC, "Intel IQ81340MC") | 89 | MACHINE_START(IQ81340MC, "Intel IQ81340MC") |
90 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ | 90 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ |
91 | .phys_io = PHYS_IO, | 91 | .phys_io = IOP13XX_PMMR_PHYS_MEM_BASE, |
92 | .io_pg_offst = IO_PG_OFFSET, | 92 | .io_pg_offst = (IOP13XX_PMMR_VIRT_MEM_BASE >> 18) & 0xfffc, |
93 | .boot_params = 0x00000100, | ||
93 | .map_io = iop13xx_map_io, | 94 | .map_io = iop13xx_map_io, |
94 | .init_irq = iop13xx_init_irq, | 95 | .init_irq = iop13xx_init_irq, |
95 | .timer = &iq81340mc_timer, | 96 | .timer = &iq81340mc_timer, |
96 | .boot_params = BOOT_PARAM_OFFSET, | ||
97 | .init_machine = iq81340mc_init, | 97 | .init_machine = iq81340mc_init, |
98 | MACHINE_END | 98 | MACHINE_END |
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c index 6677e14b61bf..5ad2b62c9bfd 100644 --- a/arch/arm/mach-iop13xx/iq81340sc.c +++ b/arch/arm/mach-iop13xx/iq81340sc.c | |||
@@ -90,11 +90,11 @@ static struct sys_timer iq81340sc_timer = { | |||
90 | 90 | ||
91 | MACHINE_START(IQ81340SC, "Intel IQ81340SC") | 91 | MACHINE_START(IQ81340SC, "Intel IQ81340SC") |
92 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ | 92 | /* Maintainer: Dan Williams <dan.j.williams@intel.com> */ |
93 | .phys_io = PHYS_IO, | 93 | .phys_io = IOP13XX_PMMR_PHYS_MEM_BASE, |
94 | .io_pg_offst = IO_PG_OFFSET, | 94 | .io_pg_offst = (IOP13XX_PMMR_VIRT_MEM_BASE >> 18) & 0xfffc, |
95 | .boot_params = 0x00000100, | ||
95 | .map_io = iop13xx_map_io, | 96 | .map_io = iop13xx_map_io, |
96 | .init_irq = iop13xx_init_irq, | 97 | .init_irq = iop13xx_init_irq, |
97 | .timer = &iq81340sc_timer, | 98 | .timer = &iq81340sc_timer, |
98 | .boot_params = BOOT_PARAM_OFFSET, | ||
99 | .init_machine = iq81340sc_init, | 99 | .init_machine = iq81340sc_init, |
100 | MACHINE_END | 100 | MACHINE_END |
diff --git a/arch/arm/mach-iop13xx/irq.c b/arch/arm/mach-iop13xx/irq.c index c4d9c8c5579c..dbbc07c38b14 100644 --- a/arch/arm/mach-iop13xx/irq.c +++ b/arch/arm/mach-iop13xx/irq.c | |||
@@ -222,25 +222,29 @@ iop13xx_irq_unmask3(unsigned int irq) | |||
222 | iop13xx_cp6_restore(cp_flags); | 222 | iop13xx_cp6_restore(cp_flags); |
223 | } | 223 | } |
224 | 224 | ||
225 | static struct irqchip iop13xx_irqchip0 = { | 225 | static struct irq_chip iop13xx_irqchip1 = { |
226 | .name = "IOP13xx-1", | ||
226 | .ack = iop13xx_irq_mask0, | 227 | .ack = iop13xx_irq_mask0, |
227 | .mask = iop13xx_irq_mask0, | 228 | .mask = iop13xx_irq_mask0, |
228 | .unmask = iop13xx_irq_unmask0, | 229 | .unmask = iop13xx_irq_unmask0, |
229 | }; | 230 | }; |
230 | 231 | ||
231 | static struct irqchip iop13xx_irqchip1 = { | 232 | static struct irq_chip iop13xx_irqchip2 = { |
233 | .name = "IOP13xx-2", | ||
232 | .ack = iop13xx_irq_mask1, | 234 | .ack = iop13xx_irq_mask1, |
233 | .mask = iop13xx_irq_mask1, | 235 | .mask = iop13xx_irq_mask1, |
234 | .unmask = iop13xx_irq_unmask1, | 236 | .unmask = iop13xx_irq_unmask1, |
235 | }; | 237 | }; |
236 | 238 | ||
237 | static struct irqchip iop13xx_irqchip2 = { | 239 | static struct irq_chip iop13xx_irqchip3 = { |
240 | .name = "IOP13xx-3", | ||
238 | .ack = iop13xx_irq_mask2, | 241 | .ack = iop13xx_irq_mask2, |
239 | .mask = iop13xx_irq_mask2, | 242 | .mask = iop13xx_irq_mask2, |
240 | .unmask = iop13xx_irq_unmask2, | 243 | .unmask = iop13xx_irq_unmask2, |
241 | }; | 244 | }; |
242 | 245 | ||
243 | static struct irqchip iop13xx_irqchip3 = { | 246 | static struct irq_chip iop13xx_irqchip4 = { |
247 | .name = "IOP13xx-4", | ||
244 | .ack = iop13xx_irq_mask3, | 248 | .ack = iop13xx_irq_mask3, |
245 | .mask = iop13xx_irq_mask3, | 249 | .mask = iop13xx_irq_mask3, |
246 | .unmask = iop13xx_irq_unmask3, | 250 | .unmask = iop13xx_irq_unmask3, |
@@ -270,15 +274,15 @@ void __init iop13xx_init_irq(void) | |||
270 | 274 | ||
271 | for(i = 0; i < NR_IOP13XX_IRQS; i++) { | 275 | for(i = 0; i < NR_IOP13XX_IRQS; i++) { |
272 | if (i < 32) | 276 | if (i < 32) |
273 | set_irq_chip(i, &iop13xx_irqchip0); | ||
274 | else if (i < 64) | ||
275 | set_irq_chip(i, &iop13xx_irqchip1); | 277 | set_irq_chip(i, &iop13xx_irqchip1); |
276 | else if (i < 96) | 278 | else if (i < 64) |
277 | set_irq_chip(i, &iop13xx_irqchip2); | 279 | set_irq_chip(i, &iop13xx_irqchip2); |
278 | else | 280 | else if (i < 96) |
279 | set_irq_chip(i, &iop13xx_irqchip3); | 281 | set_irq_chip(i, &iop13xx_irqchip3); |
282 | else | ||
283 | set_irq_chip(i, &iop13xx_irqchip4); | ||
280 | 284 | ||
281 | set_irq_handler(i, do_level_IRQ); | 285 | set_irq_handler(i, handle_level_irq); |
282 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | 286 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); |
283 | } | 287 | } |
284 | 288 | ||
diff --git a/arch/arm/mach-iop13xx/setup.c b/arch/arm/mach-iop13xx/setup.c index 3756d2ccb1a7..5fbeb28d04bb 100644 --- a/arch/arm/mach-iop13xx/setup.c +++ b/arch/arm/mach-iop13xx/setup.c | |||
@@ -337,7 +337,7 @@ void __init iop13xx_platform_init(void) | |||
337 | 337 | ||
338 | #ifdef CONFIG_MTD_PHYSMAP | 338 | #ifdef CONFIG_MTD_PHYSMAP |
339 | iq8134x_flash_resource.end = iq8134x_flash_resource.start + | 339 | iq8134x_flash_resource.end = iq8134x_flash_resource.start + |
340 | iq8134x_probe_flash_size(); | 340 | iq8134x_probe_flash_size() - 1; |
341 | if (iq8134x_flash_resource.end > iq8134x_flash_resource.start) | 341 | if (iq8134x_flash_resource.end > iq8134x_flash_resource.start) |
342 | iop13xx_devices[plat_idx++] = &iq8134x_flash; | 342 | iop13xx_devices[plat_idx++] = &iq8134x_flash; |
343 | else | 343 | else |
diff --git a/arch/arm/mach-s3c2410/Kconfig b/arch/arm/mach-s3c2410/Kconfig index 9f46bf330bc8..eb4ec411312b 100644 --- a/arch/arm/mach-s3c2410/Kconfig +++ b/arch/arm/mach-s3c2410/Kconfig | |||
@@ -5,6 +5,7 @@ menu "S3C24XX Implementations" | |||
5 | config MACH_AML_M5900 | 5 | config MACH_AML_M5900 |
6 | bool "AML M5900 Series" | 6 | bool "AML M5900 Series" |
7 | select CPU_S3C2410 | 7 | select CPU_S3C2410 |
8 | select PM_SIMTEC if PM | ||
8 | help | 9 | help |
9 | Say Y here if you are using the American Microsystems M5900 Series | 10 | Say Y here if you are using the American Microsystems M5900 Series |
10 | <http://www.amltd.com> | 11 | <http://www.amltd.com> |
@@ -12,6 +13,7 @@ config MACH_AML_M5900 | |||
12 | config MACH_ANUBIS | 13 | config MACH_ANUBIS |
13 | bool "Simtec Electronics ANUBIS" | 14 | bool "Simtec Electronics ANUBIS" |
14 | select CPU_S3C2440 | 15 | select CPU_S3C2440 |
16 | select PM_SIMTEC if PM | ||
15 | help | 17 | help |
16 | Say Y here if you are using the Simtec Electronics ANUBIS | 18 | Say Y here if you are using the Simtec Electronics ANUBIS |
17 | development system | 19 | development system |
@@ -19,6 +21,7 @@ config MACH_ANUBIS | |||
19 | config MACH_OSIRIS | 21 | config MACH_OSIRIS |
20 | bool "Simtec IM2440D20 (OSIRIS) module" | 22 | bool "Simtec IM2440D20 (OSIRIS) module" |
21 | select CPU_S3C2440 | 23 | select CPU_S3C2440 |
24 | select PM_SIMTEC if PM | ||
22 | help | 25 | help |
23 | Say Y here if you are using the Simtec IM2440D20 module, also | 26 | Say Y here if you are using the Simtec IM2440D20 module, also |
24 | known as the Osiris. | 27 | known as the Osiris. |
@@ -26,6 +29,7 @@ config MACH_OSIRIS | |||
26 | config ARCH_BAST | 29 | config ARCH_BAST |
27 | bool "Simtec Electronics BAST (EB2410ITX)" | 30 | bool "Simtec Electronics BAST (EB2410ITX)" |
28 | select CPU_S3C2410 | 31 | select CPU_S3C2410 |
32 | select PM_SIMTEC if PM | ||
29 | select ISA | 33 | select ISA |
30 | help | 34 | help |
31 | Say Y here if you are using the Simtec Electronics EB2410ITX | 35 | Say Y here if you are using the Simtec Electronics EB2410ITX |
@@ -43,14 +47,13 @@ config BAST_PC104_IRQ | |||
43 | 47 | ||
44 | config PM_H1940 | 48 | config PM_H1940 |
45 | bool | 49 | bool |
46 | depends on PM | ||
47 | help | 50 | help |
48 | Internal node for H1940 and related PM | 51 | Internal node for H1940 and related PM |
49 | 52 | ||
50 | config ARCH_H1940 | 53 | config ARCH_H1940 |
51 | bool "IPAQ H1940" | 54 | bool "IPAQ H1940" |
52 | select CPU_S3C2410 | 55 | select CPU_S3C2410 |
53 | select PM_H1940 | 56 | select PM_H1940 if PM |
54 | help | 57 | help |
55 | Say Y here if you are using the HP IPAQ H1940 | 58 | Say Y here if you are using the HP IPAQ H1940 |
56 | 59 | ||
@@ -112,6 +115,7 @@ config MACH_SMDK2413 | |||
112 | 115 | ||
113 | config MACH_VR1000 | 116 | config MACH_VR1000 |
114 | bool "Thorcom VR1000" | 117 | bool "Thorcom VR1000" |
118 | select PM_SIMTEC if PM | ||
115 | select CPU_S3C2410 | 119 | select CPU_S3C2410 |
116 | help | 120 | help |
117 | Say Y here if you are using the Thorcom VR1000 board. | 121 | Say Y here if you are using the Thorcom VR1000 board. |
@@ -122,7 +126,7 @@ config MACH_VR1000 | |||
122 | config MACH_RX3715 | 126 | config MACH_RX3715 |
123 | bool "HP iPAQ rx3715" | 127 | bool "HP iPAQ rx3715" |
124 | select CPU_S3C2440 | 128 | select CPU_S3C2440 |
125 | select PM_H1940 | 129 | select PM_H1940 if PM |
126 | help | 130 | help |
127 | Say Y here if you are using the HP iPAQ rx3715. | 131 | Say Y here if you are using the HP iPAQ rx3715. |
128 | 132 | ||
@@ -156,7 +160,6 @@ config S3C2410_CLOCK | |||
156 | 160 | ||
157 | config S3C2410_PM | 161 | config S3C2410_PM |
158 | bool | 162 | bool |
159 | depends on CONFIG_PM | ||
160 | help | 163 | help |
161 | Power Management code common to S3C2410 and better | 164 | Power Management code common to S3C2410 and better |
162 | 165 | ||
@@ -171,7 +174,7 @@ config CPU_S3C2410 | |||
171 | bool | 174 | bool |
172 | depends on ARCH_S3C2410 | 175 | depends on ARCH_S3C2410 |
173 | select S3C2410_CLOCK | 176 | select S3C2410_CLOCK |
174 | select S3C2410_PM | 177 | select S3C2410_PM if PM |
175 | help | 178 | help |
176 | Support for S3C2410 and S3C2410A family from the S3C24XX line | 179 | Support for S3C2410 and S3C2410A family from the S3C24XX line |
177 | of Samsung Mobile CPUs. | 180 | of Samsung Mobile CPUs. |
@@ -186,14 +189,13 @@ config CPU_S3C2412_ONLY | |||
186 | 189 | ||
187 | config S3C2412_PM | 190 | config S3C2412_PM |
188 | bool | 191 | bool |
189 | default y if PM | ||
190 | depends on CPU_S3C2412 | ||
191 | help | 192 | help |
192 | Internal config node to apply S3C2412 power management | 193 | Internal config node to apply S3C2412 power management |
193 | 194 | ||
194 | config CPU_S3C2412 | 195 | config CPU_S3C2412 |
195 | bool | 196 | bool |
196 | depends on ARCH_S3C2410 | 197 | depends on ARCH_S3C2410 |
198 | select S3C2412_PM if PM | ||
197 | help | 199 | help |
198 | Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line | 200 | Support for the S3C2412 and S3C2413 SoCs from the S3C24XX line |
199 | 201 | ||
@@ -207,7 +209,7 @@ config CPU_S3C2440 | |||
207 | bool | 209 | bool |
208 | depends on ARCH_S3C2410 | 210 | depends on ARCH_S3C2410 |
209 | select S3C2410_CLOCK | 211 | select S3C2410_CLOCK |
210 | select S3C2410_PM | 212 | select S3C2410_PM if PM |
211 | select CPU_S3C244X | 213 | select CPU_S3C244X |
212 | help | 214 | help |
213 | Support for S3C2440 Samsung Mobile CPU based systems. | 215 | Support for S3C2440 Samsung Mobile CPU based systems. |
@@ -216,7 +218,7 @@ config CPU_S3C2442 | |||
216 | bool | 218 | bool |
217 | depends on ARCH_S3C2420 | 219 | depends on ARCH_S3C2420 |
218 | select S3C2410_CLOCK | 220 | select S3C2410_CLOCK |
219 | select S3C2410_PM | 221 | select S3C2410_PM if PM |
220 | select CPU_S3C244X | 222 | select CPU_S3C244X |
221 | help | 223 | help |
222 | Support for S3C2442 Samsung Mobile CPU based systems. | 224 | Support for S3C2442 Samsung Mobile CPU based systems. |
@@ -300,8 +302,9 @@ config S3C2410_PM_CHECK_CHUNKSIZE | |||
300 | 302 | ||
301 | config PM_SIMTEC | 303 | config PM_SIMTEC |
302 | bool | 304 | bool |
303 | depends on PM && (ARCH_BAST || MACH_VR1000 || MACH_AML_M5900) | 305 | help |
304 | default y | 306 | Common power management code for systems that are |
307 | compatible with the Simtec style of power management | ||
305 | 308 | ||
306 | config S3C2410_LOWLEVEL_UART_PORT | 309 | config S3C2410_LOWLEVEL_UART_PORT |
307 | int "S3C2410 UART to use for low-level messages" | 310 | int "S3C2410 UART to use for low-level messages" |
diff --git a/arch/arm/mach-s3c2410/cpu.c b/arch/arm/mach-s3c2410/cpu.c index 9d4899eddf1f..ae1f5bb63f7a 100644 --- a/arch/arm/mach-s3c2410/cpu.c +++ b/arch/arm/mach-s3c2410/cpu.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/ioport.h> | 28 | #include <linux/ioport.h> |
29 | #include <linux/serial_core.h> | ||
29 | #include <linux/platform_device.h> | 30 | #include <linux/platform_device.h> |
30 | 31 | ||
31 | #include <asm/hardware.h> | 32 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-s3c2410/devs.c b/arch/arm/mach-s3c2410/devs.c index cae35ff76f33..faccde2092d2 100644 --- a/arch/arm/mach-s3c2410/devs.c +++ b/arch/arm/mach-s3c2410/devs.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
18 | #include <linux/timer.h> | 18 | #include <linux/timer.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/serial_core.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/dma.c b/arch/arm/mach-s3c2410/dma.c index 01abb0ace234..717322a0916b 100644 --- a/arch/arm/mach-s3c2410/dma.c +++ b/arch/arm/mach-s3c2410/dma.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/dma.c | 1 | /* linux/arch/arm/mach-s3c2410/dma.c |
2 | * | 2 | * |
3 | * (c) 2003-2005,2006 Simtec Electronics | 3 | * Copyright (c) 2003-2005,2006 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 DMA core | 6 | * S3C2410 DMA core |
diff --git a/arch/arm/mach-s3c2410/irq.h b/arch/arm/mach-s3c2410/irq.h index 3686a0082245..e5913da3b919 100644 --- a/arch/arm/mach-s3c2410/irq.h +++ b/arch/arm/mach-s3c2410/irq.h | |||
@@ -8,8 +8,6 @@ | |||
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | * | ||
12 | * Modifications: | ||
13 | */ | 11 | */ |
14 | 12 | ||
15 | #define irqdbf(x...) | 13 | #define irqdbf(x...) |
diff --git a/arch/arm/mach-s3c2410/mach-anubis.c b/arch/arm/mach-s3c2410/mach-anubis.c index e94cdcd96591..0fad0c2fe07b 100644 --- a/arch/arm/mach-s3c2410/mach-anubis.c +++ b/arch/arm/mach-s3c2410/mach-anubis.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/timer.h> | 16 | #include <linux/timer.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/serial_core.h> | ||
18 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
19 | 20 | ||
20 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index 2968fb235f95..b8b76757ec54 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/serial_core.h> | ||
19 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
20 | #include <linux/dm9000.h> | 21 | #include <linux/dm9000.h> |
21 | 22 | ||
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index f5b98099a5d9..15b625eae499 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
18 | #include <linux/timer.h> | 18 | #include <linux/timer.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/serial_core.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
@@ -37,8 +38,6 @@ | |||
37 | #include <asm/arch/h1940-latch.h> | 38 | #include <asm/arch/h1940-latch.h> |
38 | #include <asm/arch/fb.h> | 39 | #include <asm/arch/fb.h> |
39 | 40 | ||
40 | #include <linux/serial_core.h> | ||
41 | |||
42 | #include "clock.h" | 41 | #include "clock.h" |
43 | #include "devs.h" | 42 | #include "devs.h" |
44 | #include "cpu.h" | 43 | #include "cpu.h" |
diff --git a/arch/arm/mach-s3c2410/mach-n30.c b/arch/arm/mach-s3c2410/mach-n30.c index 116ac3169966..0411e9adb54d 100644 --- a/arch/arm/mach-s3c2410/mach-n30.c +++ b/arch/arm/mach-s3c2410/mach-n30.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/timer.h> | 20 | #include <linux/timer.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/delay.h> | 22 | #include <linux/delay.h> |
23 | #include <linux/serial_core.h> | ||
23 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
24 | #include <linux/kthread.h> | 25 | #include <linux/kthread.h> |
25 | 26 | ||
@@ -37,8 +38,6 @@ | |||
37 | #include <asm/arch/regs-gpio.h> | 38 | #include <asm/arch/regs-gpio.h> |
38 | #include <asm/arch/iic.h> | 39 | #include <asm/arch/iic.h> |
39 | 40 | ||
40 | #include <linux/serial_core.h> | ||
41 | |||
42 | #include "s3c2410.h" | 41 | #include "s3c2410.h" |
43 | #include "clock.h" | 42 | #include "clock.h" |
44 | #include "devs.h" | 43 | #include "devs.h" |
diff --git a/arch/arm/mach-s3c2410/mach-nexcoder.c b/arch/arm/mach-s3c2410/mach-nexcoder.c index 065a1d4e860b..d6dfdad8c90b 100644 --- a/arch/arm/mach-s3c2410/mach-nexcoder.c +++ b/arch/arm/mach-s3c2410/mach-nexcoder.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/timer.h> | 19 | #include <linux/timer.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/string.h> | 21 | #include <linux/string.h> |
22 | #include <linux/serial_core.h> | ||
22 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
23 | 24 | ||
24 | #include <linux/mtd/map.h> | 25 | #include <linux/mtd/map.h> |
diff --git a/arch/arm/mach-s3c2410/mach-osiris.c b/arch/arm/mach-s3c2410/mach-osiris.c index a4ab144e7292..37b40850c9b9 100644 --- a/arch/arm/mach-s3c2410/mach-osiris.c +++ b/arch/arm/mach-s3c2410/mach-osiris.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/timer.h> | 16 | #include <linux/timer.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/device.h> | 18 | #include <linux/device.h> |
19 | #include <linux/serial_core.h> | ||
19 | 20 | ||
20 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
21 | #include <asm/mach/map.h> | 22 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-s3c2410/mach-otom.c b/arch/arm/mach-s3c2410/mach-otom.c index c71673fd9955..2c738b375e4d 100644 --- a/arch/arm/mach-s3c2410/mach-otom.c +++ b/arch/arm/mach-s3c2410/mach-otom.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/timer.h> | 16 | #include <linux/timer.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/serial_core.h> | ||
18 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
19 | 20 | ||
20 | #include <asm/mach/arch.h> | 21 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2410.c b/arch/arm/mach-s3c2410/mach-smdk2410.c index b3b0171d5052..01c0c986d827 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2410.c +++ b/arch/arm/mach-s3c2410/mach-smdk2410.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/list.h> | 35 | #include <linux/list.h> |
36 | #include <linux/timer.h> | 36 | #include <linux/timer.h> |
37 | #include <linux/init.h> | 37 | #include <linux/init.h> |
38 | #include <linux/serial_core.h> | ||
38 | #include <linux/platform_device.h> | 39 | #include <linux/platform_device.h> |
39 | 40 | ||
40 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2413.c b/arch/arm/mach-s3c2410/mach-smdk2413.c index 3a4ca7f6f7b9..4f89abd7a6df 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2413.c +++ b/arch/arm/mach-s3c2410/mach-smdk2413.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/list.h> | 17 | #include <linux/list.h> |
18 | #include <linux/timer.h> | 18 | #include <linux/timer.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/serial_core.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2440.c b/arch/arm/mach-s3c2410/mach-smdk2440.c index e2205ff1b0ee..2b61f4ed1da4 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2440.c +++ b/arch/arm/mach-s3c2410/mach-smdk2440.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/list.h> | 19 | #include <linux/list.h> |
20 | #include <linux/timer.h> | 20 | #include <linux/timer.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | #include <linux/serial_core.h> | ||
22 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
23 | 24 | ||
24 | #include <asm/mach/arch.h> | 25 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index e2eda3937ab0..a382fc095110 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
@@ -352,7 +352,7 @@ static struct platform_device vr1000_led2 = { | |||
352 | 352 | ||
353 | static struct platform_device vr1000_led3 = { | 353 | static struct platform_device vr1000_led3 = { |
354 | .name = "s3c24xx_led", | 354 | .name = "s3c24xx_led", |
355 | .id = 1, | 355 | .id = 3, |
356 | .dev = { | 356 | .dev = { |
357 | .platform_data = &vr1000_led3_pdata, | 357 | .platform_data = &vr1000_led3_pdata, |
358 | }, | 358 | }, |
diff --git a/arch/arm/mach-s3c2410/mach-vstms.c b/arch/arm/mach-s3c2410/mach-vstms.c index ea554e7c006e..0360e1055bcd 100644 --- a/arch/arm/mach-s3c2410/mach-vstms.c +++ b/arch/arm/mach-s3c2410/mach-vstms.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/list.h> | 15 | #include <linux/list.h> |
16 | #include <linux/timer.h> | 16 | #include <linux/timer.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/serial_core.h> | ||
18 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
19 | 20 | ||
20 | #include <linux/mtd/mtd.h> | 21 | #include <linux/mtd/mtd.h> |
diff --git a/arch/arm/mach-s3c2410/pm-simtec.c b/arch/arm/mach-s3c2410/pm-simtec.c index 42cd05e298f8..619133eb7168 100644 --- a/arch/arm/mach-s3c2410/pm-simtec.c +++ b/arch/arm/mach-s3c2410/pm-simtec.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/io.h> | 27 | #include <asm/io.h> |
28 | 28 | ||
29 | #include <asm/arch/map.h> | 29 | #include <asm/arch/map.h> |
30 | #include <asm/arch/regs-serial.h> | ||
31 | #include <asm/arch/regs-gpio.h> | 30 | #include <asm/arch/regs-gpio.h> |
32 | #include <asm/arch/regs-mem.h> | 31 | #include <asm/arch/regs-mem.h> |
33 | 32 | ||
diff --git a/arch/arm/mach-s3c2410/pm.c b/arch/arm/mach-s3c2410/pm.c index b49a0b3b72b3..00834097eb82 100644 --- a/arch/arm/mach-s3c2410/pm.c +++ b/arch/arm/mach-s3c2410/pm.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/crc32.h> | 34 | #include <linux/crc32.h> |
35 | #include <linux/ioport.h> | 35 | #include <linux/ioport.h> |
36 | #include <linux/delay.h> | 36 | #include <linux/delay.h> |
37 | #include <linux/serial_core.h> | ||
37 | 38 | ||
38 | #include <asm/cacheflush.h> | 39 | #include <asm/cacheflush.h> |
39 | #include <asm/hardware.h> | 40 | #include <asm/hardware.h> |
diff --git a/arch/arm/mach-s3c2410/s3c2410-clock.c b/arch/arm/mach-s3c2410/s3c2410-clock.c index 00abe199a08e..992cc6af230e 100644 --- a/arch/arm/mach-s3c2410/s3c2410-clock.c +++ b/arch/arm/mach-s3c2410/s3c2410-clock.c | |||
@@ -30,13 +30,18 @@ | |||
30 | #include <linux/clk.h> | 30 | #include <linux/clk.h> |
31 | #include <linux/mutex.h> | 31 | #include <linux/mutex.h> |
32 | #include <linux/delay.h> | 32 | #include <linux/delay.h> |
33 | #include <linux/serial_core.h> | ||
34 | |||
35 | #include <asm/mach/map.h> | ||
33 | 36 | ||
34 | #include <asm/hardware.h> | 37 | #include <asm/hardware.h> |
35 | #include <asm/io.h> | 38 | #include <asm/io.h> |
36 | 39 | ||
40 | #include <asm/arch/regs-serial.h> | ||
37 | #include <asm/arch/regs-clock.h> | 41 | #include <asm/arch/regs-clock.h> |
38 | #include <asm/arch/regs-gpio.h> | 42 | #include <asm/arch/regs-gpio.h> |
39 | 43 | ||
44 | #include "s3c2410.h" | ||
40 | #include "clock.h" | 45 | #include "clock.h" |
41 | #include "cpu.h" | 46 | #include "cpu.h" |
42 | 47 | ||
diff --git a/arch/arm/mach-s3c2410/s3c2410-dma.c b/arch/arm/mach-s3c2410/s3c2410-dma.c index 51e5098b32e8..e67ba3911f11 100644 --- a/arch/arm/mach-s3c2410/s3c2410-dma.c +++ b/arch/arm/mach-s3c2410/s3c2410-dma.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/s3c2410-dma.c | 1 | /* linux/arch/arm/mach-s3c2410/s3c2410-dma.c |
2 | * | 2 | * |
3 | * (c) 2006 Simtec Electronics | 3 | * Copyright (c) 2006 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 DMA selection | 6 | * S3C2410 DMA selection |
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/sysdev.h> | 17 | #include <linux/sysdev.h> |
18 | #include <linux/serial_core.h> | ||
18 | 19 | ||
19 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
20 | #include <asm/arch/dma.h> | 21 | #include <asm/arch/dma.h> |
@@ -131,6 +132,7 @@ static int s3c2410_dma_add(struct sys_device *sysdev) | |||
131 | return s3c24xx_dma_init_map(&s3c2410_dma_sel); | 132 | return s3c24xx_dma_init_map(&s3c2410_dma_sel); |
132 | } | 133 | } |
133 | 134 | ||
135 | #if defined(CONFIG_CPU_S3C2410) | ||
134 | static struct sysdev_driver s3c2410_dma_driver = { | 136 | static struct sysdev_driver s3c2410_dma_driver = { |
135 | .add = s3c2410_dma_add, | 137 | .add = s3c2410_dma_add, |
136 | }; | 138 | }; |
@@ -141,9 +143,10 @@ static int __init s3c2410_dma_init(void) | |||
141 | } | 143 | } |
142 | 144 | ||
143 | arch_initcall(s3c2410_dma_init); | 145 | arch_initcall(s3c2410_dma_init); |
146 | #endif | ||
144 | 147 | ||
148 | #if defined(CONFIG_CPU_S3C2442) | ||
145 | /* S3C2442 DMA contains the same selection table as the S3C2410 */ | 149 | /* S3C2442 DMA contains the same selection table as the S3C2410 */ |
146 | |||
147 | static struct sysdev_driver s3c2442_dma_driver = { | 150 | static struct sysdev_driver s3c2442_dma_driver = { |
148 | .add = s3c2410_dma_add, | 151 | .add = s3c2410_dma_add, |
149 | }; | 152 | }; |
@@ -154,5 +157,5 @@ static int __init s3c2442_dma_init(void) | |||
154 | } | 157 | } |
155 | 158 | ||
156 | arch_initcall(s3c2442_dma_init); | 159 | arch_initcall(s3c2442_dma_init); |
157 | 160 | #endif | |
158 | 161 | ||
diff --git a/arch/arm/mach-s3c2410/s3c2410-pm.c b/arch/arm/mach-s3c2410/s3c2410-pm.c index 77c6814c0f05..8bb6e5e21f59 100644 --- a/arch/arm/mach-s3c2410/s3c2410-pm.c +++ b/arch/arm/mach-s3c2410/s3c2410-pm.c | |||
@@ -87,7 +87,7 @@ static void s3c2410_pm_prepare(void) | |||
87 | 87 | ||
88 | } | 88 | } |
89 | 89 | ||
90 | int s3c2410_pm_resume(struct sys_device *dev) | 90 | static int s3c2410_pm_resume(struct sys_device *dev) |
91 | { | 91 | { |
92 | unsigned long tmp; | 92 | unsigned long tmp; |
93 | 93 | ||
@@ -111,6 +111,7 @@ static int s3c2410_pm_add(struct sys_device *dev) | |||
111 | return 0; | 111 | return 0; |
112 | } | 112 | } |
113 | 113 | ||
114 | #if defined(CONFIG_CPU_S3C2410) | ||
114 | static struct sysdev_driver s3c2410_pm_driver = { | 115 | static struct sysdev_driver s3c2410_pm_driver = { |
115 | .add = s3c2410_pm_add, | 116 | .add = s3c2410_pm_add, |
116 | .resume = s3c2410_pm_resume, | 117 | .resume = s3c2410_pm_resume, |
@@ -124,7 +125,9 @@ static int __init s3c2410_pm_drvinit(void) | |||
124 | } | 125 | } |
125 | 126 | ||
126 | arch_initcall(s3c2410_pm_drvinit); | 127 | arch_initcall(s3c2410_pm_drvinit); |
128 | #endif | ||
127 | 129 | ||
130 | #if defined(CONFIG_CPU_S3C2440) | ||
128 | static struct sysdev_driver s3c2440_pm_driver = { | 131 | static struct sysdev_driver s3c2440_pm_driver = { |
129 | .add = s3c2410_pm_add, | 132 | .add = s3c2410_pm_add, |
130 | .resume = s3c2410_pm_resume, | 133 | .resume = s3c2410_pm_resume, |
@@ -136,7 +139,9 @@ static int __init s3c2440_pm_drvinit(void) | |||
136 | } | 139 | } |
137 | 140 | ||
138 | arch_initcall(s3c2440_pm_drvinit); | 141 | arch_initcall(s3c2440_pm_drvinit); |
142 | #endif | ||
139 | 143 | ||
144 | #if defined(CONFIG_CPU_S3C2442) | ||
140 | static struct sysdev_driver s3c2442_pm_driver = { | 145 | static struct sysdev_driver s3c2442_pm_driver = { |
141 | .add = s3c2410_pm_add, | 146 | .add = s3c2410_pm_add, |
142 | .resume = s3c2410_pm_resume, | 147 | .resume = s3c2410_pm_resume, |
@@ -148,3 +153,4 @@ static int __init s3c2442_pm_drvinit(void) | |||
148 | } | 153 | } |
149 | 154 | ||
150 | arch_initcall(s3c2442_pm_drvinit); | 155 | arch_initcall(s3c2442_pm_drvinit); |
156 | #endif | ||
diff --git a/arch/arm/mach-s3c2410/s3c2410.c b/arch/arm/mach-s3c2410/s3c2410.c index 183e4033ce61..4cdc0d70c19f 100644 --- a/arch/arm/mach-s3c2410/s3c2410.c +++ b/arch/arm/mach-s3c2410/s3c2410.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/sysdev.h> | 19 | #include <linux/sysdev.h> |
20 | #include <linux/serial_core.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
@@ -38,11 +39,9 @@ | |||
38 | /* Initial IO mappings */ | 39 | /* Initial IO mappings */ |
39 | 40 | ||
40 | static struct map_desc s3c2410_iodesc[] __initdata = { | 41 | static struct map_desc s3c2410_iodesc[] __initdata = { |
41 | IODESC_ENT(USBHOST), | ||
42 | IODESC_ENT(CLKPWR), | 42 | IODESC_ENT(CLKPWR), |
43 | IODESC_ENT(LCD), | 43 | IODESC_ENT(LCD), |
44 | IODESC_ENT(TIMER), | 44 | IODESC_ENT(TIMER), |
45 | IODESC_ENT(ADC), | ||
46 | IODESC_ENT(WATCHDOG), | 45 | IODESC_ENT(WATCHDOG), |
47 | }; | 46 | }; |
48 | 47 | ||
diff --git a/arch/arm/mach-s3c2410/s3c2412-clock.c b/arch/arm/mach-s3c2410/s3c2412-clock.c index c95ed3e18580..8f94ad83901d 100644 --- a/arch/arm/mach-s3c2410/s3c2412-clock.c +++ b/arch/arm/mach-s3c2410/s3c2412-clock.c | |||
@@ -30,13 +30,18 @@ | |||
30 | #include <linux/clk.h> | 30 | #include <linux/clk.h> |
31 | #include <linux/mutex.h> | 31 | #include <linux/mutex.h> |
32 | #include <linux/delay.h> | 32 | #include <linux/delay.h> |
33 | #include <linux/serial_core.h> | ||
34 | |||
35 | #include <asm/mach/map.h> | ||
33 | 36 | ||
34 | #include <asm/hardware.h> | 37 | #include <asm/hardware.h> |
35 | #include <asm/io.h> | 38 | #include <asm/io.h> |
36 | 39 | ||
40 | #include <asm/arch/regs-serial.h> | ||
37 | #include <asm/arch/regs-clock.h> | 41 | #include <asm/arch/regs-clock.h> |
38 | #include <asm/arch/regs-gpio.h> | 42 | #include <asm/arch/regs-gpio.h> |
39 | 43 | ||
44 | #include "s3c2412.h" | ||
40 | #include "clock.h" | 45 | #include "clock.h" |
41 | #include "cpu.h" | 46 | #include "cpu.h" |
42 | 47 | ||
@@ -49,7 +54,7 @@ | |||
49 | * set the correct muxing at initialisation | 54 | * set the correct muxing at initialisation |
50 | */ | 55 | */ |
51 | 56 | ||
52 | int s3c2412_clkcon_enable(struct clk *clk, int enable) | 57 | static int s3c2412_clkcon_enable(struct clk *clk, int enable) |
53 | { | 58 | { |
54 | unsigned int clocks = clk->ctrlbit; | 59 | unsigned int clocks = clk->ctrlbit; |
55 | unsigned long clkcon; | 60 | unsigned long clkcon; |
@@ -556,7 +561,7 @@ struct clk_init { | |||
556 | struct clk *src_1; | 561 | struct clk *src_1; |
557 | }; | 562 | }; |
558 | 563 | ||
559 | struct clk_init clks_src[] __initdata = { | 564 | static struct clk_init clks_src[] __initdata = { |
560 | { | 565 | { |
561 | .clk = &clk_usysclk, | 566 | .clk = &clk_usysclk, |
562 | .bit = S3C2412_CLKSRC_USBCLK_HCLK, | 567 | .bit = S3C2412_CLKSRC_USBCLK_HCLK, |
@@ -619,7 +624,7 @@ static void __init s3c2412_clk_initparents(void) | |||
619 | 624 | ||
620 | /* clocks to add straight away */ | 625 | /* clocks to add straight away */ |
621 | 626 | ||
622 | struct clk *clks[] __initdata = { | 627 | static struct clk *clks[] __initdata = { |
623 | &clk_ext, | 628 | &clk_ext, |
624 | &clk_usb_bus, | 629 | &clk_usb_bus, |
625 | &clk_erefclk, | 630 | &clk_erefclk, |
diff --git a/arch/arm/mach-s3c2410/s3c2412-dma.c b/arch/arm/mach-s3c2410/s3c2412-dma.c index 171f3706d36d..fe71a8fdb87c 100644 --- a/arch/arm/mach-s3c2410/s3c2412-dma.c +++ b/arch/arm/mach-s3c2410/s3c2412-dma.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/s3c2412-dma.c | 1 | /* linux/arch/arm/mach-s3c2410/s3c2412-dma.c |
2 | * | 2 | * |
3 | * (c) 2006 Simtec Electronics | 3 | * Copyright (c) 2006 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2412 DMA selection | 6 | * S3C2412 DMA selection |
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/sysdev.h> | 17 | #include <linux/sysdev.h> |
18 | #include <linux/serial_core.h> | ||
18 | 19 | ||
19 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
20 | #include <asm/arch/dma.h> | 21 | #include <asm/arch/dma.h> |
diff --git a/arch/arm/mach-s3c2410/s3c2412.c b/arch/arm/mach-s3c2410/s3c2412.c index e76431c41461..2f651a811ecd 100644 --- a/arch/arm/mach-s3c2410/s3c2412.c +++ b/arch/arm/mach-s3c2410/s3c2412.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/sysdev.h> | 19 | #include <linux/sysdev.h> |
20 | #include <linux/serial_core.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
@@ -60,7 +61,6 @@ static struct map_desc s3c2412_iodesc[] __initdata = { | |||
60 | IODESC_ENT(CLKPWR), | 61 | IODESC_ENT(CLKPWR), |
61 | IODESC_ENT(LCD), | 62 | IODESC_ENT(LCD), |
62 | IODESC_ENT(TIMER), | 63 | IODESC_ENT(TIMER), |
63 | IODESC_ENT(ADC), | ||
64 | IODESC_ENT(WATCHDOG), | 64 | IODESC_ENT(WATCHDOG), |
65 | }; | 65 | }; |
66 | 66 | ||
diff --git a/arch/arm/mach-s3c2410/s3c2440-clock.c b/arch/arm/mach-s3c2410/s3c2440-clock.c index 15796864d010..ba13c1d079d1 100644 --- a/arch/arm/mach-s3c2410/s3c2440-clock.c +++ b/arch/arm/mach-s3c2410/s3c2440-clock.c | |||
@@ -113,18 +113,18 @@ static int s3c2440_clk_add(struct sys_device *sysdev) | |||
113 | { | 113 | { |
114 | unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN); | 114 | unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN); |
115 | unsigned long clkdivn; | 115 | unsigned long clkdivn; |
116 | struct clk *clk_h; | 116 | struct clk *clock_h; |
117 | struct clk *clk_p; | 117 | struct clk *clock_p; |
118 | struct clk *clk_upll; | 118 | struct clk *clock_upll; |
119 | 119 | ||
120 | printk("S3C2440: Clock Support, DVS %s\n", | 120 | printk("S3C2440: Clock Support, DVS %s\n", |
121 | (camdivn & S3C2440_CAMDIVN_DVSEN) ? "on" : "off"); | 121 | (camdivn & S3C2440_CAMDIVN_DVSEN) ? "on" : "off"); |
122 | 122 | ||
123 | clk_p = clk_get(NULL, "pclk"); | 123 | clock_p = clk_get(NULL, "pclk"); |
124 | clk_h = clk_get(NULL, "hclk"); | 124 | clock_h = clk_get(NULL, "hclk"); |
125 | clk_upll = clk_get(NULL, "upll"); | 125 | clock_upll = clk_get(NULL, "upll"); |
126 | 126 | ||
127 | if (IS_ERR(clk_p) || IS_ERR(clk_h) || IS_ERR(clk_upll)) { | 127 | if (IS_ERR(clock_p) || IS_ERR(clock_h) || IS_ERR(clock_upll)) { |
128 | printk(KERN_ERR "S3C2440: Failed to get parent clocks\n"); | 128 | printk(KERN_ERR "S3C2440: Failed to get parent clocks\n"); |
129 | return -EINVAL; | 129 | return -EINVAL; |
130 | } | 130 | } |
@@ -132,8 +132,8 @@ static int s3c2440_clk_add(struct sys_device *sysdev) | |||
132 | /* check rate of UPLL, and if it is near 96MHz, then change | 132 | /* check rate of UPLL, and if it is near 96MHz, then change |
133 | * to using half the UPLL rate for the system */ | 133 | * to using half the UPLL rate for the system */ |
134 | 134 | ||
135 | if (clk_get_rate(clk_upll) > (94 * MHZ)) { | 135 | if (clk_get_rate(clock_upll) > (94 * MHZ)) { |
136 | clk_usb_bus.rate = clk_get_rate(clk_upll) / 2; | 136 | clk_usb_bus.rate = clk_get_rate(clock_upll) / 2; |
137 | 137 | ||
138 | mutex_lock(&clocks_mutex); | 138 | mutex_lock(&clocks_mutex); |
139 | 139 | ||
@@ -144,9 +144,9 @@ static int s3c2440_clk_add(struct sys_device *sysdev) | |||
144 | mutex_unlock(&clocks_mutex); | 144 | mutex_unlock(&clocks_mutex); |
145 | } | 145 | } |
146 | 146 | ||
147 | s3c2440_clk_cam.parent = clk_h; | 147 | s3c2440_clk_cam.parent = clock_h; |
148 | s3c2440_clk_ac97.parent = clk_p; | 148 | s3c2440_clk_ac97.parent = clock_p; |
149 | s3c2440_clk_cam_upll.parent = clk_upll; | 149 | s3c2440_clk_cam_upll.parent = clock_upll; |
150 | 150 | ||
151 | s3c24xx_register_clock(&s3c2440_clk_ac97); | 151 | s3c24xx_register_clock(&s3c2440_clk_ac97); |
152 | s3c24xx_register_clock(&s3c2440_clk_cam); | 152 | s3c24xx_register_clock(&s3c2440_clk_cam); |
diff --git a/arch/arm/mach-s3c2410/s3c2440-dma.c b/arch/arm/mach-s3c2410/s3c2440-dma.c index 11e109c84a15..47b861b9443d 100644 --- a/arch/arm/mach-s3c2410/s3c2440-dma.c +++ b/arch/arm/mach-s3c2410/s3c2440-dma.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/s3c2440-dma.c | 1 | /* linux/arch/arm/mach-s3c2410/s3c2440-dma.c |
2 | * | 2 | * |
3 | * (c) 2006 Simtec Electronics | 3 | * Copyright (c) 2006 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2440 DMA selection | 6 | * S3C2440 DMA selection |
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/sysdev.h> | 17 | #include <linux/sysdev.h> |
18 | #include <linux/serial_core.h> | ||
18 | 19 | ||
19 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
20 | #include <asm/arch/dma.h> | 21 | #include <asm/arch/dma.h> |
diff --git a/arch/arm/mach-s3c2410/s3c2440.c b/arch/arm/mach-s3c2410/s3c2440.c index 0ab50f44f318..344eb27cca48 100644 --- a/arch/arm/mach-s3c2410/s3c2440.c +++ b/arch/arm/mach-s3c2410/s3c2440.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
20 | #include <linux/serial_core.h> | ||
20 | #include <linux/sysdev.h> | 21 | #include <linux/sysdev.h> |
21 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
22 | 23 | ||
@@ -28,17 +29,9 @@ | |||
28 | #include <asm/io.h> | 29 | #include <asm/io.h> |
29 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
30 | 31 | ||
31 | #include <asm/arch/regs-clock.h> | ||
32 | #include <asm/arch/regs-serial.h> | ||
33 | #include <asm/arch/regs-gpio.h> | ||
34 | #include <asm/arch/regs-gpioj.h> | ||
35 | #include <asm/arch/regs-dsc.h> | ||
36 | |||
37 | #include "s3c2440.h" | 32 | #include "s3c2440.h" |
38 | #include "clock.h" | ||
39 | #include "devs.h" | 33 | #include "devs.h" |
40 | #include "cpu.h" | 34 | #include "cpu.h" |
41 | #include "pm.h" | ||
42 | 35 | ||
43 | static struct sys_device s3c2440_sysdev = { | 36 | static struct sys_device s3c2440_sysdev = { |
44 | .cls = &s3c2440_sysclass, | 37 | .cls = &s3c2440_sysclass, |
diff --git a/arch/arm/mach-s3c2410/s3c2440.h b/arch/arm/mach-s3c2410/s3c2440.h index 29cb6df65a48..dcd316076c59 100644 --- a/arch/arm/mach-s3c2410/s3c2440.h +++ b/arch/arm/mach-s3c2410/s3c2440.h | |||
@@ -8,28 +8,10 @@ | |||
8 | * This program is free software; you can redistribute it and/or modify | 8 | * This program is free software; you can redistribute it and/or modify |
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | * | ||
12 | * Modifications: | ||
13 | * 24-Aug-2004 BJD Start of S3C2440 CPU support | ||
14 | * 04-Nov-2004 BJD Added s3c2440_init_uarts() | ||
15 | * 04-Jan-2005 BJD Moved uart init to cpu code | ||
16 | * 10-Jan-2005 BJD Moved 2440 specific init here | ||
17 | * 14-Jan-2005 BJD Split the clock initialisation code | ||
18 | */ | 11 | */ |
19 | 12 | ||
20 | #ifdef CONFIG_CPU_S3C2440 | 13 | #ifdef CONFIG_CPU_S3C2440 |
21 | |||
22 | extern int s3c2440_init(void); | 14 | extern int s3c2440_init(void); |
23 | |||
24 | extern void s3c2440_map_io(struct map_desc *mach_desc, int size); | ||
25 | |||
26 | extern void s3c2440_init_uarts(struct s3c2410_uartcfg *cfg, int no); | ||
27 | |||
28 | extern void s3c2440_init_clocks(int xtal); | ||
29 | |||
30 | #else | 15 | #else |
31 | #define s3c2440_init_clocks NULL | ||
32 | #define s3c2440_init_uarts NULL | ||
33 | #define s3c2440_map_io NULL | ||
34 | #define s3c2440_init NULL | 16 | #define s3c2440_init NULL |
35 | #endif | 17 | #endif |
diff --git a/arch/arm/mach-s3c2410/s3c2442-clock.c b/arch/arm/mach-s3c2410/s3c2442-clock.c index d9f54b5cab7f..4e292ca7c9be 100644 --- a/arch/arm/mach-s3c2410/s3c2442-clock.c +++ b/arch/arm/mach-s3c2410/s3c2442-clock.c | |||
@@ -117,18 +117,18 @@ static int s3c2442_clk_add(struct sys_device *sysdev) | |||
117 | { | 117 | { |
118 | unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN); | 118 | unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN); |
119 | unsigned long clkdivn; | 119 | unsigned long clkdivn; |
120 | struct clk *clk_h; | 120 | struct clk *clock_h; |
121 | struct clk *clk_p; | 121 | struct clk *clock_p; |
122 | struct clk *clk_upll; | 122 | struct clk *clock_upll; |
123 | 123 | ||
124 | printk("S3C2442: Clock Support, DVS %s\n", | 124 | printk("S3C2442: Clock Support, DVS %s\n", |
125 | (camdivn & S3C2440_CAMDIVN_DVSEN) ? "on" : "off"); | 125 | (camdivn & S3C2440_CAMDIVN_DVSEN) ? "on" : "off"); |
126 | 126 | ||
127 | clk_p = clk_get(NULL, "pclk"); | 127 | clock_p = clk_get(NULL, "pclk"); |
128 | clk_h = clk_get(NULL, "hclk"); | 128 | clock_h = clk_get(NULL, "hclk"); |
129 | clk_upll = clk_get(NULL, "upll"); | 129 | clock_upll = clk_get(NULL, "upll"); |
130 | 130 | ||
131 | if (IS_ERR(clk_p) || IS_ERR(clk_h) || IS_ERR(clk_upll)) { | 131 | if (IS_ERR(clock_p) || IS_ERR(clock_h) || IS_ERR(clock_upll)) { |
132 | printk(KERN_ERR "S3C2442: Failed to get parent clocks\n"); | 132 | printk(KERN_ERR "S3C2442: Failed to get parent clocks\n"); |
133 | return -EINVAL; | 133 | return -EINVAL; |
134 | } | 134 | } |
@@ -136,8 +136,8 @@ static int s3c2442_clk_add(struct sys_device *sysdev) | |||
136 | /* check rate of UPLL, and if it is near 96MHz, then change | 136 | /* check rate of UPLL, and if it is near 96MHz, then change |
137 | * to using half the UPLL rate for the system */ | 137 | * to using half the UPLL rate for the system */ |
138 | 138 | ||
139 | if (clk_get_rate(clk_upll) > (94 * MHZ)) { | 139 | if (clk_get_rate(clock_upll) > (94 * MHZ)) { |
140 | clk_usb_bus.rate = clk_get_rate(clk_upll) / 2; | 140 | clk_usb_bus.rate = clk_get_rate(clock_upll) / 2; |
141 | 141 | ||
142 | mutex_lock(&clocks_mutex); | 142 | mutex_lock(&clocks_mutex); |
143 | 143 | ||
@@ -148,8 +148,8 @@ static int s3c2442_clk_add(struct sys_device *sysdev) | |||
148 | mutex_unlock(&clocks_mutex); | 148 | mutex_unlock(&clocks_mutex); |
149 | } | 149 | } |
150 | 150 | ||
151 | s3c2442_clk_cam.parent = clk_h; | 151 | s3c2442_clk_cam.parent = clock_h; |
152 | s3c2442_clk_cam_upll.parent = clk_upll; | 152 | s3c2442_clk_cam_upll.parent = clock_upll; |
153 | 153 | ||
154 | s3c24xx_register_clock(&s3c2442_clk_cam); | 154 | s3c24xx_register_clock(&s3c2442_clk_cam); |
155 | s3c24xx_register_clock(&s3c2442_clk_cam_upll); | 155 | s3c24xx_register_clock(&s3c2442_clk_cam_upll); |
diff --git a/arch/arm/mach-s3c2410/s3c2442.c b/arch/arm/mach-s3c2410/s3c2442.c index 581667efd13c..428732ee68c4 100644 --- a/arch/arm/mach-s3c2410/s3c2442.c +++ b/arch/arm/mach-s3c2410/s3c2442.c | |||
@@ -16,29 +16,11 @@ | |||
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/platform_device.h> | 19 | #include <linux/serial_core.h> |
20 | #include <linux/sysdev.h> | 20 | #include <linux/sysdev.h> |
21 | #include <linux/clk.h> | ||
22 | |||
23 | #include <asm/mach/arch.h> | ||
24 | #include <asm/mach/map.h> | ||
25 | #include <asm/mach/irq.h> | ||
26 | |||
27 | #include <asm/hardware.h> | ||
28 | #include <asm/io.h> | ||
29 | #include <asm/irq.h> | ||
30 | |||
31 | #include <asm/arch/regs-clock.h> | ||
32 | #include <asm/arch/regs-serial.h> | ||
33 | #include <asm/arch/regs-gpio.h> | ||
34 | #include <asm/arch/regs-gpioj.h> | ||
35 | #include <asm/arch/regs-dsc.h> | ||
36 | 21 | ||
37 | #include "s3c2442.h" | 22 | #include "s3c2442.h" |
38 | #include "clock.h" | ||
39 | #include "devs.h" | ||
40 | #include "cpu.h" | 23 | #include "cpu.h" |
41 | #include "pm.h" | ||
42 | 24 | ||
43 | static struct sys_device s3c2442_sysdev = { | 25 | static struct sys_device s3c2442_sysdev = { |
44 | .cls = &s3c2442_sysclass, | 26 | .cls = &s3c2442_sysclass, |
diff --git a/arch/arm/mach-s3c2410/s3c244x.c b/arch/arm/mach-s3c2410/s3c244x.c index 9a2258270de9..23c7494ad10d 100644 --- a/arch/arm/mach-s3c2410/s3c244x.c +++ b/arch/arm/mach-s3c2410/s3c244x.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/timer.h> | 17 | #include <linux/timer.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/serial_core.h> | ||
19 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
20 | #include <linux/sysdev.h> | 21 | #include <linux/sysdev.h> |
21 | #include <linux/clk.h> | 22 | #include <linux/clk.h> |
@@ -47,8 +48,6 @@ static struct map_desc s3c244x_iodesc[] __initdata = { | |||
47 | IODESC_ENT(TIMER), | 48 | IODESC_ENT(TIMER), |
48 | IODESC_ENT(WATCHDOG), | 49 | IODESC_ENT(WATCHDOG), |
49 | IODESC_ENT(LCD), | 50 | IODESC_ENT(LCD), |
50 | IODESC_ENT(ADC), | ||
51 | IODESC_ENT(USBHOST), | ||
52 | }; | 51 | }; |
53 | 52 | ||
54 | /* uart initialisation */ | 53 | /* uart initialisation */ |
diff --git a/arch/arm/mach-s3c2410/usb-simtec.h b/arch/arm/mach-s3c2410/usb-simtec.h index d8aa6127dedb..03842ede9e71 100644 --- a/arch/arm/mach-s3c2410/usb-simtec.h +++ b/arch/arm/mach-s3c2410/usb-simtec.h | |||
@@ -10,9 +10,6 @@ | |||
10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
11 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
12 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
13 | * | ||
14 | * Modifications: | ||
15 | * 20-Aug-2004 BJD Created | ||
16 | */ | 13 | */ |
17 | 14 | ||
18 | extern int usb_simtec_init(void); | 15 | extern int usb_simtec_init(void); |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 3bb3951920bc..251685fe73a8 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -292,6 +292,8 @@ __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | |||
292 | if (pfn >= 0x100000 && (__pfn_to_phys(pfn) & ~SUPERSECTION_MASK)) | 292 | if (pfn >= 0x100000 && (__pfn_to_phys(pfn) & ~SUPERSECTION_MASK)) |
293 | return NULL; | 293 | return NULL; |
294 | 294 | ||
295 | size = PAGE_ALIGN(size); | ||
296 | |||
295 | area = get_vm_area(size, VM_IOREMAP); | 297 | area = get_vm_area(size, VM_IOREMAP); |
296 | if (!area) | 298 | if (!area) |
297 | return NULL; | 299 | return NULL; |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index f028aef9a861..655c8376f0b5 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -154,6 +154,26 @@ static int __init noalign_setup(char *__unused) | |||
154 | } | 154 | } |
155 | __setup("noalign", noalign_setup); | 155 | __setup("noalign", noalign_setup); |
156 | 156 | ||
157 | #ifndef CONFIG_SMP | ||
158 | void adjust_cr(unsigned long mask, unsigned long set) | ||
159 | { | ||
160 | unsigned long flags; | ||
161 | |||
162 | mask &= ~CR_A; | ||
163 | |||
164 | set &= mask; | ||
165 | |||
166 | local_irq_save(flags); | ||
167 | |||
168 | cr_no_alignment = (cr_no_alignment & ~mask) | set; | ||
169 | cr_alignment = (cr_alignment & ~mask) | set; | ||
170 | |||
171 | set_cr((get_cr() & ~mask) | set); | ||
172 | |||
173 | local_irq_restore(flags); | ||
174 | } | ||
175 | #endif | ||
176 | |||
157 | struct mem_types { | 177 | struct mem_types { |
158 | unsigned int prot_pte; | 178 | unsigned int prot_pte; |
159 | unsigned int prot_l1; | 179 | unsigned int prot_l1; |
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index 43494ae8f01a..94a58455f346 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
@@ -2,7 +2,7 @@ | |||
2 | * linux/arch/arm/mm/proc-xsc3.S | 2 | * linux/arch/arm/mm/proc-xsc3.S |
3 | * | 3 | * |
4 | * Original Author: Matthew Gilbert | 4 | * Original Author: Matthew Gilbert |
5 | * Current Maintainer: Deepak Saxena <dsaxena@plexity.net> | 5 | * Current Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> |
6 | * | 6 | * |
7 | * Copyright 2004 (C) Intel Corp. | 7 | * Copyright 2004 (C) Intel Corp. |
8 | * Copyright 2005 (c) MontaVista Software, Inc. | 8 | * Copyright 2005 (c) MontaVista Software, Inc. |
diff --git a/arch/i386/pci/fixup.c b/arch/i386/pci/fixup.c index cde1170b01a1..8053b17ab647 100644 --- a/arch/i386/pci/fixup.c +++ b/arch/i386/pci/fixup.c | |||
@@ -115,7 +115,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, pci | |||
115 | #define VIA_8363_KL133_REVISION_ID 0x81 | 115 | #define VIA_8363_KL133_REVISION_ID 0x81 |
116 | #define VIA_8363_KM133_REVISION_ID 0x84 | 116 | #define VIA_8363_KM133_REVISION_ID 0x84 |
117 | 117 | ||
118 | static void __devinit pci_fixup_via_northbridge_bug(struct pci_dev *d) | 118 | static void pci_fixup_via_northbridge_bug(struct pci_dev *d) |
119 | { | 119 | { |
120 | u8 v; | 120 | u8 v; |
121 | u8 revision; | 121 | u8 revision; |
@@ -151,6 +151,10 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, pci_fixup_ | |||
151 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8622, pci_fixup_via_northbridge_bug); | 151 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8622, pci_fixup_via_northbridge_bug); |
152 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, pci_fixup_via_northbridge_bug); | 152 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, pci_fixup_via_northbridge_bug); |
153 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_via_northbridge_bug); | 153 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_via_northbridge_bug); |
154 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, pci_fixup_via_northbridge_bug); | ||
155 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8622, pci_fixup_via_northbridge_bug); | ||
156 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, pci_fixup_via_northbridge_bug); | ||
157 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8367_0, pci_fixup_via_northbridge_bug); | ||
154 | 158 | ||
155 | /* | 159 | /* |
156 | * For some reasons Intel decided that certain parts of their | 160 | * For some reasons Intel decided that certain parts of their |
@@ -181,7 +185,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_fixup_transparent_ | |||
181 | * issue another HALT within 80 ns of the initial HALT, the failure condition | 185 | * issue another HALT within 80 ns of the initial HALT, the failure condition |
182 | * is avoided. | 186 | * is avoided. |
183 | */ | 187 | */ |
184 | static void __init pci_fixup_nforce2(struct pci_dev *dev) | 188 | static void pci_fixup_nforce2(struct pci_dev *dev) |
185 | { | 189 | { |
186 | u32 val; | 190 | u32 val; |
187 | 191 | ||
@@ -204,6 +208,7 @@ static void __init pci_fixup_nforce2(struct pci_dev *dev) | |||
204 | } | 208 | } |
205 | } | 209 | } |
206 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2, pci_fixup_nforce2); | 210 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2, pci_fixup_nforce2); |
211 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2, pci_fixup_nforce2); | ||
207 | 212 | ||
208 | /* Max PCI Express root ports */ | 213 | /* Max PCI Express root ports */ |
209 | #define MAX_PCIEROOT 6 | 214 | #define MAX_PCIEROOT 6 |
@@ -419,7 +424,7 @@ DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_TI, 0x8032, | |||
419 | * Prevent the BIOS trapping accesses to the Cyrix CS5530A video device | 424 | * Prevent the BIOS trapping accesses to the Cyrix CS5530A video device |
420 | * configuration space. | 425 | * configuration space. |
421 | */ | 426 | */ |
422 | static void __devinit pci_early_fixup_cyrix_5530(struct pci_dev *dev) | 427 | static void pci_early_fixup_cyrix_5530(struct pci_dev *dev) |
423 | { | 428 | { |
424 | u8 r; | 429 | u8 r; |
425 | /* clear 'F4 Video Configuration Trap' bit */ | 430 | /* clear 'F4 Video Configuration Trap' bit */ |
@@ -429,3 +434,5 @@ static void __devinit pci_early_fixup_cyrix_5530(struct pci_dev *dev) | |||
429 | } | 434 | } |
430 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, | 435 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, |
431 | pci_early_fixup_cyrix_5530); | 436 | pci_early_fixup_cyrix_5530); |
437 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, | ||
438 | pci_early_fixup_cyrix_5530); | ||
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 343dbcfdf08a..98392fb5f581 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -152,6 +152,9 @@ $(obj)/zImage.initrd.miboot: vmlinux $(wrapperbits) | |||
152 | $(obj)/zImage.ps3: vmlinux | 152 | $(obj)/zImage.ps3: vmlinux |
153 | $(STRIP) -s -R .comment $< -o $@ | 153 | $(STRIP) -s -R .comment $< -o $@ |
154 | 154 | ||
155 | $(obj)/zImage.initrd.ps3: vmlinux | ||
156 | @echo " WARNING zImage.initrd.ps3 not supported (yet)" | ||
157 | |||
155 | $(obj)/uImage: vmlinux $(wrapperbits) | 158 | $(obj)/uImage: vmlinux $(wrapperbits) |
156 | $(call cmd,wrap,uboot) | 159 | $(call cmd,wrap,uboot) |
157 | 160 | ||
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index a98c982c73ad..d1d25152f74f 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_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.19-rc6 | 3 | # Linux kernel version: 2.6.20-rc1 |
4 | # Wed Nov 22 15:33:04 2006 | 4 | # Tue Dec 19 14:59:53 2006 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
@@ -10,6 +10,8 @@ CONFIG_MMU=y | |||
10 | CONFIG_GENERIC_HARDIRQS=y | 10 | CONFIG_GENERIC_HARDIRQS=y |
11 | CONFIG_IRQ_PER_CPU=y | 11 | CONFIG_IRQ_PER_CPU=y |
12 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 12 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
13 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
14 | CONFIG_ARCH_HAS_ILOG2_U64=y | ||
13 | CONFIG_GENERIC_HWEIGHT=y | 15 | CONFIG_GENERIC_HWEIGHT=y |
14 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 16 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
15 | CONFIG_GENERIC_FIND_NEXT_BIT=y | 17 | CONFIG_GENERIC_FIND_NEXT_BIT=y |
@@ -23,6 +25,7 @@ CONFIG_PPC_OF=y | |||
23 | CONFIG_PPC_UDBG_16550=y | 25 | CONFIG_PPC_UDBG_16550=y |
24 | # CONFIG_GENERIC_TBSYNC is not set | 26 | # CONFIG_GENERIC_TBSYNC is not set |
25 | CONFIG_AUDIT_ARCH=y | 27 | CONFIG_AUDIT_ARCH=y |
28 | CONFIG_GENERIC_BUG=y | ||
26 | # CONFIG_DEFAULT_UIMAGE is not set | 29 | # CONFIG_DEFAULT_UIMAGE is not set |
27 | 30 | ||
28 | # | 31 | # |
@@ -66,6 +69,7 @@ CONFIG_SYSVIPC=y | |||
66 | CONFIG_IKCONFIG=y | 69 | CONFIG_IKCONFIG=y |
67 | CONFIG_IKCONFIG_PROC=y | 70 | CONFIG_IKCONFIG_PROC=y |
68 | CONFIG_CPUSETS=y | 71 | CONFIG_CPUSETS=y |
72 | CONFIG_SYSFS_DEPRECATED=y | ||
69 | # CONFIG_RELAY is not set | 73 | # CONFIG_RELAY is not set |
70 | CONFIG_INITRAMFS_SOURCE="" | 74 | CONFIG_INITRAMFS_SOURCE="" |
71 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 75 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -128,14 +132,16 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
128 | # CONFIG_APUS is not set | 132 | # CONFIG_APUS is not set |
129 | # CONFIG_PPC_PSERIES is not set | 133 | # CONFIG_PPC_PSERIES is not set |
130 | # CONFIG_PPC_ISERIES is not set | 134 | # CONFIG_PPC_ISERIES is not set |
135 | # CONFIG_PPC_MPC52xx is not set | ||
131 | # CONFIG_PPC_PMAC is not set | 136 | # CONFIG_PPC_PMAC is not set |
132 | # CONFIG_PPC_MAPLE is not set | 137 | # CONFIG_PPC_MAPLE is not set |
133 | # CONFIG_PPC_PASEMI is not set | 138 | # CONFIG_PPC_PASEMI is not set |
134 | CONFIG_PPC_CELL=y | 139 | CONFIG_PPC_CELL=y |
135 | CONFIG_PPC_CELL_NATIVE=y | 140 | CONFIG_PPC_CELL_NATIVE=y |
136 | CONFIG_PPC_IBM_CELL_BLADE=y | 141 | CONFIG_PPC_IBM_CELL_BLADE=y |
137 | CONFIG_UDBG_RTAS_CONSOLE=y | ||
138 | CONFIG_PPC_PS3=y | 142 | CONFIG_PPC_PS3=y |
143 | CONFIG_PPC_NATIVE=y | ||
144 | CONFIG_UDBG_RTAS_CONSOLE=y | ||
139 | # CONFIG_U3_DART is not set | 145 | # CONFIG_U3_DART is not set |
140 | CONFIG_PPC_RTAS=y | 146 | CONFIG_PPC_RTAS=y |
141 | # CONFIG_RTAS_ERROR_LOGGING is not set | 147 | # CONFIG_RTAS_ERROR_LOGGING is not set |
@@ -177,12 +183,14 @@ CONFIG_CBE_CPUFREQ=m | |||
177 | CONFIG_PS3_HTAB_SIZE=20 | 183 | CONFIG_PS3_HTAB_SIZE=20 |
178 | # CONFIG_PS3_DYNAMIC_DMA is not set | 184 | # CONFIG_PS3_DYNAMIC_DMA is not set |
179 | CONFIG_PS3_USE_LPAR_ADDR=y | 185 | CONFIG_PS3_USE_LPAR_ADDR=y |
186 | CONFIG_PS3_VUART=y | ||
180 | 187 | ||
181 | # | 188 | # |
182 | # Kernel options | 189 | # Kernel options |
183 | # | 190 | # |
184 | # CONFIG_HZ_100 is not set | 191 | # CONFIG_HZ_100 is not set |
185 | CONFIG_HZ_250=y | 192 | CONFIG_HZ_250=y |
193 | # CONFIG_HZ_300 is not set | ||
186 | # CONFIG_HZ_1000 is not set | 194 | # CONFIG_HZ_1000 is not set |
187 | CONFIG_HZ=250 | 195 | CONFIG_HZ=250 |
188 | CONFIG_PREEMPT_NONE=y | 196 | CONFIG_PREEMPT_NONE=y |
@@ -237,6 +245,7 @@ CONFIG_GENERIC_ISA_DMA=y | |||
237 | CONFIG_PCI=y | 245 | CONFIG_PCI=y |
238 | CONFIG_PCI_DOMAINS=y | 246 | CONFIG_PCI_DOMAINS=y |
239 | CONFIG_PCIEPORTBUS=y | 247 | CONFIG_PCIEPORTBUS=y |
248 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | ||
240 | # CONFIG_PCI_DEBUG is not set | 249 | # CONFIG_PCI_DEBUG is not set |
241 | 250 | ||
242 | # | 251 | # |
@@ -270,7 +279,10 @@ CONFIG_INET=y | |||
270 | CONFIG_IP_MULTICAST=y | 279 | CONFIG_IP_MULTICAST=y |
271 | # CONFIG_IP_ADVANCED_ROUTER is not set | 280 | # CONFIG_IP_ADVANCED_ROUTER is not set |
272 | CONFIG_IP_FIB_HASH=y | 281 | CONFIG_IP_FIB_HASH=y |
273 | # CONFIG_IP_PNP is not set | 282 | CONFIG_IP_PNP=y |
283 | CONFIG_IP_PNP_DHCP=y | ||
284 | CONFIG_IP_PNP_BOOTP=y | ||
285 | CONFIG_IP_PNP_RARP=y | ||
274 | CONFIG_NET_IPIP=y | 286 | CONFIG_NET_IPIP=y |
275 | # CONFIG_NET_IPGRE is not set | 287 | # CONFIG_NET_IPGRE is not set |
276 | # CONFIG_IP_MROUTE is not set | 288 | # CONFIG_IP_MROUTE is not set |
@@ -289,6 +301,7 @@ CONFIG_INET_TCP_DIAG=y | |||
289 | # CONFIG_TCP_CONG_ADVANCED is not set | 301 | # CONFIG_TCP_CONG_ADVANCED is not set |
290 | CONFIG_TCP_CONG_CUBIC=y | 302 | CONFIG_TCP_CONG_CUBIC=y |
291 | CONFIG_DEFAULT_TCP_CONG="cubic" | 303 | CONFIG_DEFAULT_TCP_CONG="cubic" |
304 | # CONFIG_TCP_MD5SIG is not set | ||
292 | 305 | ||
293 | # | 306 | # |
294 | # IP: Virtual Server Configuration | 307 | # IP: Virtual Server Configuration |
@@ -317,31 +330,67 @@ CONFIG_NETFILTER=y | |||
317 | # | 330 | # |
318 | # Core Netfilter Configuration | 331 | # Core Netfilter Configuration |
319 | # | 332 | # |
320 | # CONFIG_NETFILTER_NETLINK is not set | 333 | CONFIG_NETFILTER_NETLINK=m |
321 | # CONFIG_NETFILTER_XTABLES is not set | 334 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
335 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
336 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
337 | CONFIG_NETFILTER_XTABLES=m | ||
338 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
339 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
340 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
341 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
342 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
343 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
344 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
345 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
346 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
347 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
348 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
349 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
350 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
351 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
352 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
353 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
354 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
355 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
356 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
357 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
358 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
359 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
360 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
322 | 361 | ||
323 | # | 362 | # |
324 | # IP: Netfilter Configuration | 363 | # IP: Netfilter Configuration |
325 | # | 364 | # |
326 | CONFIG_IP_NF_CONNTRACK=y | ||
327 | # CONFIG_IP_NF_CT_ACCT is not set | ||
328 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
329 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
330 | CONFIG_IP_NF_CT_PROTO_SCTP=y | ||
331 | CONFIG_IP_NF_FTP=m | ||
332 | CONFIG_IP_NF_IRC=m | ||
333 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
334 | CONFIG_IP_NF_TFTP=m | ||
335 | CONFIG_IP_NF_AMANDA=m | ||
336 | # CONFIG_IP_NF_PPTP is not set | ||
337 | # CONFIG_IP_NF_H323 is not set | ||
338 | # CONFIG_IP_NF_SIP is not set | ||
339 | CONFIG_IP_NF_QUEUE=m | 365 | CONFIG_IP_NF_QUEUE=m |
366 | CONFIG_IP_NF_IPTABLES=m | ||
367 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
368 | CONFIG_IP_NF_MATCH_TOS=m | ||
369 | CONFIG_IP_NF_MATCH_RECENT=m | ||
370 | CONFIG_IP_NF_MATCH_ECN=m | ||
371 | CONFIG_IP_NF_MATCH_AH=m | ||
372 | CONFIG_IP_NF_MATCH_TTL=m | ||
373 | CONFIG_IP_NF_MATCH_OWNER=m | ||
374 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
375 | CONFIG_IP_NF_FILTER=m | ||
376 | CONFIG_IP_NF_TARGET_REJECT=m | ||
377 | CONFIG_IP_NF_TARGET_LOG=m | ||
378 | CONFIG_IP_NF_TARGET_ULOG=m | ||
379 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
380 | CONFIG_IP_NF_MANGLE=m | ||
381 | CONFIG_IP_NF_TARGET_TOS=m | ||
382 | CONFIG_IP_NF_TARGET_ECN=m | ||
383 | CONFIG_IP_NF_TARGET_TTL=m | ||
384 | CONFIG_IP_NF_RAW=m | ||
385 | CONFIG_IP_NF_ARPTABLES=m | ||
386 | CONFIG_IP_NF_ARPFILTER=m | ||
387 | CONFIG_IP_NF_ARP_MANGLE=m | ||
340 | 388 | ||
341 | # | 389 | # |
342 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 390 | # IPv6: Netfilter Configuration (EXPERIMENTAL) |
343 | # | 391 | # |
344 | # CONFIG_IP6_NF_QUEUE is not set | 392 | # CONFIG_IP6_NF_QUEUE is not set |
393 | # CONFIG_IP6_NF_IPTABLES is not set | ||
345 | 394 | ||
346 | # | 395 | # |
347 | # DCCP Configuration (EXPERIMENTAL) | 396 | # DCCP Configuration (EXPERIMENTAL) |
@@ -373,6 +422,7 @@ CONFIG_IP_NF_QUEUE=m | |||
373 | # QoS and/or fair queueing | 422 | # QoS and/or fair queueing |
374 | # | 423 | # |
375 | # CONFIG_NET_SCHED is not set | 424 | # CONFIG_NET_SCHED is not set |
425 | CONFIG_NET_CLS_ROUTE=y | ||
376 | 426 | ||
377 | # | 427 | # |
378 | # Network testing | 428 | # Network testing |
@@ -428,6 +478,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
428 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | 478 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set |
429 | # CONFIG_BLK_DEV_NBD is not set | 479 | # CONFIG_BLK_DEV_NBD is not set |
430 | # CONFIG_BLK_DEV_SX8 is not set | 480 | # CONFIG_BLK_DEV_SX8 is not set |
481 | # CONFIG_BLK_DEV_UB is not set | ||
431 | CONFIG_BLK_DEV_RAM=y | 482 | CONFIG_BLK_DEV_RAM=y |
432 | CONFIG_BLK_DEV_RAM_COUNT=16 | 483 | CONFIG_BLK_DEV_RAM_COUNT=16 |
433 | CONFIG_BLK_DEV_RAM_SIZE=131072 | 484 | CONFIG_BLK_DEV_RAM_SIZE=131072 |
@@ -457,6 +508,7 @@ CONFIG_IDEDISK_MULTI_MODE=y | |||
457 | # CONFIG_BLK_DEV_IDECD is not set | 508 | # CONFIG_BLK_DEV_IDECD is not set |
458 | # CONFIG_BLK_DEV_IDETAPE is not set | 509 | # CONFIG_BLK_DEV_IDETAPE is not set |
459 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 510 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
511 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
460 | # CONFIG_IDE_TASK_IOCTL is not set | 512 | # CONFIG_IDE_TASK_IOCTL is not set |
461 | 513 | ||
462 | # | 514 | # |
@@ -468,7 +520,6 @@ CONFIG_IDEPCI_SHARE_IRQ=y | |||
468 | # CONFIG_BLK_DEV_OFFBOARD is not set | 520 | # CONFIG_BLK_DEV_OFFBOARD is not set |
469 | CONFIG_BLK_DEV_GENERIC=y | 521 | CONFIG_BLK_DEV_GENERIC=y |
470 | # CONFIG_BLK_DEV_OPTI621 is not set | 522 | # CONFIG_BLK_DEV_OPTI621 is not set |
471 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
472 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 523 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
473 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set | 524 | # CONFIG_BLK_DEV_IDEDMA_FORCED is not set |
474 | CONFIG_IDEDMA_PCI_AUTO=y | 525 | CONFIG_IDEDMA_PCI_AUTO=y |
@@ -492,6 +543,7 @@ CONFIG_BLK_DEV_AEC62XX=y | |||
492 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 543 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
493 | # CONFIG_BLK_DEV_SVWKS is not set | 544 | # CONFIG_BLK_DEV_SVWKS is not set |
494 | CONFIG_BLK_DEV_SIIMAGE=y | 545 | CONFIG_BLK_DEV_SIIMAGE=y |
546 | # CONFIG_BLK_DEV_SL82C105 is not set | ||
495 | # CONFIG_BLK_DEV_SLC90E66 is not set | 547 | # CONFIG_BLK_DEV_SLC90E66 is not set |
496 | # CONFIG_BLK_DEV_TRM290 is not set | 548 | # CONFIG_BLK_DEV_TRM290 is not set |
497 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 549 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
@@ -505,8 +557,74 @@ CONFIG_IDEDMA_AUTO=y | |||
505 | # SCSI device support | 557 | # SCSI device support |
506 | # | 558 | # |
507 | # CONFIG_RAID_ATTRS is not set | 559 | # CONFIG_RAID_ATTRS is not set |
508 | # CONFIG_SCSI is not set | 560 | CONFIG_SCSI=m |
561 | # CONFIG_SCSI_TGT is not set | ||
509 | # CONFIG_SCSI_NETLINK is not set | 562 | # CONFIG_SCSI_NETLINK is not set |
563 | CONFIG_SCSI_PROC_FS=y | ||
564 | |||
565 | # | ||
566 | # SCSI support type (disk, tape, CD-ROM) | ||
567 | # | ||
568 | CONFIG_BLK_DEV_SD=m | ||
569 | # CONFIG_CHR_DEV_ST is not set | ||
570 | # CONFIG_CHR_DEV_OSST is not set | ||
571 | CONFIG_BLK_DEV_SR=m | ||
572 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
573 | CONFIG_CHR_DEV_SG=m | ||
574 | # CONFIG_CHR_DEV_SCH is not set | ||
575 | |||
576 | # | ||
577 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
578 | # | ||
579 | # CONFIG_SCSI_MULTI_LUN is not set | ||
580 | # CONFIG_SCSI_CONSTANTS is not set | ||
581 | # CONFIG_SCSI_LOGGING is not set | ||
582 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
583 | |||
584 | # | ||
585 | # SCSI Transports | ||
586 | # | ||
587 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
588 | # CONFIG_SCSI_FC_ATTRS is not set | ||
589 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
590 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
591 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
592 | |||
593 | # | ||
594 | # SCSI low-level drivers | ||
595 | # | ||
596 | # CONFIG_ISCSI_TCP is not set | ||
597 | # CONFIG_BLK_DEV_3W_XXXX_RAID is not set | ||
598 | # CONFIG_SCSI_3W_9XXX is not set | ||
599 | # CONFIG_SCSI_ACARD is not set | ||
600 | # CONFIG_SCSI_AACRAID is not set | ||
601 | # CONFIG_SCSI_AIC7XXX is not set | ||
602 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
603 | # CONFIG_SCSI_AIC79XX is not set | ||
604 | # CONFIG_SCSI_AIC94XX is not set | ||
605 | # CONFIG_SCSI_ARCMSR is not set | ||
606 | # CONFIG_MEGARAID_NEWGEN is not set | ||
607 | # CONFIG_MEGARAID_LEGACY is not set | ||
608 | # CONFIG_MEGARAID_SAS is not set | ||
609 | # CONFIG_SCSI_HPTIOP is not set | ||
610 | # CONFIG_SCSI_BUSLOGIC is not set | ||
611 | # CONFIG_SCSI_DMX3191D is not set | ||
612 | # CONFIG_SCSI_EATA is not set | ||
613 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
614 | # CONFIG_SCSI_GDTH is not set | ||
615 | # CONFIG_SCSI_IPS is not set | ||
616 | # CONFIG_SCSI_INITIO is not set | ||
617 | # CONFIG_SCSI_INIA100 is not set | ||
618 | # CONFIG_SCSI_STEX is not set | ||
619 | # CONFIG_SCSI_SYM53C8XX_2 is not set | ||
620 | # CONFIG_SCSI_QLOGIC_1280 is not set | ||
621 | # CONFIG_SCSI_QLA_FC is not set | ||
622 | # CONFIG_SCSI_QLA_ISCSI is not set | ||
623 | # CONFIG_SCSI_LPFC is not set | ||
624 | # CONFIG_SCSI_DC395x is not set | ||
625 | # CONFIG_SCSI_DC390T is not set | ||
626 | # CONFIG_SCSI_DEBUG is not set | ||
627 | # CONFIG_SCSI_SRP is not set | ||
510 | 628 | ||
511 | # | 629 | # |
512 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | 630 | # Serial ATA (prod) and Parallel ATA (experimental) drivers |
@@ -538,6 +656,9 @@ CONFIG_DM_MULTIPATH=m | |||
538 | # Fusion MPT device support | 656 | # Fusion MPT device support |
539 | # | 657 | # |
540 | # CONFIG_FUSION is not set | 658 | # CONFIG_FUSION is not set |
659 | # CONFIG_FUSION_SPI is not set | ||
660 | # CONFIG_FUSION_FC is not set | ||
661 | # CONFIG_FUSION_SAS is not set | ||
541 | 662 | ||
542 | # | 663 | # |
543 | # IEEE 1394 (FireWire) support | 664 | # IEEE 1394 (FireWire) support |
@@ -552,6 +673,7 @@ CONFIG_DM_MULTIPATH=m | |||
552 | # | 673 | # |
553 | # Macintosh device drivers | 674 | # Macintosh device drivers |
554 | # | 675 | # |
676 | # CONFIG_MAC_EMUMOUSEBTN is not set | ||
555 | # CONFIG_WINDFARM is not set | 677 | # CONFIG_WINDFARM is not set |
556 | 678 | ||
557 | # | 679 | # |
@@ -559,7 +681,7 @@ CONFIG_DM_MULTIPATH=m | |||
559 | # | 681 | # |
560 | CONFIG_NETDEVICES=y | 682 | CONFIG_NETDEVICES=y |
561 | # CONFIG_DUMMY is not set | 683 | # CONFIG_DUMMY is not set |
562 | CONFIG_BONDING=y | 684 | CONFIG_BONDING=m |
563 | # CONFIG_EQUALIZER is not set | 685 | # CONFIG_EQUALIZER is not set |
564 | CONFIG_TUN=y | 686 | CONFIG_TUN=y |
565 | 687 | ||
@@ -604,11 +726,11 @@ CONFIG_E1000_NAPI=y | |||
604 | # CONFIG_R8169 is not set | 726 | # CONFIG_R8169 is not set |
605 | # CONFIG_SIS190 is not set | 727 | # CONFIG_SIS190 is not set |
606 | CONFIG_SKGE=m | 728 | CONFIG_SKGE=m |
607 | # CONFIG_SKY2 is not set | 729 | CONFIG_SKY2=m |
608 | # CONFIG_SK98LIN is not set | 730 | # CONFIG_SK98LIN is not set |
609 | # CONFIG_TIGON3 is not set | 731 | CONFIG_TIGON3=y |
610 | # CONFIG_BNX2 is not set | 732 | # CONFIG_BNX2 is not set |
611 | CONFIG_SPIDER_NET=m | 733 | CONFIG_SPIDER_NET=y |
612 | # CONFIG_QLA3XXX is not set | 734 | # CONFIG_QLA3XXX is not set |
613 | 735 | ||
614 | # | 736 | # |
@@ -618,6 +740,7 @@ CONFIG_SPIDER_NET=m | |||
618 | # CONFIG_IXGB is not set | 740 | # CONFIG_IXGB is not set |
619 | # CONFIG_S2IO is not set | 741 | # CONFIG_S2IO is not set |
620 | # CONFIG_MYRI10GE is not set | 742 | # CONFIG_MYRI10GE is not set |
743 | # CONFIG_NETXEN_NIC is not set | ||
621 | 744 | ||
622 | # | 745 | # |
623 | # Token Ring devices | 746 | # Token Ring devices |
@@ -637,6 +760,7 @@ CONFIG_SPIDER_NET=m | |||
637 | # CONFIG_HIPPI is not set | 760 | # CONFIG_HIPPI is not set |
638 | # CONFIG_PPP is not set | 761 | # CONFIG_PPP is not set |
639 | # CONFIG_SLIP is not set | 762 | # CONFIG_SLIP is not set |
763 | # CONFIG_NET_FC is not set | ||
640 | # CONFIG_SHAPER is not set | 764 | # CONFIG_SHAPER is not set |
641 | # CONFIG_NETCONSOLE is not set | 765 | # CONFIG_NETCONSOLE is not set |
642 | # CONFIG_NETPOLL is not set | 766 | # CONFIG_NETPOLL is not set |
@@ -703,6 +827,7 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
703 | # CONFIG_DIGIEPCA is not set | 827 | # CONFIG_DIGIEPCA is not set |
704 | # CONFIG_MOXA_INTELLIO is not set | 828 | # CONFIG_MOXA_INTELLIO is not set |
705 | # CONFIG_MOXA_SMARTIO is not set | 829 | # CONFIG_MOXA_SMARTIO is not set |
830 | # CONFIG_MOXA_SMARTIO_NEW is not set | ||
706 | # CONFIG_ISI is not set | 831 | # CONFIG_ISI is not set |
707 | # CONFIG_SYNCLINK is not set | 832 | # CONFIG_SYNCLINK is not set |
708 | # CONFIG_SYNCLINKMP is not set | 833 | # CONFIG_SYNCLINKMP is not set |
@@ -729,6 +854,7 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | |||
729 | CONFIG_SERIAL_CORE=y | 854 | CONFIG_SERIAL_CORE=y |
730 | CONFIG_SERIAL_CORE_CONSOLE=y | 855 | CONFIG_SERIAL_CORE_CONSOLE=y |
731 | # CONFIG_SERIAL_JSM is not set | 856 | # CONFIG_SERIAL_JSM is not set |
857 | CONFIG_SERIAL_OF_PLATFORM=y | ||
732 | CONFIG_UNIX98_PTYS=y | 858 | CONFIG_UNIX98_PTYS=y |
733 | # CONFIG_LEGACY_PTYS is not set | 859 | # CONFIG_LEGACY_PTYS is not set |
734 | CONFIG_HVC_DRIVER=y | 860 | CONFIG_HVC_DRIVER=y |
@@ -756,16 +882,17 @@ CONFIG_WATCHDOG_RTAS=y | |||
756 | # | 882 | # |
757 | # CONFIG_PCIPCWATCHDOG is not set | 883 | # CONFIG_PCIPCWATCHDOG is not set |
758 | # CONFIG_WDTPCI is not set | 884 | # CONFIG_WDTPCI is not set |
885 | |||
886 | # | ||
887 | # USB-based Watchdog Cards | ||
888 | # | ||
889 | # CONFIG_USBPCWATCHDOG is not set | ||
759 | # CONFIG_HW_RANDOM is not set | 890 | # CONFIG_HW_RANDOM is not set |
760 | CONFIG_GEN_RTC=y | 891 | CONFIG_GEN_RTC=y |
761 | # CONFIG_GEN_RTC_X is not set | 892 | # CONFIG_GEN_RTC_X is not set |
762 | # CONFIG_DTLK is not set | 893 | # CONFIG_DTLK is not set |
763 | # CONFIG_R3964 is not set | 894 | # CONFIG_R3964 is not set |
764 | # CONFIG_APPLICOM is not set | 895 | # CONFIG_APPLICOM is not set |
765 | |||
766 | # | ||
767 | # Ftape, the floppy tape device driver | ||
768 | # | ||
769 | # CONFIG_AGP is not set | 896 | # CONFIG_AGP is not set |
770 | # CONFIG_DRM is not set | 897 | # CONFIG_DRM is not set |
771 | # CONFIG_RAW_DRIVER is not set | 898 | # CONFIG_RAW_DRIVER is not set |
@@ -855,12 +982,14 @@ CONFIG_I2C_ALGOBIT=y | |||
855 | # Digital Video Broadcasting Devices | 982 | # Digital Video Broadcasting Devices |
856 | # | 983 | # |
857 | # CONFIG_DVB is not set | 984 | # CONFIG_DVB is not set |
985 | # CONFIG_USB_DABUSB is not set | ||
858 | 986 | ||
859 | # | 987 | # |
860 | # Graphics support | 988 | # Graphics support |
861 | # | 989 | # |
862 | CONFIG_FIRMWARE_EDID=y | 990 | CONFIG_FIRMWARE_EDID=y |
863 | # CONFIG_FB is not set | 991 | # CONFIG_FB is not set |
992 | # CONFIG_FB_IBM_GXT4500 is not set | ||
864 | 993 | ||
865 | # | 994 | # |
866 | # Console display driver support | 995 | # Console display driver support |
@@ -875,18 +1004,145 @@ CONFIG_DUMMY_CONSOLE=y | |||
875 | # CONFIG_SOUND is not set | 1004 | # CONFIG_SOUND is not set |
876 | 1005 | ||
877 | # | 1006 | # |
1007 | # HID Devices | ||
1008 | # | ||
1009 | CONFIG_HID=m | ||
1010 | |||
1011 | # | ||
878 | # USB support | 1012 | # USB support |
879 | # | 1013 | # |
880 | CONFIG_USB_ARCH_HAS_HCD=y | 1014 | CONFIG_USB_ARCH_HAS_HCD=y |
881 | CONFIG_USB_ARCH_HAS_OHCI=y | 1015 | CONFIG_USB_ARCH_HAS_OHCI=y |
882 | CONFIG_USB_ARCH_HAS_EHCI=y | 1016 | CONFIG_USB_ARCH_HAS_EHCI=y |
883 | # CONFIG_USB is not set | 1017 | CONFIG_USB=m |
1018 | # CONFIG_USB_DEBUG is not set | ||
1019 | |||
1020 | # | ||
1021 | # Miscellaneous USB options | ||
1022 | # | ||
1023 | CONFIG_USB_DEVICEFS=y | ||
1024 | # CONFIG_USB_BANDWIDTH is not set | ||
1025 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
1026 | # CONFIG_USB_MULTITHREAD_PROBE is not set | ||
1027 | # CONFIG_USB_OTG is not set | ||
1028 | |||
1029 | # | ||
1030 | # USB Host Controller Drivers | ||
1031 | # | ||
1032 | CONFIG_USB_EHCI_HCD=m | ||
1033 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1034 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||
1035 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||
1036 | # CONFIG_USB_ISP116X_HCD is not set | ||
1037 | CONFIG_USB_OHCI_HCD=m | ||
1038 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
1039 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
1040 | # CONFIG_USB_UHCI_HCD is not set | ||
1041 | # CONFIG_USB_SL811_HCD is not set | ||
1042 | |||
1043 | # | ||
1044 | # USB Device Class drivers | ||
1045 | # | ||
1046 | # CONFIG_USB_ACM is not set | ||
1047 | # CONFIG_USB_PRINTER is not set | ||
884 | 1048 | ||
885 | # | 1049 | # |
886 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1050 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
887 | # | 1051 | # |
888 | 1052 | ||
889 | # | 1053 | # |
1054 | # may also be needed; see USB_STORAGE Help for more information | ||
1055 | # | ||
1056 | CONFIG_USB_STORAGE=m | ||
1057 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
1058 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
1059 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
1060 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
1061 | # CONFIG_USB_STORAGE_DPCM is not set | ||
1062 | # CONFIG_USB_STORAGE_USBAT is not set | ||
1063 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
1064 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
1065 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
1066 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
1067 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1068 | # CONFIG_USB_LIBUSUAL is not set | ||
1069 | |||
1070 | # | ||
1071 | # USB Input Devices | ||
1072 | # | ||
1073 | # CONFIG_USB_HID is not set | ||
1074 | |||
1075 | # | ||
1076 | # USB HID Boot Protocol drivers | ||
1077 | # | ||
1078 | # CONFIG_USB_KBD is not set | ||
1079 | # CONFIG_USB_MOUSE is not set | ||
1080 | # CONFIG_USB_AIPTEK is not set | ||
1081 | # CONFIG_USB_WACOM is not set | ||
1082 | # CONFIG_USB_ACECAD is not set | ||
1083 | # CONFIG_USB_KBTAB is not set | ||
1084 | # CONFIG_USB_POWERMATE is not set | ||
1085 | # CONFIG_USB_TOUCHSCREEN is not set | ||
1086 | # CONFIG_USB_YEALINK is not set | ||
1087 | # CONFIG_USB_XPAD is not set | ||
1088 | # CONFIG_USB_ATI_REMOTE is not set | ||
1089 | # CONFIG_USB_ATI_REMOTE2 is not set | ||
1090 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
1091 | # CONFIG_USB_APPLETOUCH is not set | ||
1092 | |||
1093 | # | ||
1094 | # USB Imaging devices | ||
1095 | # | ||
1096 | # CONFIG_USB_MDC800 is not set | ||
1097 | # CONFIG_USB_MICROTEK is not set | ||
1098 | |||
1099 | # | ||
1100 | # USB Network Adapters | ||
1101 | # | ||
1102 | # CONFIG_USB_CATC is not set | ||
1103 | # CONFIG_USB_KAWETH is not set | ||
1104 | # CONFIG_USB_PEGASUS is not set | ||
1105 | # CONFIG_USB_RTL8150 is not set | ||
1106 | # CONFIG_USB_USBNET_MII is not set | ||
1107 | # CONFIG_USB_USBNET is not set | ||
1108 | CONFIG_USB_MON=y | ||
1109 | |||
1110 | # | ||
1111 | # USB port drivers | ||
1112 | # | ||
1113 | |||
1114 | # | ||
1115 | # USB Serial Converter support | ||
1116 | # | ||
1117 | # CONFIG_USB_SERIAL is not set | ||
1118 | |||
1119 | # | ||
1120 | # USB Miscellaneous drivers | ||
1121 | # | ||
1122 | # CONFIG_USB_EMI62 is not set | ||
1123 | # CONFIG_USB_EMI26 is not set | ||
1124 | # CONFIG_USB_ADUTUX is not set | ||
1125 | # CONFIG_USB_AUERSWALD is not set | ||
1126 | # CONFIG_USB_RIO500 is not set | ||
1127 | # CONFIG_USB_LEGOTOWER is not set | ||
1128 | # CONFIG_USB_LCD is not set | ||
1129 | # CONFIG_USB_LED is not set | ||
1130 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1131 | # CONFIG_USB_CYTHERM is not set | ||
1132 | # CONFIG_USB_PHIDGET is not set | ||
1133 | # CONFIG_USB_IDMOUSE is not set | ||
1134 | # CONFIG_USB_FTDI_ELAN is not set | ||
1135 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1136 | # CONFIG_USB_SISUSBVGA is not set | ||
1137 | # CONFIG_USB_LD is not set | ||
1138 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1139 | # CONFIG_USB_TEST is not set | ||
1140 | |||
1141 | # | ||
1142 | # USB DSL modem support | ||
1143 | # | ||
1144 | |||
1145 | # | ||
890 | # USB Gadget Support | 1146 | # USB Gadget Support |
891 | # | 1147 | # |
892 | # CONFIG_USB_GADGET is not set | 1148 | # CONFIG_USB_GADGET is not set |
@@ -912,7 +1168,7 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
912 | # | 1168 | # |
913 | # InfiniBand support | 1169 | # InfiniBand support |
914 | # | 1170 | # |
915 | CONFIG_INFINIBAND=y | 1171 | CONFIG_INFINIBAND=m |
916 | CONFIG_INFINIBAND_USER_MAD=m | 1172 | CONFIG_INFINIBAND_USER_MAD=m |
917 | CONFIG_INFINIBAND_USER_ACCESS=m | 1173 | CONFIG_INFINIBAND_USER_ACCESS=m |
918 | CONFIG_INFINIBAND_ADDR_TRANS=y | 1174 | CONFIG_INFINIBAND_ADDR_TRANS=y |
@@ -922,6 +1178,8 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y | |||
922 | CONFIG_INFINIBAND_IPOIB=m | 1178 | CONFIG_INFINIBAND_IPOIB=m |
923 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | 1179 | CONFIG_INFINIBAND_IPOIB_DEBUG=y |
924 | CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y | 1180 | CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y |
1181 | # CONFIG_INFINIBAND_SRP is not set | ||
1182 | # CONFIG_INFINIBAND_ISER is not set | ||
925 | 1183 | ||
926 | # | 1184 | # |
927 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1185 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) |
@@ -946,6 +1204,10 @@ CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y | |||
946 | # | 1204 | # |
947 | 1205 | ||
948 | # | 1206 | # |
1207 | # Virtualization | ||
1208 | # | ||
1209 | |||
1210 | # | ||
949 | # File systems | 1211 | # File systems |
950 | # | 1212 | # |
951 | CONFIG_EXT2_FS=y | 1213 | CONFIG_EXT2_FS=y |
@@ -1028,23 +1290,18 @@ CONFIG_RAMFS=y | |||
1028 | # | 1290 | # |
1029 | # Network File Systems | 1291 | # Network File Systems |
1030 | # | 1292 | # |
1031 | CONFIG_NFS_FS=m | 1293 | CONFIG_NFS_FS=y |
1032 | CONFIG_NFS_V3=y | 1294 | CONFIG_NFS_V3=y |
1033 | CONFIG_NFS_V3_ACL=y | 1295 | CONFIG_NFS_V3_ACL=y |
1034 | # CONFIG_NFS_V4 is not set | 1296 | # CONFIG_NFS_V4 is not set |
1035 | # CONFIG_NFS_DIRECTIO is not set | 1297 | # CONFIG_NFS_DIRECTIO is not set |
1036 | CONFIG_NFSD=m | 1298 | # CONFIG_NFSD is not set |
1037 | CONFIG_NFSD_V2_ACL=y | 1299 | CONFIG_ROOT_NFS=y |
1038 | CONFIG_NFSD_V3=y | 1300 | CONFIG_LOCKD=y |
1039 | CONFIG_NFSD_V3_ACL=y | ||
1040 | # CONFIG_NFSD_V4 is not set | ||
1041 | CONFIG_NFSD_TCP=y | ||
1042 | CONFIG_LOCKD=m | ||
1043 | CONFIG_LOCKD_V4=y | 1301 | CONFIG_LOCKD_V4=y |
1044 | CONFIG_EXPORTFS=m | 1302 | CONFIG_NFS_ACL_SUPPORT=y |
1045 | CONFIG_NFS_ACL_SUPPORT=m | ||
1046 | CONFIG_NFS_COMMON=y | 1303 | CONFIG_NFS_COMMON=y |
1047 | CONFIG_SUNRPC=m | 1304 | CONFIG_SUNRPC=y |
1048 | # CONFIG_RPCSEC_GSS_KRB5 is not set | 1305 | # CONFIG_RPCSEC_GSS_KRB5 is not set |
1049 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 1306 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
1050 | # CONFIG_SMB_FS is not set | 1307 | # CONFIG_SMB_FS is not set |
@@ -1120,8 +1377,14 @@ CONFIG_NLS_ISO8859_15=m | |||
1120 | # CONFIG_NLS_UTF8 is not set | 1377 | # CONFIG_NLS_UTF8 is not set |
1121 | 1378 | ||
1122 | # | 1379 | # |
1380 | # Distributed Lock Manager | ||
1381 | # | ||
1382 | # CONFIG_DLM is not set | ||
1383 | |||
1384 | # | ||
1123 | # Library routines | 1385 | # Library routines |
1124 | # | 1386 | # |
1387 | CONFIG_BITREVERSE=y | ||
1125 | # CONFIG_CRC_CCITT is not set | 1388 | # CONFIG_CRC_CCITT is not set |
1126 | # CONFIG_CRC16 is not set | 1389 | # CONFIG_CRC16 is not set |
1127 | CONFIG_CRC32=y | 1390 | CONFIG_CRC32=y |
@@ -1130,7 +1393,10 @@ CONFIG_ZLIB_INFLATE=m | |||
1130 | CONFIG_ZLIB_DEFLATE=m | 1393 | CONFIG_ZLIB_DEFLATE=m |
1131 | CONFIG_TEXTSEARCH=y | 1394 | CONFIG_TEXTSEARCH=y |
1132 | CONFIG_TEXTSEARCH_KMP=m | 1395 | CONFIG_TEXTSEARCH_KMP=m |
1396 | CONFIG_TEXTSEARCH_BM=m | ||
1397 | CONFIG_TEXTSEARCH_FSM=m | ||
1133 | CONFIG_PLIST=y | 1398 | CONFIG_PLIST=y |
1399 | CONFIG_IOMAP_COPY=y | ||
1134 | 1400 | ||
1135 | # | 1401 | # |
1136 | # Instrumentation Support | 1402 | # Instrumentation Support |
@@ -1146,6 +1412,8 @@ CONFIG_OPROFILE=y | |||
1146 | # CONFIG_ENABLE_MUST_CHECK is not set | 1412 | # CONFIG_ENABLE_MUST_CHECK is not set |
1147 | CONFIG_MAGIC_SYSRQ=y | 1413 | CONFIG_MAGIC_SYSRQ=y |
1148 | # CONFIG_UNUSED_SYMBOLS is not set | 1414 | # CONFIG_UNUSED_SYMBOLS is not set |
1415 | CONFIG_DEBUG_FS=y | ||
1416 | # CONFIG_HEADERS_CHECK is not set | ||
1149 | CONFIG_DEBUG_KERNEL=y | 1417 | CONFIG_DEBUG_KERNEL=y |
1150 | CONFIG_LOG_BUF_SHIFT=15 | 1418 | CONFIG_LOG_BUF_SHIFT=15 |
1151 | CONFIG_DETECT_SOFTLOCKUP=y | 1419 | CONFIG_DETECT_SOFTLOCKUP=y |
@@ -1159,12 +1427,11 @@ CONFIG_DEBUG_MUTEXES=y | |||
1159 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 1427 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
1160 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1428 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1161 | # CONFIG_DEBUG_KOBJECT is not set | 1429 | # CONFIG_DEBUG_KOBJECT is not set |
1430 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1162 | # CONFIG_DEBUG_INFO is not set | 1431 | # CONFIG_DEBUG_INFO is not set |
1163 | CONFIG_DEBUG_FS=y | ||
1164 | # CONFIG_DEBUG_VM is not set | 1432 | # CONFIG_DEBUG_VM is not set |
1165 | # CONFIG_DEBUG_LIST is not set | 1433 | # CONFIG_DEBUG_LIST is not set |
1166 | # CONFIG_FORCED_INLINING is not set | 1434 | # CONFIG_FORCED_INLINING is not set |
1167 | # CONFIG_HEADERS_CHECK is not set | ||
1168 | # CONFIG_RCU_TORTURE_TEST is not set | 1435 | # CONFIG_RCU_TORTURE_TEST is not set |
1169 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1436 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
1170 | # CONFIG_DEBUG_STACK_USAGE is not set | 1437 | # CONFIG_DEBUG_STACK_USAGE is not set |
@@ -1191,6 +1458,7 @@ CONFIG_CRYPTO_BLKCIPHER=m | |||
1191 | CONFIG_CRYPTO_HASH=y | 1458 | CONFIG_CRYPTO_HASH=y |
1192 | CONFIG_CRYPTO_MANAGER=y | 1459 | CONFIG_CRYPTO_MANAGER=y |
1193 | CONFIG_CRYPTO_HMAC=y | 1460 | CONFIG_CRYPTO_HMAC=y |
1461 | # CONFIG_CRYPTO_XCBC is not set | ||
1194 | # CONFIG_CRYPTO_NULL is not set | 1462 | # CONFIG_CRYPTO_NULL is not set |
1195 | # CONFIG_CRYPTO_MD4 is not set | 1463 | # CONFIG_CRYPTO_MD4 is not set |
1196 | CONFIG_CRYPTO_MD5=m | 1464 | CONFIG_CRYPTO_MD5=m |
@@ -1199,8 +1467,10 @@ CONFIG_CRYPTO_SHA1=m | |||
1199 | # CONFIG_CRYPTO_SHA512 is not set | 1467 | # CONFIG_CRYPTO_SHA512 is not set |
1200 | # CONFIG_CRYPTO_WP512 is not set | 1468 | # CONFIG_CRYPTO_WP512 is not set |
1201 | # CONFIG_CRYPTO_TGR192 is not set | 1469 | # CONFIG_CRYPTO_TGR192 is not set |
1470 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1202 | CONFIG_CRYPTO_ECB=m | 1471 | CONFIG_CRYPTO_ECB=m |
1203 | CONFIG_CRYPTO_CBC=m | 1472 | CONFIG_CRYPTO_CBC=m |
1473 | # CONFIG_CRYPTO_LRW is not set | ||
1204 | CONFIG_CRYPTO_DES=m | 1474 | CONFIG_CRYPTO_DES=m |
1205 | # CONFIG_CRYPTO_BLOWFISH is not set | 1475 | # CONFIG_CRYPTO_BLOWFISH is not set |
1206 | # CONFIG_CRYPTO_TWOFISH is not set | 1476 | # CONFIG_CRYPTO_TWOFISH is not set |
diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c index 3002ea3a61a2..b7345176b399 100644 --- a/arch/powerpc/kernel/of_platform.c +++ b/arch/powerpc/kernel/of_platform.c | |||
@@ -50,6 +50,7 @@ static struct of_device_id of_default_bus_ids[] = { | |||
50 | { .type = "plb5", }, | 50 | { .type = "plb5", }, |
51 | { .type = "plb4", }, | 51 | { .type = "plb4", }, |
52 | { .type = "opb", }, | 52 | { .type = "opb", }, |
53 | { .type = "ebc", }, | ||
53 | {}, | 54 | {}, |
54 | }; | 55 | }; |
55 | 56 | ||
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index a6b7692c7269..73c59ec49120 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -360,6 +360,7 @@ struct pci_dev *of_create_pci_dev(struct device_node *node, | |||
360 | DBG(" class: 0x%x\n", dev->class); | 360 | DBG(" class: 0x%x\n", dev->class); |
361 | 361 | ||
362 | dev->current_state = 4; /* unknown power state */ | 362 | dev->current_state = 4; /* unknown power state */ |
363 | dev->error_state = pci_channel_io_normal; | ||
363 | 364 | ||
364 | if (!strcmp(type, "pci") || !strcmp(type, "pciex")) { | 365 | if (!strcmp(type, "pci") || !strcmp(type, "pciex")) { |
365 | /* a PCI-PCI bridge */ | 366 | /* a PCI-PCI bridge */ |
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c index 0dfbe1cd28eb..12c51e4ad2b4 100644 --- a/arch/powerpc/kernel/prom_parse.c +++ b/arch/powerpc/kernel/prom_parse.c | |||
@@ -920,9 +920,20 @@ static int of_irq_map_oldworld(struct device_node *device, int index, | |||
920 | 920 | ||
921 | /* | 921 | /* |
922 | * Old machines just have a list of interrupt numbers | 922 | * Old machines just have a list of interrupt numbers |
923 | * and no interrupt-controller nodes. | 923 | * and no interrupt-controller nodes. We also have dodgy |
924 | * cases where the APPL,interrupts property is completely | ||
925 | * missing behind pci-pci bridges and we have to get it | ||
926 | * from the parent (the bridge itself, as apple just wired | ||
927 | * everything together on these) | ||
924 | */ | 928 | */ |
925 | ints = get_property(device, "AAPL,interrupts", &intlen); | 929 | while (device) { |
930 | ints = get_property(device, "AAPL,interrupts", &intlen); | ||
931 | if (ints != NULL) | ||
932 | break; | ||
933 | device = device->parent; | ||
934 | if (device && strcmp(device->type, "pci") != 0) | ||
935 | break; | ||
936 | } | ||
926 | if (ints == NULL) | 937 | if (ints == NULL) |
927 | return -EINVAL; | 938 | return -EINVAL; |
928 | intlen /= sizeof(u32); | 939 | intlen /= sizeof(u32); |
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index e4ebe1a6228e..6b405a3f43f9 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -835,11 +835,21 @@ long sys_swapcontext(struct ucontext __user *old_ctx, | |||
835 | return -EINVAL; | 835 | return -EINVAL; |
836 | 836 | ||
837 | if (old_ctx != NULL) { | 837 | if (old_ctx != NULL) { |
838 | struct mcontext __user *mctx; | ||
839 | |||
840 | /* | ||
841 | * old_ctx might not be 16-byte aligned, in which | ||
842 | * case old_ctx->uc_mcontext won't be either. | ||
843 | * Because we have the old_ctx->uc_pad2 field | ||
844 | * before old_ctx->uc_mcontext, we need to round down | ||
845 | * from &old_ctx->uc_mcontext to a 16-byte boundary. | ||
846 | */ | ||
847 | mctx = (struct mcontext __user *) | ||
848 | ((unsigned long) &old_ctx->uc_mcontext & ~0xfUL); | ||
838 | if (!access_ok(VERIFY_WRITE, old_ctx, sizeof(*old_ctx)) | 849 | if (!access_ok(VERIFY_WRITE, old_ctx, sizeof(*old_ctx)) |
839 | || save_user_regs(regs, &old_ctx->uc_mcontext, 0) | 850 | || save_user_regs(regs, mctx, 0) |
840 | || put_sigset_t(&old_ctx->uc_sigmask, ¤t->blocked) | 851 | || put_sigset_t(&old_ctx->uc_sigmask, ¤t->blocked) |
841 | || __put_user(to_user_ptr(&old_ctx->uc_mcontext), | 852 | || __put_user(to_user_ptr(mctx), &old_ctx->uc_regs)) |
842 | &old_ctx->uc_regs)) | ||
843 | return -EFAULT; | 853 | return -EFAULT; |
844 | } | 854 | } |
845 | if (new_ctx == NULL) | 855 | if (new_ctx == NULL) |
diff --git a/arch/powerpc/platforms/Makefile b/arch/powerpc/platforms/Makefile index 44d95eaf22e6..507d1b98f270 100644 --- a/arch/powerpc/platforms/Makefile +++ b/arch/powerpc/platforms/Makefile | |||
@@ -5,9 +5,9 @@ ifeq ($(CONFIG_PPC64),y) | |||
5 | obj-$(CONFIG_PPC_PMAC) += powermac/ | 5 | obj-$(CONFIG_PPC_PMAC) += powermac/ |
6 | endif | 6 | endif |
7 | endif | 7 | endif |
8 | obj-$(CONFIG_PPC_MPC52xx) += 52xx/ | ||
8 | obj-$(CONFIG_PPC_CHRP) += chrp/ | 9 | obj-$(CONFIG_PPC_CHRP) += chrp/ |
9 | obj-$(CONFIG_4xx) += 4xx/ | 10 | obj-$(CONFIG_4xx) += 4xx/ |
10 | obj-$(CONFIG_PPC_MPC52xx) += 52xx/ | ||
11 | obj-$(CONFIG_PPC_83xx) += 83xx/ | 11 | obj-$(CONFIG_PPC_83xx) += 83xx/ |
12 | obj-$(CONFIG_PPC_85xx) += 85xx/ | 12 | obj-$(CONFIG_PPC_85xx) += 85xx/ |
13 | obj-$(CONFIG_PPC_86xx) += 86xx/ | 13 | obj-$(CONFIG_PPC_86xx) += 86xx/ |
diff --git a/arch/powerpc/platforms/cell/io-workarounds.c b/arch/powerpc/platforms/cell/io-workarounds.c index 580d42595912..7c73128305ec 100644 --- a/arch/powerpc/platforms/cell/io-workarounds.c +++ b/arch/powerpc/platforms/cell/io-workarounds.c | |||
@@ -37,7 +37,7 @@ | |||
37 | */ | 37 | */ |
38 | #define SPIDER_DISABLE_PREFETCH | 38 | #define SPIDER_DISABLE_PREFETCH |
39 | 39 | ||
40 | #define MAX_SPIDERS 2 | 40 | #define MAX_SPIDERS 3 |
41 | 41 | ||
42 | static struct spider_pci_bus { | 42 | static struct spider_pci_bus { |
43 | void __iomem *regs; | 43 | void __iomem *regs; |
diff --git a/arch/powerpc/platforms/cell/spu_priv1_mmio.c b/arch/powerpc/platforms/cell/spu_priv1_mmio.c index a5de0430c56d..910a926b61a2 100644 --- a/arch/powerpc/platforms/cell/spu_priv1_mmio.c +++ b/arch/powerpc/platforms/cell/spu_priv1_mmio.c | |||
@@ -37,8 +37,9 @@ | |||
37 | #include "interrupt.h" | 37 | #include "interrupt.h" |
38 | #include "spu_priv1_mmio.h" | 38 | #include "spu_priv1_mmio.h" |
39 | 39 | ||
40 | static DEFINE_MUTEX(add_spumem_mutex); | ||
41 | |||
40 | struct spu_pdata { | 42 | struct spu_pdata { |
41 | int nid; | ||
42 | struct device_node *devnode; | 43 | struct device_node *devnode; |
43 | struct spu_priv1 __iomem *priv1; | 44 | struct spu_priv1 __iomem *priv1; |
44 | }; | 45 | }; |
@@ -56,20 +57,9 @@ struct device_node *spu_devnode(struct spu *spu) | |||
56 | 57 | ||
57 | EXPORT_SYMBOL_GPL(spu_devnode); | 58 | EXPORT_SYMBOL_GPL(spu_devnode); |
58 | 59 | ||
59 | static int __init find_spu_node_id(struct device_node *spe) | ||
60 | { | ||
61 | const unsigned int *id; | ||
62 | struct device_node *cpu; | ||
63 | cpu = spe->parent->parent; | ||
64 | id = get_property(cpu, "node-id", NULL); | ||
65 | return id ? *id : 0; | ||
66 | } | ||
67 | |||
68 | static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, | 60 | static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, |
69 | const char *prop) | 61 | const char *prop) |
70 | { | 62 | { |
71 | static DEFINE_MUTEX(add_spumem_mutex); | ||
72 | |||
73 | const struct address_prop { | 63 | const struct address_prop { |
74 | unsigned long address; | 64 | unsigned long address; |
75 | unsigned int len; | 65 | unsigned int len; |
@@ -87,7 +77,7 @@ static int __init cell_spuprop_present(struct spu *spu, struct device_node *spe, | |||
87 | start_pfn = p->address >> PAGE_SHIFT; | 77 | start_pfn = p->address >> PAGE_SHIFT; |
88 | nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> PAGE_SHIFT; | 78 | nr_pages = ((unsigned long)p->len + PAGE_SIZE - 1) >> PAGE_SHIFT; |
89 | 79 | ||
90 | pgdata = NODE_DATA(spu_get_pdata(spu)->nid); | 80 | pgdata = NODE_DATA(spu->node); |
91 | zone = pgdata->node_zones; | 81 | zone = pgdata->node_zones; |
92 | 82 | ||
93 | /* XXX rethink locking here */ | 83 | /* XXX rethink locking here */ |
@@ -140,6 +130,7 @@ static int __init spu_map_interrupts_old(struct spu *spu, | |||
140 | { | 130 | { |
141 | unsigned int isrc; | 131 | unsigned int isrc; |
142 | const u32 *tmp; | 132 | const u32 *tmp; |
133 | int nid; | ||
143 | 134 | ||
144 | /* Get the interrupt source unit from the device-tree */ | 135 | /* Get the interrupt source unit from the device-tree */ |
145 | tmp = get_property(np, "isrc", NULL); | 136 | tmp = get_property(np, "isrc", NULL); |
@@ -147,8 +138,15 @@ static int __init spu_map_interrupts_old(struct spu *spu, | |||
147 | return -ENODEV; | 138 | return -ENODEV; |
148 | isrc = tmp[0]; | 139 | isrc = tmp[0]; |
149 | 140 | ||
141 | tmp = get_property(np->parent->parent, "node-id", NULL); | ||
142 | if (!tmp) { | ||
143 | printk(KERN_WARNING "%s: can't find node-id\n", __FUNCTION__); | ||
144 | nid = spu->node; | ||
145 | } else | ||
146 | nid = tmp[0]; | ||
147 | |||
150 | /* Add the node number */ | 148 | /* Add the node number */ |
151 | isrc |= spu->node << IIC_IRQ_NODE_SHIFT; | 149 | isrc |= nid << IIC_IRQ_NODE_SHIFT; |
152 | 150 | ||
153 | /* Now map interrupts of all 3 classes */ | 151 | /* Now map interrupts of all 3 classes */ |
154 | spu->irqs[0] = irq_create_mapping(NULL, IIC_IRQ_CLASS_0 | isrc); | 152 | spu->irqs[0] = irq_create_mapping(NULL, IIC_IRQ_CLASS_0 | isrc); |
@@ -237,70 +235,88 @@ err: | |||
237 | return ret; | 235 | return ret; |
238 | } | 236 | } |
239 | 237 | ||
240 | static int spu_map_resource(struct device_node *node, int nr, | 238 | static int spu_map_resource(struct spu *spu, int nr, |
241 | void __iomem** virt, unsigned long *phys) | 239 | void __iomem** virt, unsigned long *phys) |
242 | { | 240 | { |
241 | struct device_node *np = spu_get_pdata(spu)->devnode; | ||
242 | unsigned long start_pfn, nr_pages; | ||
243 | struct pglist_data *pgdata; | ||
244 | struct zone *zone; | ||
243 | struct resource resource = { }; | 245 | struct resource resource = { }; |
246 | unsigned long len; | ||
244 | int ret; | 247 | int ret; |
245 | 248 | ||
246 | ret = of_address_to_resource(node, nr, &resource); | 249 | ret = of_address_to_resource(np, nr, &resource); |
247 | if (ret) | 250 | if (ret) |
248 | goto out; | 251 | goto out; |
249 | 252 | ||
250 | if (phys) | 253 | if (phys) |
251 | *phys = resource.start; | 254 | *phys = resource.start; |
252 | *virt = ioremap(resource.start, resource.end - resource.start); | 255 | len = resource.end - resource.start + 1; |
256 | *virt = ioremap(resource.start, len); | ||
253 | if (!*virt) | 257 | if (!*virt) |
254 | ret = -EINVAL; | 258 | ret = -EINVAL; |
255 | 259 | ||
260 | start_pfn = resource.start >> PAGE_SHIFT; | ||
261 | nr_pages = (len + PAGE_SIZE - 1) >> PAGE_SHIFT; | ||
262 | |||
263 | pgdata = NODE_DATA(spu->node); | ||
264 | zone = pgdata->node_zones; | ||
265 | |||
266 | /* XXX rethink locking here */ | ||
267 | mutex_lock(&add_spumem_mutex); | ||
268 | ret = __add_pages(zone, start_pfn, nr_pages); | ||
269 | mutex_unlock(&add_spumem_mutex); | ||
270 | |||
256 | out: | 271 | out: |
257 | return ret; | 272 | return ret; |
258 | } | 273 | } |
259 | 274 | ||
260 | static int __init spu_map_device(struct spu *spu, struct device_node *node) | 275 | static int __init spu_map_device(struct spu *spu) |
261 | { | 276 | { |
277 | struct device_node *np = spu_get_pdata(spu)->devnode; | ||
262 | int ret = -ENODEV; | 278 | int ret = -ENODEV; |
263 | spu->name = get_property(node, "name", NULL); | 279 | |
280 | spu->name = get_property(np, "name", NULL); | ||
264 | if (!spu->name) | 281 | if (!spu->name) |
265 | goto out; | 282 | goto out; |
266 | 283 | ||
267 | ret = spu_map_resource(node, 0, (void __iomem**)&spu->local_store, | 284 | ret = spu_map_resource(spu, 0, (void __iomem**)&spu->local_store, |
268 | &spu->local_store_phys); | 285 | &spu->local_store_phys); |
269 | if (ret) { | 286 | if (ret) { |
270 | pr_debug("spu_new: failed to map %s resource 0\n", | 287 | pr_debug("spu_new: failed to map %s resource 0\n", |
271 | node->full_name); | 288 | np->full_name); |
272 | goto out; | 289 | goto out; |
273 | } | 290 | } |
274 | ret = spu_map_resource(node, 1, (void __iomem**)&spu->problem, | 291 | ret = spu_map_resource(spu, 1, (void __iomem**)&spu->problem, |
275 | &spu->problem_phys); | 292 | &spu->problem_phys); |
276 | if (ret) { | 293 | if (ret) { |
277 | pr_debug("spu_new: failed to map %s resource 1\n", | 294 | pr_debug("spu_new: failed to map %s resource 1\n", |
278 | node->full_name); | 295 | np->full_name); |
279 | goto out_unmap; | 296 | goto out_unmap; |
280 | } | 297 | } |
281 | ret = spu_map_resource(node, 2, (void __iomem**)&spu->priv2, | 298 | ret = spu_map_resource(spu, 2, (void __iomem**)&spu->priv2, NULL); |
282 | NULL); | ||
283 | if (ret) { | 299 | if (ret) { |
284 | pr_debug("spu_new: failed to map %s resource 2\n", | 300 | pr_debug("spu_new: failed to map %s resource 2\n", |
285 | node->full_name); | 301 | np->full_name); |
286 | goto out_unmap; | 302 | goto out_unmap; |
287 | } | 303 | } |
288 | if (!firmware_has_feature(FW_FEATURE_LPAR)) | 304 | if (!firmware_has_feature(FW_FEATURE_LPAR)) |
289 | ret = spu_map_resource(node, 3, | 305 | ret = spu_map_resource(spu, 3, |
290 | (void __iomem**)&spu_get_pdata(spu)->priv1, NULL); | 306 | (void __iomem**)&spu_get_pdata(spu)->priv1, NULL); |
291 | if (ret) { | 307 | if (ret) { |
292 | pr_debug("spu_new: failed to map %s resource 3\n", | 308 | pr_debug("spu_new: failed to map %s resource 3\n", |
293 | node->full_name); | 309 | np->full_name); |
294 | goto out_unmap; | 310 | goto out_unmap; |
295 | } | 311 | } |
296 | pr_debug("spu_new: %s maps:\n", node->full_name); | 312 | pr_debug("spu_new: %s maps:\n", np->full_name); |
297 | pr_debug(" local store : 0x%016lx -> 0x%p\n", | 313 | pr_debug(" local store : 0x%016lx -> 0x%p\n", |
298 | spu->local_store_phys, spu->local_store); | 314 | spu->local_store_phys, spu->local_store); |
299 | pr_debug(" problem state : 0x%016lx -> 0x%p\n", | 315 | pr_debug(" problem state : 0x%016lx -> 0x%p\n", |
300 | spu->problem_phys, spu->problem); | 316 | spu->problem_phys, spu->problem); |
301 | pr_debug(" priv2 : 0x%p\n", spu->priv2); | 317 | pr_debug(" priv2 : 0x%p\n", spu->priv2); |
302 | pr_debug(" priv1 : 0x%p\n", | 318 | pr_debug(" priv1 : 0x%p\n", |
303 | spu_get_pdata(spu)->priv1); | 319 | spu_get_pdata(spu)->priv1); |
304 | 320 | ||
305 | return 0; | 321 | return 0; |
306 | 322 | ||
@@ -340,8 +356,9 @@ static int __init of_create_spu(struct spu *spu, void *data) | |||
340 | ret = -ENOMEM; | 356 | ret = -ENOMEM; |
341 | goto out; | 357 | goto out; |
342 | } | 358 | } |
359 | spu_get_pdata(spu)->devnode = of_node_get(spe); | ||
343 | 360 | ||
344 | spu->node = find_spu_node_id(spe); | 361 | spu->node = of_node_to_nid(spe); |
345 | if (spu->node >= MAX_NUMNODES) { | 362 | if (spu->node >= MAX_NUMNODES) { |
346 | printk(KERN_WARNING "SPE %s on node %d ignored," | 363 | printk(KERN_WARNING "SPE %s on node %d ignored," |
347 | " node number too big\n", spe->full_name, spu->node); | 364 | " node number too big\n", spe->full_name, spu->node); |
@@ -350,11 +367,7 @@ static int __init of_create_spu(struct spu *spu, void *data) | |||
350 | goto out_free; | 367 | goto out_free; |
351 | } | 368 | } |
352 | 369 | ||
353 | spu_get_pdata(spu)->nid = of_node_to_nid(spe); | 370 | ret = spu_map_device(spu); |
354 | if (spu_get_pdata(spu)->nid == -1) | ||
355 | spu_get_pdata(spu)->nid = 0; | ||
356 | |||
357 | ret = spu_map_device(spu, spe); | ||
358 | /* try old method */ | 371 | /* try old method */ |
359 | if (ret) | 372 | if (ret) |
360 | ret = spu_map_device_old(spu, spe); | 373 | ret = spu_map_device_old(spu, spe); |
@@ -367,8 +380,6 @@ static int __init of_create_spu(struct spu *spu, void *data) | |||
367 | if (ret) | 380 | if (ret) |
368 | goto out_unmap; | 381 | goto out_unmap; |
369 | 382 | ||
370 | spu_get_pdata(spu)->devnode = of_node_get(spe); | ||
371 | |||
372 | pr_debug(KERN_DEBUG "Using SPE %s %p %p %p %p %d\n", spu->name, | 383 | pr_debug(KERN_DEBUG "Using SPE %s %p %p %p %p %d\n", spu->name, |
373 | spu->local_store, spu->problem, spu_get_pdata(spu)->priv1, | 384 | spu->local_store, spu->problem, spu_get_pdata(spu)->priv1, |
374 | spu->priv2, spu->number); | 385 | spu->priv2, spu->number); |
diff --git a/arch/powerpc/platforms/iseries/Kconfig b/arch/powerpc/platforms/iseries/Kconfig index 887b68804e6d..54e6b3b6f261 100644 --- a/arch/powerpc/platforms/iseries/Kconfig +++ b/arch/powerpc/platforms/iseries/Kconfig | |||
@@ -31,5 +31,5 @@ endmenu | |||
31 | 31 | ||
32 | config VIOPATH | 32 | config VIOPATH |
33 | bool | 33 | bool |
34 | depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || VETH | 34 | depends on VIOCONS || VIODASD || VIOCD || VIOTAPE || ISERIES_VETH |
35 | default y | 35 | default y |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 411480d5c626..d01ced11694d 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -390,7 +390,7 @@ static void __init mpic_scan_ht_pic(struct mpic *mpic, u8 __iomem *devbase, | |||
390 | u8 id = readb(devbase + pos + PCI_CAP_LIST_ID); | 390 | u8 id = readb(devbase + pos + PCI_CAP_LIST_ID); |
391 | if (id == PCI_CAP_ID_HT) { | 391 | if (id == PCI_CAP_ID_HT) { |
392 | id = readb(devbase + pos + 3); | 392 | id = readb(devbase + pos + 3); |
393 | if (id == HT_CAPTYPE_IRQ) | 393 | if ((id & HT_5BIT_CAP_MASK) == HT_CAPTYPE_IRQ) |
394 | break; | 394 | break; |
395 | } | 395 | } |
396 | } | 396 | } |
diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c index 003a9876c968..5a8445959f67 100644 --- a/drivers/acpi/ibm_acpi.c +++ b/drivers/acpi/ibm_acpi.c | |||
@@ -352,7 +352,7 @@ static char *next_cmd(char **cmds) | |||
352 | return start; | 352 | return start; |
353 | } | 353 | } |
354 | 354 | ||
355 | static int driver_init(void) | 355 | static int ibm_acpi_driver_init(void) |
356 | { | 356 | { |
357 | printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION); | 357 | printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION); |
358 | printk(IBM_INFO "%s\n", IBM_URL); | 358 | printk(IBM_INFO "%s\n", IBM_URL); |
@@ -1605,7 +1605,7 @@ static int fan_write(char *buf) | |||
1605 | static struct ibm_struct ibms[] = { | 1605 | static struct ibm_struct ibms[] = { |
1606 | { | 1606 | { |
1607 | .name = "driver", | 1607 | .name = "driver", |
1608 | .init = driver_init, | 1608 | .init = ibm_acpi_driver_init, |
1609 | .read = driver_read, | 1609 | .read = driver_read, |
1610 | }, | 1610 | }, |
1611 | { | 1611 | { |
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index e19ba4ebcd4e..68592c336011 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <asm/iseries/hv_lp_event.h> | 49 | #include <asm/iseries/hv_lp_event.h> |
50 | #include <asm/iseries/hv_lp_config.h> | 50 | #include <asm/iseries/hv_lp_config.h> |
51 | #include <asm/iseries/vio.h> | 51 | #include <asm/iseries/vio.h> |
52 | #include <asm/firmware.h> | ||
52 | 53 | ||
53 | MODULE_DESCRIPTION("iSeries Virtual DASD"); | 54 | MODULE_DESCRIPTION("iSeries Virtual DASD"); |
54 | MODULE_AUTHOR("Dave Boutcher"); | 55 | MODULE_AUTHOR("Dave Boutcher"); |
@@ -769,6 +770,11 @@ static int __init viodasd_init(void) | |||
769 | { | 770 | { |
770 | int rc; | 771 | int rc; |
771 | 772 | ||
773 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) { | ||
774 | rc = -ENODEV; | ||
775 | goto early_fail; | ||
776 | } | ||
777 | |||
772 | /* Try to open to our host lp */ | 778 | /* Try to open to our host lp */ |
773 | if (viopath_hostLp == HvLpIndexInvalid) | 779 | if (viopath_hostLp == HvLpIndexInvalid) |
774 | vio_set_hostlp(); | 780 | vio_set_hostlp(); |
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index fdea58ae16b2..aeefec97fdee 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c | |||
@@ -126,6 +126,7 @@ static struct usb_device_id blacklist_ids[] = { | |||
126 | 126 | ||
127 | /* Kensington Bluetooth USB adapter */ | 127 | /* Kensington Bluetooth USB adapter */ |
128 | { USB_DEVICE(0x047d, 0x105d), .driver_info = HCI_RESET }, | 128 | { USB_DEVICE(0x047d, 0x105d), .driver_info = HCI_RESET }, |
129 | { USB_DEVICE(0x047d, 0x105e), .driver_info = HCI_WRONG_SCO_MTU }, | ||
129 | 130 | ||
130 | /* ISSC Bluetooth Adapter v3.1 */ | 131 | /* ISSC Bluetooth Adapter v3.1 */ |
131 | { USB_DEVICE(0x1131, 0x1001), .driver_info = HCI_RESET }, | 132 | { USB_DEVICE(0x1131, 0x1001), .driver_info = HCI_RESET }, |
diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index 54ca931e19ea..93fbf84dcc4a 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <asm/iseries/hv_types.h> | 47 | #include <asm/iseries/hv_types.h> |
48 | #include <asm/iseries/hv_lp_event.h> | 48 | #include <asm/iseries/hv_lp_event.h> |
49 | #include <asm/iseries/vio.h> | 49 | #include <asm/iseries/vio.h> |
50 | #include <asm/firmware.h> | ||
50 | 51 | ||
51 | #define VIOCD_DEVICE "iseries/vcd" | 52 | #define VIOCD_DEVICE "iseries/vcd" |
52 | 53 | ||
@@ -748,6 +749,9 @@ static int __init viocd_init(void) | |||
748 | struct proc_dir_entry *e; | 749 | struct proc_dir_entry *e; |
749 | int ret = 0; | 750 | int ret = 0; |
750 | 751 | ||
752 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
753 | return -ENODEV; | ||
754 | |||
751 | if (viopath_hostLp == HvLpIndexInvalid) { | 755 | if (viopath_hostLp == HvLpIndexInvalid) { |
752 | vio_set_hostlp(); | 756 | vio_set_hostlp(); |
753 | /* If we don't have a host, bail out */ | 757 | /* If we don't have a host, bail out */ |
diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h index 0bbb04f2390f..6dcdceb81203 100644 --- a/drivers/char/drm/drmP.h +++ b/drivers/char/drm/drmP.h | |||
@@ -561,8 +561,7 @@ struct drm_driver { | |||
561 | int (*context_dtor) (struct drm_device * dev, int context); | 561 | int (*context_dtor) (struct drm_device * dev, int context); |
562 | int (*kernel_context_switch) (struct drm_device * dev, int old, | 562 | int (*kernel_context_switch) (struct drm_device * dev, int old, |
563 | int new); | 563 | int new); |
564 | void (*kernel_context_switch_unlock) (struct drm_device * dev, | 564 | void (*kernel_context_switch_unlock) (struct drm_device * dev); |
565 | drm_lock_t *lock); | ||
566 | int (*vblank_wait) (struct drm_device * dev, unsigned int *sequence); | 565 | int (*vblank_wait) (struct drm_device * dev, unsigned int *sequence); |
567 | int (*vblank_wait2) (struct drm_device * dev, unsigned int *sequence); | 566 | int (*vblank_wait2) (struct drm_device * dev, unsigned int *sequence); |
568 | int (*dri_library_name) (struct drm_device *dev, char *buf); | 567 | int (*dri_library_name) (struct drm_device *dev, char *buf); |
@@ -1143,9 +1142,5 @@ extern void *drm_calloc(size_t nmemb, size_t size, int area); | |||
1143 | extern unsigned long drm_core_get_map_ofs(drm_map_t * map); | 1142 | extern unsigned long drm_core_get_map_ofs(drm_map_t * map); |
1144 | extern unsigned long drm_core_get_reg_ofs(struct drm_device *dev); | 1143 | extern unsigned long drm_core_get_reg_ofs(struct drm_device *dev); |
1145 | 1144 | ||
1146 | #ifndef pci_pretty_name | ||
1147 | #define pci_pretty_name(dev) "" | ||
1148 | #endif | ||
1149 | |||
1150 | #endif /* __KERNEL__ */ | 1145 | #endif /* __KERNEL__ */ |
1151 | #endif | 1146 | #endif |
diff --git a/drivers/char/drm/drm_lock.c b/drivers/char/drm/drm_lock.c index 116ed0f2ac09..e9993ba461a2 100644 --- a/drivers/char/drm/drm_lock.c +++ b/drivers/char/drm/drm_lock.c | |||
@@ -182,7 +182,7 @@ int drm_unlock(struct inode *inode, struct file *filp, | |||
182 | * modules but is required by the Sparc driver. | 182 | * modules but is required by the Sparc driver. |
183 | */ | 183 | */ |
184 | if (dev->driver->kernel_context_switch_unlock) | 184 | if (dev->driver->kernel_context_switch_unlock) |
185 | dev->driver->kernel_context_switch_unlock(dev, &lock); | 185 | dev->driver->kernel_context_switch_unlock(dev); |
186 | else { | 186 | else { |
187 | drm_lock_transfer(dev, &dev->lock.hw_lock->lock, | 187 | drm_lock_transfer(dev, &dev->lock.hw_lock->lock, |
188 | DRM_KERNEL_CONTEXT); | 188 | DRM_KERNEL_CONTEXT); |
diff --git a/drivers/char/drm/drm_stub.c b/drivers/char/drm/drm_stub.c index 5fd6dc0870cf..120d10256feb 100644 --- a/drivers/char/drm/drm_stub.c +++ b/drivers/char/drm/drm_stub.c | |||
@@ -211,14 +211,16 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent, | |||
211 | if (!dev) | 211 | if (!dev) |
212 | return -ENOMEM; | 212 | return -ENOMEM; |
213 | 213 | ||
214 | pci_enable_device(pdev); | 214 | ret = pci_enable_device(pdev); |
215 | if (ret) | ||
216 | goto err_g1; | ||
215 | 217 | ||
216 | if ((ret = drm_fill_in_dev(dev, pdev, ent, driver))) { | 218 | if ((ret = drm_fill_in_dev(dev, pdev, ent, driver))) { |
217 | printk(KERN_ERR "DRM: Fill_in_dev failed.\n"); | 219 | printk(KERN_ERR "DRM: Fill_in_dev failed.\n"); |
218 | goto err_g1; | 220 | goto err_g2; |
219 | } | 221 | } |
220 | if ((ret = drm_get_head(dev, &dev->primary))) | 222 | if ((ret = drm_get_head(dev, &dev->primary))) |
221 | goto err_g1; | 223 | goto err_g2; |
222 | 224 | ||
223 | DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", | 225 | DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", |
224 | driver->name, driver->major, driver->minor, driver->patchlevel, | 226 | driver->name, driver->major, driver->minor, driver->patchlevel, |
@@ -226,7 +228,9 @@ int drm_get_dev(struct pci_dev *pdev, const struct pci_device_id *ent, | |||
226 | 228 | ||
227 | return 0; | 229 | return 0; |
228 | 230 | ||
229 | err_g1: | 231 | err_g2: |
232 | pci_disable_device(pdev); | ||
233 | err_g1: | ||
230 | drm_free(dev, sizeof(*dev), DRM_MEM_STUB); | 234 | drm_free(dev, sizeof(*dev), DRM_MEM_STUB); |
231 | return ret; | 235 | return ret; |
232 | } | 236 | } |
diff --git a/drivers/char/drm/drm_sysfs.c b/drivers/char/drm/drm_sysfs.c index ba4b8de83cf0..cc8e2ebe128c 100644 --- a/drivers/char/drm/drm_sysfs.c +++ b/drivers/char/drm/drm_sysfs.c | |||
@@ -45,8 +45,8 @@ struct class *drm_sysfs_create(struct module *owner, char *name) | |||
45 | int err; | 45 | int err; |
46 | 46 | ||
47 | class = class_create(owner, name); | 47 | class = class_create(owner, name); |
48 | if (!class) { | 48 | if (IS_ERR(class)) { |
49 | err = -ENOMEM; | 49 | err = PTR_ERR(class); |
50 | goto err_out; | 50 | goto err_out; |
51 | } | 51 | } |
52 | 52 | ||
@@ -113,8 +113,8 @@ struct class_device *drm_sysfs_device_add(struct class *cs, drm_head_t *head) | |||
113 | MKDEV(DRM_MAJOR, head->minor), | 113 | MKDEV(DRM_MAJOR, head->minor), |
114 | &(head->dev->pdev)->dev, | 114 | &(head->dev->pdev)->dev, |
115 | "card%d", head->minor); | 115 | "card%d", head->minor); |
116 | if (!class_dev) { | 116 | if (IS_ERR(class_dev)) { |
117 | err = -ENOMEM; | 117 | err = PTR_ERR(class_dev); |
118 | goto err_out; | 118 | goto err_out; |
119 | } | 119 | } |
120 | 120 | ||
diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c index e5463b111fc0..e2c4b3a41b1e 100644 --- a/drivers/char/drm/i915_irq.c +++ b/drivers/char/drm/i915_irq.c | |||
@@ -46,88 +46,167 @@ static void i915_vblank_tasklet(drm_device_t *dev) | |||
46 | { | 46 | { |
47 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 47 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
48 | unsigned long irqflags; | 48 | unsigned long irqflags; |
49 | struct list_head *list, *tmp; | 49 | struct list_head *list, *tmp, hits, *hit; |
50 | int nhits, nrects, slice[2], upper[2], lower[2], i; | ||
51 | unsigned counter[2] = { atomic_read(&dev->vbl_received), | ||
52 | atomic_read(&dev->vbl_received2) }; | ||
53 | drm_drawable_info_t *drw; | ||
54 | drm_i915_sarea_t *sarea_priv = dev_priv->sarea_priv; | ||
55 | u32 cpp = dev_priv->cpp; | ||
56 | u32 cmd = (cpp == 4) ? (XY_SRC_COPY_BLT_CMD | | ||
57 | XY_SRC_COPY_BLT_WRITE_ALPHA | | ||
58 | XY_SRC_COPY_BLT_WRITE_RGB) | ||
59 | : XY_SRC_COPY_BLT_CMD; | ||
60 | u32 pitchropcpp = (sarea_priv->pitch * cpp) | (0xcc << 16) | | ||
61 | (cpp << 23) | (1 << 24); | ||
62 | RING_LOCALS; | ||
50 | 63 | ||
51 | DRM_DEBUG("\n"); | 64 | DRM_DEBUG("\n"); |
52 | 65 | ||
66 | INIT_LIST_HEAD(&hits); | ||
67 | |||
68 | nhits = nrects = 0; | ||
69 | |||
53 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); | 70 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); |
54 | 71 | ||
72 | /* Find buffer swaps scheduled for this vertical blank */ | ||
55 | list_for_each_safe(list, tmp, &dev_priv->vbl_swaps.head) { | 73 | list_for_each_safe(list, tmp, &dev_priv->vbl_swaps.head) { |
56 | drm_i915_vbl_swap_t *vbl_swap = | 74 | drm_i915_vbl_swap_t *vbl_swap = |
57 | list_entry(list, drm_i915_vbl_swap_t, head); | 75 | list_entry(list, drm_i915_vbl_swap_t, head); |
58 | atomic_t *counter = vbl_swap->pipe ? &dev->vbl_received2 : | ||
59 | &dev->vbl_received; | ||
60 | |||
61 | if ((atomic_read(counter) - vbl_swap->sequence) <= (1<<23)) { | ||
62 | drm_drawable_info_t *drw; | ||
63 | |||
64 | spin_unlock(&dev_priv->swaps_lock); | ||
65 | |||
66 | spin_lock(&dev->drw_lock); | ||
67 | |||
68 | drw = drm_get_drawable_info(dev, vbl_swap->drw_id); | ||
69 | |||
70 | if (drw) { | ||
71 | int i, num_rects = drw->num_rects; | ||
72 | drm_clip_rect_t *rect = drw->rects; | ||
73 | drm_i915_sarea_t *sarea_priv = | ||
74 | dev_priv->sarea_priv; | ||
75 | u32 cpp = dev_priv->cpp; | ||
76 | u32 cmd = (cpp == 4) ? (XY_SRC_COPY_BLT_CMD | | ||
77 | XY_SRC_COPY_BLT_WRITE_ALPHA | | ||
78 | XY_SRC_COPY_BLT_WRITE_RGB) | ||
79 | : XY_SRC_COPY_BLT_CMD; | ||
80 | u32 pitchropcpp = (sarea_priv->pitch * cpp) | | ||
81 | (0xcc << 16) | (cpp << 23) | | ||
82 | (1 << 24); | ||
83 | RING_LOCALS; | ||
84 | |||
85 | i915_kernel_lost_context(dev); | ||
86 | |||
87 | BEGIN_LP_RING(6); | ||
88 | |||
89 | OUT_RING(GFX_OP_DRAWRECT_INFO); | ||
90 | OUT_RING(0); | ||
91 | OUT_RING(0); | ||
92 | OUT_RING(sarea_priv->width | | ||
93 | sarea_priv->height << 16); | ||
94 | OUT_RING(sarea_priv->width | | ||
95 | sarea_priv->height << 16); | ||
96 | OUT_RING(0); | ||
97 | 76 | ||
98 | ADVANCE_LP_RING(); | 77 | if ((counter[vbl_swap->pipe] - vbl_swap->sequence) > (1<<23)) |
78 | continue; | ||
79 | |||
80 | list_del(list); | ||
81 | dev_priv->swaps_pending--; | ||
99 | 82 | ||
100 | sarea_priv->ctxOwner = DRM_KERNEL_CONTEXT; | 83 | spin_unlock(&dev_priv->swaps_lock); |
84 | spin_lock(&dev->drw_lock); | ||
101 | 85 | ||
102 | for (i = 0; i < num_rects; i++, rect++) { | 86 | drw = drm_get_drawable_info(dev, vbl_swap->drw_id); |
103 | BEGIN_LP_RING(8); | 87 | |
88 | if (!drw) { | ||
89 | spin_unlock(&dev->drw_lock); | ||
90 | drm_free(vbl_swap, sizeof(*vbl_swap), DRM_MEM_DRIVER); | ||
91 | spin_lock(&dev_priv->swaps_lock); | ||
92 | continue; | ||
93 | } | ||
104 | 94 | ||
105 | OUT_RING(cmd); | 95 | list_for_each(hit, &hits) { |
106 | OUT_RING(pitchropcpp); | 96 | drm_i915_vbl_swap_t *swap_cmp = |
107 | OUT_RING((rect->y1 << 16) | rect->x1); | 97 | list_entry(hit, drm_i915_vbl_swap_t, head); |
108 | OUT_RING((rect->y2 << 16) | rect->x2); | 98 | drm_drawable_info_t *drw_cmp = |
109 | OUT_RING(sarea_priv->front_offset); | 99 | drm_get_drawable_info(dev, swap_cmp->drw_id); |
110 | OUT_RING((rect->y1 << 16) | rect->x1); | ||
111 | OUT_RING(pitchropcpp & 0xffff); | ||
112 | OUT_RING(sarea_priv->back_offset); | ||
113 | 100 | ||
114 | ADVANCE_LP_RING(); | 101 | if (drw_cmp && |
115 | } | 102 | drw_cmp->rects[0].y1 > drw->rects[0].y1) { |
103 | list_add_tail(list, hit); | ||
104 | break; | ||
116 | } | 105 | } |
106 | } | ||
117 | 107 | ||
118 | spin_unlock(&dev->drw_lock); | 108 | spin_unlock(&dev->drw_lock); |
119 | 109 | ||
120 | spin_lock(&dev_priv->swaps_lock); | 110 | /* List of hits was empty, or we reached the end of it */ |
111 | if (hit == &hits) | ||
112 | list_add_tail(list, hits.prev); | ||
121 | 113 | ||
122 | list_del(list); | 114 | nhits++; |
123 | 115 | ||
124 | drm_free(vbl_swap, sizeof(*vbl_swap), DRM_MEM_DRIVER); | 116 | spin_lock(&dev_priv->swaps_lock); |
117 | } | ||
118 | |||
119 | if (nhits == 0) { | ||
120 | spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); | ||
121 | return; | ||
122 | } | ||
123 | |||
124 | spin_unlock(&dev_priv->swaps_lock); | ||
125 | 125 | ||
126 | dev_priv->swaps_pending--; | 126 | i915_kernel_lost_context(dev); |
127 | |||
128 | BEGIN_LP_RING(6); | ||
129 | |||
130 | OUT_RING(GFX_OP_DRAWRECT_INFO); | ||
131 | OUT_RING(0); | ||
132 | OUT_RING(0); | ||
133 | OUT_RING(sarea_priv->width | sarea_priv->height << 16); | ||
134 | OUT_RING(sarea_priv->width | sarea_priv->height << 16); | ||
135 | OUT_RING(0); | ||
136 | |||
137 | ADVANCE_LP_RING(); | ||
138 | |||
139 | sarea_priv->ctxOwner = DRM_KERNEL_CONTEXT; | ||
140 | |||
141 | upper[0] = upper[1] = 0; | ||
142 | slice[0] = max(sarea_priv->pipeA_h / nhits, 1); | ||
143 | slice[1] = max(sarea_priv->pipeB_h / nhits, 1); | ||
144 | lower[0] = sarea_priv->pipeA_y + slice[0]; | ||
145 | lower[1] = sarea_priv->pipeB_y + slice[0]; | ||
146 | |||
147 | spin_lock(&dev->drw_lock); | ||
148 | |||
149 | /* Emit blits for buffer swaps, partitioning both outputs into as many | ||
150 | * slices as there are buffer swaps scheduled in order to avoid tearing | ||
151 | * (based on the assumption that a single buffer swap would always | ||
152 | * complete before scanout starts). | ||
153 | */ | ||
154 | for (i = 0; i++ < nhits; | ||
155 | upper[0] = lower[0], lower[0] += slice[0], | ||
156 | upper[1] = lower[1], lower[1] += slice[1]) { | ||
157 | if (i == nhits) | ||
158 | lower[0] = lower[1] = sarea_priv->height; | ||
159 | |||
160 | list_for_each(hit, &hits) { | ||
161 | drm_i915_vbl_swap_t *swap_hit = | ||
162 | list_entry(hit, drm_i915_vbl_swap_t, head); | ||
163 | drm_clip_rect_t *rect; | ||
164 | int num_rects, pipe; | ||
165 | unsigned short top, bottom; | ||
166 | |||
167 | drw = drm_get_drawable_info(dev, swap_hit->drw_id); | ||
168 | |||
169 | if (!drw) | ||
170 | continue; | ||
171 | |||
172 | rect = drw->rects; | ||
173 | pipe = swap_hit->pipe; | ||
174 | top = upper[pipe]; | ||
175 | bottom = lower[pipe]; | ||
176 | |||
177 | for (num_rects = drw->num_rects; num_rects--; rect++) { | ||
178 | int y1 = max(rect->y1, top); | ||
179 | int y2 = min(rect->y2, bottom); | ||
180 | |||
181 | if (y1 >= y2) | ||
182 | continue; | ||
183 | |||
184 | BEGIN_LP_RING(8); | ||
185 | |||
186 | OUT_RING(cmd); | ||
187 | OUT_RING(pitchropcpp); | ||
188 | OUT_RING((y1 << 16) | rect->x1); | ||
189 | OUT_RING((y2 << 16) | rect->x2); | ||
190 | OUT_RING(sarea_priv->front_offset); | ||
191 | OUT_RING((y1 << 16) | rect->x1); | ||
192 | OUT_RING(pitchropcpp & 0xffff); | ||
193 | OUT_RING(sarea_priv->back_offset); | ||
194 | |||
195 | ADVANCE_LP_RING(); | ||
196 | } | ||
127 | } | 197 | } |
128 | } | 198 | } |
129 | 199 | ||
130 | spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); | 200 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); |
201 | |||
202 | list_for_each_safe(hit, tmp, &hits) { | ||
203 | drm_i915_vbl_swap_t *swap_hit = | ||
204 | list_entry(hit, drm_i915_vbl_swap_t, head); | ||
205 | |||
206 | list_del(hit); | ||
207 | |||
208 | drm_free(swap_hit, sizeof(*swap_hit), DRM_MEM_DRIVER); | ||
209 | } | ||
131 | } | 210 | } |
132 | 211 | ||
133 | irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS) | 212 | irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS) |
diff --git a/drivers/char/drm/r128_drm.h b/drivers/char/drm/r128_drm.h index 5d835b006f55..6e8af313f2b4 100644 --- a/drivers/char/drm/r128_drm.h +++ b/drivers/char/drm/r128_drm.h | |||
@@ -1,7 +1,8 @@ | |||
1 | /* r128_drm.h -- Public header for the r128 driver -*- linux-c -*- | 1 | /* r128_drm.h -- Public header for the r128 driver -*- linux-c -*- |
2 | * Created: Wed Apr 5 19:24:19 2000 by kevin@precisioninsight.com | 2 | * Created: Wed Apr 5 19:24:19 2000 by kevin@precisioninsight.com |
3 | */ | 3 | */ |
4 | /* Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. | 4 | /* |
5 | * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. | ||
5 | * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | 6 | * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. |
6 | * All rights reserved. | 7 | * All rights reserved. |
7 | * | 8 | * |
diff --git a/drivers/char/drm/r128_drv.h b/drivers/char/drm/r128_drv.h index 94abffb2cca5..f1efb49de8df 100644 --- a/drivers/char/drm/r128_drv.h +++ b/drivers/char/drm/r128_drv.h | |||
@@ -1,7 +1,8 @@ | |||
1 | /* r128_drv.h -- Private header for r128 driver -*- linux-c -*- | 1 | /* r128_drv.h -- Private header for r128 driver -*- linux-c -*- |
2 | * Created: Mon Dec 13 09:51:11 1999 by faith@precisioninsight.com | 2 | * Created: Mon Dec 13 09:51:11 1999 by faith@precisioninsight.com |
3 | */ | 3 | */ |
4 | /* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. | 4 | /* |
5 | * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. | ||
5 | * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | 6 | * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. |
6 | * All rights reserved. | 7 | * All rights reserved. |
7 | * | 8 | * |
diff --git a/drivers/char/drm/r128_state.c b/drivers/char/drm/r128_state.c index a080cdd6081e..17b11e7d8f32 100644 --- a/drivers/char/drm/r128_state.c +++ b/drivers/char/drm/r128_state.c | |||
@@ -1,7 +1,8 @@ | |||
1 | /* r128_state.c -- State support for r128 -*- linux-c -*- | 1 | /* r128_state.c -- State support for r128 -*- linux-c -*- |
2 | * Created: Thu Jan 27 02:53:43 2000 by gareth@valinux.com | 2 | * Created: Thu Jan 27 02:53:43 2000 by gareth@valinux.com |
3 | */ | 3 | */ |
4 | /* Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | 4 | /* |
5 | * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. | ||
5 | * All Rights Reserved. | 6 | * All Rights Reserved. |
6 | * | 7 | * |
7 | * Permission is hereby granted, free of charge, to any person obtaining a | 8 | * Permission is hereby granted, free of charge, to any person obtaining a |
diff --git a/drivers/char/drm/r300_cmdbuf.c b/drivers/char/drm/r300_cmdbuf.c index d14477ba3679..032a022ec6a8 100644 --- a/drivers/char/drm/r300_cmdbuf.c +++ b/drivers/char/drm/r300_cmdbuf.c | |||
@@ -242,26 +242,6 @@ static __inline__ int r300_check_range(unsigned reg, int count) | |||
242 | return 0; | 242 | return 0; |
243 | } | 243 | } |
244 | 244 | ||
245 | /* | ||
246 | * we expect offsets passed to the framebuffer to be either within video | ||
247 | * memory or within AGP space | ||
248 | */ | ||
249 | static __inline__ int r300_check_offset(drm_radeon_private_t *dev_priv, | ||
250 | u32 offset) | ||
251 | { | ||
252 | /* we realy want to check against end of video aperture | ||
253 | but this value is not being kept. | ||
254 | This code is correct for now (does the same thing as the | ||
255 | code that sets MC_FB_LOCATION) in radeon_cp.c */ | ||
256 | if (offset >= dev_priv->fb_location && | ||
257 | offset < (dev_priv->fb_location + dev_priv->fb_size)) | ||
258 | return 0; | ||
259 | if (offset >= dev_priv->gart_vm_start && | ||
260 | offset < (dev_priv->gart_vm_start + dev_priv->gart_size)) | ||
261 | return 0; | ||
262 | return 1; | ||
263 | } | ||
264 | |||
265 | static __inline__ int r300_emit_carefully_checked_packet0(drm_radeon_private_t * | 245 | static __inline__ int r300_emit_carefully_checked_packet0(drm_radeon_private_t * |
266 | dev_priv, | 246 | dev_priv, |
267 | drm_radeon_kcmd_buffer_t | 247 | drm_radeon_kcmd_buffer_t |
@@ -290,7 +270,7 @@ static __inline__ int r300_emit_carefully_checked_packet0(drm_radeon_private_t * | |||
290 | case MARK_SAFE: | 270 | case MARK_SAFE: |
291 | break; | 271 | break; |
292 | case MARK_CHECK_OFFSET: | 272 | case MARK_CHECK_OFFSET: |
293 | if (r300_check_offset(dev_priv, (u32) values[i])) { | 273 | if (!radeon_check_offset(dev_priv, (u32) values[i])) { |
294 | DRM_ERROR | 274 | DRM_ERROR |
295 | ("Offset failed range check (reg=%04x sz=%d)\n", | 275 | ("Offset failed range check (reg=%04x sz=%d)\n", |
296 | reg, sz); | 276 | reg, sz); |
@@ -452,7 +432,7 @@ static __inline__ int r300_emit_3d_load_vbpntr(drm_radeon_private_t *dev_priv, | |||
452 | i = 1; | 432 | i = 1; |
453 | while ((k < narrays) && (i < (count + 1))) { | 433 | while ((k < narrays) && (i < (count + 1))) { |
454 | i++; /* skip attribute field */ | 434 | i++; /* skip attribute field */ |
455 | if (r300_check_offset(dev_priv, payload[i])) { | 435 | if (!radeon_check_offset(dev_priv, payload[i])) { |
456 | DRM_ERROR | 436 | DRM_ERROR |
457 | ("Offset failed range check (k=%d i=%d) while processing 3D_LOAD_VBPNTR packet.\n", | 437 | ("Offset failed range check (k=%d i=%d) while processing 3D_LOAD_VBPNTR packet.\n", |
458 | k, i); | 438 | k, i); |
@@ -463,7 +443,7 @@ static __inline__ int r300_emit_3d_load_vbpntr(drm_radeon_private_t *dev_priv, | |||
463 | if (k == narrays) | 443 | if (k == narrays) |
464 | break; | 444 | break; |
465 | /* have one more to process, they come in pairs */ | 445 | /* have one more to process, they come in pairs */ |
466 | if (r300_check_offset(dev_priv, payload[i])) { | 446 | if (!radeon_check_offset(dev_priv, payload[i])) { |
467 | DRM_ERROR | 447 | DRM_ERROR |
468 | ("Offset failed range check (k=%d i=%d) while processing 3D_LOAD_VBPNTR packet.\n", | 448 | ("Offset failed range check (k=%d i=%d) while processing 3D_LOAD_VBPNTR packet.\n", |
469 | k, i); | 449 | k, i); |
@@ -508,7 +488,7 @@ static __inline__ int r300_emit_bitblt_multi(drm_radeon_private_t *dev_priv, | |||
508 | if (cmd[1] & (RADEON_GMC_SRC_PITCH_OFFSET_CNTL | 488 | if (cmd[1] & (RADEON_GMC_SRC_PITCH_OFFSET_CNTL |
509 | | RADEON_GMC_DST_PITCH_OFFSET_CNTL)) { | 489 | | RADEON_GMC_DST_PITCH_OFFSET_CNTL)) { |
510 | offset = cmd[2] << 10; | 490 | offset = cmd[2] << 10; |
511 | ret = r300_check_offset(dev_priv, offset); | 491 | ret = !radeon_check_offset(dev_priv, offset); |
512 | if (ret) { | 492 | if (ret) { |
513 | DRM_ERROR("Invalid bitblt first offset is %08X\n", offset); | 493 | DRM_ERROR("Invalid bitblt first offset is %08X\n", offset); |
514 | return DRM_ERR(EINVAL); | 494 | return DRM_ERR(EINVAL); |
@@ -518,7 +498,7 @@ static __inline__ int r300_emit_bitblt_multi(drm_radeon_private_t *dev_priv, | |||
518 | if ((cmd[1] & RADEON_GMC_SRC_PITCH_OFFSET_CNTL) && | 498 | if ((cmd[1] & RADEON_GMC_SRC_PITCH_OFFSET_CNTL) && |
519 | (cmd[1] & RADEON_GMC_DST_PITCH_OFFSET_CNTL)) { | 499 | (cmd[1] & RADEON_GMC_DST_PITCH_OFFSET_CNTL)) { |
520 | offset = cmd[3] << 10; | 500 | offset = cmd[3] << 10; |
521 | ret = r300_check_offset(dev_priv, offset); | 501 | ret = !radeon_check_offset(dev_priv, offset); |
522 | if (ret) { | 502 | if (ret) { |
523 | DRM_ERROR("Invalid bitblt second offset is %08X\n", offset); | 503 | DRM_ERROR("Invalid bitblt second offset is %08X\n", offset); |
524 | return DRM_ERR(EINVAL); | 504 | return DRM_ERR(EINVAL); |
@@ -551,7 +531,7 @@ static __inline__ int r300_emit_indx_buffer(drm_radeon_private_t *dev_priv, | |||
551 | DRM_ERROR("Invalid indx_buffer reg address %08X\n", cmd[1]); | 531 | DRM_ERROR("Invalid indx_buffer reg address %08X\n", cmd[1]); |
552 | return DRM_ERR(EINVAL); | 532 | return DRM_ERR(EINVAL); |
553 | } | 533 | } |
554 | ret = r300_check_offset(dev_priv, cmd[2]); | 534 | ret = !radeon_check_offset(dev_priv, cmd[2]); |
555 | if (ret) { | 535 | if (ret) { |
556 | DRM_ERROR("Invalid indx_buffer offset is %08X\n", cmd[2]); | 536 | DRM_ERROR("Invalid indx_buffer offset is %08X\n", cmd[2]); |
557 | return DRM_ERR(EINVAL); | 537 | return DRM_ERR(EINVAL); |
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h index f45cd7f147a5..8b105f1460a7 100644 --- a/drivers/char/drm/radeon_drv.h +++ b/drivers/char/drm/radeon_drv.h | |||
@@ -303,6 +303,21 @@ extern int radeon_no_wb; | |||
303 | extern drm_ioctl_desc_t radeon_ioctls[]; | 303 | extern drm_ioctl_desc_t radeon_ioctls[]; |
304 | extern int radeon_max_ioctl; | 304 | extern int radeon_max_ioctl; |
305 | 305 | ||
306 | /* Check whether the given hardware address is inside the framebuffer or the | ||
307 | * GART area. | ||
308 | */ | ||
309 | static __inline__ int radeon_check_offset(drm_radeon_private_t *dev_priv, | ||
310 | u64 off) | ||
311 | { | ||
312 | u32 fb_start = dev_priv->fb_location; | ||
313 | u32 fb_end = fb_start + dev_priv->fb_size - 1; | ||
314 | u32 gart_start = dev_priv->gart_vm_start; | ||
315 | u32 gart_end = gart_start + dev_priv->gart_size - 1; | ||
316 | |||
317 | return ((off >= fb_start && off <= fb_end) || | ||
318 | (off >= gart_start && off <= gart_end)); | ||
319 | } | ||
320 | |||
306 | /* radeon_cp.c */ | 321 | /* radeon_cp.c */ |
307 | extern int radeon_cp_init(DRM_IOCTL_ARGS); | 322 | extern int radeon_cp_init(DRM_IOCTL_ARGS); |
308 | extern int radeon_cp_start(DRM_IOCTL_ARGS); | 323 | extern int radeon_cp_start(DRM_IOCTL_ARGS); |
diff --git a/drivers/char/drm/radeon_irq.c b/drivers/char/drm/radeon_irq.c index d60519de887b..3ff0baa2fbfa 100644 --- a/drivers/char/drm/radeon_irq.c +++ b/drivers/char/drm/radeon_irq.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* radeon_irq.c -- IRQ handling for radeon -*- linux-c -*- | 1 | /* radeon_irq.c -- IRQ handling for radeon -*- linux-c -*- */ |
2 | * | 2 | /* |
3 | * Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. | 3 | * Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. |
4 | * | 4 | * |
5 | * The Weather Channel (TM) funded Tungsten Graphics to develop the | 5 | * The Weather Channel (TM) funded Tungsten Graphics to develop the |
diff --git a/drivers/char/drm/radeon_mem.c b/drivers/char/drm/radeon_mem.c index 030a6fad0d86..517cad8b6e3a 100644 --- a/drivers/char/drm/radeon_mem.c +++ b/drivers/char/drm/radeon_mem.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* radeon_mem.c -- Simple GART/fb memory manager for radeon -*- linux-c -*- | 1 | /* radeon_mem.c -- Simple GART/fb memory manager for radeon -*- linux-c -*- */ |
2 | * | 2 | /* |
3 | * Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. | 3 | * Copyright (C) The Weather Channel, Inc. 2002. All Rights Reserved. |
4 | * | 4 | * |
5 | * The Weather Channel (TM) funded Tungsten Graphics to develop the | 5 | * The Weather Channel (TM) funded Tungsten Graphics to develop the |
diff --git a/drivers/char/drm/radeon_state.c b/drivers/char/drm/radeon_state.c index 6e04fdd732ac..938eccb78cc0 100644 --- a/drivers/char/drm/radeon_state.c +++ b/drivers/char/drm/radeon_state.c | |||
@@ -43,10 +43,7 @@ static __inline__ int radeon_check_and_fixup_offset(drm_radeon_private_t * | |||
43 | u32 *offset) | 43 | u32 *offset) |
44 | { | 44 | { |
45 | u64 off = *offset; | 45 | u64 off = *offset; |
46 | u32 fb_start = dev_priv->fb_location; | 46 | u32 fb_end = dev_priv->fb_location + dev_priv->fb_size - 1; |
47 | u32 fb_end = fb_start + dev_priv->fb_size - 1; | ||
48 | u32 gart_start = dev_priv->gart_vm_start; | ||
49 | u32 gart_end = gart_start + dev_priv->gart_size - 1; | ||
50 | struct drm_radeon_driver_file_fields *radeon_priv; | 47 | struct drm_radeon_driver_file_fields *radeon_priv; |
51 | 48 | ||
52 | /* Hrm ... the story of the offset ... So this function converts | 49 | /* Hrm ... the story of the offset ... So this function converts |
@@ -66,8 +63,7 @@ static __inline__ int radeon_check_and_fixup_offset(drm_radeon_private_t * | |||
66 | /* First, the best case, the offset already lands in either the | 63 | /* First, the best case, the offset already lands in either the |
67 | * framebuffer or the GART mapped space | 64 | * framebuffer or the GART mapped space |
68 | */ | 65 | */ |
69 | if ((off >= fb_start && off <= fb_end) || | 66 | if (radeon_check_offset(dev_priv, off)) |
70 | (off >= gart_start && off <= gart_end)) | ||
71 | return 0; | 67 | return 0; |
72 | 68 | ||
73 | /* Ok, that didn't happen... now check if we have a zero based | 69 | /* Ok, that didn't happen... now check if we have a zero based |
@@ -81,11 +77,10 @@ static __inline__ int radeon_check_and_fixup_offset(drm_radeon_private_t * | |||
81 | 77 | ||
82 | /* Finally, assume we aimed at a GART offset if beyond the fb */ | 78 | /* Finally, assume we aimed at a GART offset if beyond the fb */ |
83 | if (off > fb_end) | 79 | if (off > fb_end) |
84 | off = off - fb_end - 1 + gart_start; | 80 | off = off - fb_end - 1 + dev_priv->gart_vm_start; |
85 | 81 | ||
86 | /* Now recheck and fail if out of bounds */ | 82 | /* Now recheck and fail if out of bounds */ |
87 | if ((off >= fb_start && off <= fb_end) || | 83 | if (radeon_check_offset(dev_priv, off)) { |
88 | (off >= gart_start && off <= gart_end)) { | ||
89 | DRM_DEBUG("offset fixed up to 0x%x\n", (unsigned int)off); | 84 | DRM_DEBUG("offset fixed up to 0x%x\n", (unsigned int)off); |
90 | *offset = off; | 85 | *offset = off; |
91 | return 0; | 86 | return 0; |
diff --git a/drivers/char/drm/savage_bci.c b/drivers/char/drm/savage_bci.c index a9a84f88df5e..b94fab556809 100644 --- a/drivers/char/drm/savage_bci.c +++ b/drivers/char/drm/savage_bci.c | |||
@@ -963,8 +963,8 @@ static int savage_bci_event_emit(DRM_IOCTL_ARGS) | |||
963 | 963 | ||
964 | event.count = savage_bci_emit_event(dev_priv, event.flags); | 964 | event.count = savage_bci_emit_event(dev_priv, event.flags); |
965 | event.count |= dev_priv->event_wrap << 16; | 965 | event.count |= dev_priv->event_wrap << 16; |
966 | DRM_COPY_TO_USER_IOCTL(&((drm_savage_event_emit_t __user *) data)-> | 966 | DRM_COPY_TO_USER_IOCTL((drm_savage_event_emit_t __user *) data, |
967 | count, event.count, sizeof(event.count)); | 967 | event, sizeof(event)); |
968 | return 0; | 968 | return 0; |
969 | } | 969 | } |
970 | 970 | ||
diff --git a/drivers/char/viocons.c b/drivers/char/viocons.c index 0e0da443cbd5..8de6b95aeb84 100644 --- a/drivers/char/viocons.c +++ b/drivers/char/viocons.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <linux/tty_flip.h> | 42 | #include <linux/tty_flip.h> |
43 | #include <linux/sysrq.h> | 43 | #include <linux/sysrq.h> |
44 | 44 | ||
45 | #include <asm/firmware.h> | ||
45 | #include <asm/iseries/vio.h> | 46 | #include <asm/iseries/vio.h> |
46 | #include <asm/iseries/hv_lp_event.h> | 47 | #include <asm/iseries/hv_lp_event.h> |
47 | #include <asm/iseries/hv_call_event.h> | 48 | #include <asm/iseries/hv_call_event.h> |
@@ -1060,6 +1061,9 @@ static int __init viocons_init2(void) | |||
1060 | atomic_t wait_flag; | 1061 | atomic_t wait_flag; |
1061 | int rc; | 1062 | int rc; |
1062 | 1063 | ||
1064 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
1065 | return -ENODEV; | ||
1066 | |||
1063 | /* +2 for fudge */ | 1067 | /* +2 for fudge */ |
1064 | rc = viopath_open(HvLpConfig_getPrimaryLpIndex(), | 1068 | rc = viopath_open(HvLpConfig_getPrimaryLpIndex(), |
1065 | viomajorsubtype_chario, VIOCHAR_WINDOW + 2); | 1069 | viomajorsubtype_chario, VIOCHAR_WINDOW + 2); |
@@ -1145,6 +1149,9 @@ static int __init viocons_init(void) | |||
1145 | { | 1149 | { |
1146 | int i; | 1150 | int i; |
1147 | 1151 | ||
1152 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
1153 | return -ENODEV; | ||
1154 | |||
1148 | printk(VIOCONS_KERN_INFO "registering console\n"); | 1155 | printk(VIOCONS_KERN_INFO "registering console\n"); |
1149 | for (i = 0; i < VTTY_PORTS; i++) { | 1156 | for (i = 0; i < VTTY_PORTS; i++) { |
1150 | port_info[i].lp = HvLpIndexInvalid; | 1157 | port_info[i].lp = HvLpIndexInvalid; |
diff --git a/drivers/char/viotape.c b/drivers/char/viotape.c index 94d79cb8ce8d..9438512b17f1 100644 --- a/drivers/char/viotape.c +++ b/drivers/char/viotape.c | |||
@@ -49,7 +49,7 @@ | |||
49 | 49 | ||
50 | #include <asm/uaccess.h> | 50 | #include <asm/uaccess.h> |
51 | #include <asm/ioctls.h> | 51 | #include <asm/ioctls.h> |
52 | 52 | #include <asm/firmware.h> | |
53 | #include <asm/vio.h> | 53 | #include <asm/vio.h> |
54 | #include <asm/iseries/vio.h> | 54 | #include <asm/iseries/vio.h> |
55 | #include <asm/iseries/hv_lp_event.h> | 55 | #include <asm/iseries/hv_lp_event.h> |
@@ -997,6 +997,9 @@ int __init viotap_init(void) | |||
997 | int ret; | 997 | int ret; |
998 | struct proc_dir_entry *e; | 998 | struct proc_dir_entry *e; |
999 | 999 | ||
1000 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
1001 | return -ENODEV; | ||
1002 | |||
1000 | op_struct_list = NULL; | 1003 | op_struct_list = NULL; |
1001 | if ((ret = add_op_structs(VIOTAPE_MAXREQ)) < 0) { | 1004 | if ((ret = add_op_structs(VIOTAPE_MAXREQ)) < 0) { |
1002 | printk(VIOTAPE_KERN_WARN "couldn't allocate op structs\n"); | 1005 | printk(VIOTAPE_KERN_WARN "couldn't allocate op structs\n"); |
diff --git a/drivers/ide/pci/atiixp.c b/drivers/ide/pci/atiixp.c index d55b938b1aeb..ffdffb6379ef 100644 --- a/drivers/ide/pci/atiixp.c +++ b/drivers/ide/pci/atiixp.c | |||
@@ -368,7 +368,6 @@ static struct pci_device_id atiixp_pci_tbl[] = { | |||
368 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 368 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP300_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
369 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 369 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
370 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, | 370 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, |
371 | { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, PCI_ANY_ID, PCI_ANY_ID, (PCI_CLASS_STORAGE_IDE<<8)|0x8a, 0xffff05, 1}, | ||
372 | { 0, }, | 371 | { 0, }, |
373 | }; | 372 | }; |
374 | MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl); | 373 | MODULE_DEVICE_TABLE(pci, atiixp_pci_tbl); |
diff --git a/drivers/net/iseries_veth.c b/drivers/net/iseries_veth.c index d6f4f185bf37..2194b567239f 100644 --- a/drivers/net/iseries_veth.c +++ b/drivers/net/iseries_veth.c | |||
@@ -73,7 +73,7 @@ | |||
73 | #include <asm/abs_addr.h> | 73 | #include <asm/abs_addr.h> |
74 | #include <asm/iseries/mf.h> | 74 | #include <asm/iseries/mf.h> |
75 | #include <asm/uaccess.h> | 75 | #include <asm/uaccess.h> |
76 | 76 | #include <asm/firmware.h> | |
77 | #include <asm/iseries/hv_lp_config.h> | 77 | #include <asm/iseries/hv_lp_config.h> |
78 | #include <asm/iseries/hv_types.h> | 78 | #include <asm/iseries/hv_types.h> |
79 | #include <asm/iseries/hv_lp_event.h> | 79 | #include <asm/iseries/hv_lp_event.h> |
@@ -1668,7 +1668,7 @@ static struct vio_driver veth_driver = { | |||
1668 | * Module initialization/cleanup | 1668 | * Module initialization/cleanup |
1669 | */ | 1669 | */ |
1670 | 1670 | ||
1671 | void __exit veth_module_cleanup(void) | 1671 | static void __exit veth_module_cleanup(void) |
1672 | { | 1672 | { |
1673 | int i; | 1673 | int i; |
1674 | struct veth_lpar_connection *cnx; | 1674 | struct veth_lpar_connection *cnx; |
@@ -1697,11 +1697,14 @@ void __exit veth_module_cleanup(void) | |||
1697 | } | 1697 | } |
1698 | module_exit(veth_module_cleanup); | 1698 | module_exit(veth_module_cleanup); |
1699 | 1699 | ||
1700 | int __init veth_module_init(void) | 1700 | static int __init veth_module_init(void) |
1701 | { | 1701 | { |
1702 | int i; | 1702 | int i; |
1703 | int rc; | 1703 | int rc; |
1704 | 1704 | ||
1705 | if (!firmware_has_feature(FW_FEATURE_ISERIES)) | ||
1706 | return -ENODEV; | ||
1707 | |||
1705 | this_lp = HvLpConfig_getLpIndex_outline(); | 1708 | this_lp = HvLpConfig_getLpIndex_outline(); |
1706 | 1709 | ||
1707 | for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) { | 1710 | for (i = 0; i < HVMAXARCHITECTEDLPS; ++i) { |
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index 0b9d0db1590a..bd1faebf61a0 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c | |||
@@ -1682,7 +1682,7 @@ int __init acpiphp_glue_init(void) | |||
1682 | * | 1682 | * |
1683 | * This function frees all data allocated in acpiphp_glue_init() | 1683 | * This function frees all data allocated in acpiphp_glue_init() |
1684 | */ | 1684 | */ |
1685 | void __exit acpiphp_glue_exit(void) | 1685 | void acpiphp_glue_exit(void) |
1686 | { | 1686 | { |
1687 | acpi_pci_unregister_driver(&acpi_pci_hp_driver); | 1687 | acpi_pci_unregister_driver(&acpi_pci_hp_driver); |
1688 | } | 1688 | } |
diff --git a/drivers/pci/hotplug/rpaphp_slot.c b/drivers/pci/hotplug/rpaphp_slot.c index b771196a654e..3009193f0058 100644 --- a/drivers/pci/hotplug/rpaphp_slot.c +++ b/drivers/pci/hotplug/rpaphp_slot.c | |||
@@ -47,21 +47,11 @@ static ssize_t location_read_file (struct hotplug_slot *php_slot, char *buf) | |||
47 | return retval; | 47 | return retval; |
48 | } | 48 | } |
49 | 49 | ||
50 | static struct hotplug_slot_attribute hotplug_slot_attr_location = { | 50 | static struct hotplug_slot_attribute php_attr_location = { |
51 | .attr = {.name = "phy_location", .mode = S_IFREG | S_IRUGO}, | 51 | .attr = {.name = "phy_location", .mode = S_IFREG | S_IRUGO}, |
52 | .show = location_read_file, | 52 | .show = location_read_file, |
53 | }; | 53 | }; |
54 | 54 | ||
55 | static void rpaphp_sysfs_add_attr_location (struct hotplug_slot *slot) | ||
56 | { | ||
57 | sysfs_create_file(&slot->kobj, &hotplug_slot_attr_location.attr); | ||
58 | } | ||
59 | |||
60 | static void rpaphp_sysfs_remove_attr_location (struct hotplug_slot *slot) | ||
61 | { | ||
62 | sysfs_remove_file(&slot->kobj, &hotplug_slot_attr_location.attr); | ||
63 | } | ||
64 | |||
65 | /* free up the memory used by a slot */ | 55 | /* free up the memory used by a slot */ |
66 | static void rpaphp_release_slot(struct hotplug_slot *hotplug_slot) | 56 | static void rpaphp_release_slot(struct hotplug_slot *hotplug_slot) |
67 | { | 57 | { |
@@ -145,7 +135,7 @@ int rpaphp_deregister_slot(struct slot *slot) | |||
145 | list_del(&slot->rpaphp_slot_list); | 135 | list_del(&slot->rpaphp_slot_list); |
146 | 136 | ||
147 | /* remove "phy_location" file */ | 137 | /* remove "phy_location" file */ |
148 | rpaphp_sysfs_remove_attr_location(php_slot); | 138 | sysfs_remove_file(&php_slot->kobj, &php_attr_location.attr); |
149 | 139 | ||
150 | retval = pci_hp_deregister(php_slot); | 140 | retval = pci_hp_deregister(php_slot); |
151 | if (retval) | 141 | if (retval) |
@@ -160,36 +150,45 @@ EXPORT_SYMBOL_GPL(rpaphp_deregister_slot); | |||
160 | 150 | ||
161 | int rpaphp_register_slot(struct slot *slot) | 151 | int rpaphp_register_slot(struct slot *slot) |
162 | { | 152 | { |
153 | struct hotplug_slot *php_slot = slot->hotplug_slot; | ||
163 | int retval; | 154 | int retval; |
164 | 155 | ||
165 | dbg("%s registering slot:path[%s] index[%x], name[%s] pdomain[%x] type[%d]\n", | 156 | dbg("%s registering slot:path[%s] index[%x], name[%s] pdomain[%x] type[%d]\n", |
166 | __FUNCTION__, slot->dn->full_name, slot->index, slot->name, | 157 | __FUNCTION__, slot->dn->full_name, slot->index, slot->name, |
167 | slot->power_domain, slot->type); | 158 | slot->power_domain, slot->type); |
159 | |||
168 | /* should not try to register the same slot twice */ | 160 | /* should not try to register the same slot twice */ |
169 | if (is_registered(slot)) { /* should't be here */ | 161 | if (is_registered(slot)) { |
170 | err("rpaphp_register_slot: slot[%s] is already registered\n", slot->name); | 162 | err("rpaphp_register_slot: slot[%s] is already registered\n", slot->name); |
171 | rpaphp_release_slot(slot->hotplug_slot); | 163 | retval = -EAGAIN; |
172 | return -EAGAIN; | 164 | goto register_fail; |
173 | } | 165 | } |
174 | retval = pci_hp_register(slot->hotplug_slot); | 166 | |
167 | retval = pci_hp_register(php_slot); | ||
175 | if (retval) { | 168 | if (retval) { |
176 | err("pci_hp_register failed with error %d\n", retval); | 169 | err("pci_hp_register failed with error %d\n", retval); |
177 | rpaphp_release_slot(slot->hotplug_slot); | 170 | goto register_fail; |
178 | return retval; | ||
179 | } | 171 | } |
180 | |||
181 | /* create "phy_locatoin" file */ | ||
182 | rpaphp_sysfs_add_attr_location(slot->hotplug_slot); | ||
183 | 172 | ||
184 | /* add slot to our internal list */ | 173 | /* create "phy_location" file */ |
185 | dbg("%s adding slot[%s] to rpaphp_slot_list\n", | 174 | retval = sysfs_create_file(&php_slot->kobj, &php_attr_location.attr); |
186 | __FUNCTION__, slot->name); | 175 | if (retval) { |
176 | err("sysfs_create_file failed with error %d\n", retval); | ||
177 | goto sysfs_fail; | ||
178 | } | ||
187 | 179 | ||
180 | /* add slot to our internal list */ | ||
188 | list_add(&slot->rpaphp_slot_list, &rpaphp_slot_head); | 181 | list_add(&slot->rpaphp_slot_list, &rpaphp_slot_head); |
189 | info("Slot [%s](PCI location=%s) registered\n", slot->name, | 182 | info("Slot [%s](PCI location=%s) registered\n", slot->name, |
190 | slot->location); | 183 | slot->location); |
191 | num_slots++; | 184 | num_slots++; |
192 | return 0; | 185 | return 0; |
186 | |||
187 | sysfs_fail: | ||
188 | pci_hp_deregister(php_slot); | ||
189 | register_fail: | ||
190 | rpaphp_release_slot(php_slot); | ||
191 | return retval; | ||
193 | } | 192 | } |
194 | 193 | ||
195 | int rpaphp_get_power_status(struct slot *slot, u8 * value) | 194 | int rpaphp_get_power_status(struct slot *slot, u8 * value) |
diff --git a/drivers/pci/hotplug/shpchp.h b/drivers/pci/hotplug/shpchp.h index 50757695844f..3ca6a4f574b3 100644 --- a/drivers/pci/hotplug/shpchp.h +++ b/drivers/pci/hotplug/shpchp.h | |||
@@ -47,11 +47,17 @@ extern int shpchp_poll_time; | |||
47 | extern int shpchp_debug; | 47 | extern int shpchp_debug; |
48 | extern struct workqueue_struct *shpchp_wq; | 48 | extern struct workqueue_struct *shpchp_wq; |
49 | 49 | ||
50 | /*#define dbg(format, arg...) do { if (shpchp_debug) printk(KERN_DEBUG "%s: " format, MY_NAME , ## arg); } while (0)*/ | 50 | #define dbg(format, arg...) \ |
51 | #define dbg(format, arg...) do { if (shpchp_debug) printk("%s: " format, MY_NAME , ## arg); } while (0) | 51 | do { \ |
52 | #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME , ## arg) | 52 | if (shpchp_debug) \ |
53 | #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME , ## arg) | 53 | printk("%s: " format, MY_NAME , ## arg); \ |
54 | #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME , ## arg) | 54 | } while (0) |
55 | #define err(format, arg...) \ | ||
56 | printk(KERN_ERR "%s: " format, MY_NAME , ## arg) | ||
57 | #define info(format, arg...) \ | ||
58 | printk(KERN_INFO "%s: " format, MY_NAME , ## arg) | ||
59 | #define warn(format, arg...) \ | ||
60 | printk(KERN_WARNING "%s: " format, MY_NAME , ## arg) | ||
55 | 61 | ||
56 | #define SLOT_NAME_SIZE 10 | 62 | #define SLOT_NAME_SIZE 10 |
57 | struct slot { | 63 | struct slot { |
@@ -83,34 +89,27 @@ struct event_info { | |||
83 | struct controller { | 89 | struct controller { |
84 | struct mutex crit_sect; /* critical section mutex */ | 90 | struct mutex crit_sect; /* critical section mutex */ |
85 | struct mutex cmd_lock; /* command lock */ | 91 | struct mutex cmd_lock; /* command lock */ |
86 | struct php_ctlr_state_s *hpc_ctlr_handle; /* HPC controller handle */ | ||
87 | int num_slots; /* Number of slots on ctlr */ | 92 | int num_slots; /* Number of slots on ctlr */ |
88 | int slot_num_inc; /* 1 or -1 */ | 93 | int slot_num_inc; /* 1 or -1 */ |
89 | struct pci_dev *pci_dev; | 94 | struct pci_dev *pci_dev; |
90 | struct list_head slot_list; | 95 | struct list_head slot_list; |
91 | struct hpc_ops *hpc_ops; | 96 | struct hpc_ops *hpc_ops; |
92 | wait_queue_head_t queue; /* sleep & wake process */ | 97 | wait_queue_head_t queue; /* sleep & wake process */ |
93 | u8 bus; | ||
94 | u8 device; | ||
95 | u8 function; | ||
96 | u8 slot_device_offset; | 98 | u8 slot_device_offset; |
97 | u8 add_support; | ||
98 | u32 pcix_misc2_reg; /* for amd pogo errata */ | 99 | u32 pcix_misc2_reg; /* for amd pogo errata */ |
99 | enum pci_bus_speed speed; | ||
100 | u32 first_slot; /* First physical slot number */ | 100 | u32 first_slot; /* First physical slot number */ |
101 | u8 slot_bus; /* Bus where the slots handled by this controller sit */ | ||
102 | u32 cap_offset; | 101 | u32 cap_offset; |
103 | unsigned long mmio_base; | 102 | unsigned long mmio_base; |
104 | unsigned long mmio_size; | 103 | unsigned long mmio_size; |
104 | void __iomem *creg; | ||
105 | struct timer_list poll_timer; | ||
105 | }; | 106 | }; |
106 | 107 | ||
107 | |||
108 | /* Define AMD SHPC ID */ | 108 | /* Define AMD SHPC ID */ |
109 | #define PCI_DEVICE_ID_AMD_GOLAM_7450 0x7450 | 109 | #define PCI_DEVICE_ID_AMD_GOLAM_7450 0x7450 |
110 | #define PCI_DEVICE_ID_AMD_POGO_7458 0x7458 | 110 | #define PCI_DEVICE_ID_AMD_POGO_7458 0x7458 |
111 | 111 | ||
112 | /* AMD PCIX bridge registers */ | 112 | /* AMD PCIX bridge registers */ |
113 | |||
114 | #define PCIX_MEM_BASE_LIMIT_OFFSET 0x1C | 113 | #define PCIX_MEM_BASE_LIMIT_OFFSET 0x1C |
115 | #define PCIX_MISCII_OFFSET 0x48 | 114 | #define PCIX_MISCII_OFFSET 0x48 |
116 | #define PCIX_MISC_BRIDGE_ERRORS_OFFSET 0x80 | 115 | #define PCIX_MISC_BRIDGE_ERRORS_OFFSET 0x80 |
@@ -145,8 +144,6 @@ struct controller { | |||
145 | #define POWERON_STATE 3 | 144 | #define POWERON_STATE 3 |
146 | #define POWEROFF_STATE 4 | 145 | #define POWEROFF_STATE 4 |
147 | 146 | ||
148 | #define PCI_TO_PCI_BRIDGE_CLASS 0x00060400 | ||
149 | |||
150 | /* Error messages */ | 147 | /* Error messages */ |
151 | #define INTERLOCK_OPEN 0x00000002 | 148 | #define INTERLOCK_OPEN 0x00000002 |
152 | #define ADD_NOT_SUPPORTED 0x00000003 | 149 | #define ADD_NOT_SUPPORTED 0x00000003 |
@@ -158,50 +155,32 @@ struct controller { | |||
158 | #define WRONG_BUS_FREQUENCY 0x0000000D | 155 | #define WRONG_BUS_FREQUENCY 0x0000000D |
159 | #define POWER_FAILURE 0x0000000E | 156 | #define POWER_FAILURE 0x0000000E |
160 | 157 | ||
161 | #define REMOVE_NOT_SUPPORTED 0x00000003 | ||
162 | |||
163 | #define DISABLE_CARD 1 | ||
164 | |||
165 | /* | ||
166 | * error Messages | ||
167 | */ | ||
168 | #define msg_initialization_err "Initialization failure, error=%d\n" | ||
169 | #define msg_button_on "PCI slot #%s - powering on due to button press.\n" | ||
170 | #define msg_button_off "PCI slot #%s - powering off due to button press.\n" | ||
171 | #define msg_button_cancel "PCI slot #%s - action canceled due to button press.\n" | ||
172 | |||
173 | /* sysfs functions for the hotplug controller info */ | ||
174 | extern int __must_check shpchp_create_ctrl_files(struct controller *ctrl); | 158 | extern int __must_check shpchp_create_ctrl_files(struct controller *ctrl); |
175 | 159 | extern void shpchp_remove_ctrl_files(struct controller *ctrl); | |
176 | extern int shpchp_sysfs_enable_slot(struct slot *slot); | 160 | extern int shpchp_sysfs_enable_slot(struct slot *slot); |
177 | extern int shpchp_sysfs_disable_slot(struct slot *slot); | 161 | extern int shpchp_sysfs_disable_slot(struct slot *slot); |
178 | 162 | extern u8 shpchp_handle_attention_button(u8 hp_slot, struct controller *ctrl); | |
179 | extern u8 shpchp_handle_attention_button(u8 hp_slot, void *inst_id); | 163 | extern u8 shpchp_handle_switch_change(u8 hp_slot, struct controller *ctrl); |
180 | extern u8 shpchp_handle_switch_change(u8 hp_slot, void *inst_id); | 164 | extern u8 shpchp_handle_presence_change(u8 hp_slot, struct controller *ctrl); |
181 | extern u8 shpchp_handle_presence_change(u8 hp_slot, void *inst_id); | 165 | extern u8 shpchp_handle_power_fault(u8 hp_slot, struct controller *ctrl); |
182 | extern u8 shpchp_handle_power_fault(u8 hp_slot, void *inst_id); | 166 | extern int shpchp_configure_device(struct slot *p_slot); |
183 | 167 | extern int shpchp_unconfigure_device(struct slot *p_slot); | |
184 | /* pci functions */ | 168 | extern void cleanup_slots(struct controller *ctrl); |
185 | extern int shpchp_save_config(struct controller *ctrl, int busnumber, int num_ctlr_slots, int first_device_num); | 169 | extern void queue_pushbutton_work(struct work_struct *work); |
186 | extern int shpchp_configure_device(struct slot *p_slot); | 170 | extern int shpc_init( struct controller *ctrl, struct pci_dev *pdev); |
187 | extern int shpchp_unconfigure_device(struct slot *p_slot); | ||
188 | extern void shpchp_remove_ctrl_files(struct controller *ctrl); | ||
189 | extern void cleanup_slots(struct controller *ctrl); | ||
190 | extern void queue_pushbutton_work(struct work_struct *work); | ||
191 | |||
192 | 171 | ||
193 | #ifdef CONFIG_ACPI | 172 | #ifdef CONFIG_ACPI |
194 | static inline int get_hp_params_from_firmware(struct pci_dev *dev, | 173 | static inline int get_hp_params_from_firmware(struct pci_dev *dev, |
195 | struct hotplug_params *hpp) | 174 | struct hotplug_params *hpp) |
196 | { | 175 | { |
197 | if (ACPI_FAILURE(acpi_get_hp_params_from_firmware(dev->bus, hpp))) | 176 | if (ACPI_FAILURE(acpi_get_hp_params_from_firmware(dev->bus, hpp))) |
198 | return -ENODEV; | 177 | return -ENODEV; |
199 | return 0; | 178 | return 0; |
200 | } | 179 | } |
201 | #define get_hp_hw_control_from_firmware(pdev) \ | 180 | #define get_hp_hw_control_from_firmware(pdev) \ |
202 | do { \ | 181 | do { \ |
203 | if (DEVICE_ACPI_HANDLE(&(pdev->dev))) \ | 182 | if (DEVICE_ACPI_HANDLE(&(pdev->dev))) \ |
204 | acpi_run_oshp(DEVICE_ACPI_HANDLE(&(pdev->dev))); \ | 183 | acpi_run_oshp(DEVICE_ACPI_HANDLE(&(pdev->dev)));\ |
205 | } while (0) | 184 | } while (0) |
206 | #else | 185 | #else |
207 | #define get_hp_params_from_firmware(dev, hpp) (-ENODEV) | 186 | #define get_hp_params_from_firmware(dev, hpp) (-ENODEV) |
@@ -222,108 +201,40 @@ struct ctrl_reg { | |||
222 | volatile u32 serr_loc; | 201 | volatile u32 serr_loc; |
223 | volatile u32 serr_intr_enable; | 202 | volatile u32 serr_intr_enable; |
224 | volatile u32 slot1; | 203 | volatile u32 slot1; |
225 | volatile u32 slot2; | ||
226 | volatile u32 slot3; | ||
227 | volatile u32 slot4; | ||
228 | volatile u32 slot5; | ||
229 | volatile u32 slot6; | ||
230 | volatile u32 slot7; | ||
231 | volatile u32 slot8; | ||
232 | volatile u32 slot9; | ||
233 | volatile u32 slot10; | ||
234 | volatile u32 slot11; | ||
235 | volatile u32 slot12; | ||
236 | } __attribute__ ((packed)); | 204 | } __attribute__ ((packed)); |
237 | 205 | ||
238 | /* offsets to the controller registers based on the above structure layout */ | 206 | /* offsets to the controller registers based on the above structure layout */ |
239 | enum ctrl_offsets { | 207 | enum ctrl_offsets { |
240 | BASE_OFFSET = offsetof(struct ctrl_reg, base_offset), | 208 | BASE_OFFSET = offsetof(struct ctrl_reg, base_offset), |
241 | SLOT_AVAIL1 = offsetof(struct ctrl_reg, slot_avail1), | 209 | SLOT_AVAIL1 = offsetof(struct ctrl_reg, slot_avail1), |
242 | SLOT_AVAIL2 = offsetof(struct ctrl_reg, slot_avail2), | 210 | SLOT_AVAIL2 = offsetof(struct ctrl_reg, slot_avail2), |
243 | SLOT_CONFIG = offsetof(struct ctrl_reg, slot_config), | 211 | SLOT_CONFIG = offsetof(struct ctrl_reg, slot_config), |
244 | SEC_BUS_CONFIG = offsetof(struct ctrl_reg, sec_bus_config), | 212 | SEC_BUS_CONFIG = offsetof(struct ctrl_reg, sec_bus_config), |
245 | MSI_CTRL = offsetof(struct ctrl_reg, msi_ctrl), | 213 | MSI_CTRL = offsetof(struct ctrl_reg, msi_ctrl), |
246 | PROG_INTERFACE = offsetof(struct ctrl_reg, prog_interface), | 214 | PROG_INTERFACE = offsetof(struct ctrl_reg, prog_interface), |
247 | CMD = offsetof(struct ctrl_reg, cmd), | 215 | CMD = offsetof(struct ctrl_reg, cmd), |
248 | CMD_STATUS = offsetof(struct ctrl_reg, cmd_status), | 216 | CMD_STATUS = offsetof(struct ctrl_reg, cmd_status), |
249 | INTR_LOC = offsetof(struct ctrl_reg, intr_loc), | 217 | INTR_LOC = offsetof(struct ctrl_reg, intr_loc), |
250 | SERR_LOC = offsetof(struct ctrl_reg, serr_loc), | 218 | SERR_LOC = offsetof(struct ctrl_reg, serr_loc), |
251 | SERR_INTR_ENABLE = offsetof(struct ctrl_reg, serr_intr_enable), | 219 | SERR_INTR_ENABLE = offsetof(struct ctrl_reg, serr_intr_enable), |
252 | SLOT1 = offsetof(struct ctrl_reg, slot1), | 220 | SLOT1 = offsetof(struct ctrl_reg, slot1), |
253 | SLOT2 = offsetof(struct ctrl_reg, slot2), | ||
254 | SLOT3 = offsetof(struct ctrl_reg, slot3), | ||
255 | SLOT4 = offsetof(struct ctrl_reg, slot4), | ||
256 | SLOT5 = offsetof(struct ctrl_reg, slot5), | ||
257 | SLOT6 = offsetof(struct ctrl_reg, slot6), | ||
258 | SLOT7 = offsetof(struct ctrl_reg, slot7), | ||
259 | SLOT8 = offsetof(struct ctrl_reg, slot8), | ||
260 | SLOT9 = offsetof(struct ctrl_reg, slot9), | ||
261 | SLOT10 = offsetof(struct ctrl_reg, slot10), | ||
262 | SLOT11 = offsetof(struct ctrl_reg, slot11), | ||
263 | SLOT12 = offsetof(struct ctrl_reg, slot12), | ||
264 | }; | ||
265 | typedef u8(*php_intr_callback_t) (u8 hp_slot, void *instance_id); | ||
266 | struct php_ctlr_state_s { | ||
267 | struct php_ctlr_state_s *pnext; | ||
268 | struct pci_dev *pci_dev; | ||
269 | unsigned int irq; | ||
270 | unsigned long flags; /* spinlock's */ | ||
271 | u32 slot_device_offset; | ||
272 | u32 num_slots; | ||
273 | struct timer_list int_poll_timer; /* Added for poll event */ | ||
274 | php_intr_callback_t attention_button_callback; | ||
275 | php_intr_callback_t switch_change_callback; | ||
276 | php_intr_callback_t presence_change_callback; | ||
277 | php_intr_callback_t power_fault_callback; | ||
278 | void *callback_instance_id; | ||
279 | void __iomem *creg; /* Ptr to controller register space */ | ||
280 | }; | 221 | }; |
281 | /* Inline functions */ | ||
282 | 222 | ||
283 | 223 | static inline struct slot *get_slot(struct hotplug_slot *hotplug_slot) | |
284 | /* Inline functions to check the sanity of a pointer that is passed to us */ | ||
285 | static inline int slot_paranoia_check (struct slot *slot, const char *function) | ||
286 | { | ||
287 | if (!slot) { | ||
288 | dbg("%s - slot == NULL", function); | ||
289 | return -1; | ||
290 | } | ||
291 | if (!slot->hotplug_slot) { | ||
292 | dbg("%s - slot->hotplug_slot == NULL!", function); | ||
293 | return -1; | ||
294 | } | ||
295 | return 0; | ||
296 | } | ||
297 | |||
298 | static inline struct slot *get_slot (struct hotplug_slot *hotplug_slot, const char *function) | ||
299 | { | 224 | { |
300 | struct slot *slot; | 225 | return hotplug_slot->private; |
301 | |||
302 | if (!hotplug_slot) { | ||
303 | dbg("%s - hotplug_slot == NULL\n", function); | ||
304 | return NULL; | ||
305 | } | ||
306 | |||
307 | slot = (struct slot *)hotplug_slot->private; | ||
308 | if (slot_paranoia_check (slot, function)) | ||
309 | return NULL; | ||
310 | return slot; | ||
311 | } | 226 | } |
312 | 227 | ||
313 | static inline struct slot *shpchp_find_slot (struct controller *ctrl, u8 device) | 228 | static inline struct slot *shpchp_find_slot(struct controller *ctrl, u8 device) |
314 | { | 229 | { |
315 | struct slot *slot; | 230 | struct slot *slot; |
316 | 231 | ||
317 | if (!ctrl) | ||
318 | return NULL; | ||
319 | |||
320 | list_for_each_entry(slot, &ctrl->slot_list, slot_list) { | 232 | list_for_each_entry(slot, &ctrl->slot_list, slot_list) { |
321 | if (slot->device == device) | 233 | if (slot->device == device) |
322 | return slot; | 234 | return slot; |
323 | } | 235 | } |
324 | 236 | ||
325 | err("%s: slot (device=0x%x) not found\n", __FUNCTION__, device); | 237 | err("%s: slot (device=0x%x) not found\n", __FUNCTION__, device); |
326 | |||
327 | return NULL; | 238 | return NULL; |
328 | } | 239 | } |
329 | 240 | ||
@@ -400,44 +311,27 @@ static inline void amd_pogo_errata_restore_misc_reg(struct slot *p_slot) | |||
400 | pci_write_config_dword(p_slot->ctrl->pci_dev, PCIX_MISCII_OFFSET, pcix_misc2_temp); | 311 | pci_write_config_dword(p_slot->ctrl->pci_dev, PCIX_MISCII_OFFSET, pcix_misc2_temp); |
401 | } | 312 | } |
402 | 313 | ||
403 | enum php_ctlr_type { | ||
404 | PCI, | ||
405 | ISA, | ||
406 | ACPI | ||
407 | }; | ||
408 | |||
409 | int shpc_init( struct controller *ctrl, struct pci_dev *pdev); | ||
410 | |||
411 | int shpc_get_ctlr_slot_config( struct controller *ctrl, | ||
412 | int *num_ctlr_slots, | ||
413 | int *first_device_num, | ||
414 | int *physical_slot_num, | ||
415 | int *updown, | ||
416 | int *flags); | ||
417 | |||
418 | struct hpc_ops { | 314 | struct hpc_ops { |
419 | int (*power_on_slot ) (struct slot *slot); | 315 | int (*power_on_slot)(struct slot *slot); |
420 | int (*slot_enable ) (struct slot *slot); | 316 | int (*slot_enable)(struct slot *slot); |
421 | int (*slot_disable ) (struct slot *slot); | 317 | int (*slot_disable)(struct slot *slot); |
422 | int (*set_bus_speed_mode) (struct slot *slot, enum pci_bus_speed speed); | 318 | int (*set_bus_speed_mode)(struct slot *slot, enum pci_bus_speed speed); |
423 | int (*get_power_status) (struct slot *slot, u8 *status); | 319 | int (*get_power_status)(struct slot *slot, u8 *status); |
424 | int (*get_attention_status) (struct slot *slot, u8 *status); | 320 | int (*get_attention_status)(struct slot *slot, u8 *status); |
425 | int (*set_attention_status) (struct slot *slot, u8 status); | 321 | int (*set_attention_status)(struct slot *slot, u8 status); |
426 | int (*get_latch_status) (struct slot *slot, u8 *status); | 322 | int (*get_latch_status)(struct slot *slot, u8 *status); |
427 | int (*get_adapter_status) (struct slot *slot, u8 *status); | 323 | int (*get_adapter_status)(struct slot *slot, u8 *status); |
428 | 324 | int (*get_max_bus_speed)(struct slot *slot, enum pci_bus_speed *speed); | |
429 | int (*get_max_bus_speed) (struct slot *slot, enum pci_bus_speed *speed); | 325 | int (*get_cur_bus_speed)(struct slot *slot, enum pci_bus_speed *speed); |
430 | int (*get_cur_bus_speed) (struct slot *slot, enum pci_bus_speed *speed); | 326 | int (*get_adapter_speed)(struct slot *slot, enum pci_bus_speed *speed); |
431 | int (*get_adapter_speed) (struct slot *slot, enum pci_bus_speed *speed); | 327 | int (*get_mode1_ECC_cap)(struct slot *slot, u8 *mode); |
432 | int (*get_mode1_ECC_cap) (struct slot *slot, u8 *mode); | 328 | int (*get_prog_int)(struct slot *slot, u8 *prog_int); |
433 | int (*get_prog_int) (struct slot *slot, u8 *prog_int); | 329 | int (*query_power_fault)(struct slot *slot); |
434 | 330 | void (*green_led_on)(struct slot *slot); | |
435 | int (*query_power_fault) (struct slot *slot); | 331 | void (*green_led_off)(struct slot *slot); |
436 | void (*green_led_on) (struct slot *slot); | 332 | void (*green_led_blink)(struct slot *slot); |
437 | void (*green_led_off) (struct slot *slot); | 333 | void (*release_ctlr)(struct controller *ctrl); |
438 | void (*green_led_blink) (struct slot *slot); | 334 | int (*check_cmd_status)(struct controller *ctrl); |
439 | void (*release_ctlr) (struct controller *ctrl); | ||
440 | int (*check_cmd_status) (struct controller *ctrl); | ||
441 | }; | 335 | }; |
442 | 336 | ||
443 | #endif /* _SHPCHP_H */ | 337 | #endif /* _SHPCHP_H */ |
diff --git a/drivers/pci/hotplug/shpchp_core.c b/drivers/pci/hotplug/shpchp_core.c index 4eac85b3d90e..590cd3cbe010 100644 --- a/drivers/pci/hotplug/shpchp_core.c +++ b/drivers/pci/hotplug/shpchp_core.c | |||
@@ -104,23 +104,6 @@ static void make_slot_name(struct slot *slot) | |||
104 | slot->bus, slot->number); | 104 | slot->bus, slot->number); |
105 | } | 105 | } |
106 | 106 | ||
107 | |||
108 | |||
109 | |||
110 | static int | ||
111 | shpchprm_get_physical_slot_number(struct controller *ctrl, u32 *sun, | ||
112 | u8 busnum, u8 devnum) | ||
113 | { | ||
114 | int offset = devnum - ctrl->slot_device_offset; | ||
115 | |||
116 | dbg("%s: ctrl->slot_num_inc %d, offset %d\n", __FUNCTION__, | ||
117 | ctrl->slot_num_inc, offset); | ||
118 | *sun = (u8) (ctrl->first_slot + ctrl->slot_num_inc *offset); | ||
119 | return 0; | ||
120 | } | ||
121 | |||
122 | |||
123 | |||
124 | static int init_slots(struct controller *ctrl) | 107 | static int init_slots(struct controller *ctrl) |
125 | { | 108 | { |
126 | struct slot *slot; | 109 | struct slot *slot; |
@@ -128,7 +111,6 @@ static int init_slots(struct controller *ctrl) | |||
128 | struct hotplug_slot_info *info; | 111 | struct hotplug_slot_info *info; |
129 | int retval = -ENOMEM; | 112 | int retval = -ENOMEM; |
130 | int i; | 113 | int i; |
131 | u32 sun; | ||
132 | 114 | ||
133 | for (i = 0; i < ctrl->num_slots; i++) { | 115 | for (i = 0; i < ctrl->num_slots; i++) { |
134 | slot = kzalloc(sizeof(*slot), GFP_KERNEL); | 116 | slot = kzalloc(sizeof(*slot), GFP_KERNEL); |
@@ -149,16 +131,11 @@ static int init_slots(struct controller *ctrl) | |||
149 | 131 | ||
150 | slot->hp_slot = i; | 132 | slot->hp_slot = i; |
151 | slot->ctrl = ctrl; | 133 | slot->ctrl = ctrl; |
152 | slot->bus = ctrl->slot_bus; | 134 | slot->bus = ctrl->pci_dev->subordinate->number; |
153 | slot->device = ctrl->slot_device_offset + i; | 135 | slot->device = ctrl->slot_device_offset + i; |
154 | slot->hpc_ops = ctrl->hpc_ops; | 136 | slot->hpc_ops = ctrl->hpc_ops; |
137 | slot->number = ctrl->first_slot + (ctrl->slot_num_inc * i); | ||
155 | mutex_init(&slot->lock); | 138 | mutex_init(&slot->lock); |
156 | |||
157 | if (shpchprm_get_physical_slot_number(ctrl, &sun, | ||
158 | slot->bus, slot->device)) | ||
159 | goto error_info; | ||
160 | |||
161 | slot->number = sun; | ||
162 | INIT_DELAYED_WORK(&slot->work, queue_pushbutton_work); | 139 | INIT_DELAYED_WORK(&slot->work, queue_pushbutton_work); |
163 | 140 | ||
164 | /* register this slot with the hotplug pci core */ | 141 | /* register this slot with the hotplug pci core */ |
@@ -211,42 +188,12 @@ void cleanup_slots(struct controller *ctrl) | |||
211 | } | 188 | } |
212 | } | 189 | } |
213 | 190 | ||
214 | static int get_ctlr_slot_config(struct controller *ctrl) | ||
215 | { | ||
216 | int num_ctlr_slots; | ||
217 | int first_device_num; | ||
218 | int physical_slot_num; | ||
219 | int updown; | ||
220 | int rc; | ||
221 | int flags; | ||
222 | |||
223 | rc = shpc_get_ctlr_slot_config(ctrl, &num_ctlr_slots, | ||
224 | &first_device_num, &physical_slot_num, | ||
225 | &updown, &flags); | ||
226 | if (rc) { | ||
227 | err("%s: get_ctlr_slot_config fail for b:d (%x:%x)\n", | ||
228 | __FUNCTION__, ctrl->bus, ctrl->device); | ||
229 | return -1; | ||
230 | } | ||
231 | |||
232 | ctrl->num_slots = num_ctlr_slots; | ||
233 | ctrl->slot_device_offset = first_device_num; | ||
234 | ctrl->first_slot = physical_slot_num; | ||
235 | ctrl->slot_num_inc = updown; /* either -1 or 1 */ | ||
236 | |||
237 | dbg("%s: num_slot(0x%x) 1st_dev(0x%x) psn(0x%x) updown(%d) for b:d " | ||
238 | "(%x:%x)\n", __FUNCTION__, num_ctlr_slots, first_device_num, | ||
239 | physical_slot_num, updown, ctrl->bus, ctrl->device); | ||
240 | |||
241 | return 0; | ||
242 | } | ||
243 | |||
244 | /* | 191 | /* |
245 | * set_attention_status - Turns the Amber LED for a slot on, off or blink | 192 | * set_attention_status - Turns the Amber LED for a slot on, off or blink |
246 | */ | 193 | */ |
247 | static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) | 194 | static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) |
248 | { | 195 | { |
249 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 196 | struct slot *slot = get_slot(hotplug_slot); |
250 | 197 | ||
251 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 198 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
252 | 199 | ||
@@ -258,7 +205,7 @@ static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) | |||
258 | 205 | ||
259 | static int enable_slot (struct hotplug_slot *hotplug_slot) | 206 | static int enable_slot (struct hotplug_slot *hotplug_slot) |
260 | { | 207 | { |
261 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 208 | struct slot *slot = get_slot(hotplug_slot); |
262 | 209 | ||
263 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 210 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
264 | 211 | ||
@@ -267,7 +214,7 @@ static int enable_slot (struct hotplug_slot *hotplug_slot) | |||
267 | 214 | ||
268 | static int disable_slot (struct hotplug_slot *hotplug_slot) | 215 | static int disable_slot (struct hotplug_slot *hotplug_slot) |
269 | { | 216 | { |
270 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 217 | struct slot *slot = get_slot(hotplug_slot); |
271 | 218 | ||
272 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 219 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
273 | 220 | ||
@@ -276,7 +223,7 @@ static int disable_slot (struct hotplug_slot *hotplug_slot) | |||
276 | 223 | ||
277 | static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value) | 224 | static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value) |
278 | { | 225 | { |
279 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 226 | struct slot *slot = get_slot(hotplug_slot); |
280 | int retval; | 227 | int retval; |
281 | 228 | ||
282 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 229 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -290,7 +237,7 @@ static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value) | |||
290 | 237 | ||
291 | static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value) | 238 | static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value) |
292 | { | 239 | { |
293 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 240 | struct slot *slot = get_slot(hotplug_slot); |
294 | int retval; | 241 | int retval; |
295 | 242 | ||
296 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 243 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -304,7 +251,7 @@ static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value) | |||
304 | 251 | ||
305 | static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value) | 252 | static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value) |
306 | { | 253 | { |
307 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 254 | struct slot *slot = get_slot(hotplug_slot); |
308 | int retval; | 255 | int retval; |
309 | 256 | ||
310 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 257 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -318,7 +265,7 @@ static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value) | |||
318 | 265 | ||
319 | static int get_adapter_status (struct hotplug_slot *hotplug_slot, u8 *value) | 266 | static int get_adapter_status (struct hotplug_slot *hotplug_slot, u8 *value) |
320 | { | 267 | { |
321 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 268 | struct slot *slot = get_slot(hotplug_slot); |
322 | int retval; | 269 | int retval; |
323 | 270 | ||
324 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 271 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -332,7 +279,7 @@ static int get_adapter_status (struct hotplug_slot *hotplug_slot, u8 *value) | |||
332 | 279 | ||
333 | static int get_address (struct hotplug_slot *hotplug_slot, u32 *value) | 280 | static int get_address (struct hotplug_slot *hotplug_slot, u32 *value) |
334 | { | 281 | { |
335 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 282 | struct slot *slot = get_slot(hotplug_slot); |
336 | struct pci_bus *bus = slot->ctrl->pci_dev->subordinate; | 283 | struct pci_bus *bus = slot->ctrl->pci_dev->subordinate; |
337 | 284 | ||
338 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 285 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -344,7 +291,7 @@ static int get_address (struct hotplug_slot *hotplug_slot, u32 *value) | |||
344 | 291 | ||
345 | static int get_max_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value) | 292 | static int get_max_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value) |
346 | { | 293 | { |
347 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 294 | struct slot *slot = get_slot(hotplug_slot); |
348 | int retval; | 295 | int retval; |
349 | 296 | ||
350 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 297 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -358,7 +305,7 @@ static int get_max_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_sp | |||
358 | 305 | ||
359 | static int get_cur_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value) | 306 | static int get_cur_bus_speed (struct hotplug_slot *hotplug_slot, enum pci_bus_speed *value) |
360 | { | 307 | { |
361 | struct slot *slot = get_slot(hotplug_slot, __FUNCTION__); | 308 | struct slot *slot = get_slot(hotplug_slot); |
362 | int retval; | 309 | int retval; |
363 | 310 | ||
364 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); | 311 | dbg("%s - physical_slot = %s\n", __FUNCTION__, hotplug_slot->name); |
@@ -385,9 +332,6 @@ static int shpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
385 | { | 332 | { |
386 | int rc; | 333 | int rc; |
387 | struct controller *ctrl; | 334 | struct controller *ctrl; |
388 | struct slot *t_slot; | ||
389 | int first_device_num; /* first PCI device number */ | ||
390 | int num_ctlr_slots; /* number of slots implemented */ | ||
391 | 335 | ||
392 | if (!is_shpc_capable(pdev)) | 336 | if (!is_shpc_capable(pdev)) |
393 | return -ENODEV; | 337 | return -ENODEV; |
@@ -408,47 +352,13 @@ static int shpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
408 | 352 | ||
409 | pci_set_drvdata(pdev, ctrl); | 353 | pci_set_drvdata(pdev, ctrl); |
410 | 354 | ||
411 | ctrl->bus = pdev->bus->number; | ||
412 | ctrl->slot_bus = pdev->subordinate->number; | ||
413 | ctrl->device = PCI_SLOT(pdev->devfn); | ||
414 | ctrl->function = PCI_FUNC(pdev->devfn); | ||
415 | |||
416 | dbg("ctrl bus=0x%x, device=%x, function=%x, irq=%x\n", | ||
417 | ctrl->bus, ctrl->device, ctrl->function, pdev->irq); | ||
418 | |||
419 | /* | ||
420 | * Save configuration headers for this and subordinate PCI buses | ||
421 | */ | ||
422 | rc = get_ctlr_slot_config(ctrl); | ||
423 | if (rc) { | ||
424 | err(msg_initialization_err, rc); | ||
425 | goto err_out_release_ctlr; | ||
426 | } | ||
427 | first_device_num = ctrl->slot_device_offset; | ||
428 | num_ctlr_slots = ctrl->num_slots; | ||
429 | |||
430 | ctrl->add_support = 1; | ||
431 | |||
432 | /* Setup the slot information structures */ | 355 | /* Setup the slot information structures */ |
433 | rc = init_slots(ctrl); | 356 | rc = init_slots(ctrl); |
434 | if (rc) { | 357 | if (rc) { |
435 | err(msg_initialization_err, 6); | 358 | err("%s: slot initialization failed\n", SHPC_MODULE_NAME); |
436 | goto err_out_release_ctlr; | 359 | goto err_out_release_ctlr; |
437 | } | 360 | } |
438 | 361 | ||
439 | /* Now hpc_functions (slot->hpc_ops->functions) are ready */ | ||
440 | t_slot = shpchp_find_slot(ctrl, first_device_num); | ||
441 | |||
442 | /* Check for operation bus speed */ | ||
443 | rc = t_slot->hpc_ops->get_cur_bus_speed(t_slot, &ctrl->speed); | ||
444 | dbg("%s: t_slot->hp_slot %x\n", __FUNCTION__,t_slot->hp_slot); | ||
445 | |||
446 | if (rc || ctrl->speed == PCI_SPEED_UNKNOWN) { | ||
447 | err(SHPC_MODULE_NAME ": Can't get current bus speed. " | ||
448 | "Set to 33MHz PCI.\n"); | ||
449 | ctrl->speed = PCI_SPEED_33MHz; | ||
450 | } | ||
451 | |||
452 | rc = shpchp_create_ctrl_files(ctrl); | 362 | rc = shpchp_create_ctrl_files(ctrl); |
453 | if (rc) | 363 | if (rc) |
454 | goto err_cleanup_slots; | 364 | goto err_cleanup_slots; |
diff --git a/drivers/pci/hotplug/shpchp_ctrl.c b/drivers/pci/hotplug/shpchp_ctrl.c index 158ac7836096..6bb84734cd6c 100644 --- a/drivers/pci/hotplug/shpchp_ctrl.c +++ b/drivers/pci/hotplug/shpchp_ctrl.c | |||
@@ -57,9 +57,8 @@ static int queue_interrupt_event(struct slot *p_slot, u32 event_type) | |||
57 | return 0; | 57 | return 0; |
58 | } | 58 | } |
59 | 59 | ||
60 | u8 shpchp_handle_attention_button(u8 hp_slot, void *inst_id) | 60 | u8 shpchp_handle_attention_button(u8 hp_slot, struct controller *ctrl) |
61 | { | 61 | { |
62 | struct controller *ctrl = (struct controller *) inst_id; | ||
63 | struct slot *p_slot; | 62 | struct slot *p_slot; |
64 | u32 event_type; | 63 | u32 event_type; |
65 | 64 | ||
@@ -81,9 +80,8 @@ u8 shpchp_handle_attention_button(u8 hp_slot, void *inst_id) | |||
81 | 80 | ||
82 | } | 81 | } |
83 | 82 | ||
84 | u8 shpchp_handle_switch_change(u8 hp_slot, void *inst_id) | 83 | u8 shpchp_handle_switch_change(u8 hp_slot, struct controller *ctrl) |
85 | { | 84 | { |
86 | struct controller *ctrl = (struct controller *) inst_id; | ||
87 | struct slot *p_slot; | 85 | struct slot *p_slot; |
88 | u8 getstatus; | 86 | u8 getstatus; |
89 | u32 event_type; | 87 | u32 event_type; |
@@ -120,9 +118,8 @@ u8 shpchp_handle_switch_change(u8 hp_slot, void *inst_id) | |||
120 | return 1; | 118 | return 1; |
121 | } | 119 | } |
122 | 120 | ||
123 | u8 shpchp_handle_presence_change(u8 hp_slot, void *inst_id) | 121 | u8 shpchp_handle_presence_change(u8 hp_slot, struct controller *ctrl) |
124 | { | 122 | { |
125 | struct controller *ctrl = (struct controller *) inst_id; | ||
126 | struct slot *p_slot; | 123 | struct slot *p_slot; |
127 | u32 event_type; | 124 | u32 event_type; |
128 | 125 | ||
@@ -154,9 +151,8 @@ u8 shpchp_handle_presence_change(u8 hp_slot, void *inst_id) | |||
154 | return 1; | 151 | return 1; |
155 | } | 152 | } |
156 | 153 | ||
157 | u8 shpchp_handle_power_fault(u8 hp_slot, void *inst_id) | 154 | u8 shpchp_handle_power_fault(u8 hp_slot, struct controller *ctrl) |
158 | { | 155 | { |
159 | struct controller *ctrl = (struct controller *) inst_id; | ||
160 | struct slot *p_slot; | 156 | struct slot *p_slot; |
161 | u32 event_type; | 157 | u32 event_type; |
162 | 158 | ||
@@ -497,10 +493,12 @@ static void handle_button_press_event(struct slot *p_slot) | |||
497 | p_slot->hpc_ops->get_power_status(p_slot, &getstatus); | 493 | p_slot->hpc_ops->get_power_status(p_slot, &getstatus); |
498 | if (getstatus) { | 494 | if (getstatus) { |
499 | p_slot->state = BLINKINGOFF_STATE; | 495 | p_slot->state = BLINKINGOFF_STATE; |
500 | info(msg_button_off, p_slot->name); | 496 | info("PCI slot #%s - powering off due to button " |
497 | "press.\n", p_slot->name); | ||
501 | } else { | 498 | } else { |
502 | p_slot->state = BLINKINGON_STATE; | 499 | p_slot->state = BLINKINGON_STATE; |
503 | info(msg_button_on, p_slot->name); | 500 | info("PCI slot #%s - powering on due to button " |
501 | "press.\n", p_slot->name); | ||
504 | } | 502 | } |
505 | /* blink green LED and turn off amber */ | 503 | /* blink green LED and turn off amber */ |
506 | p_slot->hpc_ops->green_led_blink(p_slot); | 504 | p_slot->hpc_ops->green_led_blink(p_slot); |
@@ -523,7 +521,8 @@ static void handle_button_press_event(struct slot *p_slot) | |||
523 | else | 521 | else |
524 | p_slot->hpc_ops->green_led_off(p_slot); | 522 | p_slot->hpc_ops->green_led_off(p_slot); |
525 | p_slot->hpc_ops->set_attention_status(p_slot, 0); | 523 | p_slot->hpc_ops->set_attention_status(p_slot, 0); |
526 | info(msg_button_cancel, p_slot->name); | 524 | info("PCI slot #%s - action canceled due to button press\n", |
525 | p_slot->name); | ||
527 | p_slot->state = STATIC_STATE; | 526 | p_slot->state = STATIC_STATE; |
528 | break; | 527 | break; |
529 | case POWEROFF_STATE: | 528 | case POWEROFF_STATE: |
diff --git a/drivers/pci/hotplug/shpchp_hpc.c b/drivers/pci/hotplug/shpchp_hpc.c index 83a5226ba9ed..b7bede4b7c27 100644 --- a/drivers/pci/hotplug/shpchp_hpc.c +++ b/drivers/pci/hotplug/shpchp_hpc.c | |||
@@ -212,44 +212,40 @@ | |||
212 | #define SLOT_SERR_INT_MASK 0x3 | 212 | #define SLOT_SERR_INT_MASK 0x3 |
213 | 213 | ||
214 | DEFINE_DBG_BUFFER /* Debug string buffer for entire HPC defined here */ | 214 | DEFINE_DBG_BUFFER /* Debug string buffer for entire HPC defined here */ |
215 | static struct php_ctlr_state_s *php_ctlr_list_head; /* HPC state linked list */ | ||
216 | static int ctlr_seq_num = 0; /* Controller sequenc # */ | ||
217 | static spinlock_t list_lock; | ||
218 | |||
219 | static atomic_t shpchp_num_controllers = ATOMIC_INIT(0); | 215 | static atomic_t shpchp_num_controllers = ATOMIC_INIT(0); |
220 | 216 | ||
221 | static irqreturn_t shpc_isr(int irq, void *dev_id); | 217 | static irqreturn_t shpc_isr(int irq, void *dev_id); |
222 | static void start_int_poll_timer(struct php_ctlr_state_s *php_ctlr, int sec); | 218 | static void start_int_poll_timer(struct controller *ctrl, int sec); |
223 | static int hpc_check_cmd_status(struct controller *ctrl); | 219 | static int hpc_check_cmd_status(struct controller *ctrl); |
224 | 220 | ||
225 | static inline u8 shpc_readb(struct controller *ctrl, int reg) | 221 | static inline u8 shpc_readb(struct controller *ctrl, int reg) |
226 | { | 222 | { |
227 | return readb(ctrl->hpc_ctlr_handle->creg + reg); | 223 | return readb(ctrl->creg + reg); |
228 | } | 224 | } |
229 | 225 | ||
230 | static inline void shpc_writeb(struct controller *ctrl, int reg, u8 val) | 226 | static inline void shpc_writeb(struct controller *ctrl, int reg, u8 val) |
231 | { | 227 | { |
232 | writeb(val, ctrl->hpc_ctlr_handle->creg + reg); | 228 | writeb(val, ctrl->creg + reg); |
233 | } | 229 | } |
234 | 230 | ||
235 | static inline u16 shpc_readw(struct controller *ctrl, int reg) | 231 | static inline u16 shpc_readw(struct controller *ctrl, int reg) |
236 | { | 232 | { |
237 | return readw(ctrl->hpc_ctlr_handle->creg + reg); | 233 | return readw(ctrl->creg + reg); |
238 | } | 234 | } |
239 | 235 | ||
240 | static inline void shpc_writew(struct controller *ctrl, int reg, u16 val) | 236 | static inline void shpc_writew(struct controller *ctrl, int reg, u16 val) |
241 | { | 237 | { |
242 | writew(val, ctrl->hpc_ctlr_handle->creg + reg); | 238 | writew(val, ctrl->creg + reg); |
243 | } | 239 | } |
244 | 240 | ||
245 | static inline u32 shpc_readl(struct controller *ctrl, int reg) | 241 | static inline u32 shpc_readl(struct controller *ctrl, int reg) |
246 | { | 242 | { |
247 | return readl(ctrl->hpc_ctlr_handle->creg + reg); | 243 | return readl(ctrl->creg + reg); |
248 | } | 244 | } |
249 | 245 | ||
250 | static inline void shpc_writel(struct controller *ctrl, int reg, u32 val) | 246 | static inline void shpc_writel(struct controller *ctrl, int reg, u32 val) |
251 | { | 247 | { |
252 | writel(val, ctrl->hpc_ctlr_handle->creg + reg); | 248 | writel(val, ctrl->creg + reg); |
253 | } | 249 | } |
254 | 250 | ||
255 | static inline int shpc_indirect_read(struct controller *ctrl, int index, | 251 | static inline int shpc_indirect_read(struct controller *ctrl, int index, |
@@ -268,21 +264,20 @@ static inline int shpc_indirect_read(struct controller *ctrl, int index, | |||
268 | /* | 264 | /* |
269 | * This is the interrupt polling timeout function. | 265 | * This is the interrupt polling timeout function. |
270 | */ | 266 | */ |
271 | static void int_poll_timeout(unsigned long lphp_ctlr) | 267 | static void int_poll_timeout(unsigned long data) |
272 | { | 268 | { |
273 | struct php_ctlr_state_s *php_ctlr = | 269 | struct controller *ctrl = (struct controller *)data; |
274 | (struct php_ctlr_state_s *)lphp_ctlr; | ||
275 | 270 | ||
276 | DBG_ENTER_ROUTINE | 271 | DBG_ENTER_ROUTINE |
277 | 272 | ||
278 | /* Poll for interrupt events. regs == NULL => polling */ | 273 | /* Poll for interrupt events. regs == NULL => polling */ |
279 | shpc_isr(0, php_ctlr->callback_instance_id); | 274 | shpc_isr(0, ctrl); |
280 | 275 | ||
281 | init_timer(&php_ctlr->int_poll_timer); | 276 | init_timer(&ctrl->poll_timer); |
282 | if (!shpchp_poll_time) | 277 | if (!shpchp_poll_time) |
283 | shpchp_poll_time = 2; /* default polling interval is 2 sec */ | 278 | shpchp_poll_time = 2; /* default polling interval is 2 sec */ |
284 | 279 | ||
285 | start_int_poll_timer(php_ctlr, shpchp_poll_time); | 280 | start_int_poll_timer(ctrl, shpchp_poll_time); |
286 | 281 | ||
287 | DBG_LEAVE_ROUTINE | 282 | DBG_LEAVE_ROUTINE |
288 | } | 283 | } |
@@ -290,16 +285,16 @@ static void int_poll_timeout(unsigned long lphp_ctlr) | |||
290 | /* | 285 | /* |
291 | * This function starts the interrupt polling timer. | 286 | * This function starts the interrupt polling timer. |
292 | */ | 287 | */ |
293 | static void start_int_poll_timer(struct php_ctlr_state_s *php_ctlr, int sec) | 288 | static void start_int_poll_timer(struct controller *ctrl, int sec) |
294 | { | 289 | { |
295 | /* Clamp to sane value */ | 290 | /* Clamp to sane value */ |
296 | if ((sec <= 0) || (sec > 60)) | 291 | if ((sec <= 0) || (sec > 60)) |
297 | sec = 2; | 292 | sec = 2; |
298 | 293 | ||
299 | php_ctlr->int_poll_timer.function = &int_poll_timeout; | 294 | ctrl->poll_timer.function = &int_poll_timeout; |
300 | php_ctlr->int_poll_timer.data = (unsigned long)php_ctlr; | 295 | ctrl->poll_timer.data = (unsigned long)ctrl; |
301 | php_ctlr->int_poll_timer.expires = jiffies + sec * HZ; | 296 | ctrl->poll_timer.expires = jiffies + sec * HZ; |
302 | add_timer(&php_ctlr->int_poll_timer); | 297 | add_timer(&ctrl->poll_timer); |
303 | } | 298 | } |
304 | 299 | ||
305 | static inline int is_ctrl_busy(struct controller *ctrl) | 300 | static inline int is_ctrl_busy(struct controller *ctrl) |
@@ -666,33 +661,8 @@ static void hpc_set_green_led_blink(struct slot *slot) | |||
666 | shpc_write_cmd(slot, slot->hp_slot, SET_PWR_BLINK); | 661 | shpc_write_cmd(slot, slot->hp_slot, SET_PWR_BLINK); |
667 | } | 662 | } |
668 | 663 | ||
669 | int shpc_get_ctlr_slot_config(struct controller *ctrl, | ||
670 | int *num_ctlr_slots, /* number of slots in this HPC */ | ||
671 | int *first_device_num, /* PCI dev num of the first slot in this SHPC */ | ||
672 | int *physical_slot_num, /* phy slot num of the first slot in this SHPC */ | ||
673 | int *updown, /* physical_slot_num increament: 1 or -1 */ | ||
674 | int *flags) | ||
675 | { | ||
676 | u32 slot_config; | ||
677 | |||
678 | DBG_ENTER_ROUTINE | ||
679 | |||
680 | slot_config = shpc_readl(ctrl, SLOT_CONFIG); | ||
681 | *first_device_num = (slot_config & FIRST_DEV_NUM) >> 8; | ||
682 | *num_ctlr_slots = slot_config & SLOT_NUM; | ||
683 | *physical_slot_num = (slot_config & PSN) >> 16; | ||
684 | *updown = ((slot_config & UPDOWN) >> 29) ? 1 : -1; | ||
685 | |||
686 | dbg("%s: physical_slot_num = %x\n", __FUNCTION__, *physical_slot_num); | ||
687 | |||
688 | DBG_LEAVE_ROUTINE | ||
689 | return 0; | ||
690 | } | ||
691 | |||
692 | static void hpc_release_ctlr(struct controller *ctrl) | 664 | static void hpc_release_ctlr(struct controller *ctrl) |
693 | { | 665 | { |
694 | struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; | ||
695 | struct php_ctlr_state_s *p, *p_prev; | ||
696 | int i; | 666 | int i; |
697 | u32 slot_reg, serr_int; | 667 | u32 slot_reg, serr_int; |
698 | 668 | ||
@@ -722,40 +692,15 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
722 | serr_int &= ~SERR_INTR_RSVDZ_MASK; | 692 | serr_int &= ~SERR_INTR_RSVDZ_MASK; |
723 | shpc_writel(ctrl, SERR_INTR_ENABLE, serr_int); | 693 | shpc_writel(ctrl, SERR_INTR_ENABLE, serr_int); |
724 | 694 | ||
725 | if (shpchp_poll_mode) { | 695 | if (shpchp_poll_mode) |
726 | del_timer(&php_ctlr->int_poll_timer); | 696 | del_timer(&ctrl->poll_timer); |
727 | } else { | 697 | else { |
728 | if (php_ctlr->irq) { | 698 | free_irq(ctrl->pci_dev->irq, ctrl); |
729 | free_irq(php_ctlr->irq, ctrl); | 699 | pci_disable_msi(ctrl->pci_dev); |
730 | php_ctlr->irq = 0; | ||
731 | pci_disable_msi(php_ctlr->pci_dev); | ||
732 | } | ||
733 | } | ||
734 | |||
735 | if (php_ctlr->pci_dev) { | ||
736 | iounmap(php_ctlr->creg); | ||
737 | release_mem_region(ctrl->mmio_base, ctrl->mmio_size); | ||
738 | php_ctlr->pci_dev = NULL; | ||
739 | } | ||
740 | |||
741 | spin_lock(&list_lock); | ||
742 | p = php_ctlr_list_head; | ||
743 | p_prev = NULL; | ||
744 | while (p) { | ||
745 | if (p == php_ctlr) { | ||
746 | if (p_prev) | ||
747 | p_prev->pnext = p->pnext; | ||
748 | else | ||
749 | php_ctlr_list_head = p->pnext; | ||
750 | break; | ||
751 | } else { | ||
752 | p_prev = p; | ||
753 | p = p->pnext; | ||
754 | } | ||
755 | } | 700 | } |
756 | spin_unlock(&list_lock); | ||
757 | 701 | ||
758 | kfree(php_ctlr); | 702 | iounmap(ctrl->creg); |
703 | release_mem_region(ctrl->mmio_base, ctrl->mmio_size); | ||
759 | 704 | ||
760 | /* | 705 | /* |
761 | * If this is the last controller to be released, destroy the | 706 | * If this is the last controller to be released, destroy the |
@@ -764,8 +709,7 @@ static void hpc_release_ctlr(struct controller *ctrl) | |||
764 | if (atomic_dec_and_test(&shpchp_num_controllers)) | 709 | if (atomic_dec_and_test(&shpchp_num_controllers)) |
765 | destroy_workqueue(shpchp_wq); | 710 | destroy_workqueue(shpchp_wq); |
766 | 711 | ||
767 | DBG_LEAVE_ROUTINE | 712 | DBG_LEAVE_ROUTINE |
768 | |||
769 | } | 713 | } |
770 | 714 | ||
771 | static int hpc_power_on_slot(struct slot * slot) | 715 | static int hpc_power_on_slot(struct slot * slot) |
@@ -891,7 +835,6 @@ static int hpc_set_bus_speed_mode(struct slot * slot, enum pci_bus_speed value) | |||
891 | static irqreturn_t shpc_isr(int irq, void *dev_id) | 835 | static irqreturn_t shpc_isr(int irq, void *dev_id) |
892 | { | 836 | { |
893 | struct controller *ctrl = (struct controller *)dev_id; | 837 | struct controller *ctrl = (struct controller *)dev_id; |
894 | struct php_ctlr_state_s *php_ctlr = ctrl->hpc_ctlr_handle; | ||
895 | u32 serr_int, slot_reg, intr_loc, intr_loc2; | 838 | u32 serr_int, slot_reg, intr_loc, intr_loc2; |
896 | int hp_slot; | 839 | int hp_slot; |
897 | 840 | ||
@@ -942,20 +885,16 @@ static irqreturn_t shpc_isr(int irq, void *dev_id) | |||
942 | __FUNCTION__, hp_slot, slot_reg); | 885 | __FUNCTION__, hp_slot, slot_reg); |
943 | 886 | ||
944 | if (slot_reg & MRL_CHANGE_DETECTED) | 887 | if (slot_reg & MRL_CHANGE_DETECTED) |
945 | php_ctlr->switch_change_callback( | 888 | shpchp_handle_switch_change(hp_slot, ctrl); |
946 | hp_slot, php_ctlr->callback_instance_id); | ||
947 | 889 | ||
948 | if (slot_reg & BUTTON_PRESS_DETECTED) | 890 | if (slot_reg & BUTTON_PRESS_DETECTED) |
949 | php_ctlr->attention_button_callback( | 891 | shpchp_handle_attention_button(hp_slot, ctrl); |
950 | hp_slot, php_ctlr->callback_instance_id); | ||
951 | 892 | ||
952 | if (slot_reg & PRSNT_CHANGE_DETECTED) | 893 | if (slot_reg & PRSNT_CHANGE_DETECTED) |
953 | php_ctlr->presence_change_callback( | 894 | shpchp_handle_presence_change(hp_slot, ctrl); |
954 | hp_slot , php_ctlr->callback_instance_id); | ||
955 | 895 | ||
956 | if (slot_reg & (ISO_PFAULT_DETECTED | CON_PFAULT_DETECTED)) | 896 | if (slot_reg & (ISO_PFAULT_DETECTED | CON_PFAULT_DETECTED)) |
957 | php_ctlr->power_fault_callback( | 897 | shpchp_handle_power_fault(hp_slot, ctrl); |
958 | hp_slot, php_ctlr->callback_instance_id); | ||
959 | 898 | ||
960 | /* Clear all slot events */ | 899 | /* Clear all slot events */ |
961 | slot_reg &= ~SLOT_REG_RSVDZ_MASK; | 900 | slot_reg &= ~SLOT_REG_RSVDZ_MASK; |
@@ -1114,10 +1053,8 @@ static struct hpc_ops shpchp_hpc_ops = { | |||
1114 | .release_ctlr = hpc_release_ctlr, | 1053 | .release_ctlr = hpc_release_ctlr, |
1115 | }; | 1054 | }; |
1116 | 1055 | ||
1117 | int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | 1056 | int shpc_init(struct controller *ctrl, struct pci_dev *pdev) |
1118 | { | 1057 | { |
1119 | struct php_ctlr_state_s *php_ctlr, *p; | ||
1120 | void *instance_id = ctrl; | ||
1121 | int rc = -1, num_slots = 0; | 1058 | int rc = -1, num_slots = 0; |
1122 | u8 hp_slot; | 1059 | u8 hp_slot; |
1123 | u32 shpc_base_offset; | 1060 | u32 shpc_base_offset; |
@@ -1128,16 +1065,6 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1128 | 1065 | ||
1129 | ctrl->pci_dev = pdev; /* pci_dev of the P2P bridge */ | 1066 | ctrl->pci_dev = pdev; /* pci_dev of the P2P bridge */ |
1130 | 1067 | ||
1131 | spin_lock_init(&list_lock); | ||
1132 | php_ctlr = kzalloc(sizeof(*php_ctlr), GFP_KERNEL); | ||
1133 | |||
1134 | if (!php_ctlr) { /* allocate controller state data */ | ||
1135 | err("%s: HPC controller memory allocation error!\n", __FUNCTION__); | ||
1136 | goto abort; | ||
1137 | } | ||
1138 | |||
1139 | php_ctlr->pci_dev = pdev; /* save pci_dev in context */ | ||
1140 | |||
1141 | if ((pdev->vendor == PCI_VENDOR_ID_AMD) || (pdev->device == | 1068 | if ((pdev->vendor == PCI_VENDOR_ID_AMD) || (pdev->device == |
1142 | PCI_DEVICE_ID_AMD_GOLAM_7450)) { | 1069 | PCI_DEVICE_ID_AMD_GOLAM_7450)) { |
1143 | /* amd shpc driver doesn't use Base Offset; assume 0 */ | 1070 | /* amd shpc driver doesn't use Base Offset; assume 0 */ |
@@ -1147,20 +1074,20 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1147 | ctrl->cap_offset = pci_find_capability(pdev, PCI_CAP_ID_SHPC); | 1074 | ctrl->cap_offset = pci_find_capability(pdev, PCI_CAP_ID_SHPC); |
1148 | if (!ctrl->cap_offset) { | 1075 | if (!ctrl->cap_offset) { |
1149 | err("%s : cap_offset == 0\n", __FUNCTION__); | 1076 | err("%s : cap_offset == 0\n", __FUNCTION__); |
1150 | goto abort_free_ctlr; | 1077 | goto abort; |
1151 | } | 1078 | } |
1152 | dbg("%s: cap_offset = %x\n", __FUNCTION__, ctrl->cap_offset); | 1079 | dbg("%s: cap_offset = %x\n", __FUNCTION__, ctrl->cap_offset); |
1153 | 1080 | ||
1154 | rc = shpc_indirect_read(ctrl, 0, &shpc_base_offset); | 1081 | rc = shpc_indirect_read(ctrl, 0, &shpc_base_offset); |
1155 | if (rc) { | 1082 | if (rc) { |
1156 | err("%s: cannot read base_offset\n", __FUNCTION__); | 1083 | err("%s: cannot read base_offset\n", __FUNCTION__); |
1157 | goto abort_free_ctlr; | 1084 | goto abort; |
1158 | } | 1085 | } |
1159 | 1086 | ||
1160 | rc = shpc_indirect_read(ctrl, 3, &tempdword); | 1087 | rc = shpc_indirect_read(ctrl, 3, &tempdword); |
1161 | if (rc) { | 1088 | if (rc) { |
1162 | err("%s: cannot read slot config\n", __FUNCTION__); | 1089 | err("%s: cannot read slot config\n", __FUNCTION__); |
1163 | goto abort_free_ctlr; | 1090 | goto abort; |
1164 | } | 1091 | } |
1165 | num_slots = tempdword & SLOT_NUM; | 1092 | num_slots = tempdword & SLOT_NUM; |
1166 | dbg("%s: num_slots (indirect) %x\n", __FUNCTION__, num_slots); | 1093 | dbg("%s: num_slots (indirect) %x\n", __FUNCTION__, num_slots); |
@@ -1170,7 +1097,7 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1170 | if (rc) { | 1097 | if (rc) { |
1171 | err("%s: cannot read creg (index = %d)\n", | 1098 | err("%s: cannot read creg (index = %d)\n", |
1172 | __FUNCTION__, i); | 1099 | __FUNCTION__, i); |
1173 | goto abort_free_ctlr; | 1100 | goto abort; |
1174 | } | 1101 | } |
1175 | dbg("%s: offset %d: value %x\n", __FUNCTION__,i, | 1102 | dbg("%s: offset %d: value %x\n", __FUNCTION__,i, |
1176 | tempdword); | 1103 | tempdword); |
@@ -1187,24 +1114,24 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1187 | rc = pci_enable_device(pdev); | 1114 | rc = pci_enable_device(pdev); |
1188 | if (rc) { | 1115 | if (rc) { |
1189 | err("%s: pci_enable_device failed\n", __FUNCTION__); | 1116 | err("%s: pci_enable_device failed\n", __FUNCTION__); |
1190 | goto abort_free_ctlr; | 1117 | goto abort; |
1191 | } | 1118 | } |
1192 | 1119 | ||
1193 | if (!request_mem_region(ctrl->mmio_base, ctrl->mmio_size, MY_NAME)) { | 1120 | if (!request_mem_region(ctrl->mmio_base, ctrl->mmio_size, MY_NAME)) { |
1194 | err("%s: cannot reserve MMIO region\n", __FUNCTION__); | 1121 | err("%s: cannot reserve MMIO region\n", __FUNCTION__); |
1195 | rc = -1; | 1122 | rc = -1; |
1196 | goto abort_free_ctlr; | 1123 | goto abort; |
1197 | } | 1124 | } |
1198 | 1125 | ||
1199 | php_ctlr->creg = ioremap(ctrl->mmio_base, ctrl->mmio_size); | 1126 | ctrl->creg = ioremap(ctrl->mmio_base, ctrl->mmio_size); |
1200 | if (!php_ctlr->creg) { | 1127 | if (!ctrl->creg) { |
1201 | err("%s: cannot remap MMIO region %lx @ %lx\n", __FUNCTION__, | 1128 | err("%s: cannot remap MMIO region %lx @ %lx\n", __FUNCTION__, |
1202 | ctrl->mmio_size, ctrl->mmio_base); | 1129 | ctrl->mmio_size, ctrl->mmio_base); |
1203 | release_mem_region(ctrl->mmio_base, ctrl->mmio_size); | 1130 | release_mem_region(ctrl->mmio_base, ctrl->mmio_size); |
1204 | rc = -1; | 1131 | rc = -1; |
1205 | goto abort_free_ctlr; | 1132 | goto abort; |
1206 | } | 1133 | } |
1207 | dbg("%s: php_ctlr->creg %p\n", __FUNCTION__, php_ctlr->creg); | 1134 | dbg("%s: ctrl->creg %p\n", __FUNCTION__, ctrl->creg); |
1208 | 1135 | ||
1209 | mutex_init(&ctrl->crit_sect); | 1136 | mutex_init(&ctrl->crit_sect); |
1210 | mutex_init(&ctrl->cmd_lock); | 1137 | mutex_init(&ctrl->cmd_lock); |
@@ -1212,23 +1139,14 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1212 | /* Setup wait queue */ | 1139 | /* Setup wait queue */ |
1213 | init_waitqueue_head(&ctrl->queue); | 1140 | init_waitqueue_head(&ctrl->queue); |
1214 | 1141 | ||
1215 | /* Find the IRQ */ | ||
1216 | php_ctlr->irq = pdev->irq; | ||
1217 | php_ctlr->attention_button_callback = shpchp_handle_attention_button, | ||
1218 | php_ctlr->switch_change_callback = shpchp_handle_switch_change; | ||
1219 | php_ctlr->presence_change_callback = shpchp_handle_presence_change; | ||
1220 | php_ctlr->power_fault_callback = shpchp_handle_power_fault; | ||
1221 | php_ctlr->callback_instance_id = instance_id; | ||
1222 | |||
1223 | ctrl->hpc_ctlr_handle = php_ctlr; | ||
1224 | ctrl->hpc_ops = &shpchp_hpc_ops; | 1142 | ctrl->hpc_ops = &shpchp_hpc_ops; |
1225 | 1143 | ||
1226 | /* Return PCI Controller Info */ | 1144 | /* Return PCI Controller Info */ |
1227 | slot_config = shpc_readl(ctrl, SLOT_CONFIG); | 1145 | slot_config = shpc_readl(ctrl, SLOT_CONFIG); |
1228 | php_ctlr->slot_device_offset = (slot_config & FIRST_DEV_NUM) >> 8; | 1146 | ctrl->slot_device_offset = (slot_config & FIRST_DEV_NUM) >> 8; |
1229 | php_ctlr->num_slots = slot_config & SLOT_NUM; | 1147 | ctrl->num_slots = slot_config & SLOT_NUM; |
1230 | dbg("%s: slot_device_offset %x\n", __FUNCTION__, php_ctlr->slot_device_offset); | 1148 | ctrl->first_slot = (slot_config & PSN) >> 16; |
1231 | dbg("%s: num_slots %x\n", __FUNCTION__, php_ctlr->num_slots); | 1149 | ctrl->slot_num_inc = ((slot_config & UPDOWN) >> 29) ? 1 : -1; |
1232 | 1150 | ||
1233 | /* Mask Global Interrupt Mask & Command Complete Interrupt Mask */ | 1151 | /* Mask Global Interrupt Mask & Command Complete Interrupt Mask */ |
1234 | tempdword = shpc_readl(ctrl, SERR_INTR_ENABLE); | 1152 | tempdword = shpc_readl(ctrl, SERR_INTR_ENABLE); |
@@ -1243,7 +1161,7 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1243 | /* Mask the MRL sensor SERR Mask of individual slot in | 1161 | /* Mask the MRL sensor SERR Mask of individual slot in |
1244 | * Slot SERR-INT Mask & clear all the existing event if any | 1162 | * Slot SERR-INT Mask & clear all the existing event if any |
1245 | */ | 1163 | */ |
1246 | for (hp_slot = 0; hp_slot < php_ctlr->num_slots; hp_slot++) { | 1164 | for (hp_slot = 0; hp_slot < ctrl->num_slots; hp_slot++) { |
1247 | slot_reg = shpc_readl(ctrl, SLOT_REG(hp_slot)); | 1165 | slot_reg = shpc_readl(ctrl, SLOT_REG(hp_slot)); |
1248 | dbg("%s: Default Logical Slot Register %d value %x\n", __FUNCTION__, | 1166 | dbg("%s: Default Logical Slot Register %d value %x\n", __FUNCTION__, |
1249 | hp_slot, slot_reg); | 1167 | hp_slot, slot_reg); |
@@ -1255,24 +1173,27 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1255 | shpc_writel(ctrl, SLOT_REG(hp_slot), slot_reg); | 1173 | shpc_writel(ctrl, SLOT_REG(hp_slot), slot_reg); |
1256 | } | 1174 | } |
1257 | 1175 | ||
1258 | if (shpchp_poll_mode) {/* Install interrupt polling code */ | 1176 | if (shpchp_poll_mode) { |
1259 | /* Install and start the interrupt polling timer */ | 1177 | /* Install interrupt polling timer. Start with 10 sec delay */ |
1260 | init_timer(&php_ctlr->int_poll_timer); | 1178 | init_timer(&ctrl->poll_timer); |
1261 | start_int_poll_timer( php_ctlr, 10 ); /* start with 10 second delay */ | 1179 | start_int_poll_timer(ctrl, 10); |
1262 | } else { | 1180 | } else { |
1263 | /* Installs the interrupt handler */ | 1181 | /* Installs the interrupt handler */ |
1264 | rc = pci_enable_msi(pdev); | 1182 | rc = pci_enable_msi(pdev); |
1265 | if (rc) { | 1183 | if (rc) { |
1266 | info("Can't get msi for the hotplug controller\n"); | 1184 | info("Can't get msi for the hotplug controller\n"); |
1267 | info("Use INTx for the hotplug controller\n"); | 1185 | info("Use INTx for the hotplug controller\n"); |
1268 | } else | 1186 | } |
1269 | php_ctlr->irq = pdev->irq; | ||
1270 | 1187 | ||
1271 | rc = request_irq(php_ctlr->irq, shpc_isr, IRQF_SHARED, MY_NAME, (void *) ctrl); | 1188 | rc = request_irq(ctrl->pci_dev->irq, shpc_isr, IRQF_SHARED, |
1272 | dbg("%s: request_irq %d for hpc%d (returns %d)\n", __FUNCTION__, php_ctlr->irq, ctlr_seq_num, rc); | 1189 | MY_NAME, (void *)ctrl); |
1190 | dbg("%s: request_irq %d for hpc%d (returns %d)\n", | ||
1191 | __FUNCTION__, ctrl->pci_dev->irq, | ||
1192 | atomic_read(&shpchp_num_controllers), rc); | ||
1273 | if (rc) { | 1193 | if (rc) { |
1274 | err("Can't get irq %d for the hotplug controller\n", php_ctlr->irq); | 1194 | err("Can't get irq %d for the hotplug controller\n", |
1275 | goto abort_free_ctlr; | 1195 | ctrl->pci_dev->irq); |
1196 | goto abort_iounmap; | ||
1276 | } | 1197 | } |
1277 | } | 1198 | } |
1278 | dbg("%s: HPC at b:d:f:irq=0x%x:%x:%x:%x\n", __FUNCTION__, | 1199 | dbg("%s: HPC at b:d:f:irq=0x%x:%x:%x:%x\n", __FUNCTION__, |
@@ -1280,24 +1201,6 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1280 | PCI_FUNC(pdev->devfn), pdev->irq); | 1201 | PCI_FUNC(pdev->devfn), pdev->irq); |
1281 | get_hp_hw_control_from_firmware(pdev); | 1202 | get_hp_hw_control_from_firmware(pdev); |
1282 | 1203 | ||
1283 | /* Add this HPC instance into the HPC list */ | ||
1284 | spin_lock(&list_lock); | ||
1285 | if (php_ctlr_list_head == 0) { | ||
1286 | php_ctlr_list_head = php_ctlr; | ||
1287 | p = php_ctlr_list_head; | ||
1288 | p->pnext = NULL; | ||
1289 | } else { | ||
1290 | p = php_ctlr_list_head; | ||
1291 | |||
1292 | while (p->pnext) | ||
1293 | p = p->pnext; | ||
1294 | |||
1295 | p->pnext = php_ctlr; | ||
1296 | } | ||
1297 | spin_unlock(&list_lock); | ||
1298 | |||
1299 | ctlr_seq_num++; | ||
1300 | |||
1301 | /* | 1204 | /* |
1302 | * If this is the first controller to be initialized, | 1205 | * If this is the first controller to be initialized, |
1303 | * initialize the shpchpd work queue | 1206 | * initialize the shpchpd work queue |
@@ -1306,14 +1209,14 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1306 | shpchp_wq = create_singlethread_workqueue("shpchpd"); | 1209 | shpchp_wq = create_singlethread_workqueue("shpchpd"); |
1307 | if (!shpchp_wq) { | 1210 | if (!shpchp_wq) { |
1308 | rc = -ENOMEM; | 1211 | rc = -ENOMEM; |
1309 | goto abort_free_ctlr; | 1212 | goto abort_iounmap; |
1310 | } | 1213 | } |
1311 | } | 1214 | } |
1312 | 1215 | ||
1313 | /* | 1216 | /* |
1314 | * Unmask all event interrupts of all slots | 1217 | * Unmask all event interrupts of all slots |
1315 | */ | 1218 | */ |
1316 | for (hp_slot = 0; hp_slot < php_ctlr->num_slots; hp_slot++) { | 1219 | for (hp_slot = 0; hp_slot < ctrl->num_slots; hp_slot++) { |
1317 | slot_reg = shpc_readl(ctrl, SLOT_REG(hp_slot)); | 1220 | slot_reg = shpc_readl(ctrl, SLOT_REG(hp_slot)); |
1318 | dbg("%s: Default Logical Slot Register %d value %x\n", __FUNCTION__, | 1221 | dbg("%s: Default Logical Slot Register %d value %x\n", __FUNCTION__, |
1319 | hp_slot, slot_reg); | 1222 | hp_slot, slot_reg); |
@@ -1336,10 +1239,8 @@ int shpc_init(struct controller * ctrl, struct pci_dev * pdev) | |||
1336 | return 0; | 1239 | return 0; |
1337 | 1240 | ||
1338 | /* We end up here for the many possible ways to fail this API. */ | 1241 | /* We end up here for the many possible ways to fail this API. */ |
1339 | abort_free_ctlr: | 1242 | abort_iounmap: |
1340 | if (php_ctlr->creg) | 1243 | iounmap(ctrl->creg); |
1341 | iounmap(php_ctlr->creg); | ||
1342 | kfree(php_ctlr); | ||
1343 | abort: | 1244 | abort: |
1344 | DBG_LEAVE_ROUTINE | 1245 | DBG_LEAVE_ROUTINE |
1345 | return rc; | 1246 | return rc; |
diff --git a/drivers/pci/htirq.c b/drivers/pci/htirq.c index 0a8d1cce9fa0..279c940a0039 100644 --- a/drivers/pci/htirq.c +++ b/drivers/pci/htirq.c | |||
@@ -99,14 +99,7 @@ int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update) | |||
99 | int pos; | 99 | int pos; |
100 | int irq; | 100 | int irq; |
101 | 101 | ||
102 | pos = pci_find_capability(dev, PCI_CAP_ID_HT); | 102 | pos = pci_find_ht_capability(dev, HT_CAPTYPE_IRQ); |
103 | while (pos) { | ||
104 | u8 subtype; | ||
105 | pci_read_config_byte(dev, pos + 3, &subtype); | ||
106 | if (subtype == HT_CAPTYPE_IRQ) | ||
107 | break; | ||
108 | pos = pci_find_next_capability(dev, pos, PCI_CAP_ID_HT); | ||
109 | } | ||
110 | if (!pos) | 103 | if (!pos) |
111 | return -EINVAL; | 104 | return -EINVAL; |
112 | 105 | ||
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index e5ae3a0c13bb..b8d2385e29bc 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
@@ -162,14 +162,9 @@ const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, | |||
162 | const struct pci_device_id *pci_match_device(struct pci_driver *drv, | 162 | const struct pci_device_id *pci_match_device(struct pci_driver *drv, |
163 | struct pci_dev *dev) | 163 | struct pci_dev *dev) |
164 | { | 164 | { |
165 | const struct pci_device_id *id; | ||
166 | struct pci_dynid *dynid; | 165 | struct pci_dynid *dynid; |
167 | 166 | ||
168 | id = pci_match_id(drv->id_table, dev); | 167 | /* Look at the dynamic ids first, before the static ones */ |
169 | if (id) | ||
170 | return id; | ||
171 | |||
172 | /* static ids didn't match, lets look at the dynamic ones */ | ||
173 | spin_lock(&drv->dynids.lock); | 168 | spin_lock(&drv->dynids.lock); |
174 | list_for_each_entry(dynid, &drv->dynids.list, node) { | 169 | list_for_each_entry(dynid, &drv->dynids.list, node) { |
175 | if (pci_match_one_device(&dynid->id, dev)) { | 170 | if (pci_match_one_device(&dynid->id, dev)) { |
@@ -178,7 +173,8 @@ const struct pci_device_id *pci_match_device(struct pci_driver *drv, | |||
178 | } | 173 | } |
179 | } | 174 | } |
180 | spin_unlock(&drv->dynids.lock); | 175 | spin_unlock(&drv->dynids.lock); |
181 | return NULL; | 176 | |
177 | return pci_match_id(drv->id_table, dev); | ||
182 | } | 178 | } |
183 | 179 | ||
184 | static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, | 180 | static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, |
@@ -357,6 +353,8 @@ static int pci_device_resume_early(struct device * dev) | |||
357 | struct pci_dev * pci_dev = to_pci_dev(dev); | 353 | struct pci_dev * pci_dev = to_pci_dev(dev); |
358 | struct pci_driver * drv = pci_dev->driver; | 354 | struct pci_driver * drv = pci_dev->driver; |
359 | 355 | ||
356 | pci_fixup_device(pci_fixup_resume, pci_dev); | ||
357 | |||
360 | if (drv && drv->resume_early) | 358 | if (drv && drv->resume_early) |
361 | error = drv->resume_early(pci_dev); | 359 | error = drv->resume_early(pci_dev); |
362 | return error; | 360 | return error; |
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 5a14b73cf3a1..6bfb942428e4 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
@@ -68,12 +68,14 @@ pci_max_busnr(void) | |||
68 | 68 | ||
69 | #endif /* 0 */ | 69 | #endif /* 0 */ |
70 | 70 | ||
71 | static int __pci_find_next_cap(struct pci_bus *bus, unsigned int devfn, u8 pos, int cap) | 71 | #define PCI_FIND_CAP_TTL 48 |
72 | |||
73 | static int __pci_find_next_cap_ttl(struct pci_bus *bus, unsigned int devfn, | ||
74 | u8 pos, int cap, int *ttl) | ||
72 | { | 75 | { |
73 | u8 id; | 76 | u8 id; |
74 | int ttl = 48; | ||
75 | 77 | ||
76 | while (ttl--) { | 78 | while ((*ttl)--) { |
77 | pci_bus_read_config_byte(bus, devfn, pos, &pos); | 79 | pci_bus_read_config_byte(bus, devfn, pos, &pos); |
78 | if (pos < 0x40) | 80 | if (pos < 0x40) |
79 | break; | 81 | break; |
@@ -89,6 +91,14 @@ static int __pci_find_next_cap(struct pci_bus *bus, unsigned int devfn, u8 pos, | |||
89 | return 0; | 91 | return 0; |
90 | } | 92 | } |
91 | 93 | ||
94 | static int __pci_find_next_cap(struct pci_bus *bus, unsigned int devfn, | ||
95 | u8 pos, int cap) | ||
96 | { | ||
97 | int ttl = PCI_FIND_CAP_TTL; | ||
98 | |||
99 | return __pci_find_next_cap_ttl(bus, devfn, pos, cap, &ttl); | ||
100 | } | ||
101 | |||
92 | int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap) | 102 | int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap) |
93 | { | 103 | { |
94 | return __pci_find_next_cap(dev->bus, dev->devfn, | 104 | return __pci_find_next_cap(dev->bus, dev->devfn, |
@@ -96,10 +106,10 @@ int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap) | |||
96 | } | 106 | } |
97 | EXPORT_SYMBOL_GPL(pci_find_next_capability); | 107 | EXPORT_SYMBOL_GPL(pci_find_next_capability); |
98 | 108 | ||
99 | static int __pci_bus_find_cap(struct pci_bus *bus, unsigned int devfn, u8 hdr_type, int cap) | 109 | static int __pci_bus_find_cap_start(struct pci_bus *bus, |
110 | unsigned int devfn, u8 hdr_type) | ||
100 | { | 111 | { |
101 | u16 status; | 112 | u16 status; |
102 | u8 pos; | ||
103 | 113 | ||
104 | pci_bus_read_config_word(bus, devfn, PCI_STATUS, &status); | 114 | pci_bus_read_config_word(bus, devfn, PCI_STATUS, &status); |
105 | if (!(status & PCI_STATUS_CAP_LIST)) | 115 | if (!(status & PCI_STATUS_CAP_LIST)) |
@@ -108,15 +118,14 @@ static int __pci_bus_find_cap(struct pci_bus *bus, unsigned int devfn, u8 hdr_ty | |||
108 | switch (hdr_type) { | 118 | switch (hdr_type) { |
109 | case PCI_HEADER_TYPE_NORMAL: | 119 | case PCI_HEADER_TYPE_NORMAL: |
110 | case PCI_HEADER_TYPE_BRIDGE: | 120 | case PCI_HEADER_TYPE_BRIDGE: |
111 | pos = PCI_CAPABILITY_LIST; | 121 | return PCI_CAPABILITY_LIST; |
112 | break; | ||
113 | case PCI_HEADER_TYPE_CARDBUS: | 122 | case PCI_HEADER_TYPE_CARDBUS: |
114 | pos = PCI_CB_CAPABILITY_LIST; | 123 | return PCI_CB_CAPABILITY_LIST; |
115 | break; | ||
116 | default: | 124 | default: |
117 | return 0; | 125 | return 0; |
118 | } | 126 | } |
119 | return __pci_find_next_cap(bus, devfn, pos, cap); | 127 | |
128 | return 0; | ||
120 | } | 129 | } |
121 | 130 | ||
122 | /** | 131 | /** |
@@ -140,7 +149,13 @@ static int __pci_bus_find_cap(struct pci_bus *bus, unsigned int devfn, u8 hdr_ty | |||
140 | */ | 149 | */ |
141 | int pci_find_capability(struct pci_dev *dev, int cap) | 150 | int pci_find_capability(struct pci_dev *dev, int cap) |
142 | { | 151 | { |
143 | return __pci_bus_find_cap(dev->bus, dev->devfn, dev->hdr_type, cap); | 152 | int pos; |
153 | |||
154 | pos = __pci_bus_find_cap_start(dev->bus, dev->devfn, dev->hdr_type); | ||
155 | if (pos) | ||
156 | pos = __pci_find_next_cap(dev->bus, dev->devfn, pos, cap); | ||
157 | |||
158 | return pos; | ||
144 | } | 159 | } |
145 | 160 | ||
146 | /** | 161 | /** |
@@ -158,11 +173,16 @@ int pci_find_capability(struct pci_dev *dev, int cap) | |||
158 | */ | 173 | */ |
159 | int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap) | 174 | int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap) |
160 | { | 175 | { |
176 | int pos; | ||
161 | u8 hdr_type; | 177 | u8 hdr_type; |
162 | 178 | ||
163 | pci_bus_read_config_byte(bus, devfn, PCI_HEADER_TYPE, &hdr_type); | 179 | pci_bus_read_config_byte(bus, devfn, PCI_HEADER_TYPE, &hdr_type); |
164 | 180 | ||
165 | return __pci_bus_find_cap(bus, devfn, hdr_type & 0x7f, cap); | 181 | pos = __pci_bus_find_cap_start(bus, devfn, hdr_type & 0x7f); |
182 | if (pos) | ||
183 | pos = __pci_find_next_cap(bus, devfn, pos, cap); | ||
184 | |||
185 | return pos; | ||
166 | } | 186 | } |
167 | 187 | ||
168 | /** | 188 | /** |
@@ -214,6 +234,74 @@ int pci_find_ext_capability(struct pci_dev *dev, int cap) | |||
214 | } | 234 | } |
215 | EXPORT_SYMBOL_GPL(pci_find_ext_capability); | 235 | EXPORT_SYMBOL_GPL(pci_find_ext_capability); |
216 | 236 | ||
237 | static int __pci_find_next_ht_cap(struct pci_dev *dev, int pos, int ht_cap) | ||
238 | { | ||
239 | int rc, ttl = PCI_FIND_CAP_TTL; | ||
240 | u8 cap, mask; | ||
241 | |||
242 | if (ht_cap == HT_CAPTYPE_SLAVE || ht_cap == HT_CAPTYPE_HOST) | ||
243 | mask = HT_3BIT_CAP_MASK; | ||
244 | else | ||
245 | mask = HT_5BIT_CAP_MASK; | ||
246 | |||
247 | pos = __pci_find_next_cap_ttl(dev->bus, dev->devfn, pos, | ||
248 | PCI_CAP_ID_HT, &ttl); | ||
249 | while (pos) { | ||
250 | rc = pci_read_config_byte(dev, pos + 3, &cap); | ||
251 | if (rc != PCIBIOS_SUCCESSFUL) | ||
252 | return 0; | ||
253 | |||
254 | if ((cap & mask) == ht_cap) | ||
255 | return pos; | ||
256 | |||
257 | pos = __pci_find_next_cap_ttl(dev->bus, dev->devfn, pos, | ||
258 | PCI_CAP_ID_HT, &ttl); | ||
259 | } | ||
260 | |||
261 | return 0; | ||
262 | } | ||
263 | /** | ||
264 | * pci_find_next_ht_capability - query a device's Hypertransport capabilities | ||
265 | * @dev: PCI device to query | ||
266 | * @pos: Position from which to continue searching | ||
267 | * @ht_cap: Hypertransport capability code | ||
268 | * | ||
269 | * To be used in conjunction with pci_find_ht_capability() to search for | ||
270 | * all capabilities matching @ht_cap. @pos should always be a value returned | ||
271 | * from pci_find_ht_capability(). | ||
272 | * | ||
273 | * NB. To be 100% safe against broken PCI devices, the caller should take | ||
274 | * steps to avoid an infinite loop. | ||
275 | */ | ||
276 | int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int ht_cap) | ||
277 | { | ||
278 | return __pci_find_next_ht_cap(dev, pos + PCI_CAP_LIST_NEXT, ht_cap); | ||
279 | } | ||
280 | EXPORT_SYMBOL_GPL(pci_find_next_ht_capability); | ||
281 | |||
282 | /** | ||
283 | * pci_find_ht_capability - query a device's Hypertransport capabilities | ||
284 | * @dev: PCI device to query | ||
285 | * @ht_cap: Hypertransport capability code | ||
286 | * | ||
287 | * Tell if a device supports a given Hypertransport capability. | ||
288 | * Returns an address within the device's PCI configuration space | ||
289 | * or 0 in case the device does not support the request capability. | ||
290 | * The address points to the PCI capability, of type PCI_CAP_ID_HT, | ||
291 | * which has a Hypertransport capability matching @ht_cap. | ||
292 | */ | ||
293 | int pci_find_ht_capability(struct pci_dev *dev, int ht_cap) | ||
294 | { | ||
295 | int pos; | ||
296 | |||
297 | pos = __pci_bus_find_cap_start(dev->bus, dev->devfn, dev->hdr_type); | ||
298 | if (pos) | ||
299 | pos = __pci_find_next_ht_cap(dev, pos, ht_cap); | ||
300 | |||
301 | return pos; | ||
302 | } | ||
303 | EXPORT_SYMBOL_GPL(pci_find_ht_capability); | ||
304 | |||
217 | /** | 305 | /** |
218 | * pci_find_parent_resource - return resource region of parent bus of given region | 306 | * pci_find_parent_resource - return resource region of parent bus of given region |
219 | * @dev: PCI device structure contains resources to be searched | 307 | * @dev: PCI device structure contains resources to be searched |
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c index b4da7954611e..f17e7ed2b2a5 100644 --- a/drivers/pci/pcie/portdrv_pci.c +++ b/drivers/pci/pcie/portdrv_pci.c | |||
@@ -90,7 +90,7 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev, | |||
90 | return -ENODEV; | 90 | return -ENODEV; |
91 | 91 | ||
92 | pci_set_master(dev); | 92 | pci_set_master(dev); |
93 | if (!dev->irq) { | 93 | if (!dev->irq && dev->pin) { |
94 | printk(KERN_WARNING | 94 | printk(KERN_WARNING |
95 | "%s->Dev[%04x:%04x] has invalid IRQ. Check vendor BIOS\n", | 95 | "%s->Dev[%04x:%04x] has invalid IRQ. Check vendor BIOS\n", |
96 | __FUNCTION__, dev->device, dev->vendor); | 96 | __FUNCTION__, dev->device, dev->vendor); |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 6a3c1e728900..1ae9c3f50ffa 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -649,6 +649,9 @@ static void pci_read_irq(struct pci_dev *dev) | |||
649 | * Returns 0 on success and -1 if unknown type of device (not normal, bridge | 649 | * Returns 0 on success and -1 if unknown type of device (not normal, bridge |
650 | * or CardBus). | 650 | * or CardBus). |
651 | */ | 651 | */ |
652 | |||
653 | #define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED) | ||
654 | |||
652 | static int pci_setup_device(struct pci_dev * dev) | 655 | static int pci_setup_device(struct pci_dev * dev) |
653 | { | 656 | { |
654 | u32 class; | 657 | u32 class; |
@@ -692,18 +695,18 @@ static int pci_setup_device(struct pci_dev * dev) | |||
692 | if ((progif & 1) == 0) { | 695 | if ((progif & 1) == 0) { |
693 | dev->resource[0].start = 0x1F0; | 696 | dev->resource[0].start = 0x1F0; |
694 | dev->resource[0].end = 0x1F7; | 697 | dev->resource[0].end = 0x1F7; |
695 | dev->resource[0].flags = IORESOURCE_IO; | 698 | dev->resource[0].flags = LEGACY_IO_RESOURCE; |
696 | dev->resource[1].start = 0x3F6; | 699 | dev->resource[1].start = 0x3F6; |
697 | dev->resource[1].end = 0x3F6; | 700 | dev->resource[1].end = 0x3F6; |
698 | dev->resource[1].flags = IORESOURCE_IO; | 701 | dev->resource[1].flags = LEGACY_IO_RESOURCE; |
699 | } | 702 | } |
700 | if ((progif & 4) == 0) { | 703 | if ((progif & 4) == 0) { |
701 | dev->resource[2].start = 0x170; | 704 | dev->resource[2].start = 0x170; |
702 | dev->resource[2].end = 0x177; | 705 | dev->resource[2].end = 0x177; |
703 | dev->resource[2].flags = IORESOURCE_IO; | 706 | dev->resource[2].flags = LEGACY_IO_RESOURCE; |
704 | dev->resource[3].start = 0x376; | 707 | dev->resource[3].start = 0x376; |
705 | dev->resource[3].end = 0x376; | 708 | dev->resource[3].end = 0x376; |
706 | dev->resource[3].flags = IORESOURCE_IO; | 709 | dev->resource[3].flags = LEGACY_IO_RESOURCE; |
707 | } | 710 | } |
708 | } | 711 | } |
709 | break; | 712 | break; |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 9ca9b9bf6160..8f0322d6f3bf 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -36,7 +36,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR_BRID | |||
36 | 36 | ||
37 | /* Deal with broken BIOS'es that neglect to enable passive release, | 37 | /* Deal with broken BIOS'es that neglect to enable passive release, |
38 | which can cause problems in combination with the 82441FX/PPro MTRRs */ | 38 | which can cause problems in combination with the 82441FX/PPro MTRRs */ |
39 | static void __devinit quirk_passive_release(struct pci_dev *dev) | 39 | static void quirk_passive_release(struct pci_dev *dev) |
40 | { | 40 | { |
41 | struct pci_dev *d = NULL; | 41 | struct pci_dev *d = NULL; |
42 | unsigned char dlc; | 42 | unsigned char dlc; |
@@ -53,6 +53,7 @@ static void __devinit quirk_passive_release(struct pci_dev *dev) | |||
53 | } | 53 | } |
54 | } | 54 | } |
55 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release ); | 55 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release ); |
56 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82441, quirk_passive_release ); | ||
56 | 57 | ||
57 | /* The VIA VP2/VP3/MVP3 seem to have some 'features'. There may be a workaround | 58 | /* The VIA VP2/VP3/MVP3 seem to have some 'features'. There may be a workaround |
58 | but VIA don't answer queries. If you happen to have good contacts at VIA | 59 | but VIA don't answer queries. If you happen to have good contacts at VIA |
@@ -134,7 +135,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82439TX, quir | |||
134 | * Updated based on further information from the site and also on | 135 | * Updated based on further information from the site and also on |
135 | * information provided by VIA | 136 | * information provided by VIA |
136 | */ | 137 | */ |
137 | static void __devinit quirk_vialatency(struct pci_dev *dev) | 138 | static void quirk_vialatency(struct pci_dev *dev) |
138 | { | 139 | { |
139 | struct pci_dev *p; | 140 | struct pci_dev *p; |
140 | u8 rev; | 141 | u8 rev; |
@@ -185,6 +186,10 @@ exit: | |||
185 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency ); | 186 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency ); |
186 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency ); | 187 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency ); |
187 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, quirk_vialatency ); | 188 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, quirk_vialatency ); |
189 | /* Must restore this on a resume from RAM */ | ||
190 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, quirk_vialatency ); | ||
191 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8371_1, quirk_vialatency ); | ||
192 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8361, quirk_vialatency ); | ||
188 | 193 | ||
189 | /* | 194 | /* |
190 | * VIA Apollo VP3 needs ETBF on BT848/878 | 195 | * VIA Apollo VP3 needs ETBF on BT848/878 |
@@ -532,7 +537,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235 | |||
532 | * TODO: When we have device-specific interrupt routers, | 537 | * TODO: When we have device-specific interrupt routers, |
533 | * this code will go away from quirks. | 538 | * this code will go away from quirks. |
534 | */ | 539 | */ |
535 | static void __devinit quirk_via_ioapic(struct pci_dev *dev) | 540 | static void quirk_via_ioapic(struct pci_dev *dev) |
536 | { | 541 | { |
537 | u8 tmp; | 542 | u8 tmp; |
538 | 543 | ||
@@ -548,6 +553,7 @@ static void __devinit quirk_via_ioapic(struct pci_dev *dev) | |||
548 | pci_write_config_byte (dev, 0x58, tmp); | 553 | pci_write_config_byte (dev, 0x58, tmp); |
549 | } | 554 | } |
550 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic ); | 555 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic ); |
556 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic ); | ||
551 | 557 | ||
552 | /* | 558 | /* |
553 | * VIA 8237: Some BIOSs don't set the 'Bypass APIC De-Assert Message' Bit. | 559 | * VIA 8237: Some BIOSs don't set the 'Bypass APIC De-Assert Message' Bit. |
@@ -555,7 +561,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_i | |||
555 | * Set this bit to get rid of cycle wastage. | 561 | * Set this bit to get rid of cycle wastage. |
556 | * Otherwise uncritical. | 562 | * Otherwise uncritical. |
557 | */ | 563 | */ |
558 | static void __devinit quirk_via_vt8237_bypass_apic_deassert(struct pci_dev *dev) | 564 | static void quirk_via_vt8237_bypass_apic_deassert(struct pci_dev *dev) |
559 | { | 565 | { |
560 | u8 misc_control2; | 566 | u8 misc_control2; |
561 | #define BYPASS_APIC_DEASSERT 8 | 567 | #define BYPASS_APIC_DEASSERT 8 |
@@ -567,6 +573,7 @@ static void __devinit quirk_via_vt8237_bypass_apic_deassert(struct pci_dev *dev) | |||
567 | } | 573 | } |
568 | } | 574 | } |
569 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, quirk_via_vt8237_bypass_apic_deassert); | 575 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, quirk_via_vt8237_bypass_apic_deassert); |
576 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, quirk_via_vt8237_bypass_apic_deassert); | ||
570 | 577 | ||
571 | /* | 578 | /* |
572 | * The AMD io apic can hang the box when an apic irq is masked. | 579 | * The AMD io apic can hang the box when an apic irq is masked. |
@@ -600,7 +607,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_SI, PCI_ANY_ID, quirk_ioapic_rmw ); | |||
600 | #define AMD8131_revB0 0x11 | 607 | #define AMD8131_revB0 0x11 |
601 | #define AMD8131_MISC 0x40 | 608 | #define AMD8131_MISC 0x40 |
602 | #define AMD8131_NIOAMODE_BIT 0 | 609 | #define AMD8131_NIOAMODE_BIT 0 |
603 | static void __init quirk_amd_8131_ioapic(struct pci_dev *dev) | 610 | static void quirk_amd_8131_ioapic(struct pci_dev *dev) |
604 | { | 611 | { |
605 | unsigned char revid, tmp; | 612 | unsigned char revid, tmp; |
606 | 613 | ||
@@ -616,6 +623,7 @@ static void __init quirk_amd_8131_ioapic(struct pci_dev *dev) | |||
616 | } | 623 | } |
617 | } | 624 | } |
618 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic); | 625 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic); |
626 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_amd_8131_ioapic); | ||
619 | #endif /* CONFIG_X86_IO_APIC */ | 627 | #endif /* CONFIG_X86_IO_APIC */ |
620 | 628 | ||
621 | 629 | ||
@@ -641,65 +649,84 @@ static void __devinit quirk_via_acpi(struct pci_dev *d) | |||
641 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi ); | 649 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_via_acpi ); |
642 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi ); | 650 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_via_acpi ); |
643 | 651 | ||
644 | /* | ||
645 | * Via 686A/B: The PCI_INTERRUPT_LINE register for the on-chip | ||
646 | * devices, USB0/1, AC97, MC97, and ACPI, has an unusual feature: | ||
647 | * when written, it makes an internal connection to the PIC. | ||
648 | * For these devices, this register is defined to be 4 bits wide. | ||
649 | * Normally this is fine. However for IO-APIC motherboards, or | ||
650 | * non-x86 architectures (yes Via exists on PPC among other places), | ||
651 | * we must mask the PCI_INTERRUPT_LINE value versus 0xf to get | ||
652 | * interrupts delivered properly. | ||
653 | * | ||
654 | * Some of the on-chip devices are actually '586 devices' so they are | ||
655 | * listed here. | ||
656 | */ | ||
657 | |||
658 | static int via_irq_fixup_needed = -1; | ||
659 | 652 | ||
660 | /* | 653 | /* |
661 | * As some VIA hardware is available in PCI-card form, we need to restrict | 654 | * VIA bridges which have VLink |
662 | * this quirk to VIA PCI hardware built onto VIA-based motherboards only. | ||
663 | * We try to locate a VIA southbridge before deciding whether the quirk | ||
664 | * should be applied. | ||
665 | */ | 655 | */ |
666 | static const struct pci_device_id via_irq_fixup_tbl[] = { | 656 | |
667 | { | 657 | static const struct pci_device_id via_vlink_fixup_tbl[] = { |
668 | .vendor = PCI_VENDOR_ID_VIA, | 658 | /* Internal devices need IRQ line routing, pre VLink */ |
669 | .device = PCI_ANY_ID, | 659 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_82C686), 0 }, |
670 | .subvendor = PCI_ANY_ID, | 660 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8231), 17 }, |
671 | .subdevice = PCI_ANY_ID, | 661 | /* Devices with VLink */ |
672 | .class = PCI_CLASS_BRIDGE_ISA << 8, | 662 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8233_0), 17}, |
673 | .class_mask = 0xffff00, | 663 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8233A), 17 }, |
674 | }, | 664 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8233C_0), 17 }, |
665 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8235), 16 }, | ||
666 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8237), 15 }, | ||
667 | { PCI_VDEVICE(VIA, PCI_DEVICE_ID_VIA_8237A), 15 }, | ||
675 | { 0, }, | 668 | { 0, }, |
676 | }; | 669 | }; |
677 | 670 | ||
678 | static void quirk_via_irq(struct pci_dev *dev) | 671 | /** |
672 | * quirk_via_vlink - VIA VLink IRQ number update | ||
673 | * @dev: PCI device | ||
674 | * | ||
675 | * If the device we are dealing with is on a PIC IRQ we need to | ||
676 | * ensure that the IRQ line register which usually is not relevant | ||
677 | * for PCI cards, is actually written so that interrupts get sent | ||
678 | * to the right place | ||
679 | */ | ||
680 | |||
681 | static void quirk_via_vlink(struct pci_dev *dev) | ||
679 | { | 682 | { |
683 | const struct pci_device_id *via_vlink_fixup; | ||
684 | static int dev_lo = -1, dev_hi = 18; | ||
680 | u8 irq, new_irq; | 685 | u8 irq, new_irq; |
681 | 686 | ||
682 | if (via_irq_fixup_needed == -1) | 687 | /* Check if we have VLink and cache the result */ |
683 | via_irq_fixup_needed = pci_dev_present(via_irq_fixup_tbl); | ||
684 | 688 | ||
685 | if (!via_irq_fixup_needed) | 689 | /* Checked already - no */ |
690 | if (dev_lo == -2) | ||
686 | return; | 691 | return; |
687 | 692 | ||
693 | /* Not checked - see what bridge we have and find the device | ||
694 | ranges */ | ||
695 | |||
696 | if (dev_lo == -1) { | ||
697 | via_vlink_fixup = pci_find_present(via_vlink_fixup_tbl); | ||
698 | if (via_vlink_fixup == NULL) { | ||
699 | dev_lo = -2; | ||
700 | return; | ||
701 | } | ||
702 | dev_lo = via_vlink_fixup->driver_data; | ||
703 | /* 82C686 is special - 0/0 */ | ||
704 | if (dev_lo == 0) | ||
705 | dev_hi = 0; | ||
706 | } | ||
688 | new_irq = dev->irq; | 707 | new_irq = dev->irq; |
689 | 708 | ||
690 | /* Don't quirk interrupts outside the legacy IRQ range */ | 709 | /* Don't quirk interrupts outside the legacy IRQ range */ |
691 | if (!new_irq || new_irq > 15) | 710 | if (!new_irq || new_irq > 15) |
692 | return; | 711 | return; |
693 | 712 | ||
713 | /* Internal device ? */ | ||
714 | if (dev->bus->number != 0 || PCI_SLOT(dev->devfn) > dev_hi || | ||
715 | PCI_SLOT(dev->devfn) < dev_lo) | ||
716 | return; | ||
717 | |||
718 | /* This is an internal VLink device on a PIC interrupt. The BIOS | ||
719 | ought to have set this but may not have, so we redo it */ | ||
720 | |||
694 | pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); | 721 | pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq); |
695 | if (new_irq != irq) { | 722 | if (new_irq != irq) { |
696 | printk(KERN_INFO "PCI: VIA IRQ fixup for %s, from %d to %d\n", | 723 | printk(KERN_INFO "PCI: VIA VLink IRQ fixup for %s, from %d to %d\n", |
697 | pci_name(dev), irq, new_irq); | 724 | pci_name(dev), irq, new_irq); |
698 | udelay(15); /* unknown if delay really needed */ | 725 | udelay(15); /* unknown if delay really needed */ |
699 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); | 726 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, new_irq); |
700 | } | 727 | } |
701 | } | 728 | } |
702 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_irq); | 729 | DECLARE_PCI_FIXUP_ENABLE(PCI_VENDOR_ID_VIA, PCI_ANY_ID, quirk_via_vlink); |
703 | 730 | ||
704 | /* | 731 | /* |
705 | * VIA VT82C598 has its device ID settable and many BIOSes | 732 | * VIA VT82C598 has its device ID settable and many BIOSes |
@@ -720,13 +747,14 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C597_0, quirk_vt | |||
720 | * do this even if the Linux CardBus driver is not loaded, because | 747 | * do this even if the Linux CardBus driver is not loaded, because |
721 | * the Linux i82365 driver does not (and should not) handle CardBus. | 748 | * the Linux i82365 driver does not (and should not) handle CardBus. |
722 | */ | 749 | */ |
723 | static void __devinit quirk_cardbus_legacy(struct pci_dev *dev) | 750 | static void quirk_cardbus_legacy(struct pci_dev *dev) |
724 | { | 751 | { |
725 | if ((PCI_CLASS_BRIDGE_CARDBUS << 8) ^ dev->class) | 752 | if ((PCI_CLASS_BRIDGE_CARDBUS << 8) ^ dev->class) |
726 | return; | 753 | return; |
727 | pci_write_config_dword(dev, PCI_CB_LEGACY_MODE_BASE, 0); | 754 | pci_write_config_dword(dev, PCI_CB_LEGACY_MODE_BASE, 0); |
728 | } | 755 | } |
729 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_cardbus_legacy); | 756 | DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_cardbus_legacy); |
757 | DECLARE_PCI_FIXUP_RESUME(PCI_ANY_ID, PCI_ANY_ID, quirk_cardbus_legacy); | ||
730 | 758 | ||
731 | /* | 759 | /* |
732 | * Following the PCI ordering rules is optional on the AMD762. I'm not | 760 | * Following the PCI ordering rules is optional on the AMD762. I'm not |
@@ -735,7 +763,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_cardbus_legacy); | |||
735 | * To be fair to AMD, it follows the spec by default, its BIOS people | 763 | * To be fair to AMD, it follows the spec by default, its BIOS people |
736 | * who turn it off! | 764 | * who turn it off! |
737 | */ | 765 | */ |
738 | static void __devinit quirk_amd_ordering(struct pci_dev *dev) | 766 | static void quirk_amd_ordering(struct pci_dev *dev) |
739 | { | 767 | { |
740 | u32 pcic; | 768 | u32 pcic; |
741 | pci_read_config_dword(dev, 0x4C, &pcic); | 769 | pci_read_config_dword(dev, 0x4C, &pcic); |
@@ -749,6 +777,7 @@ static void __devinit quirk_amd_ordering(struct pci_dev *dev) | |||
749 | } | 777 | } |
750 | } | 778 | } |
751 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_700C, quirk_amd_ordering ); | 779 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_700C, quirk_amd_ordering ); |
780 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_FE_GATE_700C, quirk_amd_ordering ); | ||
752 | 781 | ||
753 | /* | 782 | /* |
754 | * DreamWorks provided workaround for Dunord I-3000 problem | 783 | * DreamWorks provided workaround for Dunord I-3000 problem |
@@ -784,7 +813,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TOSHIBA, 0x605, quirk_transparent_bridge | |||
784 | * datasheets found at http://www.national.com/ds/GX for info on what | 813 | * datasheets found at http://www.national.com/ds/GX for info on what |
785 | * these bits do. <christer@weinigel.se> | 814 | * these bits do. <christer@weinigel.se> |
786 | */ | 815 | */ |
787 | static void __init quirk_mediagx_master(struct pci_dev *dev) | 816 | static void quirk_mediagx_master(struct pci_dev *dev) |
788 | { | 817 | { |
789 | u8 reg; | 818 | u8 reg; |
790 | pci_read_config_byte(dev, 0x41, ®); | 819 | pci_read_config_byte(dev, 0x41, ®); |
@@ -795,13 +824,14 @@ static void __init quirk_mediagx_master(struct pci_dev *dev) | |||
795 | } | 824 | } |
796 | } | 825 | } |
797 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_PCI_MASTER, quirk_mediagx_master ); | 826 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_PCI_MASTER, quirk_mediagx_master ); |
827 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_PCI_MASTER, quirk_mediagx_master ); | ||
798 | 828 | ||
799 | /* | 829 | /* |
800 | * Ensure C0 rev restreaming is off. This is normally done by | 830 | * Ensure C0 rev restreaming is off. This is normally done by |
801 | * the BIOS but in the odd case it is not the results are corruption | 831 | * the BIOS but in the odd case it is not the results are corruption |
802 | * hence the presence of a Linux check | 832 | * hence the presence of a Linux check |
803 | */ | 833 | */ |
804 | static void __init quirk_disable_pxb(struct pci_dev *pdev) | 834 | static void quirk_disable_pxb(struct pci_dev *pdev) |
805 | { | 835 | { |
806 | u16 config; | 836 | u16 config; |
807 | u8 rev; | 837 | u8 rev; |
@@ -817,7 +847,25 @@ static void __init quirk_disable_pxb(struct pci_dev *pdev) | |||
817 | } | 847 | } |
818 | } | 848 | } |
819 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb ); | 849 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb ); |
850 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb ); | ||
851 | |||
852 | |||
853 | static void __devinit quirk_sb600_sata(struct pci_dev *pdev) | ||
854 | { | ||
855 | /* set sb600 sata to ahci mode */ | ||
856 | if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) { | ||
857 | u8 tmp; | ||
820 | 858 | ||
859 | pci_read_config_byte(pdev, 0x40, &tmp); | ||
860 | pci_write_config_byte(pdev, 0x40, tmp|1); | ||
861 | pci_write_config_byte(pdev, 0x9, 1); | ||
862 | pci_write_config_byte(pdev, 0xa, 6); | ||
863 | pci_write_config_byte(pdev, 0x40, tmp); | ||
864 | |||
865 | pdev->class = 0x010601; | ||
866 | } | ||
867 | } | ||
868 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_sb600_sata); | ||
821 | 869 | ||
822 | /* | 870 | /* |
823 | * Serverworks CSB5 IDE does not fully support native mode | 871 | * Serverworks CSB5 IDE does not fully support native mode |
@@ -874,7 +922,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, quirk_e | |||
874 | * runs everywhere at present we suppress the printk output in most | 922 | * runs everywhere at present we suppress the printk output in most |
875 | * irrelevant cases. | 923 | * irrelevant cases. |
876 | */ | 924 | */ |
877 | static void __init k8t_sound_hostbridge(struct pci_dev *dev) | 925 | static void k8t_sound_hostbridge(struct pci_dev *dev) |
878 | { | 926 | { |
879 | unsigned char val; | 927 | unsigned char val; |
880 | 928 | ||
@@ -893,8 +941,8 @@ static void __init k8t_sound_hostbridge(struct pci_dev *dev) | |||
893 | } | 941 | } |
894 | } | 942 | } |
895 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge); | 943 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge); |
944 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_hostbridge); | ||
896 | 945 | ||
897 | #ifndef CONFIG_ACPI_SLEEP | ||
898 | /* | 946 | /* |
899 | * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge | 947 | * On ASUS P4B boards, the SMBus PCI Device within the ICH2/4 southbridge |
900 | * is not activated. The myth is that Asus said that they do not want the | 948 | * is not activated. The myth is that Asus said that they do not want the |
@@ -906,10 +954,6 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_ho | |||
906 | * bridge. Unfortunately, this device has no subvendor/subdevice ID. So it | 954 | * bridge. Unfortunately, this device has no subvendor/subdevice ID. So it |
907 | * becomes necessary to do this tweak in two steps -- I've chosen the Host | 955 | * becomes necessary to do this tweak in two steps -- I've chosen the Host |
908 | * bridge as trigger. | 956 | * bridge as trigger. |
909 | * | ||
910 | * Actually, leaving it unhidden and not redoing the quirk over suspend2ram | ||
911 | * will cause thermal management to break down, and causing machine to | ||
912 | * overheat. | ||
913 | */ | 957 | */ |
914 | static int __initdata asus_hides_smbus; | 958 | static int __initdata asus_hides_smbus; |
915 | 959 | ||
@@ -1019,7 +1063,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855PM_HB, as | |||
1019 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855GM_HB, asus_hides_smbus_hostbridge ); | 1063 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82855GM_HB, asus_hides_smbus_hostbridge ); |
1020 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82915GM_HB, asus_hides_smbus_hostbridge ); | 1064 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82915GM_HB, asus_hides_smbus_hostbridge ); |
1021 | 1065 | ||
1022 | static void __init asus_hides_smbus_lpc(struct pci_dev *dev) | 1066 | static void asus_hides_smbus_lpc(struct pci_dev *dev) |
1023 | { | 1067 | { |
1024 | u16 val; | 1068 | u16 val; |
1025 | 1069 | ||
@@ -1042,8 +1086,14 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, asu | |||
1042 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, asus_hides_smbus_lpc ); | 1086 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, asus_hides_smbus_lpc ); |
1043 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc ); | 1087 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc ); |
1044 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc ); | 1088 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc ); |
1089 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_0, asus_hides_smbus_lpc ); | ||
1090 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801BA_0, asus_hides_smbus_lpc ); | ||
1091 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_0, asus_hides_smbus_lpc ); | ||
1092 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801CA_12, asus_hides_smbus_lpc ); | ||
1093 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801DB_12, asus_hides_smbus_lpc ); | ||
1094 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801EB_0, asus_hides_smbus_lpc ); | ||
1045 | 1095 | ||
1046 | static void __init asus_hides_smbus_lpc_ich6(struct pci_dev *dev) | 1096 | static void asus_hides_smbus_lpc_ich6(struct pci_dev *dev) |
1047 | { | 1097 | { |
1048 | u32 val, rcba; | 1098 | u32 val, rcba; |
1049 | void __iomem *base; | 1099 | void __iomem *base; |
@@ -1059,13 +1109,12 @@ static void __init asus_hides_smbus_lpc_ich6(struct pci_dev *dev) | |||
1059 | printk(KERN_INFO "PCI: Enabled ICH6/i801 SMBus device\n"); | 1109 | printk(KERN_INFO "PCI: Enabled ICH6/i801 SMBus device\n"); |
1060 | } | 1110 | } |
1061 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_hides_smbus_lpc_ich6 ); | 1111 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_hides_smbus_lpc_ich6 ); |
1062 | 1112 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_1, asus_hides_smbus_lpc_ich6 ); | |
1063 | #endif | ||
1064 | 1113 | ||
1065 | /* | 1114 | /* |
1066 | * SiS 96x south bridge: BIOS typically hides SMBus device... | 1115 | * SiS 96x south bridge: BIOS typically hides SMBus device... |
1067 | */ | 1116 | */ |
1068 | static void __init quirk_sis_96x_smbus(struct pci_dev *dev) | 1117 | static void quirk_sis_96x_smbus(struct pci_dev *dev) |
1069 | { | 1118 | { |
1070 | u8 val = 0; | 1119 | u8 val = 0; |
1071 | printk(KERN_INFO "Enabling SiS 96x SMBus.\n"); | 1120 | printk(KERN_INFO "Enabling SiS 96x SMBus.\n"); |
@@ -1086,7 +1135,7 @@ static int __devinitdata sis_96x_compatible = 0; | |||
1086 | 1135 | ||
1087 | #define SIS_DETECT_REGISTER 0x40 | 1136 | #define SIS_DETECT_REGISTER 0x40 |
1088 | 1137 | ||
1089 | static void __init quirk_sis_503(struct pci_dev *dev) | 1138 | static void quirk_sis_503(struct pci_dev *dev) |
1090 | { | 1139 | { |
1091 | u8 reg; | 1140 | u8 reg; |
1092 | u16 devid; | 1141 | u16 devid; |
@@ -1122,13 +1171,14 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_651, quirk_sis_96x_ | |||
1122 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, quirk_sis_96x_compatible ); | 1171 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_735, quirk_sis_96x_compatible ); |
1123 | 1172 | ||
1124 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, quirk_sis_503 ); | 1173 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, quirk_sis_503 ); |
1174 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_503, quirk_sis_503 ); | ||
1125 | /* | 1175 | /* |
1126 | * On ASUS A8V and A8V Deluxe boards, the onboard AC97 audio controller | 1176 | * On ASUS A8V and A8V Deluxe boards, the onboard AC97 audio controller |
1127 | * and MC97 modem controller are disabled when a second PCI soundcard is | 1177 | * and MC97 modem controller are disabled when a second PCI soundcard is |
1128 | * present. This patch, tweaking the VT8237 ISA bridge, enables them. | 1178 | * present. This patch, tweaking the VT8237 ISA bridge, enables them. |
1129 | * -- bjd | 1179 | * -- bjd |
1130 | */ | 1180 | */ |
1131 | static void __init asus_hides_ac97_lpc(struct pci_dev *dev) | 1181 | static void asus_hides_ac97_lpc(struct pci_dev *dev) |
1132 | { | 1182 | { |
1133 | u8 val; | 1183 | u8 val; |
1134 | int asus_hides_ac97 = 0; | 1184 | int asus_hides_ac97 = 0; |
@@ -1159,6 +1209,14 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_962, quirk_sis_96x_ | |||
1159 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_963, quirk_sis_96x_smbus ); | 1209 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_963, quirk_sis_96x_smbus ); |
1160 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_LPC, quirk_sis_96x_smbus ); | 1210 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_LPC, quirk_sis_96x_smbus ); |
1161 | 1211 | ||
1212 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, asus_hides_ac97_lpc ); | ||
1213 | |||
1214 | |||
1215 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_961, quirk_sis_96x_smbus ); | ||
1216 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_962, quirk_sis_96x_smbus ); | ||
1217 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_963, quirk_sis_96x_smbus ); | ||
1218 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_LPC, quirk_sis_96x_smbus ); | ||
1219 | |||
1162 | #if defined(CONFIG_ATA) || defined(CONFIG_ATA_MODULE) | 1220 | #if defined(CONFIG_ATA) || defined(CONFIG_ATA_MODULE) |
1163 | 1221 | ||
1164 | /* | 1222 | /* |
@@ -1167,7 +1225,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_LPC, quirk_sis_96x_ | |||
1167 | * the PCI scanning. | 1225 | * the PCI scanning. |
1168 | */ | 1226 | */ |
1169 | 1227 | ||
1170 | static void __devinit quirk_jmicron_dualfn(struct pci_dev *pdev) | 1228 | static void quirk_jmicron_dualfn(struct pci_dev *pdev) |
1171 | { | 1229 | { |
1172 | u32 conf; | 1230 | u32 conf; |
1173 | u8 hdr; | 1231 | u8 hdr; |
@@ -1205,6 +1263,7 @@ static void __devinit quirk_jmicron_dualfn(struct pci_dev *pdev) | |||
1205 | } | 1263 | } |
1206 | 1264 | ||
1207 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, quirk_jmicron_dualfn); | 1265 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, quirk_jmicron_dualfn); |
1266 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, quirk_jmicron_dualfn); | ||
1208 | 1267 | ||
1209 | #endif | 1268 | #endif |
1210 | 1269 | ||
@@ -1532,6 +1591,8 @@ extern struct pci_fixup __start_pci_fixups_final[]; | |||
1532 | extern struct pci_fixup __end_pci_fixups_final[]; | 1591 | extern struct pci_fixup __end_pci_fixups_final[]; |
1533 | extern struct pci_fixup __start_pci_fixups_enable[]; | 1592 | extern struct pci_fixup __start_pci_fixups_enable[]; |
1534 | extern struct pci_fixup __end_pci_fixups_enable[]; | 1593 | extern struct pci_fixup __end_pci_fixups_enable[]; |
1594 | extern struct pci_fixup __start_pci_fixups_resume[]; | ||
1595 | extern struct pci_fixup __end_pci_fixups_resume[]; | ||
1535 | 1596 | ||
1536 | 1597 | ||
1537 | void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev) | 1598 | void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev) |
@@ -1559,6 +1620,11 @@ void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev) | |||
1559 | end = __end_pci_fixups_enable; | 1620 | end = __end_pci_fixups_enable; |
1560 | break; | 1621 | break; |
1561 | 1622 | ||
1623 | case pci_fixup_resume: | ||
1624 | start = __start_pci_fixups_resume; | ||
1625 | end = __end_pci_fixups_resume; | ||
1626 | break; | ||
1627 | |||
1562 | default: | 1628 | default: |
1563 | /* stupid compiler warning, you would think with an enum... */ | 1629 | /* stupid compiler warning, you would think with an enum... */ |
1564 | return; | 1630 | return; |
@@ -1596,7 +1662,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1460, quirk_p64h2_1k_io); | |||
1596 | * Force it to be linked by setting the corresponding control bit in the | 1662 | * Force it to be linked by setting the corresponding control bit in the |
1597 | * config space. | 1663 | * config space. |
1598 | */ | 1664 | */ |
1599 | static void __devinit quirk_nvidia_ck804_pcie_aer_ext_cap(struct pci_dev *dev) | 1665 | static void quirk_nvidia_ck804_pcie_aer_ext_cap(struct pci_dev *dev) |
1600 | { | 1666 | { |
1601 | uint8_t b; | 1667 | uint8_t b; |
1602 | if (pci_read_config_byte(dev, 0xf41, &b) == 0) { | 1668 | if (pci_read_config_byte(dev, 0xf41, &b) == 0) { |
@@ -1610,6 +1676,8 @@ static void __devinit quirk_nvidia_ck804_pcie_aer_ext_cap(struct pci_dev *dev) | |||
1610 | } | 1676 | } |
1611 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, | 1677 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, |
1612 | quirk_nvidia_ck804_pcie_aer_ext_cap); | 1678 | quirk_nvidia_ck804_pcie_aer_ext_cap); |
1679 | DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE, | ||
1680 | quirk_nvidia_ck804_pcie_aer_ext_cap); | ||
1613 | 1681 | ||
1614 | #ifdef CONFIG_PCI_MSI | 1682 | #ifdef CONFIG_PCI_MSI |
1615 | /* To disable MSI globally */ | 1683 | /* To disable MSI globally */ |
@@ -1644,19 +1712,23 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8131_BRIDGE, quirk_ | |||
1644 | * return 1 if a HT MSI capability is found and enabled */ | 1712 | * return 1 if a HT MSI capability is found and enabled */ |
1645 | static int __devinit msi_ht_cap_enabled(struct pci_dev *dev) | 1713 | static int __devinit msi_ht_cap_enabled(struct pci_dev *dev) |
1646 | { | 1714 | { |
1647 | u8 pos; | 1715 | int pos, ttl = 48; |
1648 | int ttl; | 1716 | |
1649 | for (pos = pci_find_capability(dev, PCI_CAP_ID_HT), ttl = 48; | 1717 | pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING); |
1650 | pos && ttl; | 1718 | while (pos && ttl--) { |
1651 | pos = pci_find_next_capability(dev, pos, PCI_CAP_ID_HT), ttl--) { | 1719 | u8 flags; |
1652 | u32 cap_hdr; | 1720 | |
1653 | /* MSI mapping section according to Hypertransport spec */ | 1721 | if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS, |
1654 | if (pci_read_config_dword(dev, pos, &cap_hdr) == 0 | 1722 | &flags) == 0) |
1655 | && (cap_hdr & 0xf8000000) == 0xa8000000 /* MSI mapping */) { | 1723 | { |
1656 | printk(KERN_INFO "PCI: Found HT MSI mapping on %s with capability %s\n", | 1724 | printk(KERN_INFO "PCI: Found %s HT MSI Mapping on %s\n", |
1657 | pci_name(dev), cap_hdr & 0x10000 ? "enabled" : "disabled"); | 1725 | flags & HT_MSI_FLAGS_ENABLE ? |
1658 | return (cap_hdr & 0x10000) != 0; /* MSI mapping cap enabled */ | 1726 | "enabled" : "disabled", pci_name(dev)); |
1727 | return (flags & HT_MSI_FLAGS_ENABLE) != 0; | ||
1659 | } | 1728 | } |
1729 | |||
1730 | pos = pci_find_next_ht_capability(dev, pos, | ||
1731 | HT_CAPTYPE_MSI_MAPPING); | ||
1660 | } | 1732 | } |
1661 | return 0; | 1733 | return 0; |
1662 | } | 1734 | } |
@@ -1688,8 +1760,9 @@ static void __devinit quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev) | |||
1688 | * a single one having MSI is enough to be sure that MSI are supported. | 1760 | * a single one having MSI is enough to be sure that MSI are supported. |
1689 | */ | 1761 | */ |
1690 | pdev = pci_get_slot(dev->bus, 0); | 1762 | pdev = pci_get_slot(dev->bus, 0); |
1691 | if (dev->subordinate && !msi_ht_cap_enabled(dev) | 1763 | if (!pdev) |
1692 | && !msi_ht_cap_enabled(pdev)) { | 1764 | return; |
1765 | if (!msi_ht_cap_enabled(dev) && !msi_ht_cap_enabled(pdev)) { | ||
1693 | printk(KERN_WARNING "PCI: MSI quirk detected. " | 1766 | printk(KERN_WARNING "PCI: MSI quirk detected. " |
1694 | "MSI disabled on chipset %s.\n", | 1767 | "MSI disabled on chipset %s.\n", |
1695 | pci_name(dev)); | 1768 | pci_name(dev)); |
diff --git a/drivers/pci/search.c b/drivers/pci/search.c index 2f13eba5d5ae..45f2b20ef513 100644 --- a/drivers/pci/search.c +++ b/drivers/pci/search.c | |||
@@ -413,6 +413,24 @@ exit: | |||
413 | return dev; | 413 | return dev; |
414 | } | 414 | } |
415 | 415 | ||
416 | const struct pci_device_id *pci_find_present(const struct pci_device_id *ids) | ||
417 | { | ||
418 | struct pci_dev *dev; | ||
419 | const struct pci_device_id *found = NULL; | ||
420 | |||
421 | WARN_ON(in_interrupt()); | ||
422 | down_read(&pci_bus_sem); | ||
423 | while (ids->vendor || ids->subvendor || ids->class_mask) { | ||
424 | list_for_each_entry(dev, &pci_devices, global_list) { | ||
425 | if ((found = pci_match_one_device(ids, dev)) != NULL) | ||
426 | break; | ||
427 | } | ||
428 | ids++; | ||
429 | } | ||
430 | up_read(&pci_bus_sem); | ||
431 | return found; | ||
432 | } | ||
433 | |||
416 | /** | 434 | /** |
417 | * pci_dev_present - Returns 1 if device matching the device list is present, 0 if not. | 435 | * pci_dev_present - Returns 1 if device matching the device list is present, 0 if not. |
418 | * @ids: A pointer to a null terminated list of struct pci_device_id structures | 436 | * @ids: A pointer to a null terminated list of struct pci_device_id structures |
@@ -426,25 +444,11 @@ exit: | |||
426 | */ | 444 | */ |
427 | int pci_dev_present(const struct pci_device_id *ids) | 445 | int pci_dev_present(const struct pci_device_id *ids) |
428 | { | 446 | { |
429 | struct pci_dev *dev; | 447 | return pci_find_present(ids) == NULL ? 0 : 1; |
430 | int found = 0; | ||
431 | |||
432 | WARN_ON(in_interrupt()); | ||
433 | down_read(&pci_bus_sem); | ||
434 | while (ids->vendor || ids->subvendor || ids->class_mask) { | ||
435 | list_for_each_entry(dev, &pci_devices, global_list) { | ||
436 | if (pci_match_one_device(ids, dev)) { | ||
437 | found = 1; | ||
438 | goto exit; | ||
439 | } | ||
440 | } | ||
441 | ids++; | ||
442 | } | ||
443 | exit: | ||
444 | up_read(&pci_bus_sem); | ||
445 | return found; | ||
446 | } | 448 | } |
449 | |||
447 | EXPORT_SYMBOL(pci_dev_present); | 450 | EXPORT_SYMBOL(pci_dev_present); |
451 | EXPORT_SYMBOL(pci_find_present); | ||
448 | 452 | ||
449 | EXPORT_SYMBOL(pci_find_device); | 453 | EXPORT_SYMBOL(pci_find_device); |
450 | EXPORT_SYMBOL(pci_find_device_reverse); | 454 | EXPORT_SYMBOL(pci_find_device_reverse); |
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c index ab78e4bbdd83..cb4ced3560e9 100644 --- a/drivers/pci/setup-res.c +++ b/drivers/pci/setup-res.c | |||
@@ -33,11 +33,22 @@ pci_update_resource(struct pci_dev *dev, struct resource *res, int resno) | |||
33 | u32 new, check, mask; | 33 | u32 new, check, mask; |
34 | int reg; | 34 | int reg; |
35 | 35 | ||
36 | /* Ignore resources for unimplemented BARs and unused resource slots | 36 | /* |
37 | for 64 bit BARs. */ | 37 | * Ignore resources for unimplemented BARs and unused resource slots |
38 | * for 64 bit BARs. | ||
39 | */ | ||
38 | if (!res->flags) | 40 | if (!res->flags) |
39 | return; | 41 | return; |
40 | 42 | ||
43 | /* | ||
44 | * Ignore non-moveable resources. This might be legacy resources for | ||
45 | * which no functional BAR register exists or another important | ||
46 | * system resource we should better not move around in system address | ||
47 | * space. | ||
48 | */ | ||
49 | if (res->flags & IORESOURCE_PCI_FIXED) | ||
50 | return; | ||
51 | |||
41 | pcibios_resource_to_bus(dev, ®ion, res); | 52 | pcibios_resource_to_bus(dev, ®ion, res); |
42 | 53 | ||
43 | pr_debug(" got res [%llx:%llx] bus [%lx:%lx] flags %lx for " | 54 | pr_debug(" got res [%llx:%llx] bus [%lx:%lx] flags %lx for " |
@@ -212,6 +223,10 @@ pdev_sort_resources(struct pci_dev *dev, struct resource_list *head) | |||
212 | resource_size_t r_align; | 223 | resource_size_t r_align; |
213 | 224 | ||
214 | r = &dev->resource[i]; | 225 | r = &dev->resource[i]; |
226 | |||
227 | if (r->flags & IORESOURCE_PCI_FIXED) | ||
228 | continue; | ||
229 | |||
215 | r_align = r->end - r->start; | 230 | r_align = r->end - r->start; |
216 | 231 | ||
217 | if (!(r->flags) || r->parent) | 232 | if (!(r->flags) || r->parent) |
diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c index 6303970e93c1..24ee8be359f5 100644 --- a/drivers/usb/class/usblp.c +++ b/drivers/usb/class/usblp.c | |||
@@ -130,7 +130,7 @@ MFG:HEWLETT-PACKARD;MDL:DESKJET 970C;CMD:MLC,PCL,PML;CLASS:PRINTER;DESCRIPTION:H | |||
130 | 130 | ||
131 | struct usblp { | 131 | struct usblp { |
132 | struct usb_device *dev; /* USB device */ | 132 | struct usb_device *dev; /* USB device */ |
133 | struct semaphore sem; /* locks this struct, especially "dev" */ | 133 | struct mutex mut; /* locks this struct, especially "dev" */ |
134 | char *writebuf; /* write transfer_buffer */ | 134 | char *writebuf; /* write transfer_buffer */ |
135 | char *readbuf; /* read transfer_buffer */ | 135 | char *readbuf; /* read transfer_buffer */ |
136 | char *statusbuf; /* status transfer_buffer */ | 136 | char *statusbuf; /* status transfer_buffer */ |
@@ -465,7 +465,7 @@ static long usblp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
465 | int twoints[2]; | 465 | int twoints[2]; |
466 | int retval = 0; | 466 | int retval = 0; |
467 | 467 | ||
468 | down (&usblp->sem); | 468 | mutex_lock (&usblp->mut); |
469 | if (!usblp->present) { | 469 | if (!usblp->present) { |
470 | retval = -ENODEV; | 470 | retval = -ENODEV; |
471 | goto done; | 471 | goto done; |
@@ -644,14 +644,14 @@ static long usblp_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
644 | } | 644 | } |
645 | 645 | ||
646 | done: | 646 | done: |
647 | up (&usblp->sem); | 647 | mutex_unlock (&usblp->mut); |
648 | return retval; | 648 | return retval; |
649 | } | 649 | } |
650 | 650 | ||
651 | static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) | 651 | static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) |
652 | { | 652 | { |
653 | struct usblp *usblp = file->private_data; | 653 | struct usblp *usblp = file->private_data; |
654 | int timeout, rv, err = 0, transfer_length = 0; | 654 | int timeout, intr, rv, err = 0, transfer_length = 0; |
655 | size_t writecount = 0; | 655 | size_t writecount = 0; |
656 | 656 | ||
657 | while (writecount < count) { | 657 | while (writecount < count) { |
@@ -668,14 +668,16 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t | |||
668 | if (rv < 0) | 668 | if (rv < 0) |
669 | return writecount ? writecount : -EINTR; | 669 | return writecount ? writecount : -EINTR; |
670 | } | 670 | } |
671 | down (&usblp->sem); | 671 | intr = mutex_lock_interruptible (&usblp->mut); |
672 | if (intr) | ||
673 | return writecount ? writecount : -EINTR; | ||
672 | if (!usblp->present) { | 674 | if (!usblp->present) { |
673 | up (&usblp->sem); | 675 | mutex_unlock (&usblp->mut); |
674 | return -ENODEV; | 676 | return -ENODEV; |
675 | } | 677 | } |
676 | 678 | ||
677 | if (usblp->sleeping) { | 679 | if (usblp->sleeping) { |
678 | up (&usblp->sem); | 680 | mutex_unlock (&usblp->mut); |
679 | return writecount ? writecount : -ENODEV; | 681 | return writecount ? writecount : -ENODEV; |
680 | } | 682 | } |
681 | 683 | ||
@@ -687,10 +689,10 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t | |||
687 | err = usblp->writeurb->status; | 689 | err = usblp->writeurb->status; |
688 | } else | 690 | } else |
689 | err = usblp_check_status(usblp, err); | 691 | err = usblp_check_status(usblp, err); |
690 | up (&usblp->sem); | 692 | mutex_unlock (&usblp->mut); |
691 | 693 | ||
692 | /* if the fault was due to disconnect, let khubd's | 694 | /* if the fault was due to disconnect, let khubd's |
693 | * call to usblp_disconnect() grab usblp->sem ... | 695 | * call to usblp_disconnect() grab usblp->mut ... |
694 | */ | 696 | */ |
695 | schedule (); | 697 | schedule (); |
696 | continue; | 698 | continue; |
@@ -702,7 +704,7 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t | |||
702 | */ | 704 | */ |
703 | writecount += transfer_length; | 705 | writecount += transfer_length; |
704 | if (writecount == count) { | 706 | if (writecount == count) { |
705 | up(&usblp->sem); | 707 | mutex_unlock(&usblp->mut); |
706 | break; | 708 | break; |
707 | } | 709 | } |
708 | 710 | ||
@@ -714,7 +716,7 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t | |||
714 | 716 | ||
715 | if (copy_from_user(usblp->writeurb->transfer_buffer, | 717 | if (copy_from_user(usblp->writeurb->transfer_buffer, |
716 | buffer + writecount, transfer_length)) { | 718 | buffer + writecount, transfer_length)) { |
717 | up(&usblp->sem); | 719 | mutex_unlock(&usblp->mut); |
718 | return writecount ? writecount : -EFAULT; | 720 | return writecount ? writecount : -EFAULT; |
719 | } | 721 | } |
720 | 722 | ||
@@ -727,10 +729,10 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t | |||
727 | count = -EIO; | 729 | count = -EIO; |
728 | else | 730 | else |
729 | count = writecount ? writecount : -ENOMEM; | 731 | count = writecount ? writecount : -ENOMEM; |
730 | up (&usblp->sem); | 732 | mutex_unlock (&usblp->mut); |
731 | break; | 733 | break; |
732 | } | 734 | } |
733 | up (&usblp->sem); | 735 | mutex_unlock (&usblp->mut); |
734 | } | 736 | } |
735 | 737 | ||
736 | return count; | 738 | return count; |
@@ -739,12 +741,14 @@ static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t | |||
739 | static ssize_t usblp_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) | 741 | static ssize_t usblp_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos) |
740 | { | 742 | { |
741 | struct usblp *usblp = file->private_data; | 743 | struct usblp *usblp = file->private_data; |
742 | int rv; | 744 | int rv, intr; |
743 | 745 | ||
744 | if (!usblp->bidir) | 746 | if (!usblp->bidir) |
745 | return -EINVAL; | 747 | return -EINVAL; |
746 | 748 | ||
747 | down (&usblp->sem); | 749 | intr = mutex_lock_interruptible (&usblp->mut); |
750 | if (intr) | ||
751 | return -EINTR; | ||
748 | if (!usblp->present) { | 752 | if (!usblp->present) { |
749 | count = -ENODEV; | 753 | count = -ENODEV; |
750 | goto done; | 754 | goto done; |
@@ -757,9 +761,9 @@ static ssize_t usblp_read(struct file *file, char __user *buffer, size_t count, | |||
757 | count = -EAGAIN; | 761 | count = -EAGAIN; |
758 | goto done; | 762 | goto done; |
759 | } | 763 | } |
760 | up(&usblp->sem); | 764 | mutex_unlock(&usblp->mut); |
761 | rv = wait_event_interruptible(usblp->wait, usblp->rcomplete || !usblp->present); | 765 | rv = wait_event_interruptible(usblp->wait, usblp->rcomplete || !usblp->present); |
762 | down(&usblp->sem); | 766 | mutex_lock(&usblp->mut); |
763 | if (rv < 0) { | 767 | if (rv < 0) { |
764 | count = -EINTR; | 768 | count = -EINTR; |
765 | goto done; | 769 | goto done; |
@@ -807,7 +811,7 @@ static ssize_t usblp_read(struct file *file, char __user *buffer, size_t count, | |||
807 | } | 811 | } |
808 | 812 | ||
809 | done: | 813 | done: |
810 | up (&usblp->sem); | 814 | mutex_unlock (&usblp->mut); |
811 | return count; | 815 | return count; |
812 | } | 816 | } |
813 | 817 | ||
@@ -886,7 +890,7 @@ static int usblp_probe(struct usb_interface *intf, | |||
886 | goto abort; | 890 | goto abort; |
887 | } | 891 | } |
888 | usblp->dev = dev; | 892 | usblp->dev = dev; |
889 | init_MUTEX (&usblp->sem); | 893 | mutex_init (&usblp->mut); |
890 | init_waitqueue_head(&usblp->wait); | 894 | init_waitqueue_head(&usblp->wait); |
891 | usblp->ifnum = intf->cur_altsetting->desc.bInterfaceNumber; | 895 | usblp->ifnum = intf->cur_altsetting->desc.bInterfaceNumber; |
892 | usblp->intf = intf; | 896 | usblp->intf = intf; |
@@ -1178,7 +1182,7 @@ static void usblp_disconnect(struct usb_interface *intf) | |||
1178 | device_remove_file(&intf->dev, &dev_attr_ieee1284_id); | 1182 | device_remove_file(&intf->dev, &dev_attr_ieee1284_id); |
1179 | 1183 | ||
1180 | mutex_lock (&usblp_mutex); | 1184 | mutex_lock (&usblp_mutex); |
1181 | down (&usblp->sem); | 1185 | mutex_lock (&usblp->mut); |
1182 | usblp->present = 0; | 1186 | usblp->present = 0; |
1183 | usb_set_intfdata (intf, NULL); | 1187 | usb_set_intfdata (intf, NULL); |
1184 | 1188 | ||
@@ -1187,7 +1191,7 @@ static void usblp_disconnect(struct usb_interface *intf) | |||
1187 | usblp->writebuf, usblp->writeurb->transfer_dma); | 1191 | usblp->writebuf, usblp->writeurb->transfer_dma); |
1188 | usb_buffer_free (usblp->dev, USBLP_BUF_SIZE, | 1192 | usb_buffer_free (usblp->dev, USBLP_BUF_SIZE, |
1189 | usblp->readbuf, usblp->readurb->transfer_dma); | 1193 | usblp->readbuf, usblp->readurb->transfer_dma); |
1190 | up (&usblp->sem); | 1194 | mutex_unlock (&usblp->mut); |
1191 | 1195 | ||
1192 | if (!usblp->used) | 1196 | if (!usblp->used) |
1193 | usblp_cleanup (usblp); | 1197 | usblp_cleanup (usblp); |
@@ -1200,11 +1204,11 @@ static int usblp_suspend (struct usb_interface *intf, pm_message_t message) | |||
1200 | 1204 | ||
1201 | /* this races against normal access and open */ | 1205 | /* this races against normal access and open */ |
1202 | mutex_lock (&usblp_mutex); | 1206 | mutex_lock (&usblp_mutex); |
1203 | down (&usblp->sem); | 1207 | mutex_lock (&usblp->mut); |
1204 | /* we take no more IO */ | 1208 | /* we take no more IO */ |
1205 | usblp->sleeping = 1; | 1209 | usblp->sleeping = 1; |
1206 | usblp_unlink_urbs(usblp); | 1210 | usblp_unlink_urbs(usblp); |
1207 | up (&usblp->sem); | 1211 | mutex_unlock (&usblp->mut); |
1208 | mutex_unlock (&usblp_mutex); | 1212 | mutex_unlock (&usblp_mutex); |
1209 | 1213 | ||
1210 | return 0; | 1214 | return 0; |
@@ -1216,12 +1220,12 @@ static int usblp_resume (struct usb_interface *intf) | |||
1216 | int r; | 1220 | int r; |
1217 | 1221 | ||
1218 | mutex_lock (&usblp_mutex); | 1222 | mutex_lock (&usblp_mutex); |
1219 | down (&usblp->sem); | 1223 | mutex_lock (&usblp->mut); |
1220 | 1224 | ||
1221 | usblp->sleeping = 0; | 1225 | usblp->sleeping = 0; |
1222 | r = handle_bidir (usblp); | 1226 | r = handle_bidir (usblp); |
1223 | 1227 | ||
1224 | up (&usblp->sem); | 1228 | mutex_unlock (&usblp->mut); |
1225 | mutex_unlock (&usblp_mutex); | 1229 | mutex_unlock (&usblp_mutex); |
1226 | 1230 | ||
1227 | return r; | 1231 | return r; |
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 3ed4cb2d56d9..4b3a6ab29bd3 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
@@ -962,7 +962,11 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb, | |||
962 | kfree(dr); | 962 | kfree(dr); |
963 | return -EFAULT; | 963 | return -EFAULT; |
964 | } | 964 | } |
965 | snoop(&ps->dev->dev, "control urb\n"); | 965 | snoop(&ps->dev->dev, "control urb: bRequest=%02x " |
966 | "bRrequestType=%02x wValue=%04x " | ||
967 | "wIndex=%04x wLength=%04x\n", | ||
968 | dr->bRequest, dr->bRequestType, dr->wValue, | ||
969 | dr->wIndex, dr->wLength); | ||
966 | break; | 970 | break; |
967 | 971 | ||
968 | case USBDEVFS_URB_TYPE_BULK: | 972 | case USBDEVFS_URB_TYPE_BULK: |
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index 3e0abbb49fe1..812c733ba8ce 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c | |||
@@ -43,14 +43,16 @@ | |||
43 | #include <linux/usb_gadget.h> | 43 | #include <linux/usb_gadget.h> |
44 | 44 | ||
45 | #include <asm/byteorder.h> | 45 | #include <asm/byteorder.h> |
46 | #include <asm/hardware.h> | ||
46 | #include <asm/io.h> | 47 | #include <asm/io.h> |
47 | #include <asm/irq.h> | 48 | #include <asm/irq.h> |
48 | #include <asm/system.h> | 49 | #include <asm/system.h> |
49 | #include <asm/mach-types.h> | 50 | #include <asm/mach-types.h> |
50 | 51 | ||
51 | #include <asm/arch/hardware.h> | ||
52 | #include <asm/arch/gpio.h> | 52 | #include <asm/arch/gpio.h> |
53 | #include <asm/arch/board.h> | 53 | #include <asm/arch/board.h> |
54 | #include <asm/arch/cpu.h> | ||
55 | #include <asm/arch/at91sam9261_matrix.h> | ||
54 | 56 | ||
55 | #include "at91_udc.h" | 57 | #include "at91_udc.h" |
56 | 58 | ||
@@ -78,27 +80,11 @@ | |||
78 | static const char driver_name [] = "at91_udc"; | 80 | static const char driver_name [] = "at91_udc"; |
79 | static const char ep0name[] = "ep0"; | 81 | static const char ep0name[] = "ep0"; |
80 | 82 | ||
81 | /*-------------------------------------------------------------------------*/ | ||
82 | 83 | ||
83 | /* | 84 | #define at91_udp_read(dev, reg) \ |
84 | * Read from a UDP register. | 85 | __raw_readl((dev)->udp_baseaddr + (reg)) |
85 | */ | 86 | #define at91_udp_write(dev, reg, val) \ |
86 | static inline unsigned long at91_udp_read(unsigned int reg) | 87 | __raw_writel((val), (dev)->udp_baseaddr + (reg)) |
87 | { | ||
88 | void __iomem *udp_base = (void __iomem *)AT91_VA_BASE_UDP; | ||
89 | |||
90 | return __raw_readl(udp_base + reg); | ||
91 | } | ||
92 | |||
93 | /* | ||
94 | * Write to a UDP register. | ||
95 | */ | ||
96 | static inline void at91_udp_write(unsigned int reg, unsigned long value) | ||
97 | { | ||
98 | void __iomem *udp_base = (void __iomem *)AT91_VA_BASE_UDP; | ||
99 | |||
100 | __raw_writel(value, udp_base + reg); | ||
101 | } | ||
102 | 88 | ||
103 | /*-------------------------------------------------------------------------*/ | 89 | /*-------------------------------------------------------------------------*/ |
104 | 90 | ||
@@ -210,13 +196,13 @@ static int proc_udc_show(struct seq_file *s, void *unused) | |||
210 | return 0; | 196 | return 0; |
211 | } | 197 | } |
212 | 198 | ||
213 | tmp = at91_udp_read(AT91_UDP_FRM_NUM); | 199 | tmp = at91_udp_read(udc, AT91_UDP_FRM_NUM); |
214 | seq_printf(s, "frame %05x:%s%s frame=%d\n", tmp, | 200 | seq_printf(s, "frame %05x:%s%s frame=%d\n", tmp, |
215 | (tmp & AT91_UDP_FRM_OK) ? " ok" : "", | 201 | (tmp & AT91_UDP_FRM_OK) ? " ok" : "", |
216 | (tmp & AT91_UDP_FRM_ERR) ? " err" : "", | 202 | (tmp & AT91_UDP_FRM_ERR) ? " err" : "", |
217 | (tmp & AT91_UDP_NUM)); | 203 | (tmp & AT91_UDP_NUM)); |
218 | 204 | ||
219 | tmp = at91_udp_read(AT91_UDP_GLB_STAT); | 205 | tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); |
220 | seq_printf(s, "glbstate %02x:%s" FOURBITS "\n", tmp, | 206 | seq_printf(s, "glbstate %02x:%s" FOURBITS "\n", tmp, |
221 | (tmp & AT91_UDP_RMWUPE) ? " rmwupe" : "", | 207 | (tmp & AT91_UDP_RMWUPE) ? " rmwupe" : "", |
222 | (tmp & AT91_UDP_RSMINPR) ? " rsminpr" : "", | 208 | (tmp & AT91_UDP_RSMINPR) ? " rsminpr" : "", |
@@ -224,13 +210,13 @@ static int proc_udc_show(struct seq_file *s, void *unused) | |||
224 | (tmp & AT91_UDP_CONFG) ? " confg" : "", | 210 | (tmp & AT91_UDP_CONFG) ? " confg" : "", |
225 | (tmp & AT91_UDP_FADDEN) ? " fadden" : ""); | 211 | (tmp & AT91_UDP_FADDEN) ? " fadden" : ""); |
226 | 212 | ||
227 | tmp = at91_udp_read(AT91_UDP_FADDR); | 213 | tmp = at91_udp_read(udc, AT91_UDP_FADDR); |
228 | seq_printf(s, "faddr %03x:%s fadd=%d\n", tmp, | 214 | seq_printf(s, "faddr %03x:%s fadd=%d\n", tmp, |
229 | (tmp & AT91_UDP_FEN) ? " fen" : "", | 215 | (tmp & AT91_UDP_FEN) ? " fen" : "", |
230 | (tmp & AT91_UDP_FADD)); | 216 | (tmp & AT91_UDP_FADD)); |
231 | 217 | ||
232 | proc_irq_show(s, "imr ", at91_udp_read(AT91_UDP_IMR)); | 218 | proc_irq_show(s, "imr ", at91_udp_read(udc, AT91_UDP_IMR)); |
233 | proc_irq_show(s, "isr ", at91_udp_read(AT91_UDP_ISR)); | 219 | proc_irq_show(s, "isr ", at91_udp_read(udc, AT91_UDP_ISR)); |
234 | 220 | ||
235 | if (udc->enabled && udc->vbus) { | 221 | if (udc->enabled && udc->vbus) { |
236 | proc_ep_show(s, &udc->ep[0]); | 222 | proc_ep_show(s, &udc->ep[0]); |
@@ -286,6 +272,7 @@ static inline void remove_debug_file(struct at91_udc *udc) {} | |||
286 | static void done(struct at91_ep *ep, struct at91_request *req, int status) | 272 | static void done(struct at91_ep *ep, struct at91_request *req, int status) |
287 | { | 273 | { |
288 | unsigned stopped = ep->stopped; | 274 | unsigned stopped = ep->stopped; |
275 | struct at91_udc *udc = ep->udc; | ||
289 | 276 | ||
290 | list_del_init(&req->queue); | 277 | list_del_init(&req->queue); |
291 | if (req->req.status == -EINPROGRESS) | 278 | if (req->req.status == -EINPROGRESS) |
@@ -301,7 +288,7 @@ static void done(struct at91_ep *ep, struct at91_request *req, int status) | |||
301 | 288 | ||
302 | /* ep0 is always ready; other endpoints need a non-empty queue */ | 289 | /* ep0 is always ready; other endpoints need a non-empty queue */ |
303 | if (list_empty(&ep->queue) && ep->int_mask != (1 << 0)) | 290 | if (list_empty(&ep->queue) && ep->int_mask != (1 << 0)) |
304 | at91_udp_write(AT91_UDP_IDR, ep->int_mask); | 291 | at91_udp_write(udc, AT91_UDP_IDR, ep->int_mask); |
305 | } | 292 | } |
306 | 293 | ||
307 | /*-------------------------------------------------------------------------*/ | 294 | /*-------------------------------------------------------------------------*/ |
@@ -554,8 +541,8 @@ ok: | |||
554 | * reset/init endpoint fifo. NOTE: leaves fifo_bank alone, | 541 | * reset/init endpoint fifo. NOTE: leaves fifo_bank alone, |
555 | * since endpoint resets don't reset hw pingpong state. | 542 | * since endpoint resets don't reset hw pingpong state. |
556 | */ | 543 | */ |
557 | at91_udp_write(AT91_UDP_RST_EP, ep->int_mask); | 544 | at91_udp_write(dev, AT91_UDP_RST_EP, ep->int_mask); |
558 | at91_udp_write(AT91_UDP_RST_EP, 0); | 545 | at91_udp_write(dev, AT91_UDP_RST_EP, 0); |
559 | 546 | ||
560 | local_irq_restore(flags); | 547 | local_irq_restore(flags); |
561 | return 0; | 548 | return 0; |
@@ -564,6 +551,7 @@ ok: | |||
564 | static int at91_ep_disable (struct usb_ep * _ep) | 551 | static int at91_ep_disable (struct usb_ep * _ep) |
565 | { | 552 | { |
566 | struct at91_ep *ep = container_of(_ep, struct at91_ep, ep); | 553 | struct at91_ep *ep = container_of(_ep, struct at91_ep, ep); |
554 | struct at91_udc *udc = ep->udc; | ||
567 | unsigned long flags; | 555 | unsigned long flags; |
568 | 556 | ||
569 | if (ep == &ep->udc->ep[0]) | 557 | if (ep == &ep->udc->ep[0]) |
@@ -579,8 +567,8 @@ static int at91_ep_disable (struct usb_ep * _ep) | |||
579 | 567 | ||
580 | /* reset fifos and endpoint */ | 568 | /* reset fifos and endpoint */ |
581 | if (ep->udc->clocked) { | 569 | if (ep->udc->clocked) { |
582 | at91_udp_write(AT91_UDP_RST_EP, ep->int_mask); | 570 | at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); |
583 | at91_udp_write(AT91_UDP_RST_EP, 0); | 571 | at91_udp_write(udc, AT91_UDP_RST_EP, 0); |
584 | __raw_writel(0, ep->creg); | 572 | __raw_writel(0, ep->creg); |
585 | } | 573 | } |
586 | 574 | ||
@@ -695,10 +683,10 @@ static int at91_ep_queue(struct usb_ep *_ep, | |||
695 | * reconfigures the endpoints. | 683 | * reconfigures the endpoints. |
696 | */ | 684 | */ |
697 | if (dev->wait_for_config_ack) { | 685 | if (dev->wait_for_config_ack) { |
698 | tmp = at91_udp_read(AT91_UDP_GLB_STAT); | 686 | tmp = at91_udp_read(dev, AT91_UDP_GLB_STAT); |
699 | tmp ^= AT91_UDP_CONFG; | 687 | tmp ^= AT91_UDP_CONFG; |
700 | VDBG("toggle config\n"); | 688 | VDBG("toggle config\n"); |
701 | at91_udp_write(AT91_UDP_GLB_STAT, tmp); | 689 | at91_udp_write(dev, AT91_UDP_GLB_STAT, tmp); |
702 | } | 690 | } |
703 | if (req->req.length == 0) { | 691 | if (req->req.length == 0) { |
704 | ep0_in_status: | 692 | ep0_in_status: |
@@ -727,7 +715,7 @@ ep0_in_status: | |||
727 | 715 | ||
728 | if (req && !status) { | 716 | if (req && !status) { |
729 | list_add_tail (&req->queue, &ep->queue); | 717 | list_add_tail (&req->queue, &ep->queue); |
730 | at91_udp_write(AT91_UDP_IER, ep->int_mask); | 718 | at91_udp_write(dev, AT91_UDP_IER, ep->int_mask); |
731 | } | 719 | } |
732 | done: | 720 | done: |
733 | local_irq_restore(flags); | 721 | local_irq_restore(flags); |
@@ -758,6 +746,7 @@ static int at91_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req) | |||
758 | static int at91_ep_set_halt(struct usb_ep *_ep, int value) | 746 | static int at91_ep_set_halt(struct usb_ep *_ep, int value) |
759 | { | 747 | { |
760 | struct at91_ep *ep = container_of(_ep, struct at91_ep, ep); | 748 | struct at91_ep *ep = container_of(_ep, struct at91_ep, ep); |
749 | struct at91_udc *udc = ep->udc; | ||
761 | u32 __iomem *creg; | 750 | u32 __iomem *creg; |
762 | u32 csr; | 751 | u32 csr; |
763 | unsigned long flags; | 752 | unsigned long flags; |
@@ -785,8 +774,8 @@ static int at91_ep_set_halt(struct usb_ep *_ep, int value) | |||
785 | csr |= AT91_UDP_FORCESTALL; | 774 | csr |= AT91_UDP_FORCESTALL; |
786 | VDBG("halt %s\n", ep->ep.name); | 775 | VDBG("halt %s\n", ep->ep.name); |
787 | } else { | 776 | } else { |
788 | at91_udp_write(AT91_UDP_RST_EP, ep->int_mask); | 777 | at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); |
789 | at91_udp_write(AT91_UDP_RST_EP, 0); | 778 | at91_udp_write(udc, AT91_UDP_RST_EP, 0); |
790 | csr &= ~AT91_UDP_FORCESTALL; | 779 | csr &= ~AT91_UDP_FORCESTALL; |
791 | } | 780 | } |
792 | __raw_writel(csr, creg); | 781 | __raw_writel(csr, creg); |
@@ -813,9 +802,11 @@ static struct usb_ep_ops at91_ep_ops = { | |||
813 | 802 | ||
814 | static int at91_get_frame(struct usb_gadget *gadget) | 803 | static int at91_get_frame(struct usb_gadget *gadget) |
815 | { | 804 | { |
805 | struct at91_udc *udc = to_udc(gadget); | ||
806 | |||
816 | if (!to_udc(gadget)->clocked) | 807 | if (!to_udc(gadget)->clocked) |
817 | return -EINVAL; | 808 | return -EINVAL; |
818 | return at91_udp_read(AT91_UDP_FRM_NUM) & AT91_UDP_NUM; | 809 | return at91_udp_read(udc, AT91_UDP_FRM_NUM) & AT91_UDP_NUM; |
819 | } | 810 | } |
820 | 811 | ||
821 | static int at91_wakeup(struct usb_gadget *gadget) | 812 | static int at91_wakeup(struct usb_gadget *gadget) |
@@ -833,11 +824,11 @@ static int at91_wakeup(struct usb_gadget *gadget) | |||
833 | 824 | ||
834 | /* NOTE: some "early versions" handle ESR differently ... */ | 825 | /* NOTE: some "early versions" handle ESR differently ... */ |
835 | 826 | ||
836 | glbstate = at91_udp_read(AT91_UDP_GLB_STAT); | 827 | glbstate = at91_udp_read(udc, AT91_UDP_GLB_STAT); |
837 | if (!(glbstate & AT91_UDP_ESR)) | 828 | if (!(glbstate & AT91_UDP_ESR)) |
838 | goto done; | 829 | goto done; |
839 | glbstate |= AT91_UDP_ESR; | 830 | glbstate |= AT91_UDP_ESR; |
840 | at91_udp_write(AT91_UDP_GLB_STAT, glbstate); | 831 | at91_udp_write(udc, AT91_UDP_GLB_STAT, glbstate); |
841 | 832 | ||
842 | done: | 833 | done: |
843 | local_irq_restore(flags); | 834 | local_irq_restore(flags); |
@@ -861,6 +852,7 @@ static void udc_reinit(struct at91_udc *udc) | |||
861 | ep->stopped = 0; | 852 | ep->stopped = 0; |
862 | ep->fifo_bank = 0; | 853 | ep->fifo_bank = 0; |
863 | ep->ep.maxpacket = ep->maxpacket; | 854 | ep->ep.maxpacket = ep->maxpacket; |
855 | ep->creg = (void __iomem *) udc->udp_baseaddr + AT91_UDP_CSR(i); | ||
864 | // initialiser une queue par endpoint | 856 | // initialiser une queue par endpoint |
865 | INIT_LIST_HEAD(&ep->queue); | 857 | INIT_LIST_HEAD(&ep->queue); |
866 | } | 858 | } |
@@ -915,14 +907,41 @@ static void pullup(struct at91_udc *udc, int is_on) | |||
915 | if (!udc->enabled || !udc->vbus) | 907 | if (!udc->enabled || !udc->vbus) |
916 | is_on = 0; | 908 | is_on = 0; |
917 | DBG("%sactive\n", is_on ? "" : "in"); | 909 | DBG("%sactive\n", is_on ? "" : "in"); |
910 | |||
918 | if (is_on) { | 911 | if (is_on) { |
919 | clk_on(udc); | 912 | clk_on(udc); |
920 | at91_udp_write(AT91_UDP_TXVC, 0); | 913 | at91_udp_write(udc, AT91_UDP_TXVC, 0); |
921 | at91_set_gpio_value(udc->board.pullup_pin, 1); | 914 | if (cpu_is_at91rm9200()) |
922 | } else { | 915 | at91_set_gpio_value(udc->board.pullup_pin, 1); |
916 | else if (cpu_is_at91sam9260()) { | ||
917 | u32 txvc = at91_udp_read(udc, AT91_UDP_TXVC); | ||
918 | |||
919 | txvc |= AT91_UDP_TXVC_PUON; | ||
920 | at91_udp_write(udc, AT91_UDP_TXVC, txvc); | ||
921 | } else if (cpu_is_at91sam9261()) { | ||
922 | u32 usbpucr; | ||
923 | |||
924 | usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR); | ||
925 | usbpucr |= AT91_MATRIX_USBPUCR_PUON; | ||
926 | at91_sys_write(AT91_MATRIX_USBPUCR, usbpucr); | ||
927 | } | ||
928 | } else { | ||
923 | stop_activity(udc); | 929 | stop_activity(udc); |
924 | at91_udp_write(AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); | 930 | at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); |
925 | at91_set_gpio_value(udc->board.pullup_pin, 0); | 931 | if (cpu_is_at91rm9200()) |
932 | at91_set_gpio_value(udc->board.pullup_pin, 0); | ||
933 | else if (cpu_is_at91sam9260()) { | ||
934 | u32 txvc = at91_udp_read(udc, AT91_UDP_TXVC); | ||
935 | |||
936 | txvc &= ~AT91_UDP_TXVC_PUON; | ||
937 | at91_udp_write(udc, AT91_UDP_TXVC, txvc); | ||
938 | } else if (cpu_is_at91sam9261()) { | ||
939 | u32 usbpucr; | ||
940 | |||
941 | usbpucr = at91_sys_read(AT91_MATRIX_USBPUCR); | ||
942 | usbpucr &= ~AT91_MATRIX_USBPUCR_PUON; | ||
943 | at91_sys_write(AT91_MATRIX_USBPUCR, usbpucr); | ||
944 | } | ||
926 | clk_off(udc); | 945 | clk_off(udc); |
927 | } | 946 | } |
928 | } | 947 | } |
@@ -936,7 +955,10 @@ static int at91_vbus_session(struct usb_gadget *gadget, int is_active) | |||
936 | // VDBG("vbus %s\n", is_active ? "on" : "off"); | 955 | // VDBG("vbus %s\n", is_active ? "on" : "off"); |
937 | local_irq_save(flags); | 956 | local_irq_save(flags); |
938 | udc->vbus = (is_active != 0); | 957 | udc->vbus = (is_active != 0); |
939 | pullup(udc, is_active); | 958 | if (udc->driver) |
959 | pullup(udc, is_active); | ||
960 | else | ||
961 | pullup(udc, 0); | ||
940 | local_irq_restore(flags); | 962 | local_irq_restore(flags); |
941 | return 0; | 963 | return 0; |
942 | } | 964 | } |
@@ -1086,7 +1108,7 @@ static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr) | |||
1086 | 1108 | ||
1087 | case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8) | 1109 | case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8) |
1088 | | USB_REQ_SET_CONFIGURATION: | 1110 | | USB_REQ_SET_CONFIGURATION: |
1089 | tmp = at91_udp_read(AT91_UDP_GLB_STAT) & AT91_UDP_CONFG; | 1111 | tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_CONFG; |
1090 | if (pkt.r.wValue) | 1112 | if (pkt.r.wValue) |
1091 | udc->wait_for_config_ack = (tmp == 0); | 1113 | udc->wait_for_config_ack = (tmp == 0); |
1092 | else | 1114 | else |
@@ -1103,7 +1125,7 @@ static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr) | |||
1103 | case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8) | 1125 | case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8) |
1104 | | USB_REQ_GET_STATUS: | 1126 | | USB_REQ_GET_STATUS: |
1105 | tmp = (udc->selfpowered << USB_DEVICE_SELF_POWERED); | 1127 | tmp = (udc->selfpowered << USB_DEVICE_SELF_POWERED); |
1106 | if (at91_udp_read(AT91_UDP_GLB_STAT) & AT91_UDP_ESR) | 1128 | if (at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_ESR) |
1107 | tmp |= (1 << USB_DEVICE_REMOTE_WAKEUP); | 1129 | tmp |= (1 << USB_DEVICE_REMOTE_WAKEUP); |
1108 | PACKET("get device status\n"); | 1130 | PACKET("get device status\n"); |
1109 | __raw_writeb(tmp, dreg); | 1131 | __raw_writeb(tmp, dreg); |
@@ -1114,17 +1136,17 @@ static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr) | |||
1114 | | USB_REQ_SET_FEATURE: | 1136 | | USB_REQ_SET_FEATURE: |
1115 | if (w_value != USB_DEVICE_REMOTE_WAKEUP) | 1137 | if (w_value != USB_DEVICE_REMOTE_WAKEUP) |
1116 | goto stall; | 1138 | goto stall; |
1117 | tmp = at91_udp_read(AT91_UDP_GLB_STAT); | 1139 | tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); |
1118 | tmp |= AT91_UDP_ESR; | 1140 | tmp |= AT91_UDP_ESR; |
1119 | at91_udp_write(AT91_UDP_GLB_STAT, tmp); | 1141 | at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); |
1120 | goto succeed; | 1142 | goto succeed; |
1121 | case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8) | 1143 | case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8) |
1122 | | USB_REQ_CLEAR_FEATURE: | 1144 | | USB_REQ_CLEAR_FEATURE: |
1123 | if (w_value != USB_DEVICE_REMOTE_WAKEUP) | 1145 | if (w_value != USB_DEVICE_REMOTE_WAKEUP) |
1124 | goto stall; | 1146 | goto stall; |
1125 | tmp = at91_udp_read(AT91_UDP_GLB_STAT); | 1147 | tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); |
1126 | tmp &= ~AT91_UDP_ESR; | 1148 | tmp &= ~AT91_UDP_ESR; |
1127 | at91_udp_write(AT91_UDP_GLB_STAT, tmp); | 1149 | at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); |
1128 | goto succeed; | 1150 | goto succeed; |
1129 | 1151 | ||
1130 | /* | 1152 | /* |
@@ -1206,8 +1228,8 @@ static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr) | |||
1206 | } else if (ep->is_in) | 1228 | } else if (ep->is_in) |
1207 | goto stall; | 1229 | goto stall; |
1208 | 1230 | ||
1209 | at91_udp_write(AT91_UDP_RST_EP, ep->int_mask); | 1231 | at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask); |
1210 | at91_udp_write(AT91_UDP_RST_EP, 0); | 1232 | at91_udp_write(udc, AT91_UDP_RST_EP, 0); |
1211 | tmp = __raw_readl(ep->creg); | 1233 | tmp = __raw_readl(ep->creg); |
1212 | tmp |= CLR_FX; | 1234 | tmp |= CLR_FX; |
1213 | tmp &= ~(SET_FX | AT91_UDP_FORCESTALL); | 1235 | tmp &= ~(SET_FX | AT91_UDP_FORCESTALL); |
@@ -1222,7 +1244,10 @@ static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr) | |||
1222 | #undef w_length | 1244 | #undef w_length |
1223 | 1245 | ||
1224 | /* pass request up to the gadget driver */ | 1246 | /* pass request up to the gadget driver */ |
1225 | status = udc->driver->setup(&udc->gadget, &pkt.r); | 1247 | if (udc->driver) |
1248 | status = udc->driver->setup(&udc->gadget, &pkt.r); | ||
1249 | else | ||
1250 | status = -ENODEV; | ||
1226 | if (status < 0) { | 1251 | if (status < 0) { |
1227 | stall: | 1252 | stall: |
1228 | VDBG("req %02x.%02x protocol STALL; stat %d\n", | 1253 | VDBG("req %02x.%02x protocol STALL; stat %d\n", |
@@ -1300,13 +1325,13 @@ static void handle_ep0(struct at91_udc *udc) | |||
1300 | if (udc->wait_for_addr_ack) { | 1325 | if (udc->wait_for_addr_ack) { |
1301 | u32 tmp; | 1326 | u32 tmp; |
1302 | 1327 | ||
1303 | at91_udp_write(AT91_UDP_FADDR, | 1328 | at91_udp_write(udc, AT91_UDP_FADDR, |
1304 | AT91_UDP_FEN | udc->addr); | 1329 | AT91_UDP_FEN | udc->addr); |
1305 | tmp = at91_udp_read(AT91_UDP_GLB_STAT); | 1330 | tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT); |
1306 | tmp &= ~AT91_UDP_FADDEN; | 1331 | tmp &= ~AT91_UDP_FADDEN; |
1307 | if (udc->addr) | 1332 | if (udc->addr) |
1308 | tmp |= AT91_UDP_FADDEN; | 1333 | tmp |= AT91_UDP_FADDEN; |
1309 | at91_udp_write(AT91_UDP_GLB_STAT, tmp); | 1334 | at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp); |
1310 | 1335 | ||
1311 | udc->wait_for_addr_ack = 0; | 1336 | udc->wait_for_addr_ack = 0; |
1312 | VDBG("address %d\n", udc->addr); | 1337 | VDBG("address %d\n", udc->addr); |
@@ -1374,28 +1399,28 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
1374 | while (rescans--) { | 1399 | while (rescans--) { |
1375 | u32 status; | 1400 | u32 status; |
1376 | 1401 | ||
1377 | status = at91_udp_read(AT91_UDP_ISR) | 1402 | status = at91_udp_read(udc, AT91_UDP_ISR) |
1378 | & at91_udp_read(AT91_UDP_IMR); | 1403 | & at91_udp_read(udc, AT91_UDP_IMR); |
1379 | if (!status) | 1404 | if (!status) |
1380 | break; | 1405 | break; |
1381 | 1406 | ||
1382 | /* USB reset irq: not maskable */ | 1407 | /* USB reset irq: not maskable */ |
1383 | if (status & AT91_UDP_ENDBUSRES) { | 1408 | if (status & AT91_UDP_ENDBUSRES) { |
1384 | at91_udp_write(AT91_UDP_IDR, ~MINIMUS_INTERRUPTUS); | 1409 | at91_udp_write(udc, AT91_UDP_IDR, ~MINIMUS_INTERRUPTUS); |
1385 | at91_udp_write(AT91_UDP_IER, MINIMUS_INTERRUPTUS); | 1410 | at91_udp_write(udc, AT91_UDP_IER, MINIMUS_INTERRUPTUS); |
1386 | /* Atmel code clears this irq twice */ | 1411 | /* Atmel code clears this irq twice */ |
1387 | at91_udp_write(AT91_UDP_ICR, AT91_UDP_ENDBUSRES); | 1412 | at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES); |
1388 | at91_udp_write(AT91_UDP_ICR, AT91_UDP_ENDBUSRES); | 1413 | at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES); |
1389 | VDBG("end bus reset\n"); | 1414 | VDBG("end bus reset\n"); |
1390 | udc->addr = 0; | 1415 | udc->addr = 0; |
1391 | stop_activity(udc); | 1416 | stop_activity(udc); |
1392 | 1417 | ||
1393 | /* enable ep0 */ | 1418 | /* enable ep0 */ |
1394 | at91_udp_write(AT91_UDP_CSR(0), | 1419 | at91_udp_write(udc, AT91_UDP_CSR(0), |
1395 | AT91_UDP_EPEDS | AT91_UDP_EPTYPE_CTRL); | 1420 | AT91_UDP_EPEDS | AT91_UDP_EPTYPE_CTRL); |
1396 | udc->gadget.speed = USB_SPEED_FULL; | 1421 | udc->gadget.speed = USB_SPEED_FULL; |
1397 | udc->suspended = 0; | 1422 | udc->suspended = 0; |
1398 | at91_udp_write(AT91_UDP_IER, AT91_UDP_EP(0)); | 1423 | at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_EP(0)); |
1399 | 1424 | ||
1400 | /* | 1425 | /* |
1401 | * NOTE: this driver keeps clocks off unless the | 1426 | * NOTE: this driver keeps clocks off unless the |
@@ -1406,9 +1431,9 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
1406 | 1431 | ||
1407 | /* host initiated suspend (3+ms bus idle) */ | 1432 | /* host initiated suspend (3+ms bus idle) */ |
1408 | } else if (status & AT91_UDP_RXSUSP) { | 1433 | } else if (status & AT91_UDP_RXSUSP) { |
1409 | at91_udp_write(AT91_UDP_IDR, AT91_UDP_RXSUSP); | 1434 | at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXSUSP); |
1410 | at91_udp_write(AT91_UDP_IER, AT91_UDP_RXRSM); | 1435 | at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXRSM); |
1411 | at91_udp_write(AT91_UDP_ICR, AT91_UDP_RXSUSP); | 1436 | at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXSUSP); |
1412 | // VDBG("bus suspend\n"); | 1437 | // VDBG("bus suspend\n"); |
1413 | if (udc->suspended) | 1438 | if (udc->suspended) |
1414 | continue; | 1439 | continue; |
@@ -1425,9 +1450,9 @@ static irqreturn_t at91_udc_irq (int irq, void *_udc) | |||
1425 | 1450 | ||
1426 | /* host initiated resume */ | 1451 | /* host initiated resume */ |
1427 | } else if (status & AT91_UDP_RXRSM) { | 1452 | } else if (status & AT91_UDP_RXRSM) { |
1428 | at91_udp_write(AT91_UDP_IDR, AT91_UDP_RXRSM); | 1453 | at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM); |
1429 | at91_udp_write(AT91_UDP_IER, AT91_UDP_RXSUSP); | 1454 | at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXSUSP); |
1430 | at91_udp_write(AT91_UDP_ICR, AT91_UDP_RXRSM); | 1455 | at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM); |
1431 | // VDBG("bus resume\n"); | 1456 | // VDBG("bus resume\n"); |
1432 | if (!udc->suspended) | 1457 | if (!udc->suspended) |
1433 | continue; | 1458 | continue; |
@@ -1485,8 +1510,6 @@ static struct at91_udc controller = { | |||
1485 | }, | 1510 | }, |
1486 | .udc = &controller, | 1511 | .udc = &controller, |
1487 | .maxpacket = 8, | 1512 | .maxpacket = 8, |
1488 | .creg = (void __iomem *)(AT91_VA_BASE_UDP | ||
1489 | + AT91_UDP_CSR(0)), | ||
1490 | .int_mask = 1 << 0, | 1513 | .int_mask = 1 << 0, |
1491 | }, | 1514 | }, |
1492 | .ep[1] = { | 1515 | .ep[1] = { |
@@ -1497,8 +1520,6 @@ static struct at91_udc controller = { | |||
1497 | .udc = &controller, | 1520 | .udc = &controller, |
1498 | .is_pingpong = 1, | 1521 | .is_pingpong = 1, |
1499 | .maxpacket = 64, | 1522 | .maxpacket = 64, |
1500 | .creg = (void __iomem *)(AT91_VA_BASE_UDP | ||
1501 | + AT91_UDP_CSR(1)), | ||
1502 | .int_mask = 1 << 1, | 1523 | .int_mask = 1 << 1, |
1503 | }, | 1524 | }, |
1504 | .ep[2] = { | 1525 | .ep[2] = { |
@@ -1509,8 +1530,6 @@ static struct at91_udc controller = { | |||
1509 | .udc = &controller, | 1530 | .udc = &controller, |
1510 | .is_pingpong = 1, | 1531 | .is_pingpong = 1, |
1511 | .maxpacket = 64, | 1532 | .maxpacket = 64, |
1512 | .creg = (void __iomem *)(AT91_VA_BASE_UDP | ||
1513 | + AT91_UDP_CSR(2)), | ||
1514 | .int_mask = 1 << 2, | 1533 | .int_mask = 1 << 2, |
1515 | }, | 1534 | }, |
1516 | .ep[3] = { | 1535 | .ep[3] = { |
@@ -1521,8 +1540,6 @@ static struct at91_udc controller = { | |||
1521 | }, | 1540 | }, |
1522 | .udc = &controller, | 1541 | .udc = &controller, |
1523 | .maxpacket = 8, | 1542 | .maxpacket = 8, |
1524 | .creg = (void __iomem *)(AT91_VA_BASE_UDP | ||
1525 | + AT91_UDP_CSR(3)), | ||
1526 | .int_mask = 1 << 3, | 1543 | .int_mask = 1 << 3, |
1527 | }, | 1544 | }, |
1528 | .ep[4] = { | 1545 | .ep[4] = { |
@@ -1533,8 +1550,6 @@ static struct at91_udc controller = { | |||
1533 | .udc = &controller, | 1550 | .udc = &controller, |
1534 | .is_pingpong = 1, | 1551 | .is_pingpong = 1, |
1535 | .maxpacket = 256, | 1552 | .maxpacket = 256, |
1536 | .creg = (void __iomem *)(AT91_VA_BASE_UDP | ||
1537 | + AT91_UDP_CSR(4)), | ||
1538 | .int_mask = 1 << 4, | 1553 | .int_mask = 1 << 4, |
1539 | }, | 1554 | }, |
1540 | .ep[5] = { | 1555 | .ep[5] = { |
@@ -1545,8 +1560,6 @@ static struct at91_udc controller = { | |||
1545 | .udc = &controller, | 1560 | .udc = &controller, |
1546 | .is_pingpong = 1, | 1561 | .is_pingpong = 1, |
1547 | .maxpacket = 256, | 1562 | .maxpacket = 256, |
1548 | .creg = (void __iomem *)(AT91_VA_BASE_UDP | ||
1549 | + AT91_UDP_CSR(5)), | ||
1550 | .int_mask = 1 << 5, | 1563 | .int_mask = 1 << 5, |
1551 | }, | 1564 | }, |
1552 | /* ep6 and ep7 are also reserved (custom silicon might use them) */ | 1565 | /* ep6 and ep7 are also reserved (custom silicon might use them) */ |
@@ -1572,9 +1585,8 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
1572 | int retval; | 1585 | int retval; |
1573 | 1586 | ||
1574 | if (!driver | 1587 | if (!driver |
1575 | || driver->speed != USB_SPEED_FULL | 1588 | || driver->speed < USB_SPEED_FULL |
1576 | || !driver->bind | 1589 | || !driver->bind |
1577 | || !driver->unbind | ||
1578 | || !driver->setup) { | 1590 | || !driver->setup) { |
1579 | DBG("bad parameter.\n"); | 1591 | DBG("bad parameter.\n"); |
1580 | return -EINVAL; | 1592 | return -EINVAL; |
@@ -1595,6 +1607,10 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
1595 | if (retval) { | 1607 | if (retval) { |
1596 | DBG("driver->bind() returned %d\n", retval); | 1608 | DBG("driver->bind() returned %d\n", retval); |
1597 | udc->driver = NULL; | 1609 | udc->driver = NULL; |
1610 | udc->gadget.dev.driver = NULL; | ||
1611 | udc->gadget.dev.driver_data = NULL; | ||
1612 | udc->enabled = 0; | ||
1613 | udc->selfpowered = 0; | ||
1598 | return retval; | 1614 | return retval; |
1599 | } | 1615 | } |
1600 | 1616 | ||
@@ -1611,12 +1627,12 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver) | |||
1611 | { | 1627 | { |
1612 | struct at91_udc *udc = &controller; | 1628 | struct at91_udc *udc = &controller; |
1613 | 1629 | ||
1614 | if (!driver || driver != udc->driver) | 1630 | if (!driver || driver != udc->driver || !driver->unbind) |
1615 | return -EINVAL; | 1631 | return -EINVAL; |
1616 | 1632 | ||
1617 | local_irq_disable(); | 1633 | local_irq_disable(); |
1618 | udc->enabled = 0; | 1634 | udc->enabled = 0; |
1619 | at91_udp_write(AT91_UDP_IDR, ~0); | 1635 | at91_udp_write(udc, AT91_UDP_IDR, ~0); |
1620 | pullup(udc, 0); | 1636 | pullup(udc, 0); |
1621 | local_irq_enable(); | 1637 | local_irq_enable(); |
1622 | 1638 | ||
@@ -1641,6 +1657,7 @@ static int __devinit at91udc_probe(struct platform_device *pdev) | |||
1641 | struct device *dev = &pdev->dev; | 1657 | struct device *dev = &pdev->dev; |
1642 | struct at91_udc *udc; | 1658 | struct at91_udc *udc; |
1643 | int retval; | 1659 | int retval; |
1660 | struct resource *res; | ||
1644 | 1661 | ||
1645 | if (!dev->platform_data) { | 1662 | if (!dev->platform_data) { |
1646 | /* small (so we copy it) but critical! */ | 1663 | /* small (so we copy it) but critical! */ |
@@ -1658,7 +1675,13 @@ static int __devinit at91udc_probe(struct platform_device *pdev) | |||
1658 | return -ENODEV; | 1675 | return -ENODEV; |
1659 | } | 1676 | } |
1660 | 1677 | ||
1661 | if (!request_mem_region(AT91RM9200_BASE_UDP, SZ_16K, driver_name)) { | 1678 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1679 | if (!res) | ||
1680 | return -ENXIO; | ||
1681 | |||
1682 | if (!request_mem_region(res->start, | ||
1683 | res->end - res->start + 1, | ||
1684 | driver_name)) { | ||
1662 | DBG("someone's using UDC memory\n"); | 1685 | DBG("someone's using UDC memory\n"); |
1663 | return -EBUSY; | 1686 | return -EBUSY; |
1664 | } | 1687 | } |
@@ -1668,15 +1691,23 @@ static int __devinit at91udc_probe(struct platform_device *pdev) | |||
1668 | udc->gadget.dev.parent = dev; | 1691 | udc->gadget.dev.parent = dev; |
1669 | udc->board = *(struct at91_udc_data *) dev->platform_data; | 1692 | udc->board = *(struct at91_udc_data *) dev->platform_data; |
1670 | udc->pdev = pdev; | 1693 | udc->pdev = pdev; |
1671 | udc_reinit(udc); | ||
1672 | udc->enabled = 0; | 1694 | udc->enabled = 0; |
1673 | 1695 | ||
1696 | udc->udp_baseaddr = ioremap(res->start, res->end - res->start + 1); | ||
1697 | if (!udc->udp_baseaddr) { | ||
1698 | release_mem_region(res->start, res->end - res->start + 1); | ||
1699 | return -ENOMEM; | ||
1700 | } | ||
1701 | |||
1702 | udc_reinit(udc); | ||
1703 | |||
1674 | /* get interface and function clocks */ | 1704 | /* get interface and function clocks */ |
1675 | udc->iclk = clk_get(dev, "udc_clk"); | 1705 | udc->iclk = clk_get(dev, "udc_clk"); |
1676 | udc->fclk = clk_get(dev, "udpck"); | 1706 | udc->fclk = clk_get(dev, "udpck"); |
1677 | if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk)) { | 1707 | if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk)) { |
1678 | DBG("clocks missing\n"); | 1708 | DBG("clocks missing\n"); |
1679 | return -ENODEV; | 1709 | retval = -ENODEV; |
1710 | goto fail0; | ||
1680 | } | 1711 | } |
1681 | 1712 | ||
1682 | retval = device_register(&udc->gadget.dev); | 1713 | retval = device_register(&udc->gadget.dev); |
@@ -1685,8 +1716,10 @@ static int __devinit at91udc_probe(struct platform_device *pdev) | |||
1685 | 1716 | ||
1686 | /* don't do anything until we have both gadget driver and VBUS */ | 1717 | /* don't do anything until we have both gadget driver and VBUS */ |
1687 | clk_enable(udc->iclk); | 1718 | clk_enable(udc->iclk); |
1688 | at91_udp_write(AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); | 1719 | at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS); |
1689 | at91_udp_write(AT91_UDP_IDR, 0xffffffff); | 1720 | at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff); |
1721 | /* Clear all pending interrupts - UDP may be used by bootloader. */ | ||
1722 | at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff); | ||
1690 | clk_disable(udc->iclk); | 1723 | clk_disable(udc->iclk); |
1691 | 1724 | ||
1692 | /* request UDC and maybe VBUS irqs */ | 1725 | /* request UDC and maybe VBUS irqs */ |
@@ -1698,6 +1731,11 @@ static int __devinit at91udc_probe(struct platform_device *pdev) | |||
1698 | goto fail1; | 1731 | goto fail1; |
1699 | } | 1732 | } |
1700 | if (udc->board.vbus_pin > 0) { | 1733 | if (udc->board.vbus_pin > 0) { |
1734 | /* | ||
1735 | * Get the initial state of VBUS - we cannot expect | ||
1736 | * a pending interrupt. | ||
1737 | */ | ||
1738 | udc->vbus = at91_get_gpio_value(udc->board.vbus_pin); | ||
1701 | if (request_irq(udc->board.vbus_pin, at91_vbus_irq, | 1739 | if (request_irq(udc->board.vbus_pin, at91_vbus_irq, |
1702 | IRQF_DISABLED, driver_name, udc)) { | 1740 | IRQF_DISABLED, driver_name, udc)) { |
1703 | DBG("request vbus irq %d failed\n", | 1741 | DBG("request vbus irq %d failed\n", |
@@ -1720,7 +1758,7 @@ static int __devinit at91udc_probe(struct platform_device *pdev) | |||
1720 | fail1: | 1758 | fail1: |
1721 | device_unregister(&udc->gadget.dev); | 1759 | device_unregister(&udc->gadget.dev); |
1722 | fail0: | 1760 | fail0: |
1723 | release_mem_region(AT91RM9200_BASE_UDP, SZ_16K); | 1761 | release_mem_region(res->start, res->end - res->start + 1); |
1724 | DBG("%s probe failed, %d\n", driver_name, retval); | 1762 | DBG("%s probe failed, %d\n", driver_name, retval); |
1725 | return retval; | 1763 | return retval; |
1726 | } | 1764 | } |
@@ -1728,13 +1766,14 @@ fail0: | |||
1728 | static int __devexit at91udc_remove(struct platform_device *pdev) | 1766 | static int __devexit at91udc_remove(struct platform_device *pdev) |
1729 | { | 1767 | { |
1730 | struct at91_udc *udc = platform_get_drvdata(pdev); | 1768 | struct at91_udc *udc = platform_get_drvdata(pdev); |
1769 | struct resource *res; | ||
1731 | 1770 | ||
1732 | DBG("remove\n"); | 1771 | DBG("remove\n"); |
1733 | 1772 | ||
1734 | pullup(udc, 0); | 1773 | if (udc->driver) |
1774 | return -EBUSY; | ||
1735 | 1775 | ||
1736 | if (udc->driver != 0) | 1776 | pullup(udc, 0); |
1737 | usb_gadget_unregister_driver(udc->driver); | ||
1738 | 1777 | ||
1739 | device_init_wakeup(&pdev->dev, 0); | 1778 | device_init_wakeup(&pdev->dev, 0); |
1740 | remove_debug_file(udc); | 1779 | remove_debug_file(udc); |
@@ -1742,7 +1781,10 @@ static int __devexit at91udc_remove(struct platform_device *pdev) | |||
1742 | free_irq(udc->board.vbus_pin, udc); | 1781 | free_irq(udc->board.vbus_pin, udc); |
1743 | free_irq(udc->udp_irq, udc); | 1782 | free_irq(udc->udp_irq, udc); |
1744 | device_unregister(&udc->gadget.dev); | 1783 | device_unregister(&udc->gadget.dev); |
1745 | release_mem_region(AT91RM9200_BASE_UDP, SZ_16K); | 1784 | |
1785 | iounmap(udc->udp_baseaddr); | ||
1786 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
1787 | release_mem_region(res->start, res->end - res->start + 1); | ||
1746 | 1788 | ||
1747 | clk_put(udc->iclk); | 1789 | clk_put(udc->iclk); |
1748 | clk_put(udc->fclk); | 1790 | clk_put(udc->fclk); |
diff --git a/drivers/usb/gadget/at91_udc.h b/drivers/usb/gadget/at91_udc.h index 882af42e86cc..677089baa59d 100644 --- a/drivers/usb/gadget/at91_udc.h +++ b/drivers/usb/gadget/at91_udc.h | |||
@@ -51,10 +51,10 @@ | |||
51 | #define AT91_UDP_EP(n) (1 << (n)) /* Endpoint Interrupt Status */ | 51 | #define AT91_UDP_EP(n) (1 << (n)) /* Endpoint Interrupt Status */ |
52 | #define AT91_UDP_RXSUSP (1 << 8) /* USB Suspend Interrupt Status */ | 52 | #define AT91_UDP_RXSUSP (1 << 8) /* USB Suspend Interrupt Status */ |
53 | #define AT91_UDP_RXRSM (1 << 9) /* USB Resume Interrupt Status */ | 53 | #define AT91_UDP_RXRSM (1 << 9) /* USB Resume Interrupt Status */ |
54 | #define AT91_UDP_EXTRSM (1 << 10) /* External Resume Interrupt Status */ | 54 | #define AT91_UDP_EXTRSM (1 << 10) /* External Resume Interrupt Status [AT91RM9200 only] */ |
55 | #define AT91_UDP_SOFINT (1 << 11) /* Start of Frame Interrupt Status */ | 55 | #define AT91_UDP_SOFINT (1 << 11) /* Start of Frame Interrupt Status */ |
56 | #define AT91_UDP_ENDBUSRES (1 << 12) /* End of Bus Reset Interrpt Status */ | 56 | #define AT91_UDP_ENDBUSRES (1 << 12) /* End of Bus Reset Interrpt Status */ |
57 | #define AT91_UDP_WAKEUP (1 << 13) /* USB Wakeup Interrupt Status */ | 57 | #define AT91_UDP_WAKEUP (1 << 13) /* USB Wakeup Interrupt Status [AT91RM9200 only] */ |
58 | 58 | ||
59 | #define AT91_UDP_ICR 0x20 /* Interrupt Clear Register */ | 59 | #define AT91_UDP_ICR 0x20 /* Interrupt Clear Register */ |
60 | #define AT91_UDP_RST_EP 0x28 /* Reset Endpoint Register */ | 60 | #define AT91_UDP_RST_EP 0x28 /* Reset Endpoint Register */ |
@@ -84,7 +84,7 @@ | |||
84 | 84 | ||
85 | #define AT91_UDP_TXVC 0x74 /* Transceiver Control Register */ | 85 | #define AT91_UDP_TXVC 0x74 /* Transceiver Control Register */ |
86 | #define AT91_UDP_TXVC_TXVDIS (1 << 8) /* Transceiver Disable */ | 86 | #define AT91_UDP_TXVC_TXVDIS (1 << 8) /* Transceiver Disable */ |
87 | 87 | #define AT91_UDP_TXVC_PUON (1 << 9) /* PullUp On [AT91SAM9260 only] */ | |
88 | 88 | ||
89 | /*-------------------------------------------------------------------------*/ | 89 | /*-------------------------------------------------------------------------*/ |
90 | 90 | ||
@@ -141,6 +141,7 @@ struct at91_udc { | |||
141 | struct clk *iclk, *fclk; | 141 | struct clk *iclk, *fclk; |
142 | struct platform_device *pdev; | 142 | struct platform_device *pdev; |
143 | struct proc_dir_entry *pde; | 143 | struct proc_dir_entry *pde; |
144 | void __iomem *udp_baseaddr; | ||
144 | int udp_irq; | 145 | int udp_irq; |
145 | }; | 146 | }; |
146 | 147 | ||
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c index f1f32d7be5f9..3c2bc075ef4f 100644 --- a/drivers/usb/gadget/dummy_hcd.c +++ b/drivers/usb/gadget/dummy_hcd.c | |||
@@ -779,7 +779,7 @@ usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
779 | return -EINVAL; | 779 | return -EINVAL; |
780 | if (dum->driver) | 780 | if (dum->driver) |
781 | return -EBUSY; | 781 | return -EBUSY; |
782 | if (!driver->bind || !driver->unbind || !driver->setup | 782 | if (!driver->bind || !driver->setup |
783 | || driver->speed == USB_SPEED_UNKNOWN) | 783 | || driver->speed == USB_SPEED_UNKNOWN) |
784 | return -EINVAL; | 784 | return -EINVAL; |
785 | 785 | ||
@@ -837,7 +837,8 @@ usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
837 | err_bind_driver: | 837 | err_bind_driver: |
838 | driver_unregister (&driver->driver); | 838 | driver_unregister (&driver->driver); |
839 | err_register: | 839 | err_register: |
840 | driver->unbind (&dum->gadget); | 840 | if (driver->unbind) |
841 | driver->unbind (&dum->gadget); | ||
841 | spin_lock_irq (&dum->lock); | 842 | spin_lock_irq (&dum->lock); |
842 | dum->pullup = 0; | 843 | dum->pullup = 0; |
843 | set_link_state (dum); | 844 | set_link_state (dum); |
@@ -857,7 +858,7 @@ usb_gadget_unregister_driver (struct usb_gadget_driver *driver) | |||
857 | 858 | ||
858 | if (!dum) | 859 | if (!dum) |
859 | return -ENODEV; | 860 | return -ENODEV; |
860 | if (!driver || driver != dum->driver) | 861 | if (!driver || driver != dum->driver || !driver->unbind) |
861 | return -EINVAL; | 862 | return -EINVAL; |
862 | 863 | ||
863 | dev_dbg (udc_dev(dum), "unregister gadget driver '%s'\n", | 864 | dev_dbg (udc_dev(dum), "unregister gadget driver '%s'\n", |
diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c index a265e262a2ee..72f2ae96fbf3 100644 --- a/drivers/usb/gadget/file_storage.c +++ b/drivers/usb/gadget/file_storage.c | |||
@@ -4100,7 +4100,7 @@ static struct usb_gadget_driver fsg_driver = { | |||
4100 | #endif | 4100 | #endif |
4101 | .function = (char *) longname, | 4101 | .function = (char *) longname, |
4102 | .bind = fsg_bind, | 4102 | .bind = fsg_bind, |
4103 | .unbind = __exit_p(fsg_unbind), | 4103 | .unbind = fsg_unbind, |
4104 | .disconnect = fsg_disconnect, | 4104 | .disconnect = fsg_disconnect, |
4105 | .setup = fsg_setup, | 4105 | .setup = fsg_setup, |
4106 | .suspend = fsg_suspend, | 4106 | .suspend = fsg_suspend, |
diff --git a/drivers/usb/gadget/gmidi.c b/drivers/usb/gadget/gmidi.c index 31351826f2ba..f1a679656c96 100644 --- a/drivers/usb/gadget/gmidi.c +++ b/drivers/usb/gadget/gmidi.c | |||
@@ -123,7 +123,7 @@ struct gmidi_device { | |||
123 | struct usb_request *req; /* for control responses */ | 123 | struct usb_request *req; /* for control responses */ |
124 | u8 config; | 124 | u8 config; |
125 | struct usb_ep *in_ep, *out_ep; | 125 | struct usb_ep *in_ep, *out_ep; |
126 | struct snd_card *card; | 126 | struct snd_card *card; |
127 | struct snd_rawmidi *rmidi; | 127 | struct snd_rawmidi *rmidi; |
128 | struct snd_rawmidi_substream *in_substream; | 128 | struct snd_rawmidi_substream *in_substream; |
129 | struct snd_rawmidi_substream *out_substream; | 129 | struct snd_rawmidi_substream *out_substream; |
@@ -490,7 +490,7 @@ static void gmidi_complete(struct usb_ep *ep, struct usb_request *req) | |||
490 | int status = req->status; | 490 | int status = req->status; |
491 | 491 | ||
492 | switch (status) { | 492 | switch (status) { |
493 | case 0: /* normal completion */ | 493 | case 0: /* normal completion */ |
494 | if (ep == dev->out_ep) { | 494 | if (ep == dev->out_ep) { |
495 | /* we received stuff. | 495 | /* we received stuff. |
496 | req is queued again, below */ | 496 | req is queued again, below */ |
@@ -505,7 +505,7 @@ static void gmidi_complete(struct usb_ep *ep, struct usb_request *req) | |||
505 | break; | 505 | break; |
506 | 506 | ||
507 | /* this endpoint is normally active while we're configured */ | 507 | /* this endpoint is normally active while we're configured */ |
508 | case -ECONNABORTED: /* hardware forced ep reset */ | 508 | case -ECONNABORTED: /* hardware forced ep reset */ |
509 | case -ECONNRESET: /* request dequeued */ | 509 | case -ECONNRESET: /* request dequeued */ |
510 | case -ESHUTDOWN: /* disconnect from host */ | 510 | case -ESHUTDOWN: /* disconnect from host */ |
511 | VDBG(dev, "%s gone (%d), %d/%d\n", ep->name, status, | 511 | VDBG(dev, "%s gone (%d), %d/%d\n", ep->name, status, |
@@ -656,7 +656,7 @@ gmidi_set_config(struct gmidi_device *dev, unsigned number, gfp_t gfp_flags) | |||
656 | case USB_SPEED_LOW: speed = "low"; break; | 656 | case USB_SPEED_LOW: speed = "low"; break; |
657 | case USB_SPEED_FULL: speed = "full"; break; | 657 | case USB_SPEED_FULL: speed = "full"; break; |
658 | case USB_SPEED_HIGH: speed = "high"; break; | 658 | case USB_SPEED_HIGH: speed = "high"; break; |
659 | default: speed = "?"; break; | 659 | default: speed = "?"; break; |
660 | } | 660 | } |
661 | 661 | ||
662 | dev->config = number; | 662 | dev->config = number; |
@@ -1308,7 +1308,7 @@ static struct usb_gadget_driver gmidi_driver = { | |||
1308 | .speed = USB_SPEED_FULL, | 1308 | .speed = USB_SPEED_FULL, |
1309 | .function = (char *)longname, | 1309 | .function = (char *)longname, |
1310 | .bind = gmidi_bind, | 1310 | .bind = gmidi_bind, |
1311 | .unbind = __exit_p(gmidi_unbind), | 1311 | .unbind = gmidi_unbind, |
1312 | 1312 | ||
1313 | .setup = gmidi_setup, | 1313 | .setup = gmidi_setup, |
1314 | .disconnect = gmidi_disconnect, | 1314 | .disconnect = gmidi_disconnect, |
@@ -1316,7 +1316,7 @@ static struct usb_gadget_driver gmidi_driver = { | |||
1316 | .suspend = gmidi_suspend, | 1316 | .suspend = gmidi_suspend, |
1317 | .resume = gmidi_resume, | 1317 | .resume = gmidi_resume, |
1318 | 1318 | ||
1319 | .driver = { | 1319 | .driver = { |
1320 | .name = (char *)shortname, | 1320 | .name = (char *)shortname, |
1321 | .owner = THIS_MODULE, | 1321 | .owner = THIS_MODULE, |
1322 | }, | 1322 | }, |
diff --git a/drivers/usb/gadget/goku_udc.c b/drivers/usb/gadget/goku_udc.c index 805a9826842d..d0ef1d6b3fac 100644 --- a/drivers/usb/gadget/goku_udc.c +++ b/drivers/usb/gadget/goku_udc.c | |||
@@ -1432,7 +1432,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) | |||
1432 | if (!driver | 1432 | if (!driver |
1433 | || driver->speed != USB_SPEED_FULL | 1433 | || driver->speed != USB_SPEED_FULL |
1434 | || !driver->bind | 1434 | || !driver->bind |
1435 | || !driver->unbind | ||
1436 | || !driver->disconnect | 1435 | || !driver->disconnect |
1437 | || !driver->setup) | 1436 | || !driver->setup) |
1438 | return -EINVAL; | 1437 | return -EINVAL; |
@@ -1495,7 +1494,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) | |||
1495 | 1494 | ||
1496 | if (!dev) | 1495 | if (!dev) |
1497 | return -ENODEV; | 1496 | return -ENODEV; |
1498 | if (!driver || driver != dev->driver) | 1497 | if (!driver || driver != dev->driver || !driver->unbind) |
1499 | return -EINVAL; | 1498 | return -EINVAL; |
1500 | 1499 | ||
1501 | spin_lock_irqsave(&dev->lock, flags); | 1500 | spin_lock_irqsave(&dev->lock, flags); |
@@ -1808,13 +1807,8 @@ static void goku_remove(struct pci_dev *pdev) | |||
1808 | struct goku_udc *dev = pci_get_drvdata(pdev); | 1807 | struct goku_udc *dev = pci_get_drvdata(pdev); |
1809 | 1808 | ||
1810 | DBG(dev, "%s\n", __FUNCTION__); | 1809 | DBG(dev, "%s\n", __FUNCTION__); |
1811 | /* start with the driver above us */ | 1810 | |
1812 | if (dev->driver) { | 1811 | BUG_ON(dev->driver); |
1813 | /* should have been done already by driver model core */ | ||
1814 | WARN(dev, "pci remove, driver '%s' is still registered\n", | ||
1815 | dev->driver->driver.name); | ||
1816 | usb_gadget_unregister_driver(dev->driver); | ||
1817 | } | ||
1818 | 1812 | ||
1819 | #ifdef CONFIG_USB_GADGET_DEBUG_FILES | 1813 | #ifdef CONFIG_USB_GADGET_DEBUG_FILES |
1820 | remove_proc_entry(proc_node_name, NULL); | 1814 | remove_proc_entry(proc_node_name, NULL); |
diff --git a/drivers/usb/gadget/lh7a40x_udc.c b/drivers/usb/gadget/lh7a40x_udc.c index 4a991564a03e..a0a73c08a344 100644 --- a/drivers/usb/gadget/lh7a40x_udc.c +++ b/drivers/usb/gadget/lh7a40x_udc.c | |||
@@ -422,9 +422,10 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) | |||
422 | DEBUG("%s: %s\n", __FUNCTION__, driver->driver.name); | 422 | DEBUG("%s: %s\n", __FUNCTION__, driver->driver.name); |
423 | 423 | ||
424 | if (!driver | 424 | if (!driver |
425 | || driver->speed != USB_SPEED_FULL | 425 | || driver->speed != USB_SPEED_FULL |
426 | || !driver->bind | 426 | || !driver->bind |
427 | || !driver->unbind || !driver->disconnect || !driver->setup) | 427 | || !driver->disconnect |
428 | || !driver->setup) | ||
428 | return -EINVAL; | 429 | return -EINVAL; |
429 | if (!dev) | 430 | if (!dev) |
430 | return -ENODEV; | 431 | return -ENODEV; |
@@ -471,7 +472,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) | |||
471 | 472 | ||
472 | if (!dev) | 473 | if (!dev) |
473 | return -ENODEV; | 474 | return -ENODEV; |
474 | if (!driver || driver != dev->driver) | 475 | if (!driver || driver != dev->driver || !driver->unbind) |
475 | return -EINVAL; | 476 | return -EINVAL; |
476 | 477 | ||
477 | spin_lock_irqsave(&dev->lock, flags); | 478 | spin_lock_irqsave(&dev->lock, flags); |
@@ -2125,9 +2126,11 @@ static int lh7a40x_udc_remove(struct platform_device *pdev) | |||
2125 | 2126 | ||
2126 | DEBUG("%s: %p\n", __FUNCTION__, pdev); | 2127 | DEBUG("%s: %p\n", __FUNCTION__, pdev); |
2127 | 2128 | ||
2129 | if (dev->driver) | ||
2130 | return -EBUSY; | ||
2131 | |||
2128 | udc_disable(dev); | 2132 | udc_disable(dev); |
2129 | remove_proc_files(); | 2133 | remove_proc_files(); |
2130 | usb_gadget_unregister_driver(dev->driver); | ||
2131 | 2134 | ||
2132 | free_irq(IRQ_USBINTR, dev); | 2135 | free_irq(IRQ_USBINTR, dev); |
2133 | 2136 | ||
diff --git a/drivers/usb/gadget/net2280.c b/drivers/usb/gadget/net2280.c index 3024c679e38e..569eb8ccf232 100644 --- a/drivers/usb/gadget/net2280.c +++ b/drivers/usb/gadget/net2280.c | |||
@@ -2020,7 +2020,6 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
2020 | if (!driver | 2020 | if (!driver |
2021 | || driver->speed != USB_SPEED_HIGH | 2021 | || driver->speed != USB_SPEED_HIGH |
2022 | || !driver->bind | 2022 | || !driver->bind |
2023 | || !driver->unbind | ||
2024 | || !driver->setup) | 2023 | || !driver->setup) |
2025 | return -EINVAL; | 2024 | return -EINVAL; |
2026 | if (!dev) | 2025 | if (!dev) |
@@ -2107,7 +2106,7 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver) | |||
2107 | 2106 | ||
2108 | if (!dev) | 2107 | if (!dev) |
2109 | return -ENODEV; | 2108 | return -ENODEV; |
2110 | if (!driver || driver != dev->driver) | 2109 | if (!driver || driver != dev->driver || !driver->unbind) |
2111 | return -EINVAL; | 2110 | return -EINVAL; |
2112 | 2111 | ||
2113 | spin_lock_irqsave (&dev->lock, flags); | 2112 | spin_lock_irqsave (&dev->lock, flags); |
@@ -2803,13 +2802,7 @@ static void net2280_remove (struct pci_dev *pdev) | |||
2803 | { | 2802 | { |
2804 | struct net2280 *dev = pci_get_drvdata (pdev); | 2803 | struct net2280 *dev = pci_get_drvdata (pdev); |
2805 | 2804 | ||
2806 | /* start with the driver above us */ | 2805 | BUG_ON(dev->driver); |
2807 | if (dev->driver) { | ||
2808 | /* should have been done already by driver model core */ | ||
2809 | WARN (dev, "pci remove, driver '%s' is still registered\n", | ||
2810 | dev->driver->driver.name); | ||
2811 | usb_gadget_unregister_driver (dev->driver); | ||
2812 | } | ||
2813 | 2806 | ||
2814 | /* then clean up the resources we allocated during probe() */ | 2807 | /* then clean up the resources we allocated during probe() */ |
2815 | net2280_led_shutdown (dev); | 2808 | net2280_led_shutdown (dev); |
diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c index 030d87c28c2f..15d77c307930 100644 --- a/drivers/usb/gadget/omap_udc.c +++ b/drivers/usb/gadget/omap_udc.c | |||
@@ -2043,7 +2043,6 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
2043 | // FIXME if otg, check: driver->is_otg | 2043 | // FIXME if otg, check: driver->is_otg |
2044 | || driver->speed < USB_SPEED_FULL | 2044 | || driver->speed < USB_SPEED_FULL |
2045 | || !driver->bind | 2045 | || !driver->bind |
2046 | || !driver->unbind | ||
2047 | || !driver->setup) | 2046 | || !driver->setup) |
2048 | return -EINVAL; | 2047 | return -EINVAL; |
2049 | 2048 | ||
@@ -2087,9 +2086,11 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver) | |||
2087 | status = otg_set_peripheral(udc->transceiver, &udc->gadget); | 2086 | status = otg_set_peripheral(udc->transceiver, &udc->gadget); |
2088 | if (status < 0) { | 2087 | if (status < 0) { |
2089 | ERR("can't bind to transceiver\n"); | 2088 | ERR("can't bind to transceiver\n"); |
2090 | driver->unbind (&udc->gadget); | 2089 | if (driver->unbind) { |
2091 | udc->gadget.dev.driver = NULL; | 2090 | driver->unbind (&udc->gadget); |
2092 | udc->driver = NULL; | 2091 | udc->gadget.dev.driver = NULL; |
2092 | udc->driver = NULL; | ||
2093 | } | ||
2093 | goto done; | 2094 | goto done; |
2094 | } | 2095 | } |
2095 | } else { | 2096 | } else { |
@@ -2117,7 +2118,7 @@ int usb_gadget_unregister_driver (struct usb_gadget_driver *driver) | |||
2117 | 2118 | ||
2118 | if (!udc) | 2119 | if (!udc) |
2119 | return -ENODEV; | 2120 | return -ENODEV; |
2120 | if (!driver || driver != udc->driver) | 2121 | if (!driver || driver != udc->driver || !driver->unbind) |
2121 | return -EINVAL; | 2122 | return -EINVAL; |
2122 | 2123 | ||
2123 | if (machine_is_omap_innovator() || machine_is_omap_osk()) | 2124 | if (machine_is_omap_innovator() || machine_is_omap_osk()) |
@@ -2870,6 +2871,8 @@ static int __exit omap_udc_remove(struct platform_device *pdev) | |||
2870 | 2871 | ||
2871 | if (!udc) | 2872 | if (!udc) |
2872 | return -ENODEV; | 2873 | return -ENODEV; |
2874 | if (udc->driver) | ||
2875 | return -EBUSY; | ||
2873 | 2876 | ||
2874 | udc->done = &done; | 2877 | udc->done = &done; |
2875 | 2878 | ||
diff --git a/drivers/usb/gadget/pxa2xx_udc.c b/drivers/usb/gadget/pxa2xx_udc.c index 1ed506e95985..b78de9694665 100644 --- a/drivers/usb/gadget/pxa2xx_udc.c +++ b/drivers/usb/gadget/pxa2xx_udc.c | |||
@@ -1623,7 +1623,6 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver) | |||
1623 | if (!driver | 1623 | if (!driver |
1624 | || driver->speed < USB_SPEED_FULL | 1624 | || driver->speed < USB_SPEED_FULL |
1625 | || !driver->bind | 1625 | || !driver->bind |
1626 | || !driver->unbind | ||
1627 | || !driver->disconnect | 1626 | || !driver->disconnect |
1628 | || !driver->setup) | 1627 | || !driver->setup) |
1629 | return -EINVAL; | 1628 | return -EINVAL; |
@@ -1694,7 +1693,7 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) | |||
1694 | 1693 | ||
1695 | if (!dev) | 1694 | if (!dev) |
1696 | return -ENODEV; | 1695 | return -ENODEV; |
1697 | if (!driver || driver != dev->driver) | 1696 | if (!driver || driver != dev->driver || !driver->unbind) |
1698 | return -EINVAL; | 1697 | return -EINVAL; |
1699 | 1698 | ||
1700 | local_irq_disable(); | 1699 | local_irq_disable(); |
@@ -2638,9 +2637,11 @@ static int __exit pxa2xx_udc_remove(struct platform_device *pdev) | |||
2638 | { | 2637 | { |
2639 | struct pxa2xx_udc *dev = platform_get_drvdata(pdev); | 2638 | struct pxa2xx_udc *dev = platform_get_drvdata(pdev); |
2640 | 2639 | ||
2640 | if (dev->driver) | ||
2641 | return -EBUSY; | ||
2642 | |||
2641 | udc_disable(dev); | 2643 | udc_disable(dev); |
2642 | remove_proc_files(); | 2644 | remove_proc_files(); |
2643 | usb_gadget_unregister_driver(dev->driver); | ||
2644 | 2645 | ||
2645 | if (dev->got_irq) { | 2646 | if (dev->got_irq) { |
2646 | free_irq(IRQ_USB, dev); | 2647 | free_irq(IRQ_USB, dev); |
diff --git a/drivers/usb/gadget/serial.c b/drivers/usb/gadget/serial.c index 2d12bf9f19d6..f8a3ec64635d 100644 --- a/drivers/usb/gadget/serial.c +++ b/drivers/usb/gadget/serial.c | |||
@@ -296,7 +296,7 @@ static struct usb_gadget_driver gs_gadget_driver = { | |||
296 | #endif /* CONFIG_USB_GADGET_DUALSPEED */ | 296 | #endif /* CONFIG_USB_GADGET_DUALSPEED */ |
297 | .function = GS_LONG_NAME, | 297 | .function = GS_LONG_NAME, |
298 | .bind = gs_bind, | 298 | .bind = gs_bind, |
299 | .unbind = __exit_p(gs_unbind), | 299 | .unbind = gs_unbind, |
300 | .setup = gs_setup, | 300 | .setup = gs_setup, |
301 | .disconnect = gs_disconnect, | 301 | .disconnect = gs_disconnect, |
302 | .driver = { | 302 | .driver = { |
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c index b466581beb4a..cc405512fa1c 100644 --- a/drivers/usb/host/ohci-at91.c +++ b/drivers/usb/host/ohci-at91.c | |||
@@ -187,7 +187,6 @@ ohci_at91_start (struct usb_hcd *hcd) | |||
187 | { | 187 | { |
188 | struct at91_usbh_data *board = hcd->self.controller->platform_data; | 188 | struct at91_usbh_data *board = hcd->self.controller->platform_data; |
189 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); | 189 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); |
190 | struct usb_device *root = hcd->self.root_hub; | ||
191 | int ret; | 190 | int ret; |
192 | 191 | ||
193 | if ((ret = ohci_init(ohci)) < 0) | 192 | if ((ret = ohci_init(ohci)) < 0) |
@@ -221,7 +220,7 @@ static const struct hc_driver ohci_at91_hc_driver = { | |||
221 | */ | 220 | */ |
222 | .start = ohci_at91_start, | 221 | .start = ohci_at91_start, |
223 | .stop = ohci_stop, | 222 | .stop = ohci_stop, |
224 | .shutdown = ohci_shutdown, | 223 | .shutdown = ohci_shutdown, |
225 | 224 | ||
226 | /* | 225 | /* |
227 | * managing i/o requests and associated device resources | 226 | * managing i/o requests and associated device resources |
diff --git a/drivers/usb/host/ohci-au1xxx.c b/drivers/usb/host/ohci-au1xxx.c index 24e23c5783d8..e70b2430e2a9 100644 --- a/drivers/usb/host/ohci-au1xxx.c +++ b/drivers/usb/host/ohci-au1xxx.c | |||
@@ -269,7 +269,7 @@ static const struct hc_driver ohci_au1xxx_hc_driver = { | |||
269 | */ | 269 | */ |
270 | .start = ohci_au1xxx_start, | 270 | .start = ohci_au1xxx_start, |
271 | .stop = ohci_stop, | 271 | .stop = ohci_stop, |
272 | .shutdown = ohci_shutdown, | 272 | .shutdown = ohci_shutdown, |
273 | 273 | ||
274 | /* | 274 | /* |
275 | * managing i/o requests and associated device resources | 275 | * managing i/o requests and associated device resources |
@@ -336,7 +336,7 @@ static int ohci_hcd_au1xxx_drv_resume(struct platform_device *dev) | |||
336 | static struct platform_driver ohci_hcd_au1xxx_driver = { | 336 | static struct platform_driver ohci_hcd_au1xxx_driver = { |
337 | .probe = ohci_hcd_au1xxx_drv_probe, | 337 | .probe = ohci_hcd_au1xxx_drv_probe, |
338 | .remove = ohci_hcd_au1xxx_drv_remove, | 338 | .remove = ohci_hcd_au1xxx_drv_remove, |
339 | .shutdown = usb_hcd_platform_shutdown, | 339 | .shutdown = usb_hcd_platform_shutdown, |
340 | /*.suspend = ohci_hcd_au1xxx_drv_suspend, */ | 340 | /*.suspend = ohci_hcd_au1xxx_drv_suspend, */ |
341 | /*.resume = ohci_hcd_au1xxx_drv_resume, */ | 341 | /*.resume = ohci_hcd_au1xxx_drv_resume, */ |
342 | .driver = { | 342 | .driver = { |
diff --git a/drivers/usb/host/ohci-dbg.c b/drivers/usb/host/ohci-dbg.c index 0f47a57dac28..273d5ddb72be 100644 --- a/drivers/usb/host/ohci-dbg.c +++ b/drivers/usb/host/ohci-dbg.c | |||
@@ -16,7 +16,7 @@ | |||
16 | case PIPE_CONTROL: temp = "ctrl"; break; \ | 16 | case PIPE_CONTROL: temp = "ctrl"; break; \ |
17 | case PIPE_BULK: temp = "bulk"; break; \ | 17 | case PIPE_BULK: temp = "bulk"; break; \ |
18 | case PIPE_INTERRUPT: temp = "intr"; break; \ | 18 | case PIPE_INTERRUPT: temp = "intr"; break; \ |
19 | default: temp = "isoc"; break; \ | 19 | default: temp = "isoc"; break; \ |
20 | }; temp;}) | 20 | }; temp;}) |
21 | #define pipestring(pipe) edstring(usb_pipetype(pipe)) | 21 | #define pipestring(pipe) edstring(usb_pipetype(pipe)) |
22 | 22 | ||
@@ -205,13 +205,13 @@ ohci_dump_status (struct ohci_hcd *controller, char **next, unsigned *size) | |||
205 | (temp & RH_PS_PSSC) ? " PSSC" : "", \ | 205 | (temp & RH_PS_PSSC) ? " PSSC" : "", \ |
206 | (temp & RH_PS_PESC) ? " PESC" : "", \ | 206 | (temp & RH_PS_PESC) ? " PESC" : "", \ |
207 | (temp & RH_PS_CSC) ? " CSC" : "", \ | 207 | (temp & RH_PS_CSC) ? " CSC" : "", \ |
208 | \ | 208 | \ |
209 | (temp & RH_PS_LSDA) ? " LSDA" : "", \ | 209 | (temp & RH_PS_LSDA) ? " LSDA" : "", \ |
210 | (temp & RH_PS_PPS) ? " PPS" : "", \ | 210 | (temp & RH_PS_PPS) ? " PPS" : "", \ |
211 | (temp & RH_PS_PRS) ? " PRS" : "", \ | 211 | (temp & RH_PS_PRS) ? " PRS" : "", \ |
212 | (temp & RH_PS_POCI) ? " POCI" : "", \ | 212 | (temp & RH_PS_POCI) ? " POCI" : "", \ |
213 | (temp & RH_PS_PSS) ? " PSS" : "", \ | 213 | (temp & RH_PS_PSS) ? " PSS" : "", \ |
214 | \ | 214 | \ |
215 | (temp & RH_PS_PES) ? " PES" : "", \ | 215 | (temp & RH_PS_PES) ? " PES" : "", \ |
216 | (temp & RH_PS_CCS) ? " CCS" : "" \ | 216 | (temp & RH_PS_CCS) ? " CCS" : "" \ |
217 | ); | 217 | ); |
@@ -563,7 +563,7 @@ show_periodic (struct class_device *class_dev, char *buf) | |||
563 | (info & ED_SKIP) ? " K" : "", | 563 | (info & ED_SKIP) ? " K" : "", |
564 | (ed->hwHeadP & | 564 | (ed->hwHeadP & |
565 | cpu_to_hc32(ohci, ED_H)) ? | 565 | cpu_to_hc32(ohci, ED_H)) ? |
566 | " H" : ""); | 566 | " H" : ""); |
567 | size -= temp; | 567 | size -= temp; |
568 | next += temp; | 568 | next += temp; |
569 | 569 | ||
diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c index 1bf5e7a4e735..43ae696b2ec2 100644 --- a/drivers/usb/host/ohci-ep93xx.c +++ b/drivers/usb/host/ohci-ep93xx.c | |||
@@ -204,7 +204,7 @@ static int ohci_hcd_ep93xx_drv_resume(struct platform_device *pdev) | |||
204 | static struct platform_driver ohci_hcd_ep93xx_driver = { | 204 | static struct platform_driver ohci_hcd_ep93xx_driver = { |
205 | .probe = ohci_hcd_ep93xx_drv_probe, | 205 | .probe = ohci_hcd_ep93xx_drv_probe, |
206 | .remove = ohci_hcd_ep93xx_drv_remove, | 206 | .remove = ohci_hcd_ep93xx_drv_remove, |
207 | .shutdown = usb_hcd_platform_shutdown, | 207 | .shutdown = usb_hcd_platform_shutdown, |
208 | #ifdef CONFIG_PM | 208 | #ifdef CONFIG_PM |
209 | .suspend = ohci_hcd_ep93xx_drv_suspend, | 209 | .suspend = ohci_hcd_ep93xx_drv_suspend, |
210 | .resume = ohci_hcd_ep93xx_drv_resume, | 210 | .resume = ohci_hcd_ep93xx_drv_resume, |
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index b28a9b602066..c1c1d871aba4 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c | |||
@@ -3,77 +3,21 @@ | |||
3 | * | 3 | * |
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net> |
6 | * | 6 | * |
7 | * [ Initialisation is based on Linus' ] | 7 | * [ Initialisation is based on Linus' ] |
8 | * [ uhci code and gregs ohci fragments ] | 8 | * [ uhci code and gregs ohci fragments ] |
9 | * [ (C) Copyright 1999 Linus Torvalds ] | 9 | * [ (C) Copyright 1999 Linus Torvalds ] |
10 | * [ (C) Copyright 1999 Gregory P. Smith] | 10 | * [ (C) Copyright 1999 Gregory P. Smith] |
11 | * | 11 | * |
12 | * | 12 | * |
13 | * OHCI is the main "non-Intel/VIA" standard for USB 1.1 host controller | 13 | * OHCI is the main "non-Intel/VIA" standard for USB 1.1 host controller |
14 | * interfaces (though some non-x86 Intel chips use it). It supports | 14 | * interfaces (though some non-x86 Intel chips use it). It supports |
15 | * smarter hardware than UHCI. A download link for the spec available | 15 | * smarter hardware than UHCI. A download link for the spec available |
16 | * through the http://www.usb.org website. | 16 | * through the http://www.usb.org website. |
17 | * | 17 | * |
18 | * History: | ||
19 | * | ||
20 | * 2004/03/24 LH7A404 support (Durgesh Pattamatta & Marc Singer) | ||
21 | * 2004/02/04 use generic dma_* functions instead of pci_* (dsaxena@plexity.net) | ||
22 | * 2003/02/24 show registers in sysfs (Kevin Brosius) | ||
23 | * | ||
24 | * 2002/09/03 get rid of ed hashtables, rework periodic scheduling and | ||
25 | * bandwidth accounting; if debugging, show schedules in driverfs | ||
26 | * 2002/07/19 fixes to management of ED and schedule state. | ||
27 | * 2002/06/09 SA-1111 support (Christopher Hoover) | ||
28 | * 2002/06/01 remember frame when HC won't see EDs any more; use that info | ||
29 | * to fix urb unlink races caused by interrupt latency assumptions; | ||
30 | * minor ED field and function naming updates | ||
31 | * 2002/01/18 package as a patch for 2.5.3; this should match the | ||
32 | * 2.4.17 kernel modulo some bugs being fixed. | ||
33 | * | ||
34 | * 2001/10/18 merge pmac cleanup (Benjamin Herrenschmidt) and bugfixes | ||
35 | * from post-2.4.5 patches. | ||
36 | * 2001/09/20 URB_ZERO_PACKET support; hcca_dma portability, OPTi warning | ||
37 | * 2001/09/07 match PCI PM changes, errnos from Linus' tree | ||
38 | * 2001/05/05 fork 2.4.5 version into "hcd" framework, cleanup, simplify; | ||
39 | * pbook pci quirks gone (please fix pbook pci sw!) (db) | ||
40 | * | ||
41 | * 2001/04/08 Identify version on module load (gb) | ||
42 | * 2001/03/24 td/ed hashing to remove bus_to_virt (Steve Longerbeam); | ||
43 | pci_map_single (db) | ||
44 | * 2001/03/21 td and dev/ed allocation uses new pci_pool API (db) | ||
45 | * 2001/03/07 hcca allocation uses pci_alloc_consistent (Steve Longerbeam) | ||
46 | * | ||
47 | * 2000/09/26 fixed races in removing the private portion of the urb | ||
48 | * 2000/09/07 disable bulk and control lists when unlinking the last | ||
49 | * endpoint descriptor in order to avoid unrecoverable errors on | ||
50 | * the Lucent chips. (rwc@sgi) | ||
51 | * 2000/08/29 use bandwidth claiming hooks (thanks Randy!), fix some | ||
52 | * urb unlink probs, indentation fixes | ||
53 | * 2000/08/11 various oops fixes mostly affecting iso and cleanup from | ||
54 | * device unplugs. | ||
55 | * 2000/06/28 use PCI hotplug framework, for better power management | ||
56 | * and for Cardbus support (David Brownell) | ||
57 | * 2000/earlier: fixes for NEC/Lucent chips; suspend/resume handling | ||
58 | * when the controller loses power; handle UE; cleanup; ... | ||
59 | * | ||
60 | * v5.2 1999/12/07 URB 3rd preview, | ||
61 | * v5.1 1999/11/30 URB 2nd preview, cpia, (usb-scsi) | ||
62 | * v5.0 1999/11/22 URB Technical preview, Paul Mackerras powerbook susp/resume | ||
63 | * i386: HUB, Keyboard, Mouse, Printer | ||
64 | * | ||
65 | * v4.3 1999/10/27 multiple HCs, bulk_request | ||
66 | * v4.2 1999/09/05 ISO API alpha, new dev alloc, neg Error-codes | ||
67 | * v4.1 1999/08/27 Randy Dunlap's - ISO API first impl. | ||
68 | * v4.0 1999/08/18 | ||
69 | * v3.0 1999/06/25 | ||
70 | * v2.1 1999/05/09 code clean up | ||
71 | * v2.0 1999/05/04 | ||
72 | * v1.0 1999/04/27 initial release | ||
73 | * | ||
74 | * This file is licenced under the GPL. | 18 | * This file is licenced under the GPL. |
75 | */ | 19 | */ |
76 | 20 | ||
77 | #include <linux/module.h> | 21 | #include <linux/module.h> |
78 | #include <linux/moduleparam.h> | 22 | #include <linux/moduleparam.h> |
79 | #include <linux/pci.h> | 23 | #include <linux/pci.h> |
@@ -89,7 +33,7 @@ | |||
89 | #include <linux/list.h> | 33 | #include <linux/list.h> |
90 | #include <linux/usb.h> | 34 | #include <linux/usb.h> |
91 | #include <linux/usb/otg.h> | 35 | #include <linux/usb/otg.h> |
92 | #include <linux/dma-mapping.h> | 36 | #include <linux/dma-mapping.h> |
93 | #include <linux/dmapool.h> | 37 | #include <linux/dmapool.h> |
94 | #include <linux/reboot.h> | 38 | #include <linux/reboot.h> |
95 | 39 | ||
@@ -183,11 +127,11 @@ static int ohci_urb_enqueue ( | |||
183 | int i, size = 0; | 127 | int i, size = 0; |
184 | unsigned long flags; | 128 | unsigned long flags; |
185 | int retval = 0; | 129 | int retval = 0; |
186 | 130 | ||
187 | #ifdef OHCI_VERBOSE_DEBUG | 131 | #ifdef OHCI_VERBOSE_DEBUG |
188 | urb_print (urb, "SUB", usb_pipein (pipe)); | 132 | urb_print (urb, "SUB", usb_pipein (pipe)); |
189 | #endif | 133 | #endif |
190 | 134 | ||
191 | /* every endpoint has a ed, locate and maybe (re)initialize it */ | 135 | /* every endpoint has a ed, locate and maybe (re)initialize it */ |
192 | if (! (ed = ed_get (ohci, ep, urb->dev, pipe, urb->interval))) | 136 | if (! (ed = ed_get (ohci, ep, urb->dev, pipe, urb->interval))) |
193 | return -ENOMEM; | 137 | return -ENOMEM; |
@@ -232,7 +176,7 @@ static int ohci_urb_enqueue ( | |||
232 | memset (urb_priv, 0, sizeof (urb_priv_t) + size * sizeof (struct td *)); | 176 | memset (urb_priv, 0, sizeof (urb_priv_t) + size * sizeof (struct td *)); |
233 | INIT_LIST_HEAD (&urb_priv->pending); | 177 | INIT_LIST_HEAD (&urb_priv->pending); |
234 | urb_priv->length = size; | 178 | urb_priv->length = size; |
235 | urb_priv->ed = ed; | 179 | urb_priv->ed = ed; |
236 | 180 | ||
237 | /* allocate the TDs (deferring hash chain updates) */ | 181 | /* allocate the TDs (deferring hash chain updates) */ |
238 | for (i = 0; i < size; i++) { | 182 | for (i = 0; i < size; i++) { |
@@ -242,7 +186,7 @@ static int ohci_urb_enqueue ( | |||
242 | urb_free_priv (ohci, urb_priv); | 186 | urb_free_priv (ohci, urb_priv); |
243 | return -ENOMEM; | 187 | return -ENOMEM; |
244 | } | 188 | } |
245 | } | 189 | } |
246 | 190 | ||
247 | spin_lock_irqsave (&ohci->lock, flags); | 191 | spin_lock_irqsave (&ohci->lock, flags); |
248 | 192 | ||
@@ -313,13 +257,13 @@ static int ohci_urb_dequeue (struct usb_hcd *hcd, struct urb *urb) | |||
313 | { | 257 | { |
314 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); | 258 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); |
315 | unsigned long flags; | 259 | unsigned long flags; |
316 | 260 | ||
317 | #ifdef OHCI_VERBOSE_DEBUG | 261 | #ifdef OHCI_VERBOSE_DEBUG |
318 | urb_print (urb, "UNLINK", 1); | 262 | urb_print (urb, "UNLINK", 1); |
319 | #endif | 263 | #endif |
320 | 264 | ||
321 | spin_lock_irqsave (&ohci->lock, flags); | 265 | spin_lock_irqsave (&ohci->lock, flags); |
322 | if (HC_IS_RUNNING(hcd->state)) { | 266 | if (HC_IS_RUNNING(hcd->state)) { |
323 | urb_priv_t *urb_priv; | 267 | urb_priv_t *urb_priv; |
324 | 268 | ||
325 | /* Unless an IRQ completed the unlink while it was being | 269 | /* Unless an IRQ completed the unlink while it was being |
@@ -512,11 +456,11 @@ static int ohci_init (struct ohci_hcd *ohci) | |||
512 | 456 | ||
513 | /* Start an OHCI controller, set the BUS operational | 457 | /* Start an OHCI controller, set the BUS operational |
514 | * resets USB and controller | 458 | * resets USB and controller |
515 | * enable interrupts | 459 | * enable interrupts |
516 | */ | 460 | */ |
517 | static int ohci_run (struct ohci_hcd *ohci) | 461 | static int ohci_run (struct ohci_hcd *ohci) |
518 | { | 462 | { |
519 | u32 mask, temp; | 463 | u32 mask, temp; |
520 | int first = ohci->fminterval == 0; | 464 | int first = ohci->fminterval == 0; |
521 | struct usb_hcd *hcd = ohci_to_hcd(ohci); | 465 | struct usb_hcd *hcd = ohci_to_hcd(ohci); |
522 | 466 | ||
@@ -534,7 +478,7 @@ static int ohci_run (struct ohci_hcd *ohci) | |||
534 | /* also: power/overcurrent flags in roothub.a */ | 478 | /* also: power/overcurrent flags in roothub.a */ |
535 | } | 479 | } |
536 | 480 | ||
537 | /* Reset USB nearly "by the book". RemoteWakeupConnected was | 481 | /* Reset USB nearly "by the book". RemoteWakeupConnected was |
538 | * saved if boot firmware (BIOS/SMM/...) told us it's connected, | 482 | * saved if boot firmware (BIOS/SMM/...) told us it's connected, |
539 | * or if bus glue did the same (e.g. for PCI add-in cards with | 483 | * or if bus glue did the same (e.g. for PCI add-in cards with |
540 | * PCI PM support). | 484 | * PCI PM support). |
@@ -765,9 +709,9 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) | |||
765 | dl_done_list (ohci); | 709 | dl_done_list (ohci); |
766 | spin_unlock (&ohci->lock); | 710 | spin_unlock (&ohci->lock); |
767 | if (HC_IS_RUNNING(hcd->state)) | 711 | if (HC_IS_RUNNING(hcd->state)) |
768 | ohci_writel (ohci, OHCI_INTR_WDH, ®s->intrenable); | 712 | ohci_writel (ohci, OHCI_INTR_WDH, ®s->intrenable); |
769 | } | 713 | } |
770 | 714 | ||
771 | /* could track INTR_SO to reduce available PCI/... bandwidth */ | 715 | /* could track INTR_SO to reduce available PCI/... bandwidth */ |
772 | 716 | ||
773 | /* handle any pending URB/ED unlinks, leaving INTR_SF enabled | 717 | /* handle any pending URB/ED unlinks, leaving INTR_SF enabled |
@@ -778,12 +722,12 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) | |||
778 | finish_unlinks (ohci, ohci_frame_no(ohci)); | 722 | finish_unlinks (ohci, ohci_frame_no(ohci)); |
779 | if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list | 723 | if ((ints & OHCI_INTR_SF) != 0 && !ohci->ed_rm_list |
780 | && HC_IS_RUNNING(hcd->state)) | 724 | && HC_IS_RUNNING(hcd->state)) |
781 | ohci_writel (ohci, OHCI_INTR_SF, ®s->intrdisable); | 725 | ohci_writel (ohci, OHCI_INTR_SF, ®s->intrdisable); |
782 | spin_unlock (&ohci->lock); | 726 | spin_unlock (&ohci->lock); |
783 | 727 | ||
784 | if (HC_IS_RUNNING(hcd->state)) { | 728 | if (HC_IS_RUNNING(hcd->state)) { |
785 | ohci_writel (ohci, ints, ®s->intrstatus); | 729 | ohci_writel (ohci, ints, ®s->intrstatus); |
786 | ohci_writel (ohci, OHCI_INTR_MIE, ®s->intrenable); | 730 | ohci_writel (ohci, OHCI_INTR_MIE, ®s->intrenable); |
787 | // flush those writes | 731 | // flush those writes |
788 | (void) ohci_readl (ohci, &ohci->regs->control); | 732 | (void) ohci_readl (ohci, &ohci->regs->control); |
789 | } | 733 | } |
@@ -794,7 +738,7 @@ static irqreturn_t ohci_irq (struct usb_hcd *hcd) | |||
794 | /*-------------------------------------------------------------------------*/ | 738 | /*-------------------------------------------------------------------------*/ |
795 | 739 | ||
796 | static void ohci_stop (struct usb_hcd *hcd) | 740 | static void ohci_stop (struct usb_hcd *hcd) |
797 | { | 741 | { |
798 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); | 742 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); |
799 | 743 | ||
800 | ohci_dbg (ohci, "stop %s controller (state 0x%02x)\n", | 744 | ohci_dbg (ohci, "stop %s controller (state 0x%02x)\n", |
@@ -812,8 +756,8 @@ static void ohci_stop (struct usb_hcd *hcd) | |||
812 | remove_debug_files (ohci); | 756 | remove_debug_files (ohci); |
813 | ohci_mem_cleanup (ohci); | 757 | ohci_mem_cleanup (ohci); |
814 | if (ohci->hcca) { | 758 | if (ohci->hcca) { |
815 | dma_free_coherent (hcd->self.controller, | 759 | dma_free_coherent (hcd->self.controller, |
816 | sizeof *ohci->hcca, | 760 | sizeof *ohci->hcca, |
817 | ohci->hcca, ohci->hcca_dma); | 761 | ohci->hcca, ohci->hcca_dma); |
818 | ohci->hcca = NULL; | 762 | ohci->hcca = NULL; |
819 | ohci->hcca_dma = 0; | 763 | ohci->hcca_dma = 0; |
@@ -836,7 +780,7 @@ static int ohci_restart (struct ohci_hcd *ohci) | |||
836 | * recycle any "live" eds/tds (and urbs) right away. | 780 | * recycle any "live" eds/tds (and urbs) right away. |
837 | * later, khubd disconnect processing will recycle the other state, | 781 | * later, khubd disconnect processing will recycle the other state, |
838 | * (either as disconnect/reconnect, or maybe someday as a reset). | 782 | * (either as disconnect/reconnect, or maybe someday as a reset). |
839 | */ | 783 | */ |
840 | spin_lock_irq(&ohci->lock); | 784 | spin_lock_irq(&ohci->lock); |
841 | disable (ohci); | 785 | disable (ohci); |
842 | usb_root_hub_lost_power(ohci_to_hcd(ohci)->self.root_hub); | 786 | usb_root_hub_lost_power(ohci_to_hcd(ohci)->self.root_hub); |
@@ -875,11 +819,11 @@ static int ohci_restart (struct ohci_hcd *ohci) | |||
875 | /* empty the interrupt branches */ | 819 | /* empty the interrupt branches */ |
876 | for (i = 0; i < NUM_INTS; i++) ohci->load [i] = 0; | 820 | for (i = 0; i < NUM_INTS; i++) ohci->load [i] = 0; |
877 | for (i = 0; i < NUM_INTS; i++) ohci->hcca->int_table [i] = 0; | 821 | for (i = 0; i < NUM_INTS; i++) ohci->hcca->int_table [i] = 0; |
878 | 822 | ||
879 | /* no EDs to remove */ | 823 | /* no EDs to remove */ |
880 | ohci->ed_rm_list = NULL; | 824 | ohci->ed_rm_list = NULL; |
881 | 825 | ||
882 | /* empty control and bulk lists */ | 826 | /* empty control and bulk lists */ |
883 | ohci->ed_controltail = NULL; | 827 | ohci->ed_controltail = NULL; |
884 | ohci->ed_bulktail = NULL; | 828 | ohci->ed_bulktail = NULL; |
885 | 829 | ||
@@ -941,6 +885,10 @@ MODULE_LICENSE ("GPL"); | |||
941 | #include "ohci-au1xxx.c" | 885 | #include "ohci-au1xxx.c" |
942 | #endif | 886 | #endif |
943 | 887 | ||
888 | #ifdef CONFIG_PNX8550 | ||
889 | #include "ohci-pnx8550.c" | ||
890 | #endif | ||
891 | |||
944 | #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC | 892 | #ifdef CONFIG_USB_OHCI_HCD_PPC_SOC |
945 | #include "ohci-ppc-soc.c" | 893 | #include "ohci-ppc-soc.c" |
946 | #endif | 894 | #endif |
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c index 2441642cb7b4..216c9c9d4d6d 100644 --- a/drivers/usb/host/ohci-hub.c +++ b/drivers/usb/host/ohci-hub.c | |||
@@ -1,9 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * OHCI HCD (Host Controller Driver) for USB. | 2 | * OHCI HCD (Host Controller Driver) for USB. |
3 | * | 3 | * |
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net> |
6 | * | 6 | * |
7 | * This file is licenced under GPL | 7 | * This file is licenced under GPL |
8 | */ | 8 | */ |
9 | 9 | ||
@@ -23,13 +23,13 @@ | |||
23 | (temp & RH_PS_PSSC) ? " PSSC" : "", \ | 23 | (temp & RH_PS_PSSC) ? " PSSC" : "", \ |
24 | (temp & RH_PS_PESC) ? " PESC" : "", \ | 24 | (temp & RH_PS_PESC) ? " PESC" : "", \ |
25 | (temp & RH_PS_CSC) ? " CSC" : "", \ | 25 | (temp & RH_PS_CSC) ? " CSC" : "", \ |
26 | \ | 26 | \ |
27 | (temp & RH_PS_LSDA) ? " LSDA" : "", \ | 27 | (temp & RH_PS_LSDA) ? " LSDA" : "", \ |
28 | (temp & RH_PS_PPS) ? " PPS" : "", \ | 28 | (temp & RH_PS_PPS) ? " PPS" : "", \ |
29 | (temp & RH_PS_PRS) ? " PRS" : "", \ | 29 | (temp & RH_PS_PRS) ? " PRS" : "", \ |
30 | (temp & RH_PS_POCI) ? " POCI" : "", \ | 30 | (temp & RH_PS_POCI) ? " POCI" : "", \ |
31 | (temp & RH_PS_PSS) ? " PSS" : "", \ | 31 | (temp & RH_PS_PSS) ? " PSS" : "", \ |
32 | \ | 32 | \ |
33 | (temp & RH_PS_PES) ? " PES" : "", \ | 33 | (temp & RH_PS_PES) ? " PES" : "", \ |
34 | (temp & RH_PS_CCS) ? " CCS" : "" \ | 34 | (temp & RH_PS_CCS) ? " CCS" : "" \ |
35 | ); | 35 | ); |
@@ -484,7 +484,7 @@ ohci_hub_descriptor ( | |||
484 | temp = 0; | 484 | temp = 0; |
485 | if (rh & RH_A_NPS) /* no power switching? */ | 485 | if (rh & RH_A_NPS) /* no power switching? */ |
486 | temp |= 0x0002; | 486 | temp |= 0x0002; |
487 | if (rh & RH_A_PSM) /* per-port power switching? */ | 487 | if (rh & RH_A_PSM) /* per-port power switching? */ |
488 | temp |= 0x0001; | 488 | temp |= 0x0001; |
489 | if (rh & RH_A_NOCP) /* no overcurrent reporting? */ | 489 | if (rh & RH_A_NOCP) /* no overcurrent reporting? */ |
490 | temp |= 0x0010; | 490 | temp |= 0x0010; |
@@ -555,7 +555,7 @@ static void start_hnp(struct ohci_hcd *ohci); | |||
555 | #define tick_before(t1,t2) ((s16)(((s16)(t1))-((s16)(t2))) < 0) | 555 | #define tick_before(t1,t2) ((s16)(((s16)(t1))-((s16)(t2))) < 0) |
556 | 556 | ||
557 | /* called from some task, normally khubd */ | 557 | /* called from some task, normally khubd */ |
558 | static inline void root_port_reset (struct ohci_hcd *ohci, unsigned port) | 558 | static inline int root_port_reset (struct ohci_hcd *ohci, unsigned port) |
559 | { | 559 | { |
560 | __hc32 __iomem *portstat = &ohci->regs->roothub.portstatus [port]; | 560 | __hc32 __iomem *portstat = &ohci->regs->roothub.portstatus [port]; |
561 | u32 temp; | 561 | u32 temp; |
@@ -570,10 +570,13 @@ static inline void root_port_reset (struct ohci_hcd *ohci, unsigned port) | |||
570 | /* spin until any current reset finishes */ | 570 | /* spin until any current reset finishes */ |
571 | for (;;) { | 571 | for (;;) { |
572 | temp = ohci_readl (ohci, portstat); | 572 | temp = ohci_readl (ohci, portstat); |
573 | /* handle e.g. CardBus eject */ | ||
574 | if (temp == ~(u32)0) | ||
575 | return -ESHUTDOWN; | ||
573 | if (!(temp & RH_PS_PRS)) | 576 | if (!(temp & RH_PS_PRS)) |
574 | break; | 577 | break; |
575 | udelay (500); | 578 | udelay (500); |
576 | } | 579 | } |
577 | 580 | ||
578 | if (!(temp & RH_PS_CCS)) | 581 | if (!(temp & RH_PS_CCS)) |
579 | break; | 582 | break; |
@@ -586,6 +589,8 @@ static inline void root_port_reset (struct ohci_hcd *ohci, unsigned port) | |||
586 | now = ohci_readl(ohci, &ohci->regs->fmnumber); | 589 | now = ohci_readl(ohci, &ohci->regs->fmnumber); |
587 | } while (tick_before(now, reset_done)); | 590 | } while (tick_before(now, reset_done)); |
588 | /* caller synchronizes using PRSC */ | 591 | /* caller synchronizes using PRSC */ |
592 | |||
593 | return 0; | ||
589 | } | 594 | } |
590 | 595 | ||
591 | static int ohci_hub_control ( | 596 | static int ohci_hub_control ( |
@@ -702,7 +707,7 @@ static int ohci_hub_control ( | |||
702 | &ohci->regs->roothub.portstatus [wIndex]); | 707 | &ohci->regs->roothub.portstatus [wIndex]); |
703 | break; | 708 | break; |
704 | case USB_PORT_FEAT_RESET: | 709 | case USB_PORT_FEAT_RESET: |
705 | root_port_reset (ohci, wIndex); | 710 | retval = root_port_reset (ohci, wIndex); |
706 | break; | 711 | break; |
707 | default: | 712 | default: |
708 | goto error; | 713 | goto error; |
diff --git a/drivers/usb/host/ohci-lh7a404.c b/drivers/usb/host/ohci-lh7a404.c index e121d97ed91c..e9807cf73a2f 100644 --- a/drivers/usb/host/ohci-lh7a404.c +++ b/drivers/usb/host/ohci-lh7a404.c | |||
@@ -38,7 +38,7 @@ static void lh7a404_start_hc(struct platform_device *dev) | |||
38 | CSC_PWRCNT |= CSC_PWRCNT_USBH_EN; /* Enable clock */ | 38 | CSC_PWRCNT |= CSC_PWRCNT_USBH_EN; /* Enable clock */ |
39 | udelay(1000); | 39 | udelay(1000); |
40 | USBH_CMDSTATUS = OHCI_HCR; | 40 | USBH_CMDSTATUS = OHCI_HCR; |
41 | 41 | ||
42 | printk(KERN_DEBUG __FILE__ | 42 | printk(KERN_DEBUG __FILE__ |
43 | ": Clock to USB host has been enabled \n"); | 43 | ": Clock to USB host has been enabled \n"); |
44 | } | 44 | } |
@@ -89,7 +89,7 @@ int usb_hcd_lh7a404_probe (const struct hc_driver *driver, | |||
89 | retval = -EBUSY; | 89 | retval = -EBUSY; |
90 | goto err1; | 90 | goto err1; |
91 | } | 91 | } |
92 | 92 | ||
93 | hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); | 93 | hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); |
94 | if (!hcd->regs) { | 94 | if (!hcd->regs) { |
95 | pr_debug("ioremap failed"); | 95 | pr_debug("ioremap failed"); |
@@ -174,7 +174,7 @@ static const struct hc_driver ohci_lh7a404_hc_driver = { | |||
174 | */ | 174 | */ |
175 | .start = ohci_lh7a404_start, | 175 | .start = ohci_lh7a404_start, |
176 | .stop = ohci_stop, | 176 | .stop = ohci_stop, |
177 | .shutdown = ohci_shutdown, | 177 | .shutdown = ohci_shutdown, |
178 | 178 | ||
179 | /* | 179 | /* |
180 | * managing i/o requests and associated device resources | 180 | * managing i/o requests and associated device resources |
@@ -242,7 +242,7 @@ static int ohci_hcd_lh7a404_drv_resume(struct platform_device *dev) | |||
242 | static struct platform_driver ohci_hcd_lh7a404_driver = { | 242 | static struct platform_driver ohci_hcd_lh7a404_driver = { |
243 | .probe = ohci_hcd_lh7a404_drv_probe, | 243 | .probe = ohci_hcd_lh7a404_drv_probe, |
244 | .remove = ohci_hcd_lh7a404_drv_remove, | 244 | .remove = ohci_hcd_lh7a404_drv_remove, |
245 | .shutdown = usb_hcd_platform_shutdown, | 245 | .shutdown = usb_hcd_platform_shutdown, |
246 | /*.suspend = ohci_hcd_lh7a404_drv_suspend, */ | 246 | /*.suspend = ohci_hcd_lh7a404_drv_suspend, */ |
247 | /*.resume = ohci_hcd_lh7a404_drv_resume, */ | 247 | /*.resume = ohci_hcd_lh7a404_drv_resume, */ |
248 | .driver = { | 248 | .driver = { |
diff --git a/drivers/usb/host/ohci-mem.c b/drivers/usb/host/ohci-mem.c index d976614eebd3..2f20d3dc895b 100644 --- a/drivers/usb/host/ohci-mem.c +++ b/drivers/usb/host/ohci-mem.c | |||
@@ -1,24 +1,24 @@ | |||
1 | /* | 1 | /* |
2 | * OHCI HCD (Host Controller Driver) for USB. | 2 | * OHCI HCD (Host Controller Driver) for USB. |
3 | * | 3 | * |
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> |
6 | * | 6 | * |
7 | * This file is licenced under the GPL. | 7 | * This file is licenced under the GPL. |
8 | */ | 8 | */ |
9 | 9 | ||
10 | /*-------------------------------------------------------------------------*/ | 10 | /*-------------------------------------------------------------------------*/ |
11 | 11 | ||
12 | /* | 12 | /* |
13 | * There's basically three types of memory: | 13 | * OHCI deals with three types of memory: |
14 | * - data used only by the HCD ... kmalloc is fine | 14 | * - data used only by the HCD ... kmalloc is fine |
15 | * - async and periodic schedules, shared by HC and HCD ... these | 15 | * - async and periodic schedules, shared by HC and HCD ... these |
16 | * need to use dma_pool or dma_alloc_coherent | 16 | * need to use dma_pool or dma_alloc_coherent |
17 | * - driver buffers, read/written by HC ... the hcd glue or the | 17 | * - driver buffers, read/written by HC ... the hcd glue or the |
18 | * device driver provides us with dma addresses | 18 | * device driver provides us with dma addresses |
19 | * | 19 | * |
20 | * There's also PCI "register" data, which is memory mapped. | 20 | * There's also "register" data, which is memory mapped. |
21 | * No memory seen by this driver is pagable. | 21 | * No memory seen by this driver (or any HCD) may be paged out. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | /*-------------------------------------------------------------------------*/ | 24 | /*-------------------------------------------------------------------------*/ |
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c index 9c02177de50a..27be1f936885 100644 --- a/drivers/usb/host/ohci-omap.c +++ b/drivers/usb/host/ohci-omap.c | |||
@@ -447,7 +447,7 @@ static const struct hc_driver ohci_omap_hc_driver = { | |||
447 | .reset = ohci_omap_init, | 447 | .reset = ohci_omap_init, |
448 | .start = ohci_omap_start, | 448 | .start = ohci_omap_start, |
449 | .stop = ohci_omap_stop, | 449 | .stop = ohci_omap_stop, |
450 | .shutdown = ohci_shutdown, | 450 | .shutdown = ohci_shutdown, |
451 | 451 | ||
452 | /* | 452 | /* |
453 | * managing i/o requests and associated device resources | 453 | * managing i/o requests and associated device resources |
@@ -533,7 +533,7 @@ static int ohci_omap_resume(struct platform_device *dev) | |||
533 | static struct platform_driver ohci_hcd_omap_driver = { | 533 | static struct platform_driver ohci_hcd_omap_driver = { |
534 | .probe = ohci_hcd_omap_drv_probe, | 534 | .probe = ohci_hcd_omap_drv_probe, |
535 | .remove = ohci_hcd_omap_drv_remove, | 535 | .remove = ohci_hcd_omap_drv_remove, |
536 | .shutdown = usb_hcd_platform_shutdown, | 536 | .shutdown = usb_hcd_platform_shutdown, |
537 | #ifdef CONFIG_PM | 537 | #ifdef CONFIG_PM |
538 | .suspend = ohci_omap_suspend, | 538 | .suspend = ohci_omap_suspend, |
539 | .resume = ohci_omap_resume, | 539 | .resume = ohci_omap_resume, |
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c index 874418552789..596e0b41e606 100644 --- a/drivers/usb/host/ohci-pci.c +++ b/drivers/usb/host/ohci-pci.c | |||
@@ -3,17 +3,17 @@ | |||
3 | * | 3 | * |
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> |
6 | * | 6 | * |
7 | * [ Initialisation is based on Linus' ] | 7 | * [ Initialisation is based on Linus' ] |
8 | * [ uhci code and gregs ohci fragments ] | 8 | * [ uhci code and gregs ohci fragments ] |
9 | * [ (C) Copyright 1999 Linus Torvalds ] | 9 | * [ (C) Copyright 1999 Linus Torvalds ] |
10 | * [ (C) Copyright 1999 Gregory P. Smith] | 10 | * [ (C) Copyright 1999 Gregory P. Smith] |
11 | * | 11 | * |
12 | * PCI Bus Glue | 12 | * PCI Bus Glue |
13 | * | 13 | * |
14 | * This file is licenced under the GPL. | 14 | * This file is licenced under the GPL. |
15 | */ | 15 | */ |
16 | 16 | ||
17 | #ifndef CONFIG_PCI | 17 | #ifndef CONFIG_PCI |
18 | #error "This file is PCI bus glue. CONFIG_PCI must be defined." | 18 | #error "This file is PCI bus glue. CONFIG_PCI must be defined." |
19 | #endif | 19 | #endif |
@@ -83,7 +83,7 @@ ohci_pci_start (struct usb_hcd *hcd) | |||
83 | pci_dev_put(b); | 83 | pci_dev_put(b); |
84 | } | 84 | } |
85 | 85 | ||
86 | /* Check for Compaq's ZFMicro chipset, which needs short | 86 | /* Check for Compaq's ZFMicro chipset, which needs short |
87 | * delays before control or bulk queues get re-activated | 87 | * delays before control or bulk queues get re-activated |
88 | * in finish_unlinks() | 88 | * in finish_unlinks() |
89 | */ | 89 | */ |
@@ -238,8 +238,8 @@ static struct pci_driver ohci_pci_driver = { | |||
238 | .shutdown = usb_hcd_pci_shutdown, | 238 | .shutdown = usb_hcd_pci_shutdown, |
239 | }; | 239 | }; |
240 | 240 | ||
241 | 241 | ||
242 | static int __init ohci_hcd_pci_init (void) | 242 | static int __init ohci_hcd_pci_init (void) |
243 | { | 243 | { |
244 | printk (KERN_DEBUG "%s: " DRIVER_INFO " (PCI)\n", hcd_name); | 244 | printk (KERN_DEBUG "%s: " DRIVER_INFO " (PCI)\n", hcd_name); |
245 | if (usb_disabled()) | 245 | if (usb_disabled()) |
@@ -253,8 +253,8 @@ module_init (ohci_hcd_pci_init); | |||
253 | 253 | ||
254 | /*-------------------------------------------------------------------------*/ | 254 | /*-------------------------------------------------------------------------*/ |
255 | 255 | ||
256 | static void __exit ohci_hcd_pci_cleanup (void) | 256 | static void __exit ohci_hcd_pci_cleanup (void) |
257 | { | 257 | { |
258 | pci_unregister_driver (&ohci_pci_driver); | 258 | pci_unregister_driver (&ohci_pci_driver); |
259 | } | 259 | } |
260 | module_exit (ohci_hcd_pci_cleanup); | 260 | module_exit (ohci_hcd_pci_cleanup); |
diff --git a/drivers/usb/host/ohci-pnx4008.c b/drivers/usb/host/ohci-pnx4008.c index 7f26f9bdbaf1..3a8cbfb69054 100644 --- a/drivers/usb/host/ohci-pnx4008.c +++ b/drivers/usb/host/ohci-pnx4008.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * driver for Philips PNX4008 USB Host | 4 | * driver for Philips PNX4008 USB Host |
5 | * | 5 | * |
6 | * Authors: Dmitry Chigirev <source@mvista.com> | 6 | * Authors: Dmitry Chigirev <source@mvista.com> |
7 | * Vitaly Wool <vitalywool@gmail.com> | 7 | * Vitaly Wool <vitalywool@gmail.com> |
8 | * | 8 | * |
9 | * register initialization is based on code examples provided by Philips | 9 | * register initialization is based on code examples provided by Philips |
10 | * Copyright (c) 2005 Koninklijke Philips Electronics N.V. | 10 | * Copyright (c) 2005 Koninklijke Philips Electronics N.V. |
@@ -29,7 +29,7 @@ | |||
29 | #include <asm/arch/irqs.h> | 29 | #include <asm/arch/irqs.h> |
30 | #include <asm/arch/gpio.h> | 30 | #include <asm/arch/gpio.h> |
31 | 31 | ||
32 | #define USB_CTRL IO_ADDRESS(PNX4008_PWRMAN_BASE + 0x64) | 32 | #define USB_CTRL IO_ADDRESS(PNX4008_PWRMAN_BASE + 0x64) |
33 | 33 | ||
34 | /* USB_CTRL bit defines */ | 34 | /* USB_CTRL bit defines */ |
35 | #define USB_SLAVE_HCLK_EN (1 << 24) | 35 | #define USB_SLAVE_HCLK_EN (1 << 24) |
diff --git a/drivers/usb/host/ohci-pnx8550.c b/drivers/usb/host/ohci-pnx8550.c new file mode 100644 index 000000000000..6922b91b1704 --- /dev/null +++ b/drivers/usb/host/ohci-pnx8550.c | |||
@@ -0,0 +1,258 @@ | |||
1 | /* | ||
2 | * OHCI HCD (Host Controller Driver) for USB. | ||
3 | * | ||
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | ||
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | ||
6 | * (C) Copyright 2002 Hewlett-Packard Company | ||
7 | * (C) Copyright 2005 Embedded Alley Solutions, Inc. | ||
8 | * | ||
9 | * Bus Glue for PNX8550 | ||
10 | * | ||
11 | * Written by Christopher Hoover <ch@hpl.hp.com> | ||
12 | * Based on fragments of previous driver by Russell King et al. | ||
13 | * | ||
14 | * Modified for LH7A404 from ohci-sa1111.c | ||
15 | * by Durgesh Pattamatta <pattamattad@sharpsec.com> | ||
16 | * | ||
17 | * Modified for PNX8550 from ohci-sa1111.c and sa-omap.c | ||
18 | * by Vitaly Wool <vitalywool@gmail.com> | ||
19 | * | ||
20 | * This file is licenced under the GPL. | ||
21 | */ | ||
22 | |||
23 | #include <linux/device.h> | ||
24 | #include <linux/platform_device.h> | ||
25 | #include <asm/mach-pnx8550/usb.h> | ||
26 | #include <asm/mach-pnx8550/int.h> | ||
27 | #include <asm/mach-pnx8550/pci.h> | ||
28 | |||
29 | #ifndef CONFIG_PNX8550 | ||
30 | #error "This file is PNX8550 bus glue. CONFIG_PNX8550 must be defined." | ||
31 | #endif | ||
32 | |||
33 | extern int usb_disabled(void); | ||
34 | |||
35 | /*-------------------------------------------------------------------------*/ | ||
36 | |||
37 | static void pnx8550_start_hc(struct platform_device *dev) | ||
38 | { | ||
39 | /* | ||
40 | * Set register CLK48CTL to enable and 48MHz | ||
41 | */ | ||
42 | outl(0x00000003, PCI_BASE | 0x0004770c); | ||
43 | |||
44 | /* | ||
45 | * Set register CLK12CTL to enable and 48MHz | ||
46 | */ | ||
47 | outl(0x00000003, PCI_BASE | 0x00047710); | ||
48 | |||
49 | udelay(100); | ||
50 | } | ||
51 | |||
52 | static void pnx8550_stop_hc(struct platform_device *dev) | ||
53 | { | ||
54 | udelay(10); | ||
55 | } | ||
56 | |||
57 | |||
58 | /*-------------------------------------------------------------------------*/ | ||
59 | |||
60 | /* configure so an HC device and id are always provided */ | ||
61 | /* always called with process context; sleeping is OK */ | ||
62 | |||
63 | |||
64 | /** | ||
65 | * usb_hcd_pnx8550_probe - initialize pnx8550-based HCDs | ||
66 | * Context: !in_interrupt() | ||
67 | * | ||
68 | * Allocates basic resources for this USB host controller, and | ||
69 | * then invokes the start() method for the HCD associated with it | ||
70 | * through the hotplug entry's driver_data. | ||
71 | * | ||
72 | */ | ||
73 | int usb_hcd_pnx8550_probe (const struct hc_driver *driver, | ||
74 | struct platform_device *dev) | ||
75 | { | ||
76 | int retval; | ||
77 | struct usb_hcd *hcd; | ||
78 | |||
79 | if (dev->resource[0].flags != IORESOURCE_MEM || | ||
80 | dev->resource[1].flags != IORESOURCE_IRQ) { | ||
81 | dev_err (&dev->dev,"invalid resource type\n"); | ||
82 | return -ENOMEM; | ||
83 | } | ||
84 | |||
85 | hcd = usb_create_hcd (driver, &dev->dev, "pnx8550"); | ||
86 | if (!hcd) | ||
87 | return -ENOMEM; | ||
88 | hcd->rsrc_start = dev->resource[0].start; | ||
89 | hcd->rsrc_len = dev->resource[0].end - dev->resource[0].start + 1; | ||
90 | |||
91 | if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) { | ||
92 | dev_err(&dev->dev, "request_mem_region [0x%08llx, 0x%08llx] " | ||
93 | "failed\n", hcd->rsrc_start, hcd->rsrc_len); | ||
94 | retval = -EBUSY; | ||
95 | goto err1; | ||
96 | } | ||
97 | |||
98 | hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); | ||
99 | if (!hcd->regs) { | ||
100 | dev_err(&dev->dev, "ioremap [[0x%08llx, 0x%08llx] failed\n", | ||
101 | hcd->rsrc_start, hcd->rsrc_len); | ||
102 | retval = -ENOMEM; | ||
103 | goto err2; | ||
104 | } | ||
105 | |||
106 | pnx8550_start_hc(dev); | ||
107 | |||
108 | ohci_hcd_init(hcd_to_ohci(hcd)); | ||
109 | |||
110 | retval = usb_add_hcd(hcd, dev->resource[1].start, SA_INTERRUPT); | ||
111 | if (retval == 0) | ||
112 | return retval; | ||
113 | |||
114 | pnx8550_stop_hc(dev); | ||
115 | iounmap(hcd->regs); | ||
116 | err2: | ||
117 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); | ||
118 | err1: | ||
119 | usb_put_hcd(hcd); | ||
120 | return retval; | ||
121 | } | ||
122 | |||
123 | |||
124 | /* may be called without controller electrically present */ | ||
125 | /* may be called with controller, bus, and devices active */ | ||
126 | |||
127 | /** | ||
128 | * usb_hcd_pnx8550_remove - shutdown processing for pnx8550-based HCDs | ||
129 | * @dev: USB Host Controller being removed | ||
130 | * Context: !in_interrupt() | ||
131 | * | ||
132 | * Reverses the effect of usb_hcd_pnx8550_probe(), first invoking | ||
133 | * the HCD's stop() method. It is always called from a thread | ||
134 | * context, normally "rmmod", "apmd", or something similar. | ||
135 | * | ||
136 | */ | ||
137 | void usb_hcd_pnx8550_remove (struct usb_hcd *hcd, struct platform_device *dev) | ||
138 | { | ||
139 | usb_remove_hcd(hcd); | ||
140 | pnx8550_stop_hc(dev); | ||
141 | iounmap(hcd->regs); | ||
142 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); | ||
143 | usb_put_hcd(hcd); | ||
144 | } | ||
145 | |||
146 | /*-------------------------------------------------------------------------*/ | ||
147 | |||
148 | static int __devinit | ||
149 | ohci_pnx8550_start (struct usb_hcd *hcd) | ||
150 | { | ||
151 | struct ohci_hcd *ohci = hcd_to_ohci (hcd); | ||
152 | int ret; | ||
153 | |||
154 | ohci_dbg (ohci, "ohci_pnx8550_start, ohci:%p", ohci); | ||
155 | |||
156 | if ((ret = ohci_init(ohci)) < 0) | ||
157 | return ret; | ||
158 | |||
159 | if ((ret = ohci_run (ohci)) < 0) { | ||
160 | err ("can't start %s", hcd->self.bus_name); | ||
161 | ohci_stop (hcd); | ||
162 | return ret; | ||
163 | } | ||
164 | |||
165 | return 0; | ||
166 | } | ||
167 | |||
168 | /*-------------------------------------------------------------------------*/ | ||
169 | |||
170 | static const struct hc_driver ohci_pnx8550_hc_driver = { | ||
171 | .description = hcd_name, | ||
172 | .product_desc = "PNX8550 OHCI", | ||
173 | .hcd_priv_size = sizeof(struct ohci_hcd), | ||
174 | |||
175 | /* | ||
176 | * generic hardware linkage | ||
177 | */ | ||
178 | .irq = ohci_irq, | ||
179 | .flags = HCD_USB11 | HCD_MEMORY, | ||
180 | |||
181 | /* | ||
182 | * basic lifecycle operations | ||
183 | */ | ||
184 | .start = ohci_pnx8550_start, | ||
185 | .stop = ohci_stop, | ||
186 | |||
187 | /* | ||
188 | * managing i/o requests and associated device resources | ||
189 | */ | ||
190 | .urb_enqueue = ohci_urb_enqueue, | ||
191 | .urb_dequeue = ohci_urb_dequeue, | ||
192 | .endpoint_disable = ohci_endpoint_disable, | ||
193 | |||
194 | /* | ||
195 | * scheduling support | ||
196 | */ | ||
197 | .get_frame_number = ohci_get_frame, | ||
198 | |||
199 | /* | ||
200 | * root hub support | ||
201 | */ | ||
202 | .hub_status_data = ohci_hub_status_data, | ||
203 | .hub_control = ohci_hub_control, | ||
204 | .hub_irq_enable = ohci_rhsc_enable, | ||
205 | #ifdef CONFIG_PM | ||
206 | .bus_suspend = ohci_bus_suspend, | ||
207 | .bus_resume = ohci_bus_resume, | ||
208 | #endif | ||
209 | .start_port_reset = ohci_start_port_reset, | ||
210 | }; | ||
211 | |||
212 | /*-------------------------------------------------------------------------*/ | ||
213 | |||
214 | static int ohci_hcd_pnx8550_drv_probe(struct platform_device *pdev) | ||
215 | { | ||
216 | int ret; | ||
217 | |||
218 | if (usb_disabled()) | ||
219 | return -ENODEV; | ||
220 | |||
221 | ret = usb_hcd_pnx8550_probe(&ohci_pnx8550_hc_driver, pdev); | ||
222 | return ret; | ||
223 | } | ||
224 | |||
225 | static int ohci_hcd_pnx8550_drv_remove(struct platform_device *pdev) | ||
226 | { | ||
227 | struct usb_hcd *hcd = platform_get_drvdata(pdev); | ||
228 | |||
229 | usb_hcd_pnx8550_remove(hcd, pdev); | ||
230 | return 0; | ||
231 | } | ||
232 | |||
233 | MODULE_ALIAS("pnx8550-ohci"); | ||
234 | |||
235 | static struct platform_driver ohci_hcd_pnx8550_driver = { | ||
236 | .driver = { | ||
237 | .name = "pnx8550-ohci", | ||
238 | }, | ||
239 | .probe = ohci_hcd_pnx8550_drv_probe, | ||
240 | .remove = ohci_hcd_pnx8550_drv_remove, | ||
241 | }; | ||
242 | |||
243 | static int __init ohci_hcd_pnx8550_init (void) | ||
244 | { | ||
245 | pr_debug (DRIVER_INFO " (pnx8550)"); | ||
246 | pr_debug ("block sizes: ed %d td %d\n", | ||
247 | sizeof (struct ed), sizeof (struct td)); | ||
248 | |||
249 | return platform_driver_register(&ohci_hcd_pnx8550_driver); | ||
250 | } | ||
251 | |||
252 | static void __exit ohci_hcd_pnx8550_cleanup (void) | ||
253 | { | ||
254 | platform_driver_unregister(&ohci_hcd_pnx8550_driver); | ||
255 | } | ||
256 | |||
257 | module_init (ohci_hcd_pnx8550_init); | ||
258 | module_exit (ohci_hcd_pnx8550_cleanup); | ||
diff --git a/drivers/usb/host/ohci-ppc-soc.c b/drivers/usb/host/ohci-ppc-soc.c index d9d1ae236bd5..e1a7eb817313 100644 --- a/drivers/usb/host/ohci-ppc-soc.c +++ b/drivers/usb/host/ohci-ppc-soc.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> |
6 | * (C) Copyright 2002 Hewlett-Packard Company | 6 | * (C) Copyright 2002 Hewlett-Packard Company |
7 | * (C) Copyright 2003-2005 MontaVista Software Inc. | 7 | * (C) Copyright 2003-2005 MontaVista Software Inc. |
8 | * | 8 | * |
9 | * Bus Glue for PPC On-Chip OHCI driver | 9 | * Bus Glue for PPC On-Chip OHCI driver |
10 | * Tested on Freescale MPC5200 and IBM STB04xxx | 10 | * Tested on Freescale MPC5200 and IBM STB04xxx |
11 | * | 11 | * |
@@ -85,7 +85,7 @@ static int usb_hcd_ppc_soc_probe(const struct hc_driver *driver, | |||
85 | err2: | 85 | err2: |
86 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); | 86 | release_mem_region(hcd->rsrc_start, hcd->rsrc_len); |
87 | err1: | 87 | err1: |
88 | usb_put_hcd(hcd); | 88 | usb_put_hcd(hcd); |
89 | return retval; | 89 | return retval; |
90 | } | 90 | } |
91 | 91 | ||
@@ -148,7 +148,7 @@ static const struct hc_driver ohci_ppc_soc_hc_driver = { | |||
148 | */ | 148 | */ |
149 | .start = ohci_ppc_soc_start, | 149 | .start = ohci_ppc_soc_start, |
150 | .stop = ohci_stop, | 150 | .stop = ohci_stop, |
151 | .shutdown = ohci_shutdown, | 151 | .shutdown = ohci_shutdown, |
152 | 152 | ||
153 | /* | 153 | /* |
154 | * managing i/o requests and associated device resources | 154 | * managing i/o requests and associated device resources |
@@ -197,7 +197,7 @@ static int ohci_hcd_ppc_soc_drv_remove(struct platform_device *pdev) | |||
197 | static struct platform_driver ohci_hcd_ppc_soc_driver = { | 197 | static struct platform_driver ohci_hcd_ppc_soc_driver = { |
198 | .probe = ohci_hcd_ppc_soc_drv_probe, | 198 | .probe = ohci_hcd_ppc_soc_drv_probe, |
199 | .remove = ohci_hcd_ppc_soc_drv_remove, | 199 | .remove = ohci_hcd_ppc_soc_drv_remove, |
200 | .shutdown = usb_hcd_platform_shutdown, | 200 | .shutdown = usb_hcd_platform_shutdown, |
201 | #ifdef CONFIG_PM | 201 | #ifdef CONFIG_PM |
202 | /*.suspend = ohci_hcd_ppc_soc_drv_suspend,*/ | 202 | /*.suspend = ohci_hcd_ppc_soc_drv_suspend,*/ |
203 | /*.resume = ohci_hcd_ppc_soc_drv_resume,*/ | 203 | /*.resume = ohci_hcd_ppc_soc_drv_resume,*/ |
diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c index e176b04d7aeb..3bbea844a9e3 100644 --- a/drivers/usb/host/ohci-pxa27x.c +++ b/drivers/usb/host/ohci-pxa27x.c | |||
@@ -47,7 +47,7 @@ static int pxa27x_ohci_select_pmm( int mode ) | |||
47 | switch ( mode ) { | 47 | switch ( mode ) { |
48 | case PMM_NPS_MODE: | 48 | case PMM_NPS_MODE: |
49 | UHCRHDA |= RH_A_NPS; | 49 | UHCRHDA |= RH_A_NPS; |
50 | break; | 50 | break; |
51 | case PMM_GLOBAL_MODE: | 51 | case PMM_GLOBAL_MODE: |
52 | UHCRHDA &= ~(RH_A_NPS & RH_A_PSM); | 52 | UHCRHDA &= ~(RH_A_NPS & RH_A_PSM); |
53 | break; | 53 | break; |
@@ -60,7 +60,7 @@ static int pxa27x_ohci_select_pmm( int mode ) | |||
60 | break; | 60 | break; |
61 | default: | 61 | default: |
62 | printk( KERN_ERR | 62 | printk( KERN_ERR |
63 | "Invalid mode %d, set to non-power switch mode.\n", | 63 | "Invalid mode %d, set to non-power switch mode.\n", |
64 | mode ); | 64 | mode ); |
65 | 65 | ||
66 | UHCRHDA |= RH_A_NPS; | 66 | UHCRHDA |= RH_A_NPS; |
@@ -270,7 +270,7 @@ static const struct hc_driver ohci_pxa27x_hc_driver = { | |||
270 | */ | 270 | */ |
271 | .start = ohci_pxa27x_start, | 271 | .start = ohci_pxa27x_start, |
272 | .stop = ohci_stop, | 272 | .stop = ohci_stop, |
273 | .shutdown = ohci_shutdown, | 273 | .shutdown = ohci_shutdown, |
274 | 274 | ||
275 | /* | 275 | /* |
276 | * managing i/o requests and associated device resources | 276 | * managing i/o requests and associated device resources |
@@ -359,9 +359,9 @@ static int ohci_hcd_pxa27x_drv_resume(struct platform_device *pdev) | |||
359 | static struct platform_driver ohci_hcd_pxa27x_driver = { | 359 | static struct platform_driver ohci_hcd_pxa27x_driver = { |
360 | .probe = ohci_hcd_pxa27x_drv_probe, | 360 | .probe = ohci_hcd_pxa27x_drv_probe, |
361 | .remove = ohci_hcd_pxa27x_drv_remove, | 361 | .remove = ohci_hcd_pxa27x_drv_remove, |
362 | .shutdown = usb_hcd_platform_shutdown, | 362 | .shutdown = usb_hcd_platform_shutdown, |
363 | #ifdef CONFIG_PM | 363 | #ifdef CONFIG_PM |
364 | .suspend = ohci_hcd_pxa27x_drv_suspend, | 364 | .suspend = ohci_hcd_pxa27x_drv_suspend, |
365 | .resume = ohci_hcd_pxa27x_drv_resume, | 365 | .resume = ohci_hcd_pxa27x_drv_resume, |
366 | #endif | 366 | #endif |
367 | .driver = { | 367 | .driver = { |
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c index fe1fe2f97cb5..830a3fe8615e 100644 --- a/drivers/usb/host/ohci-q.c +++ b/drivers/usb/host/ohci-q.c | |||
@@ -1,9 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * OHCI HCD (Host Controller Driver) for USB. | 2 | * OHCI HCD (Host Controller Driver) for USB. |
3 | * | 3 | * |
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> |
6 | * | 6 | * |
7 | * This file is licenced under the GPL. | 7 | * This file is licenced under the GPL. |
8 | */ | 8 | */ |
9 | 9 | ||
@@ -89,7 +89,7 @@ __acquires(ohci->lock) | |||
89 | 89 | ||
90 | /*-------------------------------------------------------------------------* | 90 | /*-------------------------------------------------------------------------* |
91 | * ED handling functions | 91 | * ED handling functions |
92 | *-------------------------------------------------------------------------*/ | 92 | *-------------------------------------------------------------------------*/ |
93 | 93 | ||
94 | /* search for the right schedule branch to use for a periodic ed. | 94 | /* search for the right schedule branch to use for a periodic ed. |
95 | * does some load balancing; returns the branch, or negative errno. | 95 | * does some load balancing; returns the branch, or negative errno. |
@@ -107,7 +107,6 @@ static int balance (struct ohci_hcd *ohci, int interval, int load) | |||
107 | */ | 107 | */ |
108 | for (i = 0; i < interval ; i++) { | 108 | for (i = 0; i < interval ; i++) { |
109 | if (branch < 0 || ohci->load [branch] > ohci->load [i]) { | 109 | if (branch < 0 || ohci->load [branch] > ohci->load [i]) { |
110 | #if 1 /* CONFIG_USB_BANDWIDTH */ | ||
111 | int j; | 110 | int j; |
112 | 111 | ||
113 | /* usb 1.1 says 90% of one frame */ | 112 | /* usb 1.1 says 90% of one frame */ |
@@ -117,8 +116,7 @@ static int balance (struct ohci_hcd *ohci, int interval, int load) | |||
117 | } | 116 | } |
118 | if (j < NUM_INTS) | 117 | if (j < NUM_INTS) |
119 | continue; | 118 | continue; |
120 | #endif | 119 | branch = i; |
121 | branch = i; | ||
122 | } | 120 | } |
123 | } | 121 | } |
124 | return branch; | 122 | return branch; |
@@ -171,7 +169,7 @@ static void periodic_link (struct ohci_hcd *ohci, struct ed *ed) | |||
171 | /* link an ed into one of the HC chains */ | 169 | /* link an ed into one of the HC chains */ |
172 | 170 | ||
173 | static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed) | 171 | static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed) |
174 | { | 172 | { |
175 | int branch; | 173 | int branch; |
176 | 174 | ||
177 | if (ohci_to_hcd(ohci)->state == HC_STATE_QUIESCING) | 175 | if (ohci_to_hcd(ohci)->state == HC_STATE_QUIESCING) |
@@ -248,7 +246,7 @@ static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed) | |||
248 | } | 246 | } |
249 | ed->branch = branch; | 247 | ed->branch = branch; |
250 | periodic_link (ohci, ed); | 248 | periodic_link (ohci, ed); |
251 | } | 249 | } |
252 | 250 | ||
253 | /* the HC may not see the schedule updates yet, but if it does | 251 | /* the HC may not see the schedule updates yet, but if it does |
254 | * then they'll be properly ordered. | 252 | * then they'll be properly ordered. |
@@ -277,7 +275,7 @@ static void periodic_unlink (struct ohci_hcd *ohci, struct ed *ed) | |||
277 | *prev = ed->ed_next; | 275 | *prev = ed->ed_next; |
278 | } | 276 | } |
279 | ohci->load [i] -= ed->load; | 277 | ohci->load [i] -= ed->load; |
280 | } | 278 | } |
281 | ohci_to_hcd(ohci)->self.bandwidth_allocated -= ed->load / ed->interval; | 279 | ohci_to_hcd(ohci)->self.bandwidth_allocated -= ed->load / ed->interval; |
282 | 280 | ||
283 | ohci_vdbg (ohci, "unlink %sed %p branch %d [%dus.], interval %d\n", | 281 | ohci_vdbg (ohci, "unlink %sed %p branch %d [%dus.], interval %d\n", |
@@ -285,7 +283,7 @@ static void periodic_unlink (struct ohci_hcd *ohci, struct ed *ed) | |||
285 | ed, ed->branch, ed->load, ed->interval); | 283 | ed, ed->branch, ed->load, ed->interval); |
286 | } | 284 | } |
287 | 285 | ||
288 | /* unlink an ed from one of the HC chains. | 286 | /* unlink an ed from one of the HC chains. |
289 | * just the link to the ed is unlinked. | 287 | * just the link to the ed is unlinked. |
290 | * the link from the ed still points to another operational ed or 0 | 288 | * the link from the ed still points to another operational ed or 0 |
291 | * so the HC can eventually finish the processing of the unlinked ed | 289 | * so the HC can eventually finish the processing of the unlinked ed |
@@ -307,7 +305,7 @@ static void periodic_unlink (struct ohci_hcd *ohci, struct ed *ed) | |||
307 | * When finish_unlinks() runs later, after SOF interrupt, it will often | 305 | * When finish_unlinks() runs later, after SOF interrupt, it will often |
308 | * complete one or more URB unlinks before making that state change. | 306 | * complete one or more URB unlinks before making that state change. |
309 | */ | 307 | */ |
310 | static void ed_deschedule (struct ohci_hcd *ohci, struct ed *ed) | 308 | static void ed_deschedule (struct ohci_hcd *ohci, struct ed *ed) |
311 | { | 309 | { |
312 | ed->hwINFO |= cpu_to_hc32 (ohci, ED_SKIP); | 310 | ed->hwINFO |= cpu_to_hc32 (ohci, ED_SKIP); |
313 | wmb (); | 311 | wmb (); |
@@ -397,7 +395,7 @@ static struct ed *ed_get ( | |||
397 | unsigned int pipe, | 395 | unsigned int pipe, |
398 | int interval | 396 | int interval |
399 | ) { | 397 | ) { |
400 | struct ed *ed; | 398 | struct ed *ed; |
401 | unsigned long flags; | 399 | unsigned long flags; |
402 | 400 | ||
403 | spin_lock_irqsave (&ohci->lock, flags); | 401 | spin_lock_irqsave (&ohci->lock, flags); |
@@ -413,9 +411,9 @@ static struct ed *ed_get ( | |||
413 | goto done; | 411 | goto done; |
414 | } | 412 | } |
415 | 413 | ||
416 | /* dummy td; end of td list for ed */ | 414 | /* dummy td; end of td list for ed */ |
417 | td = td_alloc (ohci, GFP_ATOMIC); | 415 | td = td_alloc (ohci, GFP_ATOMIC); |
418 | if (!td) { | 416 | if (!td) { |
419 | /* out of memory */ | 417 | /* out of memory */ |
420 | ed_free (ohci, ed); | 418 | ed_free (ohci, ed); |
421 | ed = NULL; | 419 | ed = NULL; |
@@ -462,7 +460,7 @@ static struct ed *ed_get ( | |||
462 | 460 | ||
463 | done: | 461 | done: |
464 | spin_unlock_irqrestore (&ohci->lock, flags); | 462 | spin_unlock_irqrestore (&ohci->lock, flags); |
465 | return ed; | 463 | return ed; |
466 | } | 464 | } |
467 | 465 | ||
468 | /*-------------------------------------------------------------------------*/ | 466 | /*-------------------------------------------------------------------------*/ |
@@ -474,7 +472,7 @@ done: | |||
474 | * and that ed->state is ED_OPER | 472 | * and that ed->state is ED_OPER |
475 | */ | 473 | */ |
476 | static void start_ed_unlink (struct ohci_hcd *ohci, struct ed *ed) | 474 | static void start_ed_unlink (struct ohci_hcd *ohci, struct ed *ed) |
477 | { | 475 | { |
478 | ed->hwINFO |= cpu_to_hc32 (ohci, ED_DEQUEUE); | 476 | ed->hwINFO |= cpu_to_hc32 (ohci, ED_DEQUEUE); |
479 | ed_deschedule (ohci, ed); | 477 | ed_deschedule (ohci, ed); |
480 | 478 | ||
@@ -541,7 +539,7 @@ td_fill (struct ohci_hcd *ohci, u32 info, | |||
541 | td->ed = urb_priv->ed; | 539 | td->ed = urb_priv->ed; |
542 | td->next_dl_td = NULL; | 540 | td->next_dl_td = NULL; |
543 | td->index = index; | 541 | td->index = index; |
544 | td->urb = urb; | 542 | td->urb = urb; |
545 | td->data_dma = data; | 543 | td->data_dma = data; |
546 | if (!len) | 544 | if (!len) |
547 | data = 0; | 545 | data = 0; |
@@ -553,8 +551,8 @@ td_fill (struct ohci_hcd *ohci, u32 info, | |||
553 | (data & 0x0FFF) | 0xE000); | 551 | (data & 0x0FFF) | 0xE000); |
554 | td->ed->last_iso = info & 0xffff; | 552 | td->ed->last_iso = info & 0xffff; |
555 | } else { | 553 | } else { |
556 | td->hwCBP = cpu_to_hc32 (ohci, data); | 554 | td->hwCBP = cpu_to_hc32 (ohci, data); |
557 | } | 555 | } |
558 | if (data) | 556 | if (data) |
559 | td->hwBE = cpu_to_hc32 (ohci, data + len - 1); | 557 | td->hwBE = cpu_to_hc32 (ohci, data + len - 1); |
560 | else | 558 | else |
@@ -597,7 +595,7 @@ static void td_submit_urb ( | |||
597 | * use the device toggle bits for resetting, and rely on the fact | 595 | * use the device toggle bits for resetting, and rely on the fact |
598 | * that resetting toggle is meaningless if the endpoint is active. | 596 | * that resetting toggle is meaningless if the endpoint is active. |
599 | */ | 597 | */ |
600 | if (!usb_gettoggle (urb->dev, usb_pipeendpoint (urb->pipe), is_out)) { | 598 | if (!usb_gettoggle (urb->dev, usb_pipeendpoint (urb->pipe), is_out)) { |
601 | usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe), | 599 | usb_settoggle (urb->dev, usb_pipeendpoint (urb->pipe), |
602 | is_out, 1); | 600 | is_out, 1); |
603 | urb_priv->ed->hwHeadP &= ~cpu_to_hc32 (ohci, ED_C); | 601 | urb_priv->ed->hwHeadP &= ~cpu_to_hc32 (ohci, ED_C); |
@@ -721,16 +719,16 @@ static void td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td) | |||
721 | list_del (&td->td_list); | 719 | list_del (&td->td_list); |
722 | 720 | ||
723 | /* ISO ... drivers see per-TD length/status */ | 721 | /* ISO ... drivers see per-TD length/status */ |
724 | if (tdINFO & TD_ISO) { | 722 | if (tdINFO & TD_ISO) { |
725 | u16 tdPSW = ohci_hwPSW (ohci, td, 0); | 723 | u16 tdPSW = ohci_hwPSW (ohci, td, 0); |
726 | int dlen = 0; | 724 | int dlen = 0; |
727 | 725 | ||
728 | /* NOTE: assumes FC in tdINFO == 0, and that | 726 | /* NOTE: assumes FC in tdINFO == 0, and that |
729 | * only the first of 0..MAXPSW psws is used. | 727 | * only the first of 0..MAXPSW psws is used. |
730 | */ | 728 | */ |
731 | 729 | ||
732 | cc = (tdPSW >> 12) & 0xF; | 730 | cc = (tdPSW >> 12) & 0xF; |
733 | if (tdINFO & TD_CC) /* hc didn't touch? */ | 731 | if (tdINFO & TD_CC) /* hc didn't touch? */ |
734 | return; | 732 | return; |
735 | 733 | ||
736 | if (usb_pipeout (urb->pipe)) | 734 | if (usb_pipeout (urb->pipe)) |
@@ -758,7 +756,7 @@ static void td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td) | |||
758 | int type = usb_pipetype (urb->pipe); | 756 | int type = usb_pipetype (urb->pipe); |
759 | u32 tdBE = hc32_to_cpup (ohci, &td->hwBE); | 757 | u32 tdBE = hc32_to_cpup (ohci, &td->hwBE); |
760 | 758 | ||
761 | cc = TD_CC_GET (tdINFO); | 759 | cc = TD_CC_GET (tdINFO); |
762 | 760 | ||
763 | /* update packet status if needed (short is normally ok) */ | 761 | /* update packet status if needed (short is normally ok) */ |
764 | if (cc == TD_DATAUNDERRUN | 762 | if (cc == TD_DATAUNDERRUN |
@@ -787,7 +785,7 @@ static void td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td) | |||
787 | urb, td, 1 + td->index, cc, | 785 | urb, td, 1 + td->index, cc, |
788 | urb->actual_length, | 786 | urb->actual_length, |
789 | urb->transfer_buffer_length); | 787 | urb->transfer_buffer_length); |
790 | } | 788 | } |
791 | } | 789 | } |
792 | 790 | ||
793 | /*-------------------------------------------------------------------------*/ | 791 | /*-------------------------------------------------------------------------*/ |
@@ -795,7 +793,7 @@ static void td_done (struct ohci_hcd *ohci, struct urb *urb, struct td *td) | |||
795 | static inline struct td * | 793 | static inline struct td * |
796 | ed_halted (struct ohci_hcd *ohci, struct td *td, int cc, struct td *rev) | 794 | ed_halted (struct ohci_hcd *ohci, struct td *td, int cc, struct td *rev) |
797 | { | 795 | { |
798 | struct urb *urb = td->urb; | 796 | struct urb *urb = td->urb; |
799 | struct ed *ed = td->ed; | 797 | struct ed *ed = td->ed; |
800 | struct list_head *tmp = td->td_list.next; | 798 | struct list_head *tmp = td->td_list.next; |
801 | __hc32 toggle = ed->hwHeadP & cpu_to_hc32 (ohci, ED_C); | 799 | __hc32 toggle = ed->hwHeadP & cpu_to_hc32 (ohci, ED_C); |
@@ -805,7 +803,7 @@ ed_halted (struct ohci_hcd *ohci, struct td *td, int cc, struct td *rev) | |||
805 | */ | 803 | */ |
806 | ed->hwINFO |= cpu_to_hc32 (ohci, ED_SKIP); | 804 | ed->hwINFO |= cpu_to_hc32 (ohci, ED_SKIP); |
807 | wmb (); | 805 | wmb (); |
808 | ed->hwHeadP &= ~cpu_to_hc32 (ohci, ED_H); | 806 | ed->hwHeadP &= ~cpu_to_hc32 (ohci, ED_H); |
809 | 807 | ||
810 | /* put any later tds from this urb onto the donelist, after 'td', | 808 | /* put any later tds from this urb onto the donelist, after 'td', |
811 | * order won't matter here: no errors, and nothing was transferred. | 809 | * order won't matter here: no errors, and nothing was transferred. |
@@ -833,7 +831,7 @@ ed_halted (struct ohci_hcd *ohci, struct td *td, int cc, struct td *rev) | |||
833 | info &= ~cpu_to_hc32 (ohci, TD_CC); | 831 | info &= ~cpu_to_hc32 (ohci, TD_CC); |
834 | next->hwINFO = info; | 832 | next->hwINFO = info; |
835 | 833 | ||
836 | next->next_dl_td = rev; | 834 | next->next_dl_td = rev; |
837 | rev = next; | 835 | rev = next; |
838 | 836 | ||
839 | ed->hwHeadP = next->hwNextTD | toggle; | 837 | ed->hwHeadP = next->hwNextTD | toggle; |
@@ -881,8 +879,8 @@ static struct td *dl_reverse_done_list (struct ohci_hcd *ohci) | |||
881 | /* get TD from hc's singly linked list, and | 879 | /* get TD from hc's singly linked list, and |
882 | * prepend to ours. ed->td_list changes later. | 880 | * prepend to ours. ed->td_list changes later. |
883 | */ | 881 | */ |
884 | while (td_dma) { | 882 | while (td_dma) { |
885 | int cc; | 883 | int cc; |
886 | 884 | ||
887 | td = dma_to_td (ohci, td_dma); | 885 | td = dma_to_td (ohci, td_dma); |
888 | if (!td) { | 886 | if (!td) { |
@@ -901,10 +899,10 @@ static struct td *dl_reverse_done_list (struct ohci_hcd *ohci) | |||
901 | && (td->ed->hwHeadP & cpu_to_hc32 (ohci, ED_H))) | 899 | && (td->ed->hwHeadP & cpu_to_hc32 (ohci, ED_H))) |
902 | td_rev = ed_halted (ohci, td, cc, td_rev); | 900 | td_rev = ed_halted (ohci, td, cc, td_rev); |
903 | 901 | ||
904 | td->next_dl_td = td_rev; | 902 | td->next_dl_td = td_rev; |
905 | td_rev = td; | 903 | td_rev = td; |
906 | td_dma = hc32_to_cpup (ohci, &td->hwNextTD); | 904 | td_dma = hc32_to_cpup (ohci, &td->hwNextTD); |
907 | } | 905 | } |
908 | return td_rev; | 906 | return td_rev; |
909 | } | 907 | } |
910 | 908 | ||
@@ -1013,9 +1011,9 @@ rescan_this: | |||
1013 | 1011 | ||
1014 | if (modified) | 1012 | if (modified) |
1015 | goto rescan_all; | 1013 | goto rescan_all; |
1016 | } | 1014 | } |
1017 | 1015 | ||
1018 | /* maybe reenable control and bulk lists */ | 1016 | /* maybe reenable control and bulk lists */ |
1019 | if (HC_IS_RUNNING(ohci_to_hcd(ohci)->state) | 1017 | if (HC_IS_RUNNING(ohci_to_hcd(ohci)->state) |
1020 | && ohci_to_hcd(ohci)->state != HC_STATE_QUIESCING | 1018 | && ohci_to_hcd(ohci)->state != HC_STATE_QUIESCING |
1021 | && !ohci->ed_rm_list) { | 1019 | && !ohci->ed_rm_list) { |
@@ -1041,20 +1039,20 @@ rescan_this: | |||
1041 | &ohci->regs->ed_bulkcurrent); | 1039 | &ohci->regs->ed_bulkcurrent); |
1042 | } | 1040 | } |
1043 | } | 1041 | } |
1044 | 1042 | ||
1045 | /* CLE/BLE to enable, CLF/BLF to (maybe) kickstart */ | 1043 | /* CLE/BLE to enable, CLF/BLF to (maybe) kickstart */ |
1046 | if (control) { | 1044 | if (control) { |
1047 | ohci->hc_control |= control; | 1045 | ohci->hc_control |= control; |
1048 | if (ohci->flags & OHCI_QUIRK_ZFMICRO) | 1046 | if (ohci->flags & OHCI_QUIRK_ZFMICRO) |
1049 | mdelay(1); | 1047 | mdelay(1); |
1050 | ohci_writel (ohci, ohci->hc_control, | 1048 | ohci_writel (ohci, ohci->hc_control, |
1051 | &ohci->regs->control); | 1049 | &ohci->regs->control); |
1052 | } | 1050 | } |
1053 | if (command) { | 1051 | if (command) { |
1054 | if (ohci->flags & OHCI_QUIRK_ZFMICRO) | 1052 | if (ohci->flags & OHCI_QUIRK_ZFMICRO) |
1055 | mdelay(1); | 1053 | mdelay(1); |
1056 | ohci_writel (ohci, command, &ohci->regs->cmdstatus); | 1054 | ohci_writel (ohci, command, &ohci->regs->cmdstatus); |
1057 | } | 1055 | } |
1058 | } | 1056 | } |
1059 | } | 1057 | } |
1060 | 1058 | ||
@@ -1074,19 +1072,19 @@ dl_done_list (struct ohci_hcd *ohci) | |||
1074 | { | 1072 | { |
1075 | struct td *td = dl_reverse_done_list (ohci); | 1073 | struct td *td = dl_reverse_done_list (ohci); |
1076 | 1074 | ||
1077 | while (td) { | 1075 | while (td) { |
1078 | struct td *td_next = td->next_dl_td; | 1076 | struct td *td_next = td->next_dl_td; |
1079 | struct urb *urb = td->urb; | 1077 | struct urb *urb = td->urb; |
1080 | urb_priv_t *urb_priv = urb->hcpriv; | 1078 | urb_priv_t *urb_priv = urb->hcpriv; |
1081 | struct ed *ed = td->ed; | 1079 | struct ed *ed = td->ed; |
1082 | 1080 | ||
1083 | /* update URB's length and status from TD */ | 1081 | /* update URB's length and status from TD */ |
1084 | td_done (ohci, urb, td); | 1082 | td_done (ohci, urb, td); |
1085 | urb_priv->td_cnt++; | 1083 | urb_priv->td_cnt++; |
1086 | 1084 | ||
1087 | /* If all this urb's TDs are done, call complete() */ | 1085 | /* If all this urb's TDs are done, call complete() */ |
1088 | if (urb_priv->td_cnt == urb_priv->length) | 1086 | if (urb_priv->td_cnt == urb_priv->length) |
1089 | finish_urb (ohci, urb); | 1087 | finish_urb (ohci, urb); |
1090 | 1088 | ||
1091 | /* clean schedule: unlink EDs that are no longer busy */ | 1089 | /* clean schedule: unlink EDs that are no longer busy */ |
1092 | if (list_empty (&ed->td_list)) { | 1090 | if (list_empty (&ed->td_list)) { |
@@ -1094,25 +1092,26 @@ dl_done_list (struct ohci_hcd *ohci) | |||
1094 | start_ed_unlink (ohci, ed); | 1092 | start_ed_unlink (ohci, ed); |
1095 | 1093 | ||
1096 | /* ... reenabling halted EDs only after fault cleanup */ | 1094 | /* ... reenabling halted EDs only after fault cleanup */ |
1097 | } else if ((ed->hwINFO & cpu_to_hc32 (ohci, ED_SKIP | ED_DEQUEUE)) | 1095 | } else if ((ed->hwINFO & cpu_to_hc32 (ohci, |
1096 | ED_SKIP | ED_DEQUEUE)) | ||
1098 | == cpu_to_hc32 (ohci, ED_SKIP)) { | 1097 | == cpu_to_hc32 (ohci, ED_SKIP)) { |
1099 | td = list_entry (ed->td_list.next, struct td, td_list); | 1098 | td = list_entry (ed->td_list.next, struct td, td_list); |
1100 | if (!(td->hwINFO & cpu_to_hc32 (ohci, TD_DONE))) { | 1099 | if (!(td->hwINFO & cpu_to_hc32 (ohci, TD_DONE))) { |
1101 | ed->hwINFO &= ~cpu_to_hc32 (ohci, ED_SKIP); | 1100 | ed->hwINFO &= ~cpu_to_hc32 (ohci, ED_SKIP); |
1102 | /* ... hc may need waking-up */ | 1101 | /* ... hc may need waking-up */ |
1103 | switch (ed->type) { | 1102 | switch (ed->type) { |
1104 | case PIPE_CONTROL: | 1103 | case PIPE_CONTROL: |
1105 | ohci_writel (ohci, OHCI_CLF, | 1104 | ohci_writel (ohci, OHCI_CLF, |
1106 | &ohci->regs->cmdstatus); | 1105 | &ohci->regs->cmdstatus); |
1107 | break; | 1106 | break; |
1108 | case PIPE_BULK: | 1107 | case PIPE_BULK: |
1109 | ohci_writel (ohci, OHCI_BLF, | 1108 | ohci_writel (ohci, OHCI_BLF, |
1110 | &ohci->regs->cmdstatus); | 1109 | &ohci->regs->cmdstatus); |
1111 | break; | 1110 | break; |
1112 | } | 1111 | } |
1113 | } | 1112 | } |
1114 | } | 1113 | } |
1115 | 1114 | ||
1116 | td = td_next; | 1115 | td = td_next; |
1117 | } | 1116 | } |
1118 | } | 1117 | } |
diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c index 59e436424d41..b350d45033e7 100644 --- a/drivers/usb/host/ohci-s3c2410.c +++ b/drivers/usb/host/ohci-s3c2410.c | |||
@@ -447,7 +447,7 @@ static const struct hc_driver ohci_s3c2410_hc_driver = { | |||
447 | */ | 447 | */ |
448 | .start = ohci_s3c2410_start, | 448 | .start = ohci_s3c2410_start, |
449 | .stop = ohci_stop, | 449 | .stop = ohci_stop, |
450 | .shutdown = ohci_shutdown, | 450 | .shutdown = ohci_shutdown, |
451 | 451 | ||
452 | /* | 452 | /* |
453 | * managing i/o requests and associated device resources | 453 | * managing i/o requests and associated device resources |
@@ -492,7 +492,7 @@ static int ohci_hcd_s3c2410_drv_remove(struct platform_device *pdev) | |||
492 | static struct platform_driver ohci_hcd_s3c2410_driver = { | 492 | static struct platform_driver ohci_hcd_s3c2410_driver = { |
493 | .probe = ohci_hcd_s3c2410_drv_probe, | 493 | .probe = ohci_hcd_s3c2410_drv_probe, |
494 | .remove = ohci_hcd_s3c2410_drv_remove, | 494 | .remove = ohci_hcd_s3c2410_drv_remove, |
495 | .shutdown = usb_hcd_platform_shutdown, | 495 | .shutdown = usb_hcd_platform_shutdown, |
496 | /*.suspend = ohci_hcd_s3c2410_drv_suspend, */ | 496 | /*.suspend = ohci_hcd_s3c2410_drv_suspend, */ |
497 | /*.resume = ohci_hcd_s3c2410_drv_resume, */ | 497 | /*.resume = ohci_hcd_s3c2410_drv_resume, */ |
498 | .driver = { | 498 | .driver = { |
diff --git a/drivers/usb/host/ohci-sa1111.c b/drivers/usb/host/ohci-sa1111.c index 71371de32ada..fe0090e33675 100644 --- a/drivers/usb/host/ohci-sa1111.c +++ b/drivers/usb/host/ohci-sa1111.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> |
6 | * (C) Copyright 2002 Hewlett-Packard Company | 6 | * (C) Copyright 2002 Hewlett-Packard Company |
7 | * | 7 | * |
8 | * SA1111 Bus Glue | 8 | * SA1111 Bus Glue |
9 | * | 9 | * |
10 | * Written by Christopher Hoover <ch@hpl.hp.com> | 10 | * Written by Christopher Hoover <ch@hpl.hp.com> |
@@ -12,7 +12,7 @@ | |||
12 | * | 12 | * |
13 | * This file is licenced under the GPL. | 13 | * This file is licenced under the GPL. |
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <asm/hardware.h> | 16 | #include <asm/hardware.h> |
17 | #include <asm/mach-types.h> | 17 | #include <asm/mach-types.h> |
18 | #include <asm/arch/assabet.h> | 18 | #include <asm/arch/assabet.h> |
@@ -31,7 +31,7 @@ static void sa1111_start_hc(struct sa1111_dev *dev) | |||
31 | { | 31 | { |
32 | unsigned int usb_rst = 0; | 32 | unsigned int usb_rst = 0; |
33 | 33 | ||
34 | printk(KERN_DEBUG __FILE__ | 34 | printk(KERN_DEBUG __FILE__ |
35 | ": starting SA-1111 OHCI USB Controller\n"); | 35 | ": starting SA-1111 OHCI USB Controller\n"); |
36 | 36 | ||
37 | #ifdef CONFIG_SA1100_BADGE4 | 37 | #ifdef CONFIG_SA1100_BADGE4 |
@@ -65,7 +65,7 @@ static void sa1111_start_hc(struct sa1111_dev *dev) | |||
65 | static void sa1111_stop_hc(struct sa1111_dev *dev) | 65 | static void sa1111_stop_hc(struct sa1111_dev *dev) |
66 | { | 66 | { |
67 | unsigned int usb_rst; | 67 | unsigned int usb_rst; |
68 | printk(KERN_DEBUG __FILE__ | 68 | printk(KERN_DEBUG __FILE__ |
69 | ": stopping SA-1111 OHCI USB Controller\n"); | 69 | ": stopping SA-1111 OHCI USB Controller\n"); |
70 | 70 | ||
71 | /* | 71 | /* |
diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h index a2f42a2f47c6..405257f3e853 100644 --- a/drivers/usb/host/ohci.h +++ b/drivers/usb/host/ohci.h | |||
@@ -1,9 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * OHCI HCD (Host Controller Driver) for USB. | 2 | * OHCI HCD (Host Controller Driver) for USB. |
3 | * | 3 | * |
4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> | 4 | * (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at> |
5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> | 5 | * (C) Copyright 2000-2002 David Brownell <dbrownell@users.sourceforge.net> |
6 | * | 6 | * |
7 | * This file is licenced under the GPL. | 7 | * This file is licenced under the GPL. |
8 | */ | 8 | */ |
9 | 9 | ||
@@ -14,7 +14,7 @@ | |||
14 | */ | 14 | */ |
15 | typedef __u32 __bitwise __hc32; | 15 | typedef __u32 __bitwise __hc32; |
16 | typedef __u16 __bitwise __hc16; | 16 | typedef __u16 __bitwise __hc16; |
17 | 17 | ||
18 | /* | 18 | /* |
19 | * OHCI Endpoint Descriptor (ED) ... holds TD queue | 19 | * OHCI Endpoint Descriptor (ED) ... holds TD queue |
20 | * See OHCI spec, section 4.2 | 20 | * See OHCI spec, section 4.2 |
@@ -24,7 +24,7 @@ typedef __u16 __bitwise __hc16; | |||
24 | */ | 24 | */ |
25 | struct ed { | 25 | struct ed { |
26 | /* first fields are hardware-specified */ | 26 | /* first fields are hardware-specified */ |
27 | __hc32 hwINFO; /* endpoint config bitmap */ | 27 | __hc32 hwINFO; /* endpoint config bitmap */ |
28 | /* info bits defined by hcd */ | 28 | /* info bits defined by hcd */ |
29 | #define ED_DEQUEUE (1 << 27) | 29 | #define ED_DEQUEUE (1 << 27) |
30 | /* info bits defined by the hardware */ | 30 | /* info bits defined by the hardware */ |
@@ -52,11 +52,11 @@ struct ed { | |||
52 | * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... | 52 | * usually: OPER --> UNLINK --> (IDLE | OPER) --> ... |
53 | */ | 53 | */ |
54 | u8 state; /* ED_{IDLE,UNLINK,OPER} */ | 54 | u8 state; /* ED_{IDLE,UNLINK,OPER} */ |
55 | #define ED_IDLE 0x00 /* NOT linked to HC */ | 55 | #define ED_IDLE 0x00 /* NOT linked to HC */ |
56 | #define ED_UNLINK 0x01 /* being unlinked from hc */ | 56 | #define ED_UNLINK 0x01 /* being unlinked from hc */ |
57 | #define ED_OPER 0x02 /* IS linked to hc */ | 57 | #define ED_OPER 0x02 /* IS linked to hc */ |
58 | 58 | ||
59 | u8 type; /* PIPE_{BULK,...} */ | 59 | u8 type; /* PIPE_{BULK,...} */ |
60 | 60 | ||
61 | /* periodic scheduling params (for intr and iso) */ | 61 | /* periodic scheduling params (for intr and iso) */ |
62 | u8 branch; | 62 | u8 branch; |
@@ -70,7 +70,7 @@ struct ed { | |||
70 | 70 | ||
71 | #define ED_MASK ((u32)~0x0f) /* strip hw status in low addr bits */ | 71 | #define ED_MASK ((u32)~0x0f) /* strip hw status in low addr bits */ |
72 | 72 | ||
73 | 73 | ||
74 | /* | 74 | /* |
75 | * OHCI Transfer Descriptor (TD) ... one per transfer segment | 75 | * OHCI Transfer Descriptor (TD) ... one per transfer segment |
76 | * See OHCI spec, sections 4.3.1 (general = control/bulk/interrupt) | 76 | * See OHCI spec, sections 4.3.1 (general = control/bulk/interrupt) |
@@ -107,22 +107,22 @@ struct td { | |||
107 | 107 | ||
108 | /* (no hwINFO #defines yet for iso tds) */ | 108 | /* (no hwINFO #defines yet for iso tds) */ |
109 | 109 | ||
110 | __hc32 hwCBP; /* Current Buffer Pointer (or 0) */ | 110 | __hc32 hwCBP; /* Current Buffer Pointer (or 0) */ |
111 | __hc32 hwNextTD; /* Next TD Pointer */ | 111 | __hc32 hwNextTD; /* Next TD Pointer */ |
112 | __hc32 hwBE; /* Memory Buffer End Pointer */ | 112 | __hc32 hwBE; /* Memory Buffer End Pointer */ |
113 | 113 | ||
114 | /* PSW is only for ISO. Only 1 PSW entry is used, but on | 114 | /* PSW is only for ISO. Only 1 PSW entry is used, but on |
115 | * big-endian PPC hardware that's the second entry. | 115 | * big-endian PPC hardware that's the second entry. |
116 | */ | 116 | */ |
117 | #define MAXPSW 2 | 117 | #define MAXPSW 2 |
118 | __hc16 hwPSW [MAXPSW]; | 118 | __hc16 hwPSW [MAXPSW]; |
119 | 119 | ||
120 | /* rest are purely for the driver's use */ | 120 | /* rest are purely for the driver's use */ |
121 | __u8 index; | 121 | __u8 index; |
122 | struct ed *ed; | 122 | struct ed *ed; |
123 | struct td *td_hash; /* dma-->td hashtable */ | 123 | struct td *td_hash; /* dma-->td hashtable */ |
124 | struct td *next_dl_td; | 124 | struct td *next_dl_td; |
125 | struct urb *urb; | 125 | struct urb *urb; |
126 | 126 | ||
127 | dma_addr_t td_dma; /* addr of this TD */ | 127 | dma_addr_t td_dma; /* addr of this TD */ |
128 | dma_addr_t data_dma; /* addr of data it points to */ | 128 | dma_addr_t data_dma; /* addr of data it points to */ |
@@ -152,8 +152,8 @@ struct td { | |||
152 | #define TD_NOTACCESSED 0x0F | 152 | #define TD_NOTACCESSED 0x0F |
153 | 153 | ||
154 | 154 | ||
155 | /* map OHCI TD status codes (CC) to errno values */ | 155 | /* map OHCI TD status codes (CC) to errno values */ |
156 | static const int cc_to_error [16] = { | 156 | static const int cc_to_error [16] = { |
157 | /* No Error */ 0, | 157 | /* No Error */ 0, |
158 | /* CRC Error */ -EILSEQ, | 158 | /* CRC Error */ -EILSEQ, |
159 | /* Bit Stuff */ -EPROTO, | 159 | /* Bit Stuff */ -EPROTO, |
@@ -169,7 +169,7 @@ static const int cc_to_error [16] = { | |||
169 | /* BufferOver */ -ECOMM, | 169 | /* BufferOver */ -ECOMM, |
170 | /* BuffUnder */ -ENOSR, | 170 | /* BuffUnder */ -ENOSR, |
171 | /* (for HCD) */ -EALREADY, | 171 | /* (for HCD) */ -EALREADY, |
172 | /* (for HCD) */ -EALREADY | 172 | /* (for HCD) */ -EALREADY |
173 | }; | 173 | }; |
174 | 174 | ||
175 | 175 | ||
@@ -182,7 +182,7 @@ struct ohci_hcca { | |||
182 | #define NUM_INTS 32 | 182 | #define NUM_INTS 32 |
183 | __hc32 int_table [NUM_INTS]; /* periodic schedule */ | 183 | __hc32 int_table [NUM_INTS]; /* periodic schedule */ |
184 | 184 | ||
185 | /* | 185 | /* |
186 | * OHCI defines u16 frame_no, followed by u16 zero pad. | 186 | * OHCI defines u16 frame_no, followed by u16 zero pad. |
187 | * Since some processors can't do 16 bit bus accesses, | 187 | * Since some processors can't do 16 bit bus accesses, |
188 | * portable access must be a 32 bits wide. | 188 | * portable access must be a 32 bits wide. |
@@ -262,10 +262,10 @@ struct ohci_regs { | |||
262 | * HcCommandStatus (cmdstatus) register masks | 262 | * HcCommandStatus (cmdstatus) register masks |
263 | */ | 263 | */ |
264 | #define OHCI_HCR (1 << 0) /* host controller reset */ | 264 | #define OHCI_HCR (1 << 0) /* host controller reset */ |
265 | #define OHCI_CLF (1 << 1) /* control list filled */ | 265 | #define OHCI_CLF (1 << 1) /* control list filled */ |
266 | #define OHCI_BLF (1 << 2) /* bulk list filled */ | 266 | #define OHCI_BLF (1 << 2) /* bulk list filled */ |
267 | #define OHCI_OCR (1 << 3) /* ownership change request */ | 267 | #define OHCI_OCR (1 << 3) /* ownership change request */ |
268 | #define OHCI_SOC (3 << 16) /* scheduling overrun count */ | 268 | #define OHCI_SOC (3 << 16) /* scheduling overrun count */ |
269 | 269 | ||
270 | /* | 270 | /* |
271 | * masks used with interrupt registers: | 271 | * masks used with interrupt registers: |
@@ -285,20 +285,20 @@ struct ohci_regs { | |||
285 | 285 | ||
286 | 286 | ||
287 | /* OHCI ROOT HUB REGISTER MASKS */ | 287 | /* OHCI ROOT HUB REGISTER MASKS */ |
288 | 288 | ||
289 | /* roothub.portstatus [i] bits */ | 289 | /* roothub.portstatus [i] bits */ |
290 | #define RH_PS_CCS 0x00000001 /* current connect status */ | 290 | #define RH_PS_CCS 0x00000001 /* current connect status */ |
291 | #define RH_PS_PES 0x00000002 /* port enable status*/ | 291 | #define RH_PS_PES 0x00000002 /* port enable status*/ |
292 | #define RH_PS_PSS 0x00000004 /* port suspend status */ | 292 | #define RH_PS_PSS 0x00000004 /* port suspend status */ |
293 | #define RH_PS_POCI 0x00000008 /* port over current indicator */ | 293 | #define RH_PS_POCI 0x00000008 /* port over current indicator */ |
294 | #define RH_PS_PRS 0x00000010 /* port reset status */ | 294 | #define RH_PS_PRS 0x00000010 /* port reset status */ |
295 | #define RH_PS_PPS 0x00000100 /* port power status */ | 295 | #define RH_PS_PPS 0x00000100 /* port power status */ |
296 | #define RH_PS_LSDA 0x00000200 /* low speed device attached */ | 296 | #define RH_PS_LSDA 0x00000200 /* low speed device attached */ |
297 | #define RH_PS_CSC 0x00010000 /* connect status change */ | 297 | #define RH_PS_CSC 0x00010000 /* connect status change */ |
298 | #define RH_PS_PESC 0x00020000 /* port enable status change */ | 298 | #define RH_PS_PESC 0x00020000 /* port enable status change */ |
299 | #define RH_PS_PSSC 0x00040000 /* port suspend status change */ | 299 | #define RH_PS_PSSC 0x00040000 /* port suspend status change */ |
300 | #define RH_PS_OCIC 0x00080000 /* over current indicator change */ | 300 | #define RH_PS_OCIC 0x00080000 /* over current indicator change */ |
301 | #define RH_PS_PRSC 0x00100000 /* port reset status change */ | 301 | #define RH_PS_PRSC 0x00100000 /* port reset status change */ |
302 | 302 | ||
303 | /* roothub.status bits */ | 303 | /* roothub.status bits */ |
304 | #define RH_HS_LPS 0x00000001 /* local power status */ | 304 | #define RH_HS_LPS 0x00000001 /* local power status */ |
@@ -333,7 +333,7 @@ typedef struct urb_priv { | |||
333 | } urb_priv_t; | 333 | } urb_priv_t; |
334 | 334 | ||
335 | #define TD_HASH_SIZE 64 /* power'o'two */ | 335 | #define TD_HASH_SIZE 64 /* power'o'two */ |
336 | // sizeof (struct td) ~= 64 == 2^6 ... | 336 | // sizeof (struct td) ~= 64 == 2^6 ... |
337 | #define TD_HASH_FUNC(td_dma) ((td_dma ^ (td_dma >> 6)) % TD_HASH_SIZE) | 337 | #define TD_HASH_FUNC(td_dma) ((td_dma ^ (td_dma >> 6)) % TD_HASH_SIZE) |
338 | 338 | ||
339 | 339 | ||
@@ -364,11 +364,11 @@ struct ohci_hcd { | |||
364 | 364 | ||
365 | struct ed *ed_bulktail; /* last in bulk list */ | 365 | struct ed *ed_bulktail; /* last in bulk list */ |
366 | struct ed *ed_controltail; /* last in ctrl list */ | 366 | struct ed *ed_controltail; /* last in ctrl list */ |
367 | struct ed *periodic [NUM_INTS]; /* shadow int_table */ | 367 | struct ed *periodic [NUM_INTS]; /* shadow int_table */ |
368 | 368 | ||
369 | /* | 369 | /* |
370 | * OTG controllers and transceivers need software interaction; | 370 | * OTG controllers and transceivers need software interaction; |
371 | * other external transceivers should be software-transparent | 371 | * other external transceivers should be software-transparent |
372 | */ | 372 | */ |
373 | struct otg_transceiver *transceiver; | 373 | struct otg_transceiver *transceiver; |
374 | 374 | ||
@@ -385,7 +385,7 @@ struct ohci_hcd { | |||
385 | */ | 385 | */ |
386 | int num_ports; | 386 | int num_ports; |
387 | int load [NUM_INTS]; | 387 | int load [NUM_INTS]; |
388 | u32 hc_control; /* copy of hc control reg */ | 388 | u32 hc_control; /* copy of hc control reg */ |
389 | unsigned long next_statechange; /* suspend/resume */ | 389 | unsigned long next_statechange; /* suspend/resume */ |
390 | u32 fminterval; /* saved register */ | 390 | u32 fminterval; /* saved register */ |
391 | unsigned autostop:1; /* rh auto stopping/stopped */ | 391 | unsigned autostop:1; /* rh auto stopping/stopped */ |
@@ -598,11 +598,11 @@ static inline void disable (struct ohci_hcd *ohci) | |||
598 | } | 598 | } |
599 | 599 | ||
600 | #define FI 0x2edf /* 12000 bits per frame (-1) */ | 600 | #define FI 0x2edf /* 12000 bits per frame (-1) */ |
601 | #define FSMP(fi) (0x7fff & ((6 * ((fi) - 210)) / 7)) | 601 | #define FSMP(fi) (0x7fff & ((6 * ((fi) - 210)) / 7)) |
602 | #define FIT (1 << 31) | 602 | #define FIT (1 << 31) |
603 | #define LSTHRESH 0x628 /* lowspeed bit threshold */ | 603 | #define LSTHRESH 0x628 /* lowspeed bit threshold */ |
604 | 604 | ||
605 | static void periodic_reinit (struct ohci_hcd *ohci) | 605 | static inline void periodic_reinit (struct ohci_hcd *ohci) |
606 | { | 606 | { |
607 | u32 fi = ohci->fminterval & 0x03fff; | 607 | u32 fi = ohci->fminterval & 0x03fff; |
608 | u32 fit = ohci_readl(ohci, &ohci->regs->fminterval) & FIT; | 608 | u32 fit = ohci_readl(ohci, &ohci->regs->fminterval) & FIT; |
@@ -626,11 +626,11 @@ static void periodic_reinit (struct ohci_hcd *ohci) | |||
626 | temp = ohci_readl (hc, &hc->regs->roothub.register); \ | 626 | temp = ohci_readl (hc, &hc->regs->roothub.register); \ |
627 | temp; }) | 627 | temp; }) |
628 | 628 | ||
629 | static u32 roothub_a (struct ohci_hcd *hc) | 629 | static inline u32 roothub_a (struct ohci_hcd *hc) |
630 | { return read_roothub (hc, a, 0xfc0fe000); } | 630 | { return read_roothub (hc, a, 0xfc0fe000); } |
631 | static inline u32 roothub_b (struct ohci_hcd *hc) | 631 | static inline u32 roothub_b (struct ohci_hcd *hc) |
632 | { return ohci_readl (hc, &hc->regs->roothub.b); } | 632 | { return ohci_readl (hc, &hc->regs->roothub.b); } |
633 | static inline u32 roothub_status (struct ohci_hcd *hc) | 633 | static inline u32 roothub_status (struct ohci_hcd *hc) |
634 | { return ohci_readl (hc, &hc->regs->roothub.status); } | 634 | { return ohci_readl (hc, &hc->regs->roothub.status); } |
635 | static u32 roothub_portstatus (struct ohci_hcd *hc, int i) | 635 | static inline u32 roothub_portstatus (struct ohci_hcd *hc, int i) |
636 | { return read_roothub (hc, portstatus [i], 0xffe0fce0); } | 636 | { return read_roothub (hc, portstatus [i], 0xffe0fce0); } |
diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c index a9d7119e3176..a7fa0d75567d 100644 --- a/drivers/usb/host/u132-hcd.c +++ b/drivers/usb/host/u132-hcd.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <linux/moduleparam.h> | 40 | #include <linux/moduleparam.h> |
41 | #include <linux/delay.h> | 41 | #include <linux/delay.h> |
42 | #include <linux/ioport.h> | 42 | #include <linux/ioport.h> |
43 | #include <linux/pci_ids.h> | ||
43 | #include <linux/sched.h> | 44 | #include <linux/sched.h> |
44 | #include <linux/slab.h> | 45 | #include <linux/slab.h> |
45 | #include <linux/smp_lock.h> | 46 | #include <linux/smp_lock.h> |
@@ -210,15 +211,16 @@ struct u132 { | |||
210 | * these cannot be inlines because we need the structure offset!! | 211 | * these cannot be inlines because we need the structure offset!! |
211 | * Does anyone have a better way????? | 212 | * Does anyone have a better way????? |
212 | */ | 213 | */ |
214 | #define ftdi_read_pcimem(pdev, member, data) usb_ftdi_elan_read_pcimem(pdev, \ | ||
215 | offsetof(struct ohci_regs, member), 0, data); | ||
216 | #define ftdi_write_pcimem(pdev, member, data) usb_ftdi_elan_write_pcimem(pdev, \ | ||
217 | offsetof(struct ohci_regs, member), 0, data); | ||
213 | #define u132_read_pcimem(u132, member, data) \ | 218 | #define u132_read_pcimem(u132, member, data) \ |
214 | usb_ftdi_elan_read_pcimem(u132->platform_dev, offsetof(struct \ | 219 | usb_ftdi_elan_read_pcimem(u132->platform_dev, offsetof(struct \ |
215 | ohci_regs, member), 0, data); | 220 | ohci_regs, member), 0, data); |
216 | #define u132_write_pcimem(u132, member, data) \ | 221 | #define u132_write_pcimem(u132, member, data) \ |
217 | usb_ftdi_elan_write_pcimem(u132->platform_dev, offsetof(struct \ | 222 | usb_ftdi_elan_write_pcimem(u132->platform_dev, offsetof(struct \ |
218 | ohci_regs, member), 0, data); | 223 | ohci_regs, member), 0, data); |
219 | #define u132_write_pcimem_byte(u132, member, data) \ | ||
220 | usb_ftdi_elan_write_pcimem(u132->platform_dev, offsetof(struct \ | ||
221 | ohci_regs, member), 0x0e, data); | ||
222 | static inline struct u132 *udev_to_u132(struct u132_udev *udev) | 224 | static inline struct u132 *udev_to_u132(struct u132_udev *udev) |
223 | { | 225 | { |
224 | u8 udev_number = udev->udev_number; | 226 | u8 udev_number = udev->udev_number; |
@@ -1574,59 +1576,12 @@ static char *hcfs2string(int state) | |||
1574 | return "?"; | 1576 | return "?"; |
1575 | } | 1577 | } |
1576 | 1578 | ||
1577 | static int u132_usb_reset(struct u132 *u132) | ||
1578 | { | ||
1579 | int retval; | ||
1580 | retval = u132_read_pcimem(u132, control, &u132->hc_control); | ||
1581 | if (retval) | ||
1582 | return retval; | ||
1583 | u132->hc_control &= OHCI_CTRL_RWC; | ||
1584 | retval = u132_write_pcimem(u132, control, u132->hc_control); | ||
1585 | if (retval) | ||
1586 | return retval; | ||
1587 | return 0; | ||
1588 | } | ||
1589 | |||
1590 | static int u132_init(struct u132 *u132) | 1579 | static int u132_init(struct u132 *u132) |
1591 | { | 1580 | { |
1592 | int retval; | 1581 | int retval; |
1593 | u32 control; | 1582 | u32 control; |
1594 | u132_disable(u132); | 1583 | u132_disable(u132); |
1595 | u132->next_statechange = | 1584 | u132->next_statechange = jiffies; |
1596 | jiffies; /* SMM owns the HC? not for long! */ { | ||
1597 | u32 control; | ||
1598 | retval = u132_read_pcimem(u132, control, &control); | ||
1599 | if (retval) | ||
1600 | return retval; | ||
1601 | if (control & OHCI_CTRL_IR) { | ||
1602 | u32 temp = 50; | ||
1603 | retval = u132_write_pcimem(u132, intrenable, | ||
1604 | OHCI_INTR_OC); | ||
1605 | if (retval) | ||
1606 | return retval; | ||
1607 | retval = u132_write_pcimem_byte(u132, cmdstatus, | ||
1608 | OHCI_OCR); | ||
1609 | if (retval) | ||
1610 | return retval; | ||
1611 | check:{ | ||
1612 | retval = u132_read_pcimem(u132, control, | ||
1613 | &control); | ||
1614 | if (retval) | ||
1615 | return retval; | ||
1616 | } | ||
1617 | if (control & OHCI_CTRL_IR) { | ||
1618 | msleep(10); | ||
1619 | if (--temp == 0) { | ||
1620 | dev_err(&u132->platform_dev->dev, "USB " | ||
1621 | "HC takeover failed!(BIOS/SMM b" | ||
1622 | "ug) control=%08X\n", control); | ||
1623 | return -EBUSY; | ||
1624 | } | ||
1625 | goto check; | ||
1626 | } | ||
1627 | u132_usb_reset(u132); | ||
1628 | } | ||
1629 | } | ||
1630 | retval = u132_write_pcimem(u132, intrdisable, OHCI_INTR_MIE); | 1585 | retval = u132_write_pcimem(u132, intrdisable, OHCI_INTR_MIE); |
1631 | if (retval) | 1586 | if (retval) |
1632 | return retval; | 1587 | return retval; |
@@ -1725,7 +1680,7 @@ static int u132_run(struct u132 *u132) | |||
1725 | retry:retval = u132_read_pcimem(u132, cmdstatus, &status); | 1680 | retry:retval = u132_read_pcimem(u132, cmdstatus, &status); |
1726 | if (retval) | 1681 | if (retval) |
1727 | return retval; | 1682 | return retval; |
1728 | retval = u132_write_pcimem_byte(u132, cmdstatus, OHCI_HCR); | 1683 | retval = u132_write_pcimem(u132, cmdstatus, OHCI_HCR); |
1729 | if (retval) | 1684 | if (retval) |
1730 | return retval; | 1685 | return retval; |
1731 | extra:{ | 1686 | extra:{ |
@@ -1782,7 +1737,7 @@ static int u132_run(struct u132 *u132) | |||
1782 | retval = u132_write_pcimem(u132, control, u132->hc_control); | 1737 | retval = u132_write_pcimem(u132, control, u132->hc_control); |
1783 | if (retval) | 1738 | if (retval) |
1784 | return retval; | 1739 | return retval; |
1785 | retval = u132_write_pcimem_byte(u132, cmdstatus, OHCI_BLF); | 1740 | retval = u132_write_pcimem(u132, cmdstatus, OHCI_BLF); |
1786 | if (retval) | 1741 | if (retval) |
1787 | return retval; | 1742 | return retval; |
1788 | retval = u132_read_pcimem(u132, cmdstatus, &cmdstatus); | 1743 | retval = u132_read_pcimem(u132, cmdstatus, &cmdstatus); |
@@ -1839,8 +1794,8 @@ static void u132_hcd_stop(struct usb_hcd *hcd) | |||
1839 | { | 1794 | { |
1840 | struct u132 *u132 = hcd_to_u132(hcd); | 1795 | struct u132 *u132 = hcd_to_u132(hcd); |
1841 | if (u132->going > 1) { | 1796 | if (u132->going > 1) { |
1842 | dev_err(&u132->platform_dev->dev, "device has been removed %d\n" | 1797 | dev_err(&u132->platform_dev->dev, "u132 device %p(hcd=%p) has b" |
1843 | , u132->going); | 1798 | "een removed %d\n", u132, hcd, u132->going); |
1844 | } else if (u132->going > 0) { | 1799 | } else if (u132->going > 0) { |
1845 | dev_err(&u132->platform_dev->dev, "device hcd=%p is being remov" | 1800 | dev_err(&u132->platform_dev->dev, "device hcd=%p is being remov" |
1846 | "ed\n", hcd); | 1801 | "ed\n", hcd); |
@@ -2545,8 +2500,9 @@ static void u132_endpoint_disable(struct usb_hcd *hcd, | |||
2545 | { | 2500 | { |
2546 | struct u132 *u132 = hcd_to_u132(hcd); | 2501 | struct u132 *u132 = hcd_to_u132(hcd); |
2547 | if (u132->going > 2) { | 2502 | if (u132->going > 2) { |
2548 | dev_err(&u132->platform_dev->dev, "device has been removed %d\n" | 2503 | dev_err(&u132->platform_dev->dev, "u132 device %p(hcd=%p hep=%p" |
2549 | , u132->going); | 2504 | ") has been removed %d\n", u132, hcd, hep, |
2505 | u132->going); | ||
2550 | } else { | 2506 | } else { |
2551 | struct u132_endp *endp = hep->hcpriv; | 2507 | struct u132_endp *endp = hep->hcpriv; |
2552 | if (endp) | 2508 | if (endp) |
@@ -2790,7 +2746,6 @@ static int u132_hub_status_data(struct usb_hcd *hcd, char *buf) | |||
2790 | } else if (u132->going > 0) { | 2746 | } else if (u132->going > 0) { |
2791 | dev_err(&u132->platform_dev->dev, "device hcd=%p is being remov" | 2747 | dev_err(&u132->platform_dev->dev, "device hcd=%p is being remov" |
2792 | "ed\n", hcd); | 2748 | "ed\n", hcd); |
2793 | dump_stack(); | ||
2794 | return -ESHUTDOWN; | 2749 | return -ESHUTDOWN; |
2795 | } else { | 2750 | } else { |
2796 | int i, changed = 0, length = 1; | 2751 | int i, changed = 0, length = 1; |
@@ -3034,12 +2989,15 @@ static int __devexit u132_remove(struct platform_device *pdev) | |||
3034 | struct usb_hcd *hcd = platform_get_drvdata(pdev); | 2989 | struct usb_hcd *hcd = platform_get_drvdata(pdev); |
3035 | if (hcd) { | 2990 | if (hcd) { |
3036 | struct u132 *u132 = hcd_to_u132(hcd); | 2991 | struct u132 *u132 = hcd_to_u132(hcd); |
3037 | dump_stack(); | ||
3038 | if (u132->going++ > 1) { | 2992 | if (u132->going++ > 1) { |
2993 | dev_err(&u132->platform_dev->dev, "already being remove" | ||
2994 | "d\n"); | ||
3039 | return -ENODEV; | 2995 | return -ENODEV; |
3040 | } else { | 2996 | } else { |
3041 | int rings = MAX_U132_RINGS; | 2997 | int rings = MAX_U132_RINGS; |
3042 | int endps = MAX_U132_ENDPS; | 2998 | int endps = MAX_U132_ENDPS; |
2999 | dev_err(&u132->platform_dev->dev, "removing device u132" | ||
3000 | ".%d\n", u132->sequence_num); | ||
3043 | msleep(100); | 3001 | msleep(100); |
3044 | down(&u132->sw_lock); | 3002 | down(&u132->sw_lock); |
3045 | u132_monitor_cancel_work(u132); | 3003 | u132_monitor_cancel_work(u132); |
@@ -3121,10 +3079,24 @@ static void u132_initialise(struct u132 *u132, struct platform_device *pdev) | |||
3121 | static int __devinit u132_probe(struct platform_device *pdev) | 3079 | static int __devinit u132_probe(struct platform_device *pdev) |
3122 | { | 3080 | { |
3123 | struct usb_hcd *hcd; | 3081 | struct usb_hcd *hcd; |
3082 | int retval; | ||
3083 | u32 control; | ||
3084 | u32 rh_a = -1; | ||
3085 | u32 num_ports; | ||
3124 | msleep(100); | 3086 | msleep(100); |
3125 | if (u132_exiting > 0) { | 3087 | if (u132_exiting > 0) { |
3126 | return -ENODEV; | 3088 | return -ENODEV; |
3127 | } /* refuse to confuse usbcore */ | 3089 | } |
3090 | retval = ftdi_write_pcimem(pdev, intrdisable, OHCI_INTR_MIE); | ||
3091 | if (retval) | ||
3092 | return retval; | ||
3093 | retval = ftdi_read_pcimem(pdev, control, &control); | ||
3094 | if (retval) | ||
3095 | return retval; | ||
3096 | retval = ftdi_read_pcimem(pdev, roothub.a, &rh_a); | ||
3097 | if (retval) | ||
3098 | return retval; | ||
3099 | num_ports = rh_a & RH_A_NDP; /* refuse to confuse usbcore */ | ||
3128 | if (pdev->dev.dma_mask) { | 3100 | if (pdev->dev.dma_mask) { |
3129 | return -EINVAL; | 3101 | return -EINVAL; |
3130 | } | 3102 | } |
diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c index e87692c31be4..acd101caeeeb 100644 --- a/drivers/usb/host/uhci-hcd.c +++ b/drivers/usb/host/uhci-hcd.c | |||
@@ -60,6 +60,11 @@ Randy Dunlap, Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber, \ | |||
60 | Alan Stern" | 60 | Alan Stern" |
61 | #define DRIVER_DESC "USB Universal Host Controller Interface driver" | 61 | #define DRIVER_DESC "USB Universal Host Controller Interface driver" |
62 | 62 | ||
63 | /* for flakey hardware, ignore overcurrent indicators */ | ||
64 | static int ignore_oc; | ||
65 | module_param(ignore_oc, bool, S_IRUGO); | ||
66 | MODULE_PARM_DESC(ignore_oc, "ignore hardware overcurrent indications"); | ||
67 | |||
63 | /* | 68 | /* |
64 | * debug = 0, no debugging messages | 69 | * debug = 0, no debugging messages |
65 | * debug = 1, dump failed URBs except for stalls | 70 | * debug = 1, dump failed URBs except for stalls |
@@ -169,6 +174,11 @@ static int resume_detect_interrupts_are_broken(struct uhci_hcd *uhci) | |||
169 | { | 174 | { |
170 | int port; | 175 | int port; |
171 | 176 | ||
177 | /* If we have to ignore overcurrent events then almost by definition | ||
178 | * we can't depend on resume-detect interrupts. */ | ||
179 | if (ignore_oc) | ||
180 | return 1; | ||
181 | |||
172 | switch (to_pci_dev(uhci_dev(uhci))->vendor) { | 182 | switch (to_pci_dev(uhci_dev(uhci))->vendor) { |
173 | default: | 183 | default: |
174 | break; | 184 | break; |
@@ -921,7 +931,8 @@ static int __init uhci_hcd_init(void) | |||
921 | { | 931 | { |
922 | int retval = -ENOMEM; | 932 | int retval = -ENOMEM; |
923 | 933 | ||
924 | printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION "\n"); | 934 | printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION "%s\n", |
935 | ignore_oc ? ", overcurrent ignored" : ""); | ||
925 | 936 | ||
926 | if (usb_disabled()) | 937 | if (usb_disabled()) |
927 | return -ENODEV; | 938 | return -ENODEV; |
diff --git a/drivers/usb/host/uhci-hub.c b/drivers/usb/host/uhci-hub.c index f8347f1a10b6..bacc25c53ba3 100644 --- a/drivers/usb/host/uhci-hub.c +++ b/drivers/usb/host/uhci-hub.c | |||
@@ -52,10 +52,20 @@ static int any_ports_active(struct uhci_hcd *uhci) | |||
52 | static inline int get_hub_status_data(struct uhci_hcd *uhci, char *buf) | 52 | static inline int get_hub_status_data(struct uhci_hcd *uhci, char *buf) |
53 | { | 53 | { |
54 | int port; | 54 | int port; |
55 | int mask = RWC_BITS; | ||
56 | |||
57 | /* Some boards (both VIA and Intel apparently) report bogus | ||
58 | * overcurrent indications, causing massive log spam unless | ||
59 | * we completely ignore them. This doesn't seem to be a problem | ||
60 | * with the chipset so much as with the way it is connected on | ||
61 | * the motherboard; if the overcurrent input is left to float | ||
62 | * then it may constantly register false positives. */ | ||
63 | if (ignore_oc) | ||
64 | mask &= ~USBPORTSC_OCC; | ||
55 | 65 | ||
56 | *buf = 0; | 66 | *buf = 0; |
57 | for (port = 0; port < uhci->rh_numports; ++port) { | 67 | for (port = 0; port < uhci->rh_numports; ++port) { |
58 | if ((inw(uhci->io_addr + USBPORTSC1 + port * 2) & RWC_BITS) || | 68 | if ((inw(uhci->io_addr + USBPORTSC1 + port * 2) & mask) || |
59 | test_bit(port, &uhci->port_c_suspend)) | 69 | test_bit(port, &uhci->port_c_suspend)) |
60 | *buf |= (1 << (port + 1)); | 70 | *buf |= (1 << (port + 1)); |
61 | } | 71 | } |
@@ -263,7 +273,7 @@ static int uhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, | |||
263 | wPortChange |= USB_PORT_STAT_C_CONNECTION; | 273 | wPortChange |= USB_PORT_STAT_C_CONNECTION; |
264 | if (status & USBPORTSC_PEC) | 274 | if (status & USBPORTSC_PEC) |
265 | wPortChange |= USB_PORT_STAT_C_ENABLE; | 275 | wPortChange |= USB_PORT_STAT_C_ENABLE; |
266 | if (status & USBPORTSC_OCC) | 276 | if ((status & USBPORTSC_OCC) && !ignore_oc) |
267 | wPortChange |= USB_PORT_STAT_C_OVERCURRENT; | 277 | wPortChange |= USB_PORT_STAT_C_OVERCURRENT; |
268 | 278 | ||
269 | if (test_bit(port, &uhci->port_c_suspend)) { | 279 | if (test_bit(port, &uhci->port_c_suspend)) { |
diff --git a/drivers/usb/input/wacom_sys.c b/drivers/usb/input/wacom_sys.c index e7cc20ab8155..12b42746ded8 100644 --- a/drivers/usb/input/wacom_sys.c +++ b/drivers/usb/input/wacom_sys.c | |||
@@ -159,13 +159,13 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | |||
159 | { | 159 | { |
160 | input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); | 160 | input_dev->keybit[LONG(BTN_DIGI)] |= BIT(BTN_TOOL_FINGER); |
161 | input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); | 161 | input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_0) | BIT(BTN_1) | BIT(BTN_2) | BIT(BTN_3); |
162 | input_set_abs_params(input_dev, ABS_RX, 0, 4097, 0, 0); | 162 | input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); |
163 | } | 163 | } |
164 | 164 | ||
165 | void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | 165 | void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) |
166 | { | 166 | { |
167 | input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7); | 167 | input_dev->keybit[LONG(BTN_LEFT)] |= BIT(BTN_4) | BIT(BTN_5) | BIT(BTN_6) | BIT(BTN_7); |
168 | input_set_abs_params(input_dev, ABS_RY, 0, 4097, 0, 0); | 168 | input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); |
169 | } | 169 | } |
170 | 170 | ||
171 | void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | 171 | void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) |
diff --git a/drivers/usb/input/wacom_wac.c b/drivers/usb/input/wacom_wac.c index 92726fe89379..4142e36730fc 100644 --- a/drivers/usb/input/wacom_wac.c +++ b/drivers/usb/input/wacom_wac.c | |||
@@ -209,13 +209,15 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo) | |||
209 | wacom_report_key(wcombo, BTN_STYLUS, data[1] & 0x02); | 209 | wacom_report_key(wcombo, BTN_STYLUS, data[1] & 0x02); |
210 | wacom_report_key(wcombo, BTN_STYLUS2, data[1] & 0x04); | 210 | wacom_report_key(wcombo, BTN_STYLUS2, data[1] & 0x04); |
211 | } | 211 | } |
212 | } | ||
213 | |||
214 | if (data[1] & 0x10) | ||
215 | wacom_report_abs(wcombo, ABS_MISC, id); /* report tool id */ | 212 | wacom_report_abs(wcombo, ABS_MISC, id); /* report tool id */ |
213 | } | ||
216 | else | 214 | else |
217 | wacom_report_abs(wcombo, ABS_MISC, 0); /* reset tool id */ | 215 | wacom_report_abs(wcombo, ABS_MISC, 0); /* reset tool id */ |
218 | wacom_report_key(wcombo, wacom->tool[0], data[1] & 0x10); | 216 | |
217 | if (data[1] & 0x10) /* only report prox-in when in area */ | ||
218 | wacom_report_key(wcombo, wacom->tool[0], 1); | ||
219 | if (!(data[1] & 0x90)) /* report prox-out when physically out */ | ||
220 | wacom_report_key(wcombo, wacom->tool[0], 0); | ||
219 | wacom_input_sync(wcombo); | 221 | wacom_input_sync(wcombo); |
220 | 222 | ||
221 | /* send pad data */ | 223 | /* send pad data */ |
@@ -405,7 +407,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) | |||
405 | if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40)) | 407 | if ((wacom->features->type == CINTIQ) && !(data[1] & 0x40)) |
406 | return 0; | 408 | return 0; |
407 | 409 | ||
408 | if (wacom->features->type >= INTUOS3) { | 410 | if (wacom->features->type >= INTUOS3S) { |
409 | wacom_report_abs(wcombo, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1)); | 411 | wacom_report_abs(wcombo, ABS_X, (data[2] << 9) | (data[3] << 1) | ((data[9] >> 1) & 1)); |
410 | wacom_report_abs(wcombo, ABS_Y, (data[4] << 9) | (data[5] << 1) | (data[9] & 1)); | 412 | wacom_report_abs(wcombo, ABS_Y, (data[4] << 9) | (data[5] << 1) | (data[9] & 1)); |
411 | wacom_report_abs(wcombo, ABS_DISTANCE, ((data[9] >> 2) & 0x3f)); | 413 | wacom_report_abs(wcombo, ABS_DISTANCE, ((data[9] >> 2) & 0x3f)); |
@@ -423,7 +425,7 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) | |||
423 | 425 | ||
424 | if (data[1] & 0x02) { | 426 | if (data[1] & 0x02) { |
425 | /* Rotation packet */ | 427 | /* Rotation packet */ |
426 | if (wacom->features->type >= INTUOS3) { | 428 | if (wacom->features->type >= INTUOS3S) { |
427 | /* I3 marker pen rotation reported as wheel | 429 | /* I3 marker pen rotation reported as wheel |
428 | * due to valuator limitation | 430 | * due to valuator limitation |
429 | */ | 431 | */ |
@@ -547,11 +549,11 @@ static struct wacom_features wacom_features[] = { | |||
547 | { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, | 549 | { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, |
548 | { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, | 550 | { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, |
549 | { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, | 551 | { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, |
550 | { "Wacom Volito", 8, 5104, 3712, 511, 0, GRAPHIRE }, | 552 | { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE }, |
551 | { "Wacom PenStation2", 8, 3250, 2320, 255, 0, GRAPHIRE }, | 553 | { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE }, |
552 | { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 0, GRAPHIRE }, | 554 | { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE }, |
553 | { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 0, GRAPHIRE }, | 555 | { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE }, |
554 | { "Wacom PenPartner2", 8, 3250, 2320, 255, 0, GRAPHIRE }, | 556 | { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE }, |
555 | { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 63, INTUOS }, | 557 | { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 63, INTUOS }, |
556 | { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 63, INTUOS }, | 558 | { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 63, INTUOS }, |
557 | { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 63, INTUOS }, | 559 | { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 63, INTUOS }, |
@@ -580,7 +582,7 @@ static struct wacom_features wacom_features[] = { | |||
580 | { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, INTUOS3L }, | 582 | { "Wacom Intuos3 12x12", 10, 60960, 60960, 1023, 63, INTUOS3L }, |
581 | { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, INTUOS3L }, | 583 | { "Wacom Intuos3 12x19", 10, 97536, 60960, 1023, 63, INTUOS3L }, |
582 | { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, | 584 | { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, |
583 | { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 15, INTUOS3S }, | 585 | { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, |
584 | { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, | 586 | { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, |
585 | { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 63, INTUOS }, | 587 | { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 63, INTUOS }, |
586 | { } | 588 | { } |
diff --git a/drivers/usb/misc/auerswald.c b/drivers/usb/misc/auerswald.c index 6c7f3efb1d40..b5332e679c46 100644 --- a/drivers/usb/misc/auerswald.c +++ b/drivers/usb/misc/auerswald.c | |||
@@ -1376,7 +1376,7 @@ static int auerchar_open (struct inode *inode, struct file *file) | |||
1376 | } | 1376 | } |
1377 | 1377 | ||
1378 | /* we have access to the device. Now lets allocate memory */ | 1378 | /* we have access to the device. Now lets allocate memory */ |
1379 | ccp = (pauerchar_t) kmalloc(sizeof(auerchar_t), GFP_KERNEL); | 1379 | ccp = kzalloc(sizeof(auerchar_t), GFP_KERNEL); |
1380 | if (ccp == NULL) { | 1380 | if (ccp == NULL) { |
1381 | err ("out of memory"); | 1381 | err ("out of memory"); |
1382 | ret = -ENOMEM; | 1382 | ret = -ENOMEM; |
@@ -1384,7 +1384,6 @@ static int auerchar_open (struct inode *inode, struct file *file) | |||
1384 | } | 1384 | } |
1385 | 1385 | ||
1386 | /* Initialize device descriptor */ | 1386 | /* Initialize device descriptor */ |
1387 | memset( ccp, 0, sizeof(auerchar_t)); | ||
1388 | init_MUTEX( &ccp->mutex); | 1387 | init_MUTEX( &ccp->mutex); |
1389 | init_MUTEX( &ccp->readmutex); | 1388 | init_MUTEX( &ccp->readmutex); |
1390 | auerbuf_init (&ccp->bufctl); | 1389 | auerbuf_init (&ccp->bufctl); |
@@ -1912,14 +1911,13 @@ static int auerswald_probe (struct usb_interface *intf, | |||
1912 | return -ENODEV; | 1911 | return -ENODEV; |
1913 | 1912 | ||
1914 | /* allocate memory for our device and initialize it */ | 1913 | /* allocate memory for our device and initialize it */ |
1915 | cp = kmalloc (sizeof(auerswald_t), GFP_KERNEL); | 1914 | cp = kzalloc (sizeof(auerswald_t), GFP_KERNEL); |
1916 | if (cp == NULL) { | 1915 | if (cp == NULL) { |
1917 | err ("out of memory"); | 1916 | err ("out of memory"); |
1918 | goto pfail; | 1917 | goto pfail; |
1919 | } | 1918 | } |
1920 | 1919 | ||
1921 | /* Initialize device descriptor */ | 1920 | /* Initialize device descriptor */ |
1922 | memset (cp, 0, sizeof(auerswald_t)); | ||
1923 | init_MUTEX (&cp->mutex); | 1921 | init_MUTEX (&cp->mutex); |
1924 | cp->usbdev = usbdev; | 1922 | cp->usbdev = usbdev; |
1925 | auerchain_init (&cp->controlchain); | 1923 | auerchain_init (&cp->controlchain); |
diff --git a/drivers/usb/misc/ftdi-elan.c b/drivers/usb/misc/ftdi-elan.c index 18b1925032a8..41c0161abdb9 100644 --- a/drivers/usb/misc/ftdi-elan.c +++ b/drivers/usb/misc/ftdi-elan.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include <linux/init.h> | 40 | #include <linux/init.h> |
41 | #include <linux/list.h> | 41 | #include <linux/list.h> |
42 | #include <linux/ioctl.h> | 42 | #include <linux/ioctl.h> |
43 | #include <linux/pci_ids.h> | ||
43 | #include <linux/slab.h> | 44 | #include <linux/slab.h> |
44 | #include <linux/module.h> | 45 | #include <linux/module.h> |
45 | #include <linux/kref.h> | 46 | #include <linux/kref.h> |
@@ -51,6 +52,10 @@ MODULE_AUTHOR("Tony Olech"); | |||
51 | MODULE_DESCRIPTION("FTDI ELAN driver"); | 52 | MODULE_DESCRIPTION("FTDI ELAN driver"); |
52 | MODULE_LICENSE("GPL"); | 53 | MODULE_LICENSE("GPL"); |
53 | #define INT_MODULE_PARM(n, v) static int n = v;module_param(n, int, 0444) | 54 | #define INT_MODULE_PARM(n, v) static int n = v;module_param(n, int, 0444) |
55 | static int distrust_firmware = 1; | ||
56 | module_param(distrust_firmware, bool, 0); | ||
57 | MODULE_PARM_DESC(distrust_firmware, "true to distrust firmware power/overcurren" | ||
58 | "t setup"); | ||
54 | extern struct platform_driver u132_platform_driver; | 59 | extern struct platform_driver u132_platform_driver; |
55 | static struct workqueue_struct *status_queue; | 60 | static struct workqueue_struct *status_queue; |
56 | static struct workqueue_struct *command_queue; | 61 | static struct workqueue_struct *command_queue; |
@@ -66,7 +71,9 @@ static struct list_head ftdi_static_list; | |||
66 | * end of the global variables protected by ftdi_module_lock | 71 | * end of the global variables protected by ftdi_module_lock |
67 | */ | 72 | */ |
68 | #include "usb_u132.h" | 73 | #include "usb_u132.h" |
69 | #define TD_DEVNOTRESP 5 | 74 | #include <asm/io.h> |
75 | #include "../core/hcd.h" | ||
76 | #include "../host/ohci.h" | ||
70 | /* Define these values to match your devices*/ | 77 | /* Define these values to match your devices*/ |
71 | #define USB_FTDI_ELAN_VENDOR_ID 0x0403 | 78 | #define USB_FTDI_ELAN_VENDOR_ID 0x0403 |
72 | #define USB_FTDI_ELAN_PRODUCT_ID 0xd6ea | 79 | #define USB_FTDI_ELAN_PRODUCT_ID 0xd6ea |
@@ -551,7 +558,7 @@ static void ftdi_elan_status_work(struct work_struct *work) | |||
551 | } else { | 558 | } else { |
552 | dev_err(&ftdi->udev->dev, "initialized failed - trying " | 559 | dev_err(&ftdi->udev->dev, "initialized failed - trying " |
553 | "again in 10 seconds\n"); | 560 | "again in 10 seconds\n"); |
554 | work_delay_in_msec = 10 *1000; | 561 | work_delay_in_msec = 1 *1000; |
555 | } | 562 | } |
556 | } else if (ftdi->registered == 0) { | 563 | } else if (ftdi->registered == 0) { |
557 | work_delay_in_msec = 10; | 564 | work_delay_in_msec = 10; |
@@ -2288,82 +2295,288 @@ static int ftdi_elan_checkingPCI(struct usb_ftdi *ftdi) | |||
2288 | } | 2295 | } |
2289 | } | 2296 | } |
2290 | 2297 | ||
2291 | static int ftdi_elan_enumeratePCI(struct usb_ftdi *ftdi) | 2298 | |
2299 | #define ftdi_read_pcimem(ftdi, member, data) ftdi_elan_read_pcimem(ftdi, \ | ||
2300 | offsetof(struct ohci_regs, member), 0, data); | ||
2301 | #define ftdi_write_pcimem(ftdi, member, data) ftdi_elan_write_pcimem(ftdi, \ | ||
2302 | offsetof(struct ohci_regs, member), 0, data); | ||
2303 | #define OHCI_QUIRK_AMD756 0x01 | ||
2304 | #define OHCI_QUIRK_SUPERIO 0x02 | ||
2305 | #define OHCI_QUIRK_INITRESET 0x04 | ||
2306 | #define OHCI_BIG_ENDIAN 0x08 | ||
2307 | #define OHCI_QUIRK_ZFMICRO 0x10 | ||
2308 | #define OHCI_CONTROL_INIT OHCI_CTRL_CBSR | ||
2309 | #define OHCI_INTR_INIT (OHCI_INTR_MIE | OHCI_INTR_UE | OHCI_INTR_RD | \ | ||
2310 | OHCI_INTR_WDH) | ||
2311 | static int ftdi_elan_check_controller(struct usb_ftdi *ftdi, int quirk) | ||
2312 | { | ||
2313 | int devices = 0; | ||
2314 | int retval; | ||
2315 | u32 hc_control; | ||
2316 | int num_ports; | ||
2317 | u32 control; | ||
2318 | u32 rh_a = -1; | ||
2319 | u32 status; | ||
2320 | u32 fminterval; | ||
2321 | u32 hc_fminterval; | ||
2322 | u32 periodicstart; | ||
2323 | u32 cmdstatus; | ||
2324 | u32 roothub_a; | ||
2325 | int mask = OHCI_INTR_INIT; | ||
2326 | int sleep_time = 0; | ||
2327 | int reset_timeout = 30; /* ... allow extra time */ | ||
2328 | int temp; | ||
2329 | retval = ftdi_write_pcimem(ftdi, intrdisable, OHCI_INTR_MIE); | ||
2330 | if (retval) | ||
2331 | return retval; | ||
2332 | retval = ftdi_read_pcimem(ftdi, control, &control); | ||
2333 | if (retval) | ||
2334 | return retval; | ||
2335 | retval = ftdi_read_pcimem(ftdi, roothub.a, &rh_a); | ||
2336 | if (retval) | ||
2337 | return retval; | ||
2338 | num_ports = rh_a & RH_A_NDP; | ||
2339 | retval = ftdi_read_pcimem(ftdi, fminterval, &hc_fminterval); | ||
2340 | if (retval) | ||
2341 | return retval; | ||
2342 | hc_fminterval &= 0x3fff; | ||
2343 | if (hc_fminterval != FI) { | ||
2344 | } | ||
2345 | hc_fminterval |= FSMP(hc_fminterval) << 16; | ||
2346 | retval = ftdi_read_pcimem(ftdi, control, &hc_control); | ||
2347 | if (retval) | ||
2348 | return retval; | ||
2349 | switch (hc_control & OHCI_CTRL_HCFS) { | ||
2350 | case OHCI_USB_OPER: | ||
2351 | sleep_time = 0; | ||
2352 | break; | ||
2353 | case OHCI_USB_SUSPEND: | ||
2354 | case OHCI_USB_RESUME: | ||
2355 | hc_control &= OHCI_CTRL_RWC; | ||
2356 | hc_control |= OHCI_USB_RESUME; | ||
2357 | sleep_time = 10; | ||
2358 | break; | ||
2359 | default: | ||
2360 | hc_control &= OHCI_CTRL_RWC; | ||
2361 | hc_control |= OHCI_USB_RESET; | ||
2362 | sleep_time = 50; | ||
2363 | break; | ||
2364 | } | ||
2365 | retval = ftdi_write_pcimem(ftdi, control, hc_control); | ||
2366 | if (retval) | ||
2367 | return retval; | ||
2368 | retval = ftdi_read_pcimem(ftdi, control, &control); | ||
2369 | if (retval) | ||
2370 | return retval; | ||
2371 | msleep(sleep_time); | ||
2372 | retval = ftdi_read_pcimem(ftdi, roothub.a, &roothub_a); | ||
2373 | if (retval) | ||
2374 | return retval; | ||
2375 | if (!(roothub_a & RH_A_NPS)) { /* power down each port */ | ||
2376 | for (temp = 0; temp < num_ports; temp++) { | ||
2377 | retval = ftdi_write_pcimem(ftdi, | ||
2378 | roothub.portstatus[temp], RH_PS_LSDA); | ||
2379 | if (retval) | ||
2380 | return retval; | ||
2381 | } | ||
2382 | } | ||
2383 | retval = ftdi_read_pcimem(ftdi, control, &control); | ||
2384 | if (retval) | ||
2385 | return retval; | ||
2386 | retry:retval = ftdi_read_pcimem(ftdi, cmdstatus, &status); | ||
2387 | if (retval) | ||
2388 | return retval; | ||
2389 | retval = ftdi_write_pcimem(ftdi, cmdstatus, OHCI_HCR); | ||
2390 | if (retval) | ||
2391 | return retval; | ||
2392 | extra:{ | ||
2393 | retval = ftdi_read_pcimem(ftdi, cmdstatus, &status); | ||
2394 | if (retval) | ||
2395 | return retval; | ||
2396 | if (0 != (status & OHCI_HCR)) { | ||
2397 | if (--reset_timeout == 0) { | ||
2398 | dev_err(&ftdi->udev->dev, "USB HC reset timed o" | ||
2399 | "ut!\n"); | ||
2400 | return -ENODEV; | ||
2401 | } else { | ||
2402 | msleep(5); | ||
2403 | goto extra; | ||
2404 | } | ||
2405 | } | ||
2406 | } | ||
2407 | if (quirk & OHCI_QUIRK_INITRESET) { | ||
2408 | retval = ftdi_write_pcimem(ftdi, control, hc_control); | ||
2409 | if (retval) | ||
2410 | return retval; | ||
2411 | retval = ftdi_read_pcimem(ftdi, control, &control); | ||
2412 | if (retval) | ||
2413 | return retval; | ||
2414 | } | ||
2415 | retval = ftdi_write_pcimem(ftdi, ed_controlhead, 0x00000000); | ||
2416 | if (retval) | ||
2417 | return retval; | ||
2418 | retval = ftdi_write_pcimem(ftdi, ed_bulkhead, 0x11000000); | ||
2419 | if (retval) | ||
2420 | return retval; | ||
2421 | retval = ftdi_write_pcimem(ftdi, hcca, 0x00000000); | ||
2422 | if (retval) | ||
2423 | return retval; | ||
2424 | retval = ftdi_read_pcimem(ftdi, fminterval, &fminterval); | ||
2425 | if (retval) | ||
2426 | return retval; | ||
2427 | retval = ftdi_write_pcimem(ftdi, fminterval, | ||
2428 | ((fminterval & FIT) ^ FIT) | hc_fminterval); | ||
2429 | if (retval) | ||
2430 | return retval; | ||
2431 | retval = ftdi_write_pcimem(ftdi, periodicstart, | ||
2432 | ((9 *hc_fminterval) / 10) & 0x3fff); | ||
2433 | if (retval) | ||
2434 | return retval; | ||
2435 | retval = ftdi_read_pcimem(ftdi, fminterval, &fminterval); | ||
2436 | if (retval) | ||
2437 | return retval; | ||
2438 | retval = ftdi_read_pcimem(ftdi, periodicstart, &periodicstart); | ||
2439 | if (retval) | ||
2440 | return retval; | ||
2441 | if (0 == (fminterval & 0x3fff0000) || 0 == periodicstart) { | ||
2442 | if (!(quirk & OHCI_QUIRK_INITRESET)) { | ||
2443 | quirk |= OHCI_QUIRK_INITRESET; | ||
2444 | goto retry; | ||
2445 | } else | ||
2446 | dev_err(&ftdi->udev->dev, "init err(%08x %04x)\n", | ||
2447 | fminterval, periodicstart); | ||
2448 | } /* start controller operations */ | ||
2449 | hc_control &= OHCI_CTRL_RWC; | ||
2450 | hc_control |= OHCI_CONTROL_INIT | OHCI_CTRL_BLE | OHCI_USB_OPER; | ||
2451 | retval = ftdi_write_pcimem(ftdi, control, hc_control); | ||
2452 | if (retval) | ||
2453 | return retval; | ||
2454 | retval = ftdi_write_pcimem(ftdi, cmdstatus, OHCI_BLF); | ||
2455 | if (retval) | ||
2456 | return retval; | ||
2457 | retval = ftdi_read_pcimem(ftdi, cmdstatus, &cmdstatus); | ||
2458 | if (retval) | ||
2459 | return retval; | ||
2460 | retval = ftdi_read_pcimem(ftdi, control, &control); | ||
2461 | if (retval) | ||
2462 | return retval; | ||
2463 | retval = ftdi_write_pcimem(ftdi, roothub.status, RH_HS_DRWE); | ||
2464 | if (retval) | ||
2465 | return retval; | ||
2466 | retval = ftdi_write_pcimem(ftdi, intrstatus, mask); | ||
2467 | if (retval) | ||
2468 | return retval; | ||
2469 | retval = ftdi_write_pcimem(ftdi, intrdisable, | ||
2470 | OHCI_INTR_MIE | OHCI_INTR_OC | OHCI_INTR_RHSC | OHCI_INTR_FNO | | ||
2471 | OHCI_INTR_UE | OHCI_INTR_RD | OHCI_INTR_SF | OHCI_INTR_WDH | | ||
2472 | OHCI_INTR_SO); | ||
2473 | if (retval) | ||
2474 | return retval; /* handle root hub init quirks ... */ | ||
2475 | retval = ftdi_read_pcimem(ftdi, roothub.a, &roothub_a); | ||
2476 | if (retval) | ||
2477 | return retval; | ||
2478 | roothub_a &= ~(RH_A_PSM | RH_A_OCPM); | ||
2479 | if (quirk & OHCI_QUIRK_SUPERIO) { | ||
2480 | roothub_a |= RH_A_NOCP; | ||
2481 | roothub_a &= ~(RH_A_POTPGT | RH_A_NPS); | ||
2482 | retval = ftdi_write_pcimem(ftdi, roothub.a, roothub_a); | ||
2483 | if (retval) | ||
2484 | return retval; | ||
2485 | } else if ((quirk & OHCI_QUIRK_AMD756) || distrust_firmware) { | ||
2486 | roothub_a |= RH_A_NPS; | ||
2487 | retval = ftdi_write_pcimem(ftdi, roothub.a, roothub_a); | ||
2488 | if (retval) | ||
2489 | return retval; | ||
2490 | } | ||
2491 | retval = ftdi_write_pcimem(ftdi, roothub.status, RH_HS_LPSC); | ||
2492 | if (retval) | ||
2493 | return retval; | ||
2494 | retval = ftdi_write_pcimem(ftdi, roothub.b, | ||
2495 | (roothub_a & RH_A_NPS) ? 0 : RH_B_PPCM); | ||
2496 | if (retval) | ||
2497 | return retval; | ||
2498 | retval = ftdi_read_pcimem(ftdi, control, &control); | ||
2499 | if (retval) | ||
2500 | return retval; | ||
2501 | mdelay((roothub_a >> 23) & 0x1fe); | ||
2502 | for (temp = 0; temp < num_ports; temp++) { | ||
2503 | u32 portstatus; | ||
2504 | retval = ftdi_read_pcimem(ftdi, roothub.portstatus[temp], | ||
2505 | &portstatus); | ||
2506 | if (retval) | ||
2507 | return retval; | ||
2508 | if (1 & portstatus) | ||
2509 | devices += 1; | ||
2510 | } | ||
2511 | return devices; | ||
2512 | } | ||
2513 | |||
2514 | static int ftdi_elan_setup_controller(struct usb_ftdi *ftdi, int fn) | ||
2292 | { | 2515 | { |
2293 | u32 latence_timer; | 2516 | u32 latence_timer; |
2294 | u32 controlreg; | ||
2295 | int UxxxStatus; | 2517 | int UxxxStatus; |
2296 | u32 pcidata; | 2518 | u32 pcidata; |
2297 | int reg = 0; | 2519 | int reg = 0; |
2298 | int foundOHCI = 0; | 2520 | int activePCIfn = fn << 8; |
2299 | u8 fn; | 2521 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000025FL | 0x2800); |
2300 | int activePCIfn = 0; | ||
2301 | u32 pciVID = 0; | ||
2302 | u32 pciPID = 0; | ||
2303 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | ||
2304 | if (UxxxStatus) | ||
2305 | return UxxxStatus; | ||
2306 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x00000000L); | ||
2307 | if (UxxxStatus) | ||
2308 | return UxxxStatus; | ||
2309 | msleep(750); | ||
2310 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x00000200L | 0x100); | ||
2311 | if (UxxxStatus) | 2522 | if (UxxxStatus) |
2312 | return UxxxStatus; | 2523 | return UxxxStatus; |
2313 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x00000200L | 0x500); | 2524 | reg = 16; |
2525 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0, | ||
2526 | 0xFFFFFFFF); | ||
2314 | if (UxxxStatus) | 2527 | if (UxxxStatus) |
2315 | return UxxxStatus; | 2528 | return UxxxStatus; |
2316 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | 2529 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
2530 | &pcidata); | ||
2317 | if (UxxxStatus) | 2531 | if (UxxxStatus) |
2318 | return UxxxStatus; | 2532 | return UxxxStatus; |
2319 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000020CL | 0x000); | 2533 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0, |
2534 | 0xF0000000); | ||
2320 | if (UxxxStatus) | 2535 | if (UxxxStatus) |
2321 | return UxxxStatus; | 2536 | return UxxxStatus; |
2322 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000020DL | 0x000); | 2537 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
2538 | &pcidata); | ||
2323 | if (UxxxStatus) | 2539 | if (UxxxStatus) |
2324 | return UxxxStatus; | 2540 | return UxxxStatus; |
2325 | msleep(250); | 2541 | reg = 12; |
2326 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000020FL | 0x000); | 2542 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
2543 | &latence_timer); | ||
2327 | if (UxxxStatus) | 2544 | if (UxxxStatus) |
2328 | return UxxxStatus; | 2545 | return UxxxStatus; |
2329 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | 2546 | latence_timer &= 0xFFFF00FF; |
2547 | latence_timer |= 0x00001600; | ||
2548 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0x00, | ||
2549 | latence_timer); | ||
2330 | if (UxxxStatus) | 2550 | if (UxxxStatus) |
2331 | return UxxxStatus; | 2551 | return UxxxStatus; |
2332 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000025FL | 0x800); | 2552 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
2553 | &pcidata); | ||
2333 | if (UxxxStatus) | 2554 | if (UxxxStatus) |
2334 | return UxxxStatus; | 2555 | return UxxxStatus; |
2335 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | 2556 | reg = 4; |
2557 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0x00, | ||
2558 | 0x06); | ||
2336 | if (UxxxStatus) | 2559 | if (UxxxStatus) |
2337 | return UxxxStatus; | 2560 | return UxxxStatus; |
2338 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | 2561 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
2562 | &pcidata); | ||
2339 | if (UxxxStatus) | 2563 | if (UxxxStatus) |
2340 | return UxxxStatus; | 2564 | return UxxxStatus; |
2341 | msleep(1000); | 2565 | for (reg = 0; reg <= 0x54; reg += 4) { |
2342 | for (fn = 0; (fn < 4) && (!foundOHCI); fn++) { | 2566 | UxxxStatus = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); |
2343 | activePCIfn = fn << 8; | ||
2344 | ftdi->function = fn + 1; | ||
2345 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, | ||
2346 | &pcidata); | ||
2347 | if (UxxxStatus) | 2567 | if (UxxxStatus) |
2348 | return UxxxStatus; | 2568 | return UxxxStatus; |
2349 | pciVID = pcidata & 0xFFFF; | ||
2350 | pciPID = (pcidata >> 16) & 0xFFFF; | ||
2351 | if ((pciVID == 0x1045) && (pciPID == 0xc861)) { | ||
2352 | foundOHCI = 1; | ||
2353 | } else if ((pciVID == 0x1033) && (pciPID == 0x0035)) { | ||
2354 | foundOHCI = 1; | ||
2355 | } else if ((pciVID == 0x10b9) && (pciPID == 0x5237)) { | ||
2356 | foundOHCI = 1; | ||
2357 | } else if ((pciVID == 0x11c1) && (pciPID == 0x5802)) { | ||
2358 | foundOHCI = 1; | ||
2359 | } else if ((pciVID == 0x11AB) && (pciPID == 0x1FA6)) { | ||
2360 | } | ||
2361 | } | ||
2362 | if (foundOHCI == 0) { | ||
2363 | return -ENXIO; | ||
2364 | } | 2569 | } |
2365 | ftdi->platform_data.vendor = pciVID; | 2570 | return 0; |
2366 | ftdi->platform_data.device = pciPID; | 2571 | } |
2572 | |||
2573 | static int ftdi_elan_close_controller(struct usb_ftdi *ftdi, int fn) | ||
2574 | { | ||
2575 | u32 latence_timer; | ||
2576 | int UxxxStatus; | ||
2577 | u32 pcidata; | ||
2578 | int reg = 0; | ||
2579 | int activePCIfn = fn << 8; | ||
2367 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000025FL | 0x2800); | 2580 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000025FL | 0x2800); |
2368 | if (UxxxStatus) | 2581 | if (UxxxStatus) |
2369 | return UxxxStatus; | 2582 | return UxxxStatus; |
@@ -2377,7 +2590,7 @@ static int ftdi_elan_enumeratePCI(struct usb_ftdi *ftdi) | |||
2377 | if (UxxxStatus) | 2590 | if (UxxxStatus) |
2378 | return UxxxStatus; | 2591 | return UxxxStatus; |
2379 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0, | 2592 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0, |
2380 | 0xF0000000); | 2593 | 0x00000000); |
2381 | if (UxxxStatus) | 2594 | if (UxxxStatus) |
2382 | return UxxxStatus; | 2595 | return UxxxStatus; |
2383 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, | 2596 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
@@ -2401,7 +2614,7 @@ static int ftdi_elan_enumeratePCI(struct usb_ftdi *ftdi) | |||
2401 | return UxxxStatus; | 2614 | return UxxxStatus; |
2402 | reg = 4; | 2615 | reg = 4; |
2403 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0x00, | 2616 | UxxxStatus = ftdi_elan_write_config(ftdi, activePCIfn | reg, 0x00, |
2404 | 0x06); | 2617 | 0x00); |
2405 | if (UxxxStatus) | 2618 | if (UxxxStatus) |
2406 | return UxxxStatus; | 2619 | return UxxxStatus; |
2407 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, | 2620 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
@@ -2411,159 +2624,139 @@ static int ftdi_elan_enumeratePCI(struct usb_ftdi *ftdi) | |||
2411 | return 0; | 2624 | return 0; |
2412 | } | 2625 | } |
2413 | 2626 | ||
2627 | static int ftdi_elan_found_controller(struct usb_ftdi *ftdi, int fn, int quirk) | ||
2628 | { | ||
2629 | int result; | ||
2630 | int UxxxStatus; | ||
2631 | UxxxStatus = ftdi_elan_setup_controller(ftdi, fn); | ||
2632 | if (UxxxStatus) | ||
2633 | return UxxxStatus; | ||
2634 | result = ftdi_elan_check_controller(ftdi, quirk); | ||
2635 | UxxxStatus = ftdi_elan_close_controller(ftdi, fn); | ||
2636 | if (UxxxStatus) | ||
2637 | return UxxxStatus; | ||
2638 | return result; | ||
2639 | } | ||
2640 | |||
2641 | static int ftdi_elan_enumeratePCI(struct usb_ftdi *ftdi) | ||
2642 | { | ||
2643 | u32 controlreg; | ||
2644 | u8 sensebits; | ||
2645 | int UxxxStatus; | ||
2646 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | ||
2647 | if (UxxxStatus) | ||
2648 | return UxxxStatus; | ||
2649 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x00000000L); | ||
2650 | if (UxxxStatus) | ||
2651 | return UxxxStatus; | ||
2652 | msleep(750); | ||
2653 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x00000200L | 0x100); | ||
2654 | if (UxxxStatus) | ||
2655 | return UxxxStatus; | ||
2656 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x00000200L | 0x500); | ||
2657 | if (UxxxStatus) | ||
2658 | return UxxxStatus; | ||
2659 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | ||
2660 | if (UxxxStatus) | ||
2661 | return UxxxStatus; | ||
2662 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000020CL | 0x000); | ||
2663 | if (UxxxStatus) | ||
2664 | return UxxxStatus; | ||
2665 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000020DL | 0x000); | ||
2666 | if (UxxxStatus) | ||
2667 | return UxxxStatus; | ||
2668 | msleep(250); | ||
2669 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000020FL | 0x000); | ||
2670 | if (UxxxStatus) | ||
2671 | return UxxxStatus; | ||
2672 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | ||
2673 | if (UxxxStatus) | ||
2674 | return UxxxStatus; | ||
2675 | UxxxStatus = ftdi_elan_write_reg(ftdi, 0x0000025FL | 0x800); | ||
2676 | if (UxxxStatus) | ||
2677 | return UxxxStatus; | ||
2678 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | ||
2679 | if (UxxxStatus) | ||
2680 | return UxxxStatus; | ||
2681 | UxxxStatus = ftdi_elan_read_reg(ftdi, &controlreg); | ||
2682 | if (UxxxStatus) | ||
2683 | return UxxxStatus; | ||
2684 | msleep(1000); | ||
2685 | sensebits = (controlreg >> 16) & 0x000F; | ||
2686 | if (0x0D == sensebits) | ||
2687 | return 0; | ||
2688 | else | ||
2689 | return - ENXIO; | ||
2690 | } | ||
2691 | |||
2414 | static int ftdi_elan_setupOHCI(struct usb_ftdi *ftdi) | 2692 | static int ftdi_elan_setupOHCI(struct usb_ftdi *ftdi) |
2415 | { | 2693 | { |
2694 | int UxxxStatus; | ||
2416 | u32 pcidata; | 2695 | u32 pcidata; |
2417 | int U132Status; | 2696 | int reg = 0; |
2418 | int reg; | 2697 | u8 fn; |
2419 | int reset_repeat = 0; | 2698 | int activePCIfn = 0; |
2420 | do_reset:reg = 8; | 2699 | int max_devices = 0; |
2421 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x0e, 0x01); | 2700 | int controllers = 0; |
2422 | if (U132Status) | 2701 | int unrecognized = 0; |
2423 | return U132Status; | 2702 | ftdi->function = 0; |
2424 | reset_check:{ | 2703 | for (fn = 0; (fn < 4); fn++) { |
2425 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | 2704 | u32 pciVID = 0; |
2426 | if (U132Status) | 2705 | u32 pciPID = 0; |
2427 | return U132Status; | 2706 | int devices = 0; |
2428 | if (pcidata & 1) { | 2707 | activePCIfn = fn << 8; |
2429 | msleep(500); | 2708 | UxxxStatus = ftdi_elan_read_config(ftdi, activePCIfn | reg, 0, |
2430 | if (reset_repeat++ > 100) { | 2709 | &pcidata); |
2431 | reset_repeat = 0; | 2710 | if (UxxxStatus) |
2432 | goto do_reset; | 2711 | return UxxxStatus; |
2433 | } else | 2712 | pciVID = pcidata & 0xFFFF; |
2434 | goto reset_check; | 2713 | pciPID = (pcidata >> 16) & 0xFFFF; |
2714 | if ((pciVID == PCI_VENDOR_ID_OPTI) && (pciPID == 0xc861)) { | ||
2715 | devices = ftdi_elan_found_controller(ftdi, fn, 0); | ||
2716 | controllers += 1; | ||
2717 | } else if ((pciVID == PCI_VENDOR_ID_NEC) && (pciPID == 0x0035)) | ||
2718 | { | ||
2719 | devices = ftdi_elan_found_controller(ftdi, fn, 0); | ||
2720 | controllers += 1; | ||
2721 | } else if ((pciVID == PCI_VENDOR_ID_AL) && (pciPID == 0x5237)) { | ||
2722 | devices = ftdi_elan_found_controller(ftdi, fn, 0); | ||
2723 | controllers += 1; | ||
2724 | } else if ((pciVID == PCI_VENDOR_ID_ATT) && (pciPID == 0x5802)) | ||
2725 | { | ||
2726 | devices = ftdi_elan_found_controller(ftdi, fn, 0); | ||
2727 | controllers += 1; | ||
2728 | } else if (pciVID == PCI_VENDOR_ID_AMD && pciPID == 0x740c) { | ||
2729 | devices = ftdi_elan_found_controller(ftdi, fn, | ||
2730 | OHCI_QUIRK_AMD756); | ||
2731 | controllers += 1; | ||
2732 | } else if (pciVID == PCI_VENDOR_ID_COMPAQ && pciPID == 0xa0f8) { | ||
2733 | devices = ftdi_elan_found_controller(ftdi, fn, | ||
2734 | OHCI_QUIRK_ZFMICRO); | ||
2735 | controllers += 1; | ||
2736 | } else if (0 == pcidata) { | ||
2737 | } else | ||
2738 | unrecognized += 1; | ||
2739 | if (devices > max_devices) { | ||
2740 | max_devices = devices; | ||
2741 | ftdi->function = fn + 1; | ||
2742 | ftdi->platform_data.vendor = pciVID; | ||
2743 | ftdi->platform_data.device = pciPID; | ||
2435 | } | 2744 | } |
2436 | } | 2745 | } |
2437 | goto dump_regs; | 2746 | if (ftdi->function > 0) { |
2438 | msleep(500); | 2747 | UxxxStatus = ftdi_elan_setup_controller(ftdi, |
2439 | reg = 0x28; | 2748 | ftdi->function - 1); |
2440 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x11000000); | 2749 | if (UxxxStatus) |
2441 | if (U132Status) | 2750 | return UxxxStatus; |
2442 | return U132Status; | 2751 | return 0; |
2443 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | 2752 | } else if (controllers > 0) { |
2444 | if (U132Status) | 2753 | return -ENXIO; |
2445 | return U132Status; | 2754 | } else if (unrecognized > 0) { |
2446 | reg = 0x40; | 2755 | return -ENXIO; |
2447 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x2edf); | 2756 | } else { |
2448 | if (U132Status) | 2757 | ftdi->enumerated = 0; |
2449 | return U132Status; | 2758 | return -ENXIO; |
2450 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2451 | if (U132Status) | ||
2452 | return U132Status; | ||
2453 | reg = 0x34; | ||
2454 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x2edf2edf); | ||
2455 | if (U132Status) | ||
2456 | return U132Status; | ||
2457 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2458 | if (U132Status) | ||
2459 | return U132Status; | ||
2460 | reg = 4; | ||
2461 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0xA0); | ||
2462 | if (U132Status) | ||
2463 | return U132Status; | ||
2464 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2465 | if (U132Status) | ||
2466 | return U132Status; | ||
2467 | msleep(250); | ||
2468 | reg = 8; | ||
2469 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x0e, 0x04); | ||
2470 | if (U132Status) | ||
2471 | return U132Status; | ||
2472 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2473 | if (U132Status) | ||
2474 | return U132Status; | ||
2475 | reg = 0x28; | ||
2476 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2477 | if (U132Status) | ||
2478 | return U132Status; | ||
2479 | reg = 8; | ||
2480 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2481 | if (U132Status) | ||
2482 | return U132Status; | ||
2483 | reg = 0x48; | ||
2484 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x00001200); | ||
2485 | if (U132Status) | ||
2486 | return U132Status; | ||
2487 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2488 | if (U132Status) | ||
2489 | return U132Status; | ||
2490 | reg = 0x54; | ||
2491 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2492 | if (U132Status) | ||
2493 | return U132Status; | ||
2494 | reg = 0x58; | ||
2495 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2496 | if (U132Status) | ||
2497 | return U132Status; | ||
2498 | reg = 0x34; | ||
2499 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x28002edf); | ||
2500 | if (U132Status) | ||
2501 | return U132Status; | ||
2502 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2503 | if (U132Status) | ||
2504 | return U132Status; | ||
2505 | msleep(100); | ||
2506 | reg = 0x50; | ||
2507 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x10000); | ||
2508 | if (U132Status) | ||
2509 | return U132Status; | ||
2510 | reg = 0x54; | ||
2511 | power_check:U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2512 | if (U132Status) | ||
2513 | return U132Status; | ||
2514 | if (!(pcidata & 1)) { | ||
2515 | msleep(500); | ||
2516 | goto power_check; | ||
2517 | } | ||
2518 | msleep(3000); | ||
2519 | reg = 0x54; | ||
2520 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2521 | if (U132Status) | ||
2522 | return U132Status; | ||
2523 | reg = 0x58; | ||
2524 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2525 | if (U132Status) | ||
2526 | return U132Status; | ||
2527 | reg = 0x54; | ||
2528 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x02); | ||
2529 | if (U132Status) | ||
2530 | return U132Status; | ||
2531 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2532 | if (U132Status) | ||
2533 | return U132Status; | ||
2534 | reg = 0x54; | ||
2535 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x10); | ||
2536 | if (U132Status) | ||
2537 | return U132Status; | ||
2538 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2539 | if (U132Status) | ||
2540 | return U132Status; | ||
2541 | msleep(750); | ||
2542 | reg = 0x54; | ||
2543 | if (0) { | ||
2544 | U132Status = ftdi_elan_write_pcimem(ftdi, reg, 0x00, 0x02); | ||
2545 | if (U132Status) | ||
2546 | return U132Status; | ||
2547 | } | ||
2548 | if (0) { | ||
2549 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2550 | if (U132Status) | ||
2551 | return U132Status; | ||
2552 | } | ||
2553 | reg = 0x54; | ||
2554 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2555 | if (U132Status) | ||
2556 | return U132Status; | ||
2557 | reg = 0x58; | ||
2558 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2559 | if (U132Status) | ||
2560 | return U132Status; | ||
2561 | dump_regs:for (reg = 0; reg <= 0x54; reg += 4) { | ||
2562 | U132Status = ftdi_elan_read_pcimem(ftdi, reg, 0, &pcidata); | ||
2563 | if (U132Status) | ||
2564 | return U132Status; | ||
2565 | } | 2759 | } |
2566 | return 0; | ||
2567 | } | 2760 | } |
2568 | 2761 | ||
2569 | 2762 | ||
@@ -2688,6 +2881,7 @@ static void ftdi_elan_disconnect(struct usb_interface *interface) | |||
2688 | platform_device_unregister(&ftdi->platform_dev); | 2881 | platform_device_unregister(&ftdi->platform_dev); |
2689 | ftdi->synchronized = 0; | 2882 | ftdi->synchronized = 0; |
2690 | ftdi->enumerated = 0; | 2883 | ftdi->enumerated = 0; |
2884 | ftdi->initialized = 0; | ||
2691 | ftdi->registered = 0; | 2885 | ftdi->registered = 0; |
2692 | } | 2886 | } |
2693 | flush_workqueue(status_queue); | 2887 | flush_workqueue(status_queue); |
diff --git a/drivers/usb/misc/phidgetservo.c b/drivers/usb/misc/phidgetservo.c index 7163f05c5b27..0d9de2f73930 100644 --- a/drivers/usb/misc/phidgetservo.c +++ b/drivers/usb/misc/phidgetservo.c | |||
@@ -282,6 +282,7 @@ servo_probe(struct usb_interface *interface, const struct usb_device_id *id) | |||
282 | dev->dev = NULL; | 282 | dev->dev = NULL; |
283 | goto out; | 283 | goto out; |
284 | } | 284 | } |
285 | dev_set_drvdata(dev->dev, dev); | ||
285 | 286 | ||
286 | servo_count = dev->type & SERVO_COUNT_QUAD ? 4 : 1; | 287 | servo_count = dev->type & SERVO_COUNT_QUAD ? 4 : 1; |
287 | 288 | ||
diff --git a/drivers/usb/misc/trancevibrator.c b/drivers/usb/misc/trancevibrator.c index 33cd91d11eca..67e2fc20eeeb 100644 --- a/drivers/usb/misc/trancevibrator.c +++ b/drivers/usb/misc/trancevibrator.c | |||
@@ -120,8 +120,8 @@ static void tv_disconnect(struct usb_interface *interface) | |||
120 | struct trancevibrator *dev; | 120 | struct trancevibrator *dev; |
121 | 121 | ||
122 | dev = usb_get_intfdata (interface); | 122 | dev = usb_get_intfdata (interface); |
123 | usb_set_intfdata(interface, NULL); | ||
124 | device_remove_file(&interface->dev, &dev_attr_speed); | 123 | device_remove_file(&interface->dev, &dev_attr_speed); |
124 | usb_set_intfdata(interface, NULL); | ||
125 | usb_put_dev(dev->udev); | 125 | usb_put_dev(dev->udev); |
126 | kfree(dev); | 126 | kfree(dev); |
127 | } | 127 | } |
diff --git a/drivers/usb/net/gl620a.c b/drivers/usb/net/gl620a.c index a3242be21959..a6f0f4d934df 100644 --- a/drivers/usb/net/gl620a.c +++ b/drivers/usb/net/gl620a.c | |||
@@ -79,160 +79,6 @@ struct gl_header { | |||
79 | struct gl_packet packets; | 79 | struct gl_packet packets; |
80 | }; | 80 | }; |
81 | 81 | ||
82 | #ifdef GENELINK_ACK | ||
83 | |||
84 | // FIXME: this code is incomplete, not debugged; it doesn't | ||
85 | // handle interrupts correctly; it should use the generic | ||
86 | // status IRQ code (which didn't exist back in 2001). | ||
87 | |||
88 | struct gl_priv { | ||
89 | struct urb *irq_urb; | ||
90 | char irq_buf [INTERRUPT_BUFSIZE]; | ||
91 | }; | ||
92 | |||
93 | static inline int gl_control_write(struct usbnet *dev, u8 request, u16 value) | ||
94 | { | ||
95 | int retval; | ||
96 | |||
97 | retval = usb_control_msg(dev->udev, | ||
98 | usb_sndctrlpipe(dev->udev, 0), | ||
99 | request, | ||
100 | USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, | ||
101 | value, | ||
102 | 0, // index | ||
103 | 0, // data buffer | ||
104 | 0, // size | ||
105 | USB_CTRL_SET_TIMEOUT); | ||
106 | return retval; | ||
107 | } | ||
108 | |||
109 | static void gl_interrupt_complete(struct urb *urb) | ||
110 | { | ||
111 | int status = urb->status; | ||
112 | |||
113 | switch (status) { | ||
114 | case 0: | ||
115 | /* success */ | ||
116 | break; | ||
117 | case -ECONNRESET: | ||
118 | case -ENOENT: | ||
119 | case -ESHUTDOWN: | ||
120 | /* this urb is terminated, clean up */ | ||
121 | dbg("%s - urb shutting down with status: %d", | ||
122 | __FUNCTION__, status); | ||
123 | return; | ||
124 | default: | ||
125 | dbg("%s - nonzero urb status received: %d", | ||
126 | __FUNCTION__, urb->status); | ||
127 | } | ||
128 | |||
129 | status = usb_submit_urb(urb, GFP_ATOMIC); | ||
130 | if (status) | ||
131 | err("%s - usb_submit_urb failed with result %d", | ||
132 | __FUNCTION__, status); | ||
133 | } | ||
134 | |||
135 | static int gl_interrupt_read(struct usbnet *dev) | ||
136 | { | ||
137 | struct gl_priv *priv = dev->priv_data; | ||
138 | int retval; | ||
139 | |||
140 | // issue usb interrupt read | ||
141 | if (priv && priv->irq_urb) { | ||
142 | // submit urb | ||
143 | if ((retval = usb_submit_urb(priv->irq_urb, GFP_KERNEL)) != 0) | ||
144 | dbg("gl_interrupt_read: submit fail - %X...", retval); | ||
145 | else | ||
146 | dbg("gl_interrupt_read: submit success..."); | ||
147 | } | ||
148 | |||
149 | return 0; | ||
150 | } | ||
151 | |||
152 | // check whether another side is connected | ||
153 | static int genelink_check_connect(struct usbnet *dev) | ||
154 | { | ||
155 | int retval; | ||
156 | |||
157 | dbg("genelink_check_connect..."); | ||
158 | |||
159 | // detect whether another side is connected | ||
160 | if ((retval = gl_control_write(dev, GENELINK_CONNECT_WRITE, 0)) != 0) { | ||
161 | dbg("%s: genelink_check_connect write fail - %X", | ||
162 | dev->net->name, retval); | ||
163 | return retval; | ||
164 | } | ||
165 | |||
166 | // usb interrupt read to ack another side | ||
167 | if ((retval = gl_interrupt_read(dev)) != 0) { | ||
168 | dbg("%s: genelink_check_connect read fail - %X", | ||
169 | dev->net->name, retval); | ||
170 | return retval; | ||
171 | } | ||
172 | |||
173 | dbg("%s: genelink_check_connect read success", dev->net->name); | ||
174 | return 0; | ||
175 | } | ||
176 | |||
177 | // allocate and initialize the private data for genelink | ||
178 | static int genelink_init(struct usbnet *dev) | ||
179 | { | ||
180 | struct gl_priv *priv; | ||
181 | |||
182 | // allocate the private data structure | ||
183 | if ((priv = kmalloc(sizeof *priv, GFP_KERNEL)) == 0) { | ||
184 | dbg("%s: cannot allocate private data per device", | ||
185 | dev->net->name); | ||
186 | return -ENOMEM; | ||
187 | } | ||
188 | |||
189 | // allocate irq urb | ||
190 | if ((priv->irq_urb = usb_alloc_urb(0, GFP_KERNEL)) == 0) { | ||
191 | dbg("%s: cannot allocate private irq urb per device", | ||
192 | dev->net->name); | ||
193 | kfree(priv); | ||
194 | return -ENOMEM; | ||
195 | } | ||
196 | |||
197 | // fill irq urb | ||
198 | usb_fill_int_urb(priv->irq_urb, dev->udev, | ||
199 | usb_rcvintpipe(dev->udev, GENELINK_INTERRUPT_PIPE), | ||
200 | priv->irq_buf, INTERRUPT_BUFSIZE, | ||
201 | gl_interrupt_complete, 0, | ||
202 | GENELINK_INTERRUPT_INTERVAL); | ||
203 | |||
204 | // set private data pointer | ||
205 | dev->priv_data = priv; | ||
206 | |||
207 | return 0; | ||
208 | } | ||
209 | |||
210 | // release the private data | ||
211 | static int genelink_free(struct usbnet *dev) | ||
212 | { | ||
213 | struct gl_priv *priv = dev->priv_data; | ||
214 | |||
215 | if (!priv) | ||
216 | return 0; | ||
217 | |||
218 | // FIXME: can't cancel here; it's synchronous, and | ||
219 | // should have happened earlier in any case (interrupt | ||
220 | // handling needs to be generic) | ||
221 | |||
222 | // cancel irq urb first | ||
223 | usb_kill_urb(priv->irq_urb); | ||
224 | |||
225 | // free irq urb | ||
226 | usb_free_urb(priv->irq_urb); | ||
227 | |||
228 | // free the private data structure | ||
229 | kfree(priv); | ||
230 | |||
231 | return 0; | ||
232 | } | ||
233 | |||
234 | #endif | ||
235 | |||
236 | static int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb) | 82 | static int genelink_rx_fixup(struct usbnet *dev, struct sk_buff *skb) |
237 | { | 83 | { |
238 | struct gl_header *header; | 84 | struct gl_header *header; |
diff --git a/drivers/usb/net/rtl8150.c b/drivers/usb/net/rtl8150.c index c54235f73cb6..e0eecda78ec1 100644 --- a/drivers/usb/net/rtl8150.c +++ b/drivers/usb/net/rtl8150.c | |||
@@ -124,10 +124,11 @@ | |||
124 | #define RX_URB_FAIL 3 | 124 | #define RX_URB_FAIL 3 |
125 | 125 | ||
126 | /* Define these values to match your device */ | 126 | /* Define these values to match your device */ |
127 | #define VENDOR_ID_REALTEK 0x0bda | 127 | #define VENDOR_ID_REALTEK 0x0bda |
128 | #define VENDOR_ID_MELCO 0x0411 | 128 | #define VENDOR_ID_MELCO 0x0411 |
129 | #define VENDOR_ID_MICRONET 0x3980 | 129 | #define VENDOR_ID_MICRONET 0x3980 |
130 | #define VENDOR_ID_LONGSHINE 0x07b8 | 130 | #define VENDOR_ID_LONGSHINE 0x07b8 |
131 | #define VENDOR_ID_OQO 0x1557 | ||
131 | #define VENDOR_ID_ZYXEL 0x0586 | 132 | #define VENDOR_ID_ZYXEL 0x0586 |
132 | 133 | ||
133 | #define PRODUCT_ID_RTL8150 0x8150 | 134 | #define PRODUCT_ID_RTL8150 0x8150 |
@@ -144,6 +145,7 @@ static struct usb_device_id rtl8150_table[] = { | |||
144 | {USB_DEVICE(VENDOR_ID_MELCO, PRODUCT_ID_LUAKTX)}, | 145 | {USB_DEVICE(VENDOR_ID_MELCO, PRODUCT_ID_LUAKTX)}, |
145 | {USB_DEVICE(VENDOR_ID_MICRONET, PRODUCT_ID_SP128AR)}, | 146 | {USB_DEVICE(VENDOR_ID_MICRONET, PRODUCT_ID_SP128AR)}, |
146 | {USB_DEVICE(VENDOR_ID_LONGSHINE, PRODUCT_ID_LCS8138TX)}, | 147 | {USB_DEVICE(VENDOR_ID_LONGSHINE, PRODUCT_ID_LCS8138TX)}, |
148 | {USB_DEVICE(VENDOR_ID_OQO, PRODUCT_ID_RTL8150)}, | ||
147 | {USB_DEVICE(VENDOR_ID_ZYXEL, PRODUCT_ID_PRESTIGE)}, | 149 | {USB_DEVICE(VENDOR_ID_ZYXEL, PRODUCT_ID_PRESTIGE)}, |
148 | {} | 150 | {} |
149 | }; | 151 | }; |
diff --git a/drivers/usb/serial/airprime.c b/drivers/usb/serial/airprime.c index 96c73726d74a..f2ca76a9cbac 100644 --- a/drivers/usb/serial/airprime.c +++ b/drivers/usb/serial/airprime.c | |||
@@ -19,8 +19,11 @@ | |||
19 | static struct usb_device_id id_table [] = { | 19 | static struct usb_device_id id_table [] = { |
20 | { USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */ | 20 | { USB_DEVICE(0x0c88, 0x17da) }, /* Kyocera Wireless KPC650/Passport */ |
21 | { USB_DEVICE(0x1410, 0x1110) }, /* Novatel Wireless Merlin CDMA */ | 21 | { USB_DEVICE(0x1410, 0x1110) }, /* Novatel Wireless Merlin CDMA */ |
22 | { USB_DEVICE(0x1410, 0x1130) }, /* Novatel Wireless S720 CDMA/EV-DO */ | ||
23 | { USB_DEVICE(0x1410, 0x2110) }, /* Novatel Wireless U720 CDMA/EV-DO */ | ||
22 | { USB_DEVICE(0x1410, 0x1430) }, /* Novatel Merlin XU870 HSDPA/3G */ | 24 | { USB_DEVICE(0x1410, 0x1430) }, /* Novatel Merlin XU870 HSDPA/3G */ |
23 | { USB_DEVICE(0x1410, 0x1100) }, /* ExpressCard34 Qualcomm 3G CDMA */ | 25 | { USB_DEVICE(0x1410, 0x1100) }, /* ExpressCard34 Qualcomm 3G CDMA */ |
26 | { USB_DEVICE(0x413c, 0x8115) }, /* Dell Wireless HSDPA 5500 */ | ||
24 | { }, | 27 | { }, |
25 | }; | 28 | }; |
26 | MODULE_DEVICE_TABLE(usb, id_table); | 29 | MODULE_DEVICE_TABLE(usb, id_table); |
diff --git a/drivers/usb/serial/cp2101.c b/drivers/usb/serial/cp2101.c index 2f9b7ac32663..7ebaffd6ed86 100644 --- a/drivers/usb/serial/cp2101.c +++ b/drivers/usb/serial/cp2101.c | |||
@@ -69,6 +69,7 @@ static struct usb_device_id id_table [] = { | |||
69 | { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ | 69 | { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ |
70 | { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ | 70 | { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ |
71 | { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ | 71 | { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ |
72 | { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */ | ||
72 | { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */ | 73 | { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */ |
73 | { } /* Terminating Entry */ | 74 | { } /* Terminating Entry */ |
74 | }; | 75 | }; |
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c index 45cdf9bc43b2..6bc1f404e186 100644 --- a/drivers/usb/serial/cypress_m8.c +++ b/drivers/usb/serial/cypress_m8.c | |||
@@ -962,21 +962,6 @@ static int cypress_ioctl (struct usb_serial_port *port, struct file * file, unsi | |||
962 | cypress_set_termios(port, &priv->tmp_termios); | 962 | cypress_set_termios(port, &priv->tmp_termios); |
963 | return (0); | 963 | return (0); |
964 | break; | 964 | break; |
965 | /* these are called when setting baud rate from gpsd */ | ||
966 | case TCGETS: | ||
967 | if (copy_to_user((void __user *)arg, port->tty->termios, sizeof(struct termios))) { | ||
968 | return -EFAULT; | ||
969 | } | ||
970 | return (0); | ||
971 | break; | ||
972 | case TCSETS: | ||
973 | if (copy_from_user(port->tty->termios, (void __user *)arg, sizeof(struct termios))) { | ||
974 | return -EFAULT; | ||
975 | } | ||
976 | /* here we need to call cypress_set_termios to invoke the new settings */ | ||
977 | cypress_set_termios(port, &priv->tmp_termios); | ||
978 | return (0); | ||
979 | break; | ||
980 | /* This code comes from drivers/char/serial.c and ftdi_sio.c */ | 965 | /* This code comes from drivers/char/serial.c and ftdi_sio.c */ |
981 | case TIOCMIWAIT: | 966 | case TIOCMIWAIT: |
982 | while (priv != NULL) { | 967 | while (priv != NULL) { |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 41b0ad2d56ac..6986e756f7c0 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -452,6 +452,7 @@ static struct usb_device_id id_table_combined [] = { | |||
452 | { USB_DEVICE(FTDI_VID, LINX_FUTURE_2_PID) }, | 452 | { USB_DEVICE(FTDI_VID, LINX_FUTURE_2_PID) }, |
453 | { USB_DEVICE(FTDI_VID, FTDI_CCSICDU20_0_PID) }, | 453 | { USB_DEVICE(FTDI_VID, FTDI_CCSICDU20_0_PID) }, |
454 | { USB_DEVICE(FTDI_VID, FTDI_CCSICDU40_1_PID) }, | 454 | { USB_DEVICE(FTDI_VID, FTDI_CCSICDU40_1_PID) }, |
455 | { USB_DEVICE(FTDI_VID, FTDI_CCSMACHX_2_PID) }, | ||
455 | { USB_DEVICE(FTDI_VID, INSIDE_ACCESSO) }, | 456 | { USB_DEVICE(FTDI_VID, INSIDE_ACCESSO) }, |
456 | { USB_DEVICE(INTREPID_VID, INTREPID_VALUECAN_PID) }, | 457 | { USB_DEVICE(INTREPID_VID, INTREPID_VALUECAN_PID) }, |
457 | { USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) }, | 458 | { USB_DEVICE(INTREPID_VID, INTREPID_NEOVI_PID) }, |
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index bae117d359af..40dd394de58d 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h | |||
@@ -312,8 +312,9 @@ | |||
312 | 312 | ||
313 | /* CCS Inc. ICDU/ICDU40 product ID - the FT232BM is used in an in-circuit-debugger */ | 313 | /* CCS Inc. ICDU/ICDU40 product ID - the FT232BM is used in an in-circuit-debugger */ |
314 | /* unit for PIC16's/PIC18's */ | 314 | /* unit for PIC16's/PIC18's */ |
315 | #define FTDI_CCSICDU20_0_PID 0xF9D0 | 315 | #define FTDI_CCSICDU20_0_PID 0xF9D0 |
316 | #define FTDI_CCSICDU40_1_PID 0xF9D1 | 316 | #define FTDI_CCSICDU40_1_PID 0xF9D1 |
317 | #define FTDI_CCSMACHX_2_PID 0xF9D2 | ||
317 | 318 | ||
318 | /* Inside Accesso contactless reader (http://www.insidefr.com) */ | 319 | /* Inside Accesso contactless reader (http://www.insidefr.com) */ |
319 | #define INSIDE_ACCESSO 0xFAD0 | 320 | #define INSIDE_ACCESSO 0xFAD0 |
diff --git a/drivers/usb/serial/funsoft.c b/drivers/usb/serial/funsoft.c index 77b977206a8c..d3be9214c7c1 100644 --- a/drivers/usb/serial/funsoft.c +++ b/drivers/usb/serial/funsoft.c | |||
@@ -14,6 +14,9 @@ | |||
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/usb.h> | 15 | #include <linux/usb.h> |
16 | #include <linux/usb/serial.h> | 16 | #include <linux/usb/serial.h> |
17 | #include <asm/uaccess.h> | ||
18 | |||
19 | static int debug; | ||
17 | 20 | ||
18 | static struct usb_device_id id_table [] = { | 21 | static struct usb_device_id id_table [] = { |
19 | { USB_DEVICE(0x1404, 0xcddc) }, | 22 | { USB_DEVICE(0x1404, 0xcddc) }, |
@@ -21,6 +24,26 @@ static struct usb_device_id id_table [] = { | |||
21 | }; | 24 | }; |
22 | MODULE_DEVICE_TABLE(usb, id_table); | 25 | MODULE_DEVICE_TABLE(usb, id_table); |
23 | 26 | ||
27 | static int funsoft_ioctl(struct usb_serial_port *port, struct file *file, | ||
28 | unsigned int cmd, unsigned long arg) | ||
29 | { | ||
30 | struct termios t; | ||
31 | |||
32 | dbg("%s - port %d, cmd 0x%04x", __FUNCTION__, port->number, cmd); | ||
33 | |||
34 | if (cmd == TCSETSF) { | ||
35 | if (user_termios_to_kernel_termios(&t, (void __user *)arg)) | ||
36 | return -EFAULT; | ||
37 | |||
38 | dbg("%s - iflag:%x oflag:%x cflag:%x lflag:%x", __FUNCTION__, | ||
39 | t.c_iflag, t.c_oflag, t.c_cflag, t.c_lflag); | ||
40 | |||
41 | if (!(t.c_lflag & ICANON)) | ||
42 | return -EINVAL; | ||
43 | } | ||
44 | return -ENOIOCTLCMD; | ||
45 | } | ||
46 | |||
24 | static struct usb_driver funsoft_driver = { | 47 | static struct usb_driver funsoft_driver = { |
25 | .name = "funsoft", | 48 | .name = "funsoft", |
26 | .probe = usb_serial_probe, | 49 | .probe = usb_serial_probe, |
@@ -39,6 +62,7 @@ static struct usb_serial_driver funsoft_device = { | |||
39 | .num_bulk_in = NUM_DONT_CARE, | 62 | .num_bulk_in = NUM_DONT_CARE, |
40 | .num_bulk_out = NUM_DONT_CARE, | 63 | .num_bulk_out = NUM_DONT_CARE, |
41 | .num_ports = 1, | 64 | .num_ports = 1, |
65 | .ioctl = funsoft_ioctl, | ||
42 | }; | 66 | }; |
43 | 67 | ||
44 | static int __init funsoft_init(void) | 68 | static int __init funsoft_init(void) |
@@ -63,3 +87,6 @@ static void __exit funsoft_exit(void) | |||
63 | module_init(funsoft_init); | 87 | module_init(funsoft_init); |
64 | module_exit(funsoft_exit); | 88 | module_exit(funsoft_exit); |
65 | MODULE_LICENSE("GPL"); | 89 | MODULE_LICENSE("GPL"); |
90 | |||
91 | module_param(debug, bool, S_IRUGO | S_IWUSR); | ||
92 | MODULE_PARM_DESC(debug, "Debug enabled or not"); | ||
diff --git a/drivers/usb/serial/kl5kusb105.c b/drivers/usb/serial/kl5kusb105.c index 73d755df4840..5c4b06a99ac0 100644 --- a/drivers/usb/serial/kl5kusb105.c +++ b/drivers/usb/serial/kl5kusb105.c | |||
@@ -87,10 +87,6 @@ static int klsi_105_write_room (struct usb_serial_port *port); | |||
87 | static void klsi_105_read_bulk_callback (struct urb *urb); | 87 | static void klsi_105_read_bulk_callback (struct urb *urb); |
88 | static void klsi_105_set_termios (struct usb_serial_port *port, | 88 | static void klsi_105_set_termios (struct usb_serial_port *port, |
89 | struct ktermios *old); | 89 | struct ktermios *old); |
90 | static int klsi_105_ioctl (struct usb_serial_port *port, | ||
91 | struct file * file, | ||
92 | unsigned int cmd, | ||
93 | unsigned long arg); | ||
94 | static void klsi_105_throttle (struct usb_serial_port *port); | 90 | static void klsi_105_throttle (struct usb_serial_port *port); |
95 | static void klsi_105_unthrottle (struct usb_serial_port *port); | 91 | static void klsi_105_unthrottle (struct usb_serial_port *port); |
96 | /* | 92 | /* |
@@ -140,7 +136,6 @@ static struct usb_serial_driver kl5kusb105d_device = { | |||
140 | .chars_in_buffer = klsi_105_chars_in_buffer, | 136 | .chars_in_buffer = klsi_105_chars_in_buffer, |
141 | .write_room = klsi_105_write_room, | 137 | .write_room = klsi_105_write_room, |
142 | .read_bulk_callback =klsi_105_read_bulk_callback, | 138 | .read_bulk_callback =klsi_105_read_bulk_callback, |
143 | .ioctl = klsi_105_ioctl, | ||
144 | .set_termios = klsi_105_set_termios, | 139 | .set_termios = klsi_105_set_termios, |
145 | /*.break_ctl = klsi_105_break_ctl,*/ | 140 | /*.break_ctl = klsi_105_break_ctl,*/ |
146 | .tiocmget = klsi_105_tiocmget, | 141 | .tiocmget = klsi_105_tiocmget, |
@@ -899,69 +894,6 @@ static int klsi_105_tiocmset (struct usb_serial_port *port, struct file *file, | |||
899 | */ | 894 | */ |
900 | return retval; | 895 | return retval; |
901 | } | 896 | } |
902 | |||
903 | static int klsi_105_ioctl (struct usb_serial_port *port, struct file * file, | ||
904 | unsigned int cmd, unsigned long arg) | ||
905 | { | ||
906 | struct klsi_105_private *priv = usb_get_serial_port_data(port); | ||
907 | void __user *user_arg = (void __user *)arg; | ||
908 | |||
909 | dbg("%scmd=0x%x", __FUNCTION__, cmd); | ||
910 | |||
911 | /* Based on code from acm.c and others */ | ||
912 | switch (cmd) { | ||
913 | case TIOCMIWAIT: | ||
914 | /* wait for any of the 4 modem inputs (DCD,RI,DSR,CTS)*/ | ||
915 | /* TODO */ | ||
916 | dbg("%s - TIOCMIWAIT not handled", __FUNCTION__); | ||
917 | return -ENOIOCTLCMD; | ||
918 | case TIOCGICOUNT: | ||
919 | /* return count of modemline transitions */ | ||
920 | /* TODO */ | ||
921 | dbg("%s - TIOCGICOUNT not handled", __FUNCTION__); | ||
922 | return -ENOIOCTLCMD; | ||
923 | case TCGETS: | ||
924 | /* return current info to caller */ | ||
925 | dbg("%s - TCGETS data faked/incomplete", __FUNCTION__); | ||
926 | |||
927 | if (!access_ok(VERIFY_WRITE, user_arg, sizeof(struct termios))) | ||
928 | return -EFAULT; | ||
929 | |||
930 | if (kernel_termios_to_user_termios((struct termios __user *)arg, | ||
931 | &priv->termios)) | ||
932 | return -EFAULT; | ||
933 | return 0; | ||
934 | case TCSETS: | ||
935 | /* set port termios to the one given by the user */ | ||
936 | dbg("%s - TCSETS not handled", __FUNCTION__); | ||
937 | |||
938 | if (!access_ok(VERIFY_READ, user_arg, sizeof(struct termios))) | ||
939 | return -EFAULT; | ||
940 | |||
941 | if (user_termios_to_kernel_termios(&priv->termios, | ||
942 | (struct termios __user *)arg)) | ||
943 | return -EFAULT; | ||
944 | klsi_105_set_termios(port, &priv->termios); | ||
945 | return 0; | ||
946 | case TCSETSW: { | ||
947 | /* set port termios and try to wait for completion of last | ||
948 | * write operation */ | ||
949 | /* We guess here. If there are not too many write urbs | ||
950 | * outstanding, we lie. */ | ||
951 | /* what is the right way to wait here? schedule() ? */ | ||
952 | /* | ||
953 | while (klsi_105_chars_in_buffer(port) > (NUM_URBS / 4 ) * URB_TRANSFER_BUFFER_SIZE) | ||
954 | schedule(); | ||
955 | */ | ||
956 | return -ENOIOCTLCMD; | ||
957 | } | ||
958 | default: | ||
959 | dbg("%s: arg not supported - 0x%04x", __FUNCTION__,cmd); | ||
960 | return(-ENOIOCTLCMD); | ||
961 | break; | ||
962 | } | ||
963 | return 0; | ||
964 | } /* klsi_105_ioctl */ | ||
965 | 897 | ||
966 | static void klsi_105_throttle (struct usb_serial_port *port) | 898 | static void klsi_105_throttle (struct usb_serial_port *port) |
967 | { | 899 | { |
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c index 8cc728a49e41..83f661403ba1 100644 --- a/drivers/usb/serial/mos7840.c +++ b/drivers/usb/serial/mos7840.c | |||
@@ -2460,12 +2460,6 @@ static int mos7840_ioctl(struct usb_serial_port *port, struct file *file, | |||
2460 | tty_ldisc_deref(ld); | 2460 | tty_ldisc_deref(ld); |
2461 | return 0; | 2461 | return 0; |
2462 | 2462 | ||
2463 | case TCGETS: | ||
2464 | if (kernel_termios_to_user_termios | ||
2465 | ((struct termios __user *)argp, tty->termios)) | ||
2466 | return -EFAULT; | ||
2467 | return 0; | ||
2468 | |||
2469 | case TIOCSERGETLSR: | 2463 | case TIOCSERGETLSR: |
2470 | dbg("%s (%d) TIOCSERGETLSR", __FUNCTION__, port->number); | 2464 | dbg("%s (%d) TIOCSERGETLSR", __FUNCTION__, port->number); |
2471 | return mos7840_get_lsr_info(mos7840_port, argp); | 2465 | return mos7840_get_lsr_info(mos7840_port, argp); |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 0ae4098718c3..819266b7e2f8 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -79,6 +79,7 @@ static int option_send_setup(struct usb_serial_port *port); | |||
79 | #define OPTION_PRODUCT_COBRA 0x6500 | 79 | #define OPTION_PRODUCT_COBRA 0x6500 |
80 | #define OPTION_PRODUCT_COBRA2 0x6600 | 80 | #define OPTION_PRODUCT_COBRA2 0x6600 |
81 | #define HUAWEI_PRODUCT_E600 0x1001 | 81 | #define HUAWEI_PRODUCT_E600 0x1001 |
82 | #define HUAWEI_PRODUCT_E220 0x1003 | ||
82 | #define AUDIOVOX_PRODUCT_AIRCARD 0x0112 | 83 | #define AUDIOVOX_PRODUCT_AIRCARD 0x0112 |
83 | #define NOVATELWIRELESS_PRODUCT_U740 0x1400 | 84 | #define NOVATELWIRELESS_PRODUCT_U740 0x1400 |
84 | #define ANYDATA_PRODUCT_ID 0x6501 | 85 | #define ANYDATA_PRODUCT_ID 0x6501 |
@@ -90,6 +91,7 @@ static struct usb_device_id option_ids[] = { | |||
90 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, | 91 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, |
91 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, | 92 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, |
92 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, | 93 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, |
94 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, | ||
93 | { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, | 95 | { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, |
94 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID,NOVATELWIRELESS_PRODUCT_U740) }, | 96 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID,NOVATELWIRELESS_PRODUCT_U740) }, |
95 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, | 97 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, |
@@ -103,6 +105,7 @@ static struct usb_device_id option_ids1[] = { | |||
103 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, | 105 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA) }, |
104 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, | 106 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COBRA2) }, |
105 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, | 107 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, |
108 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220) }, | ||
106 | { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, | 109 | { USB_DEVICE(AUDIOVOX_VENDOR_ID, AUDIOVOX_PRODUCT_AIRCARD) }, |
107 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID,NOVATELWIRELESS_PRODUCT_U740) }, | 110 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID,NOVATELWIRELESS_PRODUCT_U740) }, |
108 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, | 111 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ID) }, |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index db8b26012c75..5fe7ff441a09 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -153,6 +153,13 @@ UNUSUAL_DEV( 0x0421, 0x042e, 0x0100, 0x0100, | |||
153 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 153 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
154 | US_FL_IGNORE_RESIDUE | US_FL_FIX_CAPACITY ), | 154 | US_FL_IGNORE_RESIDUE | US_FL_FIX_CAPACITY ), |
155 | 155 | ||
156 | /* Reported by <honkkis@gmail.com> */ | ||
157 | UNUSUAL_DEV( 0x0421, 0x0433, 0x0100, 0x0100, | ||
158 | "Nokia", | ||
159 | "E70", | ||
160 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
161 | US_FL_IGNORE_RESIDUE | US_FL_FIX_CAPACITY ), | ||
162 | |||
156 | /* Reported by Jon Hart <Jon.Hart@web.de> */ | 163 | /* Reported by Jon Hart <Jon.Hart@web.de> */ |
157 | UNUSUAL_DEV( 0x0421, 0x0434, 0x0100, 0x0100, | 164 | UNUSUAL_DEV( 0x0421, 0x0434, 0x0100, 0x0100, |
158 | "Nokia", | 165 | "Nokia", |
@@ -1328,6 +1335,15 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x0100, | |||
1328 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1335 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1329 | US_FL_IGNORE_RESIDUE ), | 1336 | US_FL_IGNORE_RESIDUE ), |
1330 | 1337 | ||
1338 | /* This prevents the kernel from detecting the virtual cd-drive with the | ||
1339 | * Windows drivers. <johann.wilhelm@student.tugraz.at> | ||
1340 | */ | ||
1341 | UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0xffff, | ||
1342 | "HUAWEI", | ||
1343 | "E220 USB-UMTS Install", | ||
1344 | US_SC_DEVICE, US_PR_DEVICE, NULL, | ||
1345 | US_FL_IGNORE_DEVICE), | ||
1346 | |||
1331 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ | 1347 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ |
1332 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, | 1348 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, |
1333 | "Minolta", | 1349 | "Minolta", |
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index 38eb0b69c2d7..b4947c810706 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c | |||
@@ -1216,7 +1216,7 @@ static int __init pxafb_parse_options(struct device *dev, char *options) | |||
1216 | done: | 1216 | done: |
1217 | if (res_specified) { | 1217 | if (res_specified) { |
1218 | dev_info(dev, "overriding resolution: %dx%d\n", xres, yres); | 1218 | dev_info(dev, "overriding resolution: %dx%d\n", xres, yres); |
1219 | inf->xres = xres; inf->yres = yres; | 1219 | inf->modes[0].xres = xres; inf->modes[0].yres = yres; |
1220 | } | 1220 | } |
1221 | if (bpp_specified) | 1221 | if (bpp_specified) |
1222 | switch (bpp) { | 1222 | switch (bpp) { |
@@ -1225,48 +1225,48 @@ static int __init pxafb_parse_options(struct device *dev, char *options) | |||
1225 | case 4: | 1225 | case 4: |
1226 | case 8: | 1226 | case 8: |
1227 | case 16: | 1227 | case 16: |
1228 | inf->bpp = bpp; | 1228 | inf->modes[0].bpp = bpp; |
1229 | dev_info(dev, "overriding bit depth: %d\n", bpp); | 1229 | dev_info(dev, "overriding bit depth: %d\n", bpp); |
1230 | break; | 1230 | break; |
1231 | default: | 1231 | default: |
1232 | dev_err(dev, "Depth %d is not valid\n", bpp); | 1232 | dev_err(dev, "Depth %d is not valid\n", bpp); |
1233 | } | 1233 | } |
1234 | } else if (!strncmp(this_opt, "pixclock:", 9)) { | 1234 | } else if (!strncmp(this_opt, "pixclock:", 9)) { |
1235 | inf->pixclock = simple_strtoul(this_opt+9, NULL, 0); | 1235 | inf->modes[0].pixclock = simple_strtoul(this_opt+9, NULL, 0); |
1236 | dev_info(dev, "override pixclock: %ld\n", inf->pixclock); | 1236 | dev_info(dev, "override pixclock: %ld\n", inf->modes[0].pixclock); |
1237 | } else if (!strncmp(this_opt, "left:", 5)) { | 1237 | } else if (!strncmp(this_opt, "left:", 5)) { |
1238 | inf->left_margin = simple_strtoul(this_opt+5, NULL, 0); | 1238 | inf->modes[0].left_margin = simple_strtoul(this_opt+5, NULL, 0); |
1239 | dev_info(dev, "override left: %u\n", inf->left_margin); | 1239 | dev_info(dev, "override left: %u\n", inf->modes[0].left_margin); |
1240 | } else if (!strncmp(this_opt, "right:", 6)) { | 1240 | } else if (!strncmp(this_opt, "right:", 6)) { |
1241 | inf->right_margin = simple_strtoul(this_opt+6, NULL, 0); | 1241 | inf->modes[0].right_margin = simple_strtoul(this_opt+6, NULL, 0); |
1242 | dev_info(dev, "override right: %u\n", inf->right_margin); | 1242 | dev_info(dev, "override right: %u\n", inf->modes[0].right_margin); |
1243 | } else if (!strncmp(this_opt, "upper:", 6)) { | 1243 | } else if (!strncmp(this_opt, "upper:", 6)) { |
1244 | inf->upper_margin = simple_strtoul(this_opt+6, NULL, 0); | 1244 | inf->modes[0].upper_margin = simple_strtoul(this_opt+6, NULL, 0); |
1245 | dev_info(dev, "override upper: %u\n", inf->upper_margin); | 1245 | dev_info(dev, "override upper: %u\n", inf->modes[0].upper_margin); |
1246 | } else if (!strncmp(this_opt, "lower:", 6)) { | 1246 | } else if (!strncmp(this_opt, "lower:", 6)) { |
1247 | inf->lower_margin = simple_strtoul(this_opt+6, NULL, 0); | 1247 | inf->modes[0].lower_margin = simple_strtoul(this_opt+6, NULL, 0); |
1248 | dev_info(dev, "override lower: %u\n", inf->lower_margin); | 1248 | dev_info(dev, "override lower: %u\n", inf->modes[0].lower_margin); |
1249 | } else if (!strncmp(this_opt, "hsynclen:", 9)) { | 1249 | } else if (!strncmp(this_opt, "hsynclen:", 9)) { |
1250 | inf->hsync_len = simple_strtoul(this_opt+9, NULL, 0); | 1250 | inf->modes[0].hsync_len = simple_strtoul(this_opt+9, NULL, 0); |
1251 | dev_info(dev, "override hsynclen: %u\n", inf->hsync_len); | 1251 | dev_info(dev, "override hsynclen: %u\n", inf->modes[0].hsync_len); |
1252 | } else if (!strncmp(this_opt, "vsynclen:", 9)) { | 1252 | } else if (!strncmp(this_opt, "vsynclen:", 9)) { |
1253 | inf->vsync_len = simple_strtoul(this_opt+9, NULL, 0); | 1253 | inf->modes[0].vsync_len = simple_strtoul(this_opt+9, NULL, 0); |
1254 | dev_info(dev, "override vsynclen: %u\n", inf->vsync_len); | 1254 | dev_info(dev, "override vsynclen: %u\n", inf->modes[0].vsync_len); |
1255 | } else if (!strncmp(this_opt, "hsync:", 6)) { | 1255 | } else if (!strncmp(this_opt, "hsync:", 6)) { |
1256 | if (simple_strtoul(this_opt+6, NULL, 0) == 0) { | 1256 | if (simple_strtoul(this_opt+6, NULL, 0) == 0) { |
1257 | dev_info(dev, "override hsync: Active Low\n"); | 1257 | dev_info(dev, "override hsync: Active Low\n"); |
1258 | inf->sync &= ~FB_SYNC_HOR_HIGH_ACT; | 1258 | inf->modes[0].sync &= ~FB_SYNC_HOR_HIGH_ACT; |
1259 | } else { | 1259 | } else { |
1260 | dev_info(dev, "override hsync: Active High\n"); | 1260 | dev_info(dev, "override hsync: Active High\n"); |
1261 | inf->sync |= FB_SYNC_HOR_HIGH_ACT; | 1261 | inf->modes[0].sync |= FB_SYNC_HOR_HIGH_ACT; |
1262 | } | 1262 | } |
1263 | } else if (!strncmp(this_opt, "vsync:", 6)) { | 1263 | } else if (!strncmp(this_opt, "vsync:", 6)) { |
1264 | if (simple_strtoul(this_opt+6, NULL, 0) == 0) { | 1264 | if (simple_strtoul(this_opt+6, NULL, 0) == 0) { |
1265 | dev_info(dev, "override vsync: Active Low\n"); | 1265 | dev_info(dev, "override vsync: Active Low\n"); |
1266 | inf->sync &= ~FB_SYNC_VERT_HIGH_ACT; | 1266 | inf->modes[0].sync &= ~FB_SYNC_VERT_HIGH_ACT; |
1267 | } else { | 1267 | } else { |
1268 | dev_info(dev, "override vsync: Active High\n"); | 1268 | dev_info(dev, "override vsync: Active High\n"); |
1269 | inf->sync |= FB_SYNC_VERT_HIGH_ACT; | 1269 | inf->modes[0].sync |= FB_SYNC_VERT_HIGH_ACT; |
1270 | } | 1270 | } |
1271 | } else if (!strncmp(this_opt, "dpc:", 4)) { | 1271 | } else if (!strncmp(this_opt, "dpc:", 4)) { |
1272 | if (simple_strtoul(this_opt+4, NULL, 0) == 0) { | 1272 | if (simple_strtoul(this_opt+4, NULL, 0) == 0) { |
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c index cd10b18150b8..5d2a4a4b731c 100644 --- a/drivers/video/sa1100fb.c +++ b/drivers/video/sa1100fb.c | |||
@@ -1200,9 +1200,9 @@ static void set_ctrlr_state(struct sa1100fb_info *fbi, u_int state) | |||
1200 | * Our LCD controller task (which is called when we blank or unblank) | 1200 | * Our LCD controller task (which is called when we blank or unblank) |
1201 | * via keventd. | 1201 | * via keventd. |
1202 | */ | 1202 | */ |
1203 | static void sa1100fb_task(void *dummy) | 1203 | static void sa1100fb_task(struct work_struct *w) |
1204 | { | 1204 | { |
1205 | struct sa1100fb_info *fbi = dummy; | 1205 | struct sa1100fb_info *fbi = container_of(w, struct sa1100fb_info, task); |
1206 | u_int state = xchg(&fbi->task_state, -1); | 1206 | u_int state = xchg(&fbi->task_state, -1); |
1207 | 1207 | ||
1208 | set_ctrlr_state(fbi, state); | 1208 | set_ctrlr_state(fbi, state); |
@@ -1444,7 +1444,7 @@ static struct sa1100fb_info * __init sa1100fb_init_fbinfo(struct device *dev) | |||
1444 | fbi->max_bpp / 8; | 1444 | fbi->max_bpp / 8; |
1445 | 1445 | ||
1446 | init_waitqueue_head(&fbi->ctrlr_wait); | 1446 | init_waitqueue_head(&fbi->ctrlr_wait); |
1447 | INIT_WORK(&fbi->task, sa1100fb_task, fbi); | 1447 | INIT_WORK(&fbi->task, sa1100fb_task); |
1448 | init_MUTEX(&fbi->ctrlr_sem); | 1448 | init_MUTEX(&fbi->ctrlr_sem); |
1449 | 1449 | ||
1450 | return fbi; | 1450 | return fbi; |
diff --git a/include/asm-arm/arch-iop13xx/iq81340.h b/include/asm-arm/arch-iop13xx/iq81340.h index b98f8f109c22..ba2cf931e9ce 100644 --- a/include/asm-arm/arch-iop13xx/iq81340.h +++ b/include/asm-arm/arch-iop13xx/iq81340.h | |||
@@ -24,8 +24,5 @@ | |||
24 | #define PBI_CF_IDE_BASE (IQ81340_CMP_FLSH) | 24 | #define PBI_CF_IDE_BASE (IQ81340_CMP_FLSH) |
25 | #define PBI_CF_BAR_ADDR (IOP13XX_PBI_BAR1) | 25 | #define PBI_CF_BAR_ADDR (IOP13XX_PBI_BAR1) |
26 | 26 | ||
27 | /* These are the values used in the Machine description */ | 27 | |
28 | #define PHYS_IO 0xfeffff00 | ||
29 | #define IO_PG_OFFSET 0xffffff00 | ||
30 | #define BOOT_PARAM_OFFSET 0x00000100 | ||
31 | #endif /* _IQ81340_H_ */ | 28 | #endif /* _IQ81340_H_ */ |
diff --git a/include/asm-arm/arch-ixp23xx/memory.h b/include/asm-arm/arch-ixp23xx/memory.h index c85fc06a043c..6d859d742d7f 100644 --- a/include/asm-arm/arch-ixp23xx/memory.h +++ b/include/asm-arm/arch-ixp23xx/memory.h | |||
@@ -41,21 +41,7 @@ | |||
41 | data = *((volatile int *)IXP23XX_PCI_SDRAM_BAR); \ | 41 | data = *((volatile int *)IXP23XX_PCI_SDRAM_BAR); \ |
42 | __phys_to_virt((((b - (data & 0xfffffff0)) + 0x00000000))); }) | 42 | __phys_to_virt((((b - (data & 0xfffffff0)) + 0x00000000))); }) |
43 | 43 | ||
44 | /* | 44 | #define arch_is_coherent() 1 |
45 | * Coherency support. Only supported on A2 CPUs or on A1 | ||
46 | * systems that have the cache coherency workaround. | ||
47 | */ | ||
48 | static inline int __ixp23xx_arch_is_coherent(void) | ||
49 | { | ||
50 | extern unsigned int processor_id; | ||
51 | |||
52 | if (((processor_id & 15) >= 4) || machine_is_roadrunner()) | ||
53 | return 1; | ||
54 | |||
55 | return 0; | ||
56 | } | ||
57 | |||
58 | #define arch_is_coherent() __ixp23xx_arch_is_coherent() | ||
59 | 45 | ||
60 | #endif | 46 | #endif |
61 | 47 | ||
diff --git a/include/asm-arm/arch-s3c2410/anubis-cpld.h b/include/asm-arm/arch-s3c2410/anubis-cpld.h index 40e8e270d337..dcebf6d61903 100644 --- a/include/asm-arm/arch-s3c2410/anubis-cpld.h +++ b/include/asm-arm/arch-s3c2410/anubis-cpld.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/anubis-cpld.h | 1 | /* linux/include/asm-arm/arch-s3c2410/anubis-cpld.h |
2 | * | 2 | * |
3 | * (c) 2005 Simtec Electronics | 3 | * Copyright (c) 2005 Simtec Electronics |
4 | * http://www.simtec.co.uk/products/ | 4 | * http://www.simtec.co.uk/products/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/anubis-irq.h b/include/asm-arm/arch-s3c2410/anubis-irq.h index 4b5f423779df..cd77a70d45c0 100644 --- a/include/asm-arm/arch-s3c2410/anubis-irq.h +++ b/include/asm-arm/arch-s3c2410/anubis-irq.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/anubis-irq.h | 1 | /* linux/include/asm-arm/arch-s3c2410/anubis-irq.h |
2 | * | 2 | * |
3 | * (c) 2005 Simtec Electronics | 3 | * Copyright (c) 2005 Simtec Electronics |
4 | * http://www.simtec.co.uk/products/ | 4 | * http://www.simtec.co.uk/products/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/anubis-map.h b/include/asm-arm/arch-s3c2410/anubis-map.h index 058a2104b035..ab076de4a0d0 100644 --- a/include/asm-arm/arch-s3c2410/anubis-map.h +++ b/include/asm-arm/arch-s3c2410/anubis-map.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/anubis-map.h | 1 | /* linux/include/asm-arm/arch-s3c2410/anubis-map.h |
2 | * | 2 | * |
3 | * (c) 2005 Simtec Electronics | 3 | * Copyright (c) 2005 Simtec Electronics |
4 | * http://www.simtec.co.uk/products/ | 4 | * http://www.simtec.co.uk/products/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/audio.h b/include/asm-arm/arch-s3c2410/audio.h index 7e0222276c98..65e0acffa1ad 100644 --- a/include/asm-arm/arch-s3c2410/audio.h +++ b/include/asm-arm/arch-s3c2410/audio.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/audio.h | 1 | /* linux/include/asm-arm/arch-s3c2410/audio.h |
2 | * | 2 | * |
3 | * (c) 2004-2005 Simtec Electronics | 3 | * Copyright (c) 2004-2005 Simtec Electronics |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | 4 | * http://www.simtec.co.uk/products/SWLINUX/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/bast-cpld.h b/include/asm-arm/arch-s3c2410/bast-cpld.h index 8969cffe83fa..034d2c5a47c4 100644 --- a/include/asm-arm/arch-s3c2410/bast-cpld.h +++ b/include/asm-arm/arch-s3c2410/bast-cpld.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/bast-cpld.h | 1 | /* linux/include/asm-arm/arch-s3c2410/bast-cpld.h |
2 | * | 2 | * |
3 | * (c) 2003,2004 Simtec Electronics | 3 | * Copyright (c) 2003,2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * BAST - CPLD control constants | 6 | * BAST - CPLD control constants |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/bast-irq.h b/include/asm-arm/arch-s3c2410/bast-irq.h index 15ffa66f5011..726c0466f85a 100644 --- a/include/asm-arm/arch-s3c2410/bast-irq.h +++ b/include/asm-arm/arch-s3c2410/bast-irq.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/bast-irq.h | 1 | /* linux/include/asm-arm/arch-s3c2410/bast-irq.h |
2 | * | 2 | * |
3 | * (c) 2003,2004 Simtec Electronics | 3 | * Copyright (c) 2003,2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * Machine BAST - IRQ Number definitions | 6 | * Machine BAST - IRQ Number definitions |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/bast-map.h b/include/asm-arm/arch-s3c2410/bast-map.h index 727cef84c70e..86ac1c108db8 100644 --- a/include/asm-arm/arch-s3c2410/bast-map.h +++ b/include/asm-arm/arch-s3c2410/bast-map.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/bast-map.h | 1 | /* linux/include/asm-arm/arch-s3c2410/bast-map.h |
2 | * | 2 | * |
3 | * (c) 2003,2004 Simtec Electronics | 3 | * Copyright (c) 2003,2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * Machine BAST - Memory map definitions | 6 | * Machine BAST - Memory map definitions |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/bast-pmu.h b/include/asm-arm/arch-s3c2410/bast-pmu.h index 82836027f00f..37a11fe54a78 100644 --- a/include/asm-arm/arch-s3c2410/bast-pmu.h +++ b/include/asm-arm/arch-s3c2410/bast-pmu.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/bast-pmu.h | 1 | /* linux/include/asm-arm/arch-s3c2410/bast-pmu.h |
2 | * | 2 | * |
3 | * (c) 2003,2004 Simtec Electronics | 3 | * Copyright (c) 2003,2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * Vincent Sanders <vince@simtec.co.uk> | 5 | * Vincent Sanders <vince@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/h1940-latch.h b/include/asm-arm/arch-s3c2410/h1940-latch.h index c5802411f43d..c3de5ab102eb 100644 --- a/include/asm-arm/arch-s3c2410/h1940-latch.h +++ b/include/asm-arm/arch-s3c2410/h1940-latch.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/h1940-latch.h | 1 | /* linux/include/asm-arm/arch-s3c2410/h1940-latch.h |
2 | * | 2 | * |
3 | * (c) 2005 Simtec Electronics | 3 | * Copyright (c) 2005 Simtec Electronics |
4 | * http://armlinux.simtec.co.uk/ | 4 | * http://armlinux.simtec.co.uk/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | 17 | ||
18 | #ifndef __ASSEMBLY__ | 18 | #ifndef __ASSEMBLY__ |
19 | #define H1940_LATCH ((void __iomem *)0xF8000000) | 19 | #define H1940_LATCH ((void __force __iomem *)0xF8000000) |
20 | #else | 20 | #else |
21 | #define H1940_LATCH 0xF8000000 | 21 | #define H1940_LATCH 0xF8000000 |
22 | #endif | 22 | #endif |
diff --git a/include/asm-arm/arch-s3c2410/hardware.h b/include/asm-arm/arch-s3c2410/hardware.h index 871f8af09b8b..729565e5cdf4 100644 --- a/include/asm-arm/arch-s3c2410/hardware.h +++ b/include/asm-arm/arch-s3c2410/hardware.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/hardware.h | 1 | /* linux/include/asm-arm/arch-s3c2410/hardware.h |
2 | * | 2 | * |
3 | * (c) 2003 Simtec Electronics | 3 | * Copyright (c) 2003 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - hardware | 6 | * S3C2410 - hardware |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/iic.h b/include/asm-arm/arch-s3c2410/iic.h index ed3d6c7bf6d7..71211c8b5384 100644 --- a/include/asm-arm/arch-s3c2410/iic.h +++ b/include/asm-arm/arch-s3c2410/iic.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/iic.h | 1 | /* linux/include/asm-arm/arch-s3c2410/iic.h |
2 | * | 2 | * |
3 | * (c) 2004 Simtec Electronics | 3 | * Copyright (c) 2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - I2C Controller platfrom_device info | 6 | * S3C2410 - I2C Controller platfrom_device info |
diff --git a/include/asm-arm/arch-s3c2410/leds-gpio.h b/include/asm-arm/arch-s3c2410/leds-gpio.h index f07ed040622b..800846ebddba 100644 --- a/include/asm-arm/arch-s3c2410/leds-gpio.h +++ b/include/asm-arm/arch-s3c2410/leds-gpio.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/leds-gpio.h | 1 | /* linux/include/asm-arm/arch-s3c2410/leds-gpio.h |
2 | * | 2 | * |
3 | * (c) 2006 Simtec Electronics | 3 | * Copyright (c) 2006 Simtec Electronics |
4 | * http://armlinux.simtec.co.uk/ | 4 | * http://armlinux.simtec.co.uk/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/map.h b/include/asm-arm/arch-s3c2410/map.h index 7895042d176b..4505aefbad17 100644 --- a/include/asm-arm/arch-s3c2410/map.h +++ b/include/asm-arm/arch-s3c2410/map.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/map.h | 1 | /* linux/include/asm-arm/arch-s3c2410/map.h |
2 | * | 2 | * |
3 | * (c) 2003 Simtec Electronics | 3 | * Copyright (c) 2003 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - Memory map definitions | 6 | * S3C2410 - Memory map definitions |
7 | * | 7 | * |
@@ -25,7 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | #ifndef __ASSEMBLY__ | 27 | #ifndef __ASSEMBLY__ |
28 | #define S3C2410_ADDR(x) ((void __iomem *)0xF0000000 + (x)) | 28 | #define S3C2410_ADDR(x) ((void __iomem __force *)0xF0000000 + (x)) |
29 | #else | 29 | #else |
30 | #define S3C2410_ADDR(x) (0xF0000000 + (x)) | 30 | #define S3C2410_ADDR(x) (0xF0000000 + (x)) |
31 | #endif | 31 | #endif |
@@ -47,73 +47,65 @@ | |||
47 | #define S3C24XX_SZ_MEMCTRL SZ_1M | 47 | #define S3C24XX_SZ_MEMCTRL SZ_1M |
48 | 48 | ||
49 | /* USB host controller */ | 49 | /* USB host controller */ |
50 | #define S3C24XX_VA_USBHOST S3C2410_ADDR(0x00200000) | ||
51 | #define S3C2400_PA_USBHOST (0x14200000) | 50 | #define S3C2400_PA_USBHOST (0x14200000) |
52 | #define S3C2410_PA_USBHOST (0x49000000) | 51 | #define S3C2410_PA_USBHOST (0x49000000) |
53 | #define S3C24XX_SZ_USBHOST SZ_1M | 52 | #define S3C24XX_SZ_USBHOST SZ_1M |
54 | 53 | ||
55 | /* DMA controller */ | 54 | /* DMA controller */ |
56 | #define S3C24XX_VA_DMA S3C2410_ADDR(0x00300000) | ||
57 | #define S3C2400_PA_DMA (0x14600000) | 55 | #define S3C2400_PA_DMA (0x14600000) |
58 | #define S3C2410_PA_DMA (0x4B000000) | 56 | #define S3C2410_PA_DMA (0x4B000000) |
59 | #define S3C24XX_SZ_DMA SZ_1M | 57 | #define S3C24XX_SZ_DMA SZ_1M |
60 | 58 | ||
61 | /* Clock and Power management */ | 59 | /* Clock and Power management */ |
62 | #define S3C24XX_VA_CLKPWR S3C2410_ADDR(0x00400000) | 60 | #define S3C24XX_VA_CLKPWR S3C2410_ADDR(0x00200000) |
63 | #define S3C2400_PA_CLKPWR (0x14800000) | 61 | #define S3C2400_PA_CLKPWR (0x14800000) |
64 | #define S3C2410_PA_CLKPWR (0x4C000000) | 62 | #define S3C2410_PA_CLKPWR (0x4C000000) |
65 | #define S3C24XX_SZ_CLKPWR SZ_1M | 63 | #define S3C24XX_SZ_CLKPWR SZ_1M |
66 | 64 | ||
67 | /* LCD controller */ | 65 | /* LCD controller */ |
68 | #define S3C24XX_VA_LCD S3C2410_ADDR(0x00600000) | 66 | #define S3C24XX_VA_LCD S3C2410_ADDR(0x00300000) |
69 | #define S3C2400_PA_LCD (0x14A00000) | 67 | #define S3C2400_PA_LCD (0x14A00000) |
70 | #define S3C2410_PA_LCD (0x4D000000) | 68 | #define S3C2410_PA_LCD (0x4D000000) |
71 | #define S3C24XX_SZ_LCD SZ_1M | 69 | #define S3C24XX_SZ_LCD SZ_1M |
72 | 70 | ||
73 | /* NAND flash controller */ | 71 | /* NAND flash controller */ |
74 | #define S3C24XX_VA_NAND S3C2410_ADDR(0x00700000) | ||
75 | #define S3C2410_PA_NAND (0x4E000000) | 72 | #define S3C2410_PA_NAND (0x4E000000) |
76 | #define S3C24XX_SZ_NAND SZ_1M | 73 | #define S3C24XX_SZ_NAND SZ_1M |
77 | 74 | ||
78 | /* MMC controller - available on the S3C2400 */ | 75 | /* MMC controller - available on the S3C2400 */ |
79 | #define S3C2400_VA_MMC S3C2400_ADDR(0x00700000) | ||
80 | #define S3C2400_PA_MMC (0x15A00000) | 76 | #define S3C2400_PA_MMC (0x15A00000) |
81 | #define S3C2400_SZ_MMC SZ_1M | 77 | #define S3C2400_SZ_MMC SZ_1M |
82 | 78 | ||
83 | /* UARTs */ | 79 | /* UARTs */ |
84 | #define S3C24XX_VA_UART S3C2410_ADDR(0x00800000) | 80 | #define S3C24XX_VA_UART S3C2410_ADDR(0x00400000) |
85 | #define S3C2400_PA_UART (0x15000000) | 81 | #define S3C2400_PA_UART (0x15000000) |
86 | #define S3C2410_PA_UART (0x50000000) | 82 | #define S3C2410_PA_UART (0x50000000) |
87 | #define S3C24XX_SZ_UART SZ_1M | 83 | #define S3C24XX_SZ_UART SZ_1M |
88 | 84 | ||
89 | /* Timers */ | 85 | /* Timers */ |
90 | #define S3C24XX_VA_TIMER S3C2410_ADDR(0x00900000) | 86 | #define S3C24XX_VA_TIMER S3C2410_ADDR(0x00500000) |
91 | #define S3C2400_PA_TIMER (0x15100000) | 87 | #define S3C2400_PA_TIMER (0x15100000) |
92 | #define S3C2410_PA_TIMER (0x51000000) | 88 | #define S3C2410_PA_TIMER (0x51000000) |
93 | #define S3C24XX_SZ_TIMER SZ_1M | 89 | #define S3C24XX_SZ_TIMER SZ_1M |
94 | 90 | ||
95 | /* USB Device port */ | 91 | /* USB Device port */ |
96 | #define S3C24XX_VA_USBDEV S3C2410_ADDR(0x00A00000) | 92 | #define S3C24XX_VA_USBDEV S3C2410_ADDR(0x00600000) |
97 | #define S3C2400_PA_USBDEV (0x15200140) | 93 | #define S3C2400_PA_USBDEV (0x15200140) |
98 | #define S3C2410_PA_USBDEV (0x52000000) | 94 | #define S3C2410_PA_USBDEV (0x52000000) |
99 | #define S3C24XX_SZ_USBDEV SZ_1M | 95 | #define S3C24XX_SZ_USBDEV SZ_1M |
100 | 96 | ||
101 | /* Watchdog */ | 97 | /* Watchdog */ |
102 | #define S3C24XX_VA_WATCHDOG S3C2410_ADDR(0x00B00000) | 98 | #define S3C24XX_VA_WATCHDOG S3C2410_ADDR(0x00700000) |
103 | #define S3C2400_PA_WATCHDOG (0x15300000) | 99 | #define S3C2400_PA_WATCHDOG (0x15300000) |
104 | #define S3C2410_PA_WATCHDOG (0x53000000) | 100 | #define S3C2410_PA_WATCHDOG (0x53000000) |
105 | #define S3C24XX_SZ_WATCHDOG SZ_1M | 101 | #define S3C24XX_SZ_WATCHDOG SZ_1M |
106 | 102 | ||
107 | /* IIC hardware controller */ | 103 | /* IIC hardware controller */ |
108 | #define S3C24XX_VA_IIC S3C2410_ADDR(0x00C00000) | ||
109 | #define S3C2400_PA_IIC (0x15400000) | 104 | #define S3C2400_PA_IIC (0x15400000) |
110 | #define S3C2410_PA_IIC (0x54000000) | 105 | #define S3C2410_PA_IIC (0x54000000) |
111 | #define S3C24XX_SZ_IIC SZ_1M | 106 | #define S3C24XX_SZ_IIC SZ_1M |
112 | 107 | ||
113 | #define VA_IIC_BASE (S3C24XX_VA_IIC) | ||
114 | |||
115 | /* IIS controller */ | 108 | /* IIS controller */ |
116 | #define S3C24XX_VA_IIS S3C2410_ADDR(0x00D00000) | ||
117 | #define S3C2400_PA_IIS (0x15508000) | 109 | #define S3C2400_PA_IIS (0x15508000) |
118 | #define S3C2410_PA_IIS (0x55000000) | 110 | #define S3C2410_PA_IIS (0x55000000) |
119 | #define S3C24XX_SZ_IIS SZ_1M | 111 | #define S3C24XX_SZ_IIS SZ_1M |
@@ -134,25 +126,21 @@ | |||
134 | #define S3C24XX_SZ_GPIO SZ_1M | 126 | #define S3C24XX_SZ_GPIO SZ_1M |
135 | 127 | ||
136 | /* RTC */ | 128 | /* RTC */ |
137 | #define S3C24XX_VA_RTC S3C2410_ADDR(0x00F00000) | ||
138 | #define S3C2400_PA_RTC (0x15700040) | 129 | #define S3C2400_PA_RTC (0x15700040) |
139 | #define S3C2410_PA_RTC (0x57000000) | 130 | #define S3C2410_PA_RTC (0x57000000) |
140 | #define S3C24XX_SZ_RTC SZ_1M | 131 | #define S3C24XX_SZ_RTC SZ_1M |
141 | 132 | ||
142 | /* ADC */ | 133 | /* ADC */ |
143 | #define S3C24XX_VA_ADC S3C2410_ADDR(0x01000000) | ||
144 | #define S3C2400_PA_ADC (0x15800000) | 134 | #define S3C2400_PA_ADC (0x15800000) |
145 | #define S3C2410_PA_ADC (0x58000000) | 135 | #define S3C2410_PA_ADC (0x58000000) |
146 | #define S3C24XX_SZ_ADC SZ_1M | 136 | #define S3C24XX_SZ_ADC SZ_1M |
147 | 137 | ||
148 | /* SPI */ | 138 | /* SPI */ |
149 | #define S3C24XX_VA_SPI S3C2410_ADDR(0x01100000) | ||
150 | #define S3C2400_PA_SPI (0x15900000) | 139 | #define S3C2400_PA_SPI (0x15900000) |
151 | #define S3C2410_PA_SPI (0x59000000) | 140 | #define S3C2410_PA_SPI (0x59000000) |
152 | #define S3C24XX_SZ_SPI SZ_1M | 141 | #define S3C24XX_SZ_SPI SZ_1M |
153 | 142 | ||
154 | /* SDI */ | 143 | /* SDI */ |
155 | #define S3C24XX_VA_SDI S3C2410_ADDR(0x01200000) | ||
156 | #define S3C2410_PA_SDI (0x5A000000) | 144 | #define S3C2410_PA_SDI (0x5A000000) |
157 | #define S3C24XX_SZ_SDI SZ_1M | 145 | #define S3C24XX_SZ_SDI SZ_1M |
158 | 146 | ||
diff --git a/include/asm-arm/arch-s3c2410/nand.h b/include/asm-arm/arch-s3c2410/nand.h index e350ae2acfc6..8816f7f9cee1 100644 --- a/include/asm-arm/arch-s3c2410/nand.h +++ b/include/asm-arm/arch-s3c2410/nand.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/nand.h | 1 | /* linux/include/asm-arm/arch-s3c2410/nand.h |
2 | * | 2 | * |
3 | * (c) 2004 Simtec Electronics | 3 | * Copyright (c) 2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - NAND device controller platfrom_device info | 6 | * S3C2410 - NAND device controller platfrom_device info |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/osiris-cpld.h b/include/asm-arm/arch-s3c2410/osiris-cpld.h index e9d1ae1f354f..3b6498468d62 100644 --- a/include/asm-arm/arch-s3c2410/osiris-cpld.h +++ b/include/asm-arm/arch-s3c2410/osiris-cpld.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/osiris-cpld.h | 1 | /* linux/include/asm-arm/arch-s3c2410/osiris-cpld.h |
2 | * | 2 | * |
3 | * (c) 2005 Simtec Electronics | 3 | * Copyright (c) 2005 Simtec Electronics |
4 | * http://www.simtec.co.uk/products/ | 4 | * http://www.simtec.co.uk/products/ |
5 | * Ben Dooks <ben@simtec.co.uk> | 5 | * Ben Dooks <ben@simtec.co.uk> |
6 | * | 6 | * |
diff --git a/include/asm-arm/arch-s3c2410/regs-serial.h b/include/asm-arm/arch-s3c2410/regs-serial.h index 19c77da9c3fe..46f52401d132 100644 --- a/include/asm-arm/arch-s3c2410/regs-serial.h +++ b/include/asm-arm/arch-s3c2410/regs-serial.h | |||
@@ -197,7 +197,7 @@ struct s3c2410_uartcfg { | |||
197 | unsigned char hwport; /* hardware port number */ | 197 | unsigned char hwport; /* hardware port number */ |
198 | unsigned char unused; | 198 | unsigned char unused; |
199 | unsigned short flags; | 199 | unsigned short flags; |
200 | unsigned long uart_flags; /* default uart flags */ | 200 | upf_t uart_flags; /* default uart flags */ |
201 | 201 | ||
202 | unsigned long ucon; /* value of ucon for port */ | 202 | unsigned long ucon; /* value of ucon for port */ |
203 | unsigned long ulcon; /* value of ulcon for port */ | 203 | unsigned long ulcon; /* value of ulcon for port */ |
diff --git a/include/asm-arm/arch-s3c2410/system.h b/include/asm-arm/arch-s3c2410/system.h index 4f72a853a5cf..ecf250db45fb 100644 --- a/include/asm-arm/arch-s3c2410/system.h +++ b/include/asm-arm/arch-s3c2410/system.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/system.h | 1 | /* linux/include/asm-arm/arch-s3c2410/system.h |
2 | * | 2 | * |
3 | * (c) 2003 Simtec Electronics | 3 | * Copyright (c) 2003 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - System function defines and includes | 6 | * S3C2410 - System function defines and includes |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/timex.h b/include/asm-arm/arch-s3c2410/timex.h index 703c337c5617..c16a99c5a59a 100644 --- a/include/asm-arm/arch-s3c2410/timex.h +++ b/include/asm-arm/arch-s3c2410/timex.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/timex.h | 1 | /* linux/include/asm-arm/arch-s3c2410/timex.h |
2 | * | 2 | * |
3 | * (c) 2003-2005 Simtec Electronics | 3 | * Copyright (c) 2003-2005 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - time parameters | 6 | * S3C2410 - time parameters |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/uncompress.h b/include/asm-arm/arch-s3c2410/uncompress.h index 81b3e91c56ab..dcb2cef38f50 100644 --- a/include/asm-arm/arch-s3c2410/uncompress.h +++ b/include/asm-arm/arch-s3c2410/uncompress.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/uncompress.h | 1 | /* linux/include/asm-arm/arch-s3c2410/uncompress.h |
2 | * | 2 | * |
3 | * (c) 2003 Simtec Electronics | 3 | * Copyright (c) 2003 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - uncompress code | 6 | * S3C2410 - uncompress code |
7 | * | 7 | * |
@@ -13,6 +13,7 @@ | |||
13 | #ifndef __ASM_ARCH_UNCOMPRESS_H | 13 | #ifndef __ASM_ARCH_UNCOMPRESS_H |
14 | #define __ASM_ARCH_UNCOMPRESS_H | 14 | #define __ASM_ARCH_UNCOMPRESS_H |
15 | 15 | ||
16 | typedef unsigned int upf_t; /* cannot include linux/serial_core.h */ | ||
16 | 17 | ||
17 | /* defines for UART registers */ | 18 | /* defines for UART registers */ |
18 | #include "asm/arch/regs-serial.h" | 19 | #include "asm/arch/regs-serial.h" |
diff --git a/include/asm-arm/arch-s3c2410/usb-control.h b/include/asm-arm/arch-s3c2410/usb-control.h index 35723569a17a..5bfa376e33dc 100644 --- a/include/asm-arm/arch-s3c2410/usb-control.h +++ b/include/asm-arm/arch-s3c2410/usb-control.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/usb-control.h | 1 | /* linux/include/asm-arm/arch-s3c2410/usb-control.h |
2 | * | 2 | * |
3 | * (c) 2004 Simtec Electronics | 3 | * Copyright (c) 2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * S3C2410 - usb port information | 6 | * S3C2410 - usb port information |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/vr1000-cpld.h b/include/asm-arm/arch-s3c2410/vr1000-cpld.h index a341b1e1bd98..0557b0a5ab1d 100644 --- a/include/asm-arm/arch-s3c2410/vr1000-cpld.h +++ b/include/asm-arm/arch-s3c2410/vr1000-cpld.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/vr1000-cpld.h | 1 | /* linux/include/asm-arm/arch-s3c2410/vr1000-cpld.h |
2 | * | 2 | * |
3 | * (c) 2003 Simtec Electronics | 3 | * Copyright (c) 2003 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * VR1000 - CPLD control constants | 6 | * VR1000 - CPLD control constants |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/vr1000-irq.h b/include/asm-arm/arch-s3c2410/vr1000-irq.h index c39a0ffa670d..890937083c61 100644 --- a/include/asm-arm/arch-s3c2410/vr1000-irq.h +++ b/include/asm-arm/arch-s3c2410/vr1000-irq.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/vr1000-irq.h | 1 | /* linux/include/asm-arm/arch-s3c2410/vr1000-irq.h |
2 | * | 2 | * |
3 | * (c) 2003,2004 Simtec Electronics | 3 | * Copyright (c) 2003,2004 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * Machine VR1000 - IRQ Number definitions | 6 | * Machine VR1000 - IRQ Number definitions |
7 | * | 7 | * |
diff --git a/include/asm-arm/arch-s3c2410/vr1000-map.h b/include/asm-arm/arch-s3c2410/vr1000-map.h index 1fe4db36c834..92a56a724a8c 100644 --- a/include/asm-arm/arch-s3c2410/vr1000-map.h +++ b/include/asm-arm/arch-s3c2410/vr1000-map.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* linux/include/asm-arm/arch-s3c2410/vr1000-map.h | 1 | /* linux/include/asm-arm/arch-s3c2410/vr1000-map.h |
2 | * | 2 | * |
3 | * (c) 2003-2005 Simtec Electronics | 3 | * Copyright (c) 2003-2005 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * Machine VR1000 - Memory map definitions | 6 | * Machine VR1000 - Memory map definitions |
7 | * | 7 | * |
diff --git a/include/asm-arm/elf.h b/include/asm-arm/elf.h index 642382d2c9f0..3679a8a8922e 100644 --- a/include/asm-arm/elf.h +++ b/include/asm-arm/elf.h | |||
@@ -52,6 +52,7 @@ typedef struct user_fp elf_fpregset_t; | |||
52 | #define HWCAP_EDSP 128 | 52 | #define HWCAP_EDSP 128 |
53 | #define HWCAP_JAVA 256 | 53 | #define HWCAP_JAVA 256 |
54 | #define HWCAP_IWMMXT 512 | 54 | #define HWCAP_IWMMXT 512 |
55 | #define HWCAP_CRUNCH 1024 | ||
55 | 56 | ||
56 | #ifdef __KERNEL__ | 57 | #ifdef __KERNEL__ |
57 | #ifndef __ASSEMBLY__ | 58 | #ifndef __ASSEMBLY__ |
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h index e160aeb0138d..aa223fc546af 100644 --- a/include/asm-arm/system.h +++ b/include/asm-arm/system.h | |||
@@ -73,6 +73,7 @@ | |||
73 | #ifndef __ASSEMBLY__ | 73 | #ifndef __ASSEMBLY__ |
74 | 74 | ||
75 | #include <linux/linkage.h> | 75 | #include <linux/linkage.h> |
76 | #include <linux/irqflags.h> | ||
76 | 77 | ||
77 | struct thread_info; | 78 | struct thread_info; |
78 | struct task_struct; | 79 | struct task_struct; |
@@ -139,6 +140,9 @@ static inline int cpu_is_xsc3(void) | |||
139 | #define cpu_is_xscale() 1 | 140 | #define cpu_is_xscale() 1 |
140 | #endif | 141 | #endif |
141 | 142 | ||
143 | extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ | ||
144 | extern unsigned long cr_alignment; /* defined in entry-armv.S */ | ||
145 | |||
142 | static inline unsigned int get_cr(void) | 146 | static inline unsigned int get_cr(void) |
143 | { | 147 | { |
144 | unsigned int val; | 148 | unsigned int val; |
@@ -152,6 +156,10 @@ static inline void set_cr(unsigned int val) | |||
152 | : : "r" (val) : "cc"); | 156 | : : "r" (val) : "cc"); |
153 | } | 157 | } |
154 | 158 | ||
159 | #ifndef CONFIG_SMP | ||
160 | extern void adjust_cr(unsigned long mask, unsigned long set); | ||
161 | #endif | ||
162 | |||
155 | #define CPACC_FULL(n) (3 << (n * 2)) | 163 | #define CPACC_FULL(n) (3 << (n * 2)) |
156 | #define CPACC_SVC(n) (1 << (n * 2)) | 164 | #define CPACC_SVC(n) (1 << (n * 2)) |
157 | #define CPACC_DISABLE(n) (0 << (n * 2)) | 165 | #define CPACC_DISABLE(n) (0 << (n * 2)) |
@@ -170,29 +178,6 @@ static inline void set_copro_access(unsigned int val) | |||
170 | : : "r" (val) : "cc"); | 178 | : : "r" (val) : "cc"); |
171 | } | 179 | } |
172 | 180 | ||
173 | extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ | ||
174 | extern unsigned long cr_alignment; /* defined in entry-armv.S */ | ||
175 | |||
176 | #ifndef CONFIG_SMP | ||
177 | static inline void adjust_cr(unsigned long mask, unsigned long set) | ||
178 | { | ||
179 | unsigned long flags, cr; | ||
180 | |||
181 | mask &= ~CR_A; | ||
182 | |||
183 | set &= mask; | ||
184 | |||
185 | local_irq_save(flags); | ||
186 | |||
187 | cr_no_alignment = (cr_no_alignment & ~mask) | set; | ||
188 | cr_alignment = (cr_alignment & ~mask) | set; | ||
189 | |||
190 | set_cr((get_cr() & ~mask) | set); | ||
191 | |||
192 | local_irq_restore(flags); | ||
193 | } | ||
194 | #endif | ||
195 | |||
196 | #define UDBG_UNDEFINED (1 << 0) | 181 | #define UDBG_UNDEFINED (1 << 0) |
197 | #define UDBG_SYSCALL (1 << 1) | 182 | #define UDBG_SYSCALL (1 << 1) |
198 | #define UDBG_BADABORT (1 << 2) | 183 | #define UDBG_BADABORT (1 << 2) |
@@ -248,8 +233,6 @@ static inline void sched_cacheflush(void) | |||
248 | { | 233 | { |
249 | } | 234 | } |
250 | 235 | ||
251 | #include <linux/irqflags.h> | ||
252 | |||
253 | #ifdef CONFIG_SMP | 236 | #ifdef CONFIG_SMP |
254 | 237 | ||
255 | #define smp_mb() mb() | 238 | #define smp_mb() mb() |
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h index 32b06eb52819..97e7060000cf 100644 --- a/include/asm-arm/unistd.h +++ b/include/asm-arm/unistd.h | |||
@@ -360,6 +360,18 @@ | |||
360 | #define __NR_readlinkat (__NR_SYSCALL_BASE+332) | 360 | #define __NR_readlinkat (__NR_SYSCALL_BASE+332) |
361 | #define __NR_fchmodat (__NR_SYSCALL_BASE+333) | 361 | #define __NR_fchmodat (__NR_SYSCALL_BASE+333) |
362 | #define __NR_faccessat (__NR_SYSCALL_BASE+334) | 362 | #define __NR_faccessat (__NR_SYSCALL_BASE+334) |
363 | /* 335 for pselect6 */ | ||
364 | /* 336 for ppoll */ | ||
365 | #define __NR_unshare (__NR_SYSCALL_BASE+337) | ||
366 | #define __NR_set_robust_list (__NR_SYSCALL_BASE+338) | ||
367 | #define __NR_get_robust_list (__NR_SYSCALL_BASE+339) | ||
368 | #define __NR_splice (__NR_SYSCALL_BASE+340) | ||
369 | #define __NR_arm_sync_file_range (__NR_SYSCALL_BASE+341) | ||
370 | #define __NR_tee (__NR_SYSCALL_BASE+342) | ||
371 | #define __NR_vmsplice (__NR_SYSCALL_BASE+343) | ||
372 | #define __NR_move_pages (__NR_SYSCALL_BASE+344) | ||
373 | #define __NR_getcpu (__NR_SYSCALL_BASE+345) | ||
374 | /* 346 for epoll_pwait */ | ||
363 | 375 | ||
364 | /* | 376 | /* |
365 | * The following SWIs are ARM private. | 377 | * The following SWIs are ARM private. |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 1587121730c5..9fcc8d9fbb14 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
@@ -35,6 +35,9 @@ | |||
35 | VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \ | 35 | VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \ |
36 | *(.pci_fixup_enable) \ | 36 | *(.pci_fixup_enable) \ |
37 | VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \ | 37 | VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \ |
38 | VMLINUX_SYMBOL(__start_pci_fixups_resume) = .; \ | ||
39 | *(.pci_fixup_resume) \ | ||
40 | VMLINUX_SYMBOL(__end_pci_fixups_resume) = .; \ | ||
38 | } \ | 41 | } \ |
39 | \ | 42 | \ |
40 | /* RapidIO route ops */ \ | 43 | /* RapidIO route ops */ \ |
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index fdad4267b447..3d90264e9d36 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h | |||
@@ -161,6 +161,7 @@ struct spu_syscall_block { | |||
161 | extern long spu_sys_callback(struct spu_syscall_block *s); | 161 | extern long spu_sys_callback(struct spu_syscall_block *s); |
162 | 162 | ||
163 | /* syscalls implemented in spufs */ | 163 | /* syscalls implemented in spufs */ |
164 | struct file; | ||
164 | extern struct spufs_calls { | 165 | extern struct spufs_calls { |
165 | asmlinkage long (*create_thread)(const char __user *name, | 166 | asmlinkage long (*create_thread)(const char __user *name, |
166 | unsigned int flags, mode_t mode); | 167 | unsigned int flags, mode_t mode); |
@@ -232,6 +233,7 @@ void spu_remove_sysdev_attr_group(struct attribute_group *attrs); | |||
232 | * to object-id spufs file from user space and the notifer | 233 | * to object-id spufs file from user space and the notifer |
233 | * function can assume that spu->ctx is valid. | 234 | * function can assume that spu->ctx is valid. |
234 | */ | 235 | */ |
236 | struct notifier_block; | ||
235 | int spu_switch_event_register(struct notifier_block * n); | 237 | int spu_switch_event_register(struct notifier_block * n); |
236 | int spu_switch_event_unregister(struct notifier_block * n); | 238 | int spu_switch_event_unregister(struct notifier_block * n); |
237 | 239 | ||
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index a1b04d8a1d01..68dd42b9bac7 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -119,7 +119,6 @@ header-y += nfs4_mount.h | |||
119 | header-y += nfs_mount.h | 119 | header-y += nfs_mount.h |
120 | header-y += oom.h | 120 | header-y += oom.h |
121 | header-y += param.h | 121 | header-y += param.h |
122 | header-y += pci_ids.h | ||
123 | header-y += pci_regs.h | 122 | header-y += pci_regs.h |
124 | header-y += personality.h | 123 | header-y += personality.h |
125 | header-y += pfkeyv2.h | 124 | header-y += pfkeyv2.h |
@@ -162,7 +161,6 @@ header-y += vt.h | |||
162 | header-y += wireless.h | 161 | header-y += wireless.h |
163 | header-y += xattr.h | 162 | header-y += xattr.h |
164 | header-y += x25.h | 163 | header-y += x25.h |
165 | header-y += zorro_ids.h | ||
166 | 164 | ||
167 | unifdef-y += acct.h | 165 | unifdef-y += acct.h |
168 | unifdef-y += adb.h | 166 | unifdef-y += adb.h |
diff --git a/include/linux/device.h b/include/linux/device.h index 49ab53ce92dc..f44247fe8135 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -433,6 +433,8 @@ static inline int device_is_registered(struct device *dev) | |||
433 | return dev->is_registered; | 433 | return dev->is_registered; |
434 | } | 434 | } |
435 | 435 | ||
436 | void driver_init(void); | ||
437 | |||
436 | /* | 438 | /* |
437 | * High level routines for use by the bus drivers | 439 | * High level routines for use by the bus drivers |
438 | */ | 440 | */ |
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index cf8696d4a138..15228d79c5bc 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
@@ -91,6 +91,9 @@ struct resource_list { | |||
91 | #define IORESOURCE_ROM_COPY (1<<2) /* ROM is alloc'd copy, resource field overlaid */ | 91 | #define IORESOURCE_ROM_COPY (1<<2) /* ROM is alloc'd copy, resource field overlaid */ |
92 | #define IORESOURCE_ROM_BIOS_COPY (1<<3) /* ROM is BIOS copy, resource field overlaid */ | 92 | #define IORESOURCE_ROM_BIOS_COPY (1<<3) /* ROM is BIOS copy, resource field overlaid */ |
93 | 93 | ||
94 | /* PCI control bits. Shares IORESOURCE_BITS with above PCI ROM. */ | ||
95 | #define IORESOURCE_PCI_FIXED (1<<4) /* Do not move resource */ | ||
96 | |||
94 | /* PC/ISA/whatever - the normal PC address spaces: IO and memory */ | 97 | /* PC/ISA/whatever - the normal PC address spaces: IO and memory */ |
95 | extern struct resource ioport_resource; | 98 | extern struct resource ioport_resource; |
96 | extern struct resource iomem_resource; | 99 | extern struct resource iomem_resource; |
diff --git a/include/linux/kobject.h b/include/linux/kobject.h index d1c8d28fa92e..76538fcf2c4e 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h | |||
@@ -265,8 +265,8 @@ extern int __must_check subsys_create_file(struct subsystem * , | |||
265 | struct subsys_attribute *); | 265 | struct subsys_attribute *); |
266 | 266 | ||
267 | #if defined(CONFIG_HOTPLUG) | 267 | #if defined(CONFIG_HOTPLUG) |
268 | void kobject_uevent(struct kobject *kobj, enum kobject_action action); | 268 | int kobject_uevent(struct kobject *kobj, enum kobject_action action); |
269 | void kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | 269 | int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, |
270 | char *envp[]); | 270 | char *envp[]); |
271 | 271 | ||
272 | int add_uevent_var(char **envp, int num_envp, int *cur_index, | 272 | int add_uevent_var(char **envp, int num_envp, int *cur_index, |
@@ -274,11 +274,12 @@ int add_uevent_var(char **envp, int num_envp, int *cur_index, | |||
274 | const char *format, ...) | 274 | const char *format, ...) |
275 | __attribute__((format (printf, 7, 8))); | 275 | __attribute__((format (printf, 7, 8))); |
276 | #else | 276 | #else |
277 | static inline void kobject_uevent(struct kobject *kobj, enum kobject_action action) { } | 277 | static inline int kobject_uevent(struct kobject *kobj, enum kobject_action action) |
278 | static inline void kobject_uevent_env(struct kobject *kobj, | 278 | { return 0; } |
279 | static inline int kobject_uevent_env(struct kobject *kobj, | ||
279 | enum kobject_action action, | 280 | enum kobject_action action, |
280 | char *envp[]) | 281 | char *envp[]) |
281 | { } | 282 | { return 0; } |
282 | 283 | ||
283 | static inline int add_uevent_var(char **envp, int num_envp, int *cur_index, | 284 | static inline int add_uevent_var(char **envp, int num_envp, int *cur_index, |
284 | char *buffer, int buffer_size, int *cur_len, | 285 | char *buffer, int buffer_size, int *cur_len, |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 01c707261f9c..f3c617eabd8d 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -20,9 +20,6 @@ | |||
20 | /* Include the pci register defines */ | 20 | /* Include the pci register defines */ |
21 | #include <linux/pci_regs.h> | 21 | #include <linux/pci_regs.h> |
22 | 22 | ||
23 | /* Include the ID list */ | ||
24 | #include <linux/pci_ids.h> | ||
25 | |||
26 | /* | 23 | /* |
27 | * The PCI interface treats multi-function devices as independent | 24 | * The PCI interface treats multi-function devices as independent |
28 | * devices. The slot/function address of each device is encoded | 25 | * devices. The slot/function address of each device is encoded |
@@ -54,6 +51,9 @@ | |||
54 | #include <asm/atomic.h> | 51 | #include <asm/atomic.h> |
55 | #include <linux/device.h> | 52 | #include <linux/device.h> |
56 | 53 | ||
54 | /* Include the ID list */ | ||
55 | #include <linux/pci_ids.h> | ||
56 | |||
57 | /* File state for mmap()s on /proc/bus/pci/X/Y */ | 57 | /* File state for mmap()s on /proc/bus/pci/X/Y */ |
58 | enum pci_mmap_state { | 58 | enum pci_mmap_state { |
59 | pci_mmap_io, | 59 | pci_mmap_io, |
@@ -396,6 +396,21 @@ struct pci_driver { | |||
396 | */ | 396 | */ |
397 | #define pci_module_init pci_register_driver | 397 | #define pci_module_init pci_register_driver |
398 | 398 | ||
399 | /** | ||
400 | * PCI_VDEVICE - macro used to describe a specific pci device in short form | ||
401 | * @vend: the vendor name | ||
402 | * @dev: the 16 bit PCI Device ID | ||
403 | * | ||
404 | * This macro is used to create a struct pci_device_id that matches a | ||
405 | * specific PCI device. The subvendor, and subdevice fields will be set | ||
406 | * to PCI_ANY_ID. The macro allows the next field to follow as the device | ||
407 | * private data. | ||
408 | */ | ||
409 | |||
410 | #define PCI_VDEVICE(vendor, device) \ | ||
411 | PCI_VENDOR_ID_##vendor, (device), \ | ||
412 | PCI_ANY_ID, PCI_ANY_ID, 0, 0 | ||
413 | |||
399 | /* these external functions are only available when PCI support is enabled */ | 414 | /* these external functions are only available when PCI support is enabled */ |
400 | #ifdef CONFIG_PCI | 415 | #ifdef CONFIG_PCI |
401 | 416 | ||
@@ -454,6 +469,8 @@ struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn); | |||
454 | int pci_find_capability (struct pci_dev *dev, int cap); | 469 | int pci_find_capability (struct pci_dev *dev, int cap); |
455 | int pci_find_next_capability (struct pci_dev *dev, u8 pos, int cap); | 470 | int pci_find_next_capability (struct pci_dev *dev, u8 pos, int cap); |
456 | int pci_find_ext_capability (struct pci_dev *dev, int cap); | 471 | int pci_find_ext_capability (struct pci_dev *dev, int cap); |
472 | int pci_find_ht_capability (struct pci_dev *dev, int ht_cap); | ||
473 | int pci_find_next_ht_capability (struct pci_dev *dev, int pos, int ht_cap); | ||
457 | struct pci_bus *pci_find_next_bus(const struct pci_bus *from); | 474 | struct pci_bus *pci_find_next_bus(const struct pci_bus *from); |
458 | 475 | ||
459 | struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, | 476 | struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, |
@@ -468,6 +485,7 @@ struct pci_dev *pci_get_slot (struct pci_bus *bus, unsigned int devfn); | |||
468 | struct pci_dev *pci_get_bus_and_slot (unsigned int bus, unsigned int devfn); | 485 | struct pci_dev *pci_get_bus_and_slot (unsigned int bus, unsigned int devfn); |
469 | struct pci_dev *pci_get_class (unsigned int class, struct pci_dev *from); | 486 | struct pci_dev *pci_get_class (unsigned int class, struct pci_dev *from); |
470 | int pci_dev_present(const struct pci_device_id *ids); | 487 | int pci_dev_present(const struct pci_device_id *ids); |
488 | const struct pci_device_id *pci_find_present(const struct pci_device_id *ids); | ||
471 | 489 | ||
472 | int pci_bus_read_config_byte (struct pci_bus *bus, unsigned int devfn, int where, u8 *val); | 490 | int pci_bus_read_config_byte (struct pci_bus *bus, unsigned int devfn, int where, u8 *val); |
473 | int pci_bus_read_config_word (struct pci_bus *bus, unsigned int devfn, int where, u16 *val); | 491 | int pci_bus_read_config_word (struct pci_bus *bus, unsigned int devfn, int where, u16 *val); |
@@ -681,6 +699,7 @@ static inline struct pci_dev *pci_get_class(unsigned int class, struct pci_dev * | |||
681 | { return NULL; } | 699 | { return NULL; } |
682 | 700 | ||
683 | #define pci_dev_present(ids) (0) | 701 | #define pci_dev_present(ids) (0) |
702 | #define pci_find_present(ids) (NULL) | ||
684 | #define pci_dev_put(dev) do { } while (0) | 703 | #define pci_dev_put(dev) do { } while (0) |
685 | 704 | ||
686 | static inline void pci_set_master(struct pci_dev *dev) { } | 705 | static inline void pci_set_master(struct pci_dev *dev) { } |
@@ -783,6 +802,7 @@ enum pci_fixup_pass { | |||
783 | pci_fixup_header, /* After reading configuration header */ | 802 | pci_fixup_header, /* After reading configuration header */ |
784 | pci_fixup_final, /* Final phase of device fixups */ | 803 | pci_fixup_final, /* Final phase of device fixups */ |
785 | pci_fixup_enable, /* pci_enable_device() time */ | 804 | pci_fixup_enable, /* pci_enable_device() time */ |
805 | pci_fixup_resume, /* pci_enable_device() time */ | ||
786 | }; | 806 | }; |
787 | 807 | ||
788 | /* Anonymous variables would be nice... */ | 808 | /* Anonymous variables would be nice... */ |
@@ -801,6 +821,9 @@ enum pci_fixup_pass { | |||
801 | #define DECLARE_PCI_FIXUP_ENABLE(vendor, device, hook) \ | 821 | #define DECLARE_PCI_FIXUP_ENABLE(vendor, device, hook) \ |
802 | DECLARE_PCI_FIXUP_SECTION(.pci_fixup_enable, \ | 822 | DECLARE_PCI_FIXUP_SECTION(.pci_fixup_enable, \ |
803 | vendor##device##hook, vendor, device, hook) | 823 | vendor##device##hook, vendor, device, hook) |
824 | #define DECLARE_PCI_FIXUP_RESUME(vendor, device, hook) \ | ||
825 | DECLARE_PCI_FIXUP_SECTION(.pci_fixup_resume, \ | ||
826 | resume##vendor##device##hook, vendor, device, hook) | ||
804 | 827 | ||
805 | 828 | ||
806 | void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev); | 829 | void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 95c1e74afebc..778e701eff30 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -104,6 +104,10 @@ | |||
104 | #define PCI_CLASS_SERIAL_FIBER 0x0c04 | 104 | #define PCI_CLASS_SERIAL_FIBER 0x0c04 |
105 | #define PCI_CLASS_SERIAL_SMBUS 0x0c05 | 105 | #define PCI_CLASS_SERIAL_SMBUS 0x0c05 |
106 | 106 | ||
107 | #define PCI_BASE_CLASS_WIRELESS 0x0d | ||
108 | #define PCI_CLASS_WIRELESS_RF_CONTROLLER 0x0d10 | ||
109 | #define PCI_CLASS_WIRELESS_WHCI 0x0d1010 | ||
110 | |||
107 | #define PCI_BASE_CLASS_INTELLIGENT 0x0e | 111 | #define PCI_BASE_CLASS_INTELLIGENT 0x0e |
108 | #define PCI_CLASS_INTELLIGENT_I2O 0x0e00 | 112 | #define PCI_CLASS_INTELLIGENT_I2O 0x0e00 |
109 | 113 | ||
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index 064b1dc71c22..7a6d34ee5ab1 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
@@ -475,15 +475,32 @@ | |||
475 | #define PCI_PWR_CAP 12 /* Capability */ | 475 | #define PCI_PWR_CAP 12 /* Capability */ |
476 | #define PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Included in system budget */ | 476 | #define PCI_PWR_CAP_BUDGET(x) ((x) & 1) /* Included in system budget */ |
477 | 477 | ||
478 | /* Hypertransport sub capability types */ | 478 | /* |
479 | * Hypertransport sub capability types | ||
480 | * | ||
481 | * Unfortunately there are both 3 bit and 5 bit capability types defined | ||
482 | * in the HT spec, catering for that is a little messy. You probably don't | ||
483 | * want to use these directly, just use pci_find_ht_capability() and it | ||
484 | * will do the right thing for you. | ||
485 | */ | ||
486 | #define HT_3BIT_CAP_MASK 0xE0 | ||
479 | #define HT_CAPTYPE_SLAVE 0x00 /* Slave/Primary link configuration */ | 487 | #define HT_CAPTYPE_SLAVE 0x00 /* Slave/Primary link configuration */ |
480 | #define HT_CAPTYPE_HOST 0x20 /* Host/Secondary link configuration */ | 488 | #define HT_CAPTYPE_HOST 0x20 /* Host/Secondary link configuration */ |
489 | |||
490 | #define HT_5BIT_CAP_MASK 0xF8 | ||
481 | #define HT_CAPTYPE_IRQ 0x80 /* IRQ Configuration */ | 491 | #define HT_CAPTYPE_IRQ 0x80 /* IRQ Configuration */ |
482 | #define HT_CAPTYPE_REMAPPING_40 0xA0 /* 40 bit address remapping */ | 492 | #define HT_CAPTYPE_REMAPPING_40 0xA0 /* 40 bit address remapping */ |
483 | #define HT_CAPTYPE_REMAPPING_64 0xA2 /* 64 bit address remapping */ | 493 | #define HT_CAPTYPE_REMAPPING_64 0xA2 /* 64 bit address remapping */ |
484 | #define HT_CAPTYPE_UNITID_CLUMP 0x90 /* Unit ID clumping */ | 494 | #define HT_CAPTYPE_UNITID_CLUMP 0x90 /* Unit ID clumping */ |
485 | #define HT_CAPTYPE_EXTCONF 0x98 /* Extended Configuration Space Access */ | 495 | #define HT_CAPTYPE_EXTCONF 0x98 /* Extended Configuration Space Access */ |
486 | #define HT_CAPTYPE_MSI_MAPPING 0xA8 /* MSI Mapping Capability */ | 496 | #define HT_CAPTYPE_MSI_MAPPING 0xA8 /* MSI Mapping Capability */ |
497 | #define HT_MSI_FLAGS 0x02 /* Offset to flags */ | ||
498 | #define HT_MSI_FLAGS_ENABLE 0x1 /* Mapping enable */ | ||
499 | #define HT_MSI_FLAGS_FIXED 0x2 /* Fixed mapping only */ | ||
500 | #define HT_MSI_FIXED_ADDR 0x00000000FEE00000ULL /* Fixed addr */ | ||
501 | #define HT_MSI_ADDR_LO 0x04 /* Offset to low addr bits */ | ||
502 | #define HT_MSI_ADDR_LO_MASK 0xFFF00000 /* Low address bit mask */ | ||
503 | #define HT_MSI_ADDR_HI 0x08 /* Offset to high addr bits */ | ||
487 | #define HT_CAPTYPE_DIRECT_ROUTE 0xB0 /* Direct routing configuration */ | 504 | #define HT_CAPTYPE_DIRECT_ROUTE 0xB0 /* Direct routing configuration */ |
488 | #define HT_CAPTYPE_VCSET 0xB8 /* Virtual Channel configuration */ | 505 | #define HT_CAPTYPE_VCSET 0xB8 /* Virtual Channel configuration */ |
489 | #define HT_CAPTYPE_ERROR_RETRY 0xC0 /* Retry on error configuration */ | 506 | #define HT_CAPTYPE_ERROR_RETRY 0xC0 /* Retry on error configuration */ |
diff --git a/include/sound/pcm_oss.h b/include/sound/pcm_oss.h index c854647b6f3c..1cd4f64cdf31 100644 --- a/include/sound/pcm_oss.h +++ b/include/sound/pcm_oss.h | |||
@@ -56,6 +56,7 @@ struct snd_pcm_oss_runtime { | |||
56 | size_t mmap_bytes; | 56 | size_t mmap_bytes; |
57 | char *buffer; /* vmallocated period */ | 57 | char *buffer; /* vmallocated period */ |
58 | size_t buffer_used; /* used length from period buffer */ | 58 | size_t buffer_used; /* used length from period buffer */ |
59 | struct mutex params_lock; | ||
59 | #ifdef CONFIG_SND_PCM_OSS_PLUGINS | 60 | #ifdef CONFIG_SND_PCM_OSS_PLUGINS |
60 | struct snd_pcm_plugin *plugin_first; | 61 | struct snd_pcm_plugin *plugin_first; |
61 | struct snd_pcm_plugin *plugin_last; | 62 | struct snd_pcm_plugin *plugin_last; |
diff --git a/include/sound/version.h b/include/sound/version.h index 17137f3a3b6f..2949b9b991b5 100644 --- a/include/sound/version.h +++ b/include/sound/version.h | |||
@@ -1,3 +1,3 @@ | |||
1 | /* include/version.h. Generated by alsa/ksync script. */ | 1 | /* include/version.h. Generated by alsa/ksync script. */ |
2 | #define CONFIG_SND_VERSION "1.0.13" | 2 | #define CONFIG_SND_VERSION "1.0.14rc1" |
3 | #define CONFIG_SND_DATE " (Tue Nov 28 14:07:24 2006 UTC)" | 3 | #define CONFIG_SND_DATE " (Wed Dec 20 08:11:48 2006 UTC)" |
diff --git a/include/sound/ymfpci.h b/include/sound/ymfpci.h index d41cda97e952..f3514ee96bd9 100644 --- a/include/sound/ymfpci.h +++ b/include/sound/ymfpci.h | |||
@@ -286,7 +286,7 @@ struct snd_ymfpci { | |||
286 | int irq; | 286 | int irq; |
287 | 287 | ||
288 | unsigned int device_id; /* PCI device ID */ | 288 | unsigned int device_id; /* PCI device ID */ |
289 | unsigned int rev; /* PCI revision */ | 289 | unsigned char rev; /* PCI revision */ |
290 | unsigned long reg_area_phys; | 290 | unsigned long reg_area_phys; |
291 | void __iomem *reg_area_virt; | 291 | void __iomem *reg_area_virt; |
292 | struct resource *res_reg_area; | 292 | struct resource *res_reg_area; |
@@ -345,7 +345,6 @@ struct snd_ymfpci { | |||
345 | struct snd_kcontrol *spdif_pcm_ctl; | 345 | struct snd_kcontrol *spdif_pcm_ctl; |
346 | int mode_dup4ch; | 346 | int mode_dup4ch; |
347 | int rear_opened; | 347 | int rear_opened; |
348 | int rear_swap; | ||
349 | int spdif_opened; | 348 | int spdif_opened; |
350 | struct { | 349 | struct { |
351 | u16 left; | 350 | u16 left; |
@@ -378,7 +377,7 @@ int snd_ymfpci_pcm(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); | |||
378 | int snd_ymfpci_pcm2(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); | 377 | int snd_ymfpci_pcm2(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); |
379 | int snd_ymfpci_pcm_spdif(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); | 378 | int snd_ymfpci_pcm_spdif(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); |
380 | int snd_ymfpci_pcm_4ch(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); | 379 | int snd_ymfpci_pcm_4ch(struct snd_ymfpci *chip, int device, struct snd_pcm **rpcm); |
381 | int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rear_swap); | 380 | int snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch); |
382 | int snd_ymfpci_timer(struct snd_ymfpci *chip, int device); | 381 | int snd_ymfpci_timer(struct snd_ymfpci *chip, int device); |
383 | 382 | ||
384 | #endif /* __SOUND_YMFPCI_H */ | 383 | #endif /* __SOUND_YMFPCI_H */ |
diff --git a/init/main.c b/init/main.c index e3f0bb20b4dd..2b1cdaab45e6 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -53,6 +53,7 @@ | |||
53 | #include <linux/utsrelease.h> | 53 | #include <linux/utsrelease.h> |
54 | #include <linux/pid_namespace.h> | 54 | #include <linux/pid_namespace.h> |
55 | #include <linux/compile.h> | 55 | #include <linux/compile.h> |
56 | #include <linux/device.h> | ||
56 | 57 | ||
57 | #include <asm/io.h> | 58 | #include <asm/io.h> |
58 | #include <asm/bugs.h> | 59 | #include <asm/bugs.h> |
@@ -94,7 +95,6 @@ extern void pidmap_init(void); | |||
94 | extern void prio_tree_init(void); | 95 | extern void prio_tree_init(void); |
95 | extern void radix_tree_init(void); | 96 | extern void radix_tree_init(void); |
96 | extern void free_initmem(void); | 97 | extern void free_initmem(void); |
97 | extern void driver_init(void); | ||
98 | extern void prepare_namespace(void); | 98 | extern void prepare_namespace(void); |
99 | #ifdef CONFIG_ACPI | 99 | #ifdef CONFIG_ACPI |
100 | extern void acpi_early_init(void); | 100 | extern void acpi_early_init(void); |
diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index a1922765ff31..84272ed77f03 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c | |||
@@ -63,8 +63,11 @@ static char *action_to_string(enum kobject_action action) | |||
63 | * @action: action that is happening (usually KOBJ_MOVE) | 63 | * @action: action that is happening (usually KOBJ_MOVE) |
64 | * @kobj: struct kobject that the action is happening to | 64 | * @kobj: struct kobject that the action is happening to |
65 | * @envp_ext: pointer to environmental data | 65 | * @envp_ext: pointer to environmental data |
66 | * | ||
67 | * Returns 0 if kobject_uevent() is completed with success or the | ||
68 | * corresponding error when it fails. | ||
66 | */ | 69 | */ |
67 | void kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | 70 | int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, |
68 | char *envp_ext[]) | 71 | char *envp_ext[]) |
69 | { | 72 | { |
70 | char **envp; | 73 | char **envp; |
@@ -79,14 +82,16 @@ void kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | |||
79 | u64 seq; | 82 | u64 seq; |
80 | char *seq_buff; | 83 | char *seq_buff; |
81 | int i = 0; | 84 | int i = 0; |
82 | int retval; | 85 | int retval = 0; |
83 | int j; | 86 | int j; |
84 | 87 | ||
85 | pr_debug("%s\n", __FUNCTION__); | 88 | pr_debug("%s\n", __FUNCTION__); |
86 | 89 | ||
87 | action_string = action_to_string(action); | 90 | action_string = action_to_string(action); |
88 | if (!action_string) | 91 | if (!action_string) { |
89 | return; | 92 | pr_debug("kobject attempted to send uevent without action_string!\n"); |
93 | return -EINVAL; | ||
94 | } | ||
90 | 95 | ||
91 | /* search the kset we belong to */ | 96 | /* search the kset we belong to */ |
92 | top_kobj = kobj; | 97 | top_kobj = kobj; |
@@ -95,31 +100,39 @@ void kobject_uevent_env(struct kobject *kobj, enum kobject_action action, | |||
95 | top_kobj = top_kobj->parent; | 100 | top_kobj = top_kobj->parent; |
96 | } while (!top_kobj->kset && top_kobj->parent); | 101 | } while (!top_kobj->kset && top_kobj->parent); |
97 | } | 102 | } |
98 | if (!top_kobj->kset) | 103 | if (!top_kobj->kset) { |
99 | return; | 104 | pr_debug("kobject attempted to send uevent without kset!\n"); |
105 | return -EINVAL; | ||
106 | } | ||
100 | 107 | ||
101 | kset = top_kobj->kset; | 108 | kset = top_kobj->kset; |
102 | uevent_ops = kset->uevent_ops; | 109 | uevent_ops = kset->uevent_ops; |
103 | 110 | ||
104 | /* skip the event, if the filter returns zero. */ | 111 | /* skip the event, if the filter returns zero. */ |
105 | if (uevent_ops && uevent_ops->filter) | 112 | if (uevent_ops && uevent_ops->filter) |
106 | if (!uevent_ops->filter(kset, kobj)) | 113 | if (!uevent_ops->filter(kset, kobj)) { |
107 | return; | 114 | pr_debug("kobject filter function caused the event to drop!\n"); |
115 | return 0; | ||
116 | } | ||
108 | 117 | ||
109 | /* environment index */ | 118 | /* environment index */ |
110 | envp = kzalloc(NUM_ENVP * sizeof (char *), GFP_KERNEL); | 119 | envp = kzalloc(NUM_ENVP * sizeof (char *), GFP_KERNEL); |
111 | if (!envp) | 120 | if (!envp) |
112 | return; | 121 | return -ENOMEM; |
113 | 122 | ||
114 | /* environment values */ | 123 | /* environment values */ |
115 | buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL); | 124 | buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL); |
116 | if (!buffer) | 125 | if (!buffer) { |
126 | retval = -ENOMEM; | ||
117 | goto exit; | 127 | goto exit; |
128 | } | ||
118 | 129 | ||
119 | /* complete object path */ | 130 | /* complete object path */ |
120 | devpath = kobject_get_path(kobj, GFP_KERNEL); | 131 | devpath = kobject_get_path(kobj, GFP_KERNEL); |
121 | if (!devpath) | 132 | if (!devpath) { |
133 | retval = -ENOENT; | ||
122 | goto exit; | 134 | goto exit; |
135 | } | ||
123 | 136 | ||
124 | /* originating subsystem */ | 137 | /* originating subsystem */ |
125 | if (uevent_ops && uevent_ops->name) | 138 | if (uevent_ops && uevent_ops->name) |
@@ -204,7 +217,7 @@ exit: | |||
204 | kfree(devpath); | 217 | kfree(devpath); |
205 | kfree(buffer); | 218 | kfree(buffer); |
206 | kfree(envp); | 219 | kfree(envp); |
207 | return; | 220 | return retval; |
208 | } | 221 | } |
209 | 222 | ||
210 | EXPORT_SYMBOL_GPL(kobject_uevent_env); | 223 | EXPORT_SYMBOL_GPL(kobject_uevent_env); |
@@ -214,10 +227,13 @@ EXPORT_SYMBOL_GPL(kobject_uevent_env); | |||
214 | * | 227 | * |
215 | * @action: action that is happening (usually KOBJ_ADD and KOBJ_REMOVE) | 228 | * @action: action that is happening (usually KOBJ_ADD and KOBJ_REMOVE) |
216 | * @kobj: struct kobject that the action is happening to | 229 | * @kobj: struct kobject that the action is happening to |
230 | * | ||
231 | * Returns 0 if kobject_uevent() is completed with success or the | ||
232 | * corresponding error when it fails. | ||
217 | */ | 233 | */ |
218 | void kobject_uevent(struct kobject *kobj, enum kobject_action action) | 234 | int kobject_uevent(struct kobject *kobj, enum kobject_action action) |
219 | { | 235 | { |
220 | kobject_uevent_env(kobj, action, NULL); | 236 | return kobject_uevent_env(kobj, action, NULL); |
221 | } | 237 | } |
222 | 238 | ||
223 | EXPORT_SYMBOL_GPL(kobject_uevent); | 239 | EXPORT_SYMBOL_GPL(kobject_uevent); |
diff --git a/lib/kref.c b/lib/kref.c index 4a467faf1367..0d07cc31c818 100644 --- a/lib/kref.c +++ b/lib/kref.c | |||
@@ -52,12 +52,7 @@ int kref_put(struct kref *kref, void (*release)(struct kref *kref)) | |||
52 | WARN_ON(release == NULL); | 52 | WARN_ON(release == NULL); |
53 | WARN_ON(release == (void (*)(struct kref *))kfree); | 53 | WARN_ON(release == (void (*)(struct kref *))kfree); |
54 | 54 | ||
55 | /* | 55 | if (atomic_dec_and_test(&kref->refcount)) { |
56 | * if current count is one, we are the last user and can release object | ||
57 | * right now, avoiding an atomic operation on 'refcount' | ||
58 | */ | ||
59 | if ((atomic_read(&kref->refcount) == 1) || | ||
60 | (atomic_dec_and_test(&kref->refcount))) { | ||
61 | release(kref); | 56 | release(kref); |
62 | return 1; | 57 | return 1; |
63 | } | 58 | } |
diff --git a/sound/aoa/codecs/snd-aoa-codec-onyx.h b/sound/aoa/codecs/snd-aoa-codec-onyx.h index aeedda773699..ffd20254ff76 100644 --- a/sound/aoa/codecs/snd-aoa-codec-onyx.h +++ b/sound/aoa/codecs/snd-aoa-codec-onyx.h | |||
@@ -9,7 +9,6 @@ | |||
9 | #define __SND_AOA_CODEC_ONYX_H | 9 | #define __SND_AOA_CODEC_ONYX_H |
10 | #include <stddef.h> | 10 | #include <stddef.h> |
11 | #include <linux/i2c.h> | 11 | #include <linux/i2c.h> |
12 | #include <linux/i2c-dev.h> | ||
13 | #include <asm/pmac_low_i2c.h> | 12 | #include <asm/pmac_low_i2c.h> |
14 | #include <asm/prom.h> | 13 | #include <asm/prom.h> |
15 | 14 | ||
diff --git a/sound/aoa/codecs/snd-aoa-codec-tas.c b/sound/aoa/codecs/snd-aoa-codec-tas.c index 9de8485ba3f5..2cd81fa07ce1 100644 --- a/sound/aoa/codecs/snd-aoa-codec-tas.c +++ b/sound/aoa/codecs/snd-aoa-codec-tas.c | |||
@@ -61,7 +61,6 @@ | |||
61 | */ | 61 | */ |
62 | #include <stddef.h> | 62 | #include <stddef.h> |
63 | #include <linux/i2c.h> | 63 | #include <linux/i2c.h> |
64 | #include <linux/i2c-dev.h> | ||
65 | #include <asm/pmac_low_i2c.h> | 64 | #include <asm/pmac_low_i2c.h> |
66 | #include <asm/prom.h> | 65 | #include <asm/prom.h> |
67 | #include <linux/delay.h> | 66 | #include <linux/delay.h> |
diff --git a/sound/core/control.c b/sound/core/control.c index 48ef0a09a7a7..0c7bcd62e5b2 100644 --- a/sound/core/control.c +++ b/sound/core/control.c | |||
@@ -1275,7 +1275,7 @@ static ssize_t snd_ctl_read(struct file *file, char __user *buffer, | |||
1275 | schedule(); | 1275 | schedule(); |
1276 | remove_wait_queue(&ctl->change_sleep, &wait); | 1276 | remove_wait_queue(&ctl->change_sleep, &wait); |
1277 | if (signal_pending(current)) | 1277 | if (signal_pending(current)) |
1278 | return result > 0 ? result : -ERESTARTSYS; | 1278 | return -ERESTARTSYS; |
1279 | spin_lock_irq(&ctl->read_lock); | 1279 | spin_lock_irq(&ctl->read_lock); |
1280 | } | 1280 | } |
1281 | kev = snd_kctl_event(ctl->events.next); | 1281 | kev = snd_kctl_event(ctl->events.next); |
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c index e0821eb3d851..786a82e68890 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c | |||
@@ -810,6 +810,8 @@ static int snd_pcm_oss_change_params(struct snd_pcm_substream *substream) | |||
810 | struct snd_mask sformat_mask; | 810 | struct snd_mask sformat_mask; |
811 | struct snd_mask mask; | 811 | struct snd_mask mask; |
812 | 812 | ||
813 | if (mutex_lock_interruptible(&runtime->oss.params_lock)) | ||
814 | return -EINTR; | ||
813 | sw_params = kmalloc(sizeof(*sw_params), GFP_KERNEL); | 815 | sw_params = kmalloc(sizeof(*sw_params), GFP_KERNEL); |
814 | params = kmalloc(sizeof(*params), GFP_KERNEL); | 816 | params = kmalloc(sizeof(*params), GFP_KERNEL); |
815 | sparams = kmalloc(sizeof(*sparams), GFP_KERNEL); | 817 | sparams = kmalloc(sizeof(*sparams), GFP_KERNEL); |
@@ -1020,6 +1022,7 @@ failure: | |||
1020 | kfree(sw_params); | 1022 | kfree(sw_params); |
1021 | kfree(params); | 1023 | kfree(params); |
1022 | kfree(sparams); | 1024 | kfree(sparams); |
1025 | mutex_unlock(&runtime->oss.params_lock); | ||
1023 | return err; | 1026 | return err; |
1024 | } | 1027 | } |
1025 | 1028 | ||
@@ -1307,14 +1310,17 @@ static ssize_t snd_pcm_oss_write1(struct snd_pcm_substream *substream, const cha | |||
1307 | 1310 | ||
1308 | if ((tmp = snd_pcm_oss_make_ready(substream)) < 0) | 1311 | if ((tmp = snd_pcm_oss_make_ready(substream)) < 0) |
1309 | return tmp; | 1312 | return tmp; |
1313 | mutex_lock(&runtime->oss.params_lock); | ||
1310 | while (bytes > 0) { | 1314 | while (bytes > 0) { |
1311 | if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { | 1315 | if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { |
1312 | tmp = bytes; | 1316 | tmp = bytes; |
1313 | if (tmp + runtime->oss.buffer_used > runtime->oss.period_bytes) | 1317 | if (tmp + runtime->oss.buffer_used > runtime->oss.period_bytes) |
1314 | tmp = runtime->oss.period_bytes - runtime->oss.buffer_used; | 1318 | tmp = runtime->oss.period_bytes - runtime->oss.buffer_used; |
1315 | if (tmp > 0) { | 1319 | if (tmp > 0) { |
1316 | if (copy_from_user(runtime->oss.buffer + runtime->oss.buffer_used, buf, tmp)) | 1320 | if (copy_from_user(runtime->oss.buffer + runtime->oss.buffer_used, buf, tmp)) { |
1317 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : -EFAULT; | 1321 | tmp = -EFAULT; |
1322 | goto err; | ||
1323 | } | ||
1318 | } | 1324 | } |
1319 | runtime->oss.buffer_used += tmp; | 1325 | runtime->oss.buffer_used += tmp; |
1320 | buf += tmp; | 1326 | buf += tmp; |
@@ -1325,22 +1331,24 @@ static ssize_t snd_pcm_oss_write1(struct snd_pcm_substream *substream, const cha | |||
1325 | tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer + runtime->oss.period_ptr, | 1331 | tmp = snd_pcm_oss_write2(substream, runtime->oss.buffer + runtime->oss.period_ptr, |
1326 | runtime->oss.buffer_used - runtime->oss.period_ptr, 1); | 1332 | runtime->oss.buffer_used - runtime->oss.period_ptr, 1); |
1327 | if (tmp <= 0) | 1333 | if (tmp <= 0) |
1328 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; | 1334 | goto err; |
1329 | runtime->oss.bytes += tmp; | 1335 | runtime->oss.bytes += tmp; |
1330 | runtime->oss.period_ptr += tmp; | 1336 | runtime->oss.period_ptr += tmp; |
1331 | runtime->oss.period_ptr %= runtime->oss.period_bytes; | 1337 | runtime->oss.period_ptr %= runtime->oss.period_bytes; |
1332 | if (runtime->oss.period_ptr == 0 || | 1338 | if (runtime->oss.period_ptr == 0 || |
1333 | runtime->oss.period_ptr == runtime->oss.buffer_used) | 1339 | runtime->oss.period_ptr == runtime->oss.buffer_used) |
1334 | runtime->oss.buffer_used = 0; | 1340 | runtime->oss.buffer_used = 0; |
1335 | else if ((substream->f_flags & O_NONBLOCK) != 0) | 1341 | else if ((substream->f_flags & O_NONBLOCK) != 0) { |
1336 | return xfer > 0 ? xfer : -EAGAIN; | 1342 | tmp = -EAGAIN; |
1343 | goto err; | ||
1344 | } | ||
1337 | } | 1345 | } |
1338 | } else { | 1346 | } else { |
1339 | tmp = snd_pcm_oss_write2(substream, | 1347 | tmp = snd_pcm_oss_write2(substream, |
1340 | (const char __force *)buf, | 1348 | (const char __force *)buf, |
1341 | runtime->oss.period_bytes, 0); | 1349 | runtime->oss.period_bytes, 0); |
1342 | if (tmp <= 0) | 1350 | if (tmp <= 0) |
1343 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; | 1351 | goto err; |
1344 | runtime->oss.bytes += tmp; | 1352 | runtime->oss.bytes += tmp; |
1345 | buf += tmp; | 1353 | buf += tmp; |
1346 | bytes -= tmp; | 1354 | bytes -= tmp; |
@@ -1350,7 +1358,12 @@ static ssize_t snd_pcm_oss_write1(struct snd_pcm_substream *substream, const cha | |||
1350 | break; | 1358 | break; |
1351 | } | 1359 | } |
1352 | } | 1360 | } |
1361 | mutex_unlock(&runtime->oss.params_lock); | ||
1353 | return xfer; | 1362 | return xfer; |
1363 | |||
1364 | err: | ||
1365 | mutex_unlock(&runtime->oss.params_lock); | ||
1366 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; | ||
1354 | } | 1367 | } |
1355 | 1368 | ||
1356 | static ssize_t snd_pcm_oss_read2(struct snd_pcm_substream *substream, char *buf, size_t bytes, int in_kernel) | 1369 | static ssize_t snd_pcm_oss_read2(struct snd_pcm_substream *substream, char *buf, size_t bytes, int in_kernel) |
@@ -1397,12 +1410,13 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use | |||
1397 | 1410 | ||
1398 | if ((tmp = snd_pcm_oss_make_ready(substream)) < 0) | 1411 | if ((tmp = snd_pcm_oss_make_ready(substream)) < 0) |
1399 | return tmp; | 1412 | return tmp; |
1413 | mutex_lock(&runtime->oss.params_lock); | ||
1400 | while (bytes > 0) { | 1414 | while (bytes > 0) { |
1401 | if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { | 1415 | if (bytes < runtime->oss.period_bytes || runtime->oss.buffer_used > 0) { |
1402 | if (runtime->oss.buffer_used == 0) { | 1416 | if (runtime->oss.buffer_used == 0) { |
1403 | tmp = snd_pcm_oss_read2(substream, runtime->oss.buffer, runtime->oss.period_bytes, 1); | 1417 | tmp = snd_pcm_oss_read2(substream, runtime->oss.buffer, runtime->oss.period_bytes, 1); |
1404 | if (tmp <= 0) | 1418 | if (tmp <= 0) |
1405 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; | 1419 | goto err; |
1406 | runtime->oss.bytes += tmp; | 1420 | runtime->oss.bytes += tmp; |
1407 | runtime->oss.period_ptr = tmp; | 1421 | runtime->oss.period_ptr = tmp; |
1408 | runtime->oss.buffer_used = tmp; | 1422 | runtime->oss.buffer_used = tmp; |
@@ -1410,8 +1424,10 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use | |||
1410 | tmp = bytes; | 1424 | tmp = bytes; |
1411 | if ((size_t) tmp > runtime->oss.buffer_used) | 1425 | if ((size_t) tmp > runtime->oss.buffer_used) |
1412 | tmp = runtime->oss.buffer_used; | 1426 | tmp = runtime->oss.buffer_used; |
1413 | if (copy_to_user(buf, runtime->oss.buffer + (runtime->oss.period_ptr - runtime->oss.buffer_used), tmp)) | 1427 | if (copy_to_user(buf, runtime->oss.buffer + (runtime->oss.period_ptr - runtime->oss.buffer_used), tmp)) { |
1414 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : -EFAULT; | 1428 | tmp = -EFAULT; |
1429 | goto err; | ||
1430 | } | ||
1415 | buf += tmp; | 1431 | buf += tmp; |
1416 | bytes -= tmp; | 1432 | bytes -= tmp; |
1417 | xfer += tmp; | 1433 | xfer += tmp; |
@@ -1420,14 +1436,19 @@ static ssize_t snd_pcm_oss_read1(struct snd_pcm_substream *substream, char __use | |||
1420 | tmp = snd_pcm_oss_read2(substream, (char __force *)buf, | 1436 | tmp = snd_pcm_oss_read2(substream, (char __force *)buf, |
1421 | runtime->oss.period_bytes, 0); | 1437 | runtime->oss.period_bytes, 0); |
1422 | if (tmp <= 0) | 1438 | if (tmp <= 0) |
1423 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; | 1439 | goto err; |
1424 | runtime->oss.bytes += tmp; | 1440 | runtime->oss.bytes += tmp; |
1425 | buf += tmp; | 1441 | buf += tmp; |
1426 | bytes -= tmp; | 1442 | bytes -= tmp; |
1427 | xfer += tmp; | 1443 | xfer += tmp; |
1428 | } | 1444 | } |
1429 | } | 1445 | } |
1446 | mutex_unlock(&runtime->oss.params_lock); | ||
1430 | return xfer; | 1447 | return xfer; |
1448 | |||
1449 | err: | ||
1450 | mutex_unlock(&runtime->oss.params_lock); | ||
1451 | return xfer > 0 ? (snd_pcm_sframes_t)xfer : tmp; | ||
1431 | } | 1452 | } |
1432 | 1453 | ||
1433 | static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file) | 1454 | static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file) |
@@ -1528,6 +1549,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) | |||
1528 | return err; | 1549 | return err; |
1529 | format = snd_pcm_oss_format_from(runtime->oss.format); | 1550 | format = snd_pcm_oss_format_from(runtime->oss.format); |
1530 | width = snd_pcm_format_physical_width(format); | 1551 | width = snd_pcm_format_physical_width(format); |
1552 | mutex_lock(&runtime->oss.params_lock); | ||
1531 | if (runtime->oss.buffer_used > 0) { | 1553 | if (runtime->oss.buffer_used > 0) { |
1532 | #ifdef OSS_DEBUG | 1554 | #ifdef OSS_DEBUG |
1533 | printk("sync: buffer_used\n"); | 1555 | printk("sync: buffer_used\n"); |
@@ -1537,8 +1559,10 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) | |||
1537 | runtime->oss.buffer + runtime->oss.buffer_used, | 1559 | runtime->oss.buffer + runtime->oss.buffer_used, |
1538 | size); | 1560 | size); |
1539 | err = snd_pcm_oss_sync1(substream, runtime->oss.period_bytes); | 1561 | err = snd_pcm_oss_sync1(substream, runtime->oss.period_bytes); |
1540 | if (err < 0) | 1562 | if (err < 0) { |
1563 | mutex_unlock(&runtime->oss.params_lock); | ||
1541 | return err; | 1564 | return err; |
1565 | } | ||
1542 | } else if (runtime->oss.period_ptr > 0) { | 1566 | } else if (runtime->oss.period_ptr > 0) { |
1543 | #ifdef OSS_DEBUG | 1567 | #ifdef OSS_DEBUG |
1544 | printk("sync: period_ptr\n"); | 1568 | printk("sync: period_ptr\n"); |
@@ -1548,8 +1572,10 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) | |||
1548 | runtime->oss.buffer, | 1572 | runtime->oss.buffer, |
1549 | size * 8 / width); | 1573 | size * 8 / width); |
1550 | err = snd_pcm_oss_sync1(substream, size); | 1574 | err = snd_pcm_oss_sync1(substream, size); |
1551 | if (err < 0) | 1575 | if (err < 0) { |
1576 | mutex_unlock(&runtime->oss.params_lock); | ||
1552 | return err; | 1577 | return err; |
1578 | } | ||
1553 | } | 1579 | } |
1554 | /* | 1580 | /* |
1555 | * The ALSA's period might be a bit large than OSS one. | 1581 | * The ALSA's period might be a bit large than OSS one. |
@@ -1579,6 +1605,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) | |||
1579 | snd_pcm_lib_writev(substream, buffers, size); | 1605 | snd_pcm_lib_writev(substream, buffers, size); |
1580 | } | 1606 | } |
1581 | } | 1607 | } |
1608 | mutex_unlock(&runtime->oss.params_lock); | ||
1582 | /* | 1609 | /* |
1583 | * finish sync: drain the buffer | 1610 | * finish sync: drain the buffer |
1584 | */ | 1611 | */ |
@@ -2172,6 +2199,7 @@ static void snd_pcm_oss_init_substream(struct snd_pcm_substream *substream, | |||
2172 | runtime->oss.params = 1; | 2199 | runtime->oss.params = 1; |
2173 | runtime->oss.trigger = 1; | 2200 | runtime->oss.trigger = 1; |
2174 | runtime->oss.rate = 8000; | 2201 | runtime->oss.rate = 8000; |
2202 | mutex_init(&runtime->oss.params_lock); | ||
2175 | switch (SNDRV_MINOR_OSS_DEVICE(minor)) { | 2203 | switch (SNDRV_MINOR_OSS_DEVICE(minor)) { |
2176 | case SNDRV_MINOR_OSS_PCM_8: | 2204 | case SNDRV_MINOR_OSS_PCM_8: |
2177 | runtime->oss.format = AFMT_U8; | 2205 | runtime->oss.format = AFMT_U8; |
diff --git a/sound/core/pcm.c b/sound/core/pcm.c index 5ac6e19ccb41..8e0189885516 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c | |||
@@ -640,6 +640,10 @@ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) | |||
640 | err = snd_pcm_substream_proc_init(substream); | 640 | err = snd_pcm_substream_proc_init(substream); |
641 | if (err < 0) { | 641 | if (err < 0) { |
642 | snd_printk(KERN_ERR "Error in snd_pcm_stream_proc_init\n"); | 642 | snd_printk(KERN_ERR "Error in snd_pcm_stream_proc_init\n"); |
643 | if (prev == NULL) | ||
644 | pstr->substream = NULL; | ||
645 | else | ||
646 | prev->next = NULL; | ||
643 | kfree(substream); | 647 | kfree(substream); |
644 | return err; | 648 | return err; |
645 | } | 649 | } |
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index 0bb142a28539..b336797be4fc 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c | |||
@@ -79,19 +79,17 @@ void snd_pcm_playback_silence(struct snd_pcm_substream *substream, snd_pcm_ufram | |||
79 | runtime->silence_filled -= frames; | 79 | runtime->silence_filled -= frames; |
80 | if ((snd_pcm_sframes_t)runtime->silence_filled < 0) { | 80 | if ((snd_pcm_sframes_t)runtime->silence_filled < 0) { |
81 | runtime->silence_filled = 0; | 81 | runtime->silence_filled = 0; |
82 | runtime->silence_start = (ofs + frames) - runtime->buffer_size; | 82 | runtime->silence_start = new_hw_ptr; |
83 | } else { | 83 | } else { |
84 | runtime->silence_start = ofs - runtime->silence_filled; | 84 | runtime->silence_start = ofs; |
85 | } | 85 | } |
86 | if ((snd_pcm_sframes_t)runtime->silence_start < 0) | ||
87 | runtime->silence_start += runtime->boundary; | ||
88 | } | 86 | } |
89 | frames = runtime->buffer_size - runtime->silence_filled; | 87 | frames = runtime->buffer_size - runtime->silence_filled; |
90 | } | 88 | } |
91 | snd_assert(frames <= runtime->buffer_size, return); | 89 | snd_assert(frames <= runtime->buffer_size, return); |
92 | if (frames == 0) | 90 | if (frames == 0) |
93 | return; | 91 | return; |
94 | ofs = (runtime->silence_start + runtime->silence_filled) % runtime->buffer_size; | 92 | ofs = runtime->silence_start % runtime->buffer_size; |
95 | while (frames > 0) { | 93 | while (frames > 0) { |
96 | transfer = ofs + frames > runtime->buffer_size ? runtime->buffer_size - ofs : frames; | 94 | transfer = ofs + frames > runtime->buffer_size ? runtime->buffer_size - ofs : frames; |
97 | if (runtime->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED || | 95 | if (runtime->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED || |
diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c index 269c467ca9bb..0f055bfcbdac 100644 --- a/sound/core/rawmidi.c +++ b/sound/core/rawmidi.c | |||
@@ -1385,7 +1385,6 @@ static int snd_rawmidi_alloc_substreams(struct snd_rawmidi *rmidi, | |||
1385 | struct snd_rawmidi_substream *substream; | 1385 | struct snd_rawmidi_substream *substream; |
1386 | int idx; | 1386 | int idx; |
1387 | 1387 | ||
1388 | INIT_LIST_HEAD(&stream->substreams); | ||
1389 | for (idx = 0; idx < count; idx++) { | 1388 | for (idx = 0; idx < count; idx++) { |
1390 | substream = kzalloc(sizeof(*substream), GFP_KERNEL); | 1389 | substream = kzalloc(sizeof(*substream), GFP_KERNEL); |
1391 | if (substream == NULL) { | 1390 | if (substream == NULL) { |
@@ -1440,6 +1439,9 @@ int snd_rawmidi_new(struct snd_card *card, char *id, int device, | |||
1440 | rmidi->device = device; | 1439 | rmidi->device = device; |
1441 | mutex_init(&rmidi->open_mutex); | 1440 | mutex_init(&rmidi->open_mutex); |
1442 | init_waitqueue_head(&rmidi->open_wait); | 1441 | init_waitqueue_head(&rmidi->open_wait); |
1442 | INIT_LIST_HEAD(&rmidi->streams[SNDRV_RAWMIDI_STREAM_INPUT].substreams); | ||
1443 | INIT_LIST_HEAD(&rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT].substreams); | ||
1444 | |||
1443 | if (id != NULL) | 1445 | if (id != NULL) |
1444 | strlcpy(rmidi->id, id, sizeof(rmidi->id)); | 1446 | strlcpy(rmidi->id, id, sizeof(rmidi->id)); |
1445 | if ((err = snd_rawmidi_alloc_substreams(rmidi, | 1447 | if ((err = snd_rawmidi_alloc_substreams(rmidi, |
diff --git a/sound/core/seq/seq_memory.c b/sound/core/seq/seq_memory.c index 4bffe509f719..a3dc5e01e9f2 100644 --- a/sound/core/seq/seq_memory.c +++ b/sound/core/seq/seq_memory.c | |||
@@ -151,7 +151,7 @@ int snd_seq_expand_var_event(const struct snd_seq_event *event, int count, char | |||
151 | return len; | 151 | return len; |
152 | newlen = len; | 152 | newlen = len; |
153 | if (size_aligned > 0) | 153 | if (size_aligned > 0) |
154 | newlen = ((len + size_aligned - 1) / size_aligned) * size_aligned; | 154 | newlen = roundup(len, size_aligned); |
155 | if (count < newlen) | 155 | if (count < newlen) |
156 | return -EAGAIN; | 156 | return -EAGAIN; |
157 | 157 | ||
diff --git a/sound/core/sgbuf.c b/sound/core/sgbuf.c index c30669f14ac0..cefd228cd2aa 100644 --- a/sound/core/sgbuf.c +++ b/sound/core/sgbuf.c | |||
@@ -27,7 +27,7 @@ | |||
27 | 27 | ||
28 | /* table entries are align to 32 */ | 28 | /* table entries are align to 32 */ |
29 | #define SGBUF_TBL_ALIGN 32 | 29 | #define SGBUF_TBL_ALIGN 32 |
30 | #define sgbuf_align_table(tbl) ((((tbl) + SGBUF_TBL_ALIGN - 1) / SGBUF_TBL_ALIGN) * SGBUF_TBL_ALIGN) | 30 | #define sgbuf_align_table(tbl) ALIGN((tbl), SGBUF_TBL_ALIGN) |
31 | 31 | ||
32 | int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab) | 32 | int snd_free_sgbuf_pages(struct snd_dma_buffer *dmab) |
33 | { | 33 | { |
diff --git a/sound/isa/gus/gus_mem.c b/sound/isa/gus/gus_mem.c index f50c276caee8..7107753b85b5 100644 --- a/sound/isa/gus/gus_mem.c +++ b/sound/isa/gus/gus_mem.c | |||
@@ -143,9 +143,8 @@ static int snd_gf1_mem_find(struct snd_gf1_mem * alloc, | |||
143 | struct snd_gf1_mem_block *pblock; | 143 | struct snd_gf1_mem_block *pblock; |
144 | unsigned int ptr1, ptr2; | 144 | unsigned int ptr1, ptr2; |
145 | 145 | ||
146 | align--; | 146 | if (w_16 && align < 2) |
147 | if (w_16 && align < 1) | 147 | align = 2; |
148 | align = 1; | ||
149 | block->flags = w_16 ? SNDRV_GF1_MEM_BLOCK_16BIT : 0; | 148 | block->flags = w_16 ? SNDRV_GF1_MEM_BLOCK_16BIT : 0; |
150 | block->owner = SNDRV_GF1_MEM_OWNER_DRIVER; | 149 | block->owner = SNDRV_GF1_MEM_OWNER_DRIVER; |
151 | block->share = 0; | 150 | block->share = 0; |
@@ -165,7 +164,7 @@ static int snd_gf1_mem_find(struct snd_gf1_mem * alloc, | |||
165 | if (pblock->next->ptr < boundary) | 164 | if (pblock->next->ptr < boundary) |
166 | ptr2 = pblock->next->ptr; | 165 | ptr2 = pblock->next->ptr; |
167 | } | 166 | } |
168 | ptr1 = (pblock->ptr + pblock->size + align) & ~align; | 167 | ptr1 = ALIGN(pblock->ptr + pblock->size, align); |
169 | if (ptr1 >= ptr2) | 168 | if (ptr1 >= ptr2) |
170 | continue; | 169 | continue; |
171 | size1 = ptr2 - ptr1; | 170 | size1 = ptr2 - ptr1; |
diff --git a/sound/isa/sb/sb_common.c b/sound/isa/sb/sb_common.c index c62a9e3d2ae4..3094f3852167 100644 --- a/sound/isa/sb/sb_common.c +++ b/sound/isa/sb/sb_common.c | |||
@@ -232,7 +232,7 @@ int snd_sbdsp_create(struct snd_card *card, | |||
232 | chip->port = port; | 232 | chip->port = port; |
233 | 233 | ||
234 | if (request_irq(irq, irq_handler, hardware == SB_HW_ALS4000 ? | 234 | if (request_irq(irq, irq_handler, hardware == SB_HW_ALS4000 ? |
235 | IRQF_DISABLED | IRQF_SHARED : IRQF_DISABLED, | 235 | IRQF_SHARED : IRQF_DISABLED, |
236 | "SoundBlaster", (void *) chip)) { | 236 | "SoundBlaster", (void *) chip)) { |
237 | snd_printk(KERN_ERR "sb: can't grab irq %d\n", irq); | 237 | snd_printk(KERN_ERR "sb: can't grab irq %d\n", irq); |
238 | snd_sbdsp_free(chip); | 238 | snd_sbdsp_free(chip); |
diff --git a/sound/isa/wavefront/wavefront_synth.c b/sound/isa/wavefront/wavefront_synth.c index bed329edbdd7..78020d832e04 100644 --- a/sound/isa/wavefront/wavefront_synth.c +++ b/sound/isa/wavefront/wavefront_synth.c | |||
@@ -1068,7 +1068,7 @@ wavefront_send_sample (snd_wavefront_t *dev, | |||
1068 | blocksize = max_blksize; | 1068 | blocksize = max_blksize; |
1069 | } else { | 1069 | } else { |
1070 | /* round to nearest 16-byte value */ | 1070 | /* round to nearest 16-byte value */ |
1071 | blocksize = ((length-written+7)&~0x7); | 1071 | blocksize = ALIGN(length - written, 8); |
1072 | } | 1072 | } |
1073 | 1073 | ||
1074 | if (snd_wavefront_cmd (dev, WFC_DOWNLOAD_BLOCK, NULL, NULL)) { | 1074 | if (snd_wavefront_cmd (dev, WFC_DOWNLOAD_BLOCK, NULL, NULL)) { |
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 7abcb10b2754..d2994cb4c8c9 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -129,9 +129,9 @@ static const struct ac97_codec_id snd_ac97_codec_ids[] = { | |||
129 | { 0x434d4941, 0xffffffff, "CMI9738", patch_cm9738, NULL }, | 129 | { 0x434d4941, 0xffffffff, "CMI9738", patch_cm9738, NULL }, |
130 | { 0x434d4961, 0xffffffff, "CMI9739", patch_cm9739, NULL }, | 130 | { 0x434d4961, 0xffffffff, "CMI9739", patch_cm9739, NULL }, |
131 | { 0x434d4969, 0xffffffff, "CMI9780", patch_cm9780, NULL }, | 131 | { 0x434d4969, 0xffffffff, "CMI9780", patch_cm9780, NULL }, |
132 | { 0x434d4978, 0xffffffff, "CMI9761", patch_cm9761, NULL }, | 132 | { 0x434d4978, 0xffffffff, "CMI9761A", patch_cm9761, NULL }, |
133 | { 0x434d4982, 0xffffffff, "CMI9761", patch_cm9761, NULL }, | 133 | { 0x434d4982, 0xffffffff, "CMI9761B", patch_cm9761, NULL }, |
134 | { 0x434d4983, 0xffffffff, "CMI9761", patch_cm9761, NULL }, | 134 | { 0x434d4983, 0xffffffff, "CMI9761A+", patch_cm9761, NULL }, |
135 | { 0x43525900, 0xfffffff8, "CS4297", NULL, NULL }, | 135 | { 0x43525900, 0xfffffff8, "CS4297", NULL, NULL }, |
136 | { 0x43525910, 0xfffffff8, "CS4297A", patch_cirrus_spdif, NULL }, | 136 | { 0x43525910, 0xfffffff8, "CS4297A", patch_cirrus_spdif, NULL }, |
137 | { 0x43525920, 0xfffffff8, "CS4298", patch_cirrus_spdif, NULL }, | 137 | { 0x43525920, 0xfffffff8, "CS4298", patch_cirrus_spdif, NULL }, |
@@ -382,7 +382,7 @@ int snd_ac97_update_bits_nolock(struct snd_ac97 *ac97, unsigned short reg, | |||
382 | unsigned short old, new; | 382 | unsigned short old, new; |
383 | 383 | ||
384 | old = snd_ac97_read_cache(ac97, reg); | 384 | old = snd_ac97_read_cache(ac97, reg); |
385 | new = (old & ~mask) | value; | 385 | new = (old & ~mask) | (value & mask); |
386 | change = old != new; | 386 | change = old != new; |
387 | if (change) { | 387 | if (change) { |
388 | ac97->regs[reg] = new; | 388 | ac97->regs[reg] = new; |
@@ -399,7 +399,7 @@ static int snd_ac97_ad18xx_update_pcm_bits(struct snd_ac97 *ac97, int codec, uns | |||
399 | 399 | ||
400 | mutex_lock(&ac97->page_mutex); | 400 | mutex_lock(&ac97->page_mutex); |
401 | old = ac97->spec.ad18xx.pcmreg[codec]; | 401 | old = ac97->spec.ad18xx.pcmreg[codec]; |
402 | new = (old & ~mask) | value; | 402 | new = (old & ~mask) | (value & mask); |
403 | change = old != new; | 403 | change = old != new; |
404 | if (change) { | 404 | if (change) { |
405 | mutex_lock(&ac97->reg_mutex); | 405 | mutex_lock(&ac97->reg_mutex); |
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c index 15be6ba87c82..e813968e0cf8 100644 --- a/sound/pci/ac97/ac97_patch.c +++ b/sound/pci/ac97/ac97_patch.c | |||
@@ -1467,7 +1467,9 @@ static void patch_ad1881_chained(struct snd_ac97 * ac97, int unchained_idx, int | |||
1467 | snd_ac97_write_cache(ac97, AC97_AD_CODEC_CFG, 0x0002); // ID1C | 1467 | snd_ac97_write_cache(ac97, AC97_AD_CODEC_CFG, 0x0002); // ID1C |
1468 | ac97->spec.ad18xx.codec_cfg[unchained_idx] = 0x0002; | 1468 | ac97->spec.ad18xx.codec_cfg[unchained_idx] = 0x0002; |
1469 | if (cidx1 >= 0) { | 1469 | if (cidx1 >= 0) { |
1470 | if (patch_ad1881_chained1(ac97, cidx1, 0x0006)) // SDIE | ID1C | 1470 | if (cidx2 < 0) |
1471 | patch_ad1881_chained1(ac97, cidx1, 0); | ||
1472 | else if (patch_ad1881_chained1(ac97, cidx1, 0x0006)) // SDIE | ID1C | ||
1471 | patch_ad1881_chained1(ac97, cidx2, 0); | 1473 | patch_ad1881_chained1(ac97, cidx2, 0); |
1472 | else if (patch_ad1881_chained1(ac97, cidx2, 0x0006)) // SDIE | ID1C | 1474 | else if (patch_ad1881_chained1(ac97, cidx2, 0x0006)) // SDIE | ID1C |
1473 | patch_ad1881_chained1(ac97, cidx1, 0); | 1475 | patch_ad1881_chained1(ac97, cidx1, 0); |
@@ -2261,7 +2263,8 @@ int patch_alc655(struct snd_ac97 * ac97) | |||
2261 | else { /* ALC655 */ | 2263 | else { /* ALC655 */ |
2262 | if (ac97->subsystem_vendor == 0x1462 && | 2264 | if (ac97->subsystem_vendor == 0x1462 && |
2263 | (ac97->subsystem_device == 0x0131 || /* MSI S270 laptop */ | 2265 | (ac97->subsystem_device == 0x0131 || /* MSI S270 laptop */ |
2264 | ac97->subsystem_device == 0x0161)) /* LG K1 Express */ | 2266 | ac97->subsystem_device == 0x0161 || /* LG K1 Express */ |
2267 | ac97->subsystem_device == 0x0351)) /* MSI L725 laptop */ | ||
2265 | val &= ~(1 << 1); /* Pin 47 is EAPD (for internal speaker) */ | 2268 | val &= ~(1 << 1); /* Pin 47 is EAPD (for internal speaker) */ |
2266 | else | 2269 | else |
2267 | val |= (1 << 1); /* Pin 47 is spdif input pin */ | 2270 | val |= (1 << 1); /* Pin 47 is spdif input pin */ |
diff --git a/sound/pci/ad1889.c b/sound/pci/ad1889.c index cbf8331c3d33..98970d401be9 100644 --- a/sound/pci/ad1889.c +++ b/sound/pci/ad1889.c | |||
@@ -858,7 +858,7 @@ snd_ad1889_free(struct snd_ad1889 *chip) | |||
858 | synchronize_irq(chip->irq); | 858 | synchronize_irq(chip->irq); |
859 | 859 | ||
860 | if (chip->irq >= 0) | 860 | if (chip->irq >= 0) |
861 | free_irq(chip->irq, (void*)chip); | 861 | free_irq(chip->irq, chip); |
862 | 862 | ||
863 | skip_hw: | 863 | skip_hw: |
864 | if (chip->iobase) | 864 | if (chip->iobase) |
@@ -945,7 +945,7 @@ snd_ad1889_create(struct snd_card *card, | |||
945 | spin_lock_init(&chip->lock); /* only now can we call ad1889_free */ | 945 | spin_lock_init(&chip->lock); /* only now can we call ad1889_free */ |
946 | 946 | ||
947 | if (request_irq(pci->irq, snd_ad1889_interrupt, | 947 | if (request_irq(pci->irq, snd_ad1889_interrupt, |
948 | IRQF_DISABLED|IRQF_SHARED, card->driver, (void*)chip)) { | 948 | IRQF_SHARED, card->driver, chip)) { |
949 | printk(KERN_ERR PFX "cannot obtain IRQ %d\n", pci->irq); | 949 | printk(KERN_ERR PFX "cannot obtain IRQ %d\n", pci->irq); |
950 | snd_ad1889_free(chip); | 950 | snd_ad1889_free(chip); |
951 | return -EBUSY; | 951 | return -EBUSY; |
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c index a7edd56542d4..9327ab2eccb0 100644 --- a/sound/pci/ali5451/ali5451.c +++ b/sound/pci/ali5451/ali5451.c | |||
@@ -2095,7 +2095,7 @@ static int snd_ali_free(struct snd_ali * codec) | |||
2095 | snd_ali_disable_address_interrupt(codec); | 2095 | snd_ali_disable_address_interrupt(codec); |
2096 | if (codec->irq >= 0) { | 2096 | if (codec->irq >= 0) { |
2097 | synchronize_irq(codec->irq); | 2097 | synchronize_irq(codec->irq); |
2098 | free_irq(codec->irq, (void *)codec); | 2098 | free_irq(codec->irq, codec); |
2099 | } | 2099 | } |
2100 | if (codec->port) | 2100 | if (codec->port) |
2101 | pci_release_regions(codec->pci); | 2101 | pci_release_regions(codec->pci); |
@@ -2192,7 +2192,8 @@ static int __devinit snd_ali_resources(struct snd_ali *codec) | |||
2192 | return err; | 2192 | return err; |
2193 | codec->port = pci_resource_start(codec->pci, 0); | 2193 | codec->port = pci_resource_start(codec->pci, 0); |
2194 | 2194 | ||
2195 | if (request_irq(codec->pci->irq, snd_ali_card_interrupt, IRQF_DISABLED|IRQF_SHARED, "ALI 5451", (void *)codec)) { | 2195 | if (request_irq(codec->pci->irq, snd_ali_card_interrupt, |
2196 | IRQF_SHARED, "ALI 5451", codec)) { | ||
2196 | snd_printk(KERN_ERR "Unable to request irq.\n"); | 2197 | snd_printk(KERN_ERR "Unable to request irq.\n"); |
2197 | return -EBUSY; | 2198 | return -EBUSY; |
2198 | } | 2199 | } |
diff --git a/sound/pci/als300.c b/sound/pci/als300.c index 95f70f3cc37e..9f406fbe0d95 100644 --- a/sound/pci/als300.c +++ b/sound/pci/als300.c | |||
@@ -190,7 +190,7 @@ static int snd_als300_free(struct snd_als300 *chip) | |||
190 | snd_als300_dbgcallenter(); | 190 | snd_als300_dbgcallenter(); |
191 | snd_als300_set_irq_flag(chip, IRQ_DISABLE); | 191 | snd_als300_set_irq_flag(chip, IRQ_DISABLE); |
192 | if (chip->irq >= 0) | 192 | if (chip->irq >= 0) |
193 | free_irq(chip->irq, (void *)chip); | 193 | free_irq(chip->irq, chip); |
194 | pci_release_regions(chip->pci); | 194 | pci_release_regions(chip->pci); |
195 | pci_disable_device(chip->pci); | 195 | pci_disable_device(chip->pci); |
196 | kfree(chip); | 196 | kfree(chip); |
@@ -722,8 +722,8 @@ static int __devinit snd_als300_create(snd_card_t *card, | |||
722 | else | 722 | else |
723 | irq_handler = snd_als300_interrupt; | 723 | irq_handler = snd_als300_interrupt; |
724 | 724 | ||
725 | if (request_irq(pci->irq, irq_handler, IRQF_DISABLED|IRQF_SHARED, | 725 | if (request_irq(pci->irq, irq_handler, IRQF_SHARED, |
726 | card->shortname, (void *)chip)) { | 726 | card->shortname, chip)) { |
727 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 727 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
728 | snd_als300_free(chip); | 728 | snd_als300_free(chip); |
729 | return -EBUSY; | 729 | return -EBUSY; |
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c index e3e99f396711..476c3433073e 100644 --- a/sound/pci/atiixp.c +++ b/sound/pci/atiixp.c | |||
@@ -1583,7 +1583,7 @@ static int __devinit snd_atiixp_create(struct snd_card *card, | |||
1583 | return -EIO; | 1583 | return -EIO; |
1584 | } | 1584 | } |
1585 | 1585 | ||
1586 | if (request_irq(pci->irq, snd_atiixp_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1586 | if (request_irq(pci->irq, snd_atiixp_interrupt, IRQF_SHARED, |
1587 | card->shortname, chip)) { | 1587 | card->shortname, chip)) { |
1588 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1588 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1589 | snd_atiixp_free(chip); | 1589 | snd_atiixp_free(chip); |
diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c index dc54f2c68ed7..cc2e6b9d407e 100644 --- a/sound/pci/atiixp_modem.c +++ b/sound/pci/atiixp_modem.c | |||
@@ -1256,7 +1256,7 @@ static int __devinit snd_atiixp_create(struct snd_card *card, | |||
1256 | return -EIO; | 1256 | return -EIO; |
1257 | } | 1257 | } |
1258 | 1258 | ||
1259 | if (request_irq(pci->irq, snd_atiixp_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1259 | if (request_irq(pci->irq, snd_atiixp_interrupt, IRQF_SHARED, |
1260 | card->shortname, chip)) { | 1260 | card->shortname, chip)) { |
1261 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1261 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1262 | snd_atiixp_free(chip); | 1262 | snd_atiixp_free(chip); |
diff --git a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c index 6ed5ad59f5b5..238154bb7a25 100644 --- a/sound/pci/au88x0/au88x0.c +++ b/sound/pci/au88x0/au88x0.c | |||
@@ -198,7 +198,7 @@ snd_vortex_create(struct snd_card *card, struct pci_dev *pci, vortex_t ** rchip) | |||
198 | } | 198 | } |
199 | 199 | ||
200 | if ((err = request_irq(pci->irq, vortex_interrupt, | 200 | if ((err = request_irq(pci->irq, vortex_interrupt, |
201 | IRQF_DISABLED | IRQF_SHARED, CARD_NAME_SHORT, | 201 | IRQF_SHARED, CARD_NAME_SHORT, |
202 | chip)) != 0) { | 202 | chip)) != 0) { |
203 | printk(KERN_ERR "cannot grab irq\n"); | 203 | printk(KERN_ERR "cannot grab irq\n"); |
204 | goto irq_out; | 204 | goto irq_out; |
diff --git a/sound/pci/azt3328.c b/sound/pci/azt3328.c index 2414ee630756..43edd2839b5a 100644 --- a/sound/pci/azt3328.c +++ b/sound/pci/azt3328.c | |||
@@ -1513,7 +1513,7 @@ snd_azf3328_free(struct snd_azf3328 *chip) | |||
1513 | __end_hw: | 1513 | __end_hw: |
1514 | snd_azf3328_free_joystick(chip); | 1514 | snd_azf3328_free_joystick(chip); |
1515 | if (chip->irq >= 0) | 1515 | if (chip->irq >= 0) |
1516 | free_irq(chip->irq, (void *)chip); | 1516 | free_irq(chip->irq, chip); |
1517 | pci_release_regions(chip->pci); | 1517 | pci_release_regions(chip->pci); |
1518 | pci_disable_device(chip->pci); | 1518 | pci_disable_device(chip->pci); |
1519 | 1519 | ||
@@ -1724,7 +1724,8 @@ snd_azf3328_create(struct snd_card *card, | |||
1724 | chip->synth_port = pci_resource_start(pci, 3); | 1724 | chip->synth_port = pci_resource_start(pci, 3); |
1725 | chip->mixer_port = pci_resource_start(pci, 4); | 1725 | chip->mixer_port = pci_resource_start(pci, 4); |
1726 | 1726 | ||
1727 | if (request_irq(pci->irq, snd_azf3328_interrupt, IRQF_DISABLED|IRQF_SHARED, card->shortname, (void *)chip)) { | 1727 | if (request_irq(pci->irq, snd_azf3328_interrupt, |
1728 | IRQF_SHARED, card->shortname, chip)) { | ||
1728 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1729 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1729 | err = -EBUSY; | 1730 | err = -EBUSY; |
1730 | goto out_err; | 1731 | goto out_err; |
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c index d33a37086df9..c3f3da211234 100644 --- a/sound/pci/bt87x.c +++ b/sound/pci/bt87x.c | |||
@@ -699,7 +699,7 @@ static int __devinit snd_bt87x_pcm(struct snd_bt87x *chip, int device, char *nam | |||
699 | SNDRV_DMA_TYPE_DEV_SG, | 699 | SNDRV_DMA_TYPE_DEV_SG, |
700 | snd_dma_pci_data(chip->pci), | 700 | snd_dma_pci_data(chip->pci), |
701 | 128 * 1024, | 701 | 128 * 1024, |
702 | (255 * 4092 + 1023) & ~1023); | 702 | ALIGN(255 * 4092, 1024)); |
703 | } | 703 | } |
704 | 704 | ||
705 | static int __devinit snd_bt87x_create(struct snd_card *card, | 705 | static int __devinit snd_bt87x_create(struct snd_card *card, |
@@ -747,7 +747,7 @@ static int __devinit snd_bt87x_create(struct snd_card *card, | |||
747 | snd_bt87x_writel(chip, REG_INT_MASK, 0); | 747 | snd_bt87x_writel(chip, REG_INT_MASK, 0); |
748 | snd_bt87x_writel(chip, REG_INT_STAT, MY_INTERRUPTS); | 748 | snd_bt87x_writel(chip, REG_INT_STAT, MY_INTERRUPTS); |
749 | 749 | ||
750 | if (request_irq(pci->irq, snd_bt87x_interrupt, IRQF_DISABLED | IRQF_SHARED, | 750 | if (request_irq(pci->irq, snd_bt87x_interrupt, IRQF_SHARED, |
751 | "Bt87x audio", chip)) { | 751 | "Bt87x audio", chip)) { |
752 | snd_bt87x_free(chip); | 752 | snd_bt87x_free(chip); |
753 | snd_printk(KERN_ERR "cannot grab irq\n"); | 753 | snd_printk(KERN_ERR "cannot grab irq\n"); |
diff --git a/sound/pci/ca0106/ca0106.h b/sound/pci/ca0106/ca0106.h index 9cb66c59f523..aaac6e5b4767 100644 --- a/sound/pci/ca0106/ca0106.h +++ b/sound/pci/ca0106/ca0106.h | |||
@@ -590,7 +590,7 @@ struct snd_ca0106 { | |||
590 | struct resource *res_port; | 590 | struct resource *res_port; |
591 | int irq; | 591 | int irq; |
592 | 592 | ||
593 | unsigned int revision; /* chip revision */ | 593 | unsigned char revision; /* chip revision */ |
594 | unsigned int serial; /* serial number */ | 594 | unsigned int serial; /* serial number */ |
595 | unsigned short model; /* subsystem id */ | 595 | unsigned short model; /* subsystem id */ |
596 | 596 | ||
diff --git a/sound/pci/ca0106/ca0106_main.c b/sound/pci/ca0106/ca0106_main.c index 6fa4a302f7de..f61f052f6d14 100644 --- a/sound/pci/ca0106/ca0106_main.c +++ b/sound/pci/ca0106/ca0106_main.c | |||
@@ -154,6 +154,7 @@ MODULE_SUPPORTED_DEVICE("{{Creative,SB CA0106 chip}}"); | |||
154 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; | 154 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; |
155 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; | 155 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; |
156 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; | 156 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; |
157 | static uint subsystem[SNDRV_CARDS]; /* Force card subsystem model */ | ||
157 | 158 | ||
158 | module_param_array(index, int, NULL, 0444); | 159 | module_param_array(index, int, NULL, 0444); |
159 | MODULE_PARM_DESC(index, "Index value for the CA0106 soundcard."); | 160 | MODULE_PARM_DESC(index, "Index value for the CA0106 soundcard."); |
@@ -161,6 +162,8 @@ module_param_array(id, charp, NULL, 0444); | |||
161 | MODULE_PARM_DESC(id, "ID string for the CA0106 soundcard."); | 162 | MODULE_PARM_DESC(id, "ID string for the CA0106 soundcard."); |
162 | module_param_array(enable, bool, NULL, 0444); | 163 | module_param_array(enable, bool, NULL, 0444); |
163 | MODULE_PARM_DESC(enable, "Enable the CA0106 soundcard."); | 164 | MODULE_PARM_DESC(enable, "Enable the CA0106 soundcard."); |
165 | module_param_array(subsystem, uint, NULL, 0444); | ||
166 | MODULE_PARM_DESC(subsystem, "Force card subsystem model."); | ||
164 | 167 | ||
165 | #include "ca0106.h" | 168 | #include "ca0106.h" |
166 | 169 | ||
@@ -194,6 +197,17 @@ static struct snd_ca0106_details ca0106_chip_details[] = { | |||
194 | .gpio_type = 1, | 197 | .gpio_type = 1, |
195 | .i2c_adc = 1, | 198 | .i2c_adc = 1, |
196 | .spi_dac = 1 } , | 199 | .spi_dac = 1 } , |
200 | /* New Audigy LS. Has a different DAC. */ | ||
201 | /* SB0570: | ||
202 | * CTRL:CA0106-DAT | ||
203 | * ADC: WM8775EDS | ||
204 | * DAC: WM8768GEDS | ||
205 | */ | ||
206 | { .serial = 0x10111102, | ||
207 | .name = "Audigy SE OEM [SB0570a]", | ||
208 | .gpio_type = 1, | ||
209 | .i2c_adc = 1, | ||
210 | .spi_dac = 1 } , | ||
197 | /* MSI K8N Diamond Motherboard with onboard SB Live 24bit without AC97 */ | 211 | /* MSI K8N Diamond Motherboard with onboard SB Live 24bit without AC97 */ |
198 | /* SB0438 | 212 | /* SB0438 |
199 | * CTRL:CA0106-DAT | 213 | * CTRL:CA0106-DAT |
@@ -1046,7 +1060,7 @@ static int snd_ca0106_free(struct snd_ca0106 *chip) | |||
1046 | 1060 | ||
1047 | // release the irq | 1061 | // release the irq |
1048 | if (chip->irq >= 0) | 1062 | if (chip->irq >= 0) |
1049 | free_irq(chip->irq, (void *)chip); | 1063 | free_irq(chip->irq, chip); |
1050 | pci_disable_device(chip->pci); | 1064 | pci_disable_device(chip->pci); |
1051 | kfree(chip); | 1065 | kfree(chip); |
1052 | return 0; | 1066 | return 0; |
@@ -1223,7 +1237,7 @@ static unsigned int i2c_adc_init[][2] = { | |||
1223 | { 0x15, ADC_MUX_LINEIN }, /* ADC Mixer control */ | 1237 | { 0x15, ADC_MUX_LINEIN }, /* ADC Mixer control */ |
1224 | }; | 1238 | }; |
1225 | 1239 | ||
1226 | static int __devinit snd_ca0106_create(struct snd_card *card, | 1240 | static int __devinit snd_ca0106_create(int dev, struct snd_card *card, |
1227 | struct pci_dev *pci, | 1241 | struct pci_dev *pci, |
1228 | struct snd_ca0106 **rchip) | 1242 | struct snd_ca0106 **rchip) |
1229 | { | 1243 | { |
@@ -1267,8 +1281,7 @@ static int __devinit snd_ca0106_create(struct snd_card *card, | |||
1267 | } | 1281 | } |
1268 | 1282 | ||
1269 | if (request_irq(pci->irq, snd_ca0106_interrupt, | 1283 | if (request_irq(pci->irq, snd_ca0106_interrupt, |
1270 | IRQF_DISABLED|IRQF_SHARED, "snd_ca0106", | 1284 | IRQF_SHARED, "snd_ca0106", chip)) { |
1271 | (void *)chip)) { | ||
1272 | snd_ca0106_free(chip); | 1285 | snd_ca0106_free(chip); |
1273 | printk(KERN_ERR "cannot grab irq\n"); | 1286 | printk(KERN_ERR "cannot grab irq\n"); |
1274 | return -EBUSY; | 1287 | return -EBUSY; |
@@ -1283,21 +1296,29 @@ static int __devinit snd_ca0106_create(struct snd_card *card, | |||
1283 | 1296 | ||
1284 | pci_set_master(pci); | 1297 | pci_set_master(pci); |
1285 | /* read revision & serial */ | 1298 | /* read revision & serial */ |
1286 | pci_read_config_byte(pci, PCI_REVISION_ID, (char *)&chip->revision); | 1299 | pci_read_config_byte(pci, PCI_REVISION_ID, &chip->revision); |
1287 | pci_read_config_dword(pci, PCI_SUBSYSTEM_VENDOR_ID, &chip->serial); | 1300 | pci_read_config_dword(pci, PCI_SUBSYSTEM_VENDOR_ID, &chip->serial); |
1288 | pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &chip->model); | 1301 | pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &chip->model); |
1289 | #if 1 | 1302 | #if 1 |
1290 | printk(KERN_INFO "Model %04x Rev %08x Serial %08x\n", chip->model, | 1303 | printk(KERN_INFO "snd-ca0106: Model %04x Rev %08x Serial %08x\n", chip->model, |
1291 | chip->revision, chip->serial); | 1304 | chip->revision, chip->serial); |
1292 | #endif | 1305 | #endif |
1293 | strcpy(card->driver, "CA0106"); | 1306 | strcpy(card->driver, "CA0106"); |
1294 | strcpy(card->shortname, "CA0106"); | 1307 | strcpy(card->shortname, "CA0106"); |
1295 | 1308 | ||
1296 | for (c = ca0106_chip_details; c->serial; c++) { | 1309 | for (c = ca0106_chip_details; c->serial; c++) { |
1297 | if (c->serial == chip->serial) | 1310 | if (subsystem[dev]) { |
1311 | if (c->serial == subsystem[dev]) | ||
1312 | break; | ||
1313 | } else if (c->serial == chip->serial) | ||
1298 | break; | 1314 | break; |
1299 | } | 1315 | } |
1300 | chip->details = c; | 1316 | chip->details = c; |
1317 | if (subsystem[dev]) { | ||
1318 | printk(KERN_INFO "snd-ca0106: Sound card name=%s, subsystem=0x%x. Forced to subsystem=0x%x\n", | ||
1319 | c->name, chip->serial, subsystem[dev]); | ||
1320 | } | ||
1321 | |||
1301 | sprintf(card->longname, "%s at 0x%lx irq %i", | 1322 | sprintf(card->longname, "%s at 0x%lx irq %i", |
1302 | c->name, chip->port, chip->irq); | 1323 | c->name, chip->port, chip->irq); |
1303 | 1324 | ||
@@ -1540,7 +1561,7 @@ static int __devinit snd_ca0106_probe(struct pci_dev *pci, | |||
1540 | if (card == NULL) | 1561 | if (card == NULL) |
1541 | return -ENOMEM; | 1562 | return -ENOMEM; |
1542 | 1563 | ||
1543 | if ((err = snd_ca0106_create(card, pci, &chip)) < 0) { | 1564 | if ((err = snd_ca0106_create(dev, card, pci, &chip)) < 0) { |
1544 | snd_card_free(card); | 1565 | snd_card_free(card); |
1545 | return err; | 1566 | return err; |
1546 | } | 1567 | } |
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c index 0093cd1f92db..71c58df4af28 100644 --- a/sound/pci/cmipci.c +++ b/sound/pci/cmipci.c | |||
@@ -2862,7 +2862,7 @@ static int __devinit snd_cmipci_create(struct snd_card *card, struct pci_dev *pc | |||
2862 | cm->iobase = pci_resource_start(pci, 0); | 2862 | cm->iobase = pci_resource_start(pci, 0); |
2863 | 2863 | ||
2864 | if (request_irq(pci->irq, snd_cmipci_interrupt, | 2864 | if (request_irq(pci->irq, snd_cmipci_interrupt, |
2865 | IRQF_DISABLED|IRQF_SHARED, card->driver, cm)) { | 2865 | IRQF_SHARED, card->driver, cm)) { |
2866 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2866 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2867 | snd_cmipci_free(cm); | 2867 | snd_cmipci_free(cm); |
2868 | return -EBUSY; | 2868 | return -EBUSY; |
diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c index 0905fa88129d..8e5519de7115 100644 --- a/sound/pci/cs4281.c +++ b/sound/pci/cs4281.c | |||
@@ -1391,7 +1391,7 @@ static int __devinit snd_cs4281_create(struct snd_card *card, | |||
1391 | return -ENOMEM; | 1391 | return -ENOMEM; |
1392 | } | 1392 | } |
1393 | 1393 | ||
1394 | if (request_irq(pci->irq, snd_cs4281_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1394 | if (request_irq(pci->irq, snd_cs4281_interrupt, IRQF_SHARED, |
1395 | "CS4281", chip)) { | 1395 | "CS4281", chip)) { |
1396 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1396 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1397 | snd_cs4281_free(chip); | 1397 | snd_cs4281_free(chip); |
diff --git a/sound/pci/cs46xx/cs46xx_lib.c b/sound/pci/cs46xx/cs46xx_lib.c index 2807b9756ef0..2ae539b195fd 100644 --- a/sound/pci/cs46xx/cs46xx_lib.c +++ b/sound/pci/cs46xx/cs46xx_lib.c | |||
@@ -3867,7 +3867,7 @@ int __devinit snd_cs46xx_create(struct snd_card *card, | |||
3867 | } | 3867 | } |
3868 | } | 3868 | } |
3869 | 3869 | ||
3870 | if (request_irq(pci->irq, snd_cs46xx_interrupt, IRQF_DISABLED|IRQF_SHARED, | 3870 | if (request_irq(pci->irq, snd_cs46xx_interrupt, IRQF_SHARED, |
3871 | "CS46XX", chip)) { | 3871 | "CS46XX", chip)) { |
3872 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 3872 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
3873 | snd_cs46xx_free(chip); | 3873 | snd_cs46xx_free(chip); |
diff --git a/sound/pci/cs5535audio/cs5535audio.c b/sound/pci/cs5535audio/cs5535audio.c index 2441238f2004..b8e75ef9c1e6 100644 --- a/sound/pci/cs5535audio/cs5535audio.c +++ b/sound/pci/cs5535audio/cs5535audio.c | |||
@@ -320,7 +320,7 @@ static int __devinit snd_cs5535audio_create(struct snd_card *card, | |||
320 | cs5535au->port = pci_resource_start(pci, 0); | 320 | cs5535au->port = pci_resource_start(pci, 0); |
321 | 321 | ||
322 | if (request_irq(pci->irq, snd_cs5535audio_interrupt, | 322 | if (request_irq(pci->irq, snd_cs5535audio_interrupt, |
323 | IRQF_DISABLED|IRQF_SHARED, "CS5535 Audio", cs5535au)) { | 323 | IRQF_SHARED, "CS5535 Audio", cs5535au)) { |
324 | snd_printk("unable to grab IRQ %d\n", pci->irq); | 324 | snd_printk("unable to grab IRQ %d\n", pci->irq); |
325 | err = -EBUSY; | 325 | err = -EBUSY; |
326 | goto sndfail; | 326 | goto sndfail; |
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index e5e88fe54de0..047e0b5bf15d 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c | |||
@@ -1872,7 +1872,7 @@ static int snd_echo_free(struct echoaudio *chip) | |||
1872 | DE_INIT(("Stopped.\n")); | 1872 | DE_INIT(("Stopped.\n")); |
1873 | 1873 | ||
1874 | if (chip->irq >= 0) | 1874 | if (chip->irq >= 0) |
1875 | free_irq(chip->irq, (void *)chip); | 1875 | free_irq(chip->irq, chip); |
1876 | 1876 | ||
1877 | if (chip->dsp_registers) | 1877 | if (chip->dsp_registers) |
1878 | iounmap(chip->dsp_registers); | 1878 | iounmap(chip->dsp_registers); |
@@ -1950,8 +1950,8 @@ static __devinit int snd_echo_create(struct snd_card *card, | |||
1950 | chip->dsp_registers = (volatile u32 __iomem *) | 1950 | chip->dsp_registers = (volatile u32 __iomem *) |
1951 | ioremap_nocache(chip->dsp_registers_phys, sz); | 1951 | ioremap_nocache(chip->dsp_registers_phys, sz); |
1952 | 1952 | ||
1953 | if (request_irq(pci->irq, snd_echo_interrupt, IRQF_DISABLED | IRQF_SHARED, | 1953 | if (request_irq(pci->irq, snd_echo_interrupt, IRQF_SHARED, |
1954 | ECHOCARD_NAME, (void *)chip)) { | 1954 | ECHOCARD_NAME, chip)) { |
1955 | snd_echo_free(chip); | 1955 | snd_echo_free(chip); |
1956 | snd_printk(KERN_ERR "cannot grab irq\n"); | 1956 | snd_printk(KERN_ERR "cannot grab irq\n"); |
1957 | return -EBUSY; | 1957 | return -EBUSY; |
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index 8bc4ffa6220d..972ec40d8166 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
@@ -759,7 +759,7 @@ static int snd_emu10k1_free(struct snd_emu10k1 *emu) | |||
759 | free_pm_buffer(emu); | 759 | free_pm_buffer(emu); |
760 | #endif | 760 | #endif |
761 | if (emu->irq >= 0) | 761 | if (emu->irq >= 0) |
762 | free_irq(emu->irq, (void *)emu); | 762 | free_irq(emu->irq, emu); |
763 | if (emu->port) | 763 | if (emu->port) |
764 | pci_release_regions(emu->pci); | 764 | pci_release_regions(emu->pci); |
765 | if (emu->card_capabilities->ca0151_chip) /* P16V */ | 765 | if (emu->card_capabilities->ca0151_chip) /* P16V */ |
@@ -1246,7 +1246,8 @@ int __devinit snd_emu10k1_create(struct snd_card *card, | |||
1246 | } | 1246 | } |
1247 | emu->port = pci_resource_start(pci, 0); | 1247 | emu->port = pci_resource_start(pci, 0); |
1248 | 1248 | ||
1249 | if (request_irq(pci->irq, snd_emu10k1_interrupt, IRQF_DISABLED|IRQF_SHARED, "EMU10K1", (void *)emu)) { | 1249 | if (request_irq(pci->irq, snd_emu10k1_interrupt, IRQF_SHARED, |
1250 | "EMU10K1", emu)) { | ||
1250 | err = -EBUSY; | 1251 | err = -EBUSY; |
1251 | goto error; | 1252 | goto error; |
1252 | } | 1253 | } |
diff --git a/sound/pci/emu10k1/emu10k1x.c b/sound/pci/emu10k1/emu10k1x.c index c46905a11175..2199b42a6019 100644 --- a/sound/pci/emu10k1/emu10k1x.c +++ b/sound/pci/emu10k1/emu10k1x.c | |||
@@ -235,7 +235,7 @@ struct emu10k1x { | |||
235 | struct resource *res_port; | 235 | struct resource *res_port; |
236 | int irq; | 236 | int irq; |
237 | 237 | ||
238 | unsigned int revision; /* chip revision */ | 238 | unsigned char revision; /* chip revision */ |
239 | unsigned int serial; /* serial number */ | 239 | unsigned int serial; /* serial number */ |
240 | unsigned short model; /* subsystem id */ | 240 | unsigned short model; /* subsystem id */ |
241 | 241 | ||
@@ -760,7 +760,7 @@ static int snd_emu10k1x_free(struct emu10k1x *chip) | |||
760 | 760 | ||
761 | // release the irq | 761 | // release the irq |
762 | if (chip->irq >= 0) | 762 | if (chip->irq >= 0) |
763 | free_irq(chip->irq, (void *)chip); | 763 | free_irq(chip->irq, chip); |
764 | 764 | ||
765 | // release the DMA | 765 | // release the DMA |
766 | if (chip->dma_buffer.area) { | 766 | if (chip->dma_buffer.area) { |
@@ -927,8 +927,7 @@ static int __devinit snd_emu10k1x_create(struct snd_card *card, | |||
927 | } | 927 | } |
928 | 928 | ||
929 | if (request_irq(pci->irq, snd_emu10k1x_interrupt, | 929 | if (request_irq(pci->irq, snd_emu10k1x_interrupt, |
930 | IRQF_DISABLED|IRQF_SHARED, "EMU10K1X", | 930 | IRQF_SHARED, "EMU10K1X", chip)) { |
931 | (void *)chip)) { | ||
932 | snd_printk(KERN_ERR "emu10k1x: cannot grab irq %d\n", pci->irq); | 931 | snd_printk(KERN_ERR "emu10k1x: cannot grab irq %d\n", pci->irq); |
933 | snd_emu10k1x_free(chip); | 932 | snd_emu10k1x_free(chip); |
934 | return -EBUSY; | 933 | return -EBUSY; |
@@ -943,7 +942,7 @@ static int __devinit snd_emu10k1x_create(struct snd_card *card, | |||
943 | 942 | ||
944 | pci_set_master(pci); | 943 | pci_set_master(pci); |
945 | /* read revision & serial */ | 944 | /* read revision & serial */ |
946 | pci_read_config_byte(pci, PCI_REVISION_ID, (char *)&chip->revision); | 945 | pci_read_config_byte(pci, PCI_REVISION_ID, &chip->revision); |
947 | pci_read_config_dword(pci, PCI_SUBSYSTEM_VENDOR_ID, &chip->serial); | 946 | pci_read_config_dword(pci, PCI_SUBSYSTEM_VENDOR_ID, &chip->serial); |
948 | pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &chip->model); | 947 | pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &chip->model); |
949 | snd_printk(KERN_INFO "Model %04x Rev %08x Serial %08x\n", chip->model, | 948 | snd_printk(KERN_INFO "Model %04x Rev %08x Serial %08x\n", chip->model, |
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c index d2a811f222c9..a84f6b21024f 100644 --- a/sound/pci/ens1370.c +++ b/sound/pci/ens1370.c | |||
@@ -2141,7 +2141,7 @@ static int __devinit snd_ensoniq_create(struct snd_card *card, | |||
2141 | return err; | 2141 | return err; |
2142 | } | 2142 | } |
2143 | ensoniq->port = pci_resource_start(pci, 0); | 2143 | ensoniq->port = pci_resource_start(pci, 0); |
2144 | if (request_irq(pci->irq, snd_audiopci_interrupt, IRQF_DISABLED|IRQF_SHARED, | 2144 | if (request_irq(pci->irq, snd_audiopci_interrupt, IRQF_SHARED, |
2145 | "Ensoniq AudioPCI", ensoniq)) { | 2145 | "Ensoniq AudioPCI", ensoniq)) { |
2146 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2146 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2147 | snd_ensoniq_free(ensoniq); | 2147 | snd_ensoniq_free(ensoniq); |
diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c index 1a8d36df4b5d..66ac26c5a240 100644 --- a/sound/pci/es1938.c +++ b/sound/pci/es1938.c | |||
@@ -1508,7 +1508,7 @@ static int es1938_resume(struct pci_dev *pci) | |||
1508 | } | 1508 | } |
1509 | 1509 | ||
1510 | if (request_irq(pci->irq, snd_es1938_interrupt, | 1510 | if (request_irq(pci->irq, snd_es1938_interrupt, |
1511 | IRQF_DISABLED|IRQF_SHARED, "ES1938", chip)) { | 1511 | IRQF_SHARED, "ES1938", chip)) { |
1512 | printk(KERN_ERR "es1938: unable to grab IRQ %d, " | 1512 | printk(KERN_ERR "es1938: unable to grab IRQ %d, " |
1513 | "disabling device\n", pci->irq); | 1513 | "disabling device\n", pci->irq); |
1514 | snd_card_disconnect(card); | 1514 | snd_card_disconnect(card); |
@@ -1631,7 +1631,7 @@ static int __devinit snd_es1938_create(struct snd_card *card, | |||
1631 | chip->vc_port = pci_resource_start(pci, 2); | 1631 | chip->vc_port = pci_resource_start(pci, 2); |
1632 | chip->mpu_port = pci_resource_start(pci, 3); | 1632 | chip->mpu_port = pci_resource_start(pci, 3); |
1633 | chip->game_port = pci_resource_start(pci, 4); | 1633 | chip->game_port = pci_resource_start(pci, 4); |
1634 | if (request_irq(pci->irq, snd_es1938_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1634 | if (request_irq(pci->irq, snd_es1938_interrupt, IRQF_SHARED, |
1635 | "ES1938", chip)) { | 1635 | "ES1938", chip)) { |
1636 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1636 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1637 | snd_es1938_free(chip); | 1637 | snd_es1938_free(chip); |
diff --git a/sound/pci/es1968.c b/sound/pci/es1968.c index 092da53e1464..dc84c189b05f 100644 --- a/sound/pci/es1968.c +++ b/sound/pci/es1968.c | |||
@@ -1337,7 +1337,7 @@ static struct esm_memory *snd_es1968_new_memory(struct es1968 *chip, int size) | |||
1337 | struct esm_memory *buf; | 1337 | struct esm_memory *buf; |
1338 | struct list_head *p; | 1338 | struct list_head *p; |
1339 | 1339 | ||
1340 | size = ((size + ESM_MEM_ALIGN - 1) / ESM_MEM_ALIGN) * ESM_MEM_ALIGN; | 1340 | size = ALIGN(size, ESM_MEM_ALIGN); |
1341 | mutex_lock(&chip->memory_mutex); | 1341 | mutex_lock(&chip->memory_mutex); |
1342 | list_for_each(p, &chip->buf_list) { | 1342 | list_for_each(p, &chip->buf_list) { |
1343 | buf = list_entry(p, struct esm_memory, list); | 1343 | buf = list_entry(p, struct esm_memory, list); |
@@ -2462,7 +2462,7 @@ static int snd_es1968_free(struct es1968 *chip) | |||
2462 | } | 2462 | } |
2463 | 2463 | ||
2464 | if (chip->irq >= 0) | 2464 | if (chip->irq >= 0) |
2465 | free_irq(chip->irq, (void *)chip); | 2465 | free_irq(chip->irq, chip); |
2466 | snd_es1968_free_gameport(chip); | 2466 | snd_es1968_free_gameport(chip); |
2467 | chip->master_switch = NULL; | 2467 | chip->master_switch = NULL; |
2468 | chip->master_volume = NULL; | 2468 | chip->master_volume = NULL; |
@@ -2552,8 +2552,8 @@ static int __devinit snd_es1968_create(struct snd_card *card, | |||
2552 | return err; | 2552 | return err; |
2553 | } | 2553 | } |
2554 | chip->io_port = pci_resource_start(pci, 0); | 2554 | chip->io_port = pci_resource_start(pci, 0); |
2555 | if (request_irq(pci->irq, snd_es1968_interrupt, IRQF_DISABLED|IRQF_SHARED, | 2555 | if (request_irq(pci->irq, snd_es1968_interrupt, IRQF_SHARED, |
2556 | "ESS Maestro", (void*)chip)) { | 2556 | "ESS Maestro", chip)) { |
2557 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2557 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2558 | snd_es1968_free(chip); | 2558 | snd_es1968_free(chip); |
2559 | return -EBUSY; | 2559 | return -EBUSY; |
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c index 77e3d5c18302..b7b361ce3a93 100644 --- a/sound/pci/fm801.c +++ b/sound/pci/fm801.c | |||
@@ -1395,7 +1395,7 @@ static int __devinit snd_fm801_create(struct snd_card *card, | |||
1395 | } | 1395 | } |
1396 | chip->port = pci_resource_start(pci, 0); | 1396 | chip->port = pci_resource_start(pci, 0); |
1397 | if ((tea575x_tuner & 0x0010) == 0) { | 1397 | if ((tea575x_tuner & 0x0010) == 0) { |
1398 | if (request_irq(pci->irq, snd_fm801_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1398 | if (request_irq(pci->irq, snd_fm801_interrupt, IRQF_SHARED, |
1399 | "FM801", chip)) { | 1399 | "FM801", chip)) { |
1400 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", chip->irq); | 1400 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", chip->irq); |
1401 | snd_fm801_free(chip); | 1401 | snd_fm801_free(chip); |
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 71482c15a852..18bbc87e376f 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -1367,9 +1367,6 @@ static struct hda_rate_tbl rate_bits[] = { | |||
1367 | { 176400, SNDRV_PCM_RATE_176400, 0x5800 },/* 4 x 44 */ | 1367 | { 176400, SNDRV_PCM_RATE_176400, 0x5800 },/* 4 x 44 */ |
1368 | { 192000, SNDRV_PCM_RATE_192000, 0x1800 }, /* 4 x 48 */ | 1368 | { 192000, SNDRV_PCM_RATE_192000, 0x1800 }, /* 4 x 48 */ |
1369 | 1369 | ||
1370 | /* not autodetected value */ | ||
1371 | { 9600, SNDRV_PCM_RATE_KNOT, 0x0400 }, /* 1/5 x 48 */ | ||
1372 | |||
1373 | { 0 } /* terminator */ | 1370 | { 0 } /* terminator */ |
1374 | }; | 1371 | }; |
1375 | 1372 | ||
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index e35cfd326df2..9fd34f85cad5 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -1380,7 +1380,8 @@ static int __devinit azx_init_stream(struct azx *chip) | |||
1380 | 1380 | ||
1381 | static int azx_acquire_irq(struct azx *chip, int do_disconnect) | 1381 | static int azx_acquire_irq(struct azx *chip, int do_disconnect) |
1382 | { | 1382 | { |
1383 | if (request_irq(chip->pci->irq, azx_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1383 | if (request_irq(chip->pci->irq, azx_interrupt, |
1384 | chip->msi ? 0 : IRQF_SHARED, | ||
1384 | "HDA Intel", chip)) { | 1385 | "HDA Intel", chip)) { |
1385 | printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " | 1386 | printk(KERN_ERR "hda-intel: unable to grab IRQ %d, " |
1386 | "disabling device\n", chip->pci->irq); | 1387 | "disabling device\n", chip->pci->irq); |
diff --git a/sound/pci/hda/hda_proc.c b/sound/pci/hda/hda_proc.c index d737f17695a3..17df4d0fe135 100644 --- a/sound/pci/hda/hda_proc.c +++ b/sound/pci/hda/hda_proc.c | |||
@@ -45,7 +45,7 @@ static const char *get_wid_type_name(unsigned int wid_value) | |||
45 | if (names[wid_value]) | 45 | if (names[wid_value]) |
46 | return names[wid_value]; | 46 | return names[wid_value]; |
47 | else | 47 | else |
48 | return "UNKOWN Widget"; | 48 | return "UNKNOWN Widget"; |
49 | } | 49 | } |
50 | 50 | ||
51 | static void print_amp_caps(struct snd_info_buffer *buffer, | 51 | static void print_amp_caps(struct snd_info_buffer *buffer, |
@@ -88,6 +88,48 @@ static void print_amp_vals(struct snd_info_buffer *buffer, | |||
88 | snd_iprintf(buffer, "\n"); | 88 | snd_iprintf(buffer, "\n"); |
89 | } | 89 | } |
90 | 90 | ||
91 | static void print_pcm_rates(struct snd_info_buffer *buffer, unsigned int pcm) | ||
92 | { | ||
93 | static unsigned int rates[] = { | ||
94 | 8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200, | ||
95 | 96000, 176400, 192000, 384000 | ||
96 | }; | ||
97 | int i; | ||
98 | |||
99 | pcm &= AC_SUPPCM_RATES; | ||
100 | snd_iprintf(buffer, " rates [0x%x]:", pcm); | ||
101 | for (i = 0; i < ARRAY_SIZE(rates); i++) | ||
102 | if (pcm & (1 << i)) | ||
103 | snd_iprintf(buffer, " %d", rates[i]); | ||
104 | snd_iprintf(buffer, "\n"); | ||
105 | } | ||
106 | |||
107 | static void print_pcm_bits(struct snd_info_buffer *buffer, unsigned int pcm) | ||
108 | { | ||
109 | static unsigned int bits[] = { 8, 16, 20, 24, 32 }; | ||
110 | int i; | ||
111 | |||
112 | pcm = (pcm >> 16) & 0xff; | ||
113 | snd_iprintf(buffer, " bits [0x%x]:", pcm); | ||
114 | for (i = 0; i < ARRAY_SIZE(bits); i++) | ||
115 | if (pcm & (1 << i)) | ||
116 | snd_iprintf(buffer, " %d", bits[i]); | ||
117 | snd_iprintf(buffer, "\n"); | ||
118 | } | ||
119 | |||
120 | static void print_pcm_formats(struct snd_info_buffer *buffer, | ||
121 | unsigned int streams) | ||
122 | { | ||
123 | snd_iprintf(buffer, " formats [0x%x]:", streams & 0xf); | ||
124 | if (streams & AC_SUPFMT_PCM) | ||
125 | snd_iprintf(buffer, " PCM"); | ||
126 | if (streams & AC_SUPFMT_FLOAT32) | ||
127 | snd_iprintf(buffer, " FLOAT"); | ||
128 | if (streams & AC_SUPFMT_AC3) | ||
129 | snd_iprintf(buffer, " AC3"); | ||
130 | snd_iprintf(buffer, "\n"); | ||
131 | } | ||
132 | |||
91 | static void print_pcm_caps(struct snd_info_buffer *buffer, | 133 | static void print_pcm_caps(struct snd_info_buffer *buffer, |
92 | struct hda_codec *codec, hda_nid_t nid) | 134 | struct hda_codec *codec, hda_nid_t nid) |
93 | { | 135 | { |
@@ -97,8 +139,9 @@ static void print_pcm_caps(struct snd_info_buffer *buffer, | |||
97 | snd_iprintf(buffer, "N/A\n"); | 139 | snd_iprintf(buffer, "N/A\n"); |
98 | return; | 140 | return; |
99 | } | 141 | } |
100 | snd_iprintf(buffer, "rates 0x%03x, bits 0x%02x, types 0x%x\n", | 142 | print_pcm_rates(buffer, pcm); |
101 | pcm & AC_SUPPCM_RATES, (pcm >> 16) & 0xff, stream & 0xf); | 143 | print_pcm_bits(buffer, pcm); |
144 | print_pcm_formats(buffer, stream); | ||
102 | } | 145 | } |
103 | 146 | ||
104 | static const char *get_jack_location(u32 cfg) | 147 | static const char *get_jack_location(u32 cfg) |
@@ -210,7 +253,7 @@ static void print_codec_info(struct snd_info_entry *entry, struct snd_info_buffe | |||
210 | snd_iprintf(buffer, "Revision Id: 0x%x\n", codec->revision_id); | 253 | snd_iprintf(buffer, "Revision Id: 0x%x\n", codec->revision_id); |
211 | if (! codec->afg) | 254 | if (! codec->afg) |
212 | return; | 255 | return; |
213 | snd_iprintf(buffer, "Default PCM: "); | 256 | snd_iprintf(buffer, "Default PCM:\n"); |
214 | print_pcm_caps(buffer, codec, codec->afg); | 257 | print_pcm_caps(buffer, codec, codec->afg); |
215 | snd_iprintf(buffer, "Default Amp-In caps: "); | 258 | snd_iprintf(buffer, "Default Amp-In caps: "); |
216 | print_amp_caps(buffer, codec, codec->afg, HDA_INPUT); | 259 | print_amp_caps(buffer, codec, codec->afg, HDA_INPUT); |
@@ -278,7 +321,7 @@ static void print_codec_info(struct snd_info_entry *entry, struct snd_info_buffe | |||
278 | 321 | ||
279 | if ((wid_type == AC_WID_AUD_OUT || wid_type == AC_WID_AUD_IN) && | 322 | if ((wid_type == AC_WID_AUD_OUT || wid_type == AC_WID_AUD_IN) && |
280 | (wid_caps & AC_WCAP_FORMAT_OVRD)) { | 323 | (wid_caps & AC_WCAP_FORMAT_OVRD)) { |
281 | snd_iprintf(buffer, " PCM: "); | 324 | snd_iprintf(buffer, " PCM:\n"); |
282 | print_pcm_caps(buffer, codec, nid); | 325 | print_pcm_caps(buffer, codec, nid); |
283 | } | 326 | } |
284 | 327 | ||
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index edd22dec8286..076365bc10e9 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -794,6 +794,8 @@ static struct hda_board_config ad1986a_cfg_tbl[] = { | |||
794 | { .modelname = "3stack", .config = AD1986A_3STACK }, | 794 | { .modelname = "3stack", .config = AD1986A_3STACK }, |
795 | { .pci_subvendor = 0x10de, .pci_subdevice = 0xcb84, | 795 | { .pci_subvendor = 0x10de, .pci_subdevice = 0xcb84, |
796 | .config = AD1986A_3STACK }, /* ASUS A8N-VM CSM */ | 796 | .config = AD1986A_3STACK }, /* ASUS A8N-VM CSM */ |
797 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x817f, | ||
798 | .config = AD1986A_3STACK }, /* ASUS P5P-L2 */ | ||
797 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x81b3, | 799 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x81b3, |
798 | .config = AD1986A_3STACK }, /* ASUS P5RD2-VM / P5GPL-X SE */ | 800 | .config = AD1986A_3STACK }, /* ASUS P5RD2-VM / P5GPL-X SE */ |
799 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x81cb, | 801 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x81cb, |
@@ -811,7 +813,7 @@ static struct hda_board_config ad1986a_cfg_tbl[] = { | |||
811 | { .pci_subvendor = 0x144d, .pci_subdevice = 0xc024, | 813 | { .pci_subvendor = 0x144d, .pci_subdevice = 0xc024, |
812 | .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */ | 814 | .config = AD1986A_LAPTOP_EAPD }, /* Samsung R65-T2300 Charis */ |
813 | { .pci_subvendor = 0x144d, .pci_subdevice = 0xc026, | 815 | { .pci_subvendor = 0x144d, .pci_subdevice = 0xc026, |
814 | .config = AD1986A_LAPTOP_EAPD }, /* Samsung X10-T2300 Culesa */ | 816 | .config = AD1986A_LAPTOP_EAPD }, /* Samsung X11-T2300 Culesa */ |
815 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1153, | 817 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1153, |
816 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS M9 */ | 818 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS M9 */ |
817 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213, | 819 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1213, |
@@ -822,6 +824,8 @@ static struct hda_board_config ad1986a_cfg_tbl[] = { | |||
822 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5F */ | 824 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS U5F */ |
823 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1297, | 825 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x1297, |
824 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS Z62F */ | 826 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS Z62F */ |
827 | { .pci_subvendor = 0x1043, .pci_subdevice = 0x12b3, | ||
828 | .config = AD1986A_LAPTOP_EAPD }, /* ASUS V1j */ | ||
825 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af, | 829 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x30af, |
826 | .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */ | 830 | .config = AD1986A_LAPTOP_EAPD }, /* HP Compaq Presario B2800 */ |
827 | { .pci_subvendor = 0x17aa, .pci_subdevice = 0x2066, | 831 | { .pci_subvendor = 0x17aa, .pci_subdevice = 0x2066, |
@@ -1640,7 +1644,7 @@ static int ad198x_ch_mode_put(struct snd_kcontrol *kcontrol, | |||
1640 | int err = snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, | 1644 | int err = snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, |
1641 | spec->num_channel_mode, | 1645 | spec->num_channel_mode, |
1642 | &spec->multiout.max_channels); | 1646 | &spec->multiout.max_channels); |
1643 | if (! err && spec->need_dac_fix) | 1647 | if (err >= 0 && spec->need_dac_fix) |
1644 | spec->multiout.num_dacs = spec->multiout.max_channels / 2; | 1648 | spec->multiout.num_dacs = spec->multiout.max_channels / 2; |
1645 | return err; | 1649 | return err; |
1646 | } | 1650 | } |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index fb961448db19..29e4c48151bc 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -271,7 +271,7 @@ static int alc_ch_mode_put(struct snd_kcontrol *kcontrol, | |||
271 | int err = snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, | 271 | int err = snd_hda_ch_mode_put(codec, ucontrol, spec->channel_mode, |
272 | spec->num_channel_mode, | 272 | spec->num_channel_mode, |
273 | &spec->multiout.max_channels); | 273 | &spec->multiout.max_channels); |
274 | if (! err && spec->need_dac_fix) | 274 | if (err >= 0 && spec->need_dac_fix) |
275 | spec->multiout.num_dacs = spec->multiout.max_channels / 2; | 275 | spec->multiout.num_dacs = spec->multiout.max_channels / 2; |
276 | return err; | 276 | return err; |
277 | } | 277 | } |
@@ -5872,6 +5872,8 @@ static struct hda_board_config alc262_cfg_tbl[] = { | |||
5872 | { .modelname = "hp-bpc", .config = ALC262_HP_BPC }, | 5872 | { .modelname = "hp-bpc", .config = ALC262_HP_BPC }, |
5873 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x280c, | 5873 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x280c, |
5874 | .config = ALC262_HP_BPC }, /* xw4400 */ | 5874 | .config = ALC262_HP_BPC }, /* xw4400 */ |
5875 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x2801, | ||
5876 | .config = ALC262_HP_BPC }, /* q965 */ | ||
5875 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, | 5877 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3014, |
5876 | .config = ALC262_HP_BPC }, /* xw6400 */ | 5878 | .config = ALC262_HP_BPC }, /* xw6400 */ |
5877 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3015, | 5879 | { .pci_subvendor = 0x103c, .pci_subdevice = 0x3015, |
diff --git a/sound/pci/hda/patch_si3054.c b/sound/pci/hda/patch_si3054.c index cc87dff1eb56..ed5e45e35963 100644 --- a/sound/pci/hda/patch_si3054.c +++ b/sound/pci/hda/patch_si3054.c | |||
@@ -243,7 +243,8 @@ static int si3054_init(struct hda_codec *codec) | |||
243 | 243 | ||
244 | if((val&SI3054_MEI_READY) != SI3054_MEI_READY) { | 244 | if((val&SI3054_MEI_READY) != SI3054_MEI_READY) { |
245 | snd_printk(KERN_ERR "si3054: cannot initialize. EXT MID = %04x\n", val); | 245 | snd_printk(KERN_ERR "si3054: cannot initialize. EXT MID = %04x\n", val); |
246 | return -EACCES; | 246 | /* let's pray that this is no fatal error */ |
247 | /* return -EACCES; */ | ||
247 | } | 248 | } |
248 | 249 | ||
249 | SET_REG(codec, SI3054_GPIO_POLARITY, 0xffff); | 250 | SET_REG(codec, SI3054_GPIO_POLARITY, 0xffff); |
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c index 8a576b78bee5..8ba31cfb9045 100644 --- a/sound/pci/ice1712/ice1712.c +++ b/sound/pci/ice1712/ice1712.c | |||
@@ -2614,7 +2614,7 @@ static int __devinit snd_ice1712_create(struct snd_card *card, | |||
2614 | ice->dmapath_port = pci_resource_start(pci, 2); | 2614 | ice->dmapath_port = pci_resource_start(pci, 2); |
2615 | ice->profi_port = pci_resource_start(pci, 3); | 2615 | ice->profi_port = pci_resource_start(pci, 3); |
2616 | 2616 | ||
2617 | if (request_irq(pci->irq, snd_ice1712_interrupt, IRQF_DISABLED|IRQF_SHARED, | 2617 | if (request_irq(pci->irq, snd_ice1712_interrupt, IRQF_SHARED, |
2618 | "ICE1712", ice)) { | 2618 | "ICE1712", ice)) { |
2619 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2619 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2620 | snd_ice1712_free(ice); | 2620 | snd_ice1712_free(ice); |
diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c index e9cbfdf37059..3e3a102e6c34 100644 --- a/sound/pci/ice1712/ice1724.c +++ b/sound/pci/ice1712/ice1724.c | |||
@@ -2253,7 +2253,7 @@ static int __devinit snd_vt1724_create(struct snd_card *card, | |||
2253 | ice->profi_port = pci_resource_start(pci, 1); | 2253 | ice->profi_port = pci_resource_start(pci, 1); |
2254 | 2254 | ||
2255 | if (request_irq(pci->irq, snd_vt1724_interrupt, | 2255 | if (request_irq(pci->irq, snd_vt1724_interrupt, |
2256 | IRQF_DISABLED|IRQF_SHARED, "ICE1724", ice)) { | 2256 | IRQF_SHARED, "ICE1724", ice)) { |
2257 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2257 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2258 | snd_vt1724_free(ice); | 2258 | snd_vt1724_free(ice); |
2259 | return -EIO; | 2259 | return -EIO; |
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 9c1bce7afa86..30aaa6092a84 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
@@ -2509,7 +2509,7 @@ static int intel8x0_resume(struct pci_dev *pci) | |||
2509 | } | 2509 | } |
2510 | pci_set_master(pci); | 2510 | pci_set_master(pci); |
2511 | if (request_irq(pci->irq, snd_intel8x0_interrupt, | 2511 | if (request_irq(pci->irq, snd_intel8x0_interrupt, |
2512 | IRQF_DISABLED|IRQF_SHARED, card->shortname, chip)) { | 2512 | IRQF_SHARED, card->shortname, chip)) { |
2513 | printk(KERN_ERR "intel8x0: unable to grab IRQ %d, " | 2513 | printk(KERN_ERR "intel8x0: unable to grab IRQ %d, " |
2514 | "disabling device\n", pci->irq); | 2514 | "disabling device\n", pci->irq); |
2515 | snd_card_disconnect(card); | 2515 | snd_card_disconnect(card); |
@@ -2887,7 +2887,7 @@ static int __devinit snd_intel8x0_create(struct snd_card *card, | |||
2887 | 2887 | ||
2888 | /* request irq after initializaing int_sta_mask, etc */ | 2888 | /* request irq after initializaing int_sta_mask, etc */ |
2889 | if (request_irq(pci->irq, snd_intel8x0_interrupt, | 2889 | if (request_irq(pci->irq, snd_intel8x0_interrupt, |
2890 | IRQF_DISABLED|IRQF_SHARED, card->shortname, chip)) { | 2890 | IRQF_SHARED, card->shortname, chip)) { |
2891 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2891 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2892 | snd_intel8x0_free(chip); | 2892 | snd_intel8x0_free(chip); |
2893 | return -EBUSY; | 2893 | return -EBUSY; |
diff --git a/sound/pci/intel8x0m.c b/sound/pci/intel8x0m.c index bd467c501123..09dcf923b547 100644 --- a/sound/pci/intel8x0m.c +++ b/sound/pci/intel8x0m.c | |||
@@ -1071,7 +1071,7 @@ static int intel8x0m_resume(struct pci_dev *pci) | |||
1071 | } | 1071 | } |
1072 | pci_set_master(pci); | 1072 | pci_set_master(pci); |
1073 | if (request_irq(pci->irq, snd_intel8x0_interrupt, | 1073 | if (request_irq(pci->irq, snd_intel8x0_interrupt, |
1074 | IRQF_DISABLED|IRQF_SHARED, card->shortname, chip)) { | 1074 | IRQF_SHARED, card->shortname, chip)) { |
1075 | printk(KERN_ERR "intel8x0m: unable to grab IRQ %d, " | 1075 | printk(KERN_ERR "intel8x0m: unable to grab IRQ %d, " |
1076 | "disabling device\n", pci->irq); | 1076 | "disabling device\n", pci->irq); |
1077 | snd_card_disconnect(card); | 1077 | snd_card_disconnect(card); |
@@ -1205,7 +1205,7 @@ static int __devinit snd_intel8x0m_create(struct snd_card *card, | |||
1205 | } | 1205 | } |
1206 | 1206 | ||
1207 | port_inited: | 1207 | port_inited: |
1208 | if (request_irq(pci->irq, snd_intel8x0_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1208 | if (request_irq(pci->irq, snd_intel8x0_interrupt, IRQF_SHARED, |
1209 | card->shortname, chip)) { | 1209 | card->shortname, chip)) { |
1210 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1210 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1211 | snd_intel8x0_free(chip); | 1211 | snd_intel8x0_free(chip); |
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c index fa8cd8cecc21..345eefeedb39 100644 --- a/sound/pci/korg1212/korg1212.c +++ b/sound/pci/korg1212/korg1212.c | |||
@@ -2233,7 +2233,7 @@ static int __devinit snd_korg1212_create(struct snd_card *card, struct pci_dev * | |||
2233 | } | 2233 | } |
2234 | 2234 | ||
2235 | err = request_irq(pci->irq, snd_korg1212_interrupt, | 2235 | err = request_irq(pci->irq, snd_korg1212_interrupt, |
2236 | IRQF_DISABLED|IRQF_SHARED, | 2236 | IRQF_SHARED, |
2237 | "korg1212", korg1212); | 2237 | "korg1212", korg1212); |
2238 | 2238 | ||
2239 | if (err) { | 2239 | if (err) { |
diff --git a/sound/pci/maestro3.c b/sound/pci/maestro3.c index 8cab342bbaaf..6efe6d5ade1e 100644 --- a/sound/pci/maestro3.c +++ b/sound/pci/maestro3.c | |||
@@ -2377,7 +2377,7 @@ static int __devinit snd_m3_assp_client_init(struct snd_m3 *chip, struct m3_dma | |||
2377 | * shifted list address is aligned. | 2377 | * shifted list address is aligned. |
2378 | * list address = (mem address >> 1) >> 7; | 2378 | * list address = (mem address >> 1) >> 7; |
2379 | */ | 2379 | */ |
2380 | data_bytes = (data_bytes + 255) & ~255; | 2380 | data_bytes = ALIGN(data_bytes, 256); |
2381 | address = 0x1100 + ((data_bytes/2) * index); | 2381 | address = 0x1100 + ((data_bytes/2) * index); |
2382 | 2382 | ||
2383 | if ((address + (data_bytes/2)) >= 0x1c00) { | 2383 | if ((address + (data_bytes/2)) >= 0x1c00) { |
@@ -2762,7 +2762,7 @@ snd_m3_create(struct snd_card *card, struct pci_dev *pci, | |||
2762 | 2762 | ||
2763 | tasklet_init(&chip->hwvol_tq, snd_m3_update_hw_volume, (unsigned long)chip); | 2763 | tasklet_init(&chip->hwvol_tq, snd_m3_update_hw_volume, (unsigned long)chip); |
2764 | 2764 | ||
2765 | if (request_irq(pci->irq, snd_m3_interrupt, IRQF_DISABLED|IRQF_SHARED, | 2765 | if (request_irq(pci->irq, snd_m3_interrupt, IRQF_SHARED, |
2766 | card->driver, chip)) { | 2766 | card->driver, chip)) { |
2767 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2767 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2768 | snd_m3_free(chip); | 2768 | snd_m3_free(chip); |
diff --git a/sound/pci/mixart/mixart.c b/sound/pci/mixart/mixart.c index 216aee5f93e7..21386da3bc86 100644 --- a/sound/pci/mixart/mixart.c +++ b/sound/pci/mixart/mixart.c | |||
@@ -1066,7 +1066,7 @@ static int snd_mixart_free(struct mixart_mgr *mgr) | |||
1066 | 1066 | ||
1067 | /* release irq */ | 1067 | /* release irq */ |
1068 | if (mgr->irq >= 0) | 1068 | if (mgr->irq >= 0) |
1069 | free_irq(mgr->irq, (void *)mgr); | 1069 | free_irq(mgr->irq, mgr); |
1070 | 1070 | ||
1071 | /* reset board if some firmware was loaded */ | 1071 | /* reset board if some firmware was loaded */ |
1072 | if(mgr->dsp_loaded) { | 1072 | if(mgr->dsp_loaded) { |
@@ -1319,7 +1319,8 @@ static int __devinit snd_mixart_probe(struct pci_dev *pci, | |||
1319 | pci_resource_len(pci, i)); | 1319 | pci_resource_len(pci, i)); |
1320 | } | 1320 | } |
1321 | 1321 | ||
1322 | if (request_irq(pci->irq, snd_mixart_interrupt, IRQF_DISABLED|IRQF_SHARED, CARD_NAME, (void *)mgr)) { | 1322 | if (request_irq(pci->irq, snd_mixart_interrupt, IRQF_SHARED, |
1323 | CARD_NAME, mgr)) { | ||
1323 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1324 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1324 | snd_mixart_free(mgr); | 1325 | snd_mixart_free(mgr); |
1325 | return -EBUSY; | 1326 | return -EBUSY; |
diff --git a/sound/pci/nm256/nm256.c b/sound/pci/nm256/nm256.c index 945d21bf187e..879e31a9f9c6 100644 --- a/sound/pci/nm256/nm256.c +++ b/sound/pci/nm256/nm256.c | |||
@@ -465,7 +465,7 @@ static int snd_nm256_acquire_irq(struct nm256 *chip) | |||
465 | { | 465 | { |
466 | mutex_lock(&chip->irq_mutex); | 466 | mutex_lock(&chip->irq_mutex); |
467 | if (chip->irq < 0) { | 467 | if (chip->irq < 0) { |
468 | if (request_irq(chip->pci->irq, chip->interrupt, IRQF_DISABLED|IRQF_SHARED, | 468 | if (request_irq(chip->pci->irq, chip->interrupt, IRQF_SHARED, |
469 | chip->card->driver, chip)) { | 469 | chip->card->driver, chip)) { |
470 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", chip->pci->irq); | 470 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", chip->pci->irq); |
471 | mutex_unlock(&chip->irq_mutex); | 471 | mutex_unlock(&chip->irq_mutex); |
diff --git a/sound/pci/pcxhr/pcxhr.c b/sound/pci/pcxhr/pcxhr.c index 533c672ae8f3..d97413484ae9 100644 --- a/sound/pci/pcxhr/pcxhr.c +++ b/sound/pci/pcxhr/pcxhr.c | |||
@@ -1250,7 +1250,7 @@ static int __devinit pcxhr_probe(struct pci_dev *pci, const struct pci_device_id | |||
1250 | mgr->pci = pci; | 1250 | mgr->pci = pci; |
1251 | mgr->irq = -1; | 1251 | mgr->irq = -1; |
1252 | 1252 | ||
1253 | if (request_irq(pci->irq, pcxhr_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1253 | if (request_irq(pci->irq, pcxhr_interrupt, IRQF_SHARED, |
1254 | card_name, mgr)) { | 1254 | card_name, mgr)) { |
1255 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1255 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1256 | pcxhr_free(mgr); | 1256 | pcxhr_free(mgr); |
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c index 56e0c01123e7..5e1d5d2b2850 100644 --- a/sound/pci/riptide/riptide.c +++ b/sound/pci/riptide/riptide.c | |||
@@ -1899,9 +1899,8 @@ snd_riptide_create(struct snd_card *card, struct pci_dev *pci, | |||
1899 | hwport = (struct riptideport *)chip->port; | 1899 | hwport = (struct riptideport *)chip->port; |
1900 | UNSET_AIE(hwport); | 1900 | UNSET_AIE(hwport); |
1901 | 1901 | ||
1902 | if (request_irq | 1902 | if (request_irq(pci->irq, snd_riptide_interrupt, IRQF_SHARED, |
1903 | (pci->irq, snd_riptide_interrupt, IRQF_DISABLED | IRQF_SHARED, | 1903 | "RIPTIDE", chip)) { |
1904 | "RIPTIDE", chip)) { | ||
1905 | snd_printk(KERN_ERR "Riptide: unable to grab IRQ %d\n", | 1904 | snd_printk(KERN_ERR "Riptide: unable to grab IRQ %d\n", |
1906 | pci->irq); | 1905 | pci->irq); |
1907 | snd_riptide_free(chip); | 1906 | snd_riptide_free(chip); |
diff --git a/sound/pci/rme32.c b/sound/pci/rme32.c index dc8d1302e22d..6bb7ac650ec4 100644 --- a/sound/pci/rme32.c +++ b/sound/pci/rme32.c | |||
@@ -1373,7 +1373,8 @@ static int __devinit snd_rme32_create(struct rme32 * rme32) | |||
1373 | return -ENOMEM; | 1373 | return -ENOMEM; |
1374 | } | 1374 | } |
1375 | 1375 | ||
1376 | if (request_irq(pci->irq, snd_rme32_interrupt, IRQF_DISABLED | IRQF_SHARED, "RME32", (void *) rme32)) { | 1376 | if (request_irq(pci->irq, snd_rme32_interrupt, IRQF_SHARED, |
1377 | "RME32", rme32)) { | ||
1377 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1378 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1378 | return -EBUSY; | 1379 | return -EBUSY; |
1379 | } | 1380 | } |
diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c index 106110a89a4c..e3304b7ccbcb 100644 --- a/sound/pci/rme96.c +++ b/sound/pci/rme96.c | |||
@@ -1587,7 +1587,8 @@ snd_rme96_create(struct rme96 *rme96) | |||
1587 | return -ENOMEM; | 1587 | return -ENOMEM; |
1588 | } | 1588 | } |
1589 | 1589 | ||
1590 | if (request_irq(pci->irq, snd_rme96_interrupt, IRQF_DISABLED|IRQF_SHARED, "RME96", (void *)rme96)) { | 1590 | if (request_irq(pci->irq, snd_rme96_interrupt, IRQF_SHARED, |
1591 | "RME96", rme96)) { | ||
1591 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1592 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1592 | return -EBUSY; | 1593 | return -EBUSY; |
1593 | } | 1594 | } |
diff --git a/sound/pci/rme9652/hdsp.c b/sound/pci/rme9652/hdsp.c index 694aa057ed49..6383987b460e 100644 --- a/sound/pci/rme9652/hdsp.c +++ b/sound/pci/rme9652/hdsp.c | |||
@@ -3516,8 +3516,8 @@ static int __devinit snd_hdsp_initialize_memory(struct hdsp *hdsp) | |||
3516 | 3516 | ||
3517 | /* Align to bus-space 64K boundary */ | 3517 | /* Align to bus-space 64K boundary */ |
3518 | 3518 | ||
3519 | cb_bus = (hdsp->capture_dma_buf.addr + 0xFFFF) & ~0xFFFFl; | 3519 | cb_bus = ALIGN(hdsp->capture_dma_buf.addr, 0x10000ul); |
3520 | pb_bus = (hdsp->playback_dma_buf.addr + 0xFFFF) & ~0xFFFFl; | 3520 | pb_bus = ALIGN(hdsp->playback_dma_buf.addr, 0x10000ul); |
3521 | 3521 | ||
3522 | /* Tell the card where it is */ | 3522 | /* Tell the card where it is */ |
3523 | 3523 | ||
@@ -4934,13 +4934,14 @@ static int __devinit snd_hdsp_create(struct snd_card *card, | |||
4934 | return -EBUSY; | 4934 | return -EBUSY; |
4935 | } | 4935 | } |
4936 | 4936 | ||
4937 | if (request_irq(pci->irq, snd_hdsp_interrupt, IRQF_DISABLED|IRQF_SHARED, "hdsp", (void *)hdsp)) { | 4937 | if (request_irq(pci->irq, snd_hdsp_interrupt, IRQF_SHARED, |
4938 | "hdsp", hdsp)) { | ||
4938 | snd_printk(KERN_ERR "Hammerfall-DSP: unable to use IRQ %d\n", pci->irq); | 4939 | snd_printk(KERN_ERR "Hammerfall-DSP: unable to use IRQ %d\n", pci->irq); |
4939 | return -EBUSY; | 4940 | return -EBUSY; |
4940 | } | 4941 | } |
4941 | 4942 | ||
4942 | hdsp->irq = pci->irq; | 4943 | hdsp->irq = pci->irq; |
4943 | hdsp->precise_ptr = 1; | 4944 | hdsp->precise_ptr = 0; |
4944 | hdsp->use_midi_tasklet = 1; | 4945 | hdsp->use_midi_tasklet = 1; |
4945 | 4946 | ||
4946 | if ((err = snd_hdsp_initialize_memory(hdsp)) < 0) | 4947 | if ((err = snd_hdsp_initialize_memory(hdsp)) < 0) |
diff --git a/sound/pci/rme9652/hdspm.c b/sound/pci/rme9652/hdspm.c index 7055d893855d..0547f6f04bdc 100644 --- a/sound/pci/rme9652/hdspm.c +++ b/sound/pci/rme9652/hdspm.c | |||
@@ -3496,8 +3496,7 @@ static int __devinit snd_hdspm_create(struct snd_card *card, struct hdspm * hdsp | |||
3496 | hdspm->port + io_extent - 1); | 3496 | hdspm->port + io_extent - 1); |
3497 | 3497 | ||
3498 | if (request_irq(pci->irq, snd_hdspm_interrupt, | 3498 | if (request_irq(pci->irq, snd_hdspm_interrupt, |
3499 | IRQF_DISABLED | IRQF_SHARED, "hdspm", | 3499 | IRQF_SHARED, "hdspm", hdspm)) { |
3500 | (void *) hdspm)) { | ||
3501 | snd_printk(KERN_ERR "HDSPM: unable to use IRQ %d\n", pci->irq); | 3500 | snd_printk(KERN_ERR "HDSPM: unable to use IRQ %d\n", pci->irq); |
3502 | return -EBUSY; | 3501 | return -EBUSY; |
3503 | } | 3502 | } |
diff --git a/sound/pci/rme9652/rme9652.c b/sound/pci/rme9652/rme9652.c index cf0427b4bfde..cc3bdececce7 100644 --- a/sound/pci/rme9652/rme9652.c +++ b/sound/pci/rme9652/rme9652.c | |||
@@ -1827,8 +1827,8 @@ static int __devinit snd_rme9652_initialize_memory(struct snd_rme9652 *rme9652) | |||
1827 | 1827 | ||
1828 | /* Align to bus-space 64K boundary */ | 1828 | /* Align to bus-space 64K boundary */ |
1829 | 1829 | ||
1830 | cb_bus = (rme9652->capture_dma_buf.addr + 0xFFFF) & ~0xFFFFl; | 1830 | cb_bus = ALIGN(rme9652->capture_dma_buf.addr, 0x10000ul); |
1831 | pb_bus = (rme9652->playback_dma_buf.addr + 0xFFFF) & ~0xFFFFl; | 1831 | pb_bus = ALIGN(rme9652->playback_dma_buf.addr, 0x10000ul); |
1832 | 1832 | ||
1833 | /* Tell the card where it is */ | 1833 | /* Tell the card where it is */ |
1834 | 1834 | ||
@@ -2500,7 +2500,8 @@ static int __devinit snd_rme9652_create(struct snd_card *card, | |||
2500 | return -EBUSY; | 2500 | return -EBUSY; |
2501 | } | 2501 | } |
2502 | 2502 | ||
2503 | if (request_irq(pci->irq, snd_rme9652_interrupt, IRQF_DISABLED|IRQF_SHARED, "rme9652", (void *)rme9652)) { | 2503 | if (request_irq(pci->irq, snd_rme9652_interrupt, IRQF_SHARED, |
2504 | "rme9652", rme9652)) { | ||
2504 | snd_printk(KERN_ERR "unable to request IRQ %d\n", pci->irq); | 2505 | snd_printk(KERN_ERR "unable to request IRQ %d\n", pci->irq); |
2505 | return -EBUSY; | 2506 | return -EBUSY; |
2506 | } | 2507 | } |
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c index f9b8afabda9c..9f25d93cbec2 100644 --- a/sound/pci/sonicvibes.c +++ b/sound/pci/sonicvibes.c | |||
@@ -1195,7 +1195,7 @@ static int snd_sonicvibes_free(struct sonicvibes *sonic) | |||
1195 | pci_write_config_dword(sonic->pci, 0x40, sonic->dmaa_port); | 1195 | pci_write_config_dword(sonic->pci, 0x40, sonic->dmaa_port); |
1196 | pci_write_config_dword(sonic->pci, 0x48, sonic->dmac_port); | 1196 | pci_write_config_dword(sonic->pci, 0x48, sonic->dmac_port); |
1197 | if (sonic->irq >= 0) | 1197 | if (sonic->irq >= 0) |
1198 | free_irq(sonic->irq, (void *)sonic); | 1198 | free_irq(sonic->irq, sonic); |
1199 | release_and_free_resource(sonic->res_dmaa); | 1199 | release_and_free_resource(sonic->res_dmaa); |
1200 | release_and_free_resource(sonic->res_dmac); | 1200 | release_and_free_resource(sonic->res_dmac); |
1201 | pci_release_regions(sonic->pci); | 1201 | pci_release_regions(sonic->pci); |
@@ -1257,7 +1257,8 @@ static int __devinit snd_sonicvibes_create(struct snd_card *card, | |||
1257 | sonic->midi_port = pci_resource_start(pci, 3); | 1257 | sonic->midi_port = pci_resource_start(pci, 3); |
1258 | sonic->game_port = pci_resource_start(pci, 4); | 1258 | sonic->game_port = pci_resource_start(pci, 4); |
1259 | 1259 | ||
1260 | if (request_irq(pci->irq, snd_sonicvibes_interrupt, IRQF_DISABLED|IRQF_SHARED, "S3 SonicVibes", (void *)sonic)) { | 1260 | if (request_irq(pci->irq, snd_sonicvibes_interrupt, IRQF_SHARED, |
1261 | "S3 SonicVibes", sonic)) { | ||
1261 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1262 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1262 | snd_sonicvibes_free(sonic); | 1263 | snd_sonicvibes_free(sonic); |
1263 | return -EBUSY; | 1264 | return -EBUSY; |
diff --git a/sound/pci/trident/trident_main.c b/sound/pci/trident/trident_main.c index 1fbc4321122f..474f2d451ae8 100644 --- a/sound/pci/trident/trident_main.c +++ b/sound/pci/trident/trident_main.c | |||
@@ -3380,8 +3380,8 @@ static int __devinit snd_trident_tlb_alloc(struct snd_trident *trident) | |||
3380 | snd_printk(KERN_ERR "trident: unable to allocate TLB buffer\n"); | 3380 | snd_printk(KERN_ERR "trident: unable to allocate TLB buffer\n"); |
3381 | return -ENOMEM; | 3381 | return -ENOMEM; |
3382 | } | 3382 | } |
3383 | trident->tlb.entries = (unsigned int*)(((unsigned long)trident->tlb.buffer.area + SNDRV_TRIDENT_MAX_PAGES * 4 - 1) & ~(SNDRV_TRIDENT_MAX_PAGES * 4 - 1)); | 3383 | trident->tlb.entries = (unsigned int*)ALIGN((unsigned long)trident->tlb.buffer.area, SNDRV_TRIDENT_MAX_PAGES * 4); |
3384 | trident->tlb.entries_dmaaddr = (trident->tlb.buffer.addr + SNDRV_TRIDENT_MAX_PAGES * 4 - 1) & ~(SNDRV_TRIDENT_MAX_PAGES * 4 - 1); | 3384 | trident->tlb.entries_dmaaddr = ALIGN(trident->tlb.buffer.addr, SNDRV_TRIDENT_MAX_PAGES * 4); |
3385 | /* allocate shadow TLB page table (virtual addresses) */ | 3385 | /* allocate shadow TLB page table (virtual addresses) */ |
3386 | trident->tlb.shadow_entries = vmalloc(SNDRV_TRIDENT_MAX_PAGES*sizeof(unsigned long)); | 3386 | trident->tlb.shadow_entries = vmalloc(SNDRV_TRIDENT_MAX_PAGES*sizeof(unsigned long)); |
3387 | if (trident->tlb.shadow_entries == NULL) { | 3387 | if (trident->tlb.shadow_entries == NULL) { |
@@ -3608,7 +3608,7 @@ int __devinit snd_trident_create(struct snd_card *card, | |||
3608 | } | 3608 | } |
3609 | trident->port = pci_resource_start(pci, 0); | 3609 | trident->port = pci_resource_start(pci, 0); |
3610 | 3610 | ||
3611 | if (request_irq(pci->irq, snd_trident_interrupt, IRQF_DISABLED|IRQF_SHARED, | 3611 | if (request_irq(pci->irq, snd_trident_interrupt, IRQF_SHARED, |
3612 | "Trident Audio", trident)) { | 3612 | "Trident Audio", trident)) { |
3613 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 3613 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
3614 | snd_trident_free(trident); | 3614 | snd_trident_free(trident); |
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index 92b0736c0fdb..a572b018807f 100644 --- a/sound/pci/via82xx.c +++ b/sound/pci/via82xx.c | |||
@@ -2307,7 +2307,7 @@ static int __devinit snd_via82xx_create(struct snd_card *card, | |||
2307 | if (request_irq(pci->irq, | 2307 | if (request_irq(pci->irq, |
2308 | chip_type == TYPE_VIA8233 ? | 2308 | chip_type == TYPE_VIA8233 ? |
2309 | snd_via8233_interrupt : snd_via686_interrupt, | 2309 | snd_via8233_interrupt : snd_via686_interrupt, |
2310 | IRQF_DISABLED|IRQF_SHARED, | 2310 | IRQF_SHARED, |
2311 | card->driver, chip)) { | 2311 | card->driver, chip)) { |
2312 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2312 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2313 | snd_via82xx_free(chip); | 2313 | snd_via82xx_free(chip); |
@@ -2366,7 +2366,7 @@ struct dxs_whitelist { | |||
2366 | 2366 | ||
2367 | static int __devinit check_dxs_list(struct pci_dev *pci, int revision) | 2367 | static int __devinit check_dxs_list(struct pci_dev *pci, int revision) |
2368 | { | 2368 | { |
2369 | static struct dxs_whitelist whitelist[] = { | 2369 | static struct dxs_whitelist whitelist[] __devinitdata = { |
2370 | { .subvendor = 0x1005, .subdevice = 0x4710, .action = VIA_DXS_ENABLE }, /* Avance Logic Mobo */ | 2370 | { .subvendor = 0x1005, .subdevice = 0x4710, .action = VIA_DXS_ENABLE }, /* Avance Logic Mobo */ |
2371 | { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, | 2371 | { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, |
2372 | { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ | 2372 | { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ |
@@ -2427,7 +2427,7 @@ static int __devinit check_dxs_list(struct pci_dev *pci, int revision) | |||
2427 | { .subvendor = 0x4005, .subdevice = 0x4710, .action = VIA_DXS_SRC }, /* MSI K7T266 Pro2 (MS-6380 V2.0) BIOS 3.7 */ | 2427 | { .subvendor = 0x4005, .subdevice = 0x4710, .action = VIA_DXS_SRC }, /* MSI K7T266 Pro2 (MS-6380 V2.0) BIOS 3.7 */ |
2428 | { } /* terminator */ | 2428 | { } /* terminator */ |
2429 | }; | 2429 | }; |
2430 | struct dxs_whitelist *w; | 2430 | const struct dxs_whitelist *w; |
2431 | unsigned short subsystem_vendor; | 2431 | unsigned short subsystem_vendor; |
2432 | unsigned short subsystem_device; | 2432 | unsigned short subsystem_device; |
2433 | 2433 | ||
diff --git a/sound/pci/via82xx_modem.c b/sound/pci/via82xx_modem.c index feb27c966256..17d6b847585f 100644 --- a/sound/pci/via82xx_modem.c +++ b/sound/pci/via82xx_modem.c | |||
@@ -1124,7 +1124,7 @@ static int __devinit snd_via82xx_create(struct snd_card *card, | |||
1124 | return err; | 1124 | return err; |
1125 | } | 1125 | } |
1126 | chip->port = pci_resource_start(pci, 0); | 1126 | chip->port = pci_resource_start(pci, 0); |
1127 | if (request_irq(pci->irq, snd_via82xx_interrupt, IRQF_DISABLED|IRQF_SHARED, | 1127 | if (request_irq(pci->irq, snd_via82xx_interrupt, IRQF_SHARED, |
1128 | card->driver, chip)) { | 1128 | card->driver, chip)) { |
1129 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1129 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1130 | snd_via82xx_free(chip); | 1130 | snd_via82xx_free(chip); |
diff --git a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c index af49e8aabf55..89f58ea180b3 100644 --- a/sound/pci/vx222/vx222.c +++ b/sound/pci/vx222/vx222.c | |||
@@ -169,8 +169,8 @@ static int __devinit snd_vx222_create(struct snd_card *card, struct pci_dev *pci | |||
169 | for (i = 0; i < 2; i++) | 169 | for (i = 0; i < 2; i++) |
170 | vx->port[i] = pci_resource_start(pci, i + 1); | 170 | vx->port[i] = pci_resource_start(pci, i + 1); |
171 | 171 | ||
172 | if (request_irq(pci->irq, snd_vx_irq_handler, IRQF_DISABLED|IRQF_SHARED, | 172 | if (request_irq(pci->irq, snd_vx_irq_handler, IRQF_SHARED, |
173 | CARD_NAME, (void *) chip)) { | 173 | CARD_NAME, chip)) { |
174 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 174 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
175 | snd_vx222_free(chip); | 175 | snd_vx222_free(chip); |
176 | return -EBUSY; | 176 | return -EBUSY; |
diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c index 186453f7abe7..fd9b7b83a884 100644 --- a/sound/pci/ymfpci/ymfpci.c +++ b/sound/pci/ymfpci/ymfpci.c | |||
@@ -49,7 +49,6 @@ static long mpu_port[SNDRV_CARDS]; | |||
49 | static long joystick_port[SNDRV_CARDS]; | 49 | static long joystick_port[SNDRV_CARDS]; |
50 | #endif | 50 | #endif |
51 | static int rear_switch[SNDRV_CARDS]; | 51 | static int rear_switch[SNDRV_CARDS]; |
52 | static int rear_swap[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = 1 }; | ||
53 | 52 | ||
54 | module_param_array(index, int, NULL, 0444); | 53 | module_param_array(index, int, NULL, 0444); |
55 | MODULE_PARM_DESC(index, "Index value for the Yamaha DS-1 PCI soundcard."); | 54 | MODULE_PARM_DESC(index, "Index value for the Yamaha DS-1 PCI soundcard."); |
@@ -67,8 +66,6 @@ MODULE_PARM_DESC(joystick_port, "Joystick port address"); | |||
67 | #endif | 66 | #endif |
68 | module_param_array(rear_switch, bool, NULL, 0444); | 67 | module_param_array(rear_switch, bool, NULL, 0444); |
69 | MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch"); | 68 | MODULE_PARM_DESC(rear_switch, "Enable shared rear/line-in switch"); |
70 | module_param_array(rear_swap, bool, NULL, 0444); | ||
71 | MODULE_PARM_DESC(rear_swap, "Swap rear channels (must be enabled for correct IEC958 (S/PDIF)) output"); | ||
72 | 69 | ||
73 | static struct pci_device_id snd_ymfpci_ids[] = { | 70 | static struct pci_device_id snd_ymfpci_ids[] = { |
74 | { 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */ | 71 | { 0x1073, 0x0004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* YMF724 */ |
@@ -298,7 +295,7 @@ static int __devinit snd_card_ymfpci_probe(struct pci_dev *pci, | |||
298 | snd_card_free(card); | 295 | snd_card_free(card); |
299 | return err; | 296 | return err; |
300 | } | 297 | } |
301 | if ((err = snd_ymfpci_mixer(chip, rear_switch[dev], rear_swap[dev])) < 0) { | 298 | if ((err = snd_ymfpci_mixer(chip, rear_switch[dev])) < 0) { |
302 | snd_card_free(card); | 299 | snd_card_free(card); |
303 | return err; | 300 | return err; |
304 | } | 301 | } |
diff --git a/sound/pci/ymfpci/ymfpci_main.c b/sound/pci/ymfpci/ymfpci_main.c index a40c1085fd20..7881944a1957 100644 --- a/sound/pci/ymfpci/ymfpci_main.c +++ b/sound/pci/ymfpci/ymfpci_main.c | |||
@@ -910,7 +910,7 @@ static int snd_ymfpci_playback_open(struct snd_pcm_substream *substream) | |||
910 | ypcm = runtime->private_data; | 910 | ypcm = runtime->private_data; |
911 | ypcm->output_front = 1; | 911 | ypcm->output_front = 1; |
912 | ypcm->output_rear = chip->mode_dup4ch ? 1 : 0; | 912 | ypcm->output_rear = chip->mode_dup4ch ? 1 : 0; |
913 | ypcm->swap_rear = chip->rear_swap; | 913 | ypcm->swap_rear = 0; |
914 | spin_lock_irq(&chip->reg_lock); | 914 | spin_lock_irq(&chip->reg_lock); |
915 | if (ypcm->output_rear) { | 915 | if (ypcm->output_rear) { |
916 | ymfpci_open_extension(chip); | 916 | ymfpci_open_extension(chip); |
@@ -936,6 +936,7 @@ static int snd_ymfpci_playback_spdif_open(struct snd_pcm_substream *substream) | |||
936 | ypcm = runtime->private_data; | 936 | ypcm = runtime->private_data; |
937 | ypcm->output_front = 0; | 937 | ypcm->output_front = 0; |
938 | ypcm->output_rear = 1; | 938 | ypcm->output_rear = 1; |
939 | ypcm->swap_rear = 1; | ||
939 | spin_lock_irq(&chip->reg_lock); | 940 | spin_lock_irq(&chip->reg_lock); |
940 | snd_ymfpci_writew(chip, YDSXGR_SPDIFOUTCTRL, | 941 | snd_ymfpci_writew(chip, YDSXGR_SPDIFOUTCTRL, |
941 | snd_ymfpci_readw(chip, YDSXGR_SPDIFOUTCTRL) | 2); | 942 | snd_ymfpci_readw(chip, YDSXGR_SPDIFOUTCTRL) | 2); |
@@ -963,6 +964,7 @@ static int snd_ymfpci_playback_4ch_open(struct snd_pcm_substream *substream) | |||
963 | ypcm = runtime->private_data; | 964 | ypcm = runtime->private_data; |
964 | ypcm->output_front = 0; | 965 | ypcm->output_front = 0; |
965 | ypcm->output_rear = 1; | 966 | ypcm->output_rear = 1; |
967 | ypcm->swap_rear = 0; | ||
966 | spin_lock_irq(&chip->reg_lock); | 968 | spin_lock_irq(&chip->reg_lock); |
967 | ymfpci_open_extension(chip); | 969 | ymfpci_open_extension(chip); |
968 | chip->rear_opened++; | 970 | chip->rear_opened++; |
@@ -1755,7 +1757,7 @@ static void snd_ymfpci_mixer_free_ac97(struct snd_ac97 *ac97) | |||
1755 | chip->ac97 = NULL; | 1757 | chip->ac97 = NULL; |
1756 | } | 1758 | } |
1757 | 1759 | ||
1758 | int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rear_swap) | 1760 | int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch) |
1759 | { | 1761 | { |
1760 | struct snd_ac97_template ac97; | 1762 | struct snd_ac97_template ac97; |
1761 | struct snd_kcontrol *kctl; | 1763 | struct snd_kcontrol *kctl; |
@@ -1767,7 +1769,6 @@ int __devinit snd_ymfpci_mixer(struct snd_ymfpci *chip, int rear_switch, int rea | |||
1767 | .read = snd_ymfpci_codec_read, | 1769 | .read = snd_ymfpci_codec_read, |
1768 | }; | 1770 | }; |
1769 | 1771 | ||
1770 | chip->rear_swap = rear_swap; | ||
1771 | if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &chip->ac97_bus)) < 0) | 1772 | if ((err = snd_ac97_bus(chip->card, 0, &ops, chip, &chip->ac97_bus)) < 0) |
1772 | return err; | 1773 | return err; |
1773 | chip->ac97_bus->private_free = snd_ymfpci_mixer_free_ac97_bus; | 1774 | chip->ac97_bus->private_free = snd_ymfpci_mixer_free_ac97_bus; |
@@ -2025,10 +2026,10 @@ static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip) | |||
2025 | chip->bank_size_effect = snd_ymfpci_readl(chip, YDSXGR_EFFCTRLSIZE) << 2; | 2026 | chip->bank_size_effect = snd_ymfpci_readl(chip, YDSXGR_EFFCTRLSIZE) << 2; |
2026 | chip->work_size = YDSXG_DEFAULT_WORK_SIZE; | 2027 | chip->work_size = YDSXG_DEFAULT_WORK_SIZE; |
2027 | 2028 | ||
2028 | size = ((playback_ctrl_size + 0x00ff) & ~0x00ff) + | 2029 | size = ALIGN(playback_ctrl_size, 0x100) + |
2029 | ((chip->bank_size_playback * 2 * YDSXG_PLAYBACK_VOICES + 0x00ff) & ~0x00ff) + | 2030 | ALIGN(chip->bank_size_playback * 2 * YDSXG_PLAYBACK_VOICES, 0x100) + |
2030 | ((chip->bank_size_capture * 2 * YDSXG_CAPTURE_VOICES + 0x00ff) & ~0x00ff) + | 2031 | ALIGN(chip->bank_size_capture * 2 * YDSXG_CAPTURE_VOICES, 0x100) + |
2031 | ((chip->bank_size_effect * 2 * YDSXG_EFFECT_VOICES + 0x00ff) & ~0x00ff) + | 2032 | ALIGN(chip->bank_size_effect * 2 * YDSXG_EFFECT_VOICES, 0x100) + |
2032 | chip->work_size; | 2033 | chip->work_size; |
2033 | /* work_ptr must be aligned to 256 bytes, but it's already | 2034 | /* work_ptr must be aligned to 256 bytes, but it's already |
2034 | covered with the kernel page allocation mechanism */ | 2035 | covered with the kernel page allocation mechanism */ |
@@ -2043,8 +2044,8 @@ static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip) | |||
2043 | chip->bank_base_playback_addr = ptr_addr; | 2044 | chip->bank_base_playback_addr = ptr_addr; |
2044 | chip->ctrl_playback = (u32 *)ptr; | 2045 | chip->ctrl_playback = (u32 *)ptr; |
2045 | chip->ctrl_playback[0] = cpu_to_le32(YDSXG_PLAYBACK_VOICES); | 2046 | chip->ctrl_playback[0] = cpu_to_le32(YDSXG_PLAYBACK_VOICES); |
2046 | ptr += (playback_ctrl_size + 0x00ff) & ~0x00ff; | 2047 | ptr += ALIGN(playback_ctrl_size, 0x100); |
2047 | ptr_addr += (playback_ctrl_size + 0x00ff) & ~0x00ff; | 2048 | ptr_addr += ALIGN(playback_ctrl_size, 0x100); |
2048 | for (voice = 0; voice < YDSXG_PLAYBACK_VOICES; voice++) { | 2049 | for (voice = 0; voice < YDSXG_PLAYBACK_VOICES; voice++) { |
2049 | chip->voices[voice].number = voice; | 2050 | chip->voices[voice].number = voice; |
2050 | chip->voices[voice].bank = (struct snd_ymfpci_playback_bank *)ptr; | 2051 | chip->voices[voice].bank = (struct snd_ymfpci_playback_bank *)ptr; |
@@ -2055,8 +2056,8 @@ static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip) | |||
2055 | ptr_addr += chip->bank_size_playback; | 2056 | ptr_addr += chip->bank_size_playback; |
2056 | } | 2057 | } |
2057 | } | 2058 | } |
2058 | ptr = (char *)(((unsigned long)ptr + 0x00ff) & ~0x00ff); | 2059 | ptr = (char *)ALIGN((unsigned long)ptr, 0x100); |
2059 | ptr_addr = (ptr_addr + 0x00ff) & ~0x00ff; | 2060 | ptr_addr = ALIGN(ptr_addr, 0x100); |
2060 | chip->bank_base_capture = ptr; | 2061 | chip->bank_base_capture = ptr; |
2061 | chip->bank_base_capture_addr = ptr_addr; | 2062 | chip->bank_base_capture_addr = ptr_addr; |
2062 | for (voice = 0; voice < YDSXG_CAPTURE_VOICES; voice++) | 2063 | for (voice = 0; voice < YDSXG_CAPTURE_VOICES; voice++) |
@@ -2065,8 +2066,8 @@ static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip) | |||
2065 | ptr += chip->bank_size_capture; | 2066 | ptr += chip->bank_size_capture; |
2066 | ptr_addr += chip->bank_size_capture; | 2067 | ptr_addr += chip->bank_size_capture; |
2067 | } | 2068 | } |
2068 | ptr = (char *)(((unsigned long)ptr + 0x00ff) & ~0x00ff); | 2069 | ptr = (char *)ALIGN((unsigned long)ptr, 0x100); |
2069 | ptr_addr = (ptr_addr + 0x00ff) & ~0x00ff; | 2070 | ptr_addr = ALIGN(ptr_addr, 0x100); |
2070 | chip->bank_base_effect = ptr; | 2071 | chip->bank_base_effect = ptr; |
2071 | chip->bank_base_effect_addr = ptr_addr; | 2072 | chip->bank_base_effect_addr = ptr_addr; |
2072 | for (voice = 0; voice < YDSXG_EFFECT_VOICES; voice++) | 2073 | for (voice = 0; voice < YDSXG_EFFECT_VOICES; voice++) |
@@ -2075,8 +2076,8 @@ static int __devinit snd_ymfpci_memalloc(struct snd_ymfpci *chip) | |||
2075 | ptr += chip->bank_size_effect; | 2076 | ptr += chip->bank_size_effect; |
2076 | ptr_addr += chip->bank_size_effect; | 2077 | ptr_addr += chip->bank_size_effect; |
2077 | } | 2078 | } |
2078 | ptr = (char *)(((unsigned long)ptr + 0x00ff) & ~0x00ff); | 2079 | ptr = (char *)ALIGN((unsigned long)ptr, 0x100); |
2079 | ptr_addr = (ptr_addr + 0x00ff) & ~0x00ff; | 2080 | ptr_addr = ALIGN(ptr_addr, 0x100); |
2080 | chip->work_base = ptr; | 2081 | chip->work_base = ptr; |
2081 | chip->work_base_addr = ptr_addr; | 2082 | chip->work_base_addr = ptr_addr; |
2082 | 2083 | ||
@@ -2153,7 +2154,7 @@ static int snd_ymfpci_free(struct snd_ymfpci *chip) | |||
2153 | snd_dma_free_pages(&chip->work_ptr); | 2154 | snd_dma_free_pages(&chip->work_ptr); |
2154 | 2155 | ||
2155 | if (chip->irq >= 0) | 2156 | if (chip->irq >= 0) |
2156 | free_irq(chip->irq, (void *)chip); | 2157 | free_irq(chip->irq, chip); |
2157 | release_and_free_resource(chip->res_reg_area); | 2158 | release_and_free_resource(chip->res_reg_area); |
2158 | 2159 | ||
2159 | pci_write_config_word(chip->pci, 0x40, chip->old_legacy_ctrl); | 2160 | pci_write_config_word(chip->pci, 0x40, chip->old_legacy_ctrl); |
@@ -2290,7 +2291,7 @@ int __devinit snd_ymfpci_create(struct snd_card *card, | |||
2290 | chip->pci = pci; | 2291 | chip->pci = pci; |
2291 | chip->irq = -1; | 2292 | chip->irq = -1; |
2292 | chip->device_id = pci->device; | 2293 | chip->device_id = pci->device; |
2293 | pci_read_config_byte(pci, PCI_REVISION_ID, (u8 *)&chip->rev); | 2294 | pci_read_config_byte(pci, PCI_REVISION_ID, &chip->rev); |
2294 | chip->reg_area_phys = pci_resource_start(pci, 0); | 2295 | chip->reg_area_phys = pci_resource_start(pci, 0); |
2295 | chip->reg_area_virt = ioremap_nocache(chip->reg_area_phys, 0x8000); | 2296 | chip->reg_area_virt = ioremap_nocache(chip->reg_area_phys, 0x8000); |
2296 | pci_set_master(pci); | 2297 | pci_set_master(pci); |
@@ -2300,7 +2301,8 @@ int __devinit snd_ymfpci_create(struct snd_card *card, | |||
2300 | snd_ymfpci_free(chip); | 2301 | snd_ymfpci_free(chip); |
2301 | return -EBUSY; | 2302 | return -EBUSY; |
2302 | } | 2303 | } |
2303 | if (request_irq(pci->irq, snd_ymfpci_interrupt, IRQF_DISABLED|IRQF_SHARED, "YMFPCI", (void *) chip)) { | 2304 | if (request_irq(pci->irq, snd_ymfpci_interrupt, IRQF_SHARED, |
2305 | "YMFPCI", chip)) { | ||
2304 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 2306 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
2305 | snd_ymfpci_free(chip); | 2307 | snd_ymfpci_free(chip); |
2306 | return -EBUSY; | 2308 | return -EBUSY; |
@@ -2322,7 +2324,6 @@ int __devinit snd_ymfpci_create(struct snd_card *card, | |||
2322 | return -EIO; | 2324 | return -EIO; |
2323 | } | 2325 | } |
2324 | 2326 | ||
2325 | chip->rear_swap = 1; | ||
2326 | if ((err = snd_ymfpci_ac3_init(chip)) < 0) { | 2327 | if ((err = snd_ymfpci_ac3_init(chip)) < 0) { |
2327 | snd_ymfpci_free(chip); | 2328 | snd_ymfpci_free(chip); |
2328 | return err; | 2329 | return err; |
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index 67202b9eeb77..3d7f36fb4cf0 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
@@ -3577,8 +3577,7 @@ static int __init snd_usb_audio_init(void) | |||
3577 | printk(KERN_WARNING "invalid nrpacks value.\n"); | 3577 | printk(KERN_WARNING "invalid nrpacks value.\n"); |
3578 | return -EINVAL; | 3578 | return -EINVAL; |
3579 | } | 3579 | } |
3580 | usb_register(&usb_audio_driver); | 3580 | return usb_register(&usb_audio_driver); |
3581 | return 0; | ||
3582 | } | 3581 | } |
3583 | 3582 | ||
3584 | 3583 | ||