diff options
author | Steve French <sfrench@us.ibm.com> | 2008-04-17 19:38:45 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2008-04-17 19:38:45 -0400 |
commit | 20e673810c69d18bee2ed74d19af3806ec2504f5 (patch) | |
tree | 7c22dc5246295a82f2688a23ae1c7f3a4f424302 | |
parent | 8d142137b4fe87188f211042b16a5993964226f9 (diff) | |
parent | 4b119e21d0c66c22e8ca03df05d9de623d0eb50f (diff) |
Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
93 files changed, 510 insertions, 196 deletions
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt index cc6cdb95b73a..7fb8e6dc62bf 100644 --- a/Documentation/filesystems/seq_file.txt +++ b/Documentation/filesystems/seq_file.txt | |||
@@ -92,7 +92,7 @@ implementations; in most cases the start() function should check for a | |||
92 | "past end of file" condition and return NULL if need be. | 92 | "past end of file" condition and return NULL if need be. |
93 | 93 | ||
94 | For more complicated applications, the private field of the seq_file | 94 | For more complicated applications, the private field of the seq_file |
95 | structure can be used. There is also a special value whch can be returned | 95 | structure can be used. There is also a special value which can be returned |
96 | by the start() function called SEQ_START_TOKEN; it can be used if you wish | 96 | by the start() function called SEQ_START_TOKEN; it can be used if you wish |
97 | to instruct your show() function (described below) to print a header at the | 97 | to instruct your show() function (described below) to print a header at the |
98 | top of the output. SEQ_START_TOKEN should only be used if the offset is | 98 | top of the output. SEQ_START_TOKEN should only be used if the offset is |
@@ -146,7 +146,7 @@ the four functions we have just defined: | |||
146 | This structure will be needed to tie our iterator to the /proc file in | 146 | This structure will be needed to tie our iterator to the /proc file in |
147 | a little bit. | 147 | a little bit. |
148 | 148 | ||
149 | It's worth noting that the interator value returned by start() and | 149 | It's worth noting that the iterator value returned by start() and |
150 | manipulated by the other functions is considered to be completely opaque by | 150 | manipulated by the other functions is considered to be completely opaque by |
151 | the seq_file code. It can thus be anything that is useful in stepping | 151 | the seq_file code. It can thus be anything that is useful in stepping |
152 | through the data to be output. Counters can be useful, but it could also be | 152 | through the data to be output. Counters can be useful, but it could also be |
@@ -262,7 +262,7 @@ routines useful: | |||
262 | 262 | ||
263 | These helpers will interpret pos as a position within the list and iterate | 263 | These helpers will interpret pos as a position within the list and iterate |
264 | accordingly. Your start() and next() functions need only invoke the | 264 | accordingly. Your start() and next() functions need only invoke the |
265 | seq_list_* helpers with a pointer to the appropriate list_head structure. | 265 | seq_list_* helpers with a pointer to the appropriate list_head structure. |
266 | 266 | ||
267 | 267 | ||
268 | The extra-simple version | 268 | The extra-simple version |
diff --git a/Documentation/networking/can.txt b/Documentation/networking/can.txt index f1b2de170929..641d2afacffa 100644 --- a/Documentation/networking/can.txt +++ b/Documentation/networking/can.txt | |||
@@ -281,10 +281,10 @@ solution for a couple of reasons: | |||
281 | sa_family_t can_family; | 281 | sa_family_t can_family; |
282 | int can_ifindex; | 282 | int can_ifindex; |
283 | union { | 283 | union { |
284 | struct { canid_t rx_id, tx_id; } tp16; | 284 | /* transport protocol class address info (e.g. ISOTP) */ |
285 | struct { canid_t rx_id, tx_id; } tp20; | 285 | struct { canid_t rx_id, tx_id; } tp; |
286 | struct { canid_t rx_id, tx_id; } mcnet; | 286 | |
287 | struct { canid_t rx_id, tx_id; } isotp; | 287 | /* reserved for future CAN protocols address information */ |
288 | } can_addr; | 288 | } can_addr; |
289 | }; | 289 | }; |
290 | 290 | ||
diff --git a/Documentation/vm/hugetlbpage.txt b/Documentation/vm/hugetlbpage.txt index f962d01bea2a..3102b81bef88 100644 --- a/Documentation/vm/hugetlbpage.txt +++ b/Documentation/vm/hugetlbpage.txt | |||
@@ -88,10 +88,9 @@ hugepages from the buddy allocator, if the normal pool is exhausted. As | |||
88 | these surplus hugepages go out of use, they are freed back to the buddy | 88 | these surplus hugepages go out of use, they are freed back to the buddy |
89 | allocator. | 89 | allocator. |
90 | 90 | ||
91 | Caveat: Shrinking the pool via nr_hugepages while a surplus is in effect | 91 | Caveat: Shrinking the pool via nr_hugepages such that it becomes less |
92 | will allow the number of surplus huge pages to exceed the overcommit | 92 | than the number of hugepages in use will convert the balance to surplus |
93 | value, as the pool hugepages (which must have been in use for a surplus | 93 | huge pages even if it would exceed the overcommit value. As long as |
94 | hugepages to be allocated) will become surplus hugepages. As long as | ||
95 | this condition holds, however, no more surplus huge pages will be | 94 | this condition holds, however, no more surplus huge pages will be |
96 | allowed on the system until one of the two sysctls are increased | 95 | allowed on the system until one of the two sysctls are increased |
97 | sufficiently, or the surplus huge pages go out of use and are freed. | 96 | sufficiently, or the surplus huge pages go out of use and are freed. |
diff --git a/MAINTAINERS b/MAINTAINERS index 90dcbbcad91c..e46775868019 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -2116,7 +2116,7 @@ M: reinette.chatre@intel.com | |||
2116 | L: linux-wireless@vger.kernel.org | 2116 | L: linux-wireless@vger.kernel.org |
2117 | L: ipw3945-devel@lists.sourceforge.net | 2117 | L: ipw3945-devel@lists.sourceforge.net |
2118 | W: http://intellinuxwireless.org | 2118 | W: http://intellinuxwireless.org |
2119 | T: git git://git.kernel.org/pub/scm/linux/kernel/git/rchatre/iwlwifi-2.6.git | 2119 | T: git kernel.org:/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git |
2120 | S: Supported | 2120 | S: Supported |
2121 | 2121 | ||
2122 | IOC3 ETHERNET DRIVER | 2122 | IOC3 ETHERNET DRIVER |
@@ -2197,7 +2197,7 @@ S: Maintained | |||
2197 | ISDN SUBSYSTEM | 2197 | ISDN SUBSYSTEM |
2198 | P: Karsten Keil | 2198 | P: Karsten Keil |
2199 | M: kkeil@suse.de | 2199 | M: kkeil@suse.de |
2200 | L: isdn4linux@listserv.isdn4linux.de | 2200 | L: isdn4linux@listserv.isdn4linux.de (subscribers-only) |
2201 | W: http://www.isdn4linux.de | 2201 | W: http://www.isdn4linux.de |
2202 | T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git | 2202 | T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git |
2203 | S: Maintained | 2203 | S: Maintained |
@@ -2205,7 +2205,7 @@ S: Maintained | |||
2205 | ISDN SUBSYSTEM (Eicon active card driver) | 2205 | ISDN SUBSYSTEM (Eicon active card driver) |
2206 | P: Armin Schindler | 2206 | P: Armin Schindler |
2207 | M: mac@melware.de | 2207 | M: mac@melware.de |
2208 | L: isdn4linux@listserv.isdn4linux.de | 2208 | L: isdn4linux@listserv.isdn4linux.de (subscribers-only) |
2209 | W: http://www.melware.de | 2209 | W: http://www.melware.de |
2210 | S: Maintained | 2210 | S: Maintained |
2211 | 2211 | ||
@@ -3280,6 +3280,7 @@ L: linux-wireless@vger.kernel.org | |||
3280 | L: rt2400-devel@lists.sourceforge.net | 3280 | L: rt2400-devel@lists.sourceforge.net |
3281 | W: http://rt2x00.serialmonkey.com/ | 3281 | W: http://rt2x00.serialmonkey.com/ |
3282 | S: Maintained | 3282 | S: Maintained |
3283 | T: git kernel.org:/pub/scm/linux/kernel/git/ivd/rt2x00.git | ||
3283 | F: drivers/net/wireless/rt2x00/ | 3284 | F: drivers/net/wireless/rt2x00/ |
3284 | 3285 | ||
3285 | RAMDISK RAM BLOCK DEVICE DRIVER | 3286 | RAMDISK RAM BLOCK DEVICE DRIVER |
@@ -3342,6 +3343,13 @@ L: reiserfs-devel@vger.kernel.org | |||
3342 | W: http://www.namesys.com | 3343 | W: http://www.namesys.com |
3343 | S: Supported | 3344 | S: Supported |
3344 | 3345 | ||
3346 | RFKILL | ||
3347 | P: Ivo van Doorn | ||
3348 | M: IvDoorn@gmail.com | ||
3349 | L: netdev@vger.kernel.org | ||
3350 | S: Maintained | ||
3351 | F: net/rfkill | ||
3352 | |||
3345 | ROCKETPORT DRIVER | 3353 | ROCKETPORT DRIVER |
3346 | P: Comtrol Corp. | 3354 | P: Comtrol Corp. |
3347 | W: http://www.comtrol.com | 3355 | W: http://www.comtrol.com |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 25 | 3 | SUBLEVEL = 25 |
4 | EXTRAVERSION = -rc9 | 4 | EXTRAVERSION = |
5 | NAME = Funky Weasel is Jiggy wit it | 5 | NAME = Funky Weasel is Jiggy wit it |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index c75d7089f982..28e0caf4156c 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig | |||
@@ -10,7 +10,6 @@ config AVR32 | |||
10 | # With EMBEDDED=n, we get lots of stuff automatically selected | 10 | # With EMBEDDED=n, we get lots of stuff automatically selected |
11 | # that we usually don't need on AVR32. | 11 | # that we usually don't need on AVR32. |
12 | select EMBEDDED | 12 | select EMBEDDED |
13 | select HAVE_IDE | ||
14 | select HAVE_OPROFILE | 13 | select HAVE_OPROFILE |
15 | select HAVE_KPROBES | 14 | select HAVE_KPROBES |
16 | help | 15 | help |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index e282c348dcde..53d0a8ee35d7 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -362,7 +362,12 @@ pci_acpi_scan_root(struct acpi_device *device, int domain, int bus) | |||
362 | info.name = name; | 362 | info.name = name; |
363 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window, | 363 | acpi_walk_resources(device->handle, METHOD_NAME__CRS, add_window, |
364 | &info); | 364 | &info); |
365 | 365 | /* | |
366 | * See arch/x86/pci/acpi.c. | ||
367 | * The desired pci bus might already be scanned in a quirk. We | ||
368 | * should handle the case here, but it appears that IA64 hasn't | ||
369 | * such quirk. So we just ignore the case now. | ||
370 | */ | ||
366 | pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller); | 371 | pbus = pci_scan_bus_parented(NULL, bus, &pci_root_ops, controller); |
367 | if (pbus) | 372 | if (pbus) |
368 | pcibios_setup_root_windows(pbus, controller); | 373 | pcibios_setup_root_windows(pbus, controller); |
diff --git a/arch/mips/au1000/common/platform.c b/arch/mips/au1000/common/platform.c index 841904cdef4d..39d681265297 100644 --- a/arch/mips/au1000/common/platform.c +++ b/arch/mips/au1000/common/platform.c | |||
@@ -189,7 +189,7 @@ static struct resource au1200_lcd_resources[] = { | |||
189 | static struct resource au1200_ide0_resources[] = { | 189 | static struct resource au1200_ide0_resources[] = { |
190 | [0] = { | 190 | [0] = { |
191 | .start = AU1XXX_ATA_PHYS_ADDR, | 191 | .start = AU1XXX_ATA_PHYS_ADDR, |
192 | .end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN, | 192 | .end = AU1XXX_ATA_PHYS_ADDR + AU1XXX_ATA_PHYS_LEN - 1, |
193 | .flags = IORESOURCE_MEM, | 193 | .flags = IORESOURCE_MEM, |
194 | }, | 194 | }, |
195 | [1] = { | 195 | [1] = { |
diff --git a/arch/parisc/kernel/signal.c b/arch/parisc/kernel/signal.c index 58fccc96d003..06213d1d6d95 100644 --- a/arch/parisc/kernel/signal.c +++ b/arch/parisc/kernel/signal.c | |||
@@ -534,7 +534,8 @@ insert_restart_trampoline(struct pt_regs *regs) | |||
534 | * Flushing one cacheline is cheap. | 534 | * Flushing one cacheline is cheap. |
535 | * "sync" on bigger (> 4 way) boxes is not. | 535 | * "sync" on bigger (> 4 way) boxes is not. |
536 | */ | 536 | */ |
537 | flush_icache_range(regs->gr[30], regs->gr[30] + 4); | 537 | flush_user_dcache_range(regs->gr[30], regs->gr[30] + 4); |
538 | flush_user_icache_range(regs->gr[30], regs->gr[30] + 4); | ||
538 | 539 | ||
539 | regs->gr[31] = regs->gr[30] + 8; | 540 | regs->gr[31] = regs->gr[30] + 8; |
540 | /* Preserve original r28. */ | 541 | /* Preserve original r28. */ |
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 0234f2831bf3..378136fb5044 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -219,8 +219,21 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do | |||
219 | if (pxm >= 0) | 219 | if (pxm >= 0) |
220 | sd->node = pxm_to_node(pxm); | 220 | sd->node = pxm_to_node(pxm); |
221 | #endif | 221 | #endif |
222 | /* | ||
223 | * Maybe the desired pci bus has been already scanned. In such case | ||
224 | * it is unnecessary to scan the pci bus with the given domain,busnum. | ||
225 | */ | ||
226 | bus = pci_find_bus(domain, busnum); | ||
227 | if (bus) { | ||
228 | /* | ||
229 | * If the desired bus exits, the content of bus->sysdata will | ||
230 | * be replaced by sd. | ||
231 | */ | ||
232 | memcpy(bus->sysdata, sd, sizeof(*sd)); | ||
233 | kfree(sd); | ||
234 | } else | ||
235 | bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); | ||
222 | 236 | ||
223 | bus = pci_scan_bus_parented(NULL, busnum, &pci_root_ops, sd); | ||
224 | if (!bus) | 237 | if (!bus) |
225 | kfree(sd); | 238 | kfree(sd); |
226 | 239 | ||
@@ -228,7 +241,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do | |||
228 | if (bus != NULL) { | 241 | if (bus != NULL) { |
229 | if (pxm >= 0) { | 242 | if (pxm >= 0) { |
230 | printk("bus %d -> pxm %d -> node %d\n", | 243 | printk("bus %d -> pxm %d -> node %d\n", |
231 | busnum, pxm, sd->node); | 244 | busnum, pxm, pxm_to_node(pxm)); |
232 | } | 245 | } |
233 | } | 246 | } |
234 | #endif | 247 | #endif |
diff --git a/block/Kconfig b/block/Kconfig index 9bda7bc80307..7db9a411649d 100644 --- a/block/Kconfig +++ b/block/Kconfig | |||
@@ -38,7 +38,7 @@ config BLK_DEV_IO_TRACE | |||
38 | on a block device queue. For more information (and the user space | 38 | on a block device queue. For more information (and the user space |
39 | support tools needed), fetch the blktrace app from: | 39 | support tools needed), fetch the blktrace app from: |
40 | 40 | ||
41 | git://brick.kernel.dk/data/git/blktrace.git | 41 | git://git.kernel.dk/blktrace.git |
42 | 42 | ||
43 | config LSF | 43 | config LSF |
44 | bool "Support for Large Single Files" | 44 | bool "Support for Large Single Files" |
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 5b6760e0f957..2d1955c11833 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -373,10 +373,11 @@ int acpi_bus_receive_event(struct acpi_bus_event *event) | |||
373 | } | 373 | } |
374 | 374 | ||
375 | spin_lock_irqsave(&acpi_bus_event_lock, flags); | 375 | spin_lock_irqsave(&acpi_bus_event_lock, flags); |
376 | entry = | 376 | if (!list_empty(&acpi_bus_event_list)) { |
377 | list_entry(acpi_bus_event_list.next, struct acpi_bus_event, node); | 377 | entry = list_entry(acpi_bus_event_list.next, |
378 | if (entry) | 378 | struct acpi_bus_event, node); |
379 | list_del(&entry->node); | 379 | list_del(&entry->node); |
380 | } | ||
380 | spin_unlock_irqrestore(&acpi_bus_event_lock, flags); | 381 | spin_unlock_irqrestore(&acpi_bus_event_lock, flags); |
381 | 382 | ||
382 | if (!entry) | 383 | if (!entry) |
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index 0f4bf5d72835..85c016bdfd38 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -32,19 +32,12 @@ | |||
32 | #include <linux/kernel.h> | 32 | #include <linux/kernel.h> |
33 | #include <linux/delay.h> | 33 | #include <linux/delay.h> |
34 | #include <linux/platform_device.h> | 34 | #include <linux/platform_device.h> |
35 | |||
36 | #include <linux/init.h> | 35 | #include <linux/init.h> |
37 | #include <linux/ide.h> | 36 | #include <linux/ide.h> |
38 | #include <linux/sysdev.h> | 37 | #include <linux/scatterlist.h> |
39 | |||
40 | #include <linux/dma-mapping.h> | ||
41 | |||
42 | #include "ide-timing.h" | ||
43 | 38 | ||
44 | #include <asm/io.h> | ||
45 | #include <asm/mach-au1x00/au1xxx.h> | 39 | #include <asm/mach-au1x00/au1xxx.h> |
46 | #include <asm/mach-au1x00/au1xxx_dbdma.h> | 40 | #include <asm/mach-au1x00/au1xxx_dbdma.h> |
47 | |||
48 | #include <asm/mach-au1x00/au1xxx_ide.h> | 41 | #include <asm/mach-au1x00/au1xxx_ide.h> |
49 | 42 | ||
50 | #define DRV_NAME "au1200-ide" | 43 | #define DRV_NAME "au1200-ide" |
@@ -56,6 +49,8 @@ | |||
56 | static _auide_hwif auide_hwif; | 49 | static _auide_hwif auide_hwif; |
57 | static int dbdma_init_done; | 50 | static int dbdma_init_done; |
58 | 51 | ||
52 | static int auide_ddma_init(_auide_hwif *auide); | ||
53 | |||
59 | #if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA) | 54 | #if defined(CONFIG_BLK_DEV_IDE_AU1XXX_PIO_DBDMA) |
60 | 55 | ||
61 | void auide_insw(unsigned long port, void *addr, u32 count) | 56 | void auide_insw(unsigned long port, void *addr, u32 count) |
@@ -591,13 +586,14 @@ static int au_ide_probe(struct device *dev) | |||
591 | goto out; | 586 | goto out; |
592 | } | 587 | } |
593 | 588 | ||
594 | if (!request_mem_region (res->start, res->end-res->start, pdev->name)) { | 589 | if (!request_mem_region(res->start, res->end - res->start + 1, |
590 | pdev->name)) { | ||
595 | pr_debug("%s: request_mem_region failed\n", DRV_NAME); | 591 | pr_debug("%s: request_mem_region failed\n", DRV_NAME); |
596 | ret = -EBUSY; | 592 | ret = -EBUSY; |
597 | goto out; | 593 | goto out; |
598 | } | 594 | } |
599 | 595 | ||
600 | ahwif->regbase = (u32)ioremap(res->start, res->end-res->start); | 596 | ahwif->regbase = (u32)ioremap(res->start, res->end - res->start + 1); |
601 | if (ahwif->regbase == 0) { | 597 | if (ahwif->regbase == 0) { |
602 | ret = -ENOMEM; | 598 | ret = -ENOMEM; |
603 | goto out; | 599 | goto out; |
@@ -682,7 +678,7 @@ static int au_ide_remove(struct device *dev) | |||
682 | iounmap((void *)ahwif->regbase); | 678 | iounmap((void *)ahwif->regbase); |
683 | 679 | ||
684 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 680 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
685 | release_mem_region(res->start, res->end - res->start); | 681 | release_mem_region(res->start, res->end - res->start + 1); |
686 | 682 | ||
687 | return 0; | 683 | return 0; |
688 | } | 684 | } |
diff --git a/drivers/ide/pci/it821x.c b/drivers/ide/pci/it821x.c index 1597f0cc1bf1..d8a167451fd6 100644 --- a/drivers/ide/pci/it821x.c +++ b/drivers/ide/pci/it821x.c | |||
@@ -667,7 +667,7 @@ static int __init it821x_ide_init(void) | |||
667 | module_init(it821x_ide_init); | 667 | module_init(it821x_ide_init); |
668 | 668 | ||
669 | module_param_named(noraid, it8212_noraid, int, S_IRUGO); | 669 | module_param_named(noraid, it8212_noraid, int, S_IRUGO); |
670 | MODULE_PARM_DESC(it8212_noraid, "Force card into bypass mode"); | 670 | MODULE_PARM_DESC(noraid, "Force card into bypass mode"); |
671 | 671 | ||
672 | MODULE_AUTHOR("Alan Cox"); | 672 | MODULE_AUTHOR("Alan Cox"); |
673 | MODULE_DESCRIPTION("PCI driver module for the ITE 821x"); | 673 | MODULE_DESCRIPTION("PCI driver module for the ITE 821x"); |
diff --git a/drivers/leds/leds-ams-delta.c b/drivers/leds/leds-ams-delta.c index 9e3077463d84..c37bb0d5a0c5 100644 --- a/drivers/leds/leds-ams-delta.c +++ b/drivers/leds/leds-ams-delta.c | |||
@@ -140,6 +140,7 @@ static struct platform_driver ams_delta_led_driver = { | |||
140 | .resume = ams_delta_led_resume, | 140 | .resume = ams_delta_led_resume, |
141 | .driver = { | 141 | .driver = { |
142 | .name = "ams-delta-led", | 142 | .name = "ams-delta-led", |
143 | .owner = THIS_MODULE, | ||
143 | }, | 144 | }, |
144 | }; | 145 | }; |
145 | 146 | ||
@@ -159,3 +160,4 @@ module_exit(ams_delta_led_exit); | |||
159 | MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>"); | 160 | MODULE_AUTHOR("Jonathan McDowell <noodles@earth.li>"); |
160 | MODULE_DESCRIPTION("Amstrad Delta LED driver"); | 161 | MODULE_DESCRIPTION("Amstrad Delta LED driver"); |
161 | MODULE_LICENSE("GPL"); | 162 | MODULE_LICENSE("GPL"); |
163 | MODULE_ALIAS("platform:ams-delta-led"); | ||
diff --git a/drivers/leds/leds-atmel-pwm.c b/drivers/leds/leds-atmel-pwm.c index af61f55571fe..28db6c1444ed 100644 --- a/drivers/leds/leds-atmel-pwm.c +++ b/drivers/leds/leds-atmel-pwm.c | |||
@@ -132,6 +132,9 @@ static int __exit pwmled_remove(struct platform_device *pdev) | |||
132 | return 0; | 132 | return 0; |
133 | } | 133 | } |
134 | 134 | ||
135 | /* work with hotplug and coldplug */ | ||
136 | MODULE_ALIAS("platform:leds-atmel-pwm"); | ||
137 | |||
135 | static struct platform_driver pwmled_driver = { | 138 | static struct platform_driver pwmled_driver = { |
136 | .driver = { | 139 | .driver = { |
137 | .name = "leds-atmel-pwm", | 140 | .name = "leds-atmel-pwm", |
diff --git a/drivers/leds/leds-clevo-mail.c b/drivers/leds/leds-clevo-mail.c index 6c3d33b8e383..5750b08b601f 100644 --- a/drivers/leds/leds-clevo-mail.c +++ b/drivers/leds/leds-clevo-mail.c | |||
@@ -170,6 +170,7 @@ static struct platform_driver clevo_mail_led_driver = { | |||
170 | .resume = clevo_mail_led_resume, | 170 | .resume = clevo_mail_led_resume, |
171 | .driver = { | 171 | .driver = { |
172 | .name = KBUILD_MODNAME, | 172 | .name = KBUILD_MODNAME, |
173 | .owner = THIS_MODULE, | ||
173 | }, | 174 | }, |
174 | }; | 175 | }; |
175 | 176 | ||
diff --git a/drivers/leds/leds-cm-x270.c b/drivers/leds/leds-cm-x270.c index 9aebef02a974..accc7eddb788 100644 --- a/drivers/leds/leds-cm-x270.c +++ b/drivers/leds/leds-cm-x270.c | |||
@@ -101,6 +101,7 @@ static struct platform_driver cmx270led_driver = { | |||
101 | #endif | 101 | #endif |
102 | .driver = { | 102 | .driver = { |
103 | .name = "cm-x270-led", | 103 | .name = "cm-x270-led", |
104 | .owner = THIS_MODULE, | ||
104 | }, | 105 | }, |
105 | }; | 106 | }; |
106 | 107 | ||
@@ -120,3 +121,4 @@ module_exit(cmx270led_exit); | |||
120 | MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>"); | 121 | MODULE_AUTHOR("Mike Rapoport <mike@compulab.co.il>"); |
121 | MODULE_DESCRIPTION("CM-x270 LED driver"); | 122 | MODULE_DESCRIPTION("CM-x270 LED driver"); |
122 | MODULE_LICENSE("GPL"); | 123 | MODULE_LICENSE("GPL"); |
124 | MODULE_ALIAS("platform:cm-x270-led"); | ||
diff --git a/drivers/leds/leds-cobalt-qube.c b/drivers/leds/leds-cobalt-qube.c index d2b54b53d80a..096881a11b1a 100644 --- a/drivers/leds/leds-cobalt-qube.c +++ b/drivers/leds/leds-cobalt-qube.c | |||
@@ -75,6 +75,9 @@ static int __devexit cobalt_qube_led_remove(struct platform_device *pdev) | |||
75 | return 0; | 75 | return 0; |
76 | } | 76 | } |
77 | 77 | ||
78 | /* work with hotplug and coldplug */ | ||
79 | MODULE_ALIAS("platform:cobalt-qube-leds"); | ||
80 | |||
78 | static struct platform_driver cobalt_qube_led_driver = { | 81 | static struct platform_driver cobalt_qube_led_driver = { |
79 | .probe = cobalt_qube_led_probe, | 82 | .probe = cobalt_qube_led_probe, |
80 | .remove = __devexit_p(cobalt_qube_led_remove), | 83 | .remove = __devexit_p(cobalt_qube_led_remove), |
diff --git a/drivers/leds/leds-corgi.c b/drivers/leds/leds-corgi.c index e45f6c4b59ba..29e931f89f9c 100644 --- a/drivers/leds/leds-corgi.c +++ b/drivers/leds/leds-corgi.c | |||
@@ -99,6 +99,7 @@ static struct platform_driver corgiled_driver = { | |||
99 | #endif | 99 | #endif |
100 | .driver = { | 100 | .driver = { |
101 | .name = "corgi-led", | 101 | .name = "corgi-led", |
102 | .owner = THIS_MODULE, | ||
102 | }, | 103 | }, |
103 | }; | 104 | }; |
104 | 105 | ||
@@ -118,3 +119,4 @@ module_exit(corgiled_exit); | |||
118 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); | 119 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); |
119 | MODULE_DESCRIPTION("Corgi LED driver"); | 120 | MODULE_DESCRIPTION("Corgi LED driver"); |
120 | MODULE_LICENSE("GPL"); | 121 | MODULE_LICENSE("GPL"); |
122 | MODULE_ALIAS("platform:corgi-led"); | ||
diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c index 4c0b05852cb6..1aae8b332134 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c | |||
@@ -199,3 +199,4 @@ module_exit(gpio_led_exit); | |||
199 | MODULE_AUTHOR("Raphael Assenat <raph@8d.com>"); | 199 | MODULE_AUTHOR("Raphael Assenat <raph@8d.com>"); |
200 | MODULE_DESCRIPTION("GPIO LED driver"); | 200 | MODULE_DESCRIPTION("GPIO LED driver"); |
201 | MODULE_LICENSE("GPL"); | 201 | MODULE_LICENSE("GPL"); |
202 | MODULE_ALIAS("platform:leds-gpio"); | ||
diff --git a/drivers/leds/leds-h1940.c b/drivers/leds/leds-h1940.c index 677c99325be5..6e51c9b61027 100644 --- a/drivers/leds/leds-h1940.c +++ b/drivers/leds/leds-h1940.c | |||
@@ -139,6 +139,7 @@ static int h1940leds_remove(struct platform_device *pdev) | |||
139 | static struct platform_driver h1940leds_driver = { | 139 | static struct platform_driver h1940leds_driver = { |
140 | .driver = { | 140 | .driver = { |
141 | .name = "h1940-leds", | 141 | .name = "h1940-leds", |
142 | .owner = THIS_MODULE, | ||
142 | }, | 143 | }, |
143 | .probe = h1940leds_probe, | 144 | .probe = h1940leds_probe, |
144 | .remove = h1940leds_remove, | 145 | .remove = h1940leds_remove, |
@@ -161,3 +162,4 @@ module_exit(h1940leds_exit); | |||
161 | MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>"); | 162 | MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>"); |
162 | MODULE_DESCRIPTION("LED driver for the iPAQ H1940"); | 163 | MODULE_DESCRIPTION("LED driver for the iPAQ H1940"); |
163 | MODULE_LICENSE("GPL"); | 164 | MODULE_LICENSE("GPL"); |
165 | MODULE_ALIAS("platform:h1940-leds"); | ||
diff --git a/drivers/leds/leds-hp6xx.c b/drivers/leds/leds-hp6xx.c index 82d4ec384797..870f5a3789e8 100644 --- a/drivers/leds/leds-hp6xx.c +++ b/drivers/leds/leds-hp6xx.c | |||
@@ -90,6 +90,9 @@ static int hp6xxled_remove(struct platform_device *pdev) | |||
90 | return 0; | 90 | return 0; |
91 | } | 91 | } |
92 | 92 | ||
93 | /* work with hotplug and coldplug */ | ||
94 | MODULE_ALIAS("platform:hp6xx-led"); | ||
95 | |||
93 | static struct platform_driver hp6xxled_driver = { | 96 | static struct platform_driver hp6xxled_driver = { |
94 | .probe = hp6xxled_probe, | 97 | .probe = hp6xxled_probe, |
95 | .remove = hp6xxled_remove, | 98 | .remove = hp6xxled_remove, |
@@ -99,6 +102,7 @@ static struct platform_driver hp6xxled_driver = { | |||
99 | #endif | 102 | #endif |
100 | .driver = { | 103 | .driver = { |
101 | .name = "hp6xx-led", | 104 | .name = "hp6xx-led", |
105 | .owner = THIS_MODULE, | ||
102 | }, | 106 | }, |
103 | }; | 107 | }; |
104 | 108 | ||
diff --git a/drivers/leds/leds-s3c24xx.c b/drivers/leds/leds-s3c24xx.c index 0fd640751294..0d10e119d8f5 100644 --- a/drivers/leds/leds-s3c24xx.c +++ b/drivers/leds/leds-s3c24xx.c | |||
@@ -160,3 +160,4 @@ module_exit(s3c24xx_led_exit); | |||
160 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); | 160 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); |
161 | MODULE_DESCRIPTION("S3C24XX LED driver"); | 161 | MODULE_DESCRIPTION("S3C24XX LED driver"); |
162 | MODULE_LICENSE("GPL"); | 162 | MODULE_LICENSE("GPL"); |
163 | MODULE_ALIAS("platform:s3c24xx_led"); | ||
diff --git a/drivers/leds/leds-spitz.c b/drivers/leds/leds-spitz.c index 93e1012b17e6..87007cc362c1 100644 --- a/drivers/leds/leds-spitz.c +++ b/drivers/leds/leds-spitz.c | |||
@@ -105,6 +105,7 @@ static struct platform_driver spitzled_driver = { | |||
105 | #endif | 105 | #endif |
106 | .driver = { | 106 | .driver = { |
107 | .name = "spitz-led", | 107 | .name = "spitz-led", |
108 | .owner = THIS_MODULE, | ||
108 | }, | 109 | }, |
109 | }; | 110 | }; |
110 | 111 | ||
@@ -124,3 +125,4 @@ module_exit(spitzled_exit); | |||
124 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); | 125 | MODULE_AUTHOR("Richard Purdie <rpurdie@openedhand.com>"); |
125 | MODULE_DESCRIPTION("Spitz LED driver"); | 126 | MODULE_DESCRIPTION("Spitz LED driver"); |
126 | MODULE_LICENSE("GPL"); | 127 | MODULE_LICENSE("GPL"); |
128 | MODULE_ALIAS("platform:spitz-led"); | ||
diff --git a/drivers/leds/leds-tosa.c b/drivers/leds/leds-tosa.c index 9e0a188fbb0a..7ebecc41a9be 100644 --- a/drivers/leds/leds-tosa.c +++ b/drivers/leds/leds-tosa.c | |||
@@ -109,6 +109,7 @@ static struct platform_driver tosaled_driver = { | |||
109 | .resume = tosaled_resume, | 109 | .resume = tosaled_resume, |
110 | .driver = { | 110 | .driver = { |
111 | .name = "tosa-led", | 111 | .name = "tosa-led", |
112 | .owner = THIS_MODULE, | ||
112 | }, | 113 | }, |
113 | }; | 114 | }; |
114 | 115 | ||
@@ -128,3 +129,4 @@ module_exit(tosaled_exit); | |||
128 | MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>"); | 129 | MODULE_AUTHOR("Dirk Opfer <Dirk@Opfer-Online.de>"); |
129 | MODULE_DESCRIPTION("Tosa LED driver"); | 130 | MODULE_DESCRIPTION("Tosa LED driver"); |
130 | MODULE_LICENSE("GPL"); | 131 | MODULE_LICENSE("GPL"); |
132 | MODULE_ALIAS("platform:tosa-led"); | ||
diff --git a/drivers/misc/atmel-ssc.c b/drivers/misc/atmel-ssc.c index 058ccac700d0..e171650766ce 100644 --- a/drivers/misc/atmel-ssc.c +++ b/drivers/misc/atmel-ssc.c | |||
@@ -154,6 +154,7 @@ static struct platform_driver ssc_driver = { | |||
154 | .remove = __devexit_p(ssc_remove), | 154 | .remove = __devexit_p(ssc_remove), |
155 | .driver = { | 155 | .driver = { |
156 | .name = "ssc", | 156 | .name = "ssc", |
157 | .owner = THIS_MODULE, | ||
157 | }, | 158 | }, |
158 | }; | 159 | }; |
159 | 160 | ||
@@ -172,3 +173,4 @@ module_exit(ssc_exit); | |||
172 | MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>"); | 173 | MODULE_AUTHOR("Hans-Christian Egtvedt <hcegtvedt@atmel.com>"); |
173 | MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91"); | 174 | MODULE_DESCRIPTION("SSC driver for Atmel AVR32 and AT91"); |
174 | MODULE_LICENSE("GPL"); | 175 | MODULE_LICENSE("GPL"); |
176 | MODULE_ALIAS("platform:ssc"); | ||
diff --git a/drivers/misc/atmel_pwm.c b/drivers/misc/atmel_pwm.c index f8d3b9a76cbd..0d5ce03cdff2 100644 --- a/drivers/misc/atmel_pwm.c +++ b/drivers/misc/atmel_pwm.c | |||
@@ -407,3 +407,4 @@ module_exit(pwm_exit); | |||
407 | 407 | ||
408 | MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module"); | 408 | MODULE_DESCRIPTION("Driver for AT32/AT91 PWM module"); |
409 | MODULE_LICENSE("GPL"); | 409 | MODULE_LICENSE("GPL"); |
410 | MODULE_ALIAS("platform:atmel_pwm"); | ||
diff --git a/drivers/misc/hdpuftrs/hdpu_cpustate.c b/drivers/misc/hdpuftrs/hdpu_cpustate.c index aa8ce7abe922..302e92418bbe 100644 --- a/drivers/misc/hdpuftrs/hdpu_cpustate.c +++ b/drivers/misc/hdpuftrs/hdpu_cpustate.c | |||
@@ -164,6 +164,7 @@ static struct platform_driver hdpu_cpustate_driver = { | |||
164 | .remove = hdpu_cpustate_remove, | 164 | .remove = hdpu_cpustate_remove, |
165 | .driver = { | 165 | .driver = { |
166 | .name = HDPU_CPUSTATE_NAME, | 166 | .name = HDPU_CPUSTATE_NAME, |
167 | .owner = THIS_MODULE, | ||
167 | }, | 168 | }, |
168 | }; | 169 | }; |
169 | 170 | ||
@@ -248,3 +249,4 @@ module_exit(cpustate_exit); | |||
248 | 249 | ||
249 | MODULE_AUTHOR("Brian Waite"); | 250 | MODULE_AUTHOR("Brian Waite"); |
250 | MODULE_LICENSE("GPL"); | 251 | MODULE_LICENSE("GPL"); |
252 | MODULE_ALIAS("platform:" HDPU_CPUSTATE_NAME); | ||
diff --git a/drivers/misc/hdpuftrs/hdpu_nexus.c b/drivers/misc/hdpuftrs/hdpu_nexus.c index 2887b2147980..2fa36f7a6eb3 100644 --- a/drivers/misc/hdpuftrs/hdpu_nexus.c +++ b/drivers/misc/hdpuftrs/hdpu_nexus.c | |||
@@ -55,6 +55,7 @@ static struct platform_driver hdpu_nexus_driver = { | |||
55 | .remove = hdpu_nexus_remove, | 55 | .remove = hdpu_nexus_remove, |
56 | .driver = { | 56 | .driver = { |
57 | .name = HDPU_NEXUS_NAME, | 57 | .name = HDPU_NEXUS_NAME, |
58 | .owner = THIS_MODULE, | ||
58 | }, | 59 | }, |
59 | }; | 60 | }; |
60 | 61 | ||
@@ -151,3 +152,4 @@ module_exit(nexus_exit); | |||
151 | 152 | ||
152 | MODULE_AUTHOR("Brian Waite"); | 153 | MODULE_AUTHOR("Brian Waite"); |
153 | MODULE_LICENSE("GPL"); | 154 | MODULE_LICENSE("GPL"); |
155 | MODULE_ALIAS("platform:" HDPU_NEXUS_NAME); | ||
diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c index 21acecc9fe3a..a28fc2f68ce2 100644 --- a/drivers/mmc/host/at91_mci.c +++ b/drivers/mmc/host/at91_mci.c | |||
@@ -1075,3 +1075,4 @@ module_exit(at91_mci_exit); | |||
1075 | MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver"); | 1075 | MODULE_DESCRIPTION("AT91 Multimedia Card Interface driver"); |
1076 | MODULE_AUTHOR("Nick Randell"); | 1076 | MODULE_AUTHOR("Nick Randell"); |
1077 | MODULE_LICENSE("GPL"); | 1077 | MODULE_LICENSE("GPL"); |
1078 | MODULE_ALIAS("platform:at91_mci"); | ||
diff --git a/drivers/mmc/host/au1xmmc.c b/drivers/mmc/host/au1xmmc.c index c3926eb3bf43..cc5f7bc546af 100644 --- a/drivers/mmc/host/au1xmmc.c +++ b/drivers/mmc/host/au1xmmc.c | |||
@@ -998,6 +998,7 @@ static struct platform_driver au1xmmc_driver = { | |||
998 | .resume = NULL, | 998 | .resume = NULL, |
999 | .driver = { | 999 | .driver = { |
1000 | .name = DRIVER_NAME, | 1000 | .name = DRIVER_NAME, |
1001 | .owner = THIS_MODULE, | ||
1001 | }, | 1002 | }, |
1002 | }; | 1003 | }; |
1003 | 1004 | ||
@@ -1018,5 +1019,6 @@ module_exit(au1xmmc_exit); | |||
1018 | MODULE_AUTHOR("Advanced Micro Devices, Inc"); | 1019 | MODULE_AUTHOR("Advanced Micro Devices, Inc"); |
1019 | MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX"); | 1020 | MODULE_DESCRIPTION("MMC/SD driver for the Alchemy Au1XXX"); |
1020 | MODULE_LICENSE("GPL"); | 1021 | MODULE_LICENSE("GPL"); |
1022 | MODULE_ALIAS("platform:au1xxx-mmc"); | ||
1021 | #endif | 1023 | #endif |
1022 | 1024 | ||
diff --git a/drivers/mmc/host/imxmmc.c b/drivers/mmc/host/imxmmc.c index f2070a19cfa7..95f33e87a99c 100644 --- a/drivers/mmc/host/imxmmc.c +++ b/drivers/mmc/host/imxmmc.c | |||
@@ -1128,6 +1128,7 @@ static struct platform_driver imxmci_driver = { | |||
1128 | .resume = imxmci_resume, | 1128 | .resume = imxmci_resume, |
1129 | .driver = { | 1129 | .driver = { |
1130 | .name = DRIVER_NAME, | 1130 | .name = DRIVER_NAME, |
1131 | .owner = THIS_MODULE, | ||
1131 | } | 1132 | } |
1132 | }; | 1133 | }; |
1133 | 1134 | ||
@@ -1147,3 +1148,4 @@ module_exit(imxmci_exit); | |||
1147 | MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver"); | 1148 | MODULE_DESCRIPTION("i.MX Multimedia Card Interface Driver"); |
1148 | MODULE_AUTHOR("Sascha Hauer, Pengutronix"); | 1149 | MODULE_AUTHOR("Sascha Hauer, Pengutronix"); |
1149 | MODULE_LICENSE("GPL"); | 1150 | MODULE_LICENSE("GPL"); |
1151 | MODULE_ALIAS("platform:imx-mmc"); | ||
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c index c9dfeb15b487..90c358b57d1c 100644 --- a/drivers/mmc/host/omap.c +++ b/drivers/mmc/host/omap.c | |||
@@ -1255,6 +1255,7 @@ static struct platform_driver mmc_omap_driver = { | |||
1255 | .resume = mmc_omap_resume, | 1255 | .resume = mmc_omap_resume, |
1256 | .driver = { | 1256 | .driver = { |
1257 | .name = DRIVER_NAME, | 1257 | .name = DRIVER_NAME, |
1258 | .owner = THIS_MODULE, | ||
1258 | }, | 1259 | }, |
1259 | }; | 1260 | }; |
1260 | 1261 | ||
@@ -1273,5 +1274,5 @@ module_exit(mmc_omap_exit); | |||
1273 | 1274 | ||
1274 | MODULE_DESCRIPTION("OMAP Multimedia Card driver"); | 1275 | MODULE_DESCRIPTION("OMAP Multimedia Card driver"); |
1275 | MODULE_LICENSE("GPL"); | 1276 | MODULE_LICENSE("GPL"); |
1276 | MODULE_ALIAS(DRIVER_NAME); | 1277 | MODULE_ALIAS("platform:" DRIVER_NAME); |
1277 | MODULE_AUTHOR("Juha Yrjölä"); | 1278 | MODULE_AUTHOR("Juha Yrjölä"); |
diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c index 1ea8482037bb..65210fca37ed 100644 --- a/drivers/mmc/host/pxamci.c +++ b/drivers/mmc/host/pxamci.c | |||
@@ -693,6 +693,7 @@ static struct platform_driver pxamci_driver = { | |||
693 | .resume = pxamci_resume, | 693 | .resume = pxamci_resume, |
694 | .driver = { | 694 | .driver = { |
695 | .name = DRIVER_NAME, | 695 | .name = DRIVER_NAME, |
696 | .owner = THIS_MODULE, | ||
696 | }, | 697 | }, |
697 | }; | 698 | }; |
698 | 699 | ||
@@ -711,3 +712,4 @@ module_exit(pxamci_exit); | |||
711 | 712 | ||
712 | MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver"); | 713 | MODULE_DESCRIPTION("PXA Multimedia Card Interface Driver"); |
713 | MODULE_LICENSE("GPL"); | 714 | MODULE_LICENSE("GPL"); |
715 | MODULE_ALIAS("platform:pxa2xx-mci"); | ||
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c index 4d5f37421874..be624a049c67 100644 --- a/drivers/mmc/host/wbsd.c +++ b/drivers/mmc/host/wbsd.c | |||
@@ -1948,6 +1948,7 @@ static struct platform_driver wbsd_driver = { | |||
1948 | .resume = wbsd_platform_resume, | 1948 | .resume = wbsd_platform_resume, |
1949 | .driver = { | 1949 | .driver = { |
1950 | .name = DRIVER_NAME, | 1950 | .name = DRIVER_NAME, |
1951 | .owner = THIS_MODULE, | ||
1951 | }, | 1952 | }, |
1952 | }; | 1953 | }; |
1953 | 1954 | ||
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 25f1337cd02c..59dce6aa0865 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -148,7 +148,7 @@ static inline void b44_sync_dma_desc_for_device(struct ssb_device *sdev, | |||
148 | unsigned long offset, | 148 | unsigned long offset, |
149 | enum dma_data_direction dir) | 149 | enum dma_data_direction dir) |
150 | { | 150 | { |
151 | dma_sync_single_range_for_device(sdev->dev, dma_base, | 151 | dma_sync_single_range_for_device(sdev->dma_dev, dma_base, |
152 | offset & dma_desc_align_mask, | 152 | offset & dma_desc_align_mask, |
153 | dma_desc_sync_size, dir); | 153 | dma_desc_sync_size, dir); |
154 | } | 154 | } |
@@ -158,7 +158,7 @@ static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev, | |||
158 | unsigned long offset, | 158 | unsigned long offset, |
159 | enum dma_data_direction dir) | 159 | enum dma_data_direction dir) |
160 | { | 160 | { |
161 | dma_sync_single_range_for_cpu(sdev->dev, dma_base, | 161 | dma_sync_single_range_for_cpu(sdev->dma_dev, dma_base, |
162 | offset & dma_desc_align_mask, | 162 | offset & dma_desc_align_mask, |
163 | dma_desc_sync_size, dir); | 163 | dma_desc_sync_size, dir); |
164 | } | 164 | } |
@@ -613,7 +613,7 @@ static void b44_tx(struct b44 *bp) | |||
613 | 613 | ||
614 | BUG_ON(skb == NULL); | 614 | BUG_ON(skb == NULL); |
615 | 615 | ||
616 | dma_unmap_single(bp->sdev->dev, | 616 | dma_unmap_single(bp->sdev->dma_dev, |
617 | rp->mapping, | 617 | rp->mapping, |
618 | skb->len, | 618 | skb->len, |
619 | DMA_TO_DEVICE); | 619 | DMA_TO_DEVICE); |
@@ -653,7 +653,7 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
653 | if (skb == NULL) | 653 | if (skb == NULL) |
654 | return -ENOMEM; | 654 | return -ENOMEM; |
655 | 655 | ||
656 | mapping = dma_map_single(bp->sdev->dev, skb->data, | 656 | mapping = dma_map_single(bp->sdev->dma_dev, skb->data, |
657 | RX_PKT_BUF_SZ, | 657 | RX_PKT_BUF_SZ, |
658 | DMA_FROM_DEVICE); | 658 | DMA_FROM_DEVICE); |
659 | 659 | ||
@@ -663,19 +663,19 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
663 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { | 663 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { |
664 | /* Sigh... */ | 664 | /* Sigh... */ |
665 | if (!dma_mapping_error(mapping)) | 665 | if (!dma_mapping_error(mapping)) |
666 | dma_unmap_single(bp->sdev->dev, mapping, | 666 | dma_unmap_single(bp->sdev->dma_dev, mapping, |
667 | RX_PKT_BUF_SZ, DMA_FROM_DEVICE); | 667 | RX_PKT_BUF_SZ, DMA_FROM_DEVICE); |
668 | dev_kfree_skb_any(skb); | 668 | dev_kfree_skb_any(skb); |
669 | skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA); | 669 | skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA); |
670 | if (skb == NULL) | 670 | if (skb == NULL) |
671 | return -ENOMEM; | 671 | return -ENOMEM; |
672 | mapping = dma_map_single(bp->sdev->dev, skb->data, | 672 | mapping = dma_map_single(bp->sdev->dma_dev, skb->data, |
673 | RX_PKT_BUF_SZ, | 673 | RX_PKT_BUF_SZ, |
674 | DMA_FROM_DEVICE); | 674 | DMA_FROM_DEVICE); |
675 | if (dma_mapping_error(mapping) || | 675 | if (dma_mapping_error(mapping) || |
676 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { | 676 | mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { |
677 | if (!dma_mapping_error(mapping)) | 677 | if (!dma_mapping_error(mapping)) |
678 | dma_unmap_single(bp->sdev->dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE); | 678 | dma_unmap_single(bp->sdev->dma_dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE); |
679 | dev_kfree_skb_any(skb); | 679 | dev_kfree_skb_any(skb); |
680 | return -ENOMEM; | 680 | return -ENOMEM; |
681 | } | 681 | } |
@@ -750,7 +750,7 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked) | |||
750 | dest_idx * sizeof(dest_desc), | 750 | dest_idx * sizeof(dest_desc), |
751 | DMA_BIDIRECTIONAL); | 751 | DMA_BIDIRECTIONAL); |
752 | 752 | ||
753 | dma_sync_single_for_device(bp->sdev->dev, le32_to_cpu(src_desc->addr), | 753 | dma_sync_single_for_device(bp->sdev->dma_dev, le32_to_cpu(src_desc->addr), |
754 | RX_PKT_BUF_SZ, | 754 | RX_PKT_BUF_SZ, |
755 | DMA_FROM_DEVICE); | 755 | DMA_FROM_DEVICE); |
756 | } | 756 | } |
@@ -772,7 +772,7 @@ static int b44_rx(struct b44 *bp, int budget) | |||
772 | struct rx_header *rh; | 772 | struct rx_header *rh; |
773 | u16 len; | 773 | u16 len; |
774 | 774 | ||
775 | dma_sync_single_for_cpu(bp->sdev->dev, map, | 775 | dma_sync_single_for_cpu(bp->sdev->dma_dev, map, |
776 | RX_PKT_BUF_SZ, | 776 | RX_PKT_BUF_SZ, |
777 | DMA_FROM_DEVICE); | 777 | DMA_FROM_DEVICE); |
778 | rh = (struct rx_header *) skb->data; | 778 | rh = (struct rx_header *) skb->data; |
@@ -806,7 +806,7 @@ static int b44_rx(struct b44 *bp, int budget) | |||
806 | skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); | 806 | skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod); |
807 | if (skb_size < 0) | 807 | if (skb_size < 0) |
808 | goto drop_it; | 808 | goto drop_it; |
809 | dma_unmap_single(bp->sdev->dev, map, | 809 | dma_unmap_single(bp->sdev->dma_dev, map, |
810 | skb_size, DMA_FROM_DEVICE); | 810 | skb_size, DMA_FROM_DEVICE); |
811 | /* Leave out rx_header */ | 811 | /* Leave out rx_header */ |
812 | skb_put(skb, len + RX_PKT_OFFSET); | 812 | skb_put(skb, len + RX_PKT_OFFSET); |
@@ -966,24 +966,24 @@ static int b44_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
966 | goto err_out; | 966 | goto err_out; |
967 | } | 967 | } |
968 | 968 | ||
969 | mapping = dma_map_single(bp->sdev->dev, skb->data, len, DMA_TO_DEVICE); | 969 | mapping = dma_map_single(bp->sdev->dma_dev, skb->data, len, DMA_TO_DEVICE); |
970 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { | 970 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { |
971 | struct sk_buff *bounce_skb; | 971 | struct sk_buff *bounce_skb; |
972 | 972 | ||
973 | /* Chip can't handle DMA to/from >1GB, use bounce buffer */ | 973 | /* Chip can't handle DMA to/from >1GB, use bounce buffer */ |
974 | if (!dma_mapping_error(mapping)) | 974 | if (!dma_mapping_error(mapping)) |
975 | dma_unmap_single(bp->sdev->dev, mapping, len, | 975 | dma_unmap_single(bp->sdev->dma_dev, mapping, len, |
976 | DMA_TO_DEVICE); | 976 | DMA_TO_DEVICE); |
977 | 977 | ||
978 | bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA); | 978 | bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA); |
979 | if (!bounce_skb) | 979 | if (!bounce_skb) |
980 | goto err_out; | 980 | goto err_out; |
981 | 981 | ||
982 | mapping = dma_map_single(bp->sdev->dev, bounce_skb->data, | 982 | mapping = dma_map_single(bp->sdev->dma_dev, bounce_skb->data, |
983 | len, DMA_TO_DEVICE); | 983 | len, DMA_TO_DEVICE); |
984 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { | 984 | if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { |
985 | if (!dma_mapping_error(mapping)) | 985 | if (!dma_mapping_error(mapping)) |
986 | dma_unmap_single(bp->sdev->dev, mapping, | 986 | dma_unmap_single(bp->sdev->dma_dev, mapping, |
987 | len, DMA_TO_DEVICE); | 987 | len, DMA_TO_DEVICE); |
988 | dev_kfree_skb_any(bounce_skb); | 988 | dev_kfree_skb_any(bounce_skb); |
989 | goto err_out; | 989 | goto err_out; |
@@ -1082,7 +1082,7 @@ static void b44_free_rings(struct b44 *bp) | |||
1082 | 1082 | ||
1083 | if (rp->skb == NULL) | 1083 | if (rp->skb == NULL) |
1084 | continue; | 1084 | continue; |
1085 | dma_unmap_single(bp->sdev->dev, rp->mapping, RX_PKT_BUF_SZ, | 1085 | dma_unmap_single(bp->sdev->dma_dev, rp->mapping, RX_PKT_BUF_SZ, |
1086 | DMA_FROM_DEVICE); | 1086 | DMA_FROM_DEVICE); |
1087 | dev_kfree_skb_any(rp->skb); | 1087 | dev_kfree_skb_any(rp->skb); |
1088 | rp->skb = NULL; | 1088 | rp->skb = NULL; |
@@ -1094,7 +1094,7 @@ static void b44_free_rings(struct b44 *bp) | |||
1094 | 1094 | ||
1095 | if (rp->skb == NULL) | 1095 | if (rp->skb == NULL) |
1096 | continue; | 1096 | continue; |
1097 | dma_unmap_single(bp->sdev->dev, rp->mapping, rp->skb->len, | 1097 | dma_unmap_single(bp->sdev->dma_dev, rp->mapping, rp->skb->len, |
1098 | DMA_TO_DEVICE); | 1098 | DMA_TO_DEVICE); |
1099 | dev_kfree_skb_any(rp->skb); | 1099 | dev_kfree_skb_any(rp->skb); |
1100 | rp->skb = NULL; | 1100 | rp->skb = NULL; |
@@ -1117,12 +1117,12 @@ static void b44_init_rings(struct b44 *bp) | |||
1117 | memset(bp->tx_ring, 0, B44_TX_RING_BYTES); | 1117 | memset(bp->tx_ring, 0, B44_TX_RING_BYTES); |
1118 | 1118 | ||
1119 | if (bp->flags & B44_FLAG_RX_RING_HACK) | 1119 | if (bp->flags & B44_FLAG_RX_RING_HACK) |
1120 | dma_sync_single_for_device(bp->sdev->dev, bp->rx_ring_dma, | 1120 | dma_sync_single_for_device(bp->sdev->dma_dev, bp->rx_ring_dma, |
1121 | DMA_TABLE_BYTES, | 1121 | DMA_TABLE_BYTES, |
1122 | DMA_BIDIRECTIONAL); | 1122 | DMA_BIDIRECTIONAL); |
1123 | 1123 | ||
1124 | if (bp->flags & B44_FLAG_TX_RING_HACK) | 1124 | if (bp->flags & B44_FLAG_TX_RING_HACK) |
1125 | dma_sync_single_for_device(bp->sdev->dev, bp->tx_ring_dma, | 1125 | dma_sync_single_for_device(bp->sdev->dma_dev, bp->tx_ring_dma, |
1126 | DMA_TABLE_BYTES, | 1126 | DMA_TABLE_BYTES, |
1127 | DMA_TO_DEVICE); | 1127 | DMA_TO_DEVICE); |
1128 | 1128 | ||
@@ -1144,24 +1144,24 @@ static void b44_free_consistent(struct b44 *bp) | |||
1144 | bp->tx_buffers = NULL; | 1144 | bp->tx_buffers = NULL; |
1145 | if (bp->rx_ring) { | 1145 | if (bp->rx_ring) { |
1146 | if (bp->flags & B44_FLAG_RX_RING_HACK) { | 1146 | if (bp->flags & B44_FLAG_RX_RING_HACK) { |
1147 | dma_unmap_single(bp->sdev->dev, bp->rx_ring_dma, | 1147 | dma_unmap_single(bp->sdev->dma_dev, bp->rx_ring_dma, |
1148 | DMA_TABLE_BYTES, | 1148 | DMA_TABLE_BYTES, |
1149 | DMA_BIDIRECTIONAL); | 1149 | DMA_BIDIRECTIONAL); |
1150 | kfree(bp->rx_ring); | 1150 | kfree(bp->rx_ring); |
1151 | } else | 1151 | } else |
1152 | dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES, | 1152 | dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES, |
1153 | bp->rx_ring, bp->rx_ring_dma); | 1153 | bp->rx_ring, bp->rx_ring_dma); |
1154 | bp->rx_ring = NULL; | 1154 | bp->rx_ring = NULL; |
1155 | bp->flags &= ~B44_FLAG_RX_RING_HACK; | 1155 | bp->flags &= ~B44_FLAG_RX_RING_HACK; |
1156 | } | 1156 | } |
1157 | if (bp->tx_ring) { | 1157 | if (bp->tx_ring) { |
1158 | if (bp->flags & B44_FLAG_TX_RING_HACK) { | 1158 | if (bp->flags & B44_FLAG_TX_RING_HACK) { |
1159 | dma_unmap_single(bp->sdev->dev, bp->tx_ring_dma, | 1159 | dma_unmap_single(bp->sdev->dma_dev, bp->tx_ring_dma, |
1160 | DMA_TABLE_BYTES, | 1160 | DMA_TABLE_BYTES, |
1161 | DMA_TO_DEVICE); | 1161 | DMA_TO_DEVICE); |
1162 | kfree(bp->tx_ring); | 1162 | kfree(bp->tx_ring); |
1163 | } else | 1163 | } else |
1164 | dma_free_coherent(bp->sdev->dev, DMA_TABLE_BYTES, | 1164 | dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES, |
1165 | bp->tx_ring, bp->tx_ring_dma); | 1165 | bp->tx_ring, bp->tx_ring_dma); |
1166 | bp->tx_ring = NULL; | 1166 | bp->tx_ring = NULL; |
1167 | bp->flags &= ~B44_FLAG_TX_RING_HACK; | 1167 | bp->flags &= ~B44_FLAG_TX_RING_HACK; |
@@ -1187,7 +1187,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
1187 | goto out_err; | 1187 | goto out_err; |
1188 | 1188 | ||
1189 | size = DMA_TABLE_BYTES; | 1189 | size = DMA_TABLE_BYTES; |
1190 | bp->rx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->rx_ring_dma, gfp); | 1190 | bp->rx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->rx_ring_dma, gfp); |
1191 | if (!bp->rx_ring) { | 1191 | if (!bp->rx_ring) { |
1192 | /* Allocation may have failed due to pci_alloc_consistent | 1192 | /* Allocation may have failed due to pci_alloc_consistent |
1193 | insisting on use of GFP_DMA, which is more restrictive | 1193 | insisting on use of GFP_DMA, which is more restrictive |
@@ -1199,7 +1199,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
1199 | if (!rx_ring) | 1199 | if (!rx_ring) |
1200 | goto out_err; | 1200 | goto out_err; |
1201 | 1201 | ||
1202 | rx_ring_dma = dma_map_single(bp->sdev->dev, rx_ring, | 1202 | rx_ring_dma = dma_map_single(bp->sdev->dma_dev, rx_ring, |
1203 | DMA_TABLE_BYTES, | 1203 | DMA_TABLE_BYTES, |
1204 | DMA_BIDIRECTIONAL); | 1204 | DMA_BIDIRECTIONAL); |
1205 | 1205 | ||
@@ -1214,7 +1214,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
1214 | bp->flags |= B44_FLAG_RX_RING_HACK; | 1214 | bp->flags |= B44_FLAG_RX_RING_HACK; |
1215 | } | 1215 | } |
1216 | 1216 | ||
1217 | bp->tx_ring = dma_alloc_coherent(bp->sdev->dev, size, &bp->tx_ring_dma, gfp); | 1217 | bp->tx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->tx_ring_dma, gfp); |
1218 | if (!bp->tx_ring) { | 1218 | if (!bp->tx_ring) { |
1219 | /* Allocation may have failed due to dma_alloc_coherent | 1219 | /* Allocation may have failed due to dma_alloc_coherent |
1220 | insisting on use of GFP_DMA, which is more restrictive | 1220 | insisting on use of GFP_DMA, which is more restrictive |
@@ -1226,7 +1226,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp) | |||
1226 | if (!tx_ring) | 1226 | if (!tx_ring) |
1227 | goto out_err; | 1227 | goto out_err; |
1228 | 1228 | ||
1229 | tx_ring_dma = dma_map_single(bp->sdev->dev, tx_ring, | 1229 | tx_ring_dma = dma_map_single(bp->sdev->dma_dev, tx_ring, |
1230 | DMA_TABLE_BYTES, | 1230 | DMA_TABLE_BYTES, |
1231 | DMA_TO_DEVICE); | 1231 | DMA_TO_DEVICE); |
1232 | 1232 | ||
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 501e451be911..665341e43055 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c | |||
@@ -730,7 +730,7 @@ static void write_msg(struct console *con, const char *msg, unsigned int len) | |||
730 | 730 | ||
731 | static struct console netconsole = { | 731 | static struct console netconsole = { |
732 | .name = "netcon", | 732 | .name = "netcon", |
733 | .flags = CON_ENABLED | CON_PRINTBUFFER, | 733 | .flags = CON_ENABLED, |
734 | .write = write_msg, | 734 | .write = write_msg, |
735 | }; | 735 | }; |
736 | 736 | ||
@@ -749,6 +749,9 @@ static int __init init_netconsole(void) | |||
749 | err = PTR_ERR(nt); | 749 | err = PTR_ERR(nt); |
750 | goto fail; | 750 | goto fail; |
751 | } | 751 | } |
752 | /* Dump existing printks when we register */ | ||
753 | netconsole.flags |= CON_PRINTBUFFER; | ||
754 | |||
752 | spin_lock_irqsave(&target_list_lock, flags); | 755 | spin_lock_irqsave(&target_list_lock, flags); |
753 | list_add(&nt->list, &target_list); | 756 | list_add(&nt->list, &target_list); |
754 | spin_unlock_irqrestore(&target_list_lock, flags); | 757 | spin_unlock_irqrestore(&target_list_lock, flags); |
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c index ddbc6e475e28..c16de5129a71 100644 --- a/drivers/net/ps3_gelic_wireless.c +++ b/drivers/net/ps3_gelic_wireless.c | |||
@@ -512,13 +512,18 @@ static void gelic_wl_parse_ie(u8 *data, size_t len, | |||
512 | data, len); | 512 | data, len); |
513 | memset(ie_info, 0, sizeof(struct ie_info)); | 513 | memset(ie_info, 0, sizeof(struct ie_info)); |
514 | 514 | ||
515 | while (0 < data_left) { | 515 | while (2 <= data_left) { |
516 | item_id = *pos++; | 516 | item_id = *pos++; |
517 | item_len = *pos++; | 517 | item_len = *pos++; |
518 | data_left -= 2; | ||
519 | |||
520 | if (data_left < item_len) | ||
521 | break; | ||
518 | 522 | ||
519 | switch (item_id) { | 523 | switch (item_id) { |
520 | case MFIE_TYPE_GENERIC: | 524 | case MFIE_TYPE_GENERIC: |
521 | if (!memcmp(pos, wpa_oui, OUI_LEN) && | 525 | if ((OUI_LEN + 1 <= item_len) && |
526 | !memcmp(pos, wpa_oui, OUI_LEN) && | ||
522 | pos[OUI_LEN] == 0x01) { | 527 | pos[OUI_LEN] == 0x01) { |
523 | ie_info->wpa.data = pos - 2; | 528 | ie_info->wpa.data = pos - 2; |
524 | ie_info->wpa.len = item_len + 2; | 529 | ie_info->wpa.len = item_len + 2; |
@@ -535,7 +540,7 @@ static void gelic_wl_parse_ie(u8 *data, size_t len, | |||
535 | break; | 540 | break; |
536 | } | 541 | } |
537 | pos += item_len; | 542 | pos += item_len; |
538 | data_left -= item_len + 2; | 543 | data_left -= item_len; |
539 | } | 544 | } |
540 | pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__, | 545 | pr_debug("%s: wpa=%p,%d wpa2=%p,%d\n", __func__, |
541 | ie_info->wpa.data, ie_info->wpa.len, | 546 | ie_info->wpa.data, ie_info->wpa.len, |
diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c index 948eb1fe916b..48e912487b16 100644 --- a/drivers/net/wireless/b43/dma.c +++ b/drivers/net/wireless/b43/dma.c | |||
@@ -373,10 +373,10 @@ static inline | |||
373 | dma_addr_t dmaaddr; | 373 | dma_addr_t dmaaddr; |
374 | 374 | ||
375 | if (tx) { | 375 | if (tx) { |
376 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 376 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
377 | buf, len, DMA_TO_DEVICE); | 377 | buf, len, DMA_TO_DEVICE); |
378 | } else { | 378 | } else { |
379 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 379 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
380 | buf, len, DMA_FROM_DEVICE); | 380 | buf, len, DMA_FROM_DEVICE); |
381 | } | 381 | } |
382 | 382 | ||
@@ -388,9 +388,10 @@ static inline | |||
388 | dma_addr_t addr, size_t len, int tx) | 388 | dma_addr_t addr, size_t len, int tx) |
389 | { | 389 | { |
390 | if (tx) { | 390 | if (tx) { |
391 | dma_unmap_single(ring->dev->dev->dev, addr, len, DMA_TO_DEVICE); | 391 | dma_unmap_single(ring->dev->dev->dma_dev, |
392 | addr, len, DMA_TO_DEVICE); | ||
392 | } else { | 393 | } else { |
393 | dma_unmap_single(ring->dev->dev->dev, | 394 | dma_unmap_single(ring->dev->dev->dma_dev, |
394 | addr, len, DMA_FROM_DEVICE); | 395 | addr, len, DMA_FROM_DEVICE); |
395 | } | 396 | } |
396 | } | 397 | } |
@@ -400,7 +401,7 @@ static inline | |||
400 | dma_addr_t addr, size_t len) | 401 | dma_addr_t addr, size_t len) |
401 | { | 402 | { |
402 | B43_WARN_ON(ring->tx); | 403 | B43_WARN_ON(ring->tx); |
403 | dma_sync_single_for_cpu(ring->dev->dev->dev, | 404 | dma_sync_single_for_cpu(ring->dev->dev->dma_dev, |
404 | addr, len, DMA_FROM_DEVICE); | 405 | addr, len, DMA_FROM_DEVICE); |
405 | } | 406 | } |
406 | 407 | ||
@@ -409,7 +410,7 @@ static inline | |||
409 | dma_addr_t addr, size_t len) | 410 | dma_addr_t addr, size_t len) |
410 | { | 411 | { |
411 | B43_WARN_ON(ring->tx); | 412 | B43_WARN_ON(ring->tx); |
412 | dma_sync_single_for_device(ring->dev->dev->dev, | 413 | dma_sync_single_for_device(ring->dev->dev->dma_dev, |
413 | addr, len, DMA_FROM_DEVICE); | 414 | addr, len, DMA_FROM_DEVICE); |
414 | } | 415 | } |
415 | 416 | ||
@@ -425,7 +426,7 @@ static inline | |||
425 | 426 | ||
426 | static int alloc_ringmemory(struct b43_dmaring *ring) | 427 | static int alloc_ringmemory(struct b43_dmaring *ring) |
427 | { | 428 | { |
428 | struct device *dev = ring->dev->dev->dev; | 429 | struct device *dma_dev = ring->dev->dev->dma_dev; |
429 | gfp_t flags = GFP_KERNEL; | 430 | gfp_t flags = GFP_KERNEL; |
430 | 431 | ||
431 | /* The specs call for 4K buffers for 30- and 32-bit DMA with 4K | 432 | /* The specs call for 4K buffers for 30- and 32-bit DMA with 4K |
@@ -439,7 +440,7 @@ static int alloc_ringmemory(struct b43_dmaring *ring) | |||
439 | */ | 440 | */ |
440 | if (ring->type == B43_DMA_64BIT) | 441 | if (ring->type == B43_DMA_64BIT) |
441 | flags |= GFP_DMA; | 442 | flags |= GFP_DMA; |
442 | ring->descbase = dma_alloc_coherent(dev, B43_DMA_RINGMEMSIZE, | 443 | ring->descbase = dma_alloc_coherent(dma_dev, B43_DMA_RINGMEMSIZE, |
443 | &(ring->dmabase), flags); | 444 | &(ring->dmabase), flags); |
444 | if (!ring->descbase) { | 445 | if (!ring->descbase) { |
445 | b43err(ring->dev->wl, "DMA ringmemory allocation failed\n"); | 446 | b43err(ring->dev->wl, "DMA ringmemory allocation failed\n"); |
@@ -452,9 +453,9 @@ static int alloc_ringmemory(struct b43_dmaring *ring) | |||
452 | 453 | ||
453 | static void free_ringmemory(struct b43_dmaring *ring) | 454 | static void free_ringmemory(struct b43_dmaring *ring) |
454 | { | 455 | { |
455 | struct device *dev = ring->dev->dev->dev; | 456 | struct device *dma_dev = ring->dev->dev->dma_dev; |
456 | 457 | ||
457 | dma_free_coherent(dev, B43_DMA_RINGMEMSIZE, | 458 | dma_free_coherent(dma_dev, B43_DMA_RINGMEMSIZE, |
458 | ring->descbase, ring->dmabase); | 459 | ring->descbase, ring->dmabase); |
459 | } | 460 | } |
460 | 461 | ||
@@ -854,7 +855,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
854 | goto err_kfree_meta; | 855 | goto err_kfree_meta; |
855 | 856 | ||
856 | /* test for ability to dma to txhdr_cache */ | 857 | /* test for ability to dma to txhdr_cache */ |
857 | dma_test = dma_map_single(dev->dev->dev, | 858 | dma_test = dma_map_single(dev->dev->dma_dev, |
858 | ring->txhdr_cache, | 859 | ring->txhdr_cache, |
859 | b43_txhdr_size(dev), | 860 | b43_txhdr_size(dev), |
860 | DMA_TO_DEVICE); | 861 | DMA_TO_DEVICE); |
@@ -869,7 +870,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
869 | if (!ring->txhdr_cache) | 870 | if (!ring->txhdr_cache) |
870 | goto err_kfree_meta; | 871 | goto err_kfree_meta; |
871 | 872 | ||
872 | dma_test = dma_map_single(dev->dev->dev, | 873 | dma_test = dma_map_single(dev->dev->dma_dev, |
873 | ring->txhdr_cache, | 874 | ring->txhdr_cache, |
874 | b43_txhdr_size(dev), | 875 | b43_txhdr_size(dev), |
875 | DMA_TO_DEVICE); | 876 | DMA_TO_DEVICE); |
@@ -883,7 +884,7 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev, | |||
883 | } | 884 | } |
884 | } | 885 | } |
885 | 886 | ||
886 | dma_unmap_single(dev->dev->dev, | 887 | dma_unmap_single(dev->dev->dma_dev, |
887 | dma_test, b43_txhdr_size(dev), | 888 | dma_test, b43_txhdr_size(dev), |
888 | DMA_TO_DEVICE); | 889 | DMA_TO_DEVICE); |
889 | } | 890 | } |
diff --git a/drivers/net/wireless/b43legacy/dma.c b/drivers/net/wireless/b43legacy/dma.c index e87b427d5e43..c990f87b107a 100644 --- a/drivers/net/wireless/b43legacy/dma.c +++ b/drivers/net/wireless/b43legacy/dma.c | |||
@@ -393,11 +393,11 @@ dma_addr_t map_descbuffer(struct b43legacy_dmaring *ring, | |||
393 | dma_addr_t dmaaddr; | 393 | dma_addr_t dmaaddr; |
394 | 394 | ||
395 | if (tx) | 395 | if (tx) |
396 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 396 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
397 | buf, len, | 397 | buf, len, |
398 | DMA_TO_DEVICE); | 398 | DMA_TO_DEVICE); |
399 | else | 399 | else |
400 | dmaaddr = dma_map_single(ring->dev->dev->dev, | 400 | dmaaddr = dma_map_single(ring->dev->dev->dma_dev, |
401 | buf, len, | 401 | buf, len, |
402 | DMA_FROM_DEVICE); | 402 | DMA_FROM_DEVICE); |
403 | 403 | ||
@@ -411,11 +411,11 @@ void unmap_descbuffer(struct b43legacy_dmaring *ring, | |||
411 | int tx) | 411 | int tx) |
412 | { | 412 | { |
413 | if (tx) | 413 | if (tx) |
414 | dma_unmap_single(ring->dev->dev->dev, | 414 | dma_unmap_single(ring->dev->dev->dma_dev, |
415 | addr, len, | 415 | addr, len, |
416 | DMA_TO_DEVICE); | 416 | DMA_TO_DEVICE); |
417 | else | 417 | else |
418 | dma_unmap_single(ring->dev->dev->dev, | 418 | dma_unmap_single(ring->dev->dev->dma_dev, |
419 | addr, len, | 419 | addr, len, |
420 | DMA_FROM_DEVICE); | 420 | DMA_FROM_DEVICE); |
421 | } | 421 | } |
@@ -427,7 +427,7 @@ void sync_descbuffer_for_cpu(struct b43legacy_dmaring *ring, | |||
427 | { | 427 | { |
428 | B43legacy_WARN_ON(ring->tx); | 428 | B43legacy_WARN_ON(ring->tx); |
429 | 429 | ||
430 | dma_sync_single_for_cpu(ring->dev->dev->dev, | 430 | dma_sync_single_for_cpu(ring->dev->dev->dma_dev, |
431 | addr, len, DMA_FROM_DEVICE); | 431 | addr, len, DMA_FROM_DEVICE); |
432 | } | 432 | } |
433 | 433 | ||
@@ -438,7 +438,7 @@ void sync_descbuffer_for_device(struct b43legacy_dmaring *ring, | |||
438 | { | 438 | { |
439 | B43legacy_WARN_ON(ring->tx); | 439 | B43legacy_WARN_ON(ring->tx); |
440 | 440 | ||
441 | dma_sync_single_for_device(ring->dev->dev->dev, | 441 | dma_sync_single_for_device(ring->dev->dev->dma_dev, |
442 | addr, len, DMA_FROM_DEVICE); | 442 | addr, len, DMA_FROM_DEVICE); |
443 | } | 443 | } |
444 | 444 | ||
@@ -458,9 +458,9 @@ void free_descriptor_buffer(struct b43legacy_dmaring *ring, | |||
458 | 458 | ||
459 | static int alloc_ringmemory(struct b43legacy_dmaring *ring) | 459 | static int alloc_ringmemory(struct b43legacy_dmaring *ring) |
460 | { | 460 | { |
461 | struct device *dev = ring->dev->dev->dev; | 461 | struct device *dma_dev = ring->dev->dev->dma_dev; |
462 | 462 | ||
463 | ring->descbase = dma_alloc_coherent(dev, B43legacy_DMA_RINGMEMSIZE, | 463 | ring->descbase = dma_alloc_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE, |
464 | &(ring->dmabase), GFP_KERNEL); | 464 | &(ring->dmabase), GFP_KERNEL); |
465 | if (!ring->descbase) { | 465 | if (!ring->descbase) { |
466 | b43legacyerr(ring->dev->wl, "DMA ringmemory allocation" | 466 | b43legacyerr(ring->dev->wl, "DMA ringmemory allocation" |
@@ -474,9 +474,9 @@ static int alloc_ringmemory(struct b43legacy_dmaring *ring) | |||
474 | 474 | ||
475 | static void free_ringmemory(struct b43legacy_dmaring *ring) | 475 | static void free_ringmemory(struct b43legacy_dmaring *ring) |
476 | { | 476 | { |
477 | struct device *dev = ring->dev->dev->dev; | 477 | struct device *dma_dev = ring->dev->dev->dma_dev; |
478 | 478 | ||
479 | dma_free_coherent(dev, B43legacy_DMA_RINGMEMSIZE, | 479 | dma_free_coherent(dma_dev, B43legacy_DMA_RINGMEMSIZE, |
480 | ring->descbase, ring->dmabase); | 480 | ring->descbase, ring->dmabase); |
481 | } | 481 | } |
482 | 482 | ||
@@ -585,8 +585,9 @@ static int b43legacy_dmacontroller_tx_reset(struct b43legacy_wldev *dev, | |||
585 | 585 | ||
586 | /* Check if a DMA mapping address is invalid. */ | 586 | /* Check if a DMA mapping address is invalid. */ |
587 | static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, | 587 | static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, |
588 | dma_addr_t addr, | 588 | dma_addr_t addr, |
589 | size_t buffersize) | 589 | size_t buffersize, |
590 | bool dma_to_device) | ||
590 | { | 591 | { |
591 | if (unlikely(dma_mapping_error(addr))) | 592 | if (unlikely(dma_mapping_error(addr))) |
592 | return 1; | 593 | return 1; |
@@ -594,11 +595,11 @@ static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, | |||
594 | switch (ring->type) { | 595 | switch (ring->type) { |
595 | case B43legacy_DMA_30BIT: | 596 | case B43legacy_DMA_30BIT: |
596 | if ((u64)addr + buffersize > (1ULL << 30)) | 597 | if ((u64)addr + buffersize > (1ULL << 30)) |
597 | return 1; | 598 | goto address_error; |
598 | break; | 599 | break; |
599 | case B43legacy_DMA_32BIT: | 600 | case B43legacy_DMA_32BIT: |
600 | if ((u64)addr + buffersize > (1ULL << 32)) | 601 | if ((u64)addr + buffersize > (1ULL << 32)) |
601 | return 1; | 602 | goto address_error; |
602 | break; | 603 | break; |
603 | case B43legacy_DMA_64BIT: | 604 | case B43legacy_DMA_64BIT: |
604 | /* Currently we can't have addresses beyond 64 bits in the kernel. */ | 605 | /* Currently we can't have addresses beyond 64 bits in the kernel. */ |
@@ -607,6 +608,12 @@ static bool b43legacy_dma_mapping_error(struct b43legacy_dmaring *ring, | |||
607 | 608 | ||
608 | /* The address is OK. */ | 609 | /* The address is OK. */ |
609 | return 0; | 610 | return 0; |
611 | |||
612 | address_error: | ||
613 | /* We can't support this address. Unmap it again. */ | ||
614 | unmap_descbuffer(ring, addr, buffersize, dma_to_device); | ||
615 | |||
616 | return 1; | ||
610 | } | 617 | } |
611 | 618 | ||
612 | static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, | 619 | static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, |
@@ -626,7 +633,7 @@ static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, | |||
626 | return -ENOMEM; | 633 | return -ENOMEM; |
627 | dmaaddr = map_descbuffer(ring, skb->data, | 634 | dmaaddr = map_descbuffer(ring, skb->data, |
628 | ring->rx_buffersize, 0); | 635 | ring->rx_buffersize, 0); |
629 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) { | 636 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { |
630 | /* ugh. try to realloc in zone_dma */ | 637 | /* ugh. try to realloc in zone_dma */ |
631 | gfp_flags |= GFP_DMA; | 638 | gfp_flags |= GFP_DMA; |
632 | 639 | ||
@@ -639,7 +646,7 @@ static int setup_rx_descbuffer(struct b43legacy_dmaring *ring, | |||
639 | ring->rx_buffersize, 0); | 646 | ring->rx_buffersize, 0); |
640 | } | 647 | } |
641 | 648 | ||
642 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize)) { | 649 | if (b43legacy_dma_mapping_error(ring, dmaaddr, ring->rx_buffersize, 0)) { |
643 | dev_kfree_skb_any(skb); | 650 | dev_kfree_skb_any(skb); |
644 | return -EIO; | 651 | return -EIO; |
645 | } | 652 | } |
@@ -886,12 +893,12 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev, | |||
886 | goto err_kfree_meta; | 893 | goto err_kfree_meta; |
887 | 894 | ||
888 | /* test for ability to dma to txhdr_cache */ | 895 | /* test for ability to dma to txhdr_cache */ |
889 | dma_test = dma_map_single(dev->dev->dev, ring->txhdr_cache, | 896 | dma_test = dma_map_single(dev->dev->dma_dev, ring->txhdr_cache, |
890 | sizeof(struct b43legacy_txhdr_fw3), | 897 | sizeof(struct b43legacy_txhdr_fw3), |
891 | DMA_TO_DEVICE); | 898 | DMA_TO_DEVICE); |
892 | 899 | ||
893 | if (b43legacy_dma_mapping_error(ring, dma_test, | 900 | if (b43legacy_dma_mapping_error(ring, dma_test, |
894 | sizeof(struct b43legacy_txhdr_fw3))) { | 901 | sizeof(struct b43legacy_txhdr_fw3), 1)) { |
895 | /* ugh realloc */ | 902 | /* ugh realloc */ |
896 | kfree(ring->txhdr_cache); | 903 | kfree(ring->txhdr_cache); |
897 | ring->txhdr_cache = kcalloc(nr_slots, | 904 | ring->txhdr_cache = kcalloc(nr_slots, |
@@ -900,17 +907,17 @@ struct b43legacy_dmaring *b43legacy_setup_dmaring(struct b43legacy_wldev *dev, | |||
900 | if (!ring->txhdr_cache) | 907 | if (!ring->txhdr_cache) |
901 | goto err_kfree_meta; | 908 | goto err_kfree_meta; |
902 | 909 | ||
903 | dma_test = dma_map_single(dev->dev->dev, | 910 | dma_test = dma_map_single(dev->dev->dma_dev, |
904 | ring->txhdr_cache, | 911 | ring->txhdr_cache, |
905 | sizeof(struct b43legacy_txhdr_fw3), | 912 | sizeof(struct b43legacy_txhdr_fw3), |
906 | DMA_TO_DEVICE); | 913 | DMA_TO_DEVICE); |
907 | 914 | ||
908 | if (b43legacy_dma_mapping_error(ring, dma_test, | 915 | if (b43legacy_dma_mapping_error(ring, dma_test, |
909 | sizeof(struct b43legacy_txhdr_fw3))) | 916 | sizeof(struct b43legacy_txhdr_fw3), 1)) |
910 | goto err_kfree_txhdr_cache; | 917 | goto err_kfree_txhdr_cache; |
911 | } | 918 | } |
912 | 919 | ||
913 | dma_unmap_single(dev->dev->dev, | 920 | dma_unmap_single(dev->dev->dma_dev, |
914 | dma_test, sizeof(struct b43legacy_txhdr_fw3), | 921 | dma_test, sizeof(struct b43legacy_txhdr_fw3), |
915 | DMA_TO_DEVICE); | 922 | DMA_TO_DEVICE); |
916 | } | 923 | } |
@@ -1235,7 +1242,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring, | |||
1235 | meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header, | 1242 | meta_hdr->dmaaddr = map_descbuffer(ring, (unsigned char *)header, |
1236 | sizeof(struct b43legacy_txhdr_fw3), 1); | 1243 | sizeof(struct b43legacy_txhdr_fw3), 1); |
1237 | if (b43legacy_dma_mapping_error(ring, meta_hdr->dmaaddr, | 1244 | if (b43legacy_dma_mapping_error(ring, meta_hdr->dmaaddr, |
1238 | sizeof(struct b43legacy_txhdr_fw3))) { | 1245 | sizeof(struct b43legacy_txhdr_fw3), 1)) { |
1239 | ring->current_slot = old_top_slot; | 1246 | ring->current_slot = old_top_slot; |
1240 | ring->used_slots = old_used_slots; | 1247 | ring->used_slots = old_used_slots; |
1241 | return -EIO; | 1248 | return -EIO; |
@@ -1254,7 +1261,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring, | |||
1254 | 1261 | ||
1255 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1262 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
1256 | /* create a bounce buffer in zone_dma on mapping failure. */ | 1263 | /* create a bounce buffer in zone_dma on mapping failure. */ |
1257 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len)) { | 1264 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
1258 | bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); | 1265 | bounce_skb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); |
1259 | if (!bounce_skb) { | 1266 | if (!bounce_skb) { |
1260 | ring->current_slot = old_top_slot; | 1267 | ring->current_slot = old_top_slot; |
@@ -1268,7 +1275,7 @@ static int dma_tx_fragment(struct b43legacy_dmaring *ring, | |||
1268 | skb = bounce_skb; | 1275 | skb = bounce_skb; |
1269 | meta->skb = skb; | 1276 | meta->skb = skb; |
1270 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); | 1277 | meta->dmaaddr = map_descbuffer(ring, skb->data, skb->len, 1); |
1271 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len)) { | 1278 | if (b43legacy_dma_mapping_error(ring, meta->dmaaddr, skb->len, 1)) { |
1272 | ring->current_slot = old_top_slot; | 1279 | ring->current_slot = old_top_slot; |
1273 | ring->used_slots = old_used_slots; | 1280 | ring->used_slots = old_used_slots; |
1274 | err = -EIO; | 1281 | err = -EIO; |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index 5f3f34e1dbfd..0f7a6e7bd96a 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
@@ -1488,6 +1488,7 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev) | |||
1488 | } | 1488 | } |
1489 | if (!fw->initvals) { | 1489 | if (!fw->initvals) { |
1490 | switch (dev->phy.type) { | 1490 | switch (dev->phy.type) { |
1491 | case B43legacy_PHYTYPE_B: | ||
1491 | case B43legacy_PHYTYPE_G: | 1492 | case B43legacy_PHYTYPE_G: |
1492 | if ((rev >= 5) && (rev <= 10)) | 1493 | if ((rev >= 5) && (rev <= 10)) |
1493 | filename = "b0g0initvals5"; | 1494 | filename = "b0g0initvals5"; |
@@ -1505,6 +1506,7 @@ static int b43legacy_request_firmware(struct b43legacy_wldev *dev) | |||
1505 | } | 1506 | } |
1506 | if (!fw->initvals_band) { | 1507 | if (!fw->initvals_band) { |
1507 | switch (dev->phy.type) { | 1508 | switch (dev->phy.type) { |
1509 | case B43legacy_PHYTYPE_B: | ||
1508 | case B43legacy_PHYTYPE_G: | 1510 | case B43legacy_PHYTYPE_G: |
1509 | if ((rev >= 5) && (rev <= 10)) | 1511 | if ((rev >= 5) && (rev <= 10)) |
1510 | filename = "b0g0bsinitvals5"; | 1512 | filename = "b0g0bsinitvals5"; |
diff --git a/drivers/net/wireless/rtl8187_dev.c b/drivers/net/wireless/rtl8187_dev.c index f44505994a0e..133b3f39eeb6 100644 --- a/drivers/net/wireless/rtl8187_dev.c +++ b/drivers/net/wireless/rtl8187_dev.c | |||
@@ -509,6 +509,8 @@ static int rtl8187_add_interface(struct ieee80211_hw *dev, | |||
509 | return -EOPNOTSUPP; | 509 | return -EOPNOTSUPP; |
510 | } | 510 | } |
511 | 511 | ||
512 | priv->vif = conf->vif; | ||
513 | |||
512 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); | 514 | rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG); |
513 | for (i = 0; i < ETH_ALEN; i++) | 515 | for (i = 0; i < ETH_ALEN; i++) |
514 | rtl818x_iowrite8(priv, &priv->map->MAC[i], | 516 | rtl818x_iowrite8(priv, &priv->map->MAC[i], |
@@ -523,6 +525,7 @@ static void rtl8187_remove_interface(struct ieee80211_hw *dev, | |||
523 | { | 525 | { |
524 | struct rtl8187_priv *priv = dev->priv; | 526 | struct rtl8187_priv *priv = dev->priv; |
525 | priv->mode = IEEE80211_IF_TYPE_MNTR; | 527 | priv->mode = IEEE80211_IF_TYPE_MNTR; |
528 | priv->vif = NULL; | ||
526 | } | 529 | } |
527 | 530 | ||
528 | static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) | 531 | static int rtl8187_config(struct ieee80211_hw *dev, struct ieee80211_conf *conf) |
diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c index 385e145e1acc..684968558c19 100644 --- a/drivers/pcmcia/at91_cf.c +++ b/drivers/pcmcia/at91_cf.c | |||
@@ -419,3 +419,4 @@ module_exit(at91_cf_exit); | |||
419 | MODULE_DESCRIPTION("AT91 Compact Flash Driver"); | 419 | MODULE_DESCRIPTION("AT91 Compact Flash Driver"); |
420 | MODULE_AUTHOR("David Brownell"); | 420 | MODULE_AUTHOR("David Brownell"); |
421 | MODULE_LICENSE("GPL"); | 421 | MODULE_LICENSE("GPL"); |
422 | MODULE_ALIAS("platform:at91_cf"); | ||
diff --git a/drivers/pcmcia/omap_cf.c b/drivers/pcmcia/omap_cf.c index 2df216b00817..bb6db3a582b2 100644 --- a/drivers/pcmcia/omap_cf.c +++ b/drivers/pcmcia/omap_cf.c | |||
@@ -344,6 +344,7 @@ static int omap_cf_resume(struct platform_device *pdev) | |||
344 | static struct platform_driver omap_cf_driver = { | 344 | static struct platform_driver omap_cf_driver = { |
345 | .driver = { | 345 | .driver = { |
346 | .name = (char *) driver_name, | 346 | .name = (char *) driver_name, |
347 | .owner = THIS_MODULE, | ||
347 | }, | 348 | }, |
348 | .remove = __exit_p(omap_cf_remove), | 349 | .remove = __exit_p(omap_cf_remove), |
349 | .suspend = omap_cf_suspend, | 350 | .suspend = omap_cf_suspend, |
@@ -368,3 +369,4 @@ module_exit(omap_cf_exit); | |||
368 | 369 | ||
369 | MODULE_DESCRIPTION("OMAP CF Driver"); | 370 | MODULE_DESCRIPTION("OMAP CF Driver"); |
370 | MODULE_LICENSE("GPL"); | 371 | MODULE_LICENSE("GPL"); |
372 | MODULE_ALIAS("platform:omap_cf"); | ||
diff --git a/drivers/pcmcia/pxa2xx_base.c b/drivers/pcmcia/pxa2xx_base.c index e439044d88f2..9414163c78e7 100644 --- a/drivers/pcmcia/pxa2xx_base.c +++ b/drivers/pcmcia/pxa2xx_base.c | |||
@@ -239,6 +239,7 @@ static struct platform_driver pxa2xx_pcmcia_driver = { | |||
239 | .resume = pxa2xx_drv_pcmcia_resume, | 239 | .resume = pxa2xx_drv_pcmcia_resume, |
240 | .driver = { | 240 | .driver = { |
241 | .name = "pxa2xx-pcmcia", | 241 | .name = "pxa2xx-pcmcia", |
242 | .owner = THIS_MODULE, | ||
242 | }, | 243 | }, |
243 | }; | 244 | }; |
244 | 245 | ||
@@ -258,3 +259,4 @@ module_exit(pxa2xx_pcmcia_exit); | |||
258 | MODULE_AUTHOR("Stefan Eletzhofer <stefan.eletzhofer@inquant.de> and Ian Molton <spyro@f2s.com>"); | 259 | MODULE_AUTHOR("Stefan Eletzhofer <stefan.eletzhofer@inquant.de> and Ian Molton <spyro@f2s.com>"); |
259 | MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver"); | 260 | MODULE_DESCRIPTION("Linux PCMCIA Card Services: PXA2xx core socket driver"); |
260 | MODULE_LICENSE("GPL"); | 261 | MODULE_LICENSE("GPL"); |
262 | MODULE_ALIAS("platform:pxa2xx-pcmcia"); | ||
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index b48517021ee6..dcdc142a3441 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c | |||
@@ -198,9 +198,8 @@ static int cmos_set_alarm(struct device *dev, struct rtc_wkalrm *t) | |||
198 | 198 | ||
199 | /* Writing 0xff means "don't care" or "match all". */ | 199 | /* Writing 0xff means "don't care" or "match all". */ |
200 | 200 | ||
201 | mon = t->time.tm_mon; | 201 | mon = t->time.tm_mon + 1; |
202 | mon = (mon < 12) ? BIN2BCD(mon) : 0xff; | 202 | mon = (mon <= 12) ? BIN2BCD(mon) : 0xff; |
203 | mon++; | ||
204 | 203 | ||
205 | mday = t->time.tm_mday; | 204 | mday = t->time.tm_mday; |
206 | mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff; | 205 | mday = (mday >= 1 && mday <= 31) ? BIN2BCD(mday) : 0xff; |
diff --git a/drivers/serial/atmel_serial.c b/drivers/serial/atmel_serial.c index 430997e33fc4..55492fa095a2 100644 --- a/drivers/serial/atmel_serial.c +++ b/drivers/serial/atmel_serial.c | |||
@@ -1577,3 +1577,4 @@ module_exit(atmel_serial_exit); | |||
1577 | MODULE_AUTHOR("Rick Bronson"); | 1577 | MODULE_AUTHOR("Rick Bronson"); |
1578 | MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver"); | 1578 | MODULE_DESCRIPTION("Atmel AT91 / AT32 serial port driver"); |
1579 | MODULE_LICENSE("GPL"); | 1579 | MODULE_LICENSE("GPL"); |
1580 | MODULE_ALIAS("platform:atmel_usart"); | ||
diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c index 0aa345b9a38b..46bb47f37b9a 100644 --- a/drivers/serial/bfin_5xx.c +++ b/drivers/serial/bfin_5xx.c | |||
@@ -1243,6 +1243,7 @@ static struct platform_driver bfin_serial_driver = { | |||
1243 | .resume = bfin_serial_resume, | 1243 | .resume = bfin_serial_resume, |
1244 | .driver = { | 1244 | .driver = { |
1245 | .name = "bfin-uart", | 1245 | .name = "bfin-uart", |
1246 | .owner = THIS_MODULE, | ||
1246 | }, | 1247 | }, |
1247 | }; | 1248 | }; |
1248 | 1249 | ||
@@ -1301,3 +1302,4 @@ MODULE_AUTHOR("Aubrey.Li <aubrey.li@analog.com>"); | |||
1301 | MODULE_DESCRIPTION("Blackfin generic serial port driver"); | 1302 | MODULE_DESCRIPTION("Blackfin generic serial port driver"); |
1302 | MODULE_LICENSE("GPL"); | 1303 | MODULE_LICENSE("GPL"); |
1303 | MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR); | 1304 | MODULE_ALIAS_CHARDEV_MAJOR(BFIN_SERIAL_MAJOR); |
1305 | MODULE_ALIAS("platform:bfin-uart"); | ||
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 56af1f566a4c..16ba9ac7a566 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -1090,6 +1090,7 @@ static struct platform_driver serial_imx_driver = { | |||
1090 | .resume = serial_imx_resume, | 1090 | .resume = serial_imx_resume, |
1091 | .driver = { | 1091 | .driver = { |
1092 | .name = "imx-uart", | 1092 | .name = "imx-uart", |
1093 | .owner = THIS_MODULE, | ||
1093 | }, | 1094 | }, |
1094 | }; | 1095 | }; |
1095 | 1096 | ||
@@ -1124,3 +1125,4 @@ module_exit(imx_serial_exit); | |||
1124 | MODULE_AUTHOR("Sascha Hauer"); | 1125 | MODULE_AUTHOR("Sascha Hauer"); |
1125 | MODULE_DESCRIPTION("IMX generic serial port driver"); | 1126 | MODULE_DESCRIPTION("IMX generic serial port driver"); |
1126 | MODULE_LICENSE("GPL"); | 1127 | MODULE_LICENSE("GPL"); |
1128 | MODULE_ALIAS("platform:imx-uart"); | ||
diff --git a/drivers/serial/mcf.c b/drivers/serial/mcf.c index e76fc72c9b36..7e164e0cd211 100644 --- a/drivers/serial/mcf.c +++ b/drivers/serial/mcf.c | |||
@@ -649,5 +649,6 @@ module_exit(mcf_exit); | |||
649 | MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>"); | 649 | MODULE_AUTHOR("Greg Ungerer <gerg@snapgear.com>"); |
650 | MODULE_DESCRIPTION("Freescale ColdFire UART driver"); | 650 | MODULE_DESCRIPTION("Freescale ColdFire UART driver"); |
651 | MODULE_LICENSE("GPL"); | 651 | MODULE_LICENSE("GPL"); |
652 | MODULE_ALIAS("platform:mcfuart"); | ||
652 | 653 | ||
653 | /****************************************************************************/ | 654 | /****************************************************************************/ |
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c index a638f23c6c61..d93b3578c5e2 100644 --- a/drivers/serial/mpc52xx_uart.c +++ b/drivers/serial/mpc52xx_uart.c | |||
@@ -1188,6 +1188,8 @@ mpc52xx_uart_resume(struct platform_device *dev) | |||
1188 | } | 1188 | } |
1189 | #endif | 1189 | #endif |
1190 | 1190 | ||
1191 | /* work with hotplug and coldplug */ | ||
1192 | MODULE_ALIAS("platform:mpc52xx-psc"); | ||
1191 | 1193 | ||
1192 | static struct platform_driver mpc52xx_uart_platform_driver = { | 1194 | static struct platform_driver mpc52xx_uart_platform_driver = { |
1193 | .probe = mpc52xx_uart_probe, | 1195 | .probe = mpc52xx_uart_probe, |
diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c index cb3a91967742..e8819c43f57d 100644 --- a/drivers/serial/mpsc.c +++ b/drivers/serial/mpsc.c | |||
@@ -1964,6 +1964,7 @@ static struct platform_driver mpsc_driver = { | |||
1964 | .remove = mpsc_drv_remove, | 1964 | .remove = mpsc_drv_remove, |
1965 | .driver = { | 1965 | .driver = { |
1966 | .name = MPSC_CTLR_NAME, | 1966 | .name = MPSC_CTLR_NAME, |
1967 | .owner = THIS_MODULE, | ||
1967 | }, | 1968 | }, |
1968 | }; | 1969 | }; |
1969 | 1970 | ||
@@ -2007,3 +2008,4 @@ MODULE_DESCRIPTION("Generic Marvell MPSC serial/UART driver $Revision: 1.00 $"); | |||
2007 | MODULE_VERSION(MPSC_VERSION); | 2008 | MODULE_VERSION(MPSC_VERSION); |
2008 | MODULE_LICENSE("GPL"); | 2009 | MODULE_LICENSE("GPL"); |
2009 | MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR); | 2010 | MODULE_ALIAS_CHARDEV_MAJOR(MPSC_MAJOR); |
2011 | MODULE_ALIAS("platform:" MPSC_CTLR_NAME); | ||
diff --git a/drivers/serial/netx-serial.c b/drivers/serial/netx-serial.c index b56f7db45031..3123ffeac8ad 100644 --- a/drivers/serial/netx-serial.c +++ b/drivers/serial/netx-serial.c | |||
@@ -713,6 +713,7 @@ static struct platform_driver serial_netx_driver = { | |||
713 | 713 | ||
714 | .driver = { | 714 | .driver = { |
715 | .name = DRIVER_NAME, | 715 | .name = DRIVER_NAME, |
716 | .owner = THIS_MODULE, | ||
716 | }, | 717 | }, |
717 | }; | 718 | }; |
718 | 719 | ||
@@ -745,3 +746,4 @@ module_exit(netx_serial_exit); | |||
745 | MODULE_AUTHOR("Sascha Hauer"); | 746 | MODULE_AUTHOR("Sascha Hauer"); |
746 | MODULE_DESCRIPTION("NetX serial port driver"); | 747 | MODULE_DESCRIPTION("NetX serial port driver"); |
747 | MODULE_LICENSE("GPL"); | 748 | MODULE_LICENSE("GPL"); |
749 | MODULE_ALIAS("platform:" DRIVER_NAME); | ||
diff --git a/drivers/serial/pnx8xxx_uart.c b/drivers/serial/pnx8xxx_uart.c index 8d01c59e8d04..d0e5a79ea635 100644 --- a/drivers/serial/pnx8xxx_uart.c +++ b/drivers/serial/pnx8xxx_uart.c | |||
@@ -850,3 +850,4 @@ MODULE_AUTHOR("Embedded Alley Solutions, Inc."); | |||
850 | MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver"); | 850 | MODULE_DESCRIPTION("PNX8XXX SoCs serial port driver"); |
851 | MODULE_LICENSE("GPL"); | 851 | MODULE_LICENSE("GPL"); |
852 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR); | 852 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_PNX8XXX_MAJOR); |
853 | MODULE_ALIAS("platform:pnx8xxx-uart"); | ||
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c index 352fcb8926a6..b4f7ffb7688d 100644 --- a/drivers/serial/pxa.c +++ b/drivers/serial/pxa.c | |||
@@ -833,6 +833,7 @@ static struct platform_driver serial_pxa_driver = { | |||
833 | .resume = serial_pxa_resume, | 833 | .resume = serial_pxa_resume, |
834 | .driver = { | 834 | .driver = { |
835 | .name = "pxa2xx-uart", | 835 | .name = "pxa2xx-uart", |
836 | .owner = THIS_MODULE, | ||
836 | }, | 837 | }, |
837 | }; | 838 | }; |
838 | 839 | ||
@@ -861,4 +862,4 @@ module_init(serial_pxa_init); | |||
861 | module_exit(serial_pxa_exit); | 862 | module_exit(serial_pxa_exit); |
862 | 863 | ||
863 | MODULE_LICENSE("GPL"); | 864 | MODULE_LICENSE("GPL"); |
864 | 865 | MODULE_ALIAS("platform:pxa2xx-uart"); | |
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index 45de19366030..4ffa2585429a 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
@@ -1935,3 +1935,7 @@ console_initcall(s3c24xx_serial_initconsole); | |||
1935 | MODULE_LICENSE("GPL"); | 1935 | MODULE_LICENSE("GPL"); |
1936 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); | 1936 | MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); |
1937 | MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver"); | 1937 | MODULE_DESCRIPTION("Samsung S3C2410/S3C2440/S3C2412 Serial port driver"); |
1938 | MODULE_ALIAS("platform:s3c2400-uart"); | ||
1939 | MODULE_ALIAS("platform:s3c2410-uart"); | ||
1940 | MODULE_ALIAS("platform:s3c2412-uart"); | ||
1941 | MODULE_ALIAS("platform:s3c2440-uart"); | ||
diff --git a/drivers/serial/sa1100.c b/drivers/serial/sa1100.c index 58a83c27e14b..67b2338913c2 100644 --- a/drivers/serial/sa1100.c +++ b/drivers/serial/sa1100.c | |||
@@ -884,6 +884,7 @@ static struct platform_driver sa11x0_serial_driver = { | |||
884 | .resume = sa1100_serial_resume, | 884 | .resume = sa1100_serial_resume, |
885 | .driver = { | 885 | .driver = { |
886 | .name = "sa11x0-uart", | 886 | .name = "sa11x0-uart", |
887 | .owner = THIS_MODULE, | ||
887 | }, | 888 | }, |
888 | }; | 889 | }; |
889 | 890 | ||
@@ -917,3 +918,4 @@ MODULE_AUTHOR("Deep Blue Solutions Ltd"); | |||
917 | MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $"); | 918 | MODULE_DESCRIPTION("SA1100 generic serial port driver $Revision: 1.50 $"); |
918 | MODULE_LICENSE("GPL"); | 919 | MODULE_LICENSE("GPL"); |
919 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR); | 920 | MODULE_ALIAS_CHARDEV_MAJOR(SERIAL_SA1100_MAJOR); |
921 | MODULE_ALIAS("platform:sa11x0-uart"); | ||
diff --git a/drivers/serial/sc26xx.c b/drivers/serial/sc26xx.c index a350b6d2a181..ae2a9e2df777 100644 --- a/drivers/serial/sc26xx.c +++ b/drivers/serial/sc26xx.c | |||
@@ -732,6 +732,7 @@ static struct platform_driver sc26xx_driver = { | |||
732 | .remove = __devexit_p(sc26xx_driver_remove), | 732 | .remove = __devexit_p(sc26xx_driver_remove), |
733 | .driver = { | 733 | .driver = { |
734 | .name = "SC26xx", | 734 | .name = "SC26xx", |
735 | .owner = THIS_MODULE, | ||
735 | }, | 736 | }, |
736 | }; | 737 | }; |
737 | 738 | ||
@@ -753,3 +754,4 @@ MODULE_AUTHOR("Thomas Bogendörfer"); | |||
753 | MODULE_DESCRIPTION("SC681/SC2692 serial driver"); | 754 | MODULE_DESCRIPTION("SC681/SC2692 serial driver"); |
754 | MODULE_VERSION("1.0"); | 755 | MODULE_VERSION("1.0"); |
755 | MODULE_LICENSE("GPL"); | 756 | MODULE_LICENSE("GPL"); |
757 | MODULE_ALIAS("platform:SC26xx"); | ||
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 9d244d1644e1..eff593080d4f 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -1552,3 +1552,4 @@ module_init(sci_init); | |||
1552 | module_exit(sci_exit); | 1552 | module_exit(sci_exit); |
1553 | 1553 | ||
1554 | MODULE_LICENSE("GPL"); | 1554 | MODULE_LICENSE("GPL"); |
1555 | MODULE_ALIAS("platform:sh-sci"); | ||
diff --git a/drivers/serial/uartlite.c b/drivers/serial/uartlite.c index 4e06ab6bcb6e..b565d5a37499 100644 --- a/drivers/serial/uartlite.c +++ b/drivers/serial/uartlite.c | |||
@@ -561,6 +561,9 @@ static int __devexit ulite_remove(struct platform_device *pdev) | |||
561 | return ulite_release(&pdev->dev); | 561 | return ulite_release(&pdev->dev); |
562 | } | 562 | } |
563 | 563 | ||
564 | /* work with hotplug and coldplug */ | ||
565 | MODULE_ALIAS("platform:uartlite"); | ||
566 | |||
564 | static struct platform_driver ulite_platform_driver = { | 567 | static struct platform_driver ulite_platform_driver = { |
565 | .probe = ulite_probe, | 568 | .probe = ulite_probe, |
566 | .remove = __devexit_p(ulite_remove), | 569 | .remove = __devexit_p(ulite_remove), |
diff --git a/drivers/serial/vr41xx_siu.c b/drivers/serial/vr41xx_siu.c index 6fd51b0022ca..98ab649c1ff9 100644 --- a/drivers/serial/vr41xx_siu.c +++ b/drivers/serial/vr41xx_siu.c | |||
@@ -960,3 +960,6 @@ static void __exit vr41xx_siu_exit(void) | |||
960 | 960 | ||
961 | module_init(vr41xx_siu_init); | 961 | module_init(vr41xx_siu_init); |
962 | module_exit(vr41xx_siu_exit); | 962 | module_exit(vr41xx_siu_exit); |
963 | |||
964 | MODULE_LICENSE("GPL"); | ||
965 | MODULE_ALIAS("platform:SIU"); | ||
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c index e75103aac790..b7476b888197 100644 --- a/drivers/spi/spi_s3c24xx.c +++ b/drivers/spi/spi_s3c24xx.c | |||
@@ -192,8 +192,11 @@ static int s3c24xx_spi_txrx(struct spi_device *spi, struct spi_transfer *t) | |||
192 | hw->len = t->len; | 192 | hw->len = t->len; |
193 | hw->count = 0; | 193 | hw->count = 0; |
194 | 194 | ||
195 | init_completion(&hw->done); | ||
196 | |||
195 | /* send the first byte */ | 197 | /* send the first byte */ |
196 | writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT); | 198 | writeb(hw_txbyte(hw, 0), hw->regs + S3C2410_SPTDAT); |
199 | |||
197 | wait_for_completion(&hw->done); | 200 | wait_for_completion(&hw->done); |
198 | 201 | ||
199 | return hw->count; | 202 | return hw->count; |
@@ -235,6 +238,7 @@ static irqreturn_t s3c24xx_spi_irq(int irq, void *dev) | |||
235 | 238 | ||
236 | static int __init s3c24xx_spi_probe(struct platform_device *pdev) | 239 | static int __init s3c24xx_spi_probe(struct platform_device *pdev) |
237 | { | 240 | { |
241 | struct s3c2410_spi_info *pdata; | ||
238 | struct s3c24xx_spi *hw; | 242 | struct s3c24xx_spi *hw; |
239 | struct spi_master *master; | 243 | struct spi_master *master; |
240 | struct resource *res; | 244 | struct resource *res; |
@@ -251,10 +255,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) | |||
251 | memset(hw, 0, sizeof(struct s3c24xx_spi)); | 255 | memset(hw, 0, sizeof(struct s3c24xx_spi)); |
252 | 256 | ||
253 | hw->master = spi_master_get(master); | 257 | hw->master = spi_master_get(master); |
254 | hw->pdata = pdev->dev.platform_data; | 258 | hw->pdata = pdata = pdev->dev.platform_data; |
255 | hw->dev = &pdev->dev; | 259 | hw->dev = &pdev->dev; |
256 | 260 | ||
257 | if (hw->pdata == NULL) { | 261 | if (pdata == NULL) { |
258 | dev_err(&pdev->dev, "No platform data supplied\n"); | 262 | dev_err(&pdev->dev, "No platform data supplied\n"); |
259 | err = -ENOENT; | 263 | err = -ENOENT; |
260 | goto err_no_pdata; | 264 | goto err_no_pdata; |
@@ -263,6 +267,10 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) | |||
263 | platform_set_drvdata(pdev, hw); | 267 | platform_set_drvdata(pdev, hw); |
264 | init_completion(&hw->done); | 268 | init_completion(&hw->done); |
265 | 269 | ||
270 | /* setup the master state. */ | ||
271 | |||
272 | master->num_chipselect = hw->pdata->num_cs; | ||
273 | |||
266 | /* setup the state for the bitbang driver */ | 274 | /* setup the state for the bitbang driver */ |
267 | 275 | ||
268 | hw->bitbang.master = hw->master; | 276 | hw->bitbang.master = hw->master; |
@@ -330,13 +338,13 @@ static int __init s3c24xx_spi_probe(struct platform_device *pdev) | |||
330 | 338 | ||
331 | /* setup any gpio we can */ | 339 | /* setup any gpio we can */ |
332 | 340 | ||
333 | if (!hw->pdata->set_cs) { | 341 | if (!pdata->set_cs) { |
334 | hw->set_cs = s3c24xx_spi_gpiocs; | 342 | hw->set_cs = s3c24xx_spi_gpiocs; |
335 | 343 | ||
336 | s3c2410_gpio_setpin(hw->pdata->pin_cs, 1); | 344 | s3c2410_gpio_setpin(pdata->pin_cs, 1); |
337 | s3c2410_gpio_cfgpin(hw->pdata->pin_cs, S3C2410_GPIO_OUTPUT); | 345 | s3c2410_gpio_cfgpin(pdata->pin_cs, S3C2410_GPIO_OUTPUT); |
338 | } else | 346 | } else |
339 | hw->set_cs = hw->pdata->set_cs; | 347 | hw->set_cs = pdata->set_cs; |
340 | 348 | ||
341 | /* register our spi controller */ | 349 | /* register our spi controller */ |
342 | 350 | ||
diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index 72017bf2e577..8003a9e55ac4 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c | |||
@@ -436,15 +436,18 @@ static int ssb_devices_register(struct ssb_bus *bus) | |||
436 | #ifdef CONFIG_SSB_PCIHOST | 436 | #ifdef CONFIG_SSB_PCIHOST |
437 | sdev->irq = bus->host_pci->irq; | 437 | sdev->irq = bus->host_pci->irq; |
438 | dev->parent = &bus->host_pci->dev; | 438 | dev->parent = &bus->host_pci->dev; |
439 | sdev->dma_dev = &bus->host_pci->dev; | ||
439 | #endif | 440 | #endif |
440 | break; | 441 | break; |
441 | case SSB_BUSTYPE_PCMCIA: | 442 | case SSB_BUSTYPE_PCMCIA: |
442 | #ifdef CONFIG_SSB_PCMCIAHOST | 443 | #ifdef CONFIG_SSB_PCMCIAHOST |
443 | sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; | 444 | sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; |
444 | dev->parent = &bus->host_pcmcia->dev; | 445 | dev->parent = &bus->host_pcmcia->dev; |
446 | sdev->dma_dev = &bus->host_pcmcia->dev; | ||
445 | #endif | 447 | #endif |
446 | break; | 448 | break; |
447 | case SSB_BUSTYPE_SSB: | 449 | case SSB_BUSTYPE_SSB: |
450 | sdev->dma_dev = dev; | ||
448 | break; | 451 | break; |
449 | } | 452 | } |
450 | 453 | ||
@@ -1018,15 +1021,14 @@ EXPORT_SYMBOL(ssb_dma_translation); | |||
1018 | 1021 | ||
1019 | int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask) | 1022 | int ssb_dma_set_mask(struct ssb_device *ssb_dev, u64 mask) |
1020 | { | 1023 | { |
1021 | struct device *dev = ssb_dev->dev; | 1024 | struct device *dma_dev = ssb_dev->dma_dev; |
1022 | 1025 | ||
1023 | #ifdef CONFIG_SSB_PCIHOST | 1026 | #ifdef CONFIG_SSB_PCIHOST |
1024 | if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI && | 1027 | if (ssb_dev->bus->bustype == SSB_BUSTYPE_PCI) |
1025 | !dma_supported(dev, mask)) | 1028 | return dma_set_mask(dma_dev, mask); |
1026 | return -EIO; | ||
1027 | #endif | 1029 | #endif |
1028 | dev->coherent_dma_mask = mask; | 1030 | dma_dev->coherent_dma_mask = mask; |
1029 | dev->dma_mask = &dev->coherent_dma_mask; | 1031 | dma_dev->dma_mask = &dma_dev->coherent_dma_mask; |
1030 | 1032 | ||
1031 | return 0; | 1033 | return 0; |
1032 | } | 1034 | } |
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c index 8b86e53ccf7a..7f79bbf652d7 100644 --- a/drivers/thermal/thermal.c +++ b/drivers/thermal/thermal.c | |||
@@ -196,6 +196,10 @@ static struct device_attribute trip_point_attrs[] = { | |||
196 | __ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL), | 196 | __ATTR(trip_point_8_temp, 0444, trip_point_temp_show, NULL), |
197 | __ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL), | 197 | __ATTR(trip_point_9_type, 0444, trip_point_type_show, NULL), |
198 | __ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL), | 198 | __ATTR(trip_point_9_temp, 0444, trip_point_temp_show, NULL), |
199 | __ATTR(trip_point_10_type, 0444, trip_point_type_show, NULL), | ||
200 | __ATTR(trip_point_10_temp, 0444, trip_point_temp_show, NULL), | ||
201 | __ATTR(trip_point_11_type, 0444, trip_point_type_show, NULL), | ||
202 | __ATTR(trip_point_11_temp, 0444, trip_point_temp_show, NULL), | ||
199 | }; | 203 | }; |
200 | 204 | ||
201 | #define TRIP_POINT_ATTR_ADD(_dev, _index, result) \ | 205 | #define TRIP_POINT_ATTR_ADD(_dev, _index, result) \ |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index a396fbbdc9c2..d101025a4c63 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -109,6 +109,22 @@ static int option_send_setup(struct usb_serial_port *port); | |||
109 | #define HUAWEI_PRODUCT_E600 0x1001 | 109 | #define HUAWEI_PRODUCT_E600 0x1001 |
110 | #define HUAWEI_PRODUCT_E220 0x1003 | 110 | #define HUAWEI_PRODUCT_E220 0x1003 |
111 | #define HUAWEI_PRODUCT_E220BIS 0x1004 | 111 | #define HUAWEI_PRODUCT_E220BIS 0x1004 |
112 | #define HUAWEI_PRODUCT_E1401 0x1401 | ||
113 | #define HUAWEI_PRODUCT_E1403 0x1403 | ||
114 | #define HUAWEI_PRODUCT_E1405 0x1405 | ||
115 | #define HUAWEI_PRODUCT_E1406 0x1406 | ||
116 | #define HUAWEI_PRODUCT_E1408 0x1408 | ||
117 | #define HUAWEI_PRODUCT_E1409 0x1409 | ||
118 | #define HUAWEI_PRODUCT_E1410 0x1410 | ||
119 | #define HUAWEI_PRODUCT_E1411 0x1411 | ||
120 | #define HUAWEI_PRODUCT_E1412 0x1412 | ||
121 | #define HUAWEI_PRODUCT_E1413 0x1413 | ||
122 | #define HUAWEI_PRODUCT_E1414 0x1414 | ||
123 | #define HUAWEI_PRODUCT_E1415 0x1415 | ||
124 | #define HUAWEI_PRODUCT_E1416 0x1416 | ||
125 | #define HUAWEI_PRODUCT_E1417 0x1417 | ||
126 | #define HUAWEI_PRODUCT_E1418 0x1418 | ||
127 | #define HUAWEI_PRODUCT_E1419 0x1419 | ||
112 | 128 | ||
113 | #define NOVATELWIRELESS_VENDOR_ID 0x1410 | 129 | #define NOVATELWIRELESS_VENDOR_ID 0x1410 |
114 | 130 | ||
@@ -129,6 +145,7 @@ static int option_send_setup(struct usb_serial_port *port); | |||
129 | #define NOVATELWIRELESS_PRODUCT_EV620 0x2100 | 145 | #define NOVATELWIRELESS_PRODUCT_EV620 0x2100 |
130 | #define NOVATELWIRELESS_PRODUCT_ES720 0x2110 | 146 | #define NOVATELWIRELESS_PRODUCT_ES720 0x2110 |
131 | #define NOVATELWIRELESS_PRODUCT_E725 0x2120 | 147 | #define NOVATELWIRELESS_PRODUCT_E725 0x2120 |
148 | #define NOVATELWIRELESS_PRODUCT_ES620 0x2130 | ||
132 | #define NOVATELWIRELESS_PRODUCT_EU730 0x2400 | 149 | #define NOVATELWIRELESS_PRODUCT_EU730 0x2400 |
133 | #define NOVATELWIRELESS_PRODUCT_EU740 0x2410 | 150 | #define NOVATELWIRELESS_PRODUCT_EU740 0x2410 |
134 | #define NOVATELWIRELESS_PRODUCT_EU870D 0x2420 | 151 | #define NOVATELWIRELESS_PRODUCT_EU870D 0x2420 |
@@ -137,6 +154,8 @@ static int option_send_setup(struct usb_serial_port *port); | |||
137 | #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 | 154 | #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 |
138 | #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 | 155 | #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 |
139 | 156 | ||
157 | #define NOVATELWIRELESS_PRODUCT_U727 0x5010 | ||
158 | |||
140 | /* FUTURE NOVATEL PRODUCTS */ | 159 | /* FUTURE NOVATEL PRODUCTS */ |
141 | #define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000 | 160 | #define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000 |
142 | #define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000 | 161 | #define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000 |
@@ -147,6 +166,12 @@ static int option_send_setup(struct usb_serial_port *port); | |||
147 | #define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001 | 166 | #define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001 |
148 | #define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001 | 167 | #define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001 |
149 | 168 | ||
169 | /* AMOI PRODUCTS */ | ||
170 | #define AMOI_VENDOR_ID 0x1614 | ||
171 | #define AMOI_PRODUCT_H01 0x0800 | ||
172 | #define AMOI_PRODUCT_H01A 0x7002 | ||
173 | #define AMOI_PRODUCT_H02 0x0802 | ||
174 | |||
150 | #define DELL_VENDOR_ID 0x413C | 175 | #define DELL_VENDOR_ID 0x413C |
151 | 176 | ||
152 | #define KYOCERA_VENDOR_ID 0x0c88 | 177 | #define KYOCERA_VENDOR_ID 0x0c88 |
@@ -163,8 +188,13 @@ static int option_send_setup(struct usb_serial_port *port); | |||
163 | #define BANDRICH_PRODUCT_C100_1 0x1002 | 188 | #define BANDRICH_PRODUCT_C100_1 0x1002 |
164 | #define BANDRICH_PRODUCT_C100_2 0x1003 | 189 | #define BANDRICH_PRODUCT_C100_2 0x1003 |
165 | 190 | ||
191 | #define AMOI_VENDOR_ID 0x1614 | ||
192 | #define AMOI_PRODUCT_9508 0x0800 | ||
193 | |||
166 | #define QUALCOMM_VENDOR_ID 0x05C6 | 194 | #define QUALCOMM_VENDOR_ID 0x05C6 |
167 | 195 | ||
196 | #define MAXON_VENDOR_ID 0x16d8 | ||
197 | |||
168 | static struct usb_device_id option_ids[] = { | 198 | static struct usb_device_id option_ids[] = { |
169 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, | 199 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, |
170 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, | 200 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, |
@@ -204,6 +234,23 @@ static struct usb_device_id option_ids[] = { | |||
204 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, | 234 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, |
205 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, | 235 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, |
206 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, | 236 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, |
237 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401) }, | ||
238 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403) }, | ||
239 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405) }, | ||
240 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406) }, | ||
241 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408) }, | ||
242 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409) }, | ||
243 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410) }, | ||
244 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411) }, | ||
245 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412) }, | ||
246 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413) }, | ||
247 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414) }, | ||
248 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415) }, | ||
249 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416) }, | ||
250 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417) }, | ||
251 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418) }, | ||
252 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419) }, | ||
253 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, | ||
207 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ | 254 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ |
208 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ | 255 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ |
209 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */ | 256 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, /* Novatel Merlin EX720/V740/X720 */ |
@@ -216,13 +263,13 @@ static struct usb_device_id option_ids[] = { | |||
216 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EV620) }, /* Novatel EV620/ES620 CDMA/EV-DO */ | 263 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EV620) }, /* Novatel EV620/ES620 CDMA/EV-DO */ |
217 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES720) }, /* Novatel ES620/ES720/U720/USB720 */ | 264 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES720) }, /* Novatel ES620/ES720/U720/USB720 */ |
218 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E725) }, /* Novatel E725/E726 */ | 265 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E725) }, /* Novatel E725/E726 */ |
219 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x2130) }, /* Novatel Merlin ES620 SM Bus */ | 266 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_ES620) }, /* Novatel Merlin ES620 SM Bus */ |
220 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU730) }, /* Novatel EU730 and Vodafone EU740 */ | 267 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU730) }, /* Novatel EU730 and Vodafone EU740 */ |
221 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU740) }, /* Novatel non-Vodafone EU740 */ | 268 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU740) }, /* Novatel non-Vodafone EU740 */ |
222 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ | 269 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ |
223 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ | 270 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ |
224 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ | 271 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ |
225 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, 0x5010) }, /* Novatel U727 */ | 272 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel U727 */ |
226 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */ | 273 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */ |
227 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */ | 274 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */ |
228 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */ | 275 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */ |
@@ -232,6 +279,10 @@ static struct usb_device_id option_ids[] = { | |||
232 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */ | 279 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */ |
233 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */ | 280 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */ |
234 | 281 | ||
282 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) }, | ||
283 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) }, | ||
284 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) }, | ||
285 | |||
235 | { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */ | 286 | { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */ |
236 | { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ | 287 | { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ |
237 | { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ | 288 | { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ |
@@ -249,6 +300,7 @@ static struct usb_device_id option_ids[] = { | |||
249 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, | 300 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, |
250 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, | 301 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, |
251 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ | 302 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ |
303 | { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ | ||
252 | { } /* Terminating entry */ | 304 | { } /* Terminating entry */ |
253 | }; | 305 | }; |
254 | MODULE_DEVICE_TABLE(usb, option_ids); | 306 | MODULE_DEVICE_TABLE(usb, option_ids); |
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 3ce98e8d7bce..2138ba8aeb69 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
@@ -854,6 +854,7 @@ int usb_serial_probe(struct usb_interface *interface, | |||
854 | serial->num_interrupt_in = num_interrupt_in; | 854 | serial->num_interrupt_in = num_interrupt_in; |
855 | serial->num_interrupt_out = num_interrupt_out; | 855 | serial->num_interrupt_out = num_interrupt_out; |
856 | 856 | ||
857 | #if 0 | ||
857 | /* check that the device meets the driver's requirements */ | 858 | /* check that the device meets the driver's requirements */ |
858 | if ((type->num_interrupt_in != NUM_DONT_CARE && | 859 | if ((type->num_interrupt_in != NUM_DONT_CARE && |
859 | type->num_interrupt_in != num_interrupt_in) | 860 | type->num_interrupt_in != num_interrupt_in) |
@@ -867,6 +868,7 @@ int usb_serial_probe(struct usb_interface *interface, | |||
867 | kfree(serial); | 868 | kfree(serial); |
868 | return -EIO; | 869 | return -EIO; |
869 | } | 870 | } |
871 | #endif | ||
870 | 872 | ||
871 | /* found all that we need */ | 873 | /* found all that we need */ |
872 | dev_info(&interface->dev, "%s converter detected\n", | 874 | dev_info(&interface->dev, "%s converter detected\n", |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index e5219a56947c..91252075e6e1 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -1530,16 +1530,104 @@ UNUSUAL_DEV( 0x1210, 0x0003, 0x0100, 0x0100, | |||
1530 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1530 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1531 | US_FL_IGNORE_RESIDUE ), | 1531 | US_FL_IGNORE_RESIDUE ), |
1532 | 1532 | ||
1533 | /* Reported by fangxiaozhi <fangxiaozhi60675@huawei.com> | 1533 | /* Reported by fangxiaozhi <huananhu@huawei.com> |
1534 | * and by linlei <linlei83@huawei.com> | 1534 | * This brings the HUAWEI data card devices into multi-port mode |
1535 | * Patch reworked by Johann Wilhelm <johann.wilhelm@student.tugraz.at> | ||
1536 | * This brings the HUAWEI E220 devices into multi-port mode | ||
1537 | */ | 1535 | */ |
1536 | UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000, | ||
1537 | "HUAWEI MOBILE", | ||
1538 | "Mass Storage", | ||
1539 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1540 | 0), | ||
1538 | UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000, | 1541 | UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000, |
1539 | "HUAWEI MOBILE", | 1542 | "HUAWEI MOBILE", |
1540 | "Mass Storage", | 1543 | "Mass Storage", |
1541 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | 1544 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, |
1542 | 0), | 1545 | 0), |
1546 | UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000, | ||
1547 | "HUAWEI MOBILE", | ||
1548 | "Mass Storage", | ||
1549 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1550 | 0), | ||
1551 | UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000, | ||
1552 | "HUAWEI MOBILE", | ||
1553 | "Mass Storage", | ||
1554 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1555 | 0), | ||
1556 | UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000, | ||
1557 | "HUAWEI MOBILE", | ||
1558 | "Mass Storage", | ||
1559 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1560 | 0), | ||
1561 | UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000, | ||
1562 | "HUAWEI MOBILE", | ||
1563 | "Mass Storage", | ||
1564 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1565 | 0), | ||
1566 | UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000, | ||
1567 | "HUAWEI MOBILE", | ||
1568 | "Mass Storage", | ||
1569 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1570 | 0), | ||
1571 | UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000, | ||
1572 | "HUAWEI MOBILE", | ||
1573 | "Mass Storage", | ||
1574 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1575 | 0), | ||
1576 | UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000, | ||
1577 | "HUAWEI MOBILE", | ||
1578 | "Mass Storage", | ||
1579 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1580 | 0), | ||
1581 | UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000, | ||
1582 | "HUAWEI MOBILE", | ||
1583 | "Mass Storage", | ||
1584 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1585 | 0), | ||
1586 | UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000, | ||
1587 | "HUAWEI MOBILE", | ||
1588 | "Mass Storage", | ||
1589 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1590 | 0), | ||
1591 | UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000, | ||
1592 | "HUAWEI MOBILE", | ||
1593 | "Mass Storage", | ||
1594 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1595 | 0), | ||
1596 | UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000, | ||
1597 | "HUAWEI MOBILE", | ||
1598 | "Mass Storage", | ||
1599 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1600 | 0), | ||
1601 | UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000, | ||
1602 | "HUAWEI MOBILE", | ||
1603 | "Mass Storage", | ||
1604 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1605 | 0), | ||
1606 | UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000, | ||
1607 | "HUAWEI MOBILE", | ||
1608 | "Mass Storage", | ||
1609 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1610 | 0), | ||
1611 | UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000, | ||
1612 | "HUAWEI MOBILE", | ||
1613 | "Mass Storage", | ||
1614 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1615 | 0), | ||
1616 | UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000, | ||
1617 | "HUAWEI MOBILE", | ||
1618 | "Mass Storage", | ||
1619 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1620 | 0), | ||
1621 | UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000, | ||
1622 | "HUAWEI MOBILE", | ||
1623 | "Mass Storage", | ||
1624 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1625 | 0), | ||
1626 | UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000, | ||
1627 | "HUAWEI MOBILE", | ||
1628 | "Mass Storage", | ||
1629 | US_SC_DEVICE, US_PR_DEVICE, usb_stor_huawei_e220_init, | ||
1630 | 0), | ||
1543 | 1631 | ||
1544 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ | 1632 | /* Reported by Vilius Bilinkevicius <vilisas AT xxx DOT lt) */ |
1545 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, | 1633 | UNUSUAL_DEV( 0x132b, 0x000b, 0x0001, 0x0001, |
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index 1194f5e060ea..01072f4b3e8f 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
@@ -1521,6 +1521,7 @@ module_init(fbmem_init); | |||
1521 | static void __exit | 1521 | static void __exit |
1522 | fbmem_exit(void) | 1522 | fbmem_exit(void) |
1523 | { | 1523 | { |
1524 | remove_proc_entry("fb", NULL); | ||
1524 | class_destroy(fb_class); | 1525 | class_destroy(fb_class); |
1525 | unregister_chrdev(FB_MAJOR, "fb"); | 1526 | unregister_chrdev(FB_MAJOR, "fb"); |
1526 | } | 1527 | } |
diff --git a/fs/afs/main.c b/fs/afs/main.c index 0f60f6b35769..2d3e5d4fb9f7 100644 --- a/fs/afs/main.c +++ b/fs/afs/main.c | |||
@@ -22,7 +22,7 @@ MODULE_LICENSE("GPL"); | |||
22 | 22 | ||
23 | unsigned afs_debug; | 23 | unsigned afs_debug; |
24 | module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO); | 24 | module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO); |
25 | MODULE_PARM_DESC(afs_debug, "AFS debugging mask"); | 25 | MODULE_PARM_DESC(debug, "AFS debugging mask"); |
26 | 26 | ||
27 | static char *rootcell; | 27 | static char *rootcell; |
28 | 28 | ||
diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c index 3e8683dbb13f..a99d46f3b26e 100644 --- a/fs/ext2/xattr.c +++ b/fs/ext2/xattr.c | |||
@@ -835,7 +835,7 @@ ext2_xattr_cache_insert(struct buffer_head *bh) | |||
835 | struct mb_cache_entry *ce; | 835 | struct mb_cache_entry *ce; |
836 | int error; | 836 | int error; |
837 | 837 | ||
838 | ce = mb_cache_entry_alloc(ext2_xattr_cache); | 838 | ce = mb_cache_entry_alloc(ext2_xattr_cache, GFP_NOFS); |
839 | if (!ce) | 839 | if (!ce) |
840 | return -ENOMEM; | 840 | return -ENOMEM; |
841 | error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, &hash); | 841 | error = mb_cache_entry_insert(ce, bh->b_bdev, bh->b_blocknr, &hash); |
diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c index a6ea4d6a8bb2..42856541e9a5 100644 --- a/fs/ext3/xattr.c +++ b/fs/ext3/xattr.c | |||
@@ -1126,7 +1126,7 @@ ext3_xattr_cache_insert(struct buffer_head *bh) | |||
1126 | struct mb_cache_entry *ce; | 1126 | struct mb_cache_entry *ce; |
1127 | int error; | 1127 | int error; |
1128 | 1128 | ||
1129 | ce = mb_cache_entry_alloc(ext3_xattr_cache); | 1129 | ce = mb_cache_entry_alloc(ext3_xattr_cache, GFP_NOFS); |
1130 | if (!ce) { | 1130 | if (!ce) { |
1131 | ea_bdebug(bh, "out of memory"); | 1131 | ea_bdebug(bh, "out of memory"); |
1132 | return; | 1132 | return; |
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index d7962139c010..e9054c1c7d93 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c | |||
@@ -1386,7 +1386,7 @@ ext4_xattr_cache_insert(struct buffer_head *bh) | |||
1386 | struct mb_cache_entry *ce; | 1386 | struct mb_cache_entry *ce; |
1387 | int error; | 1387 | int error; |
1388 | 1388 | ||
1389 | ce = mb_cache_entry_alloc(ext4_xattr_cache); | 1389 | ce = mb_cache_entry_alloc(ext4_xattr_cache, GFP_NOFS); |
1390 | if (!ce) { | 1390 | if (!ce) { |
1391 | ea_bdebug(bh, "out of memory"); | 1391 | ea_bdebug(bh, "out of memory"); |
1392 | return; | 1392 | return; |
diff --git a/fs/mbcache.c b/fs/mbcache.c index eb31b73e7d69..ec88ff3d04a9 100644 --- a/fs/mbcache.c +++ b/fs/mbcache.c | |||
@@ -399,11 +399,11 @@ mb_cache_destroy(struct mb_cache *cache) | |||
399 | * if no more memory was available. | 399 | * if no more memory was available. |
400 | */ | 400 | */ |
401 | struct mb_cache_entry * | 401 | struct mb_cache_entry * |
402 | mb_cache_entry_alloc(struct mb_cache *cache) | 402 | mb_cache_entry_alloc(struct mb_cache *cache, gfp_t gfp_flags) |
403 | { | 403 | { |
404 | struct mb_cache_entry *ce; | 404 | struct mb_cache_entry *ce; |
405 | 405 | ||
406 | ce = kmem_cache_alloc(cache->c_entry_cache, GFP_KERNEL); | 406 | ce = kmem_cache_alloc(cache->c_entry_cache, gfp_flags); |
407 | if (ce) { | 407 | if (ce) { |
408 | atomic_inc(&cache->c_entry_count); | 408 | atomic_inc(&cache->c_entry_count); |
409 | INIT_LIST_HEAD(&ce->e_lru_list); | 409 | INIT_LIST_HEAD(&ce->e_lru_list); |
diff --git a/include/asm-arm/arch-s3c2410/spi.h b/include/asm-arm/arch-s3c2410/spi.h index 7ca0ed97a6d0..352d33860b63 100644 --- a/include/asm-arm/arch-s3c2410/spi.h +++ b/include/asm-arm/arch-s3c2410/spi.h | |||
@@ -15,6 +15,7 @@ | |||
15 | 15 | ||
16 | struct s3c2410_spi_info { | 16 | struct s3c2410_spi_info { |
17 | unsigned long pin_cs; /* simple gpio cs */ | 17 | unsigned long pin_cs; /* simple gpio cs */ |
18 | unsigned int num_cs; /* total chipselects */ | ||
18 | 19 | ||
19 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); | 20 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); |
20 | }; | 21 | }; |
diff --git a/include/asm-mips/mach-au1x00/au1xxx_ide.h b/include/asm-mips/mach-au1x00/au1xxx_ide.h index e4fe26c160ba..89655c0cdcd6 100644 --- a/include/asm-mips/mach-au1x00/au1xxx_ide.h +++ b/include/asm-mips/mach-au1x00/au1xxx_ide.h | |||
@@ -122,24 +122,6 @@ static const struct drive_list_entry dma_black_list [] = { | |||
122 | }; | 122 | }; |
123 | #endif | 123 | #endif |
124 | 124 | ||
125 | /* function prototyping */ | ||
126 | u8 auide_inb(unsigned long port); | ||
127 | u16 auide_inw(unsigned long port); | ||
128 | u32 auide_inl(unsigned long port); | ||
129 | void auide_insw(unsigned long port, void *addr, u32 count); | ||
130 | void auide_insl(unsigned long port, void *addr, u32 count); | ||
131 | void auide_outb(u8 addr, unsigned long port); | ||
132 | void auide_outbsync(ide_drive_t *drive, u8 addr, unsigned long port); | ||
133 | void auide_outw(u16 addr, unsigned long port); | ||
134 | void auide_outl(u32 addr, unsigned long port); | ||
135 | void auide_outsw(unsigned long port, void *addr, u32 count); | ||
136 | void auide_outsl(unsigned long port, void *addr, u32 count); | ||
137 | static void auide_tune_drive(ide_drive_t *drive, byte pio); | ||
138 | static int auide_tune_chipset(ide_drive_t *drive, u8 speed); | ||
139 | static int auide_ddma_init( _auide_hwif *auide ); | ||
140 | static void auide_setup_ports(hw_regs_t *hw, _auide_hwif *ahwif); | ||
141 | int __init auide_probe(void); | ||
142 | |||
143 | /******************************************************************************* | 125 | /******************************************************************************* |
144 | * PIO Mode timing calculation : * | 126 | * PIO Mode timing calculation : * |
145 | * * | 127 | * * |
diff --git a/include/asm-mips/mach-db1x00/db1200.h b/include/asm-mips/mach-db1x00/db1200.h index a6bdac61ab49..d2e28e64932e 100644 --- a/include/asm-mips/mach-db1x00/db1200.h +++ b/include/asm-mips/mach-db1x00/db1200.h | |||
@@ -173,8 +173,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
173 | #define AU1XXX_SMC91111_IRQ DB1200_ETH_INT | 173 | #define AU1XXX_SMC91111_IRQ DB1200_ETH_INT |
174 | 174 | ||
175 | #define AU1XXX_ATA_PHYS_ADDR (0x18800000) | 175 | #define AU1XXX_ATA_PHYS_ADDR (0x18800000) |
176 | #define AU1XXX_ATA_PHYS_LEN (0x100) | 176 | #define AU1XXX_ATA_REG_OFFSET (5) |
177 | #define AU1XXX_ATA_REG_OFFSET (5) | 177 | #define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET) |
178 | #define AU1XXX_ATA_INT DB1200_IDE_INT | 178 | #define AU1XXX_ATA_INT DB1200_IDE_INT |
179 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; | 179 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; |
180 | #define AU1XXX_ATA_RQSIZE 128 | 180 | #define AU1XXX_ATA_RQSIZE 128 |
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index 72213e3d02c7..edaa489b58f1 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h | |||
@@ -186,8 +186,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
186 | #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT | 186 | #define AU1XXX_SMC91111_IRQ PB1200_ETH_INT |
187 | 187 | ||
188 | #define AU1XXX_ATA_PHYS_ADDR (0x0C800000) | 188 | #define AU1XXX_ATA_PHYS_ADDR (0x0C800000) |
189 | #define AU1XXX_ATA_PHYS_LEN (0x100) | 189 | #define AU1XXX_ATA_REG_OFFSET (5) |
190 | #define AU1XXX_ATA_REG_OFFSET (5) | 190 | #define AU1XXX_ATA_PHYS_LEN (16 << AU1XXX_ATA_REG_OFFSET) |
191 | #define AU1XXX_ATA_INT PB1200_IDE_INT | 191 | #define AU1XXX_ATA_INT PB1200_IDE_INT |
192 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; | 192 | #define AU1XXX_ATA_DDMA_REQ DSCR_CMD0_DMA_REQ1; |
193 | #define AU1XXX_ATA_RQSIZE 128 | 193 | #define AU1XXX_ATA_RQSIZE 128 |
diff --git a/include/asm-um/tlb.h b/include/asm-um/tlb.h index 39fc475df6c9..5240fa1c5e08 100644 --- a/include/asm-um/tlb.h +++ b/include/asm-um/tlb.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef __UM_TLB_H | 1 | #ifndef __UM_TLB_H |
2 | #define __UM_TLB_H | 2 | #define __UM_TLB_H |
3 | 3 | ||
4 | #include <linux/pagemap.h> | ||
4 | #include <linux/swap.h> | 5 | #include <linux/swap.h> |
5 | #include <asm/percpu.h> | 6 | #include <asm/percpu.h> |
6 | #include <asm/pgalloc.h> | 7 | #include <asm/pgalloc.h> |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index cac4b364cd40..2b7a1187cb29 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -91,8 +91,10 @@ static inline struct io_context *ioc_task_link(struct io_context *ioc) | |||
91 | * if ref count is zero, don't allow sharing (ioc is going away, it's | 91 | * if ref count is zero, don't allow sharing (ioc is going away, it's |
92 | * a race). | 92 | * a race). |
93 | */ | 93 | */ |
94 | if (ioc && atomic_inc_not_zero(&ioc->refcount)) | 94 | if (ioc && atomic_inc_not_zero(&ioc->refcount)) { |
95 | atomic_inc(&ioc->nr_tasks); | ||
95 | return ioc; | 96 | return ioc; |
97 | } | ||
96 | 98 | ||
97 | return NULL; | 99 | return NULL; |
98 | } | 100 | } |
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h index 99e044b4efc6..a09b84e4fdb4 100644 --- a/include/linux/mbcache.h +++ b/include/linux/mbcache.h | |||
@@ -34,7 +34,7 @@ void mb_cache_destroy(struct mb_cache *); | |||
34 | 34 | ||
35 | /* Functions on cache entries */ | 35 | /* Functions on cache entries */ |
36 | 36 | ||
37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *); | 37 | struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t); |
38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, | 38 | int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, |
39 | sector_t, unsigned int[]); | 39 | sector_t, unsigned int[]); |
40 | void mb_cache_entry_release(struct mb_cache_entry *); | 40 | void mb_cache_entry_release(struct mb_cache_entry *); |
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index 20add65215af..db53defde5ee 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
@@ -129,6 +129,10 @@ struct ssb_device { | |||
129 | const struct ssb_bus_ops *ops; | 129 | const struct ssb_bus_ops *ops; |
130 | 130 | ||
131 | struct device *dev; | 131 | struct device *dev; |
132 | /* Pointer to the device that has to be used for | ||
133 | * any DMA related operation. */ | ||
134 | struct device *dma_dev; | ||
135 | |||
132 | struct ssb_bus *bus; | 136 | struct ssb_bus *bus; |
133 | struct ssb_device_id id; | 137 | struct ssb_device_id id; |
134 | 138 | ||
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 818ca1cf0b6d..90c1c191ea69 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h | |||
@@ -50,7 +50,7 @@ struct thermal_cooling_device_ops { | |||
50 | }; | 50 | }; |
51 | 51 | ||
52 | #define THERMAL_TRIPS_NONE -1 | 52 | #define THERMAL_TRIPS_NONE -1 |
53 | #define THERMAL_MAX_TRIPS 10 | 53 | #define THERMAL_MAX_TRIPS 12 |
54 | #define THERMAL_NAME_LENGTH 20 | 54 | #define THERMAL_NAME_LENGTH 20 |
55 | struct thermal_cooling_device { | 55 | struct thermal_cooling_device { |
56 | int id; | 56 | int id; |
diff --git a/kernel/printk.c b/kernel/printk.c index c46a20a19a15..bdd4ea8c3f2b 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
@@ -643,8 +643,21 @@ static int acquire_console_semaphore_for_printk(unsigned int cpu) | |||
643 | { | 643 | { |
644 | int retval = 0; | 644 | int retval = 0; |
645 | 645 | ||
646 | if (can_use_console(cpu)) | 646 | if (!try_acquire_console_sem()) { |
647 | retval = !try_acquire_console_sem(); | 647 | retval = 1; |
648 | |||
649 | /* | ||
650 | * If we can't use the console, we need to release | ||
651 | * the console semaphore by hand to avoid flushing | ||
652 | * the buffer. We need to hold the console semaphore | ||
653 | * in order to do this test safely. | ||
654 | */ | ||
655 | if (!can_use_console(cpu)) { | ||
656 | console_locked = 0; | ||
657 | up(&console_sem); | ||
658 | retval = 0; | ||
659 | } | ||
660 | } | ||
648 | printk_cpu = UINT_MAX; | 661 | printk_cpu = UINT_MAX; |
649 | spin_unlock(&logbuf_lock); | 662 | spin_unlock(&logbuf_lock); |
650 | return retval; | 663 | return retval; |
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index f255eda693b0..beb592fe9389 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
@@ -423,7 +423,7 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask) | |||
423 | struct task_struct *p; | 423 | struct task_struct *p; |
424 | 424 | ||
425 | cgroup_lock(); | 425 | cgroup_lock(); |
426 | rcu_read_lock(); | 426 | read_lock(&tasklist_lock); |
427 | retry: | 427 | retry: |
428 | p = select_bad_process(&points, mem); | 428 | p = select_bad_process(&points, mem); |
429 | if (PTR_ERR(p) == -1UL) | 429 | if (PTR_ERR(p) == -1UL) |
@@ -436,7 +436,7 @@ retry: | |||
436 | "Memory cgroup out of memory")) | 436 | "Memory cgroup out of memory")) |
437 | goto retry; | 437 | goto retry; |
438 | out: | 438 | out: |
439 | rcu_read_unlock(); | 439 | read_unlock(&tasklist_lock); |
440 | cgroup_unlock(); | 440 | cgroup_unlock(); |
441 | } | 441 | } |
442 | #endif | 442 | #endif |
diff --git a/mm/sparse.c b/mm/sparse.c index f6a43c09c322..98d6b39c3472 100644 --- a/mm/sparse.c +++ b/mm/sparse.c | |||
@@ -149,8 +149,18 @@ static inline int sparse_early_nid(struct mem_section *section) | |||
149 | /* Record a memory area against a node. */ | 149 | /* Record a memory area against a node. */ |
150 | void __init memory_present(int nid, unsigned long start, unsigned long end) | 150 | void __init memory_present(int nid, unsigned long start, unsigned long end) |
151 | { | 151 | { |
152 | unsigned long max_arch_pfn = 1UL << (MAX_PHYSMEM_BITS-PAGE_SHIFT); | ||
152 | unsigned long pfn; | 153 | unsigned long pfn; |
153 | 154 | ||
155 | /* | ||
156 | * Sanity checks - do not allow an architecture to pass | ||
157 | * in larger pfns than the maximum scope of sparsemem: | ||
158 | */ | ||
159 | if (start >= max_arch_pfn) | ||
160 | return; | ||
161 | if (end >= max_arch_pfn) | ||
162 | end = max_arch_pfn; | ||
163 | |||
154 | start &= PAGE_SECTION_MASK; | 164 | start &= PAGE_SECTION_MASK; |
155 | for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { | 165 | for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { |
156 | unsigned long section = pfn_to_section_nr(pfn); | 166 | unsigned long section = pfn_to_section_nr(pfn); |
diff --git a/mm/vmstat.c b/mm/vmstat.c index 422d960ffcd8..7c7286e9506d 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c | |||
@@ -388,6 +388,7 @@ static char * const migratetype_names[MIGRATE_TYPES] = { | |||
388 | "Reclaimable", | 388 | "Reclaimable", |
389 | "Movable", | 389 | "Movable", |
390 | "Reserve", | 390 | "Reserve", |
391 | "Isolate", | ||
391 | }; | 392 | }; |
392 | 393 | ||
393 | static void *frag_start(struct seq_file *m, loff_t *pos) | 394 | static void *frag_start(struct seq_file *m, loff_t *pos) |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 5119856017ab..bbb7d88a16b4 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -3841,8 +3841,28 @@ static void tcp_ofo_queue(struct sock *sk) | |||
3841 | } | 3841 | } |
3842 | } | 3842 | } |
3843 | 3843 | ||
3844 | static int tcp_prune_ofo_queue(struct sock *sk); | ||
3844 | static int tcp_prune_queue(struct sock *sk); | 3845 | static int tcp_prune_queue(struct sock *sk); |
3845 | 3846 | ||
3847 | static inline int tcp_try_rmem_schedule(struct sock *sk, unsigned int size) | ||
3848 | { | ||
3849 | if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || | ||
3850 | !sk_rmem_schedule(sk, size)) { | ||
3851 | |||
3852 | if (tcp_prune_queue(sk) < 0) | ||
3853 | return -1; | ||
3854 | |||
3855 | if (!sk_rmem_schedule(sk, size)) { | ||
3856 | if (!tcp_prune_ofo_queue(sk)) | ||
3857 | return -1; | ||
3858 | |||
3859 | if (!sk_rmem_schedule(sk, size)) | ||
3860 | return -1; | ||
3861 | } | ||
3862 | } | ||
3863 | return 0; | ||
3864 | } | ||
3865 | |||
3846 | static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) | 3866 | static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) |
3847 | { | 3867 | { |
3848 | struct tcphdr *th = tcp_hdr(skb); | 3868 | struct tcphdr *th = tcp_hdr(skb); |
@@ -3892,12 +3912,9 @@ static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) | |||
3892 | if (eaten <= 0) { | 3912 | if (eaten <= 0) { |
3893 | queue_and_out: | 3913 | queue_and_out: |
3894 | if (eaten < 0 && | 3914 | if (eaten < 0 && |
3895 | (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || | 3915 | tcp_try_rmem_schedule(sk, skb->truesize)) |
3896 | !sk_rmem_schedule(sk, skb->truesize))) { | 3916 | goto drop; |
3897 | if (tcp_prune_queue(sk) < 0 || | 3917 | |
3898 | !sk_rmem_schedule(sk, skb->truesize)) | ||
3899 | goto drop; | ||
3900 | } | ||
3901 | skb_set_owner_r(skb, sk); | 3918 | skb_set_owner_r(skb, sk); |
3902 | __skb_queue_tail(&sk->sk_receive_queue, skb); | 3919 | __skb_queue_tail(&sk->sk_receive_queue, skb); |
3903 | } | 3920 | } |
@@ -3966,12 +3983,8 @@ drop: | |||
3966 | 3983 | ||
3967 | TCP_ECN_check_ce(tp, skb); | 3984 | TCP_ECN_check_ce(tp, skb); |
3968 | 3985 | ||
3969 | if (atomic_read(&sk->sk_rmem_alloc) > sk->sk_rcvbuf || | 3986 | if (tcp_try_rmem_schedule(sk, skb->truesize)) |
3970 | !sk_rmem_schedule(sk, skb->truesize)) { | 3987 | goto drop; |
3971 | if (tcp_prune_queue(sk) < 0 || | ||
3972 | !sk_rmem_schedule(sk, skb->truesize)) | ||
3973 | goto drop; | ||
3974 | } | ||
3975 | 3988 | ||
3976 | /* Disable header prediction. */ | 3989 | /* Disable header prediction. */ |
3977 | tp->pred_flags = 0; | 3990 | tp->pred_flags = 0; |
@@ -4198,6 +4211,32 @@ static void tcp_collapse_ofo_queue(struct sock *sk) | |||
4198 | } | 4211 | } |
4199 | } | 4212 | } |
4200 | 4213 | ||
4214 | /* | ||
4215 | * Purge the out-of-order queue. | ||
4216 | * Return true if queue was pruned. | ||
4217 | */ | ||
4218 | static int tcp_prune_ofo_queue(struct sock *sk) | ||
4219 | { | ||
4220 | struct tcp_sock *tp = tcp_sk(sk); | ||
4221 | int res = 0; | ||
4222 | |||
4223 | if (!skb_queue_empty(&tp->out_of_order_queue)) { | ||
4224 | NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED); | ||
4225 | __skb_queue_purge(&tp->out_of_order_queue); | ||
4226 | |||
4227 | /* Reset SACK state. A conforming SACK implementation will | ||
4228 | * do the same at a timeout based retransmit. When a connection | ||
4229 | * is in a sad state like this, we care only about integrity | ||
4230 | * of the connection not performance. | ||
4231 | */ | ||
4232 | if (tp->rx_opt.sack_ok) | ||
4233 | tcp_sack_reset(&tp->rx_opt); | ||
4234 | sk_mem_reclaim(sk); | ||
4235 | res = 1; | ||
4236 | } | ||
4237 | return res; | ||
4238 | } | ||
4239 | |||
4201 | /* Reduce allocated memory if we can, trying to get | 4240 | /* Reduce allocated memory if we can, trying to get |
4202 | * the socket within its memory limits again. | 4241 | * the socket within its memory limits again. |
4203 | * | 4242 | * |
@@ -4231,20 +4270,7 @@ static int tcp_prune_queue(struct sock *sk) | |||
4231 | /* Collapsing did not help, destructive actions follow. | 4270 | /* Collapsing did not help, destructive actions follow. |
4232 | * This must not ever occur. */ | 4271 | * This must not ever occur. */ |
4233 | 4272 | ||
4234 | /* First, purge the out_of_order queue. */ | 4273 | tcp_prune_ofo_queue(sk); |
4235 | if (!skb_queue_empty(&tp->out_of_order_queue)) { | ||
4236 | NET_INC_STATS_BH(LINUX_MIB_OFOPRUNED); | ||
4237 | __skb_queue_purge(&tp->out_of_order_queue); | ||
4238 | |||
4239 | /* Reset SACK state. A conforming SACK implementation will | ||
4240 | * do the same at a timeout based retransmit. When a connection | ||
4241 | * is in a sad state like this, we care only about integrity | ||
4242 | * of the connection not performance. | ||
4243 | */ | ||
4244 | if (tcp_is_sack(tp)) | ||
4245 | tcp_sack_reset(&tp->rx_opt); | ||
4246 | sk_mem_reclaim(sk); | ||
4247 | } | ||
4248 | 4274 | ||
4249 | if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) | 4275 | if (atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) |
4250 | return 0; | 4276 | return 0; |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 535407d07fa4..a8a40aba846b 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1050,12 +1050,9 @@ ieee80211_drop_unencrypted(struct ieee80211_txrx_data *rx) | |||
1050 | if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) && | 1050 | if (unlikely(!(rx->fc & IEEE80211_FCTL_PROTECTED) && |
1051 | (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA && | 1051 | (rx->fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA && |
1052 | (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC && | 1052 | (rx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_NULLFUNC && |
1053 | (rx->key || rx->sdata->drop_unencrypted))) { | 1053 | (rx->key || rx->sdata->drop_unencrypted))) |
1054 | if (net_ratelimit()) | ||
1055 | printk(KERN_DEBUG "%s: RX non-WEP frame, but expected " | ||
1056 | "encryption\n", rx->dev->name); | ||
1057 | return -EACCES; | 1054 | return -EACCES; |
1058 | } | 1055 | |
1059 | return 0; | 1056 | return 0; |
1060 | } | 1057 | } |
1061 | 1058 | ||
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c index 140a0a8c6b02..4e10a95de832 100644 --- a/net/rfkill/rfkill.c +++ b/net/rfkill/rfkill.c | |||
@@ -92,7 +92,7 @@ void rfkill_switch_all(enum rfkill_type type, enum rfkill_state state) | |||
92 | rfkill_states[type] = state; | 92 | rfkill_states[type] = state; |
93 | 93 | ||
94 | list_for_each_entry(rfkill, &rfkill_list, node) { | 94 | list_for_each_entry(rfkill, &rfkill_list, node) { |
95 | if (!rfkill->user_claim) | 95 | if ((!rfkill->user_claim) && (rfkill->type == type)) |
96 | rfkill_toggle_radio(rfkill, state); | 96 | rfkill_toggle_radio(rfkill, state); |
97 | } | 97 | } |
98 | 98 | ||
diff --git a/net/rxrpc/af_rxrpc.c b/net/rxrpc/af_rxrpc.c index 2d0c29c837f7..4b2682feeedc 100644 --- a/net/rxrpc/af_rxrpc.c +++ b/net/rxrpc/af_rxrpc.c | |||
@@ -27,7 +27,7 @@ MODULE_ALIAS_NETPROTO(PF_RXRPC); | |||
27 | 27 | ||
28 | unsigned rxrpc_debug; // = RXRPC_DEBUG_KPROTO; | 28 | unsigned rxrpc_debug; // = RXRPC_DEBUG_KPROTO; |
29 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); | 29 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); |
30 | MODULE_PARM_DESC(rxrpc_debug, "RxRPC debugging mask"); | 30 | MODULE_PARM_DESC(debug, "RxRPC debugging mask"); |
31 | 31 | ||
32 | static int sysctl_rxrpc_max_qlen __read_mostly = 10; | 32 | static int sysctl_rxrpc_max_qlen __read_mostly = 10; |
33 | 33 | ||
diff --git a/net/rxrpc/rxkad.c b/net/rxrpc/rxkad.c index d1c296f2d617..6d38a81b336d 100644 --- a/net/rxrpc/rxkad.c +++ b/net/rxrpc/rxkad.c | |||
@@ -31,7 +31,7 @@ | |||
31 | 31 | ||
32 | unsigned rxrpc_debug; | 32 | unsigned rxrpc_debug; |
33 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); | 33 | module_param_named(debug, rxrpc_debug, uint, S_IWUSR | S_IRUGO); |
34 | MODULE_PARM_DESC(rxrpc_debug, "rxkad debugging mask"); | 34 | MODULE_PARM_DESC(debug, "rxkad debugging mask"); |
35 | 35 | ||
36 | struct rxkad_level1_hdr { | 36 | struct rxkad_level1_hdr { |
37 | __be32 data_size; /* true data size (excluding padding) */ | 37 | __be32 data_size; /* true data size (excluding padding) */ |
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 7e3c048ba9b1..fc8708a0a25e 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c | |||
@@ -386,6 +386,9 @@ void qdisc_tree_decrease_qlen(struct Qdisc *sch, unsigned int n) | |||
386 | if (n == 0) | 386 | if (n == 0) |
387 | return; | 387 | return; |
388 | while ((parentid = sch->parent)) { | 388 | while ((parentid = sch->parent)) { |
389 | if (TC_H_MAJ(parentid) == TC_H_MAJ(TC_H_INGRESS)) | ||
390 | return; | ||
391 | |||
389 | sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid)); | 392 | sch = qdisc_lookup(sch->dev, TC_H_MAJ(parentid)); |
390 | if (sch == NULL) { | 393 | if (sch == NULL) { |
391 | WARN_ON(parentid != TC_H_ROOT); | 394 | WARN_ON(parentid != TC_H_ROOT); |